diff --git a/codecs/jxl/dec/jxl_dec.cpp b/codecs/jxl/dec/jxl_dec.cpp index 556d49b4..219388cb 100644 --- a/codecs/jxl/dec/jxl_dec.cpp +++ b/codecs/jxl/dec/jxl_dec.cpp @@ -14,12 +14,33 @@ thread_local const val ImageData = val::global("ImageData"); // R, G, B, A #define COMPONENTS_PER_PIXEL 4 +#ifndef JXL_DEBUG_ON_ALL_ERROR +#define JXL_DEBUG_ON_ALL_ERROR 0 +#endif + +#if JXL_DEBUG_ON_ALL_ERROR +#define EXPECT_TRUE(a) \ + if (!(a)) { \ + fprintf(stderr, "Assertion failure (%d): %s\n", __LINE__, #a); \ + return val::null(); \ + } +#define EXPECT_EQ(a, b) \ + { \ + int a_ = a; \ + int b_ = b; \ + if (a_ != b_) { \ + fprintf(stderr, "Assertion failure (%d): %s (%d) != %s (%d)\n", __LINE__, #a, a_, #b, b_); \ + return val::null(); \ + } \ + } +#else #define EXPECT_TRUE(a) \ if (!(a)) { \ return val::null(); \ } #define EXPECT_EQ(a, b) EXPECT_TRUE((a) == (b)); +#endif val decode(std::string data) { std::unique_ptr 8) { + cparams.options.nb_repeats = 0.1; + } else if (megapixels > 4) { + cparams.options.nb_repeats = 0.3; + } else { + // default is OK. + } float quality = options.quality; @@ -59,8 +66,10 @@ val encode(std::string image, int width, int height, JXLOptions options) { if (options.progressive) { cparams.qprogressive_mode = true; - cparams.progressive_dc = 1; cparams.responsive = 1; + if (!cparams.modular_mode) { + cparams.progressive_dc = 1; + } } if (cparams.modular_mode) { diff --git a/codecs/jxl/enc/jxl_enc.wasm b/codecs/jxl/enc/jxl_enc.wasm index 393c086b..b23074ae 100755 Binary files a/codecs/jxl/enc/jxl_enc.wasm and b/codecs/jxl/enc/jxl_enc.wasm differ