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

jxl

Anything JPEG XL related

Traneptora
2023-06-17 02:52:13
which doesn't seem to have any reason
2023-06-17 02:53:41
I inspected the markers too
2023-06-17 02:54:12
it appears to go `d8` `e0` `db` `c2` `sof0` then a bunch of `c4` and `da` and a `d9` at the end
2023-06-17 02:54:39
which looks entirely reasonable
_wb_
2023-06-17 03:56:06
If you compile libjxl with debug messages, you can see more stuff
2023-06-17 03:57:30
but yes, we could let libjxl return more descriptive error codes so cjxl/djxl can also output more useful stuff
Traneptora
2023-06-17 04:20:56
also, I suggested in #2579 that we add `--strip_alpha` to cjpegli
2023-06-17 04:21:23
which would default to stripping alpha channels from input if and only if they are entirely opaque
2023-06-17 04:21:53
and refuse and fail with error if the alpha channel isn't entirely opaque
2023-06-17 04:22:19
it would be very convenient for PNGs that have a superfluous alpha channel IMO
2023-06-17 04:22:40
could also be included in cjxl, if possible, perhaps defaulting to the above if lossy, and defaulting to retaining alpha if lossless? idk
2023-06-17 04:22:55
it's a thought
_wb_
2023-06-17 04:27:37
I wanted to add automatic alpha stripping to libjxl, but the issue is that alpha existing is an image-level property while alpha being trivial (entirely opaque) is a frame-level property
2023-06-17 04:28:18
and there's a pretty common case where the bottom layer in a layered image does have trivial alpha, but other layers do have nontrivial alpha
2023-06-17 04:29:13
libjxl is encoding frame by frame (layer by layer) so API-wise it's a bit tricky to do alpha stripping
2023-06-17 04:30:45
we could add it to cjxl but I think it's better to avoid putting the logic in cjxl because then any other libjxl-based applications are not getting it
2023-06-17 04:32:39
maybe if the frames are closed early enough, before the image header is actually written, the encoder could do automatic alpha stripping (with an option to keep it anyway, but there's no real use to preserving trivial alpha imo, even for lossless)
Traneptora
2023-06-17 04:32:55
well for cjpegli, it could be easier
2023-06-17 04:33:21
as there's no animation there
_wb_
2023-06-17 04:34:12
yeah for cjpegli it's easier.
2023-06-17 04:35:09
we could also make the png loader do the alpha stripping but again that will not help applications using libjxl
Traneptora
2023-06-17 04:42:35
That doesn't bother me, I care more about the PNG loading than the JXL side
VcSaJen
lonjil Personally I've been trying to use "JXL" as the only name I use for the format.
2023-06-18 05:15:09
I've seen someone use "XL" to refer to JPEG XL.
elfeïn
2023-06-18 05:59:09
i like that actually
2023-06-18 05:59:19
susmogus.xl
_wb_
VcSaJen I've seen someone use "XL" to refer to JPEG XL.
2023-06-18 06:23:04
Within JPEG sometimes that happens, talking about XL, XS, AI, Pleno etc because the prefix is the same each time 🙂
2023-06-18 06:26:22
Makes sense for nightly, dunno about releases...
Traneptora
2023-06-18 08:13:15
Interesting, jxl appears to be reompressing an 8-bit animation as a 32-bit float animation
2023-06-18 08:13:21
with distance=0
2023-06-18 08:13:27
I believe that's unintentional, right?
jonnyawsom3
2023-06-18 08:17:57
You mean from a GIF, or something else?
Traneptora
2023-06-18 08:18:05
from a JXL
2023-06-18 08:18:27
I have an 8-bit lossy RGBA JXL file (it's the animation_icos4d.jxl conformance sample)
2023-06-18 08:18:38
and if I run `cjxl -d 0 animation_icos4d.jxl test.jxl`
2023-06-18 08:18:43
it produces a 32-bit float JXL
2023-06-18 08:19:11
it also embeds an sRGB ICC profile in the new JXL file, rather than just tagging it as sRGB
2023-06-18 08:19:19
(the original is tagged as sRGB with enums)
2023-06-18 08:19:30
which is also weird but possibly unrelated
jonnyawsom3
2023-06-18 08:19:39
Ahh, guess it wasn't caught since JXLs only recently were able to be recompressed
Traneptora
2023-06-18 08:19:46
I'll open an issue
2023-06-18 08:35:17
https://github.com/libjxl/libjxl/issues/2581
monad
VcSaJen I've seen someone use "XL" to refer to JPEG XL.
2023-06-19 06:48:11
Itching to share my excitement about Apple adoption, I asked my geekiest co-worker if they were interested in compression or media codecs. Not really, but interested in learning. I mentioned JPEG XL and their demonstrative response was, "I know of JPEG, and I've used Excel!"
_wb_
2023-06-19 07:58:38
https://youtu.be/UBX2QQHlQ_I
Jyrki Alakuijala
monad Itching to share my excitement about Apple adoption, I asked my geekiest co-worker if they were interested in compression or media codecs. Not really, but interested in learning. I mentioned JPEG XL and their demonstrative response was, "I know of JPEG, and I've used Excel!"
2023-06-19 09:07:44
Excel is one better than WebP. Excel has 16384 columns and WebP has 16383.
2023-06-19 09:09:09
JPEG XL has 'enough' resolution it not to be a limit during its lifetime of 222 years 😛
TheBigBadBoy - 𝙸𝚛
monad Itching to share my excitement about Apple adoption, I asked my geekiest co-worker if they were interested in compression or media codecs. Not really, but interested in learning. I mentioned JPEG XL and their demonstrative response was, "I know of JPEG, and I've used Excel!"
2023-06-19 09:51:42
That's why when I'm speaking about JPEG XL I always say "JXL" so that people don't get the wrong idea <:dogelol:867794291652558888>
Traneptora
2023-06-19 12:13:35
can we Backronym JXL to stand for Jpeg eXtended Life
Jyrki Alakuijala
2023-06-19 12:20:55
and JPEG LS for Jpeg Life Support
2023-06-19 12:22:14
I like recursive acronyms -- perhaps we could use JXL for JXL eXtended Life
w
2023-06-19 12:25:27
jpeg xtra large
jonnyawsom3
2023-06-19 01:01:14
Jpeg Xtra Light (For colors and filesize?)
diskorduser
2023-06-19 03:55:18
JPEG Excellent - JXL
VcSaJen
2023-06-19 03:57:13
ICC status: IrfanView+Plugin: not supported (jpg works, jxl does not) XnVIew MP: not supported (jpg works, jxl does not) ImageGlass: not supported (jpg works, jxl does not) + wrong orientation Paint.Net+Plugin: not supported (not color managed) PaleMoon: not supported (not color managed) Basilisk: not supported (not color managed) WaterFox: supported only for red bench, not supported for other examples darktable: works (except for CMYK, also not sure if orientation was supposed to be ignored) Krita (pre-alpha): works GIMP (development build): works
diskorduser
2023-06-19 04:00:13
nomacs, gwenview, eog?
2023-06-19 04:00:22
gthumb. adobe camera raw
w
2023-06-19 04:01:59
is that only image icc or both image and display icc
VcSaJen
2023-06-19 04:02:30
My display is close to sRGB, so I won't see the difference
w
2023-06-19 04:03:24
you should still be able to see a difference if you're calibrated
VcSaJen
2023-06-19 04:05:01
Supposedly IrfanView and XnView MP use display profile if color management is turned on.
spider-mario
2023-06-19 04:37:10
you can assign a BRG profile to your display to check that, but it's easier to check separately from image ICC, so with a normal RGB image (not BRG there too)
2023-06-19 04:37:42
also, I doubt it frequent that display ICC is supported but image ICC isn't
monad
2023-06-19 07:41:59
Why are we #3? We should at least be right behind AVIF.
2023-06-19 07:42:58
Not as poor as WebP, I guess.
_wb_
2023-06-19 07:43:35
Could be just alphabetical or something
monad
2023-06-19 07:44:12
Not quite.
lonjil
2023-06-19 08:13:39
what is that site?
Traneptora
2023-06-19 08:16:44
is that caniuse?
lonjil
2023-06-19 08:19:16
caniuse.com looks a bit different to me
elfeïn
2023-06-19 08:20:28
I thought AVIF was a video format?
lonjil
2023-06-19 08:20:38
that's AV1
2023-06-19 08:20:53
AVIF is the image format based on AV1
Traneptora
lonjil caniuse.com looks a bit different to me
2023-06-19 08:23:03
that's how it looks to me, too
elfeïn
2023-06-19 08:24:46
o
gb82
2023-06-19 09:20:58
HEIC supports animations right?
Traneptora
2023-06-19 10:36:59
I believe not
VcSaJen
2023-06-19 10:39:37
How the tables have turned...
monad
2023-06-20 04:28:22
> a bit 👀
2023-06-20 04:28:55
So the not great ordering is because I don't run JS.
jonnyawsom3
2023-06-20 12:44:34
Aww, cut out the middleman and improved it tenfold, so much for my first pull xD <https://github.com/libjxl/libjxl/pull/2552> <https://github.com/libjxl/libjxl/pull/2586>
_wb_
2023-06-20 01:01:56
oops
2023-06-20 01:01:59
sorry about that
2023-06-20 01:02:28
I just wanted to make the description of `-x color_space` a bit better and then I got carried away 🙂
Moritz Firsching
2023-06-20 01:08:38
do you still want to edit the documentation here <@238552565619359744> We can rebase if there are still improvements pending
jonnyawsom3
2023-06-20 01:16:04
Oddly enough wb seems to have already done most of what my pull did, *except* for the more detailed explanation of Effort, so there might still be one paragraph of use after all 😛
Moritz Firsching
2023-06-20 01:26:30
ok, I will take care of fixing the author check, changing the noreply author
jonnyawsom3
2023-06-20 01:28:53
Updated my PR to only include the Effort change, edited title too since it no longer fit
2023-06-20 01:32:04
Not quite as smooth as I imagined, but hey, gotta start somewhere and this is sure giving me a trial by fire of Github haha
_wb_
2023-06-20 02:40:56
heh we have a pretty strict contribution procedure, with the CLA and authors check and clang-format and then the actual CI still has to start 🙂
bonnibel
2023-06-20 03:00:06
how do you adjust the d parameter to obtain similar results at different pixel densities?
_wb_
2023-06-20 03:01:46
Similar results in terms of what?
bonnibel
2023-06-20 03:36:16
fidelity
2023-06-20 03:38:19
e.g. i'd imagine the threshold for visual losslessness is different if there's 4x the pixels packed into the same physical space?
2023-06-20 03:47:15
(Though I guess devices reporting higher pixel densities in media queries / srcset / etc are generally phones, where you're looking at them from a lot closer than you would at a desktop or laptop, so that does offset the difference...)
_wb_
2023-06-20 04:45:57
That's a good question, and if anyone knows an answer, I would be interested too. Obviously as pixels per inch goes up (or viewing distance goes up, or in general as pixels per visual angle goes up), you can get away with more distortion before it is noticeable. How exactly it scales though is probably not just linear.
2023-06-20 04:55:33
Common sense would be that LF distortions like banding in slow gradients remains visible longer as pixels per angle goes up, while HF distortions like short-distance ringing become invisible as pixels per angle goes up
Jyrki Alakuijala
bonnibel (Though I guess devices reporting higher pixel densities in media queries / srcset / etc are generally phones, where you're looking at them from a lot closer than you would at a desktop or laptop, so that does offset the difference...)
2023-06-20 06:27:08
I believe that all devices are starting to have 'sufficient' pixel counts and image resolution is starting to disconnect from device resolution
gb82
2023-06-20 06:37:45
The lowest PPI you'll find now is a 24" 1080p monitor, maybe sometimes 27"
Jyrki Alakuijala
2023-06-20 06:47:18
it is possible to find 1080p, but utility is quite a bit higher on the $250 priced 4k monitors -- it would be difficult for me to understand why someone would buy a 1080p monitor nowadays
gb82
Jyrki Alakuijala it is possible to find 1080p, but utility is quite a bit higher on the $250 priced 4k monitors -- it would be difficult for me to understand why someone would buy a 1080p monitor nowadays
2023-06-20 06:52:54
High refresh rate gaming
2023-06-20 06:54:31
Considering the incredibly low price points of high refresh rate IPS 1080p monitors at 24" & the proclivity many gamers have toward games like Valorant, CSGO, etc combined with the fact that their games will run better at 1080p, it makes a lot of sense. You can get a really nice 1080. 144hz IPS monitor for $120 USD if you're lucky
_wb_
2023-06-20 07:14:14
I always wonder if you really need a display that has a high refresh rate. I can see how having more game engine ticks per second is beneficial, as well as low ghosting, but that's in principle not related to the display fps.
lonjil
2023-06-20 07:19:44
1366x768 15.6" laptops are still commonly sold
elfeïn
2023-06-20 07:22:06
768 seems like such a weird number but it's just 0x300.
_wb_
2023-06-20 07:23:37
Yeah, it's from back in the days when 4:3 aspect ratio was standard and 1024 columns is a nice round number
fab
2023-06-20 08:11:18
But for reading do you actually prefer 144hz ?
2023-06-20 08:11:30
Because I don't game
2023-06-20 08:12:07
I have mental problems and I wonder if reading at 144hz is good
2023-06-20 08:12:15
Or like any rate
2023-06-20 08:12:32
On intern there isn't such information
2023-06-20 08:13:02
Do people buy a high refresh rate display for reading?
2023-06-20 08:13:10
In a laptop
yoochan
2023-06-20 08:13:17
e-ink for reading is nicer
fab
2023-06-20 08:13:33
For example I saw hp Victus
2023-06-20 08:13:59
Is there any advantage on it beside my xiaomi mi 11 lite 5G
2023-06-20 08:14:33
2023-06-20 08:14:44
I'm using slightly condensed font
2023-06-20 08:14:55
This good for dark
2023-06-20 08:15:22
But not the max I know for readability
2023-06-20 08:15:49
On desktop I downloaded GalmuriMono9
2023-06-20 08:15:58
The Wikipedia it reads fast
2023-06-20 08:16:08
And i have 60fps display
2023-06-20 08:16:31
But the letter t is horrible andtoo condensed
2023-06-20 08:16:47
In this font on mobile the r bothers me
2023-06-20 08:17:46
In most font except Orbit by Google fonts in the grotesk type of design the m it bothers me
2023-06-20 08:20:31
Victor Mono normal ttf is nice of the form
spider-mario
_wb_ I always wonder if you really need a display that has a high refresh rate. I can see how having more game engine ticks per second is beneficial, as well as low ghosting, but that's in principle not related to the display fps.
2023-06-20 08:20:45
I find that 60 fps vs. 120 fps makes a noticeable and appreciable difference
fab
2023-06-20 08:20:46
Not too big not huge
spider-mario
2023-06-20 08:20:51
120 vs. 144, though, not so sure
fab
2023-06-20 08:20:59
But probably is for 13pt
2023-06-20 08:21:06
I don't use 13pt
2023-06-20 08:21:12
I'm young 23
spider-mario
2023-06-20 08:21:28
when I had a 144 fps screen, I ran it at 120 (so that it would be a multiple of 30 and 60)
fab
2023-06-20 08:21:33
But at least ia Open source
lonjil
2023-06-20 08:25:11
going from 30fps to 40fps reduces the time per frame by ~8.33 ms. From 40 to 60, by ~8.33 ms. From 60 to 120, ~8.33ms. From 120 to 144, ~1.39 ms.
jonnyawsom3
Jyrki Alakuijala it is possible to find 1080p, but utility is quite a bit higher on the $250 priced 4k monitors -- it would be difficult for me to understand why someone would buy a 1080p monitor nowadays
2023-06-20 09:40:28
Budget buyers or those tight on money immediately adds a large area, especially lately just $10 can make a difference, yet alone $150 from 1080 to 4K
2023-06-20 09:41:56
Not to mention secondary monitors and such
Fraetor
2023-06-20 09:55:54
When I recently looked at monitors it was pick two of: - High resolution (Greater than 1080) - High refresh rate (Greater than 75Hz) - Accurate colours (Some form of VESA DisplayHDR) If you wanted all three you were looking at a very expensive display.
spider-mario
2023-06-20 10:53:11
I got the M1 MacBook Pro pretty much for its display
2023-06-20 10:53:14
it’s excellent
2023-06-20 10:54:07
my desktop monitor is a typical 32" 4K IPS 60fps monitor covering P3, does the job but nothing to write home about
2023-06-20 10:54:41
it theoretically has an HDR mode but it’s pretty much useless
2023-06-20 10:56:39
if only because it applies disgusting sharpening in that mode
2023-06-20 10:57:37
(and ~300-400 cd/m² peak brightness and no local dimming of any kind)
gb82
2023-06-21 12:57:52
I'm switching to an M2 macbook air pretty soon, I'm excited to experience a color accurate true 10 bit LCD
2023-06-21 12:58:54
my current display is a 144hz 1080p 24" IPS. I think it gets the job done, I got it because it was cheap & I appreciate high refresh rate more than high resolution for what I do right now (a lot of text based stuff)
diskorduser
2023-06-21 12:59:48
Isn't it better to get a high dpi display for text based stuff?
gb82
2023-06-21 01:00:20
is it? I used to have a 4k 13" laptop & I didn't find it made text any more or less readable for writing anything (code, essays, etc)
2023-06-21 01:00:45
the text certainly looked better but my ability to read it did not change
fab But for reading do you actually prefer 144hz ?
2023-06-21 01:01:07
i don't think it matters for reading
diskorduser
2023-06-21 01:01:29
But fonts look nice and sharp on high dpi displays
yurume
_wb_ I always wonder if you really need a display that has a high refresh rate. I can see how having more game engine ticks per second is beneficial, as well as low ghosting, but that's in principle not related to the display fps.
2023-06-21 01:08:44
it does matter for music video games, but I do agree that most gamers don't need far more than 60 Hz
2023-06-21 01:09:13
my own monitor supports 100 Hz but I always set it to 60 Hz because it's not worth
2023-06-21 01:09:26
(120 Hz would have been beneficial though)
gb82
_wb_ I always wonder if you really need a display that has a high refresh rate. I can see how having more game engine ticks per second is beneficial, as well as low ghosting, but that's in principle not related to the display fps.
2023-06-21 01:12:11
the perceived smoothness is noticeable. Spending an extra $100 on a monitor (at 1080p, hrr monitors are price competitive with 60hz monitors anyway, just making this point for the sake of the argument) is not that much of an expense when gamers spend infinitely more on the rest of their systems tailored specifically toward playing video games
yurume
2023-06-21 01:18:02
I think that perceived smoothness is more about postprocessing (e.g. temporal motion blurring) and less about refresh rates unless you are *really* sensitive to them
2023-06-21 01:19:40
i.e. most games can mask lower refresh rates with a bunch of postprocessing, so if you don't do postprocessing you indeed see benefits from higher refresh rates, but it's not the case for most (high-profile) games anyway
2023-06-21 01:20:34
it's like Apple's high-dpi (retina) devices---if you have subpixel rendering high-dpi displays are less significant. but if you have a guaranteed high-dpi device, you can avoid subpixel rendering at all
gb82
yurume I think that perceived smoothness is more about postprocessing (e.g. temporal motion blurring) and less about refresh rates unless you are *really* sensitive to them
2023-06-21 01:20:51
you will *absolutely* notice 120hz in my experience. even just moving the mouse. Most gamers detest motion blur
yurume
2023-06-21 01:21:28
it greatly depends. I think FPS is probably one of genres where 120 Hz is beneficial
2023-06-21 01:21:43
and temporal motion blurring doesn't mean the uniform sampling (which *is* horrible, I agree)
gb82
2023-06-21 01:21:50
Obviously there are genres where you aren't going to notice >30fps
yurume
2023-06-21 01:23:10
anyway, the main reason you want higher refresh rates is that, you need to detect a minute change in object positions
2023-06-21 01:23:22
most games are not that strict
2023-06-21 01:24:16
in FPS aim accuracy is highly important and 120 Hz would indeed matter, but I'm not sure if the corresponding netcode is equally optimized (it's very hard, for various reasons including physical limitations)
2023-06-21 01:24:58
in music video games you may need sub-10ms latency to synchronize your input
2023-06-21 01:25:56
but it doesn't mean that you can indeed detect an interval smaller than 10ms, it means that you can avoid *drifting* your sense of rhythm more effectively
2023-06-21 01:26:19
as higher refresh rates make that drift more obvious
2023-06-21 01:26:48
besides from that, higher refresh rates are (while good to have) too highly rated
2023-06-21 01:27:30
maybe VR needs a highest available refresh rate (up to 240 Hz), but I doubt monitors need more than 120 Hz
gb82
yurume anyway, the main reason you want higher refresh rates is that, you need to detect a minute change in object positions
2023-06-21 01:46:34
No, the main reason you want high refresh rates is that it feels nice. Games are supposed to be fun, and I hear that the increased smoothness that is decidedly different than the effect motion blur provides is attractive and adds a wow factor to games
yurume
2023-06-21 01:47:00
I mean, yeah, if games do not compensate for lower refresh rates
2023-06-21 01:47:21
but most games *do* compensate for that, and I believe we should talk under that assumption
gb82
2023-06-21 01:47:35
Coming from someone who doesn't play video games & doesn't care for them, the reasons I bought a HRR monitor: - it feels noticeably more responsive to use doing literally anything at all, even just desktop stuff - it was the same price as 60hz options for no downsides
yurume
2023-06-21 01:47:54
ah that's a good argument (to say about non-games)
2023-06-21 01:48:32
I'll indeed grab 120 Hz if I can, the only reason I didn't was I also needed a ultra widescreen monitor and 120 Hz is absurdly expensive in that range
gb82
yurume I mean, yeah, if games do not compensate for lower refresh rates
2023-06-21 01:48:33
I don't think this fixes everything. I still think more temporal resolution is worth it for many. This is akin to saying "we don't need high resolutions if games compensate for them with powerful anti aliasing that negates the downsides of lower resolutions"
yurume
2023-06-21 01:49:02
(my monitor is 35in and has a native resolution of 3440 x 1440)
gb82 I don't think this fixes everything. I still think more temporal resolution is worth it for many. This is akin to saying "we don't need high resolutions if games compensate for them with powerful anti aliasing that negates the downsides of lower resolutions"
2023-06-21 01:49:47
do you think future monitors should support 240 Hz then? or is 120 Hz just enough?
2023-06-21 01:50:08
because you can't blindly increase temporal resolution
gb82
yurume do you think future monitors should support 240 Hz then? or is 120 Hz just enough?
2023-06-21 01:50:32
As a non-gamer, I think monitors should standardize around what they see market demand for relative to how much it costs to satiate that demand
yurume
2023-06-21 01:50:46
this is a good argument for 120 Hz, which is an integral multiple of 24
gb82
2023-06-21 01:51:05
I agree that native 24fps would be super cool. Like yurume said though, 120hz does technically solve this
yurume
2023-06-21 01:52:48
an additional possible semi-argument is that many (most?) games synchronize input rates with refresh rates
2023-06-21 01:53:17
so if games are not super careful, they will only poll 60 times for 60 Hz monitors and 120 times for 120 Hz monitors
2023-06-21 01:53:31
that's really painful for some kind of games including music video games
2023-06-21 01:54:02
(commercial game engines are not helpful in that aspect either, you need some deep knowledge to separate them)
2023-06-21 01:54:23
but it's only a semi-argument, because it's not exactly about monitors
2023-06-21 01:56:29
yeah if you don't need a really big monitor 120 Hz seems now within a reach
2023-06-21 01:57:08
please note that you also need a powerful enough GPU, 120 Hz means twice bandwidth compared to 60 Hz
2023-06-21 01:57:25
(my old GTX 1050 could only cope with up to 85 Hz)
gb82
yurume so if games are not super careful, they will only poll 60 times for 60 Hz monitors and 120 times for 120 Hz monitors
2023-06-21 02:02:01
<:PepeHands:808829977608323112>
2023-06-21 02:02:20
definitely
2023-06-21 02:02:36
My 4770k iGPU drove 144hz 1080p just fine
yurume
gb82 <:PepeHands:808829977608323112>
2023-06-21 02:12:52
I mean, I can't really blame game developers for that, it's so widespread problem that even arcade music video games are known to misbehave when you replace monitors (with a slightly different refresh rate), recent games typically detect the true refresh rate during the startup to avoid this issue.
Traneptora
2023-06-21 02:31:57
one nice advantage of 120 Hz monitors is that 120 is a multiple of 24
2023-06-21 02:32:04
so you can play 24fps content without any judder
2023-06-21 02:32:14
which is a bit awkward on 60 Hz
Quackdoc
2023-06-21 02:33:58
freesync helps a lot with that
w
2023-06-21 02:40:31
hrr is good for scrolling web pages and moving my mouse around
gb82
w hrr is good for scrolling web pages and moving my mouse around
2023-06-21 02:47:11
real exactly
VcSaJen
_wb_ I always wonder if you really need a display that has a high refresh rate. I can see how having more game engine ticks per second is beneficial, as well as low ghosting, but that's in principle not related to the display fps.
2023-06-21 03:34:34
I don't understand why anyone would use 60Hz monitor. This was a great downgrade when transitioning from CRT to LCD. 60Hz sucked then, it still sucks now.
2023-06-21 03:35:28
Not to mention that scaling still sucks both on Windows and Linux. It's a blurry mess, even on OS apps.
Fraetor When I recently looked at monitors it was pick two of: - High resolution (Greater than 1080) - High refresh rate (Greater than 75Hz) - Accurate colours (Some form of VESA DisplayHDR) If you wanted all three you were looking at a very expensive display.
2023-06-21 03:41:39
Super-wide gamut sucked on Windows until very recently. This year Win11 have Auto Color Management/Advanced Color, so people can finally start using them without being blasted with oversaturation.
gb82
2023-06-21 03:41:53
macOS color management still reigns supreme
BlueSwordM
gb82 I'm switching to an M2 macbook air pretty soon, I'm excited to experience a color accurate true 10 bit LCD
2023-06-21 04:11:39
Oh, you will be dissapointed 😔
2023-06-21 04:11:57
What you want is a high refresh rate high density high contrast screen 🙂
gb82
2023-06-21 04:12:14
I've seen the Mac screens, they look pretty darn good
2023-06-21 04:12:27
although ik the miniled displays on the Pro lineup are much better
BlueSwordM
gb82 I've seen the Mac screens, they look pretty darn good
2023-06-21 04:13:19
That's until you look at motion resolution 🤮
2023-06-21 04:13:37
Macbook M1 displays and later have abysmal response times.
gb82
2023-06-21 04:13:56
i know but I don't personally care for what I'll be doing
2023-06-21 04:14:09
& again, the Pro lineup has the good stuff anyhow
BlueSwordM
gb82 & again, the Pro lineup has the good stuff anyhow
2023-06-21 04:14:57
Even worse <:KekDog:805390049033191445> That's where the poor screen response times were found 😂
gb82
2023-06-21 04:15:07
oh really? darn
2023-06-21 04:15:37
well I mean if you want a display with good response times, you're probably a gamer who isn't considering a Mac anyhow
BlueSwordM
gb82 well I mean if you want a display with good response times, you're probably a gamer who isn't considering a Mac anyhow
2023-06-21 04:16:13
The issue lies in the fact that you'll notice the poor motion performance while using the display...
2023-06-21 04:16:21
Oof, pinged you again 😔
gb82
BlueSwordM Oof, pinged you again 😔
2023-06-21 04:16:29
its okay
BlueSwordM The issue lies in the fact that you'll notice the poor motion performance while using the display...
2023-06-21 04:17:22
doing what, scrolling web pages? I acknowledge better response times & refresh rate matter in this use case but they aren't the most important factors for a laptop display for me personally. on my desktop where motion clarity is more apparent due to the larger panel I care a lot more
2023-06-21 04:17:29
also <#806898911091753051> mayhaps? lol
w
2023-06-21 04:28:58
if you want color accurate just buy a colorimeter
2023-06-21 04:29:10
it's gonna be not accurate after a few months anyway
diskorduser
w it's gonna be not accurate after a few months anyway
2023-06-21 04:29:43
Even on high end monitors?
Quackdoc
2023-06-21 04:33:24
im pretty excited for wayland to have a fully color managed display pipeline, now we just need to wait another decade or two for it to come to fruition xD
w
diskorduser Even on high end monitors?
2023-06-21 04:36:09
there's high end monitors and there's very high end monitors that are bundled with a colorimeter and there's very very high end monitors that have a built in colorimeter
gb82
Quackdoc im pretty excited for wayland to have a fully color managed display pipeline, now we just need to wait another decade or two for it to come to fruition xD
2023-06-21 04:58:13
<:PepeSad:815718285877444619>
diskorduser
w there's high end monitors and there's very high end monitors that are bundled with a colorimeter and there's very very high end monitors that have a built in colorimeter
2023-06-21 05:01:25
I see. Once I asked a photographer who owned a 5000$-7000$ monitor how often you calibrate. He said he does once a year because colors don't change often.
bonnibel
lonjil going from 30fps to 40fps reduces the time per frame by ~8.33 ms. From 40 to 60, by ~8.33 ms. From 60 to 120, ~8.33ms. From 120 to 144, ~1.39 ms.
2023-06-21 07:34:21
when it comes to video instead of video games, i wonder if one can notice the difference between watching 30 or 60 fps video on a 120 Hz (simply repeat every frame 2 or 4 times) display vs a 144 Hz (not a multiple of 30 & 60 so the frame timings will be slightly off) display
Quackdoc
2023-06-21 08:19:55
it could lead to frame tearing or judder, but the vast majority of 120hz+ monitors have some kind of VRR so it's not really an issue, well unless you aren't in VRR range, but thankfully players like makes it easy to bring up CFR videos into VRR range trivially.
2023-06-21 08:20:15
vfr videos are a different story,
fab
2023-06-21 10:04:25
90 fps with
2023-06-21 10:04:51
51 79
2023-06-21 10:05:19
Nothing changes on Xiaomi mi lite 5g
2023-06-21 10:05:46
The animation are faster on Android 13 60 fps
2023-06-21 10:08:29
2023-06-21 10:08:55
Only this looks faster on 90hz
2023-06-21 10:10:59
2023-06-21 10:11:04
2023-06-21 10:11:44
I have to try galmuri 2.38.1
2023-06-21 10:12:04
But those fonts are already sufficient for 90hz
2023-06-21 10:15:54
Esme simple v2 has good comprenhsion of text at 110hz
2023-06-21 10:16:36
RimZim you can read at 143hz
2023-06-21 10:16:57
Is there anything more readable
2023-06-21 10:17:09
Who needs it
2023-06-21 10:24:23
2023-06-21 10:24:51
If you want the font for your computer here it Is
2023-06-21 10:25:10
I estracted thw mtz found on an esternal site
2023-06-21 10:25:22
With RAR mobile trial Application
2023-06-21 10:29:04
If someone can make a stylus extension with this font, I'd be grateful
2023-06-21 10:30:56
2023-06-21 10:31:08
This font I find also good
2023-06-21 11:34:03
Esme 59 41
2023-06-21 11:34:20
81 62 the font on wired
2023-06-21 11:34:51
Maia 41 73
2023-06-21 11:37:00
Louis 51 72
2023-06-21 11:38:02
I'm reporting the speed I can read
Oleksii Matiash
2023-06-21 11:38:16
Guys, could you please move to <#806898911091753051>?
fab
Oleksii Matiash Guys, could you please move to <#806898911091753051>?
2023-06-21 11:38:26
Yes
w
2023-06-21 12:06:28
> Guys
fab
2023-06-21 12:10:19
I'm a guy
Oleksii Matiash
w > Guys
2023-06-21 12:11:34
I'm sorry, English is by far not my native language, what is more appropriate word?
w
2023-06-21 12:11:46
i meant that it was just 1 guy
VcSaJen
2023-06-21 12:16:11
Using "guys" would be still appropriate, at least in my language.
w
2023-06-21 12:39:09
how
VcSaJen
2023-06-21 12:42:05
It's a polite (in passive agressive way) way to refer to concrete person, without explicitly saying that's it's a concrete person.
w
2023-06-21 12:42:24
my problem was with the context
2023-06-21 12:43:14
do they mean to every person in the greater conversation, of which started yesterday? or the more recent
2023-06-21 12:44:20
the more recent blurb from the fab
2023-06-21 12:44:23
to be considered off-topic
jonnyawsom3
2023-06-21 12:46:32
Or... All of it?
2023-06-21 02:19:09
5 conversations, 3 reviews and half a dozen commits for a paragraph of text... I sure know how to make things complicated
2023-06-21 02:23:06
Ehh, it's my first one and each does have a distinct purpose and had a conversation requesting it, I'm just a bit amazed how often I was one word off, missing some spaces or such each time. At least it should be done now, and I know how to do it *slightly* more gracefully in future
2023-06-21 02:25:43
As a sidenote, I'd maybe move the Authors and Format checks to run along with the CLI, would've saved some time approving just to realise I need to add a new line
Moritz Firsching
2023-06-21 02:42:48
no worries, we squoos the commits anyhow
2023-06-21 02:44:22
yeah, perhaps we could at some point allow the formatting and author check wihtout approval I suppose... so far we have seen very little vandalism
2023-06-21 02:47:16
If we approved to run the CI once, then it should be fine to run automatically from then on, even in the same commit, I suppose
2023-06-21 02:47:37
Right now that is not happening, but it will be automatic after your first commit
jonnyawsom3
2023-06-21 02:49:42
Yeah, that sounds perfect
fab
2023-06-21 02:51:51
Noto Sans Sundanese miss characters please don't use ir
2023-06-21 02:52:23
Also Esme is better because Promotean has double interline
2023-06-21 02:52:49
So if is literally impossible to read Giuseppe Conte postsq
2023-06-21 03:20:59
https://github.com/tirr-c/jxl-oxide/actions/runs/5320223296
diskorduser
2023-06-21 04:15:43
Why is the windows binary is soooo smol and the linux one is fatter.
Tirr
2023-06-21 04:17:52
maybe runtime is dynamically linked for windows builds
2023-06-21 04:18:22
I guess it's the default behavior of MSVC linker
2023-06-21 04:19:03
ah or it's because of the debug information
2023-06-21 04:20:34
iirc MSVC linker drops separate file for debuginfo
diskorduser
2023-06-21 04:21:42
`❯ du /home/xxx/.cargo/bin/jxl-dec 5.5M /home/xxx/.cargo/bin/jxl-dec`
Tirr
2023-06-21 04:24:47
it seems like cargo install doesn't use profile configuration in Cargo.toml
2023-06-21 04:27:23
if you use cargo build in repository, the binary will contain debuginfo
Traneptora
2023-06-21 05:46:43
Where did the DCT_Params table come from?
2023-06-21 05:46:59
the spec lists a bunch of floating point numbers. How were they derived? asking because of fixed point decoder questions
lonjil
2023-06-22 03:56:43
does anyone have a recent copy of the spec? edit: nvm saw it in <#1021189485960114198>
gb82
2023-06-22 06:09:40
Trying to build libjxl from source on an M series Mac
2023-06-22 06:09:55
keeps getting `make: *** [all] Error 2` at around 62%
2023-06-22 06:11:10
doing: ```git clone https://github.com/libjxl/libjxl && cd libjxl && chmod +x deps.sh && ./deps.sh mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" .. && cmake --build . -- -j$(nproc)```
2023-06-22 06:12:46
https://github.com/libjxl/libjxl/issues/2359
2023-06-22 06:13:25
i think it is similar to this. My error is in this .txt
Traneptora
gb82 i think it is similar to this. My error is in this .txt
2023-06-23 01:35:31
looks like it's using the headers installed `/opt/homebrew` rather than the ones packaged with it
gb82
2023-06-23 01:53:47
anything I can do about that?
Traneptora
2023-06-23 03:07:08
I'm not sure. I'm not a macOS user
fab
2023-06-26 08:12:14
Gi-iX-El
2023-06-26 08:12:34
People meme about the Italian pronunciation of jxl
2023-06-26 08:14:55
2023-06-26 08:15:17
I didn't write this shit
2023-06-26 08:15:40
But not only me memes about this
2023-06-26 08:16:05
I think jxl is efficient as vvc faster
2023-06-26 08:16:33
At crf 20.5
2023-06-26 08:17:20
But the problem when you go to normal distance it getnt the detail from lower distance
2023-06-26 08:17:33
For example d0.641s9 d0.539s8
2023-06-26 08:17:58
The image is encoded fast
2023-06-26 08:18:22
https://www.litaliaindigitale.it/news-nazionali/news-anno-2023/2023-06-news-giugno-2023/230614-rai-mux-b-inseriti-rai-sport-hd-in-h-265-hevc-e-rai-play-in-hbbtv-eliminato-rai-3-hd-provvisorio/
2023-06-26 08:18:53
Jxl also considers the re encoding of hevc
2023-06-26 08:19:26
But on normal Xiaomi images
2023-06-26 08:19:55
81 kb images has great denoising
derberg🛘
fab
2023-06-26 12:04:24
The first comment in the screenshot is hilarious. "18 months ago when libjxl barely compiled" It literally compiled after using that command to pull in the submodules and installing dependencies 🤔 I used it on a Raspberry Pi, a postmarketOS running phone and my Arch Linux installation. In early-mid 2021.
2023-06-26 12:07:56
Two architectures, three distros.
2023-06-26 12:10:54
Somehow I have the feeling the person did not try to use good parameters. Especially considering they don't mention them.
fab
derberg🛘 The first comment in the screenshot is hilarious. "18 months ago when libjxl barely compiled" It literally compiled after using that command to pull in the submodules and installing dependencies 🤔 I used it on a Raspberry Pi, a postmarketOS running phone and my Arch Linux installation. In early-mid 2021.
2023-06-26 12:11:41
I don't agree with the first comment
derberg🛘
2023-06-26 12:13:22
Yeah, I did not think that.
2023-06-27 12:57:51
Suuuure
elfeïn
2023-06-27 12:59:02
that's so sad
derberg🛘
2023-06-27 12:59:20
Ah, sorry wrong chat
derberg🛘 Ah, sorry wrong chat
2023-06-27 01:00:18
Wanted to put it into <#803574970180829194> but ctrl + k put me here instead of there
OkyDooky
2023-06-27 10:33:49
Is there a way to ... ‘requality’ a `*.jxl` file? I'm using `cjxl` to store losses files, but for the web, I’d like to reduce the quality to save size. The thing that’s coming to mind is using `djxl` to `*.png` then re compressing with the new quality setting, but that seems pretty stupid and `cjxl` docs say `*.jxl` isn’t a support input type.
username
Is there a way to ... ‘requality’ a `*.jxl` file? I'm using `cjxl` to store losses files, but for the web, I’d like to reduce the quality to save size. The thing that’s coming to mind is using `djxl` to `*.png` then re compressing with the new quality setting, but that seems pretty stupid and `cjxl` docs say `*.jxl` isn’t a support input type.
2023-06-27 10:37:19
I think after this pull request you should be able to use JXL files as input in cjxl: https://github.com/libjxl/libjxl/pull/2444
OkyDooky
2023-06-27 10:49:40
Ah, I’m on the older version and it’s not yet landed into nixpkgs-unstable (despite being merged at least a week ago) https://nixpk.gs/pr-tracker.html?pr=237913 (<@245794734788837387>)
jonnyawsom3
2023-06-27 10:53:56
If I recall we're not releasing new versions now until it's at 1.0, so you'd need to get it from Github Actions or build it yourself for now
OkyDooky
2023-06-27 10:54:03
I‘ll try an overlay to see if the latest version helps 🙏
VcSaJen
2023-06-27 11:37:49
Unofficial nightly builds used to be on https://artifacts.lucaversari.it/libjxl/libjxl/latest/ , but looks like it broke.
veluca
2023-06-27 02:43:36
uhm
2023-06-27 02:45:55
yeah something went wrong 2 weeks ago
2023-06-27 02:45:57
no idea what
2023-06-27 02:45:59
fixing it
2023-06-27 02:46:56
should be ok now?
gb82
fab
2023-06-28 01:02:32
> for anime and manga content well duh
derberg🛘
2023-06-28 01:35:16
Isn't JXL extremely good for that?
2023-06-28 01:35:55
In that Google Docs document comparing lossless image formats JXL destroyed AVIF for B/W comics (and from personal tests it looks like JXL files with a lot of black, e.g. due to terminal emulator being open on a screenshot, are the files that get me huge above average saving for PNG to JXL conversation)
jonnyawsom3
2023-06-28 01:37:27
> across a wide range of bpp If I recall it's only modular or lossless that uses pallete, so they probably missed the small size by trying to lower the quality from the start
2023-06-28 01:38:11
I could be completely wrong, it's 3am, but it feels like something that'd happen
OkyDooky
2023-06-28 01:51:37
Could you (or someone) share the link? I haven't seen that one. (<@230800661837512705>)
derberg🛘
2023-06-28 01:55:21
Yeah, wait a moment. It is a bit outdated tho
2023-06-28 01:56:16
https://docs.google.com/spreadsheets/d/1ju4q1WkaXT7WoxZINmQpf4ElgMD2VMlqeDN2DuZ6yJ8/edit#gid=174429822
2023-06-28 01:56:44
Screenshot of the interesting part of it
gb82
derberg🛘 Screenshot of the interesting part of it
2023-06-28 02:11:03
EMMA?
derberg🛘
2023-06-28 02:14:01
Proprietary something
2023-06-28 02:14:28
Created for challenges or something like that
2023-06-28 02:15:21
Cause apparently there are challenges for file compression
jonnyawsom3
2023-06-28 02:20:51
Yeah, there was a russian competition linked ages ago where a guy had equal compression to JXL in 50MB of memory footprint or something like that, but he 'wasn't ready' to release the source code and I think they went silent soon after
DZgas Ж
derberg🛘 Screenshot of the interesting part of it
2023-06-28 02:42:47
Who is 0%
derberg🛘
DZgas Ж Who is 0%
2023-06-28 02:43:40
The title
2023-06-28 02:44:03
-e 9 -E3 -I 1
2023-06-28 02:44:52
So yeah, a bit outdated imo
2023-06-28 02:47:24
I wonder... BMF might lose on average against a bit saner options if the creator of the table retested
monad
2023-06-28 07:26:26
\> saner options Like what? AFAIK, lossless hasn't seen relevant changes except at e3.
_wb_
2023-06-28 07:43:46
not that much has changed but there have been some small tweaks
derberg🛘
monad \> saner options Like what? AFAIK, lossless hasn't seen relevant changes except at e3.
2023-06-28 01:14:21
Adding -g, higher -I
2023-06-28 01:18:26
Or -e 10 cause lol, it's a benchmark after all Or -e 11 (if it comes out 👀)
afed
2023-06-28 01:27:03
larger groups are not always better and the old -I 1 is the new -I 100 if I am not confused? even if not, the overall diff will not be much noticeable, maybe only on some certain images and as far as i used my bruteforce script, -I 1 still might be the best
jonnyawsom3
2023-06-28 01:28:59
I thought the `I` was reversed the same time it switched from `s` to `e` for speed and effort
afed
2023-06-28 01:40:10
and it be good to have an e3 with lz77 runs, as discussed before <@794205442175402004> would that require a lot of work?
derberg🛘
afed larger groups are not always better and the old -I 1 is the new -I 100 if I am not confused? even if not, the overall diff will not be much noticeable, maybe only on some certain images and as far as i used my bruteforce script, -I 1 still might be the best
2023-06-28 01:40:27
Well, I got several percent points improvements (for screenshots) when adding -g 3 and switching to -I 100 (when it changed from being 0..1 as you mentioned)
_wb_
2023-06-28 01:45:40
the old -I 1 is the new -I 100 (it went to 0..1 range to 0..100 range)
afed and it be good to have an e3 with lz77 runs, as discussed before <@794205442175402004> would that require a lot of work?
2023-06-28 01:47:55
<@179701849576833024> can estimate that better than me, but my gut feeling is that RLE will not help that much at e3 due to it using the weighed predictor. I would assume it is more useful at e2.
veluca
2023-06-28 01:48:38
I mean, it's not hard to try
2023-06-28 01:48:44
But I also think it will not help
2023-06-28 01:48:51
Neither speed nor compression
_wb_
2023-06-28 01:50:32
it could help a bit for decode speed (for images with big runs) and maybe compression
2023-06-28 01:52:34
it helps at e1, but I assume that's to some extent because e1 uses huffman which is not great when there are long runs (it still needs one bit per symbol). At e2+ we use ANS which is better at that kind of distributions (I mean when encoding it without RLE)
afed
2023-06-28 01:55:53
then maybe do the same as for e1/e2 if it's not a photo? i've also done tests and on some images the larger groups are better, but on typical images it can be even much worse and overall it's not worth it but, as was mentioned in these changes <https://github.com/libjxl/libjxl/pull/2610> maybe find some image characteristics like number of colors and other stuff where larger groups are always better, perhaps on some larger test data and choose the group size in a smarter way
_wb_
2023-06-28 02:06:39
Group boundaries (first row and first column of each group) are poorly predicted since groups are independent. With 128x128 groups, you have 255/16384 poorly predicted pixels, or about 1.5%. With 1024x1024 groups, that goes down to 2047/1048576 or about 0.2%. Also groups have some fixed overhead of a few bytes just for starting a new stream — so fewer groups is also better in that regard. But on the other hand, more groups means local RCT and local palette can be more effective, e.g. an image that has thousands of colors in each 1024x1024 group (so palette cannot be used) may have some 128x128 regions with only a few distinct colors.
afed
2023-06-28 02:17:29
maybe even using e10 on a massive set of various images and collecting statistics would be useful for understanding what is best for which images, although i think this would require a supercomputer otherwise it would take ages it's also sad that it's not possible to identify by usual tools with what options the image has been compressed
jonnyawsom3
2023-06-28 02:22:36
Wonder if a flag could embed the options used to generate the image inside the metadata
derberg🛘
derberg🛘 Well, I got several percent points improvements (for screenshots) when adding -g 3 and switching to -I 100 (when it changed from being 0..1 as you mentioned)
2023-06-28 02:25:26
To quote myself: »in 0.6.1 I achieved about 53% new size (after converting 163552 screenshots by using cjxl -q 100 -m -s 9 -E 3 -I 1: 112216M → 59561M; ca. 46.9228986953732 % reduction« And since 0.7.0 I add -g3 (and switched to -I 100) and I get ~52.8...% reduction on the same kind of files (input are PNG screenshots of my two monitors taken with xfce4-screenshooter).
2023-06-28 02:30:38
I still do it since the jxl files that xfce4-screenshoter saves are bigger than what I _usually_ get.
afed
2023-06-28 02:30:40
yeah -g3 is good for larger resolutions with lots of simple areas, but it's not good by default for all images
derberg🛘
2023-06-28 02:31:23
Yeah, it is image dependent
2023-06-28 02:32:43
Maybe it would be good to have a table that did comparisons to the "expected good performing options" for each use case.
jonnyawsom3
2023-06-28 02:37:48
A case of heuristics yet again, figuring out if an image should be lossless or lossy, large group or small..
derberg🛘
2023-06-28 02:41:10
The thing about the table is that they did it with 0.7.0 when -I 1 already switched to being -I 100
VcSaJen
2023-06-28 02:41:45
I wonder if any of image editors would implement "presets" in save dialog: anime, photo, screenshot, scan, etc.
derberg🛘
2023-06-28 02:42:31
Doesn't hurt to suggest it on repos I guess
jonnyawsom3
2023-06-28 03:06:49
Good point, I've got a vague memroy of that happeneing with another format but I can't remember what
elfeïn
A case of heuristics yet again, figuring out if an image should be lossless or lossy, large group or small..
2023-06-28 07:12:53
Do a lowpass filter and a highpass filter, separately. If the highpass isn't far off from the lowpass, use lossy.
Traneptora
2023-06-28 07:13:53
best way to determine if lossless works well is to just try it, tbh.
elfeïn
2023-06-28 07:14:53
That's true too
jonnyawsom3
2023-06-28 07:14:55
I was tempted to suggest using the pallete check as a 'cheap' way to decide between modular or VarDCT, since obviously if it's using only a dozen colors it's probably not a photograph
2023-06-28 07:15:16
A lot of ways to do it, including brute force
elfeïn
2023-06-28 07:18:15
o ye
2023-06-28 07:18:25
i forgot about palletes
spider-mario
2023-06-28 07:20:03
fast lossless is very fast, so doesn’t take much time to try
jonnyawsom3
2023-06-28 07:37:37
Good point, I was about to say that's still the largest filesize for modular, but when it's bad for VarDCT it's usually 6x the size anyway so should work
fab
2023-06-29 07:08:33
Quality of latest libjxl is so natural
2023-06-29 07:08:41
Like 1897,6 mb RAm
2023-06-29 07:09:22
It's improving on screenshots thanks to Jon suggestions
2023-06-29 07:16:48
In general e9 cpu 8 in dark conditions have better fidelity
pshufb
2023-06-29 03:56:47
does adobe use libjxl?
_wb_
2023-06-29 04:02:01
officially I don't know but it would be extremely surprising if they wouldn't (and also an extreme coincidence that they produce bitstreams that exactly match the output of what libjxl produces)
Traneptora
2023-06-29 07:22:47
<@794205442175402004> regarding #2581, should I open a separate issue regarding the fact that recompressing JXL -> JXL turns an enum space into an ICC?
_wb_
2023-06-29 07:32:22
Nah the one issue is fine
pshufb
_wb_ officially I don't know but it would be extremely surprising if they wouldn't (and also an extreme coincidence that they produce bitstreams that exactly match the output of what libjxl produces)
2023-06-29 09:16:07
thanks
jonnyawsom3
2023-06-29 11:58:54
Thought I'd check, are reference frames used at all for animation currently? There's 2 lines for it in documentation but no info anywhere else and no implimentation that I'm aware of
2023-06-30 02:33:10
And a bonus question before I go to sleep Are the progressive steps essentially the same as what you get when using `--resampling` so 2/4/8 groups of pixels are mixed into 1 color? Or is it more dependant on the pixels that get loaded first?
Traneptora
Thought I'd check, are reference frames used at all for animation currently? There's 2 lines for it in documentation but no info anywhere else and no implimentation that I'm aware of
2023-06-30 05:22:44
a frame can be referenced provided that (1) it's not an LF frame (2) it's not the Last Frame (3) Its duration is zero, or it's tagged as reference-able. I don't believe libjxl currently produces animations that have zero-duration reference-only frames, although I can definitely see it being possible with patches and fast lossless.
And a bonus question before I go to sleep Are the progressive steps essentially the same as what you get when using `--resampling` so 2/4/8 groups of pixels are mixed into 1 color? Or is it more dependant on the pixels that get loaded first?
2023-06-30 05:24:52
Resampling is a tagged, explicit, nonseparable algorithm for upscaling that counts as the full image
2023-06-30 05:25:08
So an image that encodes 512x512 pixel data with "resample=2" tagged is considered a 1024x1024 image
2023-06-30 05:25:18
and decoders MUST resample it, using the specified algorithm
2023-06-30 05:26:02
Progressive Steps, provided by libjxl, are upscaled, partially decoded versions of the image, but which resampling algorithm is used is not documented, and I'm not sure if it is the same algorithm as specified in --resampling
2023-06-30 05:27:30
Should it be documented? probably
2023-06-30 05:28:08
in either case, libjxl's progressive steps are a feature of libjxl, and resampling is a feature of the JPEG XL codestream itself, that all decoders MUST implement
Deleted User
2023-06-30 11:00:39
Is XYB a perceptual lightness linear color space?
2023-06-30 11:00:43
Does it account for stuff like Heimholz?
yurume
2023-06-30 11:05:46
basically yes: https://en.wikipedia.org/wiki/LMS_color_space#Image_processing
Deleted User
yurume basically yes: https://en.wikipedia.org/wiki/LMS_color_space#Image_processing
2023-06-30 11:06:19
Any comparison with JzAzBz?
2023-06-30 11:06:41
Love that space but it is too slow for realtime tone mapping.
Traneptora
Is XYB a perceptual lightness linear color space?
2023-06-30 11:37:13
it's nonlinear, as it has a biased cubic transfer
Deleted User
Traneptora it's nonlinear, as it has a biased cubic transfer
2023-06-30 11:40:49
I mean perceptually linear.
2023-06-30 11:41:14
Which means, corresponding to the experimental data of changes of brightness being equal for an average human observer.
2023-06-30 12:23:25
Nevermind, I measured XYB and it seems like it is a bit distorted in some spots brightness-wise.
w
2023-06-30 12:25:38
how'd u measure it
2023-06-30 12:25:42
with ur eyes?
Deleted User
w how'd u measure it
2023-06-30 12:36:06
Against experimental data and just comparing results to JaAzBz results.
jonnyawsom3
Traneptora a frame can be referenced provided that (1) it's not an LF frame (2) it's not the Last Frame (3) Its duration is zero, or it's tagged as reference-able. I don't believe libjxl currently produces animations that have zero-duration reference-only frames, although I can definitely see it being possible with patches and fast lossless.
2023-06-30 12:43:14
Ahh, so it's essentially patches but across frames, and only when a flag is set so it can be referenced? I imagine cjxl and the other implementations don't have a way to set that flag yet
_wb_
2023-06-30 02:28:09
currently libjxl internally has an EncodeFrame function that is just encoding a single frame independently — it might create a reference-only patch frame in the process, but it isn't going to look at any previous or future frames, it uses patches only in an intra-frame way
jonnyawsom3
2023-06-30 04:25:55
Another spontaneous thought, I remember a while ago there was a discussion about how lenient patches should be so it doesn't need to be mathematically identical to find a match. Could probably bind that to the distance, so lossless is still mathematically lossless, but the further you go the more it can replace subtle differences
OkyDooky
2023-07-01 02:13:48
Just FYI https://ffmpeg.org/pipermail/ffmpeg-devel/2023-July/311370.html
2023-07-01 02:15:31
I am wondering how would be possible to handle stereo paired images in the JPEG XL?
jonnyawsom3
2023-07-01 06:53:11
I know JXL was advertised as supporting less common use cases like thermal, stereo/3d images and such
OkyDooky
2023-07-01 11:58:35
You mean, like embedding encrypted messages inside an image? (<@226977230121598977>)
DZgas Ж
You mean, like embedding encrypted messages inside an image? (<@226977230121598977>)
2023-07-02 12:05:26
any data in original form
VcSaJen
DZgas Ж any data in original form
2023-07-02 02:58:42
If you don't care about hiding it, you can just use EXIF.
_wb_
2023-07-02 06:16:48
Pixel values are just numbers so you can encode anything as an image
2023-07-02 06:17:53
And yes, you could also encode arbitrary info in jxl art (MA trees), but it would be more convenient to just encode it in the pixel values themselves 🙂
DZgas Ж
VcSaJen If you don't care about hiding it, you can just use EXIF.
2023-07-02 07:21:07
Boring
190n
2023-07-03 12:19:54
i'm seeing that for a jxl which is a losslessly transcoded jpeg, decoding to pixels is several times _faster_ than decoding to jpeg -- is this expected?
2023-07-03 12:20:11
decoding to pixels also has better gains from adding threads
2023-07-03 12:21:44
very approx numbers as i haven't tried many iterations or many files. speeds in MP/s. my cpu has 16 logical threads. ``` threads: 1 16 dec to pixels 55 260 dec to JPEG 13 14 ```
jonnyawsom3
2023-07-03 12:27:31
Decoding to jpeg is for compatibility more than anything as far as I'm aware
190n
2023-07-03 12:29:53
but this is a file that was losslessly transcoded from jpeg
2023-07-03 12:30:03
it's not decoding to pixels and then encoding a new jpeg, it's just recovering the original jpeg
jonnyawsom3
2023-07-03 01:25:03
But recovering the old jpeg means reversing the transformations and using the recostruction data, rather than just using the pixels already decoded
190n
2023-07-03 01:27:28
hm, maybe i need to learn more about how reconstruction works. i had thought that decoding to pixels would decode to jpeg and then just decode the resulting jpeg.
2023-07-03 01:29:59
i had understood that a use case for jpeg xl would be recompressing existing jpegs, and converting them back to jpeg on the fly for clients that don't support jpeg xl. is that not actually intended? it doesn't seem like a great idea if decoding to jpeg is this slow.
jonnyawsom3
2023-07-03 01:34:01
Bear in mind, I'm hungover and very tired at 2am from getting stuck in London last night, so take everything with a spoon of salt Decode to pixels uses the normal JXL output and just converts it to whatever format you specify, I'm making assumptions based on the reconstruction being so slow and the fact it needs extra data to be done
190n
2023-07-03 01:34:59
in that example i used ppm and wrote to /dev/null so the output conversion should have been ~instant
2023-07-03 01:37:03
so the way i'm trying to wrap my head around this now is that lossless jpeg transcoding uses some subset of jpeg xl operations that also exist in jpeg, but it somehow represents their results more efficiently than jpeg does so you end up with a smaller file. and then it has some extra data that lets you reverse those operations into the form used by jpeg. is that sorta correct?
jonnyawsom3
190n in that example i used ppm and wrote to /dev/null so the output conversion should have been ~instant
2023-07-03 01:38:42
Hmm, well 4x slower doesn't seem bad for reconstruction then, assuming it can only use a single thread due to transcoding back as a continuous stream
190n so the way i'm trying to wrap my head around this now is that lossless jpeg transcoding uses some subset of jpeg xl operations that also exist in jpeg, but it somehow represents their results more efficiently than jpeg does so you end up with a smaller file. and then it has some extra data that lets you reverse those operations into the form used by jpeg. is that sorta correct?
2023-07-03 01:41:28
If I recall there's 3 methods of using JXL A normal JXL file that requires a JXL decoder A transcoded jpeg that can be read by JXL decoders or turned back into the original jpeg for legacy decoders A jpeg compatible JXL file that can be read by either assuming filetype isn't an issue (Yet to be seen but I think I saw it in some old slides)
190n
Hmm, well 4x slower doesn't seem bad for reconstruction then, assuming it can only use a single thread due to transcoding back as a continuous stream
2023-07-03 01:43:09
i was surprised by these results because i thought lossless jpeg transcoding was something like `image.jpg.gz` -- i.e. since the pixels were encoded as jpeg _and then_ recompressed as jxl or anything else, to decode to pixels you would have to decode back to jpeg _and then_ decode that jpeg. so decoding to jpeg should be faster than decoding to pixels.
2023-07-03 01:43:36
i also thought this was the case because i'd heard that JPEG XL decoders also need the capability to decode JPEGS
190n i was surprised by these results because i thought lossless jpeg transcoding was something like `image.jpg.gz` -- i.e. since the pixels were encoded as jpeg _and then_ recompressed as jxl or anything else, to decode to pixels you would have to decode back to jpeg _and then_ decode that jpeg. so decoding to jpeg should be faster than decoding to pixels.
2023-07-03 01:43:45
but it seems like this isn't actually how that works
jonnyawsom3
2023-07-03 01:44:59
Best to wait for morning over here when most of the devs wake up, I'm not entirely sure of it myself and I know my memory isn't the greatest. Wouldn't want to waste your night feeding you wrong info
190n
2023-07-03 01:45:54
fair
2023-07-03 01:46:02
well, thanks for your help anyway
Tirr
2023-07-03 01:46:45
jpeg reconstruction had a speed boost recently https://github.com/libjxl/libjxl/pull/2534
jonnyawsom3
190n i was surprised by these results because i thought lossless jpeg transcoding was something like `image.jpg.gz` -- i.e. since the pixels were encoded as jpeg _and then_ recompressed as jxl or anything else, to decode to pixels you would have to decode back to jpeg _and then_ decode that jpeg. so decoding to jpeg should be faster than decoding to pixels.
2023-07-03 01:47:18
The one thing I can say for certain is that the jpeg isn't just in a zip file, since there's a flag to not include the reconstruction metadata in the JXL file when transcoding, if that gives any leads
2023-07-03 01:47:31
Also that pull, if you're on an old version
190n
Tirr jpeg reconstruction had a speed boost recently https://github.com/libjxl/libjxl/pull/2534
2023-07-03 01:47:38
https://github.com/libjxl/libjxl/issues/2572 oh, reference issue is my question exactly
2023-07-03 01:48:06
seems like that pull hasn't landed in any release? so i definitely wouldn't have it
2023-07-03 01:48:16
i have 0.8.2 from arch
2023-07-03 01:48:18
i'll try building from git
jonnyawsom3
2023-07-03 01:48:50
Ah, then yeah. No releases planned until 1.0 currently, can also grab from GitHub actions if that's any faster
190n
Tirr jpeg reconstruction had a speed boost recently https://github.com/libjxl/libjxl/pull/2534
2023-07-03 03:13:41
oh, reading this more closely it seems related to what i was seeing in <#804324493420920833>, where `JxlDecoderReleaseJPEGBuffer` would report that none of the output buffer had been written to even though it actually had written what looked like jpeg data into the buffer
2023-07-03 03:13:43
interesting
190n very approx numbers as i haven't tried many iterations or many files. speeds in MP/s. my cpu has 16 logical threads. ``` threads: 1 16 dec to pixels 55 260 dec to JPEG 13 14 ```
2023-07-03 03:44:08
ok with latest git build, singlethreaded decode to jpeg is 48MP/s. much better
jonnyawsom3
2023-07-03 03:46:38
Probably scales somewhat exponentially for the size of the image too, so should be a very good speedup indeed
_wb_
2023-07-03 05:27:35
JPEG reconstruction does this: jxl entropy decode to get quantized coefficients, jpeg entropy encode To pixels it is: jxl entropy decode, dequantization and inverse DCT, YCbCr to RGB.
2023-07-03 05:28:32
More work overall to decode to pixels, but it parallelizes much better (both simd and threading)
190n
2023-07-03 05:35:08
i see, thanks
2023-07-03 05:35:28
and thanks for speeding it up right on time for me to start playing around with this stuff, lol
Nova Aurora
_wb_ More work overall to decode to pixels, but it parallelizes much better (both simd and threading)
2023-07-03 07:02:02
Is that a hard limit or just because of development priorities?
_wb_
2023-07-03 07:05:24
We can't change how jpeg entropy coding works
2023-07-03 07:07:16
I suppose we _could_ try a threaded jpeg encode in stripes of one group high, would that be worth trying <@179701849576833024> ?
veluca
2023-07-03 07:44:06
... maybe?
yurume
2023-07-04 02:44:16
continuing question from https://discord.com/channels/794206087879852103/848189884614705192/1124850901056761886: the easiest way would be to put a zero-duration frame which would be immediately overwritten completely
username
2023-07-05 09:13:50
I was looking at random github repos and I found a random issue page showing lossless JXL performing noticeably worse then lossless WebP: https://github.com/diasurgical/devilutionX/issues/6309
2023-07-05 09:14:29
with effort 9 in cjxl I can only get the file down to around 473KB
2023-07-05 09:15:02
here is the image (hopefully discord doesn't mess with it in a bad way)
VcSaJen
2023-07-05 09:16:03
I agree that PNG screenshot support should be added first
username
2023-07-05 09:18:15
it seems like that's what they are gonna do for that project
2023-07-05 09:18:54
but besides that project it seems like palette detection isn't working with that image in cjxl?
2023-07-05 09:19:31
maybe I shoulda posted this stuff in <#804324493420920833> since format wise JXL should be smaller here
VcSaJen
2023-07-05 09:19:36
How many colors ImageMagick report?
username
2023-07-05 09:22:04
I do not know how to use ImageMagick however that PNG has a palette and is 8-bit so in theory it shouldn't have more then 256 colors from what I understand
2023-07-05 09:23:31
(I know this isn't ImageMagick)
VcSaJen
2023-07-05 09:24:31
JXL lossless average compression is already high enough, but it really need to improve 1% worst compression and 0.1% worst compression.
fab
2023-07-05 04:55:59
Jxl does it's best at d 0.74 e8
jonnyawsom3
2023-07-05 07:20:59
We're talking about lossless
2023-07-06 12:35:30
Was going to try an experiment with some screenshots of Mario, then realised the JXL files also can't get below the original. Might be related to the screenshot above, maybe not. Worth mentioning anyway <https://mario.wiki.gallery/images/1/14/FireMarioSMB.png>
2023-07-06 12:39:58
Seems like effort 10 can shave 300 bytes consistently off the screenshots, so something has a fairly big impact but I'm not sure what <https://mario.wiki.gallery/images/d/d7/SMB_Title_Screen.png>
monad
Was going to try an experiment with some screenshots of Mario, then realised the JXL files also can't get below the original. Might be related to the screenshot above, maybe not. Worth mentioning anyway <https://mario.wiki.gallery/images/1/14/FireMarioSMB.png>
2023-07-06 07:55:58
`-d 0 -e 9 -I 0 -P 0 --patches 0`
Seems like effort 10 can shave 300 bytes consistently off the screenshots, so something has a fairly big impact but I'm not sure what <https://mario.wiki.gallery/images/d/d7/SMB_Title_Screen.png>
2023-07-06 07:56:21
`-d 0 -e 9 -I 0 -P 0`
2023-07-06 07:58:05
more efficient than doing e10
2023-07-06 08:28:27
add `--brotli_effort 11` to beat e10, and beat WebP for second image
_wb_
2023-07-06 08:28:59
with patch detection that could actually detect all those repeating tiles, probably it could be much better — just need to figure out an algorithm for that that isn't super slow
monad
2023-07-06 08:31:05
It's curious to me that patches are too costly for image 1, while the bricks at the top are patched (except for below the coin)
2023-07-06 08:39:06
I guess because the content is so simple, signaling patches ends up costing more than otherwise
_wb_
2023-07-06 08:40:02
yeah, it's low color count, and just doing lz77 can be cheaper than signaling patches
2023-07-06 08:42:48
if the color count makes pixels fit in 4 bits, PNG (and I suppose WebP too?) can do bitpacking (putting two pixels in a byte) while in JXL we don't have that as a format-level thing — we also don't do byte-based entropy coding in the first place.
2023-07-06 08:44:11
We could experiment with combining multiple pixels into one symbol though, even though that's not a format-level thing in JXL: the modular transform chaining could be exploited to do something quite similar