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

Traneptora
2023-05-02 10:57:51
to pad some zeroes
veluca
2023-05-02 10:58:23
naively, imagine that you have 2 sections total, and s2 takes 4 bytes in the TOC... then you cannot have your TOC+lfglobal section be exactly 17408+2+4 bytes: if you use a lfglobal of 17407, it's 2+4+17407, if you use a lfglobal of 17408, it's 3+4+17408
2023-05-02 10:58:30
i.e. size jumps by 2
Traneptora because I can always add crap to the frame header like Extensions
2023-05-02 10:58:44
oh that's a nice idea
veluca naively, imagine that you have 2 sections total, and s2 takes 4 bytes in the TOC... then you cannot have your TOC+lfglobal section be exactly 17408+2+4 bytes: if you use a lfglobal of 17407, it's 2+4+17407, if you use a lfglobal of 17408, it's 3+4+17408
2023-05-02 10:59:01
this is admittedly a contrieved example
Traneptora
2023-05-02 10:59:08
another idea is to use name
2023-05-02 10:59:11
instead
2023-05-02 10:59:13
and just put null bytes
2023-05-02 10:59:28
I think that's more future-proof as I don't have to use up one of the 63 extensions
veluca
2023-05-02 10:59:57
yeah I was thinking of figuring out what sizes could be problematic but this idea is better
Traneptora
2023-05-02 11:00:35
I just have to be a bit careful cause name_len is before a zero_pad_to_byte is invoked
veluca
2023-05-02 11:00:37
you can also decide to potentially add a couple of bytes of padding to the second section but I am not certain that's better
Traneptora
2023-05-02 11:00:53
I think that would require me to shift the second section downward if I need it, wouldn't it?
veluca
2023-05-02 11:00:57
we could also decide to standardize a padding extension πŸ˜›
2023-05-02 11:00:59
yep
Traneptora
2023-05-02 11:01:17
I think it's probably easier to utilize name if I need to
veluca
2023-05-02 11:01:41
probably not easier
2023-05-02 11:01:48
at least code-wise
Traneptora
2023-05-03 12:24:13
maybe
2023-05-03 12:24:36
if I was going to use a padding extension, which one should I use? bit 63 or bit 0?
_wb_
2023-05-03 05:19:51
With hindsight we should have done toc entries as U32 without offsets, that would have made things a lot easier
2023-05-03 05:22:50
As a padding extension, probably bit 62 would be best. Bit 0 might get an actual meaning some day. Bit 63 is the one we will use if we need more than 64 extensions to signal "more extension bits will come".
2023-05-03 05:23:40
Alternatively we could just define bit 0 to mean "no real extension, just padding"
2023-05-03 05:24:16
Since it looks like that would be a useful extension πŸ™‚
2023-05-03 05:32:47
So the issue with padding LfGlobal is that in a very unlucky case the padding would also make it need a 1-byte longer toc to store the padded size, but then the padding is no longer needed
2023-05-03 05:35:04
But can't this issue be circumvented by pre-padding it so it's not exactly at one of those problematic sizes where that could happen?
2023-05-03 05:37:42
Is there a way to write no-op toc permutations and do padding that way?
2023-05-03 06:34:01
Looks like permutations can be no-ops, they just need to signal `lehmer[i] = 0` for every `i` in the range, and that range has a signaled size `end`. Signaling those zeroes could be done with a fixed prefix code that takes 8 bits per symbol. I think that should allow you to do a variable amount of padding, using a no-op toc permutation of the size you need.
VcSaJen
The_Decryptor Found a forum post from 2010 asking for colour management support in Paint.NET, answer was only professionals needed it, seems that opinion is unchanged
2023-05-03 08:18:58
No, color profile support is coming for Paint.net
veluca
_wb_ Looks like permutations can be no-ops, they just need to signal `lehmer[i] = 0` for every `i` in the range, and that range has a signaled size `end`. Signaling those zeroes could be done with a fixed prefix code that takes 8 bits per symbol. I think that should allow you to do a variable amount of padding, using a no-op toc permutation of the size you need.
2023-05-03 01:03:30
Mhhhh well that won't work if you have a toc permutation though no?
_wb_
2023-05-03 01:13:33
No, though I guess if you only need to permute hf groups, you can still vary the amount of no-op lf groups, or be creative in how wasteful the prefix code choice is
2023-05-03 01:17:02
Oh, another much easier option: use the container format, make a `jxlp` for imageheader+frameheader+toc, then put in a bogus box with room for padding, then another `jxlp` for the actual data.
2023-05-03 01:18:20
no idea if isobmf already has a box type for "just ignore, this is padding", if not then I would propose to call it `padd` or something
veluca
_wb_ Oh, another much easier option: use the container format, make a `jxlp` for imageheader+frameheader+toc, then put in a bogus box with room for padding, then another `jxlp` for the actual data.
2023-05-03 02:35:02
Not sure how that will help
2023-05-03 02:35:21
Ah, ok, gotcha
_wb_
2023-05-03 02:43:55
you can also put a metadata box there (Exif or XMP), they probably don't mind having trailing padding (or in case of xmp, you can just add whitespace to the payload)
Traneptora
2023-05-03 02:48:20
I'd prefer to just write the codestream directly
2023-05-03 02:48:49
using bit=62 for padding will probably be what I'll do
_wb_
2023-05-03 03:04:30
the `jxlp` option has an overhead of ~60 bytes (if you otherwise wouldn't use the container format), but has the advantage that you can afterwards just concatenate the two `jxlp` boxes and get a clean codestream without extension padding (or whatever other hack to deal with the unknown toc size)
Traneptora
2023-05-03 03:41:46
so I would reserve a jxlp box worth of padding, essentially?
2023-05-03 03:42:40
which has a header size of 12 bytes
2023-05-03 03:43:16
and I'd write the TOC to that box
2023-05-03 03:43:38
however, if for some reason I need to grow LF Global slightly, I instead don't write the box header and make it part of the box before it, which extends LF Global by ~12 bytes, is that right?
2023-05-03 03:44:07
this gives me a lever of 12 bytes to turn on and off which I think is enough?
2023-05-03 04:09:20
1. I figured it out: allocate enough bytes for a max-size TOC. 2. Encode image. 3. Compute actual TOC, except LfGlobal. 4. For each possible size of the LfGlobal TOC entry, you get a range of sizes for LfGlobal. Pick the one that lines up. 5. If none of them line up, that's because increasing the signalled size of LfGlobal can make ToC one byte longer, which decreases the required signalled size. If this happens, insert a jxlp box to decrease the padding by 12 bytes. Then try again, and it should work this time.
2023-05-03 04:10:04
<@794205442175402004> is this the idea?
_wb_
2023-05-03 04:33:26
my idea was to do this: write `\0\0\0\0jxlp` [headers] [empty room for max-size toc + 8 bytes] `\0\0\0\0jxlp`[data] then when the actual toc offsets are known, you can write it where it should be and the two sizes of the `jxlp` boxes, and then you're left with a gap of at least 8 bytes, which you can fill with some dummy ignored box type of an appropriate size
2023-05-03 04:34:47
so the actual codestream remains 'clean', no fiddling with padding in LfGlobal or extensions or whatever
2023-05-03 04:35:09
the padding is done completely using the file format
Traneptora
2023-05-03 04:52:27
Does the spec of 18181-2 say to ignore unknown boxes?
_wb_
2023-05-03 05:18:47
It doesn't say anything about that, but that is the only sensible thing a decoder can do, no?
2023-05-03 05:19:17
Refusing to decode because there is some unknown box would be a bit much
2023-05-03 05:30:44
Perhaps we should make it explicit in the spec that the presence of unknown boxes doesn't invalidate a file, and that they should be ignored
Traneptora
_wb_ It doesn't say anything about that, but that is the only sensible thing a decoder can do, no?
2023-05-03 06:07:10
erroring out is also sensible if unknown boxes are UB
2023-05-03 06:07:41
but explicitly instructing them to be ignored also works
_wb_
2023-05-03 06:46:29
Erroring out would not be a very future-proof behavior. Showing a warning, maybe. Perhaps we should do something like PNG and let it depend on the case of the letters of the box type
Traneptora
2023-05-03 08:08:48
why would this line create an integer divide by zero?
2023-05-03 08:08:58
```c (*flushes)->state_flushes[(*flushes)->pos++] = (StateFlush){token_index, value}; ```
2023-05-03 08:09:12
does anyone know how this could cause a SIGFPE (integer divide by zero)
_wb_
2023-05-03 08:10:29
Could that be something aborting in a weird way?
Traneptora
2023-05-03 08:10:57
valgrind says integer divine by zero, that's why I ask
2023-05-03 08:13:44
AddressSanitizer says the same thing
_wb_
_wb_ Erroring out would not be a very future-proof behavior. Showing a warning, maybe. Perhaps we should do something like PNG and let it depend on the case of the letters of the box type
2023-05-03 08:26:08
For example: - first letter: capital=not critical, lowercase=critical (so Exif can be ignored since not critical but jxlc has to be understood) - second letter: capital=private (application defined), lowercase=public (part of the standardized spec) - third letter: always lowercase for now - fourth letter: uppercase=safe to copy (image editors can copy this box even if the image itself changed and they do not understand this box) So that's basically exactly like the png chunk naming convention except lowercase and uppercase are swapped (so we have `jxlc` while png has `IDAT` but both are critical public not-safe-to-copy chunks, and we have `Exif` while png has `eXIf` which should actually have been `eXIF` since Exif metadata is not really 'safe to copy': if the image changes, likely some of the Exif metadata should be updated too)
2023-05-03 08:34:12
And then we could define a `Padd` box for padding - which is probably a useful thing in some other use cases too when you need to reserve some space (say an authoring workflow where you want to have metadata in the beginning of large files but you want to reserve some room for it so the metadata can be edited without having to rewrite the entire file each time.
2023-05-03 08:35:54
We're not quite following that naming convention ourselves since everything except Exif is currently lowercase only, even though things like `xmp ` and `jxli` should probably be something else
2023-05-03 08:39:46
So basically then a decoder can ignore boxes that start with a capital letter, but not boxes that start with a lowercase letter.
2023-05-03 08:42:31
(and an editor that does anything more than modifying non-critical boxes should strip boxes it doesn't understand if they end with a lowercase letter but it is free to copy them blindly if they begin and end with a capital letter)
2023-05-03 08:45:42
So you could make something like `MYbX` ("my box") that is ignorable, privately defined, and safe to copy, and decoders will not complain and editors can keep it around if they want.
Fraetor
2023-05-03 11:23:20
The copying rules are probably the most useful bit of that scheme. For the optional vs required boxes, my view is that all required boxes must be understood by spec compliant implementations. If you want to add a new thing that isn't part of the old format, then either you need to have some kind of fallback so older decoders can still produce meaningful output, or you just need to make a new format.
2023-05-03 11:24:46
Otherwise we end up with TIFF again, where only a small subset is supported widely, and everything else is vendor specific.
2023-05-03 11:28:10
Extensibility is nice on paper, but unless your project is explicitly targeted at other people extending with no illusions of compatibility, then you can't ever use those extensions without breaking existng deployments.
2023-05-03 11:30:56
Or rather, the few places where it can work require a single common library thst everyone uses, which can be common for application specific formats, but not so for sharable media.
Traneptora
2023-05-03 11:48:19
so hydrium now uses a permuted TOC in order to prevent buffering as much
2023-05-03 11:49:13
but that apparently increased the file size pretty dramatically
2023-05-03 11:49:16
so I have to figure out why
2023-05-03 11:50:47
also, it's still using a lot of memory. like 44 MB, which is... a lot
2023-05-03 11:51:03
not really sure why
2023-05-04 12:18:49
okay, so now I have an interesting problem
2023-05-04 12:18:58
2023-05-04 12:19:01
consider the following JXL file
2023-05-04 12:19:09
djxl, ffmpeg, and mpv play it / read it fine
2023-05-04 12:19:39
without warnings, either.
2023-05-04 12:19:48
the GDK Pixbuf plugin fails to load it
2023-05-04 12:20:03
as does magick display
2023-05-04 12:20:43
this means Eye of Gnome, ImageMagick, and GIMP fail to read it
2023-05-04 12:20:48
all are based on libjxl, which is what's confusing
2023-05-04 12:21:16
jxlatte can decode it and doesn't whine, but it produces an image with the wrong colors (I suspect that's simply a jxlatte bug though)
2023-05-04 12:22:00
why would this be the case, where djxl/ffmpeg/mpv can read and display it, but the other plugins can't?
Tirr
2023-05-04 12:45:03
I'll try with jxl-oxide later today
Eugene Vert
2023-05-04 01:32:38
jxl-oxide decodes it without any errors
Traneptora
2023-05-04 04:52:35
interesting, perhaps a bug in the gdk pixbuf plugin?
Simulping
2023-05-04 07:06:47
great, I feel stupid
2023-05-04 07:06:55
I totally understand everything here 😊
_wb_
Traneptora but explicitly instructing them to be ignored also works
2023-05-04 07:10:07
actually the spec does say "Boxes with an unrecognized type shall be ignored and skipped by the decoder."
veluca
Traneptora this means Eye of Gnome, ImageMagick, and GIMP fail to read it
2023-05-04 07:31:36
this is somewhat concerning, can you open an issue?
Traneptora
veluca this is somewhat concerning, can you open an issue?
2023-05-04 01:05:35
https://github.com/libjxl/libjxl/issues/2456
_wb_ actually the spec does say "Boxes with an unrecognized type shall be ignored and skipped by the decoder."
2023-05-04 01:07:36
so it is explicit, good
derbergπŸ›˜
2023-05-05 11:10:06
It kinda hit me just now and I haven't found something about this after searching a while: what about blind users? Wouldn't it be awesome to have an image format that has alt text baked in? Like literally in the feature set so that platforms and tools actually take that into consideration when adding support. Else it would be a gimmick.
jonnyawsom3
2023-05-05 11:44:15
Technically it could be done by just adding an exif tag or such with the text inside. It's only recently I realised windows can read the bpp of an image if it had the metadata set
_wb_
2023-05-06 06:11:35
I think GPT-4 based screen readers that can just tell you what's in the image will be more likely to succeed than getting everyone to put alt text in their image metadata...
jonnyawsom3
2023-05-06 12:54:21
Good idea
MSLP
2023-05-06 01:26:21
I like the idea of human-embedded alt text - there are cases when an author/publisher wants to specify something that not necessarily would be the main thing recognized by an AI
_wb_
2023-05-06 01:28:37
Sure. But also: alt text depends not only on the image content itself, but also on the context.
derbergπŸ›˜
2023-05-06 02:22:48
I can hardly image a case in which context is really needed in the alt text. I know users with visual impairment that constantly tell people to only put in stuff in the alt text that is actually seen and that interpretation should be done in text outside of the alt text. After all, people that aren't visually impaired won't see the alt text but will get the context from what is outside the image + what they see in the image.
_wb_
2023-05-06 05:08:52
I mean, an image of a woman and a car could be all about the woman (e.g. it's a celebrity and the alt text would likely be something with her name in it, and nobody cares about what car model it is) or it could be all about the car, or it could be about both.
gb82
derbergπŸ›˜ I can hardly image a case in which context is really needed in the alt text. I know users with visual impairment that constantly tell people to only put in stuff in the alt text that is actually seen and that interpretation should be done in text outside of the alt text. After all, people that aren't visually impaired won't see the alt text but will get the context from what is outside the image + what they see in the image.
2023-05-08 06:39:04
Imagine you're on Mastodon & there's a pic of some celeb on their phone. User #1: "check out this celeb spotted in Vienna" `picture of celebrity on their phone in Vienna` User #2, same image: "check out this celebrity using a Google Pixel" `picture of celebrity using a Google Pixel in an urban area` this might also complicate things for AI descriptions. I've posted a couple image comparisons for shooting RAW on my phone on Mastodon, and I write the alt text to try and illustrate why (subjectively) the manually edited RAW photo is better than the processed one straight out of my camera app
2023-05-08 06:40:10
my description doesn't necessarily say anything intensely descriptive or specific about the image contents - albeit still while describing them - but tries to show why I prefer the manually edited RAW photo
2023-05-08 06:41:02
https://elk.zone/disobey.net/@gianni/110268018488481066
diskorduser
2023-05-08 01:13:58
Which pixel?
w
2023-05-08 05:32:34
looks like a 7 non pro
derbergπŸ›˜
gb82 Imagine you're on Mastodon & there's a pic of some celeb on their phone. User #1: "check out this celeb spotted in Vienna" `picture of celebrity on their phone in Vienna` User #2, same image: "check out this celebrity using a Google Pixel" `picture of celebrity using a Google Pixel in an urban area` this might also complicate things for AI descriptions. I've posted a couple image comparisons for shooting RAW on my phone on Mastodon, and I write the alt text to try and illustrate why (subjectively) the manually edited RAW photo is better than the processed one straight out of my camera app
2023-05-08 10:21:04
Okay, fair. User #1 might not even know the model of the phone. However, I think if an alt text feature was in an image format, users actually caring to add alt text to an image will _hopefully_ tend to think a bit longer what should go in there to give it a general, extensive description of what is visible. I would lean towards that the alt text might on average be better than alt text on the net, especially social media, in which context matters. Also let's say User #2 took the image from User #1 that put in "picture of celebrity on their phone in Vienna" as the alt text. But User #2 is too lazy to use the alt text function on social media. The platform could then just parse the alt text that User #1 put in initially. I would say alt text with a bit of missing information is still better than no alt text. But yeah, platforms that parse the alt text from the file should still give users the option to set their own alt text in case the parsed one really doesn't fit.
2023-05-08 10:30:47
Well, there is also a potential of misuse... That needs to be addressed in the society and can partially be addressed in the way software is designed that will allow saving alt text to the file. At least on social media I have rarely seen alt text misused.
w
2023-05-08 11:26:50
If the context is visual I don't think that is a useful example
2023-05-08 11:29:11
how do you describe these to someone who has never seen green 🟩 <:calibrate:930792680282259497>
zamfofex
2023-05-08 11:58:29
If the person is colorblind, you could describe it in terms of colors they know. Like, you could say the right one is brighter and more vibrant, whereas the left one is dimmer and darker, with examples using a pair of colors they can see.
w
2023-05-08 11:59:18
but if they dont know?
2023-05-08 11:59:51
even with context there are so many assumptions
2023-05-08 11:59:59
so imo just give up
2023-05-09 12:01:29
it's also not always going to work in language
zamfofex
2023-05-09 12:02:39
You can just use the description without the examples. I’d imagine even people who can’t see color are able to associate the ideas of brightness and saturation with certain concept or feelings that those colors might be meant to convey, just because they have heard other people talk about those ideas and concepts. Like, β€œbright” usually represents β€œlively”, and I think people who can’t see color would know that, even without fully understanding it, just because that’s how people talk about those colors.
w
2023-05-09 12:03:13
🟀 my fav one is is this brown or dark orange
zamfofex
2023-05-09 12:05:39
Though arguably, what you’d call a shade of a color vastly depends on the context the color is on. I remember a video from Tom Scott talking about this (and his hoodie), and there is also that one popular image with the cylinder on the checkerboard floor casting a shadow. Also see https://discord.com/channels/794206087879852103/824000991891554375/1097596416051916830
w
2023-05-09 12:09:32
having descriptions for images is useful, just that enforcing it often doesnt work/help
zamfofex
2023-05-09 12:13:51
Ah, I see what you mean. I feel like it’d be nicer to have a way to encourage it more actively, at least. Like, maybe show the input for it by default, with an explanation.
derbergπŸ›˜
w how do you describe these to someone who has never seen green 🟩 <:calibrate:930792680282259497>
2023-05-09 02:44:57
Color codes in worst case. But yeah, if they don't get a realistic concept from colors, they could still get numbers or might develop a understanding of when a term is used by people that see normally. Now I would actually like to get to know a young blind person cause I feel like I could learn a lot from them, lol.
BillyL’Bob✨
2023-05-09 03:12:34
hows JXL been going for the new
2023-05-09 03:12:58
release
_wb_
2023-05-10 07:41:49
looking quite good, current git jxl performs slightly better than the previous release (0.8), which was better than the release before that (0.7)
circa
2023-05-11 10:39:22
Hi everybody, is it biased to use ssimulacra2 to measure the quality of JPEG XL compression compared to other compressions ?
yoochan
2023-05-11 10:49:32
biased toward what ? john could answer better but if I understand well, ssimulacra2 is optimized to fit faithfully to subjective (human made) assesments
2023-05-11 10:50:21
as any automated tool, it is not perfect, jpegxl use butteraugli internally if I remember correctly
circa
2023-05-11 12:32:19
Ok thanks, i was wondering if ssimulacra2 was used at any point to optimise jpeg xl, which could favor it in comparisons with other codecs using this measure
_wb_
2023-05-11 01:10:13
libjxl was mostly optimized based on butteraugli, though recently ssimu2 was added to benchmark_xl so I don't know if currently <@532010383041363969> is looking at that or not β€” I assume he's still using butteraugli max/pnorm for tuning and only maybe looking at ssimu2 afterwards as a sanity check?
2023-05-11 01:11:40
internally libjxl uses butteraugli at e8+, at lower effort it doesn't really use any metric (but the heuristics were tuned mostly for bpp*pnorm)
circa
2023-05-11 01:50:00
Ok, I’m only using libjxl right now so it should be safe then, thank you πŸ™‚
Jyrki Alakuijala
_wb_ looking quite good, current git jxl performs slightly better than the previous release (0.8), which was better than the release before that (0.7)
2023-05-12 05:56:35
this is so promising
_wb_ libjxl was mostly optimized based on butteraugli, though recently ssimu2 was added to benchmark_xl so I don't know if currently <@532010383041363969> is looking at that or not β€” I assume he's still using butteraugli max/pnorm for tuning and only maybe looking at ssimu2 afterwards as a sanity check?
2023-05-12 05:57:45
I optimize on butteraugli, decide on my eyes -- if ssimulacra2 disagrees, I look three times again and attempt to doubt my eyes
2023-05-12 05:58:25
I feel bad when ssimulacra2 scores go lower, but don't gate on it (also I don't gate on lowering butteraugli scores when eyes tell that that is the right thing to do)
DZgas Π–
2023-05-14 12:58:57
well, it's been a few months, I think it's time to make comparisons of the last build and my current working build
2023-05-14 01:18:57
well, the most important problem has been solved. now pixels from blocks do not touch other blocks in any way
2023-05-14 01:24:09
But now I see a completely different kind of problem, which did not exist before, for some reason, colors appear that are not there. and they are of a wave nature -- to be more precise, it looks as if the color does not distribute completely. where it should be, color depressions and color hills appear. Instead of distributing the colors evenly across the block, the color for some reason gathers in one place, and does not reach another place
2023-05-14 01:25:32
there are noticeable points, or even "places" in which there is a depression of lack of color, and hills in which there are more colors than necessary
2023-05-14 01:28:10
I do not know how noticeable it is, but it has a periodic, next to each depression of color there is a hill of overabundance of color, it would seem that this color should fall like a wave into the depression of lack of color... but this is not happening
DZgas Π– well, it's been a few months, I think it's time to make comparisons of the last build and my current working build
2023-05-14 01:33:30
I have looked at each picture under a microscope, here is a new list of images that have noticeably worse look on the new version (future 0.9) than on the old one (0.8)
2023-05-14 01:34:58
it should be noted that the very first image still looks just awful on the new version. I also noticed that the file size increased by 1.5% with identical parameters
DZgas Π– But now I see a completely different kind of problem, which did not exist before, for some reason, colors appear that are not there. and they are of a wave nature -- to be more precise, it looks as if the color does not distribute completely. where it should be, color depressions and color hills appear. Instead of distributing the colors evenly across the block, the color for some reason gathers in one place, and does not reach another place
2023-05-14 01:38:16
2023-05-14 01:42:37
original | old | new
2023-05-14 01:47:33
there were also some problems with the RED, but it was not very noticeable, for example, if you switch the images, it will be noticeable...
2023-05-14 01:47:39
But I found another way to make it noticeable
2023-05-14 01:51:42
when I was making an image selection, in paintdotnet its blue selection filter is applied to the entire image, and then I saw.... I raised the color levels of all channels except RED and saw this original | old | new
2023-05-14 01:52:54
for some reason, colors that do not play a special role in the image, greatly spoil it, instead of being smoothed by compression as it works on the old version
2023-05-14 01:54:46
all tests on -e 9 -d 1
DZgas Π– I have looked at each picture under a microscope, here is a new list of images that have noticeably worse look on the new version (future 0.9) than on the old one (0.8)
2023-05-14 01:55:06
_wb_
2023-05-14 02:06:20
can you take a look at e7 too? I have the feeling that e9 is actually worse for lossy than e7 at the moment, due to not getting as much attention as default speed...
DZgas Π–
_wb_ can you take a look at e7 too? I have the feeling that e9 is actually worse for lossy than e7 at the moment, due to not getting as much attention as default speed...
2023-05-14 02:17:15
all the problems are completely identical. on all parameters from 5 to 9. By the way, now I can say that the problem is definitely not in the red channel, because after extracting it, I saw that it was the red color that worked almost perfectly. While all other colors behave terribly in the image where there is an overabundance of red. original | old | new 1. color correction 2. only red channel 3. all channels except red
Traneptora
2023-05-14 05:11:46
how'd you plot "all channels except red" in grayscale?
DZgas Π–
Traneptora how'd you plot "all channels except red" in grayscale?
2023-05-14 05:50:56
subtract RED , convert to black and white , increase brightness
jixiangluo
2023-05-15 02:37:04
color drift mostly happens in the area around the edge?
Traneptora
DZgas Π– subtract RED , convert to black and white , increase brightness
2023-05-15 04:47:57
subtract red from what
VcSaJen
2023-05-15 04:53:39
Just do the grayscale formula, only without the red . ( (0.3 * R) + (0.59 * G) + (0.11 * B) ). You'll need to normalize it so remaining coefficients add up to 1.0.
Traneptora
2023-05-15 05:39:20
I mean I know how one *could* do it I'm just asking dzgas how he *did* do it
DZgas Π–
Traneptora subtract red from what
2023-05-15 12:33:27
RGB
Traneptora
2023-05-15 12:42:50
.....
2023-05-15 12:42:54
RGB is three channels
VcSaJen
2023-05-15 02:08:52
He said that he replaced red channel with blackness, then grayscaled image, then increased value of every pixel by 33%.
Traneptora
2023-05-15 02:10:17
where did he say that
DZgas Π–
2023-05-15 03:03:11
πŸ₯΄
zamfofex
2023-05-15 10:13:16
It seems very clear to me: https://discord.com/channels/794206087879852103/794206170445119489/1107364440321556570 Just take away the red channel from RGB before converting to grayscale.
Little_mac
2023-05-18 01:51:25
Is jpegXL better for streaming video over what twitch and youtube are doing?
2023-05-18 01:51:54
Just very curious in terms of bandwith
diskorduser
2023-05-18 01:53:40
No
2023-05-18 01:53:57
It's not a video codec
Traneptora
2023-05-18 02:25:58
no, JPEG XL is for still images
zamfofex
Traneptora no, JPEG XL is for still images
2023-05-18 02:31:49
Under some definition of β€œstill image”, I’d say. πŸ˜…
BlueSwordM
Little_mac Is jpegXL better for streaming video over what twitch and youtube are doing?
2023-05-18 04:55:03
No, not at all.
190n
2023-05-18 06:21:34
jpeg xl supports animations, but each frame is compressed independently of the others. this means it will always have significantly worse compression than a video codec, since video codecs generally only compress the difference between nearby frames.
diskorduser
190n jpeg xl supports animations, but each frame is compressed independently of the others. this means it will always have significantly worse compression than a video codec, since video codecs generally only compress the difference between nearby frames.
2023-05-18 06:32:42
Does live streaming video use nearby frames for compression?
190n
2023-05-18 06:36:01
yes
2023-05-18 06:36:22
it can't be used as extensively as in VOD, but it is still used
2023-05-18 06:37:06
in VOD you can look ahead at subsequent frames for compression, in streaming you either need to maintain a buffer (and add latency) in order to look ahead, or you can't look ahead at all
Traneptora
Under some definition of β€œstill image”, I’d say. πŸ˜…
2023-05-18 06:51:49
it's really not intended for animation, that's basically there for feature parity with GIF tbh
2023-05-18 06:52:08
it's still recommended to use a real video codec for video
_wb_
2023-05-18 07:12:23
There are some basic inter-frame things in the jxl bitstream (cropped frames / blending / patches) but there currently isn't any encoder that even tries to use that for compressing animation better.
2023-05-18 07:15:46
It's not what it was designed for. For most video use cases I expect it to be a lot worse than actual video codecs even if you would make an encoder that makes more use of the bitstream potential.
2023-05-18 07:17:12
For some specific use cases it is probably quite good though. Like very high fidelity video, like in digital cinema, where they currently use intra-only j2k
Traneptora
2023-05-18 07:20:47
I noticed that `djpegli` inserts a `cICP` chunk instead of an `sRGB` chunk, even for sRGB output
2023-05-18 07:20:50
is there a reason for this?
2023-05-18 07:21:05
no fallback sRGB or iCCP either
spider-mario
2023-05-20 07:52:56
I vaguely remember noticing that and I thought maybe we had fixed it, but apparently not?
Sakaria
2023-05-20 12:44:10
Is PFM format supported by the ./cjxl and ./djxl tools currently? Tried to use the compressor to encode a PFM and got the following error(s) message Only JXL_BIT_DEPTH_FROM_PIXEL_FORMAT is implemented for float types. Invalid input bit depth Where can I change the bit depth setting, which seems to be the issue? I've looked in the encode.h file but it seems that the correct setting JXL_BIT_DEPTH_FROM_PIXEL_FORMAT was already selected.
Traneptora
Sakaria Is PFM format supported by the ./cjxl and ./djxl tools currently? Tried to use the compressor to encode a PFM and got the following error(s) message Only JXL_BIT_DEPTH_FROM_PIXEL_FORMAT is implemented for float types. Invalid input bit depth Where can I change the bit depth setting, which seems to be the issue? I've looked in the encode.h file but it seems that the correct setting JXL_BIT_DEPTH_FROM_PIXEL_FORMAT was already selected.
2023-05-20 01:27:47
it's supported in theory but there's a known bug that's been fixed in git main
2023-05-20 01:28:17
nvm it hasn't been fixed yet
2023-05-20 01:28:18
https://github.com/libjxl/libjxl/pull/2444
DZgas Π–
DZgas Π– https://github.com/tirr-c/jxl-oxide <:Thonk:805904896879493180>ο»Ώ <:Thonk:805904896879493180>ο»Ώ <:Thonk:805904896879493180>ο»Ώ <:Thonk:805904896879493180>ο»Ώ <:Thonk:805904896879493180>ο»Ώ <:Thonk:805904896879493180>
2023-05-21 01:22:29
<@206628065147748352> I know that you are creating a decoder for Jpeg XL, could you help me structurally disassemble some(any) JPEG XL file in order to schematically draw it by a data block
Tirr
DZgas Π– <@206628065147748352> I know that you are creating a decoder for Jpeg XL, could you help me structurally disassemble some(any) JPEG XL file in order to schematically draw it by a data block
2023-05-21 01:39:53
what do you mean by drawing by a data block? do you want to draw varblock borders, or split frame data itself into groups (LfGlobal, LfGroup, HfGlobal, PassGroup) and draw the result?
DZgas Π–
Tirr what do you mean by drawing by a data block? do you want to draw varblock borders, or split frame data itself into groups (LfGlobal, LfGroup, HfGlobal, PassGroup) and draw the result?
2023-05-21 01:41:00
like
2023-05-21 01:41:26
but to do this using some specific JPEG XL image and take into account the number of bytes per block
2023-05-21 01:42:00
i have one specific file
Tirr
2023-05-21 01:42:52
hmm well I guess it's doable with jxl-oxide (`jxl-frame`)
2023-05-21 01:43:13
`Toc` has group offset and size info
2023-05-21 01:44:29
if you can write Rust, you can use `jxl-oxide` crate, load frames (but not rendering them), then retrieve TOC from frame data and iterate over the group list
2023-05-21 01:45:07
I guess libjxl also provides frame TOC
2023-05-21 01:45:22
(I haven't used libjxl as an API though)
DZgas Π–
Tirr `Toc` has group offset and size info
2023-05-21 01:47:22
Toc is?
Tirr
2023-05-21 01:48:17
table of contents, it has how much size each group has
DZgas Π–
Tirr if you can write Rust, you can use `jxl-oxide` crate, load frames (but not rendering them), then retrieve TOC from frame data and iterate over the group list
2023-05-21 01:48:18
I'm not a programmer and I won't be able to use your software, but it would be nice if you clarified how to get the structural data of a jpeg XL file
Tirr I guess libjxl also provides frame TOC
2023-05-21 01:49:19
maybe
2023-05-21 01:50:15
Well, to be honest, so far I do not know what to do
Tirr
2023-05-21 01:50:36
afaik there isn't any ready-made tool that shows TOC information, so it would require at least some programming
DZgas Π–
2023-05-21 01:51:28
<:Thonk:805904896879493180> this is bad news.
Tirr
2023-05-21 01:51:33
decoding TOC needs entropy decoding, and it's complex computational work
DZgas Π–
2023-05-21 01:52:41
~~Perhaps I just need to find out on which byte or after which word this data goes and decode it manually~~
_wb_
Tirr decoding TOC needs entropy decoding, and it's complex computational work
2023-05-21 03:56:35
Shouldn't be too hard to make a verbose version of djxl or another decoder that just spits out the offsets
DZgas Π–
2023-05-21 09:14:31
in fact, it is sad that the 8-layer xl was not applicable for its intended purpose due to the use of too strong compression. it was necessary to modify the encoder so that it would create only 1 single layer. because when progressive decoding is included in this way, after loading 40% of the image - the image begins to update on this layer - just line by line in 256x256 blocks
spider-mario
Traneptora I noticed that `djpegli` inserts a `cICP` chunk instead of an `sRGB` chunk, even for sRGB output
2023-05-22 03:50:33
https://github.com/libjxl/libjxl/pull/2491 should fix this
Traneptora
spider-mario https://github.com/libjxl/libjxl/pull/2491 should fix this
2023-05-22 03:56:29
thanks, left some comments
2023-05-22 04:05:54
<@794205442175402004> with regard to PR #2444, it looks like it's blocked because of an unresolved conversation I created, but I don't believe I have the permissions to resolve it on github UI
2023-05-22 04:06:08
but consider it "resolved" for lack of the perms
_wb_
2023-05-22 04:26:37
ok, merged it
Traneptora
2023-05-22 06:00:41
yaaaay
TheBigBadBoy - π™Έπš›
_wb_ ok, merged it
2023-05-22 07:59:44
then this can be closed I think <:CatSmile:805382488293244929> https://github.com/libjxl/libjxl/issues/430
2023-05-22 08:37:23
thanks!
Demiurge
2023-05-25 12:56:09
Well that would be nice. I was honestly really surprised that the JXL tools could not read its own format as input.
2023-05-25 12:56:56
considering transcoding lossless-to-lossy is an extremely common and obvious usecase
OkyDooky
2023-05-25 01:21:46
I've heard some people pushing for JXL support in Blender, which makes a lot of sense. They're mostly looking at it as a replacement for OpenEXR and for rendering/compositing purposes, but I think it could be perfect for use in materials, where you have different texture/material maps for the same object. It would be convenient to store those in one compressed file than using .zips and such. This also could be useful for games for the same reason.
username
2023-05-25 01:22:15
support in blender would be perfect
OkyDooky
2023-05-25 01:23:19
But, regarding games, would features like the progressive decoding possibly improve texture streaming performance? I'm 100% that a custom decoder would be used in a game engine scenario, but would it maybe make a difference either way?
username
username support in blender would be perfect
2023-05-25 01:23:47
it seems like just a matter of someone writing a proper implementation since I don't see any reason why the blender foundation would decline if they where handed code on a plate
But, regarding games, would features like the progressive decoding possibly improve texture streaming performance? I'm 100% that a custom decoder would be used in a game engine scenario, but would it maybe make a difference either way?
2023-05-25 01:24:38
I have thought about texture streaming as a use however it doesn't seem practical at all due to how GPUs work
2023-05-25 01:24:53
it just wouldn't work
2023-05-25 01:25:11
and if you tried to force it to work it would be slow and use a bunch of resources along with quite a few other problems
OkyDooky
2023-05-25 01:26:05
?
2023-05-25 01:26:09
How so?
username
2023-05-25 01:28:31
how texture streaming usually works from my understanding is the textures on the disk are already in a format the GPU can understand and also have mipmaps and the texture streaming process itself just involves being smart with how the data is uploaded to the GPU and rendered by the game by loading in lower mip levels and streaming in the rest of the mips until you have the full texture(s)
2023-05-25 01:29:04
that fundamentally would not work with image format progressive or incremental decoding and would be very inefficient if you tried to make it work
2023-05-25 01:29:54
I do see a use case for textures being stored as JXL however progressive decoding would just not work
OkyDooky
2023-05-25 01:31:37
So, the issue is the use of a compression format? So, any game that just uses jpgs or pngs is basically having to convert them all to raw pixel data before actually using them and that's why just stream it from a format like JXL just wouldn't cut it?
username
2023-05-25 01:32:18
yep pretty much
OkyDooky
2023-05-25 01:32:55
Would it be possible to shift that load to the CPU, then?
2023-05-25 01:33:41
I mean, it might defeat the point, in terms of performance, but it might be worth looking at.
username
2023-05-25 01:34:58
the problem is you wouldn't be able to do anything useful with the progressive scans of a jpeg or jxl since they all end up being the resolution of the full image meaning they would take up the same size as raw pixels
2023-05-25 01:36:01
it would probably be a better idea to just decode the full image then upload it to the GPU once which is what game engines thet use image formats like png and jpeg do
2023-05-25 01:36:51
I like the idea of trying to make use of progressive decoding but sadly it's just not practical in this case
OkyDooky
2023-05-25 01:37:01
Hmmm.... maybe I've misunderstood (or just listened to people who misunderstood), but doesn't this feature also allow the dynamic creation creation of thumbnails? I've seen many people say that using JXL would eliminate the need for generating separate thumbnail files. Is that a different feature?
2023-05-25 01:38:34
My thinking was using a different approach to mipmaps and megatextures in basically one go with JXL. (<@245794734788837387>)
gb82
2023-05-25 01:38:35
https://cloudfour.com/thinks/on-container-queries-responsive-images-and-jpeg-xl/ isn't that related to this
username
Hmmm.... maybe I've misunderstood (or just listened to people who misunderstood), but doesn't this feature also allow the dynamic creation creation of thumbnails? I've seen many people say that using JXL would eliminate the need for generating separate thumbnail files. Is that a different feature?
2023-05-25 01:39:49
it's the same feature. I may be wrong but from my understanding the progressive loading does not produce images that are a lower resolution just a lower quality and the benefit is you can generate these without reading the whole file
2023-05-25 01:40:36
so if you have a 1024x1024 image and you progressively load it then it will still be 1024x1024 the whole time
2023-05-25 01:41:14
it will just ramp up in quality as more data is available to decode
2023-05-25 01:43:21
this ruins texture streaming because texture streaming works off of a texture having mipmaps inside of it which are just pre-generated lower resolutions of the texture
OkyDooky
2023-05-25 01:44:01
Hopefully its role in thumbnail generation can be cleared up. But, I get what you mean. Loading in small bits of the file's final "quality" allows for small amounts of data to be sent, but a GPU would still deal with the same number of pixels (unless other wizardry is introduced).
2023-05-25 01:45:46
That's what I was hoping to see "replaced." That it'd be easy(er?) to just pull in the same of pixels or LODs you'd need for a texture or material dynamically. (<@245794734788837387>)
2023-05-25 01:46:19
"Same?" Not sure what I was trying to type. Number, I think.
username
2023-05-25 01:49:54
the possibility of dynamic thumbnails that people talk about with JXL is just having a program with smart logic to save on bandwidth usage by only loading a percentage of a image's data and then stopping when it has enough data to display a progressive render
2023-05-25 01:51:40
say for example there is a website with a image gallery that has a lot of images you probably wouldn't want to load in the full data for each picture so it would only load enough to show a low quality preview then if a user wants to see the full quality image they just click on it and it loads the rest of the data
2023-05-25 01:52:38
and a benefit to this is a server would only have to store a single file for each image instead of storing both a thumbnail image and a full image
OkyDooky
2023-05-25 02:09:55
Ahh. So, it doesn't *decode* to a different size, but just gets *displayed* at one. So, the transforms are happening in the same ways and places as with any image and is not format-speciric.
2023-05-25 02:11:03
So, a thumbnail for a 4K or 8K image would still be *technically* 4 or 8K and would just be displayed smallishly in the browser (or app)?
username
2023-05-25 02:32:05
that's my understanding of it however I have been wrong about stuff in the past (like in the past when I thought that lossless AVIF could only be in YUV) so I could be wrong in some form with this however I'm pretty confident that's how it works
OkyDooky
2023-05-25 03:00:28
Well, don't take this the wrong way, but I kinda hope you're wrong about this. πŸ˜… But, this has been really enlightening. And it does confirm that JXL would be a good format for game development. Maybe someone could invent a "raw pixels" format that allows some kind of dynamic sampling, of there isn't (a good) one, already.
2023-05-25 03:05:53
I was getting kinda freaked out when you were talking about texture streaming and saying "that's just not how GPUs work," because I had just recently posted a proposal that involves real-time procedurally generated textures and geometry and I was like, "crap! Will it not work?? 😰" Here it is, if you don't mind me shilling it a bit\: https://forums.armory3d.org/t/endgame-features-procedurally-generated-and-real-time-streamed-geometry-and-textures/5259
Demiurge
2023-05-25 03:43:55
If anyone is familiar with any open source image viewers or image libraries that support ROI decoding or any other API that supports cropped/resized decoding, it would be interesting to see how existing APIs implement such features and to add similar functionality to libjxl
_wb_
username that's my understanding of it however I have been wrong about stuff in the past (like in the past when I thought that lossless AVIF could only be in YUV) so I could be wrong in some form with this however I'm pretty confident that's how it works
2023-05-25 05:05:37
It can be both. For 1:8 the data is actually at 1:8 and we have to upsample it β€” obviously we could also skip that upsampling step. For progressive passes corresponding to 1:2 and 1:4, the easiest thing is to just do the full IDCT where the missing coeffs are zeroes, but you could also implement a partial IDCT that only uses the coeffs that are available and produces a lower res image.
OkyDooky
2023-05-25 05:12:30
Agreed. I didn't know what "ROI" stood for here, so I searched up "ROI decoding" and got a few papers and a github page regarding region-of-interest decoding for Neuro-imagining scans. \:O (Here's the Github\: https\:&#47;&#47;github.com&#47;neurostuff&#47;NiMARE&#47;blob&#47;main&#47;docs&#47;decoding.rst) But, it sounds like that's what I was thinking of when describing mipmaps and megatextures. Maybe we could ping John Carmack, now that he's free from Zuckerborg's clutches, and ask him. \:D (<@1028567873007927297>)
jonnyawsom3
2023-05-25 07:48:28
Even just having lossless JXL replace PNG textures in games would save a lot storage and download time. Scrap Mechanic had a 50MB texture for the UI atlas, it went down to 25KB
veluca
Even just having lossless JXL replace PNG textures in games would save a lot storage and download time. Scrap Mechanic had a 50MB texture for the UI atlas, it went down to 25KB
2023-05-25 07:49:51
uhm, that sounds like absolutely awful PNG compression tbh
jonnyawsom3
2023-05-25 07:50:33
No doubt, but at least as a JXL you can't really mess it up
veluca
2023-05-25 07:51:21
I'd be surprised if -e1 does nearly as good of a job πŸ˜›
jonnyawsom3
username it seems like just a matter of someone writing a proper implementation since I don't see any reason why the blender foundation would decline if they where handed code on a plate
2023-05-25 07:52:13
Theoretically it could be made as an addon too, at least to start with. Eventually included with the other default addons, then implemented natively And as with games, even just having lossles JXL to save more storage would be good. Using layers for different map types is just a very nice bonus
veluca I'd be surprised if -e1 does nearly as good of a job πŸ˜›
2023-05-25 07:53:00
I'll check if I still have the game installed
Demiurge
2023-05-25 08:19:40
JXL would make a great replacement for PNG and JPEG, surely. Especially when we have better encoders that can match VP8L, or better lossy encoding (for both photographic and non-photographic).
2023-05-25 08:21:38
If it can also be useful in weird edgelord cases, like stereoscopic images or medical images, or other weird uses, then that's a nice bonus I guess but I have come to learn that you can't get too greedy.
2023-05-25 08:24:00
It would be nice if cropped/subsampled decode was more standardized and common. It would also be nice if there was a standard way for web browsers to request partial image downloads where appropriate for the screen size.
2023-05-25 08:24:52
And then re-use partially-downloaded data when downloading the full image after zooming in
jonnyawsom3
2023-05-25 08:49:15
Browsers already do that for video. Request a set of data then as you progress through it, cache the old set and download the next 5 seconds, ect
2023-05-25 09:17:19
So I don't have that 50MB UI texture, but I found another 25MB one... I think it's the first time I've seen e3 lossless almost double the size from e1 and e2
veluca
2023-05-25 09:23:00
that makes sense, it's pretty far from photographic πŸ˜›
jonnyawsom3
2023-05-25 09:32:28
Well, lossless isn't really made for photographic either, since it uses modular
veluca
2023-05-25 09:33:00
nah, e3 is pretty much made for photographic content
2023-05-25 09:33:14
well, lossless photographic content, but still
jonnyawsom3
2023-05-25 09:33:34
Huh, interesting
2023-05-25 09:33:37
If someone else has scrap mechanic installed and wants to try then the file is here, I'd rather not install it just to grab a file and delete it 10 seconds later `Data/Gui/Resolutions/3840x2160/Seat/gui_bearing_right.png`
Oleksii Matiash
Would it be possible to shift that load to the CPU, then?
2023-05-25 12:38:46
As far as I know main direction of current game development in terms of textures is to eliminate CPU from the path at all. DirectStorage is aimed to do this, and I doubt GPU can decode JXL without CPU help. Correct me if I'm wrong in the last thought, please
jonnyawsom3
2023-05-25 12:49:36
Depends if hardware JXL decoders become commonplace, and I'll add DirectStorage is still rarely used if at all
Oleksii Matiash
2023-05-25 04:46:08
It is used, first game using it came out this january, and I believe it will become much more widespread in few years
jonnyawsom3
2023-05-25 06:27:28
Huh, so you're right. Just gotta hope everyone switches to NVME drives and Windows 11 then :P
w
2023-05-25 06:28:30
hardware jxl on desktop will never happen like hardware any image format
2023-05-25 06:29:13
at the most, for ai like jpeg
afed
2023-05-25 06:29:21
https://www.theverge.com/2023/4/21/23692423/microsoft-directstorage-2-1-hdd-support-game-load-speed-times
jonnyawsom3
2023-05-25 06:32:33
Well, now they're just trying to prove me wrong at every turn
w hardware jxl on desktop will never happen like hardware any image format
2023-05-25 06:37:22
Ahh right, I saw about nvJpeg but missed that it was A100 only <https://docs.nvidia.com/cuda/nvjpeg/index.html>
OkyDooky
2023-05-25 10:25:25
Regading different maps on different layers, does JXL support per-layer compression settings? That could enable more savings without sacrificing desired quality. (<@238552565619359744>)
jonnyawsom3
2023-05-25 10:27:20
It supports per channel settings at least, namely for separate alpha quality. So it could probably be done
2023-05-25 10:27:43
Worst case, generate them separately then merge into layered
OkyDooky
2023-05-25 10:30:27
Cool. That could work.
DZgas Π–
DZgas Π– all the problems are completely identical. on all parameters from 5 to 9. By the way, now I can say that the problem is definitely not in the red channel, because after extracting it, I saw that it was the red color that worked almost perfectly. While all other colors behave terribly in the image where there is an overabundance of red. original | old | new 1. color correction 2. only red channel 3. all channels except red
2023-05-27 07:31:24
<@532010383041363969> Tell something?
prick
2023-05-27 04:04:12
Hello, I'm working on (re) embedding JXL into an image viewer. I was wondering if its possible to build only libjxl_dec/libjxl_threads from a CMake-only interface to emulate the existing behavior with the MSBuild system only including the decoder. Thanks
2023-05-27 04:04:57
The MSBuild interface uses `/t:jxl_dec /t:jxl_threads`, and I am unsure how to do that in CMake
Traneptora
2023-05-28 03:57:08
seems to be a memory leak in djxl
2023-05-28 03:57:45
lemme reproduce it in valgrind and put up a bug report
2023-05-28 04:23:49
https://github.com/libjxl/libjxl/issues/2509
elfeΓ―n
2023-05-29 06:17:30
Both `h_div8` and `height` depend on `div8`, so they overlap in the bitstream. However, `height` appears to depend on `h_div8`. Is this a mistake?
2023-05-29 06:19:37
oh wait I see- if `!div8` then parse height as being that.
2023-05-29 06:19:42
I see
_wb_
2023-05-29 06:45:18
It's a shortcut to define height either directly or via h_div8 and a default
elfeΓ―n
2023-05-29 07:54:12
yep yep
2023-05-29 07:54:25
I'mma keep using this channel because I have a TON of questions.
2023-05-29 07:59:33
What does `<bool> and <u(3)>` mean? Is it like a `bit and` but with only one bit?
2023-05-29 08:07:20
sorry, I am a very literal person πŸ˜…
2023-05-29 08:07:56
*when it comes to interpretation
2023-05-29 08:18:00
chatgpt says to treat nonzero as true and 0 as false
veluca
2023-05-29 08:19:07
ah, that's actually very fair, `!ratio` ougth to be `ratio != 0`
2023-05-29 08:19:14
<@794205442175402004>
elfeΓ―n
2023-05-29 08:28:58
O: w00t w00t
2023-05-29 08:34:19
that makes sense, thank you
2023-05-29 09:38:58
Also, if it's reading only 5 bits for dimensions that are both divisible by 8, then is the maximum resolution that can be minimally stored this way `32x32`?
veluca
2023-05-29 11:06:26
no, 256x256
2023-05-29 11:06:48
has to be a multiple of 8 πŸ™‚
elfeΓ―n
2023-05-29 11:20:01
ohhh right
_wb_
veluca ah, that's actually very fair, `!ratio` ougth to be `ratio != 0`
2023-05-30 06:13:48
Oops!
2023-05-30 06:16:08
No, it's correct as it is, isn't it? Or maybe make it `ratio == 0` to be more explicit
Tirr
2023-05-30 06:25:02
`ratio` decides the width if it's nonzero, so `ratio == 0` is correct, yes
veluca
2023-05-30 07:24:56
Ah yeah, I got a sign wrong as usual πŸ˜› I meant to just change the style of the comparison not the meaning
elfeΓ―n
veluca Ah yeah, I got a sign wrong as usual πŸ˜› I meant to just change the style of the comparison not the meaning
2023-05-30 07:28:10
it's ok- i understood it
2023-05-30 07:28:28
Am writing encoder :3
2023-05-30 07:28:42
first attempt so far is... not great
2023-05-30 07:28:55
unsure how to organise it
Traneptora
2023-05-30 12:03:28
I'd suggest writing a decoder first
2023-05-30 12:04:12
it gives you a stronger understanding of the bitstream
elfeΓ―n
2023-05-30 03:32:33
but i need encoder
zamfofex
2023-05-30 04:58:20
What do you need it for, and why can’t you use an existing one?
elfeΓ―n
2023-05-30 04:59:49
my hobby project
2023-05-30 05:00:31
and because funsies
gb82
2023-05-30 10:11:56
Is JXL.js still the best way to decode jxl images with wasm
elfeΓ―n
What do you need it for, and why can’t you use an existing one?
2023-05-30 11:47:16
i give up lol
yoochan
gb82 Is JXL.js still the best way to decode jxl images with wasm
2023-05-31 09:31:31
I was looking on a way to update jxl.js based on the last release of libjxl, niutech did its last update 5 month ago
Traneptora
2023-06-02 02:48:07
for lossless JXL is there a reason Squeeze isn't used? iirc it can be lossless. or does it just not really save you anything
2023-06-02 03:11:34
``` ==37872== Memcheck, a memory error detector ==37872== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al. ==37872== Using Valgrind-3.21.0 and LibVEX; rerun with -h for copyright info ==37872== Command: ./ffmpeg_g -i ../newton-cradle.jxl -f null - ==37872== ffmpeg version N-110977-g5199c71ca9 Copyright (c) 2000-2023 the FFmpeg developers built with gcc 13.1.1 (GCC) 20230429 configuration: --enable-libjxl --enable-lcms2 --disable-stripping --disable-doc --assert-level=2 --enable-libplacebo libavutil 58. 12.100 / 58. 12.100 libavcodec 60. 16.101 / 60. 16.101 libavformat 60. 6.100 / 60. 6.100 libavdevice 60. 2.100 / 60. 2.100 libavfilter 9. 8.101 / 9. 8.101 libswscale 7. 3.100 / 7. 3.100 libswresample 4. 11.100 / 4. 11.100 Input #0, jpegxl_anim, from '../newton-cradle.jxl': Duration: N/A, bitrate: N/A Stream #0:0: Video: jpegxl, rgba(pc, gbr/bt709/iec61966-2-1), 480x360, 100 tbr, 100 tbn Stream mapping: Stream #0:0 -> #0:0 (jpegxl (libjxl) -> wrapped_avframe (native)) Press [q] to stop, [?] for help Output #0, null, to 'pipe:': Metadata: encoder : Lavf60.6.100 Stream #0:0: Video: wrapped_avframe, rgba(pc, gbr/bt709/iec61966-2-1, progressive), 480x360, q=2-31, 200 kb/s, 100 fps, 100 tbn Metadata: encoder : Lavc60.16.101 wrapped_avframe [out#0/null @ 0x76f28c0] video:17kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown frame= 36 fps=7.6 q=-0.0 Lsize=N/A time=00:00:00.80 bitrate=N/A speed=0.169x ==37872== ==37872== HEAP SUMMARY: ==37872== in use at exit: 0 bytes in 0 blocks ==37872== total heap usage: 67,576 allocs, 67,576 frees, 442,657,629 bytes allocated ==37872== ==37872== All heap blocks were freed -- no leaks are possible ==37872== ==37872== For lists of detected and suppressed errors, rerun with: -s ==37872== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) ```
2023-06-02 03:11:38
Merge hopefully very soon :D
_wb_
Traneptora for lossless JXL is there a reason Squeeze isn't used? iirc it can be lossless. or does it just not really save you anything
2023-06-02 03:50:11
it can be lossless, but for nonphoto it tends to be counterproductive and even for photo it rarely gives a compression advantage, at least not one that is worth the slowdown of doing an extra transform
2023-06-02 03:50:58
so it's more useful when used in a somewhat lossy way
Traneptora
2023-06-02 03:51:19
it reminds me of those hybrid codecs which put a lossy image first
2023-06-02 03:51:25
followed by the difference between the OG and the lossy
2023-06-02 03:51:39
so it's both progressively loadable as lossy and fully loadable as lossless
2023-06-02 03:51:48
but I found that losslessly compressing the residuals basically saved you nothing
2023-06-02 03:51:53
sounds kinda like that
spider-mario
2023-06-02 03:53:54
in audio, WavPack supports something like that
Traneptora
2023-06-02 03:54:05
might be better for audio
2023-06-02 03:54:08
DTS does it too iirc
_wb_
2023-06-02 03:55:57
another thing is that the encoder hasn't been tuned at all for lossless squeeze. It's likely making poor choices of predictors etc when doing this
2023-06-02 04:01:00
the only real advantage of squeeze is that it gives you progressive previews, but in case of lossless you probably better just add some lossy downscaled preview frame and call it a day
Traneptora
2023-06-02 04:01:20
makes sense
2023-06-02 04:01:34
is there a way to make libjxl generate a preview frame atm
2023-06-02 04:01:41
i.e. are there any tools to do that
_wb_
2023-06-02 04:02:15
I don't think so, actually we should probably do that if only to make sure that it properly works
jonnyawsom3
2023-06-02 04:06:18
Would help a lot with the massively slow progressive lossless images currently
_wb_
2023-06-02 04:09:04
anyway, what I think is the main use for Squeeze is things like d0.03 - d0.1 encoding, i.e. just a tiny bit lossy. In that range I think it can give better compression than VarDCT (and probably also better guarantees regarding generation loss and peak errors). Not sure if there are many use cases for that though...
Traneptora
2023-06-02 04:10:43
hm, interesting to try comparing
_wb_
2023-06-02 04:11:50
you can try `-d 0` vs `-d 0.05` vs `-d 0.05 -m 1` to see if it makes sense on your images
Traneptora
2023-06-02 04:13:35
interesting, testing `distance=0.1` and `effort=9` yields a 557k modular image and a 667k VarDCT image
_wb_
2023-06-02 04:14:11
they might not have the same quality though
Traneptora
2023-06-02 04:14:19
ssimulacra2 reports 96.something for both
2023-06-02 04:14:21
I checked that
2023-06-02 04:15:01
however, effort=7 created a smaller file with VarDCT than effort=9
2023-06-02 04:15:10
with similar ssimulacra2 score
2023-06-02 04:15:11
interesting
_wb_
2023-06-02 04:16:07
d0.1 is probably where vardct generally already starts to make more sense than lossy modular
Traneptora
2023-06-02 04:16:23
lossy modular is still better file sizes with ~96 ssimulacra2
2023-06-02 04:16:31
what I find interesting is that VarDCT performs better on e7
2023-06-02 04:16:34
than it does on e9
2023-06-02 04:16:42
I feel like that kind of nonmonotonicity shouldn't be a thing
2023-06-02 04:17:13
should I open an issue about that?
_wb_
2023-06-02 04:17:47
probably because at e8+ it really tries hard to hit that distance target, which is probably wasting lots of bits when the target is that high quality
2023-06-02 04:18:18
remember, in vardct mode the image you get is different depending on effort setting
2023-06-02 04:18:36
in modular mode, the effort only affects the compression density, not the image itself
Traneptora
2023-06-02 04:18:38
yea, I'm aware
2023-06-02 04:18:52
butteraugli_main reports 0.187 for e7 and 0.135 for e9
2023-06-02 04:19:02
so it's a higher file size but it's more accurately hitting the butteraugli target
2023-06-02 04:19:13
however, ssimulacra2 is reporting 96.5ish for both
2023-06-02 04:20:03
``` $ cjxl -d 0.1 -e 7 orig.png e7.jxl JPEG XL encoder v0.9.0 e35880c4 [AVX2] Read 1080x720 image, 1281685 bytes, 103.2 MP/s Encoding [VarDCT, d0.100, effort: 7], Compressed to 627161 bytes (6.452 bpp). 1080 x 720, 4.23 MP/s [4.23, 4.23], 1 reps, 4 threads. $ cjxl -d 0.1 -e 9 orig.png e9.jxl JPEG XL encoder v0.9.0 e35880c4 [AVX2] Read 1080x720 image, 1281685 bytes, 100.9 MP/s Encoding [VarDCT, d0.100, effort: 9], Compressed to 682412 bytes (7.021 bpp). 1080 x 720, 0.26 MP/s [0.26, 0.26], 1 reps, 4 threads. $ ll e7.jxl e9.jxl -rw-r--r-- 1 leo leo 613K Jun 2 12:17 e7.jxl -rw-r--r-- 1 leo leo 667K Jun 2 12:17 e9.jxl $ ssimulacra2 orig.png e7.jxl 96.61789607 $ ssimulacra2 orig.png e9.jxl 96.77498696 $ butteraugli_main orig.png e7.jxl 0.1870112866 3-norm: 0.086522 $ butteraugli_main orig.png e9.jxl 0.1348828226 3-norm: 0.072864 ```
_wb_
2023-06-02 04:20:04
ssimulacra2 is less picky than butteraugli maxnorm
Traneptora
2023-06-02 04:20:15
at least for high qualities, right?
_wb_
2023-06-02 04:20:41
well butteraugli maxnorm is not a very useful metric at all for low qualities
Traneptora
2023-06-02 04:21:01
but yea because libjxl targets butteraugli I prefer to measure the output with an unrelated metric
_wb_
2023-06-02 04:21:46
does look like ssim2 also gives the e9 one a slightly higher score, just a less dramatic difference
Traneptora
2023-06-02 04:26:52
I wonder how lossy modular compares for non-photographic content
2023-06-02 04:26:56
and very low distances
2023-06-02 04:26:59
to VarDCT
_wb_
2023-06-02 04:40:28
I expect lossy delta-palette to be the most useful thing for that, but that still needs work
2023-06-02 04:41:17
meanwhile, I gave the lossless palette some attention, seems to be useful for recompressing png8 stuff: https://github.com/libjxl/libjxl/pull/2523
2023-06-02 04:42:21
productive day today for me to make lossless jxl slightly better πŸ™‚
Traneptora
2023-06-02 04:42:22
just tested a specific sample, I found that Modular outperformed VarDCT in filesize at effort=7 with distance=0.05, it approximately tied at distance=0.1, and lost to VarDCT at distance=0.2. In all three cases, ssimulacra2 reported very similar scores
_wb_ productive day today for me to make lossless jxl slightly better πŸ™‚
2023-06-02 04:42:59
sometimes I feel productive because I threatened to merge a patch if nobody reviews it on the FFmpeg ML πŸ˜…
2023-06-02 04:43:24
I'm half-kidding but I sent animated JPEGXL demuxing support to the ML in march
monad
2023-06-03 03:07:13
someone touched lossless πŸ‘€
prick
2023-06-04 02:05:57
that memory leak bug is funny
2023-06-04 02:06:12
linux killed it not me
_wb_
2023-06-04 07:29:06
It still performs badly after that PR?
Traneptora
2023-06-04 03:26:23
Interesting, git master ssimulacra2 reports "failed to decode image" for a jpeg created by jpegli
2023-06-04 03:26:29
but reports a score of 89.something anyway
2023-06-04 03:26:37
same with butteraugli_main
2023-06-04 03:39:19
https://github.com/libjxl/libjxl/issues/2524
_wb_
2023-06-04 04:42:45
Yeah my bad, that's because it first tries to decode it as a jxl, which fails
2023-06-04 04:43:02
It should silently fail instead of verbosely
Traneptora
2023-06-04 10:39:28
what I find odd is it uses system libjpeg decode, instead of djpegli to compare
Moebytes
2023-06-05 02:18:56
what are the default settings used for these, can't find them
Traneptora
2023-06-05 06:13:25
run `cjxl --help`
_wb_
2023-06-05 06:23:30
libjxl defaults atm are effort 7, distance 1 (quality 90), progressive 0, epf -1 (i.e. let it depend on distance), and the rest 0
Moebytes
2023-06-05 02:33:53
Thanks
Traneptora
2023-06-05 04:16:22
FFmpeg now supports animated JXL <:poggies:853085814032302122>
2023-06-05 04:16:30
on decode only atm
Sakaria
2023-06-05 04:47:47
Hello there! I am currently attempting to compare JPEGXL to JPEG2000. However, I am facing difficulties in getting the JPEG XL encoder to meet my target bit rates through the use of distance and quality metrics. Even when I set the quality to maximum and distance to the minimum, I am only able to achieve a 0.5 bpp, which is much lower than my desired outcome. Can you suggest any way to directly adjust the bits per pixel?
DZgas Π–
2023-06-05 04:57:36
the where is?
2023-06-05 04:58:53
who stole, when did
2023-06-05 05:16:47
2023-06-05 05:17:49
cjxl.cc removed and tagetsize code just not transferred??
2023-06-05 05:22:42
https://github.com/libjxl/libjxl/commit/15a5cc2dc280ff1b1345f4377bd5be00cbb2cd26 wtf
2023-06-05 05:23:59
they just didn't rewrite it.
_wb_
Sakaria Hello there! I am currently attempting to compare JPEGXL to JPEG2000. However, I am facing difficulties in getting the JPEG XL encoder to meet my target bit rates through the use of distance and quality metrics. Even when I set the quality to maximum and distance to the minimum, I am only able to achieve a 0.5 bpp, which is much lower than my desired outcome. Can you suggest any way to directly adjust the bits per pixel?
2023-06-05 05:23:59
What image and command line are you using?
w
2023-06-05 05:25:12
could just be that jxl is going into lossless mode
Traneptora
Sakaria Hello there! I am currently attempting to compare JPEGXL to JPEG2000. However, I am facing difficulties in getting the JPEG XL encoder to meet my target bit rates through the use of distance and quality metrics. Even when I set the quality to maximum and distance to the minimum, I am only able to achieve a 0.5 bpp, which is much lower than my desired outcome. Can you suggest any way to directly adjust the bits per pixel?
2023-06-05 06:39:21
you can't target bits per pixel directly. what CLI options are you using? 0.5bpp seems very low, for most distances
2023-06-05 06:39:54
can you provide the command-line you're using?
2023-06-05 06:40:11
(do note, distance and quality are mutually exclusive, setting both will just use the distance setting)
username
2023-06-05 07:57:52
<@794205442175402004> I submitted a pull reqeust for the website: https://github.com/jxl-community/jxl-community.github.io/pull/14
_wb_
2023-06-05 08:08:32
Merged it, thanks!
jonnyawsom3
Sakaria Hello there! I am currently attempting to compare JPEGXL to JPEG2000. However, I am facing difficulties in getting the JPEG XL encoder to meet my target bit rates through the use of distance and quality metrics. Even when I set the quality to maximum and distance to the minimum, I am only able to achieve a 0.5 bpp, which is much lower than my desired outcome. Can you suggest any way to directly adjust the bits per pixel?
2023-06-05 10:27:04
If the distance is set to 0 and it's still **lower** than your desired bpp, then it's actually outperforming while being lossless. As the others said, some extra info will help
2023-06-05 10:27:41
I'll add, you can do decimals too, for instance -d 0.3 was what I used fairly often when testing
DZgas Π– the where is?
2023-06-05 10:28:54
I think I mentioned the target bpp only being in the Benchmark a few weeks ago, didn't realise there was even a filesize target too
OkyDooky
2023-06-06 06:06:41
OkyDooky\: Since you are on Matrix, you may not be aware of the ping that was in the unbridged #adoption channel.Apple just added JPEG XL support to Safari 17 Beta! (https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes)
2023-06-06 06:14:34
Ooh! Thanks for letting me know! It seems like the tide is turning, bit by bit.
TheBigBadBoy - π™Έπš›
2023-06-06 11:06:35
what is the website where we can download binaries of cjxl that are up to date with current git ? I already saw it but don't remember
2023-06-06 11:25:55
nice thanks !
Sakaria
Traneptora you can't target bits per pixel directly. what CLI options are you using? 0.5bpp seems very low, for most distances
2023-06-06 12:17:31
I'm only using the -e and -d flags and nothing more. The effort is set to 7. The image is a PNG that has been transformed before being compressed by JPEG_XL. Interestingly, this only happens when compressing the transformed version and not the original raw values. Would it be possible to use an older release to get the target bpp feature, or would that yield a different compression performance?
_wb_
2023-06-06 12:21:44
it just does the same thing as manually changing -d to a value that matches the target bpp/filesize (or gets close enough)
2023-06-06 12:22:36
what kind of transform was applied to the PNG?
Traneptora
2023-06-06 12:23:51
Also, what distance settings did you use?
jonnyawsom3
2023-06-06 01:17:01
If you want to stay on a current version but also use bpp, then benchmark_xl still has the flag, but uses different formatting <https://github.com/libjxl/libjxl/blob/main/doc/benchmarking.md#:~:text=bits>
OkyDooky
2023-06-06 01:33:37
heads up <@794205442175402004> \: I expect WebkitGTK (and thus GNOME Web / Epiphany) to turn on JXL support soon now that at least one big player (Apple) has turned it on
2023-06-06 01:34:15
looks like that tide might finally be turning, let's hope Mozilla plays along
_wb_
2023-06-06 01:34:26
cool, makes sense!
lithium
2023-06-06 04:20:09
I tested some non-photo content on cjxl v0.9.0 e11e728, result look really great(d 0.5~d 0.3 e 7~e 8), But I notice some tiny artifacts still happen on red color area, other color area is great, only red area have those tiny artifacts, Probably I missing some parameter or forget enable features? I still hope can get more balanced quality for non-photo content. > cjxl -d 0.5 -e 7 --num_threads=12
jonnyawsom3
2023-06-06 04:21:34
If I recall DZgas noticed that on their album covers they were testing with
DZgas Π–
If I recall DZgas noticed that on their album covers they were testing with
2023-06-06 04:24:01
These are my covers, only I did tests on them
DZgas Π– when I was making an image selection, in paintdotnet its blue selection filter is applied to the entire image, and then I saw.... I raised the color levels of all channels except RED and saw this original | old | new
2023-06-06 04:25:09
it's just that the problem is clearly and obviously here, and I hope the developers saw it - because it's not so difficult to fix it...
Sakaria
2023-06-06 04:49:52
I tried using the tools from the v0.6.1 release with the target_bpp flag but still had the same issue with bpp maxing out at 0.5 bpp, even though the target bpp was set higher. I will try to use the benchmark_xl tool and see what happens when I compress it losslessly too.
_wb_ what kind of transform was applied to the PNG?
2023-06-06 04:50:28
The images are hyperspectral, first I run a reversible KLT/PCA transform on the spectral axis and then flatten the image into 2D and code them to PNGs. The image samples are 16-bit positive values.
_wb_
2023-06-06 05:04:44
oh, interesting. How many components do you have originally? It could be interesting to see what happens if you don't reduce the number of components, jxl can represent up to 2^12 channels...
2023-06-06 05:05:09
(though you probably still want to do some kind of decorrelation transform since libjxl will only try to decorrelate the first 3 components)
2023-06-06 05:05:47
applying the default lossy compression on these images is likely not a good idea since that is heavily tuned for visual images
2023-06-06 05:07:27
(so it will take your data, interpret it as sRGB and take it from there, applying all kinds of perceptual tricks, but what you probably want to do is just store your data in a lossy way minimizing MSE)
lithium
2023-06-06 06:02:12
I understand, I guess I need wait next quality improve to fix tiny artifacts issue. πŸ™‚ And I notice libjxl have a new palette PR, maybe this heuristic can apply on lossy mode? some non-photo content apply varDCT mode will inflate file size, if encoder can avoid this situation, that will be very useful, I remember Delta Palette also a good choose, but still very experiment.
elfeΓ―n
_wb_ oh, interesting. How many components do you have originally? It could be interesting to see what happens if you don't reduce the number of components, jxl can represent up to 2^12 channels...
2023-06-06 07:10:27
why even tho- like, why lol
2023-06-06 07:11:39
Also I might try tackling an encoder again.
lonjil
2023-06-06 09:11:54
my buddy just got sold on jxl when I told them that it supports animation like gifs but doesn't have any "video" features
190n
2023-06-06 09:52:37
why would that sell them on it
jonnyawsom3
2023-06-06 09:53:18
Not turning things into a blobby mess is my first guess
190n
2023-06-06 09:54:58
you can do that with a video codec, just don't compress it as much
lonjil
2023-06-06 10:01:23
they want to be able to easily edit frames in an image editor
jonnyawsom3
2023-06-06 10:05:13
Oh right, good point. Never considered the fact of having to reference the first frame
BlueSwordM
lonjil they want to be able to easily edit frames in an image editor
2023-06-06 10:14:10
Ok? You can just use all intra coding then πŸ€·β€β™‚οΈ
elfeΓ―n
BlueSwordM Ok? You can just use all intra coding then πŸ€·β€β™‚οΈ
2023-06-06 10:15:33
not every instance of mp4 will be encoded that way- less work this way
2023-06-06 10:15:48
it's not about availability it's about *how* available
jonnyawsom3
2023-06-06 10:18:47
Hmm, HDR GIFs...
lonjil
BlueSwordM Ok? You can just use all intra coding then πŸ€·β€β™‚οΈ
2023-06-06 10:19:36
most people don't know what that means! they just know that many image editing programs make it convenient to edit gifs.
2023-06-06 10:19:58
and actually if you're only using intra coding then what's the upside compared to using jxl?
gb82
lonjil and actually if you're only using intra coding then what's the upside compared to using jxl?
2023-06-07 01:03:33
none probably
2023-06-07 01:04:02
although iirc JXL does have some inter frame coding features in the spec that could be enabled in the future by a future encoder but aren't in use right now
jonnyawsom3
2023-06-07 01:09:43
If I recall it's still 'lossless' in comparison to the video codecs, but just reuses data from previous frames, feel free to correct me though
w
2023-06-07 02:13:45
so does gif
jonnyawsom3
2023-06-07 02:27:52
Yeah
Traneptora
lonjil and actually if you're only using intra coding then what's the upside compared to using jxl?
2023-06-07 03:13:14
lossy JXL intra could replce prores tbh
lonjil
2023-06-07 03:13:52
Hell yeah
2023-06-07 03:14:08
That's jpeg2000, right
jonnyawsom3
2023-06-07 03:27:25
Mjpeg replacement too, assuming you can sync the audio to it and don't run out of frames
Quackdoc
Traneptora lossy JXL intra could replce prores tbh
2023-06-07 03:27:33
I tried this a while ago by muxing a jxl sequences into mkv, it was quite the while ago, but it worked really well aside from decode speed, but libjxl was pretty immature then
2023-06-07 03:27:58
well, I was comparing it to dnxhd
jonnyawsom3
2023-06-07 03:28:40
Probably a dedicated encoder and decoder for ultra high quality video usage, lower overhead and increase speed
Quackdoc
2023-06-07 03:30:15
I should try it again
BlueSwordM
lonjil and actually if you're only using intra coding then what's the upside compared to using jxl?
2023-06-07 03:50:41
If you have enough throughput and are willing to tolerate latency, you can use HW encoders to create the stream and decoders to view a downscaled preview.
Quackdoc
2023-06-07 05:52:11
just tried it again, it's pretty close but the decode speed penalty is pretty bad still the size makes it quite worth it though
2023-06-07 05:52:44
though I didn't check the quality properly,
fab
2023-06-07 06:51:50
Svt is a faster encoder than jxl and currently is impossible to distinguish an svt and a jxl image
2023-06-07 06:51:59
Jxl image looks as dark as svt
2023-06-07 06:52:19
In higher zooming 270% and 300%
2023-06-07 06:52:28
In high fps
2023-06-07 06:52:41
Svt is fast
2023-06-07 06:53:16
Though for real gains I think you need at least p3
2023-06-07 06:53:32
0.1fps single pass i3 330m
2023-06-07 06:53:39
And that sucks
2023-06-07 06:53:52
I'm still at 14frames
2023-06-07 06:55:30
Though svt doesn't try to sharpen the image at p3 is better than jxl e8 for medium bitrates
2023-06-07 06:55:36
Qp24
2023-06-07 06:56:08
Qp21 jxl wins but it uses high amount of sharpening and contrast enhancement
2023-06-07 06:56:56
Jxl is better for blonde hair
2023-06-07 06:57:54
For television pictures at s 7 d 0.52
2023-06-07 06:58:32
For magazines at s 9 d 0.736
2023-06-07 06:59:24
Or general photos at s7 d 0.493 dots 0 photon noise 84 i 0.832
2023-06-07 07:01:50
S 9 d 0.664 is the optimal parameter for jxl
2023-06-07 07:02:03
It tries more of what I said
2023-06-07 07:03:35
Or you can add I 0.417 and epf 3