|
Traneptora
|
2022-11-04 04:52:45
|
if that's what you want
|
|
2022-11-04 04:53:31
|
also `align` is row_stride
|
|
2022-11-04 04:53:53
|
but you can set it to 0 to mean "image width"
|
|
|
Jim
|
|
Traneptora
I find all versions of ubuntu to be relatively stable
|
|
2022-11-04 10:34:12
|
Didn't say it was unstable, but the jxl build process fails and asks for a package version that doesn't exist in the LTS package manager.
|
|
|
Traneptora
|
2022-11-04 11:44:28
|
Yea, I mean there's no reason it couldn't be updated to Kinetic
|
|
|
Jim
|
2022-11-04 06:31:53
|
Anyone run into this build issue/know how to bypass it? Seems like a warning.
`libjxl/tools/libjxl_test.c:12:9: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]`
|
|
|
Jim
Anyone run into this build issue/know how to bypass it? Seems like a warning.
`libjxl/tools/libjxl_test.c:12:9: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]`
|
|
2022-11-04 09:28:24
|
Got it, it's `CMAKE_C_FLAGS="-Wno-strict-prototypes"`
|
|
|
Traneptora
|
|
Jim
Anyone run into this build issue/know how to bypass it? Seems like a warning.
`libjxl/tools/libjxl_test.c:12:9: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]`
|
|
2022-11-04 09:54:22
|
I just opened a PR: https://github.com/libjxl/libjxl/pull/1867
|
|
|
Jim
|
|
Traneptora
I just opened a PR: https://github.com/libjxl/libjxl/pull/1867
|
|
2022-11-04 11:01:35
|
Thanks! Wasn't sure if it was a bug or just a quirk with the compiler.
|
|
|
|
veluca
|
2022-11-05 12:28:42
|
nah it's just the C standard that is entirely ludicrous
|
|
|
Traneptora
|
2022-11-05 03:22:46
|
I don't think the C standard is ludicrous for requiring that you declare your function arguments
|
|
|
yurume
|
2022-11-05 03:48:43
|
well C++ is entirely fine with `()` being a zero argument function declaration, it's C confined by its past (older versions of C didn't have formal arguments at all, so `()` can accept any number and type of arguments while `(void)` should have zero arguments, but that's a very old version and one can say the older syntax should be just banned somehow)
|
|
|
Traneptora
|
2022-11-05 04:15:59
|
I mean it is strongly discouraged, i.e. it's deprecated
|
|
|
|
veluca
|
2022-11-05 07:38:00
|
ah, sure, but they could also remove the older syntax and make it mean what the `int main(void)` version means, it has been long enough xD
|
|
|
lonjil
|
2022-11-05 12:10:02
|
As of C23, I believe main() is fine
|
|
|
|
veluca
|
2022-11-05 12:11:40
|
ah, nice
|
|
|
Traneptora
|
2022-11-09 12:20:01
|
I noticed libjxl has a lot of code in header files which ends up getting compiled many times
|
|
2022-11-09 12:20:18
|
I heard it was something to do with templates but is this really necessary? it makes libjxl super slow to build
|
|
|
lonjil
|
2022-11-09 01:07:27
|
This is a big problem across C++ code bases. Maybe if the templates are often instantiated with the same types, pre-compiled headers would be an option? But I do not know how those work.
|
|
|
★コピペ
|
2022-11-11 03:29:11
|
much of the solution comes down to splitting the libraries even further than they are now.
|
|
2022-11-11 03:30:55
|
they don't all have to be installed, but many projects compile lots of small libraries that get linked over and over rather than built over and over
|
|
|
Traneptora
|
2022-11-15 09:33:03
|
is that why boost has a bazillion libraries
|
|
|
|
KammutierSpule
|
2022-11-15 10:57:56
|
Question: I noticed there is a libjxr-dev on linux, is it planned a libjxl in near future. eg: next ubuntu releases?
|
|
|
_wb_
|
2022-11-15 11:06:30
|
-dev packages are the ones with the header files you need to build applications that link to the library
|
|
|
|
KammutierSpule
|
2022-11-15 11:17:48
|
ok sure, but, I'm not sure if there is any dynamic linking (instead of static link). I'm interested on dynamic link on this question
|
|
|
Traneptora
|
|
KammutierSpule
Question: I noticed there is a libjxr-dev on linux, is it planned a libjxl in near future. eg: next ubuntu releases?
|
|
2022-11-15 11:20:51
|
libjxr and libjxl are unrelated
|
|
2022-11-15 11:21:01
|
libjxl already can be linked dynamically
|
|
2022-11-15 11:21:10
|
whether or not ubuntu packages it is up to ubuntu
|
|
|
|
KammutierSpule
|
2022-11-15 11:22:07
|
ok I was asking "do you know if ubuntu will add it in future" ? 🙂
|
|
|
Traneptora
|
2022-11-15 11:22:38
|
whether or not ubuntu packages it is up to ubuntu
sorry I can't give a better answer than that
|
|
2022-11-15 11:22:53
|
debian-based distributions are not known for having up to date software
|
|
|
|
KammutierSpule
|
2022-11-15 11:23:52
|
ok thanks, that gives me an hint!
|
|
|
Traneptora
|
2022-11-15 11:24:08
|
ironically, kinetic has libjxl-testdata
|
|
2022-11-15 11:24:10
|
but not libjxl
|
|
|
KammutierSpule
ok thanks, that gives me an hint!
|
|
2022-11-15 11:25:43
|
fwiw, libjxl 0.7 is in debian-unstable
|
|
2022-11-15 11:25:49
|
so probably
|
|
|
_wb_
|
2022-11-16 10:03:45
|
<@987371399867945100> what's the goal with the changes like https://github.com/libjxl/libjxl/pull/1897 you're making? Making a drop-in replacement for (decode-only?) libjpeg?
|
|
|
|
szabadka
|
|
_wb_
<@987371399867945100> what's the goal with the changes like https://github.com/libjxl/libjxl/pull/1897 you're making? Making a drop-in replacement for (decode-only?) libjpeg?
|
|
2022-11-16 02:33:29
|
Yes, exactly, we want to have a new libjpeg-compatible library that has JPEG-XL inspired improvements in it. Eventually it would include the encoder too.
|
|
|
|
afed
|
2022-11-16 02:39:12
|
so is it possible to just replace the libjpeg(-turbo) libs/dlls and it will work (even for old apps)?
|
|
|
novomesk
|
|
szabadka
Yes, exactly, we want to have a new libjpeg-compatible library that has JPEG-XL inspired improvements in it. Eventually it would include the encoder too.
|
|
2022-11-16 02:40:00
|
That's good strategy. It reminds me a situation from the past when some apps received AVIF support almost with no effort because libheif started to support it.
|
|
|
_wb_
|
2022-11-16 02:53:41
|
would it be feasible/desirable to also decode jxl files through the libjpeg api?
|
|
2022-11-16 02:53:59
|
(obviously would only work in the no-alpha, no-animation case)
|
|
|
novomesk
|
2022-11-16 02:55:54
|
However developers and/or maintainers not always choose what is the best but what is the most convenient for them. For example MozJPEG has good reputation but many users end up using libjpeg-turbo only.
|
|
|
|
szabadka
|
|
_wb_
(obviously would only work in the no-alpha, no-animation case)
|
|
2022-11-16 02:59:54
|
That is an interesting idea, so if you would run Chrome with this new library, then you could decode jxl files disguised as jpeg?
|
|
|
_wb_
|
2022-11-16 03:00:52
|
well not just chrome, anything that uses libjpeg-turbo right now
|
|
2022-11-16 03:02:13
|
biggest issue is that it breaks alpha (and animation) and probably also HDR since most applications will only handle 8-bit RGB
|
|
2022-11-16 03:04:01
|
but it could be a nice transition feature to have a drop-in libjpeg replacement that can also decode jxl (and does something sensible if there's alpha, say blend it to a checkerboard background)
|
|
2022-11-16 03:07:54
|
and then if we can make the libjxl api also take legacy jpeg as input, there would be a nice transition path for applications: if they do nothing, they automatically get some basic jxl support (assuming people replace their libjpeg-turbo with a libjpeg-xl). If they're willing to update their app to use the new libjxl api (so they can get alpha, animation, HDR), they can get rid of the libjpeg dependency
|
|
|
|
afed
|
2022-11-16 03:09:07
|
didn't know until recently, but libjpeg-turbo is an official ISO and ITU-T approved reference implementation
<https://github.com/mozilla/mozjpeg/issues/182#issuecomment-968127849>
```In more recent years, ISO and ITU-T have adopted libjpeg-turbo as an official reference implementation, making it more than just a de facto standard```
|
|
2022-11-16 03:10:02
|
as I understand from previous posts, with the new decoder there will be less code and binary size needed to fully support libjxl, even if for now it is only a jpeg decoder
as a transitional step, it would be nice to add support for jpeg transcoding, but although this would cause extra fragmentation
|
|
|
_wb_
|
2022-11-16 03:11:21
|
there are two approved reference implementations of jpeg: https://jpeg.org/jpeg/software.html
|
|
|
novomesk
|
2022-11-16 03:13:27
|
it is important to make the substitute library as portable as possible ideally with no or only common dependencies.
|
|
|
w
|
2022-11-17 03:39:12
|
is JxlDecoderSetOutputColorProfile done?
|
|
|
Moritz Firsching
|
2022-11-17 07:19:14
|
no, not yet
|
|
|
_wb_
|
2022-11-17 11:25:19
|
hm, this jxlart: https://jpegxl.info/art/2021-08_totocaca.jxl no longer gets decoded by libjxl, probably because of stricter spline limits
|
|
2022-11-17 11:26:37
|
which reminds me: if we want to enforce stricter spline limits (which does make sense from a DoS pov), we should define them and put them in the profiles & levels part of the spec
|
|
|
Demiurge
|
2022-11-18 01:40:05
|
What did it used to look like?
|
|
|
Traneptora
|
|
Demiurge
What did it used to look like?
|
|
2022-11-18 04:51:39
|
jxlatte produces this, I don't know if that's how it's supposed to look
|
|
|
w
|
2022-11-18 05:58:03
|
is it known how/why this happens with transparency?
|
|
|
monad
|
|
Demiurge
What did it used to look like?
|
|
2022-11-18 06:00:12
|
<https://discord.com/channels/794206087879852103/878599623843913728/881994888844021760>
|
|
|
w
is it known how/why this happens with transparency?
|
|
2022-11-18 06:05:26
|
If asking about modified values of transparent pixels at encode time, it's to improve compression.
|
|
|
w
|
2022-11-18 06:07:08
|
so how do i not get this when using decode api
|
|
2022-11-18 06:07:40
|
~~oh, i'm guessing it's JxlDecoderSetUnpremultiplyAlpha~~ it wasn't
|
|
|
Traneptora
|
2022-11-18 09:51:54
|
does libjxl produces JXL files atm with more than one pass?
|
|
|
_wb_
|
2022-11-18 09:59:30
|
Yes, if you use --progressive
|
|
|
Traneptora
|
2022-11-18 10:03:01
|
what does a second pass even accomplish other than twice decoding time?
|
|
2022-11-18 10:03:56
|
as far as I'm aware the cpu required to decode the first pass is the same to decode a pass-free image
|
|
2022-11-18 10:04:05
|
so I'm not entirely sure how that improves responsiveness
|
|
|
_wb_
|
2022-11-18 10:06:28
|
Well you don't have to go through the rendering at each pass, if the data arrives fast enough.
|
|
|
Traneptora
|
2022-11-18 10:06:51
|
but I meant, if you produce an image with 4 passes vs choosing to produce an image with 1 pass
|
|
2022-11-18 10:07:44
|
you just have 4 times as many pass groups
|
|
2022-11-18 10:08:11
|
like it would only make sense if the earlier passes can be made significantly smaller
|
|
2022-11-18 10:08:44
|
is that the case?
|
|
|
_wb_
|
2022-11-18 10:08:47
|
On a slow enough connection, or if you would use range requests to only fetch the first passes (since the full res is not needed for the given viewport width), it does make sense to send multiple passes
|
|
|
Traneptora
like it would only make sense if the earlier passes can be made significantly smaller
|
|
2022-11-18 10:09:14
|
Of course they are smaller, overall file size will not go up much when doing --progressive
|
|
|
Traneptora
|
2022-11-18 10:09:25
|
ah, okay
|
|
2022-11-18 10:09:36
|
how is this accomplished?
|
|
|
_wb_
|
2022-11-18 10:09:51
|
Early passes only contain the lower frequency coeffs
|
|
|
Traneptora
|
2022-11-18 10:10:20
|
ah so in theory they can contain any coeffs in any pass but it goes into "why would you ever do that" territory?
|
|
|
_wb_
|
2022-11-18 10:10:45
|
Later passes only the higher ones, and with coeff reordering the low freq ones get pushed to the end so they are absorbed by the nonzerocounts
|
|
|
Traneptora
|
2022-11-18 10:11:28
|
I see, this makes sense
|
|
|
_wb_
|
|
Traneptora
ah so in theory they can contain any coeffs in any pass but it goes into "why would you ever do that" territory?
|
|
2022-11-18 10:13:29
|
why you would do that: to send more detail earlier in the salient parts of the image. In principle you could send the 1:1 data for the face early while the body and background is still blurry...
|
|
2022-11-18 10:19:45
|
libjxl currently does not do that, but the bitstream allows this and it could be a powerful mechanism for mobile use cases where connections are flaky
|
|
|
w
|
|
w
is it known how/why this happens with transparency?
|
|
2022-11-18 10:26:56
|
so this (vardct transparency) also happens with djxl pfm and of course decode_oneshot
|
|
|
_wb_
|
2022-11-18 11:18:54
|
does djxl allow decoding to pfm if the image has transparency? that's probably a bad idea, or at least it should give a clear warning that alpha was dropped
|
|
|
Demiurge
|
2022-11-18 07:28:49
|
But JXL saves so much bits that the entire image is already sent before you have the opportunity to use progressive decode!
|
|
|
_wb_
|
2022-11-18 07:44:39
|
Don't underestimate how slow 3G can be, and how many image pixels a web page can have...
|
|
|
lonjil
|
2022-11-18 08:00:13
|
I don't quite recall, but with jxl, the default mode has the DC first and then a progress grouping of all the AC valdes, right?
|
|
|
Traneptora
|
|
lonjil
I don't quite recall, but with jxl, the default mode has the DC first and then a progress grouping of all the AC valdes, right?
|
|
2022-11-18 08:24:01
|
it's not the default mode, that's just how it works, period
|
|
|
_wb_
|
2022-11-18 08:33:12
|
Yeah we made it so you always get at least a 1:8 preview when doing lossy
|
|
|
lonjil
|
2022-11-18 08:54:00
|
Right. DC always first. But the second thing I said is a default right? All AC as a single pass top to bottom?
|
|
|
_wb_
|
2022-11-18 08:58:43
|
Yes
|
|
2022-11-18 08:59:22
|
You can also do more passes and/or change the order of groups
|
|
|
lonjil
|
2022-11-18 09:12:16
|
Cool.
|
|
2022-11-18 09:13:35
|
Honestly I think the default fits with what I like. I liked your (I think it was yours anyway) demo a few years ago showing a jpeg designed to progress with first a low quality version and then went straight to full quality.
|
|
|
Demiurge
|
2022-11-18 10:09:44
|
I notice that flif progressive decode has a lot of high frequency details and texture early on.
|
|
2022-11-18 10:09:52
|
compared to jxl
|
|
|
w
|
2022-11-19 04:21:02
|
is there a way to tell if an image is modular only/vardct only?
|
|
|
Traneptora
|
|
w
is there a way to tell if an image is modular only/vardct only?
|
|
2022-11-19 06:50:45
|
libjxl doesn't expose that via the decode API, currently
|
|
|
_wb_
|
2022-11-19 07:03:48
|
What would you do with that information?
|
|
|
w
|
2022-11-19 07:09:02
|
i have to multiply the transparency
|
|
2022-11-19 07:09:12
|
so i figure maybe i only need to do it for vardct
|
|
|
_wb_
|
2022-11-19 07:25:15
|
Multiply the transparency?
|
|
2022-11-19 07:26:19
|
There's no difference between vardct and modular in the semantics of alpha
|
|
|
w
|
|
w
is it known how/why this happens with transparency?
|
|
2022-11-19 07:27:04
|
like i want rgb, but for vardct i get this
|
|
|
_wb_
|
2022-11-19 07:29:49
|
You want RGB without alpha?
|
|
2022-11-19 07:36:41
|
`--codec=jxl:m:1,jxl:m:9` iirc
|
|
|
w
like i want rgb, but for vardct i get this
|
|
2022-11-19 07:38:13
|
We don't currently have a way to get rgb without alpha. Can't you just get rgba and blend it to a background color of your choice?
|
|
|
w
|
2022-11-19 07:38:40
|
yeah that's what i'm doing
|
|
|
_wb_
|
2022-11-19 07:51:44
|
Very possible. Non-photo lossless compression is a weird thing where small differences in encoder choices (like palette order or predictor choices) can make huge differences in compressed size
|
|
|
Traneptora
|
2022-11-21 01:21:28
|
does libjxl currently produce files with orientation != 1
|
|
2022-11-21 01:21:33
|
not counting JPEG reconstructions
|
|
|
_wb_
|
2022-11-21 06:20:38
|
No
|
|
2022-11-21 06:20:42
|
I think
|
|
2022-11-21 06:21:01
|
Maybe if you give it a png with exif orientation as input, it does?
|
|
|
novomesk
|
2022-11-21 10:49:26
|
I attempted to create JXL with all orientation here: https://invent.kde.org/frameworks/kimageformats/-/tree/master/autotests/read/jxl
|
|
|
Traneptora
|
2022-11-21 11:34:27
|
thanks, that's what I was looking for
|
|
|
eddie.zato
|
2022-11-21 12:28:41
|
So `cjxl` doesn't transfer exif?
|
|
|
The_Decryptor
|
2022-11-21 12:29:51
|
Add `--compress_boxes 0`
|
|
|
eddie.zato
|
|
The_Decryptor
Add `--compress_boxes 0`
|
|
2022-11-21 12:32:04
|
Thanks!
|
|
2022-11-21 12:35:19
|
I think this setting should be explained more clearly in `-h`
|
|
|
Traneptora
|
|
eddie.zato
So `cjxl` doesn't transfer exif?
|
|
2022-11-21 12:43:04
|
it does. it compresses them with brotli, but exiv2 doesn't support `brob` boxes yet
|
|
|
eddie.zato
|
2022-11-21 12:45:29
|
`exiftool` too?
|
|
|
novomesk
|
2022-11-21 01:02:12
|
So we have to wait till future release of Exiv2 and till the new version reach various distributions.
|
|
|
_wb_
|
2022-11-21 01:29:21
|
https://github.com/libjxl/libjxl/pull/1909 <@987371399867945100> So jpegli is a decode-only libjpeg that decodes jpeg to pixels. Could we eventually make a libjpeg-xl that contains _both_ the (simplified, high-level only) libjpeg62 api and the libjxl api, and that does the following:
- through the libjpeg62 decode api, it decodes both jpeg and jxl (in case of jxl with alpha, it blends it to a white background or something)
- through the libjxl decode api, it decodes both jpeg and jxl
- through the libjpeg62 encode api, it produces a legacy jpeg bitstream with your encode-side improvements (with a new option to produce a jxl-recompressed version of it instead, and maybe an option to use xyb or not)
- the libjxl encode api is just what it is now
?
|
|
2022-11-21 01:33:33
|
Such a libjpeg-xl could then be a drop-in replacement for libjpeg-turbo that would give applications a very smooth transition path: if they don't do anything, they get better jpeg decoding and encoding and basic (no-alpha) jxl decoding, if they opt-in to produce recompressed jpegs (which would be a one-line addition in their code) they get another 20% compression improvement, and if they have time to do a more serious rewrite of their code, they can move to the libjxl api and get alpha, animation, HDR etc.
|
|
|
|
szabadka
|
|
_wb_
https://github.com/libjxl/libjxl/pull/1909 <@987371399867945100> So jpegli is a decode-only libjpeg that decodes jpeg to pixels. Could we eventually make a libjpeg-xl that contains _both_ the (simplified, high-level only) libjpeg62 api and the libjxl api, and that does the following:
- through the libjpeg62 decode api, it decodes both jpeg and jxl (in case of jxl with alpha, it blends it to a white background or something)
- through the libjxl decode api, it decodes both jpeg and jxl
- through the libjpeg62 encode api, it produces a legacy jpeg bitstream with your encode-side improvements (with a new option to produce a jxl-recompressed version of it instead, and maybe an option to use xyb or not)
- the libjxl encode api is just what it is now
?
|
|
2022-11-21 02:20:38
|
jpegli will eventually support encoding to jpeg as well, as for the combined jpeg+jxl library, that would be a separate project
|
|
|
|
afed
|
2022-11-21 02:30:27
|
right now is it possible to compile a windows dll to replace libjpeg62 for example?
|
|
|
|
szabadka
|
2022-11-21 02:33:36
|
not likely, it is far from ready, I only tested it on linux, and only with the benchmark_xl library
|
|
|
|
afed
|
2022-11-21 02:37:14
|
sad
and it would be easier to make comparisons if cjxl could also be able to encode to a new jpeg (with or without xyb), for example benchmark_xl cannot encode to a given size (or I have not found this option)
|
|
2022-11-21 04:12:42
|
theoretically, can libjpeg-xl be able to decode jpeg-xyb correctly if the app with the legacy libjpeg does not support ICC v4?
|
|
|
_wb_
|
2022-11-21 04:21:13
|
Theoretically, yes, it could detect certain profiles, do the conversion, and return e.g. an sRGB image with an sRGB profile. Assuming the app is not doing something funky like getting the icc profile in a different way than through libjpeg...
|
|
|
Traneptora
|
2022-11-21 04:29:18
|
atm the code doesn't do that though, right?
|
|
|
_wb_
|
2022-11-21 04:33:16
|
I would assume not, but <@987371399867945100> is the one making this
|
|
|
|
szabadka
|
|
Traneptora
atm the code doesn't do that though, right?
|
|
2022-11-21 05:01:36
|
no, it does not, and for that we would need to somehow recognize our XYB profile from its numeric representation of the A2B0 tag, which seems a bit brittle
|
|
|
Traneptora
|
2022-11-21 05:07:10
|
I see
|
|
|
_wb_
|
2022-11-21 05:17:48
|
could just detect only a very specific icc profile (as in: exactly equal to what the jpeg encoder produces), but I agree this is kind of brittle
|
|
2022-11-21 05:20:08
|
another option could be to just depend on a cms, detect when an application is doing a decode without getting the icc profile, and auto-convert to sRGB using the cms in that case.
|
|
2022-11-22 03:52:26
|
<@811568887577444363> <@456226577798135808> is this wasm demo online somewhere? https://github.com/libjxl/libjxl/tree/main/tools/wasm_demo
|
|
|
Jim
|
2022-11-22 03:56:30
|
I think it's the same one that's here: https://github.com/eustas/jxl-demo
|
|
|
daniilmaks
|
2022-11-23 11:55:18
|
are there any step by step thing anywhere to compile fjxl or do I compile from the regular instructions and it'll pop up too
|
|
2022-11-23 11:56:44
|
btw... `I'm not a programmer and I suck at anything CLI so I'm pushing my luck as it is`
|
|
|
_wb_
|
2022-11-23 12:24:30
|
You need to compile it separately, it's not officially part of jxl
|
|
|
spider-mario
|
2022-11-23 12:57:08
|
but on the other hand, because it’s ± self-contained, it might actually be easier to build
|
|
|
diskorduser
|
2022-11-23 01:36:00
|
where is fjxl source code?
|
|
|
|
afed
|
2022-11-23 01:47:53
|
<https://github.com/libjxl/libjxl/tree/main/experimental/fast_lossless>
|
|
|
|
niutech
|
|
_wb_
<@811568887577444363> <@456226577798135808> is this wasm demo online somewhere? https://github.com/libjxl/libjxl/tree/main/tools/wasm_demo
|
|
2022-11-23 03:41:16
|
I've uploaded the libjxl WASM demo here: https://niutech.github.io/jxl.js/libjxl/
|
|
|
daniilmaks
|
|
_wb_
You need to compile it separately, it's not officially part of jxl
|
|
2022-11-23 03:58:33
|
I didn't imply it was part of jxl
|
|
2022-11-23 03:59:15
|
however, it is technically in the source code for libjxl
|
|
|
_wb_
|
2022-11-23 04:00:43
|
yeah I just mean it gets ignored by the libjxl build scripts
|
|
|
daniilmaks
|
2022-11-23 04:59:18
|
fair enough
|
|
|
afed
<https://github.com/libjxl/libjxl/tree/main/experimental/fast_lossless>
|
|
2022-11-23 05:07:46
|
I cannot find instructions anywhere
|
|
|
|
afed
|
2022-11-23 05:15:59
|
this requires some compiler environment and just run ./build.sh
|
|
2022-11-23 05:25:20
|
windows builds if needed
|
|
|
Jim
|
2022-11-24 11:34:22
|
Got progressive rendering working on `canvas`/wasm: https://discord.com/channels/794206087879852103/1036951308294434857/1045481067664134154
|
|
|
BlueSwordM
|
2022-11-25 05:13:01
|
<@179701849576833024> Where can I find the base quantization table for libjxl?
|
|
|
|
veluca
|
2022-11-25 05:13:21
|
quant_weights.cc
|
|
2022-11-25 05:13:27
|
but it's not immediately obvious
|
|
|
BlueSwordM
|
|
veluca
quant_weights.cc
|
|
2022-11-25 05:14:15
|
Thank you. Am I allowed to borrow the quantization weights for something else? 🙂
|
|
|
|
veluca
|
2022-11-25 05:14:35
|
sure... assuming you manage to get them 😛
|
|
|
BlueSwordM
|
|
veluca
sure... assuming you manage to get them 😛
|
|
2022-11-25 05:14:54
|
I mean, it doesn't seem too complex at first glance 😛
|
|
2022-11-25 05:15:03
|
Oh, it actually is...
|
|
|
|
veluca
|
2022-11-25 05:15:45
|
~~use printf~~
|
|
|
BlueSwordM
|
2022-11-25 05:17:55
|
That could be a good way to do it.
Nicely enough, I don't need to look at any of other transforms, just DCT2.
This should be a good exercise to translate this into a 8x8 DCT table that I can use for something I want to make 🙂
|
|
2022-11-25 05:19:00
|
Essentially, the reason I want an 8x8 DCT quantization weight table from JXL is that I want to actually make a base variant of PSNR HVS that uses JXL quantization tables for its frequency weighting as a start.
|
|
|
Traneptora
|
|
BlueSwordM
Thank you. Am I allowed to borrow the quantization weights for something else? 🙂
|
|
2022-11-26 09:13:28
|
jxlatte has the table dumped to a file
|
|
2022-11-26 09:14:49
|
each orderid in full, in raster order
|
|
2022-11-26 09:15:09
|
in single and double precision
|
|
|
sklwmp
|
2022-11-27 04:10:31
|
Tests are failing again on Arch Linux (`-Wp,-D_GLIBCXX_ASSERTIONS`), like in https://github.com/libjxl/libjxl/issues/1644.
|
|
2022-11-27 04:10:37
|
Should I open a new issue or comment on this closed issue?
|
|
|
|
veluca
|
2022-11-27 05:04:26
|
new issue is best
|
|
|
Jim
|
2022-11-28 08:31:06
|
Why does the decoder need a lot more memory when the image is encoded with noise?
|
|
|
_wb_
|
2022-11-28 08:48:38
|
Does it? That's unexpected...
|
|
|
|
veluca
|
2022-11-28 09:14:52
|
The generated noise pattern is pretty heavy
|
|
2022-11-28 09:15:00
|
I mean, 3 floats per pixel
|
|
|
_wb_
|
2022-11-28 09:32:34
|
But it's done per group, right? Not full image?
|
|
|
Jim
|
2022-11-28 09:37:21
|
Hmm. Decoding an image in wasm without noise requires one amount of memory and with noise requires about twice? I can't say for sure, I can do more testing this weekend, but it seems to be quite a lot for some images.
|
|
2022-11-28 09:37:47
|
I am starting to work on getting animations working so that is primary focus.
|
|
|
|
veluca
|
2022-11-28 10:38:20
|
it could require 2x yeah, if the image is not very big
|
|
|
Traneptora
|
|
_wb_
But it's done per group, right? Not full image?
|
|
2022-11-28 11:01:42
|
it's done per group but it's generated at group decode time
|
|
2022-12-02 05:20:26
|
why does libjxl encode LF Frames for high distances but not for low distances?
|
|
2022-12-02 05:20:39
|
high being, say, d5 as an example, and low being, say, d1
|
|
|
_wb_
|
2022-12-02 05:37:26
|
It no longer does that, actually
|
|
|
Traneptora
|
2022-12-02 05:37:53
|
hm? it doesn't use LF frames anymore?
|
|
|
_wb_
|
2022-12-02 05:38:35
|
https://github.com/libjxl/libjxl/pull/1825
|
|
2022-12-02 05:38:39
|
Not by default
|
|
2022-12-02 05:40:20
|
It still does if you ask for it, but my testing indicated that it didn't really help for compression, so it made more sense not to change strategies at some arbitrary distance setting, to avoid discontinuities...
|
|
|
Traneptora
|
2022-12-02 05:43:51
|
I was under the impression that it was not for comprsesion
|
|
2022-12-02 05:44:06
|
but it was because high distances tend to be used because you want ultra-responsiveness
|
|
|
_wb_
|
2022-12-02 06:00:54
|
Ah, that would also make sense, but no, we originally did that because it seemed to compress better
|
|
|
Traneptora
|
2022-12-02 06:01:26
|
If you encode the frame with VarDCT that makes sense
|
|
2022-12-02 06:01:39
|
but for modular you're just skipping dequant
|
|
|
Demiurge
|
2022-12-02 08:55:07
|
So is ssimulacra2 now used instead of butteraugli in libjxl for determining quality targets?
|
|
|
_wb_
|
2022-12-02 09:12:27
|
Not really, but in any case we only use butteraugli at e8 and e9, below that it was used to inform heuristics tuning but not really used directly.
|
|
|
Demiurge
|
2022-12-02 09:14:36
|
Makes sense... So at e8 and e9 it DOES use butteraugli then?
|
|
|
_wb_
|
2022-12-02 09:16:26
|
Yes, to inform adaptive quantization.
|
|
|
Traneptora
|
2022-12-05 09:16:02
|
I noticed e7 -> e8 has a discontinuity
|
|
2022-12-05 09:16:23
|
where e8 is way slower than e7
|
|
2022-12-05 09:16:50
|
there's no equivalent elsewhere
|
|
2022-12-05 09:17:19
|
is that because of butteraugli?
|
|
|
Demiurge
|
2022-12-05 09:34:30
|
No idea but someone said e8 and e9 are single threaded
|
|
|
_wb_
|
2022-12-05 09:40:50
|
e8 and e9 vardct are doing butteraugli iterations and that makes them have guetzli-like speed
|
|
2022-12-05 09:41:48
|
I think e6 and e7 are the ones that make the most sense to actually use
|
|
2022-12-05 09:42:28
|
Maybe e5 too
|
|
2022-12-05 09:43:02
|
e3 and e4 come at too large a cost in compression to be worth the speed gain imo
|
|
2022-12-05 09:43:38
|
And e8/e9 come at too large a cost in speed to be worth the small compression gain
|
|
|
DZgas Ж
|
2022-12-06 12:00:13
|
hoh. well
|
|
2022-12-06 12:00:27
|
today
|
|
2022-12-06 12:03:52
|
I found the biggest bug
look this image (album cover)
when encoding on the parameters e5 e7 e9
|
|
2022-12-06 12:06:45
|
and here are the comparisons
of the original e3 e5 e7 e9
all on d 1
|
|
2022-12-06 12:08:11
|
|
|
|
improver
|
2022-12-06 12:23:55
|
big color shift
|
|
|
Demiurge
|
2022-12-06 01:10:23
|
oddly enough I don't notice anything
|
|
|
DZgas Ж
|
|
2022-12-06 01:10:54
|
Wait maybe a little bit brighter on the right side
|
|
2022-12-06 01:11:10
|
The green parts I mean
|
|
|
Traneptora
|
2022-12-06 01:58:31
|
the colors are slightly different but not something noticeable at 900px viewing distance of an image of that size
|
|
|
DZgas Ж
|
|
Traneptora
the colors are slightly different but not something noticeable at 900px viewing distance of an image of that size
|
|
2022-12-06 06:43:27
|
the image is just spoiled, it shows something that shouldn't be there at all
In case you haven't noticed, e3 works fine
|
|
|
Traneptora
|
2022-12-06 09:42:19
|
I don't see that, just the color issue
|
|
|
daniilmaks
|
2022-12-07 12:02:36
|
yeah no that's bug territory
|
|
2022-12-07 12:05:17
|
there are lots of green areas straight up turning red
|
|
|
DZgas Ж
|
|
DZgas Ж
|
|
2022-12-07 12:53:20
|
<@794205442175402004> what do you say about this?
|
|
|
Traneptora
I don't see that, just the color issue
|
|
2022-12-07 12:56:34
|
perhaps you didn't understand - the image is completely ruined, I can't use the format at a speed higher than 3 after that, these are critical artifacts at a NOT low compression level
|
|
|
there are lots of green areas straight up turning red
|
|
2022-12-07 01:00:51
|
maybe then you can tell me what happened to the colors of the text? Where
ogirinal | e 3 | e 5
|
|
2022-12-07 01:01:36
|
escaped
|
|
2022-12-07 01:14:54
|
I want to note that compressed Modular e9 d1 give an almost identical result in file size and visibly quality as vardct e3 d1
|
|
2022-12-07 01:15:18
|
|
|
|
_wb_
|
2022-12-07 03:07:31
|
interesting, might be the block selection heuristics making a bad choice?
|
|
2022-12-07 03:07:52
|
e3 just uses 8x8 for everything
|
|
2022-12-07 03:08:49
|
here the culprit could be using too big blocks, making the X component get a bit wonky
|
|
|
Traneptora
|
2022-12-07 04:21:05
|
does e3 really use 8x8 for everything?
|
|
|
BlueSwordM
|
|
Traneptora
|
2022-12-07 04:21:12
|
does e3 make jpeg-compatible JXLs?
|
|
2022-12-07 04:21:19
|
cause if they're all 8x8 might as well
|
|
|
_wb_
|
2022-12-07 04:37:26
|
not really, since it still uses XYB, gaborish (I think), and I don't think the quantization factors will be representable in jpeg (which requires them to be integers)
|
|
2022-12-07 04:38:03
|
but it's pretty close to just jpeg
|
|
|
daniilmaks
|
|
Traneptora
cause if they're all 8x8 might as well
|
|
2022-12-07 05:19:54
|
yea that just sounds like xyb jpegs
|
|
|
DZgas Ж
maybe then you can tell me what happened to the colors of the text? Where
ogirinal | e 3 | e 5
|
|
2022-12-07 05:22:14
|
I'm not a developer, I'm just helping point out the average color is deviating abnormaly
|
|
|
Demiurge
|
2022-12-08 01:34:03
|
I don't think e3 uses gaborish
|
|
2022-12-08 01:35:05
|
isn't it possible to make a JPEG with an XYB color space?
|
|
2022-12-08 01:35:26
|
Not sure if any jpeg decoder will be able to display it properly...
|
|
|
DZgas Ж
I found the biggest bug
look this image (album cover)
when encoding on the parameters e5 e7 e9
|
|
2022-12-08 01:41:10
|
An image scaled down this tiny is hard to see. Most details in this image are only 1 or 2 pixels.
|
|
2022-12-08 01:41:22
|
Lossy encoding is a bad idea for an image like that.
|
|
2022-12-08 01:42:09
|
But I think JXL encoder has settings you can tell it that the image is going to be viewed a certain way, and it can adjust some compression settings based on that?
|
|
2022-12-08 01:42:53
|
Or you can decrease the Distance setting, say d0.5
|
|
2022-12-08 01:43:22
|
Although the real problem is that the image is too small
|
|
2022-12-08 01:44:24
|
I am red-green color blind but if I look hard enough I can see there are some green areas that turn red and that's probably bug territory
|
|
2022-12-08 01:44:56
|
But just a few pixels are hard to notice from a normal viewing distance
|
|
|
daniilmaks
|
|
Demiurge
isn't it possible to make a JPEG with an XYB color space?
|
|
2022-12-08 02:29:11
|
it already exists
|
|
2022-12-08 02:30:17
|
look in forum, below these channels
|
|
2022-12-08 02:31:12
|
requires icc-v4 but other than that it's a thing that exists and works
|
|
|
_wb_
|
2022-12-08 06:13:40
|
Yeah, the way xyb is used in jxl is a bit different than how it is used with an icc-v4 color profile though, not fundamentally but the scaling is a bit different to make the 3 components use the same range (needed to make it work in jpeg)
|
|
2022-12-08 06:15:01
|
But it should be possible to make a jxl e3 style thing that corresponds exactly to something that can also be represented in jpeg
|
|
2022-12-08 06:15:28
|
Just the current one was not made with that constraint in mind
|
|
|
BlueSwordM
|
|
Traneptora
jxlatte has the table dumped to a file
|
|
2022-12-08 06:15:42
|
So, is there a simple guide on how to get the tables dumped in a file?
Do I increase verbosity or do I use the library differently?
|
|
2022-12-08 06:31:23
|
Since e3 doesn't use any form of proper AQ(outside of trellis-deadzone quantization), it should be fairly trivial to get a basic JXL DCT table.
|
|
|
DZgas Ж
|
|
_wb_
here the culprit could be using too big blocks, making the X component get a bit wonky
|
|
2022-12-08 01:50:07
|
How?
|
|
2022-12-08 01:50:21
|
e3
|
|
2022-12-08 01:51:29
|
this is not an argument, it can't break the color, because the block size is almost the same on e3
|
|
2022-12-08 01:56:37
|
also, I forgot to say that e4 works just as well as e3, although by my observations, some complex functions with color start with e4, but it is at e5 that everything breaks
|
|
2022-12-08 01:58:56
|
why some distant part of the image Ruin all of the picture so much, it's an unthinkable bug
|
|
2022-12-08 02:00:28
|
or, for example, this part with text, e3 and e5, What happened here??
|
|
2022-12-08 02:08:52
|
and
|
|
2022-12-08 02:09:57
|
butteraugli 1.png 1.png
0.000000
butteraugli 1.png e3.png (d 1.0)
1.463788
butteraugli 1.png e5.png (d 0.75)
1.511219
|
|
2022-12-08 02:10:41
|
|
|
|
_wb_
|
2022-12-08 02:25:18
|
thanks for ruling out that it's the block selection
|
|
2022-12-08 02:28:08
|
then I guess it's either gaborish or chroma from luma
|
|
2022-12-08 02:28:16
|
what happens with `--gaborish=0` ?
|
|
|
DZgas Ж
|
|
_wb_
what happens with `--gaborish=0` ?
|
|
2022-12-08 02:34:13
|
cjxl --gaborish=0 ?
|
|
|
_wb_
|
|
DZgas Ж
|
|
_wb_
yes
|
|
2022-12-08 02:36:16
|
the problem is the same, although the images are no identical
|
|
2022-12-08 02:36:36
|
with | without
|
|
|
_wb_
|
2022-12-08 02:36:44
|
ok, good to know
|
|
2022-12-08 02:37:20
|
then my remaining guess would be chroma from luma, but I don't think we have a switch for that
|
|
|
DZgas Ж
|
2022-12-08 02:38:42
|
I want to note once again that this is a critical bug, and in the cases of this image, the speed of e3 is much better quality than something slower
|
|
2022-12-08 02:39:56
|
the bug on all quality ranges from 0 to 99
|
|
|
Traneptora
|
|
BlueSwordM
So, is there a simple guide on how to get the tables dumped in a file?
Do I increase verbosity or do I use the library differently?
|
|
2022-12-08 04:17:18
|
I had code to generate them
|
|
2022-12-08 04:17:24
|
and then I wrote it to stdout
|
|
2022-12-08 04:17:34
|
now it's just an asset, and that code has been removed
|
|
|
BlueSwordM
|
|
Traneptora
I had code to generate them
|
|
2022-12-08 05:43:18
|
Oof, I thought it was still there.
|
|
2022-12-08 05:43:30
|
Guess I'll have to dump it myself then 🤔
|
|
|
Traneptora
|
|
BlueSwordM
Guess I'll have to dump it myself then 🤔
|
|
2022-12-08 06:02:48
|
why not just use the jxlatte asset?
|
|
|
BlueSwordM
|
|
Traneptora
why not just use the jxlatte asset?
|
|
2022-12-08 06:24:21
|
Oh, that works as well.
How do I use it?
|
|
|
Traneptora
|
|
BlueSwordM
Oh, that works as well.
How do I use it?
|
|
2022-12-08 08:28:38
|
it's just a list of IEEE floats dumped to a file
|
|
2022-12-08 08:28:52
|
each parameter index in full, in raster order
|
|
|
|
umitkacar
|
2022-12-08 10:21:03
|
How can I play with the DCT coefficients? I want less compression in the center of the image and more compression outward.
|
|
|
Demiurge
|
|
DZgas Ж
or, for example, this part with text, e3 and e5, What happened here??
|
|
2022-12-09 01:19:27
|
As someone with deuteranomaly, I literally cannot tell the difference lol.
|
|
|
umitkacar
How can I play with the DCT coefficients? I want less compression in the center of the image and more compression outward.
|
|
2022-12-09 01:23:47
|
That sort of thing is usually expected to be handled automatically by the encoder without human guidance or intervention, and there are very few image processing tools that are designed to offer that sort of manipulation and customization of the encoding process, usually those tools are not even exposed at a public-API level, but Google did recently release a progressive-JXL encoder that orders the image data in order of saliency determined by their center-of-attention AI model.
|
|
|
Jyrki Alakuijala
|
|
DZgas Ж
maybe then you can tell me what happened to the colors of the text? Where
ogirinal | e 3 | e 5
|
|
2022-12-09 10:36:44
|
terrible -- do you have ability to recompile from source if I suggest changes?
|
|
2022-12-09 10:47:47
|
I'll figure this out
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
terrible -- do you have ability to recompile from source if I suggest changes?
|
|
2022-12-09 10:47:58
|
no, I don't have such possibility, besides I use Windows. I will be able to try something only if you make a build
|
|
|
Jyrki Alakuijala
|
2022-12-09 10:48:23
|
thank you for raising this -- please file a bug to libjxl about this
|
|
2022-12-09 10:48:47
|
I'll debug this, try to get the fix submitted and then there will be a new windows build
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
I'll debug this, try to get the fix submitted and then there will be a new windows build
|
|
2022-12-09 10:53:36
|
well, wait build here? - https://artifacts.lucaversari.it/libjxl/libjxl/
|
|
|
Jyrki Alakuijala
|
2022-12-09 10:56:18
|
yes, in a week or so 🙂
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
|
2022-12-09 11:38:16
|
good news, I have a candidate fix
|
|
2022-12-09 11:38:49
|
it relates to adaptive quantization so it will need extensive testing with photos, too
|
|
2022-12-09 11:40:22
|
|
|
2022-12-09 11:41:47
|
I'll need to think a bit on what is the safest way to do this fix without creating havoc in photographic density, while being more appropriate with pixel/drawing images
|
|
|
_wb_
|
2022-12-09 12:11:30
|
what kind of effect does this have on density?
|
|
|
Jyrki Alakuijala
|
2022-12-09 12:28:30
|
I can control it
|
|
2022-12-09 12:28:49
|
it does add bits naturally
|
|
|
_wb_
|
2022-12-09 12:44:32
|
yeah I mean in terms of effect on the BA 3-norm or ssimulacra 2 curves
|
|
|
Jyrki Alakuijala
|
2022-12-09 01:52:10
|
I anticipate 1 % degradation in BA 3-norm
|
|
2022-12-09 01:52:42
|
I'm working with v0.6.0 -- looks like our report generation has been broken in v0.7.0 and head
|
|
2022-12-09 01:53:23
|
benchmark_xl ... --save_decompressed --write_html_report check-faults
|
|
|
pandakekok9
|
2022-12-09 02:20:42
|
Hmm is it normal for effort 9 VarDCT output to have a bigger filesize than effort 7 VarDCT? I thought the effort parameter is supposed to be like how much space should be saved. I guess that assumption only applies to modular lossless?
|
|
|
|
veluca
|
2022-12-09 03:33:53
|
for lossy, it controls more the rate-distortion curve than the specific filesize
|
|
2022-12-09 03:34:07
|
i.e. it can be expected to get bigger filesize if you also get better quality
|
|
|
_wb_
|
2022-12-09 03:55:14
|
for lossless, more effort should mean smaller files (if it doesn't, that's kind of a bug)
for lossy, more effort should mean better visual consistency and better quality per byte
|
|
|
pandakekok9
|
2022-12-09 03:58:24
|
I see, that makes sense to me, thanks
|
|
|
Jyrki Alakuijala
|
2022-12-09 04:06:20
|
effort 9 VarDCT hasn't been a priority to verify and it has logic mistakes -- like it really tries hard to optimize for distortion, but not rate-distortion compromise
|
|
2022-12-09 04:06:36
|
sometimes it adds distortion without saving anything much
|
|
|
Traneptora
|
|
Demiurge
As someone with deuteranomaly, I literally cannot tell the difference lol.
|
|
2022-12-09 07:43:43
|
this is still valuable info because it means the error is in the X channel
|
|
|
daniilmaks
|
|
Demiurge
As someone with deuteranomaly, I literally cannot tell the difference lol.
|
|
2022-12-09 08:07:31
|
correct. that would make sense.
|
|
|
_wb_
|
2022-12-09 08:08:53
|
X is indeed exactly the channel that is redundant for people with protanopia or deuteranopia.
|
|
2022-12-09 08:09:32
|
(and B the one that is not visible for people with tritanopia)
|
|
|
|
umitkacar
|
2022-12-09 09:48:29
|
"Progressive decoding for automatic low-quality image placeholders, including saliency progression to prioritize more critical parts of the image first (like face details)"
Reference: https://jpegxl.io/articles/faq/#%E2%8F%A9generalinformation
|
|
2022-12-09 09:48:33
|
How can I do that? Especially face
|
|
2022-12-09 10:05:23
|
"There are two more advanced progressive encoding options in JPEG XL: Middle-out scans: In JPEG, scans are top to bottom. In JPEG XL, where encoding occurs in groups of 256x256 pixels, you can reorder the groups. As a result, you should start all scans with the groups in the middle, likely to contain the most exciting parts of the image. Progression of saliency: In progressive scans of JPEGs, each image part is given the same amount of detail. This is not the case for JPEG XL. That means ***you can encode images progressively based on saliency, such as encoding faces or foreground objects in more detail first, followed by the background***."
Reference: https://jpegxl.io/articles/faq/#%E2%8F%A9generalinformation
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
it relates to adaptive quantization so it will need extensive testing with photos, too
|
|
2022-12-10 08:01:54
|
Can I use the "constant quantization"
|
|
|
Jyrki Alakuijala
it relates to adaptive quantization so it will need extensive testing with photos, too
|
|
2022-12-10 08:05:00
|
And, then why is e3 do well?
|
|
|
Jyrki Alakuijala
I'll need to think a bit on what is the safest way to do this fix without creating havoc in photographic density, while being more appropriate with pixel/drawing images
|
|
2022-12-10 08:06:27
|
e3 is already doing everything perfectly, need to understand
|
|
|
novomesk
|
2022-12-10 07:45:11
|
Can we ask for help to review CMYK+A export in GIMP 2.99, please? https://gitlab.gnome.org/GNOME/gimp/-/merge_requests/793
I am unsure if it is OK to call JxlEncoderSetExtraChannelBuffer after JxlEncoderAddImageFrame and if JxlPixelFormat::num_channels can have higher value than 4.
|
|
|
_wb_
|
2022-12-10 08:47:34
|
calling JxlEncoderSetExtraChannelBuffer after JxlEncoderAddImageFrame is correct
|
|
2022-12-10 08:49:02
|
setting pixelformat num_channels to higher than 4 is not correct, it can be e.g. 3 to set CMY with JxlEncoderAddImageFrame and then 1 to set K with JxlEncoderSetExtraChannelBuffer
|
|
2022-12-10 08:50:03
|
you can set Alpha either by giving it separately with JxlEncoderSetExtraChannelBuffer, or by setting num_channels to 4 and passing CMY+Alpha in JxlEncoderAddImageFrame
|
|
|
sklwmp
|
2022-12-11 02:04:18
|
Is there a way to concatenate pre-made JPEG XL files into an animated JXL without re-encoding?
|
|
|
Demiurge
|
2022-12-11 06:57:43
|
Lossy JXL?
|
|
|
_wb_
|
2022-12-11 07:44:01
|
There is no tool for that atm but it should be relatively easy to do. Just need to keep only the image header of the first, add an animation section to that header, and set `is_last` to false and `duration` to something in all frame headers
|
|
|
Traneptora
|
|
sklwmp
Is there a way to concatenate pre-made JPEG XL files into an animated JXL without re-encoding?
|
|
2022-12-11 07:59:03
|
provided they all use the same parameters, it could be done, although I don't believe there's an equivalent of apngasm atm
|
|
|
_wb_
|
2022-12-11 08:20:41
|
They do need to use the same colorspace. Dimensions can be different between frames.
|
|
|
DZgas Ж
|
2022-12-11 08:21:36
|
hello it's me again 🙂 I noticed a compression anamaly on the 98 quality for this picture, on the E 3 quality it compresses strongly, more than expected, but this is not particularly important, what is important is that the quality of E 7 gives a size 3 times larger, and E 9 gives a size 6 times larger than E 3
|
|
2022-12-11 08:30:04
|
and also a giant anomaly of 0 quality, (from JPEG hah), which is on E 3, but which disappears on E 4 quality
|
|
2022-12-11 08:30:39
|
This is the first time I see artifacts like this in JPEG XL
|
|
|
Cool Doggo
|
|
DZgas Ж
hello it's me again 🙂 I noticed a compression anamaly on the 98 quality for this picture, on the E 3 quality it compresses strongly, more than expected, but this is not particularly important, what is important is that the quality of E 7 gives a size 3 times larger, and E 9 gives a size 6 times larger than E 3
|
|
2022-12-11 08:33:21
|
the e3 one is smaller, but also much lower quality than you targeted, its closer to d1 (or q90 iirc), e7 targeting the same quality is only 1570 bytes (e9 is 1362)
|
|
|
DZgas Ж
|
|
Cool Doggo
the e3 one is smaller, but also much lower quality than you targeted, its closer to d1 (or q90 iirc), e7 targeting the same quality is only 1570 bytes (e9 is 1362)
|
|
2022-12-11 08:36:31
|
yes, but then why does e3 already smooth the surface to a flat state, erasing noise, and other parameters do not do this... after all, I exhibit one quality, - where is the stability? here I think the problem is in E 3 which smoothed out what was not necessary
|
|
|
Jyrki Alakuijala
|
|
DZgas Ж
This is the first time I see artifacts like this in JPEG XL
|
|
2022-12-12 09:51:16
|
I don't like this kind of artefacts, they are so unnecessary because almost no information is needed to avoid them -- and they look super irritating, especially red-green stripes in dark areas (looking at you video coding/netflix/youtube etc.)
|
|
|
DZgas Ж
hello it's me again 🙂 I noticed a compression anamaly on the 98 quality for this picture, on the E 3 quality it compresses strongly, more than expected, but this is not particularly important, what is important is that the quality of E 7 gives a size 3 times larger, and E 9 gives a size 6 times larger than E 3
|
|
2022-12-12 09:52:56
|
it is caused by masking estimates being different by heuristics masking and what butteraugli considers masking
|
|
|
DZgas Ж
e3 is already doing everything perfectly, need to understand
|
|
2022-12-12 09:54:07
|
I believe e3 doesn't use adaptive quantization 🙂 ... then the inefficiencies in adaptive quantization do not come to play ... but even better to fix those inefficiencies
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
it is caused by masking estimates being different by heuristics masking and what butteraugli considers masking
|
|
2022-12-12 10:50:21
|
Well, in this case, the difference is 6 times, and butteraugli considers it a similar quality?
|
|
|
Jyrki Alakuijala
|
2022-12-12 02:13:09
|
it could be that the dc quantization is too bad
|
|
2022-12-12 02:13:28
|
if we made dc quantization too bad, then butteraugli gets upset and ramps up the ac quantization
|
|
2022-12-12 02:14:02
|
could be many other things, too... would you mind filing an issue on libjxl ?
|
|
|
DZgas Ж
|
|
Jyrki Alakuijala
could be many other things, too... would you mind filing an issue on libjxl ?
|
|
2022-12-12 04:17:09
|
issue? where? if it's somewhere where force registration is needed, then no I can't
|
|
|
Jyrki Alakuijala
|
2022-12-12 08:12:55
|
I think they force registration
|
|
|
t0xic
|
2022-12-16 03:03:39
|
Does this implementation already exist?
|
|
|
|
afed
|
2022-12-16 03:29:25
|
is this a fix for -e 1 or just using a higher effort for animation?
https://github.com/libjxl/libjxl/pull/1982
|
|
|
_wb_
|
2022-12-16 03:39:58
|
It uses the old e1 instead of the fast one for now
|
|
|
|
afed
|
2022-12-16 03:48:04
|
because I mostly need animation for burst "merging" large lossless images, though the old efforts are also pretty fast, but higher speed still be useful
|
|
2022-12-16 04:12:09
|
<https://github.com/libjxl/libjxl/pull/1983>
adding ssimulacra2 to the benchmark would be very useful
is ssimulacra2 already used in cloudinary?
I wonder if it can be faster like fast ssim variations or most slowest (in overall calculations) is blur?
|
|
2022-12-16 04:33:34
|
<:KekDog:805390049033191445> <https://github.com/libjxl/libjxl/pull/1984>
|
|
|
_wb_
|
|
afed
<https://github.com/libjxl/libjxl/pull/1983>
adding ssimulacra2 to the benchmark would be very useful
is ssimulacra2 already used in cloudinary?
I wonder if it can be faster like fast ssim variations or most slowest (in overall calculations) is blur?
|
|
2022-12-16 04:39:02
|
I'm using it to benchmark encoders and make recommendations on what to use, but we're not directly using it atm.
|
|
2022-12-16 04:46:42
|
nice to see the CI in green again, that does give a better impression 🙂
|
|
2022-12-16 04:52:07
|
btw if someone feels like taking a look at the code coverage report (https://app.codecov.io/gh/libjxl/libjxl) and do things to improve it (i.e. adding tests for code paths that aren't covered yet, or removing code that is not actually used anymore), I'm always happy to review such pull requests. It's nice if we can get a good coverage % there, even if it doesn't necessarily mean that much (you can have bad bugs with 100% code coverage and excellent software with 0% coverage).
|
|
|
Demiurge
|
2022-12-17 05:03:59
|
You know ever since that guy pointed out the weird blocky color in lossy JXL now I cannot unsee it every time I use lossy JXL in any image
|
|
2022-12-17 05:05:10
|
I notice pretty much any image is susceptible to it when you have a continuous field of relatively smooth subtly changing color, it gets turned into awkward blocks of color
|
|
2022-12-17 05:05:27
|
But to be fair you have to zoom in a lot to see it.
|
|
2022-12-17 05:05:47
|
Still... awkward.
|
|
2022-12-17 05:06:12
|
It looks out of place to have some parts of the image stand out more than the rest of the image
|
|
2022-12-17 05:06:22
|
in terms of compression artifacts
|
|
2022-12-17 05:06:45
|
You expect the compression to be visually uniform
|
|
2022-12-17 05:06:59
|
perceptually
|
|
2022-12-17 05:09:02
|
Yeah, there's a lot of distracting macroblocking color distortion
|
|
2022-12-17 05:09:24
|
in pretty much every image I use lossy compression on
|
|
|
daniilmaks
|
2022-12-17 05:19:28
|
the red green stuff right?
|
|
|
BlueSwordM
|
|
Demiurge
I notice pretty much any image is susceptible to it when you have a continuous field of relatively smooth subtly changing color, it gets turned into awkward blocks of color
|
|
2022-12-17 05:24:07
|
At this point, you might just be experiencing loss of dithering.
That, or normal pictures are dithered, but the JXL ones aren't.
I've seen what DzGas posted, but I can't really see what you're talking about.
|
|
|
Demiurge
|
2022-12-17 05:45:09
|
Hmmm...
|
|
2022-12-17 05:45:48
|
What's a good test image, I'll try to encode it with lossy and show you what I'm talking about
|
|
2022-12-17 05:46:05
|
because like I said I can't unsee it now in every image I encode
|
|
2022-12-17 05:46:30
|
I'm using 0.7.0 though
|
|
|
daniilmaks
|
2022-12-17 06:04:15
|
what I tend to see is chroma "serration" or staircasing, specially in sharps transitions into a smooth gradient.
|
|
2022-12-17 06:05:12
|
with some luck it might be fixed with the newer patches
|
|
|
Demiurge
|
2022-12-17 06:07:06
|
Yes
|
|
2022-12-17 06:07:11
|
That's what I see
|
|
2022-12-17 06:07:33
|
That's exactly what I'm talking about that's impossible to unsee now
|
|
2022-12-17 06:07:55
|
Staircasing or macroblocking in the chroma
|
|
|
daniilmaks
|
2022-12-17 06:21:28
|
which means it has probably nothing to do with dithering or whatever blue meant
|
|
|
Demiurge
|
2022-12-17 06:22:54
|
Yeah, I know. And it's in literally every lossy image I compress, too. Unless I do -q 94 or higher
|
|
|
_wb_
|
2022-12-17 08:14:48
|
Maybe try with current git version to see if it improved
|
|
|
Jyrki Alakuijala
|
|
Demiurge
You know ever since that guy pointed out the weird blocky color in lossy JXL now I cannot unsee it every time I use lossy JXL in any image
|
|
2022-12-19 08:21:26
|
interesting, could you give a link?
|
|
|
Demiurge
|
|
DZgas Ж
|
|
2022-12-19 09:19:32
|
Yes
|
|
2022-12-19 09:19:47
|
It's very hard to notice for me in this example because of my deuteranomalous color vision
|
|
2022-12-19 09:19:54
|
But this is an example of it
|
|
2022-12-19 09:20:03
|
It's more noticeable to me in other images
|
|
|
DZgas Ж
|
|
Demiurge
|
2022-12-19 09:20:46
|
The same issue. Like I said I can't unsee it now. It's in every lossy image unless I use like -q 94 or higher
|
|
2022-12-19 09:21:06
|
Someone else described it as "chroma stairstepping"
|
|
2022-12-19 09:21:47
|
I would maybe describe it as "chroma macroblocking"
|
|
|
DZgas Ж
|
2022-12-19 09:21:51
|
the error with colors goes up to q 99
|
|
2022-12-19 09:22:32
|
that is, I see it on all ranges from 0 to 99
|
|
|
Demiurge
You know ever since that guy pointed out the weird blocky color in lossy JXL now I cannot unsee it every time I use lossy JXL in any image
|
|
2022-12-19 09:24:04
|
in fact, I still notice the remnants of this bug in photos with a quality lower than 85
|
|
|
Demiurge
|
2022-12-19 09:25:14
|
It's unexpected since JXL is known to have extremely good color compared to other formats
|
|
|
DZgas Ж
|
2022-12-19 09:25:48
|
since the more visible part of the bug has already been fixed, it is now much more difficult to indicate this, but I clearly noticed it in one of my test images
|
|
|
Demiurge
|
2022-12-19 09:27:02
|
Is it a recent regression or has libjxl done this for a long time?
|
|
|
DZgas Ж
|
2022-12-19 09:27:14
|
the bug always show itself exclusively on dark shades of red, which is the border to white, as well as the bug manifests itself only on large images and does not appear if you cut out the part where the bug was from the picture
|
|
|
Demiurge
Is it a recent regression or has libjxl done this for a long time?
|
|
2022-12-19 09:27:57
|
I sometimes go to encode.su , you can just look at my nickname there
|
|
2022-12-19 09:50:28
|
for example, I have such an image, it was generated by a neural network (and it is also blocked by discord), but this is not so important, important is that a bug with red blocks is extremely noticeable on it
|
|
2022-12-19 09:50:29
|
|
|
2022-12-19 09:50:53
|
|
|
2022-12-19 09:52:45
|
q 80 e 7
|
|
|
joppuyo
|
2022-12-19 11:21:24
|
is it really a bug if we are talking about lossy compression? I would assume there's always going to be artifacts when you are not doing lossless
|
|
|
DZgas Ж
|
|
joppuyo
is it really a bug if we are talking about lossy compression? I would assume there's always going to be artifacts when you are not doing lossless
|
|
2022-12-19 11:28:31
|
in this case, it's a bug.
|
|
2022-12-19 11:29:24
|
I showed exactly the same bug a year ago, and it was solved, but the quality of q 95
|
|
|
joppuyo
|
2022-12-19 11:30:02
|
you might be right. in the above image I do see the issue clearer, unlike the album cover image. it might have something to do with my red-green color deficiency...
|
|
|
DZgas Ж
|
|
joppuyo
you might be right. in the above image I do see the issue clearer, unlike the album cover image. it might have something to do with my red-green color deficiency...
|
|
2022-12-19 11:39:27
|
in this case, it turns out to be completely different problems caused by different mechanisms
|
|
|
Jyrki Alakuijala
|
|
DZgas Ж
I showed exactly the same bug a year ago, and it was solved, but the quality of q 95
|
|
2022-12-19 01:08:23
|
let's try to improve -- I'll look into this, too
|
|
|
Demiurge
|
2022-12-19 07:32:26
|
Does libjxl still call abort()?
|
|
2022-12-19 07:34:36
|
I didn't realize it does that... That's a huge dealbreaker for using the library...
|
|
|
_wb_
|
2022-12-19 07:36:00
|
It shouldn't except when out of memory or when using the api incorrectly, I think
|
|
|
Demiurge
|
2022-12-19 07:36:33
|
I was just looking at the open milestone issues
|
|
2022-12-19 07:37:38
|
Even in those situations it's best to give the calling application the opportunity to catch and handle the error
|
|
|
_wb_
|
2022-12-19 07:37:59
|
I agree we should make it return error when out of memory.
|
|
|
username
|
2022-12-19 07:38:43
|
libjxl using abort() is a blocker for paint.net having default support
|
|
|
_wb_
|
2022-12-19 07:38:50
|
When using the api incorrectly, I think it's better to abort and force the application dev to fix it.
|
|
2022-12-19 07:39:43
|
What do libjpeg and libpng and co do when out of memory? Do they handle that nicely?
|
|
2022-12-19 07:41:51
|
I think we need to look at our allocations more carefully, besides oom we also seem to just be doing lots of allocations, which might be causing some avoidable time spent in system calls...
|
|
|
Demiurge
|
2022-12-19 07:43:37
|
Forcing the calling application to abort can have consequences like losing important work.
|
|
2022-12-19 07:45:29
|
If you want to force the devs to fix their API usage there are other ways to fail
|
|
|
_wb_
|
2022-12-19 07:54:51
|
Api usage bugs are static bugs like trying to set the bitdepth to 123
|
|
2022-12-19 07:56:27
|
I agree that dynamic bugs like passing an invalid jpeg file to be recompressed should return nice errors
|
|
2022-12-19 08:00:46
|
But api usage bugs should just be fixed, if you're just calling things in incorrect ways, it's better to abort than to confuse the dev by returning errors they're likely not going to look at anyway and marching on.
|
|
|
Demiurge
|
2022-12-19 08:03:30
|
Well you don't have to march on either, but there's probably a better way for libjxl to give up without forcing the calling application to abort
|
|
|
_wb_
|
2022-12-19 08:16:10
|
But why? These are basically compile-time errors that we just cannot catch at compile time...
|
|
2022-12-19 08:18:19
|
When using a debug build of libjxl, you'll get a nice error message saying what you did wrong, and then it aborts.
|
|
|
|
veluca
|
2022-12-19 08:18:38
|
yeah but that will sneak in a runtime build at some point or another
|
|
2022-12-19 08:18:42
|
or some weird bug will
|
|
2022-12-19 08:19:28
|
we *could* setjmp and longjmp
|
|
2022-12-19 08:19:39
|
or do weird signal handler magic
|
|
2022-12-19 08:19:58
|
well, no, both are a terrible idea
|
|
2022-12-19 08:20:02
|
maybe exceptions
|
|
|
_wb_
|
2022-12-19 08:22:09
|
I think there's a difference between bugs like calling libjxl functions in the wrong order (which will be a problem every time that code path is executed) and bugs that could plausibly depend on runtime things.
|
|
2022-12-19 08:24:07
|
For the former I think aborting is the most dev-friendly thing to do, makes it clear immediately that they need to fix their code.
For the latter returning error status is better.
|
|
|
Demiurge
|
2022-12-19 08:55:17
|
It's more expected that the JXL related functionality would cease to function.
|
|
2022-12-19 08:55:44
|
rather than an abort.
|
|
|
_wb_
|
2022-12-19 09:01:00
|
i dunno, I'm kind of used to getting aborts when calling libraries in the wrong way
|
|
|
Demiurge
|
2022-12-19 09:02:27
|
Excessive use of abort() call in libraries seems to be a GNU coding practice
|
|
|
Traneptora
|
|
_wb_
i dunno, I'm kind of used to getting aborts when calling libraries in the wrong way
|
|
2022-12-20 08:26:20
|
every library that does that is doing the wrong thing
|
|
2022-12-20 08:26:56
|
it requires anything with any kind of plugin support to run separate processes or buggy plugins take down the whole program
|
|
2022-12-20 08:27:29
|
especially if the invalid code path is rare
|
|
2022-12-20 08:27:40
|
(say, something like forcibly enabling lossy modular is done incorrectly)
|
|
|
_wb_
|
2022-12-20 08:50:35
|
I think it's a matter of api contracts. A library should guarantee that if the api is being used correctly (i.e. as prescribed by the documentation), it never aborts, only returns error codes that can be checked and recovered from. But if the api is being used incorrectly, then I think aborting is clearer than returning an error code that very likely will not be checked anyway, causing hard to track bugs further down the execution. If necessary, it's the application's responsibility to do the runtime checks needed to ensure it is using the api in the correct way.
|
|
|
VcSaJen
|
2022-12-22 12:09:22
|
If shell "uses API incorrectly" (i.e. for thumbnails, etc) in rare code paths, would it cause the whole OS shell to crash in release build?
|
|
|
Traneptora
|
2022-12-22 12:13:13
|
IMO no, libraries should not abort
|
|
|
VcSaJen
|
|
Traneptora
IMO no, libraries should not abort
|
|
2022-12-22 12:49:37
|
How does mozjpeg handle those types of errors?
|
|
|
Traneptora
|
2022-12-22 01:02:17
|
I don't know, I assume in a way that's compliant with libjpeg's api
|
|
|
VcSaJen
|
2022-12-22 01:05:22
|
I think if other file type libraries do not crash parent process, neither should libjxl.
|
|
|
pandakekok9
|
2022-12-22 02:09:06
|
Has anyone built libjxl successfully on linux armhf and arm64? We couldn't get Pale Moon with JPEG-XL support built-in on those platforms: https://forum.palemoon.org/viewtopic.php?f=3&t=11466&start=700#p234135
|
|
2022-12-22 02:10:21
|
Do note that we're using a libjxl slightly older than 0.7.0, but looking at the changes between the tree of the commit I used for the initial PR and 0.7.0, the changes doesn't seem to be significant
|
|
|
BlueSwordM
|
|
pandakekok9
Has anyone built libjxl successfully on linux armhf and arm64? We couldn't get Pale Moon with JPEG-XL support built-in on those platforms: https://forum.palemoon.org/viewtopic.php?f=3&t=11466&start=700#p234135
|
|
2022-12-22 02:24:04
|
Yes!
|
|
|
pandakekok9
|
2022-12-22 02:25:35
|
Welp guess I will upgrade our in-tree libjxl to 0.7.0 and see if that works for the package maintainer
|
|
|
BlueSwordM
|
2022-12-22 02:25:35
|
I'm not 100% sure, but let me check <:PepeOK:805388754545934396>
|
|
|
username
|
2022-12-22 02:25:54
|
might have to also update highway
|
|
2022-12-22 02:26:20
|
if it's not required it's still probably good to do anyway
|
|
|
BlueSwordM
|
|
pandakekok9
Welp guess I will upgrade our in-tree libjxl to 0.7.0 and see if that works for the package maintainer
|
|
2022-12-22 02:27:02
|
<@707907827712131102>
|
|
2022-12-22 02:28:38
|
For reference, here is what we use
https://github.com/OpenMandrivaAssociation/jpeg-xl
https://github.com/OpenMandrivaAssociation/qt-jpegxl-image-plugin
|
|
|
pandakekok9
|
|
username
might have to also update highway
|
|
2022-12-22 05:00:13
|
Looking at the changes, the only thing that seems to affect us is the addition of `hwy/per_target.cc`, but other than that it seems upgrading our in-tree highway is indeed optional
|
|
2022-12-22 05:00:29
|
But I'm gonna upgrade it anyway cuz why not
|
|
2022-12-22 05:02:27
|
Anyway: https://repo.palemoon.org/MoonchildProductions/UXP/pulls/2062
|
|
|
username
|
2022-12-22 05:05:59
|
me and demez where thinking of doing the same with our waterfox pull request (we even had it ready) but we decided it would be a better idea to leave it out so the pull request wouldn't have a giant log of changes so it would be more likely they would merge it
|
|
|
pandakekok9
|
2022-12-22 05:06:50
|
Yeah, good thinking, just do the library updates in a future PR :)
|
|
2022-12-22 05:07:29
|
If Waterfox decides to merge it in I might try porting it to SeaMonkey as well
|
|
2022-12-22 05:07:59
|
Waterfox Classic I mean
|
|
2022-12-22 05:08:07
|
Since they're different codebases
|
|
2022-12-22 05:09:27
|
I said in the past that SeaMonkey is unlikely to accept libjxl support from their IRC logs, but if WC decides to go libjxl, I don't see any reason why SeaMonkey wouldn't do the same, since their developers are collaborating in keeping up-to-date with mozilla-central
|
|
|
username
|
2022-12-22 05:11:30
|
the pull request we did is currently for non classic waterfox however we are definitely planning on doing one for classic at some point (hopefully soon) based on the work you have done
|
|
|
Moritz Firsching
|
2022-12-22 09:25:06
|
Yes, I should have explained more on the bug. When using a subsampled XYB JPEG, then it won't be compatible with lossless JPEG transcode, similar for RGB JPEGs.
So the failure you are seeing now is exactly the intended behavior that we were trying to create in e51e0e56; this way at least cjxl is not permitted to create files that can't be read by djxl
|
|
|
Demiurge
|
|
_wb_
I think it's a matter of api contracts. A library should guarantee that if the api is being used correctly (i.e. as prescribed by the documentation), it never aborts, only returns error codes that can be checked and recovered from. But if the api is being used incorrectly, then I think aborting is clearer than returning an error code that very likely will not be checked anyway, causing hard to track bugs further down the execution. If necessary, it's the application's responsibility to do the runtime checks needed to ensure it is using the api in the correct way.
|
|
2022-12-22 11:59:20
|
Maybe only in debug builds with certain compile time flags enabled would it ever make sense for a library to intentionally call abort() in any circumstance whatsoever, even if the API is being used in an undefined way
|
|
2022-12-22 12:01:29
|
But maybe if you're using a library that does that, you deserve whatever is coming to you
|
|
2022-12-22 12:03:07
|
Still I feel like that is taking us backwards, and not bringing us into a future where computers are more reliable and less fragile
|
|
|
VcSaJen
If shell "uses API incorrectly" (i.e. for thumbnails, etc) in rare code paths, would it cause the whole OS shell to crash in release build?
|
|
2022-12-22 12:10:00
|
This is a perfect example. In complex piece of software there could be circumstances down a rare code path where libjxl API gets called in an incorrect order or something, it's just downright malicious for libjxl to intentionally crash the parent process in any situation.
|
|
2022-12-22 12:10:50
|
It's just not the type of behavior a library should do, hijacking control away from the calling application like that.
|
|
2022-12-22 12:14:51
|
It doesn't help computers get more reliable
|
|
|
DZgas Ж
|
2022-12-31 09:22:43
|
I was touched, in a bad way, that jpeg xl only loads completely. Why? Can't I upload parts? Although by blocks? Or after loading the full Line ready for display. My question is <#848189884614705192> A little bit refers to this.
|
|
2022-12-31 09:29:24
|
webp and jpeg just can this
|
|
|
Traneptora
|
|
DZgas Ж
I was touched, in a bad way, that jpeg xl only loads completely. Why? Can't I upload parts? Although by blocks? Or after loading the full Line ready for display. My question is <#848189884614705192> A little bit refers to this.
|
|
2022-12-31 02:49:23
|
JPEG XL does support reading specific groups, say, of a massive image. However, there isn't any decoder that does this at the moment.
|
|
2022-12-31 02:49:54
|
But it could be written
|
|
|
DZgas Ж
|
|
Traneptora
JPEG XL does support reading specific groups, say, of a massive image. However, there isn't any decoder that does this at the moment.
|
|
2022-12-31 02:53:07
|
it seems to me a little embarrassing that, along with all other codecs with a Block structure, suddenly Jpeg XL cannot display blocks during decoding
|
|
|
Traneptora
|
2022-12-31 02:54:02
|
The format can. It's just not currently implemented by any decoder
|
|
|
DZgas Ж
|
2022-12-31 02:55:06
|
well, Jpeg XL is still to do and do ;P
|
|
|
Traneptora
|
2022-12-31 02:55:19
|
Yea, there's a lot left to do
|
|
|
_wb_
|
|
DZgas Ж
it seems to me a little embarrassing that, along with all other codecs with a Block structure, suddenly Jpeg XL cannot display blocks during decoding
|
|
2022-12-31 03:08:27
|
Same is true for avif, btw.
|
|
2022-12-31 03:08:53
|
At least libjxl can already do progressive and incremental decode
|
|
2022-12-31 03:09:01
|
Just not cropped decode
|
|
2022-12-31 03:10:00
|
I think only jpeg 2000 libraries may have an api to do cropped decoding
|
|
2022-12-31 03:10:31
|
Libjpeg and libwebp don't have it afaik
|
|
|
DZgas Ж
|
|
_wb_
Same is true for avif, btw.
|
|
2022-12-31 03:18:48
|
it's hard for me to call it the block
codec to the extent that JXL or WEBB, it has such long vector functions that can take up half of the image
|
|
2022-12-31 03:20:22
|
in fact, at one time many years ago, I was amazed to learn that the WEBP of the video codec can be decoded block-by-line
|
|
|
_wb_
At least libjxl can already do progressive and incremental decode
|
|
2022-12-31 03:22:05
|
That is why I would be interested to know the answer to my question, because progressive decoding is now the only thing that will fix this situation. https://discord.com/channels/794206087879852103/848189884614705192/1058677406199726171
|
|
|
_wb_
|
2023-01-03 03:22:51
|
https://github.com/libjxl/libjxl/pull/2012 <@853026420792360980> <@461421345302118401> I think there is some confusion here. Using xyb or not should be unrelated to being able to get the icc profile or not...
|
|
|
Traneptora
|
|
_wb_
https://github.com/libjxl/libjxl/pull/2012 <@853026420792360980> <@461421345302118401> I think there is some confusion here. Using xyb or not should be unrelated to being able to get the icc profile or not...
|
|
2023-01-03 03:25:04
|
we had an earlier discussion that libjxl should be able to request pixels in a specific profile provided that it's a build that has a CMS
|
|
2023-01-03 03:25:10
|
I don't know where that ended up going though
|
|
2023-01-03 03:25:45
|
if so, then you could XYB-encode an image, and still request pixels in a space that the original profile describes
|
|
2023-01-03 03:26:01
|
but that ended up not happening
|
|
|
_wb_
|
2023-01-03 03:48:09
|
Ah, no, but you could get the pixels in some space (linear sRGB probably) and then get the original profile separately
|
|
|
Traneptora
|
2023-01-03 03:51:19
|
yea, the intent here is that disabling XYB would allow you to preserve weird spaces, at the cost of losing the XYB optimization
|
|
2023-01-03 03:51:50
|
but in the case where the profile describes something relatively mundane (e.g. Adobe RGB), then you could in theory convert from linear sRGB to that space with a CMS quite easily
|
|
2023-01-03 03:52:08
|
it would be nice if libjxl could call the CMS for you in this case since it's built-in (though not libjxl_dec)
|
|
|
_wb_
|
2023-01-03 03:55:30
|
I don't know if vardct without xyb does anything useful atm
|
|
|
Traneptora
|
2023-01-03 04:46:56
|
does lossy modular outperform vardct for nonxyb?
|
|