JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

other-codecs

dogelition
2024-10-12 04:43:31
didn't it become popular exactly because the small file size made it easy to share on the internet?
DZgas Ж
dogelition didn't it become popular exactly because the small file size made it easy to share on the internet?
2024-10-12 04:50:32
But that was later. And if that were the case, then by the time the Internet, the AAC format would have been the main one. but no
2024-10-12 04:51:25
look
2024-10-12 04:52:17
or maybe more like...
2024-10-12 04:52:43
All of it can not only CD audio but also mp3 on CD
lonjil
2024-10-12 05:15:20
The first MP3 CD player was released in the year 2000, a few years after MP3 became a popular format online.
DZgas Ж
2024-10-12 05:24:35
<:monkaMega:809252622900789269>
lonjil The first MP3 CD player was released in the year 2000, a few years after MP3 became a popular format online.
2024-10-12 05:26:22
well
lonjil
2024-10-12 05:27:55
yeah in the 2000s :p to be fair, the first MP3 player in general, that used flash instead of a CD, was launched in like 1997, so around the same time early online music distribution/piracy was getting off the ground
DZgas Ж
lonjil yeah in the 2000s :p to be fair, the first MP3 player in general, that used flash instead of a CD, was launched in like 1997, so around the same time early online music distribution/piracy was getting off the ground
2024-10-12 05:30:42
Was the internet so bad that packet corruption was so frequent? Why then does mp3 have so many degrees of integrity protection, crc32 per block. absolutely every block of 20 milliseconds is marked with another 32 bits indicating the beginning of the block, which makes it easy to skip any amount of corrupted data
2024-10-12 05:31:15
Which also makes it ideal for bittorrent. But it appeared in 1999
lonjil
2024-10-12 05:32:05
idk. You'd have to ask the researchers at the Fraunhofer Society that developed it in the early 90s
2024-10-12 05:32:22
Not sure what applications they were thinking of for MP3
DZgas Ж
2024-10-12 05:33:29
Even despite the block structure of OPUS. Only in MP3 I can replace 100 random bytes of files, crop it anywhere, and it will still play as it can on any player. OPUS will shut down immediately and will not be decoded
lonjil idk. You'd have to ask the researchers at the Fraunhofer Society that developed it in the early 90s
2024-10-12 05:35:07
<:NotLikeThis:805132742819053610>
2024-10-12 05:36:03
if the floppy disks had frequent damage, mp3 would be ideal for 1.44 floppy disks, but it wasn't used like that...
2024-10-12 05:38:07
maybe DVB-T
damian101
DZgas Ж what is the most indestructible image format? So that I can shooting it, delete bytes, replace bytes, add bytes and trim data. It is quite possible to do this for MP3 because it is the most indestructible format created specifically for CD. But it's a sound. What about the pictures?
2024-10-12 05:59:51
The only audio format I'd consider pretty resilient to data corruption, is Opus.
DZgas Ж
The only audio format I'd consider pretty resilient to data corruption, is Opus.
2024-10-12 06:00:59
encode the opus file. Changed 1 byte after 1% of the data. A dead file. It will not be decoded
damian101
DZgas Ж encode the opus file. Changed 1 byte after 1% of the data. A dead file. It will not be decoded
2024-10-12 06:01:39
well, that can equally happen with MP3 as well
2024-10-12 06:01:50
you can still decode it, though, just not every program can
DZgas Ж
2024-10-12 06:02:17
I understand that it is used in data transmission networks using UDP. But only its stability is achieved by the transmitting soft, if the file has not reached it, it will be known. Not that the file is corrupted.
damian101
2024-10-12 06:03:03
that sentence doesn't compute...
DZgas Ж
well, that can equally happen with MP3 as well
2024-10-12 06:03:11
no, the mp3 will be played, no matter how many bytes you damage, it will skip all the damaged blocks, the opus file does not do this
damian101
DZgas Ж no, the mp3 will be played, no matter how many bytes you damage, it will skip all the damaged blocks, the opus file does not do this
2024-10-12 06:03:32
how do you decode the Opus file?
DZgas Ж
2024-10-12 06:03:50
VLC MPC-HC Audacity ffmpeg
damian101
2024-10-12 06:04:37
maybe try opusdec directly
2024-10-12 06:04:59
Opus is made to be resilient even to high degrees of packet loss
spider-mario
DZgas Ж what is the most indestructible image format? So that I can shooting it, delete bytes, replace bytes, add bytes and trim data. It is quite possible to do this for MP3 because it is the most indestructible format created specifically for CD. But it's a sound. What about the pictures?
2024-10-12 06:06:27
arguably, that’s somewhat at odds with compression
2024-10-12 06:06:39
when you compress data, you want to make the best use of the bytes you do have
2024-10-12 06:06:47
and having bytes that don’t matter goes against that
2024-10-12 06:07:39
if you destroy part of the data and the image is largely unchanged, what was the data even for?
DZgas Ж
Opus is made to be resilient even to high degrees of packet loss
2024-10-12 06:08:16
uh oh
2024-10-12 06:08:55
I big tests in 2020 and 2022. But now I don't see any problems with playing corrupted Opus files
damian101
2024-10-12 06:09:08
interesting
DZgas Ж
2024-10-12 06:09:12
Literally the same files that I was doing tests with back then
damian101
spider-mario if you destroy part of the data and the image is largely unchanged, what was the data even for?
2024-10-12 06:11:04
Ideally, error correction...
spider-mario
2024-10-12 06:11:21
I think that’s probably best left to another layer
damian101
2024-10-12 06:11:28
I don't think so
Quackdoc
2024-10-12 06:12:26
I think stuff like fec can be implemented in container level without too much issue
2024-10-12 06:13:03
PLC techniques afaik needs to be at a format level tho no?
damian101
2024-10-12 06:13:45
If you really integrate it into a lossy media format, you can even use it to ensure graceful degradatation in case of severe data corruption, and have overall a lot more control over the whole thing.
DZgas Ж
interesting
2024-10-12 06:15:00
the more interesting thing is that opus Seamlessly combines the package between (a broken file on top)
damian101
DZgas Ж the more interesting thing is that opus Seamlessly combines the package between (a broken file on top)
2024-10-12 06:16:35
You'll probably have fun playing with the ` --packet-loss n Simulate n % random packet loss` parameter of opusdec
DZgas Ж
spider-mario if you destroy part of the data and the image is largely unchanged, what was the data even for?
2024-10-12 06:17:12
less quality... I can reduce the amount of data if I compress harder. Having received 10% of the void instead of the data that was previously useful. But if I just mess up 1 byte I will lose all the data.
damian101
2024-10-12 06:18:19
To make Opus really resilient to packet loss, you have to encode using this parameter: ` --expect-loss n Set expected packet loss in percent (default: 0)`
2024-10-12 06:18:29
Harms efficiency in case of no packet loss, of course.
DZgas Ж
You'll probably have fun playing with the ` --packet-loss n Simulate n % random packet loss` parameter of opusdec
2024-10-12 06:18:58
I know. And I've never been able to check it
lonjil
If you really integrate it into a lossy media format, you can even use it to ensure graceful degradatation in case of severe data corruption, and have overall a lot more control over the whole thing.
2024-10-12 06:19:57
the smart way is to use another layer, but make it capable of using information from that outer layer regarding the data. That still requires designing the codec with that in mind, but it's more flexible since you can swap out the error correction and detection layer without re-encoding.
DZgas Ж
2024-10-12 06:20:13
In general, I did not understand something, I found the opus sound that I compressed in 2020, I found ffmpeg 2020. So... just removed the damaged packages, it works as it should...
2024-10-12 06:20:29
<:monkaMega:809252622900789269> dementia already now
damian101
lonjil the smart way is to use another layer, but make it capable of using information from that outer layer regarding the data. That still requires designing the codec with that in mind, but it's more flexible since you can swap out the error correction and detection layer without re-encoding.
2024-10-12 06:22:20
Good point. Ideally the protection data can be easily removed later.
DZgas Ж
2024-10-12 06:22:42
okay, I had to go back to the time when I opened my first AV1 file
2024-10-12 06:25:00
in 2020, I was experimenting with compressing music on broke paper, then I couldn't encode OPUS files. But I was able to do it with MP3 and, accordingly, adPCM
2024-10-12 06:26:19
from what I see, as I understood, since I compressed the block size to 60 milliseconds, no one OPUS block could be restored due to constant linear damage
2024-10-12 06:27:08
2024-10-12 06:27:33
adPCM
2024-10-12 06:27:53
I don't remember which one, some specific codec for mobile networks
2024-10-12 06:39:20
well yes
You'll probably have fun playing with the ` --packet-loss n Simulate n % random packet loss` parameter of opusdec
2024-10-12 06:39:38
It sounds funny
2024-10-12 06:41:04
<:monkaMega:809252622900789269> sounds creppy
2024-10-12 06:43:29
jonnyawsom3
DZgas Ж Even though Jpeg XL is divided in blocks of 256x256. Changing 1 byte anywhere will completely break it for decoding
2024-10-12 07:26:47
https://github.com/libjxl/libjxl/issues/3712
DZgas Ж
https://github.com/libjxl/libjxl/issues/3712
2024-10-12 07:39:39
<:megapog:816773962884972565>
https://github.com/libjxl/libjxl/issues/3712
2024-10-12 07:41:54
considering that jpeg XL can have up to 8 layers of progressive decoding, this would be very useful
2024-10-12 07:42:54
by the way, the last time I had to make my fork for 8 layers of progressive encoding, is this still not in the encoding settings?
2024-10-12 07:46:22
well nope
HCrikki
2024-10-14 05:12:10
about jpegli. are conversions to xyb colorspace normally lossless or is there some unavoidable color shifting that precedes lossy compression?
2024-10-14 05:14:27
context: xnviewmp updated its jpegli support and its now a togglabe option in export in place of whatever it used before (mozjpg?) but enabling conversion to xyb colorspace there results in perceptible color shifting even at 99% quality
spider-mario
2024-10-14 05:15:20
how wide-gamut is the image? jpegli’s XYB might use a range that only contains sRGB
2024-10-14 05:15:48
since unlike jxl which uses float, jpegli is constrained by jpeg’s 0-1 range and some decision has to be made as to which “raw” XYB values that range can encompass
HCrikki
2024-10-14 05:21:43
png with alpha, 32bit, mostly reddish, colorspace managed to monitor. doesnt seem its an edge case though but limited to use of xyb in export
2024-10-14 05:23:19
dev had subsampling options switched around earlier so i was wondering if it wasnt another implementation oopsie somewhere
spider-mario
2024-10-14 06:19:10
do you know what the original colour space was? Adobe RGB and P3 both have more colourful reds than sRGB
HCrikki
2024-10-14 06:28:30
every image checked color shifts with xyb toggled for jpegli export in xnviewmp 1.8.2
2024-10-14 06:29:16
guessing its an integration issue
jonnyawsom3
2024-10-14 06:57:13
What subsampling are you using? Because as mentioned the other day, XYB uses different settings to normal
Demiurge
What subsampling are you using? Because as mentioned the other day, XYB uses different settings to normal
2024-10-14 09:53:10
XYB using weird chroma settings is a bug :(
HCrikki every image checked color shifts with xyb toggled for jpegli export in xnviewmp 1.8.2
2024-10-14 09:53:55
Do they look noticeably darker? It's probably something to do with the color profile.
2024-10-14 09:55:20
I notice it makes images darker too, but I think it's probably because without XYB it doesn't attach a color profile so it renders differently.
A homosapien
2024-10-14 10:03:21
The XYB chroma subsampling only affects the blue channel
2024-10-14 10:04:04
but yeah, the behavior is inconsistent, I made an issue about it
HCrikki
2024-10-14 10:11:20
jpegli+xyb export reports odd icc-header and icc_profile (Profile CMM Type, profile creator = Unknown (jxl ) ) and (chromatic adaptation). not sure what to think of that. could such export actually require being decoded using jpegli ?
username
2024-10-14 10:13:00
XYB JPEGs do not require jpegli to be decoded correctly all they need is proper ICC color management handling
jonnyawsom3
2024-10-14 10:54:37
https://github.com/libjxl/libjxl/issues/2284
2024-10-14 10:56:11
> Now if jpegli is going to produce a new kind of exotic JPEG that we cannot recompress in JXL, then I think we are shooting ourselves in the foot. > > Are there any benchmarks that give insight into the advantage of subsampling the B component in XYB? If this is a good idea, then why didn't we do it in jxl too? Unless there is a huge advantage to it, I would suggest to stop producing bitstreams in jpegli that cannot be represented in jxl. > The consensus is that we should change jpegli not to subsample the B component. > This has been fixed at some point so I'm closing the issue. So... It was fixed at some point, and then reverted?
RaveSteel
2024-10-14 11:25:05
Seems to work for me, do you have a file where the lossless transcode fails?
2024-10-14 11:30:21
What kind of input file will trigger the xyb conversion?
A homosapien
RaveSteel Seems to work for me, do you have a file where the lossless transcode fails?
2024-10-14 11:50:44
https://github.com/libjxl/libjxl/issues/3605#issuecomment-2132435084
2024-10-14 11:51:16
xyb jpegs from cjpegli fail to transcode becuase they are implictly chroma subsampled
2024-10-14 11:53:27
which is odd, since the default for yuv is 444
2024-10-14 11:56:33
keep in mind these are the defaults for the CLI, the API defaults to yuv 420
jonnyawsom3
A homosapien xyb jpegs from cjpegli fail to transcode becuase they are implictly chroma subsampled
2024-10-15 12:55:49
Specifically blue channel RGB chroma subsampled, which isn't in JXL spec
A homosapien
2024-10-15 09:14:24
According to some testing I've done, 4:4:4 xyb scores higher than chroma subsampled xyb in most quality ranges
2024-10-15 09:14:42
I'll post metric numbers soon
2024-10-15 09:15:26
And yes, it does look better to the human eye as well
2024-10-15 11:36:24
Here are ssimulacra2 scores on a 2914 x 2186 photograph at the same bpp: ``` YUV ------- 80.532 YUV-noaq -- 80.562 XYB ------- 81.672 XYB-noaq -- 81.740 XYB444 ---- 82.007 XYB444-noaq 82.305 ``` noaq = `--noadaptive_quantization`
2024-10-15 11:38:43
Interestingly, disabling adaptive quantization (it's on by default) was the more noticeable improvement
2024-10-15 11:39:56
It tended to preserve fine detail better
jonnyawsom3
A homosapien According to some testing I've done, 4:4:4 xyb scores higher than chroma subsampled xyb in most quality ranges
2024-10-16 12:41:14
Well... Yeah... Not cutting the image in half does tend to help the quality a bit. It's done for filesize
dogelition
2024-10-17 09:47:43
https://research.google/blog/hdr-photo-editing-with-machine-learning/
2024-10-17 09:47:58
good news, they figured out how to do editing of hdr images with gain maps properly
2024-10-17 09:48:16
...by just using AI to figure out how the gain map should be modified
CrushedAsian255
2024-10-17 09:48:56
lol
2024-10-17 09:49:03
another idea, just scrap the gainmaps lmao
Quackdoc
dogelition ...by just using AI to figure out how the gain map should be modified
2024-10-17 09:49:54
neat concept, if it's actually decent quality this would certainly make gainmaps worth using since running AI tonemapping locally just wouldn't make sense
HCrikki
2024-10-20 12:53:14
Jpegli-related https://github.com/immich-app/immich/issues/13603
2024-10-20 12:53:51
is that an issue with jpegli, immich's integration or the jpgs generated by that phone?
2024-10-20 12:55:45
i recall some phones create OEM-specific variants of whats essentially ultrahdr (non-standard jpeg with gainmap), could that be an issue for decoding and conversions?
Cacodemon345
2024-10-20 01:50:31
Xiaomi phones have a HDR option in the camera settings.
jonnyawsom3
2024-10-20 02:09:14
Left a comment linking to https://github.com/libjxl/libjxl/issues/3882
HCrikki
2024-10-20 02:13:58
how would tail data cause thumbnails for jpeg/ultrahdr to not generate in immich ?
RaveSteel
2024-10-20 02:15:43
The sample images the OP linked in the thread were converting fine using cjpegli in my case. Has anyone else tried?
2024-10-20 02:15:52
https://mkcqb.dynv6.net:666/$/nR3Yo https://mkcqb.dynv6.net:666/$/wwHPb https://mkcqb.dynv6.net:666/$/d94Op https://mkcqb.dynv6.net:666/$/wQiib
jonnyawsom3
HCrikki how would tail data cause thumbnails for jpeg/ultrahdr to not generate in immich ?
2024-10-20 02:21:30
My point was just that phones are creating invalid files
HCrikki
2024-10-20 02:28:09
i wonder, sounds like itd be a massive issue. whats special about those files that causes breakage? uhdr and rebranded derivatives are supposed to degrade gracefully and return a dimmed base jpeg no matter the stack
CrushedAsian255
2024-10-21 01:23:45
https://youtube.com/shorts/T8dVdye559E?si=tZYVcR6PHVHiBpDb
RaveSteel
2024-10-21 01:38:08
Justice for my boy webp
2024-10-21 07:46:24
<@238552565619359744> while not entirely unexpected, seeing APNGs smaller than AVIF is always funny
2024-10-21 07:46:30
Thanks again for the link
jonnyawsom3
2024-10-21 07:46:49
Already comparing them ey? haha
RaveSteel
2024-10-21 07:47:31
Gotta try out new things xd
CrushedAsian255
2024-10-22 04:06:50
https://svt-av1-psy.com/avif/
juliobbv
CrushedAsian255 https://svt-av1-psy.com/avif/
2024-10-22 08:24:15
I see you noticed the new stuff we've been adding recently 😄
2024-10-22 08:30:01
we still have work left to do, but we'll get there
CrushedAsian255
juliobbv we still have work left to do, but we'll get there
2024-10-22 08:30:50
Just wondering with SVT AV1 PSY what preset does it beat 265/vp9?
juliobbv
CrushedAsian255 Just wondering with SVT AV1 PSY what preset does it beat 265/vp9?
2024-10-22 08:32:48
well, it really depends on multiple factors (as of right now)
2024-10-22 08:33:30
but usually, if you stick to the low to mid-high quality range, with preset 4 or slower, that usually beats 265 and almost always beats vp9
CrushedAsian255
juliobbv but usually, if you stick to the low to mid-high quality range, with preset 4 or slower, that usually beats 265 and almost always beats vp9
2024-10-22 08:33:53
What about high fidelity / visually lossless?
juliobbv
CrushedAsian255 What about high fidelity / visually lossless?
2024-10-22 08:34:14
that's still x265's territory
CrushedAsian255
2024-10-22 08:34:42
Huh, what preset can you do real time?
2024-10-22 08:34:49
I can only do preset 8 and above
juliobbv
2024-10-22 08:35:05
preset 13 😂
2024-10-22 08:35:10
I'm using a macbook air
CrushedAsian255
2024-10-22 08:35:19
Ah, I’m using MacBook Pro
2024-10-22 08:35:39
What about preset -2?
juliobbv
2024-10-22 08:36:14
P -2 is used for meme 8MB encodes in practice
CrushedAsian255
2024-10-22 08:36:28
Like an entire movie in 8MB?
juliobbv
2024-10-22 08:36:31
it's like 5 FPM on mine lol
CrushedAsian255 Like an entire movie in 8MB?
2024-10-22 08:36:57
an entire movie will most likely be unwatchable
CrushedAsian255
2024-10-22 08:37:07
Even just audio
juliobbv
2024-10-22 08:37:08
but a 4-min music video is doable
CrushedAsian255
2024-10-22 08:37:40
You get 10 Kbps for an 100 minute movie at 8 MB
2024-10-22 08:38:00
Imagine that level of compression
2024-10-22 08:38:12
You would need to use like Speex 2kbps
2024-10-22 08:38:18
Codec 2 anyone?
juliobbv
2024-10-22 08:38:42
yeah, getting anything recognizable out of it with video will require going beyond DCT-based codecs
CrushedAsian255
2024-10-22 08:38:54
Lossy modular?
2024-10-22 08:38:59
🤷‍♂️
2024-10-22 08:39:34
AI video compression?
2024-10-22 08:39:40
Sorry I said the buzzword
juliobbv
2024-10-22 08:57:17
something that can reconstruct the entire Shrek movie from just a detailed transcript 😂
yoochan
2024-10-23 06:13:00
Just from the title!
CrushedAsian255
2024-10-23 09:01:01
lookup tables go brr
DZgas Ж
DZgas Ж 12 kbps 48 kHz STEREO ONLY
2024-10-23 06:02:47
discord sent a notice of copyright infringement in this message, small restricting my account for 2 years
RaveSteel
2024-10-23 06:03:32
lol
DZgas Ж
2024-10-23 06:03:35
literally 727 days ago message
2024-10-23 06:39:29
It seems to be running in test mode Discord global bot (hello YouTube and twitch), which will analyze all existing files, music and videos that have ever been uploaded to discord in general, for copyright infringement
2024-10-23 06:39:35
<:discord:1294466779686371368>
RaveSteel
2024-10-23 06:40:00
oh boy, my account is fucked then lmao
DZgas Ж
RaveSteel oh boy, my account is fucked then lmao
2024-10-23 06:43:51
now ?
RaveSteel
2024-10-23 06:44:06
not yet
2024-10-23 06:44:18
but i have uploaded hundreds of songs etc.
jonnyawsom3
2024-10-23 06:46:28
Some are saying it's only if the message is reported
2024-10-23 06:46:44
I'd guess it's only if the content itself is reported
RaveSteel
2024-10-23 06:47:20
I should be fine then xd
Fox Wizard
2024-10-23 06:56:58
Same lmao. The amount of FLACs I've shared <:KekDog:884736660376535040>
DZgas Ж
2024-10-23 07:00:22
<:discord:1294466779686371368> going 1984 NOW
RaveSteel
Fox Wizard Same lmao. The amount of FLACs I've shared <:KekDog:884736660376535040>
2024-10-23 07:01:10
fr lmao
Fox Wizard
2024-10-23 07:11:16
And the amount of mega compressed movies <:KekDog:884736660376535040>
2024-10-23 07:11:28
Maybe I should delete some once I get home XD
spider-mario
2024-10-23 08:34:04
I wonder what database it would use
2024-10-23 08:34:10
how obscure content needs to be to escape this
2024-10-23 08:34:20
would they have, say, https://discord.com/channels/794206087879852103/806898911091753051/1068628871735418901 ?
CrushedAsian255
DZgas Ж discord sent a notice of copyright infringement in this message, small restricting my account for 2 years
2024-10-23 09:41:26
what does small restricting do?
DZgas Ж
CrushedAsian255 what does small restricting do?
2024-10-23 09:42:29
I have absolutely no idea.
CrushedAsian255 what does small restricting do?
2024-10-23 09:43:35
I looked at other restrictions on the Internet, it usually says something like that you can send a maximum of 1 file per hour or something. That you can't add friends, for example. Etc. I have absolutely nothing written
2024-10-23 09:44:41
"You broke the rules" ok and <:galaxybrain:821831336372338729> <:discord:1294466779686371368>
2024-10-23 09:46:04
on support.discord https://support.discord.com/hc/en-us/articles/18210965981847-Discord-Warning-System#h_01HD4SVGAFKAQKYVGEBHS14HSQ like this
2024-10-23 09:46:25
2024-10-23 09:47:53
I have no idea what I was limited for, and why, and why the message was 2 years ago, and why it was limited for 2 years ahead. It looks like - oh yes, well, the classic of "gigacorporations"
2024-10-23 09:49:36
you are limited, we don't owe you anything, you can't appeal against it (we won't read your appeal, and in general, we are not a court, and we don't have a deadline for considering the request) 👉 <:discord:1294466779686371368>
CrushedAsian255 what does small restricting do?
2024-10-23 09:54:35
Oh, it's much better, discord responds with a bot. A non-real person writes that, you violated, and we deleted the content. like https://www.reddit.com/r/discordsucks/comments/lbzdbs/my_experience_with_discord_support_positive_ending/
2024-10-23 10:12:56
It turns out that discord does not have technical support, the Clyde bot responds to any message — https://www.reddit.com/r/BannedFromDiscord/comments/1evq6em/screw_you_clyde_and_screw_discord — https://www.reddit.com/r/BannedFromDiscord/comments/1eyt0um/theyve_locked_this_ticket_lol_might_as_well_make — https://www.reddit.com/r/BannedFromDiscord/comments/1f2esly/definitely_helped — https://www.reddit.com/r/BannedFromDiscord/comments/1f7yv1m/ehh_may_become_the_last_update_of_this_situation — https://www.reddit.com/r/BannedFromDiscord/comments/1g14sgn/what_should_i_do — https://www.reddit.com/r/BannedFromDiscord/comments/1g5ea3y/bruh_im_so_confused — https://www.reddit.com/r/BannedFromDiscord/comments/1g81i3v/not_deleted_but_ai_cant_find_my_acc — https://www.reddit.com/r/BannedFromDiscord/comments/1db9evy/i_got_suspended_may_29th_and_i_didnt_do_anything — https://www.reddit.com/r/BannedFromDiscord/comments/1fkhus6/literally_did_nothing — https://www.reddit.com/r/Kinguin/comments/1g2sbdk/nitro_1_year_subscription_code
2024-10-23 10:13:32
<:This:805404376658739230> sorry but <#806898911091753051> resting today
CrushedAsian255
2024-10-24 11:27:31
https://pbs.twimg.com/media/GanplpNWQAA2wcV?format=png
Demiurge
DZgas Ж <:discord:1294466779686371368> going 1984 NOW
2024-10-25 02:57:30
Now? it's been that way ever since it was first conceived by a US intel agency incubator fund :)
2024-10-25 03:10:18
(I don't know if discord was born from US spy agencies, but it sure behaves and quacks like a duck)
Quackdoc
2024-10-25 03:13:04
discord is too trash for it to be us spycrap
Demiurge
CrushedAsian255 https://svt-av1-psy.com/avif/
2024-10-25 04:41:26
These comparisons put JXL to shame. It looks almost as bad compared to AVIF as webp looks to JXL
2024-10-25 04:41:47
and webp looks about as bad as JPEG
2024-10-25 04:43:33
Actually in the minecraft screenshot JXL looks even worse than webp... wow, that's terrible.
2024-10-25 04:43:58
losing to webp lossy should never happen...
2024-10-25 04:44:23
Something is seriously wrong if that happens
CrushedAsian255
2024-10-25 04:44:39
Bad testing methodology?
2024-10-25 04:45:43
Not sure how to read this but this is what they say they did https://svt-av1-psy.com/avif/methodology/index.html
Demiurge
2024-10-25 04:47:08
To be fair there are a few regions of the minecraft image where jxl looks better or almost tied but I would rank the jxl as overall worse than the webp
CrushedAsian255
2024-10-25 04:48:03
Obviously the only conclusion is JPEG XL sucks and adoption is a waste of time /s
w
2024-10-25 04:48:18
truth
Demiurge
CrushedAsian255 Not sure how to read this but this is what they say they did https://svt-av1-psy.com/avif/methodology/index.html
2024-10-25 04:48:59
` cjxl input output.jxl -q XX -e 10` it says
CrushedAsian255
2024-10-25 04:49:43
AVIF sure needs lots of arbitrary parameters lol
Demiurge
2024-10-25 04:49:43
Basically libjxl is extremely bad compared to other codecs at preserving grit and sharp edges.
CrushedAsian255
2024-10-25 04:50:15
That’s not a good sign if you have to pass 4-10 advanced parameters to get good results
Demiurge
2024-10-25 04:50:48
And it's not a problem with jxl inherently, just a problem with the libjxl encoder
CrushedAsian255 That’s not a good sign if you have to pass 4-10 advanced parameters to get good results
2024-10-25 04:51:26
Yeah, video codecs tend to have way too many pointless knobs
2024-10-25 04:51:30
and bad defaults
CrushedAsian255
2024-10-25 04:52:24
Can jpeg xl photon noise be change around the image or is it full on the image
2024-10-25 04:52:36
Like can I apply noise to the top left but non to bottom right
Tirr
2024-10-25 05:13:33
noise is per-frame, so it would be possible with frame blending
2024-10-25 05:14:03
but it will also limit the range of epf and gaborish
2024-10-25 05:15:01
or... how about having noise-only empty frame and blend it onto main image
jonnyawsom3
Demiurge Basically libjxl is extremely bad compared to other codecs at preserving grit and sharp edges.
2024-10-25 05:47:58
<#1278292301038227489>
DZgas Ж
Demiurge Now? it's been that way ever since it was first conceived by a US intel agency incubator fund :)
2024-10-25 09:04:10
<:megapog:816773962884972565>
juliobbv
CrushedAsian255 AVIF sure needs lots of arbitrary parameters lol
2024-10-25 11:51:21
BTW, this will change soon 😎
CrushedAsian255
Tirr or... how about having noise-only empty frame and blend it onto main image
2024-10-26 02:08:28
Is noise only on the RGB channels? If so you could have RGB noise with a modular alpha as a “mask” and then using a blending option
2024-10-26 02:08:39
What are the supported blending options?
jonnyawsom3
2024-10-26 02:35:58
You already get RB noise if you use the photon option in cjxl while set to lossless. Seems to be assuming the colorspace is always XYB or something
afed
2024-10-26 03:32:23
<:Thonk:805904896879493180> https://github.com/AOMediaCodec/av1-avif/releases/tag/v1.2.0-rc
juliobbv
afed <:Thonk:805904896879493180> https://github.com/AOMediaCodec/av1-avif/releases/tag/v1.2.0-rc
2024-10-26 03:41:34
I think that the most salient new thing from the 1.2.0 spec is that one-frame AVIFs no longer have to have the `still_picture` bit turned on in order to be conformant
2024-10-26 03:42:40
it's enforced in previous versions, but actual implementations didn't care
_wb_
2024-10-26 08:10:52
What does that bit do?
juliobbv
2024-10-26 04:45:10
from what I know from the spec, it's a semantic bit that tells the decoder that the payload must only have one frame (as opposed to one or more frames if the bit is off)
2024-10-26 04:46:46
turning the bit on also allows enabling `reduced_still_picture_header`, which saves a few bytes by not signaling some syntax elements
Quackdoc
afed <:Thonk:805904896879493180> https://github.com/AOMediaCodec/av1-avif/releases/tag/v1.2.0-rc
2024-10-26 05:29:28
the amount of white space change in this is annoying
2024-10-26 05:31:18
oh hey, they formally adopted the hack that we came up with lol > The [=AV1 Image File Format=] supports progressive image decoding through layered images.
2024-10-26 05:33:04
too much of a pain to keep looking at the diff files, but here is the diff link for anyone curious https://github.com/AOMediaCodec/av1-avif/compare/v1.1.0...v1.2.0-rc wish github made comparisons more easy to do via ui
_wb_
2024-10-26 06:05:58
Ah maybe you need more than one frame to signal layered images? Or not?
Quackdoc
2024-10-26 06:08:48
im fairly sure each layer == a frame
juliobbv
2024-10-26 07:23:13
https://aomediacodec.github.io/av1-avif/#layered-items
2024-10-26 07:26:25
looks like AVIF redefines how frames are output (from AV1 behavior), so stuff like progressive decoding can work
_wb_
2024-10-26 07:55:56
It's not quite progressive decoding, more like a preview frame, right?
2024-10-26 07:56:53
(which is a mechanism we also have in jxl but never really use since it's just wasted bytes if you have actual progressive anyway)
username
2024-10-26 07:57:08
iirc yes
_wb_
2024-10-26 08:06:16
The thing with spec changes like this is that it makes it a bit hard to define what exactly it means for something to implement avif. E.g. if a browser says they accept `image/avif`, then what does that actually mean? Can you send them animated avif which is arbitrary av1? (early versions of the spec did not allow that) Will it support 'progressive' decoding? If the spec can have these kind of relatively big changes, it becomes a bit problematic to assign the an IANA media type to something that is a bit of a moving target...
2024-10-26 08:09:12
(of course proprietary vendor-specific formats like PSD do that all the time but they only get vendor media types)
username
2024-10-26 08:11:14
speaking of AVIF being a moving target... https://github.com/AOMediaCodec/av1-avif/issues/129 https://github.com/AOMediaCodec/libavif/issues/2077
CrushedAsian255
_wb_ The thing with spec changes like this is that it makes it a bit hard to define what exactly it means for something to implement avif. E.g. if a browser says they accept `image/avif`, then what does that actually mean? Can you send them animated avif which is arbitrary av1? (early versions of the spec did not allow that) Will it support 'progressive' decoding? If the spec can have these kind of relatively big changes, it becomes a bit problematic to assign the an IANA media type to something that is a bit of a moving target...
2024-10-26 08:24:06
image/avif.v1 ? 🤷‍♂️
juliobbv
_wb_ It's not quite progressive decoding, more like a preview frame, right?
2024-10-26 08:43:55
yeah, all 'passes' are independent of each other, so there's some overhead in practice
_wb_ The thing with spec changes like this is that it makes it a bit hard to define what exactly it means for something to implement avif. E.g. if a browser says they accept `image/avif`, then what does that actually mean? Can you send them animated avif which is arbitrary av1? (early versions of the spec did not allow that) Will it support 'progressive' decoding? If the spec can have these kind of relatively big changes, it becomes a bit problematic to assign the an IANA media type to something that is a bit of a moving target...
2024-10-26 08:46:22
and in the future there will also be AVIFs with AV2 payloads
2024-10-26 08:47:38
that stuff will be more confusing than arithmetic coded JPEGs if they don't define a new type or something
2024-10-26 08:53:31
the good thing with AVIF though is that newer versions of the standard tend to relax constraints that weren't really needed in practice, either because decoders weren't effectively affected at doing their job of displaying the image/sequence, or (with new features like progressive decoding) experiences can gracefully degrade if the decoder doesn't support them
2024-10-26 08:54:16
I do really hope AV2 AVIFs will get like, a new type or something
2024-10-26 08:55:00
I don't think the average person sees AVIFs like MP4s or MKVs
2024-10-26 08:57:30
I bet their first instinct will be "this shit is broken/corrupted" instead "oh, I can't view it here", and it's understandable
Quackdoc
2024-10-26 08:58:18
they shoulda done av1f av2f etc.
DZgas Ж
juliobbv I do really hope AV2 AVIFs will get like, a new type or something
2024-10-27 09:53:14
😂 no one is ready, neither for av2 nor for avif2. no one is ready to switch to it, not desire , not from a technical point of view. these codecs are dead, no one wants to switch to its. unfortunately, this is the end of human civilization and progress. jpeg xl is the end of all. and over the last 6 years of observation, I am only becoming more convinced of this.
2024-10-27 09:56:30
Google has recently been recognized as a monopoly. If the division of the company begins, then there will be no further promotion of this format. and why is it needed if there is a jxl <:logo:829708783336816671> in a fair fight jxl will win
JKUser4592
2024-10-28 06:37:12
How do I make lossless animated AVIF files?
RaveSteel
JKUser4592 How do I make lossless animated AVIF files?
2024-10-28 06:42:12
You can use ffmpeg or avifenc. Handbrake will likely work I assume
JKUser4592
RaveSteel You can use ffmpeg or avifenc. Handbrake will likely work I assume
2024-10-28 09:04:05
What would be the command for them?
RaveSteel
2024-10-28 09:04:32
What is your input? a range of images or a video?
JKUser4592
2024-10-28 09:39:04
video
RaveSteel
2024-10-28 10:10:02
`ffmpeg -i INPUT -crf 0 -cpu-used 4 OUTPUT.avif`
JKUser4592
2024-10-28 10:39:22
I convert a video into a lossless animated AVIF file, but now I can't play it on Windows Photos or XnView MP. Irfanview only plays it as a still image, and when I put it on a web browser it didn't play all the frames. How do I fix that? Here is the command I used: `ffmpeg -i input.mkv -vf format=yuv444p10le -c:v libaom-av1 -crf 0 -cpu-used 4 out.avif`
RaveSteel
2024-10-28 10:46:45
Converting to AVIF creates a thumbnail of the videostream as the first stream. You'll have to check if you can change the videotrack in the viewers you've tried
2024-10-28 10:48:15
Execute `ffprobe` on the AVIF file you've created and have a look at the lower section
2024-10-28 10:49:50
WebP may give you better results than AVIF btw, even with lossless
2024-10-28 10:50:54
To create a lossless WebP you can compare to the previously created AVIF: `ffmpeg -i INPUT -lossless 1 -loop 0 "OUTPUT.webp"`
gb82
Demiurge These comparisons put JXL to shame. It looks almost as bad compared to AVIF as webp looks to JXL
2024-10-28 11:20:54
<@386612331288723469> this is my site. I’m actually a big JXL fan so nothing was done to intentionally hamper JXL performance here. The Minecraft image is kinda rough but the ocean image looks quite good with JXL imo. All e10 btw
CrushedAsian255 AVIF sure needs lots of arbitrary parameters lol
2024-10-28 11:21:53
That’s only with aomenc (currently - this is changing soon). SVT-AV1-PSY just requires Tune 4 and that’s it
2024-10-28 11:22:57
Do u have any sample images that favor JXL?
Demiurge
2024-10-28 11:23:18
The ocean image looks better than the other codecs except avif is clearly miles ahead of jxl in the ocean image.
2024-10-28 11:23:38
By the same amount webp is behind jxl
gb82
2024-10-28 11:24:02
I’ll take that as a compliment - Tune 4 in its current state was a lot of work and we are proud of the results
2024-10-28 11:24:42
Hopefully, some of what we did to make AVIF good can be ported to libjxl, but I think libjxl already does a lot right
Demiurge
2024-10-28 11:24:51
You helped to tune the avif encoder? I wish you could help make libjxl less embarrassing too lol 😂
2024-10-28 11:25:26
I know the jxl format has a lot more potential than the current state of libjxl
gb82
2024-10-28 11:25:29
Yeah, <@297955493698076672> and I implemented everything that makes Tune 4 special - alongside <@138804598365224961> and <@321486891079696385>
2024-10-28 11:26:01
I’m the maintainer of SVT-AV1-PSY
Demiurge
2024-10-28 11:27:12
No offense to the people who made libjxl and provided it to everyone for free. There are just some extremely competitive tools and codecs out there and I really want jxl to succeed and have tools available that are competitive with other existing encoders
A homosapien
2024-10-28 11:28:11
To be fair libjxl has been facing some regressions lately
Demiurge
2024-10-28 11:28:38
I think the focus should be on lossless or very high fidelity
gb82
2024-10-28 11:28:44
we took inspiration from libjxl and jpegli in our implementation, and one of our key goals was to defeat some of AVIF's embarassing perceptual weaknesses that didn't show up in metrics like extreme smoothing. In a lot of cases, I prefer jxl results visually over aomenc avif
Demiurge
2024-10-28 11:28:56
And resistance to generation loss
2024-10-28 11:29:27
I think "low quality mode" should be a separate "are you sure" type feature
A homosapien
2024-10-28 11:30:17
anything higher than distance 4 is locked behind `--allow_expert_options` 😅
Demiurge
2024-10-28 11:30:43
And I really think there should be some spectral based noise shaping algorithm that pushes distortion into the higher frequencies, like an audio codec would
gb82
2024-10-28 11:31:23
A noise normalization feature might be able to help with that
2024-10-28 11:31:32
I don't know too much about libjxl
Demiurge
2024-10-28 11:31:33
So low-frequency artifacts should be avoided at all costs and artifacts are made to resemble blue noise as much as possible
2024-10-28 11:32:45
Uniform, uncorrelated blue noise that is easy for humans to "see through"
A homosapien
2024-10-28 11:38:28
Ever since 0.9, libjxl has had a serious blurring problem, it also generates too much noise in the wrong places: https://discord.com/channels/794206087879852103/1278292301038227489/1297641128333410404
2024-10-28 11:44:58
I wonder, has anyone plotted the rd-curves comparing all major versions of libjxl?
CrushedAsian255
A homosapien Ever since 0.9, libjxl has had a serious blurring problem, it also generates too much noise in the wrong places: https://discord.com/channels/794206087879852103/1278292301038227489/1297641128333410404
2024-10-28 11:47:27
Probably very dumb question, but this isn’t affecting lossless is it?
A homosapien
2024-10-28 11:48:05
Lossless has only been improving due to the fact that the metrics are purely objective
BlueSwordM
Demiurge No offense to the people who made libjxl and provided it to everyone for free. There are just some extremely competitive tools and codecs out there and I really want jxl to succeed and have tools available that are competitive with other existing encoders
2024-10-28 11:49:13
JXL is best. Without JXL, a lot of AV1 tools would still be awful.
2024-10-28 11:49:24
ssimu2 and 🧈 FTW.
2024-10-28 11:49:54
Also, some of the algos used in svt-av1-psy were inspired by libjxl, vorbis and x264.
A homosapien
2024-10-28 11:50:14
<:This:805404376658739230> Unironically, JXL pushed avif to be as good as it is right now
Demiurge
2024-10-28 11:53:02
I wonder if the reason no one has tried using perceptual noise shaping for image codecs is because it would take a massive hit according to objective metric scores (even though it would look obviously better to human eyes and more of the original signal would be objectively retained below the noise floor)
2024-10-28 11:53:46
It is possible to preserve signals that are weaker than the strength of distortion and noise if you push the noise to different frequency bands
2024-10-28 11:54:46
This noise shaping theory works on visual data too but it's usually applied only to audio
2024-10-28 11:55:32
I feel like it's a seriously underutilized thing in image codecs and I think maybe retarded objective metrics are to blame for that
2024-10-28 11:56:56
Because the way current metrics are (badly) designed it would heavily penalize noise that's hard to notice and easy to see through, but not punish smudging and smoothing that utterly deletes and obliterates everything beneath it
jonnyawsom3
A homosapien I wonder, has anyone plotted the rd-curves comparing all major versions of libjxl?
2024-10-28 11:57:51
The other day I was wondering if anyone actually bisected to find when it got so bad, unless it was just a cummulative effect from many other tweaks
A homosapien
The other day I was wondering if anyone actually bisected to find when it got so bad, unless it was just a cummulative effect from many other tweaks
2024-10-28 11:59:40
I found a few commits actually
2024-10-28 11:59:52
gimme a sec
juliobbv
BlueSwordM Also, some of the algos used in svt-av1-psy were inspired by libjxl, vorbis and x264.
2024-10-29 12:01:16
add Theora to the list 😛
Demiurge
2024-10-29 12:02:28
libjxl has had some lossy regressions but it's also been improving those regressions so overall it hasn't improved or gotten worse.
2024-10-29 12:03:23
But it's kind of infuriating how bad visual metrics are at guiding quality decisions and to think that it could lead to a lot of potential quality gains being left on the table.
2024-10-29 12:04:07
Reminds me of the theora ptalarbvorm update that never got released despite major earthshattering improvements in quality
juliobbv
Demiurge I wonder if the reason no one has tried using perceptual noise shaping for image codecs is because it would take a massive hit according to objective metric scores (even though it would look obviously better to human eyes and more of the original signal would be objectively retained below the noise floor)
2024-10-29 12:04:10
the main issue with improving noise shaping is that it's very hard from the encoder side to tell "good-looking noise" from "bad-looking noise", because it's contingent on underlying edges, contrast, saturation, and even surrounding areas
2024-10-29 12:05:03
but it's definitely doable
Demiurge
juliobbv the main issue with improving noise shaping is that it's very hard from the encoder side to tell "good-looking noise" from "bad-looking noise", because it's contingent on underlying edges, contrast, saturation, and even surrounding areas
2024-10-29 12:05:16
Good looking noise is uniform, uncorrelated with the original signal, and contains no strong low frequency content
2024-10-29 12:05:46
It can be mathematically defined so idk why good metrics haven't been written
2024-10-29 12:06:29
Noise shaping is extensively relied on in all audio codecs
2024-10-29 12:10:48
There's maybe only 1 more layer of complexity to take into account which is noise masking. If you get noise masking wrong it can undo the good effects of noise shaping
2024-10-29 12:14:26
Noise masking is actually much more difficult to get right but it's also something that codecs already pay a lot of attention to and get right because metrics punish bad noise masking hard
2024-10-29 12:20:27
https://people.xiph.org/~xiphmont/demo/theora/demo9.html
2024-10-29 12:21:15
This update is in their dev branch but was never pushed to release because vp8 caused everyone to immediately lose interest in squeezing more potential out of theora
A homosapien
The other day I was wondering if anyone actually bisected to find when it got so bad, unless it was just a cummulative effect from many other tweaks
2024-10-29 01:08:46
I think this commit was the decisive moment, Jyrki changed the tuning of butteraugli to be p-norm rather than max norm. https://github.com/libjxl/libjxl/commit/45096d1ea739d81833370fd4713f5b5a70273e24 Yes, I'm aware this is just the benchmark program, but Jyrki based all of his tuning from the stats given to him from `benchmark_xl`. After this commit, it was death by a thousand cuts (or in this case around 12 commits). Most if not all of the psychovisual hand-tuned algorithms were changed to *heavily* favor `pnorm*BPP`. These changes usually came at the expense of lower max norm & ssimulacra2 scores, which I think is really bad idea. Here is another notable commit, this changed how butteraugli is handled internally. https://github.com/libjxl/libjxl/commit/b468126e7d22a42737c7a669adb861c1a5aa6473 I don't like the look of pnorm-3 butteraugli compared to max norm, but the devs say that it's not consistent enough for lower quality images. That's why I choose pnorm-5 (or 7) for my regression testing, it's a good middle ground. Max norm is still the best metric for higher quality images.
2024-10-29 01:11:37
What I don't understand is why butteraugli for lower quality images? I thought ssimulacra2 was more accurate in that quality range. Tuning the heuristics for pnorm*BPP makes no sense to me.
2024-10-29 01:21:19
Here is what the documentation has to say about max norm and p norm: > Butteraugli Distance (max norm) indicates the maximum psychovisual error in the decoded image. > > Butteraugli p-norm (3-norm) is a similar summary of the psychovisual error, but closer to an average, giving less weight to small low-quality regions. iirc ssimulacra2 is 4-norm.
2024-10-29 01:31:16
It's likely that libjxl has been "cheating" on one metric, improving the rd-curve for pnorm at the expense of true psychovisual quality. This is why this problem went under the radar for so long. I think this is a fundamentally flawed approach. Ideally we would tune everything by eye. But it can't be automated. If we must use metrics, I think we should take a page from the video codec world and check against multiple metrics (at least 3). It's easy to cheat on one metric, but cheating on 3 is much more unlikely. I think with this methodology we could catch regressions before it's too late. So that we don't end up in the situation we are in now.
CrushedAsian255
2024-10-29 01:42:50
What is a norm quantity
A homosapien
2024-10-29 01:43:43
something to do with statistics https://en.wikipedia.org/wiki/Norm_(mathematics)
2024-10-29 01:46:24
it's beyond me 😅 I have no idea what L2, p-norm 3 or any of that stuff actually means. <@794205442175402004> could you please explain this in layman terms?
jonnyawsom3
A homosapien I think this commit was the decisive moment, Jyrki changed the tuning of butteraugli to be p-norm rather than max norm. https://github.com/libjxl/libjxl/commit/45096d1ea739d81833370fd4713f5b5a70273e24 Yes, I'm aware this is just the benchmark program, but Jyrki based all of his tuning from the stats given to him from `benchmark_xl`. After this commit, it was death by a thousand cuts (or in this case around 12 commits). Most if not all of the psychovisual hand-tuned algorithms were changed to *heavily* favor `pnorm*BPP`. These changes usually came at the expense of lower max norm & ssimulacra2 scores, which I think is really bad idea. Here is another notable commit, this changed how butteraugli is handled internally. https://github.com/libjxl/libjxl/commit/b468126e7d22a42737c7a669adb861c1a5aa6473 I don't like the look of pnorm-3 butteraugli compared to max norm, but the devs say that it's not consistent enough for lower quality images. That's why I choose pnorm-5 (or 7) for my regression testing, it's a good middle ground. Max norm is still the best metric for higher quality images.
2024-10-29 02:36:45
I know the encoder has been tuned since then, but what if we just changed it back and see what happens...
gb82
A homosapien <:This:805404376658739230> Unironically, JXL pushed avif to be as good as it is right now
2024-10-29 03:02:22
can absolutely confirm here
A homosapien
2024-10-29 03:44:10
I do want to try it at some point. Reverting all the changes and compiling from main to see what happens
gb82
A homosapien I do want to try it at some point. Reverting all the changes and compiling from main to see what happens
2024-10-29 03:46:49
you can go ahead and compile from [my libavif fork](https://github.com/gianni-rosato/libavif) if you want, and the build script `ezbuild.sh` will help u out
Demiurge
2024-10-29 03:47:11
That's why everyone says to never tune using metrics. See that massive improvement in theora quality on that demo page? Metrics think that's a regression when it's actually a ridiculously massive improvement.
2024-10-29 03:48:40
Tuning an image codec by automation without confirming the results with your eye is a really classic example of what not to do
2024-10-29 03:49:35
You always, every time, always end up overfitting
2024-10-29 03:50:21
Overfitting to a metric that is really naive and loves destructive smears and blobs all over that are impossible to see through
2024-10-29 03:51:24
Never ever automate psycho
A homosapien
gb82 you can go ahead and compile from [my libavif fork](https://github.com/gianni-rosato/libavif) if you want, and the build script `ezbuild.sh` will help u out
2024-10-29 04:04:45
I get this error compiling on windows: $ ./ezbuild.sh git ✔ cmake ✔ clang X I already have clang installed via Visual Studio, is there another way to do it?
JKUser4592
2024-10-29 04:54:01
<@167354761270525953> I got this message now:
2024-10-29 04:54:11
`[libwebp_anim @ 000001f7cc51c200] Using libwebp for YUV-to-RGB conversion. You may want to consider passing in RGB instead for lossless encoding.`
gb82
A homosapien I get this error compiling on windows: $ ./ezbuild.sh git ✔ cmake ✔ clang X I already have clang installed via Visual Studio, is there another way to do it?
2024-10-29 06:10:29
.sh is for macOS and Linux, .ps1 is for Windows
Quackdoc
gb82 .sh is for macOS and Linux, .ps1 is for Windows
2024-10-29 06:32:38
brush says hello
_wb_
A homosapien it's beyond me 😅 I have no idea what L2, p-norm 3 or any of that stuff actually means. <@794205442175402004> could you please explain this in layman terms?
2024-10-29 08:30:54
Basically the 1-norm is just taking the average of the error heat map (so on an image with an easy background, the score will be inflated a lot). The max-norm (inf-norm) is just taking the maximum (so the single worst region will determine the entire score). Norms in between do something in between, e.g. 2-norm is doing root-mean-square on the error heat map, 3-norm is cuberoot-mean-cube, etc. Higher norm asymptotically converges to taking the max.
2024-10-29 08:31:58
In butteraugli, what is called p-norm is actually a mix of p, 2p and 4p norms, iirc. So the default 3-norm is a weighted sum of 3, 6 and 12 norms.
RaveSteel
JKUser4592 `[libwebp_anim @ 000001f7cc51c200] Using libwebp for YUV-to-RGB conversion. You may want to consider passing in RGB instead for lossless encoding.`
2024-10-29 09:24:40
That's just a warning, safe to ignore
CrushedAsian255
_wb_ Basically the 1-norm is just taking the average of the error heat map (so on an image with an easy background, the score will be inflated a lot). The max-norm (inf-norm) is just taking the maximum (so the single worst region will determine the entire score). Norms in between do something in between, e.g. 2-norm is doing root-mean-square on the error heat map, 3-norm is cuberoot-mean-cube, etc. Higher norm asymptotically converges to taking the max.
2024-10-29 10:14:51
So the higher the number, the more it tends towards punishing killer samples?
gb82
Quackdoc brush says hello
2024-10-29 12:49:55
What is Brush?
_wb_
CrushedAsian255 So the higher the number, the more it tends towards punishing killer samples?
2024-10-29 02:11:49
higher norm means the score is focusing more on "worst-case", lower norm means it's more "average-case"
BlueSwordM
Demiurge That's why everyone says to never tune using metrics. See that massive improvement in theora quality on that demo page? Metrics think that's a regression when it's actually a ridiculously massive improvement.
2024-10-29 02:12:29
Actually, we do tune using metrics. The trick is using multiple metrics and understanding why they agree/disagree with each other if their results differ.
_wb_
2024-10-29 02:15:26
PSNR/RMSE is basically the 2-norm of the absolute error, typical SSIM is not that different from MSE but includes some basic modeling of contrast masking
2024-10-29 02:18:04
MS-SSIM is SSIM done at different scales (not just 1:1 like SSIM but also 1:2, 1:4, 1:8, 1:16) so it can "see" issues in the low-frequency signal
2024-10-29 02:23:44
SSIM / MS-SSIM are usually color-blind, applied only on luma (Y). Sometimes they are also applied on chroma channels but that doesn't really make a lot of sense, since the SSIM formula includes some modeling of the fact that we don't perceive light linearly, so when applied to chroma components it will turn out to make the assumption that chroma errors in the greens are worse than those in the pinks, if applied to CbCr.
2024-10-29 02:32:46
ssimulacra2 is basically MS-SSIM but: - SSIM formula corrected so it works for perceptual colorspaces and can be applied to chroma too - applied to XYB instead of just Y, so it's not color-blind - downscales done in linear light and using scales up to 1:32 - both the 1-norm and 4-norm (as opposed to SSIM/MS-SSIM which use just the 1-norm) - additional asymmetric error maps besides the SSIM one: one that measures blurring artifacts (distorted is smooth where original is not) and one that measures ringing/banding/blocking/etc artifacts (original is smooth where distorted is not), also with 1-norm and 4-norm - weighted sum of 108 sub-scores (six scales, three components, three error maps, two norms, `6*3*3*2=108`) where the weights were tuned using a mix of four datasets with subjective scores: CID22, TID2013, KADID-10k and KonFiG
BlueSwordM
_wb_ SSIM / MS-SSIM are usually color-blind, applied only on luma (Y). Sometimes they are also applied on chroma channels but that doesn't really make a lot of sense, since the SSIM formula includes some modeling of the fact that we don't perceive light linearly, so when applied to chroma components it will turn out to make the assumption that chroma errors in the greens are worse than those in the pinks, if applied to CbCr.
2024-10-29 02:43:59
Your last statement on color perception is very interesting. On the subject of metrics, I never did an analysis on metric accuracy for the best implementation of MS-SSIM vs ssimulacra2.
_wb_
2024-10-29 03:45:23
The original SSIM formula includes effectively a gamma 2 adjustment. Then it typically gets applied to Y with the sRGB transfer function, so roughly gamma 2.2. So basically it ends up doing gamma adjustment twice, in a way, assuming humans perceive light with gamma 4.2
2024-10-29 03:47:26
Probably this double-correction mistake went unnoticed because the 'real' perceptual function is actually more logarithmic and is better approximated with a higher gamma exponent than what sRGB uses, so gamma 4.2 is not really worse than gamma 2.2
jonnyawsom3
A homosapien Here is what the documentation has to say about max norm and p norm: > Butteraugli Distance (max norm) indicates the maximum psychovisual error in the decoded image. > > Butteraugli p-norm (3-norm) is a similar summary of the psychovisual error, but closer to an average, giving less weight to small low-quality regions. iirc ssimulacra2 is 4-norm.
2024-10-29 04:49:03
I almost wonder if max norm is fundamentally flawed... Because on max 0.8 is clearly better overall, while p-norm that's meant to average seems to just make the entire image worse instead of only leaving certain spots degraded like you'd expect. And the VarDCT blocks you showed in <#1278292301038227489> seem to just be more granular overall, having smaller blocks with lower qualities each instead of large blocks with more bits. Or maybe that's the issue, now the encoder is overcompensating in large smooth areas when it should be on fine details
DZgas Ж
2024-10-29 05:24:10
<:Stonks:806137886726553651> <:galaxybrain:821831336372338729> best ```py def image_difference(img1, img2): # by DZgas diff = sum(map(lambda x, y: abs(x - y), img1.getdata(), img2.getdata())) return diff ```
A homosapien
2024-10-29 05:26:19
We won't know for sure without more testing. I just prefer the "look" max norm favors, even if it's not accurate. I just hate blurring and max norm heavily punishes blurring and favors sharper outputs. I also wonder what would a ssimulacra2 tuned JXL look like...
DZgas Ж
DZgas Ж <:Stonks:806137886726553651> <:galaxybrain:821831336372338729> best ```py def image_difference(img1, img2): # by DZgas diff = sum(map(lambda x, y: abs(x - y), img1.getdata(), img2.getdata())) return diff ```
2024-10-29 05:26:30
Well, pixel difference is the best way that there is. But I understand why PSNR and SSIM are used. Because the pixel difference do incredibly terribly slow. Although in 2024 it could probably be used for images now.
2024-10-29 05:29:37
I tried butteraugli for AV1. It's unbearably slow. The difference with SSIM is almost invisible to the eye, it is there, but not worth it.
2024-10-29 05:30:55
using butteraugli for AV1 is actually like using a placebo preset, but it is added to the current preset
jonnyawsom3
A homosapien We won't know for sure without more testing. I just prefer the "look" max norm favors, even if it's not accurate. I just hate blurring and max norm heavily punishes blurring and favors sharper outputs. I also wonder what would a ssimulacra2 tuned JXL look like...
2024-10-29 05:32:24
Assuming at it's core, it's 'just' using the difference heatmaps, it wouldn't be too hard to swap to running ssimulacra2 instead for a rough idea of what it looks like
A homosapien
2024-10-29 05:37:41
I'm calling it here, my hypothesis is that tuning for ssimulacra2 would fix the color desaturation issues. It really likes color accuracy compared to butteraugli.
jonnyawsom3
2024-10-29 05:38:29
Or rather, the heatmap is what changes the quantization and decides on VarDCT blocks (roughly), so changing the heatmap to Ssimulacra2 *should* mean a more accurate distribution... Probably
2024-10-29 05:39:28
It'd mean a massive memory hit, so only for a test, but I think I'm right....
A homosapien
2024-10-29 05:40:15
Current libjxl is already quite ram hungry 😅
2024-10-29 05:40:28
Should we call the fork "ram-eater"?
jonnyawsom3
2024-10-29 05:48:06
Throw it in e11 xD
Quackdoc
gb82 What is Brush?
2024-10-29 05:57:58
https://github.com/reubeno/brush
gb82
2024-10-29 07:28:55
Woah
yoochan
2024-10-29 07:59:04
Why not zsh ?😁
Demiurge
2024-10-29 08:32:33
So basically none of the metrics take any spectral analysis into account
Quackdoc https://github.com/reubeno/brush
2024-10-29 08:35:05
Missed opportunity to call it Krush
2024-10-29 08:35:58
Since bash is basically just a (slow, inefficient) clone of ksh
A homosapien
2024-10-29 08:43:09
What does spectral analysis mean in this context?
Demiurge
2024-10-29 08:44:36
Low frequency errors are not punished worse than high frequency errors like they should be. And if certain spectra are completely obliterated and wiped away due to smearing and blurring none of the metrics care
2024-10-29 08:58:15
High frequency signals have no discernible shape and are easy to see through. Low frequency signals can change the shape and form of what's underneath them and alter the image content
2024-10-29 08:59:36
But that's not taken into account at all in any of the metrics, which is why they are so naive and don't care about obliterated detail
BlueSwordM Actually, we do tune using metrics. The trick is using multiple metrics and understanding why they agree/disagree with each other if their results differ.
2024-10-30 06:52:03
It's still a bad idea without confirming with your eyes... all metrics are naive in a similar way right now, in particular all of them think it's great when fine detail in low contrast areas get obliterated.
2024-10-30 06:55:15
Tuning without looking will 100% result in wasted time, regressions, and overfitting to a really really bad model
2024-10-30 06:57:32
It will result in low contrast areas looking really bizarre and horrible but in a way that get really good scores according to the metrics
2024-10-30 06:59:18
Like the regressions that were really noticeable in those TF2 images in that bug report on the libjxl bug tracker
jonnyawsom3
2024-10-30 07:09:13
<#1278292301038227489>
A homosapien
2024-10-30 08:02:31
It's funny because I think Jyrki was double checking with his eyes... I think it happened for multiple reasons: * He didn't double check every change he made. (I think most commits were unchecked) * He relied solely on 1 metric ~~(not even the best one)~~ * The changes usually caused regressions in other metrics (which were ignored) * I think his dataset was just too small/limited (photographic images only) * Jyrki is just one person
2024-10-30 08:09:45
I feel like having a 'jxl community' dataset to test against would prevent future problems. It would contain difficult images from various sources: screenshots, artwork, comics, etc.
2024-10-30 08:15:22
You know what? This server should host a biyearly jxl poll, in which we rate if the lossy changes look better in a blind study 😂.
_wb_
2024-10-30 08:24:47
We could setup some community crowd-sourced subjective eval. More ground truth to validate against gives better metrics in the long run.
jonnyawsom3
2024-10-31 12:37:11
If I recall, it was mentioned of doing something similar once AIC Part 3 is done
Demiurge
2024-10-31 03:09:27
The hard part is designing a scientifically sound double-blind tester web app
2024-10-31 03:11:12
And being able to recognize valid test data vs bogus responses
2024-10-31 03:11:29
It would be easy to submit nonsense into the crowdsourced data
2024-10-31 03:12:22
Some judges just have better eyes or judgement...
2024-10-31 03:13:32
And the instructions the judges are given can also skew the results. It should be focused on "which image best represents or is most similar to X" and not "which looks better"
2024-10-31 03:14:23
Coming up with a clever methodology to get good information sounds like the most challenging part
2024-10-31 03:15:33
Maybe the instructions should be posed as, "which image is different" or "order these images by similarity"
2024-10-31 03:18:01
Like a challenge for people to notice the difference between two images. Maybe with a limited amount of time, like 10 or 15 seconds, to determine which image is compressed. With a few trick questions thrown in for sanity checking.
2024-10-31 03:20:17
The quality of the data matters a lot and careful methodology has a big impact on what you get
CrushedAsian255
2024-10-31 06:51:29
For the spam problem you can possible: require login only take advice if multiple people agree timer (you must look at the image for at least X seconds) maybe ban if detected pressing either only the A or only the B
A homosapien
2024-10-31 06:54:03
At least for the first few polls, keep it locally here in the server, I feel like we know what to look for
CrushedAsian255
A homosapien At least for the first few polls, keep it locally here in the server, I feel like we know what to look for
2024-10-31 06:55:51
<:This:805404376658739230>
_wb_
2024-10-31 08:35:13
AIC-3 has a lot of mechanisms to deal with the problem of unreliable participants, when doing Mechanical Turk crowdsourcing we have to reject ~50% of the responses. Besides trap questions, the main mechanism to detect bad participants is to just make the experiment symmetric and ask every question twice, once for A vs B and once for B vs A. Then you can calculate the consistency of the replies. E.g. line clickers who always select the left answer will get very bad consistency,.
dogelition
2024-10-31 12:37:18
https://gregbenzphotography.com/hdr-photos/cats-vs-dogs-hdr-gain-map-test/
2024-10-31 12:39:43
images of what it looks like + the actual gain map here: <https://x.com/MishaalRahman/status/1851281393398993159>
CrushedAsian255
2024-10-31 01:08:16
This kind of gain map trickery is why they’re not the best system
_wb_
2024-10-31 01:55:33
Agreed. It's a nice gimmick for doing HDR image delivery in a way that gracefully degrades, but it's a mess if you want to use images not just for delivery use cases but also as a source of truth in authoring workflows.
2024-10-31 01:56:25
Since the question is: what is this image, actually? Is it a cat? Is it a dog? Is it both?
jonnyawsom3
2024-10-31 02:12:51
Is it a bird? Is it a plane? No! It's 2 JPEGs glued together!
HCrikki
2024-10-31 02:18:25
'hdr doesnt make files bigger' isnt quite the flex people think when youre actually still using bloated huge jpgs full of compression artifacts - twice larger than an equivalent hdr jxl thats still higher quality
jonnyawsom3
2024-10-31 02:33:32
But... It does make it bigger, it's literally 2 files in 1
2024-10-31 02:34:10
JXL HDR can actually end up smaller than normal, because of no dithering or banding
2024-10-31 02:34:39
Oh that reminds me....
_wb_
2024-10-31 04:22:25
With the kind of gain maps they seem to use in Android cameras, the gain map doesn't add that many bytes: it's 4x downsampled and single-component. That also means that the HDR image suffers from weird artifacts and is quite low quality compared to what you can get with a gain map that is not downsampled and has 3 components — but if you do that then of course you do end up with a gain map that is about as big as the SDR image
jonnyawsom3
2024-10-31 04:49:31
I know I was concerned about JPEGs traditionally poor performance in dark areas of images, but I suppose at 4x downsampling it gets smoothed out anyway and is high quality from the camera
Quackdoc
_wb_ With the kind of gain maps they seem to use in Android cameras, the gain map doesn't add that many bytes: it's 4x downsampled and single-component. That also means that the HDR image suffers from weird artifacts and is quite low quality compared to what you can get with a gain map that is not downsampled and has 3 components — but if you do that then of course you do end up with a gain map that is about as big as the SDR image
2024-10-31 08:29:28
I think this is to be expected, Vendors haven't had a lot of hands on time with gainmaps to do any tuning with them. so they are probably following whatever algorithm that google is using upstream
spider-mario
2024-10-31 08:39:26
I sympathise with the desire to have control over the tone-mapped version, but it seems to me that one might as well just store two full images instead of this attempt at encoding a transform between the two
CrushedAsian255
2024-10-31 08:45:07
Is the only benefit to UltraHDR is that you can still view them on older devices?
spider-mario
2024-10-31 08:48:11
pretty much, as far as I understand
Quackdoc
2024-10-31 08:52:35
correct indeed.
CrushedAsian255
2024-10-31 08:56:32
Can’t Google with their infinite industry control push for mass adoption of an actual HDR format (AVIF, JPEG XL) instead of just sticking 2 JPEGs together and calling it HDR
HCrikki
2024-10-31 08:59:56
rest of industry can force a paradigm change by integrating jxl into their own apps - those completely bypass browsers and can end serving even more efficient versions of the same content than whats served to browsers
2024-10-31 09:00:23
cdns serve apps and games too, not just websites
Quackdoc
CrushedAsian255 Can’t Google with their infinite industry control push for mass adoption of an actual HDR format (AVIF, JPEG XL) instead of just sticking 2 JPEGs together and calling it HDR
2024-10-31 09:01:00
no because google actually cares about legacy users
2024-10-31 09:01:34
Google has realized that if you want to actually transform and push to a new format, the format has to be compatible. We have learned this time and time and time again with various different things.
2024-10-31 09:01:43
If you completely break compatibility, people will not adopt it.
2024-10-31 09:04:51
The analog to digital conversion showcased this well, monitors that tried to go just digital DVI all failed, DVI dual was made because you need buffer when going from analog to digital. Web services all fallback to formats too.
spider-mario
2024-10-31 09:04:56
true, although if the concatenated secondary JPEG requires new processing anyway, might as well make it a JXL or something
CrushedAsian255
2024-10-31 09:06:06
The idea is that if you don’t support ultra hdr it gracefully falls back on sdr
Quackdoc
2024-10-31 09:06:08
indeed, I don't think the format of the gainmap matters a lot, it's probably done to simply processing, but how that works in reality... I doubt it makes much of a difference. they could even use AVIF, but I guess AVIF is slightly too new for supported android devices though
CrushedAsian255
2024-10-31 09:06:21
Oh nvm I didn’t understand the argument
Quackdoc indeed, I don't think the format of the gainmap matters a lot, it's probably done to simply processing, but how that works in reality... I doubt it makes much of a difference. they could even use AVIF, but I guess AVIF is slightly too new for supported android devices though
2024-10-31 09:06:37
I’m guessing just simplification
Quackdoc no because google actually cares about legacy users
2024-10-31 09:07:10
Couldn’t Google adopt jpeg xt then?
Quackdoc
2024-10-31 09:07:22
does anyone use jpeg xt?
CrushedAsian255
2024-10-31 09:07:31
They could have made people
Quackdoc
2024-10-31 09:07:49
ehhh, Google is not so all powerful
CrushedAsian255
2024-10-31 09:07:56
Ultra HDR is basically doing what JPEG XT is meant for
Quackdoc ehhh, Google is not so all powerful
2024-10-31 09:08:16
As in instead of making their own thing they could have pushed for the already existing solution
2024-10-31 09:08:22
I guess maybe they wanted an open standard
Quackdoc
2024-10-31 09:09:22
oh, if jpeg xt is not an open standard, it would have been an instant no for google
2024-10-31 09:10:29
I don't know much about the specifics of jpeg xt so I cant comment on that front, how is authoring for it, how it works, I know nada
_wb_
2024-10-31 10:09:45
Jpeg XT has two ways of doing gain maps, one is royalty free, the other has some Dolby patents on it iirc
2024-10-31 10:10:09
Anyway it is irrelevant now, the wheel has been reinvented already
2024-10-31 10:12:25
There are many ways to deal with legacy, graceful degradation is one way but it's not the method I prefer since it tends to lead to mostly degradation and little grace.
2024-10-31 10:19:37
You could also do jpegli in HLG or some variant of HLG and then you can do actual HDR in a single jpeg where the degradations are nicer imo: applications that don't do HDR will show some reasonable-ish SDR image, applications that do support HDR but decode jpeg to 8-bit get some banding, applications that get it right get a good image, at the cost of spending more bytes than with modern codecs.
2024-10-31 10:21:33
Or you could just use content negotiation and/or media queries and send an SDR jpeg to legacy user agents and a HDR jxl to user agents that support it.
Quackdoc
2024-10-31 10:23:51
content negotiation works in many cases, but when it comes to something like generic file sharing it's not really possible.
_wb_
2024-10-31 10:25:05
True. I guess you can just offer a choice to share with "maximum compatibility" (to borrow the Photoshop save dialog terminology) or not.
dogelition
_wb_ You could also do jpegli in HLG or some variant of HLG and then you can do actual HDR in a single jpeg where the degradations are nicer imo: applications that don't do HDR will show some reasonable-ish SDR image, applications that do support HDR but decode jpeg to 8-bit get some banding, applications that get it right get a good image, at the cost of spending more bytes than with modern codecs.
2024-10-31 10:36:53
doesn't that still require ICC profile support to look reasonable in SDR? assuming the use of bt.2020 primaries in that case, i don't really see an advantage over doing it the way libjxl does with the tone mapping built into the icc profile (while using PQ for the actual HDR image)
_wb_
2024-10-31 10:37:55
You could do a variant of HLG with sRGB or P3 primaries so the misinterpretation as sRGB is not too bad
2024-10-31 10:39:01
In any case if the application does not do correct color management then colors will generally not be correct.
dogelition
2024-10-31 10:42:18
i guess that's where ultra hdr shines, as it really "just works" in anything that can display SDR images
_wb_
2024-10-31 10:42:47
I guess my position is that gain maps can be a useful approach for interop in delivery and interchange (though I think there are better options), but it's a bad idea as an authoring format, including making it a capture format. You are basically sacrificing fidelity of the HDR image for the sake of interop, which I don't think is a good idea for a capture format.
spider-mario
_wb_ You could do a variant of HLG with sRGB or P3 primaries so the misinterpretation as sRGB is not too bad
2024-10-31 10:49:33
yeah, that works quite well
2024-10-31 10:50:06
also, there might be a case to be made that with HLG, a tone-mapping ICC LUT has “less work” to do
2024-10-31 10:50:35
(haven’t ‘formally’ verified to what extent that is true, but that seems intuitively plausible)
CrushedAsian255
_wb_ True. I guess you can just offer a choice to share with "maximum compatibility" (to borrow the Photoshop save dialog terminology) or not.
2024-10-31 11:54:14
or how iPhone does it
afed
2024-11-01 12:07:11
https://github.com/strukturag/libheif/releases/tag/v1.19.0
TheBigBadBoy - 𝙸𝚛
2024-11-01 09:43:09
finally opened this issue lol https://github.com/MegaByte/jpegultrascan/issues/9
JKUser4592
2024-11-04 03:47:06
What are some tools or image viewers for Windows that can support playing lossless animated AVIF files? What are some Android apps that support playing them on mobile devices?
A homosapien
2024-11-04 05:31:30
Genuine question, why do you keep insisting on using lossless AVIF? What does AVIF offer that animated WebP doesn't?
CrushedAsian255
2024-11-04 05:56:22
maybe higher bit depths?
2024-11-04 05:56:38
also why used Animated AVIF when you can use... AV1
Quackdoc
2024-11-04 06:07:30
It's just AV1 in a convenient wrapper.
2024-11-04 06:08:08
Well, convenient for the user.
CrushedAsian255
2024-11-04 06:08:47
wouldn't a WebM make more sense for something like a video?
A homosapien
2024-11-04 06:09:33
It's just that lossless AVIF sucks so bad I struggle to understand why you would even bother using it. Animated WebP or JXL would be sooooo much more efficient
CrushedAsian255
2024-11-04 06:09:33
2024-11-04 06:09:34
I can just mux the entire Shrek movie encoded in AV1 into an AVIF and make this come true
jonnyawsom3
2024-11-04 06:15:05
Make an ultra loose patches encoder and have the same frame of Shrek for the entire movie
Quackdoc
CrushedAsian255 wouldn't a WebM make more sense for something like a video?
2024-11-04 06:18:24
I mean, I do agree that avif is a shitty container, but seperating "image" from "video" from a user perspective is important
2024-11-04 06:18:39
too bad mki doesn't exist, we have mkv and mka, T.T
CrushedAsian255
Quackdoc too bad mki doesn't exist, we have mkv and mka, T.T
2024-11-04 07:26:30
dont forget mks for subtitles!
2024-11-04 07:27:11
since mkv supports storing random data streams as attachments, I propose the new file archive format, MKD! It uses the Matroska container structure but stores all the files using data/attachment streams
JKUser4592
A homosapien It's just that lossless AVIF sucks so bad I struggle to understand why you would even bother using it. Animated WebP or JXL would be sooooo much more efficient
2024-11-04 08:48:37
Lossless AVIF is much smaller
A homosapien
2024-11-04 08:48:56
Compared to what?
CrushedAsian255
2024-11-04 08:49:18
Compared to WebP? no way
username
2024-11-04 08:49:44
inb4 It's not actually **lossless** AVIF
CrushedAsian255
2024-11-04 08:50:10
inb4 someone starts spitting benchmarks
Quackdoc
username inb4 It's not actually **lossless** AVIF
2024-11-04 08:50:46
>me when I svt-av1
A homosapien
JKUser4592 Lossless AVIF is much smaller
2024-11-04 08:51:54
What is your source, and what programs are you converting it to an animated AVIF?
CrushedAsian255
2024-11-04 09:00:38
Can av1 even do lossless video?
A homosapien
2024-11-04 09:01:25
only the reference encoder, libaom can
JKUser4592
2024-11-04 09:45:06
I meant when using libaom-av1
A homosapien
2024-11-04 10:15:44
Are you converting from a video or from a sequence of images?
Quackdoc
2024-11-04 10:58:19
does it matter? [Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&quality=lossless&name=Hmm)
JKUser4592
A homosapien Are you converting from a video or from a sequence of images?
2024-11-04 11:24:27
converting from a video
HCrikki
Quackdoc does it matter? [Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&quality=lossless&name=Hmm)
2024-11-04 11:43:04
absolutely. most recommend to go back to the original animation/video of the highest quality as source, because then a *video* codec gives the best results. that however is really a workaround valid for all codecs and doesnt speak of any merit of avif as replacement for gif, just an inefficient substitute
2024-11-04 11:43:26
if your source is an animated **gif**, webp and jxl (libjxl) give better results (lossless with smaller size animation than avif)
Quackdoc
2024-11-04 11:50:02
some animated gifs can still be better as AVIFs I have found
2024-11-04 11:52:07
also apng
jonnyawsom3
2024-11-04 12:15:59
Optimized APNG to JXL is the best you can get without writing your own tools
2024-11-04 12:16:38
On a vaguely related note, has there ever been a GIF encoder that uses blue noise dithering instead of FS?
2024-11-04 12:20:40
I ended up reading this, which is the basis for Blender's Blue Noise sampler, along with it's use in the game INSIDE to eliminate banding https://psychopath.io/post/2022_07_24_owen_scrambling_based_dithered_blue_noise_sampling
2024-11-04 12:21:36
So it's obvious it can be relatively fast with sample textures or lookup tables, yet I can't find anything that uses it for GIFs instead of Floys Steinberg that seemingly everyone on earth uses
JKUser4592
Quackdoc also apng
2024-11-04 01:01:12
show me an example
Quackdoc
2024-11-04 01:02:55
I don't have any off hand but if I come across one I'll share
JKUser4592
2024-11-04 01:48:58
And by better, you mean smaller file sizes, right?
RaveSteel
2024-11-04 01:53:08
I have some examples, all lossless of course. ``` 34M 123898350_ugoira1920x1080 - Frieren.apng 20M 123898350_ugoira1920x1080 - Frieren_s2.avif 26M 123898350_ugoira1920x1080 - Frieren_e10.jxl 29M 123898350_ugoira1920x1080 - Frieren.webp ---- 98M ZhEb2N3.gif 84M ZhEb2N3.gif.e10.jxl 78M ZhEb2N3.apng 77M ZhEb2N3_opt.apng 78M ZhEb2N3.apng 90M ZhEb2N3.apng.e7.jxl 76M ZhEb2N3.apng.e10.jxl 81M ZhEb2N3.webp 261M ZhEb2N3_s0_crf0.avif ---- 28K 1253399939300458618.apng 232K 1253399939300458618.avif 32K 1253399939300458618.gif 28K 1253399939300458618.gif.apng 36K 1253399939300458618.gif.jxl 28K 1253399939300458618.gif.webp 36K 1253399939300458618.jxl 28K 1253399939300458618.webp 1,7M 1434205067_1434202320284.apng 6,7M 1434205067_1434202320284.avif 2,0M 1434205067_1434202320284.gif 1,9M 1434205067_1434202320284.jxl 1,6M 1434205067_1434202320284.webp 1,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.apng 5,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.avif 1,7M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.gif 1,8M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.jxl 1,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.webp 2,4M 1434987698_asho.apng 11M 1434987698_asho.avif 2,1M 1434987698_asho.gif 2,9M 1434987698_asho.jxl 2,4M 1434987698_asho.webp 1,7M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.apng 6,6M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.avif 1,9M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.gif 2,2M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.jxl 1,7M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.webp ``` WebP is often a lot smaller than AVIF, with AVIF only sometimes being smaller
2024-11-04 01:53:51
No idea where the three duplicates at the bottom are from
2024-11-04 01:54:40
Most of the JXL in this example are derived of the GIF instead of APNG, so they are quite unoptimized
JKUser4592
2024-11-04 02:45:54
Are the WEBP, JXL, and AVIF files in these examples lossless?
jonnyawsom3
RaveSteel I have some examples, all lossless of course. ``` 34M 123898350_ugoira1920x1080 - Frieren.apng 20M 123898350_ugoira1920x1080 - Frieren_s2.avif 26M 123898350_ugoira1920x1080 - Frieren_e10.jxl 29M 123898350_ugoira1920x1080 - Frieren.webp ---- 98M ZhEb2N3.gif 84M ZhEb2N3.gif.e10.jxl 78M ZhEb2N3.apng 77M ZhEb2N3_opt.apng 78M ZhEb2N3.apng 90M ZhEb2N3.apng.e7.jxl 76M ZhEb2N3.apng.e10.jxl 81M ZhEb2N3.webp 261M ZhEb2N3_s0_crf0.avif ---- 28K 1253399939300458618.apng 232K 1253399939300458618.avif 32K 1253399939300458618.gif 28K 1253399939300458618.gif.apng 36K 1253399939300458618.gif.jxl 28K 1253399939300458618.gif.webp 36K 1253399939300458618.jxl 28K 1253399939300458618.webp 1,7M 1434205067_1434202320284.apng 6,7M 1434205067_1434202320284.avif 2,0M 1434205067_1434202320284.gif 1,9M 1434205067_1434202320284.jxl 1,6M 1434205067_1434202320284.webp 1,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.apng 5,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.avif 1,7M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.gif 1,8M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.jxl 1,5M 1434863403_cats-playing-pong-with-laser-pointer.gif.pagespeed.ce.5wpl8OkWnNe1JovLmnRn.webp 2,4M 1434987698_asho.apng 11M 1434987698_asho.avif 2,1M 1434987698_asho.gif 2,9M 1434987698_asho.jxl 2,4M 1434987698_asho.webp 1,7M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.apng 6,6M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.avif 1,9M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.gif 2,2M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.jxl 1,7M 1434993945_tumblr_museefhGA91qdlh1io1_r1_400.webp ``` WebP is often a lot smaller than AVIF, with AVIF only sometimes being smaller
2024-11-04 03:00:49
> all lossless of course.
2024-11-04 03:01:24
Yes, the lossless files are lossless
A homosapien
2024-11-04 03:38:37
Let me get a video and convert it to lossless AVIF to see what happens
JKUser4592
2024-11-04 05:10:02
How about these? https://www.mediafire.com/file/oi7pv6hbjcpsap9/Test_Files_and_Videos.7z/file
2024-11-04 05:10:34
Just get the mkv files and ignore the rest.
2024-11-04 05:20:10
And keep the resolution at 1920x1080
A homosapien
2024-11-04 05:56:30
ooohhhhh, the input videos are lossy as well, that explains a lot. There is a subtle grain throughout the frames making it hard for animated image formats like webp/png/jxl that rely on interframe optimization.
2024-11-04 05:56:52
so that begs the question, why even bother keeping it lossless if the input is already lossy?
2024-11-04 06:00:29
In fact I bet a light denoising algorithm would make it compress wayyyyyyyy better
jonnyawsom3
2024-11-04 06:00:46
That's what we tried to ask on the 4 Reddit posts they made, now replaced with 2 more Reddit posts, one just linking to the other and asking for comments