|
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
|
|
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
|
|
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
|
|