JPEG XL

Info

rules 58
github 38694
reddit 688

JPEG XL

tools 4270
website 1813
adoption 22069
image-compression-forum 0
glitch-art 1071

General chat

welcome 3957
introduce-yourself 294
color 1687
photography 3532
other-codecs 25116
on-topic 26652
off-topic 23987

Voice Channels

General 2578

Archived

bot-spam 4577

jxl

Anything JPEG XL related

veluca
2023-12-03 01:20:46 You probably want prng more than you think 😛
2023-12-03 01:20:59 Especially if you don't allow multiple entries in the table
2023-12-03 01:21:05 Collisions are *bad*
Traneptora
2023-12-03 01:21:26 oic
veluca
2023-12-03 01:22:14 In particular, you really don't want patterns that are somewhat likely to occur to cause collisions
Traneptora
2023-12-03 01:22:41 so youd have say 4bytes in a table, you store its location in the table
2023-12-03 01:23:06 and on a hit, you double check and if it works use an LD pair
veluca
2023-12-03 01:24:14 That's the standard implementation, yeah
2023-12-03 01:24:28 Usually on collision you'd just replace the entry
2023-12-03 01:24:37 For faster versions
2023-12-03 01:25:16 Other implementations keep a BST in each table entry to look at many possible occurrences
Traneptora
2023-12-03 02:30:04 a BST?
2023-12-03 02:30:06 what's that
veluca
2023-12-03 02:30:45 binary search tree
2023-12-03 02:31:48 you can also use suffix arrays, but IIRC all ths attempts at getting those to go faster than whatever brotli-11 does have failed
Traneptora
2023-12-03 03:01:57 hm, turning on lz77 for the hf metadata modular stream was big
2023-12-03 03:02:21 apparently I had a lot of waste there
2023-12-03 03:03:43 something I'm struggling with is how to set Lz77MinSymbol tho if tokens extend throughout the alphabet
2023-12-03 03:04:35 like say for ans, we're limited to 8bit tokens so what if they all occur
2023-12-03 03:05:26 since it's based on the token, not the hybrid integer
veluca
2023-12-03 03:30:47 depends on the hybrid integer encoding
2023-12-03 03:31:00 if say you do 000, you'll never get a token higher than 20 or so
2023-12-03 03:31:27 and with say 440 or so 100 is still a very safe upper bound
2023-12-03 03:31:42 IIRC libjxl does 224, and that's likely enough for most things
Traneptora
2023-12-03 11:54:38 what if it's not, is the question
veluca
2023-12-03 11:55:03 depends on the hybrid uint you use
2023-12-03 11:55:29 it's enough for the default one as long as you don't have 60 or so bits per channel
2023-12-03 11:56:08 and the non-default ones are chosen only if they are enough 😛
Traneptora
2023-12-03 11:56:48 I'm looking primarily at the HF coefficient stream at this point
veluca
2023-12-03 11:57:06 if you don't do distance 1e-5, 224 will be enough
Traneptora
2023-12-03 11:57:20 ah, okay
veluca
2023-12-03 11:57:43 I did not compute the exact distance you can get down to
Traneptora
2023-12-03 11:57:43 distance 1e-5?
veluca
2023-12-03 11:57:55 but 0.1 is enough, and there's no reason to go below xD
2023-12-03 11:58:26 you need something like `-log(distance) * 4 * (some constant I cannot compute now) >= 224`
2023-12-03 11:58:41 you need some small number for that to happen xD
2023-12-03 11:58:56 (there's probably an additive constant of `12` or so too)
Traneptora
2023-12-03 11:59:11 so far libhydrium has fixed quality that ends up ssimulacra2ing at 85 or so
2023-12-03 11:59:22 for photos
veluca
2023-12-03 11:59:55 yeah you'll be fine
2023-12-04 12:00:07 I'll be surprised if you ever see a symbol above 80
Traneptora
2023-12-04 12:00:13 I also cap rle length to 128
veluca
2023-12-04 12:00:25 that should not matter
Traneptora
2023-12-04 12:00:33 not sure if that is ideal
2023-12-04 12:00:45 idr why I chose 128
veluca
2023-12-04 12:00:50 I'm surprised you get any rle at all on HF
Traneptora
2023-12-04 12:01:02 I could just turn it off
2023-12-04 12:01:08 probably no point
2023-12-04 12:01:23 my cluster map for HF is fun tho
2023-12-04 12:01:42 I found separating out prev into separate clusters helped
2023-12-04 12:01:49 and I use 7 1 0
2023-12-04 12:02:06 er, 7 1 1
veluca
2023-12-04 12:02:21 so you entropy code the sign bit?
Traneptora
2023-12-04 12:07:57 apparently it helps
2023-12-04 12:08:10 from experimentation
VcSaJen
2023-12-04 12:44:06 I see that some people use jxl as a benchmark of OS speed, like comparing linux and windows. Doesn't it show more about specific libjxl builds than about OSes?
Traneptora
2023-12-04 01:13:16 it doesn't say much about OSes themselves but I haven't seen that used as a benchmark personally to compare operating systems
VcSaJen
2023-12-04 01:52:37 https://www.phoronix.com/review/threadripper-7995wx-linux-5/2
190n
2023-12-04 02:02:41 it's phoronix, they test everything
gb82
2023-12-04 07:20:20 based
Traneptora
2023-12-04 07:21:06 look at the g++ options and then go ???
2023-12-04 07:21:17 libjxl forces -O2 but it's still funny
yurume
2023-12-04 09:24:26 oh btw I recently learned that GCC has moved SLP vectorization from -O3 to -O2 about a year ago
2023-12-04 09:25:38 I always had some concern for projects that default to -O2, thus not benefiting from vectorization when compiled with GCC, but that is now the past (and that past turned out to be recent enough for me to not know)
2023-12-04 09:26:46 for me vectorization was the main reason to use -O3, so it's significant
spider-mario
2023-12-04 05:00:39 fwiw, we’re soon going to stop doing that
2023-12-04 05:01:03 we’re cleaning up the cmake build a bit, and removing the forced -O2 is part of that PR
Demiurge
2023-12-04 11:02:09 Ubuntu and Windows are garbo, what else is new :)
afed
2023-12-04 11:05:54 for libjxl it's mostly gcc
MSLP
2023-12-04 11:06:00 I wonder how much of this is different default compilers for those systems, ie. what would be performance of Debian Trixie testing run under WSL on Win11
Traneptora
2023-12-05 02:51:46 im a little bit surprised by -fPIE instead of -fPIC
yurume
2023-12-06 08:41:53 out of curiosity: is there any non-libjxl encoder ever attempted?
Tirr
2023-12-06 08:45:05 [hydrium](https://github.com/Traneptora/hydrium) by <@853026420792360980>, and [zune-jpegxl](https://crates.io/crates/zune-jpegxl)
yurume
2023-12-06 08:48:26 oh wait, how I did miss hydrium after all
2023-12-06 08:48:36 I thought it is a decoder until right now
Jyrki Alakuijala
2023-12-06 11:17:54 libjxl-tiny could be considered -- and possibly the hardware efforts based on it
spider-mario
2023-12-06 03:32:37 PR which is now merged
afed
2023-12-06 04:07:07 was there any cmake changes for jpegli, to compile libjpeg-compatible dlls also for windows? https://discord.com/channels/794206087879852103/804324493420920833/1181260718016823369
spider-mario
2023-12-06 04:08:42 no specific effort to that end, but it should be easier to do now that libjxl at least builds again on windows
Traneptora
2023-12-06 11:22:57 Lynne contacted me and asked me to help her design JXL encapsulation in AVTransport, a transport and storage container she is working on (formerly QProto)
2023-12-06 11:23:31 The design goals include progressive decode and seek
2023-12-06 11:37:18 my proposal was basically: - ignore 18181-2, because Exif et.al. is already specified. only encalsulate codestresms - Define a Codestresm to be a header followed by one or more Frames - Define a Frame to be a FrameHeader followed by one or more DataSection - Each Header, FrameHeader, and DataSection is a Section - Each Packet MUST NOT cross Section boundaries. - Sections MUST NOT be reordered. - Sections SHOULD occur in their own packets. - Zero-size Sections SHOULD NOT not be packetized. - Container-level orientation fields MUST be zero. - If the image is not XYB encoded, container-level color data, if present, SHALL agree with the codestream. - If the image is XYB encoded, and the container-level color metadata does not agree with the codestream data, the codestream color data takes precedence. - A Frame is either Presented or Not Presented. A Presented Group contains zero or more complete Not Presented Frames followed by exactly one Presented Frame. - For an animated image, a Presented Frame is defined to have nonzero duration. For other images, a Presented Frame is type Regular or SkipProgressive. - Each Presented Group MUST occur in separate packets.
2023-12-06 11:40:08 Any other thoughts and siggestions?
2023-12-06 11:42:48 The container can tag presented frames as I or P, based on whether they backreference or not
2023-12-06 11:44:48 One tossup is jbrd
Quackdoc
2023-12-07 07:47:59 `cjxl -e 3 -d 1` vs `cjxl -e 3 -d 1 --faster_decoding=2` the speed is beccoming quite nice, it's a shame that `--faster_decoding=2` is the exact same as `--faster_decoding=4` https://cdn.discordapp.com/attachments/673202643916816384/1182221413357195276/image.png https://cdn.discordapp.com/attachments/673202643916816384/1182221413856313384/image.png https://cdn.discordapp.com/attachments/673202643916816384/1182221277776314398/image.png https://cdn.discordapp.com/attachments/673202643916816384/1182221278430634014/image.png
Traneptora
2023-12-07 05:56:13 does JBRD typically benefit from compression?
_wb_
2023-12-08 07:18:42 JBRD is already brotli compressed
2023-12-08 07:19:09 Which is why we don't allow it in a brob box — that would be pointless
2023-12-08 07:22:22 Since the JBRD can contain any unrecognized app marker content, which is often very compressible, we defined it so that JBRD is always Brotli compressed — the encoder can of course choose how much effort to spend on the brotli encoding
Traneptora
2023-12-08 02:37:49 can jbrd data be uncompressed
2023-12-08 02:38:03 I ask because AVTransport can compress packets with Zstd
2023-12-08 02:38:12 and I was wondering if it would make sense to disallow it for JBRD packets
veluca
2023-12-08 03:04:30 brotli can not-compress IIRC
Traneptora
2023-12-08 03:38:08 I guess it probably makes the most sense to not disallow Zstd compression and just add a footnote that says jbrd data is already brotli-compressed so Zstd is not recommended
2023-12-08 03:38:27 but not forbidden, as theoretically a sender could compress it with "not compressed" and then use the protocol-level Zstd
2023-12-08 04:09:59 Is a `jbrd` box permitted to occur after the codestream in a 18181-2 container file?
afed
2023-12-08 04:56:32 but brotli has better compression for this type of data or less deps is critical?
Traneptora
2023-12-08 04:57:55 I don't know, but it probably makes more sense to just not disallow it
2023-12-08 04:57:59 as it's more work for implementation
2023-12-08 04:58:11 most packets already aren't compressed, as most of the time it makes no sense
2023-12-08 04:58:16 it's mostly there for compressing subtitle packets
afed
2023-12-08 05:02:59 subtitles I think are also better compressed with brotli and isn't brotli support mandatory for jxl as standard or it's become optional?
2023-12-08 05:13:49 subtitles as text data, markup/tags, even subs as uncompressed images are very suitable for brotli (better than zstd)
Traneptora
2023-12-08 05:36:27 I'm referring to AVTransport
2023-12-08 05:36:39 it can optionally compress packets with Zstd
2023-12-08 05:36:52 subtitles are unrelated to how JXL is encasulated inside AVTransport
2023-12-08 05:37:01 but it's an example of why compressed packets are supported
afed
2023-12-08 06:02:34 i see, i used to compare brotli on typical subtitles and even brotli 5-6 was better than zstd 22 with 80x faster compression, decompression was slower, but for such speeds and sizes it doesn't matter but mostly what i see is that everyone is using zstd for some internal compression
lonjil
2023-12-08 06:41:17 does this have anything to do with Brotli having a built in dictionary, perhaps?
afed
2023-12-08 06:56:14 yeah, but also higher compression in general (but slower decompression) and on large data the dictionary has a negligible impact
Traneptora
2023-12-08 07:27:53 faster decompression actually matters
2023-12-08 07:28:07 it's the primary reason Arch switched from .pkg.tar.xz to .pkg.tar.zst
2023-12-08 07:29:19 when file sizes get large enough that the difference in file size is not negligible, the decompression speed will tend to matter a lot
2023-12-08 07:29:56 that being said the fixed dictionary of brotli def helps in that regard
spider-mario
2023-12-08 07:31:08 true, although xz decompression was quite slow, much more so than brotli
2023-12-08 07:31:37 brotli is quite fast to decompress
Traneptora
2023-12-08 07:31:57 in either case, I think for a transport protocol IMO it makes more sense to use a generic compression algorithm than a text-focused algorithm, like brotli
2023-12-08 07:32:04 Zstd is generic in that regard
spider-mario
2023-12-08 07:33:18 so is brotli, save for its dictionary
2023-12-08 07:33:25 reportedly, its original application was font compression
Traneptora
2023-12-08 07:34:47 hm. that's the other case where compressed packets likely will be used in avt, so I'll ask Lynne what she thinks
afed
2023-12-08 08:06:23 yeah, but brotli decompression is not as slow as lzma and it is also a generic compressor (inherently very similar to zstd and if given the same optimization would probably have even higher decompression speeds but slightly slower compression and also with the potential for better density)
Traneptora
2023-12-08 08:06:59 that being said she might care about certain requirements like "how lightweight an implementation must be"
2023-12-08 09:29:06 I ran the idea past lynne and she thinks it's a good idea. especially considering that browsers already support brotli anyway
afed
2023-12-08 09:37:04 just for jbrd or also for something else?
Traneptora
2023-12-08 09:37:16 no, for the avtransport compression
2023-12-08 09:37:33 compression is not defined specifically for jbrd packets, it's defined for any packet but is usually disabled
afed
2023-12-08 09:38:13 so it'll be possible to compress subtitles and such?
Traneptora
2023-12-08 09:42:29 subtitles, fonts, etc.
OkyDooky
2023-12-11 07:26:13 Anybody familiar with Android app development know how difficult it would be to add encoder/decoder support in a Flutter gallery app lile Aves? I looked at Flutter's relationship with JXL support a few months back and it was...not great, to say the least.
Quackdoc
2023-12-11 07:52:31 easy, take my media-kit fork which builds JXL rebase the simple patch to update it, build that into aves, take aves avif fallback support and add jxl to it
2023-12-11 07:53:05 aves just uses MPV for playback so its actually pretty easy, you do run into the standard size limitations, but 90% of jxl images should be compatible for now
2023-12-11 07:54:18 that or take jxl-oxide plumb that up to flutter since flutter integration with rust is really good,more effort, but much better for long run
_wb_
2023-12-11 08:22:15 Yes, there is no obligatory order.
Traneptora
2023-12-11 11:18:10 Ah okay good
OkyDooky
2023-12-11 07:32:50 Thank you, guys. <@184373105588699137> would you be willing to paste some of your info (like the link to your fork) into the issue tracker for JXL support in Aves? https://github.com/deckerst/aves/issues/56 I think it would be better than me dharing screenshots or trying to act as a go-between for people who know what they're talking about way more than I do.
Quackdoc
2023-12-11 07:39:36 done
OkyDooky
2023-12-12 02:47:58 Thanks, duck healer. I just got the notification from the thread. (<@184373105588699137>)
qdwang
2023-12-13 01:34:22 hi guys, if i want to use the latest libjxl(not cutting edge nightly version), should i build the `v0.9.x` branch? or the `v0.9-snapshot` tag?
jonnyawsom3
2023-12-14 11:56:58 Part of me did wonder, would it be possible to add a WASM decoder to this progressive loading demo? Or at least update the warning since Chrome has no support currently https://github.com/google/attention-center
diskorduser
2023-12-17 07:39:01 The latest libjxl is just 0.8.2
fab
2023-12-17 09:33:56 <@226977230121598977> 10:32am update improves Firefox nightly design
DZgas Ж
2023-12-17 09:42:10 fuck them, now i use Google chrome downloaded from the Google website
OkyDooky
2023-12-18 06:48:09 Cut your nose to spite their face. I like it. Lok (<@226977230121598977>)
DZgas Ж
2023-12-18 06:52:25 🥴✂️
Traneptora
2023-12-27 07:27:47 did -e10 get disabled?
2023-12-27 07:28:11 ``` JPEG XL encoder v0.10.0 26d32cab [AVX2] Invalid flag value for --effort: Valid range is {1, 2, ..., 9}. ```
veluca
2023-12-27 07:42:47 --allow_expert_options
Traneptora
2023-12-28 03:03:43 why should you need to pass --allow_expert_options
2023-12-28 03:03:52 they should still *work*
afed
2023-12-28 03:13:03 too slow for normal use, so that people make sure they really need it before using
Traneptora
2023-12-28 03:56:27 just feels weird that you need an "I'm sure" button
yurume
2023-12-28 03:57:04 but otherwise people will mindlessly put `-e 10` and conclude it's too slow
Traneptora
2023-12-28 03:57:17 I mean, it's not documented
2023-12-28 03:57:27 it says 1 though 9
2023-12-28 03:57:45 unless you use -h -h -h
2023-12-28 03:58:11 zstd has a similar --ultra command that enables 19 through 22
2023-12-28 03:58:20 and it's weird
yurume
2023-12-28 03:58:54 maybe then `e10` should be a non-numeral switch like `-e bruteforce=10`?
Traneptora
2023-12-28 03:58:59 contrast with xz which just says in the docs that it doesn't make sense to -9 everything, unlike gzip
2023-12-28 03:59:33 yea, or even -e bruteforce or -e placebo
yurume
2023-12-28 03:59:35 I have seen enough people just using `xz -9` and made everything needlessly slow, so I don't think xz makes a good precedent
Traneptora
2023-12-28 04:00:07 xz -9 tho tbf mostly makes the dictionary too large
2023-12-28 04:00:24 which is more an issue of memory, not cpu
Quackdoc
2023-12-28 04:06:11 yeah but lets be honest, how many people does this actually stop https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=dogelol&quality=lossless
2023-12-28 04:06:27 maybe im bias since I hang around the compression folk in general
2023-12-28 04:06:38 but its certainly not only once or twice ive seen it, ofc can just make e10 better :D
jonnyawsom3
2023-12-28 04:50:51 The main issue with e10 is using practically a GB of RAM per MP
qdwang
2023-12-28 05:16:18 Hi guys, is it possible to check the distance used for a converted JXL file?
Demiurge
2023-12-28 05:35:51 For a new image format trying to gain adoption, it's important it doesn't accidentally shoot early adopters in the foot in a way that leaves them unpleasantly surprised or leaves a weird taste in the mouth. Like handing out options like e10 to people who don't know how different it is from e9
yurume
2023-12-28 05:41:08 I think there is no such metadata recorded. in comparison you can guess the *effort* (`-e#`) based on features used.
monad
2023-12-28 07:12:24 I suggest `-e braindead` or change the permissive flag to `--allow_dumb_options`, perchance dissuading more people.
qdwang
2023-12-28 08:31:34 thank you. I'll have a try
w
2023-12-28 09:05:48 it shouldnt be under -e
Jim
2023-12-28 09:29:21 -eeeeeeeeeeeeeeeeeeeeeeeeeee is much better. Having to look up and get the exact number of e's would keep people from accidentally using it while preventing the need for --allow_expert_options <:kekw:808717074305122316>
veluca
2023-12-28 09:47:49 if it was produced by libjxl, you can reverse-engineer it from the bitstream
2023-12-28 09:47:54 it's a bit of a pain though
jonnyawsom3
2023-12-28 10:30:56 I was going to say, for an extremely rough idea if you have the original file too, you could run ssimulacra2 on it to get a quality value
Kejchi
2023-12-28 10:35:02 Hey, guys. Can you help me please? I want to apply lossless recompression to a jpeg file. I do "cjxl.exe file.jpeg file.jxl" and it works great. But I want to copy the attributes from the old file to the new file. The ones that are "Created, Modified, Accessed". I know for sure that irfanview knows how to save attributes, but it doesn't know how to recompress, only convert.
damian101
2023-12-28 10:44:13 I think those are filesystem attributes?
Kejchi
2023-12-28 10:44:35 Yes
RockPolish
2023-12-28 11:02:52 for the modified date in powershell you can do `(Get-Item file.jxl).LastWriteTime = (Get-Item file.jpeg).LastWriteTime`
Kejchi
2023-12-28 11:05:28 Thank you. Already thinking how to write a script that will take all the images, recompress them and change attributes.
2023-12-28 11:32:40 This is what I was able to write. Thanks again. `$files = Get-ChildItem -Path . -Filter "*.jp*g" -File foreach ($file in $files) { $name = $file.BaseName $jxl = "$name.jxl" & .\cjxl.exe $file $jxl $newFile = Get-Item -Path $jxl $newFile.CreationTime = $file.CreationTime $newFile.LastWriteTime = $file.LastWriteTime $newFile.LastAccessTime = $file.LastAccessTime } pause`
RockPolish
2023-12-28 11:34:28 looks good, glad to have helped
CrushedAsian255
2023-12-28 12:28:01 lol I use xz -9ek and just let it run overnight
2023-12-28 12:28:17 That is when I’m not using SquashFS
jonnyawsom3
2023-12-28 12:50:03 Since Jpeg recompression is so fast and efficient, you *could* set it to `-e 9` too for some extra savings, although it *will* slow down the process to a second for large images Also, smart idea to filter both jpg and jpeg extensions, I wouldn't have thought of that
Kejchi
2023-12-28 01:05:17 Does the effort parameter affect recompression?! Omg, I didn't know that. And if I try `--allow_expert_options`, can I put `-e 10`? I already rewrote a script for powershell 7 with parallel execution. `$files = Get-ChildItem -Path . -Filter "*.jp*g" -File $files | ForEach-Object -Parallel { $name = $_.BaseName $jxl = "$name.jxl" & .\cjxl.exe $_ $jxl $newFile = Get-Item -Path $jxl $newFile.CreationTime = $_.CreationTime $newFile.LastWriteTime = $_.LastWriteTime $newFile.LastAccessTime = $_.LastAccessTime } -ThrottleLimit 10`
jonnyawsom3
2023-12-28 01:06:30 ~~un~~fortunately `-e 10` is only for lossless encoding from pixels, and I'd highly discourage using it on jpegs even if it were possible due to their usual large dimensions
2023-12-28 01:09:25 I'd try a modest folder of images on both default and `-e 9` to see how much of a difference in size and speed it makes for you, it might not be worth it if you're converting everything, and you can always transcode back to the original jpeg, then run on max settings later
Kejchi
2023-12-28 01:12:05 We need testers with lots of free time 😅
jonnyawsom3
2023-12-28 01:47:07 Well, since it's *mostly* singlethreaded anyway, most could just run in the background
qdwang
2023-12-28 02:27:05 why the recommend quality range is 68 - 96? Is 96 a optimal value for quality and size? If i want a visual lossless quality, should I go for 96, 97, 98 or 99?
yoochan
2023-12-28 02:36:55 You should go for -d 1.0 (d for distance)
2023-12-28 02:37:28 Is your source jpeg or png?
_wb_
2023-12-28 03:47:18 q90/d1 is supposed to be visually lossless in normal viewing conditions. If you want to remain visually lossless when zooming in, or keep some margin for further editing, you can use a better quality, but for image delivery q90/d1 is more or less the best quality you'll need. Typically you can get away with d2-3 (q70-80).
jonnyawsom3
2023-12-28 03:54:30 d2-3 for web use, d1 for normal viewing, d0.3 for zooming/high quality is my rough guideline
qdwang
2023-12-28 03:58:52 souce is 14bit raw
Quackdoc
2023-12-28 04:07:51 i just always do 0.5 universally
qdwang
2023-12-28 04:32:36 Can I think **Butteraugli Distance** like this: * 1 is visually lossless for 100% zoom level viewing * 0.5 is visually lossless for 200% zoom level viewing * 0.25 is visually lossless for 400% zoom level viewing * 0.125 is visually lossless for 800% zoom level viewing
spider-mario
2023-12-28 04:40:33 I think this implies a stricter fit than we have gone for
lonjil
2023-12-28 04:42:46 What does 100% zoom mean in terms of pixels per degree, anyway?
spider-mario
2023-12-28 04:48:48 from what I remember, a viewing distance of ~900 pixels away from the screen
2023-12-28 04:50:25 so about 16 PPD
damian101
2023-12-28 05:05:05 when interpreted as sRGB transfer and displayed at 80 nits peak brightness...
qdwang
2023-12-28 06:05:18 It seems d0.5 can still have compression pattern on the photo when increasing the brightness of the shadow part.
veluca
2023-12-28 07:41:50 that's not entirely surprising - increasing the brightness is not something the encoder considers when deciding what artefacts are visibile
damian101
2023-12-28 08:00:01 jxl assumes 80 nits peak brightness and sRGB transfer curve
veluca
2023-12-28 08:25:26 > and sRGB transfer curve no it doesn't assume that 🙂
damian101
2023-12-28 08:29:18 it does, if no source metadata is present
2023-12-28 08:30:43 And it always targets 80 nits, even for transfer curves like PQ or HLG, unless that has been fixed (should be 10000 and 1000 respectively instead)
Quackdoc
2023-12-28 08:30:49 I wish jxl had cicp support which afaik it doesn't and will only save it as an ICC, this is what happens in the case of ffmpeg when encoding a video to a jxl sequence https://cdn.discordapp.com/attachments/587033245061873759/1189712501475127296/image.png?ex=659f291c&is=658cb41c&hm=d64dac483c1e5030d31aee63bbe447286e28c4d4a007054c4a15aebcf5ce2ea4&
damian101
2023-12-28 08:31:31 Yes
2023-12-28 08:31:43 also because I need my gamma 2.2 transfer
spider-mario
2023-12-28 08:32:14 it supports a subset of CICP
2023-12-28 08:33:17 and `cjxl` should definitely set intensity_target appropriately for PQ and HLG input; if it doesn’t, please file a bug with details
2023-12-28 08:34:04 hm, did we lose that code
Quackdoc
2023-12-28 08:37:06 all I know is that im glad my editor allows me to specify input format properly :D
damian101
2023-12-28 08:38:34 already reported it in <#848189884614705192> a while ago... https://discord.com/channels/794206087879852103/848189884614705192/1164541492510068777 https://discord.com/channels/794206087879852103/848189884614705192/1173651910167904296
2023-12-28 08:38:47 where are jxl bug reports filed?
2023-12-28 08:38:50 GitHub?
spider-mario
2023-12-28 08:45:24 yes
2023-12-28 08:45:28 I don’t seem to be encountering the issue
2023-12-28 08:45:48 ```shell $ tools/cjxl .../ClassE_507.png 507.jxl JPEG XL encoder v0.10.0 88671ac53 [AVX2,SSE4,SSE2] Encoding [VarDCT, d1.000, effort: 7] Compressed to 179.1 kB (1.406 bpp). 944 x 1080, 1.474 MP/s [1.47, 1.47], 1 reps, 32 threads. $ tools/jxlinfo 507.jxl JPEG XL image, 944x1080, lossy, 16-bit RGB intensity_target: 10000.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, Rec.2100 primaries, PQ transfer function, rendering intent: Relative ```
Demiurge
2023-12-29 01:07:27 libjxl and jpegli have, in my experience, very bad blurring and compression artifacts in dark images and in dark regions of images.
2023-12-29 01:10:03 Also cjpegli in particular tends to darken the entire image in my experience, compared to cjxl
damian101
2023-12-29 01:18:15 you can increase target-intensity to improve that...
Demiurge
2023-12-29 01:42:51 I used lagom.nl to make sure the contrast and gamma of my monitor are ok
2023-12-29 01:43:51 Has anyone noticed excessive blurriness in libjxl and jpegli, or is it only me?
2023-12-29 01:44:11 in dark regions I mean
damian101
2023-12-29 01:44:37 well, how bright is your monitor?
Demiurge
2023-12-29 01:44:58 Actually the brightness is turned down as low as I can.
2023-12-29 01:45:01 But it's still pretty bright.
2023-12-29 01:47:41 I always thought, that the whole point almost, when it comes to HDR, and HDR formats such as JPEG XR and JPEG XL, is highly detailed and textured shadows, that cause the image to really pop, almost like a 3d effect.
2023-12-29 01:48:08 JPEG XR, a much older format, does an excellent job at preserving detailed shadows.
2023-12-29 01:49:03 So it came as a surprise to me, to observe that JPEG XL seems to be just as terrible as regular old JPEG when it comes to sloppily blurring away and obliterating all of the detail in darker parts of the image.
damian101
2023-12-29 01:49:12 yes, I can't repeat with identical commands that I used back then
2023-12-29 01:49:19 has been fixed I guess
Demiurge
2023-12-29 01:50:13 while at the same time, even in the same image, the bright, high-contrast areas are preserved extremely well, while the low-contrast dark areas look like a heavily compressed mess
2023-12-29 01:50:45 destroying the "perceptual uniform quantization" ideal and claim
2023-12-29 01:51:56 as well as the idea of a "perceptual-based quality setting" and "no need to test quality settings for each image"
2023-12-29 01:53:09 It's an Achilles heel it looks like to me... or is it just the peculiarity of my monitor? Does anyone else notice this problem with dark regions?
damian101
2023-12-29 02:16:40 low-contrast areas area always an issue, with JPEG XL much less than with AVIF
Demiurge
2023-12-29 02:20:19 Yes, AVIF also tends to have this problem too, but not always. Sometimes, JPEG XL is even worse, at least when compared to rav1e. I should offer a demonstration with a good test image. Also, the ancient JPEG XR was known to be very good at preserving detail in dark areas.
damian101
2023-12-29 02:22:09 hmm, maybe you encode at lower quality than me...
Demiurge
2023-12-29 02:29:36 Well, I try to encode at -d 1 since that's what receives the most tuning.
2023-12-29 02:29:57 And it's supposed to be the threshold of transparency.
2023-12-29 02:35:35 wait, how interesting... The latest git version is not having a problem with it at all
2023-12-29 02:35:41 except jpegli
2023-12-29 02:36:50 jpegli is causing the dark parts of the image to get blacked out
2023-12-29 02:37:04 changing the colors of the entire image
2023-12-29 02:38:47 But only in XYB mode...
2023-12-29 02:38:56 Weird.
Traneptora
2023-12-29 02:39:22 the problem is that the video is untagged
2023-12-29 02:39:37 if the video is properly tagged then the encoder will forward it to libjxl
Demiurge
2023-12-29 02:41:01 I'm using https://en.wikipedia.org/wiki/File:Paris_Night.jpg as a test image and encoding with `cjpegli --chroma_subsampling=444 --xyb Paris_Night.jpg Paris_Night.xyb.jpg`
damian101
2023-12-29 02:41:07 only if you're watching on a dull sRGB screen
Demiurge
2023-12-29 02:42:32 Well, tuning the default quality settings of an HDR-focused format, with a dull sRGB screen as the intended default target, sounds like a silly proposition
2023-12-29 02:43:00 At least at first glance
damian101
2023-12-29 02:43:05 in that case it's different
2023-12-29 02:43:22 because PQ is an absolute transfer curve
2023-12-29 02:43:36 with brightness from 0-10'000 nits
2023-12-29 02:44:14 but behaviour for brightness higher than 300 nits is extrapolated
2023-12-29 02:44:19 from the testing data
Traneptora
2023-12-29 02:44:22 not quite, its brightness is from 0 to intensity target
2023-12-29 02:44:28 which is 10,000 by default if untagged
Demiurge
2023-12-29 02:44:32 Well in any case I notice that the latest version of libjxl seems to do really good on this image. (Aside from a bug in xyb jpegli that changes the look of the entire image.)
Traneptora
2023-12-29 02:44:37 the intensity target can be different from 10,000 tho
damian101
2023-12-29 02:44:46 it should never be anything else
Traneptora
2023-12-29 02:44:55 it can be tagged as something else
Demiurge
2023-12-29 02:45:09 Does anyone have any other good images to use as a test? Images that contain detailed dark regions? This image on wikipedia is not very good quality
Traneptora
2023-12-29 02:46:14 I use this one
Quackdoc
2023-12-29 03:00:11 I was testing HLG video tho hmmm
2023-12-29 03:00:54 also is intensity_target == 1.0 or to the brightest pixel in the image?
Demiurge
2023-12-29 03:01:05 Hmm...
2023-12-29 03:01:42 `cjxl -d 1` has significantly BETTER performance in dark regions now compared to when I tested v0.8
Traneptora
2023-12-29 03:01:52 if the video is tagged
2023-12-29 03:02:05 it *should* work
2023-12-29 03:02:15 what does the `ffmpeg -i input.mkv` line say?
Demiurge
2023-12-29 03:03:51 However cjpegli does this when `--xyb` is used...
Quackdoc
2023-12-29 03:05:37 I dont have the video on hand since it's on my linux boot, but it was a normal HLG recognized by MPV at least (well it was netflixes chimera modified to hlg but it worked fine)
Traneptora
2023-12-29 03:06:04 if it doesn't map it over, it's a bug
2023-12-29 03:06:11 HLG should be supported
Quackdoc
2023-12-29 03:06:16 hmmm, I just tested another HLG video and it did work fine indeed
2023-12-29 03:12:55 ill have to try manually specifying color_trc and color_primaries then
spider-mario
2023-12-29 08:25:56 it should if the peak luminance in the image is less than 10000
2023-12-29 08:25:59 it won’t affect cjxl’s interpretation of PQ when reading the image
damian101
2023-12-29 10:33:43 yes, but it can't be if it's SMPTE 2084 PQ
spider-mario
2023-12-29 10:33:55 it definitely can
2023-12-29 10:34:08 not every image will make use of the full 0-10000 range
2023-12-29 10:34:49 nor should they, given that there is hardly any monitor that can emit that
damian101
2023-12-29 10:34:50 doesn't matter
spider-mario
2023-12-29 10:35:01 it does, given that this is what intensity_target means
damian101
2023-12-29 10:35:45 no, intensity_target here refers to what brightness the peak of the transfer curve targets
spider-mario
2023-12-29 10:35:48 no
damian101
2023-12-29 10:35:52 yes
spider-mario
2023-12-29 10:36:02 it has this side effect for non-HDR transfer curves, but that’s not its purpose
2023-12-29 10:36:10 and if the transfer curve is PQ, it won’t affect that
damian101
2023-12-29 10:38:21 cjxl and jxl butteraugli interpret intensity_target always as the peak brightness of the transfer curve, including PQ it's the same with zlib and its nominal_luminance
spider-mario
2023-12-29 10:38:56 they don’t
2023-12-29 10:39:02 ```shell $ tools/cjxl --intensity_target=4000 507.png 507.jxl JPEG XL encoder v0.10.0 88671ac53 [AVX2,SSE4,SSE2] Encoding [VarDCT, d1.000, effort: 7] Compressed to 179.1 kB (1.406 bpp). 944 x 1080, 1.518 MP/s [1.52, 1.52], 1 reps, 32 threads. $ tools/cjxl --intensity_target=10000 507.png 507.jxl JPEG XL encoder v0.10.0 88671ac53 [AVX2,SSE4,SSE2] Encoding [VarDCT, d1.000, effort: 7] Compressed to 179.1 kB (1.406 bpp). 944 x 1080, 1.397 MP/s [1.40, 1.40], 1 reps, 32 threads. ```
2023-12-29 10:39:04 see, same size
damian101
2023-12-29 10:39:43 well, that's not how it was a couple months ago
spider-mario
2023-12-29 10:39:45 in your tests, are you sure the transfer curve is correctly communicated as being PQ?
damian101
2023-12-29 10:39:59 definitely
2023-12-29 10:40:15 what does jxlinfo say about the files?
spider-mario
2023-12-29 10:40:56 ```shell $ tools/jxlinfo 507-4000.jxl JPEG XL image, 944x1080, lossy, 16-bit RGB intensity_target: 4000.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, Rec.2100 primaries, PQ transfer function, rendering intent: Relative $ tools/jxlinfo 507-10000.jxl JPEG XL image, 944x1080, lossy, 16-bit RGB intensity_target: 10000.000000 nits min_nits: 0.000000 relative_to_max_display: 0 linear_below: 0.000000 Color space: RGB, D65, Rec.2100 primaries, PQ transfer function, rendering intent: Relative ```
damian101
2023-12-29 10:41:13 very interesting
2023-12-29 10:41:45 so it's basically become maxCLL metadata now
spider-mario
2023-12-29 10:41:47 ah, it’s possible that there was a bug in 0.8 about setting it to 10000 by default when it’s PQ
2023-12-29 10:41:55 it’s what it was meant to be all along
damian101
2023-12-29 10:42:40 unless it's used on HLG transfer function, where HLG transfer is probably adapted to intensity_targe I assume
2023-12-29 10:43:17 sadly I can't test jxl butteraugli because libjxl-metrics-git from the AUR doesn't build for me for some reason...
spider-mario
2023-12-29 10:43:56 right, for HLG, it determines the peak luminance to use for the OOTF when converting from HLG to XYB (where things will be absolute)
2023-12-29 10:44:04 and then back to HLG when decoding
2023-12-29 10:44:43 so, short of any bug, HLG images should roundtrip to the same signal (modulo quality)
2023-12-29 10:45:14 (as should PQ, except intensity_target won’t have an effect on quality there)
damian101
2023-12-29 10:45:48 do you know by any chance how HLG peak is supposed to be signaled in video?
2023-12-29 10:46:00 pretty sure it's not maxCLL
spider-mario
2023-12-29 10:46:09 it’s not supposed to be
2023-12-29 10:46:16 the HLG signal itself is independent from that
2023-12-29 10:46:34 it gets rendered to whatever peak the display is capable of
damian101
2023-12-29 10:46:42 wtf
2023-12-29 10:47:03 oh, this scene-referred nonsense mentality again 💀
spider-mario
2023-12-29 10:47:16 this is a nice video on HLG from one of its creators: https://youtu.be/XmZMyLOXB28
damian101
2023-12-29 10:47:36 I guess I'll always use 1'000 nits HLG then
jonnyawsom3
2023-12-29 04:40:20 If I had to guess, I'd say it would be from Jyrki's pixel based quality metric (I can't remember the right wording but they'll know what I mean)
Demiurge
2023-12-29 11:48:44 There's no such thing as a 10000 nits display afaik
Quackdoc
2023-12-29 11:51:35 I think there are a couple around but nothing consumer afaik only ces stuff
damian101
2023-12-30 12:10:38 I don't think so, highest I know of is 4000 nits, of which there exist a couple
2023-12-30 12:11:29 I mean, it would be possible for dual layer LCD, but only at the cost of extreme power consumption...
Quackdoc
2023-12-30 12:18:27 4000 would be something commercially for sale, there are higher ones that have been showcased but never made for purchase
2023-12-30 12:18:59 iirc ces 2018 had a 10k nit on display?
damian101
2023-12-30 12:19:33 is it an LED wall?
2023-12-30 12:20:26 wait, I was at CES 2018
Quackdoc
2023-12-30 12:20:28 I dunno do you have any idea how long ago 2018 was now xD
2023-12-30 12:20:42 https://www.forbes.com/sites/johnarcher/2018/01/11/why-sonys-8k-10000-nit-85-inch-tv-is-the-best-ive-ever-seen/?sh=95d57c427050
2023-12-30 12:20:43 ah found it
damian101
2023-12-30 12:21:27 yes, 10k nits is great for headlines
2023-12-30 12:21:54 but pretty useless outside of demo tech
2023-12-30 12:23:24 great for indirect lighting though, if you want to have sunlight in your room around the clock
2023-12-30 12:23:43 but there's definitely cheaper ways for that
Demiurge
2023-12-30 10:31:31 lol
jonnyawsom3
2023-12-30 11:29:34 I considered getting a HDR display last night, thought "Oh, well OLED shouldn't be that expensive nowadays..." £1K... Maybe it can wait a while longer
w
2023-12-30 11:34:36 just try it, get annoyed by dynamic brightness, and return it
jonnyawsom3
2023-12-30 11:37:15 To do that I'd need to find a grand in the first place
w
2023-12-30 11:37:24 credit card
jonnyawsom3
2023-12-30 11:37:41 Already in debt
2023-12-30 11:37:46 Oh the joys of England
w
2023-12-30 11:37:54 get a new credit card
2023-12-30 11:38:10 itll be fine if youre returning it anyway
jonnyawsom3
2023-12-30 11:38:10 Free money glitch
2023-12-30 11:39:43 Ironically I found out my phone is HDR the other day after 6 years of using it, it just never gets enabled unless it's a downloaded video or the Youtube app
w
2023-12-30 11:40:48 i'm still hdr hater
spider-mario
2023-12-30 12:12:57 I used to be a sceptic
2023-12-30 12:12:58 ``` 2018-09-12 21:06:31 spider-mario boh, ça sert juste à se faire éblouir la gueule, ça, non ? ```
2023-12-30 12:13:01 but I have warmed up to it
2023-12-30 12:13:59 (google translate’s rendition is not at all the intended meaning)
2023-12-30 12:14:17 (it’s using the figurative meaning of https://en.wiktionary.org/wiki/%C3%A9blouir, but I meant it literally)
Demiurge
2023-12-30 11:11:55 Why would anyone hate more detailed and less washed out images?
Traneptora
2023-12-30 11:15:01 what
2023-12-30 11:15:42 the reason w dislikes HDR is cause it often works poorly
2023-12-30 11:16:09 SDR content on HDR screens, or HDR content on SDR screens, always is an issue
2023-12-30 11:16:15 and will always be an issue
Quackdoc
2023-12-30 11:17:19 well SDR content on HDR screens isn't *that* bad, especially in comparison to the other way around
Traneptora
2023-12-30 11:18:06 well yes and no, because you need to assign an SDR blacklevel, whitelevel, and contrast ratio
2023-12-30 11:18:17 which is entirely subjective
2023-12-30 11:18:24 there's no correct way to do it
Quackdoc
2023-12-30 11:20:04 at the very least, it's not that hard to make it (almost) universally look fine and acceptable, unlike HDR
bonnibel
2023-12-30 11:32:20 i never enable hdr on my screen because basically everything is sdr except for some movies
jonnyawsom3
2023-12-30 11:33:13 That's how I went 6 years without encountering HDR on my phone
bonnibel
2023-12-30 11:33:18 so having it on 99% of the time is just an "make everything look slightly worse" button
lonjil
2023-12-30 11:34:25 I wonder how KDE's upcoming always-on HDR will do in that department
2023-12-30 11:34:46 They want SDR content to look as similar as possible to when you use SDR mode
bonnibel
2023-12-30 11:35:35 hopefully better than windows's hdr mode no matter how i tweaked it i always got grey whites or crushed blacks
lonjil
2023-12-30 11:38:23 did you see this? https://zamundaaa.github.io/wayland/2023/12/18/update-on-hdr-and-colormanagement-in-plasma.html
Quackdoc
2023-12-30 11:38:29 well considering they allow you to set color intensity and brightness, it should be a lot better
bonnibel
2023-12-30 11:41:16 > KWin now also uses gamma 2.2 instead of the sRGB piece-wise transfer function for sRGB applications, as that more closely matches what displays actually do in SDR mode my display has a toggle between bt1886 and 2.4....
2023-12-30 11:41:59 since they mentioned the steam deck i do wonder if thatll get updated to plasma 6 at some point
2023-12-30 11:42:17 ive also yet to figure out how to get 10 bit colour out of it </3
lonjil
2023-12-30 11:42:49 mine has "Blueish" "Neutral" "Reddish" "sRGB", whatever those mean
Quackdoc
2023-12-30 11:43:29 just remeber if its not calibrated dont trust it lel
Traneptora
2023-12-30 11:43:58 I have two monitors, both SDR, and neither of them look the same color-wise
2023-12-30 11:44:06 I've given up on trying to make it work
2023-12-30 11:44:27 since the primary monitor is significantly brighter I know it has a different white point and different black point so I feel like it's probably a lost cause
lonjil
2023-12-30 11:44:30 I have two monitors, and they look *reasonably* similar under Linux, but under Windows one of them is inexplicibly definitely completely wrong.
Traneptora
2023-12-30 11:44:43 I just use SDR for both and they're both SDR
2023-12-30 11:44:46 both look fine
2023-12-30 11:44:56 the right monitor is a bit redder and darker
2023-12-30 11:45:09 and I've given up trying to calibrate them, no point really IMO
2023-12-30 11:45:15 both have sRGB as their monitor profiles from the manufacturer's website
2023-12-30 11:45:26 like they're just sRGB profiles
Quackdoc
2023-12-30 11:46:28 yeah if you really want to have a calibrated monitor, eyeballing can only go so far, luckly if you live in a city, you can usually pay someone 20 bucks or so to borrow a calibration tool or find someone to actually calibrate it for you
Traneptora
2023-12-30 11:58:38 I lied
2023-12-30 11:58:42 ``` Tag #3 signature=“bTRC” offset=312 size=2060 type=“curv” Tag #4 signature=“gTRC” offset=312 size=2060 type=“curv” Tag #5 signature=“rTRC” offset=312 size=2060 type=“curv” ```
2023-12-30 11:58:44 woops
2023-12-30 11:58:51 looks like they're `curv` not `para`
lonjil
2023-12-31 12:00:37 the manual says that these are presets for the Red, Green, and Blue saturation sliders located under custom color options. Can't find any options or information about gamma...
Traneptora
2023-12-31 12:00:53 > Illuminant: X=0.96419, Y=1.00000, Z=0.82487 lmao looks like the PCS illuminant isn't D50
2023-12-31 12:00:54 that's hilarious
2023-12-31 12:00:58 wyd Acer
2023-12-31 12:01:37 it's the same as the wtpt tag which means the PCS illuminant is probably D65
2023-12-31 12:01:41 not sure what htat means
lonjil
2023-12-31 12:05:08 putting it into sRGB mode made all the colors brighter 🤔
kkourin
2023-12-31 12:08:18 I think that's D50?
Traneptora
2023-12-31 12:08:25 is it? libpng warns that it isn't
2023-12-31 12:08:51 oh yea, it is, hm
2023-12-31 12:09:42 then the monitor itself is tagged as D50, huh.
2023-12-31 12:10:27 I checked, this is D50
2023-12-31 12:10:28 > [0.9642, 1.0000, 0.8251]
kkourin
2023-12-31 12:11:50 epsilon = 0.0003 🙂
2023-12-31 12:37:46 So your monitor whitepoint is D50?
2023-12-31 12:38:26 I thought the factory settings are usually pretty blueis
Traneptora
2023-12-31 12:38:30 the ICC profile I got from my manufacturer's website is labeled as D65 in the description but it has wtpt as D50 in the icc
2023-12-31 12:38:38 which is odd
2023-12-31 12:38:59 it doesn't *look* like D50 tho
2023-12-31 12:39:02 so maybe I'm misreading it?
kkourin
2023-12-31 12:40:04 Wanna send over the profile? Is this Windows color management or something else?
2023-12-31 12:44:02 I guess if your monitor whitepoint is not really D50, but the profile says its D50, everything in a color managed setting that is doing chromatic adaptation would end up looking quite blue
2023-12-31 12:49:47 I guess the rendering intent would affect things as well....?
2023-12-31 12:55:51 As in, chromatic adaptation (and hence the destination profile's whitepoint tag) is only used in absolute colormetric rendering intent. Which is probably not selected in most scenarios?
w
2023-12-31 04:42:32 You can get these without "HDR". High bit depth and wide color gamut. The rest of hdr is brightness and contrast which your eyes adapt to so it's entirely subjective.
2023-12-31 04:44:33 it looks washed out because people will set the white level higher than normal, making darker "whites" look gray
Quackdoc
2023-12-31 04:45:03 "HDR" transfers are significantly better for images even in the "SDR" range since you get a lot more data where it matters in comparison to something like srgb
w
2023-12-31 04:45:55 yeah so just use a HDR transfer on a non HDR screen aka tonemapping and what HDR screens also do anyway, it looks exactly the same
2023-12-31 04:46:01 (I tried)
Quackdoc
2023-12-31 04:46:42 just get a good screen
2023-12-31 04:46:44 https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=dogelol&quality=lossless
w
2023-12-31 04:46:52 literally
2023-12-31 04:54:40 I realized HDR is just color management and tonemapping in hardware
Quackdoc
2023-12-31 05:02:10 HDR isn't even defined, the lowest common agreement for it is a transfer that can represent a lot of range
2023-12-31 05:02:17
w
2023-12-31 05:09:29 is there even an agreement
2023-12-31 05:09:51 with hlg and pq
Quackdoc
2023-12-31 05:14:22 well both achieve the lots of range part of the equation, but the true chad is scRGB, srgb primaries that can go negative, and a linear transfer, then just brute force it with 16bits or 32bits of data
Traneptora
2023-12-31 05:18:13 PQ is an absolute transfer
2023-12-31 05:18:18 whereas HLG is display-referred
2023-12-31 05:18:31 I don't really understand why you'd want display-referred HDR
2023-12-31 05:18:46 it's a standard ICC profile
2023-12-31 05:19:03
2023-12-31 05:19:11 it has the .icm file extension but it's an ordinary ICC profile
Quackdoc
2023-12-31 05:24:13 in theory HLG should be quite flexible as to how it's displays, and should be more flexible oob for displays to handle at various brightness?
2023-12-31 05:24:20 i forget, its been a while since i looked into it, but letting displays handle mapping is kinda dumb, srgb/gamma2.2 all over again
starbix
2023-12-31 09:29:51 where can I find more information about the hornuss transform? I haven‘t been able to find a paper
spider-mario
2023-12-31 09:39:09 you mean scene-referred (then you apply a display-dependent OOTF to get the display-referred output)
2023-12-31 09:39:55 PQ is the display-referred one, but where said display is a theoretical 10000-nit display
_wb_
2023-12-31 11:02:07 This is how it is defined, but that's not really a very intuitive description...
2023-12-31 11:03:41 <@179701849576833024> how would you describe this transform?
veluca
2023-12-31 11:07:42 Uhm
2023-12-31 11:07:46 That's a good question
2023-12-31 11:10:32 It tries to minimise the correlation between errors on pixels introduced by quantisation, while still storing the average of the 8x8 block
starbix
2023-12-31 11:11:13 oh ok interesting, seems like it was specifically developed for jxl?
veluca
2023-12-31 11:11:17 (it used to be called "identity", because it tried to behave the same as an identity, but without the DC)
2023-12-31 11:11:37 If by developed you mean hacked together 🤣
2023-12-31 11:11:55 Nowadays I'd probably try to do something more principled
starbix
2023-12-31 11:12:01 😂 lol i guess
2023-12-31 11:13:23 honestly I was just curious about it because of its name
veluca
2023-12-31 11:14:02 But it sort of achieves the result of being something you can use when you don't want to dct, without causing one pixel to accumulate massive error as you'd get by just storing DC and all pixels but one and recovering the missing one from that
2023-12-31 11:14:20 The name is all <@794205442175402004> IIRC 😁
starbix
2023-12-31 11:15:06 ooh I somehow didn‘t realise people here are actually core devs
_wb_
2023-12-31 11:16:50 The name was proposed by Jyrki. Originally we named it IDENTITY but we got a ballot comment complaining that this was a misleading name since it's not simply the no-op identity transform.
jonnyawsom3
2023-12-31 11:16:54 JXL fanatics and founders here
_wb_
2023-12-31 11:18:27 The name comes from https://en.m.wikipedia.org/wiki/Hornussen and this is a completely random and meaningless reference besides being something Swiss.
w
2023-12-31 11:19:13 amazing
jonnyawsom3
2023-12-31 11:19:38 Beautiful
starbix
2023-12-31 11:20:01 oh yeah, it looks super dangerous with the long wiggly bat. never played it myself tho
Tirr
2023-12-31 11:20:09 some-word-that-does-not-equal-to-identity
w
2023-12-31 11:20:39 should have named it after me
jonnyawsom3
2023-12-31 11:21:23 > 1.9.5 w > > w is w for the w of w x w which allows 8x8 wxw transformations
_wb_
2023-12-31 11:21:35 If we could redo it, I would call it the NI transform
2023-12-31 11:21:37 https://en.m.wikipedia.org/wiki/Knights_Who_Say_%22Ni!%22
2023-12-31 11:21:49 Which stands for Not Identity
jonnyawsom3
2023-12-31 11:21:59 Even better
2023-12-31 11:22:09 Maybe next version of the spec, eh? ;P
_wb_
2023-12-31 11:22:13 But Hornuss works too
kkourin
2023-12-31 11:44:09 The `chad` (chromatic adaptation) tag transforms D50 to D65
Traneptora
2023-12-31 11:48:43 ah, okay ty
Deleted User
2024-01-01 10:10:36 <@768090355546587137> <@179701849576833024> your shit sucks
2024-01-01 10:10:39 look at this GEG
2024-01-01 10:11:28 also
2024-01-01 10:11:31 there's not a reality where
2024-01-01 10:11:35 you'll actually be
2024-01-01 10:11:36 a real woman
jonnyawsom3
2024-01-01 10:18:25 What
2024-01-01 10:18:53 How'd you make/find that?
2024-01-01 10:20:33 Oh okay, they left immediately
2024-01-01 10:20:41 Interesting fellow
2024-01-01 10:21:21 Or banned I guess
Silikone
2024-01-02 12:11:16 >>>/g/
2024-01-02 12:14:38 That image came directly from a 4chan thread
2024-01-02 12:14:57 Go figure
190n
2024-01-02 01:36:09 https://tenor.com/view/packwatch-ripbozo-pitalonzo-alex-lafreniere-alex-iafreniere-gif-18890780
Silikone
2024-01-02 01:46:02 I encoded the entirety of Big Buck Bunny's source frames to lossless JXL. What's a good place to store them for free aside from shady and often banned sites like Mega?
Quackdoc
2024-01-02 02:45:20 depends on how large it is, I have a couple sequences on google drive
K
2024-01-02 06:42:53 Discord doesnt support jxl yet, any place to track that progress? The only one I found is: https://support.discord.com/hc/en-us/community/posts/1500001149681-JXL-Support
jonnyawsom3
2024-01-02 08:54:58 At minimum, when chrome does
Silikone
2024-01-02 09:04:24 18GB. Was 29
w
2024-01-02 09:16:27 on your own server