JPEG XL

Info

rules 58
github 38692
reddit 688

JPEG XL

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

General chat

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

Voice Channels

General 2578

Archived

bot-spam 4577

adoption

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

veluca
2026-01-13 11:47:20
is it reasonably fast in your experience?
jonnyawsom3
dogelition yep that's definitely working, including hdr, awesome no idea if this is even supposed to be a supported use case for jxl in "normal" viewers, but i noticed that a jxl converted 1:1 from jxr (hdr using linear half float srgb, with (1,1,1) = 80 nits white) is not displayed as hdr in chrome. it does work when importing into krita though jxlinfo for reference: ``` JPEG XL file format container (ISO/IEC 18181-2) JPEG XL image, 3840x2160, (possibly) lossless, 16-bit float (5 exponent bits) RGB+Alpha intensity_target: 80.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, sRGB primaries, Linear transfer function, rendering intent: Relative ``` i assume the issue there is that there's no indication for the maximum luminance in the image, so it's hard to tell if it's even supposed to be hdr or not.
2026-01-13 11:48:03
Colorspace is also sRGB, so it shouldn't display as HDR anyway
dogelition
2026-01-13 11:48:47
it goes above 1 and into the negatives for wcg/hdr
2026-01-13 11:49:13
or are you saying it should be tagged differently to indicate that while still having the same pixel data
jonnyawsom3
2026-01-13 11:51:17
Pixel data doesn't matter, the decoder will always output the original color space unless otherwise requested. The input was tagged sRGB, so it's outputting sRGB instead of linear, ect
dogelition
2026-01-13 11:54:08
not sure i'm following the color space is sRGB primaries with linear transfer at least mathematically speaking, that can represent every color with any luminance (as long as you don't run into 16 bit float limitations) when imported into krita this works, it's displayed as a normal hdr image
2026-01-13 11:56:02
(and the reason i'm even looking into this in the first place is that windows hdr screenshots use this exact encoding but with jxr, so lossless conversion might be of interesting there since nothing supports jxr)
username
2026-01-13 11:56:53
how does the old libjxl implementation in Chromium handle it?
2026-01-13 11:57:06
or does it also handle it as SDR?
dogelition
2026-01-13 11:57:43
is that the same as in thorium? same behavior there, clipped sdr
jonnyawsom3
dogelition not sure i'm following the color space is sRGB primaries with linear transfer at least mathematically speaking, that can represent every color with any luminance (as long as you don't run into 16 bit float limitations) when imported into krita this works, it's displayed as a normal hdr image
2026-01-13 11:59:34
Apparently my eyes skimmed over "Linear transfer function" and read everything else..
dogelition
2026-01-13 12:00:53
sample file for testing
RaveSteel
dogelition (and the reason i'm even looking into this in the first place is that windows hdr screenshots use this exact encoding but with jxr, so lossless conversion might be of interesting there since nothing supports jxr)
2026-01-13 12:01:31
JXR->JXL works fine, even compresses better nowadays (at least for the images I have)! Sadly I can't share an image here, too large
jonnyawsom3
2026-01-13 12:02:10
What effort? Try 8
dogelition
2026-01-13 12:02:42
guess i should rerun my test (https://discord.com/channels/794206087879852103/803645746661425173/1250101680620568727) to see if that's true
2026-01-13 12:02:52
assuming i can find the code again
RaveSteel
What effort? Try 8
2026-01-13 12:04:16
Even effort 9 is hardly smaller e8 - 25581.6 kB (24.674 bpp) e9 - 25455.6 kB (24.552 bpp)
2026-01-13 12:07:01
But still 5MB smaller than the JXR
jonnyawsom3
Tirr and it doesn't match the performance of singlethreaded libjxl yet
2026-01-13 12:08:59
For some images it's within 10% now, standard VarDCT is roughly equal IIRC
whatsurname
veluca is it reasonably fast in your experience?
2026-01-13 12:17:34
What does that mean? I know jxl-rs may not be as fast as libjxl, but 20x slower than AVIF is almost like something went wrong And it seems like the JXL decoder in Chromium does not use SIMD at all
dormosaurus
2026-01-13 12:21:42
my own build (143.0.7499.40) with libjxl 0.11 is about 4 times faster than the canary one, which is about 2 times faster than my build with jxl-rs 0.1.2 (0.1.3? not sure)
_wb_
2026-01-13 12:58:06
on my macbook it looks fast enough when I go to pages like https://jpegxl.info/resources/jpeg-xl-test-page.html or https://jpegxl.info/old/art/
2026-01-13 12:58:33
animations play without stuttering, images load as fast as I can scroll
2026-01-13 01:06:32
I'm not sure how Jake's benchmark works exactly, it says 150ms for fox.jxl vs 11 to 12ms for fox.avif
2026-01-13 01:07:04
when I try https://sneyers.info/browserspeedtest/ I get these numbers: s.jxl: Decode speed: 179.26 MP/s | Fetch: 1385.60ms | 100 decodes: 182.80ms s8.avif: Decode speed: 487.62 MP/s | Fetch: 841.90ms | 100 decodes: 67.20ms s10.avif: Decode speed: 446.43 MP/s | Fetch: 1671.00ms | 100 decodes: 73.40ms s12.avif: Decode speed: 341.69 MP/s | Fetch: 585.20ms | 100 decodes: 95.90ms s-fd3.jxl: Decode speed: 257.81 MP/s | Fetch: 1084.70ms | 100 decodes: 127.10ms
jonnyawsom3
2026-01-13 01:14:32
Huh, I thought progressive loading was hooked up?
_wb_
2026-01-13 01:19:48
looks like it's just showing final groups when they're ready
2026-01-13 01:22:28
As a starting point, I think this is solid
Tirr
2026-01-13 01:22:56
iiuc it's rendering only fully loaded area, no eagerness
2026-01-13 01:24:23
pass (or eager) progression isn't implemented yet, even if we request one, jxl-rs will always wait for data (for now)
_wb_
2026-01-13 01:25:11
we have alpha, animation, wide gamut, HDR working, and speed is reasonable enough to be usable โ€” at least on a beefy cpu like a macbook I don't notice any issue regarding decode speed. Probably for a low-end phone that might be a bit different.
Tirr
2026-01-13 01:26:38
it does feel quite slow when opening HDR images with higher resolution
_wb_
2026-01-13 01:26:41
if it can improve a bit further in terms of speed and progressive loading by the time it's enabled by default in stable, it will be excellent
2026-01-13 01:29:59
how much room for improvement in decode speed do you think there is?
Tirr
2026-01-13 01:31:31
not sure, but libjxl is 1.5x faster for the same image at least
jonnyawsom3
2026-01-13 01:31:44
For me the animation stutters on <https://jpegxl.info/resources/jpeg-xl-test-page.html>, and scrolling though the home page is a little clunky, but it works
Tirr
2026-01-13 01:33:06
and I think <@179701849576833024> is planning to further improve render pipeline? ๐Ÿ˜›
AccessViolation_
2026-01-13 01:35:24
multithreading would immediately be a big improvement for large images for sure
RaveSteel
2026-01-13 01:38:58
Canary for android cannot get the update soon enough
2026-01-13 01:40:24
Wait, it just did
2026-01-13 01:40:26
nice
2026-01-13 01:41:55
works pretty well, only the animation on the jpegxl.info webseite stutters a bit
dogelition
2026-01-13 01:45:40
...why is this a different color?
Quackdoc
2026-01-13 01:48:05
anybody else got any scripts to force CDNs that can use jxl to use jxl? I wanna set them globally lol
Magnap
dogelition ...why is this a different color?
2026-01-13 01:50:14
Same thing for the animation
2026-01-13 01:51:16
It's definitely the wrong color: it looks identical to the others in fossify gallery
dogelition
2026-01-13 01:51:27
and it looks identical on desktop
hjanuschka
whatsurname Can you check if `features = ["all-simd"]` should be added here: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo.toml;l=30
2026-01-13 01:51:40
will give it a try
Magnap
Magnap Same thing for the animation
2026-01-13 01:51:53
Dice are wrong too
2026-01-13 01:53:08
A sign error in a red-blue color component? I forgot what the axes of XYB are
hjanuschka
2026-01-13 01:53:41
oh damn, saw that golden anim_ico a few times, will create a issue, can i copy your screenshots? or do you want to file chromium issue?
dogelition
2026-01-13 01:54:04
i'm too lazy to file one
hjanuschka
2026-01-13 01:54:30
i m filing and trying to fix, just wanted to know if it is ok to copy the screenshots
Magnap
hjanuschka oh damn, saw that golden anim_ico a few times, will create a issue, can i copy your screenshots? or do you want to file chromium issue?
2026-01-13 01:54:43
Please take the screenshots for sure ๐Ÿ˜„
2026-01-13 01:54:50
Uh, that's ambiguous
2026-01-13 01:54:54
Yes, copy them
2026-01-13 01:55:03
Don't re-take them yourself ๐Ÿ˜…
RaveSteel
2026-01-13 01:56:33
the animation stutters a bit on desktop as well for me. but colors are indeed correct
hjanuschka
2026-01-13 01:57:01
done: https://issues.chromium.org/issues/475255735 will work on it tonight! ๐Ÿ™‚ stutter/performance, investigating if the simd feature flag helps, but in general performance is a overall topic
2026-01-13 01:57:07
the android thing is for sure a bug
Magnap
2026-01-13 01:58:20
Oh, for the record, the 16-bit red image which supposedly has a faint webkit logo that I don't have the hardware to see has the correct color
dogelition
Magnap A sign error in a red-blue color component? I forgot what the axes of XYB are
2026-01-13 01:59:19
jxl art is also affected so i would assume it's a red/blue channel swap elsewhere
hjanuschka
hjanuschka will give it a try
2026-01-13 01:59:25
well that is not enabled, testing if it works once enabled, but we'd need to have a jxl-rs roll for that change
Magnap
Magnap Oh, for the record, the 16-bit red image which supposedly has a faint webkit logo that I don't have the hardware to see has the correct color
2026-01-13 02:00:41
Can take a screenshot, but it would be rather uninformative: 4 red squares ๐Ÿ˜… but it might be more useful as evidence than an assertion from a random person on discord
hjanuschka
2026-01-13 02:01:03
the red one will work once dice and animation are ok - i bet
Magnap
hjanuschka the red one will work once dice and animation are ok - i bet
2026-01-13 02:01:27
The red one is already working tho, is what I'm saying. It's red as it should be
2026-01-13 02:02:07
dogelition
2026-01-13 02:02:40
(left is the actual jxl decoded by chromium, right is decoded to png via the wasm decoder)
Magnap
dogelition (left is the actual jxl decoded by chromium, right is decoded to png via the wasm decoder)
2026-01-13 02:04:44
Wait, it's not red for you? Fdkdjg
2026-01-13 02:05:32
I'm guessing some device information might be useful, then. I'll be happy to provide it
dogelition
2026-01-13 02:06:02
not familiar with graphics programming at all but RGB/BGR mismatch rings some bells i think, e.g. windows uses BGR ordering as the desktop swapchain format in SDR but RGB in HDR
2026-01-13 02:06:41
so i would assume that some layer expects BGR but receives RGB instead (or the other way around)
Magnap Wait, it's not red for you? Fdkdjg
2026-01-13 02:07:43
that wide gamut image is red for me too
Magnap
dogelition that wide gamut image is red for me too
2026-01-13 02:08:04
Ah ok, great
VcSaJen
Quackdoc anybody else got any scripts to force CDNs that can use jxl to use jxl? I wanna set them globally lol
2026-01-13 02:09:55
You need a Firefox extension that modifies "Accept:" header for images, you need to set it to just "image/jxl". Expect a LOT of broken images if you don't accept jpeg/png/gif, tho
dogelition
2026-01-13 02:11:21
the hdr images have the right channel order but don't actually seem to trigger hdr? ultrahdr images don't work either, so either something's wrong with my phone or with that chrome build
whatsurname
hjanuschka well that is not enabled, testing if it works once enabled, but we'd need to have a jxl-rs roll for that change
2026-01-13 02:12:04
Why would that need a jxl-rs roll? Can't it just be enabled on the Chromium side instead of jxl-rs making it a default feature?
veluca
Tirr and I think <@179701849576833024> is planning to further improve render pipeline? ๐Ÿ˜›
2026-01-13 02:14:18
indeed I am, but that code is scary ๐Ÿ˜›
HCrikki
2026-01-13 02:14:53
the guardian doesnt serve images with jxl on, could it be an issue with how theyre served? pngs and jpgs identifying as jxl or something (canary7632.0/windows). pretending to be another format is a widespread webdev practice, could be worth checking nintendo.com's images when format is manually set to jxl show properly and are correct (generated by cloudinary)
dogelition
2026-01-13 02:14:53
<https://github.com/MishaalRahmanGH/Ultra_HDR_Samples> do these images trigger hdr on android chrome canary for anyone? they work fine on regular chrome for me on android and desktop, and canary desktop too i'm confused, on chrome dev hdr doesn't work either on my phone
veluca
2026-01-13 02:15:07
fwiw conversion to f16 (which HDR uses) is much much slower than it needs to be
dogelition (left is the actual jxl decoded by chromium, right is decoded to png via the wasm decoder)
2026-01-13 02:16:08
that does smell like some RGB and BGR swap somewhere
2026-01-13 02:16:13
what's your OS?
dogelition
2026-01-13 02:16:29
android 15 (hyperos 2)
veluca
2026-01-13 02:16:34
huh
2026-01-13 02:16:44
ok, no idea what that does
whatsurname
dogelition <https://github.com/MishaalRahmanGH/Ultra_HDR_Samples> do these images trigger hdr on android chrome canary for anyone? they work fine on regular chrome for me on android and desktop, and canary desktop too i'm confused, on chrome dev hdr doesn't work either on my phone
2026-01-13 02:21:17
Yeah broken for me on Chrome Canary for Android as well
dogelition
2026-01-13 02:27:31
any idea how i can bisect which build broke hdr images? (without building chromium myself)
whatsurname
2026-01-13 02:28:24
apk mirror ig
jonnyawsom3
AccessViolation_ multithreading would immediately be a big improvement for large images for sure
2026-01-13 02:30:44
I mean so would progressive loading if the overhead wasn't too high. I did wake up with a thought this morning about the difference between Pass and Eager modes Currently libjxl behaves like Pass and Oxide like Eager (I assume), with only the latter rendering ProgressiveDC. What if the LF passes were included in Pass mode too? Possibly for libjxl as well. Eager could still render partial LF scans of each horizontal or vertical step/incomplete data, but then for a 4K image Pass gets 9 half-res steps instead of 3 (Even if I think Eager should be default, especially with progressive AC on the chopping block which would make it 2 passes vs 8) Pass example (7.5%), Eager example (12.2%), currently libjxl only renders LF with 2-3x the data (20%), jxl-rs renders a HF block with 6x the data (48%)
2026-01-13 02:32:49
Here's the test file if people want to mess with <https://google.github.io/attention-center/> and https://jxl-oxide.tirr.dev/demo/index.html
Quackdoc
VcSaJen You need a Firefox extension that modifies "Accept:" header for images, you need to set it to just "image/jxl". Expect a LOT of broken images if you don't accept jpeg/png/gif, tho
2026-01-13 02:34:20
yeah, but there are actual scripts that redirect cdn requests to jxl ones
Magnap
veluca what's your OS?
2026-01-13 02:34:46
Android 15 here too, OxygenOS 15.0, security update from November
Quackdoc
2026-01-13 02:34:55
example https://discord.com/channels/794206087879852103/806898911091753051/1275684586482827330
jonnyawsom3
HCrikki the guardian doesnt serve images with jxl on, could it be an issue with how theyre served? pngs and jpgs identifying as jxl or something (canary7632.0/windows). pretending to be another format is a widespread webdev practice, could be worth checking nintendo.com's images when format is manually set to jxl show properly and are correct (generated by cloudinary)
2026-01-13 02:40:56
I'm getting them but they don't load
Quackdoc
dogelition not familiar with graphics programming at all but RGB/BGR mismatch rings some bells i think, e.g. windows uses BGR ordering as the desktop swapchain format in SDR but RGB in HDR
2026-01-13 02:41:00
dumping surface flinger would prolly tell us
jonnyawsom3
2026-01-13 02:41:04
<https://i.guim.co.uk/img/media/d69b01902eb4ca9d4c0c224c16bf7649949fe362/109_2793_582_465/master/582.jpg?width=220&dpr=1&s=none&crop=5%3A4>
2026-01-13 02:46:13
Huh, <#805722506517807104> missed this one... And the deleted post is still in the channel <https://www.reddit.com/r/jpegxl/comments/1qbcqnp/chromium_has_merged_jpegxl_support/>
_wb_
2026-01-13 02:50:27
Interesting RGB / BGR swap there
2026-01-13 02:52:37
I suppose an endianness issue? one thing sends/expects big-endian RGBA and the other thinks it's little-endian ARGB or whatever
HCrikki
2026-01-13 02:53:49
someone from the guardian is in this discord, perhaps they can chime in (paperboyo?). assuming they serve jxl fine to ios, perhaps its not an issue with the images
Quackdoc
2026-01-13 02:57:24
do we have to enable flags for android?
dogelition
2026-01-13 02:57:32
i had to i think
HCrikki
2026-01-13 02:57:32
yes
dogelition
2026-01-13 02:58:01
tried to set up the chromium bisect script but it says it can't find adb... despite `adb.exe` being on my PATH
HCrikki
2026-01-13 02:58:02
only an Origin Trial force-enables it for a predetermined list of participating websites
jonnyawsom3
<https://i.guim.co.uk/img/media/d69b01902eb4ca9d4c0c224c16bf7649949fe362/109_2793_582_465/master/582.jpg?width=220&dpr=1&s=none&crop=5%3A4>
2026-01-13 02:58:33
The MIME is detected correctly in the network inspector, but maybe it's still going to the wrong decoder
hjanuschka
2026-01-13 03:03:00
guess i found the android fix! trying to launch that damn emulator ๐Ÿ˜„
Quackdoc
2026-01-13 03:03:04
surface flinger only sees rgb layers, no bgr
hjanuschka guess i found the android fix! trying to launch that damn emulator ๐Ÿ˜„
2026-01-13 03:03:33
what was? ~~also this is why I use Waydroid or bliss~~
hjanuschka
2026-01-13 03:04:51
on android skia handles rgba vs bgra differently
Quackdoc
2026-01-13 03:05:59
interesting, I didn't are any bgra layers at all in surface flinger so I guess its an in app issue? in that case I don't see why it would be different... weird
HCrikki
2026-01-13 03:18:49
unrelated but libraw finally shipped 0.22.0 featuring dng1.7 with jxl for real this time
_wb_
2026-01-13 03:26:32
If Chrome is looking for a guinea pig to do an Origin Trial for jxl, I can probably safely say that Cloudinary is still interested
whatsurname
The MIME is detected correctly in the network inspector, but maybe it's still going to the wrong decoder
2026-01-13 03:26:49
I tried the image with jxl_cli, and that's https://github.com/libjxl/jxl-rs/issues/609 So I guess we do need another jxl-rs roll
_wb_
_wb_ If Chrome is looking for a guinea pig to do an Origin Trial for jxl, I can probably safely say that Cloudinary is still interested
2026-01-13 03:29:44
*pending approval my the relevant decision makers at Cloudinary
hjanuschka
2026-01-13 03:31:12
"a guinea pig" made my day โค๏ธ
jonnyawsom3
whatsurname I tried the image with jxl_cli, and that's https://github.com/libjxl/jxl-rs/issues/609 So I guess we do need another jxl-rs roll
2026-01-13 03:32:41
A fresh release would also bring fast lossless more in-line with libjxl
hjanuschka
2026-01-13 03:36:48
ready to roll all day long ๐Ÿค˜
whatsurname
2026-01-13 03:37:54
Also I think it should show the broken image icon instead of just blank when decode failed
dogelition
2026-01-13 03:40:43
can't run the chrome bisect script (for android) on my linux laptop either... somehow that also can't find adb despite it very clearly being on my PATH
Quackdoc
dogelition can't run the chrome bisect script (for android) on my linux laptop either... somehow that also can't find adb despite it very clearly being on my PATH
2026-01-13 03:42:26
finding sed adb with adb.exe?
veluca
2026-01-13 03:43:25
by the way, if someone felt like picking up some of the PRs by lillith it'd be much appreciated ๐Ÿ‘€
Tirr
2026-01-13 03:44:34
maybe I can take some of those if nobody came up until weekend
dogelition
Quackdoc finding sed adb with adb.exe?
2026-01-13 03:50:12
no it just doesn't find any adb executable on either windows or linux. thought windows was broken because it looks for `adb` rather than `adb.exe`but now idk
2026-01-13 03:50:29
did somehow get it to work on my laptop now though, no idea what made the python errors go away
RaveSteel
2026-01-13 03:50:52
what do you get with `which adb`?
dogelition
2026-01-13 03:51:30
i solved it not finding adb and aapt by hardcoding the paths in the scripts already, still had weird python errors after that
2026-01-13 03:51:38
i think somehow uninstalling chromium from previous attempts made it work now?
2026-01-13 03:51:40
idk weird stuff
RaveSteel
2026-01-13 03:51:50
hm, weird indeed
dogelition
2026-01-13 03:52:08
it's definitely working now though, it's giving me some broken and some working builds
paperboyo
HCrikki someone from the guardian is in this discord, perhaps they can chime in (paperboyo?). assuming they serve jxl fine to ios, perhaps its not an issue with the images
2026-01-13 03:59:21
Heya. Yeah, just checked: Thorium and Safari fine, Canary with a flag indeed nope. Accept header is correct (the same), so not sure whatโ€™s going on (progressive options? although jxlinfo doesnโ€™t print and our CDN in control of these, IIRC, they `-progressive_ac: 1 -progressive_dc: 1`, but not sure). Have to run now (still on holidays), but if you determine itโ€™s on us, will try to get help. Also, massive thanks to Helmut and all! HNY.
whatsurname
paperboyo Heya. Yeah, just checked: Thorium and Safari fine, Canary with a flag indeed nope. Accept header is correct (the same), so not sure whatโ€™s going on (progressive options? although jxlinfo doesnโ€™t print and our CDN in control of these, IIRC, they `-progressive_ac: 1 -progressive_dc: 1`, but not sure). Have to run now (still on holidays), but if you determine itโ€™s on us, will try to get help. Also, massive thanks to Helmut and all! HNY.
2026-01-13 04:02:48
See https://discord.com/channels/794206087879852103/803574970180829194/1460656341025554542
dogelition
2026-01-13 04:03:56
bisect (for hdr not triggering on android) gave me this: https://chromium.googlesource.com/chromium/src/+log/45baec6f3e152fa5e8c67fa7a65d69caf57a7d67..dc8611db7fbba200d23580ac1635fe189bf65036
2026-01-13 04:05:15
145.0.7572.0 should be good and 145.0.7573.0 should be bad, will verify that again just to be sure 7572 doesn't work now.... guess i have to bisect again
hjanuschka
Magnap The red one is already working tho, is what I'm saying. It's red as it should be
2026-01-13 04:08:48
android CL: https://chromium-review.googlesource.com/c/chromium/src/+/7459081 - phy. verified ๐Ÿ™‚ lets hope!
2026-01-13 04:09:12
if anyone is crazy enough to use a internet-guy-distributed APK - DM ๐Ÿ™‚
dogelition
2026-01-13 05:00:47
https://issues.chromium.org/issues/475475547
2026-01-13 05:01:02
if anyone here wants to figure out what broke hdr on android
hjanuschka
dogelition if anyone here wants to figure out what broke hdr on android
2026-01-13 05:10:49
ohhhh no - hope this is not because of jxl?
dogelition
2026-01-13 05:11:06
seems unrelated to me but idk
2026-01-13 05:11:42
nothing in the bisect output seems to be related to jxl
2026-01-13 05:12:38
(it does affect jxl hdr images too though)
2026-01-13 05:20:49
still not entirely sure if the bisect output is correct, when i verified it using the build numbers (e.g. `1556473`) it gave me it worked, but using the build versions (e.g. `145.0.7572.0`) just gave me two broken builds and then it errored out
spider-mario
2026-01-13 05:23:29
just looking at the list of commits, https://crrev.com/70e3639b7ac8c7acb5b3479249192ecb47c43771 looks like it could potentially be the culprit
dogelition
2026-01-13 05:25:05
is that `ProtectRecentlyVisibleTab` feature something i can disable?
2026-01-13 05:38:33
i think i passed the flag to disable it but it didn't do anything
2026-01-13 05:38:37
could be this? https://chromium.googlesource.com/chromium/src/+/065eeb23d3188413976d97d380582efd92485f35 it does *something* related to hdr metadata
spider-mario
2026-01-13 06:15:41
oh, yes, could definitely be it
hjanuschka
2026-01-13 06:25:36
is this all googlers here? or is just everyone firm with chrome?
2026-01-13 06:26:11
and btw whenever i stumble into any discord i really feel old! everything blinks๐Ÿคช
lonjil
2026-01-13 06:31:45
lots of googlers in here
2026-01-13 06:32:07
several non-googlers who use chrome
2026-01-13 06:32:16
and a few of us who use firefox :v
jonnyawsom3
2026-01-13 06:33:09
Core devs are mostly Google with Jon from Cloudinary AFAIK, those who worked on the spec/libjxl Devs are users of libjxl in their own applications or creators of other implementations. Oxide, Latte, ect The rest of us are just fans and nerds
2026-01-13 06:37:59
Though now that I mention it, maybe Paperboyo, hjanuschka, me and ahomosapien should have the dev role too? Paperboyo got The Guardian to serve it the past year and the rest of us have made a lot of commits to the repo
whatsurname I just tested https://random-stuff.jakearchibald.com/apps/img-decode-bench/ and JXL is 20x slower than AVIF I wonder if the SIMD feature is not enabled
2026-01-13 07:38:19
Thought I'd give faster decoding a go on a lossless 4K image, even without the fastpaths in a release yet `cjxl -d 0 --faster_decoding 0 (4.247 bpp), 1 (4.260 bpp), 4 (4.735 bpp)`
2026-01-13 07:38:42
Nearly 4x faster, not bad
veluca
2026-01-13 07:46:43
not sure I understood what you compared
paperboyo
Though now that I mention it, maybe Paperboyo, hjanuschka, me and ahomosapien should have the dev role too? Paperboyo got The Guardian to serve it the past year and the rest of us have made a lot of commits to the repo
2026-01-13 07:51:37
Flattered, but Iโ€™m no dev: would barely trust myself with a melody watchโ€ฆ I only make Pussโ€™ eyes to devs. Current status: making Pussโ€™ eyes to JXL devs to get better at low bitrates:
jonnyawsom3
veluca not sure I understood what you compared
2026-01-13 08:04:09
Effort 7 lossless, faster decoding levels 0 (So normal), level 1 and level 4
veluca
2026-01-13 08:05:49
on jxl-rs?
jonnyawsom3
2026-01-13 08:05:58
Yeah, on Chrome Canary
veluca
2026-01-13 08:06:04
ah I see
2026-01-13 08:06:30
that's without fast paths, right?
jonnyawsom3
2026-01-13 08:08:19
Yep, without this PR https://github.com/libjxl/jxl-rs/pull/600
A fresh release would also bring fast lossless more in-line with libjxl
2026-01-13 08:09:08
(I'm assuming it gives similar results as the original closed PR <https://github.com/libjxl/jxl-rs/pull/598>, which those results are from)
Thought I'd give faster decoding a go on a lossless 4K image, even without the fastpaths in a release yet `cjxl -d 0 --faster_decoding 0 (4.247 bpp), 1 (4.260 bpp), 4 (4.735 bpp)`
2026-01-13 08:19:42
PNG was 111ms for comparison, so 5x slower at half the filesize, should hopefully go down to 2x slower or less with the PR
Pheubel
lonjil and a few of us who use firefox :v
2026-01-13 09:08:40
how would i even go about testing this on firefox (when the time comes if it is not here yet). i prefer it over chrome/chromium
HCrikki
2026-01-13 09:14:10
waterfox has complete jxl support on desktop and android (base nightly's with the additional patches). based on libjxl
jonnyawsom3
2026-01-13 09:15:04
https://bugzilla.mozilla.org/show_bug.cgi?id=1986393
_wb_
2026-01-13 09:32:12
The timing on getting jxl in Chrome Canary is impeccable, it is JPEG meeting week this week and the midweek plenary is about to start.
veluca
2026-01-13 09:35:03
haha
_wb_
2026-01-13 09:40:26
2026-01-13 09:41:05
I can confirm the BGR - RGB bug on my Android phone (Motorola edge 60)
hjanuschka
2026-01-13 10:06:44
it's fixed, if you dm me i can send you apk with fix - https://chromium-review.googlesource.com/c/chromium/src/+/7459081 does it!
veluca
_wb_ I can confirm the BGR - RGB bug on my Android phone (Motorola edge 60)
2026-01-13 10:20:13
same on my pixel, fwiw ๐Ÿ˜„
AccessViolation_
_wb_
2026-01-13 10:27:09
I like this example because it's not very obvious something is wrong at first glance. it's just different dice with different colors!
hjanuschka
2026-01-13 10:41:29
and then it is super obviuos and a great showcase of whats wrong too ๐Ÿ™‚
2026-01-13 10:41:35
https://github.com/hjanuschka/chrome-apks/releases/tag/v1.0.0-jxl-android fixed apk
jonnyawsom3
I mean so would progressive loading if the overhead wasn't too high. I did wake up with a thought this morning about the difference between Pass and Eager modes Currently libjxl behaves like Pass and Oxide like Eager (I assume), with only the latter rendering ProgressiveDC. What if the LF passes were included in Pass mode too? Possibly for libjxl as well. Eager could still render partial LF scans of each horizontal or vertical step/incomplete data, but then for a 4K image Pass gets 9 half-res steps instead of 3 (Even if I think Eager should be default, especially with progressive AC on the chopping block which would make it 2 passes vs 8) Pass example (7.5%), Eager example (12.2%), currently libjxl only renders LF with 2-3x the data (20%), jxl-rs renders a HF block with 6x the data (48%)
2026-01-14 01:47:17
Did a very rough test of decode times with resampling to emulate rendering a lower res pass. 19MP/s for full, 54MP/s for 1:8, so I think progressive loading could outweigh any slowdown compared to AVIF normally
Pheubel
2026-01-14 09:04:28
i wonder, since discord is built on electron, which itself is built on chromium, how long would it take for support to bubble upwards once jxl becomes part of stable builds of chromium?
2026-01-14 09:05:54
i can see discord wanting to make an effort to get support for it on the faster side, due to the sheer amount of images being posted
RaveSteel
2026-01-14 09:21:22
They should reopen this issue https://github.com/electron/electron/issues/43993
username
RaveSteel They should reopen this issue https://github.com/electron/electron/issues/43993
2026-01-14 09:35:55
do they even need to do anything for this?
2026-01-14 09:36:39
like I'm trying to see if some code or component of it has a manual list of things recognized as images and I don't see anything
2026-01-14 09:37:23
I think this might be one of those things where they don't care to do anything and also don't have to do anything at the same time
whatsurname
Pheubel i can see discord wanting to make an effort to get support for it on the faster side, due to the sheer amount of images being posted
2026-01-14 09:40:15
Doesn't discord use its own stack for image processing https://discord.com/blog/modern-image-formats-at-discord-supporting-webp-and-avif
username
2026-01-14 09:41:56
support needs to be done on both ends
adap
2026-01-14 10:26:31
Yeah didn't it get added to discord like 4 years or so after it got added to electron/chromium probably gonna be a while
2026-01-14 10:26:38
2026-01-14 10:27:02
if you can even call it support
jonnyawsom3
Pheubel i wonder, since discord is built on electron, which itself is built on chromium, how long would it take for support to bubble upwards once jxl becomes part of stable builds of chromium?
2026-01-14 01:04:49
Assuming nothing breaks, 2 months until the flag is added to Electron. But it'll still be relatively slow to decode
2026-01-14 11:48:42
Interesting <https://www.cast-inc.com/compression/jpeg-image-compression/jpeg-xl-e>
HCrikki
2026-01-15 12:52:43
on chrome, 145 is the upcoming beta, meaning support behind a user-switchable flag could reach stable in as little as 2 weeks
2026-01-15 01:00:24
on origin trials, shopify might be worth poking since they supposedly had the support and images ready for shopify-powered sites since 2022 - pretty diverse selection of high traffic domains sensitive to performance
veluca
Interesting <https://www.cast-inc.com/compression/jpeg-image-compression/jpeg-xl-e>
2026-01-15 01:12:35
wonder what's so different between the Altera and AMD impls
jonnyawsom3
HCrikki on origin trials, shopify might be worth poking since they supposedly had the support and images ready for shopify-powered sites since 2022 - pretty diverse selection of high traffic domains sensitive to performance
2026-01-15 01:14:15
> sensitive to performance Given the SIMD commit and the BGR fix aren't merged, I'd almost say that's a reason trials should wait until the next release. We don't want to enable it for everyone just to get told it's broken
veluca
2026-01-15 01:17:13
my personal guesstimate is that we'll want to wait for 147
2026-01-15 01:17:46
(not because 147 is special, but to optimize things well and not rush too much)
jonnyawsom3
veluca wonder what's so different between the Altera and AMD impls
2026-01-15 01:18:45
As far as I can tell, nothing. The docs are just worded differently to fit their terminology
veluca
2026-01-15 01:19:18
yeah could be that they have a very different "DSP element" that causes the ~1.7x
whatsurname
> sensitive to performance Given the SIMD commit and the BGR fix aren't merged, I'd almost say that's a reason trials should wait until the next release. We don't want to enable it for everyone just to get told it's broken
2026-01-15 02:27:16
Maybe they can be cherry-picked to 145 once merged Chromium allows "Non-functional issues for Finch-gated features" to be merged in beta, I'm not sure if those meet the criteria
2026-01-15 02:39:04
Actually it's already requested https://issues.chromium.org/issues/475899040
jonnyawsom3
2026-01-15 03:24:04
Ah good
hjanuschka
2026-01-15 07:47:24
i bet that all 2 merge requests will make it ๐Ÿ™‚ - simd is still in review! (but i'd try to merge that too; not sure though if that would qualify)
5peak
hjanuschka i bet that all 2 merge requests will make it ๐Ÿ™‚ - simd is still in review! (but i'd try to merge that too; not sure though if that would qualify)
2026-01-15 11:09:22
Dankeschรถn.
hjanuschka
2026-01-15 01:55:03
anyone is having a idea about the firefox status? the phabricator UI is crazy my mind explodes while trying to understand whats the current state ๐Ÿ˜„
username
2026-01-15 01:59:57
I think the patches for adding in jxl-rs are waiting to be reviewed
2026-01-15 02:00:50
as for the current libjxl implementation in the codebase it's completely abandoned and they will not accept patches for it
2026-01-15 02:02:42
a few hours ago some of patches related to the jxl-rs implementation where marked as "obsolete" which I'm not entirely sure the purpose of
veluca
2026-01-15 02:06:43
I think that's because updated patches were uploaded
username
2026-01-15 02:11:13
ah yeah that seems like what's happening
jonnyawsom3
2026-01-16 04:56:53
Could just be my weak CPU, but on Canary I can see the animation at the bottom hangs for a frame whenever it loops, making it slowly drift out of sync with the others <https://jpegxl.info/resources/jpeg-xl-test-page.html>
2026-01-16 04:59:05
whatsurname
2026-01-16 06:57:03
https://jsfiddle.net/z78kunc3/ This is more noticeable
adap
Could just be my weak CPU, but on Canary I can see the animation at the bottom hangs for a frame whenever it loops, making it slowly drift out of sync with the others <https://jpegxl.info/resources/jpeg-xl-test-page.html>
2026-01-16 07:04:06
I noticed that too on my m4 mac
2026-01-16 07:04:39
so i doubt it's a cpu issue
hjanuschka
2026-01-16 07:09:45
we have a change open, that enables simd stuff in rust, current canary is without, i think it is the main reason
2026-01-16 07:12:00
<@238552565619359744> is it also drifting when you directly only, open https://jpegxl.info/images/anim-icos.jxl in a tab?
2026-01-16 07:12:41
and with drifting, you mean it drifts away from webp, apng and gif? for me they all are not 100% in sync
dormosaurus
2026-01-16 08:36:23
<@623776984987729940> I don't think it's rust version specific, I have the syncing issue with the abandoned libjxl patch as well
hjanuschka
2026-01-16 09:00:37
animation is crazy or atleast its driving me crazy (or it drove?) ๐Ÿ™ https://github.com/chromium/chromium/blob/main/third_party/blink/web_tests/images/resources/5_frames_numbered.jxl that is a great test file 5 frames counting numbers with stable duration
whatsurname
2026-01-16 09:22:45
Left: 145.0.7632.0 Right: 146.0.7637.0
2026-01-16 09:24:40
The animation issue still persists though
hjanuschka
2026-01-16 09:43:43
simd! ๐Ÿ™‚ animations ๐Ÿ™
veluca
2026-01-16 09:44:32
3x speedup, not bad
2026-01-16 09:44:38
(was hoping for more :P)
hjanuschka
2026-01-16 09:44:58
should we try to merge request into 145?
5peak
hjanuschka animation is crazy or atleast its driving me crazy (or it drove?) ๐Ÿ™ https://github.com/chromium/chromium/blob/main/third_party/blink/web_tests/images/resources/5_frames_numbered.jxl that is a great test file 5 frames counting numbers with stable duration
2026-01-16 09:45:31
SYN+ACK
username
2026-01-16 09:45:59
doesn't chromium do ""LTS"" releases every other release? in this case is 145 or 146 considered an LTS release?
2026-01-16 09:46:35
if 145 is considered LTS then yeah it might be worth it to try and get SMID pushed to it
hjanuschka
2026-01-16 09:47:40
any doc/reference where it says that 145 will be LTS?
2026-01-16 09:47:46
would be a great line for the merge request
username
2026-01-16 09:48:24
ah I just checked and it seems like 145 is not considered an LTS release: https://chromiumdash.appspot.com/schedule EDIT: I guess they call them "Extended Support" releases which makes more sense then "LTS" since it's not really long term
hjanuschka
2026-01-16 09:48:44
still going to try it, worst case it's rejected
2026-01-16 09:49:22
will upload your performance screenshot
whatsurname
2026-01-16 10:01:22
That's on x64 (Windows) btw, if any one want to test the improvement on arm can use the following link https://storage.googleapis.com/chrome-for-testing-public/146.0.7637.0/mac-arm64/chrome-mac-arm64.zip
hjanuschka
2026-01-16 10:03:32
TIL arm64 builds! does it include widvine and is a release build? ๐Ÿ˜„
whatsurname
2026-01-16 10:04:42
It's from https://googlechromelabs.github.io/chrome-for-testing/#canary the page is not updated yet but it's already built
veluca
2026-01-16 10:08:11
I don't think it's too important to merge the speedup, fwiw
2026-01-16 10:08:15
it's not broken, at least
hjanuschka
2026-01-16 10:17:47
think i found the drifting, will give it a try
2026-01-16 10:51:16
anyone with drifts, able to run a CL locally? ( https://chromium-review.googlesource.com/c/chromium/src/+/7484708 )
2026-01-16 10:52:00
works on my machine, but my machine runs in the cloud via crd, and always works, or lag's - that's why i might have missed it (or because i am not one of you math folks) ๐Ÿ˜„
whatsurname
hjanuschka anyone with drifts, able to run a CL locally? ( https://chromium-review.googlesource.com/c/chromium/src/+/7484708 )
2026-01-16 11:45:26
I don't think it's due to precision tho, you can tell the duration of 2 is very short
2026-01-16 11:54:32
Oops, it seems the screen recording messed it up
2026-01-16 12:16:58
So I measured the time, for some reason 2 only last 100ms while other frames last 500ms
veluca
2026-01-16 12:20:07
Intriguing
dogelition
dogelition yep that's definitely working, including hdr, awesome no idea if this is even supposed to be a supported use case for jxl in "normal" viewers, but i noticed that a jxl converted 1:1 from jxr (hdr using linear half float srgb, with (1,1,1) = 80 nits white) is not displayed as hdr in chrome. it does work when importing into krita though jxlinfo for reference: ``` JPEG XL file format container (ISO/IEC 18181-2) JPEG XL image, 3840x2160, (possibly) lossless, 16-bit float (5 exponent bits) RGB+Alpha intensity_target: 80.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, sRGB primaries, Linear transfer function, rendering intent: Relative ``` i assume the issue there is that there's no indication for the maximum luminance in the image, so it's hard to tell if it's even supposed to be hdr or not.
2026-01-16 12:28:21
<@604964375924834314> do you have any thoughts on whether linear hdr like ^ is expected to work?
spider-mario
2026-01-16 12:30:59
I tried to make it work some time ago but with the way Chromeโ€™s pipeline worked, at least at the time, I couldnโ€™t find a way to make it work satisfactorily on both Windows and macOS
2026-01-16 12:31:07
but I donโ€™t remember the details
2026-01-16 12:33:41
ah, some WIP here https://crrev.com/c/3483826
2026-01-16 12:33:45
as you can see, it was a while ago
whatsurname
whatsurname So I measured the time, for some reason 2 only last 100ms while other frames last 500ms
2026-01-16 12:38:45
I think I found why it's 100ms https://issues.chromium.org/issues/41015120#comment7 The decoder probably returned 0 for that frame
2026-01-16 12:44:30
This also explains the shift of the other image, which has a < 100ms duration, so 100ms will make it look slower instead of faster
veluca
2026-01-16 12:47:28
can you check that with jxl-rs directly?
whatsurname
2026-01-16 01:09:45
Interesting, I got 33.33 ms duration for the first frame (rest are correct) using jxl_cli (decode to APNG)
veluca
2026-01-16 01:42:40
... surprising
hjanuschka
2026-01-16 02:05:55
think i found it!
whatsurname
veluca can you check that with jxl-rs directly?
2026-01-16 02:06:36
After looking into it I think jxl-rs correctly decoded the duration, just didn't write the first frame's duration to APNG [`set_frame_delay`](https://github.com/libjxl/jxl-rs/blob/7c74207e5cff878951f9fd3648d293a19291a607/jxl_cli/src/enc/png.rs#L209) should be called before `write_image_data` And the 33.33ms I got is clamped by ffmpeg
hjanuschka
2026-01-16 02:06:40
anyone wanna try the CL again?
2026-01-16 02:07:07
(gonna put, jxl-animation-survivor on my linkedin; once its actually working!)
2026-01-16 02:07:35
https://chromium-review.googlesource.com/c/chromium/src/+/7484708
2026-01-16 02:07:50
if it works, i am polishing it ๐Ÿ˜„
2026-01-16 02:08:06
would be nice, if a non-remote-desktop person could test it
RaveSteel
2026-01-16 02:08:25
If only the compile didn't take an hour every time
hjanuschka
2026-01-16 02:09:12
https://tenor.com/view/troopers-responsible-helpful-doing-my-part-gif-11496062726020391529
2026-01-16 02:09:13
bug1: Duration precision loss bug2: FrameDurationAtIndex() was reading from wrong source bug3: Frame durations not available when animation controller requested them
veluca
whatsurname After looking into it I think jxl-rs correctly decoded the duration, just didn't write the first frame's duration to APNG [`set_frame_delay`](https://github.com/libjxl/jxl-rs/blob/7c74207e5cff878951f9fd3648d293a19291a607/jxl_cli/src/enc/png.rs#L209) should be called before `write_image_data` And the 33.33ms I got is clamped by ffmpeg
2026-01-16 02:49:55
can you file an issue or ideally send a PR? ๐Ÿ˜„
whatsurname
2026-01-16 02:54:58
Sure, I'll try this weekend
veluca
2026-01-16 03:21:29
thank you ๐Ÿ™‚
Quackdoc
2026-01-16 04:02:54
whats the best way to test canary on arch? Ideally I don't want to compile but will if I have to, appimage or flatpak would be more ideal
2026-01-16 04:50:57
interesting that cloudinary defaults to webp instead of avif if avif is missing from accept header, is this a client config issue?
jonnyawsom3
veluca (was hoping for more :P)
2026-01-16 04:51:55
I'll rerun my faster decoding tests later, might do a bit better
TheBigBadBoy - ๐™ธ๐š›
Quackdoc whats the best way to test canary on arch? Ideally I don't want to compile but will if I have to, appimage or flatpak would be more ideal
2026-01-16 05:12:03
https://www.google.com/intl/en/chrome/canary/?platform=linux only .deb or .rpm packages, but many things on the AUR are .deb so it should be good to use
2026-01-16 05:12:37
(not chromium I know but at least you don't need to compile)
2026-01-16 05:12:56
oh wait, there's `google-chrome-canary` on the AUR, which uses the .deb package which has version 146.0.7637.0-1
hjanuschka
2026-01-16 06:52:51
here is canary (my local) build including the animation fixes and all the jxl stuff (android RGB): https://github.com/hjanuschka/chrome-apks/releases/tag/jxl-animation-fix-test if you feel comfortable running internet-guy's binaries, i am happy to hear if all is good now (drifting, colors on android)
2026-01-16 06:53:07
those are static binaries, should work on all (almost) linux's
2026-01-16 06:57:48
about canary, it might be outdated, as my HEAD is different, but it has ALL latest JXL work
2026-01-16 06:57:58
arm64: no netflix and chill, it does not come with widvine
Quackdoc
2026-01-16 06:59:49
~~this is where I pester about riscv builds obviously~~ I have no qualms running the linux builds and android builds in waydroid
2026-01-16 07:01:07
oh I need to re-init it
2026-01-16 07:05:16
all looks good on desktop
hjanuschka
2026-01-16 07:13:35
hooray! thanks for testing!
Quackdoc
2026-01-16 07:15:54
hmmm,. thats weird, this build isn't working in waydroid for me, maybe it's incompatible with libndk? odd issue
hjanuschka
2026-01-16 07:17:48
never used waidroid tbh
Quackdoc
2026-01-16 07:18:11
really odd, ill play around with this
hjanuschka never used waidroid tbh
2026-01-16 07:18:40
it's a bliss labs project to run android in a LXC container with wayland windowing, kinda akin to chromeOS
2026-01-16 07:18:59
only supports linux
AccessViolation_
Quackdoc really odd, ill play around with this
2026-01-16 07:20:01
hm try the full url?
2026-01-16 07:20:07
including https://
2026-01-16 07:20:29
I've had this happen in ungoogled chromium
Quackdoc
2026-01-16 07:20:34
no urls working at all, first ive seen of this issue, im assuming its an emulation error but it's not working on libhoudini or libndk
AccessViolation_
2026-01-16 07:20:59
oh wait that's a tab crash not a network error yea
Quackdoc
2026-01-16 07:21:01
not even chrome://flags works lmao
2026-01-16 07:21:27
its working fine on my phone tho so its all fine
hjanuschka hooray! thanks for testing!
2026-01-16 07:22:09
works fine on my LOS android phone ๐Ÿ‘
username
Quackdoc all looks good on desktop
2026-01-16 07:33:11
did you specifically test for the animation timing/sync issue? that's mainly what these builds are for AFAIK
Quackdoc
2026-01-16 07:40:08
the animation looked fine but are there many other sites to test?
hjanuschka
2026-01-16 07:58:28
thanks, and also the https://jpegxl.info/resources/jpeg-xl-test-page.html dice has correct colors ๐Ÿ™‚
2026-01-16 07:58:35
(think thats confirmed, but asking anyway)
jonnyawsom3
veluca 3x speedup, not bad
2026-01-16 08:04:14
Currently doing a more in-depth benchmark before updating Canary with the SIMD fix, hoping to see some higher improvements with a wider test set
hjanuschka
2026-01-16 08:07:23
thank you <@238552565619359744>
2026-01-16 08:07:29
really excited!
Quackdoc
hjanuschka (think thats confirmed, but asking anyway)
2026-01-16 08:17:56
yeah it does have correct colors for me
jonnyawsom3
hjanuschka really excited!
2026-01-16 08:20:09
Hmm, not quite as exciting as I hoped, but still 20% faster for lossless, 2x faster for lossy and 6x faster for upsampling. Not bad for a decade old CPU
hjanuschka
2026-01-16 08:20:50
not yet sure what we are aiming for, but its an improvement ๐Ÿ˜„
2026-01-16 08:20:55
still excited
Tirr
2026-01-16 08:21:41
simd tends to help vardct a lot, dct algorithm is heavily simdified
jonnyawsom3
2026-01-16 08:21:58
Forgot to add the progressive AC command (Also damn Discord lags when I type)
Tirr
2026-01-16 08:25:27
progressive lossless will also show the difference I think
hjanuschka
2026-01-16 08:28:49
and there is still some optimizations in main that are not yet rolled into chrome: https://github.com/libjxl/jxl-rs/compare/v0.2.2...main
jonnyawsom3
Tirr progressive lossless will also show the difference I think
2026-01-16 08:33:09
Not sure how I forgot that... Third time's the charm, now with the image resolution and the after result for progressive lossless
hjanuschka and there is still some optimizations in main that are not yet rolled into chrome: https://github.com/libjxl/jxl-rs/compare/v0.2.2...main
2026-01-16 08:43:20
Good point, with the fast path commits merged lossless should be around 2x faster than lossy (I think...)
HCrikki
Quackdoc whats the best way to test canary on arch? Ideally I don't want to compile but will if I have to, appimage or flatpak would be more ideal
2026-01-16 09:05:18
https://googlechromelabs.github.io/chrome-for-testing/#canary
2026-01-16 09:05:50
no autoupdating, handy for testing or comparing multiple specific versions
Quackdoc
hjanuschka here is canary (my local) build including the animation fixes and all the jxl stuff (android RGB): https://github.com/hjanuschka/chrome-apks/releases/tag/jxl-animation-fix-test if you feel comfortable running internet-guy's binaries, i am happy to hear if all is good now (drifting, colors on android)
2026-01-16 09:56:52
recording of this builds
2026-01-16 09:58:54
taskset to 1 thread also seems fine
jonnyawsom3
2026-01-16 10:19:14
Weird that GIF was out of sync for you, but looks fixed
Quackdoc
2026-01-16 10:37:28
yeah
jonnyawsom3
Tirr progressive lossless will also show the difference I think
2026-01-16 11:41:15
Did a quick test, for now it's still 14% slower than Oxide and libjxl, sitting between normal lossless and FD1. Progressive plus FD4 puts it between FD3 and FD4 (With pending commits) around 30% slower than libjxl and 53% slower than Oxide Very rough testing showed the decode time increase by 100ms per 10% of a 4K file loaded, so the earliest progressive steps would also be the cheapest to render, slowing down as the passes get slower to load too
veluca
2026-01-16 11:56:27
could I ask you for a summary of memory usage / speed of libjxl/oxide/rs for a bunch of relatively common files? ๐Ÿ˜„
jonnyawsom3
veluca could I ask you for a summary of memory usage / speed of libjxl/oxide/rs for a bunch of relatively common files? ๐Ÿ˜„
2026-01-17 12:18:09
That depends on what counts as 'relatively common'
Not sure how I forgot that... Third time's the charm, now with the image resolution and the after result for progressive lossless
2026-01-17 12:18:41
I could run those same files again as a start
veluca
2026-01-17 12:20:42
yeah that'd be a good start
whatsurname
whatsurname Left: 145.0.7632.0 Right: 146.0.7637.0
2026-01-17 03:00:19
The speedup of neon is a bit smaller than avx2, got ~2.5x
SEO-Master1337
2026-01-17 04:23:20
YOOOOOOOOOOOOOOOOOOOOOOOOO Latest version of Chrome Canary has a feature flag to enable JXL image format to the accept header and enables decoding ๐Ÿš€
2026-01-17 04:23:54
Shit am I late? hahaha
A homosapien
2026-01-17 04:27:24
welcome to the party
Jarek Duda
2026-01-17 05:01:36
also works in beta, release on 28th: https://chromestatus.com/roadmap
jonnyawsom3
veluca yeah that'd be a good start
2026-01-17 06:24:41
A bit late, but hopefully this helps. Can add more later
hjanuschka
Quackdoc recording of this builds
2026-01-17 06:49:25
yes looks fixed! CL is landing
jonnyawsom3
2026-01-17 07:13:58
Oh neat <https://docs.cloud.google.com/release-notes#December_22_2025>
veluca
A bit late, but hopefully this helps. Can add more later
2026-01-17 08:27:30
Looks like more work is still needed ๐Ÿคฃ I'm surprised jxl-rs always uses more memory (if I read this right), but I guess it's good because it means there's more room for speedups
2026-01-17 08:33:49
also very curious how jxl-oxide uses so little memory sometimes ๐Ÿ˜„ <@206628065147748352> ?
Tirr
2026-01-17 09:16:00
I guess it's i16 buffers, not sure
2026-01-17 09:16:56
jxl-oxide never allocates i32 buffers (even for final output) when it's possible
veluca
2026-01-17 09:42:35
yeah that would do it
jonnyawsom3
2026-01-17 06:20:24
I did consider setting djxl to output 8bit, but I thought it'd be more fair to leave it on default to match jxl-rs
2026-01-17 06:34:05
Oh, also in a quick test I tried using --high-precision and it was actually a little bit faster than default
veluca
I did consider setting djxl to output 8bit, but I thought it'd be more fair to leave it on default to match jxl-rs
2026-01-17 07:10:12
do set it to 8 bits
2026-01-17 07:10:18
(or 16 for hdr)
jonnyawsom3
2026-01-17 07:16:33
Both djxl and jxl-rs I assume?
veluca
2026-01-17 07:17:01
djxl at least, jxl-rs is not very good at outputing non-f32 yet xD
2026-01-17 07:17:05
(but it will be)
username
2026-01-17 10:32:55
speaking of jxl-rs, what's the current planned priority list between progressive decoding, multithreading, and low memory buffers? I'm just curious as to what we can maybe expect being done first and such between those 3 main things.
veluca
2026-01-17 10:40:24
I am working on a somewhat big change to the low memory pipeline
2026-01-17 10:40:33
which should reduce memory usage significantly
Quackdoc
2026-01-17 10:46:53
YAY
2026-01-17 10:47:13
memory usage is one of my biggest issues with jxl ecosystem rn
veluca
2026-01-17 10:53:59
then at some point I might also do the f16 thingy
2026-01-17 10:54:09
but we'll see when
jonnyawsom3
veluca djxl at least, jxl-rs is not very good at outputing non-f32 yet xD
2026-01-17 10:57:01
Here ya go djxl, djxl set to 8-bit, Oxide and jxl-rs with PeakWorkingSetSize next to MP/s
veluca
2026-01-17 10:57:26
is that on windows?
jonnyawsom3
2026-01-17 10:58:28
Yeah
veluca
2026-01-17 11:01:09
good to know, thanks ๐Ÿ™‚
jonnyawsom3
hjanuschka yes looks fixed! CL is landing
2026-01-18 12:13:04
Just tried it in Canary, works fine now after playing for a few minutes
hjanuschka
2026-01-18 12:40:20
really appreciate the confirmation!!
whatsurname
whatsurname Also I think it should show the broken image icon instead of just blank when decode failed
2026-01-18 02:43:50
Hmm, it seems this is also fixed in 7640 but I don't know why
_wb_
2026-01-18 11:28:23
https://www.shikino.co.jp/eng/products/product-ip_core_products_1.php They updated their website with some more info on the jxl hw encoder
jonnyawsom3
2026-01-18 08:55:05
Inteeeresting, the q100 comparison is a bit vague, since they make lossless JPEG encoders too but the JXL core is lossy only. Smaller encoder size is great though
2026-01-18 09:03:56
For now, thanks to the required buffering https://discord.com/channels/794206087879852103/794206170445119489/1460988956320596090, the HW encodes should actually be more progressive than libjxl's default (Test encode of `cjxl` vs `libjxl-tiny`)
Lumen
2026-01-19 09:10:29
my god....
2026-01-19 09:10:47
people really don't know how to measure differences between codecs, pretty sure they just did -q {quality} and measured the resulting size
veluca
2026-01-19 09:30:49
happens a lot
2026-01-19 09:31:35
with cjxl and jpeg it's not *too* stupid though, the q flag is tuned to give roughly the same quality as the corresponding libjpeg-turbo flag or better
jonnyawsom3
2026-01-19 09:33:08
Not sure what q100 did for JXL though, since it can't be lossless
2026-01-19 09:34:47
And well... It used to be tuned, the distance/real quality has drifted with all the encoder tweaks since v0.8, usually undershooting or overshooting 90 SSIMU2
monad
2026-01-19 11:24:19
since v0.1
_wb_
2026-01-19 11:26:46
no idea what they did there, pretty sure that this "Quality" scale is just some internal parameter of their hw encoders, which probably has little to do with the scale used in e.g. libjpeg-turbo or libjxl. They probably made q100 whatever the highest lossy quality is they can still do in their fixedpoint implementation of jxl without running into precision/overflow issues (which I think would be something like libjxl-tiny d0.05), while in jpeg it's probably just quant tables that are all 1s.
username
2026-01-19 11:31:19
do we have any files/examples from the output of their chips? I know it's *based* on libjxl-tiny but it would be nice to have actual real output(s) to inspect and mess around with
_wb_
2026-01-19 11:45:20
yeah, no, I don't have any actual bitstreams from them. If someone has an FPGA available and wants to do some testing, probably it shouldn't be too expensive to get a license from them for just a single instantiation of their codec for evaluation purposes. Though these hw design companies are pretty secretive and may not be interested in letting folks test their stuff; they want to sell this thing to camera/phone manufacturers and other companies that produce devices that may want to have a jxl encoder.
AccessViolation_
2026-01-19 11:47:09
could probably just reach out to them for some sample files ๐Ÿ™‚
Lumen
2026-01-19 12:15:02
I do have an FPGA, but I don't know enough how to use it yet-
runr855
2026-01-19 07:39:30
Am I misunderstanding the BSD-3-Clause license which both libjxl and jxl-rs use? Affinity and Chrome Canary do not have the license notice included for the respective libraries in their distributions
HCrikki
2026-01-21 04:45:24
potential adoption for upcoming epub 3.4 spec. Anything useful to them to know before their WG call, link below
2026-01-21 04:45:26
https://github.com/w3c/epub-specs/issues/2896
2026-01-21 04:49:52
on an aside, epub ebooks are mostly consumed on software that will also read pdfs, so it would be jxl-capable regardless of wether epub spec is updated to standardize its use. in-browser decoding is trending up so browser adoption of jxl could help
2026-01-21 04:52:32
enabling the possibility for existing epubs using jpgs to be *losslessly* converted to a newer revision would be big imo. generation loss there is bad since conversions from the og source tend to sacrifice even more quality to shrink filesize, especially from other ebook formats
chocolatkey
HCrikki enabling the possibility for existing epubs using jpgs to be *losslessly* converted to a newer revision would be big imo. generation loss there is bad since conversions from the og source tend to sacrifice even more quality to shrink filesize, especially from other ebook formats
2026-01-21 11:00:31
Yes this is my personal goal with JXL in EPUBs, because there are millions of EPUBs already out there with jpeg, especially comics/manga, with mediocre jpeg quality levels. losslessly converting to JXL is about the only way possible to further optimize those files, and youโ€™re never going to be able to go back and get a better release from the publisher
2026-01-21 11:02:01
Since ereaders wonโ€™t support jxl for years, my first goal is on-the-fly re-encoding to JXL before serving to โ€œstreamingโ€ clients like web browsers
jonnyawsom3
2026-01-21 11:44:04
I left a comment raising those points, hopefully it helps
chocolatkey
2026-01-22 01:02:19
Yep every comment helps. I'll try my best on the ebook production side and streaming code, though realistically it will take many years before it becomes mainstream
HCrikki
2026-01-22 03:51:42
WG discussed, transcript in issue. to be honest, webp didnt make sense. *jpegli* wouldve significantly improved the use of the original jpeg, even pdfa recommended vendors upgrade their jpeg codecs since itll still be a popular image format for maximum backward compatibility even for ebooks created in newer pdf specs
2026-01-22 03:55:07
a transition to newer spec revisions doesnt require use of newer image formats or fallbacks, just swapping or upgrading core libraries is already an improvement
2026-01-22 04:01:56
japan is interesting cuz jxl had almost 34% support on mobile there from just iphones/ipads. Any examples of legacy devices or web services in use there? I thought vendors offered multiple formats for ebooks to cover all bases
hjanuschka
2026-01-22 04:38:14
is there anyone from akamai in this discord or the jxl wg? part of the reasons i want first class chrome support is to get my company to use it and reduce bandwidth. but we are basically using akamai image manager ๐Ÿ˜“ which is a great thing but misses jxl support - would love to talk/work on getting it into akamai. my contacts(support) are just too far away from the product
2026-01-22 04:38:30
so if anyone knows someone - send them my way please!
jonnyawsom3
2026-01-22 04:40:38
Isn't Akami the same one Steam uses? I'm fairly sure it's a reason they haven't updated formats too
_wb_
2026-01-22 05:08:47
Cloudinary uses Akamai (amongst other cdns) to do the actual delivery. It is a bit complicated how Cloudinary is at the same time a big customer of Akamai and also a competitor with its image manager product.
hjanuschka
2026-01-22 06:30:49
we are largest austrian (or second; maybe redbull is larger) customer of akamai, yet i failed 2 times getting them to take a serious look at jxl (but as before; the contacts we have are at the wrong level i guess). trying to get others from the publishing industry to "ask" too. as it would be super beneficial in terms of bandwidth reduction.
Quackdoc
2026-01-22 06:35:35
~~sounds like it's time for a good old spam campaign~~
veluca
2026-01-22 07:43:16
<@623776984987729940> switch to cloudinary? ๐Ÿ˜›
hjanuschka
2026-01-22 07:43:47
thought of it, but well that akamai contract is not easy to get out or to change!
2026-01-22 07:44:22
wonder if we could do a origin trial, using cloudinary, in case of JXL enabled, but we use a few features from image manager, where i am not yet sure how to port to cloudinary
2026-01-22 07:45:00
we need to make akamai support it, that would be a huge upllift in the industry!
monad
Isn't Akami the same one Steam uses? I'm fairly sure it's a reason they haven't updated formats too
2026-01-22 08:17:43
Steam is using Fastly recently and delivering AVIF in many places instead of prior PNG assets. They also used Cloudflare, but I do not remember format changes at that time.
jonnyawsom3
2026-01-22 08:19:12
Well that's good news for <#1284444511375855667> https://www.fastly.com/blog/level-up-your-images-jpeg-xl-now-supported-by-image-optimizer
AccessViolation_
2026-01-22 08:34:12
those graphs look so messy...
NovaZone
Well that's good news for <#1284444511375855667> https://www.fastly.com/blog/level-up-your-images-jpeg-xl-now-supported-by-image-optimizer
2026-01-23 12:31:10
```For JPEG XL images, we use encoding effort 3 and 4 threads. For AVIF images, we use chroma subsampling (422) to achieve smaller image sizes.```
2026-01-23 12:31:24
Riiight, moving on kek
HCrikki
2026-01-23 08:17:18
draft up for epub 3.4 with jxl as a proposed core media type
2026-01-23 08:20:35
anything worth mentioning on the subject? I noticed its rare for sources and stores to mention epub versions but I suppose adoption of newer revisions lags anyway so it wouldnt be an issue
2026-01-23 08:25:09
for context on japan. it produces and sells a *ton* of light novels and it seems epub suited that market better since reflowable and features relatively few images (handy to consume on web, within official apps and on e-readers)
AccessViolation_
NovaZone ```For JPEG XL images, we use encoding effort 3 and 4 threads. For AVIF images, we use chroma subsampling (422) to achieve smaller image sizes.```
2026-01-23 08:26:20
to be fair, with the sheer amount of images they handle, encoding compute adds up quickly
2026-01-23 08:27:15
I'm guessing effort 3 was an economical choice, balancing encoding compute costs and image transmission bandwidth costs to be the cheapest, everything considered
2026-01-23 08:30:27
I assume there's a small percentage of images that gets a large percentage of views, so they might want to spend more encode compute on those popular images to further optimize total costs
jonnyawsom3
HCrikki draft up for epub 3.4 with jxl as a proposed core media type
2026-01-23 08:34:00
https://github.com/w3c/epub-specs/pull/2899
AccessViolation_ I'm guessing effort 3 was an economical choice, balancing encoding compute costs and image transmission bandwidth costs to be the cheapest, everything considered
2026-01-23 08:50:58
Effort 3 is essentially just XYB JPEG though, only Effort 5 actually uses adaptive quantization and VarDCT
AccessViolation_
2026-01-23 08:52:10
I thought that's what effort 1 was
hjanuschka
2026-01-23 08:54:35
jxl-rs v0.3 is in current canary
_wb_
2026-01-23 08:56:01
nice, mostly speed improvements I suppose?
hjanuschka
2026-01-23 08:56:05
yes
2026-01-23 08:56:24
hate discord, trying to find the benchmark website thing that did the 60 iterations ๐Ÿ™
2026-01-23 08:56:31
but search here is basically broken
_wb_
2026-01-23 08:56:34
What's the status regarding progressive decode? currently it looks like we only have full group rendering? https://google.github.io/attention-center/
jonnyawsom3
AccessViolation_ I thought that's what effort 1 was
2026-01-23 08:57:13
That's because it is, though the idea of implementing libjxl-tiny as effort 2/3 has been brought up before
_wb_ What's the status regarding progressive decode? currently it looks like we only have full group rendering? https://google.github.io/attention-center/
2026-01-23 08:57:57
Yeah, only finished groups work currently https://discord.com/channels/794206087879852103/803574970180829194/1460625531710996591
_wb_
2026-01-23 08:59:15
what's preventing showing at least the LF when it's available?
2026-01-23 09:01:57
(I'd personally also like to see even earlier previews of LF frames that are still incomplete, since then we can show something like a 1:16 or 1:32 image very early and clearly be better than progressive jpeg; with just a first render at complete LF we don't really beat progressive jpeg)
Tirr
2026-01-23 09:03:41
iiuc it waits until all dependencies are available for the region, but maybe <@179701849576833024> knows better
HCrikki
2026-01-23 09:04:19
guardian displays all jxls correctly in chromium canary 146.0.7651.0 so far <@810102077895344159>
jonnyawsom3
hjanuschka hate discord, trying to find the benchmark website thing that did the 60 iterations ๐Ÿ™
2026-01-23 09:04:23
Here ya go, it was in <#822105409312653333> <https://random-stuff.jakearchibald.com/apps/img-decode-bench/>
hjanuschka
2026-01-23 09:04:29
thanks ๐Ÿ™‚
2026-01-23 09:04:33
gonna bookmark this time
_wb_
2026-01-23 09:10:20
fox.jxl: Iterations: 50 Mean: 79.00ms Median: 77.65ms Std Dev: 6.68ms Min: 73.50ms Max: 111.10ms Total Time: 3950.20ms fox.avif: Iterations: 181 Mean: 11.08ms Median: 11.00ms Std Dev: 0.63ms Min: 10.30ms Max: 16.60ms Total Time: 2004.80ms
HCrikki
2026-01-23 09:10:42
unreleated, but chromium has an odd save behaviour for images pretending to be jpg. right click save=jxl but ctrl+S=jpg
_wb_
_wb_ I'm not sure how Jake's benchmark works exactly, it says 150ms for fox.jxl vs 11 to 12ms for fox.avif
2026-01-23 09:11:36
I got 150ms for fox.jxl last week so it's twice as fast now for me.
jonnyawsom3
_wb_ (I'd personally also like to see even earlier previews of LF frames that are still incomplete, since then we can show something like a 1:16 or 1:32 image very early and clearly be better than progressive jpeg; with just a first render at complete LF we don't really beat progressive jpeg)
2026-01-23 09:15:49
It'd be cool to finally see it live in action, and would help hide any decode speed issues we still have since rendering seemed 'free' in my tests (Using Helmut's [jxl-ui](https://github.com/hjanuschka/jxl-ui)) More importantly though, it would make progressive lossless images functional. Right now they only work with jxl-oxide, and I think only the WASM demo uses it's progressive decoding AFAIK
VcSaJen
2026-01-23 09:17:37
Mozilla said it would only accept "performant" decoder for Firefox, what are the exact requirements? Is 7 times slower than AVIF acceptable to them?
It'd be cool to finally see it live in action, and would help hide any decode speed issues we still have since rendering seemed 'free' in my tests (Using Helmut's [jxl-ui](https://github.com/hjanuschka/jxl-ui)) More importantly though, it would make progressive lossless images functional. Right now they only work with jxl-oxide, and I think only the WASM demo uses it's progressive decoding AFAIK
2026-01-23 09:20:23
I assumed that if picture is loaded too fast browser does not bother with progressive, and prolonged decode time for hi-res images does not trigger rendering progressive steps if image is already loaded. Is my thinking wrong?
hjanuschka
It'd be cool to finally see it live in action, and would help hide any decode speed issues we still have since rendering seemed 'free' in my tests (Using Helmut's [jxl-ui](https://github.com/hjanuschka/jxl-ui)) More importantly though, it would make progressive lossless images functional. Right now they only work with jxl-oxide, and I think only the WASM demo uses it's progressive decoding AFAIK
2026-01-23 09:25:25
๐Ÿ˜ฑ just keep in mind jxl-ui is a fun thing! dont take anything there serious
jonnyawsom3
VcSaJen I assumed that if picture is loaded too fast browser does not bother with progressive, and prolonged decode time for hi-res images does not trigger rendering progressive steps if image is already loaded. Is my thinking wrong?
2026-01-23 09:26:22
Hence hiding the issue, it's a lot more responsive to get a preview instantly than block by block or nothing at all
whatsurname
HCrikki unreleated, but chromium has an odd save behaviour for images pretending to be jpg. right click save=jxl but ctrl+S=jpg
2026-01-23 09:27:11
I suspect it didn't send the correct accept header when using ctrl+s
jonnyawsom3
hjanuschka ๐Ÿ˜ฑ just keep in mind jxl-ui is a fun thing! dont take anything there serious
2026-01-23 09:29:03
I was comparing the UI's progressive rendering time against the CLI's execution time, they seemed identical after numerous runs on large images, so the cost of rendering the progressive DC/lossless steps should be minimal
2026-01-23 09:37:38
A while ago we wondered if browsers could add a flag to control the progressiveness, defaulting to Pass but giving the option of Eager Going from ^2 DC/lossless downscales and HF groups (So the image doubles in resolution to 1:8, then centre_loads HF groups in a spiral), to updating on every frame and showing partial groups/squeeze steps like jxl-oxide (Showing each horizontal and vertical squeeze step with individual HF groups loading in top-to-bottom) It might just be a dream, but I wanna see all the format has to offer haha
2026-01-23 10:00:39
If that sounds like too much for Pass, maybe an extra level would be useful ```Rust pub enum JxlProgressiveMode { /// Renders all pixels in every call to Process. /// (Partial squeeze steps/LF frame, partial HF/Lossless groups) Eager, /// Renders pixels once LF steps and group passes are completed. /// (^2 squeeze steps/1:8 LF, individual HF/Lossless groups) Groups, /// Renders pixels once passes are completed. /// (1:8 LF, HF passes, Completed Lossless frame) Pass, /// Renders pixels only once the final frame is ready. /// (Completed HF/Lossless frame) FullFrame, ``` Hopefully you get what I mean
chocolatkey
HCrikki for context on japan. it produces and sells a *ton* of light novels and it seems epub suited that market better since reflowable and features relatively few images (handy to consume on web, within official apps and on e-readers)
2026-01-23 10:18:27
Iโ€™m a bit confused by this statement. Light novels have way more images than your average novel, and the images are also expected to be much higher fidelity. And the reason why Japan uses EPUB is not really because it โ€œsuitedโ€ the market, itโ€™s that they got tired of dealing with the proprietary formats like XMDF that needed proprietary software and high licensing fees, plus the major ebook distributors basically require EPUB at this point
HCrikki
2026-01-23 10:20:50
that was just my educated assumption, not cold fact
veluca
2026-01-23 10:22:28
the main issue for progressive is that I have not been thinking about it yet ๐Ÿ˜› (I want to optimize the pipeline more first, and get non-progressive rendering to be fast, and get multithreading working before doing better progressiveness)
chocolatkey
2026-01-23 10:23:16
The main thing holding back Japan specifically from evolving their EPUBs support to e.g. more modern image codecs is because their distribution system involves just about more ebook stores than any other country in the world. For a new format like JXL to take hold, over 50 stores would need to update their pipelines, and they have some amazingly legacy stuff going on internally. There are also 5+ major proprietary processing solutions these stores use (along with their own homebrew) that would need to cooperate
2026-01-23 10:26:00
Also, unlike most โ€œwesternโ€ ebook reading solutions that rely on the platformโ€™s own web engines (which have or will soon add JXL), Japanese systems tend to either embed their own custom (typically outdated) WebKit build or convert to a proprietary format before delivery
_wb_
veluca the main issue for progressive is that I have not been thinking about it yet ๐Ÿ˜› (I want to optimize the pipeline more first, and get non-progressive rendering to be fast, and get multithreading working before doing better progressiveness)
2026-01-23 03:02:39
an optimized render pipeline benefits both progressive rendering and non-progressive rendering since that's basically the same thing, just using zeroes for the missing coefficients. Only exception is the fancy LF upsampling but that's not strictly necessary (you could also just show a blocky image when only LF is available), and of course it does make sense to skip IDCT when there's no HF available anyway. Would Chrome use multithreaded decode?
veluca
2026-01-23 03:04:42
I am definitely going to try to do so
2026-01-23 03:05:00
jxl benefits from threads more than avif, at least ๐Ÿ™‚ (smaller blocks)
jonnyawsom3
2026-01-23 03:08:37
That's assuming browsers give it enough threads to work with, I know someone said AVIF is limited to 2 threads in Chrome
veluca
2026-01-23 03:10:51
that was because they didn't see it giving improvements with more
jonnyawsom3
2026-01-23 03:11:12
Ah right
whatsurname
2026-01-23 03:45:18
Was it? I though it was images are not expected to consume all the resources, that's why they created animated WebP instead of supporting WebM in <img>
jonnyawsom3
2026-01-23 03:55:04
I mean, the occasional 4K GIF I stumble upon still brings my system to it's knees with only 1 thread
whatsurname
2026-01-23 04:03:49
It would be nice if jxl-rs can do multithreading based on image size, libavif was not able to do that because they can't get image size before setting thread count
username
2026-01-23 04:06:45
I like that idea, It would probably help to some degree with preventing thread starvation and thrashing
veluca
whatsurname It would be nice if jxl-rs can do multithreading based on image size, libavif was not able to do that because they can't get image size before setting thread count
2026-01-23 04:14:36
not sure what the benefit would be
2026-01-23 04:14:46
Chrome has its own threadpool anyway
username
2026-01-23 04:19:07
I'm a little unfamiliar exactly with how threadpools work but wouldn't there still be a benefit? say there's a page with a bunch of small images and a very large image or two wouldn't it be better if more threads where working on the larger images from the start rather then having to finish up with the small images before getting put towards the large images?
AccessViolation_
2026-01-23 04:20:18
maybe browsers should also consider the amount of images that are to be decoded. e.g. if there are many images that want to render concurrently, just do one thread per image. if there are just two images that are pretty large, give each of them some threads. I'm not sure how bad it'd be, but I feel like the increased context switching the CPU has to do if you have e.g. 8 logical cores, and 8 images with four blocks, for a total of 32 threads active, would lead to it being less efficient than if you just gave every image a single thread?
jonnyawsom3
2026-01-23 04:22:37
Thread scaling with JXL is pretty linear, so I think it'd be fine to just let Chrome allocate the threads
veluca
2026-01-23 04:22:40
the simplest solution is to post all the tasks to the threadpool, and let the threadpool schedule things
2026-01-23 04:23:00
so if there is one large image, many threads work on that one
2026-01-23 04:23:10
if there are many small images, every image gets a thread
AccessViolation_
2026-01-23 04:24:52
oh yeah good point
2026-01-23 04:27:03
hmm, given that browsers already have native Wasm support, it might be feasible to get `MA-tree -> Wasm -> native code (JIT)` working in theory
2026-01-23 04:27:24
the idea of JIT compiling MA-trees has been brought up before
2026-01-23 04:30:16
I feel like interfacing with the wasm engine like that is orders of magnitudes more work than implementing JXL decoding in browsers itself was, lol
jonnyawsom3
2026-01-23 04:32:30
I mean, we already make jxl-rs create a LUT from the MA tree for effort 2, so that's probably native code already or close enough to it
AccessViolation_
2026-01-23 04:33:08
oh that sounds interesting, can you explain how that works?
2026-01-23 04:33:50
on a high level
veluca
AccessViolation_ hmm, given that browsers already have native Wasm support, it might be feasible to get `MA-tree -> Wasm -> native code (JIT)` working in theory
2026-01-23 04:34:26
"in theory" is load-bearing here ๐Ÿ˜›
AccessViolation_
2026-01-23 04:36:01
I feel like I would be such a great manager, I could come up with all sorts of crazy ideas and never have to worry about the implementation! <:KekDog:805390049033191445>
username
2026-01-24 12:07:09
<@623776984987729940> the following file/image doesn't look correct. left is current canary with jxl-rs. right is a version of Chromium with the old libjxl implementation restored.
veluca
2026-01-24 12:09:58
smells like some colorspace confusion
2026-01-24 12:11:27
(possibly the `embedded_color_profile` thingy I was mentioning before <@623776984987729940> )
hjanuschka
2026-01-24 12:13:20
<@179701849576833024> might be, will take a look
2026-01-24 12:49:22
<@179701849576833024> seems to work!
2026-01-24 12:49:24
preparing CL
username
2026-01-24 12:51:46
wait can you show a zoom in of the left door? I want to make sure that there isn't a secondary issue cropping up
hjanuschka
2026-01-24 12:56:39
username
hjanuschka
2026-01-24 01:00:50
oof it seems like the colors are getting handled in a way that's crushing them. zoom into the door's window and compare with this picture of the old Chromium libjxl implementation
hjanuschka
2026-01-24 01:01:50
beware this is via chrome-remote-desktop :/
2026-01-24 01:02:12
not having local build env (mac)
username
2026-01-24 01:03:22
ah that might be why then. is there anyway you are able to take a screenshot of the proper rendered out result and get it over to your host machine?
jonnyawsom3
username oof it seems like the colors are getting handled in a way that's crushing them. zoom into the door's window and compare with this picture of the old Chromium libjxl implementation
2026-01-24 01:05:23
Bear in mind jxl-rs has no dithering right now, and defaults to linear like libjxl
hjanuschka
2026-01-24 01:06:03
using xfce screenshot
username
hjanuschka using xfce screenshot
2026-01-24 01:12:00
ah yep you are encountering something I was worried about. I'm gonna try to explain my understanding of what's happening but it might be a little off and messy. This is happening due to jxl-rs 0.3.0 having this PR: https://github.com/libjxl/jxl-rs/pull/625 This PR correctly does what it says on the tin however due to that it introduces an issue that was previously only present in libjxl. Read here for slightly more details about the behavior from libjxl that was brought over: https://github.com/libjxl/libjxl/pull/4516#issuecomment-3609792197
2026-01-24 01:13:27
it seems like the old libjxl implementation in Chrome managed to bypass this issue entirely. I haven't looked at the code but I assume it was just doing color management differently in a way where this didn't affect it
veluca
username it seems like the old libjxl implementation in Chrome managed to bypass this issue entirely. I haven't looked at the code but I assume it was just doing color management differently in a way where this didn't affect it
2026-01-24 01:18:20
it was doing color conversion to the display colorspace (with skcms) before converting to u8
username
2026-01-24 01:24:23
would it make sense try and make jxl-rs match the libjxl docs rather then the libjxl codebase in this case? The only project(s) AFAIK that currently uses jxl-rs are the unfinalized JXL support in Chromium and Firefox/Gecko and it would be a shame to have jxl-rs inherit what seems to be a mistake from libjxl
veluca
2026-01-24 01:24:52
I don't have strong opinions on what colorspace jxl-rs defaults to
2026-01-24 01:25:14
as long as it doesn't make the logic overly complicated ๐Ÿ˜›
username
veluca as long as it doesn't make the logic overly complicated ๐Ÿ˜›
2026-01-24 01:27:32
I mean what the libjxl docs say compared to what the libjxl codebase does is a bit more complex since it says that linear get used when outputting to floating point and sRGB get used when outputting to integer
veluca
2026-01-24 01:27:54
that's not overly complicated
username
2026-01-24 01:37:12
moving over to <#1464417869470371912> https://discord.com/channels/794206087879852103/1464417869470371912/1464433719547793662
VcSaJen
2026-01-24 09:16:10
Tested JXL Extension on clean Windows 11. Good news: JPEG XL EXIF support is as good as JPEG.
2026-01-24 09:17:26
Bad news: Rotation is wrong, and...
jonnyawsom3
2026-01-24 09:18:08
It's probably reading rotation from the codestream *and* the EXIF instead of only applying one
VcSaJen
2026-01-24 09:20:25
...and CMYK support is broken. Also bench for comparison, not sure if no rotation or double rotation.
2026-01-24 09:32:05
Also tested color profile stress test images, they look identical for both JPG and JXL. So no problems here