JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

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

General chat

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

Voice Channels

General 2147

Archived

bot-spam 4380

jxl

Anything JPEG XL related

OkyDooky
2023-07-23 04:21:37
I disagree that gecko's existence is not beneficial, sepecially compared to the hegemony of blink
Quackdoc
2023-07-23 04:31:26
firefox's entire benefit comes from not being chrome and preventing the chrome monopoly, which they have shown again and again to fail at doing. in fact, I would go so far as to say I think it would be beneficial for firefox to diem that way peoples funding and developmental resources can go to projects that are actually largely useful like webkit and servo
OkyDooky
2023-07-23 05:05:16
I don't see how Webkit, which Blink was forked from and therefore has so much homogenity, is more useful than Firefox.
Quackdoc
2023-07-23 05:29:27
because I dont see how firefox is useful at all, at least withh webkit you can use it as a base to develop a browser around, vs firefox which simply exists on the merit of it being "not chrome"
190n
2023-07-23 07:18:22
yes
2023-07-23 07:18:50
all ios browsers have to use the os-provided webview
2023-07-23 07:19:05
so they all get jxl support once the os gets it
username
2023-07-23 07:20:37
I think recently that restriction was lifted or is going to be lifted however no browser engines have had a iOS port as of yet
Oleksii Matiash
Quackdoc because I dont see how firefox is useful at all, at least withh webkit you can use it as a base to develop a browser around, vs firefox which simply exists on the merit of it being "not chrome"
2023-07-23 08:55:47
I'm using ff, and can not really switch to any sort of chrome because of two reasons: I can't live without hundreds of tabs (and do not want to see how chrome eats all memory), and the stupidiest impossibility to make chrome to switch tabs in recent order. While my knowledge about chrome, tabs and memory relationships can be outdated (I know about edge's sleeping tabs, etc), it's tab switching is just a stopper for me
w
2023-07-23 09:16:14
chrome and ff use a similar amount of memory
2023-07-23 09:17:24
aka any memory available
lonjil
2023-07-23 09:45:45
I have over 8000 tabs open and Firefox is apparently using 8 GiB of RAM ||and 14 GiB of swap but let's ignroe that||
w
2023-07-23 10:05:19
2 tabs 900mb
lonjil
2023-07-23 10:30:00
If you type % at the start in the URL box, everything after is used to search your open tabs. Also the tabs are organized into like 50 windows.
Quackdoc
Oleksii Matiash I'm using ff, and can not really switch to any sort of chrome because of two reasons: I can't live without hundreds of tabs (and do not want to see how chrome eats all memory), and the stupidiest impossibility to make chrome to switch tabs in recent order. While my knowledge about chrome, tabs and memory relationships can be outdated (I know about edge's sleeping tabs, etc), it's tab switching is just a stopper for me
2023-07-23 02:59:47
chrome doesn't do any worse then Firefox for memory usage, in fact it handles low ram situations better then Firefox, and had for a very long time. while it's true Chrome can use more memory than Firefox. It has always been more efficient with how the memory is used cant say I share the same with tabs since I use an external tab manager anyways, but in the end that's a small feature, that's not really a big deal like gecko versus blink. and just something that could be implemented in another browser with not a large amount of difficulty.
2023-07-23 03:00:46
but chrome handles hundreds of tabs just fine, and has for a long time.
elfeïn
lonjil I have over 8000 tabs open and Firefox is apparently using 8 GiB of RAM ||and 14 GiB of swap but let's ignroe that||
2023-07-23 04:27:40
mfw this mf has a cache of the entire internet in RAM
OkyDooky
2023-07-23 05:54:46
I run Firefox with on-disk cache disabled (only RAM), and have thousands of tabs... but they are split across tab groups with https://addons.mozilla.org/en-US/firefox/addon/simple-tab-groups/ , and I configured it to only keep the shown group's tabs loaded in RAM, and even you can suspend unused tabs automatically with another extension on top
2023-07-23 06:00:54
that's how Firefox is pretty consistently using under 2 GB of RAM for me at all times
2023-07-23 06:09:26
Chrome is barely starting to try to play catch up in that efficiency game
Oleksii Matiash
2023-07-23 06:35:19
> but in the end that's a small feature, that's not really a big deal like gecko versus blink. and just something that could be implemented in another browser with not a large amount of difficulty. It is a big deal for me, and if you know how to overcome it (tab manager, or whatever) - please share
Quackdoc
Chrome is barely starting to try to play catch up in that efficiency game
2023-07-23 06:42:51
the goal is not to use less ram, it's to use as much ram as efficiently possible, if you run 300tabs with chrome and check ram usage, you will find you have little `free` ram, but you should still have plenty `available` ram even if you have a lot of heave duty websites, chrome will still unload them when needed.
Oleksii Matiash > but in the end that's a small feature, that's not really a big deal like gecko versus blink. and just something that could be implemented in another browser with not a large amount of difficulty. It is a big deal for me, and if you know how to overcome it (tab manager, or whatever) - please share
2023-07-23 06:43:27
it's not something I myself have bothered to look into so I can't say for certain but ill keep an eye out
2023-07-23 06:45:05
ofc if you do need more aggressive page sleeping, or even unloading, you can tweak that with an extension too, but chrome's default behavior for this is a lot better when under memory pressure
Oleksii Matiash
Quackdoc ofc if you do need more aggressive page sleeping, or even unloading, you can tweak that with an extension too, but chrome's default behavior for this is a lot better when under memory pressure
2023-07-23 06:59:45
The main show stopper for me is tab switching, really, if it could be solved - I'd be happy to give chrome second chance
prick
2023-07-23 07:06:00
Trying to integrate jpegli with my image viewer (over libjpeg-turbo) has been a pretty painful experience
2023-07-23 07:06:23
Now it's a crash during startup and I can't figure out why
2023-07-23 07:15:59
Oh it created a dependency on a dll for no reason, amazing
2023-07-23 07:17:12
actually not sure if jpegli did that
2023-07-23 07:17:16
this cmakelists is all over the place
2023-07-23 07:17:50
back to this issue
OkyDooky
2023-07-23 07:54:38
I raise you https://idlewords.com/talks/website_obesity.htm (<@184373105588699137>)
2023-07-23 08:01:08
good luck getting any website to fit in a megabyte of RAM or something, most eat 40-50 MB at the very least it seems (and this Matrix Element tab is using something like 300-500 MB if I'm not mistaken)... also given that my eyeballs can't look at more than a few dozen websites concurrently, it makes total sense in my view to auto-suspend idle ones that don't have an interactive (forms/video/sound/unsaved changes) aspect to them
Quackdoc
2023-07-23 08:06:25
yes, both chrome and firefox suspend idle tabs, chrome is a bit more conservative in doing so when you have lots of ram free (also uses some available ram for it), but is a lot more agressive when you don't have a lot of ram
2023-07-23 08:07:37
if you enable memory saver in chrome settings, it does it a lot more aggressively, this can pose a problem when working with a lot of tabs at the same time period
2023-07-23 08:08:37
but again, I dont see the point in not using ram that is free and available,
OkyDooky
2023-07-23 08:16:26
not getting the stupid kernel OoM killer to randomly kill your other apps like the file manager, email client, or graphics editor when trying to do work
2023-07-23 08:16:57
also those tabs sitting around active tend to wake up the CPU constantly -\> more heat, less battery life (if on battery), etc.
elfeïn
2023-07-23 08:19:52
see, i don't get why the oom killer doesn't just halt programs until there's more memory or smth
Quackdoc
not getting the stupid kernel OoM killer to randomly kill your other apps like the file manager, email client, or graphics editor when trying to do work
2023-07-23 08:21:50
firefox will typically cause an OOM situation before chrome will, this is something I have tested extensively across distros and operating systems (including android). as I have said, chrome is typically a good chunk better then firefox when under memory pressure situations
2023-07-23 08:23:14
I will re-iterate what I did before, chrome is more efficient on average with how it uses ram, chrome has a higher ram usage ceiling but it also has a lower floor
2023-07-23 08:25:24
a lot of my testing was preformed on a 2 and 4gb i3 2100 system and a 2gb asus t100ta, I had tested windows, various linux distros, as well as blissOS
2023-07-23 08:25:42
granted I didnt test any BSDs so it could be different there
elfeïn see, i don't get why the oom killer doesn't just halt programs until there's more memory or smth
2023-07-23 08:31:24
you have to kill them to actually free the memory, that being said, oomkiller is kinda really stupid, and sometimes instead of killing the head process, it will just go all the way up the tree and kill the compositor
elfeïn
Quackdoc you have to kill them to actually free the memory, that being said, oomkiller is kinda really stupid, and sometimes instead of killing the head process, it will just go all the way up the tree and kill the compositor
2023-07-23 08:31:48
Why?
Quackdoc
elfeïn Why?
2023-07-23 08:32:26
because simply stopping a program, all the memory will remain, if you forcibly take the memory it's using, it will segfault anyways
2023-07-23 08:33:24
keep in mind an OOM should only happen when you have no availible ram, though OOM can also be triggered when swap is getting hammered really hard, this is mainly a relic from when swap was stored on HDDs can thrashing could occur
elfeïn
Quackdoc because simply stopping a program, all the memory will remain, if you forcibly take the memory it's using, it will segfault anyways
2023-07-23 08:34:36
sure sure but technically speaking stopping the program means it won't allocate additional memory
Quackdoc
2023-07-23 08:35:07
well not allocating more memory helps sure, but it doesn't make the situation actively better, it only prevents it from getting worse
elfeïn
Quackdoc well not allocating more memory helps sure, but it doesn't make the situation actively better, it only prevents it from getting worse
2023-07-23 08:37:13
right, so use an emergency swap to ask the user what to do :p
Quackdoc
2023-07-23 08:37:55
I suppose that could be possible
2023-07-23 08:41:09
in the end, oom handling on linux is particularly stupid for some reason
Traneptora
2023-07-24 04:56:01
why are you guys running out of ram
2023-07-24 04:56:38
don't open 500 tabs that you will never look at again
lonjil
2023-07-24 05:03:35
Just buy more RAM
CrushedAsian255
2023-07-24 08:06:44
is JPEG XL an audio compression algorithm?
w
2023-07-24 08:10:03
yes
CrushedAsian255
2023-07-24 08:11:22
derberg🛘
Traneptora don't open 500 tabs that you will never look at again
2023-07-24 08:12:39
Rather remove JS from the web. Thousand tabs worked well on lower end devices ten years ago.
Quackdoc
CrushedAsian255
2023-07-24 08:16:18
very crunchy
CrushedAsian255
Quackdoc very crunchy
2023-07-24 08:17:09
reconstructed audio:
Quackdoc
2023-07-24 08:17:47
sounds way better then what I was doing xD
2023-07-24 08:18:48
`>ffmpeg -i https://cdn.discordapp.com/attachments/794206170445119489/1132948126282547200/image_d01.jxl -f rawvideo - | ffmpeg -y -f u8 -ac 1 -r 48000 -i - -f wav - | mpv -`
CrushedAsian255
2023-07-24 08:23:12
i converted from JXL to PNG before rendering because my FFmpeg's JXL support is broken ``` djxl image_d01.jxl image_d01.png ffmpeg -i image_d01.png -f rawvideo -pix_fmt gray - | ffmpeg -f u8 -ac 1 -ar 48000 -i - image_d01.flac ```
2023-07-24 08:23:27
probably colour space shenanigans
Traneptora
CrushedAsian255 i converted from JXL to PNG before rendering because my FFmpeg's JXL support is broken ``` djxl image_d01.jxl image_d01.png ffmpeg -i image_d01.png -f rawvideo -pix_fmt gray - | ffmpeg -f u8 -ac 1 -ar 48000 -i - image_d01.flac ```
2023-07-24 09:43:53
how is it "broken"
2023-07-24 09:44:11
what happens when you try it
CrushedAsian255
2023-07-24 10:23:35
Unknown decoder or something can’t remember
Traneptora
CrushedAsian255 Unknown decoder or something can’t remember
2023-07-24 11:28:03
sounds like it's not broken, but just not compiled in
2023-07-24 11:28:21
ffmpeg needs to be compiled with `--enable-libjxl`
CrushedAsian255
2023-07-24 11:33:21
I installed using homebrew I can’t change the install parameters
Traneptora
2023-07-24 11:36:04
homebrew doesn't let you do that, even though it builds stuff itself?
2023-07-24 11:36:17
interesting
CrushedAsian255
2023-07-24 11:38:14
I’ll check tomorrow it’s 9pm my time
jonnyawsom3
CrushedAsian255
2023-07-24 12:13:17
What was the input command from flac to jxl (Or PNG)? Trying to do a test myself but it's either just noise or floods with errors
yoochan
2023-07-24 02:06:07
flac ? the audio format ?
jonnyawsom3
2023-07-24 02:57:45
Yeah, if you read the messages above
OkyDooky
2023-07-24 06:15:30
How much does Pale Moon have? 🤔
2023-07-24 06:56:16
Palemoon itself is about 85+ thousand lines of code AFAICT (from some old data), like Epiphany, which does not count the engine itself which is... I don't know how many lines of code
2023-07-24 07:01:12
It's not even clear which part between https://repo.palemoon.org/MoonchildProductions/GRE and https://repo.palemoon.org/MoonchildProductions/UXP is the Goanna engine for Palemoon, OkyDooky
2023-07-24 07:01:44
like is it both combined? does one include the other? I have no idea
2023-07-24 07:10:53
ah OK seems like GRE is abandoned, and UXP is the thing
2023-07-24 07:18:23
OkyDooky\: in the UXP codebase, `sloccount` sees 8.7 million lines of code, 60% of which C++ and 32% C. I wouldn't be surprised if at 8.7 million it was missing a good chunk still
2023-07-24 08:07:10
So, it's likely noticeably smaller than current FF, but not *that* much smaller. Amazed they get so much done with the team they have.
2023-07-24 08:36:45
I find it very difficult to believe such a web engine can be sustainably and securely maintained by a handful of people in their spare time
2023-07-24 08:43:41
I also suspect it must be unbearably slow compared to modern Electrolysis+Servo+Stylo gecko with parts written in Rust
CrushedAsian255
2023-07-25 12:56:31
can `cjxl` not read JPEG XL files as input?
What was the input command from flac to jxl (Or PNG)? Trying to do a test myself but it's either just noise or floods with errors
2023-07-25 12:57:20
what command are you using? there are multiple ways to
jonnyawsom3
2023-07-25 12:59:45
I don't really remember but I think I was just trying to rewrite your JXL to FLAC command backwards, naturally it wasn't as simple as that so thought I'd jsut wait for a real answer
CrushedAsian255
I don't really remember but I think I was just trying to rewrite your JXL to FLAC command backwards, naturally it wasn't as simple as that so thought I'd jsut wait for a real answer
2023-07-25 01:02:09
`ffmpeg -i [input] -f u8 -ac 1 -ar 48000 - | ffmpeg -f rawvideo -pix_fmt gray -s:v "[lengh of file in seconds]x48000" -i - [output].png`
2023-07-25 01:02:16
try this ^
jonnyawsom3
2023-07-25 01:26:54
`ffmpeg -hide_banner -i input.flac -f u8 -ac 1 -ar (Sample Rate) - | ffmpeg -f rawvideo -pix_fmt gray -s:v (Seconds x 10)x(Sample Rate / 10) -i - -distance 0.3 -effort 8 -y output.jxl` I tweaked it slightly for direct JXL and more managable image resolution, but seems to work great, thanks
CrushedAsian255
`ffmpeg -hide_banner -i input.flac -f u8 -ac 1 -ar (Sample Rate) - | ffmpeg -f rawvideo -pix_fmt gray -s:v (Seconds x 10)x(Sample Rate / 10) -i - -distance 0.3 -effort 8 -y output.jxl` I tweaked it slightly for direct JXL and more managable image resolution, but seems to work great, thanks
2023-07-25 01:27:56
i also did the x10 /10 thing on mine it was just harder to type
jonnyawsom3
2023-07-25 01:28:49
Yeah, I used the JXL you uploaded to figure that out
Traneptora
CrushedAsian255 can `cjxl` not read JPEG XL files as input?
2023-07-25 02:51:15
It can, if you use a recent enough version
CrushedAsian255
Traneptora It can, if you use a recent enough version
2023-07-25 11:01:50
```% cjxl image1.jxl image2.jxl -d 1 JPEG XL encoder v0.8.2 0.8.2 [AVX2,SSE4,SSSE3] Getting pixel data failed.```
2023-07-25 11:02:15
2023-07-25 11:02:28
im trying to compress it
2023-07-25 11:02:34
it is currently modular lossless
sklwmp
2023-07-25 11:20:42
hm, weird, seems like the latest release only includes code until ~jan, with some feb commits backported
2023-07-25 11:21:02
the commit adding jxl support is in main, but it's from may
CrushedAsian255
2023-07-25 11:38:44
should i try compiling from source?
2023-07-25 11:52:38
also for my weird audio to JXL project would modular lossy work better than VarDCT lossy?
jonnyawsom3
2023-07-26 01:59:48
You can compile from source or use the Github Actions builds, here's the most recent one https://github.com/libjxl/libjxl/actions/runs/5654098785#artifacts
Traneptora
CrushedAsian255 also for my weird audio to JXL project would modular lossy work better than VarDCT lossy?
2023-07-26 04:18:15
it's not really advisable to try to lossily encode non-perceptual data, you'll get the wrong data discarded
w
2023-07-26 04:19:24
audio is perceptual
_wb_
sklwmp hm, weird, seems like the latest release only includes code until ~jan, with some feb commits backported
2023-07-26 05:59:07
That's intentional, after a `_._` release the `_._._` versions only get security updates
CrushedAsian255
2023-07-26 10:31:10
When’s the next single dot release
Traneptora
w audio is perceptual
2023-07-26 10:49:51
it's not perceptual in the same way tho, just casting 16-bit PCM samples to 16-bit Grayscale image samples and then encoding is not a good idea
w
2023-07-26 10:50:46
bro's just trying to have fun
Traneptora
2023-07-26 11:29:55
what happened to `cjxl --strip`? it appears not to work anymore
jonnyawsom3
2023-07-27 01:57:47
``` --container=0|1 0 = Do not encode using container format (strip Exif/XMP/JPEG bitstream reconstruction data). 1 = Force using container format. Default: use only if needed.``` Does that sound like it? Because currently it doesn't actually remove original metadata, only reconstruction or forcing a container if I recall
MSLP
Traneptora what happened to `cjxl --strip`? it appears not to work anymore
2023-07-27 03:30:22
tnere's a this bug in effect <https://github.com/libjxl/libjxl/issues/2645> exif and friends are always force-copied <https://github.com/libjxl/libjxl/blob/59d8f61cd7fc101c79148825c5d6dd14e73b9cd1/tools/cjxl_main.cc#L989> <https://github.com/libjxl/libjxl/blob/59d8f61cd7fc101c79148825c5d6dd14e73b9cd1/lib/extras/enc/jxl.cc#L73>
CrushedAsian255
``` --container=0|1 0 = Do not encode using container format (strip Exif/XMP/JPEG bitstream reconstruction data). 1 = Force using container format. Default: use only if needed.``` Does that sound like it? Because currently it doesn't actually remove original metadata, only reconstruction or forcing a container if I recall
2023-07-27 08:43:08
Is the container recommended or is it fine to leave out
2023-07-27 08:43:27
I looked through my images and some are in the container and others aren’t
monad
2023-07-27 09:55:51
In the case you may want to recover an exact copy of an original JPEG file, keep it. Otherwise, if you know you'll never care about metadata, strip it. If you're sharing images, strip for better privacy or transfer efficiency.
jonnyawsom3
2023-07-27 01:49:40
Right now you can't disable the container, cjxl will simply never add one if there's no data to put inside it
_wb_
2023-07-27 03:02:34
working on improving things a bit in this regard
2023-07-27 03:34:40
https://github.com/libjxl/libjxl/pull/2686
Traneptora
2023-07-27 04:40:12
Can I use --container=0 to effectively cjxl --strip?
2023-07-27 04:40:28
or does that strip the jbrd and prevent reconstruction?
_wb_
2023-07-27 04:48:25
I think it will currently only do that if you explicitly add --jpeg_store_metadata 0 too
Traneptora
2023-07-27 05:00:20
if you strip JBRD is it possible to reconstruct the original jpeg, just non-bit-exactly?
2023-07-27 05:00:30
since the quant weights and coeffs are in the codestream
_wb_
2023-07-27 05:29:52
Yes, in principle
2023-07-27 05:30:51
All the actual image data is in the codestream, jbrd is only "the remaining stuff"
2023-07-27 05:31:40
We haven't implemented a "default reconstruction" though, that would work without jbrd
jonnyawsom3
_wb_ https://github.com/libjxl/libjxl/pull/2686
2023-07-27 05:34:03
I was tempted to mention PNG `iTXt`, `zTXt` and `tEXt` chunks. Currently cjxl will read XMP metadata from them, but they're also used to store raw text with a tag at the start such as `Description` or `Parameters`. If those could be turned into XMP or EXIF entries then at least the data is retained, even if not readable in the same way
2023-07-27 05:41:06
I know at least one example of worldwide use, Stable Diffusion embeds the prompt and settings into every image like that And a more niche example is VRChat screenshots with a popular 'addon' called VRCX, where it embeds session data into the file so you know who was in the image
2023-07-27 05:42:17
Thinking about it I should just make an issue
_wb_
2023-07-27 06:05:06
Jxl spec defines exif, xmp and jumbf. But we could also add other boxes, they are not described in the spec except that they are to be ignored. I am half-tempted to add a `text` box that just corresponds to unrecognized png text chunks
jonnyawsom3
2023-07-27 06:28:40
https://github.com/libjxl/libjxl/issues/2687
2023-07-27 06:29:58
Two old issues were related, but one seemed to be assumed as XMP support and the other had a title that wasn't clear
CrushedAsian255
2023-07-28 12:10:55
just clarifying, if I convert a .jpg to a .jxl with JPEG bitstream reconstruction, then convert the .jxl back to .jpg, will the original and reconstructed be byte-for-byte identical?
2023-07-28 12:13:50
as long as i don't strip metadata right
2023-07-28 12:13:55
like i need to use the container
2023-07-28 12:14:24
is the jpeg reconstruction in a metadata atom?
2023-07-28 01:04:09
what other metadata is supported? is IPTC and TIFF metadata supported?
_wb_
2023-07-28 01:23:08
ICC goes in the jxl codestream, Exif and XMP go in the jxl file, everything else in terms of metadata goes in the `jbrd` box
CrushedAsian255
2023-07-28 01:34:50
What about converting from a PNG to a JXL?
2023-07-28 01:35:05
Does the metadata just get voided?
_wb_
2023-07-28 01:39:42
cjxl tries to keep what it recognizes (exif and xmp)
jonnyawsom3
2023-07-28 02:07:04
The issue I linked above is about preserving all/most of PNG metadata regardless of type
2023-07-28 05:43:15
Thought I'd get some input from others here on the formatting and verbosity of cjxl. Wb already worked on it and I had made suggestions that got implemented, but tailoring it to just what I think obviously isn't ideal Current default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.449 MP/s [1.45, 1.45], 1 reps, 16 threads.``` Proposed default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding 3840 x 2160 [Lossless, effort: 5 | Exif] 2311.8 KB compressed to 3552.2 KB (3.508 bpp) 1.449 MP/s``` Removes more detailed info for verbose output, changes kB to KB to keep in line with OS displayed size (Could adjust to MB too), shows original size for easy comparison, moves resolution to the encoding line and encode speed to the compressed line Current Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840x2160 image, 2367327 bytes, 475.8 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Proposed Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840 x 2160 image, 2367327 bytes, 475.843 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637451 bytes including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Changes sizes back to bytes for accurate results, makes formatting of resolution and MP/s between read and compressed identical, shows the info removed by default
Traneptora
Thought I'd get some input from others here on the formatting and verbosity of cjxl. Wb already worked on it and I had made suggestions that got implemented, but tailoring it to just what I think obviously isn't ideal Current default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.449 MP/s [1.45, 1.45], 1 reps, 16 threads.``` Proposed default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding 3840 x 2160 [Lossless, effort: 5 | Exif] 2311.8 KB compressed to 3552.2 KB (3.508 bpp) 1.449 MP/s``` Removes more detailed info for verbose output, changes kB to KB to keep in line with OS displayed size (Could adjust to MB too), shows original size for easy comparison, moves resolution to the encoding line and encode speed to the compressed line Current Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840x2160 image, 2367327 bytes, 475.8 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Proposed Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840 x 2160 image, 2367327 bytes, 475.843 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637451 bytes including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Changes sizes back to bytes for accurate results, makes formatting of resolution and MP/s between read and compressed identical, shows the info removed by default
2023-07-28 09:06:39
strictly speaking kB is more correct, and I don't believe cjxl should mimic whatever some specific file browser uses
jonnyawsom3
2023-07-28 09:20:21
Oh, I thought KB was most common for filesystems, but this is why I posted here instead of straight to Github
spider-mario
2023-07-28 09:52:47
KB is how Windows displays it but it matches no standard
2023-07-28 09:53:36
SI: powers of 1000, kB, MB, GB, TB IEC: powers of 1024, KiB, MiB, GiB, TiB Windows: powers of 1024, KB, MB, GB, TB (confusable with SI except for the first one)
2023-07-28 09:54:59
I would personally oppose using the Windows way
2023-07-28 09:57:38
it seems macOS uses SI
2023-07-28 09:57:53
(well, the GUI apps do)
gb82
2023-07-28 10:00:58
GNOME uses SI as well I believe
spider-mario
2023-07-28 10:01:26
I vaguely remember KDE (Dolphin) using IEC but it’s been a while so I’m not sure
jonnyawsom3
2023-07-28 10:04:21
From what I could find everything was IEC (1024) until IOS 10 where apple changed for SI
spider-mario
2023-07-28 10:05:18
maybe they were getting tired of people complaining that their 500GB drives didn’t actually contain 500GB
jonnyawsom3
2023-07-28 10:07:05
God this is confusing, now it's saying everything is SI apart from Windows
gb82
God this is confusing, now it's saying everything is SI apart from Windows
2023-07-28 10:08:46
I'm sure there are linux distros/DEs using IEC
jonnyawsom3
2023-07-28 10:10:26
I guess stick with SI since with the original size listed too people can see the difference whatever their OS reads
Traneptora
2023-07-28 11:03:58
Caja uses 1024
OkyDooky
2023-07-29 12:00:28
GNOME switched to SI units circa 2010, and Apple since 2009 with Mac OS Snow Leopard (and later iOS 10 in 2016)
2023-07-29 12:00:46
if you find remaining inconsistencies in GNOME apps, I'd be interested to know
Traneptora
2023-07-29 07:58:12
apparently it's configurable in caja, I discovered
monad
if you find remaining inconsistencies in GNOME apps, I'd be interested to know
2023-07-29 08:27:30
surely System Monitor is inconsistent with reason
2023-07-29 08:30:27
also, how does GNOME UI keep getting worse with time
Thought I'd get some input from others here on the formatting and verbosity of cjxl. Wb already worked on it and I had made suggestions that got implemented, but tailoring it to just what I think obviously isn't ideal Current default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.449 MP/s [1.45, 1.45], 1 reps, 16 threads.``` Proposed default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding 3840 x 2160 [Lossless, effort: 5 | Exif] 2311.8 KB compressed to 3552.2 KB (3.508 bpp) 1.449 MP/s``` Removes more detailed info for verbose output, changes kB to KB to keep in line with OS displayed size (Could adjust to MB too), shows original size for easy comparison, moves resolution to the encoding line and encode speed to the compressed line Current Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840x2160 image, 2367327 bytes, 475.8 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Proposed Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840 x 2160 image, 2367327 bytes, 475.843 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637451 bytes including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Changes sizes back to bytes for accurate results, makes formatting of resolution and MP/s between read and compressed identical, shows the info removed by default
2023-07-29 08:39:05
```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Would you like to encode an image?```
lonjil
2023-07-29 08:46:05
I prefer 1000 but don't mind 1024 as long as you actually use the IEC prefixes.
OkyDooky
2023-07-29 12:37:08
I'm not going to bother answering a biased vague subjective statement like that other than by "Works great for me." (<@263300458888691714>)
VcSaJen
spider-mario SI: powers of 1000, kB, MB, GB, TB IEC: powers of 1024, KiB, MiB, GiB, TiB Windows: powers of 1024, KB, MB, GB, TB (confusable with SI except for the first one)
2023-07-29 05:39:57
>powers of 1024, KB, MB, GB, TB That's how it was originally. KiB, etc is a recent invention that's pretty much useless in clarifying between real KBs (1024 bytes) and commercial KBs (1000 bytes).
190n
2023-07-29 05:42:24
how is it useless?
VcSaJen
2023-07-29 05:42:50
Because commercial KBs are still ambiguous.
190n
2023-07-29 05:42:53
"real KB" always should have meant 1000 bytes; the K prefix long predates its use in measuring data capacity
VcSaJen Because commercial KBs are still ambiguous.
2023-07-29 05:43:06
sure, but if i see KiB i know exactly what it means
VcSaJen
2023-07-29 05:43:24
That's how HDD manufacturers justify themselves, sure.
190n
2023-07-29 05:46:08
so?
jonnyawsom3
2023-07-29 05:53:18
I'm fairly sure sector sizes of partitions are always IEC unless something drastic changed the past few years, so a 1 kB file is always 1 KiB, right?
190n
2023-07-29 05:54:12
filesystems might use even larger blocks like 4 KiB
2023-07-29 05:54:56
but it makes a difference when files are big enough; the difference between 1 GB and 1 GiB is 18,004 4 KiB blocks
jonnyawsom3
2023-07-29 05:59:50
Yeah, was just using 1 KiB as an example
_wb_
2023-07-29 06:08:47
Maybe KiB makes sense if that aligns things to sector sizes or whatever. But I don't really see why you would need to keep using powers of two beyond that.
joppuyo
2023-07-29 06:21:07
MB/MiB is close enough for me most of the time. What really trips me up is that network transfer speeds are measured in bits instead of bytes
_wb_
2023-07-29 06:49:19
1 kibibyte = 1.024 kilobyte 1 mebibyte ≈ 1.049 megabyte 1 tebibyte ≈ 1.100 terabyte 1 exbibyte ≈ 1.153 exabyte
2023-07-29 06:53:03
What was a 2-5% difference in the 1980s back when a megabyte was a large amount of data, is more like a 10-15% difference for today's storage capacities...
jonnyawsom3
2023-07-29 08:24:17
235 kB turns into 230 KiB, probably best to just stick with kB but also show original size like in my draft, then no matter the OS or software, you see the difference in the output
lonjil
2023-07-29 08:48:39
transfer speeds are traditionally measured in "symbols" per second
2023-07-29 08:48:50
and the dominant symbol ended up being a bit :)
2023-07-29 08:49:46
the definition of "baud" is "symbols per second", but of course with 1 bit symbols you get "bits per second"
OkyDooky
2023-07-29 08:54:25
Thankfully, I can change the settings on my KDE desktop widget to show bytes instead of bits, so I don't have to approximate in my head. I usually don't like aggressive homogeneity via "standards" being enforced, but data measurements are one area I'd be fine with making an exception. All the definitions above make my head hurt, thinking about them in practice. (<@189835259242741760>)
lonjil
2023-07-29 09:00:31
I recall reading something from I think the 60s where someone was complaining about some fancy new 1024 byte memory module being marketed as "1 kilobyte" and saying that an alternative to the SI prefixes should be found. Of course, back then, it really was just plain rounding, 1000 and 1024 being close enough that a bit of rounding was OK.
spider-mario
VcSaJen That's how HDD manufacturers justify themselves, sure.
2023-07-29 10:13:48
I’m not going to blame manufacturers for following what “kilo-” has meant for centuries to all but a few engineers who later thought “eh, 1024 is close enough” and wrote it in uppercase
2023-07-29 10:14:00
the only ones who make it ambiguous are those who cling to that non-standard interpretation
2023-07-29 10:14:07
I’d rather just kill it for good
VcSaJen
2023-07-30 02:27:25
It's not "a few engineers". It was a whole damn IT world. It's kinda weird accusing Windows of being "non-standard" when it was following de-facto standard when it was implemented.
joppuyo
2023-07-30 03:24:22
Well, ISO exists for a reason 😅
2023-07-30 03:25:34
I’m glad everyone agreed on a date format we should use so we are not stuck with whatever some engineer came up with in the 60s
w
2023-07-30 04:03:12
we're stuck with whatever some engineer came up with in the 70s
Traneptora
joppuyo I’m glad everyone agreed on a date format we should use so we are not stuck with whatever some engineer came up with in the 60s
2023-07-30 04:11:03
unix time superiority
2023-07-30 04:11:16
seconds since 1970 began UTC
lonjil
Traneptora seconds since 1970 began UTC
2023-07-30 06:33:39
Unix time is not that, unfortunately. It's the number of seconds since that date, *minus* the number of leap seconds since then. This makes it really annoying and terrible.
VcSaJen It's not "a few engineers". It was a whole damn IT world. It's kinda weird accusing Windows of being "non-standard" when it was following de-facto standard when it was implemented.
2023-07-30 06:34:28
Except networking and storage :p
jonnyawsom3
_wb_ Jxl spec defines exif, xmp and jumbf. But we could also add other boxes, they are not described in the spec except that they are to be ignored. I am half-tempted to add a `text` box that just corresponds to unrecognized png text chunks
2023-07-30 07:54:06
Adding on to that `text` box idea, I wonder if djxl could then restore it into new PNGs
_wb_
2023-07-30 08:02:29
Everything can be done, it's all just chunks and boxes. In practice I don't know if cjxl/djxl matter much — it's what applications like imagemagick, libvips, ffmpeg, gimp, photoshop etc do that matters. Libjxl only gives an api to write and read boxes, whether you use that and what you put inside of them is up to you...
jonnyawsom3
2023-07-30 08:14:04
Yeah, just thinking of legacy programs that still want PNGs with 'custom' text chunks, then you still get the savings of JXL with relative ease of use
spider-mario
VcSaJen It's not "a few engineers". It was a whole damn IT world. It's kinda weird accusing Windows of being "non-standard" when it was following de-facto standard when it was implemented.
2023-07-30 09:00:17
I mean, it’s also a bit weird to say that “kilo” for 1024 was how it was “originally” (and that 1000 is “commercial”), when the kilo- prefix for 1000 (itself from the Ancient Greek word for 1000) dates back to the 18th century and was standardised internationally in 1875
w
2023-07-30 09:03:17
and people use 4k for UHD when it's not even 4k
2023-07-30 09:03:51
and dci 4k is also 4096
gb82
Thought I'd get some input from others here on the formatting and verbosity of cjxl. Wb already worked on it and I had made suggestions that got implemented, but tailoring it to just what I think obviously isn't ideal Current default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.449 MP/s [1.45, 1.45], 1 reps, 16 threads.``` Proposed default ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Encoding 3840 x 2160 [Lossless, effort: 5 | Exif] 2311.8 KB compressed to 3552.2 KB (3.508 bpp) 1.449 MP/s``` Removes more detailed info for verbose output, changes kB to KB to keep in line with OS displayed size (Could adjust to MB too), shows original size for easy comparison, moves resolution to the encoding line and encode speed to the compressed line Current Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840x2160 image, 2367327 bytes, 475.8 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637.5 kB including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Proposed Verbose ```JPEG XL encoder v0.9.0 c3a4f9c [AVX2,SSE4,SSSE3,SSE2] Read 3840 x 2160 image, 2367327 bytes, 475.843 MP/s Encoding [Container | Modular, lossless, effort: 5 | 982-byte Exif] Compressed to 3637451 bytes including container (3.508 bpp). 3840 x 2160, 1.469 MP/s [1.47, 1.47], 1 reps, 16 threads.``` Changes sizes back to bytes for accurate results, makes formatting of resolution and MP/s between read and compressed identical, shows the info removed by default
2023-07-30 04:07:13
I think it'd be cool to have somewhere in there a percentage number for how much smaller/larger the file became after encoding
kkourin
w and people use 4k for UHD when it's not even 4k
2023-07-30 04:49:09
imo the more egregious one is 1440p monitors being commonly referred to as "2K" by stores
2023-07-30 04:50:23
as if to separate them from 1080p
spider-mario
2023-07-30 05:46:18
which are _also_ roughly 2K if 16:9 or wider (1920×1080)
Traneptora
2023-07-30 05:46:46
2560x1440 is a bit off from 2k IMO
spider-mario
2023-07-30 06:00:06
yes, if anything, it’s 2.5K 😁
joppuyo
2023-07-30 06:09:44
Anybody know how to make a HDR .jxl file? Wide gamut should be simple enough if you just embed an ICC profile but I’m not sure how to add extended dynamic range
2023-07-30 06:10:55
Maybe I need to try adobe camera raw, according to the docs it supports HDR jxl and avif out of the box
190n
2023-07-30 06:11:27
i would imagine color profile + floating point input would be needed, so you can just provide samples above 1.0
joppuyo
2023-07-30 06:12:45
Are you talking about cjxl? I don’t have enough skills to use libjxl API directly
190n
2023-07-30 06:14:26
that works in cjxl if your input is floating point
2023-07-30 06:14:47
i just compressed an openexr file i have and the resulting jxl has samples above 1.0
2023-07-30 06:32:03
Traneptora
190n i would imagine color profile + floating point input would be needed, so you can just provide samples above 1.0
2023-07-30 06:33:43
HDR works in int16 as well, it doesn't have to be float
2023-07-30 06:34:12
the primary difference between HDR and SDR is that HDR transfers (e.g. PQ) are in absolute light levels and SDR is referred
2023-07-30 06:34:40
that's what the intensity target is primarily for
190n
2023-07-30 06:35:55
so like, in int16 you specify how many nits 65535 is and in float you specify the level for 1.0?
Traneptora
2023-07-30 06:40:19
yea
2023-07-30 06:40:21
basically
2023-07-30 06:40:41
float can go above 1.0, but you can always use int16 and set the 65535 level in nits to be something higher than the peak brightness of the image
2023-07-30 06:40:50
and then the inability to go above 1.0 is not an issue
spider-mario
2023-07-30 07:17:22
(HLG is relative like SDR, but the exact transfer function varies with peak luminance)
gb82
joppuyo Anybody know how to make a HDR .jxl file? Wide gamut should be simple enough if you just embed an ICC profile but I’m not sure how to add extended dynamic range
2023-07-31 12:00:28
https://www.reddit.com/r/jpegxl/comments/wnf0ou/comment/iks1z3o/
190n
2023-07-31 12:03:47
here's my attempt:
190n
2023-07-31 12:05:27
on my phone, what's different? higher distance?
2023-07-31 12:06:17
does jxl support 16 bit float? the jxl i sent was actually encoded from a 32 bit float exr, not 16, but idk if that would've made a difference in encoding
gb82
190n on my phone, what's different? higher distance?
2023-07-31 12:07:16
this one has actual HDR metadata & displays the full dynamic range
2023-07-31 12:07:44
I used `exr_to_pq` & copied the target luminance info for the cjxl encode
190n
2023-07-31 12:15:52
interesting, what was that info? i don't think i set a target luminance
gb82
2023-07-31 12:18:08
`exr_to_pq -l max=1000 final16.exr final16.png`
2023-07-31 12:18:21
`cjxl final16.png final16.jxl --intensity_target=1206.76 -e 9 -p -v -d 1.0`
2023-07-31 12:19:11
What color profile was the original exported in?
190n
2023-07-31 12:24:59
srgb
Quackdoc
gb82 `exr_to_pq -l max=1000 final16.exr final16.png`
2023-07-31 12:53:41
https://cdn.discordapp.com/emojis/654081052108652544.webp
gb82
2023-07-31 12:54:36
10k nits
diskorduser
2023-07-31 12:55:10
😶
Quackdoc
2023-07-31 12:55:55
try doing white=1000?
gb82
2023-07-31 12:59:32
`[1] 195464 illegal hardware instruction (core dumped)` lmao
2023-07-31 12:59:55
with max=8k it looks like a mess
CrushedAsian255
2023-07-31 07:51:50
just wondering what's the chance that software can still read JPEG XL in 20-30 years? Is it a good archival format?
_wb_
2023-07-31 07:55:24
That's the goal, yes.
CrushedAsian255
2023-07-31 07:57:45
so should i archive images using JXL or use something like JPEG (legacy) or TIFF
Traneptora
CrushedAsian255 so should i archive images using JXL or use something like JPEG (legacy) or TIFF
2023-07-31 09:40:42
I would strongly recommend against using legacy JPEG to archive images unless they *already are* legacy JPEG
2023-07-31 09:40:49
since it's lossy
2023-07-31 09:41:04
if you don't mind that, JXL is still significantly better
CrushedAsian255
2023-07-31 09:46:06
As in they’re currently in legacy, should I lossless into JXL?
spider-mario
2023-07-31 09:52:30
it seems like it should be safe to do, if they currently reconstruct properly
2023-07-31 09:52:53
(I can be slightly paranoid with this sort of thing so I would still make sure that this is the case before deleting the originals)
CrushedAsian255
2023-07-31 09:53:03
But will the format still work in 20+ years ?
2023-07-31 09:53:14
Like will jpeg xl be obsolete
spider-mario
2023-07-31 09:54:17
I can’t give a 100% sure answer, but the more people use it, the less likely it is to die
CrushedAsian255
2023-07-31 09:54:33
Fair point
spider-mario
2023-07-31 09:54:39
there will be more people with an incentive to keep it working
CrushedAsian255
2023-07-31 09:54:48
Also I’ll keep a PDF of the spec just in case
w
2023-07-31 09:55:19
yeah but waht about jpeg xl 2
2023-07-31 09:55:22
jpeg xxl
CrushedAsian255
2023-07-31 09:55:47
JPEG - 2100?
w yeah but waht about jpeg xl 2
2023-07-31 09:56:06
Hopefully would be backwards compatible
spider-mario
2023-07-31 10:00:51
jpeg 2xl4me
_wb_
2023-07-31 10:04:52
I think the likelihood that you will not be able to open a jxl in 20 years is low. Even if adoption-wise it becomes a complete flop, I think it's already sufficiently established to assume that at least in some software it will still work in some software. E.g. ImageMagick can still open way more obscure formats from 20+ years ago...
CrushedAsian255
2023-07-31 10:05:27
Ok cool 😎
jonnyawsom3
2023-07-31 12:16:55
Worst case, you'll still have the reference implementation while making the archive, so either windows will still have 30 year backwards compatibility or you could compile the Github code into whatever platform we're using
spider-mario
2023-07-31 12:31:57
yeah, just make sure to keep a copy of your own if you want to be on the safe side
2023-07-31 12:32:20
waking up in 30 years: “I’ll just grab libjxl from githu… wait, where _is_ github?”
2023-07-31 12:32:38
“anyone has a djxl.exe around?”
jonnyawsom3
2023-07-31 12:33:38
"Anyone remember C++?"
lonjil
2023-07-31 12:43:34
one time I needed an old minecraft mod and the only place I could find it was inside a single obscure mod pack whose original hosting no longer existed
jonnyawsom3
2023-07-31 01:19:36
God, you reminded me when I spent a week trying to find an old mod from 2011, now that was a pain in the arse
username
2023-07-31 02:42:24
it seems like the minecraft community has/is done/doing a very very awful job of archiving older mods which is leading to more and more mods disappearing each day
OkyDooky
2023-07-31 02:46:42
It's standardized, open source, and supported natively on Linux. You can't really get more future-proof than that, since Linux will probably outlive any other platform. (<@386612331288723469>)
monad
CrushedAsian255 As in they’re currently in legacy, should I lossless into JXL?
2023-07-31 05:32:26
~~By design, JPEG recompression will be lossy in some cases, so~~ you must perform a round trip and verification on every file if you care about preserving data.
_wb_
2023-07-31 05:40:29
In principle libjxl should return an error if it cannot losslessly recompress a JPEG. There might be bugs that cause it not to roundtrip, but it is designed to either roundtrip or return error.
gb82
2023-07-31 09:08:19
I hear that Instagram & Facebook Reels are being served as HDR if a source video is HDR only on Apple devices that support it currently - could this mean Facebook tries to do something similar with image delivery? JXL supports HDR, they'd be able to transcode existing JPEGs for iPhone users, & suddenly the iOS experience is far ahead
monad
2023-07-31 11:24:41
Oh, I guess this behavior was dropped, which is good https://github.com/libjxl/libjxl/pull/358
jonnyawsom3
gb82 I hear that Instagram & Facebook Reels are being served as HDR if a source video is HDR only on Apple devices that support it currently - could this mean Facebook tries to do something similar with image delivery? JXL supports HDR, they'd be able to transcode existing JPEGs for iPhone users, & suddenly the iOS experience is far ahead
2023-08-01 12:02:18
I remember a vague quote from Facebook saying they had the JXL support ready years ago but just needed to flip the switch
OkyDooky
2023-08-01 12:45:54
or https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c16
jonnyawsom3
2023-08-01 12:52:51
Yeah
gb82
2023-08-01 02:34:38
spider mario, what is the difference between `-l white=XXX` & `-l max=XXX` in `exr_to_pq`
spider-mario
gb82 spider mario, what is the difference between `-l white=XXX` & `-l max=XXX` in `exr_to_pq`
2023-08-01 08:00:02
`-l white=x` means that (1, 1, 1) in the EXR is `x` cd/m², `-l max=x` means that whatever brightest pixel is actually found in the EXR (not necessarily (1, 1, 1)) is `x` cd/m²
2023-08-01 08:01:44
so, for an EXR that goes up to (7, 7, 7), `-l white=100` and `-l max=700` would be equivalent
gb82
2023-08-01 12:41:49
Gotcha. Is there any way to parse EXR metadata to look for those values? I'm not sure how high mine might go
2023-08-01 12:42:00
Also, <@184373105588699137> this might explain things
Quackdoc
2023-08-01 12:43:50
ah, I thought it was applied on output not input, that can indeed explain things
2023-08-01 12:49:33
wait, then `-l max=` should still properly equate the peak nits right?
2023-08-01 12:52:05
unless my script is bunged up, could be mapping error I suppose?
OkyDooky
2023-08-01 01:12:35
hi <@794205442175402004>, does the JXL project have a particular release schedule? Having this information can be handy for downstreams like desktop environments and distros
_wb_
2023-08-01 01:13:33
I agree it would be practical to have a schedule, but currently we don't have one — it's ready when it's ready...
OkyDooky
2023-08-01 01:14:12
ah I guessed so \:)
_wb_
2023-08-01 01:14:30
we could probably at least anticipate and announce some time in advance when the next release will be, when we are sufficiently close to it....
2023-08-01 01:15:47
for now, as far as I understand, for 0.9 we still want to get the decode-cms thing and the no-aborts thing done. Possibly also chunked encode, if that is ready.
Quackdoc
2023-08-01 01:46:12
what form of tonemapping does `exr_to_pq` use? im getting nit peaks far higher then what is set by `-l max=700` when using ocio's python tools
spider-mario
2023-08-01 01:55:17
no tone mapping, but very chromatic highlights might be throwing off the max calculation
2023-08-01 01:55:30
I would generally favour `white=`, it should be more predictable
2023-08-01 01:55:43
less dependent on the exact image content and more on how it was produced
Quackdoc
2023-08-01 01:56:09
ahhh I see
spider-mario
gb82 Gotcha. Is there any way to parse EXR metadata to look for those values? I'm not sure how high mine might go
2023-08-01 01:56:16
exrstats from exrtools is an option if packaged for your system
Quackdoc
2023-08-01 01:58:49
hmmmm, I wonder how hard it would be to add jxl to oiio...
spider-mario
2023-08-01 02:06:32
<@703028154431832094> I now see that openimageio’s `iinfo` tool with the `--stats` flag is also a viable option, thanks <@184373105588699137> for pointing me to it 😁
Quackdoc
2023-08-01 02:08:18
yeah, oiio is typically what I use for working with still exr images, so having native jpegxl support for that is quite tempting, I may work on it should I find the time but it would be quite low priority sadly
2023-08-01 02:09:39
that being said, it shouldn't be too hard to work with since iirc it's mostly just standard affair, example for jpeg is here https://github.com/OpenImageIO/oiio/tree/master/src/jpeg.imageio
2023-08-01 02:10:47
though colorspace stuff would be nice to support in ocio too im not sure how necessary it would be?
Traneptora
2023-08-01 04:10:38
looks like placebo bug in SDR -> SDR contrast ratio got fixed
2023-08-01 04:10:53
which means this works again: `ffmpeg -i xyb.jpg -vf libplacebo=color_primaries=bt709:color_trc=iec61966-2-1:format=gbrp rgb.png`
2023-08-01 04:18:51
er, not necessarily
2023-08-01 04:18:52
hm
2023-08-01 04:21:05
ah it is, I had forgotten to recompile placebo <:kek:857018203640561677>
_wb_
2023-08-03 09:30:53
Can anyone help with https://github.com/libjxl/libjxl/pull/2704 ? We're looking for JPEG encoders (hardware or software) that produce bitstreams with empty DHT segments, i.e. containing the sequence `0xFFC40002FF`
2023-08-03 09:32:02
this is rare/unusual/useless behavior but apparently it does exist, we just don't know how common it is
OkyDooky
2023-08-03 02:39:52
lots of mentions of JPEG XL in https://news.ycombinator.com/item?id=36982507
Traneptora
2023-08-03 11:47:31
so I tried searching for the CDN for that image to try to find its source
2023-08-03 11:47:33
2023-08-03 11:47:34
hm
2023-08-04 05:45:20
Is there a firefox fork that follows Firefox development and regularly merges in patches, similar to how Thorium does with Chromium
2023-08-04 05:45:24
Preferably with JXL support
2023-08-04 05:45:36
iirc some firefox forks like Pale Moon are based on older versions of firefox and have sort of diverged
w
2023-08-04 05:49:08
i would do it except mozbuild breaks every week
Traneptora
2023-08-04 06:04:22
I looked at waterfox, dunno if they are what I'm looking for tho
Quackdoc
2023-08-04 06:07:15
waterfox tracks ESR pretty closely, but they dont do a lot of patches, but they certainly do some, librewolf maybe? IIRC at one point they had jxl support at least,
Traneptora
2023-08-04 06:26:38
Tested waterfox. It passes: https://jpegxl.info/test-page/
2023-08-04 06:26:52
dunno if they merged W's patches or not but the animation works, so I suppose yes?
Quackdoc
2023-08-04 06:28:57
I believe so yes,
2023-08-04 06:29:22
yes they did, forgot about it myself lol https://github.com/WaterfoxCo/Waterfox/pull/2938
VcSaJen
2023-08-05 01:55:24
Waterfox crashed on CMYK JXL images last I checked. I dunno if they fixed that or not.
gb82
Traneptora Is there a firefox fork that follows Firefox development and regularly merges in patches, similar to how Thorium does with Chromium
2023-08-05 05:17:51
Mercury. https://thorium.rocks/mercury
Traneptora
gb82 Mercury. https://thorium.rocks/mercury
2023-08-05 06:12:00
aren't Mercury and Waterfox by the same guy
2023-08-05 06:13:25
oh wait nvm I'm misremembering something
gb82
2023-08-05 06:30:32
Mercury & Thorium are by the same guy
elfeïn
2023-08-05 06:40:01
wha
2023-08-05 06:40:24
2023-08-05 06:40:37
2023-08-05 06:40:59
um actually
FuriousFields
2023-08-05 10:27:41
<:PepeOK:805388754545934396>
Traneptora
2023-08-06 12:25:12
I just adopted the AUR package for waterfox-current-bin
2023-08-08 04:15:53
Are extensions designed to be forward-compatible like unknown PNG chunks?
2023-08-08 04:16:04
i.e. are decoders required to ignore extensions they do not recognize without erroring?
2023-08-08 04:18:50
If so, why not have a Text extension in the codestream, which contains an entropy-coded stream of UTF8-encoded text?
2023-08-08 04:19:11
Or rather, it contains an entropy-coded stream of Unicode Codepoints
2023-08-08 04:19:31
Unless that's more difficult than doing 8-bit UTF-8?
2023-08-08 04:20:05
not sure which would be harder to do, but I wonder if it would make sense to have a text-extension like the equivalent of PNG's `zTXt` chunks
Tirr
2023-08-08 04:21:15
extension bits are read and ignored
Traneptora
2023-08-08 04:21:20
ah so it does say that
Tirr
2023-08-08 04:21:26
> Extensions for ImageMetadata, FrameHeader, and RestorationFilter are not currently defined, so the decoder reads and ignores any extension bits specified there.
Traneptora
2023-08-08 04:26:03
Maybe something like: ``` u(8) | "und" | country_code[3] U64() | 0 | compressed_length ``` ("und" for unspecified language, and "zxx" for the "encoded text has no linguistic content") If the `compressed_length` is nonzero, a decoder then reads an entropy-coded stream with one pre-clustered distribution, and then it reads `compressed_length` symbols from that entropy-coded stream, using `0` as the context each time. Each symbol has a value between 0 and 255 (inclusive), and the concatenation of all symbols forms a UTF8-encoded text stream.
2023-08-08 04:27:37
If `compressed_length` is zero, then no entropy stream is read. Instead, this extension tags the linguistic content of the image data itself.
2023-08-08 04:30:04
I'm thinking that since the extensions bundle itself has a size, there's no need to tag the uncompressed length of the entropy stream
_wb_
Traneptora If so, why not have a Text extension in the codestream, which contains an entropy-coded stream of UTF8-encoded text?
2023-08-08 06:48:50
That's better done as file format boxes imo. Codestream should be for things that have rendering impact.
2023-08-08 06:53:28
One possible use for codestream extensions would be some new kind of gaborish/epf filter (which if ignored, still gives you a reasonable image), or maybe some extra index/toc that could help to speed up decoding in some way.
yoochan
2023-08-08 07:10:52
The capability to contain clipping path (with existing splines) would be a nice extension
Traneptora
_wb_ That's better done as file format boxes imo. Codestream should be for things that have rendering impact.
2023-08-08 08:39:02
perhaps. maybe add `tEXt` boxes? and maybe allow them to be embedded in `brob`
_wb_
2023-08-08 08:43:19
See also: https://github.com/libjxl/libjxl/issues/2641 and https://github.com/libjxl/libjxl/issues/2687
Traneptora
2023-08-08 09:16:34
Arbitrary text makes sense, though I don't think we should just use all PNG chunks
2023-08-08 09:16:38
since JXL is not a PNG recompressor
2023-08-08 09:17:00
stuff like `tEXt` is generic enough that plaintext and brob boxes could cover it
2023-08-08 09:17:31
but I see no need for arbitrary PNG chunks like bKGD or hIST or tRNS
2023-08-08 09:17:43
etc.
2023-08-08 09:18:42
but text-based metadata is low-overhead, especially when the brob mechanic exists already
2023-08-08 09:26:10
It's less about "PNG recompression" and more about "text metadata makes sense to have as a thing"
jonnyawsom3
2023-08-08 09:46:15
Would be nice to have lossless be lossless, instead of throwing away the text
CrushedAsian255
2023-08-08 09:46:27
Agreed
2023-08-08 09:48:13
Wait what is usually put in those chunks other than XMP?
2023-08-08 09:48:19
Application specific things?
_wb_
2023-08-08 09:55:26
ImageMagick uses it for plaintext creation/modification timestamps
2023-08-08 09:55:47
Some genAI uses it to store the prompt
2023-08-08 09:57:27
In general I think it would be better to avoid generic plaintext where only humans can make sense of the semantics, and use something like XMP instead so standard field names can be used when possible (and new ones added otherwise)
Traneptora
2023-08-08 09:09:39
problem is XML is terrible
OkyDooky
2023-08-08 11:05:33
Just out of curiosity, has anyone tried using cjxl on Android using something like Termux?
2023-08-08 11:07:32
I got sent down that rabbithole a bit after trying to find some app that would encode JPEGs using MozJPEG and someone suggested I try using Tetmux + ffmpeg. It turned into a bit too big of an ordeal, but I thought I might try seeing if I could play around with encoding JXL files before unistalling Termux.
190n
Just out of curiosity, has anyone tried using cjxl on Android using something like Termux?
2023-08-08 11:12:43
yes, it works
2023-08-08 11:14:07
https://media.discordapp.net/attachments/808742092213715034/947437547854909490/android-users-viewing-a-jxl.mp4
w
2023-08-08 11:17:16
bro charge your phone
190n
2023-08-08 11:17:44
i don't even use that phone anymore
2023-08-08 11:18:18
18 month old video
OkyDooky
2023-08-08 11:34:36
So, is installing the same as on a Debian distro? Or do I have to build it?
190n
2023-08-08 11:40:52
install libjxl-progs from their repos
2023-08-08 11:41:02
idk if it's up to date but it exists
Fraetor
2023-08-08 11:48:14
And cjxl works fine too. I use it a fair amount inside of Termux.
OkyDooky
2023-08-09 12:09:35
Found the repo listing. It looks fairly up to date (July 2023). Should I go with regular libjxl or the progs one?
190n
2023-08-09 12:10:56
i'm guessing regular libjxl is only the library and -progs includes the cjxl and djxl programs
OkyDooky
2023-08-09 12:34:57
Thanks for the help! It installed fine. One more question\: is there a beginners guide for commands? The libjxl Github shows a few starter commands, but I'm super new to using CLI tools to work with files, media or otherwise.
DZgas Ж
190n https://media.discordapp.net/attachments/808742092213715034/947437547854909490/android-users-viewing-a-jxl.mp4
2023-08-09 03:27:53
<:megapog:816773962884972565>
Tumby
2023-08-09 03:54:14
so i just learned about jxl today
2023-08-09 03:55:20
i have some images i rendered in blender that are 48bpp and end up needing 130MB as png
2023-08-09 03:57:05
i found out that Krita can read/write jxl, so i tried converting one of those images. I compared the png and jxl images and they aren't exactly the same! does krita have a bug or does jxl not like 48bpp images?
Lucas Chollet
2023-08-09 03:59:05
Are sure that you're using lossless JXL?
190n
2023-08-09 04:00:21
^^^ how did you convert them image
Tumby
2023-08-09 04:00:27
lossless was checked when i exported
2023-08-09 04:03:03
i opened the original png and the converted jxl in krita, set one of the layers to Difference, merged them, and then used the color sampling tool to check if everything is 0,0,0. but no, most pixels are like 1,0,0 or 0,2,3 etc.
2023-08-09 04:04:26
its not the worst error in the world, since its just off by like 3 out of 65535. but still, lossless should be lossless so whats going on here?
2023-08-09 04:07:03
is there a different program i can use, so that i can eliminate the possibility that its just a Krita thing?
jonnyawsom3
2023-08-09 04:19:26
I know Krita has a few bugs with JXL that are being fixed in the next release, but if you want to be certain then you can use the reference software from Github Either from Releases https://github.com/libjxl/libjxl Or you can get the most recent from here https://artifacts.lucaversari.it/libjxl/libjxl/latest/
_wb_
2023-08-09 04:21:54
You can try using cjxl/djxl to see if things are different
Tumby
2023-08-09 04:32:23
i will report back with results later
jonnyawsom3
Tumby lossless was checked when i exported
2023-08-09 05:13:35
If it's a 130MB PNG, then I assume it's fairly high resolution. On effort 9 it can use a *lot* of RAM so I'd be a bit wary of that
elfeïn
If it's a 130MB PNG, then I assume it's fairly high resolution. On effort 9 it can use a *lot* of RAM so I'd be a bit wary of that
2023-08-09 05:20:34
130MB 😳
jonnyawsom3
2023-08-09 05:21:55
I've had 150+ before :P
elfeïn
2023-08-09 05:22:08
150+MB 😳
Tumby
_wb_ You can try using cjxl/djxl to see if things are different
2023-08-09 05:32:31
using these tools, the jxl file is 100% lossless. so yeah, krita is dum dum
If it's a 130MB PNG, then I assume it's fairly high resolution. On effort 9 it can use a *lot* of RAM so I'd be a bit wary of that
2023-08-09 05:32:53
i got plenty of ram. it does take 41 minutes to compress though
jonnyawsom3
2023-08-09 05:34:38
Yeah, that sounds about right. How big was the resulting file by the way?
Tumby
2023-08-09 05:35:11
81 MB
2023-08-09 05:36:21
the original png was made with blender, which has the best png compression i have ever seen. the converted-back png is 134 MB
jonnyawsom3
2023-08-09 05:38:26
Yeah, Blender is one of the few programs that compresses PNGs 'Properly', I know there was mention of changing the djxl PNG encoder too
Tumby
2023-08-09 05:40:19
im just glad to see that jxl is in fact lossless as advertised
2023-08-09 05:41:19
is there something i can install to see thumbnails of jxl files in the windows explorer?
_wb_
2023-08-09 05:41:50
It can do even more than 16 bit per sample losslessly, but probably applications that can handle that properly will be rare
2023-08-09 05:42:23
I think there's a WIC thingie somewhere, no idea how well it works though
2023-08-09 05:43:29
I haven't used Windows since 1998 or so, when I finally removed that Windows NT 4 partition
jonnyawsom3
Tumby is there something i can install to see thumbnails of jxl files in the windows explorer?
2023-08-09 05:49:12
https://github.com/saschanaz/jxl-winthumb I mentioned it to a friend in a voice call while they were screen sharing a while ago, they installed it live in about a minute and we both watched the file explorer fill with color haha
Tumby
2023-08-09 05:52:23
how do i install this
2023-08-09 05:52:42
its just a dll?
jonnyawsom3
2023-08-09 05:54:26
Huh, I could've sworn it had install instructions before...
2023-08-09 05:58:04
Download the DLL from releases, put it somewhere safe (Maybe a JXL folder under Program Files), open cmd there, run `regsvr32 jxl_winthumb.dll` then it should start generating previews (`regsvr32 -u xl_winthumb.dll` to uninstall)
2023-08-09 05:59:53
Ah yeah, the instructions were on the initial release > How to use: > > Download the dll file > Open a terminal window as administrator > Move to your download directory > `regsvr32 jxl_winthumb.dll`, or to uninstall, `regsvr32 /u jxl_winthumb.dll`.
Tumby
2023-08-09 06:05:42
doesnt looks like my computer wants this
2023-08-09 06:05:46
2023-08-09 06:06:21
the file was found and loaded, but DllRegisterServer failed with error code 0x80004005
jonnyawsom3
2023-08-09 06:06:33
Huhh....
2023-08-09 06:07:15
First thing I get searching that is no Administrator privileges
Tumby
2023-08-09 06:07:26
ah makes sense
2023-08-09 06:08:03
works now
jonnyawsom3
2023-08-09 06:23:50
Nice
Tumby
2023-08-09 06:28:24
the colors of the thumbnails are off though. left is jxl, right is png
jonnyawsom3
2023-08-09 06:31:41
Yeah, that was an open issue on the github
yoochan
2023-08-09 08:02:51
It would be nice to have a fully working and easy to install windows solution! Even if this discord is full of bearded geeks, windows users still represent a huge part of the potential users
jonnyawsom3
2023-08-09 08:28:56
There was a bat file in the old version that ran the DLL register and modified registry so Microsoft Photos would work too, but not sure if it's up to date
2023-08-09 08:30:07
Oh wait, apparently that was to make an executable that would do it all for you, but never put in releases https://github.com/mirillis/jpegxl-wic/blob/main/installator_setup.iss
Traneptora
Tumby i opened the original png and the converted jxl in krita, set one of the layers to Difference, merged them, and then used the color sampling tool to check if everything is 0,0,0. but no, most pixels are like 1,0,0 or 0,2,3 etc.
2023-08-10 06:16:29
What does `jxlinfo -v` report for the encoded JXL? If I had to guess, it's probably setting the distance to zero but isn't disabling XYB.
Kampidh
2023-08-10 07:40:52
hmm interesting, I can't reproduce it myself even on krita 5.1.5
jonnyawsom3
2023-08-10 08:11:36
From the sounds of it, it was 16 bit per channel if that makes a difference
Kampidh
2023-08-10 09:37:25
Yep, tried roughly the same.. exporting 16bpc RGB (48bpp) from blender, open in krita and export it to lossless jxl
jonnyawsom3
Tumby lossless was checked when i exported
2023-08-10 10:10:49
Did you have animated checked as well? Could be something weird going on there
Tumby
2023-08-10 01:56:03
animated is checked by default and i didn't touch it
Traneptora What does `jxlinfo -v` report for the encoded JXL? If I had to guess, it's probably setting the distance to zero but isn't disabling XYB.
2023-08-10 03:04:39
``` box: type: "JXL " size: 12 JPEG XL file format container (ISO/IEC 18181-2) box: type: "ftyp" size: 20 box: type: "jxll" size: 9 box: type: "jxlc" size: 85018837 JPEG XL image, 8192x6144, (possibly) lossless, 16-bit RGB+Alpha num_color_channels: 3 num_extra_channels: 1 extra channel 0: type: Alpha bits_per_sample: 16 alpha_premultiplied: 0 (Non-premultiplied) have_preview: 0 have_animation: 0 Intrinsic dimensions: 8192x6144 Orientation: 1 (Normal) Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering intent: Perceptual ```
_wb_
2023-08-10 03:13:00
So xyb is not the issue... Might be something like passing buffers in a different format or colorspace
Tumby
2023-08-10 03:16:15
doing some experimentation
2023-08-10 03:16:37
so i converted the png to jxl using krita, and then i converted that back to png using djxl
2023-08-10 03:16:51
i opened the two pngs in krita and compared. no difference
2023-08-10 03:17:16
this means that krita doesnt read jxl files correctly
2023-08-10 03:20:04
next test: open original png and the jxl made by cjxl in krita. compare. different
2023-08-10 03:20:40
yeah krita is doing something wrong while decoding
_wb_
2023-08-10 03:24:51
It might be doing some unnecessary color transform that is slightly lossy
Kampidh
Tumby next test: open original png and the jxl made by cjxl in krita. compare. different
2023-08-10 05:10:40
can you try another test: re-export the original blender png to krita png (make sure to embed the profile), and then compare the new png to the jxl one?
Tumby
2023-08-10 05:14:25
im gonna be honest, at this point i dont have the actual original file anymore. i can at best use the png made by djxl
2023-08-10 05:19:07
how do i make the god damn bot stop pinging me, i hate level-up bots so much
Kampidh can you try another test: re-export the original blender png to krita png (make sure to embed the profile), and then compare the new png to the jxl one?
2023-08-10 05:20:55
no difference between krita's png and djxl's png
Kampidh
2023-08-10 05:24:42
I'm still can't reproduce it on krita by difference layer and color picking yet, but testing with DSSIM tells another story.. I'm gonna make a guess it's the krita's png decoder that might be slightly off when dealing with cicp instead of icc on png
2023-08-10 05:26:17
seems like blender's export didn't seem to use icc on png?
2023-08-10 05:43:59
oh right, one thing as well that krita 5.1.x do try to store lossless jxl with cicp enum as well instead of icc.. which is might be also a contributing factor..
username
Tumby how do i make the god damn bot stop pinging me, i hate level-up bots so much
2023-08-10 05:47:04
you could probably block it, I assume doing so prevents pings.
OkyDooky
2023-08-10 06:42:16
hi <@794205442175402004>, you might be interested in https://gitlab.gnome.org/GNOME/gnome-build-meta/-/issues/698#note_1801107 where it turns out GNOME needs to temporarily revert the JXL addition to OS, due to the lcms support not being in a released version of libJXL \:(
2023-08-10 06:45:00
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6886 too which seems at least in big part related to libjxl's dynamic noise feature
_wb_
2023-08-10 07:06:23
Interesting that noise makes that much of a difference
2023-08-10 07:09:29
For synthetic wallpapers I think they should just disable noise if they only use it as a dithering method so they can use 8-bit output without banding. We will probably have an option to let libjxl do the dithering. They could also use 16-bit buffers and do their own dithering
2023-08-10 07:11:46
That said, perhaps there is a performance bug in noise synthesis? Maybe only in the specific callback codepath they use? Worth investigating... Could someone open an issue at libjxl for it?
yoochan
2023-08-10 07:34:03
Could it be that they wanted to add synthetic noise as an artistic filter/effect ? Is it even possible?
OkyDooky
2023-08-10 07:35:52
<@794205442175402004>\: do you think it would be possible for your library to be introspectable by [Sysprof](https://wiki.gnome.org/Apps/Sysprof) (I've no idea if it isn't already, but I would think Christian would have pointed an exact culprit already if that was the case... or maybe he didn't have the time)
2023-08-10 07:40:16
could be one more tool in your arsenal
_wb_
2023-08-10 07:58:45
No idea what has to be done for that besides, I assume, building with debug symbols
Tumby how do i make the god damn bot stop pinging me, i hate level-up bots so much
2023-08-10 08:01:38
I guess you can mute that bot or something in your discord? I understand it's annoying, but it's also kind of nice to see who are the more active people on the discord - though of course game-ification of chatting is kind of silly
spider-mario
2023-08-10 10:03:30
do we not want to advise trying out the faster_decoding flag (or whatever it is) as well?
veluca
_wb_ I guess you can mute that bot or something in your discord? I understand it's annoying, but it's also kind of nice to see who are the more active people on the discord - though of course game-ification of chatting is kind of silly
2023-08-10 10:30:20
you can mute the channel
hi <@794205442175402004>, you might be interested in https://gitlab.gnome.org/GNOME/gnome-build-meta/-/issues/698#note_1801107 where it turns out GNOME needs to temporarily revert the JXL addition to OS, due to the lcms support not being in a released version of libJXL \:(
2023-08-10 10:32:39
this seems to suggest we should do 0.9 before september
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6886 too which seems at least in big part related to libjxl's dynamic noise feature
2023-08-10 10:36:03
that's odd... I could understand it being related to lcms, but noise ought not to be *that* slow
novomesk
veluca this seems to suggest we should do 0.9 before september
2023-08-11 06:40:55
Or to backport relevant changes into 0.8.3
Gizus
_wb_ Some genAI uses it to store the prompt
2023-08-12 08:30:36
How to store the prompt from png text chunks in .jxl file?
_wb_
2023-08-12 08:35:00
I'd move the text from a raw text chunk to a field in XMP or exif.
Traneptora
Gizus How to store the prompt from png text chunks in .jxl file?
2023-08-18 07:50:59
> an XMP packet is embedded in a PNG graphic file by adding a chunk of type `iTXt` with the keyword `'XML:com.adobe.xmp'`
2023-08-18 07:51:21
You can use a tool like TweakPNG to do so
2023-08-18 07:51:37
https://github.com/jsummers/tweakpng
2023-08-18 07:51:47
It's windows only, but it works in Wine
_wb_ I'd move the text from a raw text chunk to a field in XMP or exif.
2023-08-18 07:53:45
out of curiosity, how does `cjxl` work with `iTXt` fields tagged with `XML:com.adobe.xml`
2023-08-18 07:54:07
does it take the XML data inside and verify it or pass it as-is?
2023-08-18 07:54:52
if so, you might be able to embed non-xml data in JXL's xml section
_wb_
2023-08-18 08:54:38
No, just takes it as a blob without verifying
Traneptora
2023-08-18 11:16:20
how is XMP embedded in jxl?
2023-08-18 11:16:55
Is there a box for XMP specifically? what about IPTC
_wb_
2023-08-18 11:39:48
There is the `xml ` box and the `Exif` box that are specifically mentioned in the spec, where XML boxes are typically used only for XMP but in principle it could be anything xml
2023-08-18 11:41:47
For iptc we didn't put anything in spec since iptc fields should be written as xmp or exif but not using the legacy iptc thing
Traneptora
2023-08-18 12:06:16
Can it be non-XML?
2023-08-18 12:06:53
it seems a bit odd if text based metadata can only be XML, given how bad XML is
joppuyo
2023-08-18 04:15:14
It’s industry standard 🙃
_wb_
2023-08-18 04:21:00
Well there is `jumb` which can have payload boxes in various formats
2023-08-18 04:21:49
What is so bad about XML? It's verbose, but with `brob` that's not a big problem... Anything else?
yurume
2023-08-19 01:22:52
XML proper is almost fine, associated "technologies" aren't
2023-08-19 01:24:24
the biggest problem with XML proper is an overdependence on textual format
Traneptora
_wb_ What is so bad about XML? It's verbose, but with `brob` that's not a big problem... Anything else?
2023-08-19 02:30:28
a lot of things are terrible about XML, namely that trying to parse it leads to a bajillion security vulnerabilities
2023-08-19 02:33:58
libxml2 has two active CVEs in the current version on Debian, for context
joppuyo It’s industry standard 🙃
2023-08-19 02:34:58
much of the industry has moved to JSON if they can
joppuyo
2023-08-19 07:52:29
I think for metadata, it’s mostly just an implementation detail. You probably don’t have to directly interact with XML since libraries will return the data in a data structure native to the programming language
awawa
2023-08-20 09:41:56
i like XML
Traneptora
2023-08-21 04:03:25
clearly you haven't tried to parse it then
2023-08-21 04:07:05
https://www.computerworld.com/article/2582828/the-threat-of-xml.html
2023-08-21 04:07:20
Here's an article explaining how bad it is from the year 2001
2023-08-21 04:07:24
https://cheatsheetseries.owasp.org/cheatsheets/XML_Security_Cheat_Sheet.html
2023-08-21 04:07:36
https://www.opswat.com/blog/depth-look-xml-document-attack-vectors