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

tools

_wb_
2021-01-26 04:32:27
Squoosh includes jxl support: https://squoosh.app/
2021-01-26 04:33:44
ImageMagick supports jxl since version 7.0.10-54: https://imagemagick.org/
2021-01-26 04:35:04
https://www.reddit.com/r/jpegxl/comments/l4nwb2/how_to_view_jpeg_xl_images_in_nomacs_for_windows/
BlueSwordM
2021-01-26 04:44:35
Instructions how to get JPEG XL for all QT stuff on Linux: https://github.com/novomesk/qt-jpegxl-image-plugin After that, you will be able to view your pictures, have thumbnails generated, and even capture JXL screenshots.
2021-01-28 04:10:19
How to get nomacs on Windows to decode JPEG-XL images natively: https://old.reddit.com/r/jpegxl/comments/l4nwb2/how_to_view_jpeg_xl_images_in_nomacs_for_windows/
yllan
2021-01-31 06:07:34
macOS JXL viewer + QuickLook plugin https://github.com/yllan/JXLook
_wb_
2021-02-02 01:15:11
Thumbnail handler for Windows File Explorer: https://github.com/saschanaz/jxl-winthumb
2021-02-04 09:36:57
https://jeremylee.sh/bin.html
Scope
2021-02-08 01:07:07
https://github.com/mirillis151/jpegxl-wic
Nova Aurora
2021-02-08 01:21:43
Cool, so that'll help with windows
Deleted User
2021-02-08 07:02:33
Yeah, this will help a lot with the adoption on windows
raysar
2021-02-08 09:13:58
i don't understant "according value is added to your PATH environment variable" What folder need to be in the PATH?
2021-02-08 10:01:38
the readme is incomprehensible for non dev.
elvissteinjr
raysar the readme is incomprehensible for non dev.
2021-02-08 12:47:42
Probably because these aren't non-dev instructions, but how to compile it manually and have it install afterwards. I'd imagine binary releases will be available sooner or later.
BlueSwordM
2021-02-08 01:47:49
The easy part is putting stuff in yout path. The hard stuff is everything else.
spider-mario
2021-02-09 11:18:28
I remember when I was 11 or 12 and got my hands on a Java book (1.2 iirc)
2021-02-09 11:18:45
it said to install the JDK, and then to run “javac foo.java”
2021-02-09 11:18:57
without explaining the required “add to PATH” step in between
2021-02-09 11:19:09
so it didn’t work for me and I gave up (and learned C++ instead)
BlueSwordM
2021-02-09 11:44:46
Which was a good thing in retrospec.
2021-02-09 11:44:53
Honestly, I like C/C++.
Pieter
2021-02-09 11:51:32
first learned Basic ("wow I can make a computer do things"), then C ("wow I can make a computer do things quickly!"), then Java ("wow a language with some helpful abstractions and standard routine"), then C++ ("wow, that, but fast!")
Nova Aurora
2021-02-10 12:07:34
Python, then C
Master Of Zen
2021-02-10 12:18:52
Fun, stuff. But more faster language is used for matrix GUI app -> worse it is
2021-02-10 12:20:29
C++ have icons and button misalign, bare bone functionality. Rust is ugly as hell because gtk+. JS is nice, a lot of features, etc
lonjil
2021-02-10 06:21:30
I learned C from a book that was printed before I was born.
_wb_
2021-02-10 06:27:02
I started with Commodore Basic, then GW Basic and QuickBasic, then TurboPascal, PPL, C, C++, PHP, Perl, Java, Prolog, Haskell, [series of weird academic declarative languages you never heard of], and now just C++
Pieter
2021-02-10 06:34:00
GWBasic, QBasic, QuickBasic, Visual Basic 3, 5, 6; Perl, C, Java, PHP, Prolog, Haskell, [series of weird academic declarative languages you never heard of, except you, <@!794205442175402004>], C++, Python.
_wb_
2021-02-10 06:47:27
Ah yes, QBasic was the stripped down version of QuickBasic, right? Without compiler, only interpreter iirc.
Pieter
2021-02-10 06:48:13
Yes. But I learned about QBasic before QuickBasic (or even the existence of a "compiler")
_wb_
2021-02-10 06:48:44
Same. QBasic shipped with DOS iirc
Pieter
2021-02-10 06:49:20
GWBasic I learned maybe around 1994. QuickBasic I got from Pater Leo, who I believe you know. Maybe in 1996 or 1997.
2021-02-10 06:49:47
QBasic was somewhere in between.
_wb_
2021-02-10 07:00:07
Haha, Father Leo, Latin teacher. Yes. I once made a RPG/adventure game set in that school. Text based, written in really ugly QuickBasic spaghetti
Pieter
2021-02-10 07:01:54
Apparently he died in 2019.
2021-02-10 07:03:50
To anyone confused here, <@794205442175402004> and I went to the same school (but didn't know each other there), and later became colleagues.
mvanderhallen
2021-02-10 10:15:25
<@!799692065771749416> <@!794205442175402004> I'm betting I've heard at least *one* of these academic declarative languages 😄
2021-02-10 10:17:06
Pretty sure I even pass posters explaining one of them daily (well, before the Covid-19 pandemic lockdown obviously)
_wb_
2021-02-10 10:17:48
CHR probably?
mvanderhallen
2021-02-10 10:18:10
*ding ding*
2021-02-10 10:26:59
And probably at least one of you learned Mercury as well 🙂
_wb_
2021-02-10 10:29:39
yes
Scope
2021-02-10 05:10:24
<https://github.com/novomesk/qt-jpegxl-image-plugin/commit/9af0185382957c99e58455af940f14f88784c18e> `Adjust for new encoding API` <:Hypers:808826266060193874>
BlueSwordM
Scope <https://github.com/novomesk/qt-jpegxl-image-plugin/commit/9af0185382957c99e58455af940f14f88784c18e> `Adjust for new encoding API` <:Hypers:808826266060193874>
2021-02-10 05:12:58
Yeah, that fixed the compile bug I had yesterday.
raysar
2021-02-10 05:17:40
When i compile with the new commit i have: `-- CMAKE_SYSTEM_PROCESSOR is x86_64 -- tcmalloc version -- tcmalloc 2.8.0 disabled due to https://github.com/gperftools/gperftools/issues/1204 CMake Error at CMakeLists.txt:127 (message): Different C/C++ compilers set: GNU vs Clang` I'm a noob, i do this command: export CC=clang-7 CXX=clang++-7 What i need to do in debian to correct that? 🥺
Pieter
mvanderhallen And probably at least one of you learned Mercury as well 🙂
2021-02-10 06:14:22
I never learned Mercury.
mvanderhallen
Pieter I never learned Mercury.
2021-02-10 06:42:51
Yeah, I wasn't sure whether it was the engineering or Informatica students who had to learn that as well in the declarative languages course :). I remember studying it when I had to TA the course 😂
Pieter
2021-02-10 06:46:40
I think in Declarative Languages we only had Haskell and Prolog (and maybe one course about something else, I'm not sure).
Nova Aurora
2021-02-11 07:41:19
Anyone else have trouble compiling the latest version of the qt-jpeg-xl plugin?
2021-02-11 07:42:54
I get this:
diskorduser
2021-02-11 11:20:04
It compiles fine here
Scope
2021-02-13 10:15:54
https://openbenchmarking.org/test/pts/jpegxl&eval=38154180e2f8902493961238685d09b5b503d8ff#metrics
2021-02-13 10:16:12
fab
2021-02-13 12:37:07
has anyone jpeg xl 0.3.1 without compiling anything on linux? ah that's probably adoption and not tools
Crixis
2021-02-13 01:55:11
Yes, <@111445179587624960> on encode.us
2021-02-13 01:55:34
For windows
fab
2021-02-13 02:41:24
as far i understood there is only gwenview and another program for screenshots master of zen used who still needs the codec compiled or has old version (older than 0.3.0) so it doesn't count and i don't think you can can change an executable like 0.3.0 or -s 4 -q 99.2. anyway is old version older than 0.3.0. Windows with jxl winthumb the new release it uses only one core. at the moment you need the cmd to encode like i made for %i in (D:\Immagini\Screen\screendecember\*.png) do cjxl "%i" "%i.jxl" -s 4 -q 99.2 --num_threads=2 there is a \ before *PNG
2021-02-13 02:45:26
but maintaining all colors or most colors isn't worth it and i think neither near lossless as it had grooves in the image before 0.2.0 got released
raysar
2021-02-13 03:43:17
<@456226577798135808> i see you compiled jxl encoder with mingw64, can you help me to do the same? I don't understant what cmake param i need to use to compile it for windows.
Deleted User
2021-02-13 03:54:05
I didn't, that was Scope's build. https://encode.su/threads/3564-JXL-version-0-3-released?p=68594&viewfull=1#post68594
raysar
I didn't, that was Scope's build. https://encode.su/threads/3564-JXL-version-0-3-released?p=68594&viewfull=1#post68594
2021-02-13 04:18:53
Ah ok, i did not see it thank you. Somebody have a link to explain how to cross compile with cmake? google is not my friend :/
BlueSwordM
raysar Ah ok, i did not see it thank you. Somebody have a link to explain how to cross compile with cmake? google is not my friend :/
2021-02-13 04:19:48
https://discord.com/channels/794206087879852103/804324493420920833/808735571262308383
Scope
2021-02-13 04:42:06
https://twitter.com/phoronix/status/1360596837070213122
2021-02-13 04:42:17
But, there are still no lossless modes and I have the same suggestions (developers may have their opinion): - adding lossless modes (at least with default encoding speeds and some of the faster `-s 3` or `-s 5`, depending on which is more tuned and planned for practical use) - decoding speed for default lossy and lossless modes - Jpeg recompression speed comparison is not that important practically since it is fast enough or at least leave only one default speed mode, but it would be better to add fast lossless and lossy modes instead - use the same test image/images as for AVIF and WebP2
_wb_
2021-02-13 04:46:15
Agreed with the above
Scope
2021-02-14 03:29:30
https://openbenchmarking.org/test/pts/jpegxl-decode
2021-02-15 11:58:15
Hmm, although WebP2 has lossless mode tests
2021-02-16 12:00:55
_wb_
2021-02-17 01:30:04
is there a viewer that properly implements animation already?
diskorduser
2021-02-17 02:34:00
gwenview
BlueSwordM
2021-02-17 03:29:33
Yeah, gwenview QT on Linux seems to support proper JXL animations with the QT JXL plugin.
Master Of Zen
2021-02-17 04:50:38
drop me jxl animation example?
BlueSwordM
Master Of Zen drop me jxl animation example?
2021-02-17 05:03:18
Master Of Zen
2021-02-17 05:11:06
works
Crixis
2021-02-17 05:13:53
no animation on pixbuf
Scope
2021-02-17 05:16:37
Also doesn't work in Nomacs (windows)
paperboyo
2021-02-17 05:31:07
Is there a list of tools supporting jxl somewhere? (apart from upthread, that is)
_wb_
2021-02-17 05:36:29
Not afaik, at some point I want to put one on my jxl website but haven't done it yet
2021-02-17 05:37:18
If someone can summarize the most significant tools (and the ones that are not stuck in an old libjxl), that would be useful
Master Of Zen
2021-02-24 12:33:19
<@!794205442175402004> is butteraugli no longer in maintenance? https://github.com/google/butteraugli/pulls Pull requests from 2+ years ago are not merged
_wb_
2021-02-24 12:34:16
there's a butteraugli in libjxl
2021-02-24 12:34:41
I don't know if the standalone butteraugli is still maintained
Master Of Zen
_wb_ I don't know if the standalone butteraugli is still maintained
2021-02-24 12:35:54
Ability to use it for video, building videos out of heatmaps, that's would be amazing
_wb_
2021-02-24 12:37:00
I think people are already experimenting with butteraugli-optimized av1
spider-mario
2021-02-24 01:22:44
my understanding is that jxl butteraugli is preferred
2021-02-24 01:22:51
it has the butteraugli_main binary too
2021-02-24 01:23:06
or maybe only if enabling the dev tools? I don’t remember
2021-02-24 01:24:19
but it doesn’t take motion into account, which would be desirable for video
2021-02-24 01:25:21
so for video, at the moment, it would really only be applicable to the use case of pausing the video to look at an individual frame from it
_wb_
2021-02-24 02:10:42
could probably just weigh everything by the amount of motion happening in that part of the frame with some simple heuristic
Master Of Zen
spider-mario but it doesn’t take motion into account, which would be desirable for video
2021-02-24 02:21:00
there is niche for high fidelity metrics in video encoding
2021-02-24 02:21:45
So far "best" video metric is VMAF, and it quite forgivable in terms of being true to the source, and focus on preserving appeal
Petr
paperboyo Is there a list of tools supporting jxl somewhere? (apart from upthread, that is)
2021-03-04 08:35:54
I've added a new section "Software" to the "JPEG XL" article on English Wikipedia (translated from "JPEG XL" on Czech Wikipedia, also by me). I think this could be a good public list of JXL tools.
fab
2021-03-04 08:41:31
citing online media converter and tools that break windows or are unofficial for Microsoft even if you're tempted by Linux you shouldn't make it shown
2021-03-04 08:41:43
the article is about jpeg xl not linux
2021-03-04 08:42:22
someone from jpeg itu will delete what you wrote the same
Petr
2021-03-07 07:52:44
Anyone uses "Mirillis Action!" screen recorder? It reportedly now supports JXL for screenshots. https://www.neowin.net/news/mirillis-action-4160/
Master Of Zen
Petr Anyone uses "Mirillis Action!" screen recorder? It reportedly now supports JXL for screenshots. https://www.neowin.net/news/mirillis-action-4160/
2021-03-08 12:03:59
For screenshots I use spectacle, and with qt jxl plugin it support making jxl screenshots
2021-03-08 12:04:17
2021-03-08 12:04:44
improver
2021-03-09 01:13:43
https://gitlab.com/wg1/jpeg-xl/-/blob/945ad0ce4262382f850bea3f5cc51ca5cc2a40a2/plugins/gdk-pixbuf/pixbufloader-jxl.c#L276 this should probably be just "jxl", not "JPEG XL". I think. as it currently sticks out compared to other loaders
2021-03-09 01:14:11
_wb_
2021-03-09 01:33:11
good point. The media type is `image/jxl` so it does indeed make sense to use `jxl` there
2021-03-12 11:36:34
Would anyone be interested in making a "mozjpegxl" tool? I'm not talking about a new jxl encoder, but something simpler: just a tool that encodes an image to jpeg with mozjpeg, then recompresses the jpeg to jxl with cjxl. As a starting point, it could be as simple as a git repo with two subrepos (one for mozjpeg, one for libjxl) and a two-line bash script. It could later be extended into something more complicated (a single cli tool that doesn't write the intermediate jpeg and directly does pixels to jxl).
Scope
2021-03-12 11:43:25
I don't think this requires a special tool when it can be done by a simple script (and it will also extend the life of a Jpeg even further)
2021-03-12 12:00:03
And for what purposes, for comparisons or to quickly convert back to legacy Jpeg for clients who do not support it? But I think that if the source image is available, it would be better to directly convert to jxl (and if necessary convert to legacy jpeg, even if it is not lossless recompression)
Jim
2021-03-12 12:13:29
Have to agree with Scope. It is easy enough to pass a jpg into mozjpg then pass the output file into cjxl with a script. Not sure there needs to be a separate tool. Also, mozjpegxl would probably be confused as a mozjxl by many thinking it will compress a jxl more like mozjpeg.
Scope
2021-03-12 12:18:45
But it might be good to have MozJpeg in JXL by default instead of LibJpeg
Jim
2021-03-12 12:24:08
Not sure about that, I think mozjpeg drops all metadata and that might not be what people want... Or maybe have a specific need for following the standard (maybe using older software). Also, I think you can define which jpg encoder it uses when you compile as long as it is compatible with libjpeg. I believe mozjpeg can be used in place of libjpeg. Correct me if I'm wrong.
Scope
2021-03-12 12:30:14
Yep, although sjpeg (which can be used in JXL) is also not very different in quality
2021-03-12 12:35:16
And about MozJpeg (or rather jpegtran): ```-copy none Copy no extra markers from source file. This setting suppresses all comments and other metadata in the source file. -copy comments Copy only comment markers. This setting copies comments from the source file but discards any other metadata. -copy all Copy all extra markers. This setting preserves miscellaneous markers found in the source file, such as JFIF thumbnails, Exif data, and Photoshop settings. In some files, these extra markers can be sizable. Note that this option will copy thumbnails as-is; they will not be transformed.```
_wb_
2021-03-12 12:57:56
It would be just to have a convenient way to make jxls that can be converted to legacy jpegs if needed, which is indeed kind of trivial but maybe there are things that can be done to make it better than the simple two-line script.
2021-03-12 12:58:32
E.g. maybe there are mozjpeg options that turn out to result in jpegs that compress better with jxl
2021-03-12 01:00:56
or maybe you want to pre-process the input image to convert it to a particular color space (e.g. Display P3) and save some bytes on the icc compression
2021-03-12 01:01:31
for instance, you'd probably want to make mozjpeg do 4:4:4, since jxl compression is better for 4:4:4 jpegs than for 4:2:0 jpegs
2021-03-12 01:02:45
and you'd probably want to disable any huffman optimization or progressive scans, because that will just make the jpeg reconstruction data larger, mozjpeg slower, and does not have an effect on the main jxl file
2021-03-12 01:03:44
though if you also care about the size of the legacy jpeg, you may want to do that after all — so the tool may have different settings depending on if you want to optimize mostly the jxl or mostly the jpeg
NeRd
_wb_ E.g. maybe there are mozjpeg options that turn out to result in jpegs that compress better with jxl
2021-03-13 06:16:55
I've been experimenting with running jpegultrascan (https://github.com/MegaByte/jpegultrascan/blob/master/jpegultrascan.md) on JPEG files before transcoding to JXL, which sometimes results in smaller JXL files (although your milage may vary: sometimes they're bigger!).
_wb_
2021-03-13 07:16:35
If it's a lossless jpeg recompressor, it can only affect the jpeg reconstruction data, not the actual jxl codestream
2021-03-13 07:19:13
In the next version there will be a `--strip` option to just remove the jpeg reconstruction data and any metadata, so you get a containerless jxl. Still the exact same image data, but you cannot convert back to the exact original jpeg file anymore (but you could in principle convert to a different one that has an identical image)
BlueSwordM
2021-03-13 03:51:23
What would be the advantage of such a method?
2021-03-13 03:51:34
Slightly higher efficiency?
Scope
2021-03-13 04:00:01
Yes, it is more costly to save the exact same Jpeg than just the same pixels
Jim
2021-03-13 04:02:08
Could also be used for things like social media or photo sharing/storage services to remove metadata to prevent you from accidentally sharing a photo with your location information embedded in it.
_wb_
2021-03-13 04:02:34
If there's no metadata, the difference is small, just a few hundred bytes or so
Scope
2021-03-13 04:16:01
Someday I think it is possible to add something like `--optimize` in addition to `--strip`, for more efficient JXL compression, instead of using MozJpeg before that (if the exact same Jpeg isn't needed)
_wb_
2021-03-13 04:18:03
You mean still use only jpeg-compatible encoding, but do a new one from pixels?
2021-03-13 04:18:32
If jpeg-compatible is not needed, you can do `-j`
Scope
2021-03-13 04:20:08
To get a pixel-by-pixel match, but not a byte-by-byte in a decoded Jpeg
Jim
2021-03-13 04:20:53
Not really sure why jpeg-compatible will ever really be needed. I mean, we'll just have jxl for the next couple decades before finally converting them to JPEG 2040 (whatever that will be called). Not sure what the reason for converting back to jpeg will be.
_wb_
2021-03-13 04:22:08
Legacy applications that cannot be upgraded to jxl would be a reason...
Scope To get a pixel-by-pixel match, but not a byte-by-byte in a decoded Jpeg
2021-03-13 04:23:15
That's what --strip will do. The data itself (dct coeffs) are always optimized.
Scope
2021-03-13 04:24:49
Oh, okay, then that's what I mean
improver
2021-03-13 05:35:17
I actually like byte-by-byte equal mode. Having a way to get exactly same file opens up possibilities of more efficient storage for systems which use hashes for addressing files (in some cases but not others).
2021-03-13 05:36:13
Would've been cool to have something like that for PNG -> JXL modular case but I guess that's asking a bit too much
Scope
2021-03-13 05:49:34
For Jpeg this is how it works now in JXL, for PNG I think this is a much more rarely needed thing, although it is possible to hash the decoded PNG after JXL and it will be exactly the same (well, unless the encoding in libpng/lodepng is changed)
_wb_
2021-03-13 06:47:03
That would only work if the PNG was created with the same encoder/encode settings as whatever djxl does
2021-03-13 06:48:03
There are way more ways to encode pixels as a PNG than there are ways to decode dct coefficients as a JPEG
Pieter
2021-03-13 06:48:22
really?
2021-03-13 06:48:31
oh, i guess zlib itself adds a ton
_wb_
2021-03-13 06:48:36
Yes
2021-03-13 06:49:05
JPEG is just huffman so if you know the huffman table it is deterministic
2021-03-13 06:49:28
(you still need the scan script etc, but that's a small amount of info)
2021-03-13 06:49:55
PNG is lz77 matching, which can be done in many ways
Pieter
2021-03-13 06:50:10
png i guess is the transformation on the pixel data, the metadata chunks... but then lz77
_wb_
2021-03-13 06:50:17
(there's also the per-row predictor, but that's a small amount of info)
2021-03-13 06:50:44
lz77 is the main problem, some png optimizers spend a lot of time in finding good matches
Pieter
2021-03-13 06:51:03
you could make a png recompressor dat only guaranteed identical pre-lz77 bytes, but that's not as fun
_wb_
2021-03-13 06:51:46
We kind of already have that (well minus the chunk order)
Pieter
2021-03-13 06:54:40
kind of an interesting question, what metadata you need to reconstruct various compressed formatd
veluca
2021-03-14 08:17:31
https://github.com/google/grittibanzli one could use that as metadata, I guess 🙂
_wb_
2021-03-14 08:22:14
What? Lode actually did that already? Lol I did not know that
2021-03-14 08:26:17
Then we have the main thing needed for a `pbrd` box, I think. Just need to record some other png-specific things like the pixel format, palette, chunk order, interlacing, non-image-chunks, and predictors per row.
2021-03-14 08:27:09
Very low priority, but if there's a use case, we could do lossless png bitstream compression
spider-mario
2021-03-14 12:04:36
we could name it “PNG XS” for maximum confusion
bonnibel
2021-03-14 12:29:18
call it PNG (short for __p__ng __n__ext-__g__en)
Scope
2021-03-14 12:31:08
JPNG (__J__XL __PNG__) - confusion with JPG and PNG at the same time
Jim
2021-03-14 12:31:19
JPNG XL
2021-03-14 12:31:46
`.jpxl`
_wb_
2021-03-14 01:37:52
The concept of "[format] bitstream reconstruction data" is nice. For PNG I don't think it's particularly useful, but we could also do it for PSD, TIFF and XCF. It gets a bit trickier (probably would do layers as jxl sub-bitstreams in the reconstruction data, and only encode the merged image in the jxl itself, unless all layers do normal blending without layer fx, then you don't really need a separate merged image)
2021-03-14 01:40:34
Properly compressed PSD/XCF that also just works in browsers would be pretty great. PSD compression is so weak (basically RLE only) that huge savings would be possible, and you could even do it near-lossless for the pixel data in many use cases, saving even more bytes.
Scope
2021-03-16 01:10:23
https://ci.appveyor.com/project/novomesk/qt-jpegxl-image-plugin/builds/38248446/artifacts
Petr
Scope https://ci.appveyor.com/project/novomesk/qt-jpegxl-image-plugin/builds/38248446/artifacts
2021-03-16 01:47:41
Cool! Which apps can use it?
Scope
2021-03-16 01:49:54
All qt-based, for example nomacs https://ci.appveyor.com/project/diemmarkus/nomacs/build/artifacts
Petr
2021-03-16 02:00:36
Seems that also XnView MP can use it. Great!
Lastrosade
2021-03-16 02:33:55
I feel like i've been asking this every month but are there windows builds of the latest cjxl somewhere ?
Scientia
2021-03-16 02:35:18
i'm sure you could make your own with msys
Crixis
2021-03-16 02:35:56
https://discordapp.com/channels/794206087879852103/794206170445119489/821360934919602176, today message
Lastrosade
2021-03-16 02:36:20
They don't support avx2 for some reason when I build it mysalf
Scope
2021-03-16 02:38:04
There is a bug in the GCC compiler on Windows (but Clang is fine)
fab
Petr Seems that also XnView MP can use it. Great!
2021-03-16 02:41:02
how
2021-03-16 02:41:18
when xnview had jpeg xl 0.1.0
2021-03-16 02:41:27
i could get work libjxl 0.2.0
2021-03-16 02:41:32
how you did?
2021-03-16 02:41:36
with new build
2021-03-16 02:41:42
now they work re troactively?
Jim
2021-03-16 02:45:00
XnView (latest version) had jpeg xl 0.3, where did you get 0.1?
Petr
fab how
2021-03-16 05:56:28
XnView MP uses Qt, so it should be able…
Jim
2021-03-16 06:12:11
I installed it, but have no idea if it's working. It already has 0.3 so I don't know if it's using that or the plugin. I don't see any way of identifying which is being used.
Petr
2021-03-19 08:39:33
Does anyone use AppVeyor? (https://www.appveyor.com)
2021-03-19 08:40:05
I found it when searching for AV1 binaries for Windows: https://ci.appveyor.com/project/marcomsousa/build-aom/build/artifacts
2021-03-19 08:41:45
I guess it could be used to build libjxl and thus provide a **reliable** and **stable** place for downloading binaries.
2021-03-19 08:43:20
It would look more attractively for users than searching through threads on encode.su.
2021-03-19 08:45:21
And if I'm correct, the builds would be available soon after releasing new versions of libjxl (unlike https://jeremylee.sh/bin.html).
2021-03-19 08:48:05
Not only libjxl could use it. Also JPEG XL WIC and other tools.
Deleted User
2021-03-19 08:48:24
MozJPEG uses it, too.
Scope
2021-03-19 08:54:39
This is just a kind of virtual machine, it still requires scripts and the proper environment to compile, as well as manually checking for any changes that might break the build
Petr
2021-03-19 09:22:14
OK. I was just asking to find out whether it could ease lives of both the developers and the users…
_wb_
2021-03-19 09:31:00
At some point we're going to move development to a public github repo (instead of the current private repo), and I hope that besides the various builds for CI, we can also automate some builds for releases. It would mostly be useful for Windows and MacOS, I suppose. For GNU/Linux it's more convenient to get it in the major distros, and for platforms like iOS/Android/exotic stuff, the target audience will probably know how to compile things.
Lastrosade
Petr And if I'm correct, the builds would be available soon after releasing new versions of libjxl (unlike https://jeremylee.sh/bin.html).
2021-03-19 10:31:22
Yeah I don't have an automatic build thing, its just when I feel like clicking on it
fab
2021-03-19 10:36:37
what is the laguage of squoosh
2021-03-19 10:36:40
web assembly
2021-03-19 10:36:41
web asm
2021-03-19 10:36:50
can you write in the right way
2021-03-19 10:38:53
WebAssembly
Petr
Lastrosade Yeah I don't have an automatic build thing, its just when I feel like clicking on it
2021-03-19 10:43:22
If you configured it to do the build with just one click then it's a pretty high level of automation. 👍
Lastrosade
2021-03-19 10:44:31
Yeah but its cheating https://github.com/m-ab-s/media-autobuild_suite
veluca
2021-03-19 11:12:09
who needs clicking? 😄 just a few command (in my history) here... then again, I'm a dev xD
Deleted User
2021-03-19 11:20:39
Jim
2021-03-19 11:22:57
<:galaxybrain:821831336372338729>
Scope
2021-03-19 11:23:07
m-ab-s also needs some changes for Jpeg XL, but I think it would be better to wait until GCC 11 release and then write all the requests
Master Of Zen
2021-03-20 12:35:20
Petr
Lastrosade Yeah but its cheating https://github.com/m-ab-s/media-autobuild_suite
2021-03-22 08:56:34
As long as it doesn't harm anyone, such cheating is welcome and appreciated. 🙂
_wb_
2021-03-25 11:00:05
It would be cool to have a simple way to do wasm-based jxl decoding to include some jxl images on a web page, as a demo. Does anyone know enough about js/wasm to do that?
veluca
2021-03-25 11:02:53
I know squoosh.app does it, so it shouldn't be *too* hard...
2021-03-25 11:04:01
(for example by copying whatever they do 😛)
Scope
2021-03-25 11:04:09
And here http://libwebpjs.appspot.com/jpegxl/ (but it's a very old version) > Jan 3: *.jxl images can add as input for decoding
Pieter
2021-03-25 11:15:16
i have compiled c++ code to wasm in the past
Jim
2021-03-25 11:16:07
Probably wouldn't be too hard to take how some of the polyfills for previous image formats work and mash in the wasm files from Squoosh to build browser support.
veluca
2021-03-25 11:17:39
from the quick look I gave, it seems to work drawing on a canvas - so not quite a native experience
2021-03-25 11:18:58
then again, likely not too hard to convert img src=*jxl into a canvas
Jim
2021-03-25 11:25:20
Either that or the AVIF polyfill converts the decoded pixels into a BMP and feeds it into an img tag.
2021-03-25 11:28:30
Using canvas would likely work better since you can detect when they try to download the image and feed in the JXL data so it has more native feel. I don't think that can be done through an img tag.
_wb_
2021-03-26 01:28:32
Squoosh is a rather big project and it uses fancy build tools I don't know. I am quite lousy at keeping up with frontend things. <@!710762823986446367> <@!228116142185512960> how hard would it be to make something that loads some jxl decoder js/wasm code and then I can write something like ``` <canvas data-jxl-src="bla.jxl"></canvas> ``` and it works?
Jake Archibald
2021-03-26 01:35:51
Check out https://github.com/jakearchibald/jakearchibald.com/blob/main/shared/demos/2020/avif-has-landed/DecodedImg/index.tsx which I wrote for the AVIF post on my blog
Lastrosade
2021-03-26 01:45:38
That's a nice website
_wb_
2021-03-26 02:06:34
I am an absolute noob. How do I turn that into a `.js` I can use on a webpage?
Dr. Taco
2021-03-26 10:35:37
looks like a JSX file written in typescript. double ew
2021-03-26 10:36:41
you could copy/paste it into https://babeljs.io/repl
2021-03-26 10:38:02
then check the React and TypeScript boxes, but I'm pretty sure it only outputs to ES5
2021-03-26 10:38:32
so you'd probably be better off just going from TSX to JSX to attempt to make it more readable. but it would still require react or preact to run it anyway
Paint_Ninja
2021-03-26 10:40:03
If it's on npm, you can use skypack and let it handle all the transpiling complexity for you
2021-03-26 10:40:44
https://www.skypack.dev/
2021-03-26 10:46:10
Ohh wait nevermind, if I'm understanding correctly that DecodedImage index.tsx is meant to be used as a Preact component, not as a standard JS polyfill on a webpage
Dr. Taco
2021-03-26 11:04:44
yep, it's a meta-language wrapped in a meta-language
lithium
2021-03-30 04:02:34
Look like XnView MP 0.98.2 64bits (Feb 19 2021) jxl decoder break again, some jxl file will decode fail(black rectangle) and display wrong bit depth(8bit => 48bit), nomacs can success decode jxl file.
eddie.zato
2021-04-02 05:16:26
Hey guys. Can anyone share the latest cjxl.exe with input jpg support?
Crixis
2021-04-02 05:58:40
https://jeremylee.sh/bin.html
eddie.zato
Crixis https://jeremylee.sh/bin.html
2021-04-02 06:14:55
`INPUT the input can be PNG, PPM, PFM, or PGX` `Failed to read image 0.jpg`
Crixis
2021-04-02 06:16:51
let me test
2021-04-02 06:18:54
oh you have right wait
2021-04-02 06:25:25
https://encode.su/attachment.php?attachmentid=8418&d=1617022583
eddie.zato
Crixis https://encode.su/attachment.php?attachmentid=8418&d=1617022583
2021-04-02 06:29:53
Thanks, but is there any chance to get at least avx build? Can't run it on my Ivy Bridge. Sorry for bother you 😄
Crixis
2021-04-02 06:32:45
you can try to build it, you can use mingw
eddie.zato
2021-04-02 06:34:15
Ok, I'll try
Crixis
2021-04-02 06:35:11
or more automatic
2021-04-02 06:35:13
media autobuild_suite
Petr
Crixis oh you have right wait
2021-04-02 07:40:04
Why would anyone build libjxl without jpg support in the first place? 😲
Crixis
2021-04-02 07:40:27
I think for a dependency issue
Lastrosade
2021-04-02 12:16:41
but it's not disabled
Crixis
Lastrosade but it's not disabled
2021-04-02 12:54:26
it fail to read jpeg
Lastrosade
2021-04-02 12:55:06
I am aware
2021-04-02 12:55:12
But I have no idea why
eddie.zato
2021-04-02 01:23:45
I have built 0.3.7 using mas. JPEG support is present. 😄 `INPUT the input can be PNG, APNG, GIF, JPEG, PPM, PFM, or PGX`
Lastrosade
2021-04-02 02:48:18
I'm so tired of this
2021-04-02 02:48:25
I can't even check if I can make it work
Crixis
2021-04-02 03:00:35
rm -r from powershell
Lastrosade
2021-04-02 03:09:40
even powershell crashes
2021-04-02 03:10:13
I'll have to reboot
2021-04-02 03:10:18
so next week lmao
lithium
Lastrosade I'm so tired of this
2021-04-02 03:34:43
Try fastcopy or robocopy?
diskorduser
2021-04-02 04:53:01
Delete permanently
Diamondragon
2021-04-02 08:33:08
-i -g
eddie.zato
2021-04-05 11:30:55
If I want to achieve the maximum compression level for lossless jpeg transcoding, all I have is “-s 9”, right? No more tricks to reduce file size without sacrificing original quality?
_wb_
2021-04-05 11:36:42
There are probably things that could be done to slightly improve the AC ctx modeling and the DC encoding in JPEG recompression.
2021-04-05 11:37:27
Like doing -E 3 for the DC (but I guess cjxl will not pass that option to the right place atm)
fab
2021-04-05 12:10:43
you said that even 30% is achievable
_wb_
2021-04-05 12:32:18
No, I don't think I said that, and I don't think it's achievable
eddie.zato
2021-04-06 05:17:12
This is quite impressive result 😄 ` J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: SSE4,Scalar] Read 4077x3978 image, 56.4 MP/s Encoding [Container | JPEG, lossless transcode, squirrel | JPEG reconstruction data], 4 threads. Encoding [Container | JPEG, lossless transcode, kitten | JPEG reconstruction data], 4 threads. Encoding [Container | JPEG, lossless transcode, tortoise | JPEG reconstruction data], 4 threads. Name Size_bytes Ratio ---- ---------- ----- 0.jpg 24582566 100 7.jxl 15095192 61,41 8.jxl 15097305 61,41 9.jxl 13352148 54,32` Image from here https://3dnews.ru/assets/external/illustrations/2021/04/05/1036515/gal1.jpg
_wb_
2021-04-06 05:42:18
https://c.tenor.com/wEtLAbx6hSAAAAAM/snoop-dog-dance.gif
monad
eddie.zato This is quite impressive result 😄 ` J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: SSE4,Scalar] Read 4077x3978 image, 56.4 MP/s Encoding [Container | JPEG, lossless transcode, squirrel | JPEG reconstruction data], 4 threads. Encoding [Container | JPEG, lossless transcode, kitten | JPEG reconstruction data], 4 threads. Encoding [Container | JPEG, lossless transcode, tortoise | JPEG reconstruction data], 4 threads. Name Size_bytes Ratio ---- ---------- ----- 0.jpg 24582566 100 7.jxl 15095192 61,41 8.jxl 15097305 61,41 9.jxl 13352148 54,32` Image from here https://3dnews.ru/assets/external/illustrations/2021/04/05/1036515/gal1.jpg
2021-04-06 05:47:33
Keeping in mind that JPEG isn't optimized to begin with. mozjpeg gets it down to 17.9 MB.
eddie.zato
2021-04-06 05:59:47
Yeah, I know that 😊
_wb_
monad Keeping in mind that JPEG isn't optimized to begin with. mozjpeg gets it down to 17.9 MB.
2021-04-06 06:04:07
With jpegtran?
eddie.zato
2021-04-06 06:12:08
With Leanify we can go even further `PS > .\leanify gal1.jpg Processing: gal1.jpg 23.44 MB -> 17.08 MB Leanified: 6.36 MB (27.14%) PS > cjxl gal1.jpg 2.jxl -s 9 J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: SSE4,Scalar] Read 4077x3978 image, 28.5 MP/s Encoding [Container | JPEG, lossless transcode, tortoise | JPEG reconstruction data], 4 threads. Compressed to **13351568** bytes (6.586 bpp). 4077 x 3978, 0.08 MP/s [0.08, 0.08], 1 reps, 4 threads.`
monad
_wb_ With jpegtran?
2021-04-06 02:51:17
Yes, that's what I meant.
eddie.zato With Leanify we can go even further `PS > .\leanify gal1.jpg Processing: gal1.jpg 23.44 MB -> 17.08 MB Leanified: 6.36 MB (27.14%) PS > cjxl gal1.jpg 2.jxl -s 9 J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: SSE4,Scalar] Read 4077x3978 image, 28.5 MP/s Encoding [Container | JPEG, lossless transcode, tortoise | JPEG reconstruction data], 4 threads. Compressed to **13351568** bytes (6.586 bpp). 4077 x 3978, 0.08 MP/s [0.08, 0.08], 1 reps, 4 threads.`
2021-04-06 03:09:50
leanify is displaying the size in mebibytes, the savings are equivalent with mozjpeg's jpegtran.
2021-04-06 03:15:01
If you're just referring to the jxl size, well, stripping metadata likely helped.
Deleted User
2021-04-11 10:06:00
Suggestion: make `jxl_merge` tool. Takes multiple .jxl files and merges them into one multi-layer, single-page .jxl image, to keep this tool simple. (Optionally with `jxl_split` tool which does the exact reverse of the first one.)
monad
2021-04-16 12:14:18
Are there any cjxl options that can significantly reduce RAM consumption for lossless modular encoding?
2021-04-16 02:45:22
Looking through the code, it's not obvious that anything exposed to the command line should make a significant difference besides speed/effort.
Scientia
2021-04-16 02:50:23
this is kind of a joke but is a `tree_from_jxl` tool possible? would it have any use?
Pieter
2021-04-16 02:53:49
i don't see why not
2021-04-16 02:54:29
it'd probably only work for jxl files actually created through jxl_from_tree though
Scientia
2021-04-16 02:55:10
you think it would work on a regular modular jxl or nah?
2021-04-16 02:55:21
probably not
Pieter
2021-04-16 02:58:24
well regular jxl can have tons of features that can't be represented in the jxl_from_tree format (actual pixels that differ from the prediction being the most obvious one...)
Scientia
2021-04-16 02:58:59
might be an interesting feature to convert a regular modular jxl to just the prediction
2021-04-16 02:59:21
or not, but I assume it would look interesting at the very least
Pieter
2021-04-16 03:00:28
i guess just a way to show the MA tree (in jxl_from_tree format) would be interesting on its own, even if it can't exactly represent the input
Scientia
2021-04-16 03:01:24
you'd need to explicitly say "the output is not identical to the input" so there was no confusion
zebefree
2021-04-16 04:36:50
Ideally everything in the codestream could be represented in the text format.
2021-04-16 04:37:27
It would be cool to be able to dump an image to the text form, edit it in your favorite text editor, and convert it back to a jxl.
Scientia
2021-04-16 05:16:23
If you store the differences along with the tree that's gonna be a big text file
_wb_
Scientia this is kind of a joke but is a `tree_from_jxl` tool possible? would it have any use?
2021-04-16 05:23:33
If you toggle a constant bool some part of the code, you can print MA trees as part of the debug info you get in benchmark_xl (you can also get quantization heatmaps and block selection maps for vardct that way, and maps of predictor choices per pixel for modular)
Scientia
2021-04-16 05:41:40
Interesting
eddie.zato
2021-04-21 11:58:33
I think this is a bug. When processing jpeg files, cjxl creates .tmp files in the %temp% folder and doesn't remove them after encoding is complete. My %temp% is of limited size and I noticed that it was almost full after playing around with cjxl and a bunch of jpegs. cjxl 0.3.7, win 10
veluca
2021-04-21 12:01:42
that shouldn't happen...
eddie.zato
2021-04-21 12:05:39
This only happens if the input file is jpeg
2021-04-21 12:09:10
I was building the cjxl using media-autobuild_suite because the other 0.3.7 binaries I found on the internet don't support jpeg for input.
raysar
2021-04-21 12:39:43
But your binary 0.3.7 works with jpeg input? (with temp but)
eddie.zato
2021-04-21 12:52:16
Yep
spider-mario
2021-04-21 12:59:30
I didn’t even think we had any code in cjxl that creates temporary files
2021-04-21 12:59:31
do we?
BlueSwordM
2021-04-21 01:06:00
I'm actually surprised. With how much JXL I encode these days, I would have a massive temo folder.
2021-04-21 01:06:09
Maybe it is a Windows thing?
raysar
2021-04-21 01:07:02
<@!387462082418704387> i'm searching the lastest binary working perfectly fine for windows (i'm using 0.3.4 😕 ). You can send it here, i can test it on my machine.
eddie.zato
2021-04-21 01:08:35
Sure 😄 https://eddiezato.github.io/bin/
raysar
2021-04-21 01:13:59
Thanks, i'm searching where is the temps folder? %user%\AppData\Local\Temp ?
spider-mario
2021-04-21 01:14:32
see, this is one of the aspects that surprise me: to write there, we would have to actually know the location of the folder
2021-04-21 01:14:58
and I don’t think we have code that does that (outside of the `custom` codec in the benchmark)
eddie.zato
raysar Thanks, i'm searching where is the temps folder? %user%\AppData\Local\Temp ?
2021-04-21 01:15:46
Press Win+R and type %temp%
spider-mario
2021-04-21 01:15:53
ah, `codec_apng` seems to
2021-04-21 01:15:59
is it APNG files that you are encoding?
Crixis
2021-04-21 01:16:10
I confirm the problem
2021-04-21 01:16:13
spider-mario
2021-04-21 01:16:20
ah no, you said JPEG
eddie.zato
2021-04-21 01:17:23
Yep, I only play with jpeg and png
raysar
2021-04-21 01:18:31
Ah yes i see it, i have a temps file too. That's the same for 0.3.4 binary.
spider-mario
2021-04-21 01:19:57
that really puzzles me
eddie.zato
2021-04-21 01:20:43
They are just copies of the input jpeg files.
raysar
2021-04-21 01:20:44
Windows flush temp folder sometime? But it's not smart to wear ssd for nothing with temp file, it need to be only in ram non?
spider-mario
2021-04-21 01:21:05
maybe libjpeg is causing that somehow
2021-04-21 01:24:35
apparently yes, it could be
2021-04-21 01:24:44
> If the compressor requires full-image buffers (for entropy-coding optimization or a multi-scan JPEG file), it will create temporary files for anything that doesn't fit within the maximum-memory setting.
2021-04-21 01:25:19
GDAL users have noticed a similar thing: https://trac.osgeo.org/gdal/ticket/1795
2021-04-21 01:26:18
I would have thought that it would then remove them, but maybe it doesn’t or we need to do something specific to trigger the removal
eddie.zato
raysar Windows flush temp folder sometime? But it's not smart to wear ssd for nothing with temp file, it need to be only in ram non?
2021-04-21 01:26:42
My %temp% is located on the RamDisk created by the ImDisk Toolkit. It resets itself every time the OS is rebooted.
raysar
spider-mario I would have thought that it would then remove them, but maybe it doesn’t or we need to do something specific to trigger the removal
2021-04-21 01:46:21
I don't know, but for me it's not suitable to have an useless copy of jpeg in temp, it's created even if it's a low res jpeg.
spider-mario
2021-04-21 02:01:35
> NOTE: Unless you develop your own memory manager back end, then temporary files will never be used. The back end provided in libjpeg-turbo (jmemnobs.c) simply malloc()s and free()s virtual arrays, and an error occurs if the required memory exceeds the limit specified in cinfo->mem->max_memory_to_use.
2021-04-21 02:01:39
so maybe that’s not it, then
raysar
2021-04-21 02:17:53
So a windows specialist need to debug the binary to find what function ask a temp file creation 😄
spider-mario
2021-04-21 02:20:23
maybe that’s a difference between libjpeg and libjpeg-turbo and your binary actually links to the non-turbo version?
2021-04-21 02:21:33
ah, I seem to have a few too
2021-04-21 02:22:15
a few of them are PNGs or GIFs, actually
2021-04-21 02:22:57
or even PPM
2021-04-21 02:23:40
(oh, right, maybe it’s just that we try to decode them as JPEGs first)
improver
2021-04-24 06:28:12
2021-04-24 06:28:16
:<
2021-04-24 06:36:44
i tried saving to exr and converting that via cjxl, which failed with illegal instruction
190n
2021-04-24 06:37:11
what cpu do you have?
improver
2021-04-24 06:38:06
zen2
190n
2021-04-24 06:38:58
huh weird
2021-04-24 06:39:13
that should support most instructions unless your cjxl build somehow uses avx512
improver
2021-04-24 06:39:41
it really shouldn't
2021-04-24 06:40:25
``` % cjxl -v 20210424_201012.exr 20210424_201012.jxl J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: AVX2] /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/extras/codec_exr.cc:57: no OpenEXR whiteLuminance tag found and no intensity_target specified, defaulting to 255 Read 4016x3008 image, 6.9 MP/s Encoding [VarDCT, d1.000, squirrel], 6 threads. /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_ac_strategy.h:60: JXL_DASSERT: masking_field_row[by * masking_field_stride + bx] > 0 zsh: illegal hardware instruction (core dumped) cjxl -v 20210424_201012.exr 20210424_201012.jxl ```
2021-04-24 06:40:42
not really sure if it's because of assert
Pieter
2021-04-24 06:42:46
on a CPU and OS that support AVX2?
190n
2021-04-24 06:43:11
zen 2 supports avx2
2021-04-24 06:43:32
did you compile this yourself? or is it someone else's build?
improver
2021-04-24 06:44:10
compiled from AUR, -git
2021-04-24 06:44:45
I did include `-march=native -mtune=native` in CFLAGS/CXXFLAGS but not sure whether they could be causing it
2021-04-24 06:45:02
pfm and png encoding seem to work fine
_wb_
2021-04-24 06:45:16
Illegal instruction is what you get if an assert fails
improver
2021-04-24 06:45:50
confusing
Pieter
2021-04-24 06:45:51
in theory it's possible that your OS didn't enable AVX2 support (it needs runtime opting in by the OS beyond hardware support), but that's extremely unlikely on OSes that are less than a decade old
_wb_
2021-04-24 06:46:32
Please open a bug report, it is likely just a bug on our end
improver
2021-04-24 06:46:51
alright.
_wb_
2021-04-24 06:47:14
Exr is not exactly well tested
2021-04-24 06:47:50
As an input for cjxl I mean
improver
2021-04-24 06:55:49
https://gitlab.com/wg1/jpeg-xl/-/issues/215
veluca
2021-04-24 07:01:53
That's an interesting error
2021-04-24 07:02:27
OTOH, dassert should be disabled by default in optimized builds... Something might be off in the pkgbuild
_wb_
2021-04-24 07:07:19
The assert probably shouldn't fail though :)
veluca
2021-04-24 07:11:32
Ah that for sure :D I suspect it's some form of impossibly bright pixels or something like that that makes the encoder do weird stuff
2021-04-24 07:11:56
I don't think we ever test exr, so it might have broken in funny ways...
_wb_
2021-04-24 07:21:50
There can be NaN or infinities in an exr, and I assume the encoder heuristics are not designed for that 😅
2021-04-24 07:22:48
Or just large negative values or extremely large values
improver
2021-04-24 10:14:25
``` % cjxl -v -m 20210424_201012.pfm 20210424_201012.pfm.m.jxl J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: AVX2] /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/extras/codec_pnm.cc:301: PNM: no color_space/icc_pathname given, assuming sRGB Read 4016x3008 image, 65.3 MP/s Encoding [Modular, lossless, squirrel], 6 threads. /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 8927592 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 9700587 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 10143300 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:563: JXL_RETURN_IF_ERROR code=1: ok_ /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:720: JXL_RETURN_IF_ERROR code=1: CanEncode(fields, &extension_bits, &total_bits) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_modular.cc:1051: JXL_RETURN_IF_ERROR code=1: Bundle::Write(stream_headers[stream_id], writer, layer, aux_out) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_frame.cc:1243: JXL_RETURN_IF_ERROR code=1: modular_frame_encoder->EncodeStream( get_output(0), aux_out, kLayerModularGlobal, ModularStreamId::Global()) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_file.cc:268: JXL_RETURN_IF_ERROR code=1: EncodeFrame(cparams, info, metadata.get(), io->frames[i], passes_enc_state, pool, &writer, aux_out) Failed to compress to Modular. ```
BlueSwordM
veluca That's an interesting error
2021-04-24 11:48:32
That's odd.
2021-04-24 11:48:38
I don't get the bug on my side.
2021-04-24 11:48:43
It encodes just fine with the EXR file?
2021-04-24 11:48:57
2021-04-24 11:49:03
It must be a build issue.
improver
2021-04-25 12:03:44
I exported exr and pfm from gimp. pfm isn't from exr
2021-04-25 12:04:03
(just clarifying incase)
2021-04-25 12:04:50
<@!321486891079696385> which version? is it latest git or tagged one?
2021-04-25 12:05:05
(in my case it was latest git)
BlueSwordM
improver <@!321486891079696385> which version? is it latest git or tagged one?
2021-04-25 12:59:38
Latest git as well interesting enough.
improver
2021-04-25 01:08:53
did you use aur or manual build? https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libjpeg-xl-git seem to have some stuff what could change whether asserts are enabled, specifically `-DCMAKE_BUILD_TYPE:STRING='None'`
2021-04-25 01:09:25
(not really sure whether that's what is happening here)
BlueSwordM
improver did you use aur or manual build? https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=libjpeg-xl-git seem to have some stuff what could change whether asserts are enabled, specifically `-DCMAKE_BUILD_TYPE:STRING='None'`
2021-04-25 01:20:19
Manual build: ``` git clone https://gitlab.com/wg1/jpeg-xl.git --recursive cd jpeg-xl mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" - DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_GIMP_SAVING=1 -DJPEGXL_ENABLE_DEVTOOLS=ON -DCMAKE_INSTALL_PREFIX=/usr - DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=1 -DJPEGXL_ENABLE_SJPEG=OFF .. cmake --build . -- -j 16 sudo make install```
veluca
improver ``` % cjxl -v -m 20210424_201012.pfm 20210424_201012.pfm.m.jxl J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: AVX2] /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/extras/codec_pnm.cc:301: PNM: no color_space/icc_pathname given, assuming sRGB Read 4016x3008 image, 65.3 MP/s Encoding [Modular, lossless, squirrel], 6 threads. /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 8927592 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 9700587 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:818: JXL_FAILURE: No feasible selector for 10143300 /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:563: JXL_RETURN_IF_ERROR code=1: ok_ /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/fields.cc:720: JXL_RETURN_IF_ERROR code=1: CanEncode(fields, &extension_bits, &total_bits) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_modular.cc:1051: JXL_RETURN_IF_ERROR code=1: Bundle::Write(stream_headers[stream_id], writer, layer, aux_out) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_frame.cc:1243: JXL_RETURN_IF_ERROR code=1: modular_frame_encoder->EncodeStream( get_output(0), aux_out, kLayerModularGlobal, ModularStreamId::Global()) /home/anon/.cache/yay/libjpeg-xl-git/src/jpeg-xl/lib/jxl/enc_file.cc:268: JXL_RETURN_IF_ERROR code=1: EncodeFrame(cparams, info, metadata.get(), io->frames[i], passes_enc_state, pool, &writer, aux_out) Failed to compress to Modular. ```
2021-04-25 06:15:47
Well, that's a "true" error, at least... Interesting that it doesn't seem to happen to everyone, sounds like it will be fun to debug
improver
2021-04-25 09:34:36
idk if pfm one "doesnt happen to everyone'
2021-04-25 09:35:03
ive not made issue for and havent uploaded file
2021-04-25 09:36:00
blueswordm's messages were about exr
veluca Well, that's a "true" error, at least... Interesting that it doesn't seem to happen to everyone, sounds like it will be fun to debug
2021-04-25 12:52:12
https://gitlab.com/wg1/jpeg-xl/-/issues/216
veluca
2021-04-25 12:54:34
will look into it next week, thanks for the report!
BlueSwordM
improver https://gitlab.com/wg1/jpeg-xl/-/issues/216
2021-04-25 05:18:18
I can confirm, I get the same error with pfm using lossless modular.
Scientia
_wb_ If you toggle a constant bool some part of the code, you can print MA trees as part of the debug info you get in benchmark_xl (you can also get quantization heatmaps and block selection maps for vardct that way, and maps of predictor choices per pixel for modular)
2021-04-26 04:00:30
can you tell me what to modify to compile it this way? I'm interested in getting the trees from some jxls
2021-04-26 04:55:28
DW if you see this a lot later I didn't ping you to not disturb you 🙂
veluca
2021-04-26 05:12:00
There's a kPrintTree constant in lib/jxl/modular/enc_encoding.cc
2021-04-26 05:13:29
But I don't remember if the decoder can do this, you might have to add a call to PrintTree in lib/jxl/dec_modular.cc, in DecodeGlobalInfo - or something like that
2021-04-26 05:13:55
(you also need to install graphviz)
Scientia
2021-04-26 05:14:17
so best case scenario toggling this to true will make the decoder print the tree?
veluca
2021-04-26 05:14:33
In theory, but likely not
Scientia
2021-04-26 05:14:45
it appears i already have graphviz installed
veluca
2021-04-26 05:15:19
I can probably make a simple patch to make that happen - but in a few hours, I have my PhD defense coming up 🤣
Scientia
2021-04-26 05:15:28
nah it's fine
2021-04-26 05:15:48
I just needed to get the trees of a few jxl arts that didn't have the trees published for whatever reason
2021-04-26 05:16:06
i can wait a few days etc 🙂
_wb_
2021-04-26 05:50:55
In general a tree_from_jxl utility would be useful. The tree for the xor pattern I only found because I made a xor pattern image, used the existing encoder to encode it with -s 9 -I 1, printing the tree. That gives you the shape of the tree but not the offsets in the leaf nodes (those are not really used in the current encoder, since usually the symbols in a leaf have a nontrivial distribution anyway).
sklwmp
2021-04-27 04:22:22
Has anyone tried opening JXL files from https://sneyers.info/jxl/art/ in ImageGlass? It seems that ImageGlass crashes whenever it tries to open "Tropical Island Sunset"
Pieter
2021-04-27 04:23:46
i think there was a recent bug related to a feature used in some of those jxl art pictures, fixed in the latest release
2021-04-27 04:24:06
is it possible you (or imageglass) is still using an older version/plugin or so
sklwmp
2021-04-27 04:24:30
Oh, you're right. An update is available.
2021-04-27 04:24:38
No wait, huh?
2021-04-27 04:25:00
It told me an update was available, but when I clicked on it, it said it was already up-to-date
2021-04-27 04:26:29
Anyway, it seems I'm up to date but it still crashes. The files open fine in Chrome Dev.
_wb_
2021-04-27 04:27:37
I think it will be fixed in the next sync. Firefox was also reporting a problem with that image
2021-04-27 04:28:29
Or rather with the multi-layer version of it
Scientia
2021-04-27 04:53:26
it's the same with nomacs
2021-04-27 04:53:32
maybe it's the qt plugin?
2021-04-27 04:53:46
because the gdk pixbuf plugin has no issue with it
BlueSwordM
Scientia maybe it's the qt plugin?
2021-04-27 04:59:01
No, it works just fine here with latest Git.
Scientia
2021-04-27 05:00:45
hm
_wb_
2021-04-27 05:02:58
Does it crash only on the very last image of the page?
2021-04-27 05:03:19
Because then it's a bug that will be fixed in the public repo at next sync
BlueSwordM
_wb_ Does it crash only on the very last image of the page?
2021-04-27 05:03:20
Oh, it actually does. There were 2 Tropical images, I did not notice.
_wb_
2021-04-27 05:03:37
There was a bug in layer blending
2021-04-27 05:04:14
Fixed last week, hasn't been a sync yet since then
Jim
2021-04-27 05:05:05
The last 2 cause a crash for me.
_wb_
2021-04-27 05:05:42
I think the bug was only created at the last sync, so the released version should still be ok but the current public git head is not
2021-04-27 05:06:35
Both of them? That's a bit weird
2021-04-27 05:06:51
The one without the overlay logo should not be affected
fab
2021-04-27 05:09:02
imageglass don't read half of the jxl image on windows 7
Scientia
2021-04-27 05:39:46
Mine crashes on the black and white jxl logo, the bamboo and lightning, and the jxl logo overlayed on the tropical background
2021-04-27 05:40:07
I think it might crash on the tropical background by itself but idk
fab
2021-04-27 05:57:07
i didn't compiled i downloaded the latest release in github
2021-04-27 06:05:36
the ones that i converted now work
2021-04-27 06:10:44
even older
2021-04-27 06:10:58
it was an error because i used strange options maybe
2021-04-27 06:11:05
i got some file corrupted
2021-04-27 06:11:10
about 100
2021-04-27 06:11:15
of 800
2021-04-27 06:11:38
with q 60.4 options and faster decoding with some modular q 86.6 before
2021-04-27 06:12:05
i did with an old build now that the folder hasn't error file imageglass works
_wb_
2021-04-27 06:35:47
Maybe imageglass cannot deal with higher bitdepth or out-of-bounds values. Likely an application bug then.
fab
2021-04-27 07:15:12
no
2021-04-27 07:15:17
in my case not
2021-04-27 07:15:26
is just that i put error file in a folder
eddie.zato
2021-05-02 08:27:27
--target_size doesn't work with --modular? ```PS > cjxl 0.png 4.jxl --modular --target_size=5350 -E 3 -I 1 -s 9 J P E G \/ | /\ |_ e n c o d e r [v0.3.7 | SIMD supported: SSE4,Scalar] Quality 100.00 yields 17328 bytes, 15.042 bpp. Quality -900.00 yields 516 bytes, 0.448 bpp. Quality -612.47 yields 529 bytes, 0.459 bpp. Quality -408.00 yields 548 bytes, 0.476 bpp. Quality -262.63 yields 563 bytes, 0.489 bpp. Quality -159.08 yields 615 bytes, 0.534 bpp. Quality -85.68 yields 683 bytes, 0.593 bpp. Quality -33.62 yields 780 bytes, 0.677 bpp. Quality 3.28 yields 982 bytes, 0.852 bpp. Quality 29.13 yields 1384 bytes, 1.201 bpp. Read 96x96 image, 5.7 MP/s Encoding [Modular, Q29.13, tortoise], 4 threads. Compressed to 1384 bytes (1.201 bpp). 96 x 96, 0.24 MP/s [0.24, 0.24], 1 reps, 4 threads.```
_wb_
2021-05-02 08:30:48
Looks like the search is just doing a very poor job here (I think it stops after 10 tries and it wasted most of them at way too low quality)
veluca
2021-05-02 09:54:29
-900 quality? xD
2021-05-02 09:55:21
I'd suggest you don't even try it - either lossless compresses better than vardct, or likely vardct will do a better job than lossy modular...
_wb_
2021-05-02 10:00:01
--target_size / --target_bpp is in any case an inefficient way to set a quality target, and it is likely to give much more inconsistent results than setting --distance.
eddie.zato
2021-05-02 11:05:11
I'm just trying different options with lossy vardct/modular to compete with lossy avif on digital art images. First aiming for close dssim values, then for the same size. Unfortunately, avif almost always wins when looking at quality and file size. For example, enlarged pngs to show the difference in quality. Yeah, avif has lost some details, but it looks better and is smaller. ```avifenc -j 4 -y 444 -r f --min 23 --max 23 -s 0 0.png 1.avif cjxl 0.png 2.jxl -d 0.94 -E 3 -I 1 -s 9 name dssim size 1.avif 0.00057152 3765 2.jxl 0.00057467 4999``` png original https://i.imgur.com/x6fVXzH.png png from avif https://i.imgur.com/oXP6CBO.png png from jxl https://i.imgur.com/KMR2hHm.png
_wb_
2021-05-02 11:14:30
Maybe try if -s 7 or -s 8 do better
2021-05-02 11:16:39
For these kind of images we've seen it before that avif encoders are better in lossy than the current jxl encoder is.
lithium
2021-05-02 11:59:16
-E 3 and -I 1 is work on vardct?
2021-05-02 12:01:36
-I F, --iterations=F [modular encoding] fraction of pixels used to learn MA trees (default=0.5, try 0 for no MA and fast decode) -E K, --extra-properties=K [modular encoding] number of extra MA tree properties to use
_wb_
2021-05-02 12:02:35
Those options aren't really used in vardct, at least not currently: it uses a fixed MA tree for the DC
fab
2021-05-02 12:06:07
and what are this
2021-05-02 12:06:08
https://discord.com/channels/794206087879852103/794206170445119489/835813088883113994
lithium
eddie.zato I'm just trying different options with lossy vardct/modular to compete with lossy avif on digital art images. First aiming for close dssim values, then for the same size. Unfortunately, avif almost always wins when looking at quality and file size. For example, enlarged pngs to show the difference in quality. Yeah, avif has lost some details, but it looks better and is smaller. ```avifenc -j 4 -y 444 -r f --min 23 --max 23 -s 0 0.png 1.avif cjxl 0.png 2.jxl -d 0.94 -E 3 -I 1 -s 9 name dssim size 1.avif 0.00057152 3765 2.jxl 0.00057467 4999``` png original https://i.imgur.com/x6fVXzH.png png from avif https://i.imgur.com/oXP6CBO.png png from jxl https://i.imgur.com/KMR2hHm.png
2021-05-02 12:10:23
For drawing content, you need wait jpeg xl implement some vardct improvement.
mincerafter42
2021-05-02 10:00:13
Hello, I am once again posting in a server I am very inactive in. Are there any really powerful image editors for JXL? Specifically, one where I can select the most important parts of an image (like text) and they will be the parts that are prioritized in the progressive encoding. I have been encountering Internet speeds that are even more incredibly slow than usual and I realized such an editor would be useful for anyone in the same situation. Please ping me with any replies because, like I said, I am not very active here. (Did you know that when Discord loses connection it seemingly deletes the message you're composing? After 2 tries I gave up and composed this message externally and just pasted it in, including this part.)
2021-05-02 10:00:54
*such an editor would be useful for the creators of images that are viewed by users in the same situation
raysar
mincerafter42 Hello, I am once again posting in a server I am very inactive in. Are there any really powerful image editors for JXL? Specifically, one where I can select the most important parts of an image (like text) and they will be the parts that are prioritized in the progressive encoding. I have been encountering Internet speeds that are even more incredibly slow than usual and I realized such an editor would be useful for anyone in the same situation. Please ping me with any replies because, like I said, I am not very active here. (Did you know that when Discord loses connection it seemingly deletes the message you're composing? After 2 tries I gave up and composed this message externally and just pasted it in, including this part.)
2021-05-03 12:39:28
Support of software is read and basic encode with default param, i list all software: https://docs.google.com/spreadsheets/d/1bTeraUXIl-nGM8c53IdURxmJbabX9eXqPZwVSynoH9U
Deleted User
mincerafter42 Hello, I am once again posting in a server I am very inactive in. Are there any really powerful image editors for JXL? Specifically, one where I can select the most important parts of an image (like text) and they will be the parts that are prioritized in the progressive encoding. I have been encountering Internet speeds that are even more incredibly slow than usual and I realized such an editor would be useful for anyone in the same situation. Please ping me with any replies because, like I said, I am not very active here. (Did you know that when Discord loses connection it seemingly deletes the message you're composing? After 2 tries I gave up and composed this message externally and just pasted it in, including this part.)
2021-05-03 01:28:26
> select the most important parts of an image (like text) and they will be the parts that are prioritized in the progressive encoding Sorry, there are no such powerful editors yet. Even simple JXL merging tool for encoding every JXL layer separately remains only a suggestion: https://discord.com/channels/794206087879852103/803663417881395200/830745493368733697
mincerafter42
2021-05-03 01:35:21
it appears I have some options: - do nothing and wait for such an editor to be available - make one myself (this option will be harder)
Pieter
2021-05-03 01:36:04
I vote for the second option.
Deleted User
2021-05-03 01:48:04
I also wanted to do this, but the codebase is too complex for me (at least now) and I don't have "proper" tools to help me with coding and definitely make understanding such an advanced codebase easier.
mincerafter42
2021-05-03 02:04:22
next option (it is actually a question): what would be the best language to code a powerful editor in
Pieter
2021-05-03 02:06:25
I assume the current encoder API doesn't let you do this, so for starters you'd need your own fork of the C++ encoder codebase, or get patches to do these things merged.
2021-05-03 02:15:07
It doesn't let you select prioritized areas in the encoder, which is what <@281958058190700546> seems to be after.
2021-05-03 02:19:00
Well even no JXL software exists that can do this, but at least the format supports things like that to a certain extent. I don't know of any other formats that do.
mincerafter42
2021-05-03 02:52:39
technically I could massively misuse GIF and make the first frames be ones with the most important areas but then of course I'd be restricted to 256 colours per layer so the solution is to make it an even more progressive image using layered local colour palettes
2021-05-03 02:59:22
https://cdn.discordapp.com/attachments/818293093714886679/838607259511554058/xatu.gif then I made an example (yes it's a scene from the pokémon anime with subtitles, I had that on hand) (only 256 colours here because Discord massively messes up displaying local colour palettes)
_wb_
mincerafter42 Hello, I am once again posting in a server I am very inactive in. Are there any really powerful image editors for JXL? Specifically, one where I can select the most important parts of an image (like text) and they will be the parts that are prioritized in the progressive encoding. I have been encountering Internet speeds that are even more incredibly slow than usual and I realized such an editor would be useful for anyone in the same situation. Please ping me with any replies because, like I said, I am not very active here. (Did you know that when Discord loses connection it seemingly deletes the message you're composing? After 2 tries I gave up and composed this message externally and just pasted it in, including this part.)
2021-05-03 05:17:35
There is not such editor/tool yet, but there is a "saliency progression" option to cjxl iirc that takes a heatmap as input and uses it to guide detail in progressive passes (iirc)
2021-05-03 05:18:29
I don't know if and how well it works atm
veluca
2021-05-03 09:06:51
yeah, we didn't test it for a long time, but in theory it should work...
improver
2021-05-04 08:00:49
jxl on android chrome canary when (iirc building that was disabled)
eddie.zato
2021-05-05 02:46:48
I figured out how to build jxl with msys2. No need to wait for other stuff like when using mabs. But one thing still bothers me. The size of the binaries has gotten bigger. For example: ``` msys2 cjxl.exe 9920070 bytes djxl.exe 7924854 bytes masb cjxl.exe 6735872 bytes djxl.exe 5039616 bytes from jeremylee.sh cjxl.exe 4818432 bytes djxl.exe 4107776 bytes``` I build like this: ```cmake -GNinja -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 .. ninja``` Of course, this isn't a big problem. But how to reduce the size of the binaries?
Scope
2021-05-05 02:48:29
`strip.exe -s cjxl.exe`
eddie.zato
Scope `strip.exe -s cjxl.exe`
2021-05-05 02:53:14
Yay, it works! Thanks!
veluca
eddie.zato I figured out how to build jxl with msys2. No need to wait for other stuff like when using mabs. But one thing still bothers me. The size of the binaries has gotten bigger. For example: ``` msys2 cjxl.exe 9920070 bytes djxl.exe 7924854 bytes masb cjxl.exe 6735872 bytes djxl.exe 5039616 bytes from jeremylee.sh cjxl.exe 4818432 bytes djxl.exe 4107776 bytes``` I build like this: ```cmake -GNinja -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 .. ninja``` Of course, this isn't a big problem. But how to reduce the size of the binaries?
2021-05-05 07:51:33
also -DCMAKE_CXX_FLAGS='-ffunction-sections -fgc-sections' can help (I don't remember if we pass it by default though)
eddie.zato
veluca also -DCMAKE_CXX_FLAGS='-ffunction-sections -fgc-sections' can help (I don't remember if we pass it by default though)
2021-05-05 08:04:15
`c++.exe: error: unrecognized command-line option '-fgc-sections'; did you mean '-fdata-sections'?`
veluca
2021-05-05 08:04:48
Eh, nevermind then xD
2021-05-05 08:07:54
Ah, maybe it is -Wl,--gc-sections
2021-05-05 08:08:04
Since it's a linker option...
2021-05-05 08:08:48
(you can also pass -s in the cxx flags, ought to be equivalent to calling strip afterwards)
eddie.zato
2021-05-05 08:15:57
This worked: 😄 ```cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -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 strip -s cjxl.exe djxl.exe Name Length ---- ------ cjxl.exe 6023680 djxl.exe 4798464```
2021-05-05 08:18:26
Took flags from ci.sh
2021-05-09 06:48:08
Playing with tools. Trying to capture the output to a variable in pwsh. Just curious why cjxl output is sent to stderr?
_wb_
2021-05-09 07:07:17
Good question. Maybe we at some point wanted to keep the option open to encode to stdout?
2021-05-09 07:16:56
Tools like cjpeg/djpeg write their output to stdout. Not very convenient if you ask me, since it is very rare that you want to do anything else than `> outputfile`, and much more common that you forget to redirect stdout and end up with a messed up terminal...
eddie.zato
_wb_ Good question. Maybe we at some point wanted to keep the option open to encode to stdout?
2021-05-09 07:25:42
Oh, ok, that makes sense.
zebefree
2021-05-09 12:43:07
Other programs that can output binary data to stdout check isatty(STDOUT_FILENO) first and report an error in that case, to avoid sending binary output to a terminal.
_wb_
2021-05-09 01:15:35
Yes, not sure if that is easy to do in a portable way though
Pieter
2021-05-09 04:07:45
#ifndef _WIN32 ... #endif
Deleted User
2021-05-10 01:33:42
Are there any image viewers that dither high bit depth images to 8 bpc?
_wb_
2021-05-10 01:35:27
I think Photoshop does that, if you call that an image viewer
Deleted User
2021-05-10 01:39:28
No, I'm thinking more about tools that focus on image viewing over everything else. mpv can dither but that's again mainly a video player and not pleasant for typical image viewing.
_wb_
2021-05-10 01:48:40
maybe we should contribute a bit to an image viewer and make it do everything better: in particular doing downscaling in linear color and dithering in the conversion to display space are things that all image viewers should do but probably none actually do.
spider-mario
2021-05-10 02:08:21
somewhat relatedly, I have found it disappointingly difficult to find a color-managed comic book viewer
2021-05-10 02:08:30
I was almost tempted to try and write one myself at some point
2021-05-10 02:08:41
but in the end I got an iPad for that
2021-05-10 02:08:47
great comic book machine.
2021-05-10 02:10:22
right, that’s another option, as well as some Chrome app I used a few years ago
2021-05-10 02:10:26
(2018 iirc)
2021-05-10 02:12:12
in my experience, they are more often distributed as cbr/cbz/cb7/all that stuff
veluca
2021-05-10 02:12:49
btw, we decided not to do dithering in the core libjxl library - if a software wants dithering, they can implement it themselves on top of the float-based callback system
spider-mario
2021-05-10 02:13:31
but yes, the Readium Chrome app works well for EPUB, including math formulas in EPUB3
2021-05-10 02:14:03
it renders the second edition of “Physics of Digital Photography” very well 😁
2021-05-10 02:15:34
paperboyo
_wb_ I think Photoshop does that, if you call that an image viewer
2021-05-10 02:47:42
Photoshop has dither option on explicit conversions between colour modes, not in the display path AFAIK.
eddie.zato
2021-05-10 03:22:45
On windows there is a good viewer for comics and ebooks - SumatraPDF. I created an issue for jxl support. Without much expectation, but just in case.
spider-mario
2021-05-10 03:32:51
iirc, that one is not color-managed at all
eddie.zato
2021-05-10 03:56:15
There is another great and functional app for comics - NeeView. It has "effect panel" with some color management, I dunno if there is anything useful there. It could view jxl, if only were plugins for wic or susie. https://bitbucket.org/neelabo/neeview/
Deleted User
veluca btw, we decided not to do dithering in the core libjxl library - if a software wants dithering, they can implement it themselves on top of the float-based callback system
2021-05-10 04:19:40
But even djpeg supports dithering! That would be quite a regression for JXL. :/
veluca
2021-05-10 04:20:45
does it? IIRC it suports dithering to lower-than-8-bit output