JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

adoption

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

Demiurge
2025-03-25 08:09:56
Meta loves jxl
Mine18
Demiurge What are you talking about? I'm pretty sure instagram either already supports jxl upload, or will be one of the first major sites to.
2025-03-25 08:10:32
i thought you meant serving JXL
Demiurge
2025-03-25 08:15:08
Well, that too. I'm pretty sure instagram might be one of the first adopters of the format
2025-03-25 08:18:23
They could already be saving some money by serving it to apple users.
2025-03-25 08:19:48
And they have all the capital they need to trailblaze
Mine18
Demiurge Well, that too. I'm pretty sure instagram might be one of the first adopters of the format
2025-03-26 01:30:50
could anyone check on mac safari or a jxl supporting fork
Demiurge
2025-03-26 02:04:16
I think the iOS photo picker transcodes to JPEG92
Meow
2025-03-26 02:15:33
Every new format's early adoption on the internet is always for thumbnails
CrushedAsian255
Demiurge I think the iOS photo picker transcodes to JPEG92
2025-03-26 09:12:14
JPEG XCII ?
Demiurge
2025-03-26 10:44:38
JFIF
SEO-Master1337
w ai generated profile
2025-03-26 03:32:43
Okay and? TF? Not sure about you, but i don't have time to sit there and code out a Github profile that makes me absolutely no money. Wild you trying to come for me about using AI in the literal pioneering days of AI. Just because you have a skill issue, doesn't mean others do. Keep your ego in check and have a good day.
w
2025-03-26 03:34:18
<:weirdge:778473410341896222>
SEO-Master1337
SEO-Master1337 Hi everyone! Making moves! A buddy of mine in SEO recently made an image optimization tool for our industry. I just sent him a message asking him to build in support and that having his tool as a support could help our main strategy in a HUGE way - Direct access to the SEO community in the image space! I told him that I'm not sure of the technical debt this might incur, but I said I might be able to get someone from the community to help out for the cause so that we can move on this quicker. Any takers by any chance? Here's the website: https://catalystmediaservices.com/
2025-03-26 03:34:55
ANYWAY back to business. This is what the dev of this app said but I'm not a dev so not sure what exactly he's saying? Haha: Ima be honest I have no idea if I can even use this as an output without any of the the infrastructure or adoption in place. The application uses python so if your stuff isn’t in there it’s nearly going to be impossible based on my skillset to use it
2025-03-26 04:11:03
His tool is built using python but he doesn't know enough code to incorporate a new output format - his words. Anyone know of a great GitHub to throw my way as a start for my research?
Demiurge
2025-03-27 12:52:09
I'm not a python expert but does his tool use an image library like Pillow for example?
2025-03-27 12:53:57
https://github.com/olokelo/jxlpy
SEO-Master1337
2025-03-27 12:54:39
Not sure yet, but I listed out a healthy list for a starting point: https://docs.google.com/document/d/1A7uuIsxstGbceDBJyNhSv9LBiGx-Kb517R30TZNLBoM/edit?tab=t.0#heading=h.c55u52m22dx
2025-03-27 12:55:18
For those who dont use google
Demiurge
2025-03-27 12:57:18
https://www.libvips.org/2017/09/01/libvips-for-Python.html
2025-03-27 12:57:29
vips supports jxl output too.
2025-03-27 12:57:40
As well as many other image formats
SEO-Master1337
2025-03-27 12:58:57
WAIT WTF I thought that it was idk backwards compatible. If he has built in support for JPEG, isn't that supposed to be one of the benefits that you can go back and forth from jpeg to jxl and back easily? Or am I misunderstanding that
2025-03-27 12:59:22
So wouldnt he already basically have support built in?
Demiurge
2025-03-27 01:00:05
vips doesn't support lossless transition of existing JPEG I don't think
2025-03-27 01:01:16
You need to use libjxl for that, probably there is a python binding to libjxl
2025-03-27 01:10:25
Or maybe not
2025-03-27 01:11:19
But vips has a good python interface
KKT
KKT I also just stumbled across these guys are are rebuilding an open source version of Webflow: https://github.com/webstudio-is/webstudio Would be great if someone could help them out adding JXL
2025-04-01 06:24:25
Turns out they're using Cloudflare's image processing which doesn't currently support JXL, so it would be a heavy lift to add. <@794205442175402004> would they be a competitor of yours. Any insight into them supporting it?
_wb_
2025-04-01 06:49:15
<@826537092669767691> you work at Cloudflare, right?
monad
2025-04-01 09:11:28
jxl-rs might be prerequisite
spider-mario
2025-04-02 03:00:38
jxl wallpapers approved for the upcoming Fedora 43: https://pagure.io/fesco/issue/3376
RaveSteel
2025-04-02 03:49:09
Nice to see that the other ticket specific to GNOME OS could be resolved as well
HCrikki
2025-04-02 04:07:07
they shouldve generated and distributed lower complexity or standard effort lossless jxls
2025-04-02 04:08:23
outputs from maximalist optimizing arent representative of the average user's typical experience
2025-04-02 04:34:57
on an aside, seems there could be a freeze exception to get jxl part of base install for ubuntu 25.04 due this month (the gnome-based one - all other editions of *ubuntu based on other DEs seem to have libjxl preinstalled)
gb82
2025-04-02 04:59:00
<@794205442175402004> quick Cloudinary question – what volume of each format do you guys currently serve per day now that JXL support has presumably grown? What is the most served format? (I’d guess WebP?)
jonnyawsom3
HCrikki they shouldve generated and distributed lower complexity or standard effort lossless jxls
2025-04-02 05:33:24
The only reason they're switching to JXL is because of the space savings, so sacrificing the savings to fix decode speed would be pointless
_wb_
gb82 <@794205442175402004> quick Cloudinary question – what volume of each format do you guys currently serve per day now that JXL support has presumably grown? What is the most served format? (I’d guess WebP?)
2025-04-02 06:04:13
Currently: 34% webp, 27% avif, 20% jpeg, 3% jxl
gb82
_wb_ Currently: 34% webp, 27% avif, 20% jpeg, 3% jxl
2025-04-02 06:07:14
Gotcha - and you guys use libwebp for this, I’m guessing? And this volume (including JXL) is billions per day, right?
_wb_
2025-04-02 06:10:02
Total fluctuates around 15 billion images per day
2025-04-02 06:10:30
And yes, we use libwebp
gb82
2025-04-02 07:04:46
Gotcha
lonjil
_wb_ Currently: 34% webp, 27% avif, 20% jpeg, 3% jxl
2025-04-02 08:13:48
Could you look at the % numbers just for requests from browsers that advertise JXL support?
HCrikki
2025-04-02 08:48:16
i suspect 3% couldve turned to 15+ % if jxl was sent at a higher priority than the other formats, given almost 40% of the phones actively used in us, canada, uk and japan run a version of ios+safari with jxl supported (according to caniuse)
_wb_
lonjil Could you look at the % numbers just for requests from browsers that advertise JXL support?
2025-04-02 09:00:32
About 28% of requests come from browsers supporting jxl, and of course we only send jxl to those, so about 10%. There is still plenty of room to make that a higher percentage, but it will take some time.
lonjil
2025-04-02 09:01:32
🤞
2025-04-02 09:01:46
I forget, what's blocking enabling JXL by default? Just more browsers supporting it?
_wb_
2025-04-02 09:04:26
It's mostly our pricing model, we are moving from basically bandwidth driven to impression driven, and it is only enabled for customers on the impression driven model since otherwise we shoot ourselves in the foot by saving bandwidth. But updating contracts takes time, we cannot just modify existing contracts obviously.
lonjil
2025-04-02 09:05:26
oh right
HCrikki
2025-04-02 09:08:18
isnt there some free tier with jxl processing/serving? (still described as FLIF on their site btw)
Demiurge
2025-04-02 09:13:12
Haha, I remember now, when you explained that earlier. How your old pricing model discourages bandwidth saving
2025-04-02 09:13:47
<:JXL:805850130203934781>
gb82
_wb_ It's mostly our pricing model, we are moving from basically bandwidth driven to impression driven, and it is only enabled for customers on the impression driven model since otherwise we shoot ourselves in the foot by saving bandwidth. But updating contracts takes time, we cannot just modify existing contracts obviously.
2025-04-02 11:25:08
Can you expand on how this works? why would upgrading the image format impact impressions?
0xC0000054
gb82 Can you expand on how this works? why would upgrading the image format impact impressions?
2025-04-02 11:39:25
It sounds like the older pricing model is based on is based on the bandwidth the customer uses, so changing to JXL for those customers would reduce the company's income by reducing the bandwidth the customers use.
gb82
2025-04-03 12:05:20
Ahhhh
A homosapien
gb82 Can you expand on how this works? why would upgrading the image format impact impressions?
2025-04-03 12:29:52
More context: https://discord.com/channels/794206087879852103/806898911091753051/1329530250815733862
gb82
2025-04-03 12:39:52
oh interesting, gotcha. that makes more sense
KKT
2025-04-03 11:20:07
Keynote, Pages & Number got big updates today. I'd filed a bug saying HDR JPEG XLs didn't work in Keynote and it's fixed, but not noted as one of the supported HDR formats: https://support.apple.com/en-ca/guide/keynote/tan700f60676/mac
2025-04-03 11:20:41
So close and yet so far on the optimize image formats <:AngryCry:805396146322145301> https://support.apple.com/en-ca/guide/keynote/tan12af068f9/14.4/mac/1.0
HCrikki
2025-04-07 02:11:17
seems ubuntu finally approved everything about making jpegxl available out of the box in base ubuntu editions from now on starting 25.04
2025-04-07 02:11:55
oddly libjxl was preinstalled on all other ubuntu editions (kubuntu, xubuntu...) except the gnome-based one
2025-04-07 02:12:10
https://bugs.launchpad.net/ubuntu/+source/jpeg-xl/+bug/2099691
2025-04-07 02:16:11
not quite related but snap version of gimp now integrates libjxl too but apparently 0.7 - likely gonna be updated since its far easier to ship upstream code than old slow frankencode with effort-wasting backporting
2025-04-07 02:18:41
thought to mention since snap and flatpak guarantee consistent availability of jxl decode/encode whatever distro you use, especially non-rolling or non-mainstream ones
jonnyawsom3
2025-04-07 02:24:46
If those decode speed issues crop up again, someone inform them of the faster decoding work we're doing. Low values are twice as fast with minimal impact on density
VcSaJen
HCrikki seems ubuntu finally approved everything about making jpegxl available out of the box in base ubuntu editions from now on starting 25.04
2025-04-07 05:35:30
Does this include gtk pixbuf thumbnailer?
KKT
2025-04-08 06:55:52
Well some slight good news on the Safari front. The latest Tech Preview has support-ish for HDR images. I'm testing the HDR page against Thorium and they aren't quite as bright at the top end, but close. I'm wondering if they're doing EDR instead of full HDR. Looks much better than the current shipping version of Safari however. Was trying to take a picture, but not really working.
2025-04-08 07:01:41
Safari Preview top, Thorium middle, shipping Safari bottom
2025-04-08 07:22:25
The HDR Image here: https://jpegxl.info/images/liquid-abstract-colorful-texture-background-ai-generative.avif looks exactly the same on both browsers though. Which means when the Preview launches, I can kill that hacky video thing we have for Safari.
2025-04-08 07:22:49
And I can replace with a proper HDR JXL
_wb_
2025-04-08 08:10:32
Nice!
damian101
KKT The HDR Image here: https://jpegxl.info/images/liquid-abstract-colorful-texture-background-ai-generative.avif looks exactly the same on both browsers though. Which means when the Preview launches, I can kill that hacky video thing we have for Safari.
2025-04-09 03:41:07
where can I get the source for that image <:av1_woag:852007419474608208>
KKT
2025-04-09 04:03:58
I took it and cranked up the color and HDR elements, but it's from here: https://www.freepik.com/free-ai-image/liquid-abstract-colorful-texture-background-ai-generative_41369647.htm
2025-04-09 04:06:23
This was the file I converted to the other forms (before I made half of it non-HDR)
2025-04-09 04:06:33
Wow it looks bad on Discord.
Demiurge
2025-04-09 07:17:26
Someone really ought to make an HDR JPEG demo page using jpegli instead of "ultra HurrDurR"
2025-04-09 07:18:16
Just to show "hey this is possible... look ma, no concatenation!"
2025-04-09 07:19:11
I dunno if jpegli supports PQ/HLG input/output though
CrushedAsian255
Demiurge Someone really ought to make an HDR JPEG demo page using jpegli instead of "ultra HurrDurR"
2025-04-09 09:25:56
How bad would banding be?
A homosapien
2025-04-09 09:28:21
Since jpegli has an internal precision of 12 bits I think it could handle HDR content quite well
CrushedAsian255
A homosapien Since jpegli has an internal precision of 12 bits I think it could handle HDR content quite well
2025-04-09 09:29:00
Oh, encode AND decode using jpegli
damian101
CrushedAsian255 How bad would banding be?
2025-04-09 11:11:19
Not terrible. PQ loses 1 bit perceptually compared to SDR on average across the luminance range, but since it is perfectly distributed across luminance, it actually looks better than SDR in dark areas at the same bit depth.
2025-04-09 11:15:02
HLG is equivalent to gamma 2.4 with 250 nits peak for the lower, most relevant part of the curve. The log portion is also fine since it only goes up to 1'000 nits.
spider-mario
Demiurge I dunno if jpegli supports PQ/HLG input/output though
2025-04-09 12:20:49
it does, we’ve tried it
2025-04-09 12:21:48
(or some ancestor of jpegli)
2025-04-09 12:22:19
both worked well, but HLG was somewhat more resilient to being decoded by not-jpegli
2025-04-09 12:23:00
using P3 primaries instead of Rec. 2020 might also help a bit
jonnyawsom3
2025-04-09 01:22:09
WASM jpegli that decodes to 16bit PNG would make it easy to demo
2025-04-09 01:23:13
Also, in what cases does it get the higher precision? I assume only in YCoCg and not XYB's internal RGB storage
Demiurge
2025-04-09 04:08:50
What about the libjpeg `jpeg12_` API
2025-04-09 04:09:18
Can jpegli just implement that for parity with libjpeg_turbo?
2025-04-09 04:10:12
It would solve some compatibility problems if jpegli implemented the high precision API
gb82
KKT Safari Preview top, Thorium middle, shipping Safari bottom
2025-04-09 05:38:41
Even in the photo that looks better! That’s very exciting
2025-04-09 05:41:59
I have another Cloudinary question <@794205442175402004> if that’s alright – more like two actually: 1. was the deal with Visionular for Aurora1 just for AVIF, or also for AV1 video? 2. With your older pricing model, if it is bandwidth-based, couldn’t you just match the existing bandwidth of an older image format with a newer one & serve better looking images at the same cost to the customer? That seems like a win-win
_wb_
2025-04-09 05:45:24
1. For both. We switched to libaom for still images and svt for video. 2. The issue with that approach is that in the old pricing model, customers also pay per encode (per 'transformation') so customers have an incentive to enable fewer formats unless the bandwidth saving is worth it.
gb82
_wb_ 1. For both. We switched to libaom for still images and svt for video. 2. The issue with that approach is that in the old pricing model, customers also pay per encode (per 'transformation') so customers have an incentive to enable fewer formats unless the bandwidth saving is worth it.
2025-04-09 06:22:05
1. Was the main interest in the video performance or the AVIF performance? 2. So then the ideal scenario for both Cloudinary & customers is that a format like WebP gets 10% better overnight or something, as opposed to a newer codec entering the picture?
2025-04-09 06:22:32
Or maybe that doesn’t help Cloudinary because customers then pay less for bandwidth
2025-04-09 06:22:50
Unless it just means better pictures. I’m thinking about tune iq
jonnyawsom3
2025-04-09 06:25:09
AKA Jpegli
gb82
AKA Jpegli
2025-04-09 06:25:49
true - I wonder if they’re using it
_wb_
2025-04-09 06:25:54
1. Both, but probably mostly still images. 2. The new pricing model makes more sense than the old one. In the old model, incentives are kind of messed up on all sides.
2025-04-09 06:27:22
We started rolling out jpegli but had to revert due to some weird bug that caused random crashes in production. I now think it may be related to avx512, which we use in production for libjxl too, but it may not be well-tested in case of jpegli.
2025-04-09 06:28:30
I am now on holidays but when I am back I will start pushing for another try at jpegli rollout.
gb82
2025-04-09 06:39:33
I’m guessing you currently use mozjpeg, which is pretty good either way
_wb_ I am now on holidays but when I am back I will start pushing for another try at jpegli rollout.
2025-04-09 06:40:16
How about tune iq? Julio & I have been wondering for a bit whether or not you guys are interested, since it is double digit percent improvement on AVIF
_wb_
gb82 I’m guessing you currently use mozjpeg, which is pretty good either way
2025-04-09 06:42:15
Currently it's mozjpeg and libjpeg-turbo, mostly libjpeg-turbo is for q_auto:best
gb82
2025-04-09 06:43:58
huh, why libjpeg-turbo over mozjpeg? Speed?
_wb_
gb82 How about tune iq? Julio & I have been wondering for a bit whether or not you guys are interested, since it is double digit percent improvement on AVIF
2025-04-09 06:45:28
How does it do in terms of consistency? Currently we use libaom tuning for ssim, with an AI model trained to predict which q setting we need to reach a given quality target. That's needed because it is quite inconsistent (the quality you get at a given q setting depends a lot on the image content).
gb82
2025-04-09 06:46:11
I don’t think consistency will have changed very much between those two, but I can probably test that. <@297955493698076672> do you know by chance?
_wb_
gb82 huh, why libjpeg-turbo over mozjpeg? Speed?
2025-04-09 06:46:25
At the higher qualities, we found mozjpeg to not necessarily outperform libjpeg-turbo in compression, and it gets a lot slower too.
gb82
2025-04-09 06:46:49
Ah makes sense. So normally you guys are targeting what SSIMU2 range would u say?
_wb_
gb82 I don’t think consistency will have changed very much between those two, but I can probably test that. <@297955493698076672> do you know by chance?
2025-04-09 06:48:10
Question will be if we can just do a drop in replacement with the existing q setting model, or if we need to retrain the model, which is more effort.
gb82
2025-04-09 06:48:54
That’s a good question - I don’t know if I have an answer to that, but Julio might
2025-04-09 06:49:58
Also I’m not sure which speed presets you guys most often use
_wb_
gb82 Ah makes sense. So normally you guys are targeting what SSIMU2 range would u say?
2025-04-09 06:50:01
Roughly 50-90, but internally we currently mostly use our own proprietary AI based metric called AIMOS, not so much ssimu2. The actual targets are defined on that scale, iirc something like 0.72 for q_auto:good
2025-04-09 06:50:20
For avif we use default avifenc speed (6)
2025-04-09 06:50:40
For jxl we use e6 for lossy
gb82
_wb_ For avif we use default avifenc speed (6)
2025-04-09 06:50:44
Oh wow that’s pretty slow
_wb_
2025-04-09 06:50:57
For mozjpeg we use -fastcrush iirc
gb82
2025-04-09 06:51:15
Cjxl e6 should be far faster than avifenc s6, like multiple times faster
2025-04-09 06:51:38
And then I’m guessing u use webp -m 6?
_wb_
2025-04-09 06:51:52
Nope, webp at default m4
2025-04-09 06:52:33
For avif I pushed a bit to go to s6 since s7+ seemed to be quite a bit worse
2025-04-09 06:53:07
We cannot go slower than s6, but s6 is just doable
2025-04-09 06:53:52
Especially because we do use 420 when possible, which makes it a bit faster
jonnyawsom3
_wb_ I am now on holidays but when I am back I will start pushing for another try at jpegli rollout.
2025-04-09 06:58:38
When you do get round to that, I don't suppose you could look into using YBX instead of XYB, and defaulting to 4:4:4 XYB/YBX (in cjpegli) too? Then decoders/viewers without ICCv4 should look far better, pipelines forcing 4:2:0 won't subsample luminance anymore, and files can always be transcoded JPEG XL by default too. At least I think that's right, I get mixed up with YXB...
gb82
_wb_ For avif I pushed a bit to go to s6 since s7+ seemed to be quite a bit worse
2025-04-09 06:59:02
Hmm that trade-off may be different now with tune iq. Also, as I’m sure you know, webp m6 is closest in speed to aomenc s8
2025-04-09 06:59:34
so WebP & JXL are quite a bit faster than avif here, which is great for avif, but probably a bit unfair to JXL
When you do get round to that, I don't suppose you could look into using YBX instead of XYB, and defaulting to 4:4:4 XYB/YBX (in cjpegli) too? Then decoders/viewers without ICCv4 should look far better, pipelines forcing 4:2:0 won't subsample luminance anymore, and files can always be transcoded JPEG XL by default too. At least I think that's right, I get mixed up with YXB...
2025-04-09 07:00:24
Oh huh, YBX … is that usable in jpegli now?
jonnyawsom3
2025-04-09 07:02:29
No, currently it's only XYB or normal YCbCr. Mario thought it was being used, but there's no reference to it in any jpegli files, oddly enough only in JPEG XL encoding
gb82
2025-04-09 07:03:39
Huh
jonnyawsom3
2025-04-09 07:05:07
Scratch that, it's weirder <https://github.com/jonnyawsom3/libjxl/blob/32eb23b2e9bb3d296110092484e054724d921d04/lib/jxl/enc_modular.cc#L776> > XYB is encoded as YX(B-Y)
juliobbv
_wb_ How does it do in terms of consistency? Currently we use libaom tuning for ssim, with an AI model trained to predict which q setting we need to reach a given quality target. That's needed because it is quite inconsistent (the quality you get at a given q setting depends a lot on the image content).
2025-04-09 07:05:22
tune iq is significantly more consistent than ssim, not just across images also within an image (e.g. significantly less "botoxing")
_wb_ Question will be if we can just do a drop in replacement with the existing q setting model, or if we need to retrain the model, which is more effort.
2025-04-09 07:06:56
yeah, you'll most likely going to need a retrain, but I wouldn't be surprised if consistency is actually good enough out of the box for Cloudinary's purposes
gb82
_wb_ Especially because we do use 420 when possible, which makes it a bit faster
2025-04-09 07:07:54
for avif, 10 or 8 bit? and how do you determine 420 vs 444?
_wb_
2025-04-09 07:13:37
We use 8-bit for SDR images, mostly because decode speed is better (compression performance is slightly better when using 10-bit but it's slower to encode and decode). The choice of chroma subsampling is also decided by the AI model. It's very content dependent if 420 is ok or not.
juliobbv
juliobbv tune iq is significantly more consistent than ssim, not just across images also within an image (e.g. significantly less "botoxing")
2025-04-09 07:13:40
worst case scenario, you should be seeing the picked q level distribution by the model significantly narrow down
gb82
2025-04-09 07:21:23
so cwebp -m 4 is ~4-5x faster (user time) than avifenc -s 6
2025-04-09 07:21:35
at that point I wonder if avif is useful outside of high-traffic content
_wb_
2025-04-09 07:39:45
jpegli is possibly a better trade-off between speed and compression than either webp or avif, at least at the higher quality range...
gb82
2025-04-09 07:40:00
Yeah I’d believe that
2025-04-09 07:40:33
WebP feels hard to justify unless you use -m 6, where there can be gains above jpegli before hitting higher ssimu2
2025-04-09 07:42:09
even -m 6 is ~2x faster than avifenc -s 6
jonnyawsom3
2025-04-09 07:42:27
I've cited it a few times without actually testing myself, but it does seem like XYB jpegli beats WebP and trades blows with AVIF https://giannirosato.com/blog/post/jpegli-xyb/
2025-04-09 07:43:13
Though you already knew that :>
gb82
2025-04-09 07:43:34
heh yeah ;)
2025-04-09 07:43:57
but that set of four images is kind of limiting, because it favors settings that perform well in the dark
raspin7932
2025-04-09 07:54:08
https://www.phoronix.com/news/Ubuntu-25.04-JPEG-XL-Default
jonnyawsom3
2025-04-09 07:57:47
https://discord.com/channels/794206087879852103/822105409312653333/1359558203909607665
A homosapien
_wb_ Roughly 50-90, but internally we currently mostly use our own proprietary AI based metric called AIMOS, not so much ssimu2. The actual targets are defined on that scale, iirc something like 0.72 for q_auto:good
2025-04-09 08:21:06
For jpegli, in the realm of high fidelity compression, does `--noadaptive_quantization` score better on your AI metric when adjusted to the same BPP? I noticed adaptive quantization tends to blur fine detail and score worse overall across all metrics I tested with on at low distances (< 1.5). It also seems to more consistently hit the target butteraugli scores. For example inputting a distance of 0.8 is closer the actual max norm of 0.8, while adaptive quantization seems to undershoot quite a bit giving a max norm of like 1.2. Also turning it off provides little speed up which is nice.
2025-04-09 08:22:55
Here is a visual example https://discord.com/channels/794206087879852103/1301682361502531594/1301693257662857260
novomesk
2025-04-09 08:29:57
Maui Image Gallery viewer + kimageformats(AVIF/JXL) = http://188.121.162.14/jxl/pix-4.0.1-jxl_avif.signed.apk
Quackdoc
novomesk Maui Image Gallery viewer + kimageformats(AVIF/JXL) = http://188.121.162.14/jxl/pix-4.0.1-jxl_avif.signed.apk
2025-04-09 08:40:34
has it gotten any good yet? also no word on upstream support eh?
2025-04-09 09:07:08
seems very slow
novomesk
Quackdoc has it gotten any good yet? also no word on upstream support eh?
2025-04-10 06:48:04
Author do not plan to add extra features to his APK. But it is merely a packaging thing. After adding few .so files into existing APK & sign again, the new image formats start to work. Anyone can do it.
Quackdoc
2025-04-10 06:48:58
how as the libjxl so compiled?
novomesk
Quackdoc how as the libjxl so compiled?
2025-04-10 07:03:22
I used static build of libjxl, brotli and libhwy there.
Quackdoc
2025-04-10 07:20:26
i see... wonder why its so slow for me hmmm
2025-04-10 07:20:42
how were they built ? got a script ?
novomesk
Quackdoc how were they built ? got a script ?
2025-04-10 02:46:26
cmake -DCMAKE_TOOLCHAIN_FILE=/home/old_system/root/lib/cmake/Qt6/qt.toolchain.cmake -DCMAKE_INSTALL_PREFIX=/home/old_system/root -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_JPEGLI=OFF -DJPEGXL_ENABLE_JNI=OFF ..
HCrikki
2025-04-10 10:16:57
microsoft's extension for jpegxl updated from 1.2.24.0 to 1.2.25.0
2025-04-10 10:18:50
It would seem 3 jxls i had that displayed no thumbnail nor decoded in Photos now display. However those cant be EDITed within Photos (says 'image is unavailable, try again later')
Quackdoc
novomesk cmake -DCMAKE_TOOLCHAIN_FILE=/home/old_system/root/lib/cmake/Qt6/qt.toolchain.cmake -DCMAKE_INSTALL_PREFIX=/home/old_system/root -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_SJPEG=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_JPEGLI=OFF -DJPEGXL_ENABLE_JNI=OFF ..
2025-04-10 10:22:06
hmm, I wonder if it needs to be compiled with specific optimizations cause I found it to be pretty slow
Meow
2025-04-11 03:29:16
Very slow to load huge JXL on Windows 11's Photos, but it opens natively at least
2025-04-11 03:30:42
No longer requiring changing .jxl to another or using a third-party app is a BIG win that the Chrome Team would simply ignore
Demiurge
2025-04-11 03:51:22
Hopefully jxl-rs will be an even faster decoder than libjxl.
jonnyawsom3
2025-04-11 03:52:31
If it's the best of both libjxl and Oxide, then there should be a lot to look forward to https://discord.com/channels/794206087879852103/1065165415598272582/1359843160649498727
HCrikki
2025-04-11 03:53:47
bad integrations can hurt first impressions. outsiders freshly discovering jxl always seem to fail somewhere or inefficiently build the jxl libraries in ways that mislead about their real/current capabilities
2025-04-11 03:59:31
is there a line of contact with the ms guys making the wic codecs? like a slack room, email adress
Demiurge
2025-04-11 04:00:02
Wow. I had no idea jxl-oxide is already faster. That's amazing!
2025-04-11 07:31:24
Damn. Now I wish more software used it. Especially Firefox!
2025-04-11 07:35:45
I know the plan is for firefox to use jxl-rs. But jxl-oxide and jxl-rs will probably have a similar API and similar glue code so getting jxl-oxide to work first would not be a waste of time in my opinion.
Meow
2025-04-14 05:52:20
PowerToys Peek can preview JXL (via ctrl + space) as well
CrushedAsian255
Meow PowerToys Peek can preview JXL (via ctrl + space) as well
2025-04-15 09:10:54
Is power toys peek like apple spacer preview thing?
2025-04-15 09:11:02
Quick Look*
2025-04-15 09:11:08
forgot the name for a second
jonnyawsom3
2025-04-15 09:14:26
Yeah
Meow
2025-04-15 09:31:04
Yes the same function
2025-04-15 09:31:47
PowerToys Peek can also preview QOI but Quick Look can't
okydooky_original
This isn't about the artist, this is about the sites hosting them
2025-04-15 07:37:38
I know you emphasized "three separate staff members," but this is just one board, yes? We don't need a thousand different "archival boards" and the most popular ones likely don't need to be focused on that, since the main benefit of a Booru-style image board is the tag search to organize large volumes of images from various sources. Basically, they're organized aggregators. So, one option, to have the best of both worlds, is to do backend encoding and serve that up as the displayed image file, and use the "original image" button below the tags to explicitly serve the archived original file. Either way, I think most boards could do this just fine, but the biggest benefit would come from getting the source sites (DeviantArt, SNSes, Pixiv, etc.) to support and prefer next gen codecs like JXL and AVIF. Plus, they could use JXL to save space on existing uploads without touching a single pixel of the artist's work. I mean, everyone here knows this, but it's still an awesome selling point.
jonnyawsom3
2025-04-15 07:40:22
Yeah
HCrikki
2025-04-15 11:01:50
"Image Optimisation" service by Optimole, a wordpress addon with 200.000 active installs seems to have added support for jxl starting 4.0.0
2025-04-15 11:02:22
https://wordpress.org/plugins/optimole-wp/#developers
2025-04-15 11:04:24
idk if its any good but it it implements anything well, perhaps folks could do 3rdparty rebuilds/forks based on this implementation
2025-04-15 11:09:07
many similar addons seem to outsource the conversion functions to an inhouse script or outdated sqoosh, rarely local in-browser crunching. Note: above is a paid service with a free tier, functionally similar to cloudinary
Meow
2025-04-16 01:49:30
Photos and PowerToys Peek on Windows 11 can't open some JXL files. Weird weird
HCrikki
2025-04-16 04:30:28
any specific types?
2025-04-16 04:31:33
msjxl extension was updated recently and some images that previously didnt thumbnail or read now do, albeit with the caveat theyre oddly not editable in photos' editor
Meow
HCrikki any specific types?
2025-04-16 05:06:28
PNG of modified photography (confidential) to JXL
jonnyawsom3
2025-04-16 08:41:22
Interesting
CrushedAsian255
Meow PNG of modified photography (confidential) to JXL
2025-04-16 02:59:02
would it be possible to run jxlinfo on them though?
Meow
2025-04-16 03:11:09
That's in my office
HCrikki
2025-04-16 08:22:50
Tomorrow ubuntu 25.04 should drop with libjxl 0.11.1 preinstalled and some core packages rebuilt with jxl support (same for all other editions, ie kubuntu, xubuntu). Fedora 42 was freshly released too, now with an official KDE edition planned to be as well supported as the Gnome one
2025-04-16 08:27:12
note: the *snap* package for gimp oddly uses ancient libjxl 0.7 but should be updated at some point. Flatpak/appimage/repo gimp uses latest libs
Meow
CrushedAsian255 would it be possible to run jxlinfo on them though?
2025-04-17 01:40:09
> JPEG XL image, 3694x3004, (possibly) lossless, 8-bit RGB+Alpha > num_color_channels: 3 > num_extra_channels: 1 > extra channel 0: > type: Alpha > bits_per_sample: 8 > alpha_premultiplied: 0 (Non-premultiplied) > have_preview: 0 > have_animation: 0 > Intrinsic dimensions: 3694x3004 > Orientation: 1 (Normal) > Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering intent: Relative Via the Clang one
2025-04-17 01:42:08
Uh it may be probably the issue from the Clang-compiled library
2025-04-17 01:46:46
Hmm it doesn't matter if that's Clang-compiled. JXL generated by either the official or the Clang-compiled library on Windows can't be opened by Photos on Windows 11 for me
2025-04-17 01:48:51
The one that I oftern use > JPEG XL image, 10500x10500, (possibly) lossless, 8-bit RGB+Alpha > num_color_channels: 3 > num_extra_channels: 1 > extra channel 0: > type: Alpha > bits_per_sample: 8 > alpha_premultiplied: 0 (Non-premultiplied) > have_preview: 0 > have_animation: 0 > Intrinsic dimensions: 10500x10500 > Orientation: 1 (Normal) > Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering intent: Relative
HCrikki
2025-04-17 01:50:11
whats the version number for the msjxl extension and the Photos app ?
Crite Spranberry
2025-04-20 05:22:44
It been a while so I'm sharing new release links
2025-04-20 05:22:46
https://github.com/Eclipse-Community/r3dfox/releases/tag/v128.9.0 https://github.com/Eclipse-Community/r3dfox/releases/tag/v136.0.4
diskorduser
Crite Spranberry It been a while so I'm sharing new release links
2025-04-20 05:41:44
Does it supports jxl in webpages?
username
diskorduser Does it supports jxl in webpages?
2025-04-20 05:42:08
yes
diskorduser
2025-04-20 05:42:47
Nice
Crite Spranberry
2025-04-20 06:01:43
old pic but ye https://eclipse.cx/images/projects/r3dfox/big7.png
jonnyawsom3
2025-04-25 11:51:09
It is a bit strange that Ezgif has an explicit `JPEG to JXL` option, which just does a lossy conversion anyway... I wonder if they don't understand you need to treat them differently for it to transcode
Meow
2025-04-25 12:02:35
Conversion for conversion
CrushedAsian255
It is a bit strange that Ezgif has an explicit `JPEG to JXL` option, which just does a lossy conversion anyway... I wonder if they don't understand you need to treat them differently for it to transcode
2025-04-26 06:10:43
They probably just have a list of supported inputs and outputs and a script that makes a page mapping each input to output which all probably just use imagemagick
Kupitman
It is a bit strange that Ezgif has an explicit `JPEG to JXL` option, which just does a lossy conversion anyway... I wonder if they don't understand you need to treat them differently for it to transcode
2025-04-27 01:06:50
compressing images on server..
froody
2025-05-02 01:36:23
I'm interested in using JXL in the browser to do ROI decoding of satellite data, i.e. 1. decide on crop/zoom level based on camera frustum 2. send request to server 3. fetch subset of bytes 4. decode bytes into pixel buffer in wasm Is this at all possible with existing SDKs/APIs? We're currently using ECW which is great at ROI/downsampling but doesn't have any means of doing stuff over the network, so we have to generate tiles on the server.
jonnyawsom3
2025-05-02 01:57:00
You may need to parse the TOC to know what bytes to send, since the header is still required before groups can be sent, but [jxl-oxide](https://github.com/tirr-c/jxl-oxide) has a cropped decode API and is fully compliant. With a pre-made WASM example available <https://github.com/tirr-c/jxl-oxide-wasm-demo>
diskorduser
2025-05-02 10:20:10
Is jxl-oxide merged to jxl-rs?
CrushedAsian255
diskorduser Is jxl-oxide merged to jxl-rs?
2025-05-02 10:53:05
I don’t think they are not planning to merge either into the other at this stage
RaveSteel
2025-05-03 06:05:03
tev has added support for JXL, although a binary release with it is still missing https://github.com/Tom94/tev https://github.com/Tom94/tev/pull/282
jonnyawsom3
2025-05-03 06:22:39
> tev is the only image viewer I know of that supports most of the features of JPEG-XL Intriguing
RaveSteel
2025-05-03 06:37:49
tev can play animated JXLs and also display each frame separately
Meow
2025-05-04 02:46:46
Good I could import JXL during my first AE (2023) lesson
Foxtrot
2025-05-05 03:37:59
> JPEG XL support is now available in Photoshop Beta. Make sure you have updated to the latest version of Beta, and then you can find it in File > Save a Copy under the Formats menu. > > This feature is still in Beta because we want to hear more feedback from you on what you like and don't like. Please respond here with any feedback! https://community.adobe.com/t5/photoshop-ecosystem-ideas/jpeg-xl-support/idc-p/15294314#M25287
2025-05-05 03:39:34
Just please give me JPEG XL compression in layered TIFF so my masked/edited files are not so huge 😭
Oleksii Matiash
Foxtrot Just please give me JPEG XL compression in layered TIFF so my masked/edited files are not so huge 😭
2025-05-05 03:40:58
...and in PDF please
HCrikki
2025-05-05 03:46:31
let the implementations cook. my suggestion: new revisions of the adobe formats should have both a max backward compatibility mode (uses previous compression format) and high efficiency mode (jxl). imo thatd ease adoption by requiring decoders and similar apps to be able to decode both (like with dng 1.7) and seed a large pool of compatible decoders
2025-05-05 03:50:51
i hope they only implement reasonable 'efforts'. efforts higher than 7 and especially 9-11 should not be allowed even as expert toggles and seem to always sour people on the entire format
Foxtrot
2025-05-05 03:58:58
Speaking of DNG, do we know what settings are used for its internal JXL compression? I was recently comparing some file sizes of a photo: Original NEF raw: 21,2 MB lossless DNG: 15,1 MB (29% compression) PNG of same image: 21,8 MB lossless JXL e7: 14,1 MB (35% compression) its close, I was just kinda expecting the compressed raw (dng) to be smaller than already developed compressed file (JXL)
2025-05-05 04:12:36
And the lossy DNG would be also interesting. I just wonder if it keeps the bit depth
jonnyawsom3
HCrikki let the implementations cook. my suggestion: new revisions of the adobe formats should have both a max backward compatibility mode (uses previous compression format) and high efficiency mode (jxl). imo thatd ease adoption by requiring decoders and similar apps to be able to decode both (like with dng 1.7) and seed a large pool of compatible decoders
2025-05-06 01:05:31
Reminds me of https://bugs.kde.org/show_bug.cgi?id=500877
Foxtrot Speaking of DNG, do we know what settings are used for its internal JXL compression? I was recently comparing some file sizes of a photo: Original NEF raw: 21,2 MB lossless DNG: 15,1 MB (29% compression) PNG of same image: 21,8 MB lossless JXL e7: 14,1 MB (35% compression) its close, I was just kinda expecting the compressed raw (dng) to be smaller than already developed compressed file (JXL)
2025-05-06 01:55:11
I forgot to reply to this yesterday, but the answer is, it depends. The specification only says "It can be JPEG XL", so the bitdepth, quality, effort, tile size (Not group size) and other parameters are up to the implementation. Adobe's DNGConverter has these options, though internally splits the image into 764 x 764 tiles, limiting the density somewhat and being horrible to use due to case sensitivity and no feedback for failed commands
2025-05-06 01:55:13
For my tests I use https://tinydng.com/, since it maintains the original format and doesn't split the image into tiles
2025-05-06 03:46:38
Huh, this must be the earliest adoption I've seen yet <https://mirillis.com/action-history>
Oleksii Matiash
2025-05-06 04:31:37
FastStone recently released 8.0 version of their viewer, and still no jxl support 🤦‍♂️ Looks like their 'contact us' form is just a black hole
HCrikki
2025-05-06 07:41:00
acdsee has no excuse... no dng 1.7 or jxl in 2025 is nuts. if they just had a proper addon ecosystem instead of carrying on with the jpg decoder from 20 years ago
2025-05-10 02:35:04
update of unclear importance. microsoft's extension for jpegxl encoding/decoding is now no longer a utility but a "system component"
veluca
HCrikki update of unclear importance. microsoft's extension for jpegxl encoding/decoding is now no longer a utility but a "system component"
2025-05-10 02:35:39
I just tried it out today for the first time, wasn't aware it was ever not a system component
HCrikki
2025-05-10 02:37:30
onward to whitelisting for win10 ?
2025-05-10 02:38:46
its technically unavoidable because winstore serves the same apps/games versions to win10 and win11 users so store listings need parity for both platforms regardless of wether the base OS no longer receives updates - as long as winstore keeps working on win1 for at least business users, jxl-capable apps like Photos need to be fully functional on win10 as well instead of prompting for an extension that doesnt show up without any explanation
2025-05-10 02:42:00
i wonder if theres a way to know how many installs store listings have
Foxtrot
2025-05-10 02:42:15
ok, i tried to check what codec is used in DNG produced by Lightroom Classic 14.3 via ExifToolGui lossless: JPEG lossy: JPEG XL (e7)
2025-05-10 02:45:45
sadly i cant see what quality was used for jxl
jonnyawsom3
2025-05-10 02:46:27
I'll never understand their weird choice of tile sizes for JPEG XL. Default group size is 256 and DC 2048, yet they pick 400 x 416?
2025-05-10 02:51:52
Same goes for lossless, 672 x 752 https://discord.com/channels/794206087879852103/805176455658733570/1259095811745251418
2025-05-10 02:54:35
Oh right, they were also using Faster Decoding 4 for lossless, which we only just fixed to be 20% smaller and 25% faster
Foxtrot
2025-05-10 02:57:11
you got jpeg xl when converted to lossless dng? i got just regular jpeg 😕
jonnyawsom3
2025-05-10 03:30:07
I was using the Adobe DNGConverter CLI
2025-05-10 03:30:39
Which is horrible to use, but does (sometimes) work https://helpx.adobe.com/uk/camera-raw/using/adobe-dng-converter.html
CrushedAsian255
Oh right, they were also using Faster Decoding 4 for lossless, which we only just fixed to be 20% smaller and 25% faster
2025-05-10 03:31:33
The specification is very vague so these parameters are not required
jonnyawsom3
CrushedAsian255 The specification is very vague so these parameters are not required
2025-05-10 03:32:15
Correct, but there's also no way to disable it in the offical CLI tool
Foxtrot
2025-05-10 04:43:32
hmm, i guess in future i will use lossy dng for my raws. I am perfectly fine with "visually lossless" which lossy jpeg xl should handle just fine
2025-05-10 04:45:03
and if I am not wrong, this also preserves ability to change white balance and exposure because its still 16bit, which is nice
jonnyawsom3
2025-05-10 05:07:10
Depending on implementation, you can control the quality too
2025-05-28 02:20:23
Well... This is annoying https://openimageio.readthedocs.io/en/latest/builtinplugins.html#jpeg-xl
2025-05-28 02:20:25
https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4584
2025-05-28 02:21:26
Goes to show how bad the old config was, if people somehow thought it was just another effort setting, even while being named `DECODING_SPEED`
username
https://github.com/AcademySoftwareFoundation/OpenImageIO/issues/4584
2025-05-28 04:21:50
if it's any help I found where the doc itself is in the repo: https://github.com/AcademySoftwareFoundation/OpenImageIO/blob/f7cd3a19c3771e39b2cac8b87bf716fbea8314b6/src/doc/builtinplugins.rst?plain=1#L1300
RaveSteel
2025-05-31 01:39:09
Fossify Gallery 1.3 released https://github.com/FossifyOrg/Gallery/releases/tag/1.3.0 Now a lot of JXL images load that wouldn't with the older version, although any JXL with a non-sRGB colourspace displays wrong
2025-05-31 01:39:15
But at least it displays at all
Quackdoc
RaveSteel Fossify Gallery 1.3 released https://github.com/FossifyOrg/Gallery/releases/tag/1.3.0 Now a lot of JXL images load that wouldn't with the older version, although any JXL with a non-sRGB colourspace displays wrong
2025-05-31 01:39:40
what was the jxl change they did?
2025-05-31 01:40:22
unforunately they dont squash translation commits
RaveSteel
2025-05-31 01:40:30
Nothing according to the changelog, I assume that the underlying library was updated
2025-05-31 01:41:23
https://github.com/FossifyOrg/Gallery/commit/68aa07781678bb569cf47d88e8bfc61452d8c12e
2025-05-31 01:41:27
Probably this commit
Quackdoc
2025-05-31 01:41:40
ah I see
2025-05-31 01:42:07
a shame that jxl coder doesnt seem to have much documentation
RaveSteel
2025-05-31 01:42:31
At least it is now almost fully functional
Quackdoc
2025-05-31 01:43:08
well thats good indeed
RaveSteel
2025-05-31 01:43:11
Quackdoc
2025-05-31 01:43:14
was there any perf changes?
RaveSteel
2025-05-31 01:43:55
It feels the same to me
Quackdoc
2025-05-31 01:44:03
sadge
HCrikki
2025-05-31 02:11:30
seems fossify updated the jxl decoder from 2.3.0.1 to 2.4.0.7
2025-05-31 02:17:12
2.4* brings an upgrade to coil3. decoding limited to 16mp by default, optional for devs to change to fullsize (ie for gallery apps)
2025-05-31 02:17:43
idk if that changed anything for images not loading at full resolution
RaveSteel
2025-05-31 02:18:41
all images I've tried are now loading
2025-05-31 02:19:10
only non-sRGB images are failing, but still kind of displaying
RaveSteel
2025-05-31 02:19:32
As seen here
2025-05-31 10:17:21
10bit sRGB JXLs also display wrong
2025-05-31 10:17:23
sad
TheBigBadBoy - 𝙸𝚛
2025-05-31 10:26:00
as long as there is no regression
Quackdoc
2025-06-03 01:32:35
yeah I have a fair amount of jxl files that dont render properly, but the amount of jxl files I have that dont render at all is pretty much none
AccessViolation_
2025-06-09 11:40:15
2025-06-09 11:40:16
possible discord jxl support in the future 👀
HCrikki
2025-06-10 12:01:58
a good way to sell jxl is promoting more efficient apps that load content and possibly even more ads snappier than the website in a browser
2025-06-10 12:03:11
load jxl inside the discord apps, leave bloated originals and blurry versions to browsers
Demiurge
2025-06-10 12:27:49
<:JXL:805850130203934781>
A homosapien
2025-06-10 10:29:45
Possible Jpeg XL support incoming for Blender <:Stonks:806137886726553651> https://devtalk.blender.org/t/2025-06-10-blender-admins-meeting/41008
username
2025-06-10 10:35:59
please depth map support please depth map support
2025-06-10 10:36:19
(I haven't read it yet)
jonnyawsom3
2025-06-10 10:36:38
[Direct Link](<https://devtalk.blender.org/t/2025-06-10-blender-admins-meeting/41008#p-152926-new-dependency-jpeg-xl-4>)
username please depth map support please depth map support
2025-06-10 10:37:48
IIRC OIIO has depth map support, but the PR is very minimal currently, only supporting RGBA
2025-06-10 10:39:19
https://projects.blender.org/blender/blender/pulls/139397
KKT
2025-06-11 07:52:55
If anyone has been following WWDC, a few things of note: "WebKit shipped support for HDR video in Safari 14.0, in 2020. Now, in Safari beta for iOS 26, iPadOS 26, macOS 26 and visionOS 26, WebKit adds support for HDR images on the web. You can embed images with high dynamic range into a webpage, just like other images — including images in Canvas."
2025-06-11 07:53:25
It's been coming and going from the Safari Tech Preview. More going than coming.
2025-06-11 07:54:07
Safari details here: https://webkit.org/blog/16993/news-from-wwdc25-web-technology-coming-this-fall-in-safari-26-beta/
2025-06-11 08:01:06
And the only place I've found JPEG XL reference: > Over the last few years, we’ve filled in a lot of the pieces to more fully support a wide range of codecs and containers. We were the first to support JPEG XL and HEIC on the web, and in Safari 19, we’ve added Ogg Opus and Ogg Vorbis to the list of media we support.
Cacodemon345
2025-06-11 08:02:02
And Google still gives no fucks about JXL.
KKT
2025-06-11 08:03:40
Keep up the fight…
2025-06-11 08:03:49
There's one here too: https://developer.apple.com/videos/play/wwdc2024/10177
2025-06-11 08:06:23
From this video: > The fundamental Idea behind the Adaptive HDR technology is to store in a file a fully backward-compatible SDR baseline representation of an image. Together with specific metadata and a map, that preserves the spatial locations of bright areas of the scene. This map is commonly called Gain Map because it allows for gaining parts of the SDR image to increase the brightness. When the Gain Map is applied to the baseline rendition, it will produce a beautiful HDR output. A sharp eye may have noticed something peculiar in the slide above. The title says Apple Gain Map, and not Adaptive HDR. This is not a mistake. Since 2020, iPhone cameras have been capturing images with embedded gain maps to enhance their appearance. Over a trillion images have been captured in this format! You can find more information about Apple Gain Map on the Apple Developer Portal. > > What is new this year is that we are driving an effort to standardize the Gain Map technology. > > We are standardizing the mathematical formula for creating and applying the gain map to the baseline SDR. Adaptive HDR encodes the map as the logarithm of the ratio between the HDR and the SDR signal. It also defines new metadata and how to store the new information in common file formats like HEIF and JPEG.
2025-06-11 08:07:54
Will need to listen to the whole thing.
Meow
KKT And the only place I've found JPEG XL reference: > Over the last few years, we’ve filled in a lot of the pieces to more fully support a wide range of codecs and containers. We were the first to support JPEG XL and HEIC on the web, and in Safari 19, we’ve added Ogg Opus and Ogg Vorbis to the list of media we support.
2025-06-12 02:40:44
Isn't it Safari 26?
KKT
2025-06-12 02:42:57
Probably, yeah
Meow
2025-06-15 03:59:34
Is it too late to find that Telegram for macOS allows JXL for uploading as images? Although they would be ultimately converted to JPEG
jonnyawsom3
2025-06-15 04:21:15
Telegram has JXL support on all desktop clients for quite a long time already
2025-06-15 04:22:03
It also decodes JXL when sent as a file
Mine18
2025-06-15 07:13:43
mobile support is weird, before it prompted you to open an app but now it tries displaying it to nothing, although AVIF works just fine
2025-06-15 07:13:53
probalby work fine on IOS
spider-mario
2025-06-17 02:56:11
https://helpx.adobe.com/photoshop/using/whats-new/2025-6.html#:~:text=Explore%20AVIF%20and%20JPEG%20XL%20File%20Support%20in%20Photoshop
KKT
spider-mario https://helpx.adobe.com/photoshop/using/whats-new/2025-6.html#:~:text=Explore%20AVIF%20and%20JPEG%20XL%20File%20Support%20in%20Photoshop
2025-06-17 05:08:20
Options when you save:
jonnyawsom3
2025-06-17 05:09:42
Slightly underwhelming, especially compared to Krita (Thanks Kampidh), but it gets the job done
_wb_
2025-06-17 05:21:54
I wonder what mapping they have from photoshop quality to libjxl distance
A homosapien
2025-06-17 08:50:07
jonnyawsom3
2025-06-17 08:57:43
Yeah, Mario posted it 3 messages ago :P
novomesk
KKT Options when you save:
2025-06-17 09:31:53
What are the Photoshop Extras in metadata?
HCrikki
2025-06-17 09:38:42
from their webp doc, supposedly print profiles/settings, paths, guides etc
2025-06-17 09:39:02
only way to know for sure is checking but photoshop extras sound theyre meant to accomodate the subscription, sync and collab system so that file can be consistently edited wherever
KKT
2025-06-17 10:43:38
Grrrrr. > The upcoming iOS 26 update adds a new Screen Capture menu to the Settings app, under General. In it, there are a few useful toggles. > > First, there is now an option for HDR screenshots. When this format is selected, any HDR photos or videos in screenshots will actually appear in HDR with full dynamic range, when viewed on newer iPhone models and other supported devices. > > Apple says HDR screenshots use the HEIF image format. There is still an option for SDR screenshots, which are saved as PNG files.
2025-06-17 10:43:55
https://www.macrumors.com/2025/06/17/ios-26-improves-screenshots-in-three-ways/
jonnyawsom3
2025-06-17 10:57:10
Fast lossless my beloved 😔
Meow
KKT Options when you save:
2025-06-18 07:35:25
**JPEGXL** 😤
jonnyawsom3
2025-06-18 07:36:17
I'm a month late, but Irfanview got updated to support JPEG XL compressed DNG files. 400ms uncompressed, 600ms JPEG92 lossless, 800ms lossy, 700ms effort 2 lossless. Odd results, since extracting the JXL codestream results in 100ms decode not 400 Can't tell if it's just the heat over here, but my CPU is getting more angry than before updating even on the uncompressed file...
Meow
KKT Grrrrr. > The upcoming iOS 26 update adds a new Screen Capture menu to the Settings app, under General. In it, there are a few useful toggles. > > First, there is now an option for HDR screenshots. When this format is selected, any HDR photos or videos in screenshots will actually appear in HDR with full dynamic range, when viewed on newer iPhone models and other supported devices. > > Apple says HDR screenshots use the HEIF image format. There is still an option for SDR screenshots, which are saved as PNG files.
2025-06-18 07:38:31
Wonder if that uses lossless or lossy for HDR screenshots
CrushedAsian255
Meow Wonder if that uses lossless or lossy for HDR screenshots
2025-06-18 07:52:46
Not sure if HEIC (or at least apples implementation) would support it
KKT
2025-06-18 05:03:46
Yeah, that's what I was thinking. But it would be odd to go to lossless for screenshots have using PNGs all this time.
Meow
2025-06-18 05:12:53
Lossless HEIC is as advanced as lossless AVIF
KKT
KKT Will need to listen to the whole thing.
2025-06-18 07:02:50
2025-06-18 07:12:21
Another note from that presentation. HDR images now supported in Preview, Quick Look, Messages and not just Photos.
Kupitman
I'm a month late, but Irfanview got updated to support JPEG XL compressed DNG files. 400ms uncompressed, 600ms JPEG92 lossless, 800ms lossy, 700ms effort 2 lossless. Odd results, since extracting the JXL codestream results in 100ms decode not 400 Can't tell if it's just the heat over here, but my CPU is getting more angry than before updating even on the uncompressed file...
2025-06-18 07:27:28
power of multi-threading
jonnyawsom3
Kupitman power of multi-threading
2025-06-18 07:28:53
Which part? Because Irfanview uses multithreaded JXL decoding, but it's loosing 300ms somewhere compared to djxl
Kupitman
Which part? Because Irfanview uses multithreaded JXL decoding, but it's loosing 300ms somewhere compared to djxl
2025-06-18 07:34:11
🤨
jonnyawsom3
2025-06-18 07:48:15
<:WhatThe:806133036059197491>
_wb_
2025-06-18 08:09:56
So HDR screenshots will be lossy and using subsampled gain maps? Ugh that could lead to pretty ugly artifacts... Why not just use lossless 10-bit jxl that just captures the actual screen content exactly?
jonnyawsom3
2025-06-18 08:11:37
This is what happens when the marketing team speaks instead of the engineering team. "It's backwards compatible! Don't worry about the dozen downsides..."
Meow
_wb_ So HDR screenshots will be lossy and using subsampled gain maps? Ugh that could lead to pretty ugly artifacts... Why not just use lossless 10-bit jxl that just captures the actual screen content exactly?
2025-06-19 03:29:18
_Only Apple can do._
2025-06-19 03:32:07
Users are going to enjoy blurry texts over the most advanced HDR screenshots ever
Quackdoc
2025-06-19 03:33:17
I wonder how much bitdepth is realistically needed for "convincing" HDR gainmaps, and if it is feasible to just encode the map as lossless
_wb_
2025-06-19 11:34:48
I suppose this depends on how the HDR image is converted into an SDR image and a gainmap.
KKT
2025-06-19 03:46:28
Take a watch of the video, but I think you can also do a 'normal' HDR image without a gainmap (10-bit HEIC). Hopefully that's what the screenshots are.
novomesk
2025-06-20 01:22:39
NeoChat (communication app Matrix network) is able to view JXL images. Linux/Windows client available at https://origin.cdn.kde.org/ci-builds/network/neochat/release-25.04/
2025-06-20 01:24:32
Neochat for Android can be installed via F-Droid app by adding KDE repo into it: https://cdn.kde.org/android/nightly/fdroid/repo/?fingerprint=B3EBE10AFA6C5C400379B34473E843D686C61AE6AD33F423C98AF903F056523F
Quackdoc
novomesk NeoChat (communication app Matrix network) is able to view JXL images. Linux/Windows client available at https://origin.cdn.kde.org/ci-builds/network/neochat/release-25.04/
2025-06-20 03:03:31
is it no longer crashing all the time? nice if so
2025-06-20 03:08:07
can't log in
novomesk
Quackdoc can't log in
2025-06-20 06:54:55
It works on my Android phone but it's true I had to try multiple times to log-in. Development for Android is not so easy like for Linux/Windows unfortunately.
Quackdoc
2025-06-20 07:05:56
yeah, guess ill be waiting around for another client, maybe I should pester robrix to support jxl hehehe
jonnyawsom3
2025-06-22 12:13:11
It's not new, but I think this is the only online converter to do JPEG Transcoding https://compress-or-die.com/jxl
2025-06-22 12:13:47
It defaults to lossy, and stripping reconstruction data, but if you set it to lossless then it does actually work
gb82
_wb_ these are their numbers
2025-06-24 12:38:31
im confused as to what this means
A homosapien
gb82 im confused as to what this means
2025-06-24 01:07:09
This graph is from the AVIF vs JXL article by chromium team I think. I'm assuming "transcode" means encoding? (idk why they call it that)
_wb_
2025-06-24 05:34:36
They (the chrome avif team) compared speeds at slowest, default and fastest speeds, but that's of course rather meaningless if you don't also consider the quality/bpp curve you get at those speeds.
jonnyawsom3
2025-06-25 02:15:09
Could do with some help convincing them 😅 https://devtalk.blender.org/t/jpeg-xl-as-an-intermediate-format/41155
_wb_
2025-06-25 09:30:03
Bit depth can actually be set per extra channel, so you can have a uint8 RGB image with a float16 depth channel, a uint12 alpha channel, and a float32 whatever channel. The only thing that you cannot have is different bit depths for R, G and B: the three main color channels are supposed to have the same nominal bit depth.
2025-06-25 09:31:40
(though if you would want to do something like rgb565, you could efficiently store it at a higher nominal bit depth and libjxl would use channel palettes to reduce the range of the channels to 32/64/32 shades)
jonnyawsom3
_wb_ Bit depth can actually be set per extra channel, so you can have a uint8 RGB image with a float16 depth channel, a uint12 alpha channel, and a float32 whatever channel. The only thing that you cannot have is different bit depths for R, G and B: the three main color channels are supposed to have the same nominal bit depth.
2025-06-25 10:20:39
I edited my comment with your quote, but I don't suppose you'd like to reply yourself, in case there's more corrections or questions you could answer?
Aras Pranckevičius
2025-06-25 01:21:54
Hello! I'm one of the people on that blender devtalk thread above. Just finished some testing comparing lossless compressoin ratio/performance for floating point (fp16/fp32) images. Among things already existing in OpenEXR, plus upcoming OpenEXR mode based on HTJ2K, plus JXL. https://github.com/aras-p/test_exr_htj2k_jxl and the summary graph https://raw.githubusercontent.com/aras-p/test_exr_htj2k_jxl/refs/heads/main/img/mac-m4max-20250625.png -- at least on this data set, libjxl does not look very impressive :/ But it is also very possible that I did something wrong.
jonnyawsom3
Aras Pranckevičius Hello! I'm one of the people on that blender devtalk thread above. Just finished some testing comparing lossless compressoin ratio/performance for floating point (fp16/fp32) images. Among things already existing in OpenEXR, plus upcoming OpenEXR mode based on HTJ2K, plus JXL. https://github.com/aras-p/test_exr_htj2k_jxl and the summary graph https://raw.githubusercontent.com/aras-p/test_exr_htj2k_jxl/refs/heads/main/img/mac-m4max-20250625.png -- at least on this data set, libjxl does not look very impressive :/ But it is also very possible that I did something wrong.
2025-06-25 04:16:03
For the decode speed, you could try adding `JXL_ENC_FRAME_SETTING_DECODING_SPEED` along with the effort <https://github.com/aras-p/test_exr_htj2k_jxl/blob/main/src/image_jxl.cpp#L363>. It's not been tested on floats yet, but should perform similarly with it scaling better with more threads. ``` Decode (MP/s) Default Lossless 43.01 Faster Decoding 1 76.60 Faster Decoding 2 84.31 Faster Decoding 3 142.22 Faster Decoding 4 169.22 ``` For me, PIZ EXR loading is 2x *slower* than default lossless JXL, with the JXL being 32% smaller for a Float16 render. Not sure what's going on but smells fishy.
_wb_
2025-06-25 04:40:51
you looked at efforts 1,4,7 ? https://github.com/aras-p/test_exr_htj2k_jxl/blob/33f9c963547ae82920f7c0324bf8d916c131fc6a/src/main.cpp#L78
2025-06-25 04:41:26
I would try efforts 2 and 3 too
2025-06-25 04:52:55
Lossless float is something that is not implemented in a very efficient way in libjxl right now. A float16 buffer first gets converted to equivalent float32 values, then the float16 gets reconstructed and bitcasted to uint16 which is then stored in int32 buffers to be encoded losslessly — and the same in reverse order on the decode side.
2025-06-25 04:54:46
Obviously in principle a lot of that could be avoided, it's just the price we pay for using float32 internally throughout in libjxl, so we can avoid having to implement more than one variant of all internal processing.
Aras Pranckevičius
_wb_ I would try efforts 2 and 3 too
2025-06-25 05:23:41
When I tried effort levels 2,3,5 they were roughly along the lines in between other levels on ratio/throughput graph
jonnyawsom3
2025-06-25 05:52:41
This is definitely skewing the results somewhat https://github.com/libjxl/libjxl/issues/3511
2025-06-25 05:52:44
I ran a test using `Blender43.exr` as linked in your repo, comparing libjxl v0.9 and what will be v0.12 (v0.9 lacks multithreading, so only effort 2. And my builds don't have EXR support, so using PFM as an intermediary) ``` cjxl Blender43.pfm Blender43.jxl -d 0 --patches 0 -e 2 JPEG XL encoder v0.9.1 b8ceae3 [AVX2,SSE4,SSSE3,SSE2] Encoding [Modular, lossless, effort: 2] Compressed to 40311.4 kB (38.881 bpp). 3840 x 2160, 0.070 MP/s [0.07, 0.07], 1 reps, 16 threads. cjxl Blender43.pfm Blender43.jxl -d 0 --patches 0 -e 2 JPEG XL encoder v0.12.0 7deb57d7 [_AVX2_,SSE4,SSE2] Encoding [Modular, lossless, effort: 2] Compressed to 72068.8 kB (69.511 bpp). 3840 x 2160, 20.722 MP/s [20.72, 20.72], , 1 reps, 16 threads.``` Doing a decode speed test using FFMPEG, the v0.9 JXL loads nearly twice as fast as ZIP EXR ``` EXR speed=0.172x bench: utime=0.219s stime=0.031s rtime=0.233s JXL speed=0.299x bench: utime=1.547s stime=0.141s rtime=0.134s``` Trying my own float16 image, Irfanview reports JXL as 2x faster than PIZ EXR at effort 7. Effort 2 makes it 5x faster to decode, while still being 23% smaller
For the decode speed, you could try adding `JXL_ENC_FRAME_SETTING_DECODING_SPEED` along with the effort <https://github.com/aras-p/test_exr_htj2k_jxl/blob/main/src/image_jxl.cpp#L363>. It's not been tested on floats yet, but should perform similarly with it scaling better with more threads. ``` Decode (MP/s) Default Lossless 43.01 Faster Decoding 1 76.60 Faster Decoding 2 84.31 Faster Decoding 3 142.22 Faster Decoding 4 169.22 ``` For me, PIZ EXR loading is 2x *slower* than default lossless JXL, with the JXL being 32% smaller for a Float16 render. Not sure what's going on but smells fishy.
2025-06-25 06:09:38
That's without any of the faster decoding levels too (Because 0.9 is too old for it). Though level 3 is roughly equivalent to Effort 2, with some extra tools like RCTs
2025-06-25 06:10:41
So something is definitely wrong, either I'm getting much slower EXR decoding, or you're getting much slower JXL decoding...
2025-06-25 06:15:53
Especially since JXL can only use LZ77, which should be on-par with RLE, PIZ and ZIP for decompression AFAIK
Aras Pranckevičius
2025-06-25 06:47:40
Yeah I’d like to know what is going on too
RaveSteel
2025-06-25 06:50:17
If you build libjxl from GitHub it will still have support for EXR ``` cjxl -d 0 --patches 0 -e 2 Blender43.exr Blender43.jxl JPEG XL encoder v0.12.0 97319fe4 [_AVX2_,SSE4,SSE2] Encoding [Modular, lossless, effort: 2] Compressed to 30446.6 kB (29.366 bpp). 3840 x 2160, 65.699 MP/s [65.70, 65.70], , 1 reps, 32 threads. ``` Only a little bit smaller than the EXR but decode speed is still faster ``` EXR speed=0.317x bench: utime=0.123s stime=0.004s rtime=0.127s JXL speed=1.54x bench: utime=0.477s stime=0.059s rtime=0.026s ``` ImageMagick and ssimulacra2 report a difference for the encoded JXL. Though this is nothing new, I had written about this happening a few months ago on this server already ``` ImageMagick: JXL f4deffc38cf5d4352941247d72631a632b09dd70a2a6fa6bd5a6709848ed7c77 EXR abce12354037460d9b72065dd0e3c5840699f6b0ba24fb3bc7aabcf1a9ca81d7 ssimulacra2: 95.55762514 ```
2025-06-25 06:55:56
And for good measure: Fast decoding at effort 7 All still smaller than the EXR ``` FD1 speed=0.581x bench: utime=1.754s stime=0.036s rtime=0.069s FD2 speed=0.731x bench: utime=1.416s stime=0.027s rtime=0.055s FD3 speed=1.59x bench: utime=0.462s stime=0.023s rtime=0.025s FD4 speed=1.91x bench: utime=0.402s stime=0.015s rtime=0.021s ```
jonnyawsom3
2025-06-25 07:07:39
Huh, you're getting much denser and faster encoding than me, even with me using the old build's density and main's speed
username
Huh, you're getting much denser and faster encoding than me, even with me using the old build's density and main's speed
2025-06-25 07:12:40
with the only difference being EXR input being used instead of PFM it seems?
RaveSteel
Huh, you're getting much denser and faster encoding than me, even with me using the old build's density and main's speed
2025-06-25 07:15:17
Using intermediaries such as PPM often leads to decreased density in my experience
2025-06-25 07:16:12
I haven't done a comprehensive comparison regarding that, but it happened every time I tried
jonnyawsom3
2025-06-25 07:16:42
3x faster encoding, with me having an extra 20%~ boost from using a clang build, hints at something going wrong with PFM
Aras Pranckevičius
2025-06-25 07:16:54
isn't PFM implying all 32 bit floats?
jonnyawsom3
2025-06-25 07:17:59
Somehow I read RGBA and RGB as Float and Half when picking what file to test...
2025-06-25 07:18:51
But regardless, you can see that it's quite handily beating EXR, the question is why it didn't in your tests
Aras Pranckevičius
2025-06-25 07:19:09
But also, y'all are picking Blender43.exr from my test, which is like "the least interesting" for the use cases talked about in the original blender devtalk thread (since it is "just" a RGB image with 3 color channels, and nothing else). That is not what typically is used in compositing workflows, which is what the whole thread started about. Images with dozens of channels are way more common.
RaveSteel
2025-06-25 07:19:39
Which do you think we should try?
username
2025-06-25 07:20:50
probably which ever is the most complex file, I haven't looked at the repo so idk which that would be
Aras Pranckevičius
2025-06-25 07:21:18
Blender41.exr is the largest/most complex one of the bunch
RaveSteel
2025-06-25 07:21:24
Ok brb
2025-06-25 07:21:33
740MB sheesh
2025-06-25 07:21:46
Need to enable SWAP for that
Aras Pranckevičius
2025-06-25 07:21:49
that is not even large by film production standards! 🙂
RaveSteel
2025-06-25 07:21:53
true
2025-06-25 07:22:02
I just downloaded a 24GB TIF from NASA
Aras Pranckevičius that is not even large by film production standards! 🙂
2025-06-25 07:24:11
Your size info on GitHub states 740MB for Blender41.exr, but the file is only ~400MB
2025-06-25 07:26:20
Well thats unfortunate, my cjxl built from main fails to open this EXR. Blender43,.exr worked fine
username
2025-06-25 07:27:37
I have the list pulled up now from the repo and Blender35.exr or Blender40.exr should also be decent for testing if Blender41.exr is a bit too beefy for anyone here to test
Aras Pranckevičius
2025-06-25 07:28:33
> Your size info on GitHub states 740MB for Blender41.exr, That table lists raw uncompressed size, not exr size.
2025-06-25 07:28:59
> cjxl built from main fails to open this EXR Maybe it does not support non-color channels? or mixed precision among different channels?
RaveSteel
2025-06-25 07:29:13
Ok, I keep getting "Getting pixel data failed" for that EXR
jonnyawsom3
2025-06-25 07:30:44
What compression type is the EXR, just ZIP?
RaveSteel
2025-06-25 07:30:50
Yes
2025-06-25 07:31:06
``` compression: 'zip' displayWindow: [ 0, 0 - 3839 2159 ] 3840 x 2160 dataWindow: [ 0, 0 - 3839 2159 ] 3840 x 2160 channels: 37 channels 'Composite.Combined.A': half samp 1 1 'Composite.Combined.B': half samp 1 1 'Composite.Combined.G': half samp 1 1 'Composite.Combined.R': half samp 1 1 'View Layer.AO.B': half samp 1 1 'View Layer.AO.G': half samp 1 1 'View Layer.AO.R': half samp 1 1 'View Layer.Combined.A': half samp 1 1 'View Layer.Combined.B': half samp 1 1 'View Layer.Combined.G': half samp 1 1 'View Layer.Combined.R': half samp 1 1 'View Layer.Depth.Z': float samp 1 1 'View Layer.DiffDir.B': half samp 1 1 'View Layer.DiffDir.G': half samp 1 1 'View Layer.DiffDir.R': half samp 1 1 'View Layer.DiffInd.B': half samp 1 1 'View Layer.DiffInd.G': half samp 1 1 'View Layer.DiffInd.R': half samp 1 1 'View Layer.GlossDir.B': half samp 1 1 'View Layer.GlossDir.G': half samp 1 1 'View Layer.GlossDir.R': half samp 1 1 'View Layer.GlossInd.B': half samp 1 1 'View Layer.GlossInd.G': half samp 1 1 'View Layer.GlossInd.R': half samp 1 1 'View Layer.Noisy Image.A': half samp 1 1 'View Layer.Noisy Image.B': half samp 1 1 'View Layer.Noisy Image.G': half samp 1 1 'View Layer.Noisy Image.R': half samp 1 1 'View Layer.Normal.X': float samp 1 1 'View Layer.Normal.Y': float samp 1 1 'View Layer.Normal.Z': float samp 1 1 'View Layer.Position.X': float samp 1 1 'View Layer.Position.Y': float samp 1 1 'View Layer.Position.Z': float samp 1 1 'View Layer.UV.A': float samp 1 1 'View Layer.UV.U': float samp 1 1 'View Layer.UV.V': float samp 1 1 ```
Aras Pranckevičius
2025-06-25 07:31:54
"just zip" within OpenEXR of course means "a simple delta filter, followed by deflate". It is not just literally running zip on raw pixel values.
jonnyawsom3
Aras Pranckevičius > cjxl built from main fails to open this EXR Maybe it does not support non-color channels? or mixed precision among different channels?
2025-06-25 07:31:54
JXL supports both, but the EXR handling has been a bit... Iffy... As of late due to compilation issues. I wouldn't be surprised if it's encountering a problem
username
RaveSteel Ok, I keep getting "Getting pixel data failed" for that EXR
2025-06-25 07:32:06
try one of the EXRs I mentioned, if it still fails then I guess it's an issue with how cjxl handles EXR input
jonnyawsom3
2025-06-25 07:32:20
Yes, I just mean > compression: 'zip' Keeping it simple :P
RaveSteel
JXL supports both, but the EXR handling has been a bit... Iffy... As of late due to compilation issues. I wouldn't be surprised if it's encountering a problem
2025-06-25 07:32:41
Yeah, I wrote about issues with EXR a few months ago, shortly before EXR was removed from the repo
username
2025-06-25 07:34:03
just find an intermediate format you can convert to that retains as much as possible and cjxl supports because I don't think you are gonna be able to get direct EXR input support to fully work
jonnyawsom3
2025-06-25 07:35:14
We know multi-channel works due to previous mulitspectral testing https://discord.com/channels/794206087879852103/794206087879852106/1247491487181180940
RaveSteel
We know multi-channel works due to previous mulitspectral testing https://discord.com/channels/794206087879852103/794206087879852106/1247491487181180940
2025-06-25 07:37:40
It works in general, I have verified using sample multi channel images from OpenEXRs github
2025-06-25 07:37:48
Maybe just because these files are too large
username just find an intermediate format you can convert to that retains as much as possible and cjxl supports because I don't think you are gonna be able to get direct EXR input support to fully work
2025-06-25 07:38:12
The problem then is retaining the channels. Which format supported by libjxl is able to do that?
2025-06-25 07:38:24
I don't think any of them can, right?
jonnyawsom3
2025-06-25 07:40:27
PAM can <https://github.com/libjxl/libjxl/blob/876aa4771fe57b8bcd3953bb48a1b2c11bc94c42/lib/extras/dec/pnm.cc#L236>
2025-06-25 07:41:12
But IIRC you have to manually make a frankenfile... And that's assuming it can store floats, which I'm not sure
RaveSteel Maybe just because these files are too large
2025-06-25 07:45:09
I don't *think* we've had any test images with mixed precision before, so it could be that the EXR decoder isn't plumbed into libjxl for per-channel data types yet. <@794205442175402004> any ideas?
username
2025-06-25 07:58:48
probably gonna have to end up using the API directly for the time being to at the very least generate a lossless JXL with all the channels intact for easy testing through cjxl
Aras Pranckevičius
I don't *think* we've had any test images with mixed precision before, so it could be that the EXR decoder isn't plumbed into libjxl for per-channel data types yet. <@794205442175402004> any ideas?
2025-06-25 07:59:39
Looking at EXR reading code in libjxl, it was only supporting RGB(A) images (any extra channels would be ignored) and always returning FP16 data, due to usage of RgbaInputFile
username probably gonna have to end up using the API directly for the time being to at the very least generate a lossless JXL with all the channels intact for easy testing through cjxl
2025-06-25 08:00:19
…which is what my code is trying to do 🙂
RaveSteel
2025-06-25 08:02:52
Some images from https://github.com/AcademySoftwareFoundation/openexr-images also cannot be encoded by libjxl. Most do work luckily
jonnyawsom3
Aras Pranckevičius Looking at EXR reading code in libjxl, it was only supporting RGB(A) images (any extra channels would be ignored) and always returning FP16 data, due to usage of RgbaInputFile
2025-06-25 08:05:25
Ahh right, now I remeber. EXR support was lacking the extra channels and full floats due to them requiring the use of a more advanced API
Aras Pranckevičius …which is what my code is trying to do 🙂
2025-06-25 08:12:12
Don't suppose you could upload one of your encoded JXLs? Then we can do further testing on encode/decode speed with the extra channels and full floats
username
2025-06-25 08:19:47
~~I was just attempting to compile their repo so I could send the binaries here and y'all could generate your own multi-channel JXLs~~ just realized it doesn't output files just the results whoops
_wb_
2025-06-25 08:21:14
Feel free to make pull requests to make EXR read/write support better in cjxl/djxl
2025-06-25 08:22:50
TBH, I think we only really had EXR support in the first place to have some input format that has premultiplied alpha and float types, which are missing in PNG.
2025-06-25 08:23:09
But it would make sense to make the support more complete
2025-06-25 08:25:20
The internal representation of PackedPixelFile we're using as generic uncompressed in-memory representation should be expressive enough to do anything EXR can do, I think
Aras Pranckevičius
2025-06-26 03:42:16
Probably not _everything_, EXR has many very exotic things, like “deep EXR” that stores variable amount of data per pixel; I’m pretty sure JXL can’t do that 🙂
2025-06-26 03:42:52
That said, I’ll take a look at making a PR for better EXR reading
jonnyawsom3
2025-06-26 07:23:32
*Technically* you could combine extra channels with layers in JXL, to store the extra samples of Deep EXR, but let's get extra channels and variable precision in cjxl working first 😅
_wb_
2025-06-26 07:29:03
variable amount of components per pixel is indeed something jxl cannot do — but you could of course just put dummy values in the missing components...
Aras Pranckevičius
2025-06-26 08:32:18
Anyhow, right now I'm looking at changing `dec/exr.cpp` to no longer turn all input EXRs into FP16 (issue #465), that is going well. Next up, make it support more than color channels and stuff that into "extra channels". Will make a PR once I have something.
jonnyawsom3
2025-06-26 08:37:48
Thanks for helping us out, EXR support has been spotty for years now. Maybe support could even be re-enabled by default, if it doesn't break everything again
Aras Pranckevičius
2025-06-26 01:13:10
Alright I have things _almost_ working in making cjxl be able to read & encode extra channels coming from EXR files. However there's some strangeness with mixed precision channels, FP32 ones when the rest are FP16 seem to be garbage in the resulting file (as observed by djxl dumping extra channels). However as far as I can tell, the data I am passing in is fine. Strange! https://github.com/libjxl/libjxl/pull/4312
_wb_
2025-06-26 07:13:33
Could be some bug in modular encoding where it doesn't properly look at the correct bitdepth per channel but assumes everything is like the first one
2025-06-26 07:14:19
It is very much possible that I wrote buggy code that implicitly does that
jonnyawsom3
RaveSteel And for good measure: Fast decoding at effort 7 All still smaller than the EXR ``` FD1 speed=0.581x bench: utime=1.754s stime=0.036s rtime=0.069s FD2 speed=0.731x bench: utime=1.416s stime=0.027s rtime=0.055s FD3 speed=1.59x bench: utime=0.462s stime=0.023s rtime=0.025s FD4 speed=1.91x bench: utime=0.402s stime=0.015s rtime=0.021s ```
2025-06-26 08:10:48
<https://devtalk.blender.org/t/jpeg-xl-as-an-intermediate-format/41155/25> > What are the file sizes? (And, I’m assuming single-layer each?)
RaveSteel
2025-06-26 08:41:31
Already deleted the files, but from memory FD1 and FD2 both were 28,8MB FD3 was ~29MB FD4 was ~30MB
jonnyawsom3
RaveSteel Already deleted the files, but from memory FD1 and FD2 both were 28,8MB FD3 was ~29MB FD4 was ~30MB
2025-06-26 08:51:24
Don't suppose you could run them again quickly along with effort 2? I'd do it myself but I don't have any builds with EXR support (v6, 8, 9, 10, 11, 12 <:SupremelyDispleased:1368821202969432177>) Here's the link to the file again https://aras-p.info/files/exr_files/Blender43.exr
Aras Pranckevičius
_wb_ Could be some bug in modular encoding where it doesn't properly look at the correct bitdepth per channel but assumes everything is like the first one
2025-06-27 08:06:10
<@794205442175402004> looks like if I just change `jxl.cc` call to `JxlEncoderSetExtraChannelBuffer` from using the main color format (`&ppixelformat`) to `&pframe.extra_channels[i].format` then it all starts working properly. But overall I have no idea what I'm doing, so not sure if that's the right fix.
_wb_
2025-06-27 08:12:22
That does sound like a fix. If one is f16 and the other is f32 then of course it will be garbage...
Aras Pranckevičius
I ran a test using `Blender43.exr` as linked in your repo, comparing libjxl v0.9 and what will be v0.12 (v0.9 lacks multithreading, so only effort 2. And my builds don't have EXR support, so using PFM as an intermediary) ``` cjxl Blender43.pfm Blender43.jxl -d 0 --patches 0 -e 2 JPEG XL encoder v0.9.1 b8ceae3 [AVX2,SSE4,SSSE3,SSE2] Encoding [Modular, lossless, effort: 2] Compressed to 40311.4 kB (38.881 bpp). 3840 x 2160, 0.070 MP/s [0.07, 0.07], 1 reps, 16 threads. cjxl Blender43.pfm Blender43.jxl -d 0 --patches 0 -e 2 JPEG XL encoder v0.12.0 7deb57d7 [_AVX2_,SSE4,SSE2] Encoding [Modular, lossless, effort: 2] Compressed to 72068.8 kB (69.511 bpp). 3840 x 2160, 20.722 MP/s [20.72, 20.72], , 1 reps, 16 threads.``` Doing a decode speed test using FFMPEG, the v0.9 JXL loads nearly twice as fast as ZIP EXR ``` EXR speed=0.172x bench: utime=0.219s stime=0.031s rtime=0.233s JXL speed=0.299x bench: utime=1.547s stime=0.141s rtime=0.134s``` Trying my own float16 image, Irfanview reports JXL as 2x faster than PIZ EXR at effort 7. Effort 2 makes it 5x faster to decode, while still being 23% smaller
2025-06-27 12:56:00
my guess so far at why I'm seeing very different EXR encode/decode speeds than you, is maybe things you are testing (ffmpeg/imagemagick/cjxl) do not actually do multi-threading for EXR? I should check what ffmpeg does...
jonnyawsom3
2025-06-27 01:00:58
Hmm, good point. I'd be surprised if FFMPEG wasn't, unless they wrote their own decoder instead of using the library?
Aras Pranckevičius
2025-06-27 01:01:26
Ffmpeg _does_ have their own EXR code, yes
jonnyawsom3
2025-06-27 01:01:42
O h
_wb_ this is what I'm currently having in mind, but it's still to be discussed and will probably not be for the third edition of 18181-2 (which we plan to have quickly, just to add the gain map box) but rather for a fourth edition.
2025-06-27 02:05:59
Would it be alright if I repost those draft pages in response to this issue? https://github.com/libjxl/libjxl/issues/4310
_wb_
2025-06-27 02:08:47
That doesn't solve this specific issue of too many reset positions though...
jonnyawsom3
2025-06-27 02:12:16
It's in response to the comment about gain map tail data, and mentioning https://github.com/libjxl/libjxl/issues/3882 too
2025-06-27 02:13:47
Actually, I'll split my comment and move the draft images to that second issue
_wb_
2025-06-27 02:28:02
Ah yes for gain map data there's a different problem.
2025-06-27 02:29:37
Actually there are two problems with gain map jpegs: compressing the gain map more efficiently (by applying recursive jpeg recompression to it, instead of just Brotli), but more importantly maybe: keeping it semantically as a gain map in the jxl file too. Otherwise a gain map jpeg recompresses to an SDR-only jxl.
jonnyawsom3
2025-06-27 03:33:46
Yeah. With how much of a mess UltraHDR causes, for such little gain~~map~~, almost makes you wonder if Google did it just to spite JXL :P Almost certainly not, but shunning a real HDR format and then slapping 2 JPEGs together while calling it 'a true HDR image format' is a bit... Hmmm
username
2025-06-27 03:35:09
also forcing it on everyone as well since iirc now all of the new Pixel phones and such output them
jonnyawsom3
Aras Pranckevičius Alright I have things _almost_ working in making cjxl be able to read & encode extra channels coming from EXR files. However there's some strangeness with mixed precision channels, FP32 ones when the rest are FP16 seem to be garbage in the resulting file (as observed by djxl dumping extra channels). However as far as I can tell, the data I am passing in is fine. Strange! https://github.com/libjxl/libjxl/pull/4312
2025-06-28 09:42:55
I have to say, I'm excited to see the multilayer results given how well we did for multispectral images. -e 2 -E 1 should be pretty competitive on size and not too bad on speed
Aras Pranckevičius
2025-06-28 07:03:56
Ok, I'm back with my EXR vs HTJ2K vs JXL comparisons for lossless compression of floating point images. Latest code here: https://github.com/aras-p/test_exr_htj2k_jxl Learnings since last time: - All these codecs have large variability between different images. Like if you say "JXL is very good at compressing Blender43.exr" that is true but it might be worse at compressing another image. This is pretty obvious. - JXL can give best compression ratio of the compared ones (at effort 4..7) - JXL is slowest of the compared ones (at all effort levels), at both compression and decompression - Do _not_ use ffmpeg to benchmark JXL vs EXR performance! ffmpeg uses libjxl, but for EXR it uses their own code (which is very compact & easy to read, but not necessarily fast), and all single threaded too. - There's "Mop" codec in the charts, which is not an image format at all. I'm just mis-using a fairly popular & small geometry compression library to compress image pixels, pretending they are vertex data. Curious find is, that at least on this data set, it absolutely smokes everything else on the pareto front chart, while being 26 kilobytes of executable code (compared to say JXL that is 6MB). - My understanding is that libjxl floating point lossless compression has not been a focus (yet?), maybe this will inspire someone to improve it, if the spec/format allows it. - It could also be that JXL is way more strong at lossy compression, which is a whole another topic of course.
lonjil
2025-06-28 09:49:05
the benchmarks I've seen of lossless jxl have almost all been for 8-bit or 10-bit images, where it usually does really well compared to other formats. In principle I don't think there's anything in the format that would make lossless floating point worse, but I'm quite sure that it hasn't been a development focus, yeah.
jonnyawsom3
2025-06-29 12:40:14
Good feedback, and good motivation. There's been very little requests or testing around Floats, so I'd expect significant improvements are possible. It may even be like progressive, where a malfunctioning coding tool was doubling the filesize. We fixed that for 0.12, but it was annoying to track down
CrushedAsian255
2025-06-29 07:39:01
is EXR even compressed?
2025-06-29 07:39:06
i thought it was just the container
Quackdoc
2025-06-29 08:16:57
EXR is indeed a container, it can hold multiple compression formats
2025-06-29 08:17:29
all of them lossless but one or two iirc, things may have changed since I last looked into that stuff tho
Aras Pranckevičius
2025-06-29 08:19:46
EXR is compressed, yes. Has 4 (soon 5) lossless compression codecs (RLE, ZIP, ZIPS, PIZ, soon HTJ2K), and 5 lossy ones (PXR24, B44, B44A, DWAA, DWAB)
CrushedAsian255
2025-06-29 08:24:25
why not just use JPEG XL as a payload in EXR
Quackdoc
Aras Pranckevičius EXR is compressed, yes. Has 4 (soon 5) lossless compression codecs (RLE, ZIP, ZIPS, PIZ, soon HTJ2K), and 5 lossy ones (PXR24, B44, B44A, DWAA, DWAB)
2025-06-29 08:29:51
damn things have changed lol
jonnyawsom3
CrushedAsian255 why not just use JPEG XL as a payload in EXR
2025-06-29 04:00:17
https://discord.com/channels/794206087879852103/803574970180829194/1387254762193420389
username
Aras Pranckevičius EXR is compressed, yes. Has 4 (soon 5) lossless compression codecs (RLE, ZIP, ZIPS, PIZ, soon HTJ2K), and 5 lossy ones (PXR24, B44, B44A, DWAA, DWAB)
2025-06-29 08:16:08
wouldn't HTJ2K also count as lossy or is that not an intended use case for it within EXR?
Aras Pranckevičius
username wouldn't HTJ2K also count as lossy or is that not an intended use case for it within EXR?
2025-06-29 08:18:58
Within EXR right now HTJ2K is only lossless. Maybe they will add a lossy mode later on, I’ve no idea
Oleksii Matiash
2025-07-03 08:49:46
Adobe 'added' jxl support to the Photoshop, but it is.. strange. White rectangle 800x600 px saved as 75 (in PS values) lossy weighs 15 KB, 99% of it of which are PS metadata without any compression:
diskorduser
Oleksii Matiash Adobe 'added' jxl support to the Photoshop, but it is.. strange. White rectangle 800x600 px saved as 75 (in PS values) lossy weighs 15 KB, 99% of it of which are PS metadata without any compression:
2025-07-03 11:11:22
Psd file or jxl file
Oleksii Matiash
diskorduser Psd file or jxl file
2025-07-03 11:13:47
CrushedAsian255
Oleksii Matiash Adobe 'added' jxl support to the Photoshop, but it is.. strange. White rectangle 800x600 px saved as 75 (in PS values) lossy weighs 15 KB, 99% of it of which are PS metadata without any compression:
2025-07-03 11:39:03
You would think they would use brotli boxes, but nah too lazy ig
0xC0000054
2025-07-03 11:56:09
Adobe software loves to add bloated metadata to images they work on. IIRC Photoshop eve has a document history entry that unsurprisingly can be quite large.
jonnyawsom3
2025-07-03 12:52:33
I found out last night that they're using v0.9 for DNG, so no chunked encoding and 19 months of bugfixes are missing https://discord.com/channels/794206087879852103/805176455658733570/1390181961292582922 I'd have no doubt photoshop is also on an ancient version with misconfigured settings
HCrikki
2025-07-03 12:54:57
no surprise. excellent implementations require the support of folks most intimate with jxl, especially with file formats since they require much more care compared to dlls that can always be easily updated
2025-07-03 01:01:03
that said, it should be possible to make a 3rdparty export addon. many implementations flatten the image and merge all layers without any notice (ie gimp) or use lossy alpha for what shouldve retained lossless alpha for edges
jonnyawsom3
HCrikki no surprise. excellent implementations require the support of folks most intimate with jxl, especially with file formats since they require much more care compared to dlls that can always be easily updated
2025-07-03 01:23:05
The strange thing is, Eric Chan who's lead for camera raw has been on the reddit frequently in the past, but never asked for any advice or opinions
Oleksii Matiash
CrushedAsian255 You would think they would use brotli boxes, but nah too lazy ig
2025-07-03 02:32:22
"Use brotli boxes". Adobe's T9: "Did you mean 'bloaty'?"
CrushedAsian255
Oleksii Matiash "Use brotli boxes". Adobe's T9: "Did you mean 'bloaty'?"
2025-07-03 02:35:04
they're the kind of company to add a high res preview in raw TIFF format at the beginning of the file
jonnyawsom3
2025-07-03 03:25:34
Given they're using v0.9, now I'm wondering how performance would be with a modern version, or even the new Faster Decoding since IIRC they have it enabled by default... Even though it's seriously broken for lossless
Oleksii Matiash
2025-07-03 04:10:43
Interesting fact, if I try to save jxl with "ICC Profile" checkbox unchecked, it starts saving and then crashes PS 🤦‍♂️
HCrikki
2025-07-03 04:17:22
performance would be consistently fast if it was adaptive against resolution
2025-07-03 04:19:14
ie effort 7 default, but for anything higher than 15 megapixels it goes down to effort 5. opposite for small images (less than 1 megapixel=effort8 since encoding duration change is hardly perceptible)
jonnyawsom3
2025-07-03 05:00:56
I was experimenting with changing group size based on thread count, to maximise throughout amd density. I could combine it with that idea, but then it makes encoding variable based on both image resolution and CPU
Given they're using v0.9, now I'm wondering how performance would be with a modern version, or even the new Faster Decoding since IIRC they have it enabled by default... Even though it's seriously broken for lossless
2025-07-03 05:01:53
If you were responding to that, 0.9 had functionality no multithreading
5peak
I found out last night that they're using v0.9 for DNG, so no chunked encoding and 19 months of bugfixes are missing https://discord.com/channels/794206087879852103/805176455658733570/1390181961292582922 I'd have no doubt photoshop is also on an ancient version with misconfigured settings
2025-07-03 05:34:40
0 surprise. Any1 remembers the Flash?
HCrikki
2025-07-03 09:00:28
a lot of encoders are singlethreaded since they didnt need multiple cores per image and multithreaded the handling of the list of input files itself (ie xnviewmp). old legacy decisions that were never revisited since
jonnyawsom3
2025-07-03 09:13:27
Yeah, but this is libjxl which already handles multithreading...
Kupitman
HCrikki ie effort 7 default, but for anything higher than 15 megapixels it goes down to effort 5. opposite for small images (less than 1 megapixel=effort8 since encoding duration change is hardly perceptible)
2025-07-06 09:18:28
somebody coding lower than effort 9?!
_wb_
2025-07-07 08:08:30
> The Pixel series now features Ultra HDR, which can make fireworks photos pop on compatible displays. The gain map for Ultra HDR is included in the Pixel’s JPEG XL files, so photographers don’t need to take any special action to take advantage of it. Of course, the SDR version is also available. https://petapixel.com/2025/07/04/how-to-capture-fantastic-fireworks-photos-with-your-smartphone/
2025-07-07 08:10:16
I assume that is a typo, and they mean "the Pixel XL's JPEG files", not "the Pixel's JPEG XL files"?
Meow
2025-07-07 08:19:00
They wanted JPEG XL so desperately
jonnyawsom3
2025-07-07 11:41:08
They managed to hyperlink it to another article, but then just say JPEG a few lines later
CrushedAsian255
Meow They wanted JPEG XL so desperately
2025-07-07 11:51:05
Mood
AccessViolation_
2025-07-07 09:40:50
that information going to linger in large language models for centuries to come
VcSaJen
2025-07-08 02:39:41
Any updates on Windows's default support? Does it still require you to manually install Windows Store extension?
afed
2025-07-08 02:55:18
same for vp9, av1, hevc, avif, heif, webm, webp, ... so I don't think it will change, maybe sometime in the future like for hdr screenshots and wallpapers
HCrikki
2025-07-08 03:07:21
if you try opening jxl in the Photos app (in either win10 or win11), it will give you an in-app prompt to download ms' jxl extension
2025-07-08 03:07:53
issue is the extension was made limited to only win11 24h2 'for now'
2025-07-08 03:09:20
since store apps are the same wether theyre used on win10 or win11 and feature parity is necessary, its pretty much guaranteed extension will have its 'supported oses' expanded to win10 too after what was likely supposed to be a discrete implementation test phase
2025-07-08 03:10:47
just miffed at the slow change pace. if the extension devs were in at least temporary contact with the jxl authors i suspect it couldve been rolled quicker, better and sooner (to win10 too, which would make it essentially as good as preinstalled)
2025-07-08 03:45:40
on an aside, extension now shows ratings so feel free to drop your 4-5 star rating and commentaries. Extension makers should make it available unrestricted to *all * win10 and win11 users so apps like Photos (and maybe edge) have format parity in all windows systems
2025-07-08 03:47:29
https://apps.microsoft.com/detail/9mzprth5c0tb
Oleksii Matiash
2025-07-08 03:56:13
I somehow broke my MS Store app and now it can't install anything from the Windows Store. So in my opinion it would be much better to have usual installer not depending on the store app, but.. Btw, it also would resolve restricted compatibility issue with win10, I believe
afed
2025-07-08 04:35:18
<https://store.rg-adguard.net/>
2025-07-08 04:37:46
and then in Powershell `Add-AppxPackage -Path .\xxxx.appx`
HCrikki
2025-07-08 05:39:15
use winget in terminal, always works ( **winget install 9mzprth5c0tb** ) . swap with 'upgrade' for updates.
Oleksii Matiash
HCrikki use winget in terminal, always works ( **winget install 9mzprth5c0tb** ) . swap with 'upgrade' for updates.
2025-07-08 05:50:38
Nope. "Failed to install or upgrade Microsoft Store package. Error code: 0x800706d9"
afed and then in Powershell `Add-AppxPackage -Path .\xxxx.appx`
2025-07-08 05:51:18
But I don't really care, as I don't use Windows built-in apps
HCrikki
2025-07-08 06:09:54
needs win11 24h2 but if you have a corrupt store cache its a separate issue needing its cache reset
Foxtrot
2025-07-09 10:22:29
Still waiting for JPEG XL compression for TIFF or PSD files in Photoshop 😄