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

tools

veluca
2021-05-10 04:20:59
(but djxl is *not* part of the core libjxl library anyway :P)
_wb_
2021-05-10 04:25:41
What's the reason for not putting dithering in the uint8 output path of libjxl?
Deleted User
2021-05-10 04:26:27
What is "core libjxl library" then?
_wb_ What's the reason for not putting dithering in the uint8 output path of libjxl?
2021-05-10 04:27:31
Weren't you included in those discussions? πŸ˜„
veluca does it? IIRC it suports dithering to lower-than-8-bit output
2021-05-10 04:28:40
lower-than-8-bit back than is like lower-than-16-bit now ;)
spider-mario
What is "core libjxl library" then?
2021-05-10 04:29:05
just the C library that does the decoding
2021-05-10 04:29:12
of just jxl
2021-05-10 04:29:27
`djxl` can have more dependencies, e.g. a CMS, and code to write to various formats
veluca
_wb_ What's the reason for not putting dithering in the uint8 output path of libjxl?
2021-05-10 04:29:49
that you can implement it with the callback-float-output, and that often you'd need to do it *after* a CMS, say...
_wb_
2021-05-10 04:30:31
Why have a uint8 output at all then?
2021-05-10 04:30:48
Can also implement that with the float output, after all
Deleted User
2021-05-10 04:31:10
<:This:805404376658739230> 😁
veluca
2021-05-10 04:33:31
eh, because we didn't have callbacks
2021-05-10 04:33:32
xD
_wb_
2021-05-10 04:33:46
Presumably, if you do uint8 output, it's either because you're planning to reencode to some 8-bit format (or 8-bit mode in a format that could also do higher bit depth), or because you hope to get things in the display space and can just blit them to the screen without color management
veluca
2021-05-10 04:33:52
also, because I didn't want to discuss too much
2021-05-10 04:34:15
it's not going to be used in Chrome anyway, and currently we're focusing on that
_wb_
2021-05-10 04:35:34
Sure but for viewing apps that use the uint8 output (and for djxl) it would be quite useful to avoid banding
veluca
2021-05-10 04:36:20
let me rephrase my statement: we are not going to add dithering to libjxl *now*
_wb_
2021-05-10 04:36:22
I think we should either get rid of the uint8 output, or do the best possible uint8 output (or at least some fast approximation if the best possible thing)
2021-05-10 04:36:49
Ok, not doing it now I can live with 😁
Deleted User
2021-05-10 04:37:50
Me too, but I will keep being sceptical about how much control Chrome has over JXL...
veluca
2021-05-10 04:38:07
ideally at some point we'll add a wrapper around libjxl to which you tell your display color profile and that wrapper takes care of things for you
Me too, but I will keep being sceptical about how much control Chrome has over JXL...
2021-05-10 04:38:16
how so?
_wb_
2021-05-10 04:39:11
Yes, a convenience libjxl-with-cms sounds like a really good idea to make it easier for applications to avoid messing up
2021-05-10 04:40:14
(of course there will still be applications that are too lazy to figure out the display space and just claim to be sRGB all the time, but we cannot really stop that)
2021-05-10 04:41:00
(unless we find a portable way to get the display space and use that by default)
veluca
2021-05-10 04:42:40
haha
2021-05-10 04:42:45
nice joke, that one
Deleted User
veluca how so?
2021-05-10 04:42:50
You are paid by Google. <:YEP:808828808127971399>
veluca
2021-05-10 04:43:51
indeed, but I don't quite understand what exactly you are skeptical about πŸ˜›
2021-05-10 04:43:57
(Jon isn't, FWIW)
Deleted User
2021-05-10 04:45:29
Yes, but he's the only one from externally and apparently also wasn't considered in all decisions. πŸ˜‰
_wb_
2021-05-10 04:46:20
Nothing was decided except what the google folks are going to work on this week, afaiu
2021-05-10 04:46:43
Which is fine, I am not their manager πŸ˜‚
veluca
2021-05-10 04:47:12
yes πŸ˜›
Deleted User
2021-05-10 04:47:45
So all this fuss for nothing? 😞
veluca
2021-05-10 04:48:20
the code is there, we know it works, at some point when we're less on fire we'll think about what to do for it exactly πŸ™‚
_wb_
2021-05-10 04:48:30
It would have been nicer if more people were involved in jxl development; maybe when we have moved to a public dev repo that will get better
2021-05-10 04:49:05
Originally the chair of the jxl AHG was a Netflix guy, btw
veluca
2021-05-10 04:49:07
(another argument against dithering in the core libjxl is: why *that* dithering and not *that other one*?)
_wb_
veluca (another argument against dithering in the core libjxl is: why *that* dithering and not *that other one*?)
2021-05-10 04:49:59
Sure, but "no dithering" is also a kind of dithering, namely the worst kind 😁
veluca
2021-05-10 04:50:28
eh but that's a weaker argument πŸ˜›
_wb_
2021-05-10 04:55:21
Anyway, for now people can do djxl --bits_per_sample 16 and do whatever dithering they like. We can later figure out a good dithering to do by default for uint8 output, and add it to both the end of the chrome/firefox/viewers' rendering pipelines (after color management and rescaling), and to djxl with 8-bit output.
veluca
2021-05-10 04:56:39
after rescaling in chrome/ff: yeah, no
_wb_
2021-05-10 04:57:17
It's not the most urgent thing, but by the examples I saw I do think it can help to get more out of the 8-bit displays that are currently still very much the norm. Especially now they're moving to wider gamuts...
veluca
2021-05-10 04:58:00
image decoders give you u8s or f16s, at the original resolution, and the scaling is somewhere deep in the guts of the possibly-GPU-accelerated page rendering
_wb_
2021-05-10 04:58:00
I suppose after color management things go to the gpu as 8-bit RGBA?
veluca
2021-05-10 04:58:25
yep
_wb_
2021-05-10 04:59:41
Yeah so if there's not much rescaling happening, the info is already lost
Deleted User
2021-05-10 05:00:03
<@!794205442175402004> I guess it's not possible to fix every mistake of the past. ;)
BlueSwordM
2021-05-10 05:02:02
Actually, it is possible. Windows 11: 10-bit minimum display spec in 2035 🀣
veluca
2021-05-10 05:03:03
the problem of 8-bit buffers is that having "deeper" buffers actually costs a nontrivial amount of memory
_wb_
2021-05-10 05:03:27
If there's enough downscaling, then dithering can still be done even if the source is already 8-bit, but not going to happen/controllable if hw rescalers are used...
fab
2021-05-10 05:04:35
<@!111445179587624960> do you please have 9a8f5195 generic builds? thanks. i want to test how it add sharpness to image
2021-05-10 05:04:56
now i'm testing contrast with the one more recent
_wb_
2021-05-10 05:05:00
10-bit RGBA could theoretically be done in 5 bytes per pixel, costing only 20% more...
2021-05-10 05:05:18
How is it done for HDR?
veluca
2021-05-10 05:05:51
you take the hit of 8 bytes per pixel πŸ˜›
_wb_
2021-05-10 05:06:13
The displays are only 10-bit though
veluca
2021-05-10 05:06:16
as for 10-bit: then you get funny alignment issues, and I have no idea how much GPUs actually like that
2021-05-10 05:06:21
nah, f16 for those
2021-05-10 05:06:48
at leas in chrome
_wb_
2021-05-10 05:06:54
Maybe the driver wants f16, but the displays themselves take 10-bit PQ or HLG, afaik
veluca
_wb_ If there's enough downscaling, then dithering can still be done even if the source is already 8-bit, but not going to happen/controllable if hw rescalers are used...
2021-05-10 05:08:21
btw, did you know that now you can have *lossy compression* between your video card and your display? πŸ˜›
_wb_
2021-05-10 05:14:00
Does HDMI have lossy modes?
veluca
2021-05-10 05:23:13
apparently yes
2021-05-10 05:24:31
https://vesa.org/vesa-display-compression-codecs/ They provide efficient compression and **visually lossless** quality for consumer and professional products.
_wb_
2021-05-10 05:26:14
8bpp and 6bpp πŸ€”
2021-05-10 05:26:42
That is possibly quite lossy
2021-05-10 05:27:08
I mean there must be patterns where it is not visually lossless
2021-05-10 05:27:36
Because of pigeon holes and stuff
2021-05-10 05:27:48
😁
2021-05-10 05:30:31
If it's a fixed bpp that means it is probably like those texture formats
2021-05-10 05:32:19
The "download the spec" doesn't seem to have a link though
spider-mario
2021-05-10 05:32:51
ah, yes, just the text β€œDownload Now”
2021-05-10 05:32:55
almost as if an instruction
2021-05-10 05:33:29
β€” Download Now! β€” But… but… I don’t know where! β€” I SAID
_wb_
2021-05-10 05:33:38
https://glenwing.github.io/docs/VESA-DSC-1.2a.pdf
2021-05-10 05:33:42
Found something
2021-05-10 05:33:54
(not on that page though)
2021-05-10 05:37:51
It's fancier than what I expected, even has a little color cache thing like webp!
2021-05-10 05:42:38
Does encode 3 pixels per group (which gets encoded to exactly 3 bytes, so 8bpp)
2021-05-10 05:45:34
Would be fun to make a noise image that has some low freq thing visible when seen uncompressed that disappears when using DSC 1.2a
2021-05-10 05:46:34
Maybe some of the <#824000991891554375> already has that property 😁
eddie.zato
2021-05-13 03:08:12
cjxl.exe v0.3.7-6-g30ea86a The problem with temp jpeg files not being deleted still persists.
improver
2021-05-18 06:58:40
how do i force jpg -> modular encode?
Scientia
2021-05-18 06:59:01
-j -m right?
veluca
2021-05-18 06:59:06
I think so
improver
2021-05-18 06:59:10
oh `-j`
2021-05-18 06:59:15
forgot about that one
2021-05-18 06:59:32
sorta expected `-m` to already assume that
veluca
2021-05-18 07:00:21
I'll tell you a secret: the cjxl command line is a mess πŸ˜›
improver
2021-05-18 07:00:40
heh yeah `-m` ended up smaller
Scientia
2021-05-18 07:00:49
Really?
veluca
2021-05-18 07:00:54
must be one weird JPEG
Scientia
2021-05-18 07:00:58
Using lossless modular?
2021-05-18 07:01:03
Or lossy
improver
2021-05-18 07:01:11
kinda funny how some pixiv jpegs are so quality that they compress better with modular
2021-05-18 07:01:21
lossless
Scientia
2021-05-18 07:01:25
~~time for more heuristics~~
veluca
2021-05-18 07:01:35
can you share?
improver
2021-05-18 07:01:52
uhh id have to find another one this one is lewd
2021-05-18 07:02:27
but i wouldnt be surprised that a lot of stuff if encoded with jpeg q 100 would result in something like this
Scientia
2021-05-18 07:02:52
But legitimately, it may be nice to have a heuristic when you tell cjxl to compress a jpeg and remove metadata/reconstruction data that can tell you if it would compress better with modular or lossless jpeg
2021-05-18 07:03:25
Since you're already removing the reconstruction data
veluca
2021-05-18 07:03:26
is it anime-ish?
Scientia
2021-05-18 07:03:35
Ohhh
2021-05-18 07:03:42
That's why it's working
2021-05-18 07:03:52
He said it was from pixiv
2021-05-18 07:04:02
Essentially exclusively anime
improver
2021-05-18 07:04:27
yeah definitely anime-ish
Scientia
2021-05-18 07:04:30
Japanese art site
veluca
2021-05-18 07:05:20
ok, then I'm not surprised πŸ˜„
2021-05-18 07:05:44
wonder if it's an RGB or YCbCr JPEG...
Scientia
2021-05-18 07:05:49
Can cjxl transcode from jxl to jxl?
veluca
2021-05-18 07:05:54
nope
Scientia
2021-05-18 07:06:13
That would be useful in the future
2021-05-18 07:06:21
Especially when we have files from now
2021-05-18 07:07:12
In the future when cjxl gets more improvements it would be useful to take an older jxl and transcode it to give it the new improvements in coding
_wb_
2021-05-18 07:07:31
For lossless you can do that, for lossy not really
veluca
2021-05-18 07:07:43
ehhhh, takes more wok than we have time ATM πŸ˜„
Scientia
2021-05-18 07:07:55
Lossless is mainly my goal
2021-05-18 07:08:17
Lossy yeah you can't retrieve data that's already been thrown away to do a better encode
_wb_
2021-05-18 07:09:02
Main priority right now is making browsers decode all kinds of jxl as well as possible
Scientia
2021-05-18 07:09:19
Seems to be going well
_wb_
2021-05-18 07:09:32
Then I guess we'll turn to support in viewers and authoring tools
Scientia
2021-05-18 07:09:41
I think adoption is faster than avif was originally
2021-05-18 07:10:19
Maybe similar
_wb_
2021-05-18 07:11:02
Avif stopped at the "decode once full bitstream is available" stage, which is reasonably easy to implement
2021-05-18 07:11:42
Since today we have incremental decode too, which is already an improvement.
2021-05-18 07:12:20
Progressive would be even better, but is some more implementation effort.
improver
2021-05-18 07:13:05
<https://www.pixiv.net/en/artworks/89893232> happens with this one too
2021-05-18 07:13:12
2021-05-18 07:13:46
from something i can't post on discord to something i almost could
Scope
2021-05-18 07:19:26
Btw, about improving image compression and progression is not needed in today's world
2021-05-18 07:19:30
2021-05-18 07:19:56
2021-05-18 07:20:18
improver
2021-05-18 07:21:51
that was faster for me but wasn't unnoticeable either
Scope
2021-05-18 07:40:55
Yep, not all sites have CDNs around the world or good speed and transport routes to every client
improver
2021-05-18 07:45:40
though i could squeeze it down to fit but i guess that aint going to happen ``` 8.5M 89893232_p0.jpg.s9e3i1m.jxl ```
veluca
2021-05-18 07:46:00
that's going to be pretty slow to decode...
2021-05-18 07:46:25
rule of thumb: VarDCT images will decode 20x faster or more than modular images
improver
2021-05-18 07:46:38
it was really (like really really) slow to encode so I wouldn't be surprised
_wb_
2021-05-18 08:06:14
Well decode speed should still be a lot better than that encode speed, lol
2021-05-18 08:08:16
Could also do slightly lossy vardct encode, -d 0.5 or so
2021-05-18 08:08:47
Probably smaller than modular, and not much more lossy
2021-05-18 08:09:27
(decoding jpeg to pixels and encoding those pixels losslessly is a slightly lossy thing to do anyway)
improver
2021-05-18 08:19:54
not that much more lossy than decoding jpeg to pixels on the screen
2021-05-18 08:21:01
but yes somewhat
Petr
veluca I'll tell you a secret: the cjxl command line is a mess πŸ˜›
2021-05-19 06:38:29
Someone should submit an issue "Decrease cjxl command line mess", right? 😜
veluca
2021-05-19 06:39:15
πŸ˜›
fab
2021-05-19 07:18:16
you will not get smaller anyway than for %i in (C:\Users\User\Documents\xs3*.png) do cjxl -s 6 -q 63.52 --epf=2 -p --gaborish=1 --patches=0 --dots=1 --use_new_heuristics %i %i.jxl
2021-05-19 07:18:38
modular is less efficient
2021-05-19 07:18:45
for jpegs
2021-05-19 07:18:59
and do too much research
diskorduser
2021-05-19 08:58:37
Why do you want to use modular for jpeg.
fab
2021-05-19 09:07:24
me not
Nova Aurora
Petr Someone should submit an issue "Decrease cjxl command line mess", right? 😜
2021-05-19 02:51:37
Someone should submit a PR <:Poggers:805392625934663710>
diskorduser
2021-05-19 04:18:33
Nooo. I like having more flags
veluca
2021-05-22 01:15:36
it's for the third image, if you pass one
2021-05-22 01:16:47
mmmmmhhhh, if I remember correctly that's an annoyance of compiling compare_images with skcms instead of lcms
2021-05-22 01:17:47
I *think* you can fix it by passing -DJPEGXL_ENABLE_SKCMS=Off to cmake
2021-05-22 01:18:18
but I'm not sure
2021-05-22 01:18:20
<@!604964375924834314>
2021-05-22 01:50:26
I do wonder what is wrong with using skcms, but I fear we have more pressing concerns that that xD
2021-05-22 01:51:54
making sure our decoding lib is as good as it could be in the next 3 weeks
2021-05-22 01:52:14
(mostly in terms of memory usage and proper support for progressive decoding)
2021-05-22 01:53:58
v0.4 is what we have today, basically
2021-05-22 01:54:33
it's feature-complete, bitstream-wise, but the quality of the implementation of some features... let's say could be improved
2021-05-22 01:56:34
0.4.x is mostly 0.4.0 but without a bugfix or two
spider-mario
2021-05-22 02:09:34
I had come across that bug with compare_images+skcms but hadn’t figured out the causeβ€―β€”β€―after all, it’s fine in djxl
2021-05-22 02:09:41
it’s rather puzzling
2021-05-22 02:10:23
maybe I’ll investigate deeper at some point
2021-05-22 02:10:46
possibly some slightly negative value that wrecks havoc somewhere (wrapping?)
lithium
2021-05-23 02:27:57
<@!416586441058025472> jpegxl-44778c69-master [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar]
fab
lithium <@!416586441058025472> jpegxl-44778c69-master [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar]
2021-05-23 02:31:14
do you have also 100e3c7e
2021-05-23 02:31:23
please
2021-05-23 02:31:33
i will not look into actual difference
2021-05-23 02:31:42
i will only convert a photo
lithium
2021-05-23 02:34:11
<@!416586441058025472> I find a old cjxl on my Program Files 20210520 create, I can't guarantee this version is 100e3c7e.
2021-05-23 02:34:28
old cjxl
veluca
2021-05-23 02:41:28
100e3c7e is older, use 44778c69
fab
2021-05-23 02:42:06
ligcc compiler i don't have
2021-05-23 02:42:15
sorry for the font
2021-05-23 02:42:18
i did wrong
2021-05-23 02:42:27
i'm thinking of -q 70,05 --epf=1 --dots=0 --resampling_2
2021-05-23 02:44:20
i need like mozjpeg q 32 and separate chroma quality 15
2021-05-23 02:44:44
but in higher fidelity
2021-05-23 02:45:05
i want to distort image on purpose
2021-05-23 02:45:13
to look better on the selfie
2021-05-23 02:45:37
i did photo with a flash and hdr and with a sony dsc wx60
2021-05-23 02:45:44
2013 camera
2021-05-23 02:46:15
why is giving that error?
lithium
2021-05-23 02:46:24
you can try jpeg xl 44778c69, I think this sync don't have much quality change.
fab
2021-05-23 02:46:31
ah it was compiled in windows 10
lithium
2021-05-23 02:46:51
I using windows 10 64bit
fab
2021-05-23 02:47:15
but is relative to windows 10 or because it's compiled using newer version of compilers?
2021-05-23 02:47:27
is fault of windows 10 or of the version of the compiler?
lithium
2021-05-23 02:51:49
msys2-64 mingw64 clang
2021-05-23 02:52:37
mingw-w64-x86_64-clang 11.0.0-8
fab
2021-05-23 02:54:49
i downloaded another person build
2021-05-23 02:54:55
and is not starting
2021-05-23 02:55:02
same error
lithium
2021-05-23 02:57:17
You using windows 7 32bit or 64bit?
fab
2021-05-23 02:59:02
64 bit
2021-05-23 02:59:12
but i do not have any compiler installed
2021-05-23 02:59:19
no msys
2021-05-23 02:59:27
i uninstalled them
lithium
2021-05-23 03:01:49
I think you can try Scope avx only version? https://encode.su/threads/3564-JXL-version-0-3-released?p=69684&viewfull=1#post69684
fab
2021-05-23 03:15:15
ok i did
2021-05-23 03:15:17
for %i in (C:\Users\User\Documents\67\*.jpg) do cjxl -j -q 91.832 -s 8 --faster_decoding=7 --dots=1 --gaborish=0 --patches=1 -p --epf=2 --use_new_heuristics %i %i.jxl
2021-05-23 03:15:29
and now i open squoosh and i do avif q 16
2021-05-23 03:15:42
with default effort and settings and that encoder
_wb_
2021-05-23 03:22:37
no idea what that combination of options actually ends up doing
2021-05-23 03:24:06
it's a combination that does not make a huge amount of sense to me β€” why epf 2 but gaborish 0?
lithium
2021-05-23 03:24:18
jpeg xl encoder fuzz test?
_wb_
2021-05-23 03:26:55
it's good to find bugs there in the sense of combinations that make cjxl crash or do something wildly bad
veluca
2021-05-23 03:27:39
pretty sure dots and patches do nothing with the new heuristics either
_wb_
2021-05-23 03:27:43
but for quality comparisons please don't use weird non-default options, it is likely not to give good results
veluca
2021-05-23 03:27:50
-s 8 likely doesn't do much too
2021-05-23 03:28:10
faster_decoding=7 doesn't mean anything different from =4 πŸ˜›
2021-05-23 03:28:33
and I don't know if you can even disable gaborish with the new heuristics...
2021-05-23 03:28:48
probably yes
fab
2021-05-23 03:30:49
i used 12052021
2021-05-23 03:31:01
to convert a selfie
2021-05-23 03:31:06
that i compressed with avif q 16
2021-05-23 03:31:22
i got a 16 mpx 31,6 kb AVIF image
diskorduser
fab i want to distort image on purpose
2021-05-23 03:40:21
Use image editing programs then.
Lastrosade
eddie.zato cjxl.exe v0.3.7-6-g30ea86a The problem with temp jpeg files not being deleted still persists.
2021-05-26 08:16:26
its a bit of a problem
veluca
2021-05-26 08:25:44
I have no idea what may cause it, honestly... I don't recall any part of our encoder that creates jpeg files πŸ€”
Scope
2021-05-26 08:29:49
Probably libjpeg(-turbo)
Lastrosade
2021-05-26 08:30:49
We get these tmp files
2021-05-26 08:31:15
They are basically the source images
Scope
2021-05-26 08:35:42
<https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/example.txt> > * If the compressor requires full-image buffers (for entropy-coding > * optimization or a multi-scan JPEG file), it will create temporary > * files for anything that doesn't fit within the maximum-memory setting. > * (Note that temp files are NOT needed if you use the default parameters.) > * On some systems you may need to set up a signal handler to ensure that > * temporary files are deleted if the program is interrupted. See libjpeg.txt.
Lastrosade
2021-05-26 08:37:20
So this could come from ffmpeg when decoding jpegs ?
Scope
2021-05-26 08:39:30
I don't know, but maybe from libjpeg-turbo or some other libs
eddie.zato
2021-05-27 02:30:03
So we just need the encoder to call libjpeg-turbo with some parameters that don't create tmp-files, or at least have libjpeg-turbo clean up after itself. Dunno, maybe this "maximum memory setting" is set to zero. πŸ˜„
Lighthouse
2021-05-31 04:36:04
Hello! Multithreaded optimization for cjxl seems to be... just average I guess. I am currently converting very large files in lossless (modular) mode and I noticed at best one or just two threads are being used. Is there any plan for further optimizations?
2021-05-31 04:41:52
also it would be great if I can convert tiff files to jxl directly instead of using png as interim format.
_wb_
2021-05-31 05:25:15
More optimization is possible, but note that to some extent, optimal encoding has inherently sequential parts. Fast, non-optimal encoding is easier to parallelize. So the difference between -s 2 and -s 9 will be quite large.
monad
Lighthouse also it would be great if I can convert tiff files to jxl directly instead of using png as interim format.
2021-05-31 05:35:02
ImageMagick should support this.
_wb_
2021-05-31 05:51:46
We are not aiming to read all possible input formats, cjxl is not ImageMagick
2021-05-31 05:52:25
The input formats that are there, are there because we needed some kind of input for testing that we couldn't get from other formats
2021-05-31 05:56:17
For basic still images, PNG input is ok. Or JPEG for lossless jpeg recompression. PPM can do non-power-of-two bitdepths. PFM can do floats. EXR can do half-floats. GIF can do animation. APNG can do it with full color and alpha. PSD can do layers, cmyk, and spot colors. Y4M can do yuv444/422/420.
veluca
Lighthouse Hello! Multithreaded optimization for cjxl seems to be... just average I guess. I am currently converting very large files in lossless (modular) mode and I noticed at best one or just two threads are being used. Is there any plan for further optimizations?
2021-05-31 07:35:56
if you're a programmer, and want to speed this up, you could take a shot at parallelizing tree learning πŸ˜„
_wb_
2021-05-31 08:37:14
Not sure if that's the best place to start when you're new to libjxl and want to make a contribution πŸ˜…
veluca
2021-05-31 09:00:41
it should actually be relatively self-contained xD
2021-05-31 09:00:55
but I might have a weird perception here
Lighthouse
veluca if you're a programmer, and want to speed this up, you could take a shot at parallelizing tree learning πŸ˜„
2021-05-31 01:18:47
Well speaking about parallelzing by non-programmer the closest would be setting up multiple docker containers. Though this will require tons of RAM.
raysar
Lighthouse Well speaking about parallelzing by non-programmer the closest would be setting up multiple docker containers. Though this will require tons of RAM.
2021-05-31 01:20:53
Easy way is to encode 2 or more file in the same time (i will create a powershell script for that). Other way, encoding file with DCT -s7 is multithreaded.
Lighthouse
2021-05-31 01:24:10
I see. Thank you for the comments folks.
eddie.zato
2021-05-31 02:06:27
With Powershell 7 ```Powershell ls *.jpg | % -ThrottleLimit 2 -Parallel { cjxl $_ "$($_.Basename).jxl" } ```
BlueSwordM
veluca if you're a programmer, and want to speed this up, you could take a shot at parallelizing tree learning πŸ˜„
2021-05-31 03:13:17
If efficiency wasn't much of an issue, would doing independent tiles on large images with overlap compensation be possible?
veluca
2021-05-31 03:13:43
overlap compensation?
BlueSwordM
veluca overlap compensation?
2021-05-31 03:15:48
I may have worded it poorly based on previous experience, but block overlap compensation essentially means you do some mild blurring and filtering on the edges of a block/tile to make the separation considerably less obvious.
veluca
2021-05-31 03:17:56
ah, we don't need that πŸ˜„ our decoder handles cross-tiles data the proper way
spider-mario
2021-06-30 07:38:49
somehow I hadn’t noticed https://github.com/fish-shell/fish-shell/pull/7673
diskorduser
2021-06-30 08:17:52
Is there something for zsh
Scope
2021-07-08 01:13:29
<https://github.com/tachiyomiorg/tachiyomi> https://github.com/jobobby04/TachiyomiSY/
2021-07-08 01:13:54
<https://github.com/jobobby04/TachiyomiSYPreview/releases>
raysar
Scope <https://github.com/jobobby04/TachiyomiSYPreview/releases>
2021-07-08 01:31:29
Yes ! 😍 you are fast, the commit is here 13 hours ago πŸ˜„ We only need to wait the compilation apk πŸ˜„ First ever jxl viewer on Android!
fab
2021-07-08 01:41:33
for Android 6.0 and above. no galaxy s4 i need to wait another week
2021-07-08 02:15:46
indeed my galaxy s4 refuses this app
2021-07-08 02:27:44
(Android 6 users using v0.10.12 will need to manually download the APK and update due to a bug, sorry!)
2021-07-08 02:29:01
this isn't a jpeg xl viewer
2021-07-08 02:29:04
false claim
2021-07-08 02:29:16
is a manga viewer it doesn't open jxl photos
improver
2021-07-08 02:35:31
this is actually from <https://github.com/tachiyomiorg/image-decoder/pull/1> and <https://github.com/tachiyomiorg/tachiyomi/pull/5512>
2021-07-08 02:35:45
should've probably been posted in adoption
2021-07-08 02:38:55
I'm not interested in proving you anything
fab
2021-07-08 02:39:03
this app doesnt' work
2021-07-08 02:39:14
don't display anything
2021-07-08 02:40:24
nobody haa sent a screenshot of their phone here
improver
2021-07-08 02:43:23
I personally use only tachiyomi, not its forks, so I'll wait for official release with that enabled to start testing
2021-07-08 02:43:35
but additions to the code are exciting nevertheless
Scope
2021-07-08 02:52:12
<https://github.com/tachiyomiorg/tachiyomi-preview/releases>
raysar
improver should've probably been posted in adoption
2021-07-08 03:01:54
Ah ok i don't see it, so it's great there are preview apk I do test now and it works, but there are posterisation :/
2021-07-08 03:02:05
2021-07-08 03:07:35
Ah i find in option an "32 bits" decoding. It's not enabled by default ... So it's not a bug it's a feature ...
2021-07-08 03:11:20
It's a cool software, but it only read files in specific folders with chapters or zip.
improver
Scope <https://github.com/tachiyomiorg/tachiyomi-preview/releases>
2021-07-08 03:20:49
nice. maybe ill try this if i have time.
improver nice. maybe ill try this if i have time.
2021-07-08 03:50:24
2021-07-08 03:50:28
works
fab
2021-07-08 04:58:12
do you have android 6.0 and up
2021-07-08 04:58:35
the screenshot appears to be 18:9
improver
2021-07-08 04:58:53
I have "up"
2021-07-08 04:59:29
also yes that's my phone's aspect ratio
w
2021-07-09 03:04:44
:)
diskorduser
fab the screenshot appears to be 18:9
2021-07-09 03:07:27
It's 21:9. Not 18:9.
Deleted User
2021-07-09 08:11:48
Why not simply say 7:3 and 2:1? 🀨
spider-mario
2021-07-09 08:15:15
because you can compare them without having to bring them back to the same denominator again
2021-07-09 08:15:29
I suppose
improver
diskorduser It's 21:9. Not 18:9.
2021-07-09 08:22:14
yes im bad at remembering numbers it's sony xperia 5 ii
Troc
raysar Yes ! 😍 you are fast, the commit is here 13 hours ago πŸ˜„ We only need to wait the compilation apk πŸ˜„ First ever jxl viewer on Android!
2021-07-10 12:42:21
Finally!
Deleted User
2021-07-10 12:55:57
What about non-anime-oriented Android <:JXL:805850130203934781> viewers?
w
2021-07-10 02:48:31
once I'm done with icc profiles for tachiyomi I might just get it fixed for jxl in firefox
2021-07-10 02:58:48
I've been working on it for all of today (the embedded icc part not the display profile part)
2021-07-10 02:59:04
How did you profile your phone?
2021-07-10 02:59:24
I have a colorimeter aswell but didn't know Android supports profiling, android 11
2021-07-10 03:00:39
or do you just generate an icm independent of the os?
2021-07-10 03:02:56
so you don't install the profile?
2021-07-10 03:04:35
hmm guess I'll spend tomorrow calibrating my phone
2021-07-10 03:05:24
<:KanataOyasumi1:754561613930954764>
Troc
2021-07-12 08:09:23
Yo, how do I change associated editing application of ImageGlass?
frank cilantro
2021-07-24 05:12:48
How can I make those graphics that display the varDCT blocks that were created for an input image?
_wb_
2021-07-24 06:40:38
benchmark_xl has an option to save debug images
2021-07-24 06:40:54
That's one of those
frank cilantro
2021-07-24 08:48:39
thanks πŸ™‚
eclipseo
2021-07-28 07:56:58
For those looking for a Windows build of the latest GIT tip: https://www.dropbox.com/s/bpog8d4ca2j02dk/jxl_20210728.zip?dl=0 <@!416586441058025472>
fab
2021-07-28 08:05:31
amazing
2021-07-28 08:05:37
thanks
Deleted User
2021-07-29 01:13:12
I know, I know, mental shorcut πŸ˜‰ (I've been on a vacation, I'm catching up on the messages)
improver
2021-08-01 07:00:34
https://github.com/SoftCreatR/imei this looks handy
Michael
2021-08-13 07:23:24
Does the current wasm implementation support converting from jpeg/png/gif to jxl? Since the conversion requires libjpeg, libgif etc. <@!439539398657441832>
_wb_
2021-08-13 08:10:51
Libjxl itself only does encoding/decoding from/to pixel buffers (plus optionally encoding jpeg bitstreams exactly and reconstructing them again)
2021-08-13 08:12:54
If you want a wasm build of cjxl/djxl, you'll indeed also need wasm builds of the dependencies (which are all optional iirc)
Michael
_wb_ If you want a wasm build of cjxl/djxl, you'll indeed also need wasm builds of the dependencies (which are all optional iirc)
2021-08-13 08:27:25
Okay, thanks for the answer. But as I understood currently there is now way to set path to library dependencies for wasm build.
_wb_
2021-08-13 08:29:41
I haven't tried wasm builds myself. <@710762823986446367> or <@228116142185512960> likely know more about how to get it done
2021-08-13 08:30:19
Which reminds me: does squoosh already have v0.5?
veluca
_wb_ Which reminds me: does squoosh already have v0.5?
2021-08-13 09:28:40
there: https://github.com/GoogleChromeLabs/squoosh/pull/1120
fab
2021-08-14 05:50:04
link for the jxl decoder february 09th https://mega.nz/file/fA8CnAIT#FZiMDYy1tEqDhDFy6ZL5hixvSug1lxpEEk229L2THu4
diskorduser
2021-08-14 05:59:06
W t needs older binaries
fab
2021-08-14 06:25:57
it has no virus i just installed now from a new formatted computer;windows 7 though is not in good state;the speed is good
2021-08-14 06:26:56
and is from my account; someone uploaded in discord jpeg xl
veluca
2021-08-14 07:28:53
why wouldn't you just use the daily builds at http://artifacts.lucaversari.it/libjxl/libjxl/latest ?
Scope
2021-08-14 07:31:33
Easy ways and simple solutions are not for Fabian
_wb_
2021-08-14 07:42:35
February 9th 2021 was a good vintage for jxl encoders, any jxl sommelier will confirm that.
fab
2021-08-14 08:38:49
decoder wic
2021-08-14 08:38:56
this is the original by mirillis
2021-08-14 08:39:03
but the original is djxl
2021-08-14 08:39:11
i think is a library
2021-08-14 08:39:13
don't know
2021-08-14 08:39:26
a windows thumbnail decoder is described as
2021-08-14 08:39:58
jxl winthumb is newer but throws error 0x80004005 on windows 7
2021-08-14 08:40:05
Questo problema puΓ² verificarsi se un file necessario per l'Attivazione di un prodotto Windows (WPA) risulta danneggiato o mancante. Un'utilitΓ  di backup o un programma antivirus di terze parti interferisce con l'installazione di Windows XP. ...
2021-08-14 08:40:14
basically my windows isn't regularly paid
2021-08-14 08:40:19
that's the issue
w
2021-08-15 12:18:23
things work differently in fabianland
diskorduser
fab Questo problema puΓ² verificarsi se un file necessario per l'Attivazione di un prodotto Windows (WPA) risulta danneggiato o mancante. Un'utilitΓ  di backup o un programma antivirus di terze parti interferisce con l'installazione di Windows XP. ...
2021-08-15 04:24:10
Install windows 10
2021-08-15 04:24:17
Or 11
monad
2021-08-15 05:35:19
I'd guess Win 7 is less annoying and resource hungry than Win 10 on an old machine.
190n
w things work differently in fabianland
2021-08-15 07:50:33
the word is italy
fab
2021-08-15 08:20:57
i don't even know what is genuine windows anyway it's a different discussion than jxl tools
diskorduser
monad I'd guess Win 7 is less annoying and resource hungry than Win 10 on an old machine.
2021-08-15 08:41:34
I believe there are some tools to remove unneeded components and services from official windows iso 10. Those installations are lighter like w7.
fab
2021-08-15 08:47:52
don't know i don't installed myself plus i don't have original cd
2021-08-15 08:47:56
i'm being honest
2021-08-15 08:48:04
don't debate more it should be present
2021-08-15 08:48:24
last time i formatted was may 2018
diskorduser Install windows 10
2021-08-15 08:49:22
windows 10 can't open programs without direct x 11 even the task manager
2021-08-15 08:49:34
i have direct x 7 i tried in 2017 this
2021-08-15 08:49:36
so i know
diskorduser
2021-08-15 08:50:11
It comes directx inbuilt.
fab
2021-08-15 08:50:47
in fact but my driver don't support it
2021-08-15 08:50:55
and my graphic card
diskorduser
2021-08-15 08:51:08
You don't need directx11 graphic card to run programs
fab
2021-08-15 08:51:20
ok
diskorduser
2021-08-15 08:52:18
You need only dx9 for w10
2021-08-15 08:53:20
Even w11 runs fine on dx9 gpu
fab
2021-08-15 09:23:28
probably my driver is ancient
Crixis
190n the word is italy
2021-08-15 10:06:20
No
diskorduser
fab probably my driver is ancient
2021-08-15 10:09:26
I run w11 in 2009 desktop. What are you .....
veluca
2021-08-15 10:40:19
pretty sure "regularly" = "properly" in that sentence πŸ˜› might be an Italian phrasing...
Eugene Vert
2021-08-17 06:28:47
Do the jxl animations work anywhere?
Scope
2021-08-17 06:32:01
At least in Chrome/Chromium
Fraetor
2021-08-17 07:52:46
So cjxl does encode animated gifs then?
_wb_
2021-08-17 08:03:42
It does, but it's a part of the encoder that hasn't gotten much attention yet
2021-08-17 08:04:19
I.e. we can very likely do a lot better than what we have now
2021-08-17 08:04:46
Then again, jxl will never come close to real video codecs like avif
2021-08-17 08:05:47
So imo it's a bit pointless to make a great encoder for animated jxl, it makes more sense to use av1 for animations
Eugene Vert
2021-08-17 08:33:35
And it seems that using lossless webp for pixel art animation would be a better choice?
_wb_
2021-08-17 08:40:05
not sure - for now maybe yes (considering encode speed etc), but I think jxl should generally be able to beat lossless webp, bitstream-wise
Deleted User
2021-08-17 08:45:41
Did browsers and other programs support animated WebP right when they deployed their WebP support?
_wb_
2021-08-17 09:05:52
No
Scope
2021-08-17 09:17:03
There were no animations and lossless when WebP appeared, they were added to the format much later, after more than a year of WebP's existence
Michael
2021-08-22 03:52:46
Hi. What is difference between jxl::ConvertFromExternal and jxl::SetFromBytes which check input data codec ?
spider-mario
2021-08-22 04:36:46
ConvertFromExternal takes raw pixel data
2021-08-22 04:36:57
it doesn’t do any decoding beyond that
2021-08-22 04:37:11
SetFromBytes takes PNGs, JPEGs, that sort of stuff
Michael
spider-mario SetFromBytes takes PNGs, JPEGs, that sort of stuff
2021-08-22 05:58:37
So before using ConvertFromExternal image should be converted to raw pixel data? And does SetFromBytes do it conversion? Thanks for the answer.
spider-mario
2021-08-22 05:59:36
yes, however those are internal APIs
2021-08-22 05:59:40
what are you trying to do?
Michael
spider-mario what are you trying to do?
2021-08-22 06:01:09
Actually just found code of using JXL convetor with ConvertFromExternal. But it does not use OpenEXR, JPEG etc. libs. I wondered how this could be.
2021-08-22 06:01:57
Now I understand that they do format conversions somewhere earlier, before calling jxl. Am I right?
_wb_
2021-08-22 06:10:40
libjxl is only meant to encode/decode jxl from/to uncompressed pixel buffers
2021-08-22 06:11:40
(and maybe between jpeg bitstreams and lossless recompressed jxl)
Michael
_wb_ libjxl is only meant to encode/decode jxl from/to uncompressed pixel buffers
2021-08-22 06:12:32
Okay. Thanks. It make sense for me.
Deleted User
2021-08-27 12:45:08
What do you think about that? https://deploy-preview-1136--squoosh.netlify.app/
2021-08-27 12:45:49
It's made from this PR and it FINALLY WORKS! https://github.com/GoogleChromeLabs/squoosh/pull/1136
Traneptora
2021-09-04 10:53:07
can I make `cjxl` read from stdin and write to stdout?
2021-09-04 10:53:31
`cjpeg` can do it
2021-09-04 11:12:55
doing `cjxl /dev/stdin /dev/stdout <input.png >output.jxl` seems clunky
2021-09-04 11:13:20
(these might not be files on disk at some point)
2021-09-04 11:14:25
ideally it should accept `-` as an alias for stdin/stdout like most tools
2021-09-04 11:14:51
or do stdin-to-stdout if filenames are omitted completeley
2021-09-04 11:14:56
(like cjpeg)
Fraetor
2021-09-04 11:20:10
I think there is an open issue for it.
Traneptora
2021-09-04 11:21:15
while we're talking about cli parsing, is there a `--` to force cjxl to interpret all remaining arguments as filenames?
Fraetor
2021-09-04 11:21:25
Yep
Traneptora
2021-09-04 11:21:29
nice
Fraetor
2021-09-04 11:21:32
Added a few weeks ago
Traneptora
2021-09-04 11:21:33
essential scripting convenience tool
Fraetor
2021-09-04 11:21:45
So I don't know if it is in the release yet
2021-09-04 11:21:49
But it is on main
Traneptora
2021-09-04 11:21:53
good enough for me
2021-09-04 11:21:57
since I can build from master in the shorterm
Fraetor
Fraetor I think there is an open issue for it.
2021-09-04 11:27:22
I can't see and open issue for it on either the Gitlab or GitHub, so I'll open one.
Traneptora
2021-09-05 05:27:59
πŸ‘
diskorduser
2021-09-08 12:40:54
Oh it is me.
Fraetor
2021-09-08 01:39:37
Sorry, I missed that because I was searching for stdin / standers input
spider-mario
2021-09-08 03:50:05
does using `/dev/stdin` / `/dev/stdout` work for this?
2021-09-08 03:50:22
let me try
_wb_
2021-09-08 03:53:51
Probably not because we check if it's a regular file and we want to know its size
2021-09-08 03:54:04
/dev/stdout probably works
spider-mario
2021-09-08 03:54:37
β€œFailed to read image /dev/stdin.”
_wb_
2021-09-08 03:54:49
I made a pull request to make it work for stdin with `-`
2021-09-08 03:55:27
https://github.com/libjxl/libjxl/pull/554
eddie.zato
2021-09-08 03:55:40
Are there any tools to write exif comments to a jxl file? I can read the exif with `exiftool`, but I can't write with it.
_wb_
2021-09-08 03:56:06
We're working on it
2021-09-08 03:56:49
We first have to decide on the api, then we'll likely make a demo tool that uses the api to do container manipulation
2021-09-08 03:57:22
And then it will be up to exiftool, exiv2 etc to implement full support
xiota
2021-09-08 03:57:48
If you create the jxl file with a container (`cjxl --container`) exiftool can write metadata to it. But `djxl` seems to ignore the metadata when decoding. It might also interfere with jpeg reconstruction.
eddie.zato
2021-09-08 04:00:55
For now, I just write a comment to the source file and then `cjxl` transfers it to the resulting jxl. But looking forward to the implementation.
_wb_
2021-09-08 04:02:10
djxl should write exif/xmp to at least png output and reconstructed jpegs
Deleted User
_wb_ https://github.com/libjxl/libjxl/pull/554
2021-09-08 04:02:44
Wow, that was a *fast* merge... ~1.5 hours since its creation!
2021-09-08 04:02:57
Is there any PR that was merged quicker?
eddie.zato
xiota If you create the jxl file with a container (`cjxl --container`) exiftool can write metadata to it. But `djxl` seems to ignore the metadata when decoding. It might also interfere with jpeg reconstruction.
2021-09-08 04:03:10
Hey, it works!
_wb_
2021-09-08 04:03:37
When https://github.com/libjxl/libjxl/pull/544 lands, it will also work with newly encoded jpg output
Is there any PR that was merged quicker?
2021-09-08 04:05:00
Yes, when someone happens to check the code quickly and there are no remarks, things have been merged within minutes
2021-09-08 04:06:17
Dealing better with the container format is something we need to get done, there's stuff in the file format spec we're not yet properly implementing
2021-09-08 04:06:33
In particular compressed exif/xmp
2021-09-08 04:08:11
It should help quite a bit to get better recompression of jpegs that contain big exif/xmp, like produced by some cameras that have lots of makernotes or Adobe products that put lots of stuff there
2021-09-08 04:08:55
But we need to get our implementation in shape to properly decompress metadata when needed, and then we need to get it in exiftool/exiv2 too
2021-09-08 04:09:29
Because currently no tools know what to do with compressed metadata
veluca
Is there any PR that was merged quicker?
2021-09-08 04:11:05
there's quite a few with <10m merge time I think πŸ˜› but most of those are tiny
xiota
eddie.zato Hey, it works!
2021-09-08 04:14:27
If you have problems, try using `exiftool -wm w` to make exiftool only modify existing tags, without creating any new ones.
eddie.zato
2021-09-08 04:16:31
But by adding an `EXIF:XPComment`, I'm literally creating a new one, right? πŸ˜„
xiota
2021-09-08 04:18:45
If the original didn't already have a comment tag. The problem with creating new tags is djxl and other tools might not be able to read the exif anymore. Until everyone is on the same page, it's probably better to do what you've been doing... write the tag to the original file before encoding to jxl.
eddie.zato
2021-09-08 04:22:51
Yeah, it's safer for now.
xiota
eddie.zato Yeah, it's safer for now.
2021-09-08 04:23:29
You can backup tags to a sidecar too: `exiftool -tagsfromfile image.ext image.ext.xmp`
Deleted User
2021-09-08 04:37:11
By the way: what do you think about my PR #1136 for Squoosh? I changed it a bit since the last time. See what happens if you turn the quality slider between >=7 and <7. Do you think it's user friendly? https://deploy-preview-1136--squoosh.netlify.app/
July
_wb_ https://github.com/libjxl/libjxl/pull/554
2021-09-08 05:59:39
Is specifying output format so djxl can go to stdout being considered?
_wb_
2021-09-08 06:00:15
Not sure what to do with animation frames
July
2021-09-08 06:04:27
Allow specifying the frame maybe? Seems like too useful a feature to not have
Romao
2021-09-08 06:07:31
I agree, my whole system already supports jxl but some things rely on temporary files to read this format. Being able to use stdout would be quite useful.
xiota
Romao I agree, my whole system already supports jxl but some things rely on temporary files to read this format. Being able to use stdout would be quite useful.
2021-09-08 06:09:14
JPG is a temporary file to go from digital camera to JXL πŸ˜†
Eugene Vert
2021-09-08 06:09:30
imagemagick have something like `convert '{}' png:-` / `convert '{}' ppm:-` for stdout output
Romao
Eugene Vert imagemagick have something like `convert '{}' png:-` / `convert '{}' ppm:-` for stdout output
2021-09-08 06:11:22
I don't know why but my imagemagick is not recognizing jxl files, even though it's updated 😩
spider-mario
Eugene Vert imagemagick have something like `convert '{}' png:-` / `convert '{}' ppm:-` for stdout output
2021-09-08 06:12:20
also for non-stdout output, in case you specifically want an 8-bit RGB PNG and not a grayscale one for example: `convert input.ppm PNG24:output.png`
Romao
2021-09-08 06:12:30
btw, would it be too hard to implement stdout to APNGs if it's an animation?
Traneptora
2021-09-10 10:53:39
instead of prefixing it you could just add `--output-format` or something
2021-09-10 10:53:53
"force output format instead of choosing by filename"
2021-09-10 10:53:57
it's a fairly common way to do it
Deleted User
2021-09-10 04:03:32
Just like `-f` output option in FFmpeg
Romao
2021-09-10 04:43:57
would nice to also have standard formats defined for the output in case `-f` is omitted, like - jpeg if it was first encoded from jpeg without `--strip` - apng for animated pictures - png for everything else
_wb_
2021-09-10 04:52:12
when piping stuff, I would assume that for the same reason you want to avoid intermediate files, you also want to avoid intermediate encoding effort
2021-09-10 04:52:26
i.e. uncompressed output likely makes most sense in most cases
2021-09-10 04:53:03
reconstructing a jpeg is not really encode effort (it's probably less effort than decoding it to pixels, or about the same)
2021-09-10 04:53:17
but producing apng/png is often taking more time than the decode itself
2021-09-10 04:53:45
(well we don't produce apng atm but it will be the same as png)
Traneptora
2021-09-10 08:03:23
my personal take is that the user must request the output file format
2021-09-10 08:03:38
if explicitly, then use that one
2021-09-10 08:03:49
if not requested explicitly via an option, then implied by filename
2021-09-10 08:04:07
if the output format was not requested and not implied then the CLI should just refuse to do anything IMO
2021-09-10 08:04:09
rather than guess
2021-09-10 08:04:39
I like this since script writers tend to force formats and end users tend to give things filenames that mean things
_wb_ but producing apng/png is often taking more time than the decode itself
2021-09-10 08:06:16
you can produce a PNG extremely quickly by setting the filter to the identity filter and zlib's settings to be uncompressed
2021-09-10 08:06:18
which apparently is legal zlib
2021-09-10 08:06:57
```c #define ZLIB_NO_COMPRESSION 0 ```
2021-09-10 08:07:24
but I still hold the above stance
2021-09-10 08:07:36
where if the output format cannot be determined one way or another, cjxl should refuse rather than guess
_wb_
Traneptora you can produce a PNG extremely quickly by setting the filter to the identity filter and zlib's settings to be uncompressed
2021-09-10 08:12:43
Yeah I know but then it's basically a PPM with checksums and an icc profile
2021-09-10 08:13:03
Which is cool
Traneptora
2021-09-10 08:13:15
png doesn't even need iCC does it?
_wb_
2021-09-10 08:13:17
But people might get upset if we produce decoded pngs that large
2021-09-10 08:13:30
Yeah it's optional in png
2021-09-10 08:13:48
We always produce a png that is well-defined in terms of colorspace though
Traneptora
2021-09-10 08:14:03
yea, just pointing it out I think it still makes more sense to me to just refuse to produce a file if the format cannot be determined
2021-09-10 08:14:05
rather than guessing
veluca
_wb_ We always produce a png that is well-defined in terms of colorspace though
2021-09-10 08:14:29
the question is what other applications will think its colorspace is... πŸ˜›
_wb_
2021-09-10 08:15:21
Yeah, I think we should stop producing technically-correct-but-firefox-and-many-viewers-get-it-wrong-anyway pngs
Traneptora
2021-09-10 08:15:48
ah, you mean, you produce files with the right colorspace
2021-09-10 08:15:55
but since that colorspace is not sRGB
2021-09-10 08:16:00
and that field is ignored by many renderers
_wb_
2021-09-10 08:16:28
The thing with png is: you can do three things to define a colorspace
2021-09-10 08:17:05
ICC profile is one of them, and that now works in most self-respecting viewers and in all browsers
2021-09-10 08:17:15
sRGB chunk is another thing
2021-09-10 08:17:23
gAMA is another thing
veluca
2021-09-10 08:17:35
many programs disagree on what happens if you have both gAMA and sRGB IIRC
Traneptora
2021-09-10 08:18:46
spec is very clear
2021-09-10 08:18:49
> An sRGB chunk or iCCP chunk, when present and recognized, overrides the gAMA chunk.
2021-09-10 08:18:56
but that doesn't mean implementations adhere
_wb_
2021-09-10 08:19:09
The confusing thing is that sRGB is not a gamma curve, but you are still recommended to use both the sRGB chunk and the gAMA chunk, and the sRGB chunk takes precedence but viewers that understand gAMA but not sRGB (viewers from the 90s I guess) still do something reasonable
2021-09-10 08:19:29
So that is mostly fine
Traneptora
2021-09-10 08:20:02
as far as I'm aware that's in the name of compatibility PNG spec requires decoders to ignore chunks they do not recognize to preserve forwards compatibility of the format
_wb_
2021-09-10 08:20:11
But now if you have gAMA but no sRGB, with the gAMA value set to 2.2
2021-09-10 08:20:32
Then many viewers will assume you actually meant sRGB
2021-09-10 08:20:43
While that's not what it is
Traneptora
2021-09-10 08:20:48
Ah, the correct thing to do be to do gamma=2.2 by spec