JPEG XL

Info

rules 58
github 38694
reddit 688

JPEG XL

tools 4270
website 1813
adoption 22069
image-compression-forum 0
glitch-art 1071

General chat

welcome 3957
introduce-yourself 294
color 1687
photography 3532
other-codecs 25116
on-topic 26652
off-topic 23987

Voice Channels

General 2578

Archived

bot-spam 4577

adoption

Adoption of jxl: what software supports jxl already, how to get more adoption?

lonjil
2025-11-14 02:52:44 > The JPEG-XL-E core accepts input samples in IEEE 754 single- or half-precision floating-point format and outputs the JPEG XL compressed payload. interesting
Meow
2025-11-14 02:58:07 JPEG-XL-E now even more hyphens
lonjil
2025-11-14 03:05:43 at least that's just a product ID, in the prose and title they write JPEG XL
jonnyawsom3
2025-11-17 12:39:34 Well, that was fast https://github.com/crosire/reshade/pull/399
username
2025-11-17 12:50:09 ooh nice
2025-11-17 01:25:07 I wonder how hard it would be to have the depth channel get saved to the resulting file within the scope of the simple lossless encoder and ReShade?
2025-11-17 01:25:40 would be cool to get use out of the dedicated depth channel slot JXL provides
Kampidh
2025-11-17 01:29:55 Haven't scoped into that section yet, would be nice to have that too
AccessViolation_
2025-11-17 10:46:04 apparently Element Web (the Matrix client) can preview JXL images but not the images itself in browsers that support JXL, and we have no idea how
2025-11-17 10:49:24 hmm maybe it's using something like imagemagick or ffmpeg to generate previews of images, including JXLs, and serving them in some other format
lonjil
2025-11-17 10:58:35 that's definitely it
AccessViolation_
2025-11-17 11:46:08 update: I was looking at a blurhash so I gave someone a completely wrong explanation of how some JXL art was able to look like that with so few bytes. <:galaxybrain:821831336372338729>
2025-11-17 11:49:30 to be fair, that could have easily been JXL art too
VcSaJen
2025-11-21 10:02:46 Might want to whitelist formats. As recent Google vs ffmpeg debacle showed, old formats are full of vulnerabilities (so many that it's hopeless trying to fix them all, there's no manpower).
Jarek Duda
2025-11-21 08:03:47 "Subject: Re: [blink-dev] Intent to Prototype: JPEG XL decoding support (image/jxl) in blink Date: Fri, 21 Nov 2025 15:01:23 -0500 From: Rick Byers <rbyers@chromium.org> To: Ad <adpocalyptic@gmail.com> CC: blink-dev <blink-dev@chromium.org>, ― <hmz2798@gmail.com>, Andy Foxman <foxtrot2cz@gmail.com>, zco...@mozilla.com <zcorpan@mozilla.com>, Albert Andaluz González <albertandaluz@gmail.com>, Jarek Duda <dudajar@gmail.com>, Markus K. <markus.krainz@gmail.com>, Tomáš Poledný <saljacky@gmail.com>, Yaowu Xu <yaowu@google.com>, ash...@scirra.com <ashley@scirra.com>, jimba...@google.com <jimbankoski@google.com>, jz...@google.com <jzern@google.com>, vign...@google.com <vigneshv@google.com>, s...@chromium.org <sky@chromium.org>, w...@google.com <wtc@google.com>, yoav...@chromium.org <yoavweiss@chromium.org>, dah...@chromium.org <dahlke@chromium.org> Hi everyone, Since JPEG XL was last evaluated, Safari has shipped support and Firefox has updated their position. We also continue to see developer signals for this in bug upvotes, Interop proposals, and survey data. There was also a recent announcement that JPEG XL will be added to PDF. Given these positive signals, we would welcome contributions to integrate a performant and memory-safe JPEG XL decoder in Chromium. In order to enable it by default in Chromium we would need a commitment to long-term maintenance. With those and our usual launch criteria met, we would ship it in Chrome. Rick (on behalf of Chrome ATLs)"
AccessViolation_
2025-11-21 08:05:23 HUGE
jonnyawsom3
2025-11-21 08:05:43 2025 sure is going out with a bang
2025-11-21 08:06:13 Thanks for forwarding it here
Jarek Duda
2025-11-21 08:09:01 Congratulations! here is the link: https://groups.google.com/a/chromium.org/g/blink-dev/c/WjCKcBw219k/m/NmOyvMCCBAAJ
AccessViolation_
2025-11-21 08:09:47 oh man this just made my weekend
Cacodemon345
2025-11-21 08:26:09 This year sure is fucking insane lol.
2025-11-21 08:26:21 The year where everything happens.
A homosapien
2025-11-21 08:26:22 The best possible JXL news just dropped my god 🥳
jonnyawsom3
2025-11-21 08:31:36 Pour one out for the poor devs, as if they weren't busy enough 😅
2025-11-21 08:32:23 And now I have more incentive to hury up my encoder improvements
AccessViolation_
2025-11-21 08:35:12 they even spelled it right, that's how you know they're serious
monad
2025-11-21 09:19:21 nope
AccessViolation_
2025-11-21 09:20:05 still no love for the non-breaking space...
lonjil
2025-11-21 09:39:36 One thing to note here, is that unlike Firefox, Chrome doesn't use a JS-based PDF reader. PDFium is a native library that depends on native image libraries. So they would've had to add a JXL decoder to PDFium, and thus Chrome, sooner or later. Mayne not until like 2027 or so, but definitely eventually. The whole argument against jxl was increased attack area, increased maintenance burden, and increased code size on constrained platforms like phones. But all of that is irrelevant if they need to ship it anyway.
AccessViolation_
2025-11-21 09:46:34 I wonder how Interop is going to go now
dogelition
2025-11-21 09:47:56 jxl sweep
Jim
2025-11-21 10:02:23 The other day Firefox assigned someone to the JXL bug so looks like they are moving forward as well.
jonnyawsom3
2025-11-21 10:03:04 They've been working on it for weeks, just a lot of dependencies to sort out first
Mine18
2025-11-21 10:11:40 how ready are jxl-oxide and jxl-rs for integration?
CrushedAsian255
2025-11-21 10:29:41 I think JXL-rs once finished is designed to be the integration
2025-11-21 10:30:35 YES!!!
Quackdoc
2025-11-22 12:08:38 not yet but soon™️
2025-11-22 12:09:28 honestly all they really need is a somewhat stable api anyways
jonnyawsom3
2025-11-22 02:27:12 It already is integrated https://discord.com/channels/794206087879852103/803574970180829194/1412813772988612718
.vulcansphere
2025-11-22 07:40:41 Yay, well done everyone <:heyjam2Jamcheer:1436610418033557534>
_wb_
2025-11-22 08:03:22 HUGE news! GREAT NEWS!
jonnyawsom3
2025-11-22 08:15:36 Wow, you know it's big when <#803379415106584626> finally gets updated xD
Cacodemon345
2025-11-22 08:43:19 Still no sight of libjxl's 1.0 release.
A homosapien
2025-11-22 09:07:27 All eyes are now on jxl-rs to be production ready for Chrome and Mozilla
dogelition
2025-11-22 09:20:10 new post just now with a wip implementation (still using the c++ libjxl)
jonnyawsom3
2025-11-22 09:25:17 Damn, that was fast >>> Great to hear this! Recently started working on this -> https://chromium-review.googlesource.com/c/chromium/src/+/7170439 Current status: - Feature complete - used the previous JXL implementation as a blueprint and updated to the most recent reference implementation - Added animation support (Chromium would be the first browser to support JXL animations) - bots are green (Except size increase jobs; i have no clou why it ignores my commit hint) - guess still needs several rounds of feedback and optimization work. I'm happy to collaborate with anyone interested in reviewing and optimizing this further. Here's a demo video showing it: https://youtu.be/zVkX4bP6qSo cheers,
AccessViolation_
2025-11-22 09:56:55 we'll need to update this now
2025-11-22 09:58:07
Cacodemon345
2025-11-22 09:58:51 In my opinion the C++ libjxl library should be finished as well; no one's gonna want to use the Rust library for their C/C++ projects.
AccessViolation_
2025-11-22 09:59:17 it is finished
2025-11-22 09:59:48 well finished is a big word
Cacodemon345
2025-11-22 10:00:15 Many projects don't consider libjxl finished until the 1.0 release.
AccessViolation_
2025-11-22 10:00:53 that's not necessarily an indicator of whether a project is finished
HCrikki
2025-11-22 10:01:13 libjxl isnt getting abandoned. decoding was pretty much 1.0 since long with 100% conformance. encoder will keep getting improvements, tuning, profiling, etc - do note it was supposed to only be a reference implementation, it just raised the bar really high
Cacodemon345
2025-11-22 10:01:42 I mean the 1.0 release would be considered formally finished by many FOSS projects.
AccessViolation_
2025-11-22 10:03:35 I think you might be overestimating their reliance of the version number, to be fair
HCrikki
2025-11-22 10:03:52 the versioning is only misleading for folks unfamiliar with why 0.10 comes after 0.9 - decoder's version only matches encoder's since improvements to both are rolled at the same time, not because decoder was alpha-state
AccessViolation_
2025-11-22 10:05:10 if projects don't want to integrate libjxl until it's "done" because they see it's still on 0.X, it's probably good to tell them that the decoder is fully feature complete and already used in many mainstream software
Cacodemon345
2025-11-22 10:11:31 Many projects also want the encoder to be finished and tested to work correctly with the decoder hence the reason they're asking for 1.0.
AccessViolation_
2025-11-22 10:12:09 what does it mean for the encoder to be finished
A homosapien
2025-11-22 10:13:37 I thought v1.0 was just API stabilizing not necessarily the encoder being "done"
AccessViolation_
2025-11-22 10:13:39 with how many features JXL has it might be [wild guess] decades before the encoder tries to utilize *all* coding tools
HCrikki
2025-11-22 10:22:35 its 2025 and jpeg1 still doesnt have its full features implemented by anyone. even jpegli caps itself at level 6.2 just because its what became the defacto standard since 2000
2025-11-22 10:24:38 some ecosystem advances are only possible when both encoders and decoders update in tandem, like through auto or platform updates
Cacodemon345
2025-11-22 10:28:06 Even that'd be desirable.
jonnyawsom3
2025-11-22 10:37:03 If conformance means 1.0, jxl-rs was finished weeks ago
2025-11-22 10:38:34 https://github.com/libjxl/libjxl/issues?q=state%3Aopen%20label%3Av1.0
Cacodemon345
2025-11-22 10:43:19 Yeah some issues are tagged with "decoder". Not exactly ready.
jonnyawsom3
2025-11-22 10:46:41 Only two, one is something about XYB and ICC, the other is adding a new feature for cropped decoding
HCrikki
2025-11-22 11:01:34 the conformance table needs an update properly reporting the latest progress (timestamped, or automatically checked/updated?). verbal assurances do nothing when anyone sees this suggesting pre-alpha conformance https://libjxl.github.io/bench/
jonnyawsom3
2025-11-22 11:11:20 It'd be nice if it could run as a github action once a week or something
monad
2025-11-22 12:38:55 which ones
Snafuh
2025-11-22 01:02:24 Isn't this kinda pointless as their announcement specifically said "memory-safe"? I read this as clear notch towards the rust decoder
_wb_
2025-11-22 01:07:45 Probably. But I am assuming Safari has been using libjxl for a while now, so there has been quite some exposure already. If there's a libjxl security bug, it would impact all iphones.
lonjil
2025-11-22 01:24:28 yes, but Chromium presumably will not integrate anything but jxl-rs
afed
2025-11-22 01:24:29 though, it's not bad for comparing capabilities, performance, and decoding accuracy, and also, if there is already a base, it will be easier to replace it with a different decoder, especially if some APIs are similar also it's not like starting from scratch, since libjxl has been added before (just need to update for new versions and api changes)
Cacodemon345
2025-11-22 01:28:08 At least GZDoom was not considering it until 1.0 releases. The API isn't finalized yet if the 1.0 tagged issues in the repo is anything to look at.
lonjil
2025-11-22 01:28:46 I don't think that there any any breaking changes planned for the decoder side of things (just feature additions)
2025-11-22 01:29:00 but for the encoder, fair enough
Cacodemon345
2025-11-22 01:30:44 At least ability to simply detect JXL files in a fast manner would be appreciated.
monad
2025-11-22 01:32:30 i see, I thought there were many projects
jonnyawsom3
2025-11-22 02:13:47 Can't that be done with the signature at the start of the file?
_wb_
2025-11-22 02:23:34 FF0A
2025-11-22 02:24:34 or if the ISOBMF container is used, 00 00 00 0C 4A 58 4C 20 0D 0A 87 0A
Cacodemon345
2025-11-22 02:35:10 I'm presuming this is in little endian.
2025-11-22 02:35:47 And that both signatures are guaranteed to start at the beginning of the file.
_wb_
2025-11-22 03:02:09 Yes, these are initial bytes
Tirr
2025-11-22 04:53:07 it's `ff 0a`, `0x0aff` in little endian
Cacodemon345
2025-11-22 04:56:10 Thanks for clarification.
0xC0000054
2025-11-22 08:23:19 libjxl already has a method to do that: `JxlSignatureCheck`.
Traneptora
2025-11-22 11:05:47 yea you can just `memcmp(file, "\xff\x0a", 2)` pmuch
2025-11-22 11:05:55 but JxlSignatureCheck also works
VcSaJen
2025-11-23 12:00:37 This is BIG. Native default Android support next?.. What's the status of the rustlang? Does it support stuff required to make jxl-rs fast yet?
AccessViolation_
2025-11-23 12:03:44 Rust does yeah. I'm not actively following development but jxl-rs is feature complete and most effort is spent optimizing it at this point I believe
jonnyawsom3
2025-11-23 12:12:16 It's only around 2x slower now for most decoding, and multithreading isn't implemented yet https://discord.com/channels/794206087879852103/803645746661425173/1439179374044909599
2025-11-23 12:17:38 (Effort 1 has since been sped up 2x)
Foxtrot
2025-11-23 12:35:39 Add JPEG XL decoding support to Chromium using jxl-rs https://issues.chromium.org/issues/462919304
jonnyawsom3
2025-11-23 12:52:07 Oh nice, I was just looking at the PR they made on rs for HDR ICC tonemapping
dogelition
2025-11-23 01:07:36 slightly confused by that hdr stuff, because it seems like libjxl-rs already writes a cicp tag? so why wouldn't that get passed through to chromium like with pngs
2025-11-23 01:10:42 also, what software is that tonemapping clut in the icc profile even useful for? firefox used to support them but last time i checked they don't anymore, and chromium never used them afaik
2025-11-23 01:14:56 nvm i can't read, icc profiles for hdr just didn't work in libjxl-rs
2025-11-23 01:15:16 still not sure what software actually uses those luts though
sklwmp
2025-11-23 01:22:19 who made this issue though? anyone can open chromium issues
2025-11-23 01:23:00 oh _Helmut Januschka_ im assuming
2025-11-23 01:23:13 are they part of chromium or not? its kind of hard to tell
dogelition
2025-11-23 01:24:04 > I work as Head of Engineering at krone.at, focusing on engineering management, technical strategy, and system reliability. My background spans 25+ years across various technology domains. > > I contribute to open source projects including Chromium, LLVM, PDFium, and Fastlane. Areas of interest include system performance, developer tooling, and infrastructure automation.
2025-11-23 01:24:30 > Major contributor to Google's open-source web browser project. Led modernization efforts including StringPiece to std::string_view migration and GoogleTest naming convention improvements across multiple modules.
2025-11-23 01:24:41 so good chance of that getting merged i guess
jonnyawsom3
2025-11-23 01:28:32 They're the one who did the libjxl integration yesterday, made the youtube video, and then did jxl-rs integration today <https://groups.google.com/a/chromium.org/g/blink-dev/c/WjCKcBw219k/m/NeiCV32tBAAJ> <https://chromium-review.googlesource.com/c/chromium/src/+/7170439> <https://chromium-review.googlesource.com/c/chromium/src/+/7184969>
afed
2025-11-23 01:39:32 also https://github.com/libjxl/jxl-rs/pull/491
Quackdoc
2025-11-23 01:45:54 unfortunately its not so simple for image formats
Cacodemon345
2025-11-23 02:52:54 Even WebP support on Android has been inconsistent as fuck.
AccessViolation_
2025-11-23 03:54:46 unlike WebP, JPEG XL is intended for things other than web delivery so it's more likely to be useful and wanted in apps than WebP is
Quackdoc
2025-11-23 04:00:32 that's not the issue
2025-11-23 04:00:45 the issue is "adding support for android" isn't a thing
2025-11-23 04:00:56 many apps use many different frameworks
RaveSteel
2025-11-23 04:01:32 If Samsung adds support to their preinstalled gallery we will have finished a good amount of the way
AccessViolation_
2025-11-23 04:03:26 I was moreso talking about that the main reason there is demand for WebP support, is that people inevitably end up with them because they're used for delivery. it's not an appealing format per se (except the really good 8-bit lossless mode)
Quackdoc
2025-11-23 04:05:38 the best you can do is make sure the mime is recognized, which iirc it already is, and add support to https://developer.android.com/ndk/guides/image-decoder
2025-11-23 04:05:55 which is in the android NDK and AFAIK I dont actually think the ndk is open source is it?
2025-11-23 04:06:06 dunno it's been literal years since I touched this part of android
2025-11-23 05:00:04 basically, get skia working with jxl nice and well, and go from there, I don't have the time to work on this, but now would be the time for an android dev to do so https://cs.android.com/android/platform/superproject/main/+/main:frameworks/base/native/graphics/jni/imagedecoder.cpp https://cs.android.com/android/platform/superproject/main/+/main:external/skia/include/codec/
VcSaJen
2025-11-23 07:25:59 > Rust does yeah. I looked it up, looks like not yet.
AccessViolation_
2025-11-23 07:47:39 stuff required to make jxl fast like simd and multithreading?
2025-11-23 07:47:49 you weren't very specific
veluca
2025-11-23 10:02:53 I don't believe we're blocked on anything on the Rust side
2025-11-23 10:03:00 there's plenty of stuff that would be *nice*
2025-11-23 10:03:13 but nothing *necessary*
MSLP
2025-11-24 06:10:58 Well that escalated quickly. Wondering how the second attempt at chromium integration goes. Chromium seem to be building with recent rust versions <https://github.com/chromium/chromium/blob/6e1ca2e0c395e4bf4ba4ab55170346ff108c1a4e/tools/rust/update_rust.py#L39C18-L39C58> -> this goes to fairly recent rustc commit <https://github.com/rust-lang/rust/commit/11339a0ef5ed586bb7ea4f85a9b7287880caac3a>. At least on the toolchain side there are no blockers for integration like in the case of Firefox. Still think it'd be worth freezing jxl-rs MSRV to at most 1.90 to give Firefox a chance.
2025-11-25 02:24:59 Interesting: <https://issues.chromium.org/issues/462919304#comment2> > While Microsoft goes through our internal evaluation process for adding support to our browser [...]
2025-11-25 02:25:42 So there's a confirmation that JXL support may land in MS Edge regardless if it lands in chromium
VcSaJen
2025-11-25 06:21:31 I think it's the opposite. MS wants it so that you need to install JPEG XL extension from MS Store before you can view JXLs in Edge. AVIF went through similar process on Edge, it was literal years before MS's bureaucracy machine allowed it to be on by default.
0xC0000054
2025-11-25 06:42:41 Plus the MS AVIF and WebP codecs were broken beta software the last I checked, but maybe they fixed them at some point in the last few years. The MS AVIF codec couldn't even correctly load the test images with transparency that Microsoft contributed to the AVIF conformance suite. 🤣
VcSaJen
2025-11-25 06:44:40 Though JPEG XL is not as encumbered with patents as AVIF, so hopefully "evaluation" will be quicker
Exorcist
2025-11-25 06:48:44 MS AVIF can't decode YUV444, and other bugs
jonnyawsom3
2025-11-25 09:23:06 They fixed that in an update a few weeks ago
MSLP
2025-11-25 05:24:25 Ah, so not good then :(. Indeed AVIF in MSEdge landed more than 3 years after chromium inclusion.
2025-11-25 05:25:27 Wasn't one of the main points of AVIF that it's royalty free?
Cacodemon345
2025-11-25 05:28:24 AV1's status is questionable at best.
2025-11-25 05:28:46 A better bet would be to wait for HEVC patents to expire in 2035 or something.
2025-11-25 05:29:00 At least that should replace the ancient VPx codecs.
lonjil
2025-11-25 05:52:45 even if AV1 is free from patents, AVIF uses a container that isn't
2025-11-25 05:52:49 not sure why they made that choice
dogelition
2025-11-25 06:01:57 not quite free from patents, but you get a free license with a defensive termination clause
Demiurge
2025-11-26 09:05:06 Doesn't jxl also use isobmff?
spider-mario
2025-11-26 09:05:53 optionally
Demiurge
2025-11-26 09:05:56 Also known as .mov/.mp4/.3gp/.heif
2025-11-26 09:06:54 If it was a patent issue then jxl wouldn't have chosen it...
_wb_
2025-11-26 10:43:19 there's the simple container format that is used in the jxl file format: this one is pretty safe patent-wise since the only "technology" is basically from the 1980s/1990s and is pretty straightforward (4-byte box names with a 4-byte size field, even PNG uses that concept) and then there's the more complicated HEIF that is using that syntax but defines lots of additional stuff like layering, tiling, rotation, cropping, etc. That's a newer thing and Nokia does claim to hold essential patents
Demiurge
2025-11-26 11:45:04 Oh, I see. I didn't realize heif has patented parts
0xC0000054
2025-11-26 12:45:12 The ISO documents referenced in the AVIF container format specification are also expensive. Although the ISO makes some versions available for free, IIRC that included an older version of the ISOBMFF spec.
_wb_
2025-11-26 01:29:02 probably in a next edition of 18181-2 we'll also define HEIF with JXL payload, but just as an optional thing. So then there will be three types of jxl files: - raw codestreams (just a naked 18181-1 bitstream) are valid files and can do anything you need to fully represent an image (sample data, colorspace, orientation, etc) - jxl container: simple and lightweight container, useful to embed metadata (XMP/Exif), jpeg bitstream reconstruction data, gainmaps, and whatever other "additional stuff" you may want to include besides the image itself - heif: more complicated container with more container-level functionality, also can store image collections etc
username
2025-11-26 01:41:14 speaking of the spec, I remember a few months ago hearing that something was being added or changed related to JPEG recompression to allow for handling/decoding of some types of side data (like gainmaps? \🤢) that would normally only get used during JPEG reconstruction. but I have to ask since I'm unfamiliar with the changes/additions exactly but is it structured in a generic enough way to theoretically allow/support things such as [JPEG XT](https://jpeg.org/jpegxt/)? <@794205442175402004>
2025-11-26 01:42:16 ~~off-topic but it seems like Discord's markdown support doesn't like rendering non-breaking spaces~~
_wb_
2025-11-26 01:42:16 we have been discussing that but there's no concrete proposal yet, probably we'd first implement that in an experimental branch of libjxl before adding it to the spec
Exorcist
2025-11-26 01:50:28 Why use ISOBMFF when not need multi stream and random seek?
2025-11-26 01:52:51 (AVIF use 2nd stream as alpha channel, support inter prediction same as video)
Foxtrot
2025-11-26 01:53:19 Since Heif with av1 is Avif, then Heif with JPEG-XL will be JEIF? 😄
AccessViolation_
2025-11-26 01:59:59 JEIF sounds like an ultra cursed pronunciation of GIF
Cacodemon345
2025-11-26 02:00:46 Reminds me of JNG.
VcSaJen
2025-11-26 02:01:17 Well, there's HEIC. JPEG1-in-HEIF doesn't have any special file extension.
Cacodemon345
2025-11-26 02:01:56 Nokia's lawsuit will get laughed out of the courts tbh; patenting container formats is just dumb.
2025-11-26 02:02:20 IIRC ISOBMFF was used in MP3?
0xC0000054
2025-11-26 02:06:32 MP4
Cacodemon345
2025-11-26 02:06:47 Makes sense.
2025-11-26 02:08:41 But yeah, ISOBMFF was created in 2004, so Nokia is grasping for straws.
_wb_
2025-11-26 02:34:20 There wouldn't be much reason to use the heif container with jxl payload, actually I resisted defining it exactly because it's not really needed — at least not like it is needed for heic and avif where without heif you wouldn't have a way to do alpha or arbitrary ICC profiles. But there's an interest from the heif folks to do this, so if they want to add that option, I'm not going to stop them.
2025-11-26 02:41:09 HEIF (23008-12) is more recent than ISOBMFF (14496-12). ISOBMFF is from 2004 as an ISO standard but it was already used earlier in MP4 and also in JPEG 2000, and it's basically just QuickTime. HEIF is from 2015 and it's currently 145 pages of spec that has ISOBMFF as a dependency.
VcSaJen
2025-11-26 03:11:09 Yeah I remember that https://discord.com/channels/794206087879852103/805176455658733570/1056109820979183676
AshRatte
2025-11-26 03:35:37 https://tenor.com/view/jod-gif-22535623
AccessViolation_
2025-11-26 03:43:28 the cloud cover splits. an opening appears. rays of light illuminate the lands below. down from the heavens they descend. not in physical form, but certainly there. not observed by any senses yet palpably, definitively, manifestly, present. not a person, not an animal, not a being, not alive, nor dead, but a concept. God. they've been here for 15 seconds, but it feels like you and everyone around you have been stuck here for days, nay, weeks. then, they communicate but once "it's pronounced Jod" they leave
Cacodemon345
2025-11-26 03:43:46 jxrlib doesn't support JXR-in-HEIF though?
AccessViolation_
2025-11-26 03:50:37 I like how in Captain Disillusion's video about alpha transparency, in an effort to intentionally produce PNG wrong, they incidentally pronounce it right as something very close to "ping"
5peak
2025-11-27 01:11:43 Used 2 B NOKIA. NOKAI nowadays. HAIP3D.
2025-11-27 01:14:24 Nevermore https://bugzilla.redhat.com/show_bug.cgi?id=1979565
KKT
2025-11-27 08:34:57 I wonder if Adobe and Affinity will start using JXL lossless in PSD and Affinity files… Would make sense.
2025-11-27 08:35:15 My drive could certainly use it.
username
2025-11-27 08:39:12 If they did they would probably misuse the JXL format in some annoying way. like for example treating JXL like it doesn't support layers and rolling their own layering system with unneeded overhead
jonnyawsom3
2025-11-27 08:39:35 I mentioned a similar idea to the Krita devs a while back https://bugs.kde.org/show_bug.cgi?id=500877
HCrikki
2025-11-27 08:40:17 imo some use of jxl for psd at least will happen eventually. imaging-focused proprietary formats could rebase on clean jxl-based specification to simplify futureproofing them
2025-11-27 08:41:08 simple steps first. some apps like gimp silently flatten multilayer images to jxl without even a warning. big issue
novomesk
2025-11-27 08:44:34 That's why it is called Export and not Save as...
VcSaJen
2025-11-27 09:16:46 Photoshop layers are quite convoluted, though. No format is designed to take those layers except psd.
_wb_
2025-11-27 09:20:01 I was hoping that Photoshop/Affinity/Krita/Gimp could use JXL as a "Save" format, where the (layered) image data is stored as jxl layers, if needed as invisible layers and with an explicit merged image (because funky blend modes or other fancy stuff is used that cannot be represented in jxl), and all the proprietary/additional stuff that is editor-specific is stuffed in some application-specific box that is only used when loading the image in the editor.
2025-11-27 09:20:50 Photoshop kind of does something like that when you save as TIFF or PDF, it just stuffs all the photoshop stuff in metadata blobs in those formats.
AccessViolation_
2025-11-27 09:28:07 I'm still a bit disappointed that DNG doesn't use CFA layers
2025-11-27 09:29:56 not that it matters for any practical reasons, but it would have been nice
_wb_
2025-11-27 09:30:51 I guess for now the main one using JXL DNG is the iPhone Pro, which doesn't use CFA anyway but "linear RGB", so for that it doesn't really make a difference
2025-11-27 09:31:59 but yes, it would have been nice to use CFA channels instead of just using single-component codestreams; it would potentially allow better compression since you could use RCTs and prevchannel MA properties...
2025-11-27 09:32:38 also would have been nice to use the jxl internal tiling instead of using dng tiling with lots of small codestreams
2025-11-27 09:33:05 would have been even nicer to use the JXL file format and put the DNG stuff in a box in there 🙂
2025-11-27 09:35:01 but there's still a strong tendency to see payload codecs as a black box that encodes a 2D array of numbers and anything else is application-specific and reinvented again in every container whether it's DNG or DICOM or HEIF or PSD
AccessViolation_
2025-11-27 09:36:29 especially the two green filter channels that are in basically the same channel twice
2025-11-27 09:38:59 DNG being a JXL with special metadata would have been really nice yeah
2025-11-27 09:51:58 one thing I can see JXL adopted in is game dev, where assets can have color channels, normal maps, reflectivity and all sorts of other properties efficiently stored in a single file per texture asset
2025-11-27 09:54:52 at least during development and distribution, you'd have to decode them to something else to get it onto the gpu
_wb_
2025-11-28 10:50:30 The 1 billion jxl per day number was a bit of a peak (stable number is more like 700-800 million), but this week we're hitting new peaks — as always this time of the year, the Black Friday / holiday season effect is kicking in — and we're now around 1.5 billion jxl images delivered per day.
HCrikki
2025-11-28 12:05:54 possible to give an idea about some point? what percentage of the total jxls *generated* is generated from a jpg original and from a png original (assuming originals only get one jxl output generated instead of several in multiple resolutions)
Elias
2025-11-28 12:33:06 https://github.com/elias1518693/jpeg_textures I've been working on something so that you could even use JPEGs without decoding them to something else. But currently it only works for JPEG because writing a JPEG XL decoder on the GPU is a bit complex and you have issues with all prediction it does since it further complicates random access 😅
_wb_
2025-11-28 12:42:47 I cannot answer that in general, but for Cloudinary: most original images are jpegs, though we have all kinds of other formats being used for originals (png, psd, tiff, heic, camera raws,...). But it's very rare to just transcode originals without doing at least a downscale, and usually other transformations (crop to change aspect ratio, add overlays, sharpen, etc etc). So we always encode from pixels and it's hard to say what the original format even was, e.g. say you start from a camera jpeg, downscale and crop it, sharpen it, and add some text overlay and a logo from an svg file, would you still consider that "a jpeg original"?
jonnyawsom3
2025-11-28 02:05:16 Interesting. I'm not sure what settings you encoded the JPEGs as, but doing XYB JPEG on the GPU could give a few more percent. For JXL, you might wanna look at the features the recent hardware encoder is using. You probably don't need all the features of the format for a game texture
Elias
2025-11-28 02:22:55 yeah I tried that but did not get the correct color conversion to work. Currently I support 4:2:0 subsampling to get 16x16 MCUs which lets me also store less offsets (which are needed for random access)
Squid Baron
2025-11-29 04:14:56 after all this time, i'm still surprised that it was apple of all companies that pioneered having jxl support
AccessViolation_
2025-11-29 04:39:37 right?
2025-11-29 04:39:53 having Safari be the main major browser to support JXL was wild
2025-11-29 04:41:05 I guess they saw the importance of adopting it into their ecosystem because unlike Google and Mozilla they're also big in media production with their video formats and editing software
Quackdoc
2025-11-29 04:46:32 Apple really likes premium things, and JXL is a premium thing
KKT
2025-11-29 04:54:48 Just wish they'd let us convert our JPEGs in Photos already.
VcSaJen
2025-11-29 08:23:08 Once patches are ready, I wonder which browser will be the first to integrate it in non-nightly non-beta build: Chrome or Firefox.
Quackdoc
2025-11-29 08:48:21 probably chrome, ff takes forever to move features
HCrikki
2025-11-29 08:57:46 origin trials will make the difference. those for chrome, firefox and edge are separate
2025-11-29 08:58:15 i hope this time the mistake of not doing them is not repeated - origin trials are how browsers forcefully enable a certain flag for predetermined list of websites
whatsurname
2025-11-30 03:49:38 Will it go through origin trials? AVIF didn't get one https://chromium-review.googlesource.com/c/chromium/src/+/2261172 And I think some of the reasons listed there also apply to JPEG XL
Quackdoc
2025-11-30 12:56:52 the difference is that there was next to no risk in enabling it
HCrikki
2025-11-30 01:17:21 enabled by default would be fine if it goes through the normal continuity (canary->dev->beta->stable). thats at least a month's worth of feedback and tuning. will still need cooperating partners (cdns are ideal but shouldnt be the only source of feedback)
Exorcist
2025-11-30 01:17:21 Why Google's git so hard to use
Quackdoc
2025-12-01 01:52:52 gerrit?
HCrikki
2025-12-01 08:59:10 https://github.com/bearcove/dodeca/commit/edd0f8601872d8f35e8b382a213127b7397950a3
2025-12-01 09:00:41 not sure how handy this static site generator is but hes got hundreds of paying backers and corporate sponsorships from aws and zed editor
Magnap
2025-12-01 09:04:11 I've always thought of the software an excuse for them to write articles about building it 😛
HCrikki
2025-12-01 09:04:49 nobody gets views praising webp
Magnap
2025-12-01 09:07:52 to be clear I didn't mean in a clickbait sense: they write educational articles about Rust, and you can get a lot of educational content out of writing about writing the static site generator you conveniently happen to need in order to hold the site that contains said content
AccessViolation_
2025-12-02 10:45:01 I like [their videos](https://www.youtube.com/@fasterthanlime/videos) too
Traneptora
2025-12-03 06:45:16 Guys guys guys guys
2025-12-03 06:45:27 bragging about JXL to a friend. send a JXL file to facebook messenger
2025-12-03 06:45:37
2025-12-03 06:45:53 did you know this?
lonjil
2025-12-03 06:49:01 yeah, since 2022 IIRC?
jonnyawsom3
2025-12-03 06:49:03 https://www.reddit.com/r/jpegxl/comments/pr2sk6/facebook_now_seems_to_accept_jpeg_xl_image_uploads/
2025-12-03 06:49:30 2021 apparently
Traneptora
2025-12-03 07:05:14 ah, so it's apparently very much not new
2025-12-03 07:05:24 I wonder if it *serves* JXLs based on the user-agent or accept header?
veluca
2025-12-03 07:17:25 they did an experiment for serving jxl (on mobile, most likely) in 2021/2
HCrikki
2025-12-03 07:33:06 im more surprised it could even parse jxl art and show a preview of that too
lonjil
2025-12-03 07:35:45 Seems like support has improved, in that thread people mention that bare JXL doesn't work, but JXL art obviously never uses the ISOBMFF container.
HCrikki
2025-12-03 07:37:29 anyone here from fb can talk this up?
Magnap
2025-12-03 07:37:39 telegram also supports JXL, but it "compresses" JXL to a low-quality much bigger JPEG lol
jonnyawsom3
2025-12-03 08:22:27 Sending as a file allows the in-app viewer to load JXLs on desktop
Magnap
2025-12-03 08:23:17 oh! so it does! very cool 😄
jonnyawsom3
2025-12-03 08:24:12 It even recognises animated JXL... But doesn't display it properly, just gives it the `GIF` tag like muted videos
Magnap
2025-12-03 08:25:41 at least EOG displays animated JXL, that way I don't have to go and hunt down a viewer just for that
jonnyawsom3
2025-12-03 08:25:55 The only official source we have is this <https://issues.chromium.org/issues/40168998#comment17>
HCrikki
2025-12-03 08:34:11 who's that guy from meta? maybe a rep of the jpeg group or the jxl authors could contact them to at least bring up awareness blink itself (not just chrome or chromium) is restoring jxl and want it enabled by default
2025-12-03 08:35:27 smugmug/flickr could probably use a highprofile nudge so they could be part of upcoming early adoption testing
jonnyawsom3
2025-12-03 08:58:23 I think they'll notice
2025-12-06 10:22:25 More info on a hardware encoder > Thanks to its efficient architecture, the compact encoder core achieves a latency of just one frame and a processing throughput of one sample per clock cycle. A single instance can encode 4K-resolution images in real time, while multiple cores can be instantiated in parallel to support higher resolutions. The JPEG-XL-E core accepts input samples in IEEE 754 single- or half-precision floating-point format and outputs the JPEG XL compressed payload. https://www.cast-inc.com/compression/jpeg-image-compression/jpeg-xl-e
username
2025-12-06 12:09:28 ooo there's even some details on the right side of the website about encoding features and supported input(s): > ## JPEG XL Encoder > > * Compliant to JPEG XL ISO/IEC 18181 > * Lossy (Var-DCT) compression > * Supported Features > * Gaborish filter > * Quantization/Field value: 1-255 > * Quantization/Scale value: Arbitrary > * Quantization/Matrix value: Fixed > * DCT block size: 8x8, 16x8, 8x16 > * TOC order: Fixed > * Entropy coding: Prefix code (fixed table value) > > ## Input Format > > * Horizontal Resolution: 320-4096 > * Vertical Resolution: 16-4096 > * Color format: LinearRGB, > * RGB (perceptual quantization) > * Bit depth: IEEE 754 > * Single- or half-precision floating point > > ## Throughput & Latency > > * 1 sample/clock throughput > * 1 frame latency
2025-12-06 12:10:01 nice to see it uses more then one block size IMO
lonjil
2025-12-06 12:11:40 This is probably a pretty direct translation of jxl-tiny
2025-12-06 12:11:53 Which uses those block sizes
username
2025-12-06 12:13:51 oh huh yeah: https://github.com/libjxl/libjxl-tiny/blob/main/doc/coding_tools.md
_wb_
2025-12-06 12:16:57 Yeah, Shikino did use libjxl-tiny as a starting point; but of course lots of stuff needed to be adjusted to make it hw-friendly, in particular everything is done in fixedpoint, and the hw version traverses the data in a more parallel way also within a group. But in terms of compression performance it should be more or less similar to libjxl-tiny.
AccessViolation_
2025-12-06 12:40:24 I'm surprised it uses different block sizes at all, pretty nice
2025-12-06 12:40:51 prefix coding is unfortunate
2025-12-06 12:43:17 I imagine it's possible to construct an ANS JXL from one that uses Huffman coding though
2025-12-06 12:44:15 I'll note that down for CSALT in case people do JXL -> JXL
whatsurname
2025-12-06 12:57:26 https://github.com/webmproject/CrabbyAvif/pull/703 I didn't expect that
Magnap
2025-12-06 01:01:58 CSALT lossless mode? 😉 looking at libjxl-tiny, you can also do the coefficient reordering you've mentioned before as well as redo the LF image at a higher Modular effort (it uses a fixed tree)
AccessViolation_
2025-12-06 01:04:20 > CSALT lossless mode? I guess so! it doesn't really fit does it
2025-12-06 01:04:49 optimizing JXLs losslessly sounds like it could be a different tool entirely
Magnap
2025-12-06 01:08:08 yeah I agree, but potentially fairly valuable in a world with hardware coders and/or as an archival tool (jumping to https://canary.discord.com/channels/794206087879852103/794206087879852106/1446849837155877006)
_wb_
2025-12-06 01:39:21 prefix coding is in the spec specifically because it is convenient for hardware encoding. The encode side of ANS is hard for a hw implementation.
2025-12-06 01:41:22 so yes there should be room for lossless jxl->jxl recompression by applying better entropy coding, the hw encoder is limited to predefined huffman codes because anything better would require more buffers and a two-pass approach
AccessViolation_
2025-12-06 01:43:30 we were talking about it in <#794206087879852106>. I think if hardware-encoded JXLs become common, it'd be nice if cjxl had a mode specifically to losslessly optimize lossy JXLs, as a default mode when the input is VarDCT and the distance is 0. just like how it already has an implicit mode for JPEG recompression
Quackdoc
2025-12-06 03:13:49 https://tenor.com/view/why-huh-but-why-gif-13199396
Meow
2025-12-07 08:04:59 "JPEG-XL" from an iPhone 17 Pro Max at Apple Store Taipei 101
adap
2025-12-07 08:25:10 iphones had jxl for proraw for over a year hasn't it?
Meow
2025-12-07 08:25:48 Just wanted to confirm if the hyphen still exists
Cacodemon345
2025-12-07 08:31:25 <@&807636211489177661>
Mine18
2025-12-07 09:05:37 i wonder when will the first android phone incorporate this
RaveSteel
2025-12-07 09:44:21 surely we will get general software support for android in 2026 [copium](https://cdn.discordapp.com/emojis/1309186253652234281.gif?size=64&animated=true&name=copium)
Demiurge
2025-12-08 12:56:49 And how is the subjective quality of libjxl-tiny?
2025-12-08 01:15:52 Better than mozjpeg?
jonnyawsom3
2025-12-08 01:26:58 You mean at the same filesize I assume?
Demiurge
2025-12-08 01:27:12 Of course
2025-12-08 01:28:30 I never saw anyone do any detailed subjective quality analysis of the -tiny encoder.
2025-12-08 01:29:12 Does it beat libwebp?
2025-12-08 01:30:06 What sort of artifacts are expected?
jonnyawsom3
2025-12-08 01:30:36 Considering the target quality is 90-95, yes
_wb_
2025-12-08 07:37:58 We haven't done subjective tests but in this very high fidelity range, the metrics are probably reliable enough.
qdwang
2025-12-08 07:39:20 Actually, apple removed lossy bayer JXL DNG support starting from iOS 26.1 (I don’t know if it’s a bug or on purpose)
jonnyawsom3
2025-12-08 07:40:39 Apple never had Bayer DNG
qdwang
2025-12-08 07:41:30 Yes, they don’t output bayer DNG. I mean in previous iOS versions(17.0 - 26.0.1), they can render bayer dngs correctly but not after iOS 26.1
2025-12-08 07:46:16 They failed to render interleave stored bayer data(needed for lossy JXL). My guess is they use a new DNG decoding process on iOS 26.1 but forgot to add the interleave data pattern support.😅
2025-12-08 07:50:25 I’ve already sent feedback to apple but no replies and iOS 26.2 still has the issue. Does JXL developers have connections with apple developers?
2025-12-08 07:54:18 One can reproduce the issue by using Adobe DNG convertor with parameter -lossyMosaicJXL on a normal bayer DNG. The converted DNG will render complete black on devices after 26.1
jonnyawsom3
2025-12-08 07:54:33 I was going to ask, do you know if the HW encoder's block merging and quality decisions are based on libjxl, or was it tuned standalone since it only goes up to 16x16 blocks and is focused on high quality?
2025-12-08 07:55:09 I'm wondering if the overzealous merging and B desaturation of main got into it...
_wb_
2025-12-08 07:55:21 It should be similar to whatever libjxl-tiny does
A homosapien
2025-12-08 10:20:45 libjxl-tiny has the same desaturation issues as libjxl from what I've seen
_wb_
2025-12-08 03:41:05 https://github.com/web-platform-dx/developer-signals/issues/215
jonnyawsom3
2025-12-08 07:08:59 I'm glad I raised attention about that. The interop has been running for years with hundreds of votes, but the dev signal only had 40
Demiurge
2025-12-09 01:14:38 The desaturation issue is an achilles heel and I really hope jxl doesn't become known for and associated with desaturated colors. I'm pretty sure the cause is due to the quant rounding error always undershooting the target on average because it doesn't take gamma into account when computing the error
jonnyawsom3
2025-12-09 01:16:25 It's a theoretically easy fix, the issue is parameterized quant tables is the one kind that isn't implemented yet, so we'd have to do it from scratch
Demiurge
2025-12-09 01:16:31 So the encoder doesn't actually calculate the true severity of the rounding error and does not attempt to compensate at all for consistently undershooting the target
2025-12-09 01:17:08 You don't actually need to change the quant tables to fix. You just need better error prediction and compensation technically.
2025-12-09 01:18:08 Preferably using some fast, good-enough heuristic that can even out the bias
2025-12-09 01:21:54 Some black magic multiplier that causes the rounding error to average out closer to the center of the target rather than consistently beneath the target
jonnyawsom3
2025-12-09 01:22:30 Yeah, it rounds towards 0 rather than the closest number
Demiurge
2025-12-09 01:24:20 Hopefully it gets fixed in libjxl-tiny as well, before hardware encoders cement desaturation into libjxl reputation...
2025-12-09 01:25:25 Luckily since it's a problem with rounding error, it's not a big deal on high quality settings
jonnyawsom3
2025-12-09 01:26:45 I did my testing of libjxl-tiny at `-d 0.45` and it was still noticable in some areas
2025-12-09 01:27:25 Hopefully it's less prominent in photos where there's a lot more going on in general
Demiurge
2025-12-09 04:09:47 Hopefully someone comes up with a fast little hack that's good enough to offset the bias
AccessViolation_
2025-12-09 04:11:23 do we know if these hardware encoders necessarily have the relevant parameters hard-coded? maybe they can be configured properly to get around it?
2025-12-09 04:12:20 maybe it has support for parameterized quant tables, despite software encoders not having those. it'd make sense to go through that effort for a hardware encoder since there's a high risk of...well, stuff like this, and not being able to fix it down the line
Demiurge
2025-12-09 04:14:27 Hopefully the desaturation issue can be patched before it becomes something people notice enough to become a part of JXL's reputation
2025-12-09 04:14:53 "That format that washes out all your colors"
2025-12-09 04:17:03 It's not a problem that's inherent to XYB or JXL, but just with how it's implemented.
2025-12-09 04:18:25 It's theoretically possible to compensate for.
2025-12-09 04:18:35 In the encoder.
tokyovigilante
2025-12-09 09:06:11 https://github.com/kaitakeradiology/orthanc-jxl
jonnyawsom3
2025-12-09 09:17:31 > Center-first group ordering for streaming applications Yes but actually no, chunked broke it > The plugin currently defaults to ProgressiveLossless mode with center-first group ordering. Ah, well that disables chunked... And is 40% larger than it should be because v0.12 still isn't out, along with being singlethreaded
Demiurge
2025-12-09 09:37:18
tokyovigilante
2025-12-09 09:47:38 Thanks AI... I did install a nightly locally. Will make a few updates.
HCrikki
2025-12-10 12:40:21 https://github.com/hjanuschka/jxl-ui
2025-12-10 12:41:27 hjanuscha is on a roll. mentioning because this (mac) image viewer specifically implements jxl-rs as a decoder
jonnyawsom3
2025-12-10 01:23:41 Interesting logo
2025-12-10 01:23:42 https://raw.githubusercontent.com/hjanuschka/jxl-ui/refs/heads/main/assets/icon.png
username
2025-12-10 01:36:06 there's a bit too much empty space and it causes it to look out of place next to other apps: https://cdn.discordapp.com/attachments/978083166239744081/1448113376399069297/Screenshot_2025-12-09_at_6.45.28_PM.png
Meow
2025-12-10 02:17:46 Unnecessary name on an icon
2025-12-10 11:09:01 Keka's icon has been updated for macOS 26 Tahoe however
HCrikki
2025-12-10 12:43:34 seems jxl-rs got some initial merge into chromium yesterday? code appears to be part of 145.0.07572.1
2025-12-10 12:45:57 the rust lib got a ton of improvements, ressource consumption reduction and faster so does that mean theyre confident further implementation adjusting can be continued as part of the browser or blink ?
RaveSteel
2025-12-10 12:58:04 https://chromium.googlesource.com/chromium/src/+/740e9bb6eda1faec82bb17e11f87b7313b46a137 https://chromium.googlesource.com/chromium/src/+/refs/heads/main/third_party/rust/
veluca
2025-12-10 01:22:17 for now it's just initial integration, connecting this to Chrome can be done mostly in parallel to improving jxl-rs 🙂
2025-12-10 01:23:04 in particular, a lot easier to have 0.1.4 and use that to build the Chrome scaffholding and then update everything later
username
2025-12-10 08:07:42 speaking of, how much communication is there between you and the Chrome dev who has been submitting a bunch of PRs? I'm asking because it seems like they are generally unaware of what your plans/roadmap are in relation to jxl-rs.
veluca
2025-12-10 08:08:20 I mean he opened a million PRs, we're talking 😛
2025-12-10 08:08:39 I just have been too busy trying to write a bunch of code before reviewing them
Demiurge
2025-12-11 08:12:46 You mean Helmut?
veluca
2025-12-11 09:23:39 yep
AccessViolation_
2025-12-11 10:09:54 I wonder if an eventual encoder implementation could make it into browsers for cache compression? for losslessly transcoding cached JPEGs into JXL to reduce the amount of data stored, or rather increasing the amount of images that fit in the cache, typically limited to 1 GB total
jonnyawsom3
2025-12-11 02:28:56 There was a Chromium issue open about JPEG XL content encoding, but the issue errors when I try to open it now
2025-12-11 02:29:24 The group works though https://groups.google.com/a/chromium.org/g/blink-dev/c/4hFGYxBRIBU/m/dUgy9SUVAgAJ
AccessViolation_
2025-12-11 04:23:32 that'd be nice
2025-12-11 04:24:20 I assume responses are cached in their original encoding so it'd benefit cache capacity too
MSLP
2025-12-12 04:49:13 Maybe this one? https://issues.chromium.org/issues/40141863
jonnyawsom3
2025-12-12 04:50:46 Nearly >>> See: https://bugs.chromium.org/p/chromium/issues/detail?id=1088429
Cacodemon345
2025-12-12 07:01:00 Leads to intranet.
AccessViolation_
2025-12-14 12:33:13 I've been thinking, should someone reach out to that company making the hardware encoder to tell them about the desaturation issues their encoder likely inherits from the software encoder they used?
_wb_
2025-12-14 12:53:22 I can reach out to them but it would be better to have a libjxl-tiny patch ready first to show how to fix it
runr855
2025-12-14 06:08:10 Is the saturation bug only present in libjxl-tiny or also present in libjxl? It's seems like a pretty serious bug
2025-12-14 06:09:26 Reaching out would be a pretty good idea. As many implementations of libjxl shows the end-user devs of the library often don't research in depth (misusing stuff etc.)
AccessViolation_
2025-12-14 06:16:30 it's also in libjxl. the issue is with the default spec-defined quantization tables
2025-12-14 06:17:45 the format allows signaling different quantization tables, but that's currently not supported in many (any?) encoders
2025-12-14 06:21:29 if the hardware encoder allows signalling different quantization tables via parameters, the issue will be easy to fix by any device using it. but I don't know whether that's the case
lonjil
2025-12-14 06:22:23 Probably no device is using it yet
jonnyawsom3
2025-12-14 06:33:15 libjxl has an API for full quant tables, but not the parameter version
runr855
2025-12-14 07:48:00 Will this be fixed in libjxl before next release? And what can I currently do without being impacted when converting to JXL?
jonnyawsom3
2025-12-14 07:55:18 That depends when the next release is
runr855
2025-12-14 08:03:14 Is there any way to prevent the bug currently?
2025-12-14 08:04:11 And in what situations does it show up? If it's always been a part of JPEG XL it has been unknown for quite a few years I guess
2025-12-14 08:04:37 Quite fascinating in a way. Hopefully it won't have any long-term impact
jonnyawsom3
2025-12-15 05:41:15 It only affects highly saturated yellows and sometimes reds from what I've seen, so you won't notice it unless you're comparing to the original or know what to look for
_wb_
2025-12-15 08:40:07 I would say it's not as bad as the desaturation of reds and blues you can get with JPEG, but it is something that would be good to improve.
tokyovigilante
2025-12-15 09:35:56 Could I impose on you to expand on this a bit? I'm really struggling to understand best practice for lossless progressive compression, the docs are fairly sparse and the encoder seems to have moved on quite a bit without a formal release.
runr855
2025-12-15 03:28:15 So it's actually not really a unique mistake to have? To be fair doesn't all codecs have their own "look" in a way? In a way we're for example used to look at how JPEG artifacts can look at decent quality settings
2025-12-15 03:29:28 It's almost expected when looking at images. If I remember correctly I've seen criticisms of JPEG XL probably relating to this exact thing. We're so used to how JPEG compression artifacts look we expect them as part of the picture
_wb_
2025-12-15 03:32:04 I mean in jxl we can in principle avoid this specific problem. Unlike JPEG's problem with red and blues which is hard to avoid since it's mostly caused by YCbCr and chroma subsampling.
Demiurge
2025-12-16 02:42:01 Yellows, orange, reds, and even greens too.
2025-12-16 02:42:26 I haven't noticed it with blues but that makes sense since the human eye is much less sensitive to blue
2025-12-16 02:43:49 And yeah most encoders have a lot worse artifacts but libaom has made huge leaps and strides recently
2025-12-16 02:44:17 libaom does a really good job these days
NovaZone
2025-12-16 02:50:54 Yee, can't do 0,255,0 for instance
Demiurge
2025-12-16 02:58:42 The color desaturation problem is somewhat unique to the XYB conversion process. Other codecs do not have a similar desaturation effect, but they have different problems such as chroma blurring and resampling artifacts when chroma subsampling is used, or heavy artifacts in dark, low-contrast regions is another common issue with a lot of codecs.
jonnyawsom3
2025-12-16 02:06:58 The B channel rounding/quantizing towards 0 makes it stronger, so it makes sense you wouldn't notice desaturation, since it would only make it stronger (As far as my testing showed)
2025-12-16 02:11:15 A TLDR is: Use main instead of 0.11, `-d 0 -p -e 9 --group_order 1` There are some more tweaks you can do, but they have varied results for only slight improvements
tokyovigilante
2025-12-16 09:54:00 That's awesome, thanks for clarifying. I'm running a nightly in my testing.
2025-12-16 10:05:17 I might stick with e=7 though: ``` Benchmark Results (512x512 16-bit CT) | Mode | Effort | Encode | Decode | Size | Ratio | |---------------------|--------|--------|--------|-------|-------| | ProgressiveLossless | 7 | 63ms | 6.5ms | 114KB | 4.5x | | ProgressiveLossless | 9 | 191ms | 11ms | 113KB | 4.5x | | Lossless | 7 | 25ms | 6ms | 92KB | 5.5x | | Lossless | 9 | 87ms | 4ms | 90KB | 5.7x | | Lossy (d=1.0) | 7 | 35ms | 2ms | 20KB | 25.6x |```
Demiurge
2025-12-16 10:42:35 I thought 0 means "not blue nor yellow"
2025-12-16 10:42:56 Like how if everything is zero in the chroma channels, it's grey.
jonnyawsom3
2025-12-17 07:51:11 Huh, I hadn't seen that decode speed penalty from e9 on progressive before. I might look into that later
Kleis Auke
2025-12-18 02:01:37 https://github.com/weserv/images/commit/a8abac275128ecc8fa43d203f5551c99fc98a0a9 - coming soon to https://wsrv.nl/
lonjil
2025-12-18 02:23:00 hooray
.vulcansphere
2025-12-19 06:29:42 Yay!
jonnyawsom3
2025-12-19 12:49:05 Was checking on the Chromium integration and I'm a little unsure about this. Before it was only a filesize check, which for things like JXL art, wouldn't stop anything. But now it's limited to 67 MP, so anything above 8192 * 8192 will fail to decode. Definitely not a common scenario, but seems quite low even compared to WebP's 16383 * 16383. The original libjxl implementation never had a limit at all
2025-12-19 12:49:57 It was only done for AVIF to detect invalid files > // The maximum AVIF file size we are willing to decode. This helps libavif > // detect invalid sizes and offsets in an AVIF file before the file size is > // known. > constexpr uint64_t kMaxAvifFileSize = 0x10000000; // 256 MB
username
2025-12-19 12:58:18 <@179701849576833024> thoughts on this? I'm unfamiliar with the code but if it really is limiting to files with a max res of 8K with the changes hjanuschka made here then that's wayyyy too low
veluca
2025-12-19 12:58:56 ah no, the size is too low for sure
username
2025-12-19 01:04:23 what would be a good res limit? 32K? 64K? something else?
2025-12-19 01:07:00 I'm in favor of 64K although I haven't really thought much about it and maybe there's stuff I'm not considering 🤷
jonnyawsom3
2025-12-19 01:15:15 `1024 * 1024 * 1024` would be 16K, 1GB of memory as an 8bit image
username
2025-12-19 01:15:49 what are the limits for PNG and JPEG? or are those just file size based?
veluca
2025-12-19 01:16:18 level 5
2025-12-19 01:16:32 so `1024*1024*1024`
_wb_
2025-12-19 01:17:39 what would make sense is to just use the Level 5 limits, which is 262144px max for each dimension and 268 Mpx max in area.
2025-12-19 01:19:40 JPEG is limited to 65535x65535 since it cannot signal anything larger; PNG has no signaling limits but I assume there will be some dimension limits implemented (since PNG can represent huge images in few bytes too, e.g. single-color images).
2025-12-19 01:20:36
2025-12-19 01:21:04 > The Main profile has two levels. Level 5 is suitable for end-user image delivery, including web browsers and mobile apps. Level 10 corresponds to a broad range of use cases such as image authoring workflows, print, scientific applications, satellite imagery, etc. > > Levels are defined in such a way that if a decoder supports level N, it also supports lower levels. > > Unless signalled otherwise, a JPEG XL codestream is assumed to be conforming to the Main profile, level 5.
jonnyawsom3
2025-12-19 01:21:20 Alternatively, Chrome uses `max_decoded_bytes` as a global limit for all formats (from what I can see)
2025-12-19 01:25:27 Seems to have handling for high bit-depth images using half-float too <https://chromium.googlesource.com/chromium/src/+/1ade7e92edd967c0d54c64f262f9c149b48d0a96/third_party/blink/renderer/platform/image-decoders/image_decoder.cc#79>
2025-12-19 04:19:31 <@179701849576833024> I see you updated your comment, not sure if you want to append it and mention `max_decoded_bytes` too, which the other formats seem to use Depends if you want to match Level 5 with `1024 * 1024 * 1024`, or match the other formats in Chrome with `max_decoded_bytes`
veluca
2025-12-19 04:23:18 Eh, it's pretty close to max decoded bytes anyway
jonnyawsom3
2025-12-19 04:26:18 Ah, fair
awxkee
2025-12-19 07:08:24 Since integration in Chromium has started, I'm wondering that exotic JXL variants will appear, and it's not very clear how CMYK, CMYKA, CMYKOGV, and other exotic formats should be handled in current libjxl API. FOr CMYKA should it be num_color_channels = 5 && alpha_bits or num_color_channels = 3 &&. num_extra_channels = 2 && alpha_bits or num_color_channels == 4 && num_extra_channels ==1 && alpha_bits ?
2025-12-19 07:09:09 This seems to be over generalized for the one who don't have access to spec
Tirr
2025-12-19 07:10:40 num_color_channels = 3 (CMY, signalled as RGB with CMYK ICC profile), one extra channel of kind Black, one extra channel of kind Alpha
awxkee
2025-12-19 07:12:59 So is it` num_color_channels = 3 &&. num_extra_channels = 2 && alpha_bits` ? I don't see any API allowing to distinguish types of extra channels in libjxl
Tirr
2025-12-19 07:13:32 I'm not familiar with libjxl API, but there should be one?
username
2025-12-19 07:13:54 this might be more relevant for https://discord.com/channels/794206087879852103/804324493420920833
jonnyawsom3
2025-12-19 07:16:27 Moved to https://discord.com/channels/794206087879852103/804324493420920833/1451654298328105173 (Message link)
AccessViolation_
2025-12-19 11:02:15 any guesses on whether we're going to see Chrome or Firefox integration of jxl-rs in an unstable release first?
jonnyawsom3
2025-12-19 11:03:25 Firefox still has a chain of around 5 blocking issues to fix first, Chrome is mostly signed off but probably next year in case of issues cropping up
veluca
2025-12-20 12:06:10 also it's generally considered bad juju to submit non-trivial stuff around Christmas
Quackdoc
2025-12-20 12:17:17 absolutely
2025-12-20 12:17:50 anyone who wants to become a villain should do so
2025-12-20 12:17:59 no better time for overtime
jonnyawsom3
2025-12-20 12:18:49 After leaving some comments with advice, they got their online converter to do JPEG transcoding instead of lossless encoding https://www.reddit.com/r/jpegxl/comments/1plukes/comment/nuxptk8/
2025-12-20 12:18:53 https://picperf.io/convert/jpeg-to-jpegxl
HCrikki
2025-12-20 01:26:43 at what effort? given even e1 gives the size decrease in instant transcodes, im curious as to wether theyre trying to max the byte reductions with injustified high effort and metadata wipe
2025-12-20 01:27:53 just tried a 100 and 30 megapixel jpg. fast but got a 7 kilobyte output (used firefox but fails in chrome too). 10 megapixels and ultratall 6mp jpg worked. is there a maximum resolution ?
jonnyawsom3
2025-12-25 05:37:03 Libraw's first official release with JXL DNG just landed https://github.com/LibRaw/LibRaw/releases/tag/0.22.0
2025-12-25 05:37:45 My tree may be empty, but it looks like I'm still getting a gift this Christmas
2025-12-25 05:44:10 Can't wait for v0.12 so we can have Faster Decoding DNGs
HCrikki
2025-12-25 09:00:02 anyone got a list of devices that generate dng **1.7**? software and devices almost never specify wich dng spec version they support
jonnyawsom3
2025-12-25 10:57:10 Aaand they deleted it while I was asleep....
TheBigBadBoy - 𝙸𝚛
2025-12-25 11:17:27 yeah getting a 404 too
HCrikki
2025-12-25 11:20:33 probably just a minor continuity blip, refreshed 0.21 ought to be split before main as 0.22 sets its dedicated tag for lts maintainance
2025-12-25 11:25:19 if you want it *right now*, here's a dl link - **libraw.org/data/LibRaw-0.22.0-Win64.zip** - **libraw.org/data/LibRaw-0.22.0-macOS.zip**
2025-12-25 11:28:30 the full changelog is listed in the archive
2025-12-25 11:33:13 jxl support is added through adobe's DNG converter 1.7.x - any efficiency improvements in upstream sdk probably could trickle down without a minor spec refresh but not libjxl
2025-12-25 11:42:55 reddit submission deleted. was this not meant to go public yet ?
jonnyawsom3
2025-12-25 11:43:16 The SDK uses libjxl
2025-12-25 11:43:46 Because the link was dead it got downvoted into oblivion, I'll just remake it when they re-release it
HCrikki
2025-12-25 11:44:00 files above if you need them
jonnyawsom3
2025-12-31 12:26:56 Well that's nice, they used Oxide for DNG decoding https://github.com/dnglab/dnglab/pull/562
2026-01-04 07:06:15 Ezgif updated their JXL support to add JPEG transcoding and client side encoding https://www.reddit.com/r/jpegxl/comments/1plukes/comment/nxm2h09/
2026-01-04 07:06:29 https://ezgif.com/jpg-to-jxl-bulk-converter
Snafuh
2026-01-08 11:33:49 jxl-rs was merged into Chromium. https://chromium-review.googlesource.com/c/chromium/src/+/7319379 Kinda crazy chrome will probably beat firefox to it
AccessViolation_
2026-01-08 11:52:29 does this mean it'll be in the next release?
2026-01-08 11:52:48 or will it be in canary first or something?
2026-01-08 11:52:59 I'm not very familiar with Chrome's release process
HCrikki
2026-01-08 11:54:21 doubt, it should normally go into canary first with a flag - planned built by default but enabled by default might not come this soon. origin trials can forcefully activate the flag with for specific websites to test impact
2026-01-09 12:13:20 https://github.com/chromium/chromium/commit/3badff27281339878293e935a5e0fbb41da553bf
2026-01-09 12:21:31 assuming its complete (builds and flags), i presume canary should be available to try tomorrow (newer than *145.0.7623.1*)
hjanuschka
2026-01-09 12:22:13 it will take a while, this is part 2/3 - the actuall wiring runs in another CL! but we are getting there!
lonjil
2026-01-09 12:31:09 For reference, that one is here: <https://chromium-review.googlesource.com/c/chromium/src/+/7184969/74>
hjanuschka
2026-01-09 12:39:45 yes, once that is in canary, about://flags is your friend 🥳
adap
2026-01-09 12:43:43 https://tenor.com/view/fast-cat-cat-excited-jumping-gif-5054843775616689213
jonnyawsom3
2026-01-09 12:44:36 I did want to ask, is the Eager progressive mode being used/tested at all? <https://github.com/libjxl/jxl-rs/blob/main/jxl/src/api/options.rs#L10> It's what allows Progressive_DC to render (I think) and there was previously a discussion around disabling the current Progressive_AC in favour of it by default Progressive AC is what gives an intermediary between 1:8 DC and full quality, Progressive DC allows any resolution up to 1:8 in powers of 2 (8x8, 16x16, 32x32, ect) Progressive lossless may also be effected, and may not work at all without Eager, but I haven't been able to test it myself. Thanks for all the hard work on Chrome!
hjanuschka
2026-01-09 12:50:13 from my understanding, it ends up in FullFrame mode so no eager. we'd need to do this in jxl-rs first i guess!
whatsurname
2026-01-09 03:03:13 It will probably land in 146 since 145 will be cut on Monday
AccessViolation_
2026-01-09 08:04:16 exciting!
2026-01-09 08:08:02 <@794205442175402004> it would be cool to see more of those Cloudinary graphs covering the rollout phases of JXL in Chrone and Firefox, when that happens <:BlobYay:806132268186861619>
2026-01-09 09:56:00 https://wasm-vips.kleisauke.nl/playground
_wb_
2026-01-09 10:00:35 I will certainly keep an eye on that!
2026-01-09 10:07:39 this is what it looks like for now, basically saturation corresponding to the market share of iPhones. It's funny to see we always get spikes around holidays (thanksgiving and xmas/eoy) when people are doing more stuff on their phones and less on their desktop/laptop.
lonjil
2026-01-09 02:05:05 noice
2026-01-09 02:05:33 can I share that graph elsewhere?
AccessViolation_
2026-01-09 02:07:55 oh wow <@208917283693789185> I didn't know you were here!
2026-01-09 02:08:25 really cool thing you've made
Kleis Auke
2026-01-09 02:09:06 Thank you! It's one of my pet projects. 🙂
2026-01-09 02:37:08 This has now been deployed. For example: https://wsrv.nl/?url=https://github.com/libjxl/conformance/raw/master/testcases/animation_icos4d/input.jxl&n=-1&output=webp However, some custom bitdepth images are currently broken due to the issue described in PR <https://github.com/libvips/libvips/pull/4830> (e.g. <https://wsrv.nl/?url=https://github.com/libjxl/conformance/raw/master/testcases/sunset_logo/input.jxl&output=png>).
AccessViolation_
2026-01-09 02:38:22 you made wsrv too??
2026-01-09 02:38:29 I was actually looking at that
Kleis Auke
2026-01-09 02:38:39 Yes, one of my other pet projects.
AccessViolation_
2026-01-09 02:39:05 I like your pet projects
RaveSteel
2026-01-09 03:10:02 good glitchart in the PR
cioute
2026-01-11 02:16:51 whats new for android?
RaveSteel
2026-01-11 02:19:27 Why do you ask? Was there anything announced?
cioute
2026-01-11 02:24:20 no, i just search a android gallery app with zooming for jpegxl
AccessViolation_
2026-01-11 02:46:36 we have some in <#822120855449894942>
whatsurname
2026-01-11 02:55:14 I don't think Fossify Gallery is what he's looking for though https://github.com/FossifyOrg/Gallery/issues/252
HCrikki
2026-01-11 06:37:13 i think that was fixed at some point but its still an issue with avif
jonnyawsom3
2026-01-11 07:04:11 https://github.com/FossifyOrg/Gallery/issues/318
2026-01-11 08:58:56 I misread that the first few times, didn't realise we hit 1B/d
adap
2026-01-11 11:46:24 https://reshade.me/releases/10207-6-7 JXL screenshot feature in official reshade build now
jonnyawsom3
2026-01-12 01:18:39 Thanks <@274048677851430913>
AccessViolation_
2026-01-12 07:52:24 it feels like things are moving so quickly now :D
2026-01-12 07:52:33 love to see it
jonnyawsom3
2026-01-12 11:24:17 Inteeeresting... They removed it from the blog and redirected the URL https://aboutsignal.com/news/signal-ios-update-bug-fixes-jpeg-xl-and-pinned-messages-are-getting-closer/
2026-01-12 11:24:46
2026-01-13 12:44:34 Part 3/3 if I'm not mistaken https://github.com/chromium/chromium/commit/8215ebd5eb9d45b42bbc68e1ceff039a319b35d6
veluca
2026-01-13 01:07:36 correct
HCrikki
2026-01-13 01:15:03 if so, i presume itll be in upcoming canary build *after 145.0.7631.2*
_wb_
2026-01-13 01:21:28 this is oddly satisfying
veluca
2026-01-13 01:23:28 I believe it should be in 146.x
2026-01-13 01:23:39 (branch cut for 145 was today)
whatsurname
2026-01-13 02:01:36 You can check https://chromiumdash.appspot.com/commit/8215ebd5eb9d45b42bbc68e1ceff039a319b35d6 for which build it's shipped with
jonnyawsom3
2026-01-13 05:08:03 It says `Landed 145.0.7632.0`, so I think it might've slipped in
whatsurname
2026-01-13 05:27:54 https://chromium.googlesource.com/chromium/src/+log/refs/tags/145.0.7632.0 It's so close, 80 minutes before the last commit
Tirr
2026-01-13 06:26:44 maybe I'm going to install chromium canary build
hjanuschka
2026-01-13 09:16:01 canary is released you'd need to opt in via chrome://flags/ (search jxl) - and make sure to restart canar atleast once!
2026-01-13 09:16:54
2026-01-13 09:20:09 also think it might slipt in 🙂 but we will see, the label/tag on chromiumdash does give me hope
whatsurname
2026-01-13 09:47:02 I just tested https://random-stuff.jakearchibald.com/apps/img-decode-bench/ and JXL is 20x slower than AVIF I wonder if the SIMD feature is not enabled
hjanuschka
2026-01-13 09:50:37 it should, no matter what build flavor, jxl-rs always uses release/optimized flags
2026-01-13 09:50:50 but perfromance is still a thing, getting it in was prio.
AccessViolation_
2026-01-13 09:54:40 it's happening it's happening
Meow
2026-01-13 10:01:27 Is JXL really functional on Chrome Canary now?
whatsurname
2026-01-13 10:06:40 It's a default feature of jxl_cli but I didn't see where it gets enabled in Chromium
hjanuschka
2026-01-13 10:18:22 if you enable it with chrome://flags (and restart once) yes
Meow
2026-01-13 10:19:35 Great so it's not a placeholder flag there
monad
2026-01-13 11:11:37 time to compress the web
Tirr
2026-01-13 11:21:14 jxl-rs has SIMD but it's still singlethreaded now
2026-01-13 11:23:00 and it doesn't match the performance of singlethreaded libjxl yet
dogelition
2026-01-13 11:34:38 yep that's definitely working, including hdr, awesome no idea if this is even supposed to be a supported use case for jxl in "normal" viewers, but i noticed that a jxl converted 1:1 from jxr (hdr using linear half float srgb, with (1,1,1) = 80 nits white) is not displayed as hdr in chrome. it does work when importing into krita though jxlinfo for reference: ``` JPEG XL file format container (ISO/IEC 18181-2) JPEG XL image, 3840x2160, (possibly) lossless, 16-bit float (5 exponent bits) RGB+Alpha intensity_target: 80.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, sRGB primaries, Linear transfer function, rendering intent: Relative ``` i assume the issue there is that there's no indication for the maximum luminance in the image, so it's hard to tell if it's even supposed to be hdr or not.
jonnyawsom3
2026-01-13 11:37:01 I specifically left a comment warning about comparing to other formats https://issues.chromium.org/issues/462919304#comment22
whatsurname
2026-01-13 11:40:30 Can you check if `features = ["all-simd"]` should be added here: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo.toml;l=30