|
Me
|
2025-01-23 06:20:06
|
and complexity for what goes over the radio is a really big enemy to reliability/safety/mission success
|
|
|
AccessViolation_
|
2025-01-23 06:20:21
|
my only experience with creating a progressive *lossless* file was that it became much larger, but I don't know how it works for modular lossy
|
|
2025-01-23 06:20:34
|
And also that was a long time ago
|
|
|
Me
|
2025-01-23 06:20:50
|
does the API let me micromanage layers/compression strategy?
|
|
2025-01-23 06:21:33
|
because if i could do 1:64 with modular with squeeze and then 1:8 modular with squeeze and then varDCT, that sounds like what i want
|
|
2025-01-23 06:21:46
|
Ideally the 1:8 would benefit in some way from the bytes that came before as part of the 1:64, but that's optional
|
|
2025-01-23 06:24:00
|
it looks like it may.
|
|
|
jonnyawsom3
|
2025-01-23 06:45:18
|
I just had a simple idea... What if we used modular lossy instead? It should have all the progressiveness of DC 1 but for the entire image with different artifacts to VarDCT
|
|
2025-01-23 06:47:47
|
Something like `cjxl -d 1.5 -m 1 -j 0 -p -g 0 --group_order 1 -x strip=all bluemarb.jpg Test.jxl`
|
|
|
Traneptora
|
2025-01-23 07:02:49
|
Can we close https://github.com/libjxl/libjxl/issues/2193
|
|
2025-01-23 07:03:03
|
it was fixed by #2444 over a year ago
|
|
|
Making groups bigger did that, I imagine smaller might corrupt it too, but <@526322998521888768> could try adding `-g 0` and see what happens
|
|
2025-01-23 07:04:44
|
VarDCT has fixed group size, and the LF image uses the same group size as the frame
|
|
2025-01-23 07:04:58
|
you'd need to use an LF frame to have a different group size for it
|
|
|
veluca
maybe we should rename that flag, the amount of people that get confused by it is a bit high
|
|
2025-01-23 07:11:26
|
in FFmpeg I have the option exposed as `-disable_xyb`
|
|
2025-01-23 07:11:47
|
er, actually `-xyb` but it defaults to 1
|
|
2025-01-23 07:12:05
|
I'm planning on exposing more library options to the encoder wrapper, btw
|
|
2025-01-23 07:12:17
|
currently I have `-effort` `-distance` `-modular` and `-xyb` exposed
|
|
2025-01-23 07:12:39
|
which default to `7`, `1.0`, `0`, and `1` respectively
|
|
2025-01-23 07:12:48
|
modular just *forces* modular
|
|
2025-01-23 07:12:51
|
it still sets modular for lossless
|
|
|
Tirr
iirc `uses_original_profile` shouldn't be set to true when doing lossy
|
|
2025-01-23 07:18:59
|
It could be but it's usually not recommended. If you have a very strange ICC profile and you *need* the pxiel data in that space and lcms2 can't put it in that space that's your only option but otherwise I agree
|
|
|
jonnyawsom3
|
|
Traneptora
Can we close https://github.com/libjxl/libjxl/issues/2193
|
|
2025-01-23 08:35:08
|
Just got home, but done. And my first issue closed with my recently gained permissions
|
|
|
Me
|
2025-01-23 10:19:44
|
<@853026420792360980> Hey-- all very helpful. I don't have a great understanding of JXL. Do you know if I have a modular on top of another modular subsampled at a different resolution, if encoding the second modular derives any benefit from the prior data?
|
|
2025-01-23 10:20:16
|
that is, if i have a /64 subsampled and then a /16 subsampled, does the /16 end up smaller than just a /16 on its own would be
|
|
2025-01-23 10:20:38
|
Just trying to figure out the search space of things to try
|
|
|
Traneptora
|
|
Me
<@853026420792360980> Hey-- all very helpful. I don't have a great understanding of JXL. Do you know if I have a modular on top of another modular subsampled at a different resolution, if encoding the second modular derives any benefit from the prior data?
|
|
2025-01-23 10:21:40
|
are you doing lossy or lossless? if lossy your best bet is to stick to VarDCT
|
|
2025-01-23 10:23:16
|
if doing lossless, this won't save much as most of the entropy is in the lower-order bits
|
|
2025-01-23 10:24:03
|
if you have an approximation image, and then you take the difference between the original and the approximation and attempt to encode that difference losslessly, my experience has been that it's generally going to give you the same file size as if you had just encoded the original losslessly without the bells and whistles
|
|
2025-01-23 10:24:11
|
or not literally identical but very close
|
|
2025-01-23 10:24:49
|
the reason you might want to do that is to make things progressive, but if that's the case, there's a `--progressive` encode option, which enables the Squeeze Transform
|
|
2025-01-23 10:26:17
|
Squeeze is a wavelet-like transform (using haar wavelets) that splits one channel into two channels that are each half the width of the other one. the first channel containing effectively a downsampled version of the image, and the second channel containing the residuals that can be used to construct it
|
|
2025-01-23 10:26:37
|
I say width but it can be done horizontally or vertically
|
|
|
Me
|
2025-01-23 10:26:46
|
I'm doing lossy. I really want to get an image file that the first 1 or 2K does something useful, the next 8K makes it somewhat better, and so on
|
|
|
Traneptora
|
2025-01-23 10:27:07
|
Ideally that's how VarDCT works, but if you want it to be hyper progressive your best bet is probably to use a preview frame
|
|
|
Me
|
2025-01-23 10:27:18
|
I've been playing with -progressive-dc=2 which does really well on the first thing (first 1 or 2k does something useful, with that modular image)... but the follow on VarDCT makes the image much worse for tens of kilobyes before it gets better
|
|
|
Traneptora
|
2025-01-23 10:27:32
|
What distance setting are you using?
|
|
2025-01-23 10:27:43
|
Progressive DC is sort of what you want
|
|
|
Me
|
2025-01-23 10:27:50
|
https://discord.com/channels/794206087879852103/804324493420920833/1331734464522616912
|
|
2025-01-23 10:29:15
|
I have a couple of settings above. --progressive-dc=2 starts off better until about 6-7k in. Then when we're at 40k of dc=1, it's WAY better than 80k of dc=2, despite the additional frame at the beginning of DC=2 only being 5 kilobytes
|
|
2025-01-23 10:29:53
|
the application is for downlink image data from a student designed satellite. we'll get 72 kilobytes of data per pass over our school at best, and a lot of the pictures we'll take will be garbage
|
|
|
Traneptora
|
2025-01-23 10:30:27
|
what happens if you use lossy modular? how does that end up working?
|
|
|
Me
|
2025-01-23 10:30:30
|
so being able to send the first 4k of everytihng, then more incrementally, has a lot of value (instead of having to have special purpose resizing)
|
|
|
Traneptora
|
2025-01-23 10:30:32
|
you won't get as good ratios
|
|
2025-01-23 10:30:36
|
but you'll get it to be squeezed
|
|
2025-01-23 10:31:34
|
can you post or link bluemarb.jpg just so I can work with the same image you are?
|
|
|
Me
|
2025-01-23 10:36:20
|
https://lyle.org/~mlyle/bluemarb.jpg
|
|
2025-01-23 10:36:39
|
Yes, thank you --- So I tried -m1
|
|
2025-01-23 10:36:51
|
what I noticed was, I got a very usable first readout, but the image didn't improve between having 1k and having 64k of it
|
|
2025-01-23 10:37:40
|
I'm doing like
```
cjxl -v -v -q 85 -m 1 --lossless_jpeg=0 --container=1 --progressive --progressive_dc=2 --group_order=1 -x strip=exif,xmp,jumbf bluemarb.jpg trial.jxl
dd if=trial.jxl bs=1024 count=64 | ~/jxl-oxide -o t64k.png -
```
|
|
2025-01-23 10:38:56
|
bluemarb.jpg is ... a way better image than we expect for many reasons, but the resolution, contrast, subject matter, is similar
|
|
2025-01-23 10:47:08
|
Also doing things like this to assess
```
for ((i=1; i<=760; i=i+8)); do
j=`printf "%05d\n" $i`
dd if=trial.jxl of=test.jxl bs=1024 count="$i" && ~/jxl-oxide test.jxl -o "out/$j.png"
done
```
|
|
|
jonnyawsom3
|
|
Me
what I noticed was, I got a very usable first readout, but the image didn't improve between having 1k and having 64k of it
|
|
2025-01-23 10:54:56
|
Interesting, this is 4K and 8K for me `cjxl -v -v -q 85 -m 1 -j 0 -p --group_order=1 -x strip=all bluemarb.jpg trial.jxl`
|
|
2025-01-23 10:55:17
|
`--progressive_dc` doesn't do anything for lossy modular
|
|
|
CrushedAsian255
|
2025-01-23 11:02:57
|
Use JXL-oxide —with-offsets -I to check the order of the groups
|
|
|
jonnyawsom3
|
2025-01-23 11:06:19
|
We're not even reaching groups, this is LfGlobal
|
|
|
CrushedAsian255
|
2025-01-23 11:07:03
|
Oh, that small?
|
|
|
Me
|
2025-01-23 11:18:29
|
8k there is pretty nice. It just bums me that progressive_dc=2 is better for really small cuts
|
|
2025-01-23 11:18:41
|
That's 2k
|
|
2025-01-23 11:21:13
|
I am going to play with getting a really downsampled modular in and then proceeding to a similar sequence to progressive_dc=1 afterwards through the API
|
|
2025-01-23 11:21:21
|
This here is 768 bytes
|
|
|
jonnyawsom3
|
2025-01-23 11:47:41
|
I suppose another thing to consider is, does getting tiny previews matter if you can't tell what's in them?
|
|
|
Me
|
2025-01-24 02:22:58
|
there's not too much around. There's whether the satellite in the frame is illuminated, and whether a planet is taking up a lot of the frame 😉
|
|
2025-01-24 02:23:10
|
Our pointing may not be too great, so we may have to rely upon luck to get the planet in frame
|
|
|
Traneptora
|
|
Me
what I noticed was, I got a very usable first readout, but the image didn't improve between having 1k and having 64k of it
|
|
2025-01-24 02:33:15
|
what happens if you decode it with jxl oxide
|
|
|
jonnyawsom3
|
2025-01-24 02:33:52
|
That is with oxide, djxl doesn't output anything due to LQIP decoding being disabled
|
|
|
Traneptora
|
2025-01-24 02:34:02
|
ah okay
|
|
|
AccessViolation_
|
2025-01-24 05:06:23
|
should cjxl prevent you from overwriting the file it's using as input unless explicitly allowed with a flag? I can see the virtue of not needing to provide an `--overwrite` flag if you just want to change some encoder settings and then output a file of the same name again, but it's fairly easy to accidentally type `cjxl image.png image.png` and forget to change the extension, replacing the original
|
|
2025-01-24 05:11:42
|
Especially if happens to be your only copy and the encoding is lossy, that might be a bad mistake
|
|
|
Demiurge
|
2025-01-24 05:23:46
|
Yeah most tools will not overwrite an existing output file
|
|
2025-01-24 05:24:11
|
You need -f usually
|
|
2025-01-24 05:24:29
|
Might be nice
|
|
2025-01-24 05:24:52
|
But I have tons of complaints with how cjxl/djxl tools work
|
|
2025-01-24 05:26:10
|
Very janky and quirky and unique and unconventional in many ways
|
|
2025-01-24 05:26:33
|
Not following normal conventions and standards for command line utilities
|
|
|
AccessViolation_
|
2025-01-24 05:26:57
|
Even if we keep the idea to overwrite output files by default, I don't think it should overwrite the *input* files by default
|
|
|
Demiurge
|
2025-01-24 05:27:01
|
cjpegli is super duper buggy too
|
|
|
AccessViolation_
Even if we keep the idea to overwrite output files by default, I don't think it should overwrite the *input* files by default
|
|
2025-01-24 05:27:51
|
Yeah that's a whole new level of weird
|
|
2025-01-24 05:28:38
|
Almost any other program will complain if you try that and require very different command syntax to overwrite input file
|
|
2025-01-24 05:29:23
|
jpegtran will do it
|
|
|
Me
|
2025-01-24 06:53:41
|
i've never seen a help command take -v before 😉
|
|
|
Demiurge
|
2025-01-24 07:02:09
|
That is another cherry on top to add to how ridiculous and weird the tools are
|
|
|
jonnyawsom3
|
|
Me
i've never seen a help command take -v before 😉
|
|
2025-01-24 07:06:33
|
Just wait until you try `cjxl -h -v -v -v -v -v -v`
|
|
|
spider-mario
|
2025-01-24 07:43:08
|
for a long time, gcc would happily overwrite the input if you wrote `gcc foo.c -o foo.c`
|
|
2025-01-24 07:43:13
|
but it seems they’ve finally changed it
|
|
2025-01-24 07:43:29
|
```console
gcc.exe: fatal error: input file 'foo.c' is the same as output file
compilation terminated.
```
|
|
2025-01-24 07:43:47
|
oops, clang still does it
|
|
|
Me
|
2025-01-24 07:43:59
|
I have bad memories of having done that
|
|
|
spider-mario
|
2025-01-24 07:44:05
|
```console
$ file foo.c
foo.c: PE32+ executable for MS Windows 5.02 (console), x86-64, 19 sections
```
|
|
|
Me
|
2025-01-24 07:44:28
|
Early on in my computing journey, I wrote an disk duplicator program in assembly, and on my third test overwrote the source
|
|
2025-01-24 07:44:46
|
Which is another fun way to fail
|
|
|
spider-mario
|
2025-01-24 07:46:28
|
I once wrote a find/replace program in Delphi, but because of the design of Delphi’s folder selection dialog, I accidentally picked the directory one level above the test directory I had prepared, which was my desktop with most of my files in it
|
|
2025-01-24 07:46:41
|
and my program was still buggy and would only write the first line of each file
|
|
|
jonnyawsom3
|
2025-01-24 07:50:45
|
I remember I forgot to add a dash in a batch script I wrote, so it opened around 1500+ instances of the Microsoft Photos app, and I had Task Manager set to not be on top because of earlier stuff... Took around 10 minutes of clicking to close them all
|
|
|
AccessViolation_
|
2025-01-24 09:20:21
|
You all were playing with fire, I barely trust myself with the `rm` command
|
|
|
spider-mario
|
2025-01-24 09:28:48
|
I thought I was safe with my test directory
|
|
2025-01-24 09:28:56
|
turns out, you really need to double-click it, not just click it
|
|
2025-01-24 09:29:14
|
otherwise the selection remains on the previous directory
|
|
2025-01-24 09:30:35
|
(with the folder selection box from either Delphi 7 or Delphi 2006, don’t remember for sure)
|
|
|
AccessViolation_
|
2025-01-24 09:36:00
|
I should add a check to my programs so they can't do IO outside of their working directory
|
|
|
spider-mario
|
2025-01-24 09:38:30
|
2007 was another era, for sure
|
|
2025-01-24 09:39:34
|
(can’t find the find/replace program or its code – it might have been lost to the incident)
|
|
2025-01-24 09:39:52
|
(maybe that’s for the best)
|
|
2025-01-24 09:41:21
|
oh, never mind, I found a binary
|
|
2025-01-24 09:44:33
|
yup, exactly as I remember it: a single click doesn’t change the selection, only a double click does
|
|
2025-01-24 09:44:56
|
also, by clicking “OK”, I ran the buggy program on that folder and thereby destroyed the files in it
|
|
|
Demiurge
|
|
AccessViolation_
I should add a check to my programs so they can't do IO outside of their working directory
|
|
2025-01-24 09:56:04
|
It's called unveil
|
|
|
monad
|
|
Me
i've never seen a help command take -v before 😉
|
|
2025-01-24 11:33:32
|
Short help and long help come up elsewhere, but the c/djxl granularity is certainly next-level.
|
|
|
AccessViolation_
You all were playing with fire, I barely trust myself with the `rm` command
|
|
2025-01-24 11:34:55
|
I deleted /usr/bin once because of a rogue space
|
|
|
Demiurge
|
|
monad
Short help and long help come up elsewhere, but the c/djxl granularity is certainly next-level.
|
|
2025-01-25 12:03:23
|
I don't like this excessive level of granularity at all
|
|
|
_wb_
|
2025-01-25 08:00:45
|
Maybe it would be better to do it the ffmpeg or git way, with help screens per topic. The full list of every cjxl option is inconveniently long. The goal of multiple levels was to put the most needed options in easier reach, but I don't think it's very convenient either.
|
|
|
A homosapien
|
2025-01-25 08:16:31
|
So it would kinda be like `cjxl vardct --help` or `cjxl -h modular`
|
|
|
Tirr
|
2025-01-25 08:19:54
|
`cjxl -h modular` would be ffmpeg style
|
|
|
Demiurge
|
2025-01-25 09:28:20
|
I don't like that either
|
|
2025-01-25 09:28:39
|
Just have a short help and long help
|
|
2025-01-25 09:29:14
|
Anything else is just excessive. cjxl is not so complex that it needs more than that.
|
|
2025-01-25 09:30:14
|
The long help can have options grouped into the 4 existing categories
|
|
2025-01-25 09:30:26
|
The short help can be a very basic summary
|
|
2025-01-25 09:30:54
|
It would be nice if there was a single-letter form of each option
|
|
2025-01-25 09:31:31
|
The argument parser is not smart enough to recognize multiple flags in 1 argument like most standard utilities
|
|
2025-01-25 09:32:47
|
Isn't there a good conventional posix-style argument parser helper library to assist with this?
|
|
2025-01-25 09:34:59
|
getopt is the standard, there are freely licensed portable versions available
|
|
2025-01-25 09:35:23
|
And if you prefer something more sophisticated than getopt I'm sure it exists
|
|
2025-01-25 09:35:51
|
There's no reason for it to be so quirky and weird like it is currently
|
|
2025-01-25 09:37:19
|
But the biggest issue with cjxl and co is... the code and extra dependencies need to be separate from the rest of the library, so people who don't need cjxl/djxl and only need the library don't need to pull in all these extra dependencies and code
|
|
2025-01-25 09:38:58
|
Also cjpegli always falsely says d1.0 no matter what you set the quality to. And --xyb still isn't 444
|
|
2025-01-25 09:41:00
|
The tool code is much messier and dependency heavy compared to the library code and really needs to be more separate...
|
|
|
RaveSteel
|
2025-01-25 11:37:18
|
Is it intentional that noise synthesis does not work at e1 lossless? I haven't tested at which point it actually kicks in
|
|
|
CrushedAsian255
|
2025-01-25 11:48:56
|
does noise synthesis ever work with lossless?
|
|
|
RaveSteel
|
2025-01-26 12:00:46
|
It worked at e7
|
|
|
CrushedAsian255
|
2025-01-26 12:45:02
|
Wouldn’t it make it no longer lossless?
|
|
2025-01-26 12:45:17
|
Or do you mean specifying adding extra noise on top of the lossless image?
|
|
|
RaveSteel
|
2025-01-26 12:47:26
|
Well, it would be lossless if the noise were to be added as a layer upon encoding, which sadly doesn't happen.
I wanted to see if it did, but found that noise would not be added if encoding with -d 0 and -e 1
|
|
|
AccessViolation_
|
2025-01-26 01:01:38
|
Afaik the point of noise synthesis is that the noise isn't stored in the image itself but synthesized by the decoder. So there is no reason why the original data couldn't be lossless, the pixel data doesn't change
|
|
2025-01-26 01:01:58
|
As in it's still there in the image, it does change in the final rendering
|
|
|
RaveSteel
|
2025-01-26 01:02:11
|
Except there is currently no way to remove the noise, as far as I know
|
|
|
AccessViolation_
|
2025-01-26 01:03:24
|
If you manually altered the JXL to make it so it no longer specify that it should do noise synthesis you could probably get the original image data back
|
|
|
RaveSteel
Except there is currently no way to remove the noise, as far as I know
|
|
2025-01-26 01:04:04
|
Ah right, yeah
|
|
|
RaveSteel
|
2025-01-26 01:04:29
|
Optimally, the noise would be put into its own layer, if that is viable
|
|
2025-01-26 01:04:53
|
I tested exporting an image with 4 layers in Krita, the noise gets applied to all layers
|
|
|
AccessViolation_
|
2025-01-26 01:05:09
|
Ahh you can't specify the layer the noise is applied to? That's kind of a shame
|
|
|
RaveSteel
|
2025-01-26 01:05:22
|
Maybe it is possible, but not implemented? I have no idea
|
|
|
AccessViolation_
|
2025-01-26 01:06:04
|
If it's a thing you could probably even use another layer as a mask for it to selectively apply it or in even in different amounts
|
|
2025-01-26 01:07:06
|
as in multiply the noise layer with the mask layer, and then add that layer to your image
|
|
2025-01-26 01:07:50
|
I think I brought this up before actually, and I seem to remember one of the devs saying it wasn't possible
|
|
|
RaveSteel
|
2025-01-26 01:10:04
|
Hm, that's unfortunate
|
|
2025-01-26 01:11:04
|
Specifying a layer the noise is applied to would be fine, while generating the noise in a new layer seems to be the best option
|
|
2025-01-26 01:11:15
|
Even better if the noise can be removed seamlessly
|
|
|
AccessViolation_
|
|
AccessViolation_
I think I brought this up before actually, and I seem to remember one of the devs saying it wasn't possible
|
|
2025-01-26 01:12:06
|
https://discord.com/channels/794206087879852103/803645746661425173/864474180657741842
nvm I guess
|
|
2025-01-26 01:14:16
|
I do actually still think I was told noise masking wasn't possible? But I don't remember which specific question I asked
|
|
2025-01-26 01:16:28
|
Ahh found it
|
|
2025-01-26 01:16:30
|
https://discord.com/channels/794206087879852103/794206170445119489/1291097159889846334
|
|
|
RaveSteel
|
2025-01-26 01:18:33
|
Hm, alright. I assume it's not really simple to implement?
|
|
2025-01-26 01:21:53
|
I wouldn't know, I am not a programmer
|
|
|
AccessViolation_
|
2025-01-26 01:25:52
|
I assume the way it's implemented (the noise level being local-image-brightness modulated and all) reflects now cameras work, so I think an encoder would have to do relatively little to make the noise match the image noise. Something that's probably much harder for the encoder is denoising the source image (which removes a lot of high-frequency data making it compress better) since if you don't do that right you end up removing the wrong details or smoothing out surfaces that have slight textures, mistaking that for noise.
Manually selectively applying noise is probably relatively easy. You just create your mask that defines where you want your noise to be and tell the encoder to do the rest, following the steps in Jon's message. I assume libjxl's API is expressive enough to tell it to do this but I've never looked at it so I wouldn't know
|
|
|
jonnyawsom3
|
|
RaveSteel
Is it intentional that noise synthesis does not work at e1 lossless? I haven't tested at which point it actually kicks in
|
|
2025-01-26 09:35:45
|
I've brought up 'lossless noise' a few times in the past, letting you get the original back with a decoder flag from those pesky artists always adding it to everything. Unfortunately, it's only in XYB space https://discord.com/channels/794206087879852103/803574970180829194/1303410607965606060
|
|
|
RaveSteel
|
2025-01-26 12:28:11
|
Follow up question I forgot to ask yesterday: Is it intentional that cjxl flattens layers together?
|
|
|
I've brought up 'lossless noise' a few times in the past, letting you get the original back with a decoder flag from those pesky artists always adding it to everything. Unfortunately, it's only in XYB space https://discord.com/channels/794206087879852103/803574970180829194/1303410607965606060
|
|
2025-01-26 12:29:43
|
In the near future using noise filters in whatever software artists are using will keep being mandatory if noise is to be included in the final result. Sad, but we'll see if this changes at some point
|
|
2025-01-26 12:30:02
|
Maybe we'll also have more control over noise in libjxl by then
|
|
|
_wb_
|
2025-01-26 12:41:43
|
I guess we do need an option for djxl to disable coalescing and return individual layers.
|
|
|
RaveSteel
|
2025-01-26 12:44:35
|
In my case, I was reencoding a Krita exported JXL with layers losslessly, but the layers were mashed together after the encode, as displayed by jxlinfo
|
|
2025-01-26 12:44:54
|
So it is pretty much a lossy operation
|
|
|
_wb_
|
2025-01-26 02:59:15
|
oh, the jxl to jxl is applying coalescing? that's no good, at least not as a default
|
|
|
RaveSteel
|
2025-01-26 03:06:19
|
I was looking if I had missed an option to disable coalescing layers, but there is none
|
|
2025-01-26 03:08:24
|
`gradient_test_crt_layers_e9.jxl` has layers, as seen here
```
JPEG XL file format container (ISO/IEC 18181-2)
JPEG XL image, 1920x1200, (possibly) lossless, 16-bit RGB+Alpha
Color space: 9080-byte ICC profile, CMM type: "lcms", color space: "RGB ", rendering intent: 0
layer: full image size, name: "Background"
layer: full image size, name: "Malebene 1 (eingefügt)"
```
Reencoding the image then shows
```
JPEG XL file format container (ISO/IEC 18181-2)
JPEG XL image, 1920x1200, (possibly) lossless, 16-bit RGB+Alpha
Color space: 9080-byte ICC profile, CMM type: "lcms", color space: "RGB ", rendering intent: 0
```
The layers have been flattened together
|
|
2025-01-26 03:10:20
|
Should I open an Issue?
|
|
|
_wb_
|
2025-01-26 06:35:36
|
Yes please. We need a djxl option to decode without coalescing, and a cjxl option to take jxl input without coalescing (which should probably be the default).
|
|
|
AccessViolation_
|
|
RaveSteel
`gradient_test_crt_layers_e9.jxl` has layers, as seen here
```
JPEG XL file format container (ISO/IEC 18181-2)
JPEG XL image, 1920x1200, (possibly) lossless, 16-bit RGB+Alpha
Color space: 9080-byte ICC profile, CMM type: "lcms", color space: "RGB ", rendering intent: 0
layer: full image size, name: "Background"
layer: full image size, name: "Malebene 1 (eingefügt)"
```
Reencoding the image then shows
```
JPEG XL file format container (ISO/IEC 18181-2)
JPEG XL image, 1920x1200, (possibly) lossless, 16-bit RGB+Alpha
Color space: 9080-byte ICC profile, CMM type: "lcms", color space: "RGB ", rendering intent: 0
```
The layers have been flattened together
|
|
2025-01-26 07:47:03
|
Ohh I was so confused about this increasing the file size significantly after increasing the effort for one of my "subtract out the repeating pattern" tests
|
|
|
Laserhosen
|
|
Demiurge
getopt is the standard, there are freely licensed portable versions available
|
|
2025-01-26 07:56:26
|
Since discovering https://github.com/skeeto/optparse I've never considered using anything else for C/C++. Maybe that could replace the tools' home-made option parsing?
|
|
2025-01-26 07:56:40
|
Google might be funny about public domain code though...🤔
|
|
|
Demiurge
|
2025-01-26 09:18:07
|
I would strongly advise to stick with getopt just because it's common and standardized and less likely to have... unforeseen consequences.
|
|
2025-01-26 09:24:34
|
It's possible that another library is nice but getopt is pretty well known and understood
|
|
2025-01-26 09:30:39
|
If getopt is too simple and limiting then your command line tool is too complex...
|
|
|
_wb_
|
2025-01-26 10:51:56
|
Feel free to make a pull request to switch the tools to getopt.
|
|
|
Laserhosen
|
2025-01-26 11:30:51
|
I might try that. Being an include-only library I don't think it gets much simpler than optparse while still supporting long options. Is there a better implementation we should be using?
|
|
2025-01-26 11:33:43
|
That's portable and non-GPL?
|
|
|
CrushedAsian255
|
2025-01-26 11:33:55
|
is it MIT/BSD?
|
|
|
Laserhosen
|
2025-01-26 11:34:06
|
optparse is public domain
|
|
2025-01-27 07:19:04
|
<@794205442175402004>, before I spend any time on it, can you confirm whether code released under the Unlicence is OK to integrate into libjxl? https://github.com/skeeto/optparse?tab=Unlicense-1-ov-file#readme
|
|
|
_wb_
|
2025-01-27 07:31:12
|
Uh, I guess so. I guess you'll make a derived work that you license under the libjxl license (BSD), or rather according to the CLA.
|
|
|
Quackdoc
|
2025-01-27 10:15:35
|
unlicense has historically been problematic for inclusion on many things and is widely considered incompatible with gpl
|
|
2025-01-27 10:16:51
|
if libjxl wants to remain (l)GPL compatible, the answer will be no, author will need to add an MIT/BSD etc licence
|
|
|
Demiurge
|
2025-01-27 11:27:38
|
The best license is the MGPL
https://zapatopi.net/mindguard/mgpl.html
|
|
|
Quackdoc
if libjxl wants to remain (l)GPL compatible, the answer will be no, author will need to add an MIT/BSD etc licence
|
|
2025-01-27 11:39:59
|
Huh?? Unlicense is a Public Domain dedication that permanently waives all copyprivilege
|
|
2025-01-27 11:40:43
|
It's compatible with literally any other license
|
|
|
Quackdoc
|
|
Demiurge
Huh?? Unlicense is a Public Domain dedication that permanently waives all copyprivilege
|
|
2025-01-27 11:41:05
|
unlicence is public domain which not all countries recognize
|
|
2025-01-27 11:41:29
|
this has caused headaches for me before when doing contract work, the OSI won't even touch public domain software now
|
|
2025-01-27 11:41:42
|
or rather, exclusively public domain software
|
|
|
Demiurge
|
2025-01-27 11:41:45
|
It doesn't prevent you from relicensing it under some other dumb license
|
|
2025-01-27 11:43:39
|
And if you live in a country that doesn't recognize public domain, then why would your country recognize the non existent and voluntarily-waived legal privileges of someone who isn't even a citizen of your country?
|
|
|
Quackdoc
|
2025-01-27 11:43:42
|
it becomes spotty territory because such software is considered "not licenced" in which case, the end user can't do so
|
|
|
Demiurge
And if you live in a country that doesn't recognize public domain, then why would your country recognize the non existent and voluntarily-waived legal privileges of someone who isn't even a citizen of your country?
|
|
2025-01-27 11:44:35
|
don't ask me, but the crux of the matter is, corporations will reject it because it's effectively nuclear. you can't re-licence yourself unless you get permission to
|
|
|
Demiurge
|
2025-01-27 11:44:45
|
And who doesn't have those privileges in their home country, where they legally waived them all
|
|
|
Quackdoc
|
2025-01-27 11:45:34
|
https://web.archive.org/web/20150607123451/http://projects.opensource.org/pipermail/license-review/2012-January/000047.html
|
|
2025-01-27 11:46:02
|
it has caused legal issues in the past, and will likely do so in the future, therefor it gets avoided and is not considered gpl compatible
|
|
2025-01-27 11:46:57
|
the context which more directly relates https://groups.google.com/g/unlicense/c/G6pzAFtgrx0/m/9TCxE-je2qMJ
|
|
|
Demiurge
|
2025-01-27 11:47:15
|
It's not nuclear and any corporation that thinks it is, is so stupid it doesn't deserve to exist. If I waive my legal privileges in my home country, and my own home country does not think I have them any more, then German companies should not be afraid of that
|
|
2025-01-27 11:47:28
|
Even if Germany doesn't recognize public domain
|
|
|
Quackdoc
|
|
Demiurge
It's not nuclear and any corporation that thinks it is, is so stupid it doesn't deserve to exist. If I waive my legal privileges in my home country, and my own home country does not think I have them any more, then German companies should not be afraid of that
|
|
2025-01-27 11:48:05
|
no, because fundamentally we live in a world of many countries, and anyone who thinks they know every countries laws regarding this is a fool. public domain software **has** caused issues in the past
|
|
2025-01-27 11:48:08
|
it's not a matter of if
|
|
2025-01-27 11:48:24
|
**The point is that such things have done serious harm to developers when
they've not behaved as expected in court.**
|
|
2025-01-27 11:48:33
|
is an exact quote
|
|
|
Demiurge
|
2025-01-27 11:49:41
|
If my own home country recognizes I legally waived all privileges and authority over something, then why would a foreign country that I'm not even a citizen of try to defend and protect my work
|
|
2025-01-27 11:50:16
|
What a ridiculous argument. Any corporation that thinks like this deserves to fail
|
|
2025-01-27 11:53:41
|
Google might have a policy against public domain software...
|
|
2025-01-27 11:54:24
|
Google does deserve to fail and die for a variety of reasons but unfortunately they are one of the stewards of the libjxl project...
|
|
2025-01-27 11:55:31
|
Can't someone just take a PD work and relicense it under an MIT license?
|
|
|
Laserhosen
I might try that. Being an include-only library I don't think it gets much simpler than optparse while still supporting long options. Is there a better implementation we should be using?
|
|
2025-01-28 12:02:19
|
If you're really thinking about this then I recommend you consider using getopt, since it's very similar to optparse, and it's the most common and most "battle-tested" method of command line option parsing.
|
|
2025-01-28 12:03:09
|
And it's pretty easy to find a standards compliant freely licensed getopt for every platform
|
|
2025-01-28 12:06:38
|
There's also getopt_long for long options...
|
|
2025-01-28 12:07:27
|
But personally I prefer single letter switches and parameters... less typing, more ergonomic.
|
|
2025-01-28 12:08:05
|
It would be nice if long options were not needed...
|
|
|
Quackdoc
|
2025-01-28 12:13:48
|
sure it might be stupid, but laws have never been about being sane or not
|
|
2025-01-28 12:14:29
|
whether it makes sense or not doesn't matter, what matter is if it is that way or not, and sadly, it is
|
|
|
Quackdoc
https://web.archive.org/web/20150607123451/http://projects.opensource.org/pipermail/license-review/2012-January/000047.html
|
|
2025-01-28 12:16:07
|
this in general is a good thread to read
|
|
|
Demiurge
|
2025-01-28 12:56:46
|
Not really, it's more just corporate idiocy
|
|
2025-01-28 12:57:41
|
Corporations and government constantly compete for who's the most harmfully stupid
|
|
2025-01-28 12:58:27
|
There is no justifiable reason for any corporation to worry about something so idiotic
|
|
2025-01-28 12:59:23
|
And use that as grounds for not accepting freely given work from a foreigner
|
|
|
Quackdoc
|
2025-01-28 12:59:52
|
>no justifiable reason
getting in legal trouble isn't a justifable reason?
|
|
|
Demiurge
|
2025-01-28 01:01:11
|
How could you get in legal trouble for using a work that was freely given by a foreigner who voluntarily waived all of their legal privileges over it in their own home country?
|
|
2025-01-28 01:01:50
|
It's a bizarre and deranged thing to worry about
|
|
|
Quackdoc
|
2025-01-28 01:01:56
|
again, **it has already happened**
|
|
2025-01-28 01:02:12
|
>
> The point is that such things have done serious harm to developers when
> they've not behaved as expected in court. Thus, naïvely propagating one
> could be considered to be in the category of irresponsible acts that can
> damage others. In general I suggest that such things be discussed as a
> list of goals rather than an actual license prototype constructed by a
> non-legal-professional.
>
> Thanks
>
> Bruce
|
|
|
Demiurge
|
2025-01-28 01:04:41
|
...How?
|
|
|
Quackdoc
|
2025-01-28 01:07:52
|
because law is a very complicated topic and happens not only on a per country basis, but also something that has issues on sub levels such as states in america or provinces in canada
|
|
2025-01-28 01:07:59
|
even rhel doesn't want to allow CC0 anymore
|
|
2025-01-28 01:08:21
|
https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/thread/RRYM3CLYJYW64VSQIXY6IF3TCDZGS6LM/
|
|
2025-01-28 01:08:48
|
ahh this one might specifically be a fedora one, hard to tell with them
|
|
2025-01-28 01:09:10
|
but yes, in general, public domain only projects are no bueno
|
|
|
Demiurge
|
2025-01-28 01:09:46
|
Are you claiming that in the past, someone released something under public domain waiver, and some German tried to use it, and the foreigner went to a German court and was awarded damages for infringing on a work they already waived their control of?
|
|
|
Quackdoc
|
2025-01-28 01:12:39
|
german? no. I don't know who, nor do I care who, bruce perens, has worked on a lot of legal stuff, from HP, source labs, etc. He is well versed in the many instantiates of the various laws. and has first hand knowledge of *someone* having the issue (the threads in question is now lost I believe)
|
|
2025-01-28 01:13:30
|
but thats the thing, *everyone* dives in head first, this is also an issue with ffmpeg's GPL builds. They are only gpl valid in *some* countries that don't practice patent law like I believe france?
|
|
2025-01-28 01:14:02
|
but many projects need to consider a great many countries when it comes to legality. which is why, public domain software is not considered GPL
|
|
|
Demiurge
|
2025-01-28 01:14:03
|
And the German court awarded damages for infringing on privileges that are not even recognized in the foreigner's home country? I'm using Germany as an example because that's the only country I have heard of that supposedly doesn't recognize "public domain"
|
|
2025-01-28 01:15:44
|
It seems like an absolutely deranged thing to be worried about or to use as justification for not accepting free and unencumbered work
|
|
|
Quackdoc
|
2025-01-28 01:17:32
|
in the end, it will cause friction, when the easy alternative is to simply use something with an actual licence like MIT or BSD
|
|
|
Demiurge
|
2025-01-28 01:20:13
|
Every country has their own copyright laws and certain trade agreements stipulate that member nations recognize and protect the copyrighted works from other member nations as part of the crooked trade agreement. But if a work is not copyrighted in its country of origin then there is no reason why a foreign country would recognize and protect the copyright of a foreign country that doesn't exist in that country.
|
|
2025-01-28 01:22:11
|
So if an American waives all their privileges with a PD waiver, there is no copyright. Their government doesn't recognize it and the German copyright law doesn't apply here or mean anything.
|
|
2025-01-28 01:22:42
|
And Germans should be able to use it too because it wasn't made in Germany.
|
|
2025-01-28 01:23:12
|
They would just have to relicense any of their German-made changes under a German-compatible license
|
|
|
Quackdoc
|
2025-01-28 01:23:36
|
I mean, you can say whatever you want, it won't change anything, public domain software has given companies issues in the past, and because of this, lots of people will avoid it, this can, and will cause issues with libjxl adoption if it becomes part of libjxl in a way that is not easy to disable
|
|
2025-01-28 01:24:09
|
I don't agree with this, but it's the shitty thing we have to deal with
|
|
|
Demiurge
|
|
Quackdoc
I mean, you can say whatever you want, it won't change anything, public domain software has given companies issues in the past, and because of this, lots of people will avoid it, this can, and will cause issues with libjxl adoption if it becomes part of libjxl in a way that is not easy to disable
|
|
2025-01-28 01:25:04
|
Well, first of all, the cjxl/djxl tools really ought to be carved out into a separate build system and source tree
|
|
|
Quackdoc
|
2025-01-28 01:26:25
|
I agree, that would solve that issue really quickly
|
|
|
Demiurge
|
2025-01-28 01:26:25
|
The libjxl code does not need to be mixed up with the dependency-ridden cjxl/djxl utilities
|
|
|
spider-mario
|
|
Demiurge
And if you live in a country that doesn't recognize public domain, then why would your country recognize the non existent and voluntarily-waived legal privileges of someone who isn't even a citizen of your country?
|
|
2025-01-28 08:07:25
|
I imagine that https://en.wikipedia.org/wiki/Berne_Convention probably has something to do with it
|
|
2025-01-28 08:08:19
|
> Foreign authors are given the same rights and privileges to copyrighted material as domestic authors in any country that ratified the convention.
|
|
|
Demiurge
Every country has their own copyright laws and certain trade agreements stipulate that member nations recognize and protect the copyrighted works from other member nations as part of the crooked trade agreement. But if a work is not copyrighted in its country of origin then there is no reason why a foreign country would recognize and protect the copyright of a foreign country that doesn't exist in that country.
|
|
2025-01-28 08:12:49
|
if the phrasing is that authoring the work anywhere gives you copyright in each ratifying country then it doesn't necessarily follow that renouncing it in one country applies to all
|
|
2025-01-28 08:15:39
|
anyway, CC0 is probably safer
https://creativecommons.org/publicdomain/zero/1.0/legalcode.en
|
|
|
Quackdoc
|
|
spider-mario
anyway, CC0 is probably safer
https://creativecommons.org/publicdomain/zero/1.0/legalcode.en
|
|
2025-01-28 08:24:45
|
fedora doesn't allow cc0 for code any more, just "content" (pictures and stuff) https://docs.fedoraproject.org/en-US/legal/allowed-licenses/ so legally, maybe safer? but adoption wise, for sure worse
|
|
|
AccessViolation_
|
2025-01-28 10:17:30
|
I had an idea to simplify patch detection for things like emulator screenshots and tiled pixel art. How hard would it be to implement something like a `--patch_grid_tile_size` that takes a height,width (or just a size for a power-of-two square if that's easier), and a `--patch_grid_offset`, which tells the encoder to do patch detection just on the whole tiles in the grid?
|
|
|
lonjil
|
|
Quackdoc
https://lists.fedoraproject.org/archives/list/legal@lists.fedoraproject.org/thread/RRYM3CLYJYW64VSQIXY6IF3TCDZGS6LM/
|
|
2025-01-28 12:27:54
|
So they don't allow PD because that's not a thing in most countries, but right here in this thread we see RHEL assuming that US law applies everywhere: they assume that any license without any explicit statements about parents, implicitly has a patent grant. This is true in the US (there's a court case setting precedent). But AFAIK it's not true anywhere else. They say that any license that doesn't grant patents isn't a FOSS license, but that would mean that e.g. the MIT license isn't a FOSS license as soon as you leave the US.
|
|
|
Demiurge
|
2025-01-28 12:52:02
|
Red Hat is known for being a dumb corporate entity run by lawyers
|
|
2025-01-28 12:52:27
|
Most copyright licenses are patent agnostic
|
|
2025-01-28 12:52:48
|
A patent license can always be granted in a separate document if required
|
|
|
Quackdoc
|
|
lonjil
So they don't allow PD because that's not a thing in most countries, but right here in this thread we see RHEL assuming that US law applies everywhere: they assume that any license without any explicit statements about parents, implicitly has a patent grant. This is true in the US (there's a court case setting precedent). But AFAIK it's not true anywhere else. They say that any license that doesn't grant patents isn't a FOSS license, but that would mean that e.g. the MIT license isn't a FOSS license as soon as you leave the US.
|
|
2025-01-28 12:52:54
|
I disagree with this, MIT and BSD etc implicitly grant a patent licence, as if they didn't it would just be an outright lie
|
|
|
Demiurge
|
2025-01-28 12:53:01
|
Usually in a file called `PATENTS`
|
|
|
Quackdoc
|
2025-01-28 12:53:52
|
dealing with software without restrictions strongly implies the right to use/distribute etc the technology in said software
|
|
|
lonjil
|
|
Quackdoc
I disagree with this, MIT and BSD etc implicitly grant a patent licence, as if they didn't it would just be an outright lie
|
|
2025-01-28 12:54:27
|
That has only been tested under US law. Copyright licenses can't do all sorts of non-copyright stuff, and shouldn't be assumed to unless proven otherwise.
|
|
|
Quackdoc
|
2025-01-28 12:54:37
|
I would argue that if you do not have a right to grant patent usage, using the MIT/BSD licence is just fraudulent
|
|
|
Demiurge
|
2025-01-28 12:54:40
|
Doesn't matter if you agree or not. All that matters is what your idiotic lawyer overlords say
|
|
|
Quackdoc
|
2025-01-28 12:55:03
|
thankfully, organizations that do deal with international law like the OSI largely find these safe
|
|
|
Demiurge
|
2025-01-28 12:55:15
|
We have given lawyers license to run the whole world
|
|
|
lonjil
|
2025-01-28 12:55:22
|
"strongly implies" is not good enough! A public domain grant also strongly implies that anyone should be allowed to do anything even if the actual concept doesn't exist in law, but it wasn't good enough.
|
|
|
Demiurge
|
2025-01-28 12:55:22
|
Because it makes us feel safe
|
|
|
Quackdoc
|
2025-01-28 12:55:27
|
obviously they can't deal with every single country, but they do deal with a large amount of them
|
|
|
lonjil
"strongly implies" is not good enough! A public domain grant also strongly implies that anyone should be allowed to do anything even if the actual concept doesn't exist in law, but it wasn't good enough.
|
|
2025-01-28 12:55:34
|
thats not true though
|
|
2025-01-28 12:55:44
|
public domain grant implies public domain.
|
|
2025-01-28 12:56:41
|
MIT/BSD explicitly state "you can use/distribute the software without restrictions" public domain licences explicitly state "this software is public domain"
|
|
|
lonjil
|
2025-01-28 12:56:56
|
It's pretty obvious what someone means when they do it.
|
|
|
Quackdoc
|
2025-01-28 12:57:09
|
it doesn't matter because what is explicitly said
|
|
|
Demiurge
|
2025-01-28 12:57:09
|
We have to do whatever the lawyers say because apparently that's the rules now. Safety above freedom and common sense, that's everyone's implicit priorities.
|
|
|
lonjil
|
2025-01-28 12:57:18
|
And again, copyright licenses literally cannot do anything about patents!
|
|
|
Quackdoc
|
2025-01-28 12:57:39
|
when you explicitly say "you can use/distribute the software without restrictions" that means "you can use/distribute the software without restrictions" if you need an additional patent licence, then the statement is simply untrue
|
|
|
lonjil
|
2025-01-28 12:58:01
|
They have to be general contracts to be able to deal with non-copyright stuff.
|
|
|
Demiurge
|
2025-01-28 12:58:56
|
You're trying to use logic and common sense in a world where lawyers keep us safe
|
|
|
lonjil
|
2025-01-28 12:59:06
|
Though of course lately the American free software community has been more open to the idea that software licenses should be considered contracts. For a long time they always argued that they aren't contracts.
|
|
|
Quackdoc
|
|
lonjil
And again, copyright licenses literally cannot do anything about patents!
|
|
2025-01-28 12:59:46
|
well, thankfully, almost every single major entity that deals with copyright and patent law in the foss world disagrees with this sentiment
|
|
|
lonjil
|
2025-01-28 12:59:56
|
Wrong
|
|
2025-01-28 01:00:18
|
I've only ever seen them cite that one America court case
|
|
2025-01-28 01:00:33
|
I've never seen evidence presented about law in other countries.
|
|
|
Quackdoc
|
2025-01-28 01:00:34
|
ok and?
|
|
|
lonjil
I've never seen evidence presented about law in other countries.
|
|
2025-01-28 01:00:41
|
that doesn't matter
|
|
|
lonjil
|
2025-01-28 01:00:58
|
You're saying we don't need evidence regarding the law in other countries?
|
|
2025-01-28 01:01:06
|
We only need to care about US law?
|
|
|
Demiurge
|
2025-01-28 01:01:20
|
The entire world has clearly shown that we collectively care about safety more than logic and freedom and common sense, so there's no point in trying to make sense or resist, just obey the lawyers. They're in charge now.
|
|
|
Quackdoc
|
|
lonjil
We only need to care about US law?
|
|
2025-01-28 01:01:31
|
no, I am saying I only need to care about what the lawyers of said country reccomends
|
|
2025-01-28 01:01:59
|
and pretty much every lawyer dealing with this, regardless of country, can't seem to find major issue with it, which is why international groups like the OSI give it the A-OK
|
|
|
lonjil
|
2025-01-28 01:02:05
|
IME, European lawyers disagree with American free software orgs all the time.
|
|
|
Quackdoc
|
2025-01-28 01:02:26
|
not that OSI is the only group dealing with international law, but I have yet to see any group massively disagree
|
|
|
lonjil
|
2025-01-28 01:02:46
|
For example, the GPL is probably equivalent to the LGPL in the EU. But do orgs like the OSI ever talk about that? Not in my experience.
|
|
|
Quackdoc
|
2025-01-28 01:03:10
|
how so?
|
|
|
lonjil
|
2025-01-28 01:03:31
|
Wdym?
|
|
|
Quackdoc
|
2025-01-28 01:03:50
|
how is GPL equivalent to LGPL in the EU?
|
|
|
_wb_
|
2025-01-28 01:04:10
|
the reference software HM for HEVC (https://github.com/listenlink/HM/tree/master) is BSD licensed
|
|
2025-01-28 01:04:22
|
but that doesn't mean that it's not heavily patent encumbered too
|
|
|
lonjil
|
2025-01-28 01:04:34
|
I don't remember the argument because it's been a few years since I read it, but I trust EU lawyers when it comes to EU law.
|
|
|
Quackdoc
|
|
_wb_
the reference software HM for HEVC (https://github.com/listenlink/HM/tree/master) is BSD licensed
|
|
2025-01-28 01:04:40
|
yes, this is one of the things I strongly disagree with, FFMPEG does this crap too
|
|
2025-01-28 01:05:08
|
ffmpeg's GPL builds are by definition not gpl unless you are in a country that does not respect patent licences
|
|
|
_wb_
|
2025-01-28 01:06:06
|
GPL v2 and BSD are copyright licenses only.
GPL v3 and Apache 2 are licenses that combine a copyright license and a patent license.
|
|
2025-01-28 01:06:19
|
at least that's how I understand things
|
|
|
Demiurge
|
2025-01-28 01:06:25
|
Only US and Japan that I know of, recognize software patents
|
|
|
lonjil
|
2025-01-28 01:06:28
|
Another fun one I remember is how US orgs continued to insist that the GPL is not a contract, over and over and over, and when you said that in France, it is considered a contract, they just dismiss it as irrelevant.
|
|
|
Quackdoc
|
|
_wb_
GPL v2 and BSD are copyright licenses only.
GPL v3 and Apache 2 are licenses that combine a copyright license and a patent license.
|
|
2025-01-28 01:07:38
|
gplv2's patent usage is a gray situation but most people I have talked with find that it adequately covers patent usage, not that it matters though because ffmpeg will still let you violate gplv3 without complaining
|
|
|
Demiurge
|
|
Quackdoc
ffmpeg's GPL builds are by definition not gpl unless you are in a country that does not respect patent licences
|
|
2025-01-28 01:08:31
|
Software patents are not a thing in most of the world
|
|
|
Quackdoc
|
|
Demiurge
Only US and Japan that I know of, recognize software patents
|
|
2025-01-28 01:08:36
|
Canada does, and some european countries do, I don't know them off the top of my head
|
|
|
lonjil
|
2025-01-28 01:08:47
|
Building FFMPEG isn't a violation no matter how fucked and conflicted the licenses are.
|
|
|
Quackdoc
|
2025-01-28 01:09:13
|
UK has software patents too but they do a bit weird iirc
|
|
|
_wb_
|
2025-01-28 01:09:23
|
I am not a lawyer but I would assume that a license that talks about copyright and distribution but does not mention the word "patent" at all, should not be considered to be a license that implicitly grants any patent rights.
|
|
|
Quackdoc
|
|
lonjil
Building FFMPEG isn't a violation no matter how fucked and conflicted the licenses are.
|
|
2025-01-28 01:09:25
|
that's simply not true?
|
|
2025-01-28 01:09:36
|
well unless you mean for personal use
|
|
|
lonjil
|
2025-01-28 01:09:50
|
That's why I said building, not distributing
|
|
|
Demiurge
|
2025-01-28 01:10:00
|
I think the reason us lawyers say a copyright license is not a contract is the same reason clicking "I agree" to iTunes terms and conditions isn't a contract either.
|
|
|
Quackdoc
|
|
_wb_
I am not a lawyer but I would assume that a license that talks about copyright and distribution but does not mention the word "patent" at all, should not be considered to be a license that implicitly grants any patent rights.
|
|
2025-01-28 01:10:46
|
as far as I know, at least with the companies I worked with, licences that grant "usage without restrictions" imply that you can use the software without restriction, hence a patent grant
|
|
|
Demiurge
|
2025-01-28 01:10:47
|
You're waiving your "rights" (privileges) under copyright law
|
|
|
Quackdoc
|
2025-01-28 01:11:33
|
that being said, there are programs which, to them wrongfully grant said patents, which can be sticky
|
|
2025-01-28 01:12:02
|
that being said, from what I have heard, the penalties from that are mostly "just stop using said tech then"
|
|
|
Demiurge
|
2025-01-28 01:12:30
|
It's a waiver, not a contract
|
|
2025-01-28 01:13:19
|
And you can't implicitly bind someone else to a contract so easily without having anything in writing
|
|
|
_wb_
|
2025-01-28 01:13:22
|
BSD says nothing about "usage without restrictions".
|
|
|
Demiurge
|
2025-01-28 01:13:28
|
You can only waive your own "rights"
|
|
|
_wb_
|
2025-01-28 01:14:01
|
MIT says:
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software
|
|
2025-01-28 01:14:26
|
"to deal in" suggests distribution/selling, not using, but I'm not a native speaker
|
|
|
Quackdoc
|
2025-01-28 01:14:34
|
I am referring to a classification of licences
|
|
|
Demiurge
|
2025-01-28 01:14:44
|
Calling them rights is also a misnomer since copyright law is about protection of trade and not about rights at all. It actually is designed to stomp on your rights by definition
|
|
|
Quackdoc
|
|
_wb_
"to deal in" suggests distribution/selling, not using, but I'm not a native speaker
|
|
2025-01-28 01:15:14
|
the including part qualifies the "to deal with" part
|
|
|
_wb_
|
2025-01-28 01:15:34
|
ah the right to use is mentioned there
|
|
2025-01-28 01:16:17
|
still I don't see how it necessarily grants any patent rights
|
|
|
Quackdoc
|
2025-01-28 01:16:57
|
the thought process is that one would not be able to use said software without patent rights, therefor if the licence does not grant them, the licence is simply wrong
|
|
|
Demiurge
|
2025-01-28 01:17:08
|
Anyone receiving this software can use it "without restriction or limitation"
|
|
|
_wb_
|
2025-01-28 01:17:22
|
as far as copyright goes
|
|
|
Demiurge
|
2025-01-28 01:17:53
|
It actually is agnostic about "permissions"
|
|
2025-01-28 01:18:04
|
It doesn't say it's limited to copyright
|
|
|
_wb_
|
2025-01-28 01:18:19
|
but if I write an implementation of something company X has patents on, me giving everyone permission to use my thing does not magically also cause company X to grant patent rights to everyone
|
|
|
Quackdoc
|
2025-01-28 01:18:29
|
this is where it becomes a gray area, but because the licence does not explicitly limit itself to copyright, one could reasonably assume that patent licence would be granted as well which is a large part of how general stuff goes
|
|
|
Demiurge
|
2025-01-28 01:18:32
|
It says "Permission is hereby granted, without restrictions or limitations"
|
|
|
Quackdoc
|
|
_wb_
but if I write an implementation of something company X has patents on, me giving everyone permission to use my thing does not magically also cause company X to grant patent rights to everyone
|
|
2025-01-28 01:18:48
|
then you would simply not be in the right by licenceing it as MIT
|
|
|
_wb_
|
2025-01-28 01:19:14
|
why not? as far as I'm concerned everyone can use it
|
|
2025-01-28 01:19:29
|
but I may not be the only one you need permission from
|
|
|
Quackdoc
|
2025-01-28 01:19:53
|
only if they have a licence to do so, since you don't have the right to grant permissions for said patent, implying, which in this case is being done, is wrongful
|
|
2025-01-28 01:20:11
|
I believe one could use the BSD licence here, but not the MIT licence
|
|
2025-01-28 01:20:18
|
tho, I havent read BSD in a while
|
|
|
_wb_
|
2025-01-28 01:20:48
|
Copyright (c) the JPEG XL Project Authors.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
|
|
|
Demiurge
|
2025-01-28 01:21:40
|
What's the point of arguing about this anyways? None of this matters. Unless you are part of the unholy priesthood of lawyers, nothing we say about common sense matters.
|
|
|
_wb_
|
2025-01-28 01:22:12
|
yes, lawyers will always find ways to make things more complicated than they are
|
|
|
Demiurge
|
2025-01-28 01:23:35
|
It's pretty clear that lawyers are in charge of everything because that's what collectively makes us feel safe apparently and nothing we can say will ever matter until we all collectively decide to stop putting lawyers in charge of everything.
|
|
|
lonjil
|
2025-01-28 01:24:35
|
Lawyers aren't in charge of anything
|
|
|
Demiurge
|
2025-01-28 01:25:07
|
But that would mean we would have to stop caring about politicians, and I don't see that happening, because it's the world's favorite drama on TV
|
|
|
lonjil
Lawyers aren't in charge of anything
|
|
2025-01-28 01:28:48
|
They literally write our laws and tell everyone on the planet what to do, especially big corporations like Google.
|
|
|
monad
|
2025-01-28 01:29:46
|
I had an idea to simplify patch
|
|
|
_wb_
|
2025-01-28 01:29:49
|
Basically either you want others to be able to use your stuff or you want them to pay you, either via copyright or via patent license fees.
If you want people to be able to use it, give it some FOSS copyright license and make it royalty-free with an explicit patent grant. For libjxl we have a LICENSE file containing the copyright license and a PATENTS file containing a patent grant; you could also use something like Apache 2.0 that does both at the same time.
If you don't want people to be able to use it without paying you, fine with me but then please make it clear what exactly you want: under what conditions do you need to pay and how much.
|
|
|
lonjil
|
2025-01-28 01:30:16
|
<@184373105588699137> I find it interesting that Fedora does package some public domain software despite the apparent legal problems.
|
|
|
Demiurge
|
2025-01-28 01:32:37
|
All of our laws are written nowadays by corporate lawyers hired by and representing huge business interests like Google and P&G and Monsanto and whoever else has friends in high places.
|
|
|
lonjil
|
|
Demiurge
|
2025-01-28 01:33:43
|
Most "elected officials" have a background in law too
|
|
|
lonjil
|
2025-01-28 01:33:53
|
Most laws in the US are written by congressional staffers (people who work for the representatives and senators)
|
|
|
Demiurge
Most "elected officials" have a background in law too
|
|
2025-01-28 01:34:33
|
Knowing how the law works might be useful when working with the law? :p
|
|
|
Demiurge
|
|
lonjil
Most laws in the US are written by congressional staffers (people who work for the representatives and senators)
|
|
2025-01-28 01:35:48
|
Those staffers just take whatever gets handed to them verbatim by their ~~Owners~~ I mean ~~lobbyists~~ I mean ~~financial supporters~~ I mean patriotic entrepreneurs!
|
|
|
lonjil
|
|
Demiurge
|
2025-01-28 01:38:35
|
All of our healthcare laws are written by lawyers working for major hospitals and insurance companies with the most money and influence like Kaiser Permanente. All of our agriculture laws are written by the wealthiest biotech companies making GMO corn and soy.
|
|
2025-01-28 01:39:01
|
It's like this with every field and industry that has money
|
|
2025-01-28 01:39:56
|
Wherever there's lots of money there's always some sort of special arrangement
|
|
2025-01-28 01:45:45
|
Government has always had the goal and purpose of consolidating wealth and power for those that already have it. It was never benign and never "yours" and never existed for any other reason except to pacify those it takes from.
|
|
2025-01-28 01:46:19
|
This has never changed in over 10,000 years
|
|
2025-01-28 01:47:52
|
But I'm getting off topic 😅
|
|
2025-01-28 01:48:23
|
Point is corporate lawyers rule the world and keep everyone safe just like we wanted :)
|
|
2025-01-28 01:48:34
|
Just like everyone wants and agreed to
|
|
|
Quackdoc
|
|
lonjil
<@184373105588699137> I find it interesting that Fedora does package some public domain software despite the apparent legal problems.
|
|
2025-01-28 01:49:31
|
I think its mostly they haven't gone indepth into it
|
|
2025-01-28 01:49:48
|
cc0 was the only "major offender" afaik
|
|
|
Demiurge
|
2025-01-28 01:50:16
|
Well as a former fedora user I am deeply offended
|
|
|
lonjil
|
2025-01-28 01:50:21
|
Do you know if it's possible to search the package database by license?
|
|
|
Quackdoc
|
2025-01-28 01:50:24
|
and its important to remeber that it's "public domain only" software
|
|
|
lonjil
Do you know if it's possible to search the package database by license?
|
|
2025-01-28 01:50:30
|
I think so, but I can't remeber
|
|
|
Demiurge
Well as a former fedora user I am deeply offended
|
|
2025-01-28 01:50:44
|
>former
same
|
|
|
Demiurge
|
2025-01-28 01:51:09
|
How dare they conveniently distribute cc0 software for me
|
|
2025-01-28 01:51:47
|
I'm surprised they haven't been sued by the non existent copyright holder
|
|
|
lonjil
|
2025-01-28 01:52:58
|
I just looked up SBCL, since I know it's public domain (that's the most popular common lisp implementation). (Also, if you look it up and see "AND BSD-3" that's just a small number of files derived from code released by Xerox under that license, the vast majority of the code is PD only.)
|
|
2025-01-28 01:57:44
|
In practice it seems like every company and distro will make exceptions and allow legally questionable software if it's important enough.
|
|
2025-01-28 01:58:33
|
E.g. Google I believe has a policy against PD software, but they both use and contribute to SBCL (and yes, all their contributions are PD only)
|
|
|
Demiurge
|
2025-01-28 01:59:31
|
Good. Their grip is weakening :)
|
|
2025-01-28 02:00:36
|
https://tenor.com/view/palpatine-smile-creepy-creepy-smile-smirk-gif-24584761
|
|
|
Quackdoc
|
|
Demiurge
I'm surprised they haven't been sued by the non existent copyright holder
|
|
2025-01-28 02:12:54
|
to be fair, I thought the same thing about RHEL with the video accelerated codecs in mesa, but talking with one of the devs on phoronix and it was more or less implied that it actually did become an issue.
|
|
2025-01-28 02:13:12
|
it just wasn't made public because it's often easier to just comply
|
|
2025-01-28 02:13:23
|
https://tenor.com/view/tell-me-what-to-do-and-i-will-obey-beavis-what-do-i-do-i-will-follow-your-commands-whatever-you-say-gif-17564903546237075113
|
|
|
Demiurge
|
2025-01-28 02:18:41
|
Submit. Comply. Obey...
|
|
|
Laserhosen
Since discovering https://github.com/skeeto/optparse I've never considered using anything else for C/C++. Maybe that could replace the tools' home-made option parsing?
|
|
2025-01-28 04:23:30
|
https://azrael.digipen.edu/~mmead/www/Courses/CS180/getopt.html
Found a good guide... It's a very similar API compared to optparse, and musl libc has a very simple and MIT licensed implementation that can be used on inferior joke platforms like Microsoft
|
|
|
AccessViolation_
|
2025-01-28 04:39:00
|
Does libjxl output a single palette referenced by multiple frames if the colors of one frame are a subset of the colors in another frame?
|
|
|
Demiurge
|
2025-01-28 04:43:09
|
Afaik libjxl has absolutely no intraframe logic of any kind
|
|
|
AccessViolation_
|
2025-01-28 04:43:45
|
Dang
|
|
2025-01-28 04:44:24
|
Is sharing one palette between multiple frames possible in the format?
|
|
2025-01-28 04:44:44
|
layers, i mean, btw
|
|
|
Demiurge
|
2025-01-28 04:47:02
|
The format itself is capable of just about anything. libjxl is just not a very sophisticated coder and doesn't use all the format features
|
|
2025-01-28 04:47:38
|
It's just good enough to be usable as a proof of concept and to introduce the world to a taste of what's possible 😂
|
|
2025-01-28 04:49:11
|
As the format gains more attention more sophisticated jxl encoders are expected, specialized for multi frame pixel art animations for example, or existing gif tools can be modified to output jxl instead of gif
|
|
|
AccessViolation_
|
2025-01-28 04:53:50
|
I'm not degrading it to a proof of concept given how good it already is, some of its tuning was ported to other formats even, but yeah in terms of uncommon features that's fair
|
|
|
Demiurge
|
2025-01-28 05:31:11
|
I expect vardct could be improved by another 20% savings at transparent bitrates just from improving the psycho-rdo tuning and fixing the blurring and color desaturation problems, even more savings if spline detection is added... lossless and animation could be improved by a gargantuan factor if there was more specialized optimization for common low bit depth color modes.
|
|
2025-01-28 05:37:16
|
The current state of the encoder is like a basic proof of concept to demonstrate some of the strengths of the format and novel techniques, in a preliminary context, lacking major features like splines, and before it's undergone the same level of tuning as other lossy image tools like x264
|
|
2025-01-28 05:38:35
|
As a DCT image codec it's already extremely strong and competitive. But it could go much much farther.
|
|
2025-01-28 05:38:58
|
And it's capable of far more than just dct
|
|
2025-01-28 05:39:33
|
It's actually very similar to djvu...
|
|
|
_wb_
|
|
AccessViolation_
Is sharing one palette between multiple frames possible in the format?
|
|
2025-01-28 05:54:32
|
No, frames are independent. Though you could cheat by making a large invisible frame that uses a palette, and then patch it into visible frames.
|
|
|
AccessViolation_
|
2025-01-28 05:56:34
|
Correction, I meant layers, not frames (I don't know if they're different or if it's just a terminology change depending on if it's an animated jxl)
|
|
|
Demiurge
|
2025-01-28 05:58:55
|
Can the same palette not be referenced multiple times by its offset or something?
|
|
|
AccessViolation_
|
2025-01-28 06:00:38
|
Hmm I suppose palettes are very little data anyway so it probably doesn't matter in most cases
|
|
2025-01-28 06:01:11
|
if art uses a palette it usually doesn't have more than like 15 colors
|
|
|
_wb_
|
2025-01-28 07:05:07
|
Everything is frames in jxl.
Layers are zero-duration frames.
Pages are max-duration frames.
Animation frames are any-other-duration frames.
|
|
|
AccessViolation_
|
2025-01-28 07:10:19
|
Oh, I didn't even know JXL did pages. That explains why I've seen people wanting to use it as a format for storing whole comics
|
|
|
Demiurge
|
2025-01-28 07:29:55
|
There needs to be some clarification regarding animations and pages mixed and whether the animations can loop or not iirc
|
|
|
Laserhosen
|
|
Demiurge
https://azrael.digipen.edu/~mmead/www/Courses/CS180/getopt.html
Found a good guide... It's a very similar API compared to optparse, and musl libc has a very simple and MIT licensed implementation that can be used on inferior joke platforms like Microsoft
|
|
2025-01-28 09:25:47
|
Yeah, that musl implementation could work if I de-Unix it slightly.
|
|
|
Demiurge
|
2025-01-28 09:28:36
|
The musl code is so clean and simple 😻
|
|
2025-01-28 09:30:02
|
You're looking for include/getopt.h, misc/getopt.c and misc/getopt_long.c
|
|
2025-01-28 09:30:46
|
There's nothing unixy in there afaict
|
|
2025-01-28 09:31:09
|
It's just super clean.
|
|
|
Laserhosen
|
2025-01-28 09:34:25
|
Well there's unistd.h for a start 🙂 - at least there is if I go straight to the source. I've seen a couple of other repos with just the cleaned-up musl getopt, but they seem to be old and missing a recent bug fix or two
|
|
2025-01-28 09:34:28
|
https://git.musl-libc.org/cgit/musl/tree/src/misc/getopt.c
|
|
|
Demiurge
|
2025-01-28 09:38:33
|
Windows users do not need unistd.h at all.
|
|
2025-01-28 09:39:20
|
Windows users can use getopt.h instead of unistd.h
|
|
2025-01-28 09:39:32
|
That file only includes getopt interface definitions.
|
|
2025-01-28 09:40:52
|
For people who aren't using a crayon OS, unistd.h is the standard header where getopt is defined.
|
|
2025-01-28 09:42:32
|
You only need include/getopt.h and misc/getopt.c and optionally misc/getopt_long.c if you want to support --long-options that are a pain in the ass to type
|
|
2025-01-28 09:43:26
|
You can also modify the musl code to accept slash `/` instead of dash `-` for options, since that's conventional on crayonOS
|
|
2025-01-28 09:44:31
|
in addition to, not instead of.
|
|
2025-01-28 10:46:49
|
https://git.musl-libc.org/cgit/musl/tree/src/misc/getopt.c
someone would have to try compiling this on windows and remove anything that isn't defined on that platform or that doesn't serve any purpose there. Alternatively I think there is a posix like toolchain available that could provide missing interfaces on that platform without borrowing code from musl
|
|
2025-01-28 10:47:36
|
The main thing is just adapting the tools to use the getopt interface without introducing any bugs
|
|
|
Laserhosen
|
|
Demiurge
https://git.musl-libc.org/cgit/musl/tree/src/misc/getopt.c
someone would have to try compiling this on windows and remove anything that isn't defined on that platform or that doesn't serve any purpose there. Alternatively I think there is a posix like toolchain available that could provide missing interfaces on that platform without borrowing code from musl
|
|
2025-01-28 11:06:07
|
That's what I meant by de-Unixing. I was going to avoid making any incompatible changes to the CLI, so we would of course need to support long options, even if we supplement them with new single-letter options for faster typing.
|
|
|
Demiurge
|
|
Laserhosen
That's what I meant by de-Unixing. I was going to avoid making any incompatible changes to the CLI, so we would of course need to support long options, even if we supplement them with new single-letter options for faster typing.
|
|
2025-01-29 12:06:38
|
Yeah, taking a closer look at getopt.c there are a few things that need to be tweaked for windows to be happy.
|
|
|
CrushedAsian255
|
2025-01-29 12:07:33
|
CrayonOS?
|
|
|
Demiurge
|
2025-01-29 12:07:36
|
Mostly just deleting a few lines
|
|
|
CrushedAsian255
CrayonOS?
|
|
2025-01-29 12:08:40
|
Yeah, windows and other joke systems made with crayons and elmer's paste
|
|
|
novomesk
|
2025-01-30 01:24:26
|
When encoding a JXL file via libjxl,
is it OK to add metadata Exif,xml via JxlEncoderAddBox even before calling JxlEncoderSetBasicInfo ?
Just curious.
|
|
|
_wb_
|
2025-01-30 06:10:30
|
Good question. I guess it should be ok?
|
|
|
Traneptora
|
|
_wb_
Everything is frames in jxl.
Layers are zero-duration frames.
Pages are max-duration frames.
Animation frames are any-other-duration frames.
|
|
2025-01-30 07:35:17
|
I thought pages were frames with negative duration
|
|
2025-01-30 07:35:32
|
but they didn't have to be -1
|
|
2025-01-30 07:35:36
|
(signed int32)
|
|
|
_wb_
|
2025-01-30 07:37:34
|
Spec says only 0xffffffff means page break
|
|
2025-01-30 07:37:57
|
Duration is unsigned
|
|
|
Traneptora
|
2025-01-30 07:38:47
|
ye I was using signed for convenience
|
|
2025-01-30 07:38:57
|
by negative I mean >= 0x80 00 00 00
|
|
|
_wb_
|
2025-01-30 07:39:41
|
In practice, durations over 2^31 ticks are gonna be very long unless you have an insanely short tick
|
|
2025-01-30 07:42:09
|
So in a viewer you'd want to manually navigate between the frames anyway, which is kind of the same thing as page navigation.
|
|
|
Traneptora
|
2025-01-30 07:48:24
|
I guess
|
|
2025-01-30 07:48:50
|
I just don't *really* understand the value of saving a whole set of comic pages as an "animated" jxl file instead of using a pre-established format like CBZ
|
|
2025-01-30 07:48:59
|
which is just a `.zip` with images as files
|
|
2025-01-30 07:49:22
|
considering zip has a page index for fast seeking I imagine that would be preferable, or if there's say a page that's bigger than the others cause it's a double
|
|
|
_wb_
|
2025-01-30 08:16:17
|
I guess the value could be that it would also work in generic image viewers or web browsers (kinda, you'd probably just see only the first page), while something like cbz mostly only works in comic book viewers
|
|
2025-01-30 08:16:56
|
For fast seeking you could add a jxli box in principle
|
|
2025-01-30 08:20:22
|
Pages with different sizes are I guess both nice to have and a bit inconvenient since it is not well-defined how to display them relative to one another, so you might get behavior where the scale suddenly changes or you unexpectedly need to scroll. In jxl you can still have frame content of different sizes but the canvas has constant size.
|
|
2025-01-30 08:22:56
|
Anyway, compression-wise, an advantage of putting pages in a single jxl is that an encoder can take patches from previous pages. E.g. for static headers/footers or elements that appear on several pages, that could be a big compression gain.
|
|
|
AccessViolation_
|
|
_wb_
Anyway, compression-wise, an advantage of putting pages in a single jxl is that an encoder can take patches from previous pages. E.g. for static headers/footers or elements that appear on several pages, that could be a big compression gain.
|
|
2025-01-30 08:30:56
|
Could you extend this to say, patch copying the whole previous page to kAdd-blend it onto the next one?
Like for a simple format for making use of redundancy between burst photos, where the current photo is encoded as the residuals of the current photo minus the previous one
|
|
|
_wb_
|
2025-01-30 08:32:35
|
Yes that's what kAdd blending was meant for in the first place
|
|
|
AccessViolation_
|
2025-01-30 08:41:14
|
Ooo. Time for me to take some burst shots and do some benchmarks
|
|
2025-01-30 08:45:00
|
Actually I'll have to see if I can do that in Krita, it can do blend modes on layers but it doesn't give you control over patches I don't think...
|
|
|
RaveSteel
|
2025-01-30 08:48:08
|
apropos layers, I opened the issue regarding cjxl's coalescing of layers in JXL-JXL conversions
|
|
2025-01-30 08:48:09
|
https://github.com/libjxl/libjxl/issues/4097
|
|
|
_wb_
|
2025-01-30 08:54:10
|
The encoder in libjxl does not try to do anything regarding inter frame, it just encodes what you give it. You could manually set the frame blend mode to kAdd though (and subtract the previous frame before encoding).
|
|
2025-01-30 08:57:20
|
When doing lossless that could work. For lossy, you would need to use patches to do the adding in XYB...
|
|
|
AccessViolation_
|
|
_wb_
The encoder in libjxl does not try to do anything regarding inter frame, it just encodes what you give it. You could manually set the frame blend mode to kAdd though (and subtract the previous frame before encoding).
|
|
2025-01-30 09:08:57
|
That's what I'd been doing in Krita for my image decomposition experiments. I didn't immediately see how I could make a chain of frames referencing each other. mostly the layer dock is just confusing to me I think. I'll figure it out
|
|
2025-01-30 09:09:41
|
Probably start with the base image and then add consecutive residual layers above it in 'add' mode
|
|
2025-01-30 09:11:37
|
Sounds like a bit of work to do every time, especially creating those residual frames is in their own process too. I should look into if this can be scripted
|
|
2025-01-30 09:12:39
|
A 'create compressed burst stack' script for Krita would probably be useful to some
|
|
2025-01-30 09:16:31
|
You could probably even store exposure-bracketed shots efficiently by creating kReferenceOnly frames that are just a single-value multiplier from one frame to the next, to equalize the exposure before taking the subtraction residuals
|
|
|
spider-mario
|
|
_wb_
I guess the value could be that it would also work in generic image viewers or web browsers (kinda, you'd probably just see only the first page), while something like cbz mostly only works in comic book viewers
|
|
2025-01-30 09:16:56
|
who would send a whole comic just to display the first page on a webpage, though
|
|
|
AccessViolation_
|
2025-01-30 09:43:26
|
find a way to terminate the stream early, though that'd be pretty cursed
|
|
|
_wb_
|
|
spider-mario
who would send a whole comic just to display the first page on a webpage, though
|
|
2025-01-30 10:31:13
|
Maybe if the rest can be shown via a js viewer, or if browsers implement native page navigation?
|
|
|
jonnyawsom3
|
|
AccessViolation_
find a way to terminate the stream early, though that'd be pretty cursed
|
|
2025-01-31 03:41:10
|
HTTP 206 Partial Content
|
|
|
juliobbv
|
|
Traneptora
I just don't *really* understand the value of saving a whole set of comic pages as an "animated" jxl file instead of using a pre-established format like CBZ
|
|
2025-01-31 05:34:30
|
there are some image viewers (like MacOS's Preview), that actually open animated files as multi-frame static images (as in, you can manually select frames)
|
|
2025-01-31 05:36:38
|
something like this
|
|
2025-01-31 05:37:13
|
I actually don't know if Preview supports opening animated **jxl** files this way though
|
|
2025-01-31 05:37:46
|
(it doesn't, just tried 😦)
|
|
|
Demiurge
|
2025-01-31 07:38:19
|
Animated JXL support is not yet in place
|
|
2025-01-31 07:38:29
|
But I would wager it's likely to come
|
|
|
CrushedAsian255
|
2025-01-31 08:25:20
|
It would be good for things like burst photo
|
|
|
RaveSteel
|
2025-01-31 08:43:21
|
Moreso for the camera apps by certain manufacturers who allow for capturing a burst series directly into a GIF
|
|
|
AccessViolation_
|
|
RaveSteel
|
2025-01-31 08:43:45
|
Yes
|
|
2025-01-31 08:43:47
|
lol
|
|
2025-01-31 08:43:54
|
It's horrible
|
|
2025-01-31 08:44:02
|
But at least it could be JXL
|
|
2025-01-31 08:44:13
|
would make it leagues better
|
|
|
AccessViolation_
|
2025-01-31 08:44:14
|
That's what I'm experimenting with today actually
|
|
2025-01-31 08:44:48
|
If you read up a bit, I wanted to store burst images as the difference between the previous frame and the current one
|
|
2025-01-31 08:44:57
|
If I can get Krita to do what I want that is :)
|
|
|
RaveSteel
|
2025-01-31 08:45:49
|
Sounds good if you're able to get it working
|
|
2025-01-31 08:46:15
|
I checked, the created GIF in Samsung's camera app will be 480x640 and have 5 whole FPS
|
|
|
AccessViolation_
|
2025-01-31 08:48:41
|
Another thing you might be able to do do with JXL's basic interframe coding is store exposure bracketed bursts by also multiplying by an invisible layer that's a frame with one value, to normalize for the exposure before taking the difference
|
|
2025-01-31 08:49:33
|
Not entirely sure if that's possible in Krita since multiplying something by the max value of a pixel appears to be a no-op
|
|
2025-01-31 08:50:55
|
If it's not possible in general you'd have to start at the darkest shot and use division instead, to get the brighter shots down to the exposure of the previous one
|
|
2025-01-31 08:52:22
|
But that shifts the problem of multiplying by something greater than 1 to the decoding step, so idk. I'm just going to start with normal bursts and see about exposure bracketing later
|
|
|
A homosapien
|
|
RaveSteel
I checked, the created GIF in Samsung's camera app will be 480x640 and have 5 whole FPS
|
|
2025-01-31 09:14:09
|
why are we still living in the 90's... <:PepeHands:808829977608323112>
|
|
|
CrushedAsian255
|
2025-01-31 12:30:28
|
no APNG support? 😭
|
|
|
_Broken s̸y̴m̴m̵̿e̴͌͆t̸r̵̉̿y̴͆͠
|
2025-01-31 06:18:15
|
I got a few questions about the libjxl .. well lib.
I'm currently working on making a backup of my drawing folder, and in there are quiet a few scans.
Now they all are scanned in lossless (`.tif`), and currently are stored as `.png `(some rgb, some gray).
- My question revolves mainly around the following line from the repo:
> Note: This release is for evaluation purposes and may contain bugs
I assume this only applies to the newer features being implemented,
and less so to the general *encoding* / *decoding* in *lossless* / *lossy* quality, right?
Like it would be safe to use, for the task of lossless encoding, right?
- My second question would be a bit less on-topic, but still is fairly important.
How "vulnerable" is `.jxl` encoding? Like when the *body* and/or *header* is damaged, how well can parts of it still be recovered?
I sadly do not know how other formats like `.png, .jpg, .tif (LZMA and None)` them self hold up regarding that,
but it would interesting to know, if you guys know anything about that?
-# I ask this out of interest, less to skip the 1-2-3 principle, which I just can't full-fill financially.
-# I yet have to read in to testing such things as redundancy and recover-ability myself, but not enough time and I do not know apportion resources for that yet, since I want to do "realistic" and varied tests.
- And my last question is as follows:
Since I'm going to convert multiple images by command,
-# better said using python tkinter filedialog to select files and running the cjxl.exe a bunch of time with popen or the alike,
is the command correct for lossless encoding? :
`cjxl.exe sample.png sample_jxl.jxl -d 0.0 -e 10`
Thank you for you time
-# and also the Jxl implementation btw
|
|
|
Laserhosen
|
2025-01-31 07:26:52
|
1. will depend on what level of risk you're comfortable with. There *have* been bugs that make the lossless encoding not fully lossless. Personally I trust it enough that I've converted practically every PNG I have into lossless JXL - I use a conversion script that verifies the result by decoding back to PNG and comparing the pixel values to the original.
Note that converting PNG to JXL with cjxl will discard any metadata other than Exif and XMP.
|
|
2025-01-31 07:30:32
|
2. Others might give a more detailed answer, but bit-rot is probably more damaging to JXL than PNG in general just because of its density. There has been discussion of an option for djxl for attempting to decode broken inputs, but it hasn't been implemented yet.
|
|
2025-01-31 07:33:51
|
3. Yeah, the command looks fine if you have the patience for -e 10.
|
|
|
Demiurge
|
|
_Broken s̸y̴m̴m̵̿e̴͌͆t̸r̵̉̿y̴͆͠
I got a few questions about the libjxl .. well lib.
I'm currently working on making a backup of my drawing folder, and in there are quiet a few scans.
Now they all are scanned in lossless (`.tif`), and currently are stored as `.png `(some rgb, some gray).
- My question revolves mainly around the following line from the repo:
> Note: This release is for evaluation purposes and may contain bugs
I assume this only applies to the newer features being implemented,
and less so to the general *encoding* / *decoding* in *lossless* / *lossy* quality, right?
Like it would be safe to use, for the task of lossless encoding, right?
- My second question would be a bit less on-topic, but still is fairly important.
How "vulnerable" is `.jxl` encoding? Like when the *body* and/or *header* is damaged, how well can parts of it still be recovered?
I sadly do not know how other formats like `.png, .jpg, .tif (LZMA and None)` them self hold up regarding that,
but it would interesting to know, if you guys know anything about that?
-# I ask this out of interest, less to skip the 1-2-3 principle, which I just can't full-fill financially.
-# I yet have to read in to testing such things as redundancy and recover-ability myself, but not enough time and I do not know apportion resources for that yet, since I want to do "realistic" and varied tests.
- And my last question is as follows:
Since I'm going to convert multiple images by command,
-# better said using python tkinter filedialog to select files and running the cjxl.exe a bunch of time with popen or the alike,
is the command correct for lossless encoding? :
`cjxl.exe sample.png sample_jxl.jxl -d 0.0 -e 10`
Thank you for you time
-# and also the Jxl implementation btw
|
|
2025-01-31 07:35:46
|
point 1: no, the lossy and lossless encoders in libjxl can contain bugs too. libjxl does NOT do any final sanity-check on the encoder output to ensure lossless output is truly reversible, or to ensure lossy output does not have any regions with extreme and unexpected levels of distortion and loss. You have to test this yourself to make sure there are no serious problems with the output
point 2: the header is extremely compact and bit packed, the image is divided into regional chunks, but someone more familiar with the bitstream would have to say whether it's possible to scan for signatures and magic numbers and partially recover parts of the image that way. If the toc is damaged it's possible you might end up with image chunks you have to manually re-order in the right place like a jigsaw puzzle?
point 3: effort 10 is really not recommended. I would recommend effort 1 or 2 for maximum speed, effort 7 (default) for 98% the compression of e10 at much improved speed, and I would not recommend anything above e7 unless you are insane in the membrane.
|
|
2025-01-31 07:37:04
|
That last 2% increases your wait time by 200x
|
|
2025-01-31 07:37:21
|
That's a bad trade
|
|
|
Laserhosen
|
2025-01-31 07:41:42
|
If you're going for maximum compression, you might want to add `--compress_boxes=1` `--brotli_effort=11` to compress the metadata more. There are other options worth playing with too (-I, -E, -g)... plenty of discussion of these to be found in <#840831132009365514>.
|
|
2025-01-31 07:44:47
|
Just don't be tempted by the "forbidden" effort level...
|
|
|
AccessViolation_
|
2025-01-31 07:55:45
|
surprised compress boxes isn't default 🤔
edit: seems like it is from a quick test
|
|