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

libjxl

KAGAMI
2021-05-22 02:05:23
Heh, the last commit strongly suggests the private repo is in GitHub
2021-05-22 02:10:57
Thanks, did a quick search and that's: https://discord.com/channels/794206087879852103/822105409312653333/844555374999765022
veluca
2021-05-22 02:12:01
I don't want to promise anything, but I think somewhere around next week we'll have a github repo ๐Ÿ™‚
KAGAMI
2021-05-22 02:12:44
Will the sync to GitLab stop then?
veluca
2021-05-22 02:13:01
nah, they'll be mirrored AFAIU
KAGAMI
2021-05-22 02:13:05
Cool
veluca
2021-05-22 02:13:30
and I think we'll keep mirroring it to the private gitlab 'til we figure out how to run the full CI on github
2021-05-22 02:14:07
probably github, but I think we'll either migrate the bugs or just disallow opening new ones and close the old ones as they get fixed
KAGAMI
2021-05-22 02:15:04
BTW, why move to github when started in gitlab? ๐Ÿ‘€
veluca
2021-05-22 02:21:23
because of stuff that I don't fully understand but it makes it easier to accept external contributions
2021-05-22 02:21:39
it started in gitlab because at the time github didn't have free private repos and ISO needed that
2021-05-22 02:24:11
I ran into a bug in the Chromium development tools that was caused by branch name renaming -_-
2021-05-22 02:24:26
made me lose one hour or so
fab
2021-05-22 02:26:06
like what is the thing more difficult to get right?
2021-05-22 02:26:43
why is the development a bit slow
2021-05-22 02:26:51
other than the decoder
2021-05-22 02:26:57
and the patches
2021-05-22 02:27:05
talking about the lossy encoder
2021-05-22 02:27:24
what is the problems you run up with?
veluca
2021-05-22 02:28:23
You don't have to convince me
fab what is the problems you run up with?
2021-05-22 02:29:07
Just a lot of complicated logic
2021-05-22 02:29:47
It's not hard per se, just complex to get right
_wb_
2021-05-22 02:39:05
It looks like a question but I have no idea how to parse it
2021-05-22 02:39:54
When you go higher than oddly specific q 63.52 -> you mean set a higher quality?
2021-05-22 02:40:49
You'll get jpg looking artificial -> you mean you somehow get more artifacts at a higher quality setting than at a lower one?
2021-05-22 02:42:32
At the moment at least there is no difference between jpg or png input if you pick a specific lossy quality: it will start from the pixels and do the same thing
2021-05-22 02:42:41
Only lossless jpg is something else
2021-05-22 02:43:35
I suppose we could do something at the dct coefficients level too to do lossy jpg recompression, but we currently don't and there are no plans to implement that anytime soon
2021-05-22 02:44:10
New heuristics is an experimental thing that is for now just for testing
2021-05-22 02:45:04
We aim to keep the meaning of d X or q X the same when we do optimizations
fab
2021-05-22 02:45:12
yes i know; usually you make the table
2021-05-22 02:45:18
to choose an heuristic
2021-05-22 02:45:26
the one with those colored squares
_wb_
2021-05-22 02:46:16
At faster speeds, more things are heuristics based so there is less guarantee that the quality target is actually reached
2021-05-22 02:47:13
At slower speeds, more things are search based so there is more guarantee that the target is reached
2021-05-22 02:47:49
BUT the target is only an objective metric, a good one but still, no objective metric is perfect.
fab
2021-05-22 02:48:07
yes but digiting only q 65 s 9
2021-05-22 02:48:10
is simpler to do
2021-05-22 02:48:14
than a whole long command
_wb_
2021-05-22 02:48:37
So reaching the objective metric target is not a guarantee that subjectively it will be perfect
fab
2021-05-22 02:48:54
ok
_wb_
2021-05-22 02:49:09
For now, default speed, default options is the best tested and most reliable way to encode
fab
2021-05-22 02:49:13
as long it looks good with png
_wb_
2021-05-22 02:49:32
Just cjxl -q 80 or whatever target you like
fab
2021-05-23 04:33:40
-Q 94.3 --dots=0 --intensity_target=194 --use_new_heuristics
_wb_
2021-05-25 03:20:57
I want to add something faster than -s falcon, what should I call it?
2021-05-25 03:21:04
there are no animals faster than a falcon
2021-05-25 03:21:15
-s airplane ?
Nova Aurora
2021-05-25 03:21:49
-s helicopter?
2021-05-25 03:22:16
-s peregrine? (that could get confusing though)
_wb_
2021-05-25 03:24:32
I was thinking airplane for -e 2 and maybe later rocket for -e 1 or something
2021-05-25 03:24:53
<@!532010383041363969> opinions please ๐Ÿ™‚
Scope
2021-05-25 03:25:48
I think that the choice of non-animal names would create more confusion
BlueSwordM
_wb_ -s airplane ?
2021-05-25 03:26:02
`-s tesla`
Nova Aurora
Scope I think that the choice of non-animal names would create more confusion
2021-05-25 03:26:15
Then we would have to rename current options though
2021-05-25 03:26:44
I said helicopter to open up airplane and rocket for further evolution
improver
2021-05-25 03:27:44
photon-in-vacuum
Nova Aurora
2021-05-25 03:28:50
Alcubierre-drive
Scope
2021-05-25 03:29:55
Or shift names so the hawk is still the fastest
_wb_
2021-05-25 03:31:11
Shifting names might be confusing, at least if everything changes meaning
2021-05-25 03:31:55
Maybe if it's only falcon that shifts and there's an animal between falcon and cheetah it could be ok
2021-05-25 03:32:26
Still, I prefer to keep falcon to tortoise as they are, and have new names for new things
Scope
2021-05-25 03:38:28
Yep, but if making this changes, it is better to do it earlier while JXL is not so much used and also I am not sure that the names are very often chosen for scripts and other things (so there is little chance that it will break something)
veluca
2021-05-25 03:39:24
-s unicorn? ๐Ÿ˜›
_wb_
2021-05-25 03:40:07
Are unicorns fast?
2021-05-25 03:40:13
Pegasus?
2021-05-25 03:41:21
Shadowfax? That's Gandalf's horse, should be quite fast
veluca
2021-05-25 03:41:24
I guess it depends on the mythology/fantasy world you subscribe to ๐Ÿ˜›
2021-05-25 03:41:44
like with harry potter you can go -s phoenix since they teleport
Scope
2021-05-25 03:42:58
We also need names for the other fast speeds: 0(?), 1, 2 (even if they do not exist, so as not to have problems later)
veluca
2021-05-25 03:48:13
phoenix can be 0, unicorn 1 or 2, and I don't know about the middle ๐Ÿ˜›
Scope
2021-05-25 03:50:10
Pegasus is also ok, the only problem is knowing which of these creatures is faster Shadowfax is complicated, not everyone and everywhere remembers this name (in other languages it may be in translation)
Crixis
2021-05-25 03:50:20
pegaso >> unicorn
2021-05-25 03:50:38
damn 1 moment early
veluca
2021-05-25 03:52:58
https://github.com/libjxl/libjxl keep an eye here! ๐Ÿ˜›
_wb_
2021-05-25 04:01:10
For VarDCT, s 3 is already about as fast as it gets, so I will propose to shift that to s 2 and make s 3 something in between the current s 3 and s 4
2021-05-25 04:01:31
For Modular, a faster s 2 is possible
2021-05-25 04:02:26
If you just want to use jxl as a temporary local storage format (a mildly compressed ppm with embedded icc profile, basically) then s 2 will be nice
2021-05-25 04:02:39
(or maybe s 1)
BlueSwordM
veluca https://github.com/libjxl/libjxl keep an eye here! ๐Ÿ˜›
2021-05-25 04:04:03
How come you people uploaded a new build to Github?
2021-05-25 04:04:16
What advantages does doing stuff on Github give over Gitlab?
veluca
2021-05-25 04:06:39
tldr: CLA
2021-05-25 04:07:02
also it gives us an excuse to not put it under wg1/, but that's minor ๐Ÿ˜›
2021-05-25 04:07:47
and I think it also has some "more internally approved" ways to publish binaries for releases, but don't quote me on that
Scope
2021-05-25 04:09:16
-s 1/2 supersonic, -s 0/1 light? <:Thonk:805904896879493180> (not animals, but easier to remember) At least it is something not technological, for example the speed of vehicles, trains, planes, rockets became faster over time and the speed of mythological creatures is difficult to understand
diskorduser
2021-05-25 05:01:22
Just Sonic? He is fast enough.
_wb_
2021-05-25 05:04:31
-s hedgehog
improver
2021-05-25 05:06:26
sanic
diskorduser
2021-05-25 05:06:36
Yea
Scope
2021-05-25 05:08:09
The names of superheroes or game characters is cool, but then there can be problems, since they usually have copyrights and stuff
Deleted User
Scope The names of superheroes or game characters is cool, but then there can be problems, since they usually have copyrights and stuff
2021-05-25 05:09:42
But why not "sonic" as a reference to audio waves? Technically they're faster than animals... ๐Ÿ˜‰
Scope
2021-05-25 05:12:29
Because there is another Sonic that people usually imagine and there will be confusion with him (also the game character Sonic can be faster than light)
monad
2021-05-25 05:16:08
What's the utility of the animal names anyway? I don't find them intuitive myself.
Nova Aurora
monad What's the utility of the animal names anyway? I don't find them intuitive myself.
2021-05-25 05:16:34
To give an intuitive sense of the speed of their numerical equivalents
_wb_
2021-05-25 05:16:57
numerical is fine, animals are a bit more fun
diskorduser
2021-05-25 05:17:10
Sonic is both sound and animal. Also can't be copyrighted
BlueSwordM
_wb_ numerical is fine, animals are a bit more fun
2021-05-25 05:17:31
Oh, I've got an idea for the fastest speed name
2021-05-25 05:17:33
Supersonic <:megapog:816773962884972565>
Nova Aurora
2021-05-25 05:17:37
Sonic is copyrighted, sonic isn't
BlueSwordM Supersonic <:megapog:816773962884972565>
2021-05-25 05:17:46
hypersonic
2021-05-25 05:17:58
Orbital veloticty
BlueSwordM
2021-05-25 05:18:02
Hypersonic is mach 5+. That would be reserved for `-s 1`
Nova Aurora
2021-05-25 05:18:06
Lightspeed
2021-05-25 05:18:17
Ludicrous speed
2021-05-25 05:18:45
Alcubierre-drive (FTL)
2021-05-25 05:19:20
Space stone
2021-05-25 05:19:26
Police telephone box
veluca
Nova Aurora Police telephone box
2021-05-25 05:24:39
๐Ÿ˜› nice reference
Scope
2021-05-25 05:36:35
-s 2 (supersonic), -s 1 (hypersonic), -s 0 (light)
2021-05-25 05:42:12
-s 12 (rock), 12 years of encoding and progress will move one percent
Crixis
2021-05-25 05:44:15
And is a progression in a while true loop
improver
2021-05-25 05:45:13
it'll come closer to 100% but will quite never hit it
_wb_
2021-05-25 05:45:13
-s 2 (airplane), -s 1 (rocket), -s 0 (light)?
improver it'll come closer to 100% but will quite never hit it
2021-05-25 05:45:45
I've seen Windows progress bars that do that
2021-05-25 05:46:04
Zeno paradox progress bars
Crixis
_wb_ I've seen Windows progress bars that do that
2021-05-25 05:46:23
Windows 98 installation
2021-05-25 05:47:00
Was a geometric succession 1/2 1/4 1/8
Scope
_wb_ -s 2 (airplane), -s 1 (rocket), -s 0 (light)?
2021-05-25 05:53:09
If there were animal names already, I would prefer not technological things, but rather characteristics/descriptions of speed or something natural like a storm, hurricane (but it doesn't fit, just an example) https://discord.com/channels/794206087879852103/804324493420920833/846781980682354760 Like the speed of an airplane may be different depending on the model and design and some animals may be faster, rockets can also be for example homemade and the speed of all of this is not obvious
_wb_
2021-05-25 06:02:56
-s thunder, -s lightning?
2021-05-25 06:03:32
https://c.tenor.com/EVJo-FdHf9AAAAAM/zeus-thunder.gif
Scope
2021-05-25 06:05:11
Yep, something like that
_wb_
2021-05-25 06:11:59
https://c.tenor.com/evwQTrVO080AAAAM/queen-bohemian-rhapsody.gif
monad
2021-05-25 06:23:20
There is also variation in animals. I'd think if the animal ordering is obvious, then 'rocket is faster than falcon' should be obvious under similar reasoning.
Scope
2021-05-25 06:29:12
Rockets can be like this
2021-05-25 06:29:16
Also, not all airplanes can be faster than a falcon
monad
2021-05-25 06:31:42
Kittens can be like this.
paperboyo
veluca https://github.com/libjxl/libjxl keep an eye here! ๐Ÿ˜›
2021-05-25 06:33:11
๐Ÿฅณ Is there a plan to migrate issues too?
Scope
2021-05-25 06:37:17
Yes, but in some categories of animals the maximum speed is relatively unchanged if they are healthy, unlike technical things, which are always progressing, once cars were slower than horses, trains could not be supersonic, etc.
monad
2021-05-25 06:40:34
Maybe in the future we have artificially-enhanced kittens that run faster than falcons fly.
_wb_
2021-05-25 06:40:52
A typical airplane can go faster than a falcon now already, and it is unlikely to get slower in the future
Pieter
2021-05-25 07:05:42
But maybe falcons will evolve to compete with airplanes?
Scope
2021-05-25 07:08:16
https://tenor.com/view/sam-wilson-falcon-gif-10597370
monad
Pieter But maybe falcons will evolve to compete with airplanes?
2021-05-25 07:13:57
By growing cabins to facilitate human transportation?
_wb_
2021-05-25 07:27:22
A sleeping falcon is also much slower than a tortoise
Scope
2021-05-25 07:28:27
https://tenor.com/view/mcconnell-turtle-sprint-gif-7799343
Deleted User
_wb_ A sleeping falcon is also much slower than a tortoise
2021-05-25 07:28:32
That's some proper motivational thought... Have you ever thought about entering philosophy?
Scientia
2021-05-25 07:32:30
We can go off of connotation and not denotation
2021-05-25 07:32:46
Most people associate these animals with speeds
190n
2021-05-25 07:39:06
so is the new github repo getting commits as they are written, instead of syncing occasionally?
veluca
2021-05-25 07:40:17
yup
_wb_
2021-05-26 09:27:54
Why do people want the full commit history?
improver
2021-05-26 09:29:26
I don't.
Kleis Auke
2021-05-26 10:37:46
I think for `git bisect` / debugging purposes.
2021-05-26 10:38:50
BTW, is it necessary to add myself to `AUTHORS`, even for small changes?
veluca
2021-05-26 10:39:08
I don't think it's *necessary*, no
Kleis Auke
2021-05-26 10:40:06
Ah OK, fwiw, there's a welcome bot for that. See e.g. <https://github.com/emscripten-core/emscripten/pull/14224#issuecomment-843783370>.
veluca
2021-05-26 10:41:04
I don't know though ๐Ÿ˜› I'll ask today during the team meeting
_wb_
2021-05-26 11:00:59
as far as I understand, AUTHORS is for the purpose of authorship in the copyright sense. Consider it like a book. If you write a chapter, you're an author. If you fix a typo, you're not. In between those extremes there is a spectrum and basically you can choose yourself as far as I'm concerned.
Scope
2021-05-26 11:31:10
<:Stonks:806137886726553651>
Scientia
_wb_ Why do people want the full commit history?
2021-05-26 05:41:23
We just want an up to date repo that's synced in real time rather than having to wait a week or two for batches of commits
_wb_
2021-05-26 05:43:52
You got it since yesterday
Pieter
Scientia We just want an up to date repo that's synced in real time rather than having to wait a week or two for batches of commits
2021-05-26 06:02:36
I think <@794205442175402004> was asking whether people wanted the full commit *history*; not just the new commits now.
Scientia
2021-05-26 06:16:07
I don't think the full commit history is needed
2021-05-26 06:16:31
If someone needs all the commits or whatever they contained for something they can ask
Scope
2021-05-26 06:16:44
So if Github has become main, might as well change it here?
veluca
2021-05-26 06:25:37
yes please!
Deleted User
2021-05-26 08:06:47
__**Ye Ultimate Updated (Once Again) One-Liner for Compiling JPEG XL in Bash:**__ `mv libjxl/build/tools/ ~; rm -rf libjxl; git clone https://github.com/libjxl/libjxl.git --recursive; cd libjxl; git revert -n 96e1f432595669ab9912934ec4d8b4d24d3f8eab; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release -DJPEGXL_ENABLE_DEVTOOLS=ON -DBUILD_TESTING=OFF ..; cmake --build . -- -j$(nproc); mv -n ~/tools/* tools/; rm -r ~/tools/`
veluca
2021-05-26 08:09:31
`git revert -n 96e1f432` ๐Ÿ˜†
2021-05-26 08:09:43
at some point you'll start getting conflicts ๐Ÿ˜›
2021-05-26 08:10:00
(you know you can do parallel recursive clone?)
Deleted User
veluca at some point you'll start getting conflicts ๐Ÿ˜›
2021-05-26 08:12:15
Joke's on you, I've just updated it ๐Ÿ˜‰
veluca
2021-05-26 08:13:12
I mean at some point we'll change something in c/djxl that will make the revert not work
Deleted User
2021-05-26 08:13:50
Better ASCII art? ๐Ÿ™‚
Scope
2021-05-26 08:17:02
One-hour color fullscreen ASCI animation before start of each encoding
BlueSwordM
__**Ye Ultimate Updated (Once Again) One-Liner for Compiling JPEG XL in Bash:**__ `mv libjxl/build/tools/ ~; rm -rf libjxl; git clone https://github.com/libjxl/libjxl.git --recursive; cd libjxl; git revert -n 96e1f432595669ab9912934ec4d8b4d24d3f8eab; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=Release -DJPEGXL_ENABLE_DEVTOOLS=ON -DBUILD_TESTING=OFF ..; cmake --build . -- -j$(nproc); mv -n ~/tools/* tools/; rm -r ~/tools/`
2021-05-26 09:32:00
Weak.
2021-05-26 09:32:02
Here's mine.
2021-05-26 09:32:52
```export CFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" export CC=/usr/bin/clang && export CXX=/usr/bin/clang++ git clone https://gitlab.com/wg1/jpeg-xl.git --recursive cd jpeg-xl && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" -DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_GIMP_SAVING=1 -DJPEGXL_ENABLE_DEVTOOLS=ON -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=1 -DJPEGXL_ENABLE_SJPEG=OFF .. cmake --build . -- -j 16 sudo make install```
veluca
BlueSwordM ```export CFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" export CC=/usr/bin/clang && export CXX=/usr/bin/clang++ git clone https://gitlab.com/wg1/jpeg-xl.git --recursive cd jpeg-xl && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" -DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_GIMP_SAVING=1 -DJPEGXL_ENABLE_DEVTOOLS=ON -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=1 -DJPEGXL_ENABLE_SJPEG=OFF .. cmake --build . -- -j 16 sudo make install```
2021-05-26 09:44:07
I doubt you get much out of either -O3 or -march=native ๐Ÿ˜›
BlueSwordM
veluca I doubt you get much out of either -O3 or -march=native ๐Ÿ˜›
2021-05-26 09:44:17
It mostly helps in modular ๐Ÿ˜›
veluca
2021-05-26 09:44:27
oh, it does?
2021-05-26 09:44:31
that's very useful to know
2021-05-26 09:44:33
how much?
2021-05-26 09:44:41
also, decoding or encoding?
BlueSwordM
2021-05-26 09:45:07
Yeah, the benefit is not negligible. It's been a while since I've tested encoding, but I guess I could rebuilt the latest without compiler opts and profile the difference.
veluca
2021-05-26 09:45:23
does it help encoding speed mostly?
2021-05-26 09:45:35
'cause in that case I don't care *as much* ๐Ÿ˜›
Scope
2021-05-26 09:53:14
Btw, I can't compile JXL with Clang and LTO in MinGW for some reason (and maybe PGO would help as well) If encoding takes weeks, even a small speed gain would be helpful
veluca
2021-05-26 10:00:14
surprising, I remember trying LTO and succeeding but not on win
2021-05-26 10:00:34
but yeah, an LTO + PGO build for the modular encoder is likely a very good idea
2021-05-26 10:01:08
just make sure to profile on a mix of -I 0 -s 9 -E 3 graphics and -I 1 -s 9 -E 3 non-graphics files ๐Ÿ™‚
2021-05-26 10:02:13
eh, not bad
2021-05-26 10:02:17
decoding?
2021-05-26 10:02:45
`0.80 MP/s [0.72, 0.72]` wait, what?
BlueSwordM
2021-05-26 10:02:53
Oops, wrong one.
2021-05-26 10:03:10
You know, perhaps I should make sure I copy paste the right ones <:Thonk:805904896879493180>
2021-05-26 10:05:07
Wait, a minute. <:Thonk:805904896879493180> `time /home/bluezakm/jpeg-xl_no_opt/build/tools/cjxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9.png /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s7_noopt.png -d 0.0 -s 7` `time /home/bluezakm/jpeg-xl_no_opt/build/tools/cjxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9.png /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s7_noopt.png -d 0.0 -s 7` Something seems to have messed up my numbers, because I was getting the same times. That's why.
veluca
2021-05-26 10:05:52
isn't that the same build? ๐Ÿ˜›
BlueSwordM
veluca isn't that the same build? ๐Ÿ˜›
2021-05-26 10:06:17
Yep. It was just the fact that I decided to do a `sudo dnf upgrade` in the background that resulted in the different numbers.
veluca
2021-05-26 10:06:40
ahah ok
BlueSwordM
veluca ahah ok
2021-05-26 10:08:32
Wrong numbers sorry ๐Ÿ˜› That doesn't matter: looks like it is margin of error anyway :/ O3+march znver2 ```time /home/bluezakm/jpeg-xl_opt/build/tools/cjxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9.png /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_opt.jxl -d 0.0 -s 7 J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: AVX2] Read 6668x3840 image, 67.2 MP/s Encoding [Modular, lossless, squirrel], 8 threads. Compressed to 10028832 bytes (3.133 bpp). 6668 x 3840, 0.74 MP/s [0.74, 0.74], 1 reps, 8 threads. real 0m35.035s user 0m44.726s sys 0m0.697s``` ```time /home/bluezakm/jpeg-xl_no_opt/build/tools/cjxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9.png /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_noopt.jxl -d 0.0 -s 7 J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar] Read 6668x3840 image, 68.0 MP/s Encoding [Modular, lossless, squirrel], 8 threads. Compressed to 10028832 bytes (3.133 bpp). 6668 x 3840, 0.72 MP/s [0.72, 0.72], 1 reps, 8 threads. real 0m35.869s user 0m45.426s sys 0m0.747s```
veluca
2021-05-26 10:09:05
you can do multiple reps (--num_reps=5) to get more consistency (and perhaps also --num_threads=0)
BlueSwordM
2021-05-26 10:09:31
Eh, I don't think it would be really necessary looking at these numbers. I'm more interesting in decoding anyway, like you ๐Ÿ˜›
veluca
2021-05-26 10:10:08
I think we did enough manual optimization that -O3 barely helps in the hot parts for decoding ๐Ÿ˜„
BlueSwordM
veluca I think we did enough manual optimization that -O3 barely helps in the hot parts for decoding ๐Ÿ˜„
2021-05-26 10:18:38
Small difference for decoding though: ```time /home/bluezakm/jpeg-xl_opt/build/tools/djxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_opt.jxl --num_reps=5 Read 10028832 compressed bytes [v0.3.7 | SIMD supported: AVX2] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 6668 x 3840, geomean: 35.92 MP/s [35.57, 35.97], 5 reps, 8 threads. Allocations: 8339 (max bytes in use: 9.718959E+08) real 0m3.577s user 0m26.298s sys 0m1.697s``` ```time /home/bluezakm/jpeg-xl_no_opt/build/tools/djxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_noopt.jxl --num_reps=5 Read 10028832 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 6668 x 3840, geomean: 34.44 MP/s [34.19, 34.52], 5 reps, 8 threads. Allocations: 8339 (max bytes in use: 9.718937E+08) real 0m3.729s user 0m27.480s sys 0m1.678s```
veluca
2021-05-26 10:19:13
can you do it with 0 threads?
2021-05-26 10:19:52
I wonder what the compiler is doing, that 0.3% might be something worth doing manually...
BlueSwordM
veluca I wonder what the compiler is doing, that 0.3% might be something worth doing manually...
2021-05-26 10:30:09
O3+march```ime /home/bluezakm/jpeg-xl_opt/build/tools/djxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_opt.jxl --num_reps=5 --num_threads=0 Read 10028832 compressed bytes [v0.3.7 | SIMD supported: AVX2] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 6668 x 3840, geomean: 5.24 MP/s [5.22, 5.24], 5 reps, 0 threads. Allocations: 8129 (max bytes in use: 9.464126E+08) real 0m24.465s user 0m24.170s sys 0m0.276s```No optimizations(release profile, which is O3)```time /home/bluezakm/jpeg-xl_no_opt/build/tools/djxl /home/bluezakm/Pictures/SNCE8P_2021-03-13_21-45-41_s9_noopt.jxl --num_reps=5 --num_threads=0 Read 10028832 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 6668 x 3840, geomean: 5.02 MP/s [4.99, 5.02], 5 reps, 0 threads. Allocations: 8129 (max bytes in use: 9.464126E+08) real 0m25.554s user 0m25.263s sys 0m0.272s``` 4,38% is certainly not negligible...
veluca
2021-05-26 10:30:25
very interesting
2021-05-26 10:30:37
I'll try to see a profile of it at some point
Scope
2021-05-26 10:40:14
O3+march haswell ```Read 12792752 compressed bytes [v0.3.7 | SIMD supported: AVX2] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 3359 x 2267, geomean: 2.97 MP/s [2.87, 2.97], 5 reps, 0 threads. Allocations: 1104 (max bytes in use: 3.081844E+08)``` O3 ```Read 12792752 compressed bytes [v0.3.7 | SIMD supported: AVX2,SSE4,Scalar] No output file specified. Decoding will be performed, but the result will be discarded. Decoded to pixels. 3359 x 2267, geomean: 2.89 MP/s [2.81, 2.90], 5 reps, 0 threads. Allocations: 1104 (max bytes in use: 3.081844E+08)```
BlueSwordM
veluca I'll try to see a profile of it at some point
2021-05-26 10:40:17
No problem. Here are my perf profiles in the meantime
veluca
2021-05-26 10:44:49
I'm not sure if those are useful without a binary
2021-05-26 10:45:24
ah, I thought they were the perf.data files
2021-05-26 10:46:20
mh, ok, that's enough info anyway
2021-05-26 10:46:27
it likely optimizes the weighed predictor
2021-05-26 10:48:04
which is not really a surprise tbh
2021-05-26 10:48:48
there's a few things I already know we could do better there, just never has been at the top of the "what should I do next" list
Deleted User
BlueSwordM ```export CFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" export CC=/usr/bin/clang && export CXX=/usr/bin/clang++ git clone https://gitlab.com/wg1/jpeg-xl.git --recursive cd jpeg-xl && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" -DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_GIMP_SAVING=1 -DJPEGXL_ENABLE_DEVTOOLS=ON -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=1 -DJPEGXL_ENABLE_SJPEG=OFF .. cmake --build . -- -j 16 sudo make install```
2021-05-26 11:08:04
> ISN'T A ONELINER IN THE FIRST PLACE > no `cjxl` ASCII art > still points to GitLab instead of more recent GitHub > still uses `jpeg-xl` directory instead of `libjxl`
tufty
2021-05-27 08:58:17
oss-fuzz has found a -ve shift in libjxl (undefined behaviour), shall I open a bug report? (it's not a very interesting bug, but should probably be fixed)
tufty oss-fuzz has found a -ve shift in libjxl (undefined behaviour), shall I open a bug report? (it's not a very interesting bug, but should probably be fixed)
2021-05-27 09:06:33
... issue here https://github.com/libjxl/libjxl/issues/29
veluca
2021-05-27 09:09:46
I wonder how it can happen at all ๐Ÿ˜„
tufty
2021-05-27 09:16:23
hehe ... the wonder of C (we all love it really)
veluca
2021-05-27 10:39:44
I'd have thought that it was mathematically impossible for that number to be negative, really xD
2021-05-27 10:39:53
oh well, <@!794205442175402004> will figure it out
_wb_
2021-05-27 11:01:40
Must be somehow uninitialized, I suppose.
2021-05-27 02:44:18
Found the bug
Kleis Auke
2021-05-27 03:16:17
I can confirm that PR #35 resolves issue #29. Tested with both unminimized (which gave `-5`) and minimized (i.e. the one in that issue) testcases from OSS-Fuzz.
_wb_
2021-05-27 03:25:35
ah the unminimized probably just did it on a larger image, where the hshift would go to 5 after squeeze, then became 0 due to buggy inv palette, and then became 0-5 = -5 after inv squeeze (instead of the 5-5 = 0 it should have been)...
tufty
2021-05-27 03:31:29
another oss-fuzz report, sorry https://github.com/libjxl/libjxl/issues/37
Deleted User
2021-05-27 03:35:09
https://i1.wp.com/gifrific.com/wp-content/uploads/2015/03/Liar-Liar-Drinking-Water-Oh-Come-On-in-Courtroom.gif
Kleis Auke
2021-05-27 03:58:59
<@!310374889540550660> OSS-Fuzz issue 34186 and 34269 can be reproduced using their Docker images. It's a floating-point division by zero, which is a no-op unless you actively checking them.
Pieter
2021-05-27 04:04:23
Something is wrong with my discord app, it shows incorrect previews...
krkk
2021-05-27 08:51:04
github repo doesn't have tags pushed
veluca
2021-05-27 08:52:46
you mean the old versions?
2021-05-27 08:52:51
please file an issue ๐Ÿ™‚
krkk
2021-05-27 09:21:20
done.
veluca
2021-05-27 09:24:09
thanks!
Jyrki Alakuijala
_wb_ <@!532010383041363969> opinions please ๐Ÿ™‚
2021-05-28 03:58:13
The fastest animal would be --speed tartigrade-shot-from-gun
2021-05-28 03:59:12
-s unicorn is great -- there is a utf symbol for it U+1F984
2021-05-28 04:00:47
if we add airplane and rocket, it will reduce the cuteness of the animal categories
2021-05-28 04:01:15
human constructs are still rather inferior to what biology has created -- it is a common mistake to celebrate them over animals ๐Ÿ˜„
2021-05-28 04:04:15
we should ideally add ๐Ÿž๐Ÿฆ€๐Ÿฆ† and other cute animals and shift the others around
2021-05-28 04:08:09
we could add swift between cheetah and eagle, but swift is such a boring and confusing name in computer environments
_wb_
2021-05-28 04:12:03
For now I have called the two new speeds thunder and lightning
2021-05-28 04:12:18
Feel free to do a renaming ๐Ÿ˜
Jyrki Alakuijala
2021-05-28 05:39:17
๐Ÿ˜„
2021-05-28 05:39:26
I'm fine with those
_wb_
2021-05-28 06:00:03
https://c.tenor.com/evwQTrVO080AAAAM/queen-bohemian-rhapsody.gif
2021-05-28 06:01:04
Now just have to make lightning actually do something useful ๐Ÿ˜…
2021-05-28 06:03:06
Maybe just YCoCg + Gradient predictor + RLE? That might still beat fast png encoding...
Jyrki Alakuijala
2021-05-28 06:21:29
there is something that is more frightening than thunder and lighting, it is 'huutajat'
2021-05-28 06:22:33
https://www.youtube.com/watch?v=iv4IoQXWSXQ
2021-05-28 06:22:45
it is a choir from the town where I was born
2021-05-28 06:23:06
it cannot unfortunately be recorded, shouting doesn't work through a video as well as it works in person
2021-05-28 06:26:39
https://www.youtube.com/watch?v=HtpQI07MlP4
_wb_
2021-05-28 06:32:37
Reminds me of https://en.m.wikipedia.org/wiki/Geographical_Fugue
2021-05-28 06:33:22
I once participated in a choir that did that one, it's quite fun
2021-05-28 06:35:21
Der Popocatepetl liegt nicht in Kanada, sondern in Mexiko, Mexiko, Mexiko. Kanada, Malaga, Rimini, Brindisi, Kanada, Malaga, Rimini, Brindisi. Ja! Athen, Athen, Athen, Athen, Nagasaki, Yokohama, Nagasaki, Yokohama,
veluca
2021-05-28 08:21:47
so I now have an (apparently working) JPEG to JXL nginx plugin transcoder ๐Ÿ˜„
2021-05-28 08:23:29
it just takes any JPEG you are about to serve, and transcodes it on the fly to JXL if the client supports it
2021-05-28 08:24:15
of course it takes a nonzero amount of time, so one would need caching or a (relatively) slow network for this to be a win
_wb_
2021-05-28 08:30:01
The opposite would also be nice, going forward. Store jxl'd jpeg on server, serve directly if supported, convert back to jpeg otherwise
veluca
2021-05-28 08:31:55
shouldn't be too hard either
_wb_
2021-05-28 08:32:00
Jxl to jpeg should in theory be faster too, maybe
veluca
2021-05-28 08:32:06
very likely
_wb_
2021-05-28 08:32:48
Of course if 99% of visitors need the jpeg, it will hurt latency
2021-05-28 08:34:21
But from the server storage pov, and going towards a future where the majority can use the jxl, it would be the best thing to store the jxl and restore jpeg when needed
2021-05-28 08:36:18
(and then at some point you can start using arbitrary jxl and do a lossy decode to q85 or whatever jpeg as a fallback for the minority who needs one - or could use webp as a fallback then, maybe)
The Fylkir
2021-05-28 09:12:10
I imagine for many use cases, the bandwidth savings are more significant than storage savings
veluca
2021-05-28 09:12:52
depends on how often people access files
2021-05-28 09:12:59
for CDNs, likely yes
2021-05-28 09:13:25
for things like facebook, probably not
The Fylkir
2021-05-28 09:15:23
I'm thinking for a site with little-to-no user content
veluca
2021-05-28 09:18:26
then yes ๐Ÿ˜›
Deleted User
2021-05-29 12:42:29
<@&803357352664891472> wake up samurais, you have a PR to merge ๐Ÿ˜‰ https://github.com/libjxl/libjxl/pull/45
_wb_
2021-05-29 12:45:59
Ugh, this group ping enabled-by-default 'feature'...
2021-05-29 12:47:16
Ok I am not going to disable that one, but please don't abuse it for non-urgent stuff
Deleted User
_wb_ Ok I am not going to disable that one, but please don't abuse it for non-urgent stuff
2021-05-29 12:47:48
Ok, I'll remember that.
2021-05-29 12:54:20
Thanks for quick review!
_wb_
2021-05-29 12:57:45
Important bugs (not necessarily security), maybe big news like apple or adobe saying something about jxl, I dunno. Things you think all core devs would certainly like to get a notification for ๐Ÿ˜…
veluca
2021-05-29 01:08:54
abuse of pinging will result in retaliatory abuse *via* pinging ๐Ÿ˜›
2021-05-29 01:09:56
<@!794205442175402004> maybe we could make a channel that is rate-limited for lower priority things one might want to bring to our attention?
Deleted User
veluca <@!794205442175402004> maybe we could make a channel that is rate-limited for lower priority things one might want to bring to our attention?
2021-05-29 01:11:30
Its "natural" rate is limited anyway, most of the traffic already goes to other channels
_wb_
2021-05-29 01:12:28
Rate limiting is useful to avoid discussions start there
2021-05-29 01:12:37
Suggestions for a channel name?
veluca
2021-05-29 01:14:12
contact-devs?
_wb_
2021-05-31 10:57:57
Added it
2021-05-31 10:59:01
I made the fast lossless encoding quite a bit faster, especially in the HDR case where it was unnecessarily slow: https://github.com/libjxl/libjxl/pull/47
2021-05-31 11:02:44
probably 0.5.0, I guess
2021-05-31 11:03:05
0.4.x is a separate branch where only bugfixes get cherry-picked
2021-05-31 11:05:33
the git version shouldn't be that risky, we don't make changes in the main branch that break stuff
Crixis
2021-05-31 11:57:28
But why use new heuristics? They are not developing it
_wb_
2021-05-31 12:00:19
Options that are not in the default (non-verbose) --help of cjxl are experimental. They could disappear at any time, and they are not guaranteed to do anything useful or even work.
2021-05-31 12:15:37
That's not the intention. The goal is to have a "no manual tweaking required" encoder where you basically only have to choose a fidelity target, an effort, and maybe progressiveness, and it does something that makes sense.
2021-05-31 12:16:16
The experimental options are for experimentation, to try things out in order to make the default behavior better.
2021-05-31 01:54:03
basically cjxl was overriding some settings in the specific case of .gif to .jxl with no options, but not in the case of .gif to .jxl with options (like -q 100)
2021-05-31 01:54:46
overriding the settings was not particularly useful, it's better to let the encoder figure it out instead of assuming things like a specific predictor being best and whatnot
Scope
2021-05-31 02:04:29
With these changes `-s 3` could also be better on non-photographic images? https://github.com/libjxl/libjxl/pull/47
veluca
2021-05-31 02:07:00
nope
2021-05-31 02:07:12
-s 2 probably is though
fab
2021-05-31 02:25:43
yes but losing accuracy at q70 compared to older version of the encoder
2021-05-31 02:26:09
isn't good for the encoder
_wb_
2021-05-31 02:44:39
what are you talking about, Fabian? this is about lossless
fab
2021-05-31 03:01:55
like if you make new heuristics and you have regression in medium qualities like they looks less accurate or more distorted blurred less beautified
2021-05-31 03:02:00
is not always better
2021-05-31 03:02:21
jxl needs also to look good to the users
2021-05-31 03:02:49
even if most will not notice as they don't know the accuracy jpeg xl can give
veluca
2021-05-31 03:09:56
I'm pretty sure we didn't change much recently in the encoder
fab
2021-05-31 03:12:02
but the 12052021 version
2021-05-31 03:12:20
at
2021-05-31 03:12:21
for %i in (C:\Users\User\Documents\bn2*.jpg) do cjxl -j -s 6 -q 63.52 --epf=2 -p --gaborish=1 --patches=0 --dots=1 --use_new_heuristics %i %i.jxl
2021-05-31 03:12:24
has great accuracy
2021-05-31 03:12:29
great beautify effect
2021-05-31 03:12:46
like for jxl art but even for other images it greatly reduces file size
2021-05-31 03:12:57
but the problem is whatever encoder you use
2021-05-31 03:13:01
if you go up
2021-05-31 03:13:07
you don't get same accuracy
2021-05-31 03:13:16
it looks less precise
veluca
2021-05-31 03:13:17
don't use new heuristics
fab
2021-05-31 03:13:34
like is modular that could be optimized
2021-05-31 03:19:48
2021-05-31 03:20:31
i'll encode at less quality
2021-05-31 03:20:38
q 67 and q 66
2021-05-31 03:22:54
2021-05-31 03:23:09
suprisingly q 66 it does a far good job
2021-05-31 03:23:19
but it blurs totally the triangle at bottom
2021-05-31 03:26:56
particularly q 75 blurs in up the photo
2021-05-31 03:27:05
the center is totally blurred in q75
2021-05-31 03:27:37
2021-05-31 03:31:38
i think if with a newer build it looks sharper at -q 78,97356 -s 7 --use_new_heuristics --dots=1 --gaborish=0
2021-05-31 03:31:58
it's a sign that is more fixed the problem
2021-05-31 03:37:40
obviously you could try to get a q70 or q 66 sharp picture but it would be too much work
2021-05-31 03:37:48
save it for release
2021-05-31 03:37:54
or for improving low bpp
2021-05-31 03:41:58
I THINK IT DOESN'T SOLVE ANYTHING
2021-05-31 03:42:07
Q 78 is still high quality
2021-05-31 03:42:26
because is new heuristics so is like doing a q 82 with more modular effort
2021-05-31 03:42:42
so it's an illusion
2021-05-31 03:42:49
medium quality still looks blurred
Pieter
2021-05-31 03:43:32
This is maybe more for <#840831132009365514> ?
fab
Pieter This is maybe more for <#840831132009365514> ?
2021-05-31 03:44:49
I removed some duplicates from 12:56
tufty
2021-05-31 04:45:46
ouch nasty libjxl crash possibly found by oss-fuzz (write after free) github doesn't seem to have a "keep this private" option for issues, is it OK to open it there anyway?
_wb_
2021-05-31 04:52:18
I think it's ok to open it publicly, wdyt <@179701849576833024> ?
2021-05-31 04:52:49
It's probably something we will then fix quickly anyway and the fix will be public anyway
veluca
2021-05-31 05:03:02
probably OK for now (til we have a proper security process)
2021-05-31 05:03:19
you can also email it I guess, but issue is likely good
tufty
2021-05-31 05:39:19
hello, OK to report security issues on github libjxl? there doesn't seem to be a "keep private" option in the new issue page
veluca
2021-05-31 05:45:49
sure
_wb_
2021-05-31 05:54:00
A zero day exploit targeting specifically chrome with the enable-jxl flag enabled is probably not a huge problem? Considering likely the only thing they can do is make a website that makes a tab get killed...
tufty
2021-05-31 06:00:55
ok, opened here: https://github.com/libjxl/libjxl/issues/66
2021-05-31 06:02:40
could probably use it to run arbitrary asm code in a chrome tab
2021-05-31 06:03:28
well ... possibly anyway heh
_wb_
2021-05-31 06:04:30
Thanks for the find!
Deleted User
tufty well ... possibly anyway heh
2021-05-31 06:08:28
https://i.kym-cdn.com/photos/images/newsfeed/001/401/347/312.jpg
2021-05-31 08:23:38
I've just updated my compiling one-liner. Now you won't loose any of the additional files you've kept in `libjxl/build/tools` (e.g. all of those `.jxl`, `.png` or `.jpg` you've processed, `jxl_from_tree` designs etc.) **Make sure you don't have `tools` directory in your home folder!** https://discord.com/channels/794206087879852103/804324493420920833/847204142589018132
2021-06-01 01:58:14
Whoaaaa, I only wanted to make some slight modifications to the command from `README.md`...
2021-06-01 04:21:27
Another thing is I'm not knowledgeable enough to know `cmake`'s settings and I just trust devs to give the right command that I won't modify
_wb_
2021-06-01 05:14:20
It's a decoder-only library. In many applications you don't need an encoder...
2021-06-01 10:41:06
I guess because if you link dynamically, you can probably just depend on libjxl and link to the full library. The decoder-only libjxl_dec would be more for something like a game that uses jxl sprites and wants to do static linking to have a self-contained executable without dependencies.
Scope
2021-06-01 10:45:21
๐Ÿค”
improver
2021-06-01 11:36:42
static libs increase binary size, dynamic ones not to significant degree. though i think it could just discard encoding stuff which isn't used at all?
2021-06-01 11:37:04
probably needs sufficiently smart compiler/linker for that
Deleted User
2021-06-01 09:22:58
What do you think of such commits? https://github.com/ziemek99/libjxl/commit/7b4c2dda9eeafe690a76cbf5b22c7a3607c71093
2021-06-01 09:23:19
I'm asking you for an opinion, because I don't want to make pull request only to be rejected...
veluca
2021-06-01 09:26:42
no reason not to ๐Ÿ™‚
Scope
2021-06-01 09:33:05
Also, not really important, but ```=0|1 force enable/disable``` but, "enable" is usually `1`, although `0` comes first
2021-06-01 09:34:35
more clearly it's something like ```=0|1 force disable/enable``` or ```=1|0 force enable/disable```
Deleted User
2021-06-01 09:34:50
I only followed core devs' convention
Scope
2021-06-01 09:36:16
It's in the descriptions of all the other options, not just this commit/option
veluca
2021-06-01 09:39:19
feel free to change nonsensical stuff in the CLI
2021-06-01 09:39:20
๐Ÿ˜›
Deleted User
Scope It's in the descriptions of all the other options, not just this commit/option
2021-06-01 09:43:01
That's the effect I wanted. I put the edited gaborish option under unedited ones, now you can't discern which one was changed and which ones were "original".
Scope
2021-06-01 09:43:44
Also ``` -N max_d, --near-lossless=max_d [modular encoding] apply near-lossless preprocessing with maximum delta = max_d``` but it is not clear what the maximum and minimum numbers could be (like 1, 1000, 0.01, -1?)
That's the effect I wanted. I put the edited gaborish option under unedited ones, now you can't discern which one was changed and which ones were "original".
2021-06-01 09:45:01
Yep, but I'm talking about options in general, not this commit (it just reminded me of these descriptions)
Deleted User
2021-06-01 09:51:31
There's probably nothing a force-push won't do ๐Ÿ˜‰ Better now? https://github.com/ziemek99/libjxl/commit/1c81d8d4070c7220315e6378e32f35e93c93765d
Scope
2021-06-01 09:56:19
Yep, because I think it's better to make more changes that apply to one thing than to create a lot of commits with very small changes (such as adding a word, missing a comma, etc.)
Deleted User
2021-06-01 09:57:55
It's not like I wanted to make multiple commits, it simply was outside of my *scope* (pun intended)
Scope Also, not really important, but ```=0|1 force enable/disable``` but, "enable" is usually `1`, although `0` comes first
2021-06-01 09:58:27
I made the first commit before this message
2021-06-01 09:59:10
I'm also against "micro-commits", I just didn't think I could do it while I'm at it
Scope
2021-06-01 09:59:21
Yes, if they are necessary, change for the sake of change is also not good
Deleted User
2021-06-01 10:00:51
But this change should actually make sense, you were right about pointing it out
veluca
2021-06-01 10:47:31
pro tip: even if you have multiple commits in your local branch, they'll be squashed when the PR is accepted
Deleted User
2021-06-01 10:54:33
How will be the new squashed commit named?
veluca
2021-06-01 11:45:02
I think the one that does the squash decides
Jake Archibald
2021-06-02 09:38:46
I'm taking a look at some options to expose in Squoosh and could do with some advice. `middleout` - is this worth exposing? Does it only apply to progressive images? `progressive_ac`/`qprogressive_ac` - are these worth exposing? If so, what's the difference between them? `progressive_dc` - worth exposing? If so, what range of values?
Deleted User
Jake Archibald I'm taking a look at some options to expose in Squoosh and could do with some advice. `middleout` - is this worth exposing? Does it only apply to progressive images? `progressive_ac`/`qprogressive_ac` - are these worth exposing? If so, what's the difference between them? `progressive_dc` - worth exposing? If so, what range of values?
2021-06-02 09:53:50
`middleout` IMHO it's an option the most worth exposing from that list. Essentially it reorders AC coeffs so they get enhanced from the middle in a spiral pattern instead of usual top-down progression.
_wb_
2021-06-02 10:30:55
Middleout applies to all images, even lossless modular ones, and does what <@456226577798135808> just said
2021-06-02 10:34:10
qprogressive_ac is the default progressive AC
2021-06-02 10:34:20
(what you get with -p)
2021-06-02 10:35:13
progressive_ac is a different scan script, one that is closer to what libjpeg does, I think
2021-06-02 10:37:40
Progressive_dc=1 makes sense, higher values probably don't work well
2021-06-02 10:39:07
Currently neither djxl nor chrome have a way to show previews of the progressive dc loading though
Kornel
2021-06-02 10:44:45
I would like to speak to the manager of C++! ``` In file included from /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/memory:671: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.3.sdk/usr/include/c++/v1/new:326:12: error: 'operator delete' is unavailable: introduced in macOS 10.12 return __builtin_operator_delete(__ptr, __a1); ^ ```
2021-06-02 10:44:51
I'm trying to build the lib on macOS 11, via jpegxl-sys.
_wb_
2021-06-02 10:58:10
Ugh
veluca
2021-06-02 11:51:21
ugh.
_wb_
2021-06-02 11:55:44
https://tenor.com/view/supervisor-speak-to-the-manager-manager-bubble-gum-princess-adventure-time-gif-9822847
Deleted User
_wb_ https://tenor.com/view/supervisor-speak-to-the-manager-manager-bubble-gum-princess-adventure-time-gif-9822847
2021-06-02 01:51:03
*ahem* <@178524721023811584>
bonnibel
2021-06-02 01:54:05
hii!
2021-06-02 01:54:30
i cant believe youve discovered my secret identity as the manager of c++
Deleted User
bonnibel i cant believe youve discovered my secret identity as the manager of c++
2021-06-02 01:55:47
YOU CAN'T HIDE ANYMORE, MUAHAHAHAHAHAAAA
bonnibel
2021-06-02 01:56:26
you may think it to be ISO/IEC JTC1 SC22 WG21 but really it was i all along
2021-06-02 01:56:44
clang and gcc are but pawns in my shadow war of mysterious motive
_wb_
2021-06-02 01:57:22
I _knew_ it
Deleted User
2021-06-02 02:10:07
<@794205442175402004> do you think that such small tweaks *really* require adding myself to the authors list?
_wb_
2021-06-02 02:13:22
not the contributors list, only the authors list
Deleted User
_wb_ not the contributors list, only the authors list
2021-06-02 02:15:56
Sorry, my mistake. Fixed the message.
_wb_
2021-06-02 02:17:56
I'm not a lawyer but I guess there's a good reason for being exhaustive on the authors list
Lastrosade
2021-06-02 02:31:44
So ugg I updated my system and it broke cjxl, it seems to have to do with openexr
2021-06-02 02:32:51
Can't compile
2021-06-02 02:36:41
I see, thanks
2021-06-02 02:51:44
welp the patch fails
improver
2021-06-02 02:53:10
should probably try libjpeg-xl-git
Lastrosade
2021-06-02 02:53:19
Both fail
improver
2021-06-02 02:53:28
o. rip
Lastrosade
2021-06-02 02:53:37
also its odd, none of the code that the patch tries to change is present in codec_exr.cc
2021-06-02 02:55:31
the patch tries to change `OpenEXR::Int64` to `uint64_t` but the file has `ExrInt64`
2021-06-02 03:01:19
This patch works with upstream on gitlab
zebefree
2021-06-02 05:11:19
If it says ExrInt64 then it is the version that should already be fixed. The old OpenEXR needs OpenEXR::Int64 and the new OpenEXR needs uint64_t, so to work with both versions libjxl now sets ExrInt64 to the appropriate type for the version of OpenEXR that you're using and uses that.
2021-06-02 05:12:44
<@!132637059327328256> Your error message says OpenEXR::Int64 so it looks like you were compiling an older libjxl from before it was changed to ExrInt64.
Lastrosade
2021-06-02 05:14:38
damn the aur package points to the gitlab repo
zebefree
2021-06-02 05:16:42
It looks like the master branch on the gitlab repo says ExrInt64 so it should work. https://gitlab.com/wg1/jpeg-xl/-/blob/main/lib/extras/codec_exr.cc#L115
veluca
Lastrosade damn the aur package points to the gitlab repo
2021-06-02 05:25:53
you might want to cleanbuild ๐Ÿ™‚
Lastrosade
2021-06-02 05:37:29
both libjpeg-xl and libjpeg-xl-git point to the gitlab repo
zebefree
2021-06-02 05:39:48
The gitlab and github repos are in sync, so the main branch is the same.
2021-06-02 05:42:01
Oh gitlab has both a main branch and a master branch, and they are different... <:WTF:805391680538148936>
veluca
2021-06-02 05:56:43
that *might* be my fault
Deleted User
2021-06-02 06:00:32
And why do automated GitHub checks fail after merging with main but not in pull requests?
_wb_
2021-06-02 06:15:05
More exhaustive checks are done after merge, too much effort to run them at every pull request update
Deleted User
2021-06-02 08:08:38
Oh, msan builds are passing again, nice
veluca
2021-06-02 08:51:25
it's actually nondeterministic...
2021-06-02 08:53:35
you have no idea how much I'm hating that bug ๐Ÿ˜›
2021-06-03 12:02:41
I dunno about a description
2021-06-03 12:03:15
but it corresponds to something like being visually lossless when zoomed
_wb_
2021-06-03 12:54:34
-d 1.0 is strictly speaking not quite visually lossless, it is 1 unit of just-noticeable-difference so basically in the worst part of the image, half of the people should just barely see a difference when flipping between original and compressed
2021-06-03 12:54:58
half of a just-noticeable-difference should be a not-noticeable-difference ๐Ÿ™‚
2021-06-03 12:56:02
of course in practice it depends a lot on how much effort you are spending on spotting a difference, and even -d 2.0 can be "visually lossless" according to some definitions
2021-06-03 12:58:15
if you define "visually lossless" as "confidence interval of MOS score is overlapping with the confidence interval of the MOS score of the original", then probably for some images even -d 3.0 is "visually lossless"
fab
2021-06-03 01:00:50
-d 2.92394 -s 8
2021-06-03 01:00:55
should be good for web use
2021-06-03 01:01:09
but i don't know what compression achieves
2021-06-03 01:11:59
is good
2021-06-03 01:13:03
33065 kb
2021-06-03 01:14:23
s 9 is still not particularly on this (low bitrate)
2021-06-03 01:14:51
but for medium quality compression density has improved
2021-06-03 01:15:04
by very much
2021-06-03 01:16:15
so i think even for artwork
improver
2021-06-03 03:09:29
what CFLAGS you're using
2021-06-03 03:09:36
in `/etc/makepkg.conf`
2021-06-03 03:11:16
iirc archlinux recently changed their stuff and new compilation flags made things fail for me so I'm using something less rigid
veluca
2021-06-03 03:21:57
mhhh, weird, it works for me...
improver
2021-06-03 03:23:30
it did fail for me too when I tried transfering CFLAGS from `/etc/makepkg.conf.pacnew` to `/etc/makepkg.conf`
Kleis Auke
Kleis Auke BTW, is it necessary to add myself to `AUTHORS`, even for small changes?
2021-06-03 05:28:51
Oh, I noticed that <https://github.com/libjxl/libjxl/pull/24> landed after <https://github.com/libjxl/libjxl/pull/23> and <https://github.com/libjxl/libjxl/pull/16>. Should I open a PR to add myself to `AUTHORS` for copyright purposes?
lithium
2021-06-03 05:34:44
I like this distance description from Jyrki Alakuijala. > -d 4.1 means that you accept errors that are 4.1x what I consider just-noticeable-error. > at -d 1.0 you would get exactly what I consider just-noticeable-errors. And this from old version jxl > Usage: cjpegXL_jxl.exe [OPTIONS] > 100 = mathematically lossless. Default for already-lossy input (JPEG/GIF) > 95 = visually lossless (flicker-test). > 90 = visually lossless (side by side). Default for generic input.
Petr
_wb_ not the contributors list, only the authors list
2021-06-04 06:41:45
OK, but I'll need to learn something first. I started with "Fetch and merge" in my fork. What should I do next? Edit AUTHORS in my fork and make another PR?
_wb_
2021-06-04 06:44:55
`git commit AUTHORS --amend`
Petr
2021-06-04 06:48:41
And what if I (try to) contribute only from a web browser? ๐Ÿ™‚
Pieter
2021-06-04 06:49:49
On github you can create edits in pull requests directly from the web interface
2021-06-04 06:50:00
I've never used it myself though.
Petr
2021-06-04 07:33:25
I couldn't figure out how to modify an existing PR. So I created a new one. I hope it's how it should be. If not, let me knowโ€ฆ๐Ÿ˜œ
veluca
2021-06-04 07:57:43
you don't need to modify the commit, github will happily squash multiple commits if you have >1
_wb_
2021-06-04 05:33:30
Cool, a PR for better lossy palette? https://github.com/libjxl/libjxl/pull/108/files
lithium
2021-06-04 05:43:00
Hope pingo dev can provide some code, pingo lossy palette implement(RGB24, RGBA32) is work very well on pixel art content. https://css-ig.net/pingo
_wb_
2021-06-04 05:52:14
<@826537092669767691> is also very familiar with that kind of thing
2021-06-04 05:53:12
In jxl you can do funkier stuff than just a color palette though, you can also have delta palette entries which is kind of a game changer
2021-06-04 05:55:32
It means you don't have to resort to dithering to do slow gradients in palette mode, you can use deltas and get actual smooth gradients.
Scope
2021-06-04 05:57:31
Perhaps the Rust version of JXL will motivate new experiments
veluca
2021-06-04 05:58:33
no pressure there, huh?
2021-06-04 05:58:34
๐Ÿ˜›
Crixis
2021-06-04 06:00:09
No rust no adoption
veluca
2021-06-04 06:00:38
I'm not sure what to start with on that rust reimplementation - both a fully featured, but possibly not so fast decoder and just a simple JPEG-to-JXL transcoder seem pretty interesting...
2021-06-04 06:00:50
<@!826537092669767691> <@!239702523559018497> any opinions there? ๐Ÿ˜›
_wb_
2021-06-04 06:05:22
Both are interesting from a spec validation pov - a full decoder is more useful than a partial encoder, but both are good to find spec bugs
Kornel
2021-06-04 06:52:42
I'd love a Rust version
2021-06-04 06:53:59
I'm stretched thin between too many projects, so don't wait for me to write one
2021-06-04 06:55:11
From security perspective of course the most important part is parsing in the decoder
veluca
2021-06-04 06:55:44
unfortunately I'm not exactly overflowing with free time either ๐Ÿ˜† but it's fun, so I do try to find the time ๐Ÿ™‚
Kornel
2021-06-04 06:56:03
But OTOH for deployment server-side, decoders are irrelevant.
2021-06-04 06:57:06
So for me it'd be important to have an encoder which can guarantee it won't leak uninitialised memory in the file, or do anything silly like that
veluca
2021-06-04 06:57:25
fair enough, fair enough
Kornel
2021-06-04 06:57:46
Just a JPEG transcoder may be fine for a start
veluca
2021-06-04 06:57:51
since you're the Rust expert here ๐Ÿ˜› - are you aware of any library that is able to do low level parsing of JPEGs?
2021-06-04 06:58:13
well, I guess crate is the correct word
Kornel
2021-06-04 06:58:28
https://lib.rs/jpeg-decoder
veluca
2021-06-04 06:59:05
yeah, I had seen that one, but IIRC it doesn't expose things like DCT coefficients or quantization tables
Kornel
2021-06-04 06:59:16
I've hacked this one to build https://lib.rs/crates/cloudflare-soos
veluca
2021-06-04 06:59:32
I believe I even opened an issue about that
Kornel
2021-06-04 06:59:33
It exposes its source code ๐Ÿ˜„
veluca
2021-06-04 06:59:40
ok, fair enough ๐Ÿ˜›
2021-06-04 07:01:41
I guess a JPEG recompressor would be a much easier task than a full-featured decoder too...
_wb_
2021-06-04 07:44:36
Should there be any Rust coder who wants to do part of a decoder (or encoder), I am happy to (try to) explain any part of the spec / reference code
veluca
2021-06-04 07:49:16
me too, but I can also help with the coding itself (if you're willing to deal with my lacking Rust knowledge)
Pieter
2021-06-04 07:55:51
so you could say your Rust knowledge is... rusty ๐Ÿ˜Ž
veluca
2021-06-04 07:57:01
yes ๐Ÿ˜›
Nova Aurora
Pieter so you could say your Rust knowledge is... rusty ๐Ÿ˜Ž
2021-06-04 07:57:18
Hasn't been tempered yet .... rusty means it has decreased over time, rather than needing to be built up
veluca
2021-06-04 07:57:36
I did actually write some Rust code ~3 years ago
2021-06-04 07:58:28
I don't remember *what* I wrote, I thought it was this https://github.com/edomora97/task-maker-rust but apparently not
2021-06-04 08:00:12
ah, it was a rewrite of this https://github.com/algorithm-ninja/cmsocial in rust but it never got to see the light of day ๐Ÿ˜„
Jyrki Alakuijala
_wb_ Cool, a PR for better lossy palette? https://github.com/libjxl/libjxl/pull/108/files
2021-06-07 07:45:57
Finally we get delta palettization to produce occasionally better results than jxl:d1, i.e., lower bpp, lower butteraugli max, lower p norm
2021-06-07 07:46:26
for example the graphics example image from squoosh.app falls into this category
2021-06-07 07:46:39
also images with some gradients have worked
2021-06-07 07:47:04
next up with Iulia we will possibly try to add k means clustering of deltas -- that should improve the delta palettization further
lithium Hope pingo dev can provide some code, pingo lossy palette implement(RGB24, RGBA32) is work very well on pixel art content. https://css-ig.net/pingo
2021-06-07 07:48:06
Delta palette is a different animal where different compromises make sense
`middleout` IMHO it's an option the most worth exposing from that list. Essentially it reorders AC coeffs so they get enhanced from the middle in a spiral pattern instead of usual top-down progression.
2021-06-07 07:52:27
middle-out is great -- but if there are very frequent updates then the visual activity will be confusing -- with middle-out you need Chrome to throttle (like it naturally does) the progressive updates, if you make a video of each tile update (the way progression is sometimes demonstrated), the viewer will get hypnotized or has an epilepsy stroke half way down the image.
2021-06-07 07:53:26
the middle-out episode from Silicon Valley is more inappropriate than our memories of it
2021-06-07 07:53:56
possibly it would be good to call middle-out middle-out only inofficially, and call it center-first in the official documentation/binary
_wb_ That's quite a visible difference - I cannot see any banding in the dithered one, while in the nondithered one it is quite obvious
2021-06-07 06:07:21
It is funny that we had dithering in pik -- it got removed at some stage because of decoding speed optimizations and no obvious reduction of quality -- but I anticipated that it will get back, now happy to have it again ๐Ÿ˜„
_wb_
2021-06-07 06:24:39
Well it's not in libjxl atm, afaik, but it's an easy add since <@179701849576833024> has written the code for it
Deleted User
Jyrki Alakuijala It is funny that we had dithering in pik -- it got removed at some stage because of decoding speed optimizations and no obvious reduction of quality -- but I anticipated that it will get back, now happy to have it again ๐Ÿ˜„
2021-06-07 06:38:47
Did you just read everything you missed during your month of absence?
Scope
2021-06-07 07:14:12
๐Ÿค” <https://docs.google.com/document/d/1mdvt5Q7987wfFwLypDFx7CslQMWmx7R8ytJKSMKKD80/>