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

on-topic

Whatever else

uis
Oleksii Matiash I just wrote small python script that traverses files in the tree, and can call arbitrary number of cjxl (also takes a limiter from args, to avoid ram overflow, because my cpu has 16 physical cores). So it uses 100% of CPU until number of still-not-compressed files is lower than core count
2023-08-18 08:11:33
\*cough\* xargs \*cough\*
Traneptora
2023-08-19 02:35:41
or parallel
Oleksii Matiash
uis \*cough\* xargs \*cough\*
2023-08-19 03:16:20
I'm on windows, and that script does not only what I described, so no, I believe there is no general solution for my requirements
Traneptora
2023-08-19 06:43:29
I think GNU parallel works on windows
Quackdoc
2023-08-19 06:52:15
I think it does too, but i've had better luck using mmsticks parallel or fd
spider-mario
Traneptora I think GNU parallel works on windows
2023-08-19 08:35:22
it does
2023-08-19 08:35:27
`pacman -S parallel` in msys2 and you’re good to go
uis
Oleksii Matiash I'm on windows, and that script does not only what I described, so no, I believe there is no general solution for my requirements
2023-08-19 12:26:26
If it does more, than you described, sounds like general solution to me
yoochan
2023-08-19 03:41:34
Pacman on windows? I'm lost 😅
2023-08-19 03:42:36
It seems that msys2 is a modified version of cygwin, I thought apt would be the package manager of choice
spider-mario
2023-08-19 03:49:23
nah, it’s pacman
2023-08-19 03:49:36
(or shall I say `pacman.exe`)
2023-08-19 03:50:41
2023-08-19 03:51:54
https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-libjxl/PKGBUILD
yoochan
2023-08-19 03:54:32
I'll have a try, next time I boot on win
Traneptora
yoochan It seems that msys2 is a modified version of cygwin, I thought apt would be the package manager of choice
2023-08-19 04:21:21
nah, cygwin provides a translation layer for unix APIs, so code that makes calls to POSIX-specific code can be compiled directly for windows, with cygwin providing the translation layer
2023-08-19 04:24:37
msys2 is different - it provides a posix-like environment with all the tools, but the focus is about building native software with windows APIs
spider-mario
2023-08-19 05:22:15
that’s mingw, but msys2 does also have a cygwin-like environment
2023-08-19 05:22:34
the non-prefixed packages, like `parallel`, `pacman` itself, etc. run under that layer
2023-08-19 05:25:37
but yeah, the focus is on the prefixed (mingw64-[…], etc.) packages which do let you build native windows binaries
DZgas Ж
DZgas Ж the best and fastest way to transcode 50 thousand jpeg to jxl images is to write a python/bash script? cjxl, like all similar programs, accepts only single files for input?
2023-08-20 03:20:16
discord files moment. I wrote small script that reads the first bytes of the image to determine
diskorduser
2023-08-21 01:07:23
Show it or it doesn't exist 🙂
Traneptora
diskorduser Show it or it doesn't exist 🙂
2023-08-21 04:00:41
why? it's easy to do
2023-08-21 04:00:58
`file --mime-type` is the easiest way
diskorduser
2023-08-21 04:01:10
I'm just joking
Quackdoc
2023-08-21 06:48:35
this is turning out ok https://media.discordapp.net/attachments/615105639567589376/1143156986318430238/image.png
DZgas Ж
Traneptora `file --mime-type` is the easiest way
2023-08-21 07:57:17
🙂
Traneptora
2023-08-21 07:59:17
I don't know why you'd need a script to do it
2023-08-21 07:59:21
reinventing the wheel
DZgas Ж
Traneptora I don't know why you'd need a script to do it
2023-08-21 08:00:02
well
Traneptora
2023-08-21 08:01:46
why do the files have the wrong file extension in the first place
DZgas Ж
Traneptora why do the files have the wrong file extension in the first place
2023-08-21 08:03:08
discord files moment.
Traneptora
2023-08-21 08:03:15
?
2023-08-21 08:03:28
what does that mean
DZgas Ж
Traneptora reinventing the wheel
2023-08-21 08:04:10
such an expression of words is extremely contagious and carries the wrong message in any sphere. and of course it doesn't make sense
Traneptora
2023-08-21 08:04:32
what
2023-08-21 08:04:54
it means "there's no reason to try to invent something that has already been around for a very long time"
DZgas Ж
Traneptora what does that mean
2023-08-21 08:04:57
this means that a file with any extension can have a different extension.
Traneptora
2023-08-21 08:05:14
discord preserves the file name of the file that was uploaded to it
2023-08-21 08:05:25
why was a file uploaded with the wrong extension in the first place
DZgas Ж
Traneptora it means "there's no reason to try to invent something that has already been around for a very long time"
2023-08-21 08:05:43
no, it means, "why are you programming if you can find something ready, you're wasting your time"
Traneptora
2023-08-21 08:05:58
Yes, it also means that in this context
DZgas Ж
Traneptora why was a file uploaded with the wrong extension in the first place
2023-08-21 08:06:45
I do not know, but about 20% of all files in discord have the wrong extension
Traneptora
2023-08-21 08:07:03
that is definitely not true
DZgas Ж
2023-08-21 08:09:02
perhaps the figure is over. but it's definitely a problem
Traneptora
2023-08-21 08:09:22
in either case, you can just do something like: ```sh mv -vn "$input" "${input%.*}.$(file --brief --extension -- "$input")" ```
DZgas Ж
2023-08-21 08:09:33
> linux
Traneptora
2023-08-21 08:10:17
I'm sure an equivalent oneliner exists in Batch
DZgas Ж
Traneptora reinventing the wheel
2023-08-21 08:10:42
because I'm a python programmer and I know how to use neural networks that generate code for me that I can read. so yes. it's definitely faster than searching for anything on the internet
Traneptora
2023-08-21 08:11:01
>I know how to use neural networks that generate code for me so you're not a programmer, ok
DZgas Ж
Traneptora >I know how to use neural networks that generate code for me so you're not a programmer, ok
2023-08-21 08:12:23
I am definitely a programmer who makes python code, Or do you want to say that using a neural network makes my working code that solves problems -- bad?
Traneptora
2023-08-21 08:12:47
oh mb I thought you generate code with a bot
2023-08-21 08:13:06
if you're actually a programmer writing code yourself that's different, mb
DZgas Ж
Traneptora if you're actually a programmer writing code yourself that's different, mb
2023-08-21 08:14:34
Traneptora
2023-08-21 08:17:20
this doesn't look like a python script to batch rename files
DZgas Ж
2023-08-21 08:18:11
I wrote the imageboard from scratch, in one self-written line database, without any other files or programs -- use gpt, and yet I worked for days for about a month. figuring out how best to write it in order stick to super-minimalism
Traneptora
2023-08-21 08:18:28
this is just a flask script
2023-08-21 08:18:35
for a web server Application
2023-08-21 08:18:43
this doesn't batch rename images
DZgas Ж
2023-08-21 08:18:46
pure python
2023-08-21 08:18:57
for flask server
2023-08-21 08:19:08
python flask server
Traneptora this doesn't batch rename images
2023-08-21 08:19:46
Traneptora
2023-08-21 08:20:25
You read the entire file into memory in order to check the first few bytes? why?
DZgas Ж
2023-08-21 08:20:53
why not
Traneptora
2023-08-21 08:21:09
if you can't answer that yourself then I cannot help you
DZgas Ж
2023-08-21 08:21:12
read the BYTES so fast
Traneptora
2023-08-21 08:21:19
so fast!
DZgas Ж
Traneptora so fast!
2023-08-21 08:27:50
I really can’t answer this question, this code was completely written by the neural network and it has already done its job and is completely unnecessary, I didn’t care about this line at all. Why do you ask such questions about the code that goes to the trash, I can not understand. data = open('file').read(10)
Traneptora
2023-08-21 08:28:41
maybe that's a clue
DZgas Ж
2023-08-21 08:28:58
maybe i am OmegaClueless
Traneptora if you can't answer that yourself then I cannot help you
2023-08-21 08:33:21
$80 fell out of my pocket today, but all I to do tell myself - money comes and goes. All the best to whoever finds them. -- this made me think that the collection of porn that I have been collecting for 4 years is much more important than any money
Traneptora
2023-08-21 08:33:40
what
DZgas Ж
2023-08-21 08:33:47
🙂
Posi832
2023-08-21 08:34:35
This looks like a conversation between two chat bots X D
Quackdoc
2023-08-21 09:40:48
with any luck, I might have a build of aves with working jxl for android, it will be pretty rudimentary, and I won't support it for very long since aves doesn't accept PRs, and aves might treat it as an video, but it will with luck, work
axos
2023-08-26 05:55:31
Hey, anyone know how I could encode the color profile (ICC profile) directly into the png?
veluca
2023-08-26 06:18:32
what do you mean?
2023-08-26 06:18:52
what do you have in input, and what output do you want?
axos
2023-08-26 07:50:47
1st image: has the colour profile: "Colour LCD". 2nd image: has the colour profile embedded into the png. 3rd image: is stripped colour profile and has a discoloration effect. 1st img is the input image, the 2nd is the output I want and the 3rd is the output I get 😢 Exif between the 1st and 2nd: https://gist.githubusercontent.com/taosx/08d7cba93780dd47a829bbc9db87657e/raw/b571ed74a471268ba40c68d116f7805bbb5f6e81/md
w
2023-08-26 09:01:34
you want to convert it to srgb
2023-08-26 09:01:36
good luck
spider-mario
2023-08-26 09:06:51
that would be something like this then: ```bash convert test-in-1.png -profile /usr/share/color/icc/colord/sRGB.icc -strip out.png ```
2023-08-26 09:07:00
(and then `optipng` or `advpng` or whatever)
axos
2023-08-26 09:39:32
Thank you w, spider-mario. I'm suspecting my decoder doesn't read the icc-profile info but at least I know what I need to do. Edit: Solved it, basically I had to read and decode the icc profile of the current image and then transform it using sRGB.icc. The library I used was: https://github.com/kornelski/rust-lcms2 in case someone needs something similar in rust.
bonnibel
2023-08-27 09:19:39
Saw a combined metric in some jpegli commits butteraugli 3-norm + (100 - SSIMU2) x 0.04 How useful is it for things other than optimizing jpegli's quant tables?
_wb_
2023-09-01 10:33:39
https://entropymine.com/imageworsener/ interesting stuff
Traneptora
_wb_ https://entropymine.com/imageworsener/ interesting stuff
2023-09-01 10:36:33
surprised you haven't seen this before
Quackdoc
2023-09-01 10:44:55
oh boy, an srgb page
diskorduser
2023-09-02 04:15:44
https://discord.com/channels/794206087879852103/806898911091753051/1008897846193430561
yurume
2023-09-02 04:27:45
yeah it is a good trove for anyone working with images
2023-09-02 04:28:33
I only have one comment for this: https://entropymine.com/imageworsener/slowpow/
2023-09-02 04:28:42
> I am aware that transcendental functions like pow() are hard to calculate, but I find it difficult to believe that _this_ is the state of the art.
2023-09-02 04:29:57
unfortunately this is the SOTA. a correctly rounded math function is still an open problem. the actual problem is that we don't need a correctly rounded result for those cases and yet have to rely on the correct and slow `pow`!
bonnibel
bonnibel Saw a combined metric in some jpegli commits butteraugli 3-norm + (100 - SSIMU2) x 0.04 How useful is it for things other than optimizing jpegli's quant tables?
2023-09-03 10:08:11
No-one's stopped me so now I'm running a lot of libplacebo scalers through this (again)
2023-09-03 10:09:41
Unlike when I used just SSIMU2 the highest-scoring result no longer has obvious light halos, which is good
HCrikki
2023-09-05 02:07:39
about ios 17 current betas, can apps embed jxl images (like for interface, textures) that will then be viewable in-app without needing extra libraries ?
Traneptora
HCrikki about ios 17 current betas, can apps embed jxl images (like for interface, textures) that will then be viewable in-app without needing extra libraries ?
2023-09-05 02:52:13
as far as I'm aware, yes, anything that relies on system libraries to decode should work
Jyrki Alakuijala
bonnibel Unlike when I used just SSIMU2 the highest-scoring result no longer has obvious light halos, which is good
2023-09-07 07:04:38
in my experience it is safer to optimize against butteraugli if one has substantial interest for quality -- mixing in ssimulacra is imho more for the numbers than for eyes -- also nothing matches with human eyes, so it is good to look at the results by oneself, too
DZgas Ж
2023-09-07 07:40:12
yoochan
Jyrki Alakuijala in my experience it is safer to optimize against butteraugli if one has substantial interest for quality -- mixing in ssimulacra is imho more for the numbers than for eyes -- also nothing matches with human eyes, so it is good to look at the results by oneself, too
2023-09-07 08:09:23
You make it look like ssimulacra2 was useless...
Jyrki Alakuijala
2023-09-08 09:07:18
ssimulacra2 matches better with human raters at lower quality, but it may have corners that are not covered
2023-09-08 09:07:39
butteraugli I co-developed with guetzli, pik and jpeg xl (and some neural compression work)
2023-09-08 09:08:07
when the compressor found new ways to cheat butteraugli, I added those into the test corpus and hardened butteraugli against cheating compressors
2023-09-08 09:08:30
there are still issues, but much less than any other complex human vision inspired metric -- I think
2023-09-08 09:09:23
initially, butteraugli was answering one question only: can a human see a difference from a distance of 900 pixels or not (when in office conditions using a photo-editing quality monitor)
2023-09-08 09:09:52
the softer quality has been a bit of an after-thought
2023-09-08 09:11:05
I believe it is a valid use of ssimulacra2 to evaluate quality of compression systems, but possibly not equally valid to use it for making a lot of microlevel decisions -- there I'd rather use butteraugli
2023-09-08 09:11:36
in jpegli we wanted to improve performance around quality 70 -- there ssimulacra2 works possibly better than butteraugli
2023-09-08 09:12:11
also, in jpegli there cannot be a lot of microlevel trickery -- the format is too simple for optimizations to find such opportunity -- so the use of ssimulacra2 was both justified and relatively safe there
_wb_
2023-09-08 09:39:46
agreed
2023-09-08 09:42:13
ssimulacra2 could also be useful for d>3 jxl and/or for tweaking low-effort jxl encoding (including hw encoders). But to guide higher-effort encoding (which has more "microlevel trickery"), especially around d1, I think it's better to stick to butteraugli
yoochan
2023-09-08 01:36:33
thank you for your feedback, and the comprehensive answers. I perfectly understood the difference
username
2023-09-12 12:37:41
well apparently there's a way to test webkit on Windows: https://james.darpinian.com/blog/safari-on-windows
2023-09-12 12:38:05
it seems as though JXL progressive rendering is partially working?
2023-09-12 12:38:58
2023-09-12 12:41:21
JPEG progressive rendering works just fine but not JXL in webkit
gb82
2023-09-12 05:50:05
does it work fine in Safari on Mac?
username
2023-09-12 05:58:40
unsure, however HDR is also messing up and I know that works on Mac
quantefiant#4857
2023-09-12 03:04:36
reminds me; on the jxl test page for android ffox nightly I got errors with transparency, but better support for 16 bit colour depth than with png (and i don't have any idea how this screenshot would accurately capture that, but i think it does?). and the css dynamic range media query *doesn't* flag my device/UA as hdr... i understand the three tests are tenuously, if at all, related in the backend. but it's still intrigued me
jonnyawsom3
2023-09-12 03:40:21
That's actually firefox incorrectly turning the HDR image into a normal one, the others are working correctly but your display can't show them
_wb_
2023-09-12 04:26:25
yeah on an sRGB display it's supposed to look just solid red
2023-09-12 04:26:40
(this is not HDR but just wide gamut)
bonnibel
bonnibel No-one's stopped me so now I'm running a lot of libplacebo scalers through this (again)
2023-09-13 05:52:41
I'm using the RealSRv3 dataset (HR-LR image pairs obtained through analogue means and then digitally aligned), because with synthetic LR images the results seemed to pretty easily flip based on the downscaling method used Does result in much higher scores though (butteraugli 3-norm mean around 5.5, p95 around 8)
gb82
quantefiant#4857 reminds me; on the jxl test page for android ffox nightly I got errors with transparency, but better support for 16 bit colour depth than with png (and i don't have any idea how this screenshot would accurately capture that, but i think it does?). and the css dynamic range media query *doesn't* flag my device/UA as hdr... i understand the three tests are tenuously, if at all, related in the backend. but it's still intrigued me
2023-09-15 05:36:36
were these SSIMU2 tests done on the latest SSIMU2?
spider-mario
2023-09-18 11:37:53
reportedly, Apple has tuned the sharpening way down on the new iPhone 15 {,Pro,Plus,Pro Max}, and on the iPhone 14 Pro with the iOS 17 update, in “HEIF Max” (48MP) mode: https://9to5mac.com/wp-content/uploads/sites/6/2023/09/HEIF-iPhone.jpg
_wb_
2023-09-19 06:53:54
Nice. The unsharp masking on that image on the right is indeed quite heavy, can always do that later if you like it but I prefer captured images to be as unprocessed as possible — any baked-in 'enhancements' can only lose information...
spider-mario
2023-09-19 10:04:59
to me, excessive sharpening is the hallmark of the “smartphone look”, maybe even more so than excessive denoising
_wb_
2023-09-19 10:58:18
yeah, median blur and oversharpening - and sometimes also funky oversaturation
Demiurge
spider-mario reportedly, Apple has tuned the sharpening way down on the new iPhone 15 {,Pro,Plus,Pro Max}, and on the iPhone 14 Pro with the iOS 17 update, in “HEIF Max” (48MP) mode: https://9to5mac.com/wp-content/uploads/sites/6/2023/09/HEIF-iPhone.jpg
2023-09-19 07:52:57
Holy crap that extreme ringing around the lettering...
2023-09-19 07:53:16
How is that ever acceptable?
2023-09-19 07:53:58
That looks like the world's crappiest sinc filter
quantefiant#4857
2023-09-19 10:44:17
philosophically, i think it's accepted for the same reason i was surprised other people could see better than me when i had my first optometrist appointment
diskorduser
2023-09-20 02:51:29
Is there any nomacs build for windows which supports jpegxl viewing? The one frtom github releases does not work.
_wb_
Demiurge How is that ever acceptable?
2023-09-20 05:32:20
People have different tastes. What is an extreme ringing artifact to one person, is a nice edge contrast enhancement to another person. What is a blurry mess to one person, is a nice noise-free image to another person. To some extent image quality is a matter of personal taste...
novomesk
diskorduser Is there any nomacs build for windows which supports jpegxl viewing? The one frtom github releases does not work.
2023-09-20 08:31:41
Did you try this one? https://github.com/nomacs/nomacs/releases/tag/3.17.2285
diskorduser
2023-09-20 08:34:46
no. i used stable release by downloading 3.16 from project page.
2023-09-20 08:41:05
beta works. thanks
a goat
2023-09-29 07:12:36
I'm interested in encoding all sRGB colors into a 16 bit space where the remaining 8 bits can be used to store information, looking just like a very mild amount of noise to the end user. To do this, I'd like to use a look up table that contains 2^16 values in it. How would I go about sorting all 2^24 sRGB colors into a 2^16 space where each color contains the most spread out sample range possible?
2023-09-29 07:15:48
Originally I considered using a 3 dimensional LAB grid to organize colors and then to find where the best boundaries were, but now I'm considering a XYB grid
spider-mario
a goat I'm interested in encoding all sRGB colors into a 16 bit space where the remaining 8 bits can be used to store information, looking just like a very mild amount of noise to the end user. To do this, I'd like to use a look up table that contains 2^16 values in it. How would I go about sorting all 2^24 sRGB colors into a 2^16 space where each color contains the most spread out sample range possible?
2023-09-29 07:56:27
how about just using 5-6-5 encoding and mapping that to the corresponding 8-8-8 triplets?
2023-09-29 07:56:33
should be a decent first attempt
a goat
2023-09-29 08:02:17
That's a possibility, but I was wondering if there would be a more sophisticated way of doing it
veluca
2023-09-29 11:20:18
in first approximation, you could take xyb and intersect it with a grid of appropriate coarseness
Traneptora
2023-09-30 02:05:38
issue is that if you use stuff like XYB you end up with roundoff errors as it's not bitexact
2023-09-30 02:05:44
which could be an issue if the lower-order bits matter to be bitexact
_wb_
2023-09-30 07:22:29
I'd also just do RGB565, to keep it simple. If you use CIELab or XYB, you have to take into account that these spaces are not just cubes like RGB, but have a pretty irregular shape.
jonnyawsom3
2023-10-01 01:34:08
Ah, so it's the same as the libwebp vunerability from a few weeks ago, but reclassed
bonnibel
2023-10-01 06:19:28
Is there a "linear light XYB" (for resampling)? As in, if you average _n_ pixels together, the average luminance remains the same
_wb_
2023-10-01 06:51:53
No, but for that you can just use linear RGB...
2023-10-01 06:53:00
The point of a perceptual space like XYB is to model the HVS, which is very much not linear...
2023-10-01 06:58:04
For ssimulacra2, I do the resampling in linear RGB while evaluating the SSIM heatmap in XYB. Means doing 33% more RGB2XYB conversions but I think it's worth it - for resampling the physics of light matters while for distortion perception matters...
bonnibel
_wb_ No, but for that you can just use linear RGB...
2023-10-01 07:07:31
I know, was just wondering if it existed to avoid going all the way back to linear RGB (though tbf that's not very intensive)
2023-10-01 07:19:28
I'm downsampling in linear and upsampling in sigmoid
2023-10-01 07:21:12
(iirc Robidoux was investigating replacing sigmoidization by resampling in 2 opposing gamma spaces and blending the results, I'll check that out too at some point)
diskorduser
2023-10-02 01:11:30
https://www.reddit.com/r/jpegxl/comments/16wwqwn/comment/k33y37d this guy says his photos are not converted properly due to different color profiles. Is it a cjxl bug?
a goat
2023-10-03 06:53:00
Bit of a weird question, but is it possible for jpegxl to run a mixture of lossy and lossless layers? <@794205442175402004>
_wb_
2023-10-04 05:13:36
Yes, this is possible. VarDCT and Modular mode is a frame (layer) header choice, so you can mix VarDCT and Modular frames.
2023-10-04 05:15:00
XYB is a global choice though, so that's a bit of a limitation...
a goat
_wb_ Yes, this is possible. VarDCT and Modular mode is a frame (layer) header choice, so you can mix VarDCT and Modular frames.
2023-10-04 03:09:19
Is it also possible to apply a transform of some kind with modular mode on VarDCT data?
_wb_
2023-10-04 03:29:33
VarDCT data consists of the DC data which is modular encoded and the AC data which has its own specific encoding
2023-10-04 03:30:03
for the DC data you can apply any modular transforms, for the AC data you have to use the specific thing
a goat
2023-10-04 03:41:08
Oh! Nice
Demiurge
2023-10-04 06:09:35
It's kind of weird to call jpeg frequency bin coefficients DC and AC
lonjil
2023-10-04 06:27:08
one's constant the the others wobble like sine waves so it's apt
_wb_
2023-10-04 06:39:24
In the spec we call it LF and HF (low freq / high freq) since the DC/LF image also included some of the low freq wobbly coeffs when transforms bigger than 8x8 are used — e.g. when an 8x16 transform is used, it gives 1x2 pixels in the DC/LF image, based on the DC coefficient and the lowest freq AC coefficient (the one with the big vertical wobble)...
2023-10-04 06:40:43
But in the code we still call it DC and AC (which is technically only correct if only 8x8 is used)
2023-10-04 06:41:09
https://tenor.com/view/acdc-lightning-gif-acdc-acdc-white-lightning-gif-12034088
spider-mario
2023-10-04 06:42:41
it’s just DC from a not very stable source
2023-10-04 06:42:45
(say, a discharging battery)
monad
2023-10-05 01:25:02
Is that better than full HDR?
Quackdoc
monad Is that better than full HDR?
2023-10-05 01:37:51
no its actually worse lol
HCrikki
2023-10-05 01:43:10
this is dead on arrival and a one-way vendorlock trap
Quackdoc
2023-10-05 01:56:28
i doubt it will be vendor lock, the spec seems open and easy to implement.
Jyrki Alakuijala
2023-10-05 09:18:55
HDR -> HDR+ --> HDR Ultra
2023-10-05 09:20:27
HDR10, HDR10+, Dolby Vision
2023-10-05 09:20:35
so many HDRs
VcSaJen
Quackdoc i doubt it will be vendor lock, the spec seems open and easy to implement.
2023-10-05 10:20:16
So are MS Office formats, and yet nothing supports them fully.
w
2023-10-05 10:43:48
and psd
spider-mario
VcSaJen So are MS Office formats, and yet nothing supports them fully.
2023-10-05 11:59:54
the spec for MS Office formats is thousands of pages long
2023-10-05 12:00:10
and has you reimplement bugs from 25-year-old Excel versions
gb82
Jyrki Alakuijala HDR -> HDR+ --> HDR Ultra
2023-10-06 06:22:08
and HDR+ just being a bracketing technique to create SDR JPGs... lol it is a mess
a goat
2023-10-06 06:33:25
https://link.springer.com/article/10.1007/s11042-019-08371-w
2023-10-06 06:34:18
Has anyone read anything about RDgRb? It seems like a promising color space on paper, but I'm curious as to why it's so obscure
spider-mario
gb82 and HDR+ just being a bracketing technique to create SDR JPGs... lol it is a mess
2023-10-06 02:28:00
there hasn’t always been bracketing: https://blog.research.google/2021/04/hdr-with-bracketing-on-pixel-phones.html
Jyrki Alakuijala
gb82 and HDR+ just being a bracketing technique to create SDR JPGs... lol it is a mess
2023-10-06 03:01:28
I don't understand why they decided to call the SDR images (with nice local tone mapping) HDR. Marketing is difficult to understand. Engineering is easier.
2023-10-06 03:02:48
Maintaining clarity about consumer-facing terminology will help a field of technology in the future.
w
2023-10-06 03:05:00
vivid on by default
2023-10-06 03:05:49
actually I think google might have stopped doing that
2023-10-06 03:06:10
but people still pick vivid
Quackdoc
gb82 and HDR+ just being a bracketing technique to create SDR JPGs... lol it is a mess
2023-10-06 04:43:35
HDR in general is a mess and a terrible term
spider-mario
2023-10-06 04:51:43
the “merging several shots and tone-mapping them” approach to HDR has focused more on the capture side, in a sense
2023-10-06 04:51:52
it does allow the capture of scenes with a greater dynamic range
2023-10-06 04:52:20
but dedicating the term to that approach was a bit short-sighted in that it didn’t anticipate that the reproduction side would gain greater DR as well
gb82
2023-10-06 04:57:03
I actually like terms like Apple's "Deep Fusion" that don't necessarily illicit the imagery of any engineering terminology but are just a generic marketing term for what essentially just means "better photos by combining images"
2023-10-09 08:13:04
Do any of you know how flawed XPSNR is as a metric?
HCrikki
2023-10-13 05:36:59
quick question, how does progressive/streamed decoding work and can a decoder override its focus priority?
2023-10-13 05:37:45
curious about how jxl would fare with comics using really tall images (think 12000 pixels tall, 700width) and meant to be read scrolling down from top to bottom like youd do on a touch device. see webtoons for an idea about the use case
jonnyawsom3
2023-10-13 05:44:02
That's actually the default order of images encoded with cjxl, left to right, top to bottom in between 128 to 1024 pixel blocks depending on setting. The order is decided by the encoder, changing what block of pixels is received first by the decoder. If you already have the entire file, then you can choose what area of the image to decode without touching the rest, also known as cropped decode
bonnibel
_wb_ For ssimulacra2, I do the resampling in linear RGB while evaluating the SSIM heatmap in XYB. Means doing 33% more RGB2XYB conversions but I think it's worth it - for resampling the physics of light matters while for distortion perception matters...
2023-10-13 06:41:59
question that's again going to reveal how little i know: everything I read only stresses the importance of linear light for resampling. In a colourspace where that's just a single channel, is there a property the chroma channels should have that'd be beneficial (like is done for gradient creation, which seems to be a similar problem), or should the entire space just be a linear transform of XYZ?
_wb_
2023-10-14 08:34:13
For gradient creation you should use a perceptual colorspace (XYB or Lab, for example), since you want the gradient to be perceptually nice. For resampling, you basically want to simulate what would happen if the same photons would be captured from a further distance or with physically larger pixel buckets — and for that you need a linear colorspace or else you're doing the photon counting math wrong.
Quackdoc
2023-10-14 08:57:24
> For gradient creation you should use a perceptual colorspace (XYB or Lab, for example), since you want the gradient to be perceptually nice. I never thought of this, I wonder if this could be used for sophisticated debanding
JendaLinda
2023-10-15 09:25:08
It seems that sRGB, Adobe RGB and Display P3 are all using the same response curve. So these color profiles should not make any difference in grayscale images, right? There is no color to begin with, so only the response curve is meaningful.
w
2023-10-15 09:26:58
gray is a whole other thing
JendaLinda
2023-10-15 09:41:32
I'm considering RGB encoded grayscale images, where RGB samples are equal, so could be reduced to single gray channel. I've came across such images with attached color profiles. After the reduction to gray the attached RGB profile becomes invalid. But that should not be a problem because the correct response curve would be used anyway.
w
2023-10-15 10:05:47
i think you'd still want to tag it
2023-10-15 10:05:59
especially if it's gray
2023-10-15 10:06:19
nothing can agree what default grayscale should be
Tirr
2023-10-15 10:12:25
white is also a color, so basically grayscale profile has two components: transfer function, and white point
2023-10-15 10:13:22
iirc sRGB, Adobe RGB and Display P3 all have same white point (D65)
Quackdoc
2023-10-15 10:13:30
mfw compression artifacts add color
JendaLinda
2023-10-15 11:01:09
Untagged images are generally considered to be sRGB, so tagging an image as sRGB seems redundant.
Quackdoc
2023-10-15 11:02:13
if its srgb it should be tagged as such, it reduces the chance of it being treated as a pure 2.2 transfer... a bit
JendaLinda
2023-10-15 11:13:51
Where can I come accross color compression artifacts? PNGs with equal RGB samples and JPEGs with blank CbCr channels have no color artifacts.
spider-mario
JendaLinda It seems that sRGB, Adobe RGB and Display P3 are all using the same response curve. So these color profiles should not make any difference in grayscale images, right? There is no color to begin with, so only the response curve is meaningful.
2023-10-15 12:03:02
Adobe RGB's tone curve is different
JendaLinda
2023-10-17 07:47:05
Does have RGB encoded JPEG any disadvantages compared to YCbCr other than less efficient compression? The main concern is support in web browsers and image editing software.
spider-mario
2023-10-17 08:24:11
I would tend to expect compatibility to be better for YCbCr than RGB JPEG
2023-10-17 08:24:47
probably the overwhelming majority of JPEGs are YCbCr so that’s what most software would have been tested with
JendaLinda
2023-10-17 08:26:08
Modern software seems to be fine. The thing is that RGB encoding is not covered by JFIF standard, so the support is not guaranteed.
2023-10-17 08:31:43
YCbCr conversion may introduce some rounding errors so I can see where RGB encoding can be useful.
2023-10-17 10:26:57
MSIE 6 can read RGB encoded JPEG, so I can assume it should be supported pretty much everywhere.
Traneptora
2023-10-17 02:30:05
<@604964375924834314> remember the question about tagging av1 with yuv444p and matrix=GBR?
2023-10-17 02:30:06
https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/libdav1d.c#L150
2023-10-17 02:30:21
and I said there was probably casework?
2023-10-17 02:30:23
it's here
2023-10-17 02:30:49
internally, av1 uses I444 and Matrix=GBR to flag itself as RGB (per spec)
2023-10-17 02:31:01
so if you set that explicitly at the container level things will get confused
spider-mario
2023-10-17 02:34:46
ooh
2023-10-17 02:34:51
thanks for the investigation
2023-10-17 02:35:21
so overall less trouble if I just use the Rec. 2020 matrix? 😁
2023-10-17 02:35:30
I wasn’t using av1, though
2023-10-17 02:35:54
but maybe there are similar shenanigans with whatever I was using (maybe h.264)
Traneptora
2023-10-17 02:35:55
wasn't this avif?
spider-mario
2023-10-17 02:36:20
I was outputting y4m from my program and piping it into ffmpeg for compression with (I think) libx264
Traneptora
2023-10-17 02:39:59
never mind then
spider-mario I was outputting y4m from my program and piping it into ffmpeg for compression with (I think) libx264
2023-10-17 02:43:59
``` [2023-10-17_10:36:47] <Traneptora> Daemon404: so if the transfer isn't SRGB but the matrix is identity, and the pixel format is I444, it's an illegal file? [2023-10-17_10:37:01] <Traneptora> and is this also true about H.264? [2023-10-17_10:37:07] <Daemon404> it's not illegal but things wont pick it up as h264 [2023-10-17_10:37:10] <Daemon404> er [2023-10-17_10:37:12] <Daemon404> brainfart [2023-10-17_10:37:18] <Daemon404> things wont pick it up as rgb*** ```
2023-10-17 02:44:36
Daemon404 is Derek Buitenhuis if you're familiar with him
2023-10-17 02:44:45
https://vimeo.com/554448617
2023-10-17 02:44:53
here he goes over reversible YCgCo
jonnyawsom3
2023-10-17 03:18:30
Huh, could've sworn I've seen him on this discord before, but I suppose not
Nourane
2023-10-19 03:57:07
hello, I'm trying to run these commands cd libjxl mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF .. cmake --build . -- -j$(nproc)
2023-10-19 03:57:16
I got these errors
2023-10-19 03:58:21
2023-10-19 03:58:42
how can I solve these issues?
MSLP
Nourane hello, I'm trying to run these commands cd libjxl mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF .. cmake --build . -- -j$(nproc)
2023-10-19 04:52:54
if you're on system which ships lcms2 (LITTLE CMS) you can try using it - add `-DJPEGXL_ENABLE_SKCMS=false -DJPEGXL_FORCE_SYSTEM_LCMS2=true` to the to first cmake command ie. `cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_SKCMS=false -DJPEGXL_FORCE_SYSTEM_LCMS2=true ..`
veluca
2023-10-21 08:33:46
pext is very very slow on my 3960x
username
2023-10-26 07:15:11
I just woke up and it seems like Discord is using this now: https://blurha.sh/
yurume
2023-10-26 07:45:43
FYI it's a simple DCT-based encoding, originally devised for Mastodon. https://github.com/woltapp/blurhash/blob/master/Algorithm.md
2023-10-26 07:46:57
the algorithm is fine, but I don't like how it is specified (for example, what happens when the "average color" exceeds 2^24 - 1? 😉
Jyrki Alakuijala
2023-10-27 04:07:11
jpeg xl would be better blurhash than blurhash
Tirr
2023-10-27 04:13:15
https://discord.com/channels/794206087879852103/1065165415598272582/1167390454715777046
username
2023-10-27 08:18:48
speaking of blurhash I just found this: https://evanw.github.io/thumbhash/
yurume
Jyrki Alakuijala jpeg xl would be better blurhash than blurhash
2023-10-28 02:36:07
is it even possible? the maximum size of blurhash is less than 100 bytes (in terms of information entropy) and typically around 10 bytes (or <20 characters). unless jxl introduces a special headerless mode just for this use case I don't think it can do that.
username speaking of blurhash I just found this: https://evanw.github.io/thumbhash/
2023-10-28 02:37:23
yeah, there are lots of ways to improve upon this
2023-10-28 02:37:54
I'm quite sure that every such solution would have to be a separate format besides from the "mainline" format due to severe constraints
username
yurume is it even possible? the maximum size of blurhash is less than 100 bytes (in terms of information entropy) and typically around 10 bytes (or <20 characters). unless jxl introduces a special headerless mode just for this use case I don't think it can do that.
2023-10-28 03:03:19
from a pure data/file size per encoded thumbnail/placeholder standpoint JXL would not win however I do think JXL is a better solution complexity and performance wise since with something like blurhash or thumbhash from my understanding work with a javascript library that decodes their custom format and paints it to a canvas element then switches it out with the actual full image file once it's done downloading while with JXL everything would just be handled natively by the browser
yurume
2023-10-28 03:04:46
any such blurred thumbnail lacks high frequency contents so only a small canvas is needed, which can be enlarged by browsers.
Fraetor
2023-10-28 10:16:57
I think the nuance is that things like blurhash are included in the initial request for the content. So it is always going to beat an image format because it can skip the initial network round trip.
2023-10-28 10:19:59
But low res blurhash -> progressive JXL makes a lot of sense. Waiting for the full image before showing anything beyond the blurhash is a bit silly.
2023-10-28 10:22:45
This is also why being encoded as text is important, as else it can't be included in the initial JSON or HTML.
jonnyawsom3
2023-10-28 10:45:42
Technically, JXL from tree would solve that, but trying to output such a simple version and the processing might be more overhead than it takes for the image to load
veluca
Fraetor I think the nuance is that things like blurhash are included in the initial request for the content. So it is always going to beat an image format because it can skip the initial network round trip.
2023-10-28 03:37:59
nothing stops you from using data URIs 🙂
Fraetor
2023-10-28 09:46:12
True actually.
lithium
2023-11-01 08:47:14
Hello, <@532010383041363969> Sorry to bother you, New encoder quality PR look really great, Thank you for your work, but I still have some questions about non-photo type image. I understand pixel peek isn't a fair compare method, so those sample just for explain my question, not for quality compare or benchmark. For those non-photo type image, I still can see some tiny artifacts, I understand specific type image is really hard for DCT, probably have better lossy strategy for non-photo type image? like separate image(Jon PR1395) or jxl lossy palette?
2023-11-01 08:47:46
jonnyawsom3
2023-11-01 08:59:12
1395 is what I'd assume to be best, the issue is good heuristics to decide
HCrikki
2023-11-01 06:09:55
whats the ressource cost of serving a jxl as a reconstructed jpeg in a browser, compared to serving a normal jpeg of the same filesize directly? assuming the server itself can decode everything but a user's browser cant
2023-11-01 06:11:20
the bandwidth and storage savings need no further mention, wondering how ressource intensive itd be for say shared hosting, an imageboard or a website under slashdot effect to handle
Quackdoc
2023-11-01 06:16:05
IMO its too significant for people providing server themselves, better to use jxl wasm decoder probably.
Fraetor
2023-11-01 06:19:05
I can't really see a use case for decoding back to JPEG outside of very niche archival purposes. Generally the compute requirements would outweight the storage savings.
2023-11-01 06:20:14
Maybe in a world where 99% of clients can accept JXL, so its just done for out of data clients.
HCrikki
2023-11-01 06:34:03
storing everything internally on server as jxl is one. for example, allow upload of jpgs that get internally converted to jxl. the ability to serve the original jpegs if needed or desired (some clients or old devices may prefer consuming that or only being able to) was touted as a huge selling point to boost adoption
spider-mario
2023-11-01 07:06:02
depending on the website’s usage pattern, some caching could make sense
2023-11-01 07:06:58
like, automatically store an already-decoded jpeg of the most popular images, dropping som of them as popularity shifts
HCrikki
2023-11-01 07:56:17
id presume reconstructed jpeg present in some cache to be served at almost the same cost as regular jpeg, no surprise here. any idea what i should expect about uncached recjpegs, like for a page serving 30 ?
2023-11-01 07:59:07
i thought generating reconstructed jpegs as new files was different from loading them in memory, or was that the same and files were just cached then discarded after viewing ?
spider-mario
HCrikki i thought generating reconstructed jpegs as new files was different from loading them in memory, or was that the same and files were just cached then discarded after viewing ?
2023-11-01 08:56:00
I’m not fully sure I understand the question – when you say “loading them in memory”, do you mean loading them as pixels for displaying?
2023-11-01 08:56:17
rendering them to pixels indeed sidesteps the generation of an actual JPEG bitstream
HCrikki
2023-11-01 08:58:24
displaying in a webpage without generating any .jpg files
Demiurge
Jyrki Alakuijala jpeg xl would be better blurhash than blurhash
2023-11-01 11:02:46
Makes you wonder when discord will finally ditch webp and switch to jpegxl
lonjil
2023-11-01 11:17:06
at the rate at which they update Electron, maybe 10 - 20 years?
bonnibel
2023-11-02 01:36:02
officially a jxl contributor <-- committed a single character
2023-11-02 01:42:01
now i can tell my grandchildren that for every character of code i submitted i averaged 644 characters describing it
2023-11-02 01:43:43
i'm measuring a 1:1 ratio of characters of code written to CLAs signed. logically this trend will continue indefinitely if i ever submit more
Demiurge
2023-11-02 03:47:25
The CLA requirement is unfortunate... More unnecessary barriers to contributing...
2023-11-02 06:07:03
Would be a shame if someone forked libjxl and didn't require signing a contract with Google before accepting contributions... Maybe even refactoring the code in K&R C style along the way... That would be every developer's dream...
2023-11-02 06:09:32
I worry about how many talented individuals were discouraged from contributing
spider-mario
bonnibel i'm measuring a 1:1 ratio of characters of code written to CLAs signed. logically this trend will continue indefinitely if i ever submit more
2023-11-02 07:41:52
https://xkcd.com/605/
Cacodemon345
2023-11-02 01:12:02
Can't unsee.
lonjil
Demiurge Would be a shame if someone forked libjxl and didn't require signing a contract with Google before accepting contributions... Maybe even refactoring the code in K&R C style along the way... That would be every developer's dream...
2023-11-02 01:16:50
> Maybe even refactoring the code in K&R C style along the way... That would be every developer's dream... I don't think that would be anyone's dream.
2023-11-02 01:17:13
If I were to write a JXL library in C, it'd be C23 with ALL the new features.
spider-mario
2023-11-02 02:08:35
K&R, as in, like this? ```c main(argc, argv) int argc; char** argv; { /* ... */ } ```
yoochan
2023-11-02 02:18:34
that's some ugly code 😄 Nevertheless, C remain the only language which is able to easily compile a function under a symbol which have the same name! which is nice
lonjil
2023-11-02 02:26:05
fun fact: while K&R syntax has been deprecated, it has stayed valid, but this changed with C23, which has completely removed K&R syntax.
veluca
lonjil fun fact: while K&R syntax has been deprecated, it has stayed valid, but this changed with C23, which has completely removed K&R syntax.
2023-11-02 03:01:58
'bout time too
2023-11-02 03:02:21
did you know that k&r syntax functions are not actually checked for argument mistakes?
2023-11-02 03:02:53
(well, perhaps they are, but they are not *required* to be)
Demiurge
spider-mario K&R, as in, like this? ```c main(argc, argv) int argc; char** argv; { /* ... */ } ```
2023-11-02 07:43:53
That's nethack style!
2023-11-02 07:44:50
Well they call that K&R style function declaration
2023-11-02 07:46:05
I guess every developer's dream would be KNF style
2023-11-02 07:46:20
https://man.openbsd.org/style
lonjil
2023-11-02 07:53:17
NetHack dropped K&R C support a while ago
Demiurge
2023-11-02 10:14:32
In the unreleased development branch, they are currently in the process of rewriting the function definitions to be ANSI style.
2023-11-02 10:15:55
On git. They haven't actually released a version of nethack that doesn't have k&r style functions yet. And it looks kind of quaint. :)
2023-11-02 10:16:16
Lets you know you're working on a project from another era
2023-11-02 10:16:40
Or, as they say, hacking
2023-11-02 10:17:49
Still... Would be nice to have an openBSD-ified libjxl :)
lonjil
2023-11-02 10:40:43
do you actually do any programming?
Demiurge
2023-11-02 11:36:05
I try to avoid it if I can. The best code seems to be no code at all.
yoochan
2023-11-03 01:26:54
when you have nothing to do, no code is perfect
Nova Aurora
yoochan when you have nothing to do, no code is perfect
2023-11-03 04:54:46
<:YEP:808828808127971399> Nocode is perfect https://github.com/kelseyhightower/nocode
Demiurge
2023-11-04 03:52:06
Hey, fewer LOC is less wasted time, and time is valuable...
2023-11-04 03:53:41
Obviously that can be taken to an extreme but, I feel like if you need to implement software, you should keep it as obvious and straightforward as possible, and keep the time spent monkeying with it to a minimum. But that's just obvious common sense.
2023-11-04 03:55:32
That's why I think C++ is such a terrible language. So much wasted time trying to understand the language itself rather than the actual thing you're working on.
Oleksii Matiash
Demiurge That's why I think C++ is such a terrible language. So much wasted time trying to understand the language itself rather than the actual thing you're working on.
2023-11-04 07:38:25
I'd agree with it. I used to java/kotlin at Android, but month ago I finally decided to write small app for PC (actually rewrite my another python console app to GUI). The obvious choice for me was C#, and the prototype was ready soon, but it appeared much slower than the python version, because they used numpy (written in C, afaik) and .net analogue. So I decided to switch to QT and C++. And it is pain.. 😔
2023-11-04 08:45:50
Btw, can someone suggest lib to read DNG metadata? Preferably not exiv2
spider-mario
2023-11-04 11:38:58
https://www.reddit.com/r/photography/comments/17npmb4/tifu_shot_my_whole_vacation_in_jpg/
Oleksii Matiash
spider-mario https://www.reddit.com/r/photography/comments/17npmb4/tifu_shot_my_whole_vacation_in_jpg/
2023-11-05 07:59:27
I'd be totally frustrated if this happened to me. Luckily my camera(s) don't have jpeg option, only raw, only hardcore 😅
diskorduser
Oleksii Matiash I'd be totally frustrated if this happened to me. Luckily my camera(s) don't have jpeg option, only raw, only hardcore 😅
2023-11-05 12:06:19
What camera is that
Oleksii Matiash
diskorduser What camera is that
2023-11-05 12:20:59
Various old digital backs
Traneptora
2023-11-05 10:37:29
personally I'm a fan of
2023-11-05 10:37:43
```c int main(int argc, char **argv) { // foo } ```
2023-11-05 10:37:53
but most people prefer the `{` on a separate line
Pieter
Traneptora ```c int main(int argc, char **argv) { // foo } ```
2023-11-05 10:57:01
Woooh, 3-space indendation?
Traneptora
2023-11-05 11:04:50
well, no, 4
2023-11-05 11:05:08
just made a typo there
MSLP
Traneptora ```c int main(int argc, char **argv) { // foo } ```
2023-11-05 11:14:38
do you think `{` on separate line is a relic from K&R syntax?
spider-mario
2023-11-05 11:17:31
https://youtu.be/FdldD0-kEcc?t=2m14s well hello, 1931 xy chromaticity diagram, didn’t expect to see you there
2023-11-05 11:17:44
(okay, the thumbnail should have given it away)
2023-11-05 11:17:58
(although that looks more like the 1976 one)
lonjil
MSLP do you think `{` on separate line is a relic from K&R syntax?
2023-11-05 11:25:31
it is, AFAIK
2023-11-05 11:25:56
I use separate line for functions and same line for everything else.
bonnibel
2023-11-05 11:51:06
i use one line per character and then just rotate my monitor sideways
afed
2023-11-06 12:04:49
av1 block copy is similar to jxl patches? https://youtu.be/Z4DS3jiZhfo?t=3749
2023-11-06 12:05:08
2023-11-06 12:05:16
2023-11-06 12:10:48
and palette coding doesn't look very complicated and it seems to be enough for av1 to be so effective in lossy with lines and low-color images
2023-11-06 12:12:08
jonnyawsom3
2023-11-06 02:44:24
Seems similar, although he mentions in AV1 it's restricted to I-frames and roughly 50% of the picture
_wb_
2023-11-07 02:09:04
Yes, patches and intra block copy is similar, main difference being that patches are always taken from a _previous_ frame, not the current one. So repetitive patterns have to be stored in a separate invisible patch frame (like a sprite sheet) and then they can be used in the 'real' frame. Main advantage of this approach is that you can e.g. use Modular for the patch frame and VarDCT for the 'real' frame. Probably there is room for generalizing our current patch detection by applying some of the tricks from video encoders...
2023-11-07 02:15:06
Palette in AV1 is quite limited, max 8 colors and I dunno how they encode the palettized block but probably in a relatively simple way (compared to jxl modular). In VarDCT JXL, there is no notion of a palette block and libjxl is currently not doing anything like that, but it would be possible to use patches to do something like that, but with more options (not limited to 8 colors, could use delta palette, etc) and with better entropy coding...
fab
2023-11-07 05:06:33
Where is the av2 part on that video?
Jyrki Alakuijala
2023-11-08 09:29:12
HE codec for h265 seems to do fuzzy block coding -- in one of the test images I had windows on a block building, one of the windows had a flower pot on the window sill before compression. Compression reused that window to another window, and another window got a flower, too. I just don't like this kind of stuff being done. Innocents will go to prison if such things are used as evidence.
jonnyawsom3
2023-11-08 05:05:33
Do you have the files?
MSLP
Jyrki Alakuijala HE codec for h265 seems to do fuzzy block coding -- in one of the test images I had windows on a block building, one of the windows had a flower pot on the window sill before compression. Compression reused that window to another window, and another window got a flower, too. I just don't like this kind of stuff being done. Innocents will go to prison if such things are used as evidence.
2023-11-08 05:20:42
Similar to Xerox scannersJBIG2 problem? I hope some JPEG XL encoder in the future won't end up with the same issue using patches.
bonnibel
2023-11-08 06:44:28
btw running butteraugli on the cid22 validation set gets me loads of libpng warnings for "known incorrect sRGB profile", is that like. an issue
_wb_
bonnibel btw running butteraugli on the cid22 validation set gets me loads of libpng warnings for "known incorrect sRGB profile", is that like. an issue
2023-11-09 08:39:49
you can ignore it, I dunno how this happened but all the images are supposed to be just sRGB
acedent
2023-11-09 12:04:24
Not sure if anyone is following the work on `png` v3 spec?
2023-11-09 12:04:38
Just posted an open question: Why? https://github.com/w3c/PNG-spec/issues/370
2023-11-09 12:05:21
There is a lot of work on color rendering, HDR, etc. .... all ultimately duplicating JXL ...!?
2023-11-09 12:05:58
At the risk of upsetting people, would love to understand the reasoning behind this endeavour ...?
2023-11-09 12:10:33
Wondered what the perspective is from the JXL side? 🤔
yoochan
2023-11-09 12:23:21
nice initiative
2023-11-09 12:27:51
it state : with the enormous installed base of PNG images is considered paramount, so non-backwards-compatible changes such as a better compression method, are out of scope in the charter. https://github.com/w3c/PNG-spec/blob/main/Third_Edition_Explainer.md
2023-11-09 12:28:28
I don't understand how they plan to add hdr with backward compatibility...
veluca
2023-11-09 12:49:30
I assume cICP chunk that overrides ICC and an ICC that does tonemapping
2023-11-09 12:49:36
that should give reasonable results
acedent
veluca I assume cICP chunk that overrides ICC and an ICC that does tonemapping
2023-11-09 01:07:56
But... why? I 💙 png. But surely this is all covered by lossless JXL?...
veluca
2023-11-09 01:08:28
Backwards compatibility is kinda useful though
2023-11-09 01:08:34
As in, graceful degradation
2023-11-09 01:09:44
Also it's a much smaller change
2023-11-09 01:10:03
And it allows doing nice things such as decoding Jxl to an HDR png in a polyfill
acedent
veluca Backwards compatibility is kinda useful though
2023-11-09 01:10:50
Perhaps more philosophical... I personally see it as the 'gambler's fallacy'... at some point, we need to adopt the new tech. Would you also advocate adding HDR to GIF...?
veluca
2023-11-09 01:11:11
Nah, one HDR format that is easy to use and generate is enough 😉
2023-11-09 01:11:23
And png is the obvious choice as it supports 16 bits
2023-11-09 01:11:41
And nothing else does
acedent
2023-11-09 01:11:51
PAM ...?
2023-11-09 01:11:54
😉
veluca
2023-11-09 01:12:11
*format decoded by a browser 😉
Quackdoc
2023-11-09 01:13:12
and here I was about to say exr :D
veluca
2023-11-09 01:13:42
As it stands, adding hdr-png support to chrome was a mostly uncontroversial 20 line change (or thereabouts)
2023-11-09 01:14:48
And now you can use wasm to convert a Jxl to a (a)png and display it as HDR without too much pain
2023-11-09 01:16:16
The only alternative IIRC would be HDR canvas, but that has its own problems - I believe they have been arguing on how to do that for a couple of years
Quackdoc
2023-11-09 01:17:51
well wasm will always be not fun, because browsers suck, just using the jxl wasm on a page that loads a lot of images is... well chrome will freeze the page, firefox will run willy nilly until it either crashes, or gets killed by something else
Cacodemon345
2023-11-09 01:45:05
I wish they also went for a chunk to indicate the 16-bpc data in PNG being not integers but half-floats.
2023-11-09 01:45:21
Although that would go against backwards compatibility.
_wb_
2023-11-09 02:50:13
there's not much difference imo between using integers + nonlinear transfer function and using floats + linear...
spider-mario
2023-11-09 03:20:20
in some cases, we could possibly even get away with 16-bit linear integers
2023-11-09 03:20:28
raw files typically have less than that
2023-11-09 03:21:27
(although fixing the upper bound to be 10000 cd/m² kind of works against that)
Traneptora
acedent Just posted an open question: Why? https://github.com/w3c/PNG-spec/issues/370
2023-11-13 05:50:22
PNG has ubquitous support and is extraordinarily simple to decode, so adding metadata like cICP is fantastic for testing JXL decoders and other things
2023-11-13 05:50:39
since all the new additions are just extra metadata chunks
spider-mario
2023-11-13 09:11:22
yes, it’s been quite useful for us
2023-11-13 09:12:45
as a matter of fact, <@179701849576833024> and I have contributed to making Chrome read those metadata https://crrev.com/c/3705739 https://crrev.com/c/4748191
Traneptora
2023-11-14 03:36:39
and I added cICP support to FFmpeg in part to test the libjxl plugin
username
2023-11-14 11:49:51
would be nice if WebP had cICP, Is there anything preventing that from becoming a reality? unless I'm misunderstanding what RIFF is for or capable of?
2023-11-14 11:53:41
I haven't actually read the RIFF spec is it capable of storing arbitrary chunks?
CrushedAsian255
2023-11-15 10:09:28
does WebP use RIFF?
2023-11-15 10:11:23
oh so it does
2023-11-15 10:11:40
Jyrki Alakuijala
2023-11-17 01:22:15
if only cIPC would support XYB 🙂
2023-11-17 01:23:00
I think now we need to some conversions between colorspaces, only for further conversions to happen later -- unnecessary (minor) delays
2023-11-17 01:23:48
or have a full color ICC profile there
2023-11-17 01:24:38
(I don't know colorspace management -- I could be completely off here -- I just love XYB and that's it :-D)
Traneptora
2023-11-18 02:12:56
each cICP space is explicitly RGB or some matrix transform of RGB
2023-11-18 02:13:19
so nonlinear transforms of RGB won't work
2023-11-18 02:14:42
notably, XYB doesn't define primaries
2023-11-18 02:15:16
tho you could always use sRGB primaries, a custom TRC and a custom matrix
2023-11-18 02:15:46
but XYB explicitly defines how out of gamut colors behave
2023-11-18 02:16:07
and H.273 does not
Eugene Vert
2023-11-18 02:19:51
An interesting c++ DSL for image processing with separation of algorithm and schedule (order/vectorization/locality) https://halide-lang.org/
HCrikki
2023-11-18 10:10:34
is there an online live comparator between formats that leverages recent jxl code? afaik Sqoosh and Eclipseo in particular still runs old jxl (0.3.7!) alongside other codecs and doesnt seem to be representative of current state and may contribute to misleading impressions about merits
afed
2023-11-20 11:12:16
<@794205442175402004> i saw a discussion about ssimulacra in OBS discord in 2.1 version should always be 100 for the identical images/frames or there may be some rounding errors or color conversion errors in tools or avs implementation?
2023-11-20 11:12:35
<https://github.com/cloudinary/ssimulacra2/issues/10>
_wb_
2023-11-20 11:14:48
identical inputs should give a score of 100 in ssimulacra 2.1 — how are the inputs being passed and which implementation of ssimulacra 2.1 is this?
afed
2023-11-20 11:16:13
looks like this port `Updated SSIMULACRA2 to 2.1.` <https://github.com/Asd-g/AviSynthPlus-ssimulacra>
2023-11-20 11:17:39
but, the default settings are weird, there's even a mix of the two versions
_wb_
2023-11-20 11:20:54
I answered in the issue — looks like there's some issue with the port then...
afed
2023-11-20 12:29:06
seems something is wrong only for avs implementation: ssimulacra2_rs ```ssimulacra2_rs image 284050535-1e1e600b-c154-40ca-8f07-acb1b628af9d.png 284050535-1e1e600b-c154-40ca-8f07-acb1b628af9d.png Score: 100.00000000 ssimulacra2_rs image 284050536-b464d209-8359-41da-9da5-b3679d2b1b9d.png 284050536-b464d209-8359-41da-9da5-b3679d2b1b9d.png Score: 100.00000000 ssimulacra2_rs image 284050537-441e867b-3a3c-4ff0-9cb0-7ca757a6b30c.png 284050537-441e867b-3a3c-4ff0-9cb0-7ca757a6b30c.png Score: 100.00000000```
w
2023-11-20 01:06:26
vs users winning
Quackdoc
2023-11-20 06:37:05
ssimulacra2_rs has some inconsistencies with the C version. it's good to keep that in mind, however score is usually around an error of 1 or 2 points, worst case iirc was like 4 points
novomesk
2023-11-22 05:56:02
When some of the KDE apps are built for Windows, "Craft" build system is used ( https://community.kde.org/Craft#Setting_up_Craft ). This build system uses some python scripts to build individual libraries. Example of the build script: https://invent.kde.org/packaging/craft-blueprints-kde/-/blob/master/libs/libidn/libidn.py So far nobody contributed script for libjxl, that's why kimageformats is built without JXL. Is someone with python (and/or Craft) knowledge willing to help to prepare the script?
Cacodemon345
2023-11-22 05:58:49
Imagine JXL support being exclusive to Steam Deck devices, lol.
MSLP
novomesk When some of the KDE apps are built for Windows, "Craft" build system is used ( https://community.kde.org/Craft#Setting_up_Craft ). This build system uses some python scripts to build individual libraries. Example of the build script: https://invent.kde.org/packaging/craft-blueprints-kde/-/blob/master/libs/libidn/libidn.py So far nobody contributed script for libjxl, that's why kimageformats is built without JXL. Is someone with python (and/or Craft) knowledge willing to help to prepare the script?
2023-11-22 06:54:29
Sorry, I don't know how to handle missing dependencies (libhighway) in craft, and don't have an environment to play with craft. Maybe also libhighway package will need to be created The build options provided are minimal This is based on <https://invent.kde.org/packaging/craft-blueprints-kde/-/blob/master/libs/exiv2/exiv2.py>
2023-11-22 06:55:09
```python import info class subinfo(info.infoclass): def setTargets(self): for ver in ["0.8.2"]: self.targets[ver] = f"https://github.com/libjxl/libjxl/archive/refs/tags/v{ver}.tar.gz" self.archiveNames[ver] = f"v{ver}.tar.gz" self.targetInstSrc[ver] = f"libjxl-{ver}" self.targetDigests["0.8.2"] = (["c70916fb3ed43784eb840f82f05d390053a558e2da106e40863919238fa7b420"], CraftHash.HashAlgorithm.SHA256) self.svnTargets["master"] = "https://github.com/libjxl/libjxl.git" self.description = "a library for decoding/encoding JPEG XL (aka JXL) image format." self.defaultTarget = "0.8.2" def setDependencies(self): #self.buildDependencies["libs/libhwy"] = None ## FIXME: libhighway is not provided by KDE craft system self.runtimeDependencies["libs/brotli"] = None self.runtimeDependencies["libs/lcms2"] = None ## FIXME: libjxl-0.8.2 require at least lcms2-2.13 self.runtimeDependencies["virtual/base"] = None from Package.CMakePackageBase import * class Package(CMakePackageBase): def __init__(self, **args): CMakePackageBase.__init__(self) self.subinfo.options.configure.args += ["-DCMAKE_BUILD_TYPE=Release -DJPEGXL_FORCE_SYSTEM_LCMS2=1 -DJPEGXL_ENABLE_SKCMS=0 -DJPEGXL_ENABLE_SJPEG=0 -DJPEGXL_ENABLE_JPEGLI=0 -DJPEGXL_ENABLE_BENCHMARK=0 -DJPEGXL_ENABLE_DOXYGEN=0 -DJPEGXL_ENABLE_EXAMPLES=0 -DJPEGXL_ENABLE_JNI=0 -DJPEGXL_ENABLE_MANPAGES=0 -DJPEGXL_ENABLE_OPENEXR=0 -DJPEGXL_ENABLE_TOOLS=0 -DBUILD_TESTING=0"] ```
2023-11-22 06:56:18
also I'm not sure how to specify minimal dependencies in craft
2023-11-22 07:16:40
edit: added `self.runtimeDependencies["virtual/base"] = None` as many libraries seem to require it
Demiurge
Traneptora notably, XYB doesn't define primaries
2023-11-23 02:46:26
I thought the primaries are supposed to be whatever your cone cells are supposed to respond to... but that probably varies from person to person...
Traneptora
Demiurge I thought the primaries are supposed to be whatever your cone cells are supposed to respond to... but that probably varies from person to person...
2023-11-23 03:01:30
XYB is based on a transform of linear BT.709 but it's an absolute space
2023-11-23 03:01:50
since all linear RGB spaces are linear transforms of one another, it doesn't particularly matter that it uses the bt709 primaries
2023-11-23 03:02:38
my point was tho unlike RGB spaces, absolute spaces like xyY, XYZ, and XYB don't define primaries
2023-11-23 03:03:17
XYB isn't quite as absolute as XYZ though, as peak intensity must be defined separately
damian101
Demiurge I thought the primaries are supposed to be whatever your cone cells are supposed to respond to... but that probably varies from person to person...
2023-11-23 01:07:52
cone cell responses overlap...
spider-mario
Traneptora XYB isn't quite as absolute as XYZ though, as peak intensity must be defined separately
2023-11-23 04:26:54
it can be derived from the XYB signal
2023-11-23 04:27:06
the same luminance is always mapped to the same XYB value
2023-11-23 04:27:26
“the maximum ever in this image is 3000” is not strictly needed theoretically
2023-11-23 04:27:42
if anything, it’s arguably more absolute than XYZ, which is often relative to SDR white
Traneptora
spider-mario it can be derived from the XYB signal
2023-11-23 04:28:28
I was under the impression that 1.0f wasn't always mapped to the same number of nits
spider-mario
2023-11-23 04:29:03
that’s true of the linear sRGB signal that comes back from decoding XYB in libjxl, but only because then we divide by intensity_target
Traneptora
2023-11-23 04:29:56
XYB = (0, 1.0f, 0) has a fixed number of nits it represents? interesting
spider-mario
2023-11-23 04:30:43
https://github.com/libjxl/libjxl/blob/ab5c248ff3127a2c9b623d15e3345684e85a9768/lib/jxl/opsin_params.cc#L42
Traneptora
2023-11-23 04:31:03
I know we divide by intensity target but I was under the impression that's why intensity target has to be defined separately
2023-11-23 04:31:36
iirc SDR white is typically 203 nits with a 1000:1 contrast ratio, so why do we use 255, anyway?
spider-mario
2023-11-23 04:33:15
203 is HDR “reference white”
2023-11-23 04:33:26
BT.2408 has a note that says: > The signal level of “HDR Reference White” is not directly related to the signal level of SDR “peak white”.
2023-11-23 04:34:33
iirc, we use ~250 because that’s approximately the luminance of the monitor that was used to tune it? but <@532010383041363969> probably knows in more detail
2023-11-23 04:35:14
and then, I think we used specifically 255 because we encoded the linear signal between 0 and 255 at the time (as if it was 8-bit values, but floating-point) instead of 0-1, and at some point we thought “it would be nice to make this coincide with nits”
2023-11-23 04:37:31
around that time, I believe that we also had it not normalised by intensity_target, so it coincided with nits even with non-default intensity target
2023-11-23 04:37:42
(otherwise there would have been little point)
Demiurge
cone cell responses overlap...
2023-11-23 08:44:44
I know...
Jyrki Alakuijala
2023-11-26 05:34:06
The 2015 or so NEC photo monitor that I used to build butteraugli with had a max of 250 nits, so I used that for all experiments to have some coverage of HDR range
2023-11-26 05:35:44
When Jan was working on it, he "corrected" the 250 to 255 and I didn't think it was that big of a discrepancy to need fixing so it grew automatically from 250 to 255
2023-11-26 05:36:34
When Sami took over the responsibility for these things, I believe he returned the default to 250
Lemenus
2023-11-26 05:01:26
Hi, is there any way to make windows 10 use jxl pics as wallpapers?
Cacodemon345
2023-11-26 05:12:48
Nope.
VEG
2023-11-26 06:45:56
Maybe it will support it if a WIC codec is installed (just a guess)
username
Lemenus Hi, is there any way to make windows 10 use jxl pics as wallpapers?
2023-11-26 07:02:49
Yes there is a way, First make sure you have [jxl-winthumb](https://github.com/saschanaz/jxl-winthumb) setup/registered and then use this .reg file and the option "Set as desktop background" will appear on JXL files
Cacodemon345
2023-11-26 07:03:17
You can't open it in Photos though.
username
2023-11-26 07:04:00
Photos app is bad though it doesn't allow the use of any third party WIC codecs at all
2023-11-26 07:04:19
I think it might also reject some first party WIC codecs as well but I don't remember
AAC (damywise.com) Compression
2023-11-27 03:32:31
Also HDR images look dull.
2023-11-27 03:33:06
*maybe only on non-hdr displays. I don't have one.
w
2023-11-27 03:33:31
the photos app is the only app that supports windows advanced color
2023-11-27 03:33:43
and also the only app that can do cross display color management
Quackdoc
2023-11-27 03:34:56
too bad windows advanced color isnt worth half a damn xD, there is a reason why people still rely on stuff like SDI cards for windows and linux. only osx has a platform level colormanagment solution that isnt a joke
w
2023-11-27 03:35:16
windows advanced color is great
Quackdoc
2023-11-27 03:37:20
windows advanced color can handle colorspace conversion only when it's in the same luminance type, it can't do tone mapping worth half a damn, so using it to consume HDR on SDR or SDR on HDR is bad
2023-11-27 03:37:41
even android can do tonemapping now lmao
w
2023-11-27 03:38:17
well tone mapping is completely subjective
2023-11-27 03:38:23
it's not correct
Quackdoc
2023-11-27 03:38:39
sure, but objectively any tonemapping is better then no tonemapping
2023-11-27 03:38:59
even if it's a dumb 1:203 tonemap
w
2023-11-27 03:39:10
umm sure
Quackdoc
2023-11-27 03:39:17
ofc we have standards like bt 2446a
w umm sure
2023-11-27 03:39:45
a "white" srgb image designed for an 80 nit display, would blast 10000 nits of brightness at you without it on a "perfect" display
2023-11-27 03:39:57
it's not an optional thing, it's a requirement
w
2023-11-27 03:40:06
what are you talking about
Quackdoc
2023-11-27 03:40:47
SDR images on HDR display
AAC (damywise.com) Compression
AAC (damywise.com) Compression Also HDR images look dull.
2023-11-27 03:41:32
Speaking of dull, I made a wrapper for jxl-oxide. Currently it looks like this (The colors are very off). What I did was applying saturation, exposure, and gamma to the decoded image. Any ideas on how to improve this? (Left is from the wrapper with applied saturation/exposure/gamma, Right is native apple jxl decoding)
Quackdoc
AAC (damywise.com) Compression Speaking of dull, I made a wrapper for jxl-oxide. Currently it looks like this (The colors are very off). What I did was applying saturation, exposure, and gamma to the decoded image. Any ideas on how to improve this? (Left is from the wrapper with applied saturation/exposure/gamma, Right is native apple jxl decoding)
2023-11-27 03:42:21
can you elaborate a bit more?
2023-11-27 03:42:37
your pipeline I mean
AAC (damywise.com) Compression
2023-11-27 03:42:40
I can elaborate with a whole repository, if you want.
Quackdoc
2023-11-27 03:43:11
sure I guess but generally, what are you trying to accomplish, SDR on HDR? gamut mapping? etc
AAC (damywise.com) Compression
2023-11-27 03:43:56
I have no idea about any of those, I just want to load HDR image on a non-HDR display, but make it so it doesn't look dull.
Quackdoc
2023-11-27 03:44:46
ah I see, I think jxl-oxide has tonemapping support, but im not sure color conversion stuff is availible in jxl-dec
2023-11-27 03:45:29
are you working with jxl-oxide directly or jxl-dec?
AAC (damywise.com) Compression
2023-11-27 03:45:42
just jxl-oxide
Quackdoc
2023-11-27 03:47:00
ah sorry, I mean using the crate or the binary. if it's using the crate iirc you can do the color correction directly from jxl-oxide, if it's the binary... Im not too sure atm
AAC (damywise.com) Compression
2023-11-27 03:48:22
I'm using the crate currently, not sure what binary is, I'm very new to rust so, yeah that's that.
Quackdoc
2023-11-27 03:49:00
the crate means you are programming in rust and using jxl as a library, the binary means you compiled jxl-oxide directly and invoke it using jxl-dec
AAC (damywise.com) Compression
2023-11-27 03:49:31
I see, yeah I'm using the crate.
samOAK
2023-12-03 12:37:00
cool [repo review](https://githubnext.com/projects/repo-visualization): https://mango-dune-07a8b7110.1.azurestaticapps.net/?repo=libjxl%2Flibjxl
yurume
2023-12-03 04:27:40
continued from https://discord.com/channels/794206087879852103/804324493420920833/1180652506259411074: there does exist rapidgzip that works for virtually all reasonable deflate stream
2023-12-03 04:27:53
https://github.com/mxmlnkn/rapidgzip
2023-12-03 04:28:40
it doesn't support all possible streams, but it works for all streams that have been produced by reasonable or trivial compressors
2023-12-03 04:30:59
the main limitation AFAIK is that it speculatively starts at all possible bit position, so intermediate huffman trees should be optimal to filter enough false positives to be effective
damian101
2023-12-05 08:14:08
just make png the default ffs
veluca
2023-12-05 09:58:50
I am not sure why anybody would ever use AVIF lossless mode
Traneptora
just make png the default ffs
2023-12-05 10:46:15
png writing is pretty slow, doesn't make sense to use it as the default
2023-12-05 10:46:26
the default of legacy JPEG makes sense
jonnyawsom3
2023-12-05 11:02:26
Yesterday I noticed a friend uploaded a 50MB PNG to Discord, I asked them why they had it uncompressed and they said it was fast, I explained even a tiny bit would've massively decreased the size... An hour later they uploaded a 63MB PNG too...
username
Yesterday I noticed a friend uploaded a 50MB PNG to Discord, I asked them why they had it uncompressed and they said it was fast, I explained even a tiny bit would've massively decreased the size... An hour later they uploaded a 63MB PNG too...
2023-12-05 11:14:39
~~what software are they using that's pumping out PNGs of that size?~~ fast in what way? if they mean to create the PNGs files then that hurts to hear because taking a extra second to make something noticeably smaller is pretty important to me since I have lived my whole life with awful internet and can't even pay for a better plan because it's just not provided where I live. Also I know that a lot of software exposes 9 levels of PNG compression and I have seen some people just move the slider in a random direction and then never touch it again without looking at how much it affects things
jonnyawsom3
username ~~what software are they using that's pumping out PNGs of that size?~~ fast in what way? if they mean to create the PNGs files then that hurts to hear because taking a extra second to make something noticeably smaller is pretty important to me since I have lived my whole life with awful internet and can't even pay for a better plan because it's just not provided where I live. Also I know that a lot of software exposes 9 levels of PNG compression and I have seen some people just move the slider in a random direction and then never touch it again without looking at how much it affects things
2023-12-05 11:47:21
They were 4K 64bit, so uncompressed (or lowest compression) meant almost 64MB. I'll add there was no transparency in the image too... No clue, I tried to ask but they just got confused and eventually said they have 3TB free so it doesn't matter to them I even got the 64MB file down to 500KB by reducing it to 24bit, they said it was slightly brighter (As expected) but they couldn't tell the difference otherwise
2023-12-05 11:48:49
Ah, looking back at my conversation with them, I think it's a bad habit from using lossy compression. They said they set it low because they wanted to edit it later
2023-12-05 11:50:49
Oh, and they picked 64bit because they have a HDR display... Even though it's just a normal PNG, so it's actually the fact it's OLED and the background was black that did all the work
DZgas Ж
just make png the default ffs
2023-12-05 02:01:01
android has been using jpeg instead of png for a screenshot of the screen for a long time it is for the reason that for a large screen it turned out to be much more profitable to use jpeg both in encoding speed and decoding speed, it is better than png
2023-12-05 02:02:58
🙂 especially I personally did tests for decoding giant images, and it turned out that the best solution is baseline jpeg
jonnyawsom3
2023-12-05 02:05:35
My phone still does PNG, though I noticed when directly sharing an image from telegram to discord via the apps, it seemed to re-compress Telegram's jpeg with nearest neighbour to 720p from 1080p and quality 40 encoding (Based on what Ssimulacra2 said comparing to the original)
Quackdoc
DZgas Ж android has been using jpeg instead of png for a screenshot of the screen for a long time it is for the reason that for a large screen it turned out to be much more profitable to use jpeg both in encoding speed and decoding speed, it is better than png
2023-12-05 02:05:58
This is something roms change, default is actually PNG in aosp
damian101
DZgas Ж android has been using jpeg instead of png for a screenshot of the screen for a long time it is for the reason that for a large screen it turned out to be much more profitable to use jpeg both in encoding speed and decoding speed, it is better than png
2023-12-05 02:08:37
over all the years I have used Android, screenshots were always PNG