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

A homosapien
2024-11-04 06:00:53
I see
2024-11-04 06:10:46
It's just bad practice to turn a lossy input into a lossless one. `Test1.mkv` was 4.2 MB and a lossless AVIF equivalent was around 75 MB. That's like having a quality 80 jpeg and saving as a png or something.
JKUser4592
2024-11-04 06:11:55
Let's just say I can't upload my videos publicly, and can only do so if they are images.
A homosapien
2024-11-04 06:20:34
Alright then, I recommend adding a little bit of denoising and lossy compression, 75+ MB for a 5 second animation is HUGE. Not to mention my computer struggled to decode & play the animated AVIF, it was constantly stuttering/hitching.
2024-11-04 06:22:01
Here is a simple example, a high quality lossy avif. It looks visually indistinguishable to me. And the best part? It's only 1.8 MB
2024-11-04 06:23:01
And it doesn't stutter or hitch like the lossless versions either!
2024-11-04 06:24:17
My ffmpeg input:`ffmpeg -i Test1.mkv -c:v libaom-av1 -cpu-used 4 -crf 18 Test1.avif`
JKUser4592
2024-11-04 06:52:19
But now do you see my point now on why I chose AVIF?
A homosapien
2024-11-04 06:57:59
yes, because the input is already video (and you can't upload that video), so in this case AVIF would actually be the best format to use
2024-11-04 07:00:03
Still though, please use lossy compression, that's what AV1 codec excels at. Using lossless with AVIF is like trying to use a car as a boat, it can work... albeit very poorly. 😅
jonnyawsom3
2024-11-04 07:03:53
I mean, it helps that AVIF is a video :P
A homosapien
2024-11-04 07:07:13
That's the main reason yeah
JKUser4592 But now do you see my point now on why I chose AVIF?
2024-11-04 07:25:04
AVIF is really good at lossy compression, I have no problem with it. When you said lossless AVIF that was a red flag to me. Even with a video input choosing AVIF lossless over lossy is a bad idea imo.
Nova Aurora
2024-11-05 01:20:27
RaveSteel
2024-11-05 05:45:52
Do you mean Apple live photos?
CrushedAsian255
2024-11-06 11:55:12
They mean like animated AVIF but HEVC
BlueSwordM
2024-11-07 02:34:33
Hello.
2024-11-07 02:34:34
https://aomedia-review.googlesource.com/c/aom/+/194662
juliobbv
BlueSwordM https://aomedia-review.googlesource.com/c/aom/+/194662
2024-11-07 03:05:46
😮 me jumpscare
CrushedAsian255
2024-11-07 04:23:07
Could libjxl plagiarise, ahem I mean *take inspiration from* some of the improvements from AV1/AVIF?
BlueSwordM
CrushedAsian255 Could libjxl plagiarise, ahem I mean *take inspiration from* some of the improvements from AV1/AVIF?
2024-11-07 04:39:47
No? Most of the improvements came from JXL. We just worked a lot on them. If you find anything that we do that is better, just take it and shove it into libjxl.
juliobbv
CrushedAsian255 Could libjxl plagiarise, ahem I mean *take inspiration from* some of the improvements from AV1/AVIF?
2024-11-07 04:47:27
the major ideas are in libjxl already, but some of the 'knobs' could be adjusted to be closer PSY's in the low to mid-high fidelity range
2024-11-07 04:48:06
it's just a matter of someone having time to sit down and tune this or that feature
CrushedAsian255
juliobbv it's just a matter of someone having time to sit down and tune this or that feature
2024-11-07 04:48:18
Genetic algorithm?
HCrikki
2024-11-07 04:52:34
code is efficient already. any talk of quality regarding libjxl tends to be related to libjxl (more specifically, the jxl authors' release of libjxl) prioritizing real visual quality rather than need 3rdparty builds with different priorities and tuning
CrushedAsian255
2024-11-07 04:53:32
Libjxl low-medium quality tune version that auto activates at d>10?
juliobbv
CrushedAsian255 Genetic algorithm?
2024-11-07 04:54:05
probably something closer to more optimal transform size selection
HCrikki
2024-11-07 04:54:21
personally i think efforts should be adaptive to resolution so smaller images are smaller and larger images drop 1 effort in order to maintain encoding performance, with e7 the default clearly marked and promoted as *recommended* for any purpose that is not fast capturing/screenshoting (e1-3)
CrushedAsian255
2024-11-07 04:55:00
That could make sense
juliobbv
2024-11-07 04:55:03
somebody posted some images where 0.8 performs better than 0.11, and it was partly due to a different selection of transform sizes
CrushedAsian255
2024-11-07 04:55:19
Like larger images don’t get as many butterfly iterations
2024-11-07 04:55:26
Butter-something thing
2024-11-07 04:55:33
Can never remember the spelling
juliobbv
2024-11-07 04:56:39
when it doubt, just call it 🧈
2024-11-07 04:56:50
but it's butteraugli
CrushedAsian255
2024-11-07 04:57:40
Butter that encoding! 🛬
jonnyawsom3
HCrikki personally i think efforts should be adaptive to resolution so smaller images are smaller and larger images drop 1 effort in order to maintain encoding performance, with e7 the default clearly marked and promoted as *recommended* for any purpose that is not fast capturing/screenshoting (e1-3)
2024-11-07 09:05:53
I do kinda wish the Var in VarDCT was used under effort 5, since a lot of the time 3 or 4 is recommended/used instead so it's just 8x8 blocks anyway
2024-11-07 09:06:38
Then again, they tend to all be the same size at high quality anyway
CrushedAsian255
I do kinda wish the Var in VarDCT was used under effort 5, since a lot of the time 3 or 4 is recommended/used instead so it's just 8x8 blocks anyway
2024-11-07 09:29:29
JPEG XL: 8x8 DCT and the Weighted predictor
Naksu
2024-11-08 03:15:01
Do you know if it's possible to add a comment tag to a PNG file?
jonnyawsom3
2024-11-08 03:58:13
Kinda
JendaLinda
2024-11-09 08:29:20
I wanted to try the latest version of jpegli but it seems the Windows builds are missing the executables. https://github.com/google/jpegli/actions/runs/11703639102
2024-11-09 08:29:54
I suppose the jpegli version bundled with libjxl is old. Are there newer Windows executables for jpegli available?
DZgas Ж
JendaLinda I suppose the jpegli version bundled with libjxl is old. Are there newer Windows executables for jpegli available?
2024-11-09 11:03:42
I think it's time to fire all the developers. they are all too lazy to make build
2024-11-09 11:04:01
<:Google:806629068803932281> 👍
Naksu
Kinda
2024-11-09 11:16:57
How did you do that? It’s not natively possible on Windows.
jonnyawsom3
2024-11-09 11:42:04
Third party tools
2024-11-09 11:42:14
Tweakpng
Naksu
2024-11-09 11:42:20
Thanks
CrushedAsian255
2024-11-09 11:43:26
I wish more things supported the `svgz` extension
2024-11-09 11:43:50
like lots of things know it's an svg but ignore the fact that it is GZipped
2024-11-09 11:44:06
so this happens
JendaLinda
DZgas Ж I think it's time to fire all the developers. they are all too lazy to make build
2024-11-09 04:25:08
To me it looks like some error, neither `jpegli-x64-windows` nor `jpegli-x86-windows` includes jpegli binaries.
DZgas Ж
JendaLinda To me it looks like some error, neither `jpegli-x64-windows` nor `jpegli-x86-windows` includes jpegli binaries.
2024-11-09 04:36:36
hm... maybe https://artifacts.lucaversari.it/libjxl/libjxl/latest/ jxl-x64-windows-static.zip
JendaLinda
DZgas Ж hm... maybe https://artifacts.lucaversari.it/libjxl/libjxl/latest/ jxl-x64-windows-static.zip
2024-11-09 04:39:03
After jpegli was moved to the separate repository, I'm not sure if the copy included in libjxl is being updated.
DZgas Ж
JendaLinda After jpegli was moved to the separate repository, I'm not sure if the copy included in libjxl is being updated.
2024-11-09 04:41:43
An interesting question. I think it's better if you ask this in <#848189884614705192>
2024-11-10 05:56:42
Encoding of the original GIF file in 2024 (for example, for discord) *I searched all kinds of sites that compress GIFs, all kinds of forums with programs, with keys for ffmpeg encoding... even one piece of shit on the output* My compression algorithm from video to gif using terminal FFMPEG in 3 steps ``` ffmpeg -i VIDEO.mp4 -vf "scale=480:270:flags=spline+full_chroma_inp,mpdecimate=hi=64*50:lo=64*5:frac=1,nlmeans=1:5:5:5:5,hqdn3d=luma_spatial=3:chroma_spatial=2:chroma_tmp=20:luma_tmp=15,nlmeans=1:5:5:5:5,mpdecimate" temp.apng ``` ``` ffmpeg -i temp.apng -vf "palettegen" palette.png ``` ``` ffmpeg -i temp.apng -i palette.png -filter_complex "paletteuse=dither=none" out.gif ``` Explanation of the primary processing: gif can have any frame rate on each frame, but for some reason no one uses it anywhere at all. For the same reason, there is no FPS setting anywhere in my parameters. It is dynamic, completely dependent on the processing of the input video. —mpdecimate filter removes frames that are very similar to each other, without encoding any gaps. `The strength of skipping similar frames is adjusted by the parameter lo=64*5 (64*4 skips less, 64*6 skips more)` — nlmeans filter smooths out low-frequency spatial noise, which causes GIFs to make noise, losing information no matter what. `In the line 1:5:5:5:5 - the first digit indicates the suppression force, the rest indicate the length in pixels for noise analysis. To speed up coding, you can set 1:3:3:3:3` —HQDN3D filter smooths out temporal noise when gradients move from one to the other.` The power is adjustable chroma_tmp=power (color) luma_tmp=power (brightness)`
RaveSteel
DZgas Ж Encoding of the original GIF file in 2024 (for example, for discord) *I searched all kinds of sites that compress GIFs, all kinds of forums with programs, with keys for ffmpeg encoding... even one piece of shit on the output* My compression algorithm from video to gif using terminal FFMPEG in 3 steps ``` ffmpeg -i VIDEO.mp4 -vf "scale=480:270:flags=spline+full_chroma_inp,mpdecimate=hi=64*50:lo=64*5:frac=1,nlmeans=1:5:5:5:5,hqdn3d=luma_spatial=3:chroma_spatial=2:chroma_tmp=20:luma_tmp=15,nlmeans=1:5:5:5:5,mpdecimate" temp.apng ``` ``` ffmpeg -i temp.apng -vf "palettegen" palette.png ``` ``` ffmpeg -i temp.apng -i palette.png -filter_complex "paletteuse=dither=none" out.gif ``` Explanation of the primary processing: gif can have any frame rate on each frame, but for some reason no one uses it anywhere at all. For the same reason, there is no FPS setting anywhere in my parameters. It is dynamic, completely dependent on the processing of the input video. —mpdecimate filter removes frames that are very similar to each other, without encoding any gaps. `The strength of skipping similar frames is adjusted by the parameter lo=64*5 (64*4 skips less, 64*6 skips more)` — nlmeans filter smooths out low-frequency spatial noise, which causes GIFs to make noise, losing information no matter what. `In the line 1:5:5:5:5 - the first digit indicates the suppression force, the rest indicate the length in pixels for noise analysis. To speed up coding, you can set 1:3:3:3:3` —HQDN3D filter smooths out temporal noise when gradients move from one to the other.` The power is adjustable chroma_tmp=power (color) luma_tmp=power (brightness)`
2024-11-10 07:45:11
gifski is a great tool based on ffmpeg
jonnyawsom3
2024-11-10 08:24:46
Doesn't take video input though
RaveSteel
2024-11-10 08:31:30
it does
Quackdoc
2024-11-10 08:34:00
isnt the whole point of gifski to take videos?
CrushedAsian255
2024-11-10 08:35:31
thought so
jonnyawsom3
2024-11-10 08:44:45
Rather, it's disabled by default so there's no binaries for it https://github.com/ImageOptim/gifski?tab=readme-ov-file#with-built-in-video-support
RaveSteel
2024-11-10 09:11:01
Ah, I did not expereince that due to installing it from my repos
TheBigBadBoy - 𝙸𝚛
2024-11-10 11:36:32
also flexiGIF is quite good (but slow) for GIF optimization
A homosapien
2024-11-10 11:51:27
very very slow indeed
jonnyawsom3
2024-11-10 11:55:58
I'm having regrets
TheBigBadBoy - 𝙸𝚛
2024-11-11 12:06:38
but I don't understand why it is so slow bc it is advertized as LZW/GIF optimization (and in GIF it should only do LZW), and GIF optimization is like 10+ times slower than for a `.z` file
RaveSteel
2024-11-11 12:11:23
how does it compare to gifsicle?
A homosapien
2024-11-11 12:16:22
It's basically an LZW brute forcer, that's why it's unbearably slow
RaveSteel how does it compare to gifsicle?
2024-11-11 12:17:23
gifsicle can usually get within 99.5% of the size while being orders of magnitudes faster
2024-11-11 12:19:18
Also fun fact, flexiGIF doesn't do palette sorting, so the optimal workflow is to run the GIF through gifsicle *then* through flexiFGIF
2024-11-11 12:20:24
And then after 20 years you have the perfectly optimized GIF!
2024-11-11 12:20:28
https://tenor.com/view/skeleton-falling-gif-27355771
jonnyawsom3
2024-11-11 12:32:16
As far as I'm aware flexiGIF is purely an LZW optimizer, trying to squeeze a few more bits out of the existing data. It does however have the defaults set to be a brute force solution too...
2024-11-11 12:38:30
`'flexi.gif' is 18270 bytes smaller than 'Test.gif' (621919 vs 640189 bytes) => you saved 2.854%. Finished after 2651.14 seconds.`
2024-11-11 12:53:57
```wintime -- cjxl -d 0 Test.gif Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 512.7 kB (0.736 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 289985 PeakWorkingSetSize: 42.15 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.828 KiB PeakPagefileUsage: 40.56 MiB Creation time 2024/11/11 00:47:30.790 Exit time 2024/11/11 00:48:05.561 Wall time: 0 days, 00:00:34.770 (34.77 seconds) User time: 0 days, 00:00:01.140 (1.14 seconds) Kernel time: 0 days, 00:00:34.640 (34.64 seconds) wintime -- cjxl -d 0 Test.apng Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 505.2 kB (0.725 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 330741 PeakWorkingSetSize: 66.79 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.961 KiB PeakPagefileUsage: 64.43 MiB Creation time 2024/11/11 00:49:28.310 Exit time 2024/11/11 00:50:02.331 Wall time: 0 days, 00:00:34.021 (34.02 seconds) User time: 0 days, 00:00:01.000 (1.00 seconds) Kernel time: 0 days, 00:00:33.859 (33.86 seconds)``` That's... Interesting... The GIF is run though gifsicle and flexiGIF, but apparently `gif2apng` found something smaller that JXL could take advantage of with some extra memory
JendaLinda
TheBigBadBoy - 𝙸𝚛 also flexiGIF is quite good (but slow) for GIF optimization
2024-11-11 08:58:44
Neat, a new toy. I will try that on gifs using local palettes. Those failed conversion to apng.
```wintime -- cjxl -d 0 Test.gif Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 512.7 kB (0.736 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 289985 PeakWorkingSetSize: 42.15 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.828 KiB PeakPagefileUsage: 40.56 MiB Creation time 2024/11/11 00:47:30.790 Exit time 2024/11/11 00:48:05.561 Wall time: 0 days, 00:00:34.770 (34.77 seconds) User time: 0 days, 00:00:01.140 (1.14 seconds) Kernel time: 0 days, 00:00:34.640 (34.64 seconds) wintime -- cjxl -d 0 Test.apng Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 505.2 kB (0.725 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 330741 PeakWorkingSetSize: 66.79 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.961 KiB PeakPagefileUsage: 64.43 MiB Creation time 2024/11/11 00:49:28.310 Exit time 2024/11/11 00:50:02.331 Wall time: 0 days, 00:00:34.021 (34.02 seconds) User time: 0 days, 00:00:01.000 (1.00 seconds) Kernel time: 0 days, 00:00:33.859 (33.86 seconds)``` That's... Interesting... The GIF is run though gifsicle and flexiGIF, but apparently `gif2apng` found something smaller that JXL could take advantage of with some extra memory
2024-11-11 09:07:51
Probably it doesn't make much difference but when converting gif to jxl, I would add `--keep_invisible=0`
TheBigBadBoy - 𝙸𝚛
JendaLinda Neat, a new toy. I will try that on gifs using local palettes. Those failed conversion to apng.
2024-11-11 09:09:47
hehe I really searched a lot for different optimizers for quite many formats <:KekDog:805390049033191445>
```wintime -- cjxl -d 0 Test.gif Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 512.7 kB (0.736 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 289985 PeakWorkingSetSize: 42.15 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.828 KiB PeakPagefileUsage: 40.56 MiB Creation time 2024/11/11 00:47:30.790 Exit time 2024/11/11 00:48:05.561 Wall time: 0 days, 00:00:34.770 (34.77 seconds) User time: 0 days, 00:00:01.140 (1.14 seconds) Kernel time: 0 days, 00:00:34.640 (34.64 seconds) wintime -- cjxl -d 0 Test.apng Test.jxl -e 10 JPEG XL encoder v0.11.0 0185fcd [AVX2,SSE2] Encoding [Modular, lossless, effort: 10] Compressed to 505.2 kB (0.725 bpp/frame). 365 x 159, 0.002 MP/s [0.00, 0.00], , 1 reps, 16 threads. PageFaultCount: 330741 PeakWorkingSetSize: 66.79 MiB QuotaPeakPagedPoolUsage: 33.38 KiB QuotaPeakNonPagedPoolUsage: 7.961 KiB PeakPagefileUsage: 64.43 MiB Creation time 2024/11/11 00:49:28.310 Exit time 2024/11/11 00:50:02.331 Wall time: 0 days, 00:00:34.021 (34.02 seconds) User time: 0 days, 00:00:01.000 (1.00 seconds) Kernel time: 0 days, 00:00:33.859 (33.86 seconds)``` That's... Interesting... The GIF is run though gifsicle and flexiGIF, but apparently `gif2apng` found something smaller that JXL could take advantage of with some extra memory
2024-11-11 09:10:06
what if you optimize your apng ? `apngopt`
JendaLinda
2024-11-11 09:14:14
Gif with local palettes convert to 24 bpp apng so the apng, even after optimization, is about the same size or bigger than the original gif optimized with gifsicle.
TheBigBadBoy - 𝙸𝚛 hehe I really searched a lot for different optimizers for quite many formats <:KekDog:805390049033191445>
2024-11-11 09:30:53
Alright, so the first step is `gifsicle -O3` and then `flexigif`. Do you have any recommended options?
TheBigBadBoy - 𝙸𝚛
JendaLinda Alright, so the first step is `gifsicle -O3` and then `flexigif`. Do you have any recommended options?
2024-11-11 09:40:33
I remove "metadata" of GIFs with `gifsicle -o out.gif -O3 --no-comments --no-extensions --no-app-extensions --no-names input.gif` for flexiGIF typically use a simple `flexiGIF -p`, (tbh I didn't do heavy testing, and on the forum thread there are many benchmarks), if you want faster (you usually want, otherwise fucking slow), just increase `-a=xxx` value only gifsicle *then* flexiGIF seems useful also if you want better compression with flexiGIF, use this 2-step-lookahead patch: https://encode.su/threads/3008-flexiGIF-lossless-GIF-LZW-optimization?p=82323&viewfull=1#post82323
JendaLinda
TheBigBadBoy - 𝙸𝚛 I remove "metadata" of GIFs with `gifsicle -o out.gif -O3 --no-comments --no-extensions --no-app-extensions --no-names input.gif` for flexiGIF typically use a simple `flexiGIF -p`, (tbh I didn't do heavy testing, and on the forum thread there are many benchmarks), if you want faster (you usually want, otherwise fucking slow), just increase `-a=xxx` value only gifsicle *then* flexiGIF seems useful also if you want better compression with flexiGIF, use this 2-step-lookahead patch: https://encode.su/threads/3008-flexiGIF-lossless-GIF-LZW-optimization?p=82323&viewfull=1#post82323
2024-11-11 09:57:48
Do the patches apply to gif too or only to Z?
2024-11-11 09:59:02
Some of my gifs were probably lossy compressed. I will try flexigif on those as well.
TheBigBadBoy - 𝙸𝚛
JendaLinda Do the patches apply to gif too or only to Z?
2024-11-11 10:11:45
yeah, just look at that table <:KekDog:805390049033191445> <https://encode.su/threads/3008-flexiGIF-lossless-GIF-LZW-optimization?p=68853&viewfull=1#post68853>
jonnyawsom3
TheBigBadBoy - 𝙸𝚛 what if you optimize your apng ? `apngopt`
2024-11-11 10:44:34
gif2apng is part of the apngopt toolset, so it already is
TheBigBadBoy - 𝙸𝚛
2024-11-11 10:45:01
ohhhh <:FeelsReadingMan:808827102278451241>
JendaLinda
2024-11-11 11:15:54
I actually did gif -> jxl, then jxl -> apng and then apngopt, so apngopt could start fresh from unoptimized 32 bpp file.
jonnyawsom3
2024-11-11 01:59:04
I went down a rabbit hole and now I'm finding out MV-HEVC finally exists and has for a while https://developer.apple.com/documentation/avfoundation/media_reading_and_writing/converting_side-by-side_3d_video_to_multiview_hevc_and_spatial_video
2024-11-11 01:59:27
Always wondered when someone would take advantage of stereoscopic similarities
JendaLinda
2024-11-12 02:45:27
Is it normal that flexigif processes a single 1000x1000 pixels frame for several hours?
2024-11-12 03:01:02
Although I tried a different gif of similar size and it went much faster.
jonnyawsom3
2024-11-12 03:01:10
Yes
2024-11-12 03:01:42
It took 50 minutes for a 5 second long 240x320 GIF
JendaLinda
2024-11-12 03:05:43
Seems weird the first frame of the animation is not yet finished after 16 hours.
CrushedAsian255
JendaLinda Seems weird the first frame of the animation is not yet finished after 16 hours.
2024-11-12 03:14:05
It’s the zopfli -999999 of GIFs
JendaLinda
2024-11-12 03:17:30
Sure, but I tested other gifs and a single frame usually takes under an hour.
2024-11-12 03:21:48
One thing about flexigif is it's not multithreadiing, so I can run multiple instances with different files simultaneously and see the differences immediately.
2024-11-12 07:47:05
Great, a few gifs went well but now I have 5 gifs stuck on the first frame. Maybe I'll try without `-p` 😄
TheBigBadBoy - 𝙸𝚛
2024-11-12 08:00:59
you should try `-p -a=2048` or so perhaps?
2024-11-12 08:01:19
which should be 2048 times faster (ig)
_wb_
2024-11-12 08:32:19
it's funny to see the early history of FLIF: https://github.com/sipa/JIF/commits/master/
JendaLinda
TheBigBadBoy - 𝙸𝚛 you should try `-p -a=2048` or so perhaps?
2024-11-12 09:39:40
I will try it. I don't feel like spending 24 hours on each frame.
2024-11-12 09:40:31
I haven't tried the patches but I suppose those would be even slower.
TheBigBadBoy - 𝙸𝚛
2024-11-12 09:45:33
yeah the two-step-lookahead is slower
JendaLinda
TheBigBadBoy - 𝙸𝚛 yeah the two-step-lookahead is slower
2024-11-12 09:57:05
How did you come to `-a=2048`? Is it some magic value?
TheBigBadBoy - 𝙸𝚛
2024-11-12 09:57:31
I just like powers of 2
2024-11-12 09:58:36
`-a=x --alignment=x blocks starts at multiples of x (default is -a=1 => best compression but may be slow)`
2024-11-12 09:59:45
but again I'm perhaps saying shit as I didn't do heavy testings for GIFs, almost only for `.z` files
JendaLinda
TheBigBadBoy - 𝙸𝚛 but again I'm perhaps saying shit as I didn't do heavy testings for GIFs, almost only for `.z` files
2024-11-12 10:04:44
If I understand correctly, this will split the image to segments of x pixels. Wouldn't it make more sense to use a width of the image as x?
TheBigBadBoy - 𝙸𝚛
2024-11-12 10:05:30
mmmh aren't different GIF frames different blocks ?
JendaLinda
TheBigBadBoy - 𝙸𝚛 mmmh aren't different GIF frames different blocks ?
2024-11-12 10:06:54
Yes, each frame is processed separately.
TheBigBadBoy - 𝙸𝚛
2024-11-12 10:08:08
oh yeah I misread your last message so yeah I guess x=width would be the best, but who knows [⠀](https://cdn.discordapp.com/emojis/586168843781668876.webp?size=48&quality=lossless&name=AkkoShrug)
JendaLinda
TheBigBadBoy - 𝙸𝚛 oh yeah I misread your last message so yeah I guess x=width would be the best, but who knows [⠀](https://cdn.discordapp.com/emojis/586168843781668876.webp?size=48&quality=lossless&name=AkkoShrug)
2024-11-12 10:09:15
On the other hand, optimized frames may be different width.
TheBigBadBoy - 𝙸𝚛
2024-11-12 10:09:57
right, there are frame that are just differences from the previous one
JendaLinda
TheBigBadBoy - 𝙸𝚛 right, there are frame that are just differences from the previous one
2024-11-12 10:14:22
I will try just without any options at all and see what happens.
TheBigBadBoy - 𝙸𝚛
2024-11-12 10:15:06
default is `-a=1` which is fucking slow <:KekDog:805390049033191445>
JendaLinda
TheBigBadBoy - 𝙸𝚛 default is `-a=1` which is fucking slow <:KekDog:805390049033191445>
2024-11-12 10:16:41
I can see that 😄 Anyhow, it could do multithreading pretty easily just by processing multiple frames at once.
2024-11-12 10:17:58
A single thread on my Ryzen 5 1600 won't cut it.
2024-11-12 10:37:05
In comparison, `cjxl -d 0 -e 11` is actually quite manageable. I found just one image, where cjxl fell apart, consuming the entire system memory, resulting in the system being extremely slow and cjxl just sitting there doing seemingly no progress.
DZgas Ж
2024-11-13 01:42:25
we need animated jpeg with alpha <:megapog:816773962884972565> || 👉 <:JPEG_XL:805860709039865937> ||
CrushedAsian255
DZgas Ж we need animated jpeg with alpha <:megapog:816773962884972565> || 👉 <:JPEG_XL:805860709039865937> ||
2024-11-13 02:33:54
Animated JNG?
_wb_
2024-11-13 06:33:55
MNG can do that iirc
CrushedAsian255
_wb_ MNG can do that iirc
2024-11-13 06:34:29
is MNG generalised APNG?
_wb_
2024-11-13 06:36:05
Yeah it's the more complicated thing that includes JNG, it never really gained traction though
CrushedAsian255
2024-11-13 06:36:47
personally still think JNG should have superseded JFIF
_wb_
2024-11-13 07:04:41
JPEG 1 file formats are a mess
2024-11-13 07:05:31
JFIF was first so it became the de facto standard even though it has clear limitations
CrushedAsian255
2024-11-13 07:06:01
JPEG 2000 is based on BMFF right?
_wb_
2024-11-13 07:06:22
The committee made SPIFF and tried to push that, but it failed to get any traction and was recently finally retired
2024-11-13 07:06:35
Camera vendors meanwhile made Exif
2024-11-13 07:06:58
(which is not just metadata but also a JPEG file format)
CrushedAsian255 JPEG 2000 is based on BMFF right?
2024-11-13 07:10:00
Or ISOBMFF is based on what was done for J2K, not sure which was first there
CrushedAsian255
2024-11-13 07:10:33
I though BMFF was based on QuickTime MOV / MPEG MP4
_wb_
2024-11-13 07:28:31
The basic box structure (4 byte length, 4 byte identifier, payload) is used by many things, PNG chunks are pretty much the same thing (except they also have a CRC and can't be nested).
JendaLinda
2024-11-13 10:55:08
Many pieces of software still produce illegal Exif/JFIF hybrids.
2024-11-13 12:06:31
I think lossy WebP if fine for animation, still provides better color fidelity than gif.
CrushedAsian255
2024-11-13 12:08:28
Yeah
JendaLinda
2024-11-13 12:09:45
I mean, for those short loops made from video.
CrushedAsian255
2024-11-13 12:10:43
100%
2024-11-13 12:10:48
GIF is kinda bad
JendaLinda
2024-11-13 12:12:01
And there's lossless WebP for actual animation.
Quackdoc
2024-11-13 12:15:16
speaking of gifs anyways, is there any actually good way to consistently convert gif to jxl losslessly without bad file sizes?
CrushedAsian255
2024-11-13 12:15:42
Problem 1 is gif is already ridiculously low quality
Quackdoc
2024-11-13 12:15:58
yeah using a lossy encoding isn't really on the table [av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=av1_dogelol)
JendaLinda
2024-11-13 12:16:37
It very depends on the specific case.
Quackdoc
2024-11-13 12:18:11
well the key issue is setting something automated, so it kinda needs to work even in the worst case, or at least, not break badly enough to be actively largely detrimental
CrushedAsian255
2024-11-13 12:18:43
some kind of ML-based undithering system?
JendaLinda
2024-11-13 12:18:44
If the gif was compressed with gifsicle in lossy mode, that's it. No other lossless codec could improve it.
Quackdoc
JendaLinda If the gif was compressed with gifsicle in lossy mode, that's it. No other lossless codec could improve it.
2024-11-13 12:19:22
[Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&name=Hmm)
JendaLinda
2024-11-13 12:21:39
My problem of converting gif to jxl is it's not easy to convert it back to gif.
2024-11-13 12:22:59
Especially if local palettes were used in the gif.
CrushedAsian255
2024-11-13 12:23:15
GIF reconstruction data when
JendaLinda
2024-11-13 12:26:05
Apng is seriously crippled it doesn't support local palettes.
A homosapien
2024-11-13 12:27:42
"Seriously crippled" is an exaggeration
2024-11-13 12:27:46
It's not that bad
Quackdoc
JendaLinda My problem of converting gif to jxl is it's not easy to convert it back to gif.
2024-11-13 12:27:59
I don't really care about that myself, any gif I have I don't really care about going back, not for my use anyways
2024-11-13 12:28:22
I only encode with reconstruction data because im too lazy to figure out how to not do so, and still consistently save space lol
A homosapien
2024-11-13 12:29:33
For gifs I usually just convert it to an Apng then an animated jxl
Quackdoc
2024-11-13 12:30:24
is that actually beneficial? [Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&name=Hmm)
A homosapien
2024-11-13 12:30:29
Yes
2024-11-13 12:31:01
Apngopt or gif2apng has additional inter-frame optimizations that jxl can take advantage of
2024-11-13 12:31:26
I typically see an improvement in my testing
Quackdoc
2024-11-13 12:32:49
guess ill try that, I plan on doing a setup where just all of my images, baring a few exceptions, get converted to jxl since literally everything I use supports jxl now
JendaLinda
A homosapien "Seriously crippled" is an exaggeration
2024-11-13 12:32:58
Apng is terribly inefficient compressing gifs which used local palettes. Coversion to 24 bpp looses the advantage of better compression algorithm.
2024-11-13 12:33:53
WebP doesn't case about palettes and works well but it's tricky to convert animated WebP to anything else.
A homosapien
JendaLinda Apng is terribly inefficient compressing gifs which used local palettes. Coversion to 24 bpp looses the advantage of better compression algorithm.
2024-11-13 12:34:19
The difference isn't that big, only like 5-10%.
CrushedAsian255
JendaLinda Apng is terribly inefficient compressing gifs which used local palettes. Coversion to 24 bpp looses the advantage of better compression algorithm.
2024-11-13 12:34:22
Can’t JXL then do palettes as well
A homosapien
2024-11-13 12:34:42
Not optimal but not terrible
2024-11-13 12:35:09
Yeah jxl can do palettes
JendaLinda
A homosapien The difference isn't that big, only like 5-10%.
2024-11-13 12:36:57
Compared to what apng can do with only a global palette, the difference is significant.
Quackdoc
2024-11-13 12:37:10
hmm, not bad, ill try the gif thing I guess ```ps 69.96 MiB png-jxl 70.55 MiB gif-jxl 88.45 MiB gif 143.29 MiB png 611.07 MiB jpg-jxl 777.94 MiB jpg ```
2024-11-13 12:37:45
> Apngopt or apng2gif on average which one is better?
A homosapien
2024-11-13 12:37:58
They use the same algorithms I think
2024-11-13 12:38:06
Made by the same people
Quackdoc
2024-11-13 12:39:19
icic, also assuming I *don't* care about reconstruction info, is there anything that is realistically better then `cjxl -e 9 -d 0 ` that is worth adding?
A homosapien
2024-11-13 12:40:08
Besides discarding metadata I think you're good
Quackdoc
2024-11-13 12:40:11
I know `allow_jpeg_reconstruction` exists but I don't know if it's realistically any good
JendaLinda
2024-11-13 12:40:40
If I do archiving, I care about some way to restore the original format. Most of my gifs are actually hand drawn animation.
A homosapien
Quackdoc > Apngopt or apng2gif on average which one is better?
2024-11-13 12:41:42
Sorry it's gif2apng, not apng2gif
CrushedAsian255
2024-11-13 12:41:46
i dont think GIF or PNG reconstruction is a thing
A homosapien
2024-11-13 12:41:51
Typo 😭
Quackdoc
Quackdoc I know `allow_jpeg_reconstruction` exists but I don't know if it's realistically any good
2024-11-13 12:44:21
well, ill run this through and see how it goes
JendaLinda
CrushedAsian255 i dont think GIF or PNG reconstruction is a thing
2024-11-13 12:53:42
I'm not that strict. In most cases, I don't care about palette order and such, it just has to be pixel perfect. djxl is sufficient for conversion to apng, then it can be run through apngopt.
2024-11-13 12:55:42
But I'm also still using gif because according to my testing, gif with local palettes is often more efficient than the equivalent apng.
Quackdoc
2024-11-13 01:02:18
```ps 610.93 MiB jpg-jxl-no 611.07 MiB jpg-jxl 777.94 MiB jpg ```
2024-11-13 01:02:24
well that wasnt really worth the re-encode lol
CrushedAsian255
2024-11-13 01:03:02
The reconstruction metadata is usually very small
2024-11-13 01:03:07
Like < 1 kB
2024-11-13 01:03:41
I would suggest just keeping it, it’s not worth explicitly removing it and you never know you might want to convert it back some time
JendaLinda
2024-11-13 01:03:53
Yeah you can gain more if you try different efforts and cjxl versions.
Quackdoc
2024-11-13 01:04:55
well it just be how it be, everything can't be free
JendaLinda
2024-11-13 01:05:08
Older cjxl versions seem to do better job compressing jpegs. But it's a thing I'm going to look into more deeply.
CrushedAsian255
2024-11-13 01:05:13
Also not sure how but higher efforts still benefit jpeg transcoding
JendaLinda Older cjxl versions seem to do better job compressing jpegs. But it's a thing I'm going to look into more deeply.
2024-11-13 01:05:36
Argh regressions!
Quackdoc
2024-11-13 01:06:03
well I saved enough space to make it worth it anyways
JendaLinda
2024-11-13 01:10:51
I admit I was exaggerating a little that apng is terribly inefficient. Gif with local palettes and apng containing the same pixel data are about the same file size. So it's not worth to convert such gif to apng, because you gain nothing, but using apng is not a disaster. However, if I would like to create an optimized file, I would have to go with gif.
A homosapien
2024-11-13 01:17:07
That's kind of an edge case where gif is *only* optimized when there are local palettes, which are quite rare. Most gifs in the wild are global palettes, so re-encoding to apng would be worth it imo
2024-11-13 01:17:45
what am I saying, just use jxl for better savings 😂 <:JXL:805850130203934781>
JendaLinda
2024-11-13 01:18:31
I'm not sure which animation software were the artist's using but I have several gifs with local palettes.
2024-11-13 01:18:47
I would use jxl if I could.
2024-11-13 01:23:48
But yeah, if there's only global palette, apng works great, unless it's lossy lzw, then even webp or jxl can't do anything with it.
A homosapien
Quackdoc well that wasnt really worth the re-encode lol
2024-11-13 01:38:51
It's highly content dependent, not to mention I was doing a lot of my testing on 0.8. Maybe 0.11 made lossless gif encoding a lot better. 😅
2024-11-13 01:39:30
Probably better off just going straight from gif -> gifsicle -> jxl
Quackdoc
2024-11-13 01:40:26
yeah probably, I am just making some scripts for "inplace" transcoding so the more simple the better anyways
2024-11-13 01:41:08
ofc inplace is not really true since I am changing the file extensions, but I am deleting the source files when done
A homosapien
2024-11-13 01:42:26
I should really convert my local archive of jpegs to jxl
2024-11-13 01:43:09
literally no downside idk why I haven't done it sooner
Quackdoc
2024-11-13 01:43:52
yeah, best part is, you don't even need to hash them [av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=av1_dogelol)
2024-11-13 01:47:04
after images, I need to develop some kind of script that will tell me if it's worth transcoding a video to av1 lmao, dunno how best to go about this yet tho
A homosapien
2024-11-13 01:50:31
That's a tall order for a simple script, I don't know if even it's even possible.
Quackdoc
2024-11-13 01:51:42
you can get a "good estimation" using the basics like bitrate for the file size
A homosapien
2024-11-13 01:52:00
I see, like resolution divided by bitrate? It super content dependent, but at least you have an upper threshold for super high quality videos worth re-encoding
Quackdoc
2024-11-13 01:52:37
yeah, it would be a "sortiing" scheme into "likely good candidate" "possibly good candidate" "possibly bad candidate" "likely bad candidate"
2024-11-13 01:53:27
for instance, any h264 or h265 video with "BDMV" like bitrates are almost always going to be good candidates for av1, so thats a safe assumption
A homosapien
2024-11-13 01:54:44
you're basically making a video quality metric estimator at this point 😭
CrushedAsian255
A homosapien you're basically making a video quality metric estimator at this point 😭
2024-11-13 01:54:51
yeah
Quackdoc
2024-11-13 01:55:15
[av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=av1_dogelol)
2024-11-13 01:55:46
at the very least, it will make it a lot easier to sort through which videos are even worth checking in the first place
A homosapien
2024-11-13 01:58:08
true, it acts like a sieve, filtering out bad candidates
jonnyawsom3
Quackdoc icic, also assuming I *don't* care about reconstruction info, is there anything that is realistically better then `cjxl -e 9 -d 0 ` that is worth adding?
2024-11-13 02:19:09
`--brotli_effort=11` compresses the metadata and reconstruction data a bit more, for the GIFs/APNG `--keep_invisible=0` might help, not sure
Quackdoc ofc inplace is not really true since I am changing the file extensions, but I am deleting the source files when done
2024-11-13 02:23:36
I've had some fun with Telegram exports and then converting all the images in-place to JXL, opens fine in Waterfox since it's just HTML, but naturally the files are unreadable with the wrong extensions otherwise
JendaLinda
2024-11-13 02:26:08
`--keep_invisible=0` seems to be trivial, it just zeroes out the fully transparent pixels. ECT for example, can take more advantage of fully transparent pixels in png. It will fill them with different colors so the bytes become zero after filtering.
jonnyawsom3
2024-11-13 02:27:42
That's what I assumed cjxl did
JendaLinda
2024-11-13 02:28:48
It doesn't make any difference if I use --keep_invisible=0 on a png where fully transparent pixels are already black.
2024-11-13 02:33:31
But it's useful for pngs, that were not optimized beforehand. Photoshop, for example fills transparent pixels with some random colors.
2024-11-13 02:34:24
Don't even match the png filtering.
2024-11-13 02:35:58
In gif, the transparent eras are solid color, so blackening them won't make much difference but it will tidy them up.
2024-11-13 02:40:00
Anyhow, it seems the global palette in gif is optional, I come across a gif, where every frame had it's own palette and the global palette was completely missing. I wonder what the decoder is supposed to do if there's no palette at all. I suppose most decoders would render undefined colors as black.
2024-11-13 02:44:26
It seems that gif without global palette is considered bad practice. The first thing gifsicle did is moving palette from the first frame and make it the global palette.
Quackdoc
2024-11-13 05:16:28
yeah im just gonna keep the gifs, it is smaller, but not really smaller enough to sacrafice the proper animation support ``` 338.50 MiB total vs 235.66 MiB total ```
2024-11-13 05:17:52
also I encounted some gifs that magick reports mismatching hash, wonder why that happens
RaveSteel
Quackdoc also I encounted some gifs that magick reports mismatching hash, wonder why that happens
2024-11-13 06:12:37
Would you mind sharing some of them?
Quackdoc
RaveSteel Would you mind sharing some of them?
2024-11-13 06:13:32
if I come across them again, I already punted them back to my phone
RaveSteel
2024-11-13 06:14:40
Alright, thanks
JendaLinda
2024-11-13 06:45:05
Testing what flexigif does with lossy LZW. Doesn't look very promising.
_wb_
CrushedAsian255 I though BMFF was based on QuickTime MOV / MPEG MP4
2024-11-13 08:39:39
In a way, both are based on IFF: https://en.m.wikipedia.org/wiki/Interchange_File_Format
JendaLinda Many pieces of software still produce illegal Exif/JFIF hybrids.
2024-11-13 08:45:00
I think technically such files are still valid [one of the two], just not valid as both Exif and JFIF since those two formats both require their APP marker to be the very first one after the SOI marker.
JendaLinda
2024-11-13 09:11:55
JFIF seems to be completely unnecessary now. I just remove APP0 markers and the jpegs work without issues.
_wb_
2024-11-14 10:16:23
Does this diagram look OK? It's of course a bit of an oversimplification. Am I being fair to the various formats? Did I forget something?
CrushedAsian255
2024-11-14 10:22:31
i would personally put HEIC a bit lower, like maybe cutting in on the top of JPEG
_wb_
2024-11-14 10:53:46
I put it that high up since it's basically only being used as a proprietary capture format, no really suitable for interchange.
JendaLinda
2024-11-14 11:23:20
I'm actually using BMP a lot.
2024-11-14 11:49:56
Perhaps add `Windows bitmap` as application specific.
2024-11-14 11:54:34
Windows bitmap is the native format of the most popular OS used on PC and it's specific to Windows.
Quackdoc
_wb_ Does this diagram look OK? It's of course a bit of an oversimplification. Am I being fair to the various formats? Did I forget something?
2024-11-14 12:14:55
im not gonna lie. even with the description at the bottom, it's hard to actually understand what the graphic is showcasing
_wb_
JendaLinda I'm actually using BMP a lot.
2024-11-14 12:15:40
Hm, right, I didn't include the uncompressed formats like BMP and PPM. I guess they're similar to TIFF.
CrushedAsian255
2024-11-14 12:16:02
<@794205442175402004> can you send the raw file? i want to try something with it
_wb_
CrushedAsian255 <@794205442175402004> can you send the raw file? i want to try something with it
2024-11-14 12:17:20
https://docs.google.com/drawings/d/13dR6dwFMw5l8BKQ53B_4Mi9LaTT0EWN44-ErHL--BRM/edit?usp=sharing
Quackdoc im not gonna lie. even with the description at the bottom, it's hard to actually understand what the graphic is showcasing
2024-11-14 12:18:13
If you have suggestions on how to make it more clear / less confusing, or if you can pinpoint what about it is hard to understand, that would help.
Quackdoc
_wb_ If you have suggestions on how to make it more clear / less confusing, or if you can pinpoint what about it is hard to understand, that would help.
2024-11-14 12:21:52
for instance, it's not exactly clear to me why HEIC is above JXL, TIFF, OpenEXR should be sitting too at the top too since but HEIC is still above it it seems like HEIC would be "before" said formats in an authoring workflow, which is really only true in some specific instances, of which similar instances are true with TIFF, and likely in the future JXL
2024-11-14 12:22:38
also the graphic makes it look like HEIC isn't used for delivery
CrushedAsian255
Quackdoc for instance, it's not exactly clear to me why HEIC is above JXL, TIFF, OpenEXR should be sitting too at the top too since but HEIC is still above it it seems like HEIC would be "before" said formats in an authoring workflow, which is really only true in some specific instances, of which similar instances are true with TIFF, and likely in the future JXL
2024-11-14 12:23:38
you don't really take a photo in EXR
Quackdoc
CrushedAsian255 you don't really take a photo in EXR
2024-11-14 12:24:36
no, but you can use it for creation, specifically texture creation stuff, EXR makes a great "save file" for that stuff since it has dedicated channel alpha, linear, no clamping etc
2024-11-14 12:25:14
also many cameras do save in a TIFF file format
CrushedAsian255
2024-11-14 12:25:43
i don't feel like 3d modelling really fits in with this
Quackdoc
CrushedAsian255 i don't feel like 3d modelling really fits in with this
2024-11-14 12:25:57
it does explicitly say creation
2024-11-14 12:26:16
and does explicitly have 3d modeling in there
spider-mario
Quackdoc also many cameras do save in a TIFF file format
2024-11-14 12:27:12
I haven’t seen many non-raw TIFFs saved by cameras
CrushedAsian255
2024-11-14 12:27:31
is top to bottom meant to be like the creative workflow?
2024-11-14 12:27:35
like you start at the top and go down?
_wb_
Quackdoc also the graphic makes it look like HEIC isn't used for delivery
2024-11-14 12:28:01
Is it? The main way I see it being used is as a capture format. Safari does support it now (just like it does/did support J2K), so I guess it could be a delivery format too, but given the patent situation I consider it not really having a chance of becoming sufficiently interoperable to be considered anything other than a proprietary capture format.
CrushedAsian255
2024-11-14 12:28:26
i have NEVER seen a HEIC being served on the web excluding downloading iPhone originals
_wb_
CrushedAsian255 is top to bottom meant to be like the creative workflow?
2024-11-14 12:28:55
More or less, though the idea of interchange is that you also go up again from the middle.
Quackdoc
_wb_ Is it? The main way I see it being used is as a capture format. Safari does support it now (just like it does/did support J2K), so I guess it could be a delivery format too, but given the patent situation I consider it not really having a chance of becoming sufficiently interoperable to be considered anything other than a proprietary capture format.
2024-11-14 12:29:07
yeah, most images shared among iphones are heic, and I know that my samsung phone captures in default, and shares HEIC with my mothers pixel too when we send images back and forth
CrushedAsian255
2024-11-14 12:29:17
when you say "DCP" do you mean digital cinema package? that is very much a delivery format
Quackdoc
CrushedAsian255 i have NEVER seen a HEIC being served on the web excluding downloading iPhone originals
2024-11-14 12:29:35
web is only one specific thing though.
CrushedAsian255
2024-11-14 12:30:06
correction: i have never seen a HEIC being used in any situation outside phone photography
spider-mario
2024-11-14 12:30:31
Canon cameras can produce PQ HEICs
CrushedAsian255
2024-11-14 12:30:45
argh, fine
spider-mario
2024-11-14 12:30:51
I think other brands produce HLG HEICs but off the top of my head, I don’t remember which ones
2024-11-14 12:31:00
maybe Sony and Panasonic
CrushedAsian255
2024-11-14 12:31:04
i have never seen a HEIC being used in any situation outside photo capture
Quackdoc
CrushedAsian255 correction: i have never seen a HEIC being used in any situation outside phone photography
2024-11-14 12:31:24
while true, I don't think this graphic comes across as accurate if it excludes phone usage considering how prevalent phones are
_wb_
2024-11-14 12:31:25
I see DCP more as an interchange format, of course it is "delivery" to theaters but I mean delivery more in an end-user/consumer/web sense. Maybe that should be clarified in the diagram.
spider-mario
2024-11-14 12:31:30
from what I understand, some people then connect their camera to a TV via HDMI and display those HEICs
2024-11-14 12:31:57
I agree that it sounds rather niche, though
CrushedAsian255
Quackdoc while true, I don't think this graphic comes across as accurate if it excludes phone usage considering how prevalent phones are
2024-11-14 12:32:22
i think its current location is fine as after the camera takes the photo it will save it as either a HEIC or a DNG (or a JPEG)
spider-mario
2024-11-14 12:32:42
also, crucially, the ways that Apple and Canon do HDR-in-HEIC are not mutually compatible
Quackdoc
CrushedAsian255 i think its current location is fine as after the camera takes the photo it will save it as either a HEIC or a DNG (or a JPEG)
2024-11-14 12:33:08
that doesn't mean it's not for delivery though, or else jpeg would need to be moved as well.
2024-11-14 12:33:21
or well I think it should rather be extended
spider-mario
2024-11-14 12:33:22
https://www.dpreview.com/articles/8980170510/how-hdr-tvs-could-change-your-photography-forever > HEIF/HEIC is a broad standard, and the files from Canon and Apple are not cross-compatible with one another
Quackdoc
spider-mario https://www.dpreview.com/articles/8980170510/how-hdr-tvs-could-change-your-photography-forever > HEIF/HEIC is a broad standard, and the files from Canon and Apple are not cross-compatible with one another
2024-11-14 12:33:31
WHAT
2024-11-14 12:33:33
[av1_kekw](https://cdn.discordapp.com/emojis/758892021191934033.webp?size=48&name=av1_kekw)
CrushedAsian255
spider-mario https://www.dpreview.com/articles/8980170510/how-hdr-tvs-could-change-your-photography-forever > HEIF/HEIC is a broad standard, and the files from Canon and Apple are not cross-compatible with one another
2024-11-14 12:33:44
ok what
2024-11-14 12:33:55
\/hj
2024-11-14 12:34:21
maybe add avif at the bottom for lower quality
Quackdoc
2024-11-14 12:36:07
oh right, the graphic also looks like it's intended to be capture on the left, with creation on the right, which is in conflict with the raster < -- > vector
2024-11-14 12:36:37
In general Im not sure this graphic format is entirely suitable for what the graphic is trying to convey, and maybe splitting it into 2 related graphics may be better
CrushedAsian255
Quackdoc In general Im not sure this graphic format is entirely suitable for what the graphic is trying to convey, and maybe splitting it into 2 related graphics may be better
2024-11-14 12:36:56
3 dimensional?
2024-11-14 12:37:18
authoring (creating) <-> delivery (showing) capture (real life) <-> creation (cgi, illustration) vector (pixels) <-> raster (geometry)
Quackdoc
2024-11-14 12:37:59
I was thinking maybe one of those triangle things, or 3 circle venn diagram would work.
CrushedAsian255
2024-11-14 12:38:13
what would the points on the triangle be though?
Quackdoc
2024-11-14 12:38:34
one sec, lemme see if I can remeber how to convery this
CrushedAsian255
2024-11-14 12:40:55
Quackdoc
2024-11-14 12:41:21
is it worth specifing capture vs creation?
CrushedAsian255
2024-11-14 12:41:35
i think raster vs vector is probably fine
2024-11-14 12:41:53
illustration could go in the middle
JendaLinda
_wb_ Hm, right, I didn't include the uncompressed formats like BMP and PPM. I guess they're similar to TIFF.
2024-11-14 12:44:33
I can see that. TIFF can supersede other uncompressed image formats.
2024-11-14 12:44:47
However, Windows bitmap is used in capture, creation, intermediate, delivery and display. Pretty much any array of pixels in Windows API is a bitmap.
CrushedAsian255
JendaLinda However, Windows bitmap is used in capture, creation, intermediate, delivery and display. Pretty much any array of pixels in Windows API is a bitmap.
2024-11-14 12:46:35
windows
Quackdoc
2024-11-14 12:54:43
Yeah I would change this to a three point ven diagram methinks, or even just a two point grid plot graphic. but they are much less visually appealing. But the issue with this original graphics is that it does draw lines where IMO they probably be shouldn't many of these formats like PNG,JPEG,HEIC, and i'm sure jxl soon, are used in capturing software, and also used for delivery. if the top part of the graphic isn't intended to imply a capture to creation scale, I think it how it presents the info should be changed. I think breaking up the "application specific authoring formats" block to allow things like JXL, TIFF, etc should be allowed to scale up.
_wb_
2024-11-14 12:55:08
how about this?
Quackdoc
2024-11-14 12:55:45
I do like this one more for sure
CrushedAsian255
2024-11-14 12:57:00
what is light red
Quackdoc
2024-11-14 12:57:05
It may also be worth changing AVIF to HEIF (heic, avif, vvc)
2024-11-14 12:57:22
though the duplicate nature of heic may be a bit confusing
CrushedAsian255
2024-11-14 12:57:23
istg are they making a VVC based HEIF
2024-11-14 12:57:43
i bet my life savings that will be dead on arrival except maybe apple
Quackdoc
CrushedAsian255 istg are they making a VVC based HEIF
2024-11-14 12:58:13
yeah, libheif can already save vvc heif
CrushedAsian255
2024-11-14 01:00:02
is VVC actually going anywhere?
Quackdoc
2024-11-14 01:00:28
yes
jonnyawsom3
2024-11-14 01:00:41
To me JPEG XL would just be covering the entire spectrum, apart from SVG, ect for vectors. You can already use it in the camera, Krita was one of the first to support it so digital painting definitely is...
CrushedAsian255
2024-11-14 01:01:37
and except PDF / PostScript
2024-11-14 01:01:53
although you can add JPEG XL images to SVG / PDF / PostScript files
_wb_
2024-11-14 01:03:11
the horizontal axis is intended to be going from photo / sensor data on the left to artificial / generated on the right, where the left is raster obtained from a sensor, the middle is still raster but not captured by a sensor (digital art, illustrations, screenshots, rendered text, rendered 3D scenes, etc) and the right is pure vector graphics. With a lot of mixed stuff as well, like PDF which can contain photos and text, or GIS stuff like satelite images with road maps and whatever other vector stuff.
CrushedAsian255
2024-11-14 01:04:38
It would probably be clearer if it was indicated as 3 stops Left: Photo Middle: Illustration/Mixed Right: Vector
jonnyawsom3
2024-11-14 01:05:12
I suddenly remembered that splines get resampled instead of scaled on decode. Or at least used to
CrushedAsian255
2024-11-14 01:05:24
?
2024-11-14 01:06:00
The JPEG should make a SVG competitor so the entire diagram is just JPEG
jonnyawsom3
2024-11-14 01:08:14
Okay apparently I just have very selective memory https://discord.com/channels/794206087879852103/804324493420920833/885888987317817354
_wb_
CrushedAsian255 It would probably be clearer if it was indicated as 3 stops Left: Photo Middle: Illustration/Mixed Right: Vector
2024-11-14 01:08:16
not sure how I can add that to the chart in a nice way
2024-11-14 01:20:24
tweaked it a bit: didn't really make sense to give j2k a narrower scope than jpeg, also moved XS/HTJ2K more to the left and made DjVu match PDF (just more towards raster)
CrushedAsian255
2024-11-14 01:21:45
Can you make avif stretch all the way to j2k?
2024-11-14 01:22:11
Also what makes J2K / AVIF /WebP less of a raster format than JPEG
_wb_
2024-11-14 01:36:53
avif and webp are more suitable for non-photographic images than jpeg is, e.g. they both have palette modes, and when doing lossy their artifacts on illustrations generally look more acceptable than those of jpeg
DZgas Ж
2024-11-14 01:36:55
how about this?
_wb_
2024-11-14 01:38:17
J2K also does have some stuff meant to deal better with non-photo, in particular JPEG 2000 Part 17: Extensions for coding of discontinuous media
DZgas Ж
_wb_ tweaked it a bit: didn't really make sense to give j2k a narrower scope than jpeg, also moved XS/HTJ2K more to the left and made DjVu match PDF (just more towards raster)
2024-11-14 01:39:53
heic/heif/hevc also encodes vector lines perfectly, like avif. and even better than jpeg xl
2024-11-14 01:40:35
raster vector lines yes
CrushedAsian255
2024-11-14 01:40:38
JPEG XL vector box when
_wb_
2024-11-14 01:41:18
yeah in terms of artifacts, heic and avif are kind of comparable. The thing is I don't think heic is really used by anyone for illustrations, even if in principle it could.
DZgas Ж
2024-11-14 01:42:52
avif — webp — gif — vector bad line
2024-11-14 01:44:32
in general, it's all a waste of time. I would like to make a graph like: vector or flat picture/real photo complexity/simplicity
2024-11-14 01:45:10
I don't think that in its current form anyone will be pleased to look at it
_wb_
2024-11-14 01:45:22
that middle region where GIF and DjVu are is not yet vector, it's still raster, just low-color / line drawing / illustration type of graphics
DZgas Ж
2024-11-14 01:45:56
2024-11-14 01:47:19
it might be worth redoing. vp9 died a long time ago, aomenc is too un-threaded, svt-av1 is better in all cases
_wb_
2024-11-14 01:47:24
complexity/simplicity is an interesting additional dimension, though it also has various interpretations: do you mean feature complexity? amount of coding tools? computation complexity? the complexity of the image content?
2024-11-14 01:48:33
TIFF and PPM are both low-complexity in terms of encode/decode speed (they're uncompressed, or nearly so), but TIFF is very complex in features while PPM is extremely simple.
DZgas Ж
_wb_ complexity/simplicity is an interesting additional dimension, though it also has various interpretations: do you mean feature complexity? amount of coding tools? computation complexity? the complexity of the image content?
2024-11-14 01:49:41
I think for the average user, only the decoding speed is important.
CrushedAsian255
DZgas Ж it might be worth redoing. vp9 died a long time ago, aomenc is too un-threaded, svt-av1 is better in all cases
2024-11-14 01:50:23
DZgas Ж
2024-11-14 01:50:55
you can adjust the encoding speed according to the situation. but you won't be able to open a 16k x 16k jpeg xl on your smartphone for $80
CrushedAsian255
DZgas Ж you can adjust the encoding speed according to the situation. but you won't be able to open a 16k x 16k jpeg xl on your smartphone for $80
2024-11-14 01:51:42
dc frame go brrr
DZgas Ж
CrushedAsian255
2024-11-14 01:52:09
av1 cannot be used for resolutions higher than 720p in fact. and considering the progress. This will never happen. This is the last video codec in the history of modern civilization.
2024-11-14 01:52:17
<:monkaMega:809252622900789269>
CrushedAsian255
DZgas Ж av1 cannot be used for resolutions higher than 720p in fact. and considering the progress. This will never happen. This is the last video codec in the history of modern civilization.
2024-11-14 01:52:54
av2 propoganda
DZgas Ж
2024-11-14 01:54:47
to be honest, hevc 4k causes problems, but av1 causes even more problems at 1080p. An interesting fact is that the entire level system was recently removed from svtav1. They can't match.
_wb_
DZgas Ж I think for the average user, only the decoding speed is important.
2024-11-14 01:54:54
for delivery, yes, but at the capture/creation side, you do want fast encode too. Can't have a screenshot tool or the "Save" button in an editor freeze your computer for a minute...
CrushedAsian255
2024-11-14 01:56:24
most newer formats have some sort of speed tuning, that could affect it
DZgas Ж
_wb_ for delivery, yes, but at the capture/creation side, you do want fast encode too. Can't have a screenshot tool or the "Save" button in an editor freeze your computer for a minute...
2024-11-14 01:57:39
well use jpeg q100 4:4:4 — this is the fastest way to save an image. there is no png and no webp. bmp and png(without compression) are large in size
2024-11-14 01:58:48
it even annoys me that there is no alternative, because it is faster than jpeg xl e1
CrushedAsian255
2024-11-14 01:59:23
Can’t we make jpeg xl e1 just jpeg q100 + jpeg lossless transcoding ?
DZgas Ж
2024-11-14 02:00:35
by the way. I'm not sure if jpeg is faster than jpeg xl e1 modular
2024-11-14 02:00:57
I have never tested the fjxl project.
2024-11-14 02:01:13
<:JPEG_XL:805860709039865937>
2024-11-14 02:02:02
I saw that it was better than qoi, but I did not compare it with jpeg
JendaLinda
2024-11-14 02:03:47
Meanwhile crunching a single picture for an entire day.
2024-11-14 02:05:47
I'm not in hurry.
DZgas Ж
2024-11-14 02:06:51
so far, libjxl cannot decode a 100k x 100k image. without eat more than 1 GB of memory. It's all boring
_wb_
2024-11-14 02:07:53
I'm pretty sure that jpeg encoding is not faster than libjxl e1 lossless. Decoding is something else though, libjxl decode of modular is not that fast, even though we do have some specialization for the e1 case. But the decode of e1 is inherently a bit slower than the encode. There's some room for improvement in libjxl though — e.g. avoiding the conversion to float32 would probably help.
DZgas Ж so far, libjxl cannot decode a 100k x 100k image. without eat more than 1 GB of memory. It's all boring
2024-11-14 02:08:54
Even with chunked decoding? (pixel callback, not using the full buffer api)
DZgas Ж
_wb_ I'm pretty sure that jpeg encoding is not faster than libjxl e1 lossless. Decoding is something else though, libjxl decode of modular is not that fast, even though we do have some specialization for the e1 case. But the decode of e1 is inherently a bit slower than the encode. There's some room for improvement in libjxl though — e.g. avoiding the conversion to float32 would probably help.
2024-11-14 02:11:55
I'll run the tests soon. as soon as I find a suitable huge image. now I use baseline jpeg, which takes up less memory than jpeg xl
2024-11-14 02:12:20
I asked an interesting question in <#848189884614705192>
_wb_ Even with chunked decoding? (pixel callback, not using the full buffer api)
2024-11-14 02:14:45
reading like 256x256 chunk and writing it to the display buffer. either in the output image, as progressive encode png, yes
jonnyawsom3
DZgas Ж I'll run the tests soon. as soon as I find a suitable huge image. now I use baseline jpeg, which takes up less memory than jpeg xl
2024-11-14 02:18:50
I know windows at least can use subsampled chroma directly to reduce memory usage
DZgas Ж
I know windows at least can use subsampled chroma directly to reduce memory usage
2024-11-14 02:24:27
what. No. I'm sure Windows can not work like this
jonnyawsom3
DZgas Ж what. No. I'm sure Windows can not work like this
2024-11-14 02:42:42
https://learn.microsoft.com/en-us/windows/win32/wic/jpeg-ycbcr-support
DZgas Ж
https://learn.microsoft.com/en-us/windows/win32/wic/jpeg-ycbcr-support
2024-11-14 04:54:21
funny... but I use 4:4:4 so there is no effect.
2024-11-14 04:56:52
I also use XnView and maybe it doesn't support this technology...
jonnyawsom3
2024-11-14 05:06:25
I'm not aware of any image viewer that does. Likely too specialised or new for them to make a special case for JPEG, or simply don't know
JendaLinda
2024-11-14 09:56:56
IrfanView is using just BMP internally, it finally added a full alpha support.
2024-11-14 10:01:02
Windows can read JPEG and PNG for some time but bitmap header had to be attached to the images.
2024-11-14 10:05:30
But it makes sense to add a native YCbCr support for images. Video cards could do YUV-RGB conversion for decades, but it was only used for video.
jonnyawsom3
JendaLinda IrfanView is using just BMP internally, it finally added a full alpha support.
2024-11-14 10:14:30
They added it, but it tinges my images brown when enabled for some reason
JendaLinda
2024-11-14 10:35:15
Works fine for me, although the settings may be little confusing.
Quackdoc
2024-11-15 02:23:56
I wanted to try and compare https://github.com/openapv/openapv which seems to be a prores alternative to jxl, but I couldn't get it working, it would be an interesting comparison
jonnyawsom3
JendaLinda Works fine for me, although the settings may be little confusing.
2024-11-15 03:14:46
Seems to make JXL images with alpha brown for me unless set to "Apply transparent color to background"
_wb_
2024-11-15 04:18:28
does this make sense?
2024-11-15 04:23:10
I am trying to get a bit of an overview on the container stuff, because I think I got some things a bit wrong in the past
2024-11-15 04:23:46
in particular, we often say the jxl container is based on ISOBMF, but in reality we're much more like the j2k file format
2024-11-15 04:24:52
that is, we use the box structure and we do have the `ftyp` box as an identifier, and when possible we'll reuse existing box definitions like `Exif` and `xml `, but that's about it
2024-11-15 04:25:54
we don't implement all of the stuff that is in ISOBMFF, stuff like `idat` and `iloc` and `iinf` and `moov` and `mdat` and all of that stuff
2024-11-15 04:28:27
so it's not quite correct to say that the jxl container format is "based on" ISOBMFF, it's rather just using the same box structure and you also have to use the `ftyp` box to identify a jxl file. There's no normative reference to ISOBMFF in the jxl file format spec.
JendaLinda
Seems to make JXL images with alpha brown for me unless set to "Apply transparent color to background"
2024-11-15 04:51:12
Does it lossy or lossless or both?
Quackdoc
_wb_ does this make sense?
2024-11-15 04:55:00
looks good to me, though maybe it would be nice to hint that the "image file format" is still a container depending how beginner the target audience is
_wb_
2024-11-15 04:59:03
well the way I see it you have pure container specs (like MIAF), pure codestream specs (like AV1), and then you have image formats (like AVIF) which are a combination of container and payload
2024-11-15 04:59:56
HEIF container + HEVC payload codec = HEIC image format
jonnyawsom3
JendaLinda Does it lossy or lossless or both?
2024-11-15 05:01:40
Ignore transparency fails to color manage, with lossy stretching the color image and lossless keeping it's shape Apply transparent color correctly color manages and has no issues Keep alpha is the same as ignore, with bitdepth not increasing to 32bit Apply color, Lossy JXL, Lossless JXL
JendaLinda
Ignore transparency fails to color manage, with lossy stretching the color image and lossless keeping it's shape Apply transparent color correctly color manages and has no issues Keep alpha is the same as ignore, with bitdepth not increasing to 32bit Apply color, Lossy JXL, Lossless JXL
2024-11-15 05:20:04
Have you updated the plugins too?
jonnyawsom3
JendaLinda Have you updated the plugins too?
2024-11-15 05:24:28
Irfanview 4.70 and JPEG_XL 4.68, so yes
JendaLinda
Irfanview 4.70 and JPEG_XL 4.68, so yes
2024-11-15 05:35:02
Opened a JXL image in IfanView and saved as PNG. Converted the same JXL to PNG using djxl. Both PNGs contain the same pixel data. My images are in sRGB, though.
2024-11-15 05:44:22
But there's something strange going on with your examples, it looks like red and blue channels are swapped.
jonnyawsom3
JendaLinda Opened a JXL image in IfanView and saved as PNG. Converted the same JXL to PNG using djxl. Both PNGs contain the same pixel data. My images are in sRGB, though.
2024-11-15 05:49:13
An image with transparency, and changing the transparency settings in Irfanview?
JendaLinda
An image with transparency, and changing the transparency settings in Irfanview?
2024-11-15 05:57:00
Changing the transparency setting changes only the appearance of the background. The more concerning fact is it looks like red and blue channels are being swapped in your image.
2024-11-15 05:59:10
Only with the *keep alpha* setting I get the same image as using djxl.
CrushedAsian255
_wb_ that is, we use the box structure and we do have the `ftyp` box as an identifier, and when possible we'll reuse existing box definitions like `Exif` and `xml `, but that's about it
2024-11-16 12:48:51
In ISOBMFF how do you know if a box is nested or not?
_wb_
2024-11-16 06:20:40
If the payload of a box is another box then it's nested 🙂
CrushedAsian255
_wb_ If the payload of a box is another box then it's nested 🙂
2024-11-16 07:14:18
How can you tell if the box should be read as individual values or as a list of other boxes?
_wb_
2024-11-16 07:15:15
If you understand the box type, you know how to interpret the payload. Otherwise you just ignore the box.
CrushedAsian255
2024-11-17 01:01:36
GIF has to be pronounced with a hard G otherwise you might confuse it with [JIF (JPEG Interchange Format)](https://en.wikipedia.org/wiki/JPEG#JPEG_files)
_wb_
2024-11-17 09:01:09
That's actually a good point.
2024-11-17 09:04:16
Though I don't think many people are aware of JIF. Even JFIF is not very commonly used, it's more common to assume that a JPEG is a JPEG _file_, and when it isn't (like when embedded in a PDF), to call it a "JPEG codestream" or something like that.
2024-11-17 09:07:15
In fact, originally FLIF was called JIF (though I wanted to call it JPIF), for Jon's Image Format (or Jon and Pieter), because I didn't know about the JPEG JIF, and I thought the confusion with GIF would be fun 🙂
JendaLinda
2024-11-17 09:47:23
The JPG file extension was adopted for all JPEG images probably because it has three letters. Back then, file extensions with more than three letter were often being truncated.
spider-mario
2024-11-17 09:48:41
blame DOS and 8.3
2024-11-17 09:49:03
I also remember `.htm` pages on the web
2024-11-17 09:49:22
interestingly, though, it’s been a while since we’ve restricted ourselves to 8 characters for the part before the extension
JendaLinda
spider-mario I also remember `.htm` pages on the web
2024-11-17 09:54:10
Even better, names like `mainpa~1.htm`
2024-11-17 09:57:40
Short file names are still available in modern Windows and sometimes they're useful, for example in programs that doesn't support unicode file names.
2024-11-17 10:01:07
Still to day, I'm not fan of file extensions with more than three letters, especially if the shortened extension would conflict with another file format.
spider-mario
2024-11-17 10:08:05
one thing I’ve been wondering is whether there would be concrete drawbacks to using `.c++`
2024-11-17 10:08:18
instead of trying to come up with workarounds like `.cpp` and `.cc`
2024-11-17 10:08:29
(or worse of all, `.C`)
2024-11-17 10:09:46
other annoyances include `.m` for Objective-C and MATLAB, and `.pl` for Prolog and for Perl
MSLP
2024-11-17 10:41:16
Probably a minor annoyance of `.c++` would be that it needs to be urlencoded to `c%2b%2b` when requested it via HTTP
_wb_
2024-11-17 11:03:05
Also probably needs escaping in regexes and shell scripts etc
CrushedAsian255
2024-11-17 11:28:14
I don’t personally have a problem with .cpp
2024-11-17 11:28:31
.m makes no sense though
2024-11-17 11:28:38
It sounds like something for metal shaders
spider-mario
2024-11-17 12:13:22
apparently, it comes from “messages”
2024-11-17 12:13:28
since message-passing is central to the language
CrushedAsian255
2024-11-17 01:48:07
That would be like calling rust files .bc for borrow checked lol
2024-11-17 01:48:18
Or .ms for memory safely
JendaLinda
2024-11-17 03:40:18
There used to be a dozen of image formats using `.pic` extension.
2024-11-17 03:46:02
I don't like `.webp` extension. Looks kinda ugly and doesn't have a three letter form. Also, how is WebP supposed to be pronounced?
CrushedAsian255
JendaLinda I don't like `.webp` extension. Looks kinda ugly and doesn't have a three letter form. Also, how is WebP supposed to be pronounced?
2024-11-17 03:49:40
“Web Pee” I think
JendaLinda
2024-11-17 03:53:22
By shortening `.avif`, you get `.avi` `.hei` still kinda works, though.
CrushedAsian255
JendaLinda By shortening `.avif`, you get `.avi` `.hei` still kinda works, though.
2024-11-17 03:53:57
AVIF could probably be AIF, for Av1 Image Format
2024-11-17 03:56:02
Apple just gives up and doesn’t even try with their .pages and .keynote files (well, technically folders (well, technically both..?))
JendaLinda
2024-11-17 03:58:03
I suppose those files won't be usable outside Apple system anyway.
2024-11-17 04:10:44
There were even file formats using only numbers in the file extension.
RaveSteel
CrushedAsian255 AVIF could probably be AIF, for Av1 Image Format
2024-11-17 05:56:07
AIF is already an extension for audio
CrushedAsian255
RaveSteel AIF is already an extension for audio
2024-11-17 05:56:49
Ah I forgot of it, I have only known of it as aiff
RaveSteel
2024-11-17 05:57:23
Limiting extension to three letters will bottleneck us at some point if the abbreviations are used to have meaning. But mostly just a remnant of the 8.3 days i think
2024-11-17 05:58:32
A1I for AV1 Image would be usable, but it looks kind of stupid, ngl
CrushedAsian255
2024-11-17 06:00:16
I think AVIF / WebP is fine as if your system still supports only 3 letter extensions, get a better system
Cacodemon345
RaveSteel A1I for AV1 Image would be usable, but it looks kind of stupid, ngl
2024-11-17 06:08:15
Why does that read like an obscure extension for some obscure video format used in some MS-DOS games?
JendaLinda
2024-11-17 06:42:10
AVIF is just HEIF using AV1 compression. MKV doesn't need a special file extension for every compression type.
2024-11-17 06:55:45
Although in the case of AVIF the distinction is reasonable.
Quackdoc
JendaLinda AVIF is just HEIF using AV1 compression. MKV doesn't need a special file extension for every compression type.
2024-11-17 07:04:34
mki when plox
JendaLinda
Quackdoc mki when plox
2024-11-17 07:13:00
I actually tried that and found out FFV1 is pretty good.
DZgas Ж
2024-11-18 04:07:45
cat.thegreadcodecjpegxlinthisfile
2024-11-18 04:08:50
The file name size is still limited to 255 characters <:Stonks:806137886726553651>
spider-mario
2024-11-18 04:13:31
not quite, AFAIK https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later
jonnyawsom3
2024-11-18 05:34:43
I've been using that flag for a few years and never had an issue
JendaLinda
2024-11-18 07:03:02
There was severe path length limitation when burning files to CD.
RaveSteel
2024-11-18 08:40:02
On linux the kernel sadly hard limits to 255 characters for filenames. path length is 255 characters per level
DZgas Ж
spider-mario not quite, AFAIK https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation#enable-long-paths-in-windows-10-version-1607-and-later
2024-11-18 08:56:23
python offers this feature during installation
LMP88959
2024-11-19 02:26:54
unrelated, but: https://github.com/LMP88959/Digital-Subband-Video-2/pull/9
2024-11-19 02:28:11
asymmetric transform coding using novel subband filter.
2024-11-19 02:28:39
asymmetric as in slower encoding, faster decoding
2024-11-19 02:29:26
only 1 paper was written about this concept back in 1990 and i havent seen anyone else expand upon it
2024-11-19 02:29:44
but now i've implemented my own version of it and added it to the DSV2 video codec
Demiurge
2024-11-21 09:05:24
No one complains about .flac having 4 letters because we aren't in the 80's anymore
spider-mario
2024-11-21 10:57:51
`.flc` (`.fla` is already taken by Flash)
TheBigBadBoy - 𝙸𝚛
2024-11-21 11:01:30
`.f.lac`
juliobbv
2024-11-21 11:59:19
Hey all! libaom has recently gained a new `--tune=ssimulacra2` mode, available on the `main` branch. It's essentially SVT-AV1-PSY's "still picture" tune heuristics and tweaks ported into libaom, developed to improve subjective image quality and consistency, while also increasing SSIMULACRA 2 scores. If you have a project that requires using AVIF, or are just curious about the new tune, give it a try!
gb82
juliobbv Hey all! libaom has recently gained a new `--tune=ssimulacra2` mode, available on the `main` branch. It's essentially SVT-AV1-PSY's "still picture" tune heuristics and tweaks ported into libaom, developed to improve subjective image quality and consistency, while also increasing SSIMULACRA 2 scores. If you have a project that requires using AVIF, or are just curious about the new tune, give it a try!
2024-11-22 07:23:23
(can confirm it is really good)
paperboyo
juliobbv Hey all! libaom has recently gained a new `--tune=ssimulacra2` mode, available on the `main` branch. It's essentially SVT-AV1-PSY's "still picture" tune heuristics and tweaks ported into libaom, developed to improve subjective image quality and consistency, while also increasing SSIMULACRA 2 scores. If you have a project that requires using AVIF, or are just curious about the new tune, give it a try!
2024-11-22 03:02:26
> subjective image quality and consistency, What does *consistency* mean here? Is it likely to spend more bytes on images that compress well and less bytes on images that compress poorly, given one quality value? (this is my no. 1 problem with AVIF, or with any encoder…). Is there any discussions/docs/writeups/blogposts about this that would spare me testing it blindly?
juliobbv
paperboyo > subjective image quality and consistency, What does *consistency* mean here? Is it likely to spend more bytes on images that compress well and less bytes on images that compress poorly, given one quality value? (this is my no. 1 problem with AVIF, or with any encoder…). Is there any discussions/docs/writeups/blogposts about this that would spare me testing it blindly?
2024-11-22 08:39:09
*Consistency* here means that, at a given quality value, the libaom will spend more bytes on images that are rated lower subjectively (or have lower SSIMULACRA2 scores), and vice versa. The end result is the ability of libaom to hit a quality level more accurately, either within an image (especially if they feature a mix of high-contrast and low-contrast features, or camera noise/film grain), or across images. The libaom changes are hot and fresh, so no formal docs have been written up yet, but the commit development chain can be followed up here: https://aomedia-review.googlesource.com/q/owner:juliobbv@gmail.com. Additionally, almost all of the changes were ported from SVT-AV1-PSY's tune 4, of which we do have some comparisons and documentation: https://svt-av1-psy.com/avif/comparisons/index.html.
paperboyo
juliobbv *Consistency* here means that, at a given quality value, the libaom will spend more bytes on images that are rated lower subjectively (or have lower SSIMULACRA2 scores), and vice versa. The end result is the ability of libaom to hit a quality level more accurately, either within an image (especially if they feature a mix of high-contrast and low-contrast features, or camera noise/film grain), or across images. The libaom changes are hot and fresh, so no formal docs have been written up yet, but the commit development chain can be followed up here: https://aomedia-review.googlesource.com/q/owner:juliobbv@gmail.com. Additionally, almost all of the changes were ported from SVT-AV1-PSY's tune 4, of which we do have some comparisons and documentation: https://svt-av1-psy.com/avif/comparisons/index.html.
2024-11-22 08:41:49
Thanks so much! Sounds exciting, will have a read.
juliobbv
paperboyo Thanks so much! Sounds exciting, will have a read.
2024-11-22 08:46:36
Excellent, thank you for reading me!
2024-11-22 08:59:38
The most extreme case I've encountered so far between tunes is http://0x0.st/X3On.png. This 36 MP image contains heavy luma and chroma noise. A competent lossy encoder can still get something decent-looking at 2 MB. The SSIM tune (in 4:4:4 chroma subsampling mode) wipes out luma noise almost completely (while overshooting size by 8+%), but the new SSIMULACRA 2 tune retains it much more satisfactorily.
2024-11-22 09:02:20
2024-11-22 09:06:37
(fun fact: the new tune enables <@179701849576833024>'s qm-psnr distance metric, as it was found to be beneficial for SSIMULACRA 2 by 3-5%, and reduces the occurrence of ugly flat blocks)
paperboyo
2024-11-22 09:10:57
Exactly this [here](https://aomedia-review.googlesource.com/c/aom/+/194303)! Since I can only fire one number for quality at thousands of images, I’m finding that, at the same dimensions, those of 6.1KB can easily be 20kb and those of 200kb could easily be 120kb. And the whole thing would look better. And weigh less in total. * nos. totes invented, just to illustrate the point Been looking for it since, like, [forever](https://github.com/GoogleChromeLabs/squoosh/issues/270#issue-380211392).
veluca
juliobbv (fun fact: the new tune enables <@179701849576833024>'s qm-psnr distance metric, as it was found to be beneficial for SSIMULACRA 2 by 3-5%, and reduces the occurrence of ugly flat blocks)
2024-11-22 09:11:34
I was honestly surprised it seemed to do nothing
juliobbv
veluca I was honestly surprised it seemed to do nothing
2024-11-22 09:13:47
it might've been the combination of the new optimized QM level picking formula + multi-scale nature of SSIMULACRA 2 actually detecting the psychovisual benefit 🤔
2024-11-22 09:16:51
the original QM level formula in libaom's code made zero sense to me
2024-11-22 10:54:44
but anyway, it's a perf review time freebie 😛
veluca
juliobbv the original QM level formula in libaom's code made zero sense to me
2024-11-22 11:06:36
I don't think it was ever meant to make sense, fwiw
2024-11-22 11:06:53
(it might be that I replaced it, in which case it _was_ meant to make sense xD)
juliobbv
veluca I don't think it was ever meant to make sense, fwiw
2024-11-23 12:39:53
yeah, I looked at the commit history and the original formula has pretty much stayed the same ever since its inception in VP10
veluca
2024-11-23 12:40:37
IIRC the idea was just for it to produce all different QM values to test the en/decoder correctness *shrug*
Demiurge
2024-11-23 03:39:09
Now if only they were monkeying with libjxl instead of libaom/svtav1
2024-11-23 03:41:19
A format with much more potential, the "next gen alien technology from the future" really...
2024-11-23 03:42:00
Not even being facetious there, the format was designed to have very long, long term potential gains deep into the future...
juliobbv
2024-11-23 09:17:43
I'd def be down to work on libjxl, the toolset looks fun
2024-11-23 09:19:28
I know that transform size selection for mid to low bitrates can be improved
_wb_
2024-11-23 09:45:53
Yes, also there is stuff you can do in block selection that libjxl doesn't even consider, such as using non-naturally aligned blocks (say a 32x32 block starting at coords that are not a multiple of 32) and using blocks larger than 64x64.
afed
2024-11-23 02:47:40
🤔 https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2336
juliobbv
_wb_ Yes, also there is stuff you can do in block selection that libjxl doesn't even consider, such as using non-naturally aligned blocks (say a 32x32 block starting at coords that are not a multiple of 32) and using blocks larger than 64x64.
2024-11-23 07:29:18
oh, interesting! so can you have something like, an 8x8, 32x32, 16x16, and 8x8 block along the width axis?
_wb_
2024-11-23 07:38:25
Yes, as long as you don't cross the boundaries of the 256x256 groups
2024-11-23 07:41:08
I remember Pascal was talking about the idea in the context of webp2, I think he called it "floating blocks", and we could do that in jxl too without any extra signaling cost or complications for decoding, so we did (even if we weren't using it)
veluca
juliobbv oh, interesting! so can you have something like, an 8x8, 32x32, 16x16, and 8x8 block along the width axis?
2024-11-23 11:24:12
a fun thing this allows you to do is to find an actually-optimal (according to whatever metric you care for) decomposition in 16x8, 8x8 or 8x16 blocks fairly quickly, although I never tried to implement that
2024-11-23 11:36:02
(well, you still have to determine all the costs, but once you have those you should be able to find the optimal decomposition quickly)
juliobbv
2024-11-24 01:00:20
yeah, you'd have increased chances to align block edges to favorable image features
Demiurge
2024-11-25 07:17:14
Lossy modular/squeeze mode, which hasn't even been extensively tested or tuned, already performs just as well or better than default dct lossy mode, so maybe there's even greater potential and simplicity down that route...?
CrushedAsian255
Demiurge Lossy modular/squeeze mode, which hasn't even been extensively tested or tuned, already performs just as well or better than default dct lossy mode, so maybe there's even greater potential and simplicity down that route...?
2024-11-25 08:28:56
100%, it just takes dev hours
Demiurge
2024-11-25 08:33:34
Make -m the default 😂
_wb_
2024-11-26 02:15:54
doing efficient unsqueeze is far from trivial, maybe there's room for improvement in decode speed of lossy modular but it won't be easy. Currently lossy modular is about 3 times as slow to decode as lossy vardct...
CrushedAsian255
_wb_ doing efficient unsqueeze is far from trivial, maybe there's room for improvement in decode speed of lossy modular but it won't be easy. Currently lossy modular is about 3 times as slow to decode as lossy vardct...
2024-11-26 02:57:12
Isn’t squeeze really bad for cache performance?
_wb_
2024-11-26 03:07:49
no, it's mostly just hard to do multithreading
veluca
2024-11-26 09:02:09
well, depends also on how you actually unsqueeze
2024-11-26 09:02:23
as it is done today in libjxl, I don't think it's particularly good for cache
Demiurge
2024-11-27 01:07:55
if anyone can make stuff insanely fast it's veluca
2024-11-27 01:08:16
the simd wizard