|
_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_
|
|
DZgas Ж
|
|
_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
|
|
_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
|
|
|
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
|
|
_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
|
|
|
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
|
|
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
|
|
_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?
|
|