|
lonjil
|
2024-03-07 12:37:44
|
one time I used an implementation of NIST's recommended randomness tester, on a 1GiB randomly generated file
|
|
2024-03-07 12:38:05
|
OOM-killer saved me after it ate up all my 80 GiB of swap
|
|
|
|
afed
|
2024-03-07 12:38:23
|
btw, it's still <#803645746661425173>
|
|
|
CrushedAsian255
|
|
Quackdoc
|
2024-03-07 12:38:31
|
ill run `paru -Syu` and it saves me a lot
|
|
|
CrushedAsian255
|
2024-03-07 12:38:43
|
does mac have an oom killer?
|
|
|
lonjil
|
2024-03-07 12:38:57
|
i have no idea
|
|
2024-03-07 12:39:04
|
probably not?
|
|
|
CrushedAsian255
|
2024-03-07 12:39:34
|
what happens when oom then? i usually have enough swap
|
|
|
lonjil
|
2024-03-07 12:40:10
|
linux is like the only OS on which asking the OS for RAM never returns an error, so it needs a way to recover from overcommitment gone wrong
|
|
|
Traneptora
|
|
CrushedAsian255
`DeBrujinSequence[2,1000000000]`
|
|
2024-03-07 12:40:46
|
this is one of those times when `Alt + .` comes in handy
|
|
2024-03-07 12:41:04
|
tells the MathKernel to abort the operation
|
|
|
lonjil
|
2024-03-07 12:41:31
|
on other OSs, applications may choose to abort if malloc returns an error, or they may choose to try to turn off safely if possible
|
|
|
CrushedAsian255
|
2024-03-07 12:42:30
|
like what happens if i run this
```cpp
int main() {
char* array[1024];
// lazy allocation
for (int x = 0; x < 1024; x++) {
array[x] = (char*) malloc(10000000000); // 10GB
}
for (int x = 0; x < 1024; x++) {
for(int y = 0; y < 10000000000; y++) {
array[x][y] = 69;
}
}
}
```
|
|
|
Traneptora
|
2024-03-07 12:42:45
|
for example, if allocations fail in mpv, it just aborts
|
|
2024-03-07 12:42:58
|
since the assumptions are that a video player can't operate under conditions of low memory
|
|
|
CrushedAsian255
|
|
Traneptora
since the assumptions are that a video player can't operate under conditions of low memory
|
|
2024-03-07 12:43:18
|
and aborting wouldn't break something too badly
|
|
|
Traneptora
|
2024-03-07 12:43:23
|
in ffmpeg it returns ENOMEM and it's up to the caller what they want to do about it
|
|
|
lonjil
|
|
CrushedAsian255
like what happens if i run this
```cpp
int main() {
char* array[1024];
// lazy allocation
for (int x = 0; x < 1024; x++) {
array[x] = (char*) malloc(10000000000); // 10GB
}
for (int x = 0; x < 1024; x++) {
for(int y = 0; y < 10000000000; y++) {
array[x][y] = 69;
}
}
}
```
|
|
2024-03-07 12:43:41
|
probably segfault or something when you try to use the null pointer returned from malloc
|
|
|
CrushedAsian255
|
|
lonjil
probably segfault or something when you try to use the null pointer returned from malloc
|
|
2024-03-07 12:44:01
|
no but it doesn't actually allocate the 10GB, it's like a Sparse file
|
|
|
lonjil
|
2024-03-07 12:44:14
|
btw, returning to the earlier topic, for some reason I find this so funny a thing to read about a desktop-sized system:
> 1024-bit octa-channel LPDDR5-6400
|
|
|
CrushedAsian255
no but it doesn't actually allocate the 10GB, it's like a Sparse file
|
|
2024-03-07 12:44:32
|
on Linux, yes. Not necessarily on other OSs.
|
|
|
Traneptora
|
|
CrushedAsian255
like what happens if i run this
```cpp
int main() {
char* array[1024];
// lazy allocation
for (int x = 0; x < 1024; x++) {
array[x] = (char*) malloc(10000000000); // 10GB
}
for (int x = 0; x < 1024; x++) {
for(int y = 0; y < 10000000000; y++) {
array[x][y] = 69;
}
}
}
```
|
|
2024-03-07 12:44:48
|
it's likely the compiler will optimize the second loop to a memset
but regardless of that, malloc returns NULL on allocation failure, and attempting to dereference NULL will segfault your process
|
|
|
CrushedAsian255
|
|
lonjil
on Linux, yes. Not necessarily on other OSs.
|
|
2024-03-07 12:45:04
|
mac it does as well
|
|
|
Traneptora
|
2024-03-07 12:45:07
|
as bob beck once put it, "if you try to `strdup(NULL)` it goes BANG!"
|
|
|
lonjil
|
2024-03-07 12:45:20
|
even if it's sparse, there isn't necessarily overcommit
|
|
|
CrushedAsian255
|
2024-03-07 12:45:34
|
hang on lemme test
|
|
|
|
afed
|
|
afed
btw, it's still <#803645746661425173>
|
|
2024-03-07 12:45:58
|
some offtopic is fine, but it's too much, would be harder to find some old comparisons and etc
|
|
|
CrushedAsian255
|
2024-03-07 12:46:12
|
let's move to <#806898911091753051> then
|
|
|
lonjil
|
2024-03-07 12:46:44
|
for posterity, convo continued here: https://discord.com/channels/794206087879852103/806898911091753051/1215098216454955122
|
|
|
monad
|
2024-03-07 12:04:12
|
For the love of Jon.
|
|
|
fab
|
2024-03-07 01:33:26
|
|
|
2024-03-07 01:33:35
|
New compression results
|
|
|
_wb_
|
|
monad
For the love of Jon.
|
|
2024-03-07 04:04:02
|
interesting to see that breakdown by category β so it's mostly pixel art, text, icons/ui stuff where webp is still doing great and jxl is lagging behind... If you could send me a set of originals, I may want to take a look at some point at trying to improve some heuristics
|
|
|
yoochan
|
|
monad
For the love of Jon.
|
|
2024-03-07 05:04:36
|
Amazing! Do you classify manually?
|
|
|
fab
|
|
_wb_
interesting to see that breakdown by category β so it's mostly pixel art, text, icons/ui stuff where webp is still doing great and jxl is lagging behind... If you could send me a set of originals, I may want to take a look at some point at trying to improve some heuristics
|
|
2024-03-07 05:24:53
|
HDblog uses jpg
|
|
2024-03-07 05:25:26
|
Webp is used for exp photos in the 100 kb - 200 kv range
|
|
|
monad
|
|
yoochan
Amazing! Do you classify manually?
|
|
2024-03-07 07:29:28
|
Yes, it is based on my judgement. I tag based on the primary composition of the image, but can also add tags for deviations, i.e. a screenshot of a video frame is film, one with some playback ui overlaid is film-ui. You could say all game screens are ui, but I didn't because it's very different content than typical app/web ui.
|
|
|
yoochan
|
2024-03-07 08:03:39
|
Amazing
|
|
|
jonnyawsom3
|
2024-03-08 12:52:37
|
```
wintime -- cjxl --disable_output -d 0 -e 1 OpenTTD.png
JPEG XL encoder v0.10.1 5f67ebc [AVX2,SSE2]
Encoding [Modular, lossless, effort: 1]
Compressed to 784618.7 kB (5.195 bpp).
49121 x 24598, 153.367 MP/s [153.37, 153.37], 1 reps, 16 threads.
PageFaultCount: 2810494
PeakWorkingSetSize: 6.833 GiB
QuotaPeakPagedPoolUsage: 35.24 KiB
QuotaPeakNonPagedPoolUsage: 67.06 KiB
PeakPagefileUsage: 11.01 GiB
Creation time 2024/03/08 00:44:28.366
Exit time 2024/03/08 00:44:46.819
Wall time: 0 days, 00:00:18.453 (18.45 seconds)
User time: 0 days, 00:00:03.609 (3.61 seconds)
Kernel time: 0 days, 00:00:49.609 (49.61 seconds)
```
An 80 MB, 8bit (Stored as 24bit) PNG. I'm surprised it used so much memory, seeing as even raw 24bit is under 4 GB
|
|
|
|
veluca
|
2024-03-08 01:10:58
|
I don't remember for sure what djxl uses before writing the PNG, but it's probably floats
|
|
|
jonnyawsom3
|
2024-03-08 01:16:20
|
This is cjxl
|
|
2024-03-08 01:19:50
|
```
wintime -- cjxl --disable_output -d 0 -e 1 Minimap.png
JPEG XL encoder v0.10.1 5f67ebc [AVX2,SSE2]
Encoding [Modular, lossless, effort: 1]
Compressed to 566.5 kB (0.135 bpp).
8192 x 4096, 198.380 MP/s [198.38, 198.38], 1 reps, 16 threads.
PageFaultCount: 52984
PeakWorkingSetSize: 196.5 MiB
QuotaPeakPagedPoolUsage: 35.24 KiB
QuotaPeakNonPagedPoolUsage: 8.492 KiB
PeakPagefileUsage: 194.2 MiB
Creation time 2024/03/08 01:17:27.999
Exit time 2024/03/08 01:17:28.362
Wall time: 0 days, 00:00:00.362 (0.36 seconds)
User time: 0 days, 00:00:00.046 (0.05 seconds)
Kernel time: 0 days, 00:00:01.015 (1.02 seconds)
```
A 8192 x 4069, 4bit file (Again stored as a 24bit PNG)
|
|
|
Orum
|
2024-03-08 01:27:11
|
what if you use ppm and --streaming_input/output?
|
|
|
jonnyawsom3
|
2024-03-08 01:27:15
|
49121 x 24598 in raw 24bit is just under 4GB
In 8bit (which is what the image actually is) it's just over 1GB
So something is using up an extra 7GB or more with the streaming on, unless I've made a mistake
|
|
|
Orum
|
2024-03-08 01:28:13
|
but neither of those has streaming on?
|
|
|
jonnyawsom3
|
2024-03-08 01:29:51
|
Streaming encoding is always on unless at e10
|
|
|
Orum
|
2024-03-08 01:30:19
|
that's what I thought but apparently not
|
|
|
jonnyawsom3
|
2024-03-08 02:06:53
|
I forgot that streaming input effects the density too, more secrets to learn....
|
|
2024-03-08 02:08:10
|
Shame PPM doesn't have 8bit, so I'll have to make a 4GB intermediate file out of a 80MB PNG to do it (And then probably end up with a worse result than just optimizing the PNG because of sprites and tiles)
|
|
|
Orum
|
2024-03-08 02:11:39
|
also streaming input only works with ppm/pgm
|
|
|
jonnyawsom3
|
2024-03-08 02:11:59
|
Yeah which is why I'm dreading the 4GB PPM
|
|
|
Orum
|
2024-03-08 02:12:02
|
you can pipe into cjxl, right?
|
|
2024-03-08 02:15:04
|
<:YEP:808828808127971399> you can: `convert foo.png PPM:- | cjxl - bar.jxl`
|
|
2024-03-08 02:15:34
|
didn't test it with --streaming_input though, but it will probably work
|
|
2024-03-08 02:16:53
|
oh no, it doesn't <:AngryCry:805396146322145301> `PNM decoding failed.`
|
|
2024-03-08 02:17:34
|
weird, I would think streaming_input would work with streams, but I guess not <:KekDog:805390049033191445>
|
|
2024-03-08 02:20:18
|
how big is the actual png?
|
|
|
jonnyawsom3
|
|
```
wintime -- cjxl --disable_output -d 0 -e 1 OpenTTD.png
JPEG XL encoder v0.10.1 5f67ebc [AVX2,SSE2]
Encoding [Modular, lossless, effort: 1]
Compressed to 784618.7 kB (5.195 bpp).
49121 x 24598, 153.367 MP/s [153.37, 153.37], 1 reps, 16 threads.
PageFaultCount: 2810494
PeakWorkingSetSize: 6.833 GiB
QuotaPeakPagedPoolUsage: 35.24 KiB
QuotaPeakNonPagedPoolUsage: 67.06 KiB
PeakPagefileUsage: 11.01 GiB
Creation time 2024/03/08 00:44:28.366
Exit time 2024/03/08 00:44:46.819
Wall time: 0 days, 00:00:18.453 (18.45 seconds)
User time: 0 days, 00:00:03.609 (3.61 seconds)
Kernel time: 0 days, 00:00:49.609 (49.61 seconds)
```
An 80 MB, 8bit (Stored as 24bit) PNG. I'm surprised it used so much memory, seeing as even raw 24bit is under 4 GB
|
|
2024-03-08 02:26:55
|
> 49121 x 24598
|
|
2024-03-08 02:27:38
|
Ironically this was meant to be a 'small scale' test of this one 1572353 x 786777
|
|
|
Orum
|
2024-03-08 02:29:57
|
I mean big as in file size...
|
|
|
jonnyawsom3
|
2024-03-08 02:30:56
|
> An 80 MB, 8bit (Stored as 24bit) PNG
|
|
|
Orum
|
2024-03-08 02:31:04
|
ah okay, so not too bad
|
|
|
jonnyawsom3
|
2024-03-08 02:31:37
|
The data itself is in 8KB chunks like I said before, so could be a lot smaller. Already 98% compression ratio
|
|
|
Orum
|
2024-03-08 02:32:06
|
did you do the massive res one yet?
|
|
|
jonnyawsom3
|
2024-03-08 02:35:03
|
No, I've only got 60GB free and that in raw would be 20GB alone, hence trying the smaller one first
|
|
2024-03-08 10:28:01
|
Turns out I made a slight miscalculation
|
|
2024-03-08 10:28:29
|
The full size image would be over 1TB in 8bit raw
|
|
|
CrushedAsian255
|
2024-03-08 11:30:42
|
3TB if 24bpp
|
|
|
HCrikki
|
2024-03-09 12:13:30
|
phoronix test suite updated its encoder and decoder benchmark to 0.10.1 (had 0.7.0 before) in case anyone wanna contribute
|
|
|
lonjil
|
2024-03-09 12:15:14
|
just in time for 0.10.2
|
|
|
|
afed
|
2024-03-09 12:18:27
|
avx512 would also be interesting for these tests, but most likely it's disabled by default
though, mostly for lossless e1, which is not tested
|
|
|
HCrikki
|
2024-03-09 12:19:10
|
can anyone look if its parameters are alright? wondering if its going for the newer recommended defaults/efforts, modular streaming and more than 1 thread
|
|
|
|
afed
|
2024-03-09 12:25:26
|
https://github.com/phoronix-test-suite/test-profiles/issues/186
|
|
2024-03-09 12:30:56
|
it might be a good idea to add the most balanced efforts for lossy and lossless
and maybe even lossless e1 with like 50 reps
|
|
2024-03-09 12:40:53
|
ah, it's not accepted
https://github.com/phoronix-test-suite/test-profiles/pull/187
|
|
2024-03-09 12:45:11
|
weird profiles, q90 or q80 doesn't make much sense for speed tests, same as lossy for png or jpeg
and there is no other efforts
|
|
|
HCrikki
|
2024-03-09 12:49:03
|
shouldnt encoding from a jpg source use the lossless reconvertible path? wondering as i see some conversion/export features in apps (like xnviewmp) doing full recompressions instead of going for almost instant compressions from jpg with guaranteed lower filesize
|
|
2024-03-09 12:50:15
|
well for pts its still very early in the 1.6.0 cycle so maybe that could change?
|
|
|
jonnyawsom3
|
2024-03-09 12:50:38
|
Jpeg recompression has to be explicitly asked for when using the library rather than just cjxl
|
|
|
|
afed
|
2024-03-09 12:55:56
|
except q100, it's the same lossy compression even for jpeg if I remember correctly
|
|
|
_wb_
|
2024-03-09 08:11:30
|
The library API works on pixel buffers (or byte buffers), not on filenames.
|
|
|
Traneptora
|
2024-03-09 10:11:16
|
yea, to pass a jpeg or png you need to bring your own decoder for that
|
|
2024-03-09 10:11:31
|
and then pass the pixels
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-15 09:47:41
|
hello there
I was curious about JPEG benchmark with differents encoders, like this one:
https://github.com/google-research/google-research/tree/master/mucped23
https://raw.githubusercontent.com/google-research/google-research/master/mucped23/jpegli_study_elo_plots.png
I read other benchmarks too on the same subject, and we can clearly see jpegli winning in all of them.
But I come across some JPG "in-codec" optimizers (JPG input β smaller JPG output with matching checksum) that don't touch the metadata nor ICC
So I was **really really really** curious to see if by using this kind of optimizer as a post-operation (aka running it on each output of the different JPG encoders) would **change the ranking order**
Therefore I'm asking if anyone still has some JPGs from a benchmark result, and would be willing to share (as I can run these optimizers - and they might take some time)
|
|
|
_wb_
|
2024-03-15 09:59:24
|
Mostly to optimize losslessly within JPEG, what you can do is try different progressive scripts, and optimize Huffman tables (and use arithmetic coding, if you're ok with going outside the de facto standard)
|
|
2024-03-15 10:00:40
|
Jpegli mostly does that already by default - not as exhaustively as default mozjpeg though, so with mozjpegtran you might be able to get some additional small savings
|
|
|
yoochan
|
2024-03-15 10:11:06
|
ELO score ? like in chess ?
|
|
2024-03-15 10:11:39
|
apparently...
|
|
|
Orum
|
2024-03-15 10:12:23
|
Electric Light Orchestra
|
|
|
TheBigBadBoy - πΈπ
|
|
_wb_
Jpegli mostly does that already by default - not as exhaustively as default mozjpeg though, so with mozjpegtran you might be able to get some additional small savings
|
|
2024-03-15 10:40:53
|
oh, that's good to know. Perhaps why jpegli is winning is because it does better progressive scripts (?)
for example with simple `cjpegli in.png out.jpg`
`out.jpg` is 559 436 bytes
optimized with ECT: 557 771 bytes
optimized with jpegtran (mozjpg): 557 955 bytes
ultra brute force scripts: 556 942 bytes
ECT and jpegtran were almost done instantly, and the 3rd one took 545 seconds with 16 threads
Effectively I've seen much more gain size with other encoders than cjpegli using the 3rd optimizer
|
|
|
|
afed
|
2024-03-15 10:44:05
|
so it's a 0.4% difference for ultra brute force
|
|
|
_wb_
|
2024-03-15 10:44:37
|
well jpegli seems to use this script:
```
Start Of Scan: 3 components
Component 1: dc=0 ac=0
Component 2: dc=1 ac=1
Component 3: dc=1 ac=2
Ss=0, Se=0, Ah=0, Al=0
Start Of Scan: 1 components
Component 1: dc=0 ac=0
Ss=1, Se=2, Ah=0, Al=0
Start Of Scan: 1 components
Component 2: dc=1 ac=1
Ss=1, Se=2, Ah=0, Al=0
Start Of Scan: 1 components
Component 3: dc=1 ac=2
Ss=1, Se=2, Ah=0, Al=0
Start Of Scan: 1 components
Component 1: dc=0 ac=3
Ss=3, Se=63, Ah=0, Al=2
Start Of Scan: 1 components
Component 2: dc=1 ac=1
Ss=3, Se=63, Ah=0, Al=2
Start Of Scan: 1 components
Component 3: dc=1 ac=1
Ss=3, Se=63, Ah=0, Al=2
```
which I guess boils down to first the 1:8 image, then then the 1:4 image, then the rest.
|
|
2024-03-15 10:44:57
|
well not quite, some of the data for 1:4 is missing
|
|
2024-03-15 10:47:52
|
but you get the basic horizontal and vertical gradient in each block with that first AC pass
|
|
2024-03-15 10:51:24
|
(above are the first 7 passes, there are some more after that to get the least significant bits right)
```
Define Huffman Table 0x10
0 2 2 1 2 5 4 3
0 3 1 1 0 0 0 0
Start Of Scan: 1 components
Component 1: dc=0 ac=0
Ss=3, Se=63, Ah=2, Al=1
Define Huffman Table 0x11
0 1 3 1 8 2 2 2
2 3 1 0 0 0 0 0
Start Of Scan: 1 components
Component 2: dc=1 ac=1
Ss=3, Se=63, Ah=2, Al=1
Start Of Scan: 1 components
Component 3: dc=1 ac=1
Ss=3, Se=63, Ah=2, Al=1
Define Huffman Table 0x12
0 1 3 3 2 6 2 3
0 3 1 0 0 0 0 0
Start Of Scan: 1 components
Component 1: dc=0 ac=2
Ss=3, Se=63, Ah=1, Al=0
Start Of Scan: 1 components
Component 2: dc=1 ac=1
Ss=3, Se=63, Ah=1, Al=0
Define Huffman Table 0x13
0 1 3 2 4 4 6 3
1 1 0 0 0 0 0 0
Start Of Scan: 1 components
Component 3: dc=1 ac=3
Ss=3, Se=63, Ah=1, Al=0
```
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-15 10:54:39
|
https://cdn.discordapp.com/emojis/872898333239279666.png?quality=lossless&size=48
|
|
|
afed
so it's a 0.4% difference for ultra brute force
|
|
2024-03-15 10:57:49
|
and definitely I've seen many files getting 10% reduction with the scripts brute force
so definitely cjpegli is good at that
|
|
|
|
afed
|
2024-03-15 10:58:37
|
maybe e10/e11 will be also useful for jpegli, though the difference is small just for optimization
but maybe in the future use some other slower modes and more accurate butteraugli
|
|
|
TheBigBadBoy - πΈπ
and definitely I've seen many files getting 10% reduction with the scripts brute force
so definitely cjpegli is good at that
|
|
2024-03-15 11:11:27
|
for mozjpeg the difference should also be small, unless there is some large unused or stripped metadata
|
|
|
|
veluca
|
|
yoochan
ELO score ? like in chess ?
|
|
2024-03-15 12:15:22
|
blame me for that π it's something people are familiar with π
|
|
|
yoochan
|
2024-03-15 12:22:38
|
it make sense for side to side evaluation
|
|
|
|
veluca
|
2024-03-15 12:23:21
|
this is not actually side-by-side, it's in-place with original on the side... but yes
|
|
|
TheBigBadBoy - πΈπ
|
|
afed
maybe e10/e11 will be also useful for jpegli, though the difference is small just for optimization
but maybe in the future use some other slower modes and more accurate butteraugli
|
|
2024-03-15 02:17:19
|
wait, there are efforts in `cjpegli` ?
|
|
|
|
afed
|
|
TheBigBadBoy - πΈπ
wait, there are efforts in `cjpegli` ?
|
|
2024-03-15 02:29:50
|
not directly, but different settings can give different speed and quality (at least in benchmark_xl), so it's not a bad idea to have efforts
it just takes effort and time to bring different settings into efforts <:KekDog:805390049033191445>
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-15 02:44:22
|
I'll do my own benchmark
I'll try `jpegli`, `jpeg` "vanilla", `mozjpeg` and `guetzli`
any recommendation for more JPG encoders ? And what about the metric for comparing images quality ?
|
|
|
|
afed
|
2024-03-15 02:57:14
|
sjpeg probably
about metrics comparisons, like this one
https://canary.discord.com/channels/794206087879852103/1020724883241574472/1020755005386534963
there were others i also did some, but i found visual comparisons more useful, though more time consuming if it's not just a few images
|
|
|
_wb_
|
2024-03-15 03:06:05
|
"jpegli seq" means sequential, `cjpegli -p 0`
"unopt" means no huffman optimization (`--fixed_code`)
|
|
2024-03-15 03:07:27
|
so you basically could make 3 effort settings based on that, but I kind of doubt it matters. It's pretty fast anyway.
|
|
2024-03-15 03:08:17
|
It rarely seems a good idea to sacrifice ~10% compression just to make it go from a blink of the eye to half a blink of the eye
|
|
|
Traneptora
|
2024-03-15 03:12:54
|
does jpegli make progressive jpegs or baseline jpegs?
|
|
|
_wb_
|
2024-03-15 03:13:01
|
progressive by default
|
|
|
Traneptora
|
2024-03-15 03:13:18
|
how does jpegli achieve faster decompression speed than libjpeg-turbo?
|
|
|
_wb_
|
2024-03-15 03:13:22
|
you need to add `-p 0` to disable progressive and do sequential/baseline jpeg
|
|
|
Traneptora
|
2024-03-15 03:13:57
|
for baseline that is
|
|
|
_wb_
|
2024-03-15 03:14:17
|
oh these numbers are for multi-threaded, I guess libjpeg-turbo doesn't try to use threads
|
|
|
Traneptora
|
2024-03-15 03:14:24
|
ah, that would make sense then
|
|
|
_wb_
|
2024-03-15 03:14:31
|
in single-threaded it should be more similar I suppose
|
|
|
Traneptora
|
2024-03-15 03:14:35
|
since I'd expect libjpeg-turbo to be the fastest implementation by design
|
|
2024-03-15 03:14:52
|
since it focuses on speed above pretty much all else
|
|
|
_wb_
|
2024-03-15 03:15:47
|
exactly β though it is based on manual SIMD code I think, while jpegli is using highway, so probably for some platforms, jpegli will be faster π
|
|
2024-03-15 03:15:58
|
(platforms for which libjpeg-turbo doesn't have good SIMD yet)
|
|
|
Traneptora
|
2024-03-15 03:16:01
|
yea, I'm guessing this is on x86 though?
|
|
|
_wb_
|
2024-03-15 03:16:13
|
it's actually on my laptop, an M3
|
|
2024-03-15 03:16:14
|
so ARM/NEON
|
|
|
Traneptora
|
2024-03-15 03:16:22
|
that might make a difference then
|
|
2024-03-15 03:16:31
|
why is progressive jpeg so much slower than baseline, btw? I assume since it's slower across the board the algorithm itself is slower
|
|
|
_wb_
|
2024-03-15 03:17:03
|
I do think libjpeg-turbo has good NEON code paths though, it's probably the main platform where you want to optimize speed since so many phones are ARM
|
|
|
|
afed
|
2024-03-15 03:17:24
|
yeah, it makes less sense for jpeg because it's already fast, but some sort of bruteforce mode so that no additional optimizers are needed at all I think would be useful
and for slower efforts add like more butteraugli iterations as in libjxl or something like that, so that fast modes would just be like extras, because it's possible and to be like lubjpeg-turbo if someone needs it
|
|
|
_wb_
|
|
Traneptora
why is progressive jpeg so much slower than baseline, btw? I assume since it's slower across the board the algorithm itself is slower
|
|
2024-03-15 03:19:28
|
progressive is slower both encode and decode because it inherently has worse memory locality and just more entropy-coded symbols to process (though it does give better compression, since basically you can do "poor man's context modeling" by switching up the huffman codes between scans)
|
|
|
Traneptora
|
2024-03-15 03:20:10
|
ah, right, I suppose going in raster order would make simd much easier
|
|
|
|
afed
|
|
afed
yeah, it makes less sense for jpeg because it's already fast, but some sort of bruteforce mode so that no additional optimizers are needed at all I think would be useful
and for slower efforts add like more butteraugli iterations as in libjxl or something like that, so that fast modes would just be like extras, because it's possible and to be like lubjpeg-turbo if someone needs it
|
|
2024-03-15 03:22:08
|
and finally integrate jpegli into jxl, e.g. with some compilation option, maybe even with some advanced use cases than the usual libjpeg api <:YEP:808828808127971399>
maybe even with some compatible cli encoding options if the output image will be jpeg
|
|
|
_wb_
|
2024-03-15 03:46:32
|
i'm dreaming about some kind of "libjpeglixl" that is a wrapper that implements _both_ the libjpeg api and the libjxl api, and magically allows you to decode both jxl and jpeg via either api. Most of what is needed for something like that we already have.
|
|
|
Traneptora
|
|
_wb_
i'm dreaming about some kind of "libjpeglixl" that is a wrapper that implements _both_ the libjpeg api and the libjxl api, and magically allows you to decode both jxl and jpeg via either api. Most of what is needed for something like that we already have.
|
|
2024-03-15 03:49:17
|
ideally you should be able to just pass a JPEG to libjxl and decode it, and it will switch code paths based on whether it starts with 0xFFD8 or not
|
|
2024-03-15 03:49:21
|
in theory, that makes the most sense to me
|
|
2024-03-15 03:49:43
|
as libjxl contains all the code needed to decode a jpeg, you just first have to encode it to a JXL via AddJPEGFrame or whatever
|
|
2024-03-15 03:49:49
|
and then decode the JXL
|
|
|
_wb_
|
2024-03-15 03:57:43
|
yeah well we could make a shortcut and not actually do the JXL entropy coding/decoding and just read the jpeg and then render it
|
|
2024-03-15 03:59:19
|
the trickier thing is allowing to decode jxl images via the jpeg api β I suppose something sensible has to be done in case the image has alpha or is an animation
|
|
|
fab
|
2024-03-15 04:28:54
|
|
|
2024-03-15 04:29:15
|
Veluca i've attempted a custom jpg encoder for tgcom24
|
|
|
Traneptora
|
|
_wb_
the trickier thing is allowing to decode jxl images via the jpeg api β I suppose something sensible has to be done in case the image has alpha or is an animation
|
|
2024-03-15 04:56:30
|
I don't think this is necessary, if you can decode both via the libjxl api
|
|
|
_wb_
|
2024-03-15 05:00:14
|
well it could be nice to use it as a drop-in replacement for libjpeg-turbo and automatically get some amount of jxl support even in applications that haven't updated (and maybe never will)
|
|
|
Traneptora
|
2024-03-15 05:25:17
|
not sure that will actually work though, will it?
|
|
2024-03-15 05:25:34
|
many applications that support jpg and also png probably either check filename or initial bytes
|
|
2024-03-15 05:25:39
|
to know which decoder to use
|
|
2024-03-15 05:25:50
|
so they probably won't actually support jxl even if the interface does
|
|
|
_wb_
|
2024-03-16 01:41:04
|
Good point, they might give up before even trying...
|
|
|
|
JendaLinda
|
2024-03-16 10:17:32
|
I've seen an application which detects JPEG by searching for JFIF and EXIF and thus doesn't support bare JIF.
|
|
|
Snafuh
|
2024-03-17 10:59:21
|
The libvips Windows binaries can now be build with jpegli as drop in replacement for mozjpeg/libjpeg-turbo. My first test were quite dissapointing though. jpegli was slightly slower and produces much larger (30%) images than the mozjpeg path. I guess this is because some defaults which are different between mozjpeg and jpegli.
Setting 'interlace'true in libvips produces 50% smaller image with jpegli. mozjpeg shrinks only a bit. Interlaced jpegli is smaller than mozjpeg, baseline mozjpeg is smaller.
Are there optimal settings for jpegli when replacing mozjpeg? I might to a comparison table with all the libvips settings if I find the time later tonight
|
|
|
sklwmp
|
2024-03-17 11:02:19
|
jpegli and mozjpeg both produce progressive (interlaced) jpeg by default i believe (https://discord.com/channels/794206087879852103/805176455658733570/1216404497409249380) so that's one option to set
|
|
|
Snafuh
|
2024-03-17 11:31:06
|
Interesting. I'll probably have to check which defaults libvips uses. It seems to produce non-interlaced with no parameters.
The subsampling mode makes a difference as well. The big differences seem to come from the libvips defaults, not jpegli vs mozjpeg itself. So it's more of a specific tools implementation.
I'll do some testing either way though. Many people might interact with an encoder through something like libvips or imagemagick. If the defaults produce worse results with jpegli, it might give a wrong impression what it's capable of
|
|
|
lonjil
|
2024-03-17 11:34:23
|
30% larger, but how is the quality? Perhaps it's defaulting to a higher quality level.
|
|
|
Snafuh
|
2024-03-17 12:09:07
|
Visibly there was no real difference. Decreasing Quality to match mozjpeg size resulted in notable worse quality for jpegli. I think it's down to chroma-subsampling. It's in auto mode per default in libvips and might behave differently between jpegli and libvips. So my mozjpeg images might have used 4:2:0 and jpegli 4:4:4. I'll try to create a table with different settings and results
|
|
|
spider-mario
|
2024-03-17 12:10:04
|
maybe mozjpeg defaults to optimising huffman tables and jpegli doesnβt (or only in progressive mode), or something like that?
|
|
2024-03-17 12:10:05
|
if thereβs a switch for that, might be worth trying
|
|
|
Snafuh
|
2024-03-17 01:15:23
|
Ok, at higher qualities (higher than default 75) jpegli is 10% smaller.
Subsampling and mozjpegs auto mode was also mentioned in other benchmarks. Jpegli need an explicit input for subsampling, Mozjpeg does make reasonable assumptions based on the Quality levels
|
|
|
_wb_
|
2024-03-17 02:43:23
|
You cannot assume that mozjpeg q80 = libjpeg-turbo q80 = jpegli q80. Quality scales are not quite the same.
|
|
|
|
afed
|
2024-03-17 02:48:07
|
there is a simulation for the same size as libjpeg in benchmark, but that doesn't mean the default Q's are the same
https://github.com/libjxl/libjxl/pull/2146
|
|
|
Snafuh
|
2024-03-17 02:48:50
|
jpegli ignores the libvips subsampling option and always used 4:4:4. With explicitly set options jpegli produces smaller files than mozjpeg with the same options, as expected.
Yeah, ofc. Quality scales do differ. I was just confused by the big difference with default options at Q75.
|
|
|
|
afed
|
2024-03-17 02:51:29
|
for jpegli cli it should be automatic for lower qualities if I'm not mistaken
|
|
|
lonjil
|
2024-03-17 02:51:36
|
I think most of jpegli's benefits are mostly in the Q75+ range anyhow
|
|
|
|
afed
|
2024-03-17 02:53:49
|
yeah, and the Q scaling will always be different, it shouldn't be the same, it's not some metric with a consistent quality
|
|
|
lonjil
|
2024-03-17 02:57:56
|
I mean, in terms of like libjpeg-turbo
|
|
|
|
afed
|
2024-03-17 03:01:19
|
yeah, I just mean that quality close to libjpeg Q75 for jpegli can be reached at other values and about Q in general
|
|
2024-03-17 03:02:21
|
and needs the same size comparison, not the same Q
|
|
2024-03-17 03:07:04
|
and yeah, jpegli still needs improvements for lower qualities and some blockiness fixes, but from what I understand it's not going to happen anytime soon and there are other priorities for now
|
|
|
Traneptora
|
|
Snafuh
Ok, at higher qualities (higher than default 75) jpegli is 10% smaller.
Subsampling and mozjpegs auto mode was also mentioned in other benchmarks. Jpegli need an explicit input for subsampling, Mozjpeg does make reasonable assumptions based on the Quality levels
|
|
2024-03-17 10:15:37
|
jpegli excels at higher qualities. mozjpeg has always been better at lower qualities
|
|
2024-03-17 10:16:15
|
low-quality JPEGs to me aren't particularly useful so I like jpegli, but if you regularly serve mid or low-quality JPEGs then mozjpeg should be better
|
|
|
jonnyawsom3
|
2024-03-18 03:28:36
|
Decided to try and replicate this, but I'm not sure how to reduce the colors using the delta pallete, unless I'm meant to preprocess it somehow?
https://fixupx.com/jyzg/status/1329067794995011585?s=20
|
|
2024-03-18 03:29:18
|
https://x.com/jyzg/status/1329078139700428813?s=20
https://x.com/jyzg/status/1329105633417768970?s=20
|
|
2024-03-18 03:29:39
|
Oh that's fun, the embed is interpreting emojis
|
|
2024-03-18 03:36:14
|
Ah, that'll be why, removing `--modular_palette_colors=0 --modular_lossy_palette` results in an identical output file with cjxl, so either I'm doing something wrong or cjxl is
|
|
2024-03-18 03:36:49
|
Here's what I've been trying `cjxl -P 0 -m 1 --modular_palette_colors=0 --modular_lossy_palette Test.png Test.jxl -d 0.6 -e 10`
|
|
|
_wb_
|
2024-03-18 04:49:43
|
could be that it is broken, it hasn't been worked on or benchmarked for a while...
|
|
|
jonnyawsom3
|
2024-03-18 04:58:27
|
Between this and the extra channel decoding, it seems I'm finding all the lost bits of code haha
|
|
|
_wb_
|
2024-03-18 05:26:43
|
The encoder side of everything palette related (both lossless and lossy/delta) could use some improvements. It's mostly naive/unoptimized code, and in the case of delta palette, the code is more of a "proof of concept" and apparently broken at the moment... feel free to open an issue about this, it should at least do something
|
|
|
lonjil
|
2024-03-18 05:27:57
|
<@532010383041363969> do you happen to still have the palette JXL file from that test?
|
|
|
jonnyawsom3
|
2024-03-18 06:01:00
|
https://github.com/libjxl/libjxl/issues/3433
|
|
|
Jyrki Alakuijala
|
|
lonjil
<@532010383041363969> do you happen to still have the palette JXL file from that test?
|
|
2024-03-19 09:08:44
|
no
|
|
|
jonnyawsom3
|
|
https://github.com/libjxl/libjxl/issues/3433
|
|
2024-03-20 11:40:52
|
Huh, so there is actually a roundtrip test for it, but it never actually verified the feature worked at all https://github.com/libjxl/libjxl/pull/622
|
|
|
_wb_
|
2024-03-20 05:43:11
|
well it does test that it is smaller than lossless and quite high quality
|
|
|
spider-mario
|
2024-03-20 05:53:32
|
so is it that we somehow manage that without the delta palette?
|
|
|
jonnyawsom3
|
2024-03-20 06:23:31
|
I wonder if the density improvements over the years have simply made it hit the target anyway
|
|
|
_wb_
|
2024-03-20 09:07:27
|
Could also be a cjxl bug...
|
|
2024-03-20 09:07:44
|
The test tests libjxl, not cjxl
|
|
|
jonnyawsom3
|
2024-03-20 09:22:36
|
Ah, good point
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-21 10:06:34
|
started my benchmark, should be finished by the end of the w-e
|
|
2024-03-21 10:06:51
|
guetzli is so mem-hugry lol
|
|
2024-03-22 10:22:12
|
How can I have the bpp of the image ?
Is `filesize / (height * width)` good enough (even if it takes the header size) ?
|
|
|
Orum
|
2024-03-22 10:24:05
|
the header *should* be included as it's required to decode the image
|
|
|
spider-mario
|
2024-03-22 10:24:20
|
(if the filesize is in bytes, donβt forget to multiply by 8)
|
|
|
Orum
|
2024-03-22 10:25:06
|
about the only thing that can be removed is EXIF unrelated to decoding/displaying the image (but really that should be stripped off well in advance of tests of the encoder)
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-22 10:30:26
|
nice thanks
|
|
2024-03-22 10:31:18
|
yeah when I said header I meant metadata
let's just hope encoders don't add metadata when input doesn't have any
|
|
|
Traneptora
|
|
TheBigBadBoy - πΈπ
yeah when I said header I meant metadata
let's just hope encoders don't add metadata when input doesn't have any
|
|
2024-03-22 01:53:09
|
do keep in mind jxls always have color metadata
|
|
2024-03-22 01:53:25
|
so it must assume sRGB or something if the input has no metadata in that regard
|
|
|
Orum
|
2024-03-22 02:06:17
|
though I think you can override that with flags to cjxl?
|
|
2024-03-22 02:07:37
|
ah <:YEP:808828808127971399>
``` -x key=value, --dec-hints=key=value
This is useful for 'raw' formats like PPM that cannot store colorspace information```
|
|
|
Traneptora
|
|
Orum
though I think you can override that with flags to cjxl?
|
|
2024-03-22 03:21:19
|
that is correct
|
|
|
fab
|
|
jonnyawsom3
|
|
TheBigBadBoy - πΈπ
|
2024-03-22 08:33:17
|
I guess this is enough <:KekDog:805390049033191445>
jpegli (420 422 440 444), mozjpeg, jpeg-turbo, guetzli
each with many steps for quality
and standalone + "instantaneous" optimization + script bruteforcing
|
|
2024-03-22 08:33:24
|
I wonder how many days it'll run
|
|
2024-03-22 08:33:27
|
<:kekw:808717074305122316>
|
|
|
fab
|
|
TheBigBadBoy - πΈπ
I guess this is enough <:KekDog:805390049033191445>
jpegli (420 422 440 444), mozjpeg, jpeg-turbo, guetzli
each with many steps for quality
and standalone + "instantaneous" optimization + script bruteforcing
|
|
2024-03-22 09:22:43
|
hdblog has jpegs. and also webpp thumbnails
|
|
|
damian101
|
2024-03-23 09:15:16
|
what's this about
```
The installer exited with a non-zero exit status.
ERROR: /usr/bin/ld: /usr/lib/libavif.so: undefined reference to `svt_av1_enc_init_handle'
LOG: ~/.phoronix-test-suite/installed-tests/pts/jpegxl-1.6.0/install-failed.log
```
trying to install in phoronix test suite
|
|
|
Traneptora
|
2024-03-23 11:30:22
|
looks like you don't have svt-av1 installed or there's some issue with that
|
|
|
damian101
|
2024-03-23 11:59:29
|
but I do...
|
|
2024-03-23 11:59:49
|
also why libjxl want svt-av1, lol
|
|
|
spider-mario
|
2024-03-23 12:16:07
|
the benchmarking tool can link to libavif to evaluate avif
|
|
|
fab
|
2024-03-23 12:23:20
|
Likely dday uses aurora visiolarum
|
|
2024-03-23 12:23:48
|
The encodes autoupdates so is not public available perhaps
|
|
2024-03-23 12:24:13
|
Devs don't know if is Cloudinaryy
|
|
|
TheBigBadBoy - πΈπ
|
|
TheBigBadBoy - πΈπ
I guess this is enough <:KekDog:805390049033191445>
jpegli (420 422 440 444), mozjpeg, jpeg-turbo, guetzli
each with many steps for quality
and standalone + "instantaneous" optimization + script bruteforcing
|
|
2024-03-23 04:52:21
|
ETA: 2d15h
|
|
2024-03-23 04:52:22
|
<:CatSmile:805382488293244929>
|
|
2024-03-23 04:52:51
|
and that is I let it run without interruptions
so it'll take even more time lol
|
|
|
damian101
|
|
spider-mario
the benchmarking tool can link to libavif to evaluate avif
|
|
2024-03-23 07:28:35
|
was just an ffmpeg-related error I think
which was broken due to incompatible svt-av1-psy version
|
|
|
fab
|
2024-03-26 08:07:10
|
Avif quality 100
|
|
2024-03-26 08:09:28
|
JPEG XL is becoming like av2 january
|
|
|
Nyao-chan
|
2024-03-26 09:50:24
|
managed to get 8949 B (0.001 bpp) lossless on a 10k file
I know it's an easy one to encode, but that is crazy
|
|
|
fab
|
2024-03-26 09:52:21
|
webp vs jxl
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-26 11:42:50
|
## JPG encoders + optimizers benchmark
- cjpegli v0.10.2 e1489592 [AVX2,SSE4,SSE2]
- guetzli 1.0.1-4 (Arch extra repo)
- libjpeg-turbo version 3.0.2 (build 20240125)
- mozjpeg version 4.1.5 (build 20240322)
Github link with script and all the graphs: https://github.com/T-3B/compresssion_benchmarks/tree/main/JPG%20(encoders%20%2B%20optimizers)
**The graphs were made by <@548366727663321098>, a huge thank to him**
### Conclusions
"Unfortunately" optimizing the JPG does not change the encoder to choose for the best ratio bpp/ssim2. I've seen much higher size reduction for JPGs found on the Internet (up to 10%), but it is quite small with this benchmark.
It is quite safe to say "**always use `cjpegli` 420 for BPP < 1** (surprisingly followed really close by mozjpeg), **otherwise `cjpegli` 444**", jpeg-turbo indeed is fast but who can *not* bear sub-second encode time with cjpegli...
There a little exception here: the konosuba is quite an unusual image with lots of colors (and difficult to compress). For that one, the winner is `cjpegli` once again but with 444 as chroma subsampling. I love that one.
**ECT optimization is definitely worth it**, as it is almost instantaneous.\
Scans bruteforcing (`jpegultrascan.pl`) is only for people (like me) worrying about maximum compression at the cost of really slow speed - note that since it's bruteforcing, it can be done using several threads.
Here are some graphs (many more on the GitHub link):
|
|
2024-03-27 10:14:17
|
and this comparison was done without any ICC profile
so if you add XYB JPG to this benchmark, I think cjpegli will just destroy anything else <:KekDog:805390049033191445>
|
|
|
fab
|
2024-03-27 11:18:31
|
|
|
2024-03-27 11:18:32
|
Which encoders do you prefer?
|
|
2024-03-27 11:18:37
|
Dzgas
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-27 11:41:07
|
I got pinged ?
|
|
|
yoochan
|
2024-03-27 11:41:59
|
I did ! my mistake ! I deleted the post π
|
|
2024-03-27 11:42:19
|
I missread something in the page you posted
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-27 12:32:50
|
no problem haha
|
|
|
fab
|
2024-03-27 12:49:11
|
|
|
2024-03-27 12:49:18
|
I managed to improve libjxl
|
|
2024-03-27 12:50:05
|
Jon Is still tuningg
|
|
|
Traneptora
|
2024-03-27 01:08:34
|
a good idea in general is to ignore fab because he just says random things without context or elaboration
|
|
|
yoochan
|
2024-03-27 02:33:47
|
fab was not kicked abruptly because he is neurodiverse and this community favors inclusion and tolerate noise. I guess he passes by highs and lows which makes its contributions more or less nonsensical depending on the day
|
|
|
w
|
2024-03-27 02:50:32
|
neurodiversity should NOT be normalized
|
|
2024-03-27 02:52:16
|
and I think the fab is something else entirely
|
|
|
yoochan
|
|
Traneptora
a good idea in general is to ignore fab because he just says random things without context or elaboration
|
|
2024-03-27 03:08:42
|
he left and deleted his messages ?
|
|
|
Traneptora
|
2024-03-27 03:14:17
|
Β―\_(γ)_/Β―
|
|
2024-03-27 03:14:19
|
idk
|
|
|
Nyao-chan
|
2024-03-27 03:14:26
|
confirmed or speculated neuro diverse?
|
|
|
w
|
2024-03-27 03:15:33
|
just say AUTISM
|
|
|
Traneptora
|
|
Nyao-chan
confirmed or speculated neuro diverse?
|
|
2024-03-27 03:15:46
|
he has said in the past that he is autistic, so confirmed if we take his word for it
|
|
|
w
|
2024-03-27 03:16:07
|
imo he's just ITALIAN
|
|
|
Nyao-chan
|
2024-03-27 03:16:33
|
huh. I had seen speculations before and Luca said not to do it and was wondering
|
|
|
Traneptora
|
|
Nyao-chan
|
|
TheBigBadBoy - πΈπ
## JPG encoders + optimizers benchmark
- cjpegli v0.10.2 e1489592 [AVX2,SSE4,SSE2]
- guetzli 1.0.1-4 (Arch extra repo)
- libjpeg-turbo version 3.0.2 (build 20240125)
- mozjpeg version 4.1.5 (build 20240322)
Github link with script and all the graphs: https://github.com/T-3B/compresssion_benchmarks/tree/main/JPG%20(encoders%20%2B%20optimizers)
**The graphs were made by <@548366727663321098>, a huge thank to him**
### Conclusions
"Unfortunately" optimizing the JPG does not change the encoder to choose for the best ratio bpp/ssim2. I've seen much higher size reduction for JPGs found on the Internet (up to 10%), but it is quite small with this benchmark.
It is quite safe to say "**always use `cjpegli` 420 for BPP < 1** (surprisingly followed really close by mozjpeg), **otherwise `cjpegli` 444**", jpeg-turbo indeed is fast but who can *not* bear sub-second encode time with cjpegli...
There a little exception here: the konosuba is quite an unusual image with lots of colors (and difficult to compress). For that one, the winner is `cjpegli` once again but with 444 as chroma subsampling. I love that one.
**ECT optimization is definitely worth it**, as it is almost instantaneous.\
Scans bruteforcing (`jpegultrascan.pl`) is only for people (like me) worrying about maximum compression at the cost of really slow speed - note that since it's bruteforcing, it can be done using several threads.
Here are some graphs (many more on the GitHub link):
|
|
2024-03-27 03:22:13
|
do you know what program is used for those graphs?
|
|
|
TheBigBadBoy - πΈπ
|
2024-03-27 03:23:27
|
as I said all these graphs were done by <@548366727663321098>, and myself I don't know which tools he uses (and want to know too) <:KekDog:805390049033191445>
|
|
|
Orum
|
2024-03-27 03:24:29
|
R and ggplot2
|
|
|
Nyao-chan
|
2024-03-27 03:28:17
|
I should have realised by that sideways legend...
|
|
|
|
veluca
|
|
w
imo he's just ITALIAN
|
|
2024-03-27 03:50:49
|
π
|
|
|
fab
|
|
w
neurodiversity should NOT be normalized
|
|
2024-03-27 06:55:12
|
I'm not open to normalize my neurodiversity to minors, in any way. I prefer being to do what I want and the normal people just straight die
|
|
2024-03-27 06:55:28
|
Autistic will never get along neurotypicals
|
|
2024-03-27 06:55:45
|
They agne different interest and different autism
|
|
2024-03-27 06:55:57
|
And also a different version of brain
|
|
2024-03-27 06:57:07
|
I prefer fanpage.com and medical doctors to Juzt die than to cure my medical conditions
|
|
2024-03-27 06:57:12
|
I love being alone
|
|
2024-03-27 06:57:31
|
And phil other People that's is what give me an interest
|
|
2024-03-27 06:57:44
|
And spoiling people on intense internet whatever is that
|
|
2024-03-27 06:58:00
|
I do not cure about That rules that exists in the reality
|
|
2024-03-27 06:58:32
|
I'm autistic and you deserve to be with me and serve me with respect
|
|
2024-03-27 06:59:50
|
Gemini is my slave According to my mental brain
|
|
2024-03-27 07:02:46
|
In my brain there is a single opinion, to tell other people to f::: themselves
|
|
|
Fox Wizard
|
2024-03-27 07:05:07
|
Wot lmao
|
|
|
fab
|
2024-03-27 07:19:56
|
20:18
|
|
2024-03-27 07:20:22
|
|
|
2024-03-27 07:25:29
|
Now JPEG X/ beating all codecs by mos score 0,561 great
|
|
2024-03-27 07:27:40
|
The lower presets are improving
|
|
2024-03-27 09:50:50
|
Comparison now JPEG XL
|
|
|
jonnyawsom3
|
2024-03-27 09:52:18
|
Are you... Re-encoding the encoding comparison? xD
|
|
|
DZgas Π
|
|
fab
Which encoders do you prefer?
|
|
2024-03-28 12:20:01
|
MozJpeg
```
cjpeg.exe -baseline -notrellis -sample 1x1 -quality 90 -tune-psnr -quant-table 1 IN.png > OUT.jpeg
```
this is the most frequent thing I use in 2024. sometimes sample 2x2
|
|
|
fab
|
|
DZgas Π
MozJpeg
```
cjpeg.exe -baseline -notrellis -sample 1x1 -quality 90 -tune-psnr -quant-table 1 IN.png > OUT.jpeg
```
this is the most frequent thing I use in 2024. sometimes sample 2x2
|
|
2024-03-28 08:22:40
|
JPEG XL now is giving usable results as avif q43 comparable
|
|
2024-03-28 08:22:52
|
Because i fixed the errors
|
|
2024-03-28 08:23:23
|
I didn't denoise disgruibe or something touch the image or the profile
|
|
2024-03-28 08:23:59
|
Just the Devs AOmedia that improved the software,
|
|
2024-03-28 08:41:07
|
|
|
2024-03-28 08:57:20
|
They are casual i'm using datas of people who live Jarre where's it live
|
|
2024-03-28 08:57:44
|
Thomas people don't know aboutAI compression
|
|
2024-03-28 08:57:55
|
Improvement to rtc 11 and effort 1 JPEG XL
|
|
2024-03-28 09:03:00
|
Tuned on bigger dataset
|
|
2024-03-28 09:14:23
|
10:14Rome
|
|
2024-03-28 09:15:22
|
|
|
2024-03-28 11:24:49
|
Avif vs jxl irish and romanian singerz
|
|
2024-03-28 11:42:04
|
After stealing her data
|
|
2024-03-28 11:42:31
|
The right is how really looks on youtube
|
|
2024-03-28 12:17:36
|
Complete
|
|
2024-03-28 12:18:36
|
|
|
2024-03-28 12:24:43
|
Nothing crashed i finished my review work
|
|
2024-03-28 12:25:11
|
Is now 50% better;
|
|
2024-03-28 01:20:45
|
I don't think is anymore accessible
|
|
2024-03-28 01:58:49
|
The App is smart i made a screenshot then closed the tab with edge canary and Jon refreshed the tab
|
|
2024-03-28 06:18:00
|
|
|
|
DZgas Π
|
|
w
just say AUTISM
|
|
2024-03-29 08:43:21
|
based
|
|
|
fab
|
2024-03-29 09:09:16
|
0,250bpp screenshots now approaches Transparency
|
|
2024-03-29 04:36:11
|
Metrics correlate more
|
|
2024-03-30 05:22:35
|
I denoised everything was possible
|
|
2024-03-30 05:23:26
|
|
|
2024-03-30 05:39:50
|
|
|
|
jonnyawsom3
|
2024-03-30 07:56:42
|
An extremely unscientific and limited test of FFMPEG speed for WebP vs JXL
|
|
2024-03-30 07:58:02
|
Run on a single image, a single time (Although I ran each command around 3 times separately without logging), with whatever defaults FFMPEG has set unless written above
|
|
2024-03-30 07:59:17
|
Also, FFMPEG still has effort 9 as the highest, although not necessarily the worst considering the memory and speed penalty...
|
|
|
Orum
|
2024-03-30 08:26:12
|
yeah, you really need streaming input (and possibly output?) and several cores to let JXL stretch its legs for lossless
|
|
|
jonnyawsom3
|
2024-03-30 08:32:02
|
All things considered, I thought those were rather good results. Smaller and faster in every case, only getting better as effort went up
|
|
|
Quackdoc
|
|
Orum
yeah, you really need streaming input (and possibly output?) and several cores to let JXL stretch its legs for lossless
|
|
2024-03-30 08:34:41
|
one thread parallel encode supremacy
|
|
2024-03-30 08:34:59
|
thankfully with the new memory efficency stuff you can run a lot of parallel encodes
|
|
|
Orum
|
2024-03-30 09:15:33
|
it's still using a lot more mem than a single encode with multiple threads
|
|
|
monad
|
2024-04-01 03:43:59
|
if i were to run a bunch of encodes for two weeks what would you want to see
|
|
|
jonnyawsom3
|
2024-04-01 03:49:50
|
We've been trying to decide on new default settings, so knowing the best effort or parameters for size/speed across a wide test suite would be perfect for that
|
|
|
HCrikki
|
2024-04-01 04:05:51
|
perhaps nightly builds could have some capability to tally/share gain summaries, with cpu/ram info and optionally the source image if its just 1/few not too large ?
|
|
2024-04-01 04:07:09
|
might be out of scope for libjxl though and more suitable from 3rdparty to implement in their own utilities but itd only help set their own defaults
|
|
|
fab
|
|
monad
if i were to run a bunch of encodes for two weeks what would you want to see
|
|
2024-04-01 08:06:34
|
Kitchen objects because in that category i have difficulty to get good vmaf
|
|
2024-04-01 08:06:56
|
I renounced to do the encoding
|
|
2024-04-01 08:36:02
|
Jxl is good but avif was a very fast development,
|
|
2024-04-03 03:22:40
|
|
|
2024-04-03 03:22:55
|
Spidermario how to make this encode better is e8 q11
|
|
2024-04-03 03:24:30
|
I optimized this encode for dellβMsi Pro MP241X
|
|
2024-04-03 03:24:37
|
And I have a Samsung rs580
|
|
2024-04-03 03:58:12
|
I improved loudness normalization in Facebook
|
|
|
eddie.zato
|
|
eddie.zato
Generation loss is still fun <:CatSmile:805382488293244929>
|
|
2024-04-04 07:13:42
|
Another round <:CatSmile:805382488293244929>
|
|
|
|
veluca
|
2024-04-04 08:10:30
|
very interesting effect from gaborish....
|
|
|
monad
|
2024-04-04 08:58:00
|
hopefully humanity can adapt to become more creative when reposts are destroyed so quickly
|
|
|
lonjil
|
2024-04-04 09:26:49
|
maybe we shouldn't constantly recompress stuff
|
|
|
monad
|
2024-04-04 09:29:08
|
why not
|
|
|
fab
|
|
fab
|
|
2024-04-04 10:37:48
|
keep in mind that her hands are heavily photoshopped and jxl in q10 enhances stuff and is poor at metrics even in the eyes
|
|
2024-04-04 10:38:17
|
because i've never Seen the original horrible stuff
|
|
|
lonjil
maybe we shouldn't constantly recompress stuff
|
|
2024-04-04 10:38:35
|
that's basically what lonnie is saying
|
|
2024-04-04 10:39:26
|
as an autistic person i can't differientate between different av01 comp1essed hands
|
|
2024-04-04 10:39:43
|
because i'm racist
|
|
|
fab
Metrics correlate more
|
|
2024-04-04 10:40:19
|
hee's was better
|
|
|
Fox Wizard
|
|
fab
because i'm racist
|
|
2024-04-04 11:04:37
|
What lmao
|
|
|
fab
|
2024-04-04 11:13:39
|
Gemini was updated today to be temperature 1-2.8 because the reality musicians want money as income
|
|
|
_wb_
|
2024-04-04 07:26:30
|
Looks like jpegli zeroes AC quite quickly. And inv_gaborish(gaborish) should probably be made closer to the identity function.
|
|
|
yoochan
|
2024-04-04 07:44:08
|
when this video was made, gaborish filter was not yet implemented ? https://www.youtube.com/watch?v=FtSWpw7zNkI or is it a regression ?
|
|
|
fab
|
|
_wb_
Looks like jpegli zeroes AC quite quickly. And inv_gaborish(gaborish) should probably be made closer to the identity function.
|
|
2024-04-04 07:57:26
|
how is now? https://jon-cld.s3.amazonaws.com/test/distorted/225284/jxl-225b6884-pdc0-e6-q10.png
|
|
2024-04-04 07:58:10
|
i did while taking meds, so i didn't considered the video use;
|
|
|
_wb_
|
|
yoochan
when this video was made, gaborish filter was not yet implemented ? https://www.youtube.com/watch?v=FtSWpw7zNkI or is it a regression ?
|
|
2024-04-05 05:32:16
|
It was, but the encoder side gaborish has been changed since then, I suspect causing a regression in terms of generation loss.
|
|
|
monad
|
|
yoochan
|
|
_wb_
It was, but the encoder side gaborish has been changed since then, I suspect causing a regression in terms of generation loss.
|
|
2024-04-05 08:49:11
|
should I open a PR ?
|
|
|
fab
|
2024-04-05 08:49:24
|
I think so
|
|
2024-04-05 08:49:53
|
But let's just Jyrki work
|
|
2024-04-05 08:50:41
|
My encoder have terrible generation loss
|
|
2024-04-05 08:50:49
|
This is an example for fb
|
|
2024-04-05 08:51:13
|
Because I optimize only for shareability
|
|
2024-04-05 08:51:24
|
Not for the true image quality that matters
|
|
2024-04-05 08:52:15
|
Jxl latest is this https://artifacts.lucaversari.it/libjxl/libjxl/latest/ but i think is alpha
|
|
2024-04-05 08:53:48
|
On desktop I get a different encoder with blur qualities
|
|
|
eddie.zato
Another round <:CatSmile:805382488293244929>
|
|
2024-04-05 10:13:22
|
In this example the foot changes a lot
|
|
2024-04-05 10:13:36
|
Too much use of motion vector
|
|
|
fab
how is now? https://jon-cld.s3.amazonaws.com/test/distorted/225284/jxl-225b6884-pdc0-e6-q10.png
|
|
2024-04-05 10:13:56
|
This is first fix for epf#1
|
|
|
TheBigBadBoy - πΈπ
|
|
TheBigBadBoy - πΈπ
## JPG encoders + optimizers benchmark
- cjpegli v0.10.2 e1489592 [AVX2,SSE4,SSE2]
- guetzli 1.0.1-4 (Arch extra repo)
- libjpeg-turbo version 3.0.2 (build 20240125)
- mozjpeg version 4.1.5 (build 20240322)
Github link with script and all the graphs: https://github.com/T-3B/compresssion_benchmarks/tree/main/JPG%20(encoders%20%2B%20optimizers)
**The graphs were made by <@548366727663321098>, a huge thank to him**
### Conclusions
"Unfortunately" optimizing the JPG does not change the encoder to choose for the best ratio bpp/ssim2. I've seen much higher size reduction for JPGs found on the Internet (up to 10%), but it is quite small with this benchmark.
It is quite safe to say "**always use `cjpegli` 420 for BPP < 1** (surprisingly followed really close by mozjpeg), **otherwise `cjpegli` 444**", jpeg-turbo indeed is fast but who can *not* bear sub-second encode time with cjpegli...
There a little exception here: the konosuba is quite an unusual image with lots of colors (and difficult to compress). For that one, the winner is `cjpegli` once again but with 444 as chroma subsampling. I love that one.
**ECT optimization is definitely worth it**, as it is almost instantaneous.\
Scans bruteforcing (`jpegultrascan.pl`) is only for people (like me) worrying about maximum compression at the cost of really slow speed - note that since it's bruteforcing, it can be done using several threads.
Here are some graphs (many more on the GitHub link):
|
|
2024-04-05 11:32:29
|
I wonder if optimizing the JPG file before lossless recompression with `cjxl` change something in the JXL output π€
|
|
|
Fox Wizard
|
2024-04-05 11:32:43
|
1 way to find outβ’οΈ
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:33:01
|
yep
|
|
2024-04-05 11:33:21
|
it's been 10 minutes my CPU is optimizing a JPG file <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
2024-04-05 11:34:06
|
Somehow I've never gone hyper autism optimization mode on jpg files <:KekDog:884736660376535040>
|
|
2024-04-05 11:34:18
|
~~Maybe I should start doing that and shave off a few bytes at most~~
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:35:10
|
well `ect -9 -strip -progressive` already does a great job (even better than mozjpeg's `jpegtran`)
|
|
2024-04-05 11:35:11
|
and is faster than 0.5 second
|
|
|
Fox Wizard
~~Maybe I should start doing that and shave off a few bytes at most~~
|
|
2024-04-05 11:37:33
|
benchmark with several JPG optimizers (not ultrascan tho) https://encode.su/threads/3987-Jpeg-Optimizer-testing
|
|
2024-04-05 11:38:06
|
and the slow-as-fuck bruteforcer: https://encode.su/threads/2489-jpegultrascan-an-exhaustive-JPEG-scan-optimizer
|
|
2024-04-05 11:38:41
|
which, for smallest output, should be used with `-b 13 -t 16 -s -i`
|
|
2024-04-05 11:39:44
|
well, there are also
```
-j Strip APP0 segment for 18-byte savings (generates non-compliant JPEG
that may be incompatible with some software)
-a Use arithmetic coding (unsupported by most software; jpegtran support
required)
```But I don't want to break my image π
|
|
|
Fox Wizard
|
2024-04-05 11:40:22
|
If I want to break compatibility for max compression then I'll just go with arithmetic coding on jpeg which should be about 7% smaller <:KekDog:884736660376535040>
|
|
2024-04-05 11:40:43
|
Oh wait, that's an option there XD
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:40:43
|
but it indeed provides you the best JPG compression
|
|
2024-04-05 11:40:59
|
yeah
so you can do arithmetic encoding and bruteforce scans
|
|
|
fab
|
2024-04-05 11:41:18
|
I requests your review
|
|
|
Fox Wizard
|
2024-04-05 11:41:23
|
Gotta try the mega slow thing on this image <:thinkies:854271204411572236>
|
|
|
fab
|
2024-04-05 11:41:25
|
https://jon-cld.s3.amazonaws.com/test/ahall_of_fshame_SSIMULACRA_2_modelD.html
|
|
2024-04-05 11:41:36
|
Yes Fox try reviewing
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
Gotta try the mega slow thing on this image <:thinkies:854271204411572236>
|
|
2024-04-05 11:41:38
|
you, or me ? <:KekDog:805390049033191445>
|
|
|
fab
|
|
yoochan
should I open a PR ?
|
|
2024-04-05 11:41:41
|
|
|
2024-04-05 11:41:45
|
You have a very awesome eyes
|
|
|
Fox Wizard
|
|
TheBigBadBoy - πΈπ
you, or me ? <:KekDog:805390049033191445>
|
|
2024-04-05 11:42:16
|
You ~~since I'm too lazy to figure out how to use jpegultrascan atm~~
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
|
2024-04-05 11:42:43
|
Maybe somedayβ’οΈ
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:43:13
|
fine I'll do it
you still owe me a pizza <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
|
fab
Yes Fox try reviewing
|
|
2024-04-05 11:43:17
|
Reviewing what exactly?
|
|
|
TheBigBadBoy - πΈπ
fine I'll do it
you still owe me a pizza <:KekDog:805390049033191445>
|
|
2024-04-05 11:43:33
|
Sure, I'll deduct that from the pizzas you owe me <:KekDog:884736660376535040>
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:50:01
|
lol
```
376261 Folder.jpg
361274 Folder_ultrascan.jpg
306466 Folder.jxl
306602 Folder_ultrascan.jxl
```Optimized JPG for this specific image gave a bigger JXL
|
|
2024-04-05 11:51:30
|
is there a way to "unoptimize" JPG ?
I mean to have a bigger JPG file, still lossless
|
|
|
Fox Wizard
|
2024-04-05 11:52:51
|
There probably is if there's an option to force an output even if the image is bigger I guess
|
|
2024-04-05 11:53:05
|
What image did you optimize though? <:thinkies:854271204411572236>
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
|
2024-04-05 11:54:24
|
Not even the fox image I sent smh
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 11:54:46
|
that the one's I was optimizing before your sent yours lmao
|
|
2024-04-05 11:55:06
|
I started your encode
with both arith and non-arith
|
|
|
Oleksii Matiash
|
|
TheBigBadBoy - πΈπ
is there a way to "unoptimize" JPG ?
I mean to have a bigger JPG file, still lossless
|
|
2024-04-05 11:55:51
|
jpegtran without any switch?
|
|
|
yoochan
|
2024-04-05 11:56:01
|
pixel art with 8x8 pixels per pixel could fit nice in a jpeg !
|
|
2024-04-05 11:56:26
|
1 pixel per block exactly, would it beat png ? I'll test
|
|
|
TheBigBadBoy - πΈπ
|
|
Oleksii Matiash
jpegtran without any switch?
|
|
2024-04-05 11:58:06
|
nope, since it still optimizes by default
but using jpegtran with `-revert` seems to do the job thanks
|
|
|
Oleksii Matiash
|
|
TheBigBadBoy - πΈπ
nope, since it still optimizes by default
but using jpegtran with `-revert` seems to do the job thanks
|
|
2024-04-05 12:06:46
|
It is because I had some ancient jpegtran version. It does not have -revert switch, and does reverting by default
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 12:10:04
|
But I really expected cjxl to give a smaller JXL "JPG-recompressed" if the input was smaller
shouldn't it be the case?
|
|
|
fab
|
2024-04-05 12:12:26
|
|
|
2024-04-05 12:12:37
|
Great now the colors aren't dead
|
|
2024-04-05 12:12:51
|
E7 14:13
|
|
|
Oleksii Matiash
|
|
TheBigBadBoy - πΈπ
But I really expected cjxl to give a smaller JXL "JPG-recompressed" if the input was smaller
shouldn't it be the case?
|
|
2024-04-05 12:13:42
|
No, because this optimization is about using huffman with higher effort. And jxl decompresses to coefficients, so that existing compression does not matter. As far as I understand
|
|
|
fab
|
2024-04-05 12:18:59
|
Is from 0.7.0 and up that jxl had this problem
|
|
|
TheBigBadBoy - πΈπ
lol
```
376261 Folder.jpg
361274 Folder_ultrascan.jpg
306466 Folder.jxl
306602 Folder_ultrascan.jxl
```Optimized JPG for this specific image gave a bigger JXL
|
|
2024-04-05 12:19:50
|
Is there some problem on this images?
|
|
2024-04-05 12:20:12
|
Id say to not change anything from
|
|
|
TheBigBadBoy - πΈπ
|
|
fab
Is there some problem on this images?
|
|
2024-04-05 12:21:15
|
it's just that smaller JPG does not mean it'll be a smaller JXL
|
|
|
fab
|
2024-04-05 12:28:57
|
2022 and 2023 2024 specs are a bit different in the requirements the last isn't standardized
|
|
2024-04-05 12:29:25
|
It includes 3 documents
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 12:37:57
|
<@219525188818042881>
```
1140555 GHVfbX5a0AAdJsJ.jpg 0s
1129229 GHVfbX5a0AAdJsJopt.jpg 36m38s 8 threads
1043474 GHVfbX5a0AAdJsJopt_arith.jpg 39m46 8 threads
```You still can win 18 bytes by removing the APP0 segment, but that would result in a non-conformant JPG
|
|
2024-04-05 12:38:20
|
π
|
|
|
Fox Wizard
|
2024-04-05 12:46:19
|
Hm, nice difference. Maybe I should start wasting a lot of electricity on optimizing jpegs <:KekDog:884736660376535040>
|
|
|
jonnyawsom3
|
|
TheBigBadBoy - πΈπ
But I really expected cjxl to give a smaller JXL "JPG-recompressed" if the input was smaller
shouldn't it be the case?
|
|
2024-04-05 12:46:23
|
Usually yes, but I expect the brute forcing is causing data that JXL doesn't handle as well
|
|
|
Fox Wizard
If I want to break compatibility for max compression then I'll just go with arithmetic coding on jpeg which should be about 7% smaller <:KekDog:884736660376535040>
|
|
2024-04-05 12:47:41
|
And one of the 'steps' of the JXL transcoding is using arithmetic actually, one of the reasons they don't transcode along with being so rare
|
|
|
Fox Wizard
|
2024-04-05 12:48:32
|
I know :p
|
|
|
jonnyawsom3
|
|
Fox Wizard
|
|
TheBigBadBoy - πΈπ
<@219525188818042881>
```
1140555 GHVfbX5a0AAdJsJ.jpg 0s
1129229 GHVfbX5a0AAdJsJopt.jpg 36m38s 8 threads
1043474 GHVfbX5a0AAdJsJopt_arith.jpg 39m46 8 threads
```You still can win 18 bytes by removing the APP0 segment, but that would result in a non-conformant JPG
|
|
2024-04-05 12:49:03
|
The arithmetic one could be made a little smaller <:thinkies:854271204411572236>
|
|
2024-04-05 12:49:24
|
|
|
|
yoochan
|
2024-04-05 12:50:02
|
https://issues.chromium.org/issues/41288624#comment16 arithmetic coding not supported in blink who would have guessed... The argument is similar to the one given for jxl
|
|
|
Fox Wizard
|
2024-04-05 12:50:04
|
Oh wait, that's added metadata that got removed <:KekDog:884736660376535040>
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
Oh wait, that's added metadata that got removed <:KekDog:884736660376535040>
|
|
2024-04-05 12:51:33
|
wait, even changing the extension in Discord and it still adds metadata ?
|
|
|
Fox Wizard
|
2024-04-05 12:51:52
|
Don't think so
|
|
2024-04-05 12:52:02
|
But it had 6 bytes of metadata <:thinkies:854271204411572236>
|
|
|
jonnyawsom3
|
|
Fox Wizard
Hm, nice difference. Maybe I should start wasting a lot of electricity on optimizing jpegs <:KekDog:884736660376535040>
|
|
2024-04-05 12:52:18
|
I was running tests on an 8k image at 4am last night (as you do), and by the end I realised I'd spent 20 minutes and all my RAM to save 5% after already shaving off 40% in 12 seconds
|
|
|
Fox Wizard
|
2024-04-05 12:52:48
|
Totally worth itβ’οΈ
|
|
|
jonnyawsom3
|
2024-04-05 12:52:51
|
Actually that reminds me...
|
|
|
Fox Wizard
|
2024-04-05 12:53:49
|
I mean... I sent 2040 fox images in a random Discord server and almost all of them are around 4k res and all are optimized <:KekDog:884736660376535040>
|
|
2024-04-05 12:55:13
|
Oh wait, 2040 messages with I think 8 images on average per message, so about 16320 images XD
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
But it had 6 bytes of metadata <:thinkies:854271204411572236>
|
|
2024-04-05 12:56:56
|
then both ECT and jpegtran does not know about that
none could shrink these "6 bytes of metadata"
|
|
|
jonnyawsom3
|
2024-04-05 12:57:39
|
I remember a few months ago I was bored and curious (a dangerous combo), so I set the quality to nothing and cranked the effort to max. I fit 800 artworks into under 1.5MB... And some were still recognisable!
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
|
|
2024-04-05 12:58:22
|
I ran it
you say to me what you used
|
|
2024-04-05 12:58:33
|
π
|
|
|
Fox Wizard
|
|
TheBigBadBoy - πΈπ
I ran it
you say to me what you used
|
|
2024-04-05 01:05:32
|
jhead ``-du``
|
|
2024-04-05 01:06:29
|
Or ``-purejpg`` which is a combination of params including ``-du``
|
|
2024-04-05 01:13:07
|
Does that earn me 1 more pizza point? <:KittyDrink:1126563386482770012>
|
|
2024-04-05 01:16:44
|
Or do I have to steal them from your freezer when I'm in Maastricht or Aachen again since that's very close to where your freezer is located <:KittyUwU:1147753612529913938>
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 01:16:45
|
yeah Ig, thank you <:KekDog:805390049033191445>
but didn't I earn a pizza point for FLACCID and 1 for JPG ultrascan ?
|
|
|
Fox Wizard
|
2024-04-05 01:17:01
|
FLACCID doesn't work lmao
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 01:17:38
|
I got told the dev the issue, it's fixed now
|
|
|
Fox Wizard
|
2024-04-05 01:17:42
|
But yes, 1 pizza point for jpg ultrascan, but haven't I earned about 10 pizza points by now? <:thinkies:854271204411572236>
|
|
|
TheBigBadBoy - πΈπ
|
|
TheBigBadBoy - πΈπ
I got told the dev the issue, it's fixed now
|
|
2024-04-05 01:17:49
|
cfr. awcy server
|
|
|
Fox Wizard
But yes, 1 pizza point for jpg ultrascan, but haven't I earned about 10 pizza points by now? <:thinkies:854271204411572236>
|
|
2024-04-05 01:18:40
|
how lol
but yeah ofc if you can find my house come and I'll buy some pizzas for both of us
there's a pizzeria just 100m away <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
2024-04-05 01:19:02
|
Are you sure you want me to find your house? <:KekDog:884736660376535040>
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 01:19:35
|
don't you live in my walls ? <:KekDog:805390049033191445>
|
|
2024-04-05 01:20:21
|
and tbh I think you already know the village I'm in
finding the house shouldn't be that difficult :trollhq:
|
|
|
Fox Wizard
|
2024-04-05 01:21:43
|
That's probably true <:KekDog:884736660376535040>
|
|
2024-04-05 01:53:37
|
Heh, haven't found out where you live, but found out other things XD
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 01:55:31
|
wdym other things lol
|
|
2024-04-05 02:00:45
|
π³
|
|
|
Fox Wizard
|
2024-04-05 02:01:09
|
Oh wait, I accidentally revealed your name lmao
|
|
2024-04-05 02:01:22
|
~~Now the message magically self destructedβ’οΈ~~
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 02:01:42
|
bwahaha like you didn't noticed <:kekw:808717074305122316>
|
|
|
Fox Wizard
|
2024-04-05 02:01:51
|
Somehow I didn't <:KekDog:884736660376535040>
|
|
2024-04-05 02:02:27
|
But at least it's very easy to find anyways, so guess it doesn't matter
|
|
2024-04-05 02:04:04
|
And lol, totally forgot about the 2021 flooding. Was pretty close to where you were at the time ~~nice youtube vid~~
|
|
|
TheBigBadBoy - πΈπ
|
|
Fox Wizard
But at least it's very easy to find anyways, so guess it doesn't matter
|
|
2024-04-05 02:04:33
|
yeah, just go to my description and you got my full name in my GitHub repo
|
|
|
Fox Wizard
And lol, totally forgot about the 2021 flooding. Was pretty close to where you were at the time ~~nice youtube vid~~
|
|
2024-04-05 02:04:42
|
<:kekw:808717074305122316><:kekw:808717074305122316><:kekw:808717074305122316><:kekw:808717074305122316>
|
|
2024-04-05 02:05:01
|
totally forgot about it
|
|
|
fab
|
2024-04-05 02:05:13
|
Unfortunately lacks even the color gamut fixes https://artifacts.lucaversari.it/libjxl/libjxl/latest/
|
|
2024-04-05 02:05:24
|
See us tomorrow
|
|
|
Fox Wizard
|
2024-04-05 02:05:46
|
Yes, I was somewhere far uphill, so didn't see much water. Mostly just heard non stop sirens for 3 days
|
|
|
fab
|
2024-04-05 02:05:56
|
I think i will try, should i do on this build
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 02:06:42
|
not even my videoβ’οΈ
|
|
|
fab
|
2024-04-05 02:07:56
|
Better than av2
|
|
|
Fox Wizard
|
2024-04-05 02:09:19
|
<:KekDog:884736660376535040>
|
|
2024-04-05 02:19:32
|
Why 100 Euros? <:thinkies:854271204411572236>
|
|
|
jonnyawsom3
|
2024-04-05 02:40:04
|
I would've assumed lowering thread count with `-g 3` would easily lower memory to below the default, but it seems like it allocates almost the same regardless of threads
Single Thread `-g 3`
```wintime -- cjxl --disable_output -d 0 "C:\Users\jonat\Pictures\Resonite\2024-03-30 03.52.09.png" --num_threads=0 -e 3 -g 3
JPEG XL encoder v0.10.2 e148959 [AVX2,SSE2]
Encoding [Modular, lossless, effort: 3]
Compressed to 8052.5 kB including container (7.767 bpp).
3840 x 2160, 4.169 MP/s [4.17, 4.17], , 1 reps, 0 threads.
PageFaultCount: 233678
PeakWorkingSetSize: 352 MiB
QuotaPeakPagedPoolUsage: 34.8 KiB
QuotaPeakNonPagedPoolUsage: 10.75 KiB
PeakPagefileUsage: 424.7 MiB
Creation time 2024/04/05 15:36:33.605
Exit time 2024/04/05 15:36:35.808
Wall time: 0 days, 00:00:02.203 (2.20 seconds)
User time: 0 days, 00:00:00.218 (0.22 seconds)
Kernel time: 0 days, 00:00:01.984 (1.98 seconds)```
8 Thread Default
```wintime -- cjxl --disable_output -d 0 "C:\Users\jonat\Pictures\Resonite\2024-03-30 03.52.09.png" --num_threads=8 -e 3
JPEG XL encoder v0.10.2 e148959 [AVX2,SSE2]
Encoding [Modular, lossless, effort: 3]
Compressed to 8052.7 kB including container (7.767 bpp).
3840 x 2160, 18.442 MP/s [18.44, 18.44], , 1 reps, 8 threads.
PageFaultCount: 182085
PeakWorkingSetSize: 215.2 MiB
QuotaPeakPagedPoolUsage: 35.05 KiB
QuotaPeakNonPagedPoolUsage: 17.26 KiB
PeakPagefileUsage: 255.5 MiB
Creation time 2024/04/05 15:36:45.221
Exit time 2024/04/05 15:36:45.888
Wall time: 0 days, 00:00:00.666 (0.67 seconds)
User time: 0 days, 00:00:00.875 (0.88 seconds)
Kernel time: 0 days, 00:00:02.515 (2.52 seconds)```
|
|
|
|
afed
|
|
eddie.zato
Another round <:CatSmile:805382488293244929>
|
|
2024-04-05 04:29:20
|
even noticeable for jxl, probably because mozjpeg uses aq/trellis differently
so the high frequencies are gone pretty quickly
need new photon noise api extension for jpegli <:KekDog:805390049033191445>
https://github.com/libjxl/libjxl/issues/3461
|
|
|
fab
|
2024-04-05 04:44:33
|
I fixed aurora and jpegli on dday and Hdblog
|
|
2024-04-05 04:45:01
|
Provided the encoders are that of the page hall of shame and aren't customized for theirs page
|
|
2024-04-05 04:45:15
|
Still I like denoise
|
|
2024-04-05 04:45:24
|
But not de,noiser
|
|
2024-04-05 04:45:56
|
Denoise meaning like the game of crimson the one you discovered swatches on fb
|
|
2024-04-05 04:46:09
|
|
|
2024-04-05 04:46:18
|
HDblog refused that pill of g......
|
|
2024-04-05 04:46:34
|
Is a professional site tjeu are right
|
|
2024-04-05 04:46:52
|
Photography teams can get Their format
|
|
2024-04-05 04:48:18
|
|
|
2024-04-05 04:48:46
|
Those distorfionz aren't acceptable for enthusiast Photographers but are acceptable for web uaage
|
|
|
yoochan
|
|
Fox Wizard
And lol, totally forgot about the 2021 flooding. Was pretty close to where you were at the time ~~nice youtube vid~~
|
|
2024-04-05 05:19:44
|
Which flooding? En France?
|
|
|
Fox Wizard
|
2024-04-05 05:22:24
|
This one
|
|
|
yoochan
|
2024-04-05 05:25:52
|
Looks huge!
|
|
|
Fox Wizard
|
2024-04-05 05:26:18
|
It was, 243 deaths and 54 billion Euros in damage
|
|
|
fab
|
2024-04-05 06:02:42
|
Mediaset helped me to do jpeg xl compression
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-05 07:29:39
|
we had fucking army boats in our streets to evacuate people <:KekDog:805390049033191445>
|
|
2024-04-05 07:30:52
|
smh the only part of the map where there are boat and helicopter 'icons'
|
|
|
fab
|
2024-04-05 09:07:18
|
|
|
2024-04-05 09:07:22
|
My mother completed the jxl comparison
|
|
2024-04-05 09:07:31
|
All not only 3 images
|
|
|
Fox Wizard
|
2024-04-05 10:44:33
|
A true jxl momβ’οΈ
|
|
|
fab
|
2024-04-06 07:22:13
|
|
|
2024-04-06 07:22:20
|
|
|
2024-04-06 07:23:05
|
Is too tuned on my taste please wb change everything for aomedua
|
|
|
Nova Aurora
|
|
fab
My mother completed the jxl comparison
|
|
2024-04-06 07:27:37
|
What were the results?
|
|
|
fab
|
2024-04-06 08:20:59
|
|
|
|
Nova Aurora
What were the results?
|
|
2024-04-06 08:22:21
|
More sharpness in Windows and stairz
|
|
2024-04-06 08:22:55
|
In every single piece of image, anyway not bar
|
|
|
Fox Wizard
|
|
TheBigBadBoy - πΈπ
<@219525188818042881>
```
1140555 GHVfbX5a0AAdJsJ.jpg 0s
1129229 GHVfbX5a0AAdJsJopt.jpg 36m38s 8 threads
1043474 GHVfbX5a0AAdJsJopt_arith.jpg 39m46 8 threads
```You still can win 18 bytes by removing the APP0 segment, but that would result in a non-conformant JPG
|
|
2024-04-07 02:06:37
|
Now it's smaller <:KekDog:884736660376535040>
|
|
2024-04-07 02:08:45
|
Only 92 bytes though
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-07 02:12:08
|
so it's with something else than `jpegultrascan` ?
|
|
2024-04-07 02:12:32
|
just when I thought the war was over <:KekDog:805390049033191445>
|
|
|
Fox Wizard
|
2024-04-07 02:12:46
|
Nope <:KekDog:884736660376535040>
|
|
|
TheBigBadBoy - πΈπ
|
2024-04-07 02:13:21
|
you're answering the first question ?
|
|
|
Fox Wizard
|
|
TheBigBadBoy - πΈπ
|
2024-04-07 02:13:45
|
nice then
|
|
2024-04-07 02:14:17
|
because I can just bruteforce settings to find what you used x)
|
|