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

on-topic

Whatever else

_wb_
2022-02-08 05:53:10
I dunno what this shows
2022-02-08 05:54:05
0 xor 0 is maxval
DZgas Ж
_wb_ I dunno what this shows
2022-02-08 05:54:11
this problem
2022-02-08 05:55:23
it's XR much more original
2022-02-08 05:55:45
original
2022-02-08 05:56:04
its 1 bpp
_wb_
2022-02-08 05:56:51
Could you use butteraugli or ssimulacra heatmaps instead?
2022-02-08 05:57:53
Comparisons in RGB are not very meaningful
DZgas Ж
_wb_ Comparisons in RGB are not very meaningful
2022-02-08 06:00:44
2022-02-08 06:01:10
orig xr xl
2022-02-08 06:01:29
why is that
Scope
2022-02-08 06:01:44
Also, maybe `--epf=3` would help?
2022-02-08 06:07:45
But maybe this is a bug, better to crop this part of the image and compare only it and file an issue
_wb_
2022-02-08 06:15:01
Are that crops of the actual images?
2022-02-08 06:15:45
It looks like some kind of false/exaggerated color...
2022-02-08 06:19:06
Ah the actual crops are above
2022-02-08 06:24:37
The jxl does look pretty bad indeed, would be good to check what block types it is using there...
DZgas Ж
Scope Also, maybe `--epf=3` would help?
2022-02-08 06:26:28
no
_wb_ The jxl does look pretty bad indeed, would be good to check what block types it is using there...
2022-02-08 06:27:56
hope for your work<:galaxybrain:821831336372338729>
2022-02-08 06:28:38
:prayd:
DZgas Ж
2022-02-08 06:30:59
interesting that JPEG XL does not use small blocks (for red)
Scope
2022-02-08 06:44:43
`-e 3` is close to a regular Jpeg and it uses less different blocks, if I am not mistaken
_wb_
2022-02-08 07:04:13
original
2022-02-08 07:04:32
cjxl -d 0.5
2022-02-08 07:05:10
block selection in this region
2022-02-08 07:08:48
cjxl -d 0.5 without color profile weirdness
DZgas Ж this problem
2022-02-08 07:11:59
How did you produce that jxl?
DZgas Ж
2022-02-08 07:13:20
>cjxl.exe -e 7 -d 1 --epf=3 20210828_130710.png
_wb_
2022-02-08 07:13:36
in the block selection, things don't look unexpected. Yellow is 8x8, green is larger, red is 8x4 or 4x8
2022-02-08 07:13:53
i'll check d 1
DZgas Ж
DZgas Ж ah yes
2022-02-08 07:15:20
check it
_wb_
2022-02-08 07:16:08
d1
DZgas Ж
2022-02-08 07:16:18
yep
_wb_
2022-02-08 07:16:24
block selection
DZgas Ж
2022-02-08 07:19:19
<:banding:804346788982030337>
_wb_
2022-02-08 07:19:22
overlaid for convenience
DZgas Ж
_wb_ cjxl -d 0.5
2022-02-08 07:20:32
the question of course is why everything is well smoothed here
_wb_ cjxl -d 0.5
2022-02-08 07:21:18
_wb_ d1
2022-02-08 07:22:49
2022-02-08 07:25:27
is there a function to smooth Contrast blocks
_wb_
2022-02-08 07:26:19
do you have any idea why the original has so much red in the bread at that edge?
DZgas Ж
_wb_ do you have any idea why the original has so much red in the bread at that edge?
2022-02-08 07:29:39
sun light
_wb_ do you have any idea why the original has so much red in the bread at that edge?
2022-02-08 07:39:22
it is also possible that this is a lumen of bread through and through
2022-02-08 07:45:00
ok, so far I have deduced that my old JPEG XR photos are compressed at an average of 4 bpp so I think i can easily make the transition to ~3 bbp which is roughly from -d 0.2-0.3
2022-02-08 07:45:41
but I did not understand how D differs from Q
2022-02-08 07:46:25
-q 98 gives what i need
Cool Doggo
2022-02-08 07:46:46
D and Q dont do anything different
2022-02-08 07:46:57
Q gets turned into D
DZgas Ж
2022-02-08 07:48:33
<:Cheems:890866831047417898>
2022-02-08 08:02:33
by eye I can say for sure that with a 25% reduction in file size, the quality is slightly better of compare with the original
2022-02-08 08:05:29
and yes, it turned out that the "tortoise" Mode will take a lot of time somewhere around a week for all the photos without a break, so I'll get by with a "kitten"
lithium
2022-02-11 09:39:34
I noticed some manga,anime site start provide avif,webp lossy and stop provide jpg,png, It's really sad😢 , for high quality lossy web use case, I still believe jxl(finish quality improvement) -d 1.0~0.5 is best practice...
2022-02-12 07:20:16
Look like current lossy-palette(delta palette) not support YCoCg, both command give same result. > -m -e 9 --lossy-palette --palette=0 -g 3 -E 3 -I 1 > -m -e 9 --lossy-palette --palette=0 -g 3 -E 3 -I 1 -C 1
_wb_
2022-02-12 07:21:21
Yes, the default deltas are made for RGB and there only is an implementation that uses the defaults atm
2022-02-13 05:59:11
https://twitter.com/jonsneyers/status/1492903356834226182?t=zvBMQw_lpF4k89b9GQfQ-g&s=19
2022-02-13 05:59:18
Very important poll
YAGPDB.xyz
2022-02-14 01:18:05
_wb_
2022-02-14 06:06:41
"image"
improver
2022-02-14 06:10:22
computer graphic picture
monad
2022-02-14 06:20:59
"Superswinebirdman"
Jyrki Alakuijala
DZgas Ж this problem
2022-02-15 02:52:14
Thank you for testing with this. Would you create a bug in the github repo about the image quality?
DZgas Ж
Jyrki Alakuijala Thank you for testing with this. Would you create a bug in the github repo about the image quality?
2022-02-15 02:53:25
I'm sorry but I don't want to reg github
2022-02-15 03:04:23
this problem is changed the weights of some algorithms, the problem, is that an insufficient amount of information is distributed into not very noticeable Dark color gradients
2022-02-15 03:07:54
Although this is probably a bigger problem if such a distribution comes from an algorithm that determines the subjective quality, I don’t do much testing yet, but within a month I will do the same again because the last time - I ended up being dissatisfied with the fact that after the fact at small compression level jpeg XR algorithms distribute all the information over the image much more evenly, while Jpeg XL has hard blockages and borders between the distribution of information.... The ideal option would be to use BPP compression but this does not suit me.
2022-02-15 03:08:38
The ideal way to solve the problem would be to encode parts of the image independently, because no symptoms are observed if you compress the parts and fragments of the image separately by about 256 pixels
2022-02-15 03:10:01
But the compression power is down from this.
2022-02-15 03:12:22
<:JXL:805850130203934781> It would be nice to have programs for analyzing exactly how much data is encoded in a particular part of the image
Jyrki Alakuijala
2022-02-15 05:19:53
our adaptive quantization field is the same for X, Y and B
2022-02-15 05:20:55
I have had some adjustements of abs(X) ratio to Y
2022-02-15 05:21:15
I suspect we want some more bits for chromacity changes in low intensity areas
2022-02-15 05:21:58
do you compile your own jxl -- would you be able to try new parameters?
2022-02-15 05:25:14
changing https://github.com/libjxl/libjxl/blob/c8a76d798abca7439f8139d6beb4cc4460748ebe/lib/jxl/enc_adaptive_quantization.cc#L187 to const auto avg_ratio = Min(ratio_r, ratio_g); (or Max) might help
BlueSwordM
Jyrki Alakuijala changing https://github.com/libjxl/libjxl/blob/c8a76d798abca7439f8139d6beb4cc4460748ebe/lib/jxl/enc_adaptive_quantization.cc#L187 to const auto avg_ratio = Min(ratio_r, ratio_g); (or Max) might help
2022-02-15 06:20:16
Nice.
2022-02-15 06:21:25
Actually, would it be possible to have a separate aq-mode bias parameter? You'd have: `-aq-mode 1/2` with 1 being the default, and 2 with a low-luma bias.
DZgas Ж
Jyrki Alakuijala do you compile your own jxl -- would you be able to try new parameters?
2022-02-16 01:30:45
no
2022-02-16 01:33:01
I only do tests if anyone compiled cjxl.exe for me
Jyrki Alakuijala
2022-02-16 11:03:37
thank you for letting me know
2022-02-16 11:03:53
I'll think about this, I have some ideas
fab
2022-02-16 11:05:23
Ji i posted sample in benxhmarks
2022-02-16 11:05:39
Do you think jxl can encode this font
2022-02-16 11:06:15
What is the developer for cjpeg
2022-02-16 11:06:36
Is one of three most popular ones in libjxls?
Jyrki Alakuijala
2022-02-16 11:27:55
the easiest fix would be to change https://github.com/libjxl/libjxl/blob/254aea0aeccff8983a1a55a459352b29133ffd4f/lib/jxl/enc_frame.cc#L510, to remove 0.65f and then make the next line to default qm value to 2
2022-02-16 11:28:31
this would improve red-green chromacity at low distances (below 0.65) by 40 % or so (IIRC)
2022-02-16 11:30:33
I'll just change it in the repo, I don't other people are expressing a lot of interest in distances below 0.65, and it is reasonable that very high quality images can be zoomed more
fab
2022-02-16 11:37:57
Me would like 0.371 distance
2022-02-16 11:38:39
But at that point id go lossless
DZgas Ж
fab Me would like 0.371 distance
2022-02-16 11:39:57
Why don't you round these numbers, do these hundredths do anything?<:FeelsReadingMan:808827102278451241>
fab
2022-02-16 11:40:16
I have problems
2022-02-16 11:40:34
So im sure lower than 0.371 distance i wont go
lithium
2022-02-16 11:43:07
I usually use target distance 0.5 and e 8
fab
2022-02-16 11:43:50
But i Guess person who works in video engineering can and see good at that distance even lower
2022-02-16 11:44:06
And is useful for improving codecs
DZgas Ж
Jyrki Alakuijala I'll just change it in the repo, I don't other people are expressing a lot of interest in distances below 0.65, and it is reasonable that very high quality images can be zoomed more
2022-02-16 11:44:07
I called it a bug because the fact that at qualities 97-99 there is an exact pixel-by-pixel correspondence almost lossless, and against this background squares appear, and this is bad
lithium
2022-02-16 11:46:55
I think can increase `--intensity_target` to fix some error on lower target distance. > cjxl -d 0.5 -e 8 --intensity_target=4000
DZgas Ж
DZgas Ж I called it a bug because the fact that at qualities 97-99 there is an exact pixel-by-pixel correspondence almost lossless, and against this background squares appear, and this is bad
2022-02-16 11:47:38
Jpeg xR sacrifices a lot for pixel-matching, but doesn't make any of those missteps even on many times lower qualities
lithium
2022-02-16 12:11:24
In previous comment, Jon mention "really non-photographic" non-photo content use non-DCT method(jxl delta-palettization) and colorspace YCoCg(close to RGB) can get better performance. A little curious, libjxl will implement which strategy for "really non-photographic" non-photo content? (like av1 have DCT and Palette prediction, opus have SILK and CELT)
fab
2022-02-16 12:23:25
No jxl in my opinion is best
2022-02-16 12:23:48
1 encoding neomelodic already compressed destroyed content
2022-02-16 12:23:52
2 text
2022-02-16 12:24:01
3 photos
Jyrki Alakuijala
DZgas Ж I called it a bug because the fact that at qualities 97-99 there is an exact pixel-by-pixel correspondence almost lossless, and against this background squares appear, and this is bad
2022-02-16 12:31:54
I agree with this mentality. I created an internal bug for this, will try to make improvements, and I will track the progress on it. I will expect the community to be giving feedback on the observed quality.
DZgas Ж Why don't you round these numbers, do these hundredths do anything?<:FeelsReadingMan:808827102278451241>
2022-02-16 02:24:34
I just wanted it to be clear that 0.3 goes to one or the other bucket
2022-02-16 02:24:40
Now that PR actually compiles and does the thing I tried to do 🙂
DZgas Ж
2022-02-16 02:49:43
I did not understand the meaning of the specific -d values, so I just use the quality key
lithium
lithium In previous comment, Jon mention "really non-photographic" non-photo content use non-DCT method(jxl delta-palettization) and colorspace YCoCg(close to RGB) can get better performance. A little curious, libjxl will implement which strategy for "really non-photographic" non-photo content? (like av1 have DCT and Palette prediction, opus have SILK and CELT)
2022-02-16 03:40:18
av1 have lossy YCoCg 12bit implement(12,12,12 on YUV plane), probably implement lossy YCoCg 24bit(24,24,24) will provide more benefit for delta palettization?
lithium av1 have lossy YCoCg 12bit implement(12,12,12 on YUV plane), probably implement lossy YCoCg 24bit(24,24,24) will provide more benefit for delta palettization?
2022-02-17 08:11:03
I test different type "really non-photographic" non-photo picture on current jxl delta palettization, but I think sometime still have some artifacts, current delta palettization can't control quality or distance, I guess if implement YCoCg(24bit) and distance(-d) option for delta palettization, probably can get better result?
Jyrki Alakuijala
2022-02-17 12:40:25
I will fix them all, just file bugs for delta palette quality
2022-02-17 12:40:33
on github
lithium
Jyrki Alakuijala I will fix them all, just file bugs for delta palette quality
2022-02-17 01:57:17
I think those artifacts not delta palette bug, current delta palette can't control quality, and compressed file size is very small, so I think those error happen on this file size is expectable, I expect those artifacts will clear on higher quality quantizer(like -q 95 or -d 0.5).
namekozeidin
2022-02-17 01:58:08
Hi everyone. I'm planning to use jpeg-xl to archive a lot of JPEG photos, now reaching about 15TB. For now, thinking of using jpeg-xl lossless compression and maybe, minimal lossy in the future, but not sure yet. Sorry if this is a stupid question, but is libjxl lossless compression algorithm completely safe? Are there any risks of it not producing a mathematically identical photo?
Jyrki Alakuijala
2022-02-17 02:03:06
file a bug on not being able to control quality
2022-02-17 02:03:21
I'll add better quality settings with happiness there
Fraetor
namekozeidin Hi everyone. I'm planning to use jpeg-xl to archive a lot of JPEG photos, now reaching about 15TB. For now, thinking of using jpeg-xl lossless compression and maybe, minimal lossy in the future, but not sure yet. Sorry if this is a stupid question, but is libjxl lossless compression algorithm completely safe? Are there any risks of it not producing a mathematically identical photo?
2022-02-17 02:09:00
JPEG recompression mode should be completely lossless. You can satisfy yourself that this is the case by encoding a sample of yout jpegs, then decode them back to jpeg with djxl, and then compare the hashes of the files. The lossless recompression mode doesn't work for CMYK JPEGs, though they are pretty rare.
fab
namekozeidin Hi everyone. I'm planning to use jpeg-xl to archive a lot of JPEG photos, now reaching about 15TB. For now, thinking of using jpeg-xl lossless compression and maybe, minimal lossy in the future, but not sure yet. Sorry if this is a stupid question, but is libjxl lossless compression algorithm completely safe? Are there any risks of it not producing a mathematically identical photo?
2022-02-17 02:10:57
Hi for now near lossless is
2022-02-17 02:11:00
for %i in (C:\Users\Utente\Desktop\setwo\fou*.png) do cjxl -s 7 -d 0.456 --intensity_target=271 -p --patches=0 --epf=2 %i %i.jxl
2022-02-17 02:11:25
If you want less aliasing
2022-02-17 02:11:30
Then wait
2022-02-17 02:12:00
Until JPEG XL can better control the colors
2022-02-17 02:12:33
The aliasing is strong with this setting
2022-02-17 02:12:40
Very strong
2022-02-17 02:13:24
JPEG XL left alien artifacts by default said jon sneyers in a slide presentato in
2022-02-17 02:14:47
I had serious bugs like di sicilian rappers becoming black
namekozeidin
Fraetor JPEG recompression mode should be completely lossless. You can satisfy yourself that this is the case by encoding a sample of yout jpegs, then decode them back to jpeg with djxl, and then compare the hashes of the files. The lossless recompression mode doesn't work for CMYK JPEGs, though they are pretty rare.
2022-02-17 02:14:51
I already made some conversions and all went fine. My concern is that I have about half million of photos and can't test this on a reasonable amount of files
fab
2022-02-17 02:15:11
Yes
namekozeidin
Fraetor JPEG recompression mode should be completely lossless. You can satisfy yourself that this is the case by encoding a sample of yout jpegs, then decode them back to jpeg with djxl, and then compare the hashes of the files. The lossless recompression mode doesn't work for CMYK JPEGs, though they are pretty rare.
2022-02-17 02:16:53
how can I check if jpeg file is a CMYK one?
Fraetor
namekozeidin I already made some conversions and all went fine. My concern is that I have about half million of photos and can't test this on a reasonable amount of files
2022-02-17 02:16:55
Theoretically there should never be any loss, however that is non-withstanding any unknown bugs.
namekozeidin how can I check if jpeg file is a CMYK one?
2022-02-17 02:18:15
imagemagick can identify them, but I'd probably just let cjxl fail on them as a decent means of identification.
2022-02-17 02:18:38
If your images are photos it is very unlikely they are CMYK.
namekozeidin
Fraetor imagemagick can identify them, but I'd probably just let cjxl fail on them as a decent means of identification.
2022-02-17 02:19:18
oh, I see. My first thought was that it would just screw up the files
Fraetor
2022-02-17 02:19:23
No camera will produce CMYK, so an active effort to convert them would have to have been made.
namekozeidin oh, I see. My first thought was that it would just screw up the files
2022-02-17 02:19:43
cjxl will just fail to read them and spit out a helpful error.
lithium
Jyrki Alakuijala file a bug on not being able to control quality
2022-02-17 02:20:28
Sorry for if I misread your comment, It's mean will implement a quality control option for delta palette? Is possible combine vardct mode(XYB) and delta palette mode(YCoCg), use heuristic estimate which algorithm is better, and use target distance(-d or -q) control quality? https://discord.com/channels/794206087879852103/794206087879852106/943479678826594364
namekozeidin
Fraetor No camera will produce CMYK, so an active effort to convert them would have to have been made.
2022-02-17 02:20:29
The photos are taken and than are post-processed by Photoshop editors using basic filters (like blurring, digital makeup) and saved as JPEG
Fraetor
2022-02-17 02:20:58
I'm pretty sure they would not be CMYK then.
namekozeidin
Fraetor I'm pretty sure they would not be CMYK then.
2022-02-17 02:25:10
Oh, thanks for that. My concern is just around libjxl stability. It's an amazing piece of software, but I don't know if I can blindly trust it for lossless compression. I'll follow your advice, make some conversions and checking if all is fine. Thank you guys
Fraetor
2022-02-17 02:26:58
The program was formally stabilised back in February last year (it might have been Feb 2020), and if any bugs do exist I'm sure they would be in some really weird edgecase that it is very unlikely you would run into.
2022-02-17 02:28:58
You can check if it is CMYK with imagemagick.
namekozeidin
Fraetor You can check if it is CMYK with imagemagick.
2022-02-17 02:33:06
Oh, great. I'll do some testing
Fraetor
namekozeidin Oh, great. I'll do some testing
2022-02-17 02:41:51
Here's a script I wrote for converting all of the files in a folder losslessly in place. It does remove the originals however, so make sure you have a backup until you are confident with it.
2022-02-17 02:42:27
Actually, that's a private repo, let me post it here. (Consider it BSD 2 Clause if you need.)
2022-02-17 02:42:50
namekozeidin
Fraetor
2022-02-17 02:44:37
great, many thanks
_wb_
2022-02-17 03:35:45
if you want to be absolutely sure, you can write a little script that does the roundtrip (`cjxl orig.jpg compressed.jxl; djxl compressed.jxl reconstructed.jpg`) and then checks if orig.jpg is identical to reconstructed.jpg before removing orig.jpg
Jyrki Alakuijala
lithium Sorry for if I misread your comment, It's mean will implement a quality control option for delta palette? Is possible combine vardct mode(XYB) and delta palette mode(YCoCg), use heuristic estimate which algorithm is better, and use target distance(-d or -q) control quality? https://discord.com/channels/794206087879852103/794206087879852106/943479678826594364
2022-02-17 03:55:59
Yes, I could add (some) quality settings to the palette mode, too. The quality settings would be somewhat more discrete than in other modes. It is possible to do both more and less bits, but I think the attractive area is to do more bits and have higher quality options available.
Koromaru Korüko
2022-02-17 04:08:22
if I remember correctly most of the jxl lossless encoding is bit exact. so the decoded image should be bit exact to its original. so <@!670734665044197376> you should be able to check the roundtrip hash against its original, to ensure its completely lossless.
lithium
Jyrki Alakuijala Yes, I could add (some) quality settings to the palette mode, too. The quality settings would be somewhat more discrete than in other modes. It is possible to do both more and less bits, but I think the attractive area is to do more bits and have higher quality options available.
2022-02-17 04:34:33
In previous discuss, Jon mention "really non-photographic" non-photo content use non-DCT method(jxl delta-palettization) and colorspace close to RGB(YCoCg) can get better performance. libjxl `-d disanse` option probably can auto switch vardct(XYB) and delta palette(RGB or YCoCg implement) for non-photo content? > https://discord.com/channels/794206087879852103/805176455658733570/942120326999978024 > _wb_ — 2022/02/13 > XYB is also suitable for non-photo, but perhaps less so than for photo. > A lot of non-photo material does get created in RGB, so there are certainly cases where it's a better idea > (for compression) to stay in RGB or something close to RGB (like YCoCg). > > https://discord.com/channels/794206087879852103/805176455658733570/942129214361047140 > _wb_ — 2022/02/13 > I think (var)DCT is only really suitable for photo and "photo-like" non-photo, > like realistic paintings or renders, fps games, drawings with pencil, charcoal, chalk etc. > For "really non-photographic" non-photo, like screenshots with mostly text and > UI elements, logos, charts, and digital illustrations with hard edges, > I think DCT is not the most effective approach. Lossless compression techniques > (with lossy preprocessing, e.g. (delta)-palettization) will work better for that imo. > We already do that for patches of text (it's encoded losslessly after doing color quantization in XYB, > and subtracted from the DCT image so if the color quantization introduced some error, > there's still a chance for the DCT part to fix it)
monad
namekozeidin Hi everyone. I'm planning to use jpeg-xl to archive a lot of JPEG photos, now reaching about 15TB. For now, thinking of using jpeg-xl lossless compression and maybe, minimal lossy in the future, but not sure yet. Sorry if this is a stupid question, but is libjxl lossless compression algorithm completely safe? Are there any risks of it not producing a mathematically identical photo?
2022-02-17 08:20:07
Since <https://github.com/libjxl/libjxl/pull/358>, "lossless" JPEG recompression is not even _intended_ to be bit-lossless in all cases. cjxl produces output even when reconstruction data is not preserved. In any case, to be sure your data is recoverable, you must _always_ roundtrip your files and verify.
2022-02-17 08:26:54
BTW, if this is purely a storage use-case, <https://github.com/dropbox/lepton> should perform better overall, though there are some files Lepton cannot compress that cjxl can.
_wb_
monad Since <https://github.com/libjxl/libjxl/pull/358>, "lossless" JPEG recompression is not even _intended_ to be bit-lossless in all cases. cjxl produces output even when reconstruction data is not preserved. In any case, to be sure your data is recoverable, you must _always_ roundtrip your files and verify.
2022-02-17 08:45:21
In principle if the return code cjxl gives is zero, it succeeded encoding without error and it should be recoverable. But it doesn't hurt to double-check, never know if there's a bug left...
Deleted User
2022-02-20 07:58:15
Hello!
2022-02-20 07:58:54
Is JXL general purpose, and should it replace most other formats?
Fraetor
Is JXL general purpose, and should it replace most other formats?
2022-02-20 08:11:14
JXL is definitely a general purpose image format with the potential to replace most other formats. It has best (or near best) in class performance for both lossy and lossless content, supports high bit depths and HDR, as well as not having any reasonable limitations to things like dimensions. It is also fast enough to not lose out to the existing legacy formats, which is very nice. It has both a lossless mode and a lossy mode, so is a great replacement for both JPEG, and PNG. The lossy (VarDCT) mode is somewhat tuned towards photographic/realistic images, but even then it performs quite well on most illustration content.
fab
2022-02-20 08:11:23
2022-02-20 08:11:44
<@456226577798135808>
Deleted User
fab
2022-02-20 08:14:39
Yeah that's not gonna fly. How can you patent something someone else is using?
fab
2022-02-20 08:14:52
Linux
2022-02-20 08:15:45
2022-02-20 08:15:59
Encode.su
2022-02-20 08:16:03
Data compression
Deleted User
fab Linux
2022-02-20 08:16:25
Don't the original creators have rights before anyone else?
_wb_
2022-02-20 08:22:55
I don't think the Microsoft patent has much substance w.r.t. jxl. Haven't read it, but it's either one of the kind "we can use ANS for something" or "we have a specific tiny improvement for a specific use case of ANS". It's somewhat annoying that the patent system works like that, but I wouldn't worry about it.
Deleted User
2022-02-20 08:23:18
https://forums.theregister.com/forum/all/2021/03/13/microsoft_ans_patent/
fab
2022-02-20 08:25:26
_wb_
2022-02-20 08:26:12
Patents are basically a kind of NFTs that companies collect because some people somehow think they have value, and then they periodically let their lawyers negotiate how much they're paying one another based on how high each one's stack of patents is. It's a silly game and it is not helping innovation.
2022-02-20 08:33:44
But in case of jxl, I wouldn't worry. Cloudinary and Google have defensive patents, that are basically meant just to discourage trolls from trying to make money by bullying people into paying them license fees "just in case". The Google and Cloudinary patents are granted royalty-free to the whole world, with one terminating condition: if you start making claims that would make jxl non-royalty-free, then you lose the right to use Google's and Cloudinary's IP. It's basically the equivalent of copyleft licenses but for patents instead of copyright. If Microsoft would claim they have non-royalty-free patents that are needed to use jxl, then automatically their right is terminated to use Google's and Cloudinary's IP, and there is nothing saying Google/Cloudinary would even have to license it at all then to Microsoft. So they would end up not being able to use jxl themselves at all. That should be a strong enough deterrent to prevent them from trying anything evil.
2022-02-20 08:35:07
It's stupid that we even need such defensive patents in the first place, but I guess that's the world we live in.
Deleted User
2022-02-20 08:46:58
Haha that would be hilarious if m$ was the only company not allowed to use it.
_wb_
2022-02-20 08:48:14
Well I don't think it will come to that 😅
Deleted User
2022-02-20 08:50:50
So can i shoot in jxl?
The_Decryptor
2022-02-20 11:44:22
If the MS patent covers JXL, then wouldn't JXL itself be prior art to help invalidate it?
2022-02-20 11:44:54
AV1/AVIF also have patents, doesn't seem to be much hinderance to them 😛
Deleted User
2022-02-21 12:05:09
That's what I'm thinking
2022-02-23 10:15:51
So how do videos work?
2022-02-23 10:16:29
Does the algorithm extend over all frames of the video, or is each frame a separate jxl?
2022-02-23 10:38:50
Especially if a video is treated as many parts of the same image cut up and displayed separately. Like, one really long jxl image.
2022-02-23 10:39:06
I think that could work.
2022-02-23 10:50:58
Not sure how well it'd work for video *editing*.
Nova Aurora
So how do videos work?
2022-02-23 11:01:00
> 6.4 Multiple frames > A codestream may contain multiple frames. These can constitute an animation, a burst (arbitrary > images with identical dimensions), or a composite still image with one or more frames rendered > on top of the first frame. > NOTE The frame that is being decoded is referred to as the current frame.
2022-02-23 11:02:14
Unless you're doing all intra for digital cinema work, a video codec is better than GIF, APNG, or animated JXL for most use cases
Deleted User
Nova Aurora Unless you're doing all intra for digital cinema work, a video codec is better than GIF, APNG, or animated JXL for most use cases
2022-02-23 11:03:29
Gotcha.
Nova Aurora Unless you're doing all intra for digital cinema work, a video codec is better than GIF, APNG, or animated JXL for most use cases
2022-02-24 04:40:10
Wait, why is that?
The_Decryptor
2022-02-24 04:41:41
The secret sauce of video codecs is that they can encode motion as well as just differences between frames
2022-02-24 04:42:16
So JXL/APNG/GIF can say a pixel has changed by a certain amount between frames, but video codecs can also encode where it's moved to
Nova Aurora
Wait, why is that?
2022-02-24 04:42:21
JPEG XL is pretty bad at storing parts that stay the same between frames, which is a major optimization that all video codecs do. All-intra is a mode that stores all the frames, rather than just the differences between frames, and is typically used in cinema and editing
2022-02-24 04:42:41
GIF is also just a really bad codec
Deleted User
2022-02-24 04:47:16
What about repeating portions of the same image? You could solve this by having each frame be one part of the whole image so that the encoding happens over everything.
2022-02-24 04:48:14
Like, a really tall image. Every *frame-height* pixels is a frame.
w
2022-02-24 04:48:32
you can use blend modes in jxl
2022-02-24 04:48:36
and encode delta frames
Deleted User
w you can use blend modes in jxl
2022-02-24 04:49:14
But can the process of extracting those portions losslessly be automated?
w
2022-02-24 04:49:24
why not
2022-02-24 04:49:47
each frame in jxl has a blend mode
Deleted User
w why not
2022-02-24 04:49:53
It depends on how the blending works.
w
2022-02-24 04:50:17
yeah so you can write an encoder that does it
2022-02-24 04:50:25
i just mean that the format supports it
Deleted User
2022-02-24 04:50:31
ok... And blending is part of the spec?
w
2022-02-24 04:50:35
yes
Deleted User
2022-02-24 04:51:30
Wait, so organic portions of the jxl spec can be reused to do things that video codecs are designed to do?
2022-02-24 04:51:38
that sounds pretty dope
2022-02-24 04:52:09
And it's *just* the encoder, eh?
2022-02-24 04:52:23
The only format change would be adding sound, then.
w
2022-02-24 04:52:50
yeah and i dont see a reason why one can't just make an extension to jxl to add more features like sound
2022-02-24 04:53:02
or even motion encoding
2022-02-24 04:53:43
obviously you'll need the supported decoder
2022-02-24 04:53:51
but underlying format would conform to spec and you'd still get an image
2022-02-24 04:53:53
since that's the idea as i understand it
Deleted User
w yeah and i dont see a reason why one can't just make an extension to jxl to add more features like sound
2022-02-24 04:54:14
How would extensions work? Does the spec have a way of doing that already?
w
2022-02-24 04:56:44
presumably even better than previous jpeg
Deleted User
2022-02-24 05:46:11
How's that work?
_wb_
2022-02-24 06:11:45
The spec has quite a few things that could be used for video (in particular, cropped frames, blending, patches). The current libjxl encoder isn't really doing anything to optimize video though, it just encodes frames completely independently.
2022-02-24 06:13:01
Video codecs will still be better, jxl has patches but motion vector fields like video codecs have are likely significantly more effective.
monad
2022-02-24 07:59:57
Utilizing an existing multimedia container would make more sense than extending JXL.
The_Decryptor
2022-02-24 08:06:51
Sticking individual JXL frames in something like MKV feels better than trying to turn JXL into an A/V container format
_wb_
2022-02-24 09:12:11
Yes, but then you can only use intra. Jxl is not a video codec but it does have some inter tools, like cropped frames, subtracting the previous frame (kAdd blend mode), and patches which in principle is a very versatile coding tool that can be used as poor man's motion compensation.
2022-02-24 09:13:16
But I guess there is little incentive to make an encoder that fully uses what is available in jxl for video, since it will never beat real video codecs.
2022-02-24 09:15:51
In an authoring tool for something like sprite-based animations with parallax layers, it could however make sense to have a custom jxl encoder that uses the info that is known to the authoring tool to make perfect patches. That _could_ be very effective for that specific kind of content.
2022-02-24 09:18:03
I'm also thinking of emulators of old game consoles like snes that had hardware sprites - in principle it would be possible to compress something like a screen capture of a super mario speedrun very effectively and pixel-perfect when mapping the hardware sprite rendering to jxl patches.
The_Decryptor
2022-02-24 09:24:17
Well, an encoder can do both, ffmpeg can do APNG but also supports individual PNG frames in something like MKV
2022-02-24 09:24:59
One of the things I'd eventually like to see is something like FJXL in ffmpeg to use for lossless video recording in place of e.g. FFV1
2022-02-24 09:25:25
Because I can then always do a second pass to convert it to a normal JXL animation, or convert it to a video to upload to sites
Deleted User
2022-02-24 10:44:41
That's a good question. They were saying video codecs are better than still codecs, but i wonder if the different usecase changes that.
diskorduser
2022-02-24 01:19:09
I like to know whether lossy jxl frames at d1 - d3 with fast presets & least compressible image could send fhd at 60fps through 2.4Ghz wifi.
Deleted User
2022-02-24 08:02:14
Ok but with all that said, is someone working on a MANIAC-based video codec?
BlueSwordM
Ok but with all that said, is someone working on a MANIAC-based video codec?
2022-02-24 08:24:08
Yes, but it already exists in the form of FFV1.
Deleted User
BlueSwordM Yes, but it already exists in the form of FFV1.
2022-02-24 08:30:18
Isn't it VI?
_wb_
2022-02-24 08:41:28
ffv1 is basically a fixed MA tree
2022-02-26 03:32:33
Haven't heard about that issue in jpeg
2022-02-27 07:35:54
Well the number of passes per frame is limited to 11, so that particular issue cannot happen
2022-02-27 07:36:18
But you could have other small bitstreams that take a lot of resources to decode
2022-02-27 07:36:33
<#824000991891554375> is one example
lithium
2022-03-01 04:55:56
cwebp have experiment feature `-delta_palettization`, cjxl have `--lossy-palette` `--palette=0`(delta palettization), what's different for libjxl delta palettization implement? And just little curious, libjxl delta palettization will get more improvement in near future?<:BlobYay:806132268186861619>
2022-03-05 07:18:45
Current `delta palettization` use RGB colorspace, so sometime compression rate worse than varDCT and XYB, probably use YCoCg or YCoCg-R will get better compression rate?
_wb_
2022-03-05 08:18:43
I don't think it makes much difference, doing an RCT or using different delta entries boils down to the same thing I think
lithium
2022-03-06 08:32:50
Current jxl delta palette also happen file size inflate issue for specific type non-photo picture, similar DCT worst case issue. I think this issue also happen on Modular lossless. > Modular lossless,manga > > original 962,047 > Modular lossless e3 1,812,312 > Modular lossless e7 612,280 > Modular lossless e8 584,272 > > original 4,050,574 > Modular lossless e3 7,917,770 > Modular lossless e7 4,728,379 > Modular lossless e8 3,340,568
2022-03-06 08:34:50
> JPEG XL encoder v0.7.0 36ece47 [AVX2,SSE4,SSSE3] > cjxl -m -d 0 -e 3 --num_threads=12
2022-03-07 08:22:14
Hello <@!794205442175402004>, Sorry to bother you, Could you teach me what reason let YCoCg(lossy) worse than YCbCr(lossy)? I read some article say YCoCg have better transform precision and have YCoCg-R variation, but I still don't understand what reason let YCoCg (lossy) worse than YCbCr.
_wb_
2022-03-07 09:25:25
I don't think there's a big difference for lossy between YCbCr and YCoCg, they are quite similar. But the Y of YCbCr is a bit closer to actual luma — the Y of YCoCg is 0.5 G + 0.25 R + 0.25 B which is a bit of a rougher approximation. XYB is significantly better than YCbCr though.
lithium
_wb_ I don't think there's a big difference for lossy between YCbCr and YCoCg, they are quite similar. But the Y of YCbCr is a bit closer to actual luma — the Y of YCoCg is 0.5 G + 0.25 R + 0.25 B which is a bit of a rougher approximation. XYB is significantly better than YCbCr though.
2022-03-07 09:33:00
So it's mean jxl delta palettization use YCoCg-R or XYB probably a better choose? and not recommend use YCoCg(lossy) for "really non-photographic" non-photo content?
_wb_
2022-03-07 09:35:50
For delta palette, I don't think it makes a big difference if you do encode(delta(rct(original))) or encode(rct(delta(original))), the difference is basically if you do the RCT on the pixel values or on the delta entries
2022-03-07 09:35:59
at least for YCoCg/YCbCr that's the case
2022-03-07 09:36:34
for XYB it's a bit more complicated due to it not being a linear transform
lithium
2022-03-07 09:46:46
Current Modular lossy(squeeze) will use YCoCg-R? or use YCoCg(lossy)? I think probably YCoCg transform can Increase delta palette compression ratio?
2022-03-07 09:51:22
And other jxl feature `--patches` `--epf` `--noise` `--dots` probably can let delta palette work better?
2022-03-07 10:01:32
Little off topic, Current aomenc av1 have YCoCg(lossy) 8,10,12 bit depth implement, if source is screen content or "really non-photographic" non-photo content, YCoCg(lossy) will have some advantage for YCbCr? I don't really understand which is better, Could you share your opinion?
_wb_
2022-03-07 10:45:52
lossy modular uses XYB by default, it gives better results than YCoCg or YCbCr
2022-03-07 10:46:08
we don't have lossy YCoCg in jxl, only YCoCg-R
2022-03-07 10:46:38
(well I guess you could in theory implement lossy YCoCg by means of an ICC profile or by doing YCoCg-R and then removing the lsb of Co and Cg)
2022-03-07 10:48:24
I think the only advantage of lossy YCoCg over YCbCr is that it's slightly faster to decode, but that difference is probably quite irrelevant, especially if the GPU accepts YCbCr natively
lithium
2022-03-07 10:53:34
I understand, Thanks for your guidance 🙂
2022-03-07 11:02:29
I update my Issue, hope we can get varDCT and delta palette combine mode in near future.<:BlobYay:806132268186861619> > https://github.com/libjxl/libjxl/issues/1188
lithium Current jxl delta palette also happen file size inflate issue for specific type non-photo picture, similar DCT worst case issue. I think this issue also happen on Modular lossless. > Modular lossless,manga > > original 962,047 > Modular lossless e3 1,812,312 > Modular lossless e7 612,280 > Modular lossless e8 584,272 > > original 4,050,574 > Modular lossless e3 7,917,770 > Modular lossless e7 4,728,379 > Modular lossless e8 3,340,568
2022-03-08 04:37:03
original 962,047 lossy-palette e7 1,170,146 original 4,050,574 lossy-palette e7 17,566,749 > JPEG XL encoder v0.7.0 36ece47 [AVX2,SSE4,SSSE3] > cjxl -m -e 7 --lossy-palette --palette=0 --num_threads=12 > "really non-photographic" non-photo, manga, Grayscale, palette > encoding time very very slow, some picture spend over 3 minute.
2022-03-09 01:42:27
I try to apply other predictor mode(`--predictor=K`) for delta palette, but I get some issue on encoding...
2022-03-09 02:56:13
I guess current delta palette only have RGB implement, so some grayscale png,jpg and palette png will have file size inflate issue?
_wb_
2022-03-09 05:26:18
yes, for grayscale and palette png files, delta palette will not be a good idea at all
lithium
_wb_ yes, for grayscale and palette png files, delta palette will not be a good idea at all
2022-03-09 05:56:55
For "photo-like" non-photo color,grayscale content use varDCT, For "really non-photographic" color non-photo content use delta palette, For "really non-photographic" grayscale,palette non-photo content, I should use which lossy method in libjxl? (similar av1 lossy palette prediction method)
lithium original 962,047 lossy-palette e7 1,170,146 original 4,050,574 lossy-palette e7 17,566,749 > JPEG XL encoder v0.7.0 36ece47 [AVX2,SSE4,SSSE3] > cjxl -m -e 7 --lossy-palette --palette=0 --num_threads=12 > "really non-photographic" non-photo, manga, Grayscale, palette > encoding time very very slow, some picture spend over 3 minute.
2022-03-10 02:27:25
original 962,047 av1-aomenc-q10-s4 399,229 original 4,050,574 av1-aomenc-q10-s4 1,277,190
2022-03-10 02:29:18
> Version: 0.9.3 aom [enc/dec]:3.2.0-143-gf20d487e3 > simple setting: > avifenc --min 0 --max 63 --minalpha 0 --maxalpha 0 -d 10 -s 4 -j 12 -a end-usage=q -a cq-level=10
BlueSwordM
2022-03-10 09:19:26
<@!179701849576833024> Can 8-bit XYB be lossless converted to 8-bit RGB?
veluca
2022-03-10 10:23:04
Nope
BlueSwordM
veluca Nope
2022-03-10 10:28:59
Oh, so you always need a higher bit-depth to convert a perceptual color space like XYB to RGB losslessly?
2022-03-10 10:29:09
I somehow thought XYB was fully lossless at the same bit-depth.
veluca
2022-03-10 10:30:24
Nope :) I don't know of any colorspace that does that
2022-03-10 10:30:45
Unless you count things like SubtractGreen with wraparound logic
lithium
lithium For "photo-like" non-photo color,grayscale content use varDCT, For "really non-photographic" color non-photo content use delta palette, For "really non-photographic" grayscale,palette non-photo content, I should use which lossy method in libjxl? (similar av1 lossy palette prediction method)
2022-03-11 03:34:12
I find this issue at 2021 October 08, I guess jxl probably can implement more non-DCT feature for "really non-photographic" color,grayscale,palette non-photo content?
fab
2022-03-11 05:49:28
Photographic i hope they fix in 4 weeks
Jyrki Alakuijala
fab Photographic i hope they fix in 4 weeks
2022-03-12 02:57:00
I believe I understand the concerns that Lee has and can work on them, but I don't yet understand the concerns you have
Maiki3
2022-03-18 02:51:08
2022-03-18 02:51:16
original png: 15MB
2022-03-18 02:52:12
I used a distance of ``0.1``
2022-03-18 02:53:50
Interesting. I am noticing that jpegxl loses quite a bit of quality with green colors
2022-03-18 02:54:13
(but in order for me to notice that, I have to zoom in like, 500% on the image)
2022-03-18 02:54:57
download original PNG here: https://library.amd.com/share/12122FAA-0E17-45A3-B76FE7C4EFC0FB58/?mediaId=C15E5BFC-7884-4C4C-A2CE9A9C219E1EB9
lithium
2022-03-19 02:11:23
What are the advantage for jxl(webp) delta palette? If compare other png lossy method? > lossy Median-Cut posterized, lossy PNG8 palette(256color), lossy Averaging filter(predictors).
_wb_
2022-03-19 05:28:11
Mostly that it can do smooth gradients without dithering
lithium
2022-03-22 02:59:25
I read some delta palette detail from Jyrki Alakuijala, look like I misread something for delta palette and webp near-lossless detail before, I guess jxl delta palette will be a future and more advanced near-lossless mode, hope we can use complete version delta palette in near future(combine varDCT and target distance). 🙂 > Jyrki Alakuijala: > In JPEG XL we haven't yet invested into this, > but WebP v. 1.0 near-lossless heuristics were developed by JPEG XL team members. > I'm considering that the next attempt I'll give on the near-lossless effort > in JPEG XL is likely through custom palettes (combined with the hybrid delta palette). > This is already in the format, only needs an encoder that prepares palettes particularly for this use case.
2022-03-24 04:16:22
Why this assessment choose MS-SSIM? haven't choose DSSIM? > Multi-bitrate compression perceptual evaluation dataset 2022 > https://github.com/google-research/google-research/tree/master/mucped22
BlueSwordM
lithium Why this assessment choose MS-SSIM? haven't choose DSSIM? > Multi-bitrate compression perceptual evaluation dataset 2022 > https://github.com/google-research/google-research/tree/master/mucped22
2022-03-24 05:45:39
That's a great question.
2022-03-24 05:46:10
If I were to guess, it's because MS-SSIM is very fast.
_wb_
2022-03-24 05:55:22
If I were to guess, it's because of the DSSIM license
BlueSwordM
_wb_ If I were to guess, it's because of the DSSIM license
2022-03-24 05:56:01
Is it really?
2022-03-24 05:56:10
It uses AGPL and a commercial license <:Thonk:805904896879493180>
_wb_
2022-03-24 06:09:56
I don't know why that would be a problem for research like that, as long as it is not used in any production environment, but I think Google lawyers for simplicity just say "don't touch it"
BlueSwordM
2022-03-24 06:32:25
I see.
novomesk
2022-03-24 07:01:55
I am trying to add metadata support in KDE https://invent.kde.org/frameworks/kfilemetadata/-/merge_requests/56 The code is trivial. They said, they need test files. When I added them, they said that the tests fail on their system. The reason for failure is obvious, they do not have image/jxl mime type registered.
BlueSwordM
novomesk I am trying to add metadata support in KDE https://invent.kde.org/frameworks/kfilemetadata/-/merge_requests/56 The code is trivial. They said, they need test files. When I added them, they said that the tests fail on their system. The reason for failure is obvious, they do not have image/jxl mime type registered.
2022-03-24 07:02:31
Woah, that would be amazing when implemented.
2022-03-24 07:02:53
Surprised they didn't even think of installing the necessary packages before testing them 😛
DuxVitae
2022-03-25 08:30:42
You can find many raw files from various canon cameras here: https://www.dkamera.de/testbericht/beispielaufnahmen/ (though the site is German) Or I can provide more from my Canon M6 Mark II.
novomesk
2022-03-25 09:48:23
exiv2 is one of the many extractors used by kfilemetadata. You may try to ask if exiv2 can parse dimensions from codestream header but I am not sure about if/when it will be implemented.
2022-03-25 09:59:45
I do not have image/x-canon-cr3 registered on my system. What package (beside future shared-mime-info) provides the .xml for .CR3 files?
Jim
2022-03-25 04:54:48
https://stackoverflow.com/questions/71615956/jpeg-xl-does-lossless-mode-supports-32bits-float
_wb_
2022-03-25 05:30:46
Answered
2022-03-26 07:07:55
Technically, 'jpeg' is not inaccurate since jxl is made by the jpeg
yurume
2022-03-26 10:43:23
`.xl.jpg`
_wb_
2022-03-26 10:51:06
`.jpg.jxl` makes sense (for recompressed jpeg-1 files), `.xl.jpg` not so much
novomesk
2022-03-26 12:58:14
Next version of shared-mime-info will contain image/jxl registration. But they have som trouble to make release. Maybe someone could help: https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/176#note_1313888
Jyrki Alakuijala
lithium Why this assessment choose MS-SSIM? haven't choose DSSIM? > Multi-bitrate compression perceptual evaluation dataset 2022 > https://github.com/google-research/google-research/tree/master/mucped22
2022-03-27 09:16:46
I consider DSSIM likely a good solution (based on TID2013 correlations). The license stops me from using the AGPL version and I wasn't able to convince my leaders to finance the commercial version.
lithium I read some delta palette detail from Jyrki Alakuijala, look like I misread something for delta palette and webp near-lossless detail before, I guess jxl delta palette will be a future and more advanced near-lossless mode, hope we can use complete version delta palette in near future(combine varDCT and target distance). 🙂 > Jyrki Alakuijala: > In JPEG XL we haven't yet invested into this, > but WebP v. 1.0 near-lossless heuristics were developed by JPEG XL team members. > I'm considering that the next attempt I'll give on the near-lossless effort > in JPEG XL is likely through custom palettes (combined with the hybrid delta palette). > This is already in the format, only needs an encoder that prepares palettes particularly for this use case.
2022-03-27 09:19:17
VarDCT and Delta Palette are mutually exclusive, either the image is encoded with delta palette or vardct
2022-03-27 09:19:33
Delta palette is still relatively experimental in JPEG XL and hasn't been optimized much
lithium
Jyrki Alakuijala I consider DSSIM likely a good solution (based on TID2013 correlations). The license stops me from using the AGPL version and I wasn't able to convince my leaders to finance the commercial version.
2022-03-28 09:14:54
I understand, Thank you for your reply. 🙂
Jyrki Alakuijala VarDCT and Delta Palette are mutually exclusive, either the image is encoded with delta palette or vardct
2022-03-28 09:15:08
Yes, I hope libjxl can use heuristic to auto switch VarDCT and Modular(Delta Palette) on target butteraugli distance for different content(photo-like and really non-photographic). > https://github.com/libjxl/libjxl/issues/1188
Fox Wizard
2022-03-28 01:59:56
Heh, lossless jxl looks slightly different in browser than PNG
2022-03-28 02:00:06
2022-03-28 02:00:12
diskorduser
2022-03-28 02:05:01
Where should I report bugs related to gtk jxl pixbuf ?
_wb_
2022-03-28 03:14:31
If the bug is in the plugin that's in the libjxl repo, then there
monad
Fox Wizard Heh, lossless jxl looks slightly different in browser than PNG
2022-03-28 05:57:15
Is the browser not doing color management? They look the same to me.
Fox Wizard
2022-03-28 05:59:53
I don't know. It's Chrome
2022-03-28 05:59:58
1 looks a little lighter than the other
ClenonWolf
2022-03-28 06:18:55
Seems to be chrome then. In ImageGlass they look the same
waltermitty
2022-03-30 08:16:29
Is there a data destination manager concept or API? Like libjpeg, the data destination manager can set next_output_byte, check free_in_buffer and execute callback when buffer has filled.
_wb_
2022-03-30 08:21:23
does anyone know a place where I can get some lossless anime test images?
diskorduser
2022-03-30 08:23:26
Pixiv, zerochan
_wb_
2022-03-30 08:24:50
i mean manga
diskorduser
2022-03-30 08:25:15
torrent ha ha (nyaa si)
w
2022-03-30 08:28:40
realistic best bet is scans or rips often uploaded to the usual public tracker or e-hentai
improver
2022-03-30 08:30:02
some authors do very quality stuff on pixiv tbh
w
2022-03-30 08:30:11
pixiv is the same as deviantart
2022-03-30 08:30:28
there exists high quality but there's also a lot of garbage
improver
2022-03-30 08:31:16
i mean its like that everywhere
w
2022-03-30 08:32:34
and i think right now deviantart's filtering is better
2022-03-30 08:32:56
well for free
improver
2022-03-30 08:33:15
i just follow authors manually
w
2022-03-30 08:36:33
in that case danbooru may be a good filter
diskorduser
2022-03-30 08:37:47
What kind of filters are you guys talking about?
w
2022-03-30 08:37:54
content filter
diskorduser
2022-03-30 08:38:11
Lossless vs lossy image filter?
w
2022-03-30 08:38:18
like garbage vs not garbage
improver
2022-03-30 08:38:25
<https://www.pixiv.net/en/users/1092517> quality artist
_wb_
2022-03-30 08:40:33
i'm looking for pngs, looks like pixiv has jpegs
diskorduser
2022-03-30 08:41:09
It has pngs too. Depends on artists
improver
2022-03-30 08:41:26
i think one needs to log in for full images
2022-03-30 08:41:31
i mean original ones
2022-03-30 08:42:05
sites like danbooru/yande.re may be an option in case logging in is not desired
2022-03-30 08:42:40
<https://www.pixiv.net/en/users/22733898> :>
improver <https://www.pixiv.net/en/users/1092517> quality artist
2022-03-30 08:43:32
actually some of this guy's stuff is jpeg, yeah
diskorduser
2022-03-30 08:44:03
https://static.zerochan.net/Pixiv.full.3611712.png
2022-03-30 08:44:18
Does it count as anime?
w
2022-03-30 08:44:39
<https://danbooru.donmai.us/posts?page=1&tags=comic+rating%3Asafe> is a start it says the format under information when viewing an image
diskorduser
2022-03-30 08:46:24
https://static.zerochan.net/Pixiv.full.3611717.png
2022-03-30 08:47:19
https://static.zerochan.net/Pixiv.full.3611719.png
improver
2022-03-30 08:47:21
<https://danbooru.donmai.us/posts?tags=rating%3Asafe+highres&z=5>
diskorduser
2022-03-30 08:48:57
https://static.zerochan.net/Minami.Otone.full.3611707.png
improver
2022-03-30 08:49:01
<https://www.pixiv.net/en/users/30837811> prob more of art stuff than represantive of "anime"
2022-03-30 08:49:31
2022-03-30 08:55:08
<https://www.pixiv.net/en/users/13594959> pngs
2022-03-30 08:55:41
though very undetailed style
diskorduser
2022-03-30 08:57:08
raw means lossless or un translated?
improver
2022-03-30 08:57:32
untranslated
diskorduser
2022-03-30 09:01:52
I'm going to ask anime discord groups lossless manga <:CatSmile:805382488293244929>
w
2022-03-30 09:01:55
just like everything else, there's no guarantee for "lossless"
improver
2022-03-30 09:26:03
2022-03-30 09:51:05
kinda curious how good jxl is at something like
2022-03-30 09:51:08
https://f4.bcbits.com/img/a0144817839_0
2022-03-30 09:51:38
might aswell try
diskorduser
2022-03-30 09:55:32
What is this <:monkaMega:809252622900789269>
improver
2022-03-30 09:55:59
cover art of https://mahoukichi.bandcamp.com/track/abnormality
lithium
_wb_ does anyone know a place where I can get some lossless anime test images?
2022-03-30 11:47:49
In my opinion, I guess a lot of `manga` content(digital raw) is already transform to `jpeg` (444,420 8bit q92,q96,q99,q100), but still have chance find some `png` `manga`(digital raw) on some gallery site. You can find some `manga` content(scan raw) still keep on `png`, but those raw picture is from scanner, so probably have some gaussian noise on this type raw picture. PIXIV and other gallery site have a lot of `drawing`, `art` content(really non-photographic and photo like), some `drawing` is transform to `jpeg`, but still have high chance find `png` raw version picture (PIXIV need a account to access raw version picture).
2022-03-30 11:50:34
I guess `manga` `jpeg` 444 q99 grayscale or RGB (digital raw) also a acceptable source?
BlueSwordM
_wb_ does anyone know a place where I can get some lossless anime test images?
2022-03-30 02:20:00
Yes, let me send you Scope's testing material.
lithium
2022-03-30 02:23:41
oh, I forgot that, Scope have a lot of good test material.🙂
2022-03-30 02:30:26
https://docs.google.com/spreadsheets/d/1ju4q1WkaXT7WoxZINmQpf4ElgMD2VMlqeDN2DuZ6yJ8/
_wb_
BlueSwordM Yes, let me send you Scope's testing material.
2022-03-30 02:46:59
yes please
BlueSwordM
2022-03-30 02:47:07
DM sent 🙂
2022-03-30 02:47:31
Wait, why did I send a DM? It's public test material <:kekw:808717074305122316>
2022-03-30 02:47:31
https://drive.google.com/drive/folders/1X_F_vhNwJFhPWSW3EeSa-gGhhikkOoYd
2022-03-30 02:48:55
At least it'll be much easier to track that way.
lithium
2022-03-30 02:55:24
libjxl non-photo content(anime,drawing,manga) improvement start.<:Hypers:808826266060193874>
diskorduser
2022-03-30 04:24:16
Gnome session becomes unusable and crashes if I set jpeg -> jxl files as wallpaper. Should I report that to gnome or jxl? Works fine with vardct and modular jxl though.
BlueSwordM
diskorduser Gnome session becomes unusable and crashes if I set jpeg -> jxl files as wallpaper. Should I report that to gnome or jxl? Works fine with vardct and modular jxl though.
2022-03-30 07:10:44
Gnome, because it works fine in my end on Openmandriva(KDE).
diskorduser
BlueSwordM Gnome, because it works fine in my end on Openmandriva(KDE).
2022-03-31 12:53:30
I don't think you can't compare it to KDE because they use different plugins
improver
2022-03-31 02:55:41
what was url for debian jxl builds?
2022-03-31 04:36:01
there used to be url i could just throw in apt sources list
veluca
2022-03-31 08:13:01
there still are
2022-03-31 08:13:22
https://artifacts.lucaversari.it/info.txt
improver
2022-03-31 08:37:18
ah yes these. should be mentioned in libjxl's readme or something like that tbh
veluca
2022-03-31 09:44:42
it's not *exactly* official
improver
2022-03-31 10:16:57
"unofficial but works okay" by core dev is kinda semi-official tbh
2022-03-31 10:18:03
at least it's linked from jpegxl.info
2022-03-31 10:18:47
without any mention of debian though
lonjil
2022-03-31 01:36:46
Now to obtain an illegal copy...
improver
2022-03-31 01:38:04
official release is prob worse than v2 draft stuff which was posted somewhere in here sometime earlier
lonjil
2022-03-31 02:40:49
👀
_wb_
2022-03-31 02:43:45
we're aiming to get the committee draft of the 2nd edition done at the upcoming JPEG meeting in April.
2022-03-31 02:43:56
committee drafts can be made public
2022-03-31 02:45:02
i'm not sure if drafts of committee drafts can be made public
2022-03-31 02:45:47
here's the current draft of the 2nd edition
lonjil
2022-03-31 02:56:11
ty
2022-03-31 02:57:50
heh, just the fact that this is a properly typeset LaTeX document already makes it much much better than the FDIS pdf I found elsewhere.
_wb_
2022-03-31 03:02:37
yeah, I just hope we can keep using tex. ISO _really_ wants us to use Microsoft Word, which is probably the worst possible tool for this job.
BlueSwordM
_wb_ yeah, I just hope we can keep using tex. ISO _really_ wants us to use Microsoft Word, which is probably the worst possible tool for this job.
2022-03-31 03:05:39
Bruh WTF.
2022-03-31 03:06:05
Is that why so much stuff is in poorly formatted word documents?
_wb_
2022-03-31 03:10:31
Yes. They are insisting really hard on Word.
2022-03-31 03:22:17
For the first edition, we did it their way, mostly to avoid more delays than the usual ISO slowness
2022-03-31 03:23:00
But for the second edition I intend to resist more...
2022-03-31 03:49:36
yes, and maybe it should also be added here: https://en.wikipedia.org/wiki/List_of_International_Organization_for_Standardization_standards,_18000-19999
veluca
2022-03-31 03:56:16
we should also ping the mimetype ppl
_wb_
2022-03-31 03:59:54
you mean IANA?
2022-03-31 04:00:05
yes we should get out of that provisional list and in the real list
2022-03-31 04:00:39
can you figure out who to ping for that?
2022-03-31 04:01:10
maybe there's action required on our end, like maybe we need to put something about the media type in the spec
Deleted User
_wb_ Yes. They are insisting really hard on Word.
2022-03-31 04:55:19
`pandoc spec.tex -o spec.docx` :)
Traneptora
_wb_ yeah, I just hope we can keep using tex. ISO _really_ wants us to use Microsoft Word, which is probably the worst possible tool for this job.
2022-03-31 06:26:11
.... why?
2022-03-31 06:26:25
they should know better
lonjil
2022-03-31 06:30:21
People outside of compsci, math, and a few of the sciences, don't use TeX at all.
Traneptora
2022-03-31 06:30:46
this is an international standard relating literally to compsci and applied math tho
lonjil
2022-03-31 06:31:17
yeah but ISO aren't compsci or math people
2022-03-31 06:31:31
they're bureaucrats
2022-03-31 06:31:55
the whole organisation is probably built 100% on Microsoft Office and Exchange
Traneptora
_wb_ here's the current draft of the 2nd edition
2022-03-31 06:34:11
I'm confused about this
2022-03-31 06:34:19
2022-03-31 06:34:31
specifically
2022-03-31 06:34:33
> The decoder then reads the HybridUintConfig for each clustered distribution
2022-03-31 06:34:56
how does one read HybridUintConfig for each clustered distribution, when this is a function that takes in one argument, which is `log_alphabet_size`?
2022-03-31 06:35:40
is a clustered distribution just a number?
2022-03-31 06:35:47
what is the format of a clustered distribution?
2022-03-31 06:36:45
does the decoder read `use_prefix_code` as a `Bool()` for *each* distribution, and set the corresponding `log_alphabet_size` accordingly?
2022-03-31 06:37:10
if so, this is not clear from the spec
2022-03-31 06:37:45
or does it do it once, and then use the *same* `log_alphabet_size` for each one, and if so, how does that not return the same HybridUintConfig each time?
veluca
2022-03-31 07:57:09
> use the same log_alphabet_size for each one yep > how does that not return the same HybridUintConfig each time it is read from the bitstream (there are some `u()` calls)
2022-03-31 07:57:19
<@!794205442175402004> maybe could use some clarifications...
_wb_
2022-03-31 08:38:16
Yes, could be worded better
Traneptora this is an international standard relating literally to compsci and applied math tho
2022-03-31 08:40:19
The thing is, ISO has the same procedures for all standards, whether it is a technical one or one about pointy-haired boss stuff like company management best practices.
2022-03-31 08:40:36
And it's the pointy-haired boss people who make the rules
Traneptora
veluca > use the same log_alphabet_size for each one yep > how does that not return the same HybridUintConfig each time it is read from the bitstream (there are some `u()` calls)
2022-03-31 10:41:55
> The decoder then reads the clustering of the `num_dist` distributions (if `lz77.enabled`, then `num_dist + 1`) as specified in C.2.5, unless only one distribution is to be decoded, in which case C.2.5 is skipped.
2022-03-31 10:42:13
This says "unless only one distribution is to be decoded"
2022-03-31 10:42:37
does that include the LZ77 distribution, so in the case where `lz77.enabled && num_dist > 0` then C2.5 is always read?
2022-03-31 10:42:47
or does it not include the LZ77 distribution, i.e. `num_dist > 1` is the only test
veluca
2022-03-31 10:44:24
If lz77.enabled you always C.2.5
2022-03-31 10:44:36
... could use some clarification too
2022-03-31 10:44:52
(num_dist is never 0)
Traneptora
2022-03-31 10:51:14
what's the maximum value for `num_dist`?
2022-03-31 11:03:47
also, in C2.4 you have this
2022-03-31 11:04:13
``` if (Bool()) { ns = u(1) + 1; if (ns == 1) foo; else bar; return 0; } ``` with no other reference to `ns` in that block
2022-03-31 11:04:26
what I'm wondering is why you read a bool, add 1, and then use it for nothing but an if statement
2022-03-31 11:04:36
why not `if (Bool())`
2022-03-31 11:04:38
what am I missing here
2022-03-31 11:07:26
another thing:
2022-03-31 11:07:41
```c table_size = 1 << log_alphabet_size; /* initialize D as array with table_size entries with value 0 */ if (Bool()) { ns = u(1) + 1; if (ns == 1) { x = U8(); D[x] = 1 << 12; } else { v1 = U8(); v2 = U8(); /* v1 != v2 */ D[v1] = u(12); D[v2] = (1 << 1) - D[v1]; } return; } ```
2022-03-31 11:08:07
`log_alphabet_size` is can be less than 8 here since it's equal to `5 + u(2)`
2022-03-31 11:08:36
which means that it's possible that `x = U8()` yields a value out of bounds
2022-03-31 11:08:53
it says that attempting to read from the distribution out of bounds yields 0, but it doesn't say what happens when you attempt to *assign* to it
2022-03-31 11:09:11
if `x = U8()` is out of bounds, is this considered an illegal codestream?
2022-03-31 11:09:17
or is there something missing?
2022-03-31 11:11:34
cause reading `(1 << 1)` in parentheses is weird as well
2022-03-31 11:11:36
like, whawt?
2022-03-31 11:12:09
I assume that's supposed to say `(1 << 12)`
2022-03-31 11:19:08
same with the next part, there's no guarantee that `alphabet_size` is going to be less than `table_size`
2022-03-31 11:22:42
I'm also confused about this part
2022-03-31 11:24:08
```c for (; i < ((1 << 12) Umod alphabet_size); i++) D[i] = floor((1 << 12) / alphabet_size); for (; i < alphabet_size; i++) D[i] = floor((1 << 12) / alphabet_size); ``` how is this not equivalent to something like ```c m = max((1 << 12) % alphabet_size, alphabet_size); for (i = 0; i < m; i++) D[i] = floor((1 << 12) / alphabet_size); ```
2022-03-31 11:24:17
there's certain things here in the spec that are, well very verbose
2022-03-31 11:30:44
in a way that doesn't make sense
2022-03-31 11:30:48
like "why did you write it this way?"
veluca
Traneptora same with the next part, there's no guarantee that `alphabet_size` is going to be less than `table_size`
2022-04-01 01:09:41
that is almost certainly true
Traneptora why not `if (Bool())`
2022-04-01 01:13:23
it can probably be written that way, it should be equivalent... I think the current code tries to match the corresponding C++ code: https://github.com/libjxl/libjxl/blob/main/lib/jxl/dec_ans.cc#L58
Traneptora if `x = U8()` is out of bounds, is this considered an illegal codestream?
2022-04-01 01:14:14
that's a very very good question and I think we should say what happens in that case... as well as check what libjxl does, I wouldn't be surprised to find something unexpected there
Traneptora ```c for (; i < ((1 << 12) Umod alphabet_size); i++) D[i] = floor((1 << 12) / alphabet_size); for (; i < alphabet_size; i++) D[i] = floor((1 << 12) / alphabet_size); ``` how is this not equivalent to something like ```c m = max((1 << 12) % alphabet_size, alphabet_size); for (i = 0; i < m; i++) D[i] = floor((1 << 12) / alphabet_size); ```
2022-04-01 01:16:19
sigh, that's incorrect indeed, the first set of values should get floor(...) + 1
2022-04-01 01:16:33
<@!794205442175402004> do you think you can fix that?
_wb_
2022-04-01 05:05:01
There's a +1 missing?
2022-04-01 05:05:05
Sure
2022-04-01 05:06:08
How did that happen, and why didn't anyone notice before? Lol
2022-04-01 05:13:51
Anyway, great feedback, and nicely in time to fix stuff for the CD of 2nd edition.
2022-04-01 05:14:52
I wish ISO would allow us to make the spec repo a public repo so these things could be discussed in issues and pull requests
2022-04-01 08:06:31
preparing a spec PR to fix those bugs and try to clarify things
2022-04-01 08:25:50
the out-of-bounds cases of simple distributions should be checked, maybe there's a bug there that fuzzing somehow didn't find
2022-04-01 08:46:34
here's the updated draft with my proposed fixes/clarifications
2022-04-01 08:47:20
<@!853026420792360980> feel free to check if it is now better and suggest further things that can be improved
2022-04-01 08:58:30
<@!179701849576833024> https://github.com/jpegxl-spec/jxl-spec-draft/pull/20 PTAL
veluca
2022-04-01 09:01:28
Will do
Traneptora
2022-04-01 01:51:49
it looks like Lynne is going to be writing a native Jpeg XL decoder for FFmpeg
2022-04-01 01:52:00
based on the public draft spec
2022-04-01 01:54:52
it's going to take some effort, yea
2022-04-01 01:55:10
also some infrastructure
2022-04-01 01:55:26
since what's likely going to happen is XYB will be added as a colorspace to FFmpeg and then the decoder will simply output XYB
2022-04-01 01:55:34
and libswscale will be required to convert it
2022-04-01 01:56:04
the idea is not *instead of* my patch but in addition to it
veluca
2022-04-01 02:13:58
that's (a) good news and (b) a very big project 😄 (although perhaps not so much if you don't need it to be super fast)
BlueSwordM
veluca that's (a) good news and (b) a very big project 😄 (although perhaps not so much if you don't need it to be super fast)
2022-04-01 02:15:09
Dont worry too much: Lynne is an absolute monster.
2022-04-01 02:15:15
She absolutely knows what she is doing.
veluca
2022-04-01 02:18:18
I don't doubt that, but it's still a very significant endeavour 😄
BlueSwordM
2022-04-01 02:33:17
Indeed <:kekw:808717074305122316>
_wb_
Traneptora based on the public draft spec
2022-04-02 08:38:05
This is the best way to find spec bugs, so this is great!
yurume
2022-04-02 04:34:12
I appreciate a notation change from U32(whatever) to U32(1, 2 + u(3), etc), which reads much more naturally
_wb_
2022-04-02 04:55:08
Yes, I like that notational improvement too (and also that it's now a TeX macro so easy to change)
spider-mario
_wb_ This is the best way to find spec bugs, so this is great!
2022-04-02 07:19:09
fingers crossed 🤞
Deleted User
_wb_ yes, and maybe it should also be added here: https://en.wikipedia.org/wiki/List_of_International_Organization_for_Standardization_standards,_18000-19999
2022-04-03 06:39:39
Done 🙂
yurume
_wb_ here's the updated draft with my proposed fixes/clarifications
2022-04-03 11:51:20
can I make some feedbacks (possibly wrong ones though) based on this proposed version?
improver
2022-04-04 12:18:04
that may end up being helpful so id say yes
yurume
2022-04-04 12:21:06
my notes were: I think `offset + u(n)` notation outside of U32() arguments is undefined. Its meaning is obvious by its own of course, but for the completeness I think it should be noted in B.2.1. (Also B.2.2 has broken TeX commands.) I think the table D.2 is probably the very first thing people would have to understand in order to parse a JXL bitstream, and yet it has two exceptional cases that I believe should be noted: - The domain of field types may not contain the default value for that field. `h/w_div8` has a type of `1 + u(5)` which domain should be [1, 33) (this might not be that obvious however, hence the preceding remark) but a default value of 0. - The default values of h_div8 and height etc. are in my opinion hard to understand. It is a roundabout way to say height is `div8 ? 8 × (1 + u(5)) : U32(...)`, which is the real reason why h_div8 has a default value of 0 as it gets unused anyway. The table also has a typo `!div` which should be `!div8`.
Jyrki Alakuijala
_wb_ Anyway, great feedback, and nicely in time to fix stuff for the CD of 2nd edition.
2022-04-05 03:52:38
let's delay the 2nd edition until there is a lesser frequency of these findings
_wb_
2022-04-05 04:32:30
The public CD of the 2nd edition will allow more eyes to spot bugs/unclear parts. Delaying the CD will not help that much imo. We will have time after CD to fix more of these, since there's still the DIS, FDIS and final IS stages.
2022-04-05 04:33:11
That said, what can be fixed before CD should be fixed before CD, because starting with DIS we can no longer avoid ISO's paywall
2022-04-05 04:34:29
(if there's something significant enough popping up after 2nd edition CD, we can always choose to postpone fixing it until a 3rd edition so it ends up in the CD of that)
Nova Aurora
_wb_ That said, what can be fixed before CD should be fixed before CD, because starting with DIS we can no longer avoid ISO's paywall
2022-04-06 06:25:43
You can't release multiple commitee drafts?
_wb_
2022-04-10 12:10:12
Nearly no applications support actual lossless jpeg, so I assume they just mean something like very high quality regular jpeg (q98 or maybe even q100).
Razor54672
2022-04-10 01:52:51
Yes, DNG
2022-04-10 01:53:05
The file size is about 10 times as much compared to the JPEG output
spider-mario
_wb_ Nearly no applications support actual lossless jpeg, so I assume they just mean something like very high quality regular jpeg (q98 or maybe even q100).
2022-04-10 02:14:43
maybe it’s even still chroma-subsampled
Fox Wizard
2022-04-10 03:00:27
Hm, for me DNG is usually 5 times as big as jpeg unless it's an easy to compress video
Razor54672
2022-04-10 03:10:29
video?