JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

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

General chat

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

Voice Channels

General 2147

Archived

bot-spam 4380

adoption

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

_wb_
2021-05-10 12:01:15
well that is how Safari does it technically though
2021-05-10 12:01:37
it calls Core Image / Core Media at the OS level
paperboyo
2021-05-10 12:01:51
Adobe still doesn’t provide its own WebP encoder (let alone deeper integration, eg. in Export for screens), only recently Google started providing a plugin for Photoshop (https://developers.google.com/speed/webp/docs/webpshop). AVIF has a feature request status only (https://feedback.photoshop.com/conversations/photoshop/photoshop-please-add-avif-file-support/5f5f46314b561a3d4278baf4). Historically, they are extremely conservative (for, some!, good reasons). Reading HEIC on Windows requires OS-llevel apps (one paid for).
_wb_
2021-05-10 12:03:01
Core Image has proprietary stuff like the Kakadu JPEG 2000 and HEIC in it, which is probably why they insist on keeping things at the OS level and not doing them in WebKit
2021-05-10 12:04:50
Adobe is indeed slow to adopt stuff, yes.
2021-05-10 12:09:35
I suppose imagemagick and libheif could decode HEIC on Windows
diskorduser
2021-05-10 12:09:55
Gimp on windows doesn't open heif?
nmkd
2021-05-10 12:11:12
not sure about gimp
2021-05-10 12:11:37
ImageMagick, Magick.NET as well as my own little image procesing app all support HEIF decoding, and also encoding iirc
2021-05-10 12:11:57
actually i think i used libheif for encoding, but decoding is native in magick
paperboyo
2021-05-10 12:19:35
Reading in Adobe, I meant (https://helpx.adobe.com/photoshop/kb/ps-heic-codec.html)
Deleted User
_wb_ Any frame can be used to take patches from in a later frame. Frames can be "reference only" so you can have invisible reference frames, or they can be just regular frames that have "save as reference" set in their header.
2021-05-10 12:41:15
Can you use "patch-ception", which is: make a reference-only frame 1 (e.g. just the letters), create reference-only frame 2 with patches from 1 (e.g. longer words and sentences) and then encode visible frame 3 with patches from frame 1 and 2?
_wb_
2021-05-10 12:43:26
yes, but at any time during decode there are only 4 slots of reference frames available
2021-05-10 12:43:56
so you can't do this with frame 6 that uses patches from frames 1,2,3,4,5
2021-05-10 12:44:41
you can however use patches from frame 1,2,3 to make frame 4, then use patches from frames 2 and 4 to make frame 5, then use patches from frame 2 and 5 to make frame 6, or stuff like that
Deleted User
_wb_ yes, but at any time during decode there are only 4 slots of reference frames available
2021-05-10 12:50:03
How it was decided that 4 slots should be the maximum?
_wb_
2021-05-10 12:55:08
originally we had just the single reference for patches, and then we said "maybe that's a limitation because it could be useful to have both modular and vardct references", which would mean 2 slots would be better, and then we changed the frame blending mechanism to get rid of the complicated dispose modes, instead using a generic "reference slot" mechanism to let frames refer to the base frame they want to be blended against, which would mean 3 slots would be needed, and at that point we decided to round it to 4 because it would be a 2-bit value anyway. IIRC. <@!179701849576833024> do you remember?
2021-05-10 12:57:26
More slots would be somewhat more expressive but also potentially force decoders to use more memory (reference frames need to be kept in memory) and require more bits to signal which reference frame to take a patch from. Limiting it to 4 seems a good balance between expressivity and those considerations.
fab
2021-05-10 01:01:33
Can you do after july faster decoding mode for modular lossless
veluca
_wb_ originally we had just the single reference for patches, and then we said "maybe that's a limitation because it could be useful to have both modular and vardct references", which would mean 2 slots would be better, and then we changed the frame blending mechanism to get rid of the complicated dispose modes, instead using a generic "reference slot" mechanism to let frames refer to the base frame they want to be blended against, which would mean 3 slots would be needed, and at that point we decided to round it to 4 because it would be a 2-bit value anyway. IIRC. <@!179701849576833024> do you remember?
2021-05-10 01:08:26
Sounds about right
_wb_
fab Can you do after july faster decoding mode for modular lossless
2021-05-10 01:08:45
Yes, I think that would be useful. A setting for fast lossless encode and decode is useful in authoring workflows, where you want just some weak compression (because uncompressed gets huge quickly but while editing you don't really need / want to wait for strong compression).
fab
2021-05-10 01:13:05
I think because you want to compete with wp2
2021-05-10 01:14:37
Also the invisible pixels
veluca
_wb_ Yes, I think that would be useful. A setting for fast lossless encode and decode is useful in authoring workflows, where you want just some weak compression (because uncompressed gets huge quickly but while editing you don't really need / want to wait for strong compression).
2021-05-10 02:13:21
I do wonder how much we can speed up the tree on the decoder side...
_wb_
2021-05-10 02:16:11
Speeding up generic trees you already did some nice stuff to avoid branching on every individual decision node
veluca
2021-05-10 02:16:46
yeah, but I do still think we can do a lot better than that... I'm hesitant to go full-blown JIT on it, but...
_wb_
2021-05-10 02:17:03
Probably things could be sped up a lot of you would allow JIT compilation type things, though security-wise that gets tricky
2021-05-10 02:17:58
Speeding up fixed trees like we have in -s 3 is easier (but we cannot keep adding hundreds of special cases, of course)
2021-05-10 02:19:54
A simple fixed tree for something that doesn't use the Weighted predictor (but Gradient or something) should still give somewhat useful compression, and could make a `-s 2` for lossless...
fab
2021-05-10 02:25:16
Yes But good encoding and faster decoding can it coexist?
_wb_
2021-05-10 02:35:00
to some extent fast encode and fast decode go somewhat hand in hand, but you could have slow encode that still targets fast decode
Deleted User
2021-05-10 03:06:42
<@!239702523559018497> How is Firefox currently handling/requesting JXLs? Does it use 16-bit floats and convert them like Chrome or is it relying on the bad 8-bit output of djxl?
Troc
Scientia Imagine having a comic panel and only having to encode each repeating letter once
2021-05-10 03:57:54
What? The text would still be a part of the picture though?
_wb_
2021-05-10 04:06:33
Yes, it's an internal codec thing, nothing the application can see.
Troc
2021-05-10 05:45:55
Is there some optical character recognition that saves coordinates, font used and style, then saves as letters instead of pixels that make up the letters?
Pieter
2021-05-10 05:48:17
<@720988177648713819> c Patches are a feature of JXL that lets you do things like that (e.g. it can signal "here is a frame to decode, but not show" and "on top of this frame, copy-paste this range of x/y coordinates from this previous frame"). So it could be used for things like repeating letters. No idea to which extent the current encoder can make use of that.
_wb_
2021-05-10 05:51:08
Current encoder has a heuristic that basically searches for 4x4 regions of constant color, then tries to find repeated patterns around them. Right, <@179701849576833024> ?
2021-05-10 05:51:37
It works quite a lot better than what I would have thought was possible in a sane amount of time
veluca
2021-05-10 05:53:23
yeah, looks for regions of constant color to detect "background of text"-like places, then finds connected components of not-constant color, then tries to find how many of those occurred multiple times
2021-05-10 05:54:09
although that last part should probably be changed to also encode those things that only occur once but that would improve "flatness" by removing them, I think
2021-05-10 05:56:23
also constructing the patch frame is not quite done optimally - some characters are repeated multiple times because they have some slight differences that make them not fully overlap, but they could share most of their pixels
_wb_
2021-05-10 05:57:23
Maybe some things could be effectively converted to splines too, if they're large and curvy enough to make that better than modular encoding them as pixels
Troc
2021-05-10 05:57:37
I'd imagine saving a letter and font info would take significantly less space than the same text in 13x20 pixel boxes.
fab
2021-05-10 05:58:01
is the font i use for notepad too complex to encode for jpeg xl?
veluca
2021-05-10 05:58:17
yeah but then a JPEG XL decoder would have to implement font rendering, and *that* is a can of worms I don't want to touch anytime soon 😛
fab
2021-05-10 05:58:45
https://discord.com/channels/794206087879852103/840831132009365514/841373683499139093
2021-05-10 05:58:56
what you think veluca
2021-05-10 05:59:04
is this font resistant to generation loss
_wb_
2021-05-10 05:59:12
Rasterized fonts with good lossless compression are probably not really more expensive than vector fonts, if you don't use multiple font sizes
fab
2021-05-10 05:59:15
or have propierties that indicate resistency
2021-05-10 05:59:28
it seems like semi sans serif
Troc
2021-05-10 05:59:30
It would take quite a lot I imagine to optically detect the font, settings such as bold or italics and do it at any size or color and then replicate it flawlessly while decoding.
fab
2021-05-10 05:59:55
is this otf
2021-05-10 05:59:56
https://github.com/fabiorug/Suduwe-font
2021-05-10 06:00:05
actually i use ttf version
_wb_
2021-05-10 06:00:10
You would have to encode the font itself too to make it self-contained
veluca
2021-05-10 06:00:20
I wouldn't use a non-monospace font for notepad...
fab
2021-05-10 06:00:32
so are you saying that is not very resistant to generation loss?
_wb_
2021-05-10 06:00:37
Cannot expect an image decoder to download a font to decode an image 😅
fab
2021-05-10 06:00:41
it would artifact a lot
2021-05-10 06:00:44
in vardct
2021-05-10 06:01:03
are semi sans serif good to encode for DCTs?
Troc
2021-05-10 06:01:24
I'd imagine manga archivers could be interested and only CC's Wild Words Roman would be needed because that's the font that's used in mangas.
2021-05-10 06:01:49
Well, outside of certain special cases.
Pieter
fab are semi sans serif good to encode for DCTs?
2021-05-10 06:19:41
DCT is not good in general for text, regardless of font
fab
2021-05-10 06:20:32
but like the font i created and forked
2021-05-10 06:20:41
does it makes it worse
2021-05-10 06:20:46
because is semi serif
2021-05-10 06:20:50
or something
2021-05-10 06:20:53
difficult
_wb_
2021-05-10 06:21:46
Doesn't matter much I think
2021-05-10 06:23:01
The bolder and bigger, the smaller the relative cost for DCT
raysar
_wb_ https://pypi.org/project/imagecodecs/
2021-05-10 08:38:52
This tool seem to compress tiff with jxl? <:BlobYay:806132268186861619> (i know that tiff format is limited but there are many extensions)
Nova Aurora
2021-05-10 10:53:10
But patching is where we should put our money for efficient photos of text?
diskorduser
2021-05-10 10:57:01
Efficient text rendering with inbuilt freetype :p
improver
2021-05-10 10:59:29
idk if anyone here is into xmpp but https://dev.gajim.org/gajim/gajim-plugins/-/merge_requests/211
KAGAMI
<@!239702523559018497> How is Firefox currently handling/requesting JXLs? Does it use 16-bit floats and convert them like Chrome or is it relying on the bad 8-bit output of djxl?
2021-05-11 03:00:28
For now it depends on 8bit output, but can be enhanced later 😉
Deleted User
Troc Well, outside of certain special cases.
2021-05-11 09:25:47
Patches aside, here we could actually try encoding with lossy Modular instead of VarDCT...
eddie.zato
2021-05-12 11:26:46
It would be good to get JXL support in the next version of the PDF format. It has support for JPEG2000, iirc.
_wb_
eddie.zato It would be good to get JXL support in the next version of the PDF format. It has support for JPEG2000, iirc.
2021-05-12 12:08:42
Leonard Rosenthol, in a pm to me: "For PDF, we are working on some Proof of Concepts to show off to the ISO committee that does PDF. Their next meeting is October, and I expect that we’ll kick off the actual standardization work coming out of that meeting. I already have the committee approval for that direction - now just need to do the hard parts 😉."
Scientia
2021-05-12 03:35:33
imagine a pdf compressor using jxl
2021-05-12 03:35:54
we could actually get better lossless compression of PDFs than we've ever been able to get before
2021-05-12 03:37:01
around 20% for something like a pdf of scanned jpg pages
2021-05-12 03:37:11
maybe more for a pdf with png images too and gif images
Deleted User
2021-05-12 04:13:37
Has anyone tryed getting FFMPEG to support JXL?
_wb_
2021-05-12 04:16:56
Not afaik
2021-05-12 07:11:12
<@710762823986446367> do you have thoughts on https://github.com/annevk/orb/issues/3 ?
Jake Archibald
2021-05-12 07:14:47
I'll take a closer look tomorrow, but almost all image requests are credentialed
_wb_
2021-05-12 07:34:57
Because nobody does <img crossorigin=anonymous> ?
Jake Archibald
2021-05-12 09:17:09
Only reason to do that is if you want to draw it to a canvas
2021-05-12 09:27:30
Or, if you want access to SharedArrayBuffer, then all external assets need to be CORS or CORP
Scientia
2021-05-13 01:49:44
I mean they should have implemented multi threading in the first place lol
2021-05-13 01:49:56
But probably yeah
2021-05-13 01:50:38
Regardless by the time it even gets standardized either jxl decoder will be fast enough for single threaded or CPUs will be fast enough for single threaded
2021-05-13 01:50:56
It's the PDF standard, getting it in is going to take ages
Crixis
2021-05-13 02:23:51
yes but actually no
Jim
2021-05-13 02:25:39
There's an AVIF polyfill that converts it to BMP and can be used in img or canvas. Could do the same with JXL. Re-encoding to JPEG might cause some visual loss. PNG should be fine but might be a bit slow using a JS conversion.
2021-05-13 02:32:12
Polyfill and WASM are two completely different concepts. Polyfill just means software that brings support for features that are not yet natively supported. WASM is WebAssembly, a lower level language meant for speeding up code such as games within browsers. WASM, coded correctly, is faster than using pure JS but not as fast as a compiled program or library... so having the format supported natively by the browser would be faster but WASM would still be faster than implementing the decoder/encoder in JavaScript.
2021-05-13 02:36:51
Only other way I can think of is through a browser extension that hooks into the encoder/decoder API... but that would bring a whole lot of security concerns.
_wb_
2021-05-13 02:50:53
I don't think polyfill is a very useful strategy for new image formats. For lossy webp, in theory a polyfill was possible (I think) that would just repackage the payload as a webm and use the native decoder on that, but that hasn't happened. I think the performance benefits of a new codec are largely negated by missing out on the image prefetching - remember that browsers request images long before they're even starting to parse javascript let alone execute it.
Jim
2021-05-13 02:56:01
Yes, the performance is reduced.... but it's either that or have a slowly reducing percent of people that either see nothing or fallback to an older image format, but destroys the reduced storage & bandwidth of the new format. There are tradeoffs. Personally, I prefer using a polyfill rather than taking up more storage space and bandwidth using other formats and waiting for everyone to update their browser which could take years.
_wb_
2021-05-13 03:23:10
Yes, if storage is the main cost, that is true
2021-05-13 03:23:36
For most of the use cases I see, bandwidth is the main cost
2021-05-13 03:25:49
But end-user image loading speed is also very important - in e-commerce use cases they notice the effect on conversion of 0.1s loading time improvements.
veluca
2021-05-13 03:48:33
you're likely better off converting on the fly on the server, latency-wise, if you want to save storage
Jim
2021-05-13 03:48:40
The increase in file size could potentially add 0.1s or more too it, depending on the format and features. The decoder is not affected nearly as much on performance compared to the encoder. Unless they are running really old hardware, it would probably be largely unnoticeable unless the entire page is covered with images.
2021-05-13 03:49:10
True, but not everyone will have access to a server or CDN with image conversion capability.
veluca
2021-05-13 03:49:47
it's not too hard to make a nginx plugin for that I think
2021-05-13 03:50:10
it should certainly be relatively easy to make one that does jpeg -> jxl on the fly
Jim
2021-05-13 04:14:56
I tend to come up with solutions that work for as many people as possible (from large organizations to people making blogs). A lot of people run Apache and may not be able to do that even with Nginx. The CDN is the best option as many free CDNs also have image conversion, but may not have CMS support in some cases... though there are no current CDNs and little software with JXL support currently. The software & browser level would provide the largest range of support. I would rank them in this order of preference: 1. OTF image conversion via server/CDN (though may not be supported by some) 2. Browser polyfill (will be slightly slower to decode for older browsers & hardware) 3. Produce & store other image formats (increase storage & bandwidth and may be slower depending on format/features) 4. Custom server software (not a viable option for many)
veluca
2021-05-13 04:17:19
I think in many conditions 3 >> 2, the wasm-based decoder is *significantly* slower (especially on ARM IIRC)
fab
2021-05-13 04:53:09
just store jxl
Jim
veluca I think in many conditions 3 >> 2, the wasm-based decoder is *significantly* slower (especially on ARM IIRC)
2021-05-13 08:42:25
How much slower? I've not really tried on my phone but even 10+ year old computers seem to run squoosh very quickly.
KAGAMI
2021-05-13 08:47:13
I think WebCodecs will make polyfills more feasible, but then we'll need a polyfill for WebCodecs itself 😁
_wb_
2021-05-13 08:48:08
https://c.tenor.com/8PFwkSkhIxUAAAAM/shades-inception.gif
2021-05-13 09:08:23
If Safari/WebKit would adopt reasonably quickly, we might not need fallback options for that long - between chromium/edge, firefox and safari/webkit, arguably a large enough fraction of web users are covered...
2021-05-13 09:13:27
https://c.tenor.com/FHQWr-zMA-oAAAAM/im-just-like-day-dreaming-sumit-anand.gif
Jim
KAGAMI I think WebCodecs will make polyfills more feasible, but then we'll need a polyfill for WebCodecs itself 😁
2021-05-13 09:18:21
I'm confused, even with that API wouldn't the actual codec still need to be in JS or WASM? It largely just seems to handle capturing the image and setting up a thread / WebWorker to move the encoding off the main thread. Other than that it looks like the implementation still needs to be in JS or WASM.
_wb_
2021-05-13 09:31:18
WASM is getting closer to native speeds. I think the main advantage of webcodecs would be to hook into the img tag directly, instead of having to do stuff with a canvas etc (missing out on prefetching etc). If I understand correctly.
KAGAMI
2021-05-13 09:36:20
I'm reading the spec and readme again, and actually it seems not about polyfills but only about the browser internal codecs 😬
Jim
2021-05-13 09:43:30
I think it could be used to create a polyfill, but I don't think it's for actually implementing new codec the browser does not support on it's own.
KAGAMI
2021-05-13 09:43:53
> Non-goals > Writing codecs in JavaScript or WebAssembly https://github.com/w3c/webcodecs/blob/main/explainer.md 😭
Jim
2021-05-13 09:51:51
But it looks like you can tap into the stream data for things like images so at least it should remove having to write the portion of a polyfill where you have to check for file extensions in images (yuck!). It should eliminate a few steps to creating a polyfill.
BlueSwordM
2021-05-13 09:58:26
Actually, I've got a great idea.
2021-05-13 09:58:36
If the device doesn't support JXL, disable website access <:kekw:808717074305122316>
veluca
Jim How much slower? I've not really tried on my phone but even 10+ year old computers seem to run squoosh very quickly.
2021-05-13 10:33:05
I haven't really measured, it was more of a "gut feeling" thing - but I wouldn't be surprised if it ended up being 5x slower
_wb_
2021-05-16 06:31:23
That was done a while ago already: https://www.iana.org/assignments/provisional-standard-media-types/provisional-standard-media-types.xhtml
2021-05-16 06:40:29
They recently drafted an IETF doc that mentions it, I suppose they did that to have a reference to point to for an IANA registration
2021-05-16 06:44:06
Even Google cannot just invent by itself new media types besides a `vnd.` one (something that comes from a specific vendor, like image/vnd.adobe.photoshop). It has to come from an international standardization org, like IETF, W3C, ISO, ITU, ...
190n
2021-05-16 08:09:17
something that came up after a discussion of integrating ffmpeg into the kernel (shudder): if/when ffmpeg supports jxl, how will it support lossless jpeg→jxl transcoding? as far as i know, ffmpeg always decodes input files before passing the data to encoders, so it wouldn't know not to decode the jpeg.
2021-05-16 08:09:44
we could add a flag or something to not decode the input, but that feels like a pretty huge architectural change on ffmpeg's end.
2021-05-16 08:10:18
but i think it could maybe work as a bitstream filter, as those do get to process compressed input data.
_wb_
2021-05-16 08:11:48
I suppose ImageMagick and libvips have the same problem, right <@693227044061839360> and <@310374889540550660> ?
2021-05-16 08:14:40
At a high level, the internal objects are uncompressed pixel buffers, and the pipeline is basically decode to pixels, manipulate pixels, encode from pixels.
2021-05-16 08:16:13
While jpeg to jxl and back skip the pixels (in libjxl internally, we still have an internal object for the image data as DCT coefficients)
2021-05-16 08:22:23
For ffmpeg, I suppose it does know the concept of handling bitstreams without decoding (remuxing only), so I suppose it could be something like that, conceptually
190n
2021-05-16 08:23:07
oh that could work, like `ffmpeg -i foo.jpg -c copy foo.jxl`?
_wb_
2021-05-16 08:23:43
Yes, something like that
190n
2021-05-16 08:25:10
i guess the issue is it really is transcoding, while usually `-c copy` guarantees it's not transcoding. an ffmpeg user with no jxl knowledge would probably think that command should be near instantaneous/not do any processing.
_wb_
2021-05-16 08:26:56
In ImageMagick, there is a concept of input annotation where you can do a downscale-on-decode or selecting only a specific page/frame from a tiff/gif. Maybe that mechanism could be extended to do "don't decode, just make a dummy image with the whole input bitstream as 'metadata' blob"
190n
2021-05-16 08:27:16
if ffmpeg encoders always process raw data, `-c copy` must be a special case right?
2021-05-16 08:28:39
i think maybe you could make `ffmpeg -c jxljlt -i foo.jpg -c jxljlt foo.jxl` work
2021-05-16 08:28:49
or whatever you want to call it
2021-05-16 08:29:37
the jxljlt *de*coder takes a jpeg of N bytes and produces an Nx1 8-bit monochrome image representing all the bytes, which the jxljlt *en*coder can process <:kekw:808717074305122316>
2021-05-16 08:29:52
i hate this already
_wb_
2021-05-16 08:30:11
It would be nice if `ffmpeg -i foo.jpg foo.jxl` would do the lossless recompression by default
190n
2021-05-16 08:30:39
ffmpeg has some... interesting defaults ||aomenc `--cpu-used=1`||
2021-05-16 08:30:47
but maybe we could get that to happen
veluca
2021-05-16 09:38:26
how many mime databases are there?!? I already sent a patch to include jxl to the debian and fedora mime info repos, and I found out yesterday that nginx has its own, and now I find this one too?
_wb_
2021-05-16 09:49:56
Probably there are a couple more - I assume MacOS and Windows also have their own thing too
2021-05-16 09:51:24
How do we get image/jxl from the provisional list to the actual list, btw? Do we just have to wait for IANA to review the application? They do seem to take a long time for that...
veluca
2021-05-16 09:51:51
I assume(d) they are waiting for IS
_wb_
2021-05-16 09:53:21
That makes sense, though don't we need an amendment then (probably to part 2?) that mentions the media type?
veluca
2021-05-16 09:54:38
no clue
2021-05-16 10:11:51
mhh, I'm not sure what's the difference between shared-mime-info and https://salsa.debian.org/debian/media-types
2021-05-16 10:14:35
if someone can open an issue, I think it would be better than just me sending a MR
2021-05-16 10:18:24
freedesktop
tufty
_wb_ I suppose ImageMagick and libvips have the same problem, right <@693227044061839360> and <@310374889540550660> ?
2021-05-16 03:43:11
Yes, libvips will always decompress the input image. As you say, you could potentially optionally attach the DCT coefficients as metadata I suppose, but that sounds pretty ugly. Yes, libvips lets you pass parameters to loaders, eg. "vips copy x.jxl[page=4] y.ppm" to copy the third page of an animation, so you could have a arg for "attach-compressed-data-as-image-metadata" libvips decompresses on demand, so something downstream could opt not to fetch pixels and it wouldn't trigger the decompress, it could just use the coeffs on the metadata
_wb_
2021-05-16 03:57:42
Would make sense then to do something like that in both libvips and imagemagick, and basically decode to pixels only when needed, which would not be triggered by a jxl encoder at the output end if it has a lossless setting and sees jpeg-bitstream-as-metadata in its input object
2021-05-16 04:00:35
Not super elegant, but the jpeg bitstream is smaller than the image buffer, and when you have to decode it then you won't need it anymore, so it's not that bad
2021-05-16 05:00:18
https://chromestatus.com/features#Jpeg%20xl <@532010383041363969> <@795684063032901642> <@768090355546587137> why does the chromestatus thing say "no active development"? Shouldn't that be "in development" or "proposed"?
2021-05-16 05:00:56
see also: https://twitter.com/watIsAgoodUsern/status/1393397141414977543?s=19
veluca
2021-05-16 07:00:14
mhhh
2021-05-16 07:00:16
good question
eddie.zato
2021-05-17 05:22:31
https://www.yacreader.com/ Сan read JXL in CBZ/CBR using the Qt plugin from novomesk (have to put it in the imageformats folder)
2021-05-17 05:28:36
Yep, but some people use Win 😄
Moritz Firsching
_wb_ https://chromestatus.com/features#Jpeg%20xl <@532010383041363969> <@795684063032901642> <@768090355546587137> why does the chromestatus thing say "no active development"? Shouldn't that be "in development" or "proposed"?
2021-05-17 10:47:56
was just updated
Deleted User
2021-05-17 05:15:40
<@!795684063032901642> How do animations and multi-pages look/work in Chromium? What do I have to consider as web dev?
_wb_
2021-05-17 05:16:19
Animation is being worked on.
2021-05-17 05:20:17
Multi-page we don't really have in jxl (at least not as something that is different from an animation), and images on a web page are not supposed to have any controls so I don't think it makes much sense to have page flipping (frame seeking) controls for jxl in a browser
improver
2021-05-17 05:22:46
TIFF being able to be like PDF sounds like antifeature to me to be honest
Nova Aurora
improver TIFF being able to be like PDF sounds like antifeature to me to be honest
2021-05-17 05:23:09
TIFF is adobe featurecreep
_wb_
2021-05-17 05:24:41
TIFF can do anything, it is the hairiest thing in the world
2021-05-17 05:24:54
https://c.tenor.com/H627PKHZHP4AAAAM/walking-into-my-wax-appoinment-hairy.gif
improver
2021-05-17 05:25:28
better lets make TIFF do jxl coding internally :--DDDD
_wb_
2021-05-17 05:25:51
Adobe also puts basically entire PSD files in a TIFF as 'metadata'.
Nova Aurora
_wb_ Adobe also puts basically entire PSD files in a TIFF as 'metadata'.
2021-05-17 05:26:40
Why not put in javascript and make it turing-complete while we're at it like svg
_wb_
2021-05-17 05:27:11
Vector formats have a thing for being turing complete
2021-05-17 05:27:27
The old PostScript could also make your printer go into an infinite loop
2021-05-17 05:28:54
As in: crashing and not doing anything, or as in printing an infinite amount of stuff, both could be done at some point
veluca
_wb_ Animation is being worked on.
2021-05-17 05:31:55
so I do have a working patch, but it doesn't really seem to work properly xD
2021-05-17 05:32:49
like, it blocks the rendering thread
Deleted User
_wb_ Multi-page we don't really have in jxl (at least not as something that is different from an animation), and images on a web page are not supposed to have any controls so I don't think it makes much sense to have page flipping (frame seeking) controls for jxl in a browser
2021-05-17 06:10:20
Of course they are supposed to have controls! In case you have multiple to slide through. It would be useful for something like that: https://www.reddit.com/r/comics/comments/neecej/bobbi_and_the_spaceman_12_rain_oc/ Reddit could simply use a single, more handy and much smaller JXL instead if the browser would allow access to all JXL frames.
_wb_
2021-05-17 06:14:20
I see how that would be useful, but then you'll need to fight w3c and co to redefine what <img> can do
Deleted User
2021-05-17 06:25:46
Is there no other way around?
_wb_
2021-05-17 06:30:09
Well you could do things in javascript or whatever, but if you want the img tag to do new things, that means changing the html spec
zebefree
2021-05-17 06:40:53
<video controls><source src="fancy.jxl"></video>
2021-05-17 06:42:44
<img> should be for static images only
_wb_
2021-05-17 06:47:03
Tell that to whoever made animated gif work in an img tag
2021-05-17 06:47:50
That ship has sailed
zebefree
2021-05-17 06:48:27
I will continue to disable them then
_wb_
2021-05-17 06:48:54
But it would make sense to allow any codec (image or video) in img tags, and maybe also to have a new tag for multipage stuff
2021-05-17 06:49:36
Like PDF, which is something browsers often can display but it's not really well integrated in the web platform
zebefree
2021-05-17 06:50:07
No, I don't want animations running that don't have a way to pause them
_wb_
2021-05-17 06:51:08
Then I guess `prefers-reduced-motion` is something for you?
2021-05-17 06:53:12
Or maybe just a browser UI way to pause animations (besides img there can also be css animations, or js doing stuff on a canvas; those might be a bit trickier to put pause buttons on)
zebefree
2021-05-17 06:54:56
Even just something in the context menu to pause a specific animation would be ok, but just running constantly with no way to pause is not acceptable
_wb_
2021-05-17 06:57:47
I wonder why that doesn't exist yet. Seems reasonable enough.
zebefree
2021-05-17 07:00:57
Fortunately people are moving to <video> (using video codecs, not image codecs), and <video> looping can be turned off in the menu; I just hope jxl doesn't cause a resurgence of <img> animations.
_wb_
2021-05-17 07:04:10
It shouldn't, video codecs are better for video than image codecs
2021-05-17 07:05:39
Just would make sense to also have a pause option for img with animation
2021-05-17 07:05:56
And allow any video in img
2021-05-17 07:06:34
Currently Safari allows h264 (in mp4) in img, and Chrome allows av1 (in avif)
zebefree
2021-05-17 07:08:12
A pause for img would be great, but videos in img without controls sounds horrible.
2021-05-17 07:08:46
That would motivate me to build a browser extension.
_wb_
2021-05-17 07:11:58
Well it is not meant for whole videos of course, more to replace gif for 5-second looping stuff
zebefree
2021-05-17 07:12:35
Those who will abuse it don't care what you think it is for.
_wb_
2021-05-17 07:13:05
Maybe browsers should always show controls if you ask for them
zebefree
2021-05-17 07:13:53
Serve the user instead of advertisers? That would be nice!
_wb_
veluca like, it blocks the rendering thread
2021-05-17 07:18:25
Any idea why? Does that always happen or only for large animations?
veluca
2021-05-17 07:19:01
fixed 🙂
_wb_
2021-05-17 07:21:40
Was it something silly, something funny, or something interesting?
veluca
2021-05-17 07:21:58
we didn't have a way to quickly count frames
_wb_
2021-05-17 07:24:14
The bitstream doesn't have a way to do that, you can skip over all frames and count if you have the whole file but that's it, right?
Deleted User
_wb_ Well you could do things in javascript or whatever, but if you want the img tag to do new things, that means changing the html spec
2021-05-17 07:37:56
Do you mean doing the whole image decoding through JS or do you think it is possible to tell the browser via JS which JXL frame to decode?
_wb_
Do you mean doing the whole image decoding through JS or do you think it is possible to tell the browser via JS which JXL frame to decode?
2021-05-17 07:52:29
I was thinking more like do it as a large single frame image and use js or css to show parts of it, or something
Deleted User
2021-05-17 07:54:58
But it would be nice to have a single JXL that works locally as well as online.
veluca
_wb_ The bitstream doesn't have a way to do that, you can skip over all frames and count if you have the whole file but that's it, right?
2021-05-17 08:11:40
well we couldn't even do that xD
_wb_
2021-05-17 08:16:34
Ah
2021-05-17 08:17:26
So chrome was like, "how many frames does this animation have?" and libjxl was like, "I dunno let me decode the whole thing for you and I will tell you"
Deleted User
2021-05-17 08:22:25
Tell me cloudinary, when will .../pg_x/ be supported for JXL files? 😄
_wb_
2021-05-17 08:34:31
We don't even support jxl animation yet atm, it's one of the things I have to work on this week
2021-05-17 08:35:22
The cloudinary notion of pg_x is like the imagemagick one, it's a page of a pdf, a layer of a psd, a frame of a gif
2021-05-17 08:35:58
Question for jxl will be whether to count in layers or in coalesced frames
2021-05-17 08:37:00
(also layers can have names in jxl, like in psd, which can be convenient to not have to worry about the "how is this counted?" problem)
2021-05-17 08:37:40
Layers you can count from bottom to top, from top to bottom, starting with 0, 1 or 2, and afaik all of those conventions are used by something or someone
veluca
_wb_ So chrome was like, "how many frames does this animation have?" and libjxl was like, "I dunno let me decode the whole thing for you and I will tell you"
2021-05-17 08:37:41
yeeees... that wouldn't have been *that* bad except for the fact that then chrome would create two different decoders for counting frames and actual display in some cases
_wb_
2021-05-17 08:39:56
Animated jxl art will be fun
Pieter
2021-05-17 08:44:48
How hard would it be to make jxl_from_tree support a mode where it has multiple frames, but they're all just slices out of a single hidden one?
2021-05-17 08:45:39
And e.g. transparently have it translate checks on group and frame number into a unified group number (where every frame is a range of groups).
_wb_
2021-05-17 08:48:14
Not hard, probably, just annoying plumbing
2021-05-17 08:48:41
Easier thing is to just do frames with a new tree per frame
2021-05-17 08:49:25
(and maybe write a bash script that generates a set of trees)
2021-05-17 08:50:41
Just need to add a way to indicate duration and blend mode, and then what does overlays now can be used to make animations
Pieter
2021-05-17 10:07:58
<@794205442175402004> Yeah, but a new tree per frame means you can't share (parts of) the tree.
_wb_
2021-05-17 10:20:31
Yes, for minimum size it may not be optimal (though signaling patches is also not free so I guess it depends on how much of the tree can be shared)
Pieter
2021-05-17 10:21:25
I could imagine things like having the first out-of-view line be different for each frame, but then the derivation of how that first line generates the next (visible) ones be the same.
2021-05-17 10:22:05
Could let you do automate that vary over time.
_wb_
2021-05-18 05:34:45
Yes, if the patch signaling plus selection on frame/group in the tree is less costly than duplicating the automaton description itself.
Pieter
2021-05-18 05:51:00
The language doesn't even need to be different if it's sufficiently high level. jxl_from_tree could just try both strategies and see which one is smaller
2021-05-18 05:51:17
i guess that'd earn it the label "compressor"
_wb_
2021-05-18 07:16:50
makes sense
improver
2021-05-18 03:27:41
https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c29 is this kinda progressive decoding or not quite yet?
_wb_
2021-05-18 03:36:33
good question, <@!768090355546587137> do you know what exactly this does?
veluca
2021-05-18 03:38:11
no, it's not
2021-05-18 03:38:28
it's just the same as partial decoding of sequential JPEG1
2021-05-18 03:38:43
(but one rect instead of one line at a time)
_wb_
2021-05-18 03:38:58
does it render fully decoded groups at a time?
veluca
2021-05-18 03:39:13
more or less
_wb_
2021-05-18 03:39:36
horizontal line of groups?
veluca
2021-05-18 03:39:57
nah, every group, but not exactly a group
_wb_
2021-05-18 03:40:13
minus filter padding?
lvandeve
2021-05-18 03:56:08
Before the chromium change, it first got all bytes, then started decoding
2021-05-18 03:56:56
After the change, it will already start decoding while receiving bytes, and place pixels in Chrome's image buffer This behavior is more like the other image decoders work too
2021-05-18 03:57:31
It will work group per group, or scanline per scanline, depending on the image
2021-05-18 03:58:17
Over a slow network connection, it should be possible to see the groups appear
_wb_
2021-05-18 04:07:48
Nice
2021-05-18 04:08:09
Next step: showing upsampled DC too?
2021-05-18 04:08:29
I suppose we first want the DC upsampling properly simdified
veluca
_wb_ minus filter padding?
2021-05-18 04:33:48
yeah
_wb_ I suppose we first want the DC upsampling properly simdified
2021-05-18 04:33:53
that's done btw 😛
jjido
2021-05-18 07:55:31
Can you _show_ an example of upsampling? (image preview vs image)
veluca
_wb_ We don't even support jxl animation yet atm, it's one of the things I have to work on this week
2021-05-18 08:18:31
https://chromium-review.googlesource.com/c/chromium/src/+/2903086 now get to work! 😛
jjido Can you _show_ an example of upsampling? (image preview vs image)
2021-05-18 08:19:59
second image from the left here https://www.youtube.com/watch?v=uzYHXqjGgL4 works as an example (it has more steps than usual though)
_wb_
veluca https://chromium-review.googlesource.com/c/chromium/src/+/2903086 now get to work! 😛
2021-05-18 08:22:45
<:Hypers:808826266060193874>
Deleted User
2021-05-18 09:17:07
So Chrome will be feature-complete before Cloudinary? ... <:PepeOK:805388754545934396>
_wb_
2021-05-18 09:19:10
Chrome Canary maybe. Chrome stable, nah 😅
Deleted User
_wb_ How do we get image/jxl from the provisional list to the actual list, btw? Do we just have to wait for IANA to review the application? They do seem to take a long time for that...
2021-05-18 09:36:00
Btw, can we additionally have `video/jxl` as media type? This would not only allow people to stop animations if the website uses JXL inside a video tag but also support seeking for multi-page-like JXLs.
improver
2021-05-18 09:37:53
mime type isn't relevant to that, html element type is
2021-05-18 09:38:15
not to mention that jxl would make poor video type
Deleted User
2021-05-18 09:39:17
Well, it's a small portion of content where JXL animations shine but having the option doesn't harm.
_wb_
2021-05-18 09:40:23
video/jxl would be weird, jxl is definitely not a video codec
improver
2021-05-18 09:40:24
having options is what makes current web browsers as big as they are. it absolutely does harm
2021-05-18 09:40:50
especially not well though out options
Deleted User
_wb_ video/jxl would be weird, jxl is definitely not a video codec
2021-05-18 09:42:11
but it has animations and many people would like to stop/control them.
improver
2021-05-18 09:42:29
i personally wouldn't
2021-05-18 09:42:43
usually animated images are too small for controls to be placed
2021-05-18 09:43:18
and no right clicking every thing is not good UX
190n
2021-05-18 09:43:43
video/jxl mime type also might make people think serving longer/high-res videos as jxl is okay which it probably (if you care about bandwidth) isn't
Deleted User
2021-05-18 09:44:06
<@!260412131034267649> I don't want to replace image/jxl, just have another option.
_wb_
2021-05-18 09:44:13
How browsers do their UI is somewhat orthogonal to media types or the html spec
improver
2021-05-18 09:44:18
also extension vs mime type confusion (servers usually divine mime types from extensions, so would need one more)
veluca
2021-05-18 09:44:33
it's also not really OK from a browser implementation point of view...
Deleted User
2021-05-18 09:44:55
which part? <:ugly:805106754668068868>
_wb_
2021-05-18 09:46:33
If a browser wants to show controls on animations, I think they can, regardless of if it's an img tag or a video tag or what the media type is
improver
2021-05-18 09:47:05
they would break layouts if they aren't overlaid on images themselves
_wb_
2021-05-18 09:47:19
They can also not show any images and show just the alt text
2021-05-18 09:47:55
Or read out the html aloud, for that matter
improver
2021-05-18 09:48:41
i dont recall any browser putting out raw html tags in place of images tbh
_wb_
2021-05-18 09:49:14
I mean how blind people browse the web
improver
2021-05-18 09:50:48
pretty sure their readers don't annotate specific tags, though they may do annotate some semantics/properties
_wb_
2021-05-18 09:51:08
The alt description is supposed to be used for img tags
improver
2021-05-18 09:51:18
idk I'm not blind so I don't really know but I would find it weird if it was like reading html source
_wb_
2021-05-18 09:51:28
It's the only obligatory part of an img tag besides the src
improver
2021-05-18 09:53:18
I'd probably like big global switch "stop all animations in the page"
2021-05-18 09:53:43
because usually if site does one gif it can do several more
2021-05-18 09:53:56
killing them one by one would be bad UX
_wb_
2021-05-18 09:54:56
Maybe could be a good idea for a browser extension (or feature request)
2021-05-18 09:55:59
Big pause button, sets `prefers-reduced-motion` and pauses all animations and videos.
Deleted User
2021-05-18 09:56:21
What about: `<img src="pic.jxl" alt="animated JXL" controls=""/>` (Controls being totally optional!) <@!179701849576833024> Can you add support for that? 😁
veluca
2021-05-18 09:57:04
well, I guess one would have to add support of that for avif, apng and gif too
2021-05-18 09:57:12
can be done, but I'm not the right person 😛
Deleted User
2021-05-18 09:57:51
Can you at least tell your Chrome friends about this feature wish? ^^
veluca
2021-05-18 09:58:24
it's not really chrome, more w3c I guess
_wb_
2021-05-18 09:58:31
That's better discussed at the html/w3c level than trying to add it as a chrome only thing
2021-05-18 09:59:23
I am in favor of basically making img and video the same tag, just with different defaults regarding controls, looping, autoplay and mute.
2021-05-18 09:59:43
But that's a big html spec change
Deleted User
2021-05-18 10:00:28
We can't let w3c control everything. A browser should add optional features to make w3c add them officially.
_wb_
2021-05-18 10:00:56
That's what lead to the IE feature bloat
2021-05-18 10:01:13
inventing tags just for fun
2021-05-18 10:01:39
marquee tag anyone?
2021-05-18 10:02:09
I remember those days
raysar
2021-05-19 01:56:02
We don't need button, only pause when click on animate image. For me a browser can add this feature very easily without changing html.
monad
_wb_ inventing tags just for fun
2021-05-19 04:43:19
There was a time I thought IE was kinda cool for that.
_wb_
raysar We don't need button, only pause when click on animate image. For me a browser can add this feature very easily without changing html.
2021-05-19 04:48:05
Not really. Images can be links, there can be js watching click events. You cannot just redefine left click on image to mean something else.
raysar
_wb_ Not really. Images can be links, there can be js watching click events. You cannot just redefine left click on image to mean something else.
2021-05-19 05:09:12
Ok, browser could pause image with exception if it's a link image. Gif with link is very rare on internet.
veluca
2021-05-20 07:29:48
<@456226577798135808> did you end up doing this? 🙂
2021-05-20 07:50:44
thanks! 🙂
2021-05-20 11:22:17
sounds about right I'd say
2021-05-20 11:23:06
``` <comment>JPEG XL image</comment> <comment xml:lang="fr">image JPEG XL</comment> <comment xml:lang="nl">JPEG XL afbeelding</comment> ``` haha 😄 maybe I should add Italian too, to make the set of languages even weirder
Deleted User
2021-05-20 11:24:01
`<comment xml:lang="pl">obraz JPEG XL</comment>`
veluca
2021-05-20 11:25:23
thanks a lot!
2021-05-20 11:26:55
hope so too 😛
2021-05-20 11:27:07
I also hope that it will make things "just work" for a few cases
fab
2021-05-20 11:42:26
who is Ai Hayasaka
Deleted User
veluca sounds about right I'd say
2021-05-20 11:42:34
I saw that here Luca didn't use capital letters and I just followed suit
fab
2021-05-20 11:42:36
and what have to do with the standardaziation
veluca
I saw that here Luca didn't use capital letters and I just followed suit
2021-05-20 11:46:20
I just copied it from our source code 😛
2021-05-20 12:05:00
I guess one can just replace "JPEG" with "JPEG XL" in the description for image/jpeg...
improver
2021-05-20 06:28:13
<https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c30> animation landed
veluca
2021-05-20 06:38:59
you people are very reactive xD
_wb_
2021-05-20 06:41:05
just in time for Chrome 92
2021-05-20 06:41:14
so Chrome 92 will have a full jxl decoder (behind a flag), right?
2021-05-20 06:41:39
now only need to make it progressive too, and get it enabled by default in Chrome 93 😅
veluca
_wb_ so Chrome 92 will have a full jxl decoder (behind a flag), right?
2021-05-20 06:42:52
should be
username
2021-05-20 06:43:16
but wait this makes it progressive already right? https://chromium-review.googlesource.com/c/chromium/src/+/2900235
2021-05-20 06:43:26
this got merged 2 days ago
_wb_
2021-05-20 06:43:52
that makes it incremental/sequential
Deleted User
2021-05-20 07:07:04
GOOGLE PHOTOS PLZ
2021-05-20 07:08:24
I can even pay a bit and sign an NDA to test JPEG XL in Google Photos, lots of photos are already uploaded and just waiting for being `-d 1` or `-d 2` converted on Google's side...
2021-05-20 10:44:39
mark the date: Jul 20
BlueSwordM
2021-05-21 02:42:23
Great news.
2021-05-21 02:42:37
Openmandriva will get full JPEG-XL support in its next stable release 👍
2021-05-21 03:23:42
Yes, out of the box 😄
2021-05-21 03:23:49
Everything, even the gimp plugin.
2021-05-21 03:24:16
However, there's something dubious <:Thonk:805904896879493180> ```Upgrading: jpeg-xl znver1 0.4.0-0.20210521.1 cooker-znver1 7.1 k jpeg-xl-gdk-pixbuf znver1 0.4.0-0.20210521.1 cooker-znver1 344 k jpeg-xl-gimp znver1 0.4.0-0.20210521.1 cooker-znver1 814 k lib64jxl0 znver1 0.4.0-0.20210521.1 cooker-znver1 817 k lib64jxl_threads0 znver1 0.4.0-0.20210521.1 cooker-znver1 13 k lib64xml2_2 znver1 2.9.12-1 cooker-znver1 632 k python-libxml2 znver1 2.9.12-1 cooker-znver1 243 k ```
2021-05-21 03:24:26
I didn't know JXL 0.4.0 was already out <:Thonk:805904896879493180>
Pieter
2021-05-21 03:25:46
0.4.0-0.20210521.1 probably means "git checkout of the branch that will become 0.4, on 2021-05-21"
2021-05-21 03:26:19
Which is extra suspicious, because in my timezone it's still may 20th!
BlueSwordM
2021-05-21 03:26:40
Yeah, it's very odd.
2021-05-21 03:26:59
They are in Europe, so that's fine, but how did they manage to get 0.4.0 in the 1st place?
2021-05-21 03:27:16
I wonder if they did that just to be able to differentiate it more easily <:kekw:808717074305122316>
190n
2021-05-21 03:29:27
good riddance
Pieter
2021-05-21 03:32:39
It still existed?
2021-05-21 03:39:52
No seriously, it still existed?
Nova Aurora
Pieter No seriously, it still existed?
2021-05-21 03:41:14
It is still the official browser of Win8 and is included in Win10 for people that need to check compatibility
2021-05-21 03:41:56
I don't like that Win10 has 3 browsers installed by defualt
2021-05-21 03:42:06
IE, old edge, and new edge
Pieter
2021-05-21 03:42:12
I guess I wasn't *really* serious about the question, the fact that The Verge wrote an article about it must mean it did. Still, I had no idea!
Nova Aurora
2021-05-21 03:42:31
Just for me to install Firefox and ignore those 3
Pieter
2021-05-21 03:42:54
"Microsoft Internet Explorer: a pre-installed tool to download browsers"
Nova Aurora
2021-05-21 03:43:31
Also new edge has outpaced firefox <:FeelsSadMan:808221433243107338>
Pieter
2021-05-21 03:43:32
(a joke I heard several years ago)
Nova Aurora
2021-05-21 03:45:31
Microsoft lost the phone operating system war, so now they try to profit off of android's/IOS's success
2021-05-21 04:13:05
This was microsoft's actual pre-installed tool to download browsers https://upload.wikimedia.org/wikipedia/en/e/e2/BrowserChoice.gif
2021-05-21 04:14:23
Although it was a page displayed in IE......
190n
2021-05-21 04:48:45
yeah the eu forced them to display that i believe
2021-05-21 04:49:30
iirc the order was randomized, but they kinda goofed the randomization so certain browsers were more likely to show up in certain positions. i forget if that was in a way that benefited microsoft, but cue conspiracy theories galore
monad
2021-05-21 06:26:07
I rarely use Win 10, but was surprised find IE was the default program for opening some file types ... maybe xhtml, I don't recall exactly.
jjido
2021-05-21 06:36:52
XML
veluca
190n iirc the order was randomized, but they kinda goofed the randomization so certain browsers were more likely to show up in certain positions. i forget if that was in a way that benefited microsoft, but cue conspiracy theories galore
2021-05-21 08:20:56
I'd expect it was just a programming mistake... this just by knowing a lot about typical programming mistakes 😛
BlueSwordM They are in Europe, so that's fine, but how did they manage to get 0.4.0 in the 1st place?
2021-05-21 08:21:24
I guess it's just the 0.4.x branch and they're expecting we'll make a 0.4.0 soon 😄
Petr
2021-05-21 08:38:36
I've just found out that FF Nightly on **Android** supports jxl too! 👍 It's not stated at https://caniuse.com/jpegxl and I didn't find it here at Discord either so it could be a new piece of info for some of you.
improver
2021-05-21 08:44:39
o damn
2021-05-21 08:45:24
hell ye enabled
2021-05-21 08:46:20
it totally wasn't there for quite a while, i tried looking for it numerous times
2021-05-21 08:50:16
and it works. but alpha stuff still aint implemented rip
_wb_
2021-05-21 01:58:36
Scope
2021-05-21 02:03:33
They mostly have interests in lossless like FFV1?
_wb_
2021-05-21 02:16:39
no idea, they list all kinds of formats
Scope
2021-05-21 02:18:39
I think because there are other things when the format/standard can be considered stable
2021-05-21 02:55:35
https://github.com/mozilla/standards-positions/issues/522
raysar
2021-05-21 04:31:50
I'm waiting the next chrome canary update to test animate jxl ! <:Hypers:808826266060193874>
veluca
2021-05-21 04:34:02
it might use a bit too much ram for now
BlueSwordM
veluca I guess it's just the 0.4.x branch and they're expecting we'll make a 0.4.0 soon 😄
2021-05-21 04:52:33
Yeah, they live a bit in the future 😛
improver
2021-05-21 06:52:09
2021-05-21 06:52:22
animated jxl on chromium snapshot
veluca
2021-05-21 06:56:34
well!
2021-05-21 06:56:41
that I didn't expect
2021-05-21 06:56:54
2021-05-21 06:56:59
does that one work?
improver
2021-05-21 06:57:28
it's counting without crashing
veluca
2021-05-21 06:57:35
ok, amazing
2021-05-21 06:57:39
I'll have to fix this I guess
improver
2021-05-21 06:57:45
veluca
2021-05-21 06:57:48
can you perhaps share the gif?
2021-05-21 06:57:52
ok xD thanks!
2021-05-21 07:02:29
``` #4 0x559ceb5cad10 jxl::PerformBlending() #5 0x559ceb62c0ef jxl::PatchDictionary::AddTo() #6 0x559ceb635c0c jxl::FinalizeImageRect() ``` well, it's a JXL bug...
improver
2021-05-21 07:03:28
pretty random one too i guess as ive converted another gif and that isn't crashing stuff
2021-05-21 07:04:46
wait uhh.. did upper patch stuff limit get fixed in latest sync
2021-05-21 07:05:36
because ive just pulled new git stuff.. and if it uses patches.. and chromium uses old one.. could it be related?
2021-05-21 07:06:18
2021-05-21 07:06:24
haha this one doesn't crash stuff
veluca
2021-05-21 07:07:14
nope, not related 🙂
improver
2021-05-21 07:07:24
so in patches but not related to limit
veluca
2021-05-21 07:36:56
the more I look at the code, the more I realize I must have done something extremely stupid xD
_wb_
2021-05-21 07:48:13
that's what "canary" and "behind-a-flag" are for, right? and also an amazing community that starts to try stuff and finds stuff that breaks nearly immediately 🙂
veluca
2021-05-21 07:55:07
well, now I fixed the crash, but the image looks weird
2021-05-21 07:55:10
progress?
improver
2021-05-21 07:55:52
can you perhaps share the original gif?
improver
2021-05-21 08:52:45
veluca can you perhaps share the original gif?
2021-05-21 08:52:52
^
veluca
2021-05-21 08:53:14
thanks! I found the bug in the meantime...
2021-05-21 08:54:01
by the way, there was *also* an *encoder* bug
improver
2021-05-21 08:54:19
wow
2021-05-21 08:55:53
kinda curious what exactly these bugs were
_wb_
2021-05-21 09:04:19
patches weren't cleared between frames
veluca
2021-05-21 09:04:37
and on the encoder side, patch *frames* weren't cleared between frames
_wb_
2021-05-21 09:04:45
basically the combination of patches and animation was kind of completely broken
veluca
2021-05-21 09:04:50
so the first patch frame would be encoded for *every* animation frame
2021-05-21 09:05:06
the second patch frame for every animation frame *except the first*
2021-05-21 09:05:09
etc...
_wb_
2021-05-21 09:05:32
luckily <@!179701849576833024> found and fixed the bug already
veluca
2021-05-21 09:05:40
also explains why encoding a bunch of PNGs as frames would give worse results than encoding them one by one xD
2021-05-21 09:06:12
(I still want to have an heuristic that can find patches common to multiple frames... not hard, in theory, but requires quite a bit of plumbing)
_wb_
2021-05-21 09:06:40
I suppose this fix should get cherry-picked into public repo and chrome quickly, no?
veluca
2021-05-21 09:06:45
yeah
2021-05-21 09:06:59
I expect it will be in 0.4.0 (probably on Tuesday)
2021-05-21 09:07:35
and in chrome by the next beta build, which is I think on Thursday? For sure in a canary somewhere around Wednesday though 🙂
GilDev
2021-05-22 04:20:42
As of today, latest Graphic Converter’s beta version supports JPEG XL importing and exporting: https://www.lemkesoft.org/beta.html
2021-05-22 04:29:36
diskorduser
2021-05-22 04:44:17
Nice
fab
2021-05-22 04:48:03
wha
2021-05-22 04:48:10
what is this symbol?
lithium
fab wha
2021-05-22 04:49:45
chinese
fab
2021-05-22 04:49:54
what it means
lithium
2021-05-22 04:50:50
the above (google translate)
2021-05-22 04:51:36
I think mean 'have more content'
_wb_
GilDev As of today, latest Graphic Converter’s beta version supports JPEG XL importing and exporting: https://www.lemkesoft.org/beta.html
2021-05-22 05:04:44
Nice! Let us know if you need help to get color profiles and metadata working.
GilDev
_wb_ Nice! Let us know if you need help to get color profiles and metadata working.
2021-05-22 05:06:03
Just to specify I’m not involved with the development, just had contact with the developer asking about JXL implementation. Really excited about this though, I use this software a lot!
2021-05-22 05:06:40
And thanks for the https://jpegxl.info/ website <@!794205442175402004>, very useful and condensed informations. Those comparison websites between formats with a slider are great!
_wb_
2021-05-22 05:09:56
Thanks to <@493871605408071681> and the WebP2 folks for those comparisons, and also <@710762823986446367> and <@228116142185512960> for Squoosh!
2021-05-24 01:18:35
https://github.com/gabriel-vasile/mimetype/commit/e9147bdbbbf03bb48e09c00d8b1b1f3db92ac62f
veluca
2021-05-24 01:25:00
yay
_wb_
2021-05-24 01:36:16
One mime db a day keeps the doctor away
monad
2021-05-24 08:18:22
Is anyone familiar with the relationship between Chromium and Electron feature support? Could you ship an Electron app with JXL support right now?
veluca
2021-05-24 08:20:36
no idea... but if Electron uses blink, probably yes
2021-05-24 08:22:26
right, it does use blink
2021-05-24 08:22:32
which is not a surprise I guess 😄
Jim
2021-05-24 08:38:14
I would assume it could be enabled in a nightly build but since it's not in stable yet I would not release a stable app with it, but you could obviously start updating/testing an app to use it when JXL reaches stable in Chromium & Electron.
Deleted User
2021-05-24 08:49:33
I still wonder why doesn't Discord support AVIF...
improver
2021-05-24 09:18:53
feature-gating: not all supported frontends support it so it would result in sub-optimal experience for ones where it's not supported
190n
2021-05-24 09:19:26
does discord embed webms (with vp8 or vp9) on ios?
improver
2021-05-24 09:19:40
i wonder...
Jim
I still wonder why doesn't Discord support AVIF...
2021-05-24 09:48:56
Not supported by Firefox, Edge, or Safari yet. Also they may not support it for a while. A number of CDNs are passing on it for now due to slow encode speed. Going into the next year I feel a lot are going to put serious thought into the performance impact of AVIF in whether they will support it now or later. Even if they do support it I'm sure they will take time (maybe months) to test and generate AVIF versions of all the images. I think it took over a year after WebP got wide browser support that Discord added support.
username
2021-05-25 02:19:43
also another reason why discord doesn't support AVIF is because their electron client is still using electron version 9 which is based on chromium 83 which is before chromium 85 and chromium 85 is the version that added AVIF support.
Deleted User
2021-05-25 03:38:36
Why don't they update their Electron version?
190n
2021-05-25 03:42:19
they run a patched version of electron so maybe they don't want to rebase
Deleted User
2021-05-25 04:05:21
They patched it?
190n
2021-05-25 07:27:17
i'm pretty sure they have some native code for voice stuff
Deleted User
2021-05-25 01:30:12
They should cherry-pick commits responsible for AVIF and other nice functions, they shouldn't interfere with their voice stuff
zebefree
2021-05-25 03:47:36
It would still not work in the web version until browsers support it.
eddie.zato
2021-05-26 02:53:04
Just checked Chromium 93.0.4523.0. It supports jxl animation.
veluca
2021-05-27 09:15:29
and the next canary / beta should even have it work! xD
2021-05-27 09:15:38
(with patches)
raysar
veluca and the next canary / beta should even have it work! xD
2021-05-27 09:31:01
Yes! animate works great with --patches=1 --dots=1 --noise=1 --progressive_dc=0 <:Hypers:808826266060193874>
veluca
2021-05-27 09:31:22
good!
raysar
2021-05-27 09:34:57
Next step is to work on chrome on android? 😇
veluca
2021-05-27 09:40:56
there's not a lot to *work* on there
2021-05-27 09:41:03
just getting the flag enabled
raysar
2021-05-27 09:56:19
So who have the power to enable jxl flags? 😄 i don't see any flags on chrome canary android.
veluca
2021-05-27 09:59:35
I'm not actually sure...
Kleis Auke
2021-05-28 10:42:47
Looks like libjxl was approved by Fedora last weekend: https://bugzilla.redhat.com/show_bug.cgi?id=1922638#c17.
veluca
2021-05-28 10:47:53
wonder why they built it with sjpeg...
2021-05-28 10:47:55
oh well
2021-05-28 10:48:26
nice! now we just need to get debian to include the package we gave them 😛
2021-05-28 10:50:51
what bundled libraries anyway?
Kleis Auke
veluca wonder why they built it with sjpeg...
2021-05-28 11:09:42
Probably because `JPEGXL_ENABLE_SJPEG` is enabled by default, but I'm not sure.
veluca
2021-05-28 11:10:06
I guess
Kleis Auke
2021-05-28 11:10:11
According to that spec file, they included the bundled sjpeg because there is no official release.
veluca
2021-05-28 11:10:15
But there's no need, really
2021-05-28 11:10:47
I mean, for sure there's no need for the library, but even for the tools
Kleis Auke
2021-05-28 11:51:10
Ah, you're right. libjpeg(-turbo) can also be used for encoding (which is already included within the spec file), so sjpeg is not necessary. In that issue, should I ask why they included sjpeg?
2021-05-28 11:53:28
Perhaps they could also swap the bundled skcms with lcms2, since lcms2 does get packaged by Fedora. Or is there any downside to using that?
Scope
2021-05-28 11:56:52
https://discord.com/channels/794206087879852103/794206170445119489/821664205672677417
_wb_
2021-05-28 12:13:44
it's not a big downside imo
Kleis Auke
Scope https://discord.com/channels/794206087879852103/794206170445119489/821664205672677417
2021-05-28 12:16:38
Curious, I couldn't reproduce that with libvips on Windows (which uses lcms2), I'll have a look. ``` vips.exe icc_transform 50551002028_1738fd834f_o.jpg x.jpg srgb --vips-progress vips temp-3: 4922 x 3017 pixels, 6 threads, 4922 x 16 tiles, 128 lines in buffer vips temp-3: done in 0,17s ```
Scope
2021-05-28 12:22:10
🤔 Maybe cjxl does it in a different way
_wb_
2021-05-28 12:39:45
we transform to floating point, not to int, and not to sRGB
2021-05-28 12:40:49
so likely some optimizations in lcms2 that are specific for transforming to 8-bit sRGB don't apply
veluca
2021-05-28 01:35:12
skcms is slower
2021-05-28 01:35:16
possibly a lot slower
2021-05-28 01:35:25
but also a bit more precise and works in more cases
2021-05-28 01:35:47
skcms is IIRC a single file, so not too bad
2021-05-28 01:36:00
sjpeg on the other hand... I'd prefer if it was disabled I think
The Fylkir
2021-05-28 07:50:35
So flac and probably a few other music formats support embedded album art. I wonder if this is an area where JXL could shine
veluca
2021-05-28 07:53:07
mh, I don't know - I don't think more than on other cases, at least
Deleted User
The Fylkir So flac and probably a few other music formats support embedded album art. I wonder if this is an area where JXL could shine
2021-05-28 08:03:48
Never understood that. Why would you wanna do that? Let's say a typical album contains 10 songs, then why save the cover 10 times for each FLAC? Of course, you can use one FLAC per album instead of per song but then you probably have an additional .cue anyway and another .jxl won't harm.
The Fylkir
2021-05-28 08:22:18
Yeah that's a good point
2021-05-28 08:23:00
I'm more excited for when JXL is supported enough that I can convert my comic collection to JXL