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