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

_wb_
2021-07-17 07:31:25
If you do a downscale (say 50%) of a camera picture, what happens to the noise model?
spider-mario
2021-07-17 07:37:53
unless my math is off, you would use twice the read noise and half the PRNU that you would use for the full-resolution version
_wb_
2021-07-17 07:53:51
Might be useful to have a scale-factor parameter too
2021-07-17 07:54:35
Even better of course would be fully automatic noise estimation
Scope
2021-07-18 06:34:36
πŸ€” `-s 8 -q 30 --resampling=2` ```JPEG XL encoder v0.3.7 [AVX2] Read 1473x820 image, 47.2 MP/s Encoding [VarDCT, d6.400, kitten], 8 threads. ../lib/jxl/image_bundle.cc:62: JXL_CHECK: ec.xsize() == xs```
2021-07-18 06:35:54
Looks like `resampling` does not work correctly with `-s` higher than `7` But, it would be nice if someone else could reproduce it (maybe it's a bug only in my build)
_wb_
2021-07-18 06:46:48
That or it's a problem with the alpha channel?
Scope
2021-07-18 06:47:31
No, it happens on different images
_wb_
2021-07-18 06:47:43
Also on ppms?
Scope
2021-07-18 06:48:30
Yep, sometimes without error messages, but encoding does not work
_wb_
2021-07-18 06:51:31
Maybe open a GitHub issue? We have to test s8+ better...
Scope
2021-07-18 06:54:14
And `-s 1` ... `-s 7` works fine
veluca
2021-07-18 07:01:42
not *super* surprised...
raysar
Scope πŸ€” `-s 8 -q 30 --resampling=2` ```JPEG XL encoder v0.3.7 [AVX2] Read 1473x820 image, 47.2 MP/s Encoding [VarDCT, d6.400, kitten], 8 threads. ../lib/jxl/image_bundle.cc:62: JXL_CHECK: ec.xsize() == xs```
2021-07-18 07:55:56
same for my build at s8 and s9
frank cilantro
2021-07-18 11:34:46
I am trying to convert a ton of jpegs to jpegxl in parallel
2021-07-18 11:35:03
I have a concurrent lock-free queue to handle the multithreaded reading of files
2021-07-18 11:35:40
I imagine I am supposed to use a single ThreadParallelRunner, and one instance of the jxl encoder for each thread, right?
2021-07-18 11:36:10
but for some reason (and this might be some kind of c++ life cycle thing that I do not understand) when I use a concurrent queue, I get segfaults
2021-07-18 11:36:16
but serial queue it doesnt segfault
2021-07-18 11:36:43
does this sound like i am running into some known pitfall about threadparallelrunner?
veluca
2021-07-19 12:17:34
yeah, don't use a single parallel runner
2021-07-19 12:17:38
it's not thread safe
2021-07-19 12:17:44
you can just pass a nullptr instead
frank cilantro
2021-07-19 12:36:30
ah ok cool thx
yurume
2021-07-20 08:52:01
is `--resampling` a recent addition to the bitstream? I mean, I've enabled experimental JXL support in Chrome and any resampling factor > 1 doesn't render there...
_wb_
2021-07-20 08:54:59
It was implemented ok, then became buggy when we were optimizing the decoder to use less memory, now it's ok again
yurume
2021-07-20 08:55:18
ah, so just a buggy decoder prematurely shipped in Chrome.
_wb_
2021-07-20 08:56:24
Yes, well, 'shipped' in an experimental option that requires you to manually enable it and that shows some warnings first
yurume
2021-07-20 08:57:03
ah of course, I'm very aware of that, just wondered if this is (or was) a libjxl bug or very late bitstream addition.
eddie.zato
2021-07-24 03:01:45
Is this behavior correct? ``` PS > cjxl -kuku Unknown argument: -kuku Use 'cjxl.exe -h' for more information PS > $LastExitCode 1 ``` but ``` PS > cjxl 0.jpg 1.jxl JPEG XL encoder v0.5.0 [SSE4,Scalar] Failed to read image 0.jpg. PS > $LastExitCode 0 ```
2021-07-24 03:01:54
I'm writing a script for batch encoding a large number of files, and I need to check if `cjxl` failed on some files.
_wb_
2021-07-24 06:08:27
Please open an issue, it should only return 0 on success
eddie.zato
2021-07-24 06:57:48
Done
tufty
2021-07-26 11:43:41
oss-fuzz is reporting an out of bounds write in libjxl master https://github.com/libjxl/libjxl/issues/360
_wb_
2021-07-26 11:52:29
looking...
improver
2021-07-26 12:21:18
2021-07-26 12:21:49
is it just me or libjxl-git failing tests for anyone else too?
_wb_
2021-07-26 12:34:34
nope, not just you
2021-07-26 12:34:38
looks like https://github.com/libjxl/libjxl/commit/b4c01782212931014c603d337d762174a742c5b6 broke something
azzy3295
2021-07-29 12:22:43
Hi, guyz im new here and im trying to find a way to utiliza jpgXL via Python is there anyone hrere that can help me?
veluca
2021-07-29 02:00:30
I don't think we have any bindings yet
Eugene Vert
2021-07-29 02:35:53
https://github.com/olokelo/jxlpy Maybe this will help?
frank cilantro
2021-07-30 05:21:45
hello again. by the way thank you for the wonderful library. i was wondering what is the minimal set of api calls to convert a jpeg stream lossily? i am setting encoder distance, setting effort, setting lossless false, and calling add jpeg frame, but it to just do lossless xcode. i was hoping to avoid the whole setsrgb/basicinfo stuff but if i have to set that also then i will try to incorporate that
_wb_
2021-07-30 05:25:06
The api only supports pixel input if you want to do lossy
2021-07-30 05:25:41
So if your input is a jpg, you have to decode it yourself
frank cilantro
2021-07-30 05:38:52
ah ok thanks for the clarification πŸ™‚
veluca
2021-07-30 05:41:51
is that actually true? πŸ˜›
_wb_
2021-07-30 05:52:14
I think so - but not 100% sure.
2021-07-30 05:54:05
Afaik there's an api to encode pixels with whatever options, and then there's an api to encode jpeg files losslessly
veluca
2021-07-30 07:41:13
I *think* it actually allows to do lossy compression if you feed a JPEG
spider-mario
2021-07-30 08:43:34
isn’t our jpeg-to-pixels code in extra/?
2021-07-30 08:44:01
which I thought we ensured the C library wouldn’t depend on
2021-07-30 08:44:25
I may be saying completely wrong things though
veluca
2021-07-30 09:05:52
ah, we don't really have a good way of doing JPEG to pixels, indeed, so nvm
2021-07-30 09:06:20
I mean, you can always do JPEG lossless recompression, decompress that to pixels, and then feed that to lossy JXL... xD
_wb_
2021-07-30 09:09:51
Heh yes, that you can do with just the api
2021-07-30 09:11:21
I suppose we could/should add a "decode jpeg bitstream to pixels" function to the api, it would be easy enough to add that without implementing new stuff
2021-07-30 09:12:05
With the added advantage that you no longer need libjpeg-turbo in your application if you need it only for decode
improver
2021-07-30 11:43:05
delta palettes are cool
lyxia8657
2021-07-30 11:43:21
Deltas are differences, in the case of this commit they are colour differences that are useful enough (frequent and high-valued) to be added to the palette.
2021-07-30 11:50:19
This change only applies to lossy compression.
2021-07-30 11:55:15
You're welcome. πŸ™‚
testerrrrr
2021-07-31 12:17:54
are the DCT coefficients float32?
_wb_
testerrrrr are the DCT coefficients float32?
2021-07-31 06:05:24
In the implementation, after dequant, yes. The bitstream contains integer quantized coeffs, but the quant table is float and the dequanted coeffs are float too
2021-07-31 06:06:01
(we are investigating fixed point implementations)
Scope
2021-07-31 10:55:19
Also, are improvements in decoding features in browsers not currently in development anymore? Like progressive decoding, multithreading, etc.
_wb_
2021-07-31 11:41:39
<@795684063032901642> any idea what the status is regarding progressive jxl?
2021-07-31 11:42:10
Multithreaded decode in browsers, I don't think that will happen anytime soon
Scope
2021-07-31 11:51:02
Firefox supports multi-threaded decoding and the difference on large images (especially lossless) is significant compared to Chrome Otherwise, I think it's better to have a complete full-featured decoder as early as possible, without waiting for the status when it can be enabled by default (even considering that it has been postponed)
_wb_
2021-08-01 06:26:58
That looks like an unnecessary dependency.
veluca
2021-08-01 07:04:38
gperftools? Why is that a dependency at all?
2021-08-01 07:04:45
Ah, I guess it's for tcmalloc
2021-08-01 10:36:19
It is! tcmalloc is one of those performance tools xD
2021-08-02 04:46:35
now the actual release is out: https://github.com/libjxl/libjxl/releases/tag/v0.5
fab
2021-08-02 05:09:48
already updated wikipedia italian and English
_wb_
2021-08-02 05:44:45
Somewhat weird that we went from 0.3.7 to 0.5 in the releases
spider-mario
2021-08-02 05:47:12
0.4 shall henceforth be known as _the forgotten release_
2021-08-02 05:47:30
we do not talk about it
_wb_
2021-08-02 05:52:35
It's in chrome 92-93 though, no?
spider-mario
2021-08-02 05:54:30
_shh_
lithium
2021-08-02 05:57:04
the forgotten release, that sounds cool, like a top secret πŸ˜›
2021-08-02 06:01:45
new rules πŸ˜› : > Q: Why we don't have libjxl 0.4? > A: Don't ask, that's top secret.
veluca
_wb_ It's in chrome 92-93 though, no?
2021-08-02 06:43:50
nope!
_wb_
2021-08-02 06:57:14
What is using the 0.4.x branch then?
veluca
2021-08-02 07:02:01
chrome
2021-08-02 07:02:15
but not the 0.4 *release*, which just doesn't exist xD
_wb_
2021-08-02 07:07:32
Ah yes
2021-08-02 07:08:39
It's the 0.4.x series that has instantiations in chrome but has zero releases
spider-mario
lithium new rules πŸ˜› : > Q: Why we don't have libjxl 0.4? > A: Don't ask, that's top secret.
2021-08-02 08:00:49
A: because of… the incident.
_wb_
2021-08-02 08:03:44
When encoder heuristics become too powerful, it's better to nip it in the bud than to risk a catastrophic singularity. Just saying.
fab
2021-08-02 08:04:43
_wb_
2021-08-02 08:04:48
(I, for one, welcome our libjxl 0.4 robot overlords)
fab
2021-08-02 08:05:05
strange that firefox capture didn't captured github page
Eugene Vert
2021-08-03 11:15:30
From the "release process documentation", it seems that the main git branch will always get the v0.3.7 tag from `git describe --long --tags`?
testerrrrr
2021-08-04 06:02:31
how can I dump the probability distributions generated by the predictor?
_wb_
2021-08-04 06:07:19
There's no code for that yet, afaik. You'll have to hack it in.
testerrrrr
2021-08-04 06:33:10
ah ok
2021-08-04 06:33:27
know any good starting points? I imagine somewhere in encode_frame would be good to start, right?
_wb_
2021-08-04 06:51:06
What would make most sense I guess is to modify the code that dumps a MA tree (it's behind a compile flag) to also dump the distribution in each node
2021-08-04 06:52:30
(that is, the ctx id, and then dump the distribution for each ctx id)
2021-08-04 06:53:29
The MA tree is effectively a DAG, not a tree, since there is still context clustering happening which unifies tree leaves
testerrrrr
2021-08-04 07:07:03
great that's really helpful ty πŸ™‚
improver
2021-08-05 01:35:08
definitely sounds possessed
Cool Doggo
2021-08-05 01:39:30
you deleted your github account?
improver
2021-08-05 01:39:58
tbh you're thinking abt this case too much lmao
2021-08-05 01:40:40
some things are best left unresolved :^)
diskorduser
2021-08-05 02:15:28
Qt jxl plugin doesn't work when I use 'make install' to install libjxl but it works fine when I use arch aur package. Idk why.
2021-08-05 03:07:31
I run cjxl daily on arch linux. It never happened.
veluca
2021-08-05 11:52:25
https://github.com/libjxl/libjxl/actions/runs/1101231986 Linux builds for every commit πŸ™‚
2021-08-05 11:52:40
(windows builds are a WIP...)
Scope
2021-08-05 12:14:49
<@!532010383041363969> It seems that similar color shifts that I wrote about on encode.su a long time ago still happen From AV1 discord: > **just leave weebs alone**: i was encoding a image with a bunch of noise on it with cjxl at s7 d1 with build 0.5.0 and i noticed a large color shift > source: > https://cdn.discordapp.com/attachments/673202643916816384/872678376979197952/song.png
2021-08-05 12:15:02
> s7 d 1 > https://cdn.discordapp.com/attachments/673202643916816384/872678396788879461/fucked.png
Jyrki Alakuijala
2021-08-05 02:24:13
Nice! Could you find the smallest image where this happens and file it as an issue?
2021-08-05 02:25:13
likely this relates to having different color modeling and different compression curves, but it could relate to many other things like CfL
2021-08-05 02:25:27
having this clear of an example should make it easy for use to fix this
2021-08-05 02:25:37
does it also go wrong with s9 ?
2021-08-05 02:27:29
and congratulations -- this is the worst d1 artefact I have seen πŸ˜„
Scope
2021-08-05 03:02:43
Yep, same for `-s 9` Source:
2021-08-05 03:02:49
2021-08-05 03:03:11
`-d 1 -s 9`
2021-08-05 03:24:15
Full resolution: `-d 1 -s 9`
2021-08-05 03:27:04
Hmm, the color shift is still there, but the result is different πŸ€”
2021-08-05 03:28:40
Full resolution: `-d 1 -s 7` Yep, with `-s 7` the differences are more noticeable
2021-08-05 03:44:19
Cropped 32x32 source:
diskorduser
2021-08-06 01:27:50
I think he had installed old jxl build from archlinuxcn repo. So it complained about missing dependencies.
veluca
2021-08-06 02:46:37
don't want to promise anything but it looks like Arch devs are looking into adding libjxl to official repos πŸ˜„
improver
2021-08-06 02:47:11
nice
diskorduser
2021-08-06 02:47:59
But even though they are taking more time imo
2021-08-06 02:51:59
Too many dependencies. This is too much
veluca
2021-08-06 02:55:06
they're mostly build deps, and they (and we) are working on trimming down that list for the binary package πŸ™‚
diskorduser
2021-08-06 04:17:21
I had to edit pkgbuild , remove unnecessary stuffs and compile
veluca https://github.com/libjxl/libjxl/actions/runs/1101231986 Linux builds for every commit πŸ™‚
2021-08-06 04:22:32
Is it possible to make aur-git binary package using .deb or static? Afaik many aur bin packages were made using deb packages.
improver
2021-08-06 04:23:06
libjxl-bin-git or libjxl-git-bin <:Thonk:805904896879493180>
veluca
2021-08-06 04:23:22
you shouldn't ask me πŸ˜›
diskorduser
2021-08-06 04:23:22
Later
2021-08-06 04:23:30
Hmm
veluca
2021-08-06 04:23:51
anyway it likely won't work
diskorduser
2021-08-06 04:24:05
Oh my bad
veluca
2021-08-06 04:24:21
because debian has different library versions
2021-08-06 04:24:42
having said that - for a git package specifically building it yourself is a better idea
diskorduser
2021-08-06 04:25:37
Does static work? Last file in the list
2021-08-06 04:46:15
Looks like it might work.
veluca
2021-08-06 05:27:23
yeah it probably would
190n
2021-08-06 08:41:16
``` install: cannot stat 'build/tools/libjxl_jni.so': No such file or directory ==> ERROR: A failure occurred in package_libjxl(). Aborting... ``` anyone get this trying to build the `libjxl` aur package?
2021-08-06 08:41:47
fwiw it asked me which jdk to install and i selected 11
veluca
2021-08-06 08:59:49
IIRC it works for me
diskorduser
2021-08-06 09:30:59
Try deleting src/build folder and try compiling again
190n
2021-08-06 09:53:28
same error
diskorduser
2021-08-06 09:56:19
I removed the install line and java depends and edited the configure to not build jni ha ha.
190n
2021-08-06 09:58:51
what goes in the configure for that?
diskorduser
2021-08-06 10:00:31
I edited the configure line in pkgbuild
190n
2021-08-06 10:02:05
yeah but what did you change? idk what variable it is. `-DJPEGXL_ENABLE_JNI` or something?
diskorduser
2021-08-06 10:03:43
Sorry. You don't need to edit cmake line. Just remove the ' install -D -m755 build/tools/libjxl_jni.so -t "${pkgdir}/usr/lib" '
190n
2021-08-06 10:04:36
oh ok thank you!
veluca
2021-08-07 12:09:35
Yep, I've been chatting with him :P
2021-08-07 10:14:04
It can be used for both
veluca (windows builds are a WIP...)
2021-08-07 10:28:26
here: https://github.com/libjxl/libjxl/actions/runs/1106694153
fab
veluca here: https://github.com/libjxl/libjxl/actions/runs/1106694153
2021-08-07 10:33:13
i still don't find the file
veluca
2021-08-07 10:34:52
jxl-x64-windows-static?
fab
2021-08-07 10:35:33
yes
2021-08-07 10:35:55
i posted in jxl a screen of what i'm seeing
2021-08-07 10:36:03
do not know what i should run
veluca
2021-08-07 10:39:54
there is cjxl.exe and djxl.exe in the zip
2021-08-07 10:40:16
mh wait
2021-08-07 10:40:56
ah, doesn't seem to work if you're not logged in...
Scope
2021-08-07 10:43:07
veluca
2021-08-07 10:44:09
can you download them?
Scope
2021-08-07 10:45:00
Yep **jxl-x64-windows-static.zip** ``` benchmark_xl.exe cjxl.exe djxl.exe LICENSE.giflib LICENSE.jxl LICENSE.libjpeg-turbo LICENSE.libpng LICENSE.libwebp LICENSE.zlib```
veluca
2021-08-07 10:45:54
so you just need to be logged in github
2021-08-07 10:45:59
could be worse I guess...
lithium
2021-08-07 10:49:34
msvc and clang which compiler is better?
Scope
2021-08-07 10:50:22
In this case, yes, Appveyor seems to be better, because it allows downloading without a login Msvc also uses Clang (for JXL), it's just a working environment
lithium
2021-08-07 10:51:20
I understand, thank you πŸ™‚
Scope
2021-08-07 11:01:27
Although, I think if putting important versions in Releases, it's ok to download nightly builds only when logged in
veluca
Scope Although, I think if putting important versions in Releases, it's ok to download nightly builds only when logged in
2021-08-07 11:03:04
I'm making some script that puts on my webserver all the nightly builds πŸ˜› if someone will want to build an UI for it at some point, I would consider including it, otherwise you just get a directory listing πŸ˜›
_wb_
2021-08-07 11:03:56
If you can make a symlink that always points to the most recent one, we can link it on jpegxl.info
veluca
2021-08-07 11:07:27
should be doable...
_wb_ If you can make a symlink that always points to the most recent one, we can link it on jpegxl.info
2021-08-07 04:22:53
Uh, just noticed that I followed up on this on <#794206170445119489> πŸ˜„ anyway, now it's done: https://artifacts.lucaversari.it/libjxl/libjxl/latest/
fab
2021-08-07 04:23:45
why did you delete windows builds
veluca
2021-08-07 04:27:29
they are there
2021-08-07 04:27:48
I was rerunning the thing so you might have seen something a bit old
improver
2021-08-07 04:30:17
I suggest noting fabian's IP and hiding them only from him
fab
2021-08-07 04:33:28
bad suggestion
damian101
2021-08-12 06:32:42
building libjxl from the AUR fails with ``` -- Installing: /home/damian101/.cache/yay/libjxl/pkg/libjxl/usr/bin/djxl make: Leaving directory '/home/damian101/.cache/yay/libjxl/src/build' install: cannot stat 'build/tools/libjxl_jni.so': No such file or directory ```
190n
2021-08-12 06:33:17
i got that issue too
2021-08-12 06:33:29
i fixed it by removing everything about jni from the PKGBUILD
2021-08-12 06:33:48
but it now successfully builds with an unmodified pkgbuild
2021-08-12 06:34:03
i think i had some outdated packages the first time i tried building it, are you up to date?
damian101
190n i think i had some outdated packages the first time i tried building it, are you up to date?
2021-08-12 06:41:06
yes, just updated the system a few hours ago
190n
2021-08-12 06:42:40
try this pkgbuild
damian101
190n try this pkgbuild
2021-08-12 07:47:04
works
frank cilantro
2021-08-12 09:44:14
is it possible to decode a subregion of an image?
veluca
2021-08-12 10:00:29
in theory yes
2021-08-12 10:00:33
but we never wrote that code
Deleted User
2021-08-13 01:13:16
Relevant GitLab issue: https://gitlab.com/wg1/jpeg-xl/-/issues/28
Joan Leon | ⚑PerfReviews
2021-08-13 05:41:59
Run binary in OS X https://github.com/libjxl/libjxl/issues/395#issuecomment-898024551
veluca
2021-08-13 01:03:47
well, it was an easy fix πŸ˜›
2021-08-13 01:04:12
discord comments can get lost more easily
improver
2021-08-13 01:59:44
not really. that's a role for an issue tracker
2021-08-13 02:14:48
I though github already had something like that for a while..? Is that different from default text for issues
2021-08-13 02:15:03
I quite like golang's default issue text tbh
2021-08-13 02:28:25
interesting. could be helpful. though i hope one could just do free form text too if needed
2021-08-13 02:29:31
having dedicated place for putting content needed for issue reproduction may remind people to put stuff there
2021-08-13 02:29:52
but not all kind of issues are the same, and not all issues are problems
2021-08-13 02:37:27
I don't like `blank_issues_enabled: false`. One can do that only after analyzing existing issues properly, and having good sample size of them, and even then I think it'll result in needlessly inflexible workflows
Scope
2021-08-16 03:27:44
Btw, about `--resampling=x`, it still doesn't work together with `--target_size`? Hmm, I get it, `--target_size` works with `--resampling`, but the speed above `-s 7` does not work https://github.com/libjxl/libjxl/commit/71937822464bbdef422e8876a91a14dab775db66
diskorduser
2021-08-16 03:46:34
Is it better than lanczos2 / lanczos2sharp
Deleted User
2021-08-16 08:34:54
Is it just me or are resampled <:JXL:805850130203934781> files borked for everyone? It shows just the top-left part of the image...
2021-08-16 08:36:21
And it's not just Chrome... Firefox Nightly does it, too.
2021-08-16 08:36:52
They both treat the rest of the image as... transparent?
_wb_
2021-08-16 09:04:38
What about chrome canary?
Deleted User
_wb_ What about chrome canary?
2021-08-16 09:05:09
That was literally Chrome Canary 😜
veluca
2021-08-16 09:37:57
uhm, that might be bad
Scope
2021-08-16 10:52:01
Yep
2021-08-16 10:53:15
2021-08-16 11:15:21
And it's not just in browsers, it seems to be a problem in libjxl Nomacs:
2021-08-16 11:16:05
2021-08-16 11:22:15
As has been said before, it would be nice to have a site with different test JXL images with different encoding options, preferably all on one page, for quick visual testing of correct decoding
Deleted User
2021-08-17 12:28:39
libjxl failed, but `djxl` decoded those images flawlessly, as you might've seen in <#803645746661425173>
_wb_
2021-08-17 06:06:59
Sounds like something that is broken in the api?
veluca
2021-08-17 06:52:58
yeah probably
Petr
veluca here: https://github.com/libjxl/libjxl/actions/runs/1106694153
2021-08-17 07:07:30
This is a great progress, thanks!
2021-08-17 07:07:55
Now the questions: 😜
2021-08-17 07:09:11
Why do the license files have those strange extensions? E.g. the "LICENSE.jxl" seems like a jxl image.
2021-08-17 07:09:53
Could more binaries be include please? As always, I'm particularly interested in the GIMP plugin.
diskorduser
2021-08-17 07:11:37
There is gimp plugin from another developer. It works fine
Petr
diskorduser There is gimp plugin from another developer. It works fine
2021-08-17 07:14:18
Yup. But people don't want to search for builds. If someone feels like trying jxl, why shouldn't we give them the binaries straightforwardly?
diskorduser
2021-08-17 07:16:24
I'm just saying there is gimp plugin. Idk about binaries.
2021-08-17 07:17:55
By more binaries, you mean windows and Mac OS?
veluca
Petr Why do the license files have those strange extensions? E.g. the "LICENSE.jxl" seems like a jxl image.
2021-08-17 07:19:01
I think it's a standard way of writing it, i.e. LICENSE.brotli is a thing
Petr Could more binaries be include please? As always, I'm particularly interested in the GIMP plugin.
2021-08-17 07:19:09
good question, I'll ask...
_wb_
libjxl failed, but `djxl` decoded those images flawlessly, as you might've seen in <#803645746661425173>
2021-08-17 07:28:00
could you open a github issue for this?
Petr
diskorduser By more binaries, you mean windows and Mac OS?
2021-08-17 07:28:51
As I'm on Windows, I mean mainly the GIMP plugin for Win. Jxlinfo.exe could be useful too. Of course, Mac users might like to see Mac builds. πŸ™‚
veluca
Petr As I'm on Windows, I mean mainly the GIMP plugin for Win. Jxlinfo.exe could be useful too. Of course, Mac users might like to see Mac builds. πŸ™‚
2021-08-17 07:30:30
if you want to open bugs for the missing features... πŸ˜›
Petr
veluca if you want to open bugs for the missing features... πŸ˜›
2021-08-17 07:45:34
If you mean it seriously (in spite of that tongue), then yeah, I can open a bug…
veluca
2021-08-17 07:45:49
I meant it seriously
2021-08-17 07:46:11
I do sometimes overly add emoticons πŸ˜› ( πŸ˜‰ )
Petr
2021-08-17 08:23:38
Can we call the builds at artifacts.lucaversari.it/libjxl/libjxl/latest "official builds"?
veluca
2021-08-17 08:31:04
I dunno, they are the github artifacts that I downloaded
2021-08-17 08:31:17
depends how much you trust me πŸ˜›
Petr
veluca depends how much you trust me πŸ˜›
2021-08-17 08:34:29
Quite a lot… πŸ˜‰
veluca
2021-08-17 08:35:10
so I don't think they properly count as official builds, but nightly builds from a dev is fair imho
Petr
2021-08-17 08:38:35
Besides opening that bug, I'd also like to update the list of links to Windows builds in Wikipedia articles. So I'm looking for long-term reliable candidates. And artifacts.lucaversari.it/libjxl/libjxl/latest seems promising.
2021-08-17 08:50:52
What's the best way for users to access nightly builds on github/libjxl/libjxl? It's hard to find them on https://github.com/libjxl/libjxl/actions.
veluca
2021-08-17 08:50:58
mhhh not sure if I want to make it that much official
2021-08-17 08:51:02
they are there
2021-08-17 08:51:26
I mean, artifacts.lucaversari.it exists exactly to get nightly builds from actions
fab
2021-08-17 08:52:46
THe new one commit has less quality
2021-08-17 08:52:59
the one with butteraugli quality 12.5 13
2021-08-17 08:53:07
it was the one i wrote it's worse
2021-08-17 08:53:29
doing better than the two delta perceptually don't mean good quality
2021-08-17 08:53:42
that's why we shouldn't nightly to encode
2021-08-17 08:53:50
especially with normal heuristicsa
2021-08-17 08:54:02
the one kiemez mentioned 722772
2021-08-17 08:54:05
was good
2021-08-17 08:54:13
but on r/av1 i wrote something
2021-08-17 08:55:18
like muscle get preserved, fat girls get preserved, orange get preserved, color get preserved, bpp is 0.477 0.478 bpp, quality when you tilt the screen is decent
2021-08-17 08:55:24
what could go wrong?
2021-08-17 08:55:33
all that isn't this like fake beard, d1 fidelity
Petr
veluca mhhh not sure if I want to make it that much official
2021-08-17 08:57:00
So you don't want to have your link in Wikipedia articles? 😒
improver
2021-08-17 09:05:46
I think that readme is better place for that than in wikipedia page.. I mean ive not seen many wikipedia pages having such links, and im not sure if it really makes sense
2021-08-17 09:08:04
thats just a detail of where semi-official builds are located of reference impl, which feels too zoomed in for page about format, overview of format itself, etc
eddie.zato
2021-08-17 09:08:35
> fat girls get preserved Okay, now I need a parameter for `cjxl` to get slim girls preserved.
improver
2021-08-17 09:09:55
link to builds should be provided somewhere ofc, and i think that libjxl's readme would be good place for that
2021-08-17 09:10:31
either that or semi-official jxl site i guess
veluca
Petr So you don't want to have your link in Wikipedia articles? 😒
2021-08-17 09:11:14
I'm not 100% sure how much it will stay up (it's a server here in my flat :P) - and also I think jpegxl.info might be a better place
improver
2021-08-17 09:11:28
just kinda feels wrong and too "implementation specific" to put that on wikipedia
fab
fab like muscle get preserved, fat girls get preserved, orange get preserved, color get preserved, bpp is 0.477 0.478 bpp, quality when you tilt the screen is decent
2021-08-17 09:12:06
<@!532010383041363969> until https://github.com/libjxl/libjxl/commit/71937822464bbdef422e8876a91a14dab775db66 it looks pretty usable but not sure how to measure quality, i have few files in png and the one i have are in 7z 7std files
veluca
Petr So you don't want to have your link in Wikipedia articles? 😒
2021-08-17 09:29:46
btw, you know you can send PRs to jpegxl.info, right?
Petr
veluca btw, you know you can send PRs to jpegxl.info, right?
2021-08-17 09:39:30
I know and I already did it. πŸ™‚
2021-08-17 09:42:57
Guys, do you find it a good idea to start putting the builds to https://github.com/orgs/libjxl/packages?repo_name=libjxl ? I'm about to submit a feature request for it…
veluca
2021-08-17 09:45:07
I believe we'll do that for releases
_wb_
2021-08-17 10:15:47
Nightly builds are not official in the sense that they might have severe bugs
Deleted User
veluca I think it's a standard way of writing it, i.e. LICENSE.brotli is a thing
2021-08-17 01:12:17
Maybe change it to `LICENSE.libjxl` so it doesn't look like a <:JXL:805850130203934781> image?
_wb_ could you open a github issue for this?
2021-08-17 01:37:39
Done πŸ™‚ https://github.com/libjxl/libjxl/issues/459
2021-08-17 01:53:46
By the way <@!794205442175402004>, what about this rebasing this (and merging into main branch)? https://github.com/libjxl/libjxl/pull/359#issuecomment-899723832
2021-08-17 01:54:51
And this: https://github.com/libjxl/libjxl/pull/358
_wb_
2021-08-17 02:13:28
right - not now, in the middle of funky segmentation stuff
Deleted User
_wb_ right - not now, in the middle of funky segmentation stuff
2021-08-17 02:14:04
Ok... πŸ˜›
2021-08-18 01:52:30
Yeah, this issue should probably be closed (since 176 is closed anyway): https://gitlab.com/wg1/jpeg-xl/-/issues/212
2021-08-18 01:54:00
...or at least let's wait until PRs 358 and 359 are merged, let's see if they'll fix GitLab issue 212.
_wb_ right - not now, in the middle of funky segmentation stuff
2021-08-18 02:22:31
You mean that automatic photo/synthetic partitioning from <#794206170445119489>? Damn, that's awesome!
veluca
2021-08-18 09:02:48
they can ask but it isn't going to happen πŸ˜›
_wb_
2021-08-18 09:03:20
<@!768090355546587137> <@!179701849576833024> Question about encode api: suppose I want to add logic that (at some slow speed setting) detects cases where lossless might actually be smaller than lossy. How would that fit in the API? Currently when a frame is added, the decision whether or not to do XYB has already been made (image header has been written already). So it's too late then in EncodeFrame to say "let's try lossless too and see if it is smaller"...
veluca
2021-08-18 09:18:57
no idea πŸ˜›
_wb_
2021-08-18 01:27:27
it doesn't really do lossless, it quantizes the colors in XYB, encodes that as a modular image, and subtracts what it encoded from the main image so what is left is (more or less) black
2021-08-18 01:28:10
and it just assumes that that will be better/smaller than using dct on that part of the image
2021-08-18 01:29:32
the heuristic itself is quite fast, as you can see in the pull request from the example image where everything is photographic so it doesn't do anything (but it still analyzes the image to detect if there's something nonphotographic)
veluca
2021-08-18 02:54:44
you could use EPF to reduce the problems of quantizing xyb, btw πŸ˜›
Scope
2021-08-18 03:00:59
> at a significant cost in speed (since every pixel now has to be en/decoded twice, and modular is slower than vardct) Is there a way to just skip the block?
veluca
2021-08-18 03:01:57
you can for example make the modular frame smaller and use more patches
fab
2021-08-18 04:42:57
Can just skip modular frame by changing jxl specification
Scope
2021-08-19 12:10:31
`--resampling=2` for example from a 1920x1080 image is this some sort of upscaling from 960x540?
_wb_
2021-08-19 12:23:24
yes, it will first downsample in the encoder, then encode, and in the decoder upsample again
improver
2021-08-19 12:24:16
is it possible to do fractional resampling eg 1.5
_wb_
2021-08-19 12:24:24
you can add `--already_downsampled -q 100` if you just want to see what the upsampling looks like
2021-08-19 12:24:56
(the default upsampling that is, in principle we can signal and use different upsampling kernels, but the encoder never does that atm)
2021-08-19 12:25:05
fractional resampling, no
2021-08-19 12:25:25
you can however set a header field for the "intrinsic dimensions" of the image
2021-08-19 12:25:57
which is supposed to be a hint to viewers that they should rescale whatever is encoded to those dimensions
2021-08-19 12:26:08
I don't think anything implements it yet though
2021-08-19 12:29:15
<@!768090355546587137> <@!795684063032901642> chrome should respect those intrinsic dimensions and treat them in the same way as the recent Exif thing (see https://github.com/eeeps/exif-intrinsic-sizing-explainer)
2021-08-19 12:30:36
that field was added to the jxl header exactly because it has render impact and all render impacting 'metadata' should be in the codestream, so you don't need Exif for that
Scope
2021-08-19 12:30:44
There is no benefit from reducing the resolution on one side only, like anamorphing does?
_wb_
_wb_ <@!768090355546587137> <@!795684063032901642> chrome should respect those intrinsic dimensions and treat them in the same way as the recent Exif thing (see https://github.com/eeeps/exif-intrinsic-sizing-explainer)
2021-08-19 12:31:46
could you make a test file for this and make chrome do the right thing with it?
Scope There is no benefit from reducing the resolution on one side only, like anamorphing does?
2021-08-19 12:33:05
there might be in some weird cases, though in normal cases I don't know of any perceptual reason why horizontal should be different from vertical
Scope
2021-08-19 12:36:30
As far as I remember human perception is a little less likely to notice such losses, although I may be confusing this with some other research
_wb_
2021-08-19 01:08:32
there are 3 different upsampling mechanisms in the jxl bitstream: - for YCbCr, there is the usual chroma upsampling like in JPEG, where horizontal and vertical sampling factors can be different and each of the 3 channels can be set independently. So you can do 420 and 422, for example. When chroma upsampling is used, vardct is limited in what is allowed though (has to be dct8x8 etc), and this exists only for jpeg recompression (it does not exist in XYB). The upsampling is done by the decoder and it is a fixed simple upsampling that matches what libjpeg-turbo does. - all 3 color channels can be upsampled at the same time, with a factor 2x, 4x or 8x, and same with any extra channels like alpha (extra channels get their own upsampling, but it has to be at least as much as the color, e.g. 1x color, 2x alpha, 8x depth is fine, but e.g. 2x color, 1x alpha is not allowed directly in one frame - you can still do it by using patches / two frames). This is a fancy non-separable upsampling filter, done by the decoder, and the upsampling kernel can be signaled. It's also per-frame. - for the whole image, there's a header field for intrinsic dimensions. This allows arbitrary non-integer resizing, e.g. to get a 1000x800 image from 256x128 pixels or from 1024x768 pixels. It is not done by the decoder though and the resize method is not part of the spec (so it is the application responsibility to deal with this).
BlueSwordM
2021-08-22 06:23:30
So, was a different type of quantization ever explored for jxl?
2021-08-22 06:25:48
I've been doing a lot of research regarding what was implemented(or enchanced) into AV1 from the Daala project, and I'm always reminded by Perceptual Vector Quantization: https://jmvalin.ca/daala/pvq_demo/ Other stuff: https://jmvalin.ca/daala/revisiting/
veluca
2021-08-22 10:25:44
Nah, we didn't... Vector quantization seems like it would have been very useful to avoid ringing, but we didn't try it
2021-08-22 10:26:08
I am thinking about doing trellis quantization though (not the same thing at all, ofc)
lithium
2021-08-22 10:44:16
In my opinion, I think trellis quantization not suitable for high quality, mozjpeg already have trellis quantization feature, but this feature will blurry some detail, so for high quality jpeg I prefer libjpeg.
veluca
2021-08-22 08:47:34
trellis quantization is just trying to get a better tradeoff between size and quality - AFAIU it should always be possible to get as high quality as you want with trellis
_wb_
2021-08-24 07:17:18
at the moment, -v -v is enough I think
2021-08-24 07:26:55
It probably depends on memory/cache properties
veluca
2021-08-24 08:16:21
I *wish* it was that simple!
2021-08-24 08:16:39
it also depends on things like the cooling solution that you have
2021-08-24 08:17:40
I think on most "normal" computers you do want to user hyperthreading - you want to skip it if you have a super-powerful PC
2021-08-24 08:17:54
but if you have fewer than, say, 8 physical CPUs...
2021-08-24 10:14:02
yeah you probably want as many threads as you can
2021-08-24 10:14:28
I think when # physical CPUs is <=4 it's always a good idea to use hyperthreading... at least on x86
2021-08-24 10:14:31
maybe
2021-08-24 10:23:13
user time is the total time your CPU spent working on it
_wb_
2021-08-24 10:23:15
it probably means it's not a good idea if you also want to do other things at the same time, and it will probably get your cpu hot faster (possibly causing thermal throttling), but otherwise I think real time is what you normally care about
veluca
2021-08-24 10:23:39
whether you care more about CPU time or waiting time, that's something you need to figure out πŸ˜›
2021-08-24 10:27:55
yeah that usually works πŸ˜›
Deleted User
2021-08-24 08:39:23
> Pentium G4560, a single 16GB DDR4-2400 RAM > a low-spec desktop mini PC ...you're spoiled 😜
veluca
2021-08-24 09:09:31
I believe I will have to quietly avoid commenting on this conversation... πŸ˜›
_wb_
2021-08-24 09:12:32
Haha
2021-08-24 09:12:52
I don't even have a pc atm
spider-mario
2021-08-24 09:45:08
my main machine from late 2012 to late 2015 was a 11.6" netbook with a Celeron 877 and 4β€―GB of RAM 😁
nathanielcwm
> Pentium G4560, a single 16GB DDR4-2400 RAM > a low-spec desktop mini PC ...you're spoiled 😜
2021-08-25 09:38:38
well urs has avx the pentium doesn't ;p
veluca
2021-08-25 01:58:38
AVX as opposed to SSE4?
diskorduser
2021-08-25 02:22:16
Once I built cjxl with debug flag. It took 2.4 minutes vs 0.8 sec to encode same image with same settings.
veluca
2021-08-25 02:24:23
hah not surprised
2021-08-26 12:12:59
I don't expect it to change more than 30% or so, but I didn't really measure
diskorduser
2021-08-26 02:28:54
I tried to compile cjxl with -march=westmere. Even with -mno-avx2. Still it compiles with avx2. πŸ€”πŸ€”πŸ€”
nathanielcwm
2021-08-26 08:08:38
seems like a lot of effort
2021-08-26 08:08:58
~~march native on pre haswell cpu?~~
veluca
2021-08-26 08:24:38
dynamic dispatching makes all of these tricks not work
2021-08-26 08:24:59
you *can* just build libjxl with bundled highway with `-DHWY_DISABLED_TARGETS=HWY_AVX2`
VcSaJen
2021-08-28 02:55:42
How can I get statically built 32-bit and 64-bit libjxl.dll files? Using Docker with STATIC=ON and x86_64-w64-mingw32 build target resulted in no DLL. With non-static build it appears, but as I understand, it requires several other dlls? Or not?
2021-08-28 02:40:02
Also, trying to build i686-w64-mingw32 on docker fails for me: https://pastebin.com/rY9sJwyJ
2021-08-28 02:40:54
On both tag v0.5 and latest commit 84f0807
veluca
2021-08-28 02:47:21
no idea ... <@!604964375924834314> maybe has an idea?
spider-mario
2021-08-28 02:48:20
hm, I don’t think I have seen this before
2021-08-28 02:48:29
but since the error is in gtest, maybe disabling the tests would be enough
2021-08-28 02:48:44
I don’t remember if we have a cmake option for that
2021-08-28 02:49:10
also, not sure it’s related at all, but clang 7 is a little old, isn’t it?
VcSaJen
2021-08-28 02:52:31
I did it according to doc/developing_in_docker.md , would you recommend to put another number instead of 7?
veluca
spider-mario I don’t remember if we have a cmake option for that
2021-08-28 02:52:41
cmake has one by itself, ENABLE_TESTING or DISABLE_TESTING or what they call it
VcSaJen I did it according to doc/developing_in_docker.md , would you recommend to put another number instead of 7?
2021-08-28 02:53:00
you can go with the newest version you have, like 11
VcSaJen
2021-08-28 03:36:06
Deleted `enable_testing()` line and added `option(BUILD_TESTING "" OFF)` line in CMakeLists.txt, still fails.
spider-mario
2021-08-28 03:56:05
CMakeCache.txt might be a better place to set options
VcSaJen
2021-08-28 05:03:50
https://pastebin.com/724jqBTU
spider-mario
2021-08-28 05:30:06
oh, yes, static build, somehow I missed that
2021-08-28 05:30:08
yeah, static builds are tricky
Traneptora
2021-08-30 07:56:19
```cpp size_t compressed_size = compressed.size(); uint8_t* result = reinterpret_cast<uint8_t*>(malloc(compressed_size + 4)); uint32_t* meta = reinterpret_cast<uint32_t*>(result); meta[0] = compressed_size; ``` `tools/jxl_emcc.cc` line 37
2021-08-30 07:56:29
This reinterpret_cast depends on the endianness of the hardware.
2021-08-30 07:58:08
ARM by spec is allowed to be big-endian, even though x86 is little-endian locked
_wb_
2021-08-30 07:58:17
ugh
2021-08-30 07:58:32
yes
2021-08-30 07:58:49
ARM is always also little-endian in practice afaik, but yes
Traneptora
2021-08-30 07:58:53
one option is to just add an endianness check in a configure script with `#if` but it's ugly
_wb_
2021-08-30 07:59:40
how did you find this? is it a practical problem or just a theoretical one at this point?
Traneptora
2021-08-30 08:00:20
I checked the issue tracker and someone provided a stub issue pointing to that file on line 40 for something unrelated. but since I looked at that file I was like "wait, what's going on"
2021-08-30 08:00:31
I learned this when working with PNG and found that "network byte order" is a pain for hardware since it's usually the opposite
_wb_
2021-08-30 08:00:52
yeah, it's basically always the opposite nowadays
Traneptora
2021-08-30 08:01:04
but yes I discovered this cause I looked at the source, not because I had it fail to work on big-endian hardware
2021-08-30 08:01:38
arm spec actually allows the operating system to flip the virtual address space of a particular process to a different endianness
2021-08-30 08:01:41
which is kind of odd
2021-08-30 08:01:58
but I think that was for emulation/testing purposes
_wb_
2021-08-30 08:01:59
to the point that we no longer find implicit little-endianness assumption bugs because big endian is so rare
Traneptora
2021-08-30 08:02:31
yea, if this were my own project I would just refuse to support big endian hardware
2021-08-30 08:02:49
but this is a reference encoder for a standard so I feel like caring about it is annoyingly important
_wb_
2021-08-30 08:05:16
yep
2021-08-30 08:05:39
please open an issue about it, we have to fix that code to be endianness-neutral
2021-08-30 08:06:19
this is why we have this stuff: https://github.com/libjxl/libjxl/blob/main/lib/jxl/base/byte_order.h
2021-08-30 08:07:03
maybe we should also somehow add some big-endian environment to the continuous integration
Traneptora
2021-08-30 08:10:23
opened
veluca
_wb_ maybe we should also somehow add some big-endian environment to the continuous integration
2021-08-30 08:56:14
armbe exists on qemu I believe πŸ˜„ that one we wouldn't have caught because IIRC it's only compiled under emscripten, but...
BlueSwordM
2021-09-02 10:58:27
<:megapog:816773962884972565> <:megapog:816773962884972565> <:megapog:816773962884972565> https://aomedia-review.googlesource.com/c/aom/+/145301 Thanks a lot <@!604964375924834314> for your efforts <:FeelsAmazingMan:808826295768449054>
_wb_
2021-09-04 06:26:02
https://github.com/libjxl/libjxl/issues/540 lol
2021-09-04 06:26:42
Let's ask the repo sync bot to implement it :)
Scope
2021-09-04 06:31:20
3 Major Developers
nathanielcwm
2021-09-04 06:37:55
this is almost as painful as reading fabians msgs but looks like she wants exif info in her jxl photos cuz they didn't carry over during the encode?
2021-09-04 06:38:07
oh wait
2021-09-04 06:38:19
exif support on djxl?
2021-09-04 06:38:23
idfk
2021-09-04 06:38:24
<:kekw:808717074305122316>
Cool Doggo
2021-09-04 06:44:34
i think they are saying that they expected djxl to carry exif data from jxl to jpg, and that trying to add it manually failed
nathanielcwm
2021-09-04 06:44:38
oh looks liek she was also complaining bout exiftool not supporting jxl?
2021-09-04 06:44:50
my brain hurts <:kekw:808717074305122316>
Cool Doggo
2021-09-04 06:44:57
im not really sure though because i thought it already did that?
nathanielcwm
2021-09-04 06:45:01
fabian actually makes sense 30-90% of the time
2021-09-04 06:45:50
my eyes hurt everytime i see a screenshot from fabian with his custom fonts <:kekw:808717074305122316>
Cool Doggo
2021-09-04 06:53:26
confusing
_wb_
2021-09-04 06:57:13
In any case there is stuff to be done to implement compressed metadata and have tooling that makes it easy to handle it
2021-09-04 06:59:21
I just thought it was funny that 1) the issue specifically names devs that should do it, and 2) one of those 'devs' is a bot
2021-09-06 01:24:07
<@!768090355546587137> regarding the encode api and properly handling jpeg recompression of exif-oriented jpegs: I think we have a bit of a conceptual problem there, since orientation is an image-global thing but jpegs are added as frames (so when the imageheader is already written)
Traneptora
2021-09-07 07:46:35
``` CMake Warning: Manually-specified variables were not used by the project: JPEGXL_ENABLE_GIMP_SAVING ```
2021-09-07 07:46:40
just built from git master
2021-09-07 07:46:48
is this a problem or just forgot to clean it up
veluca
2021-09-07 07:57:09
nah, doesn't matter - I think Gimp saving was rewritten by <@!877735395020927046> and I guess it doesn't use the build flag anymore?
spider-mario
2021-09-07 09:33:03
that matches my understanding
Deleted User
2021-09-07 09:53:19
How can GIMP plugin be built now? <@!179701849576833024> would it be possible to include it in CI (and thus in your nightly artifacts)?
veluca
How can GIMP plugin be built now? <@!179701849576833024> would it be possible to include it in CI (and thus in your nightly artifacts)?
2021-09-07 09:54:12
I think it just work if you build manually
2021-09-07 09:54:22
as for CI - at some point we will
Deleted User
2021-09-07 09:55:03
Unfortunately I'm really space-limited so I can't risk setting up `crossroad` on my WSL
veluca
2021-09-07 09:55:48
I could try to see if I can get it to build
2021-09-07 09:56:18
ah, but it's not included in the debian packages
2021-09-07 09:56:19
nvm
2021-09-07 09:56:28
I don't know enough to get it done
2021-09-07 09:58:55
but if someone wants to figure the debian packaging and the CI, we won't mind πŸ˜›
2021-09-07 09:59:23
maybe <@877735395020927046>? πŸ˜„
2021-09-07 10:00:22
although I don't know if they should go in libjxl, jxl or a new jxl-plugins package...
Deleted User
veluca but if someone wants to figure the debian packaging and the CI, we won't mind πŸ˜›
2021-09-07 10:06:43
I would be able to build it for Debian (I'm on WSL), but I use GIMP on Windows and I can't build EXE
veluca
2021-09-07 10:06:59
oh I mean adding it to the CI
2021-09-07 10:07:15
shouldn't be *hard* (no idea for windows though), but...
xiota
veluca nah, doesn't matter - I think Gimp saving was rewritten by <@!877735395020927046> and I guess it doesn't use the build flag anymore?
2021-09-08 04:30:33
I took out the flag because it was a pain, and the codestream is supposed to be stable now. Adding the plugin to the current debian packaging should be straightforward. If you want to separate it into its own package, it would be good to get it to build on its own with cmake, like the examples do.
veluca
2021-09-08 04:31:02
that shouldn't be hard
2021-09-08 04:31:42
OTOH I've seen that there's no gimp for vcpkg, so for windows it's likely harder
2021-09-08 04:31:49
and either way beyond my capabilities πŸ˜›
xiota
2021-09-08 04:32:14
for windows, i got the gimp plugin building with msys2 and crossroad
veluca
2021-09-08 04:32:42
ah but our CI doesn't use that
xiota
2021-09-08 04:34:30
i don't know how it's setup behind the scenes.
veluca
2021-09-08 04:36:08
I don't really know either - I know it's github actions + vcpkg which IIRC it's not related to/usable with msys
2021-09-08 04:36:14
but I'm not really sure either
xiota
2021-09-08 04:37:33
it looked like crossroad was grabbing mingw and msys packages... then putting them in the right place for cross compilation from linux. so if someone knows how it's supposed to be setup, i guess they'd just need to put the files in the right place. as long as they're compatible with the compiler/linker.
I would be able to build it for Debian (I'm on WSL), but I use GIMP on Windows and I can't build EXE
2021-09-08 04:50:24
I had posted a windows binary of the gimp plugin on r/jpegxl, but it actually got some downvotes, so I removed it. People on r/gimp didn't seem that interested, but at least didn't get downvoted... It has a different save dialog and some bug fixes compared to the one currently in the libjxl repository.
veluca
2021-09-08 04:51:39
I'll try to figure out the package building πŸ™‚ If anybody can ping novomesk to make `.deb`s in github CI then I could also include that in the packages on https://artifacts.lucaversari.it/
Deleted User
xiota I had posted a windows binary of the gimp plugin on r/jpegxl, but it actually got some downvotes, so I removed it. People on r/gimp didn't seem that interested, but at least didn't get downvoted... It has a different save dialog and some bug fixes compared to the one currently in the libjxl repository.
2021-09-08 04:52:19
Why TF would ppl downvote you...?
2021-09-08 04:52:47
Β―\_(ツ)_/Β―
xiota
Why TF would ppl downvote you...?
2021-09-08 04:52:51
haha. I don't know. I thought Windows users would like a binary, since it wasn't so easy for me to figure out how to build it. (Even though I'm just using scripts that other people built.)
Deleted User
xiota haha. I don't know. I thought Windows users would like a binary, since it wasn't so easy for me to figure out how to build it. (Even though I'm just using scripts that other people built.)
2021-09-08 04:54:18
I'd like to have it either, but apparently some redditors are... well, redditors.
Scope
2021-09-09 07:22:25
Also can faster_decoding use negative values or is this not implemented yet? https://user-images.githubusercontent.com/8353098/131713081-1ec09220-a8e8-4b56-9424-f6abec6f22ca.png
_wb_
2021-09-09 07:24:53
I dunno if we implemented it already, but for lossless it might make sense to have "slower than default" decoding, which atm would be `-E 3`
xiota
Scope Also can faster_decoding use negative values or is this not implemented yet? https://user-images.githubusercontent.com/8353098/131713081-1ec09220-a8e8-4b56-9424-f6abec6f22ca.png
2021-09-09 01:21:46
The GIMP plugin doesn't have access to JXL features that aren't exposed in the API. Faster decoding uses a value from 0 to 5. `cjxl` seems to use the absolute value, so -5 is treated like 5.
veluca
xiota The GIMP plugin doesn't have access to JXL features that aren't exposed in the API. Faster decoding uses a value from 0 to 5. `cjxl` seems to use the absolute value, so -5 is treated like 5.
2021-09-09 02:04:29
really? I thought it only went up to 4 πŸ˜› and I don't remember doing anything special with negative numbers
xiota
2021-09-09 04:43:29
<@!179701849576833024> you're right... it's 4. don't know how 5 got in my head.
Fraetor
2021-09-09 07:59:15
Clang vs GCC would only affect the speed of cjxl right?
2021-09-09 07:59:42
It wouldn't have an effect on quality?
BlueSwordM
Fraetor Clang vs GCC would only affect the speed of cjxl right?
2021-09-09 08:00:17
Only speed, and Clang is faster than GCC on libjxl.
Fraetor
2021-09-09 08:04:15
Alright. I'll just use GCC then, as I already have it installed, and don't need to much speed.
_wb_
2021-09-09 08:07:38
theoretically, there could be (very minor) effects on quality between different compilers / compiler versions / target platforms, since float arithmetic can be slightly different depending on the actual instructions and order of operations things get compiled to, which could affect rounding and occasionally change the results of encoder heuristics
Fraetor
2021-09-09 08:08:35
Fair.
_wb_
2021-09-09 08:10:27
in float arithmetic, it's not even necessarily the case that A + B - B == A
2021-09-09 08:12:37
but any differences will be in the least significant bits of a 24-bit mantissa, so I wouldn't worry about it
veluca
_wb_ but any differences will be in the least significant bits of a 24-bit mantissa, so I wouldn't worry about it
2021-09-09 10:00:42
catastrophic cancellation would like to have a chat with you πŸ˜›
2021-09-09 10:00:50
(not that I really expect that to happen in jxl)
_wb_
2021-09-10 05:22:06
I'm sure you can construct pathological input images where results of encode+decode have a relatively surprisingly large variance depending on compiler/architecture, but I doubt you can make a visual difference that way
w
2021-09-10 08:38:21
upsampled x8 spline creates a 8x8 checker pattern. intended?
2021-09-10 08:38:50
spider-mario
2021-09-10 08:41:18
upsampled how?
w
2021-09-10 08:41:30
i used Upsample 8 in the tree
veluca
2021-09-10 08:47:52
likely not
2021-09-10 08:48:08
is it on the latest main or is it on an older version?
w
2021-09-10 08:49:40
i am currently on <https://github.com/libjxl/libjxl/commit/0a6dc0acb868f78c4cebee4c23dd9a338bcd71fc>
veluca
2021-09-10 08:59:38
does it still happen before https://github.com/libjxl/libjxl/commit/9d03bfe8111f49210e2d096688dd4db303654270 ?
2021-09-10 08:59:47
I think it should but what do I know πŸ˜›
w
2021-09-10 09:03:44
yeah still happens in the parent of that
veluca
2021-09-10 09:07:09
interesting...
w
2021-09-10 09:07:27
my guess is it's the upsampling, and would not be just splines
veluca
2021-09-10 09:07:57
what happens if you render the spline normally, and then encode the file with cjxl --already_downsampled or whatever was the option?
2021-09-10 09:08:08
decoding to pfm say
w
2021-09-10 09:10:34
what
veluca
2021-09-10 09:12:58
remove Upsample 8 from jxl_from_tree, decode to pfm, then encode that with `cjxl --resampling=8 --already_downsampled`
Deleted User
2021-09-10 09:13:28
But the plines will get lost with pfm?
veluca
2021-09-10 09:13:38
well, they will be converted to pixels
2021-09-10 09:13:52
but this will tell us if this is a spline-specific problem or not πŸ™‚
w
2021-09-10 09:15:33
yup it's there
2021-09-10 09:16:18
2021-09-10 09:16:20
to this
veluca
2021-09-10 09:17:42
just to clarify - those images are not zoomed in, right?
2021-09-10 09:17:48
can you share the `.jxl` files?
w
2021-09-10 09:19:30
using cjxl --resampling=8 --already_downsampled
2021-09-10 09:19:40
tree
veluca
2021-09-10 09:21:09
... maybe I'm blind, but I don't really see the issue
w
2021-09-10 09:22:27
djxl testspline.jxl testspline.png
2021-09-10 09:23:04
when zoomed in, without any upscaling, the pixels show a pattern
Scope
2021-09-10 09:25:06
veluca
2021-09-10 09:25:13
ah, I see what you mean
2021-09-10 09:25:21
that's just the 8x upscaling I think
w
2021-09-10 09:28:58
ok
2021-09-10 09:29:21
i would have hoped maybe splines can get treated differently
veluca
2021-09-10 09:39:38
I guess it could be done in theory
veluca I guess it could be done in theory
2021-09-10 09:43:39
<@!604964375924834314> wdyt?
spider-mario
2021-09-10 09:44:53
yes, in fact I think at some point we had an implementation of spline drawing for downsampled output
2021-09-10 09:45:02
it’s feasible in principle to scale the parameters
2021-09-10 09:45:25
(I think)
2021-09-10 11:49:46
strange, I was almost sure that there was a point where this was implemented, but I can’t find a trace of it in the history
2021-09-10 11:49:53
maybe I wrote it locally and never submitted it
2021-09-10 11:49:54
let’s see
2021-09-10 11:51:10
which of my 140 branches could it be πŸ˜’
2021-09-10 11:51:40
ah, probably `spline-downsampling`
2021-09-10 11:52:12
from June 2019
2021-09-10 11:52:25
β€œMake spline drawing compatible with downsampling (modulo the crash)”
2021-09-10 11:52:26
the what now
2021-09-10 11:52:59
ah there is another commit β€œDon’t crash” after that