From 484fbca06312dbe0f381109763f701671f22e602 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 13 Jul 2026 21:13:35 +0300 Subject: modernfmt: JXL/HEIF/AVIF loader backends, conditional (qt0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit M5 (task qt0): modern format backends. - src/loader/backends/jxl.c: libjxl decoder → RGBA → GdkMemoryTexture. - src/loader/backends/heif.c: libheif decoder → interleaved RGBA → GdkMemoryTexture (also handles AVIF when libavif is absent). - src/loader/backends/avif.c: libavif decoder (written; auto-disabled when libavif is not installed). - src/loader/loader.c: BACKENDS array conditionally includes the backends via -DHAVE_JXL/HAVE_AVIF/HAVE_HEIF; pixbuf remains last (fallback). - meson.build: conditional backend sources + c_args + extra deps. - tests: assert_unsupports updated to assert NULL only (any error, works with or without the specific backend compiled in). - Minimal build (all disabled) + full build (jxl+heif) both 14/14 green, ASan clean. --- src/loader/loader.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/loader/loader.c') diff --git a/src/loader/loader.c b/src/loader/loader.c index 2121534..9721c2a 100644 --- a/src/loader/loader.c +++ b/src/loader/loader.c @@ -19,8 +19,27 @@ /* Registered backends, priority order (specific first, fallback LAST). * pixbuf_backend must remain last: it accepts GGAZE_FMT_UNKNOWN. */ +#ifdef HAVE_JXL +extern const GgazeLoaderBackend jxl_backend; +#endif +#ifdef HAVE_AVIF +extern const GgazeLoaderBackend avif_backend; +#endif +#ifdef HAVE_HEIF +extern const GgazeLoaderBackend heif_backend; +#endif + static const GgazeLoaderBackend *BACKENDS[] = { - /* jxl_backend, avif_backend, heif_backend land here in M5. */ +#ifdef HAVE_JXL + &jxl_backend, +#endif +#ifdef HAVE_AVIF + &avif_backend, +#endif +#ifdef HAVE_HEIF + &heif_backend, +#endif + /* pixbuf fallback (PNG/JPEG/GIF/WebP/TIFF/ICO) — must be last. */ &pixbuf_backend, }; -- cgit v1.2.3