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

jxl

Anything JPEG XL related

Petr
2021-05-28 05:55:40
Doubts? The license_agreement.pdf speaks pretty clearly…
_wb_
2021-05-28 05:56:07
JPEG wants to avoid random people on the internet appearing to be JPEG
2021-05-28 05:56:17
or JPEG-endorsed, or whatever
Petr
2021-05-28 05:59:19
The logo isn't necessary there. But it would be good to have it there if it was possible in terms of licensing.
_wb_
2021-05-28 06:00:24
ISO BMFF is not at all controversial: it was used in the 1990s so it is certainly royalty-free. The validity of the HEIF patents is another issue, and doesn't affect jxl.
2021-05-28 06:00:53
I will ask around in JPEG what the intention is with those logos
Petr
2021-05-28 06:01:05
We were also discussing if we could add the unofficial / comunity logo (the ambigram). But it faded somehow…
_wb_
2021-05-28 06:02:09
It's the logo of libjxl
Petr
2021-05-28 06:03:31
I would say it's widely used. I *guess* the community website is more popular than the official jxl page.
fab
2021-05-28 06:03:36
https://it.wikipedia.org/wiki/File:Struttura_Codec_JPEG_XL.png
2021-05-28 06:03:43
there isn't a file with this name
2021-05-28 06:03:49
but you can see a link
Petr
2021-05-28 06:05:35
Where did you find the link, <@!416586441058025472>? If it shouldn't be there, you can remove it.
fab
Petr Where did you find the link, <@!416586441058025472>? If it shouldn't be there, you can remove it.
2021-05-28 06:09:03
this contained the jpeg xl architecture
2021-05-28 06:09:17
basically the table of the structure of jpeg xl codec
2021-05-28 06:09:22
made by jon sneyers
2021-05-28 06:09:27
i removed cause of duplicate
2021-05-28 06:09:32
jon removed it
Petr
2021-05-28 06:19:15
Vulphere (https://commons.wikimedia.org/wiki/User:Vulphere), are you on this server by any chance? πŸ™‚
2021-05-28 06:22:18
Of course. But people can have different nicknames on different sites. I also do that.
fab
2021-05-28 07:05:14
that's the original
veluca
2021-05-28 07:41:34
I'm confused - what's the problem with β€œCreative Commons Attribution-NoDerivatives 4.0 International License”?
Petr
_wb_ It's the logo of libjxl
2021-05-28 07:42:51
That's a new piece of information. (In March, we were talking about it as "JPEG XL unofficial logo".) Would you find it a good idea to clarify it somehow in the repo, on the community website, inside the SVG itself and in the SVG filename? I'm asking this because even I'm quite confused about the logo (although I've been following jxl for months). So I guess that newcomers will be confused even more.
_wb_
2021-05-28 07:44:14
well I don't know if it's the "official" logo of libjxl, but it has been in the libjxl repo for a while and shown on the front page of the gitlab/github repo for a while now
Petr
veluca I'm confused - what's the problem with β€œCreative Commons Attribution-NoDerivatives 4.0 International License”?
2021-05-28 07:45:01
See here: https://commons.wikimedia.org/wiki/Commons:Licensing#Well-known_licenses
_wb_
2021-05-28 07:45:17
I assume that by being in the repo, it is also covered by the repo license, which is BSD
2021-05-28 07:46:09
the logo itself was declared to be CC0 by its author
2021-05-28 07:46:49
NoDerivatives is not free, but I think that's exactly what JPEG wants for their logos
veluca
2021-05-28 07:47:18
yeah, doubt they're going to change it
2021-05-28 07:47:28
... I didn't like that logo anyway
_wb_
2021-05-28 07:48:09
those logos are basically stamps that say "approved by ISO/IEC JTC 1 SC 29 WG 1"
2021-05-28 07:48:33
you don't want anyone on the internet to make derived ones and make it look like they are actual JPEG projects
veluca
2021-05-28 07:49:36
in other news - why is my (and Jon's, and Jyrki's) name a broken link on wiki? 🀣
2021-05-28 07:50:53
right, I understand about the article not existing, I'm more doubtful about the second part... xD
_wb_
2021-05-28 07:52:04
Kakadu uses the j2k logo in that way: https://kakadusoftware.com/
2021-05-28 07:52:42
Intopix uses the JPEG XS logo: https://www.intopix.com/jpeg-xs
veluca
2021-05-28 07:53:03
but I guess those are not derivatives...
_wb_
2021-05-28 07:53:32
nope
2021-05-28 07:54:09
they're just using the logo to identify that the product supports that particular jpeg standard
2021-05-28 07:56:14
I don't quite get why Wikipedia doesn't allow BY-ND (or BY-NC for that matter), isn't that a bit unnecessary?
2021-05-28 07:57:18
I mean it's a bit weird that they would allow totally proprietary copyrighted logos to be put on pages because of "fair use", but they wouldn't allow a BY-ND logo because random people on the internet cannot do whatever they want with those
2021-05-28 08:12:01
I think there's probably some confusion on what "derivative" means. Using those logos just to refer to those JPEG standards is fine. Changing those logos to pretend to be a JPEG standard (say by making such a logo that says "JPEG AVIF") is not fine.
2021-05-28 08:12:13
at least that is what I think is the intention here
2021-05-28 08:16:45
well that actually happened in the past
2021-05-28 08:16:52
like these guys: https://jpegclub.org/
2021-05-28 08:17:16
who are claiming to be the "only true reference JPEG"
2021-05-28 08:17:35
which is not true
2021-05-28 08:18:02
they started diverging with their "JPEG SmartScale extension"
2021-05-28 08:20:20
so anyway, yes it is a bit of a problem when people are making their own changes/extensions to a spec and then claim to be the "true" standard
fab
2021-05-28 08:26:51
jon has said the jpeg logo can be used only by jpeg
_wb_
2021-05-28 08:29:40
I don't know to what extent steps have, can or should be taken to take that down
2021-05-28 08:48:35
the name "JPEG" is legally afaik just an informal name for the committee and for the standard, so I don't think much can be done
Petr
2021-05-28 08:56:28
The thing with enwiki and Wikimedia Commons is that there are some different rules for allowed content. I've seen many images on enwiki that can't be on Commons (and thus on other Wikipedias) because of that.
2021-05-28 08:56:32
Nevertheless it still seems to me that the official logos can't be even on enwiki due to the licensing stated on jpeg.org.
_wb_
2021-05-28 09:04:33
if this is possible: https://commons.wikimedia.org/wiki/File:Microsoft_logo_(2012).svg
2021-05-28 09:04:55
then I don't see why JPEG logos wouldn't be possible
2021-05-28 09:06:26
https://commons.wikimedia.org/wiki/File:Apple_logo_black.svg
2021-05-28 09:06:59
if that is considered "simple geometric shapes", then surely the JPEG logo is also "simple geometric shapes"
2021-05-28 09:08:13
https://commons.wikimedia.org/wiki/File:IBM_logo.svg
Petr
2021-05-28 09:36:32
Hmm, this completely changes the situation… πŸ˜‰ But seriously, if nobody objects it, the logo will probably be able to stay there.
2021-05-28 09:47:31
Yes. But if bigger technology businesses don't do that with their logos, why would JPEG? It's a nice advertising, isn't it?
2021-05-28 09:56:25
So, the presence of JPEG official logos on Commons could encourage us to upload the ambigram logo as well, right? πŸ™‚
Scope
2021-05-28 10:40:33
<@!792428046497611796> <https://github.com/libjxl/libjxl/pull/7> Also https://discord.com/channels/794206087879852103/804324493420920833/847176447897370624
Petr
Scope <@!792428046497611796> <https://github.com/libjxl/libjxl/pull/7> Also https://discord.com/channels/794206087879852103/804324493420920833/847176447897370624
2021-05-28 11:47:50
Sorry, I don't get the point here…
Scope
2021-05-28 11:50:41
Currently in README.md <https://github.com/libjxl/libjxl/blob/main/README.md#checking-out-the-code> `git clone https://gitlab.com/wg1/jpeg-xl.git --recursive` But the main repository now is on Github, so `git clone https://github.com/libjxl/libjxl.git --recursive`
Petr
2021-05-28 11:57:32
OK, I made another PR.
_wb_
2021-05-28 12:09:13
It's nice to update those links, but it's not _incorrect_ to point to the gitlab one, it will keep being a mirror
fab
2021-05-30 08:52:40
i hope in july we would have next release of jpeg xl
2021-05-30 08:52:56
with improved lossless compression and
2021-05-30 08:53:15
with no significant regression and blurring at mid bitrates
improver
2021-05-30 10:55:30
i hope they fix up patches heuristics for modular
veluca
2021-05-30 11:00:23
I also hope that πŸ˜›
2021-05-30 11:02:33
pre-release of what?
2021-05-30 11:08:51
the 0.4.x branch is pretty much that
2021-05-30 11:11:44
frozen
2021-05-30 11:16:40
ah, a lot of things changed, but I am not sure there was anything that would actually affect lossless encoding performance
2021-05-30 11:16:49
or lossy for that matter
2021-05-30 11:17:17
the main thing that happened is that there was some speedups, some memory optimizations, and implementing all the format features in the decoder
2021-05-30 11:20:06
no, it's not
lithium
2021-05-30 11:22:22
I hope vardct can get integral transform selection improve, πŸ™‚ This improve probably can improve high contrast sharp edges and smooth have gradient area quality for non-photographic image. > like this https://encode.su/threads/3397-JPEG-XL-vs-AVIF?p=66545&viewfull=1#post66545
fab
2021-05-30 07:42:34
to me jpeg xl isn't at same level of webp
2021-05-30 07:42:55
2021-05-30 07:43:15
see what you can have with webp at 21,7 kb
Crixis
2021-05-30 09:07:05
2021-05-30 09:07:44
21 kb
veluca
2021-05-30 09:22:11
pretty bad, both of them πŸ˜›
raysar
2021-05-30 09:34:16
I compile cjxl (8304ea44) for windows (non avx2) yesterday commit (deleted)
2021-05-30 09:36:37
The git webpage is not clear for windows, it's impossible to compile with clang easily, i use msvc, and i need to undestand how to compile the avx2 version. (it's not clear why we need 2 differents binary for that :/)
eddie.zato
2021-05-31 02:34:55
With msys2/clang it's pretty easy. Can't tell about avx2, I only have avx-cpu.
fab
Crixis
2021-05-31 06:58:55
where you found original png
2021-05-31 07:05:27
<@!424295816929345538> when you found original png?
2021-05-31 07:07:57
https://news.lockheedmartin.com/2021-05-26-Lockheed-Martin,-General-Motors-Team-up-to-Develop-Next-Generation-Lunar-Rover-for-NASA-Artemis-Astronauts-to-Explore-the-Moon
Crixis
fab where you found original png
2021-05-31 07:16:00
google
fab
2021-05-31 07:16:29
do you have the file
Crixis
2021-05-31 07:18:52
fab
2021-05-31 07:19:46
i did my effort
2021-05-31 07:19:52
-q 36.844 -s 2 --use_new_heuristics --dots=0
2021-05-31 07:20:01
with this
2021-05-31 07:20:02
https://discord.com/channels/794206087879852103/794206170445119489/848675708205006950
2021-05-31 07:20:26
2021-05-31 07:21:55
2021-05-31 07:24:13
19,8 KB (20.367 byte)
2021-05-31 07:24:47
crixis one 21,4 KB (21.917 byte)
2021-05-31 07:25:14
i think he used less distance
2021-05-31 07:25:23
what settings did you used do you remember all
2021-05-31 07:25:31
and the build number
2021-05-31 07:27:12
my image is 0.363 bpp
Crixis
2021-05-31 07:29:30
0.320 bpp
2021-05-31 07:29:54
2021-05-31 07:31:10
15 Kb
fab
2021-05-31 07:31:16
i do not know what i'm doing
2021-05-31 07:31:59
which settings you used
2021-05-31 07:32:04
same build and settings as me
Crixis
2021-05-31 07:32:05
-d 6
fab
2021-05-31 07:32:14
speed?
2021-05-31 07:32:18
and build?
Crixis
2021-05-31 07:32:20
7
fab
2021-05-31 07:32:24
build?
2021-05-31 07:32:34
the 4dddce or the before
2021-05-31 07:32:41
8304ea44)
2021-05-31 07:33:08
did you used new heuristics or the normal one
Crixis
2021-05-31 07:33:27
normal one
fab
2021-05-31 07:33:43
and the build?
2021-05-31 07:33:51
can you send the cropped png?
2021-05-31 07:33:59
so i make a file
2021-05-31 07:34:09
let's get to a good size
2021-05-31 07:35:33
ah i used d 5.784
2021-05-31 07:35:47
is that d = -q 36.844
2021-05-31 07:37:03
i used used the size of the website
2021-05-31 07:37:13
https://www.punto-informatico.it/artemis-gm-lockheed-martin-progettano-ltv/
Orum
2021-05-31 09:44:22
Is it possible to losslessly drop chroma information (i.e. just keep luma) when recompressing from jpeg to jxl? Or some way to do that even within jpeg?
veluca
2021-05-31 09:45:25
I think it should be possible within JPEG
Orum
2021-05-31 09:46:19
Alright, I'm going to see if I can't find something that will do it <:FeelsReadingMan:808827102278451241>
veluca
2021-05-31 09:46:58
it's probably not too hard to write something that modifies the JPEGData struct from JPEG XL to that effect
2021-05-31 09:47:06
but also likely nontrivial
fab
2021-05-31 10:05:09
when next commit squashed?
2021-05-31 10:05:25
when is ready?
2021-05-31 10:05:43
jon said once a week
_wb_
2021-05-31 10:08:26
now we do development in the public github repo, so things happen in real time, no more waiting for sync
Orum Is it possible to losslessly drop chroma information (i.e. just keep luma) when recompressing from jpeg to jxl? Or some way to do that even within jpeg?
2021-05-31 10:09:29
`jpegtran -grayscale color.jpg > grayscale.jpg` should do the trick
fab
2021-05-31 10:11:27
sorry i created fork of libjxl
2021-05-31 10:13:22
what means veluca 23 commits behind
2021-05-31 10:13:28
hasn't he made anything
2021-05-31 10:13:31
not any heuristics
2021-05-31 10:14:21
why jyrki isn't in there?
2021-05-31 10:14:31
no github fork from him
2021-05-31 10:14:40
where he does his development
2021-05-31 10:29:02
why nobody has the latest commit
2021-05-31 10:29:48
i think they do in private repos, whatever repos they want
2021-05-31 10:30:09
then they add when they want deymo or something to review
_wb_
2021-05-31 11:00:56
Yes, that is how github works.
lithium
2021-05-31 11:10:20
For current version libjxl, -d 1.0 -s 7 and -s 8 will use which p-norm?
_wb_
2021-05-31 11:14:21
it doesn't quite work like that. AFAIU, they both aim to get BA-maxnorm 1.0, but in -s 7 it is more likely it will occasionally get a worse BA score though the p-norm should still be <= 1.0, while in -s 8 it actually does BA-iterations so it should get a BA-maxnorm that is more consistently around 1.0.
lithium
2021-05-31 11:24:19
But on large target distance(-d 2.5~4+), maxButteraugli can't get good performance on this distance?
2021-05-31 11:29:54
I think probably like this(not sure)? -d 0.5~1.9 maxButteraugli -d 1.9~2.5 6-norm? -d 2.5+ 3-norm?
fab
2021-05-31 11:31:16
has new modes also more decoding speed for modular?
veluca
2021-05-31 01:00:06
IIRC no
nmkd
Crixis
2021-05-31 01:58:22
do you have the original?
Crixis
Crixis
2021-05-31 02:03:53
this is the best source i found
nmkd
Crixis this is the best source i found
2021-05-31 02:04:39
<https://mma.prnewswire.com/media/1519216/Lockheed_GM_Defense_LunarVehicles.jpg?p=publish>
2021-05-31 02:04:41
much higher res
2021-05-31 02:04:42
anyway
Crixis
2021-05-31 02:04:59
my JPEG attempt
2021-05-31 02:05:06
~20kb
Crixis
2021-05-31 02:05:18
i try this
nmkd
2021-05-31 02:06:55
19 kb AVIF
2021-05-31 02:08:32
def looks better than webp
Crixis
2021-05-31 02:16:52
2021-05-31 02:17:14
avif is better in crazy small images
fab
2021-05-31 02:19:01
i did a jpeg xl one
2021-05-31 02:19:05
better
2021-05-31 02:19:09
thanks to you
2021-05-31 02:19:32
-d 5.5711 -s 7 --use_new_heuristics
2021-05-31 02:19:44
Crixis avif is better in crazy small images
2021-05-31 02:20:33
is this also jpeg xl
2021-05-31 02:20:45
because it looks very the same about what i posted now
2021-05-31 02:21:34
Crixis
2021-05-31 02:26:41
This is not bad! avif-like
2021-05-31 02:26:48
2021-05-31 02:27:18
use resize before encode save a lot off quality
fab
2021-05-31 02:31:20
if is bigger why it looks better
2021-05-31 02:31:26
did you use speed 9
nmkd
Crixis
2021-05-31 02:31:30
wrong size
fab
2021-05-31 02:32:49
what you did this look absolutely great
2021-05-31 02:33:28
i guess is new heuristics because i see blurriness
2021-05-31 02:41:02
ok latest try
2021-05-31 02:41:13
resized image
2021-05-31 02:41:14
Crixis
nmkd wrong size
2021-05-31 02:41:35
what size?
fab
2021-05-31 02:42:25
2021-05-31 02:42:28
-d 4.6388 -s 9 --use_new_heuristics
nmkd
Crixis what size?
2021-05-31 02:42:54
that was 480p instead of 832x468
2021-05-31 02:43:09
should probably stick to one res if you wanna compare
fab
2021-05-31 02:44:20
the avif don't look that much better
Crixis
2021-05-31 02:44:51
-d 4.5
nmkd that was 480p instead of 832x468
2021-05-31 02:45:53
nmkd
2021-05-31 02:46:39
hmm, still beaten by AVIF i'd say
2021-05-31 02:46:50
Crixis
2021-05-31 02:48:36
avif is better on stars and cars, jxl on earth, terrain and space suits
2021-05-31 02:49:02
but is know that in low quality avif is very good
fab
2021-05-31 02:53:51
crixis one looksbanding
2021-05-31 02:54:02
and chroma discolouration
2021-05-31 02:54:23
mine a bit better but more blockiness
2021-05-31 02:54:33
id say is definitely on par with avif
2021-05-31 02:55:28
2021-05-31 02:55:33
19,6 KB (20.098 byte)
2021-05-31 02:55:36
for the jxl
2021-05-31 02:55:51
19,0 KB (19.483 byte) for the AVIF
nmkd
2021-05-31 02:57:04
what are the avif settings
2021-05-31 02:57:36
speed and quality if there is a min or max quantizer all the two
nmkd
fab what are the avif settings
2021-05-31 02:57:59
I used the paint.net plugin
2021-05-31 02:58:11
speed "slow" (second slowest)
2021-05-31 02:58:23
<https://github.com/0xC0000054/pdn-avif>
fab
2021-05-31 03:00:37
how many are the speed in AVIF PAINT.NET
2021-05-31 03:04:49
someone has newer builds OF JPEG XL?
2021-05-31 03:06:04
with also the improved s 1 s2
2021-05-31 03:06:18
i think that needs to be still merged?
2021-05-31 03:29:55
does someone has a newer build of JPEG XL?
Orum
2021-06-01 12:19:49
for what, Windows?
nmkd
fab how many are the speed in AVIF PAINT.NET
2021-06-01 06:57:32
idk, seems alright
fab
Orum for what, Windows?
2021-06-01 07:00:45
yes, sse4 windows 7
Orum
2021-06-01 11:14:31
Windows 7 is EOL so it will be hard to find anyone producing builds for that
2021-06-01 11:16:10
*probably*, but without testing I couldn't say for sure
raysar
2021-06-01 12:32:13
New windows binary with msvc compiler: e87b769f commit 97 (deleted)
2021-06-01 12:33:41
it's not the 0.4 branch? They don't need to write 0.4 release candidate? πŸ™‚
2021-06-01 12:36:11
5184 warnings on visual studio 2019 πŸ˜†
eddie.zato
2021-06-01 01:05:30
``` INPUT the input can be PNG, PPM, PFM, or PGX ```
2021-06-01 01:16:03
Probably because of the 5184 warnings πŸ˜„
2021-06-01 01:16:36
Built with msys2 ``` v0.3.7-51-gaf6ece2 sse4 - 2021.06.01 cjxl.exe D9DE989DF31B6F6B24B47493A78F9D374A44B94B 6.55 MiB djxl.exe 549DE234D6E266F44EE66595BD3E58641C51B2FB 4.92 MiB ``` https://github.com/eddiezato/eddiezato.github.io/releases/download/bin/jxl-win64.7z
fab
2021-06-01 01:32:56
can you link both commits please
raysar
eddie.zato ``` INPUT the input can be PNG, PPM, PFM, or PGX ```
2021-06-01 01:33:09
i don't undertand, my cjxl.exe works with jpg and png
fab
2021-06-01 01:33:12
because maybe you built the one from jon
2021-06-01 01:33:28
so the improved speed 2 lossless
eddie.zato
raysar i don't undertand, my cjxl.exe works with jpg and png
2021-06-01 01:41:03
Yeah, it works with jpg, but failed with gif πŸ˜•
raysar
2021-06-01 01:41:48
so where a need to modify config file in project?
fab
eddie.zato Built with msys2 ``` v0.3.7-51-gaf6ece2 sse4 - 2021.06.01 cjxl.exe D9DE989DF31B6F6B24B47493A78F9D374A44B94B 6.55 MiB djxl.exe 549DE234D6E266F44EE66595BD3E58641C51B2FB 4.92 MiB ``` https://github.com/eddiezato/eddiezato.github.io/releases/download/bin/jxl-win64.7z
2021-06-01 01:45:41
so i tested this
2021-06-01 01:45:49
at q 67.8 s 9 the quality is as good as
2021-06-01 01:46:09
for %i in (C:\Users\User\Documents\bn2*.jpg) do cjxl -j -s 6 -q 63.52 --epf=2 -p --gaborish=1 --patches=0 --dots=1 --use_new_heuristics %i %i.jxl
2021-06-01 01:46:25
for that particular type of image
2021-06-01 01:48:18
i'll make a more comparison
eddie.zato
raysar so where a need to modify config file in project?
2021-06-01 01:49:07
I build with msys2/mingw64. The commands are: ```bash cmake -B build -G Ninja -S ./ -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_DEVTOOLS=ON -DJPEGXL_ENABLE_OPENEXR=OFF -DJPEGXL_ENABLE_SKCMS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_STATIC=ON -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DCMAKE_CXX_FLAGS='-ffunction-sections -fdata-sections' -DCMAKE_EXE_LINKER_FLAGS='-Wl,--gc-sections -Wl,--no-export-dynamic' .. ninja -C build strip -s build/tools/{cjxl.exe,djxl.exe} ``` I'm not much of an expert on this. I figured out which cmake flags to use by reading `ci.sh` πŸ˜„
fab can you link both commits please
2021-06-01 01:51:46
I just build main branch from github repo with the last commit at the time
raysar
2021-06-01 01:55:33
i only edit the CMakeSettings.json and look at the cmakelists.txt but i don't see what is wrong. You wright jpeg encoding don't works ^^
fab
2021-06-01 01:57:32
See the improvements in medium quality
2021-06-01 01:57:42
there are virtually no regressions to new heuristics 12052021
2021-06-01 01:57:46
2021-06-01 01:57:46
who fixed this?
2021-06-01 01:57:54
jon or jyrki?
2021-06-01 01:58:10
i tried also
2021-06-01 01:58:11
for %i in (C:\Users\User\Documents\gww\*.png) do cjxl -q 98.23493 -s 8 --epf=1 --faster_decoding=5 %i %i.jxl
2021-06-01 01:58:14
with 24052021
2021-06-01 01:58:25
an older build raysar sent in this server
2021-06-01 01:58:29
i do not have the build commit
2021-06-01 01:58:53
FOR NEW COMMIT I USED
2021-06-01 01:58:54
https://discord.com/channels/794206087879852103/794206170445119489/849275242496655372
2021-06-01 01:59:05
so the eddie zato commit
raysar
2021-06-01 02:00:23
Ok i need to undestand how to fix that ^^, i hate compile projets πŸ˜„ `1> [CMake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11") 1> [CMake] -- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR) 1> [CMake] -- Could NOT find JPEG (missing: JPEG_LIBRARY) (found version "62") 1> [CMake] -- Could NOT find GLUT (missing: GLUT_glut_LIBRARY GLUT_INCLUDE_DIR) 1> [CMake] -- Could NOT find GIF (missing: GIF_LIBRARY) (found suitable version "5.1.4", minimum required is "5") 1> [CMake] -- Could NOT find JPEG (missing: JPEG_LIBRARY) (found version "62") 1> [CMake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11") 1> [CMake] -- Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11") 1> [CMake] -- Could NOT find PNG (missing: PNG_LIBRARY PNG_PNG_INCLUDE_DIR) 1> [CMake] -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) 1> [CMake] -- Could NOT find JPEG (missing: JPEG_LIBRARY) (found version "62") 1> [CMake] -- Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)`
fab
2021-06-01 02:08:43
issue closed
Scientia
2021-06-01 02:08:56
<@231086792315633664> I think you need something like jpeg(libjpeg-turbo), zlib (zlib, libzlib), and png(libpng)
2021-06-01 02:09:12
And glut/libglut
2021-06-01 02:09:24
Just look up each dep online + your distro
raysar
Scientia <@231086792315633664> I think you need something like jpeg(libjpeg-turbo), zlib (zlib, libzlib), and png(libpng)
2021-06-01 02:09:36
it's not with the git --recursive? i'm on windows with visual studio
Scientia
2021-06-01 02:09:44
So zlib ubuntu
2021-06-01 02:09:48
If you used ubuntu
raysar it's not with the git --recursive? i'm on windows with visual studio
2021-06-01 02:10:01
Well git recursive is important
2021-06-01 02:10:12
But it looks like you're missing libs to me
raysar
2021-06-01 02:11:40
Compiling full windows. So you know where a need to put all theses libraries?
Scientia
2021-06-01 02:11:48
If you're using windows make sure you're using msys2
2021-06-01 02:12:03
I think you can install everything from msys2 with pacman
eddie.zato
2021-06-01 02:12:44
In msys2 you just need to install all the mingw-versions of these dependencies with pacman
raysar
2021-06-01 02:14:01
i don't want to use msys2, it could works on visual studio: https://gitlab.com/wg1/jpeg-xl/-/blob/main/doc/developing_in_windows.md
Scientia
2021-06-01 02:14:42
`pacman -Syu && pacman -S mingw-w64-zlib mingw-w64-libpng mingw-w64-libjpeg-turbo`
2021-06-01 02:14:48
I think that'll do it
2021-06-01 02:17:07
<@231086792315633664> it says what to do right here
2021-06-01 02:17:50
Do you think they'd be default in msys2?
raysar
Scientia <@231086792315633664> it says what to do right here
2021-06-01 02:20:41
Yes i do that. Everything is installed ^^
Scientia
2021-06-01 02:20:53
πŸ€”
2021-06-01 02:20:58
Weird
raysar
2021-06-01 02:23:49
i need to find how to say to cmake where are the lib missing ^^
2021-06-01 02:25:54
Maybe adding lines int the cmakesettings.json
2021-06-01 02:29:47
Yes i will use docker or msys2 if i don't understand πŸ™‚
2021-06-01 02:31:54
At least it forces me to understand how it works.
spider-mario
2021-06-01 09:48:35
for what it’s worth, I use msys2 myself
2021-06-01 09:48:56
it works very well
eddie.zato
2021-06-02 02:34:16
Is there a way to write the version number with the commit to the exe when building? e.g., replace `v0.3.7` with `v0.3.7-54-g8ec268b`
Scientia
2021-06-02 05:20:58
Hey I had a question I think I have the answer to but I wanted to make sure. Because vardct uses variable block size that makes lossless cropping like jpegtran-style no longer feasible right?
_wb_
2021-06-02 05:24:27
You can still do it, but it would be at a 256-aligned offset instead of an 8-aligned offset, so not so useful
2021-06-02 05:25:32
You can also do reversible cropping though: keep the whole image but change the image dimensions and the frame position to put things outside the canvas.
lithium
2021-06-02 10:26:47
How to control -m --lossy-palette --palette=x quality? If I set a number on --palette=50000, encoding time will very slow... and if set --palette=0, lossy-palette will only use 1024 colors? > -m -s 9 --lossy-palette --palette=50000 -g 2 -E 3 -I 1 --num_threads=12
_wb_
2021-06-02 11:00:14
At the moment, there is no way to control quality with lossy palette, and it has only been tried with the default palette (which is no signalled palette, only using implicit colors and deltas)
lithium
2021-06-02 11:05:02
I understand, thank you πŸ™‚
2021-06-02 11:23:42
Hello <@!794205442175402004> --lossy-palette --palette=x, x available values is 0 and 1024? I try --palette=20000 and --palette=40000, encoding time will very slow... > -m -s 7 --lossy-palette --palette=20000 --num_threads=12 > -m -s 7 --lossy-palette --palette=40000 --num_threads=12
Deleted User
_wb_ At the moment, there is no way to control quality with lossy palette, and it has only been tried with the default palette (which is no signalled palette, only using implicit colors and deltas)
2021-06-02 11:24:12
How can you show the colors of default implicit palette? Is it possible with `jxl_from_tree`?
Scope
2021-06-02 11:26:57
> --lossy-palette > [modular encoding] quantize to a palette that has fewer entries than would be necessary for perfect preservation; for the time being, it is recommended to set **--palette=0** with this option to use the default palette only I don't think it works correctly with other values than 0, also it is still an experimental option which does not work together with lossy mode and other options
lithium
2021-06-02 11:31:10
> use a palette if image has at most K colors (default: 1024), so --palette=0 == --palette=1024?
Scope
2021-06-02 11:33:01
Perhaps (at least it does not make sense to try other values)
lithium
2021-06-02 11:35:11
But I get different file size on 0 and 1024, > -m -s 7 --lossy-palette --palette=0 --num_threads=12 > -m -s 7 --lossy-palette --palette=1024 --num_threads=12
Scope
2021-06-02 11:38:08
Maybe it will work in some way, but it is not designed and tuned for that yet, I remember Jyrki once said that there are many ideas for different palette options, but at the moment there is no time for these experiments https://mobile.twitter.com/jyzg/status/1329067794995011585
_wb_
How can you show the colors of default implicit palette? Is it possible with `jxl_from_tree`?
2021-06-02 11:40:24
Not yet, I should add an option for that
lithium > use a palette if image has at most K colors (default: 1024), so --palette=0 == --palette=1024?
2021-06-02 11:41:06
No, palette 0 means "have at most 0 colors in the palette"
2021-06-02 11:41:57
Lossy palette can still do stuff with a 0-color palette because every palette has implicit colors when you have an out-of-bounds index
2021-06-02 11:42:56
Lossy palette would very likely get better results if it were to actually create a custom palette for the image
2021-06-02 11:43:46
But for now we only have an encoder for lossless palette, and one for 0-color lossy palette
lithium
2021-06-02 11:46:12
ok, I understand, thank you <@!794205442175402004> <@!111445179587624960> πŸ™‚ so lossy palette(p0) still a experimental option? can't use on real environment?
Scope
2021-06-02 11:47:27
Yes, but for some images it can already give quite good results
_wb_
2021-06-02 11:49:11
yes, it is experimental, and it is mostly there for us to know that the implicit (delta)palette entries are actually useful (because that's something that goes in the decoder/spec)
fab
2021-06-02 11:56:01
Do you have newer builds
2021-06-02 11:56:03
v0.3.7-51-gaf6ece2 sse4 - 2021.06.01
2021-06-02 11:56:08
not this
2021-06-02 11:56:12
but at least the 55
2021-06-02 11:56:26
because i need to make this spidermario test
2021-06-02 11:56:38
and he didn't say when it expires
2021-06-02 11:56:55
so if you have builds and wb is ok with sharing
2021-06-02 11:57:01
you can start now
_wb_
2021-06-02 11:57:05
Fabian, recommendation: install a dual-boot linux distro on your computer and compile it yourself πŸ™‚
fab
2021-06-02 11:57:37
yes but with jpeg there wasn't such a need
2021-06-02 11:57:46
you opened paint and clicked save
2021-06-02 11:57:54
without compiling anything
Scope
2021-06-02 12:01:52
Or perhaps (after these builds have been enabled) https://github.com/libjxl/libjxl/pull/12
2021-06-02 12:10:46
I do not post new builds because there are no major changes, especially in the quality of VarDCT, it is a placebo effect and wrong comparisons when fixing some bugs or changes in Readme.md improve the encoding quality
fab
2021-06-02 12:12:06
no quality is better
2021-06-02 12:12:11
i see discolouration
2021-06-02 12:12:14
and luma noise
2021-06-02 12:12:23
in some photos from older encoder
2021-06-02 12:12:25
and blurring
2021-06-02 12:12:36
still at q 48.6 they look the same
2021-06-02 12:12:39
no improvements
2021-06-02 12:12:55
with the dilvish build
2021-06-02 12:13:11
i used also patch 1 (do not what is)
2021-06-02 12:13:26
and the raysar commit (that is the build when petr submitted)
2021-06-02 12:13:40
those are obviously not adviced to use
_wb_
fab without compiling anything
2021-06-02 12:13:47
Pretty sure that if in 1991 you would want to experiment with the latest jpeg encoder, you wouldn't just "open paint and click save", but you'd try to find something on usenet or something and try to get it compiled. JPEG XL is currently where JPEG was in 1991: almost standardized, implementations still experimental, mainstream adoption still has to happen
fab
2021-06-02 12:15:11
but the better quality is not perceived
2021-06-02 12:15:30
2021-06-02 12:15:39
for example you take an image like this
2021-06-02 12:15:42
and you re encode
2021-06-02 12:15:49
it loses yellow saturation
_wb_
2021-06-02 12:15:58
what are you comparing to what?
fab
2021-06-02 12:16:14
no is good the dilvish build
2021-06-02 12:16:18
i closed the issue
2021-06-02 12:16:30
and i posted a zip file in jxl and libjxl
2021-06-02 12:16:46
but anyway this is closed don't think anymore about it
_wb_ Pretty sure that if in 1991 you would want to experiment with the latest jpeg encoder, you wouldn't just "open paint and click save", but you'd try to find something on usenet or something and try to get it compiled. JPEG XL is currently where JPEG was in 1991: almost standardized, implementations still experimental, mainstream adoption still has to happen
2021-06-02 12:16:55
right
2021-06-02 12:17:51
q 48.6 i used for the nasa photo
2021-06-02 12:17:59
the one from Lunar
2021-06-02 12:19:18
lockheed martin
2021-06-02 12:19:32
it was a jpg and i resized with paint and save as png
2021-06-02 12:46:33
2021-06-02 12:47:11
for this is improving already on the density compression
2021-06-02 12:47:48
2021-06-02 12:48:05
17,4 KB (17.843 byte)
2021-06-02 01:22:18
no the quality looks pretty good
2021-06-02 01:22:28
i'm seeing videos in youtube mp4
2021-06-02 02:41:08
try encoding with
2021-06-02 02:41:09
-q 69.7376 -s 7 --epf=2 --dots=1 --gaborish=1
2021-06-02 02:42:10
2021-06-02 02:44:25
2021-06-02 02:44:36
2021-06-02 02:46:24
improver
2021-06-02 02:49:14
shouldn't this go to <#803645746661425173> or <#840831132009365514> ?
fab
2021-06-02 02:49:31
improver shouldn't this go to <#803645746661425173> or <#840831132009365514> ?
2021-06-02 02:49:56
so images can be posted in encode params
2021-06-02 02:50:00
i didn't know
improver
2021-06-02 02:50:54
im not actually really sure how it's different from <#803645746661425173> in what it's supposed to have :P
2021-06-02 02:51:18
this kinda seems closer to <#803645746661425173> though
fab
2021-06-02 02:51:36
firefox BUG
2021-06-02 02:51:37
Scope
2021-06-02 02:56:29
<#803645746661425173> is a comparison of different options or encoders under some conditions where they can be compared, but this is just encoding with some options
fab
2021-06-02 02:56:41
right
2021-06-02 02:56:44
now there is the comparison
lithium
2021-06-02 07:10:36
Hello <@!794205442175402004> I tested some other png lossy color palette implement + jxl lossless, result is very good, A little curious, jxl lossy palette will get some new features in next few month?
_wb_
2021-06-02 07:47:09
It's not a current priority but there is certainly a large potential for encoder improvements in that area, I think.
2021-06-02 07:47:28
And other types of non-DCT near-lossless techniques
2021-06-02 07:48:22
Modular is a very expressive sub-bitstream, lots of things could be done with it
2021-06-02 07:51:38
It's mostly a matter of spending time on encoder improvements, which is currently not the biggest priority since there is still a bunch of other kinds of improvements that need to be done, especially robustness, memory reductions, library api, integrations, etc.
lithium
2021-06-02 07:51:53
ok, I understand, thank you <@!794205442175402004> πŸ™‚
raysar
2021-06-03 03:08:42
Hello, i build cjxl with docker and cross compilation (dfc730a8), but it crash with an error missing libgif-7.dll libjpeg-62.dll libpng16.dll So it's not a static build, maybe we need to modify the docker documentation for noob like me. So i modify the CMakeLists.txt `set(JPEGXL_STATIC true CACHE BOOL` and then run `export BUILD_TARGET=x86_64-w64-mingw32 CC=clang-7 CXX=clang++-7` then `./ci.sh release` So there is the last binary working great from now for windows (dfc730a8)
2021-06-03 04:17:31
10Β 747Β 970 bytes for cjxl.exe, it's big compare to other scope built ^^
Jyrki Alakuijala
2021-06-03 04:32:59
I wrote to https://github.com/mozilla/standards-positions/issues/522#issuecomment-853919129
paperboyo
Jyrki Alakuijala I wrote to https://github.com/mozilla/standards-positions/issues/522#issuecomment-853919129
2021-06-03 06:25:02
Very interesting read and I agree with all of it (as much as I can not having much hands-on experience). But this argument, which I have seen cited here, may be seen as an excuse for poorer performance of JXL vs. AVIF at low bpps, IMHO: > I observe JPEG XL to have some more tendency to become artefacty before it comes forgetful, and for AVIF to become forgetful first and artefacty later. This may lead into user confusion if cracks and bolts start disappearing rather than user being otherwise informed about bad quality of image transport. I, for one, would enthusiastically welcome JXL improvements in this area. I definitely get the point of the argument. I also tend to prefer **some** artifacts to a plasticky smudge (even aesthetically, never mind ethically!), but I would still choose this AVIF over this JXL without hesitation: https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_03_16/index.html#89-vezelay-basilique-2&AVIF-AOM=t&JXL=t&subset1 (or this: https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_03_16/index.html#clovisfest&AVIF-AOM=t&JXL=t&subset1) (is this comparator current? is there one that tracks the encoders improvements more closely?)
Scope
2021-06-03 06:30:54
Also, JXL has improved on low bpp as well (though maybe not between these comparisons, but he had improvements) <https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_04_20/index.html#clovisfest&AVIF-AOM=s&JXL=s&subset1>
paperboyo
Scope Also, JXL has improved on low bpp as well (though maybe not between these comparisons, but he had improvements) <https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_04_20/index.html#clovisfest&AVIF-AOM=s&JXL=s&subset1>
2021-06-03 06:38:25
Thanks for the URL to newer comparison! (🀦). Strangely, I can see the same JXL (13469b) for Tiny balloons whether it’s 2021_03_16 or 2021_04_20…
Scope
2021-06-03 06:39:31
Yes, the result was worse in even older comparisons
2021-06-03 06:41:03
πŸ€” <https://storage.googleapis.com/demos.webmproject.org/webp/cmp/2021_02_15/index.html#clovisfest&AVIF-AOM=s&JXL=t&subset1>
2021-06-03 07:24:07
About the improvement on low bpp, it is needed and it is also a problem of better acceptance, a lot of comparisons are going on the lowest bpp (because it is more visual and many people think it is the best method). But about the problem of pleasant looking images at very high compression (when the bitrate is not enough to preserve the original well) I also talked a long time ago and have often encountered it. When there is no choice, yes it is better to have a nicer looking image (even if it is far from original and has lost many details), but often many people start compressing any image extremely strongly, even when it is not necessary and not everyone closely compares result with original, mostly if there are no noticeable artifacts, everything is ok. I know people who compressed their images and photos a lot and were happy about the huge space savings (like they took up 5-8 times less space), while the originals were also often deleted, but until I clearly showed how different they are. Not all people understand how to properly compare and how much they can compress images, and before the advent of video based image formats, Jpeg-like artifacts were a definite stopping factor for that (when they are visible, it means that the compression is too strong) And this is even more true for Web, since there is a huge demand to reduce traffic and with new formats I'm not very happy to get a Web-world with heavily compressed filtered images (not all of them are that necessary, but it's often the case that it's the compressed image that's the maximum quality it has left in history)
2021-06-03 07:32:37
In short, let's say a new codec is 50% more efficient than the previous ones, so we can get better quality or even nearly lossless with, say, 20-30% less size? No, most likely we will get 70-80% smaller size with worse quality (but with better artifact hiding and filtering techniques)
raysar
Scope In short, let's say a new codec is 50% more efficient than the previous ones, so we can get better quality or even nearly lossless with, say, 20-30% less size? No, most likely we will get 70-80% smaller size with worse quality (but with better artifact hiding and filtering techniques)
2021-06-03 07:37:50
Yes i have yes I'm afraid that devs compress more than jpeg because they are blind and happy to reduce server space. I think we need to force people using jxl to read documentation how to smart compress and compare picture before using it.
Crixis
2021-06-03 07:38:48
I don't think a format is driven by an user base
raysar
Crixis I don't think a format is driven by an user base
2021-06-03 07:40:21
Journalist have a big power to educate users. We need to not miss the moment where jxl become popular.
lithium
2021-06-03 07:40:38
I think low bbp issue is depend on design intent, av1 encoder is video format, so they focus on how to use limited bitrate create good or okay quality, even lost some detail. jpeg xl encoder is still image format, so they focus on how to keep important detail and have good compression rate, vardct mode is base on butteraugli distance, butteraugli is design for high quality(guetzli and pik), so on low bbp or large butteraugli distance, vardct can't work very well on current version. For low bbp use case, I think can use jxl lossy-palette(without dct), or maybe jxl will implement some lossy filter mode.
Scope
Crixis I don't think a format is driven by an user base
2021-06-03 07:43:04
Sometimes, let's say DivX/Xvid got acceptance and popularity at one time because of users (although mostly piracy) or FLAC, MKV etc. and only later they had to be supported by other manufacturers/companies And also a lot of formats promoted from above by large companies, but unpopular with users quickly disappeared
fab
2021-06-03 07:49:31
_wb_
Scope In short, let's say a new codec is 50% more efficient than the previous ones, so we can get better quality or even nearly lossless with, say, 20-30% less size? No, most likely we will get 70-80% smaller size with worse quality (but with better artifact hiding and filtering techniques)
2021-06-03 09:01:56
I think it's good if a codec allows you to do both of those things (better fidelity while still being smaller, or worse fidelity but same appeal and a lot smaller). I personally don't like using better codecs to reduce fidelity, I think that's a short-sighted approach that values the easy measurable (bytes) too much and the harder to measure (visual fidelity) too little.
Scope
2021-06-03 09:25:34
Yes, however, I am not against improving visual perception at low bpp, if there is a use for any compression it is good, it would be better than if the encoder allowed to compress to very small sizes, but because of the very low quality it was nowhere to be applied in real use For example there are previews (when there is also a higher quality image) or thumbnails for videos and other things not very important for accurate image preservation I'm more about that people don't always use it correctly and it brings not just only benefits
Scientia
2021-06-03 11:29:49
Has the problem of a malicious JXL been discussed?
2021-06-03 11:30:20
What if I made a 500 million pixel wide jxl using jxl from tree
2021-06-03 11:30:51
Wouldn't that suck a lot of memory to the point of a crash
2021-06-03 11:31:31
Can the decoder know when such an image is being decoded on a machine without enough resources and fail gracefully?
BlueSwordM
Scientia What if I made a 500 million pixel wide jxl using jxl from tree
2021-06-03 11:35:21
Well, not if you made the decoder so efficient that it barely consumed more RAM than the raw image size <:kekw:808717074305122316>
Scientia
BlueSwordM Well, not if you made the decoder so efficient that it barely consumed more RAM than the raw image size <:kekw:808717074305122316>
2021-06-03 11:36:18
I can only hope
BlueSwordM
2021-06-03 11:36:32
I mean, it has improved quite a bit.
2021-06-03 11:36:44
There was a point where encoding a 200MP image took up 28GB of RAM I think?
Scientia
2021-06-03 11:36:56
Memory usage especially for lossless at max compression is up to 10x the original image size for me
BlueSwordM
2021-06-03 11:36:57
We're now down to 14GB.
Scientia
2021-06-03 11:37:24
Maybe it's more like 5x now, I think I tested it on 0.3.5 or 0.3.6
Scope
2021-06-03 11:41:54
As far as I know the profile for browsers is limited in resolution, also JXL uses groups/tiles also limited in resolution like 256x256 and up to 1024x1024 for lossless and theoretically if there is not enough memory the next tile just might not decode
Scientia
2021-06-03 11:43:25
That makes it a lot less dangerous
Scope
2021-06-03 11:49:56
veluca
2021-06-04 12:24:50
a browser will likely refuse to decode too big stuff
2021-06-04 12:25:27
ideally, a 200MP image should just take 800 MB in chrome (one byte per channel)
2021-06-04 12:26:51
I believe rn it takes a lot more (7.2gb with djxl I think, if it's more then I need to double check)
improver
2021-06-04 12:32:13
it shouldn't be needing to do more than one block at time.. no?
BlueSwordM
veluca I believe rn it takes a lot more (7.2gb with djxl I think, if it's more then I need to double check)
2021-06-04 12:33:09
In my case, it takes 1,4GB of view the whole 8b 200MP image
veluca
BlueSwordM In my case, it takes 1,4GB of view the whole 8b 200MP image
2021-06-04 12:33:54
you said 14 before πŸ˜› which is it?
BlueSwordM
veluca you said 14 before πŸ˜› which is it?
2021-06-04 12:34:25
I meant encoding, not decoding.
2021-06-04 12:34:28
Sorry.
2021-06-04 12:34:35
14GB would be quite scary during decoding <:monkaMega:809252622900789269>
Scope
2021-06-04 12:34:35
veluca
improver it shouldn't be needing to do more than one block at time.. no?
2021-06-04 12:35:21
not in *all* cases (progressive images take more, and you still need the DC for VarDCT...) but you also need to store the image itself *somewhere* πŸ˜›
BlueSwordM I meant encoding, not decoding.
2021-06-04 12:35:40
that's better xD
BlueSwordM In my case, it takes 1,4GB of view the whole 8b 200MP image
2021-06-04 12:35:52
is it grayscale or color?
BlueSwordM
veluca is it grayscale or color?
2021-06-04 12:36:04
8bpc color.
veluca
2021-06-04 12:36:17
8b doesn't actually change anything
improver
2021-06-04 12:36:37
well, yes, more but not really whole-image kind of more, just some DC and per-block stuff in addition to destination bitmap
BlueSwordM
2021-06-04 12:36:49
I see. I thought native higher bit-depth source would take up more decoding time+memory vs the LBD source.
veluca
2021-06-04 12:37:20
1.4gb seems a bit too low then - I suspect you get higher peaks during decoding, but not sure
improver
2021-06-04 12:38:25
keeping contexts for progressive may be tricky though
BlueSwordM
veluca 1.4gb seems a bit too low then - I suspect you get higher peaks during decoding, but not sure
2021-06-04 12:39:17
You are correct. Total peak seems to be 1,5GB. 1.4GB is the local maximum when the image is zoomed and fully decoded.
veluca
BlueSwordM I see. I thought native higher bit-depth source would take up more decoding time+memory vs the LBD source.
2021-06-04 12:39:32
nope! we use 32-bit ints/floats everywhere at the moment, the plan is to keep only 32-bit floats/ints group buffers (so 256x256ish per thread per channel), and then a few borders (ideally O(width) or O(height)), and if and only if the image is progressive then 16-bits per channel unless you're doing some weird stuff with very very high bitdepth content
BlueSwordM You are correct. Total peak seems to be 1,5GB. 1.4GB is the local maximum when the image is zoomed and fully decoded.
2021-06-04 12:40:01
I'd have expected more something like 4.8gb tbh... oh well, better this way xD
BlueSwordM
2021-06-04 12:41:12
I mean, the image itself is VARDCT encoded with speed 7, so it's not exactly the most demanding scenario, right?
Scope
2021-06-04 12:43:27
On one of the old builds via WIC
veluca
2021-06-04 12:49:55
ahhh I thought you did lossless
2021-06-04 12:50:34
all vardct will, today, just do about 1-1.5 bytes/pixel + the output + some_constant * num_threads
2021-06-04 12:50:43
(that first value can be taken down still)
BlueSwordM
2021-06-04 12:52:12
Yeah, I doubt such a highly detailed image at 200MP would only be 6-7MB using modular πŸ˜†
veluca
2021-06-04 12:59:03
I didn't actually look at it πŸ˜›
2021-06-04 12:59:34
spoiler: I don't actually have a jxl viewer on my personal laptop... (well, there's chrome)
2021-06-04 12:59:46
what distance value did you use?
BlueSwordM
2021-06-04 01:00:04
I think I used a distance of 2 a while back to make it fit within Discord's 8MB limits.
veluca
2021-06-04 01:02:11
Chrome doesn't like it very much xD
BlueSwordM
veluca all vardct will, today, just do about 1-1.5 bytes/pixel + the output + some_constant * num_threads
2021-06-04 01:06:46
Yeah, lossless is kind of special.
2021-06-04 01:07:17
Total peak? 4,9GB with that image with modular lossless. Local peak during normal viewing is about 1,5GB.
veluca
2021-06-04 01:07:50
yup sounds about right
2021-06-04 01:08:18
can be improved, but needs work (and I find myself having less and less time xD)
raysar
raysar Hello, i build cjxl with docker and cross compilation (dfc730a8), but it crash with an error missing libgif-7.dll libjpeg-62.dll libpng16.dll So it's not a static build, maybe we need to modify the docker documentation for noob like me. So i modify the CMakeLists.txt `set(JPEGXL_STATIC true CACHE BOOL` and then run `export BUILD_TARGET=x86_64-w64-mingw32 CC=clang-7 CXX=clang++-7` then `./ci.sh release` So there is the last binary working great from now for windows (dfc730a8)
2021-06-04 01:29:00
<@!111445179587624960> the windows built i create works on both avx2 and sse4 cpu, why your binary don't do the same? It's not at all practical to share 2 different binaries.
Scope
raysar <@!111445179587624960> the windows built i create works on both avx2 and sse4 cpu, why your binary don't do the same? It's not at all practical to share 2 different binaries.
2021-06-04 07:58:30
My non-AVX2 build is the same, AVX2 is just compiler optimizations and it runs faster on modern AVX2+ CPUs (but not works on non-AVX2)
fab
2021-06-04 08:40:51
jxl plugin doesn't appear on gimp < export
2021-06-04 08:40:59
while using latest development version
2021-06-04 08:41:09
should i change gimp with the version before
2021-06-04 08:41:16
what is right version of gimp
2021-06-04 08:41:46
2021-06-04 08:44:24
i copied in appdata
2021-06-04 08:44:26
now i will check
2021-06-04 08:45:07
2021-06-04 08:45:26
amazing
2021-06-04 08:45:33
i have to install another 1 gb of program
2021-06-04 08:45:42
because you didn't say what gimp version i needed
Petr
fab because you didn't say what gimp version i needed
2021-06-04 09:14:44
Hmm, I'd recommend to use the latest verstion always (unless you have specific reasons not to).
Deleted User
2021-06-04 09:36:50
Can someone shed some more light on the XYB color space used by JPEG XL? how does its transform coding gain from RGB compare to, say, ICtCp? Is there perhaps a white paper explaining the rationale and data behind it? apologies for the random question - there doesn't seem to be much reading material on the topic from googling, apart from its introduction in pik EDIT: RGB to XYB is trivial, as seen in the `RgbToXyb` function over at https://github.com/google/butteraugli/blob/master/butteraugli/butteraugli.h ``` [X] [1 -1 0] [R] [Y] = [1 1 0] [G] [B] [0 0 1] [B] ``` πŸ˜‘ pretty boring, lol
_wb_
2021-06-04 09:39:37
<@!532010383041363969> is the one who can explain that best
2021-06-04 09:42:44
I _think_ it's not hugely different from ICtCp, except it has a different non-linearity that supposedly better models spontaneous cone activation (and the cube root variant which is used in jxl has the computational advantage of being just a cube at the decode side)
2021-06-04 09:43:36
Both are based on LMS and aim to model the human visual system.
2021-06-04 09:44:12
I'm not sure what the patent situation is on ICtCp, do you know?
Deleted User
_wb_ I'm not sure what the patent situation is on ICtCp, do you know?
2021-06-04 09:48:50
I'm not sure if there's a patent situation on ICtCp itself but it's part of HEVC (and HEIC by extension). It's also extremely similar to XYB in that it models the luma and yellow-blue opponent process well, but I was curious to see exactly how the differences play out
_wb_
2021-06-04 09:51:24
ICtCp was made by Dolby and I assume they have patented it (haven't checked though). No idea what kind of licensing model they would have for it, could be royalty-free, royalties for hardware implementations only, I dunno.
raysar
Scope My non-AVX2 build is the same, AVX2 is just compiler optimizations and it runs faster on modern AVX2+ CPUs (but not works on non-AVX2)
2021-06-04 10:38:15
Ok thank you. You can say me how to create this optimized binary? You do test to mesure the speed encoding improvement?
Scope
2021-06-04 10:48:18
`-march=native` for Clang or GCC, for the CPU on which it is compiled, but for public AVX2 builds I use `-march=haswell`, these are relatively optimal optimizations for modern CPUs, both Intel and AMD starting with Ryzen These are old comparisons, but not much has changed since then: <https://www.phoronix.com/scan.php?page=news_item&px=Haswell-vs-Znver1-GCC-5>
2021-06-04 10:50:07
JXL can be ~5-8% faster depending on encoding modes and options, not a huge increase, but my encoding can take weeks or months and it's a noticeable difference
2021-06-04 10:53:42
`-O3`, `PGO LTO` options can also give a boost and -O3/LTO are CPU-independent (but for Windows I cannot compile with PGO and LTO for some reason)
raysar
2021-06-04 11:39:59
Ok thank you πŸ™‚, if i want to add this option in the ci.sh where i can put this? <:FeelsReadingMan:808827102278451241>
Scope
2021-06-04 12:12:52
It is better not to change ci.sh, but do something like this: https://discord.com/channels/794206087879852103/803663417881395200/835686632946270229
2021-06-04 01:10:19
Yep
2021-06-04 01:19:56
That's why I compiled several binary builds, for AVX2+ CPUs with better optimization and for older ones without AVX2 support and that was initially an answer to why I do not make only one build https://discord.com/channels/794206087879852103/794206170445119489/850184330465640480
veluca
2021-06-04 01:29:58
at least in theory, with dynamic dispatch, AVX2+ builds shouldn't be significantly faster than non-avx2 builds...
Scope
2021-06-04 01:48:04
Yep, but in practice there is a difference, even x264 gets better results on some CPUs, given that it has a lot of hand-written optimized asm code
veluca
2021-06-04 01:58:39
I mean, we compile the "hot" functions for no avx, avx2, avx512 too already
2021-06-04 02:00:02
yup
Scope
2021-06-04 02:06:29
Maybe the compilers do some other optimizations or does them more correctly when the old CPUs are "dropped"
Pieter
2021-06-04 02:16:48
with -march=haswell etc *everything* gets optimized using haswell instructions, not just the specific ones the code is designed to have dispatched versions of
_wb_
2021-06-04 02:22:32
yes, might make a small difference since the not-hot functions also contribute something
2021-06-04 02:24:52
also for modular encoding, there's quite a bit of stuff that hasn't been parallelized or SIMD'ed at all yet, and maybe the compiler can do a bit of optimization there (well it's not going to parallelize it but it might SIMDify some things)
2021-06-04 02:25:16
(with wider SIMD than with a generic cpu target, I mean)
veluca
2021-06-04 02:30:26
yes, modular likely gets the most benefits
fab
2021-06-04 03:50:22
My jpeg xl art become viral
2021-06-04 03:50:30
15449 views
2021-06-04 03:50:41
15957
raysar
Scope It is better not to change ci.sh, but do something like this: https://discord.com/channels/794206087879852103/803663417881395200/835686632946270229
2021-06-04 04:04:19
thank you πŸ™‚ `export BUILD_TARGET=x86_64-w64-mingw32 CC=clang-7 CXX=clang++-7 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=haswell" -DCMAKE_C_FLAGS="-O3 -march=haswell" -DJPEGXL_ENABLE_SJPEG=ON -DJPEGXL_STATIC=1 cmake --build . -- -j 16` On the docker linux i have many segmentation fault ^^ ||`third_party/highway/CMakeFiles/targets_test.dir/build.make:98: recipe for target 'third_party/highway/tests/targets_test' failed make[2]: *** [third_party/highway/tests/targets_test] Error 1 make[2]: *** Deleting file 'third_party/highway/tests/targets_test' CMakeFiles/Makefile2:1484: recipe for target 'third_party/highway/CMakeFiles/targets_test.dir/all' failed make[1]: *** [third_party/highway/CMakeFiles/targets_test.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... [ 37%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/epf.cc.o [ 38%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_data.cc.o [ 38%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_data_reader.cc.o [ 38%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/fields.cc.o [ 39%] Building CXX object lib/CMakeFiles/jxl_dec-obj.dir/jxl/filters.cc.o [ 39%] Linking CXX executable tests/aligned_allocator_test ../../lib/libgtest.a(gtest-all.cc.o): In function `testing::internal::StreamingListener::SocketWriter::MakeConnection()': gtest-all.cc:(.text+0x1edda): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking [ 39%] Building CXX object lib/CMakeFiles/jxl_enc-obj.dir/jxl/jpeg/enc_jpeg_huffman_decode.cc.o CMake Error at /usr/share/cmake-3.10/Modules/GoogleTestAddTests.cmake:39 (message): Error running test executable. Path: '/jpeg-xl/libjxl/build/third_party/highway/tests/aligned_allocator_test' Result: Segmentation fault Output:`||
Scope
2021-06-04 04:10:19
Maybe disabling tests will help, but I have not tried compiling in the docker, I use MSYS2 `-DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF`
raysar
2021-06-04 04:16:32
Also tested. I will do some other tests with a clean docker ^^ ||`/usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_Imath-NOTFOUND /usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_Half-NOTFOUND ... etc clang: error: linker command failed with exit code 1 (use -v to see invocation) /usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_Imath-NOTFOUND tools/CMakeFiles/benchmark_xl.dir/build.make:454: recipe for target 'tools/benchmark_xl' failed make[2]: *** [tools/benchmark_xl] Error 1 /usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_Half-NOTFOUND /usr/bin/ldCMakeFiles/Makefile2:1405: recipe for target 'tools/CMakeFiles/benchmark_xl.dir/all' failed : cannot find -lpkgcfg_lib_OpenEXR_Iex-NOTFOUNDmake[1]: *** [tools/CMakeFiles/benchmark_xl.dir/all] Error 2 make[1]: *** Waiting for unfinished jobs.... /usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_IexMath-NOTFOUND /usr/bin/ld: cannot find -lpkgcfg_lib_OpenEXR_IlmThread-NOTFOUND clang: error: linker command failed with exit code 1 (use -v to see invocation) tools/CMakeFiles/djxl.dir/build.make:141: recipe for target 'tools/djxl' failed make[2]: *** [tools/djxl] Error 1 CMakeFiles/Makefile2:1357: recipe for target 'tools/CMakeFiles/djxl.dir/all' failed make[1]: *** [tools/CMakeFiles/djxl.dir/all] Error 2 clang: error: linker command failed with exit code 1 (use -v to see invocation) tools/CMakeFiles/cjxl.dir/build.make:115: recipe for target 'tools/cjxl' failed make[2]: *** [tools/cjxl] Error 1 CMakeFiles/Makefile2:1261: recipe for target 'tools/CMakeFiles/cjxl.dir/all' failed make[1]: *** [tools/CMakeFiles/cjxl.dir/all] Error 2 Makefile:140: recipe for target 'all' failed make: *** [all] Error 2`||
2021-06-04 04:17:30
This type of projet is a litle bit complex for me πŸ˜„
Scope
2021-06-04 04:24:56
πŸ€” `-DJPEGXL_ENABLE_OPENEXR=OFF`
lithium
2021-06-04 05:08:34
Hello <@!111445179587624960>, I add -O3 -march=haswell to my cmake command, > -DCMAKE_CXX_FLAGS="-O3 -march=haswell" -DCMAKE_C_FLAGS="-O3 -march=haswell" \ But look like I lost some SSE4 optimize? > JPEG XL encoder v0.3.7 [AVX2] > cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF \ > -DJPEGXL_ENABLE_DEVTOOLS=ON \ > -DCMAKE_CXX_FLAGS="-O3 -march=haswell" -DCMAKE_C_FLAGS="-O3 -march=haswell" \ > -DCMAKE_C_COMPILER=clang.exe -DCMAKE_CXX_COMPILER=clang++.exe -G Ninja .. > cmake --build . -- -j$(nproc) > ryzen 1600, windows-10-x64-msys2-mingw64
_wb_
2021-06-04 05:10:05
You don't need sse4 if you have avx2
2021-06-04 05:10:24
That is, avx2 is a superset of sse4
lithium
2021-06-04 05:12:03
without Scalar optimize still fine?
2021-06-04 05:12:58
my old build will display like this > SIMD supported: AVX2,SSE4,Scalar
diskorduser
2021-06-04 05:13:56
I get only avx2 when march=native
raysar
2021-06-04 05:14:56
with theeses optimisation it's impossible to execute this binary on non avx2 cpu.
lithium
2021-06-04 05:17:20
So if cpu support avx2, JPEG XL encoder v0.3.7 [AVX2] is grest, if cpu unsupport avx2, will need SSE4 and Scalar optimize?