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

website

To discuss updates to the jpegxl.info community website

KKT
2024-10-02 09:26:41
Oh wait. I did Lemme see why it's not on the one online.
2024-10-02 09:41:24
I'll make the edits to the star ratings mentioned above as well.
2024-10-02 09:57:08
Before I upload it, any more discussion on the stars? I made them mathematically match the lines below, up to a 1/4 of a point.
CrushedAsian255
2024-10-03 02:30:30
Maybe we should add text to the right of the jpeg xl column or maybe onhover cause otherwise people might get suspicious on why JXL is the best for everything and it looks like we are just patting ourselves on the back
2024-10-03 02:30:42
Not sure if what I just said makes sense hope you understand
KKT
2024-10-03 02:42:27
Yes, but it's currently an SVG. Maybe that can wait until it's HTMLized?
CrushedAsian255
KKT Yes, but it's currently an SVG. Maybe that can wait until it's HTMLized?
2024-10-03 04:00:53
what exactly do you mean by HTMLized? like converting it to a html table?
2024-10-03 04:01:02
isn't svg already part of the html spec?
KKT
2024-10-03 04:16:46
It was on the list to be converted to HTML and CSS, we just hadn't gotten around to it. I have some code started somewhere. We wanted to pin the header column and the JXL column at the left so the others could be swiped to compare.
w
2024-10-03 04:33:34
oh like an actual table
Demiurge
KKT Before I upload it, any more discussion on the stars? I made them mathematically match the lines below, up to a 1/4 of a point.
2024-10-03 04:38:48
Isn't lossless AVIF even worse than PNG?
username
2024-10-03 04:39:10
only sometimes
Demiurge
2024-10-03 04:39:50
jpeg2000 and png should be about the same lossless wise right?
2024-10-03 04:40:23
JPEG and PNG are both equally not parallel
KKT
2024-10-03 04:40:35
Like this: https://stackoverflow.com/questions/1312236/how-do-i-create-an-html-table-with-a-fixed-frozen-left-column-and-a-scrollable-b
Meow
2024-10-03 04:41:19
PNG with strong (and very slow) optimisations could be smaller than lossless AVIF
KKT
2024-10-03 04:41:34
I also switched AVIF to 10/12 Bit
Demiurge
2024-10-03 04:42:38
Also isn't the HEIF container good for authoring workflows and storing multiple layers etc?
2024-10-03 04:42:54
I don't know why the JXL container would be any better for authoring
KKT
2024-10-03 04:55:43
HEIF stinks at lossless? I guess I could move it up one?
Meow
2024-10-03 04:58:40
My own tests told me that lossless HEIC is even slightly larger than lossless AVIF
Quackdoc
2024-10-03 04:58:43
I would not be surprised if avic or whatever the avc one is, beats avif at lossless rn
2024-10-03 04:59:39
the issue with avif is that aomenc keeps changing shit, not as bad as svtav1, but it does need regularly retested and rechecked what args do
KKT
2024-10-03 05:00:39
We should also put a footnote about when this was done I guess…
Demiurge
2024-10-03 05:18:23
I haven't thought about that angle. Lossless is important for authoring I guess... But can't it contain PNG layers too?
_wb_
2024-10-03 06:29:08
AVIF is based on MIAF which is a subset of HEIF, I'm not sure what it allows in terms of layers.
2024-10-03 06:31:34
HEIF does support layers, so in that respect it's in principle good for authoring workflows. Layer support is already separately in the table as "Overlays".
2024-10-03 06:35:03
For authoring workflow suitability, I was thinking more about things like "does it have a fast lossless encoder?", "can it do CMYK?", "can it store selection masks, spot color channels, etc?", "how does it handle potentially large amounts of metadata?", etc
w
2024-10-03 06:37:07
fast probably the only one that matters because programs use their own formats anyway
2024-10-03 06:37:14
so they all suck except for png
_wb_
2024-10-03 06:41:32
I suppose it could make sense to add TIFF to the table
w
2024-10-03 06:42:30
oh yeah tiff is the best
CrushedAsian255
2024-10-03 06:42:55
tiff's qualities rely a lot on which specific subset / configuration of TIFF is being used
2024-10-03 06:44:11
also might be worth mentioning tiling as an asterisk for HEIC and AVIF
2024-10-03 06:44:29
as iPhone's HEIC files are 8064x6048
Quackdoc
2024-10-03 06:44:39
jpg, png, tiff[1], tiff[2], tiff[3], tiff[4]
CrushedAsian255
2024-10-03 06:44:58
argh
_wb_
2024-10-03 06:53:40
DNG is also TIFF 🙂
2024-10-03 06:54:02
even Exif is really just a small TIFF
2024-10-03 06:55:11
so yes, TIFF can mean a lot of things, and it's a moving target
CrushedAsian255
2024-10-03 06:56:40
you can just stuff a `jxlc` into a tiff and say "look how good TIFF's compression is"
_wb_
2024-10-03 07:00:24
yeah, TIFF can do anything, but I guess for the sake of comparison I would look at something like baseline TIFF 6 or something
Quackdoc
2024-10-03 07:03:07
we need a "yo dawg. I heard you like tiff so I put a tiff in your tiff..." meme.
KKT
2024-10-03 07:20:24
I'd been working on this but hadn't fixed the scrolling issues on mobile. Maybe if someone has some time to sort it out ( I don't right now). Also this is old and doesn't have the current star and bar ratings correct. In fact, they might be random from when I built it.
2024-10-03 07:29:39
In the Figma file (where the SVG is from), we'd only set it up for 1/4 stars. This does anything, obviously.
2024-10-03 07:51:35
In the mean time, I've replaced the current SVG with the changes discussed.
Demiurge
_wb_ For authoring workflow suitability, I was thinking more about things like "does it have a fast lossless encoder?", "can it do CMYK?", "can it store selection masks, spot color channels, etc?", "how does it handle potentially large amounts of metadata?", etc
2024-10-03 08:48:44
Ah, makes sense
KKT
2024-10-05 10:20:26
OK, I created a the new page on the site: https://jpegxl.info/resources/battle-of-codecs-new.html Still isn't working properly on mobile (I cannot get that first column to stick). Maybe someone can help it out and then we can swap with currently one? I know you will, but check the bars and stars again. I _think_ I copied over everything correctly…
Quackdoc
2024-10-05 10:31:24
you should more professional formats like EXR, and also add at the bottom something like *Tiff is not mentioned here. There are many competing forms of tiff, of which there are differing degrees of support and compression, It is not possible to make a meaningful comparison, <Format here> would be the closest competing format which can be used as a baseline. <format here> likely being EXR it may also be worth specifying what forms of alpha as you have <Associated/Premultiplied alpha> <Straight alpha> APNG should have both an X and a check because APNG is not part of the official PNG spec, and some applications will just out right not work, and many will still only display the first frame.
spider-mario
2024-10-05 10:34:40
APNG is part of the PNG spec now
2024-10-05 10:34:42
https://www.w3.org/TR/png-3/#apng-frame-based-animation
Quackdoc
2024-10-05 10:35:32
wait what [av1_woag](https://cdn.discordapp.com/emojis/852007419474608208.webp?size=48&quality=lossless&name=av1_woag)
spider-mario
2024-10-05 10:36:55
well, strictly speaking, I guess it’s still a draft
Quackdoc
2024-10-05 10:39:08
wait, is w3c the official spec now? I thought libpng spec was still the official one. last I checked libpng doesn't have apng yet. or are they still having a spitting fight over standards? Im willing to say w3c is official spec since w3c is what most people actually care about, but still curious
2024-10-05 10:40:06
oh it seems like it is 0.0
spider-mario
2024-10-05 10:40:34
interesting times, right?
lonjil
2024-10-05 10:41:32
don't the libpng people still claim that straight alpha is a good idea and totally wasn't a mistake? On that basis alone I'm inclined to go with w3c
Quackdoc
2024-10-05 10:43:06
well its good on low end hardware
CrushedAsian255
lonjil don't the libpng people still claim that straight alpha is a good idea and totally wasn't a mistake? On that basis alone I'm inclined to go with w3c
2024-10-05 10:45:39
What is the difference?
lonjil
2024-10-05 10:47:31
the difference is that straight alpha is bad, and associated alpha is good (actually, it's 1am, I am too tired to talk about it, so hopefully someone else can give insight)
spider-mario
2024-10-05 10:48:52
I’ll put this here again (PTGui):
Quackdoc
spider-mario I’ll put this here again (PTGui):
2024-10-05 10:52:32
chad associated alpha [av1_woag](https://cdn.discordapp.com/emojis/852007419474608208.webp?size=48&quality=lossless&name=av1_woag) the best term
CrushedAsian255 What is the difference?
2024-10-05 10:52:50
"straight" alpha is cheap to compute, associated alpha actually works more or less the same way light does
2024-10-05 10:53:48
with straight alpha pixels are just that, RGB = color, A = visibility. however with associated alpha RGB = energy, A = how much energy gets imparted on the background
spider-mario
CrushedAsian255 What is the difference?
2024-10-05 10:55:35
“straight” alpha: blended = alpha × fg + (1 − alpha) × bg associated alpha: blended = fg + (1 − alpha) × bg
2024-10-05 10:55:50
consequence: with associated alpha, you can have complete transparency (alpha = 0) that still adds stuff on top
Quackdoc
2024-10-05 10:56:40
associated alpha:
spider-mario
2024-10-05 10:56:43
with straight alpha, that’s not possible because whatever pixel data you have will be multiplied by 0
Quackdoc
2024-10-05 10:56:58
straight alpha:
CrushedAsian255
2024-10-05 10:57:12
So in associated alpha the A is more like an “opacity” where as in straight it’s a lerp factor?
spider-mario
2024-10-05 10:57:24
yep
CrushedAsian255
2024-10-05 10:57:44
So true “don’t add anything” transparent for Associated has to be 0,0,0,0?
2024-10-05 10:57:48
Otherwise it’s just adding?
spider-mario
2024-10-05 10:57:51
yes
lonjil
2024-10-05 10:58:04
I wish more formats supported 3-channel alpha
spider-mario
2024-10-05 10:58:15
so with straight alpha, discarding the pixel values of `alpha=0` pixels is a valid compression technique
2024-10-05 10:58:18
with associated alpha, it’s not
CrushedAsian255
2024-10-05 10:58:31
Which does jpeg xl use?
lonjil
2024-10-05 10:58:35
either
CrushedAsian255
2024-10-05 10:59:10
Can you make tinted glass using associated?
spider-mario
2024-10-05 10:59:24
that’s sort of independent from that, AFAICT
2024-10-05 10:59:31
but EXR does support separate r, g and b alphas
CrushedAsian255
2024-10-05 10:59:44
Can jxl?
Quackdoc
2024-10-05 11:01:28
the demo is janky but it gives the gist http://distantsoulsdev.blogspot.com/2013/02/premultiplied-alpha-online-interactive.html
lonjil
2024-10-05 11:01:42
brb joining the swedish standards org to become a jpeg committee member with the power to veto future versions of the jxl standard unless they specify standardized extra channel names for per color alpha
Quackdoc
CrushedAsian255 Can you make tinted glass using associated?
2024-10-05 11:02:01
yes
2024-10-05 11:02:27
you can also represent things like candle flames which have lots of energy, but no physical opacity
lonjil
lonjil brb joining the swedish standards org to become a jpeg committee member with the power to veto future versions of the jxl standard unless they specify standardized extra channel names for per color alpha
2024-10-05 11:03:43
(hm, this could be specified in a way that sorta works with older decoders and viewers. just need to make the current alpha be "average alpha" and then have two different chroma-alpha channels that can be combined with the regular channel to give you red, green, and blue alpha...)
spider-mario
CrushedAsian255 Can jxl?
2024-10-05 11:05:59
it can to the extent that you can add extra channels and decide that they represent those, but as Lonnie alludes to, I believe that’s about the current extent of it
2024-10-05 11:06:10
there isn’t a dedicated enum value in `JxlExtraChannelType`
CrushedAsian255
2024-10-05 11:06:23
Is there anything that straight alpha can do that premultiplied can’t?
Quackdoc
2024-10-05 11:06:28
be cheap
2024-10-05 11:07:33
if you are doing compositing on a low end cpu like embedded, straight alpha performs better
lonjil
2024-10-05 11:07:47
That seems unlikely
CrushedAsian255
2024-10-05 11:07:51
It sounds like more work though?
Quackdoc
2024-10-05 11:07:58
it is also less efficient to compress as alluded to earlier
CrushedAsian255
2024-10-05 11:07:58
There is now an extra multiplication
Quackdoc
CrushedAsian255 There is now an extra multiplication
2024-10-05 11:08:08
no, that is a misnomer
2024-10-05 11:08:16
this is why premultiplied is a dumb term
lonjil
2024-10-05 11:09:07
Associated should have smaller color values, which would compress better ;)
Quackdoc
2024-10-05 11:09:16
the math looks linger, but hardware can optimize it better
lonjil
Quackdoc the math looks linger, but hardware can optimize it better
2024-10-05 11:09:48
That seems unlikely
CrushedAsian255
lonjil Associated should have smaller color values, which would compress better ;)
2024-10-05 11:10:02
With Associated don’t you also lose quality in low-opacity sections?
Quackdoc the math looks linger, but hardware can optimize it better
2024-10-05 11:10:35
How? It’s literally just 1 less operation, how would a multiplication be faster than not doing one?
lonjil
CrushedAsian255 With Associated don’t you also lose quality in low-opacity sections?
2024-10-05 11:10:46
Sure, but it's not like your low end 8 bit pipeline could use that precision anyway
CrushedAsian255
lonjil Sure, but it's not like your low end 8 bit pipeline could use that precision anyway
2024-10-05 11:11:32
I almost always use rgba16 or rgba32/hdr
spider-mario
2024-10-05 11:11:51
then the precision of the pixel values should also be just fine
2024-10-05 11:11:54
it goes both ways
2024-10-05 11:12:33
(well, especially with EXR, which is floating point anyway)
CrushedAsian255
spider-mario (well, especially with EXR, which is floating point anyway)
2024-10-05 11:13:00
Can jpeg xl EXR data losslessly?
2024-10-05 11:13:12
JXL should be able to do floating point iirc
spider-mario
2024-10-05 11:13:15
yes
2024-10-05 11:13:37
albeit maybe only the 16-bit variant
2024-10-05 11:14:17
(which is the default and, iirc, the only one exposed by EXR’s basic API)
CrushedAsian255
2024-10-05 11:14:34
Why not 32bit? Isn’t it just ieee754?
spider-mario
2024-10-05 11:14:55
EXR’s default is half-precision
CrushedAsian255
2024-10-05 11:15:15
I mean EXR to JXL
spider-mario
2024-10-05 11:16:04
yes, I meant that JXL can losslessly compress 16-bit EXRs
CrushedAsian255
2024-10-05 11:16:28
Can it not compress 32bit losslessly?
spider-mario
2024-10-05 11:16:28
https://openexr.com/en/latest/TechnicalIntroduction.html > HALF: 16-bit floating-point numbers; for regular image data.
CrushedAsian255
spider-mario https://openexr.com/en/latest/TechnicalIntroduction.html > HALF: 16-bit floating-point numbers; for regular image data.
2024-10-05 11:16:46
I am aware of the different data types
spider-mario
CrushedAsian255 Can it not compress 32bit losslessly?
2024-10-05 11:18:24
I’m a bit fuzzy on the details (<@794205442175402004> should be able to correct me / elaborate), but from what I recall, lossless can do up to 24 bits
CrushedAsian255
2024-10-05 11:18:50
I thought it was 24 bit int or 32 bit float iirc
spider-mario
2024-10-05 11:19:11
ah, could be
2024-10-05 11:19:45
but anyway, from what I remember, in the current code, when we read OpenEXR files, we do so using the basic API, which gives us half-precision values
lonjil
2024-10-05 11:20:07
Yes, JXL modular does 32 bit floating point losslessly
CrushedAsian255
2024-10-05 11:20:38
Not sure why it can’t do 32 bit int lossless
lonjil
2024-10-05 11:21:06
Because it uses fp32 math and fp32 can only represent integers up to that limit
CrushedAsian255
2024-10-05 11:21:38
Isn’t modular in the integer domain not in float domain?
lonjil
2024-10-05 11:21:58
It does a bit of both as I recall
_wb_
2024-10-05 11:22:25
lossless float32 works, lossless uint32 doesn't because 1) we use int32 internally in modular buffers, 2) libjxl uses float32 internally (also in modular mode, since there are still things like frame blending that are only implemented with float32 buffers)
CrushedAsian255
_wb_ lossless float32 works, lossless uint32 doesn't because 1) we use int32 internally in modular buffers, 2) libjxl uses float32 internally (also in modular mode, since there are still things like frame blending that are only implemented with float32 buffers)
2024-10-05 11:22:49
Also does libjxl only use floating point operations that are guaranteed to be the exact same across architectures?
lonjil
_wb_ lossless float32 works, lossless uint32 doesn't because 1) we use int32 internally in modular buffers, 2) libjxl uses float32 internally (also in modular mode, since there are still things like frame blending that are only implemented with float32 buffers)
2024-10-05 11:25:28
Some modular transformations increase the bit depth, right? So you can't store 16 bit int data in level 5 images due to it allowing 16 bit buffers. So even without the fp32 stuff, int32 wouldn't work or would at least work poorly.
_wb_
CrushedAsian255 Also does libjxl only use floating point operations that are guaranteed to be the exact same across architectures?
2024-10-05 11:26:30
not sure — if you just want to do lossless float32 without frame blending or any other things that require operations to be done in float arithmetic, then there is no problem, but I dunno what happens if there is stuff happening, I assume there might be differences between platforms...
Quackdoc
CrushedAsian255 How? It’s literally just 1 less operation, how would a multiplication be faster than not doing one?
2024-10-05 11:26:51
really simple reason, DRM planes work like that
2024-10-05 11:26:54
at least they used to
CrushedAsian255
_wb_ not sure — if you just want to do lossless float32 without frame blending or any other things that require operations to be done in float arithmetic, then there is no problem, but I dunno what happens if there is stuff happening, I assume there might be differences between platforms...
2024-10-05 11:27:32
How does this stay lossless then?
_wb_
lonjil Some modular transformations increase the bit depth, right? So you can't store 16 bit int data in level 5 images due to it allowing 16 bit buffers. So even without the fp32 stuff, int32 wouldn't work or would at least work poorly.
2024-10-05 11:28:22
yes, lossless float32 can only use simple modular, no RCTs or Squeeze — though in principle you could use those if the image is in [0,1] range, since then the first two bits are zeroes so you only need 30-bit numbers...
CrushedAsian255
Quackdoc really simple reason, DRM planes work like that
2024-10-05 11:28:32
Never knew Widevine made A350s
Quackdoc
2024-10-05 11:28:49
[av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&quality=lossless&name=av1_dogelol)
CrushedAsian255
_wb_ yes, lossless float32 can only use simple modular, no RCTs or Squeeze — though in principle you could use those if the image is in [0,1] range, since then the first two bits are zeroes so you only need 30-bit numbers...
2024-10-05 11:30:32
Maybe (eventually in the far future) some kind of “JXL Custom” thing can be added (like Opus Custom) that adds a bunch of these hacks for applications that might want them
lonjil
2024-10-05 11:30:53
Looking forward to the day when DICOM shows up like "hey we need 38 bits of precision if we're going to replace j2k with jxl" and we end up with Extended JXL with fp64
Quackdoc
2024-10-05 11:31:45
oh shit, actually it looks like they may do both now 0.0
2024-10-05 11:32:02
I guess it would be hardware dependant then
_wb_
CrushedAsian255 How does this stay lossless then?
2024-10-05 11:32:05
pfm -> jxl -> pfm should be lossless. But I'm not sure what happens if you have e.g. a two-layer float32 image with alpha blending, it's possible that the exact outcome of the blended image will depend on the platform.
lonjil
2024-10-05 11:33:14
It is in principle to have exact reproducibility across platforms that are ieee 754 compliant, but there are many practical annoyances
2024-10-05 11:33:56
Like any random library running in the same process may flip some flag that controls how fp math works
_wb_
lonjil Looking forward to the day when DICOM shows up like "hey we need 38 bits of precision if we're going to replace j2k with jxl" and we end up with Extended JXL with fp64
2024-10-05 11:35:17
I'm not aware of any type of imaging sensor where float32 is not plenty of precision to store the data. That limit of 38 bits in j2k has always puzzled me: why would anyone want to work with such an impractical bit depth?
lonjil
2024-10-05 11:35:46
The requirement came from medical imaging
2024-10-05 11:36:15
I have no idea why they wanted 40 bits with 2 lost due to transformations, but that's why j2k has that limit
2024-10-05 11:37:17
My unsubstantiated theory is that medical people haven't heard of floating point, and so store wide ranging low precision data in high bit depth
2024-10-06 09:02:34
> The upper limit of 40 on Bits Allocated (0028,0100) and 38 on Bits Stored (0028,0101) reflects the maximum JPEG 2000 sample precision of 38 and the DICOM requirement to describe Bits Allocated (0028,0100) as multiples of bytes (octets). that's a really weird-ass requirement. I guess they wanted to be able to store 32 bit data, but the reversible color transform requires extra bits, but extra bits had to be added in full byte increments, thus resulting in 38 bits.
CrushedAsian255
2024-10-06 09:23:02
Can jxl store a 24 bit float?
lonjil
2024-10-06 09:26:16
what's a 24 bit float?
CrushedAsian255
2024-10-06 09:39:33
not a specific defined thing
2024-10-06 09:40:34
you could give 17 bit mantissa, 6 bit exponent, 1 bit sign
2024-10-06 09:40:46
or some other arbitrary combination
Tirr
2024-10-06 09:45:30
yes, bits per sample and exponent bits can be set and the samples are interpreted as in IEEE 754 (see Section D.3.5)
CrushedAsian255
2024-10-06 09:47:05
how does it upsample it?
2024-10-06 09:47:12
just pad the mantissa with 0s?
Demiurge
2024-10-06 09:59:47
It's like a 32 bit float but with more zeroes
2024-10-06 10:01:06
Is negative zero a mathematically significant thing?
2024-10-06 10:01:53
I don't think it is
CrushedAsian255
2024-10-06 10:02:50
in floats it is
2024-10-06 10:03:04
a 0 doesn't mean *0*, it just means "smaller than any other number that's representable"
2024-10-06 10:03:13
so let's say the smallest number you can represent is 0.125
2024-10-06 10:03:23
1/16 will equal 0
2024-10-06 10:03:28
but -1/16 will equal -0
Demiurge
2024-10-06 10:53:28
But not mathematically meaningful or distinct from 0
2024-10-06 10:53:45
Only in computers
KKT
2024-10-08 05:13:19
HDR test page from <@794205442175402004>'s personal site added to the site: https://jpegxl.info/resources/hdr-test-page.html
2024-10-09 06:06:05
So this section on the front page bugged me a bit but I never fixed it:
2024-10-09 06:06:18
**High Bit Depth Support** Up to 32 bits per channel for higher precision image representation, enabling more accurate color reproduction — billions instead of millions of colors. Ensure your images maintain their vibrancy in the most demanding applications.
2024-10-09 06:07:17
Since it's obviously a lot more than billions… or trillions…
2024-10-09 06:13:23
How about something like Not just millions, billions or trillions of colors… 7.92 x 10²⁸ to be exact. Move beyond the limitations of 8, 10 or 12 bits — capture every subtle detail with an extraordinary range of shades. Perfect for applications that demand the highest fidelity and realism in visual content.
A homosapien
2024-10-09 06:15:07
Octillion is the word you are looking for
2024-10-09 06:16:38
either way its around 21 orders of magnitude more colors than typical a 8 bit image
2024-10-09 06:17:07
which is completely unfathomable
KKT
2024-10-09 06:21:33
Oh yes, I'd looked it up and forgot about it.
2024-10-09 06:22:53
So that's 79.2 Octillion?
A homosapien
2024-10-09 06:24:22
Yes, its an insane number. To put that difference in to perspective, that is like comparing the speed of bedrock erosion to the speed of light.
2024-10-09 06:26:33
Another example is the size of a human compared to the milky way galaxy That's how big of a difference 21 orders of magnitude is
_wb_
2024-10-09 07:58:15
It's float so you effectively get even more orders of magnitude difference. But that's pretty much just theoretically, in practice it's just "there is no limit" since I don't think there will ever be any sensor that is precise enough to be limited by float32.
AccessViolation_
2024-10-09 08:23:59
I thought 32 bit could be integer and float. Does it only do float at that bit depth?
jonnyawsom3
2024-10-09 08:26:14
Currently libjxl uses float32 internally, which can only handle int24 losslessly. It can be raised with a spec addition in future but for now there's no reason to
CrushedAsian255
Currently libjxl uses float32 internally, which can only handle int24 losslessly. It can be raised with a spec addition in future but for now there's no reason to
2024-10-09 08:30:04
Advanced Profile anyone?
AccessViolation_
2024-10-09 08:32:34
That does limit my theoretical idea for an astrophotography format with crazy dynamic range *somewhat*, but 2^24 with a linear luminance profile is still 65536 "orders of sRGB" to work with for the dimmest and brightest objects together in an image
lonjil
AccessViolation_ That does limit my theoretical idea for an astrophotography format with crazy dynamic range *somewhat*, but 2^24 with a linear luminance profile is still 65536 "orders of sRGB" to work with for the dimmest and brightest objects together in an image
2024-10-09 08:33:52
but you still have the floating point exponent for dynamic range
2024-10-09 08:34:28
you get 24 bits of precision, and a lot of dynamic range
_wb_
2024-10-09 08:37:20
Basically doing linear in float32 is like doing something like HLG in int32
AccessViolation_
2024-10-09 08:37:53
My main concern with float was that values near zero would have more precision. This is an issue because the goal is not for users to view the image as is, there would be an exposure slider or bracketing range which could be adjusted to bring different luminance ranges into 'focus' (a range that your display can handle). It would mean you get a lot of precision on for example a planet, but when you adjust the exposure to the star next to it, you find there's a lot more banding because its values are on the higher end in the float range
_wb_
2024-10-09 08:40:10
Still, usually a log space makes more sense for light than a linear one, if you want to allocate precision in an optimal way.
AccessViolation_
_wb_ Basically doing linear in float32 is like doing something like HLG in int32
2024-10-09 08:40:12
Hmm I guess it would be possible to compensate for the size/precision trade off in the float range with a profile
_wb_
2024-10-09 08:40:57
If you adjust exposure that's a multiplicative thing, not an additive thing. So log space will be better than linear.
2024-10-09 08:41:55
Whether you get to a log space via a transfer function or via the numerical representation matters less.
lonjil
AccessViolation_ My main concern with float was that values near zero would have more precision. This is an issue because the goal is not for users to view the image as is, there would be an exposure slider or bracketing range which could be adjusted to bring different luminance ranges into 'focus' (a range that your display can handle). It would mean you get a lot of precision on for example a planet, but when you adjust the exposure to the star next to it, you find there's a lot more banding because its values are on the higher end in the float range
2024-10-09 08:43:40
no, all values would have 24 bits of precision!
AccessViolation_
2024-10-09 08:43:46
If I understand correctly, I could use a log transfer function to make it so that it can represent about the same amount of values between 1 and 20 as between 10000 and 10020?
lonjil
lonjil no, all values would have 24 bits of precision!
2024-10-09 08:45:31
floating point gives you a 24 bit "window" that you can slide up and down
AccessViolation_
2024-10-09 08:46:00
Oh, that works
2024-10-09 09:05:10
Well I've got a long way to go before I can even attempt a project like this for sure. Eventually I think a screenshot mod for SpaceEngine would be plausible, as the game natively has an adjustable exposure settings and space objects have accurate relative luminance. Then forking a decoder/viewer would be harder still. I just got started with QOI yesterday, which seemed like a good "first few steps" on a journey about image en/decoders
CrushedAsian255
AccessViolation_ Well I've got a long way to go before I can even attempt a project like this for sure. Eventually I think a screenshot mod for SpaceEngine would be plausible, as the game natively has an adjustable exposure settings and space objects have accurate relative luminance. Then forking a decoder/viewer would be harder still. I just got started with QOI yesterday, which seemed like a good "first few steps" on a journey about image en/decoders
2024-10-09 09:06:08
You don’t really need to understand the actual format to use it, the API will handle most of that for you
AccessViolation_
2024-10-09 09:08:25
Ah, that's good to know I suppose
CrushedAsian255
2024-10-09 09:09:08
You just chuck it some pixels and information about the colours and it should handle the rest
jonnyawsom3
AccessViolation_ That does limit my theoretical idea for an astrophotography format with crazy dynamic range *somewhat*, but 2^24 with a linear luminance profile is still 65536 "orders of sRGB" to work with for the dimmest and brightest objects together in an image
2024-10-09 09:13:52
There was someone where who also needed higher bitdepth, so they ended up splitting it into 2 channels and adapting their viewer to interpret it
CrushedAsian255
There was someone where who also needed higher bitdepth, so they ended up splitting it into 2 channels and adapting their viewer to interpret it
2024-10-14 01:00:25
Why would you need more than f32 depth?
jonnyawsom3
2024-10-14 01:01:20
Almost the same use case, satellite imagery with location coordinates
CrushedAsian255
2024-10-14 01:01:40
Maybe jpeg xl satellite profile with f64?
2024-10-14 01:02:11
I don’t see an inherent reason why it can’t be done, the spec is mostly bit depth agnostic apart from the headers
2024-10-14 01:02:31
Obviously the decoder would have to use f64 buffers but it should work
2024-10-14 01:06:50
Although this would probably not be very high priority as this seems like a niche use case
TheBigBadBoy - 𝙸𝚛
2024-10-25 03:14:36
where are the nightly libjxl builds link in the new website ?
2024-10-25 03:14:43
can't find it anymore [⠀](https://cdn.discordapp.com/emojis/654081052108652544.webp?size=48&quality=lossless&name=av1_Hmmm)
yoochan
TheBigBadBoy - 𝙸𝚛 where are the nightly libjxl builds link in the new website ?
2024-10-25 03:54:41
Like this ? https://artifacts.lucaversari.it/libjxl/libjxl/latest/
TheBigBadBoy - 𝙸𝚛
2024-10-25 04:01:19
yeah
2024-10-25 04:01:58
but this link was on the old website on the new one, I cannot find that link
HCrikki
2024-10-25 05:53:33
not just nightlies, official binaries for the reference library libjxl themselves seem to be not linked or downloadable anywhere on new site
2024-10-25 05:54:55
same for the github page and issues iinm
KKT
2024-10-25 06:42:42
Where were they on the old site? I'm sure we can find a good place on the new site.
TheBigBadBoy - 𝙸𝚛
KKT Where were they on the old site? I'm sure we can find a good place on the new site.
2024-10-25 06:49:26
nightly dev builds on main page, section `Software`
w
2024-10-26 03:41:02
asian website vs western website
KKT
2024-10-26 11:00:36
Done
username
2024-10-26 11:03:06
this reminds me that I still have changes I've wanted to submit to the site but I keep getting distracted by other things. mostly cleaning up links and other small things
2024-10-26 11:07:01
though I have thought about maybe restoring the extra affects for the main big JXL logo at the top of the site such as the glow and pixels but in a way that doesn't degrade performance as much, doesn't have visual issues, and is a bit more subtle'ish
2024-10-26 11:08:08
the testing I was doing went well but I got distracted by other things lol
2024-10-26 11:09:51
iirc the glow effect was removed because it had visual issues and didn't work right on mobile or something? and the pixel effect(s) where removed due to concerns about performance and being a bit over the top
KKT
2024-10-27 04:01:16
Not really. The glow wasn't supposed to be there in the end, but it was still there at certain sizes (so it came and went as you resized the browser). We'd been testing various iterations of it it, but it's fine without it. We thought the pixel effect was fun, because like the the animated wave, it kind of gives a nod to the underlying tech – it was meant to look like pixels. But I was testing it on Safari, where it performed perfectly. On the chromium browsers it was a hot mess. <@794205442175402004> wasn't a fan, so I was fine removing it all together.
Quackdoc
KKT Done
2024-10-27 04:20:54
thisa makes it look like jxlatte/oxide/coder are part of the reference implementations,
jonnyawsom3
2024-10-27 04:23:51
Well... They kinda are, if you want to use them as reference :P
KKT
Quackdoc thisa makes it look like jxlatte/oxide/coder are part of the reference implementations,
2024-10-27 04:38:19
Is there a title above them that would make you happier?
Quackdoc
2024-10-27 04:40:10
not off the top of my head, ill keep thinking on it
2024-10-27 04:40:52
possibly just split it using 3rd party implementations, coder is more of an api bridge though,
A homosapien
2024-10-27 05:17:00
I made a mockup
2024-10-27 05:19:09
Following the formatting of the jpeg foundation: https://jpeg.org/jpegxt/software.html
Quackdoc
2024-10-27 05:19:58
contributions is really... awkward for this?
2024-10-27 05:20:55
third party implementations and bindings would probably be better here
w
2024-10-27 05:21:17
third party software
Quackdoc
2024-10-27 05:21:45
wouldn't that just be under "software"?
w
2024-10-27 05:22:47
well implementations is also wrong
2024-10-27 05:22:50
libraries
CrushedAsian255
2024-10-27 05:23:08
Theyre libraries that implement the JXL standard
Quackdoc
2024-10-27 05:23:25
would implementation also be wrong? it sounds right to me hmmmm
CrushedAsian255
2024-10-27 05:23:28
I would go with reference / third party implementation(s)
Quackdoc would implementation also be wrong? it sounds right to me hmmmm
2024-10-27 05:23:32
Same
A homosapien
2024-10-27 05:26:26
so like this?
2024-10-27 05:26:55
Maybe the implementations title at the top is redundant
CrushedAsian255
2024-10-27 05:26:59
isn't `libjxl` also an implementation?
2024-10-27 05:27:15
from `libjxl/README.md`: `JPEG XL reference implementation`
w
2024-10-27 05:28:21
libraries and apis
2024-10-27 05:28:40
as a dev that's what i look for
CrushedAsian255
2024-10-27 05:29:20
Maybe: ```# Libraries and APIs ## Reference Implementation ## Third-Party Bindings ## Third-Party Implementations ```??
w
2024-10-27 05:29:34
more separations is YAP
A homosapien
2024-10-27 05:30:15
Too much, if a dev really wants to look for something specific, they would just look at the github pages
CrushedAsian255
2024-10-27 05:30:22
fair
2024-10-27 05:30:35
what part of the webpage is this in?
A homosapien
2024-10-27 05:30:49
Supported software
w
2024-10-27 05:32:55
libraries and apis libjxl: C++ reference implementation jxlatte: Java decoder jxl-oxide: Rust decoder etc
A homosapien
2024-10-27 05:35:58
I think this works
Quackdoc
2024-10-27 05:58:11
yeah I like that, tho nightly dev builds should be moved
2024-10-27 05:58:24
or just aligned with libjxl
CrushedAsian255
2024-10-27 06:24:13
Meow
2024-10-27 06:49:33
AV IF
KKT
2024-10-27 03:59:38
I was trying to keep the old JXL logo attached to libjxl, since <@794205442175402004> was going to keep using for that. The other don't have logos…
_wb_
2024-10-27 04:21:24
Yes, I would propose to use <:JPEG_XL:805860709039865937> for the official JPEG XL standard created and maintained by the JPEG committee <:jxl:1300131149867126814> for the .jxl image file format and the broader community around it <:JXL:805850130203934781> for libjxl (and I guess other implementations can make variants of it and use that as a logo?)
2024-10-27 04:32:37
Maybe jxl-rs could have a brownish, rusty version of that logo? 😛
Meow
_wb_ Yes, I would propose to use <:JPEG_XL:805860709039865937> for the official JPEG XL standard created and maintained by the JPEG committee <:jxl:1300131149867126814> for the .jxl image file format and the broader community around it <:JXL:805850130203934781> for libjxl (and I guess other implementations can make variants of it and use that as a logo?)
2024-10-27 04:51:04
How about this Discord server
_wb_
2024-10-27 05:07:46
I guess <:jxl:1300131149867126814> might make more sense for the discord server, I like the current rotating server logo though...
Quackdoc
2024-10-27 05:08:08
I did not realize that it rotated until just now lol
KKT
2024-10-27 06:04:18
I updated it again.
CrushedAsian255
_wb_ Maybe jxl-rs could have a brownish, rusty version of that logo? 😛
2024-10-27 09:44:18
That would look cool
2024-10-27 09:44:35
Im wondering what logos the third-party jxlatte and jxl-oxide would be
2024-10-27 09:44:52
also would the existance of jxl-rs kind of defeat the point of jxl-oxide or will they both co-exist?
AccessViolation_
_wb_ Maybe jxl-rs could have a brownish, rusty version of that logo? 😛
2024-10-28 02:35:17
Ooo I like this idea a lot
2024-10-28 02:36:12
Like combining brown from Rust plus orange from those old timey terminals, or something
jonnyawsom3
2024-10-28 03:13:59
Ohh, an amber display to make it a rusted retro version
AccessViolation_
2024-10-28 03:50:19
Yess exactly
Demiurge
_wb_ Yes, I would propose to use <:JPEG_XL:805860709039865937> for the official JPEG XL standard created and maintained by the JPEG committee <:jxl:1300131149867126814> for the .jxl image file format and the broader community around it <:JXL:805850130203934781> for libjxl (and I guess other implementations can make variants of it and use that as a logo?)
2024-10-28 05:43:27
I like the last one best
AccessViolation_
2024-11-04 08:03:44
Could we make jpegxl.info IPv6-compatible? It is No NAT November after all :p
2024-11-04 08:09:09
Jokes aside this is not super important or anything but it's probably a relatively simple task so I thought I'd bring it up
jonnyawsom3
2024-11-04 08:17:24
It's hosted on GithubPages if I recall, so might not be possible
A homosapien
2024-11-04 08:19:51
I think I set my main pc to prefer IPv4 over IPv6, I would see no difference 😅
AccessViolation_
It's hosted on GithubPages if I recall, so might not be possible
2024-11-04 08:20:53
IIRC GitHub Pages does support it, just GitHub itself does not
A homosapien I think I set my main pc to prefer IPv4 over IPv6, I would see no difference 😅
2024-11-04 08:22:46
You can probably enable them both! Browsers will prefer IPv6 by default and use "happy eyeballs" aka fast fallback to downgrade to IPv4 if IPv6 fails despite the endpoint supporting IPv6
2024-11-04 08:25:25
Depending on where you live IPv6 can also avoid carrier-grade NAT congestion. Typically there's no reason to not enable both IPv4 and IPv6. Unless you have some very specific situation? If so I'm quite curious what it is
A homosapien
2024-11-04 08:29:37
hmmmm, I use a windows debloat tool called [winutil](https://github.com/ChrisTitusTech/winutil). And it recommends preferring IPv4 for less latency and packet loss. I already have quite a bit of a packet loss problem so I just turned it on.
2024-11-04 08:32:24
I also have a pihole acting as a recursive DNS. The guide told me to disable IPv6 I think.
2024-11-04 08:33:02
This isn't my field of expertise so I just read guides and follow them. 😅
AccessViolation_
A homosapien hmmmm, I use a windows debloat tool called [winutil](https://github.com/ChrisTitusTech/winutil). And it recommends preferring IPv4 for less latency and packet loss. I already have quite a bit of a packet loss problem so I just turned it on.
2024-11-04 08:40:47
Ah, I found this in their docs: > To set the IPv4 preference can have latency and security benefits on private networks where IPv6 is not configured. They give no further information or sources. I am either knowledgeable enough to know that this makes no sense whatsoever, or not knowledgeable enough to know why it would. Virtually all networking equipment produced in the last 25 years has IPv6 support. It also sounds like they're talking about LAN ("private networks") in which network delay is basically a non-issue even if one was indeed marginally faster than the other. The real benefits are in actual internet traffic where IPv6 benefits from, for example, not having to go through several layers of overloaded NAT because your ISP has long ran out of IPv4 addresses
A homosapien This isn't my field of expertise so I just read guides and follow them. 😅
2024-11-04 08:40:51
Fair enough!
2024-11-06 01:44:25
Oh, interesting. Maybe I got the number wrong? I'll see if I can find the statistic again
2024-11-06 01:49:49
1. Could be true depending on the networks you're interacting with. Commonly though, providers that offer both IPv4 and IPv6 (dualstack) are IPv6-only internally and 'emulate' IPv4 on top of it, making IPv6 the more direct option. 2. This true, however this does not present a case for not enabling native IPv6 if you also still have native IPv4. These transition mechanisms only apply if either you only have IPv6 and need to access IPv4 endpoints or vice versa
2024-11-06 01:50:37
The other points are sorta arbitrary points not directly relevant
2024-11-06 02:01:31
True dualstack in the sense that you have a public IPv6 and IPv4 address can still be IPv6-only internally. My ISP has enough public IPv4 addresses to serve one per home network, but it takes in IPv4 at the edge, translates it to IPv6, does... ISP things... to that, then translates it back to IPv4 when leaving their network.
2024-11-06 02:02:02
That's what I was referring to. I think it's common, but it's been a while since I delved into this
Quackdoc
2024-11-11 02:40:00
ah crap, the website uses grid for the test page but servo doesn't support it yet
jonnyawsom3
2024-11-20 11:41:51
Had a fun little idea. An addition to the banner that says how much data you've saved as you scroll down the page and load more images (Assuming you have JXL support)
CrushedAsian255
2024-11-20 12:21:30
Or if you don’t it could switch to “How much you could have saved”
jonnyawsom3
2024-11-20 12:31:03
Yeah
2025-01-13 06:25:07
I only just realised... Is this AI generated? The lines on the gold disk are nowhere near straight, and I have no clue what this would actually *do* either
username
I only just realised... Is this AI generated? The lines on the gold disk are nowhere near straight, and I have no clue what this would actually *do* either
2025-01-13 06:27:04
https://discord.com/channels/794206087879852103/1256302117379903498/1282763762738139290
jonnyawsom3
2025-01-13 06:29:24
Ah yeah
Demiurge
2025-01-15 02:34:20
The longer you look the more wrong it looks
2025-01-15 02:34:58
I agree it's kind of cringe
Meow
2025-01-15 02:37:43
If AI-generated is allowed something like JXL-chan should be better
Demiurge
2025-01-15 02:48:31
Do we have a jxl-chan?
2025-01-15 02:49:23
With funny jxl hairties
VcSaJen
2025-01-18 07:38:39
It's not advisable to do AI art here specifically because: 1) Many models were trained mainly on JPG images, so they would try to reproduce JPG artifacts, negatively impacting compression. 2) AI hallucinations can be confused with lossy encoding artifacts (lines suddenly getting blurry midway, etc)
Demiurge
2025-01-19 12:46:22
Agreed. It's s terrible idea to use as a showcase
CrushedAsian255
2025-01-19 06:06:17
Also people may see AI art and click away due to anti-AI sentiment.
Meow
VcSaJen It's not advisable to do AI art here specifically because: 1) Many models were trained mainly on JPG images, so they would try to reproduce JPG artifacts, negatively impacting compression. 2) AI hallucinations can be confused with lossy encoding artifacts (lines suddenly getting blurry midway, etc)
2025-01-19 06:18:15
PNG art with artefacts = AI generated
VcSaJen
2025-01-19 07:16:14
Not really.
AccessViolation_
2025-01-19 11:39:12
I think they could be replaced with high quality Blender renders
Demiurge
2025-01-19 02:03:06
Or just look for freely licensed art and photos on wikimedia
2025-01-19 02:03:16
That's what it's there for
2025-01-19 02:04:08
Or maybe some of the images that are part of a testing corpus
jonnyawsom3
2025-01-19 02:05:52
Or, hear me out... We take some photos ourselves, or ask any photographers we know if they have any they'd like to submit
Demiurge
2025-01-19 02:15:23
That assumes you have something beautiful to photograph and that you're smart enough to capture it well...
AccessViolation_
2025-01-20 05:07:48
NASA has some nice lossless JWST pictures. They might make good use of patches/dots too
Jabster28
AccessViolation_ NASA has some nice lossless JWST pictures. They might make good use of patches/dots too
2025-02-28 09:16:15
there was a thread about that in /g/ a few years ago haha
2025-02-28 09:16:40
an anon suggested there be two for lossless and lossy, with the lossy one having jpeg artifacts
Demiurge Do we have a jxl-chan?
2025-02-28 09:17:19
oops wrong reply, meant for this
RaveSteel
2025-02-28 09:20:01
We have this
2025-02-28 09:20:03
lol
AccessViolation_
2025-02-28 09:27:18
honestly
2025-02-28 09:27:22
...i don't like it
2025-02-28 09:27:46
it does not spark joy
spider-mario
2025-02-28 09:30:05
yeah, this figure is a bit loaded these days
jonnyawsom3
2025-02-28 09:50:26
I mean, I somehow ended up with this artwork for Halloween of me 'making' JXL art
AccessViolation_
2025-02-28 10:00:14
honestly i'm all for a furry mascot
2025-02-28 10:01:01
and if we get furries to adopt jpeg xl, that's basically the world
Demiurge
2025-02-28 10:47:34
I like dragons. But jxl-tan should probably be pretty tiny, to represent small file sizes, and pretty colorful, to represent good color gamut.
2025-02-28 10:48:11
And I like the idea of having a lossless one and a lossy, artifacted one, that seems funny
2025-02-28 10:48:36
Maybe a 3rd one for recompressed jpeg
2025-02-28 10:48:54
Is there already a jpeg-tan?
2025-02-28 10:50:54
https://en.m.wikipedia.org/wiki/Moe_anthropomorphism
jonnyawsom3
2025-02-28 11:01:02
Ideally, we could represent them in JXL art
AccessViolation_
Demiurge https://en.m.wikipedia.org/wiki/Moe_anthropomorphism
2025-02-28 11:04:26
i didn't really have any expectations when i clicked that link, but ISIS-chan would not have been one of them
RaveSteel
2025-03-01 12:01:51
I asked ChatGPT to create an anime girl with jpeg xl hairpins. it didnt look great, but more interestingly, the image was shared as lossy WebP. I asked ChatGPT to provide a PNG. ChatGPT told me that the image was a PNG. When I answered that it was really a WebP, it just converted the WebP to PNG. So now I have a lossy WebP as a PNG created and converted by ChatGPT
2025-03-01 12:02:04
It just works™
AccessViolation_
2025-03-01 12:04:48
yesterday I asked it to rank lossless image formats based on compression ratio alone and it looked completely arbitrary. i asked for clarification and it kept spewing complete nonsense. every message had at least one major mistake and it did the "you're right, i apologize" thing every time. it's incredibly concerning, imo
RaveSteel
2025-03-01 12:05:44
And now realise that many students exclusively use ChatGPT until they graduate
AccessViolation_
2025-03-01 12:05:52
that was the first time i'd used it in like a year or two. it doesn't seem to have improved
RaveSteel And now realise that many students exclusively use ChatGPT until they graduate
2025-03-01 12:05:57
yeah it's crazy
RaveSteel
2025-03-01 12:07:18
It can be very helpful to get a first idea with complex problems, but trusting it blindly is a very bad idea
_wb_
2025-03-01 07:31:45
I have access to Enterprise ChatGPT now, some of its models are better than others. They can all be wrong in hilarious and concerning ways, but it can also be useful. Using it as a source of inspiration is OK imo, using it as a source of truth is obviously not at all OK.
monad
2025-03-01 08:51:13
Please be cautious as they can be more subtly deceitful than most advertise. I asked R1 to rearrange data in a table and it silently modified the data as well. Unprompted and undisclosed, it changed strings like 'ΛОК' to 'ΛΟΚ'.
2025-03-01 08:59:38
Prior to that, the worst example I'd witnessed was asking for an edit in a code sample which happened to include a comment describing why the order of two lines mattered. Those lines were unrelated to the prompt, but ChatGPT removed the comment and flipped the order of those lines.
Demiurge
2025-03-04 06:06:25
It did it for the lulz
2025-03-04 06:08:21
People don't seem to understand how to use random number generators aka "language models" aka "general purpose """AI""""
A homosapien
I only just realised... Is this AI generated? The lines on the gold disk are nowhere near straight, and I have no clue what this would actually *do* either
2025-03-04 06:13:10
I'm still in favor of replacing the AI images with real ones. This decision is baffling to me.
2025-03-04 06:15:20
It just feels too corporate and fake honestly
0xC0000054
Demiurge People don't seem to understand how to use random number generators aka "language models" aka "general purpose """AI""""
2025-03-04 06:16:02
Random number generation is a good description. I have also heard 'digital hallucination engine' used in the context of 'generative image' AI.
2025-03-04 06:17:15
As I understand it, all the current AI tech does is regurgitate parts of whatever data it was trained on.
Demiurge
2025-03-04 06:40:47
The correct way to use a neural net is to train it for a very specific and well defined domain. Anything else is just... a bunch of cavemen shaking a magic 8 ball.
2025-03-04 06:42:06
There is no such thing as "general purpose" neural net, it's just a random number generator inside of a language coherency evaluator!
AccessViolation_
A homosapien It just feels too corporate and fake honestly
2025-03-11 09:49:49
"best-of-breed" adds to this sentiment too for me > Unmatched in quality-per-byte, JPEG XL delivers best-of-breed image compression from web quality through lossless.
2025-03-11 09:51:03
A lot of it reads like it's a presentation for shareholders
2025-03-11 09:52:27
or like a page where you'd find "contact our sales team for pricing" at the bottom
A homosapien
AccessViolation_ A lot of it reads like it's a presentation for shareholders
2025-03-11 11:54:44
Which doesn't make sense because Jpeg XL is free and open source! Like what are we selling here??
_wb_
2025-03-12 07:37:56
It's hard to find a tone that works for a broad audience spanning different cultural conventions and levels of technical background. The same words can sound like an overly enthusiastic sales pitch to one person while looking pretty neutral to someone else, or like a complicated technical description to one person while looking like an oversimplified, dumbed-down marketing blob to another.
2025-03-12 07:39:40
A word like "nice" can be pretty positive to a European audience while in the US it's more like "one star out of five"
AccessViolation_
2025-03-12 08:56:42
okay, that's fair
2025-03-12 08:58:50
I still feel like it can do without some of the words that make it sound like i'm supposed to invest money in it though 😅
2025-03-12 09:38:18
that's just my personal preference, I don't know which vibe the website is trying to go for
couleur
2025-03-12 09:53:17
how would you guys describe the old website's tone
username
couleur how would you guys describe the old website's tone
2025-03-12 09:54:22
you can still see the old site here https://jpegxl.info/old/
jonnyawsom3
AccessViolation_ I still feel like it can do without some of the words that make it sound like i'm supposed to invest money in it though 😅
2025-03-12 09:58:48
I mean, it kinda was. The website was made to be a sales pitch after the Apple launch. To convince companies to switch to JPEG XL and invest in the infrastructure changes for it
couleur
2025-03-12 09:59:54
i prefer the old one but if the new website is more likely to make companies adopt it i can understand
AccessViolation_
2025-03-12 10:04:34
just like how sites have a dark mode toggle, maybe we should have a corporate mode toggle /j
2025-03-12 10:09:33
and just turn it on by default for all requests that don't come from consumer ASes
couleur
2025-03-12 10:09:35
message above but not j
2025-03-12 10:10:06
whats a consumer AS?
jonnyawsom3
AccessViolation_ just like how sites have a dark mode toggle, maybe we should have a corporate mode toggle /j
2025-03-12 10:16:39
That's just https://jpegxl.info/old/
AccessViolation_
couleur whats a consumer AS?
2025-03-12 10:18:21
autonomous system, a portion of the internet controlled by some body. you're a consumer so you're on a consumer AS, the one from your internet service provider. larger corporations often manage their own network infrastructure, and so instead of having an internet subscription like we do, they pay a fee to connect their network directly to that of other transit providers and internet service providers. basically, they are their own internet service provider. so the ASes operated by Verizon, T-Mobile, etc. are 'consumer networks' (or 'eyeball networks' because their users mostly just look at content instead of providing it)
2025-03-12 10:21:47
fun fact: if you fill out some paperwork you can request an autonomous system number as an individual and then you can also become your own internet service provider. you will have to ask other organizations to peer with you though, or you won't be able to connect to anything, and they're almost definitely not going to let you do that for free
couleur
2025-03-12 10:22:05
X))
2025-03-12 10:22:35
maybe xqc will do that to combat ddosing
AccessViolation_
2025-03-12 10:26:07
just set up a global anycast network with hundreds of endpoints all around the globe so DDoS traffic is distributed among them and nothing gets overloaded
2025-03-12 10:26:25
worked out well enough for cloudflare
2025-03-12 10:29:31
I haven't been seriously considering this, but there are residential areas here in the netherlands that have *two* fiber lines from competing companies, so technically you can obtain an autonomous system number, peer with both of them, and then you can have a *tiny* anycast network: the same IP addresses can be on two different endpoints which are directly reachable from both providers, so traffic will automatically seek the 'shortest' path, which depends on which provider you're with or where you're geographically located
2025-03-12 10:30:44
would it be useful? no. would it be cool? yes.
couleur
2025-03-12 10:32:05
are you from nl?
AccessViolation_
2025-03-12 10:33:31
yeah
KKT
I mean, it kinda was. The website was made to be a sales pitch after the Apple launch. To convince companies to switch to JPEG XL and invest in the infrastructure changes for it
2025-03-12 08:36:02
Yes, in my head when I wrote the copy, it was a pitch to the entire world to start using it. I know lots of people don't like marketing around here, but the object of the game was to sell its feature set, performance, and capabilities. Not unlike a paid product…
jonnyawsom3
2025-03-12 08:42:24
It's a lot easier to sell something when it's free, after all
Meow
2025-03-13 02:23:19
Not really easier to sell when it's free as it doesn't sound premium aka revolutionary, innovative, creative...
2025-03-13 02:25:15
e.g. HEIF being not free but revolutionary because of Apple
JaitinPrakash
2025-03-13 03:18:55
So we describe it as being revolutionary; with unmatched efficiency, ripping fast speeds, able to both perfectly replicate existing lossy jpeg images, and reduce their filesize with no loss, with all that for the low low cost of completely free. While pushing for adoption in both open-source and proprietary avenues.
Meow
2025-03-13 05:07:17
For fans, being used by Apple = revolutionary
Demiurge
2025-03-14 04:45:35
Short and sweet and let the demos speak for themselves.
2025-03-14 04:45:47
The hard part is showing good demos
2025-03-14 04:46:11
Maybe even with zoom/enhance to show differences in compression artifacts
2025-03-14 04:46:38
Which is scientifically questionable but good for demos
2025-03-14 04:47:37
All the words don't matter. Nobody is going to read or care what it says. All that matters is results. Show impressive demos, that's literally all that matters when making a good impression.
2025-03-14 04:48:42
You know what will impress people? Show timing comparison with avif
2025-03-14 04:48:55
Show how much faster it is
2025-03-14 04:49:19
Side by side
2025-03-14 04:49:33
Better compression in 1/10th of the time
2025-03-14 04:51:18
Then show 1 or 2 graphs of speed/bpp/ssimu2 since libjxl is overfitted for metrics compared to libaom
2025-03-14 04:52:37
That will give people the impression that libaom absolutely sucks
2025-03-14 04:53:34
(Even if, in reality, libaom looks better and libjxl is just overtuned to have better ssimu2 scores instead of for human vision)
jonnyawsom3
2025-03-14 07:23:07
And replace the AI images...
_wb_
2025-03-14 07:59:10
Are there AI images left?
jonnyawsom3
2025-03-14 08:16:55
Ah, updated 2 weeks ago. Guess I hadn't checked in a while
Demiurge
2025-03-15 05:44:04
The goal of the website should be to quickly wow people with the minimum boilerplate text no one is going to read. Just numbers and results that make libaom look like a joke. Even if some of those numbers (ssimu2) are meaningless or misleading
2025-03-15 05:44:30
It doesn't matter if it's meaningless or misleading if it works and somehow still impresses people
2025-03-15 05:45:00
I may be cynical but it's true, that's how things are...
_wb_
2025-03-15 07:58:31
there's no need to show meaningless/misleading numbers, the actual data is impressive enough but the amount of published data with actual subjective results (which is the only 'real' data) is limited so far
2025-03-15 08:06:05
I'm looking at some very recent not-yet-published data from a subjective experiment on HDR images, where at the 1 JND point, JXL beats AVIF by about 35%, depending on the image — only 5 source images were tested, the gap is about 20% on one of them, about 35% on two, about 40% on one, and almost 60% on one. I hope this data will get published/released within about 2 months.
Demiurge
2025-03-15 08:18:07
People will be impressed if they see how much faster libjxl is compared to libaom
2025-03-15 08:18:19
Faster and better at the same time
2025-03-15 08:18:52
Especially at lossless compression. That comparison is mind bogglingly extreme
2025-03-15 08:29:41
People love seeing those kinds of numbers side by side
jonnyawsom3
2025-03-15 09:34:48
JPEG XL wins in efficiency, if not density. Usually lower memory usage and faster for equal or better density
_wb_ there's no need to show meaningless/misleading numbers, the actual data is impressive enough but the amount of published data with actual subjective results (which is the only 'real' data) is limited so far
2025-03-15 10:20:52
We don't need to, but we could still cherry pick some visual results. Like the 0.8 lossy regression, or resampling being better around quality 20
2025-03-15 10:21:15
Show what the format can do, rather than the current state of libjxl
_wb_
2025-03-15 10:53:45
Generally jxl performs well on portrait photography. Video-based codecs tend to apply generous layers of foundation makeup to human faces.
2025-03-15 10:59:47
Also cloudy skies are often a lot better in jxl than in video codecs, which tend to turn clouds into Spandex...
AccessViolation_
2025-03-15 11:14:07
I was really impressed by the graphic from your paper showing the same gradient in four different image formats
jonnyawsom3
2025-03-15 11:14:27
Good thing I just arrived in London, should be plenty of cloud
AccessViolation_
2025-03-15 11:14:41
JXL would probably do a lot better for skies with gradients than AVIF just based on that
Demiurge
2025-03-15 12:49:31
Wow lol, that is true
2025-03-15 02:58:33
libaom might have improved with faces I think maybe? But jxl has always excelled at pure skies and clouds
couleur
2025-03-15 03:47:18
libaom = avif?
_wb_
2025-03-15 03:48:36
Libaom did improve but still, whether it's avif, heif or webp, faces tend to get autobotoxed
2025-03-15 03:49:30
Modern video codecs have no more blocking but they have botoxing artifacts instead
2025-03-15 03:50:10
That should become a scientific term academics use
RaveSteel
couleur libaom = avif?
2025-03-15 03:56:00
libaom is the AV1 reference encoder
2025-03-15 03:57:34
libavif is the AVIF reference encoder IIRC
_wb_
2025-03-15 04:16:28
libavif handles the container-level AVIF stuff (such as dealing with transparency and ICC profiles, which are things AV1 does not support), it depends on libaom which handles the payload.
juliobbv
_wb_ Modern video codecs have no more blocking but they have botoxing artifacts instead
2025-03-15 04:16:41
I'm partial to the word "vaselining" 😂
_wb_
2025-03-15 04:17:09
(it also works with other implementations than libaom, libavif can also work with svt, rav1e, dav1d etc)
2025-03-15 04:17:25
2025-03-15 04:18:06
vaselining works too, but I like how blocking and botoxing both start with a b
juliobbv
2025-03-15 04:19:56
blasticky look
_wb_ Libaom did improve but still, whether it's avif, heif or webp, faces tend to get autobotoxed
2025-03-15 04:22:54
yeah, it also didn't help that libavif defaults to using zero adaptive quantization even for still images, not sure why
2025-03-15 04:24:16
`--tune iq` makes clouds/faces/delicate textures better due to usage of variance AQ, but at some point you can only do so much with the format
_wb_ I'm looking at some very recent not-yet-published data from a subjective experiment on HDR images, where at the 1 JND point, JXL beats AVIF by about 35%, depending on the image — only 5 source images were tested, the gap is about 20% on one of them, about 35% on two, about 40% on one, and almost 60% on one. I hope this data will get published/released within about 2 months.
2025-03-15 04:33:31
this makes sense, nothing in libaom is tuned for HDR photography, so JXL will really shine <:BlobYay:806132268186861619>
2025-03-15 04:33:38
looking forward to seeing the comparison and results
jonnyawsom3
Good thing I just arrived in London, should be plenty of cloud
2025-03-15 08:16:24
I forgot to take any photos... Guess it was a busy day
AccessViolation_
2025-03-17 10:12:09
this graphic from the upcoming paper is pretty eye catching imo, maybe something that could be added to the website?
CrushedAsian255
AccessViolation_ this graphic from the upcoming paper is pretty eye catching imo, maybe something that could be added to the website?
2025-03-17 10:28:26
My personal analysis: JPEG cheats by being such a large filesize, JPEG XL is remarkably smooth, AVIF seems to have just given up and resorted to 1 DC value per macroblock (so acting like JPEG but worse), WebP seemed to add dither noise (?)
2025-03-17 10:30:15
although it may not be fair to AVIF as its header is so large that it probably only got 100 bytes or so of actual payload, whereas JPEG XL only needs 8-12 bytes of header WebP only need 12-20 bytes of header
Demiurge
AccessViolation_ this graphic from the upcoming paper is pretty eye catching imo, maybe something that could be added to the website?
2025-03-18 06:42:50
I love it. This is EXACTLY the kind of thing the website needs. Clowning on webp and avif
2025-03-18 06:44:13
Once you see an image like that, the seeds have been planted. 🌱
2025-03-18 06:45:39
What jpeg encoder is that though? If you can make JPEG1 look better than avif, like with jpegli, then it's even funnier
AccessViolation_
2025-03-18 08:31:21
clowning on other formats is going to lead to defensiveness and tribalism imo. much better to put the focus on "jpeg xl good" rather than "[other format] bad." if you're trying to convince people, being condescending probably has the opposite effect. the target audience isn't people who are already JXL fanatics
2025-03-18 08:36:26
I think my preferred option would be to highlight facts about all formats, talk positively about JXL, and let people come to their own conclusion about the other formats without demeaning them and their users and developers
Demiurge
AccessViolation_ clowning on other formats is going to lead to defensiveness and tribalism imo. much better to put the focus on "jpeg xl good" rather than "[other format] bad." if you're trying to convince people, being condescending probably has the opposite effect. the target audience isn't people who are already JXL fanatics
2025-03-18 08:41:34
An image codec can only be good in comparison to the alternatives. Showing demos of jxl outperforming webp and avif is a strong way to promote jxl adoption. Especially if you can show realistic situations where the alternatives are seemingly, utterly outclassed or outright out-of-the-question, unable to compete at all.
2025-03-18 08:42:11
In some situations there actually IS no alternative, and jxl is the only option.
2025-03-18 08:42:28
Due to inadequacies of other formats.
2025-03-18 08:42:39
For example, lossless compression of high bit depth images
2025-03-18 08:42:54
there is no alternative to jxl there
HCrikki
2025-03-18 08:43:53
some of jon's old videos were massive eye openers (ie generational loss, how skin detail/color is better preserved, progressive loading)
2025-03-18 08:44:25
Might be worth revisiting since videos are more easily spread around for awareness. Some of the material in videos and articles details paradigms the average imaging enthusiast never knew were important - always focusing on files giving disproportionate weight to kilobytes without real visual quality
Demiurge
2025-03-18 08:45:12
Exactly. Demos that show jxl utterly outclassing alternatives, or situations where there are no alternatives at all, are a powerful argument for jxl standardization
2025-03-18 08:47:44
That decode time chart that Jon made is also good. The one that shows how jxl can decode at the same time as its downloading while avif has to wait for it to finish downloading before decoding can even begin.
AccessViolation_
Demiurge An image codec can only be good in comparison to the alternatives. Showing demos of jxl outperforming webp and avif is a strong way to promote jxl adoption. Especially if you can show realistic situations where the alternatives are seemingly, utterly outclassed or outright out-of-the-question, unable to compete at all.
2025-03-18 08:53:36
yeah I agree completely. I might have misinterpreted what you meant with clowning
Traneptora
2025-03-18 08:55:24
Tbf, the image is a bit misleading because it's in the order of byes and AVIF wastes about 150 bytes on a header so it has about half the bits to work with. which is not that much wasted in the grand scheme of things
AccessViolation_
Demiurge An image codec can only be good in comparison to the alternatives. Showing demos of jxl outperforming webp and avif is a strong way to promote jxl adoption. Especially if you can show realistic situations where the alternatives are seemingly, utterly outclassed or outright out-of-the-question, unable to compete at all.
2025-03-18 08:55:31
like you can show direct comparisons of visuals and data. I was referring to more like, dunking on other formats if that makes sense? I think that would just trigger people into defending their opinions rather than feeling welcome to try out a new format
Traneptora
2025-03-18 08:56:19
when images are actually proper web quality (order of kB or MB) the wasted bytes are kind of irrelevant
2025-03-18 08:57:15
I think it's better to emphasize highly relevant features JXL has like progressive decode
Demiurge
2025-03-18 08:57:30
I mean "the other alternatives aren't even an option on the table here; they're outclassed so utterly and completely that they're either unusable or would never be considered."
AccessViolation_ this graphic from the upcoming paper is pretty eye catching imo, maybe something that could be added to the website?
2025-03-18 08:58:33
This is a really good graphic that demonstrates that. Only JXL looks acceptable at all here
2025-03-18 08:59:06
The others aren't even on the table as an acceptable option
2025-03-18 08:59:55
In that case, those images look unusably ruined
2025-03-18 09:00:18
Those make for extremely powerful demos to display on the website
2025-03-18 09:02:08
It plants seeds in people's minds I think. That maybe, the alternatives are not even acceptable or even competing on the same playing field at all.
2025-03-18 09:02:51
And creates demand for a higher standard that only jxl can provide right now.
2025-03-18 09:03:12
:)
HCrikki
2025-03-18 09:03:37
bench times for reference conversions would be good too since big user/pro migrations typically expect long times (quasi instant jpg->jxl being an anomaly in need of awareness). I dont recall seeing times for server-class machines or even typical desktops
AccessViolation_
2025-03-18 09:03:51
2025-03-18 09:03:51
I feel like this could be clarified in the graphic
Demiurge
2025-03-18 09:05:34
Maybe it's kind of dishonest... but it's also kinda their fault that the header is so ridiculous.
AccessViolation_ like you can show direct comparisons of visuals and data. I was referring to more like, dunking on other formats if that makes sense? I think that would just trigger people into defending their opinions rather than feeling welcome to try out a new format
2025-03-18 09:07:20
Well yes, I do mean dunking on them. But not verbally. Merely by providing scenarios and examples where the alternatives are not even on the same playing field.
2025-03-18 09:07:38
Using powerful demos like that
2025-03-18 09:07:55
That's the best way to clown/dunk on other formats
2025-03-18 09:08:16
Dunking with data!
2025-03-18 09:08:28
Not with words.
2025-03-18 09:08:33
Show, don't tell.
AccessViolation_
2025-03-18 09:08:41
ah okay, I understand
Demiurge
2025-03-18 09:09:13
:)
_wb_
2025-03-18 11:58:56
the file sizes are not really the point, it's not meant to be representative. For all codecs I used very low quality settings (e.g. -d 12 for jxl, -q 5 for avif and webp) that are lower than what you'd use in reality, just to show what kind of banding artifacts you get, but in a more obvious way than the more subtle banding you'd get at higher quality settings — mostly because otherwise the illustration would just not work when printing the paper or even viewing it on screen in a PDF viewer that is reducing the banding by rescaling the images.
2025-03-18 12:02:19
2025-03-18 12:04:09
2025-03-18 12:04:15
2025-03-18 12:05:05
this is 209 byte jxl vs 450 byte avif so now they're spending about the same amount of bytes on actual image data
2025-03-18 12:08:43
that's cjxl -d 20 and avifenc -q 30
spider-mario
2025-03-18 12:36:46
now it looks less like blocking and more like green waves on top of the blue part of the gradient
Demiurge
2025-03-18 01:08:44
Wow so the header actually takes up the majority of the file lmao!
2025-03-18 01:09:54
This isn't a problem unique to avif, is it?
2025-03-18 01:10:04
HEIF in general?
jonnyawsom3
Demiurge This isn't a problem unique to avif, is it?
2025-03-18 01:48:11
https://discord.com/channels/794206087879852103/822105409312653333/1351512632976343040 https://docs.google.com/presentation/d/1LlmUR0Uoh4dgT3DjanLjhlXrk_5W2nJBDqDAMbhe8v8/edit#slide=id.gde87dfbe27_0_43
Demiurge
2025-03-18 01:57:48
What slide?
jonnyawsom3
2025-03-18 02:04:06
90
Traneptora
2025-03-18 02:32:42
I'd argue JPEG XL actually has an opposite problem
2025-03-18 02:32:52
the header is so overengineered/bitpacked that parsing it is somewhat difficult
2025-03-18 02:33:25
for example, there were a few mistakes made in design, like sometimes needing to implement an entropy decoder to find the frame start
_wb_
2025-03-18 03:00:28
yeah jxl went a bit too far — then again having overcomplicated header syntax is only a problem until the implementations are done, while having simple but overly verbose header syntax may save some implementation time but then you're stuck with it forever.
AccessViolation_
2025-03-18 03:33:55
I'm sure the small header would go appreciated by platforms like Discord or Twitch that serve many super tiny custom images in the form of emotes
Demiurge
Traneptora for example, there were a few mistakes made in design, like sometimes needing to implement an entropy decoder to find the frame start
2025-03-18 03:34:50
This is a pretty annoying flaw though