JPEG XL

Info

rules 57
github 35276
reddit 647

JPEG XL

tools 4225
website 1655
adoption 20712
image-compression-forum 0

General chat

welcome 3810
introduce-yourself 291
color 1414
photography 3435
other-codecs 23765
on-topic 24923
off-topic 22701

Voice Channels

General 2147

Archived

bot-spam 4380

jxl

Anything JPEG XL related

fab
2022-07-29 01:32:08
not convenient for development
improver
2022-07-29 02:08:11
agreed. i'd probably rename <#804324493420920833> to #implementations instead
yurume
2022-07-29 02:11:58
or have both, for non-libjxl implementations
_wb_
2022-07-29 04:23:44
96th JPEG meeting ended
2022-07-29 04:25:35
We'll postpone the 2nd edition of 18181-1 a bit to make sure all spec bugs can get fixed - we're back to WD stage with it, with the aim of going to CD stage at the 97th (October) meeting
2022-07-29 04:26:07
So now is a good time to find and fix more spec bugs :)
2022-07-29 04:28:32
Also, very annoyingly, we will need to produce a Word document because the ~~idiots~~editors at ISO cannot handle any other file format. So we will need to find a good way to convert latex to Word automatically without requiring (a lot of) manual layout fixing...
Traneptora
2022-07-29 09:09:11
Embed it as an image
2022-07-29 09:09:16
<:Kekw:859968756523335710>
Pashi
2022-07-30 03:36:54
I fear for our world and for the future and security of our civilization if the self-styled "International Standards Organization" requires specs to be in Microsoft Word and not LaTeX
2022-07-30 03:41:28
Who appointed them anyways? Or is it a self appointed position? We should proclaim this discord server to be the new "Planetary Standards Alliance" to supercede the ISO.
2022-07-30 03:42:03
All spec documents to be submitted as discord chat messages
190n
2022-07-30 06:08:07
docx is an iso standard to be fair
_wb_ Also, very annoyingly, we will need to produce a Word document because the ~~idiots~~editors at ISO cannot handle any other file format. So we will need to find a good way to convert latex to Word automatically without requiring (a lot of) manual layout fixing...
2022-07-30 06:10:29
any easier to get it as odt first?
_wb_
2022-07-30 06:21:28
ISO is legally speaking just a Swiss private company. The only reason they are "important" is that all the national standards organizations are giving them legitimacy, and many national and international governments or governmental organizations are empowering ISO by normatively citing ISO standards in various regulations.
190n any easier to get it as odt first?
2022-07-30 06:24:54
I don't think that will make much of a difference...
yurume
2022-07-30 06:26:30
pandoc can convert latex to docx for most simple cases I think, that may work with the spec as well
veluca
2022-07-30 09:01:57
Latexml is probably an easier choice here
2022-07-30 09:02:12
Unless pandoc improved significantly in the months since I last tried
yurume
2022-07-30 09:02:49
what I'm most unsure about is the table support
_wb_
2022-07-30 10:34:18
When I open a pdf version in Word, it does some import magic and the tables look good actually. But the rest, especially pseudocode, looks bad
Deleted User
2022-07-30 11:32:02
Well, ISO has to live with that, not our problem if they don't accept LaTeX. ;)
Fraetor
2022-07-30 11:32:37
It is a problem for anyone who has to use the specs though.
_wb_
2022-07-30 01:35:07
It is also a problem for me to get it approved by JPEG for submission to ISO
Pashi
2022-07-30 08:07:15
Why don't they accept PDF?
2022-07-30 08:07:35
Or Postscript
2022-07-30 08:09:11
I would seriously consider the embedded image in docx idea.
2022-07-30 08:12:00
Converting a LaTeX document to Microsof Word is such a brainlet idea
190n
2022-07-30 08:13:56
well presumably they want to be able to edit the document which sucks on PDFs and is basically impossible with the image method
_wb_
2022-07-30 08:24:16
They have some proprietary software to convert Word to xml which they then use to produce pdf, epub and html versions of the standards
Deleted User
2022-07-30 09:45:48
LaTeX and PDF aren't very responsive nor accessible, so it's understandable if one would prefer HTML or ePUB.
Pashi
_wb_ They have some proprietary software to convert Word to xml which they then use to produce pdf, epub and html versions of the standards
2022-07-30 11:22:02
Sounds great for an organization trying to foster standardization.
yurume
2022-07-30 11:23:33
technically speaking docx is also ISO/IEC 29500
Pashi
2022-07-31 04:27:39
Last I heard MS Office does not even conform to their own ISO standard so that's kinda irrelevant and marketing lies.
The_Decryptor
2022-07-31 04:29:17
Standards as only useful when people agree on them, if everybody does something else then the standard's useless and should be changed
2022-07-31 04:29:25
e.g. the entirety of HTML/CSS/JavaScript
Pashi
2022-07-31 04:30:34
Not to mention the spec itself is supposedly extremely difficult for a third-party to implement and contains a lot of things that aren't useful for anything but MS Office
2022-07-31 04:31:29
From what I heard anyways.
Fraetor
2022-07-31 10:08:57
It's one of those fiendishly complicated standards that is essentially impossible to fully implement, though fortunately 99% of usecases can be covered by a small core part.
2022-07-31 10:09:06
A bit like SVG.
spider-mario
veluca Unless pandoc improved significantly in the months since I last tried
2022-08-01 11:01:31
my impression is that pandocโ€™s docx output is decent, itโ€™s probably latex input that is more problematic
2022-08-01 11:01:43
writing in pandoc markdown might work better
_wb_
2022-08-01 11:35:30
I don't think markdown is expressive enough
2022-08-01 11:36:46
Can it do macros, crossreferences, and math?
spider-mario
2022-08-01 01:21:13
pandocโ€™s flavor of it can do some of those
2022-08-01 01:21:41
https://pandoc.org/MANUAL.html#pandocs-markdown
2022-08-01 01:23:07
> TeX math will be printed in all output formats. How it is rendered depends on the output format: > [โ€ฆ] > **Docx** > It will be rendered using OMML math markup.
Pashi
2022-08-02 02:25:29
https://discord.com/channels/794206087879852103/805722506517807104/995601247048577054
2022-08-02 02:26:04
Is it bad that I find this post hilarious?
Jyrki Alakuijala
Pashi I fear for our world and for the future and security of our civilization if the self-styled "International Standards Organization" requires specs to be in Microsoft Word and not LaTeX
2022-08-03 03:57:28
It will just require a generation or two of new standard makers
Pashi
2022-08-03 04:14:20
Well I guess starting with the way he implies a familiarity with ffmpeg but doesn't know about the configure script...
2022-08-03 04:20:28
The rest of it was funny just because of the clusterfuck of third party support like Firefox having the option in all versions but only having an effect if you are using nightly for some asinine reason
2022-08-03 04:22:20
Or the steps required to get Irfanview passably working
2022-08-03 04:23:57
Taking several seconds with of a black screen to load a single frame when it normally takes less than a second to decode
zebefree
_wb_ We'll postpone the 2nd edition of 18181-1 a bit to make sure all spec bugs can get fixed - we're back to WD stage with it, with the aim of going to CD stage at the 97th (October) meeting
2022-08-03 07:08:10
If there is going to be an update to 18181-1 it would be great if it clarified whether intrinsic_size is the size before or after any rotation from orientation.
_wb_
2022-08-03 08:12:40
Ah, isn't that clear atm? Should be before orientation, and same orientation applied to intrinsic dimensions as to actual dimensions, but you could be right that this is not clear from the spec.
2022-08-03 08:13:40
(one issue is that afaik nothing really uses previews and intrinsic dimensions yet for anything, we should probably change that somehow)
zebefree
2022-08-03 08:18:45
If it is supposed to match the intrinsic size that web browsers use (i.e. size before any CSS) then I would expect it to be after rotation.
2022-08-03 08:18:49
Also I may be misinterpreting it but it looks like libjxl reports it after rotation when not explicitly in the file.
2022-08-03 08:18:56
https://github.com/libjxl/libjxl/blob/main/lib/jxl/decode.cc#L2187
2022-08-03 08:19:08
swaps, then reports on line 2233
2022-08-03 08:28:59
The only thing I see in 18181-1 about it is F.1 where it says that the width/height in the frame header is before rotation. But it doesn't mention it for intrinsic_size.
Pashi
2022-08-04 02:38:50
I agree that Firefox is to blame here
2022-08-04 02:39:48
Still funny
Jyrki Alakuijala
2022-08-04 01:54:29
Once it is turned on on Chromium, Firefox is likely able to follow. The formal place to justify JPEG XL is here. https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
improver
2022-08-04 01:56:48
i suspect this would happen sometime after v1.0
2022-08-04 01:56:57
of libjxl
2022-08-04 01:57:53
kinda wondering how many months left. v1.0 looks like it's kind of starting to take shape but it still feels few weeks away, at least looking from afar
w
2022-08-04 02:02:07
what about 0.7
Jyrki Alakuijala
2022-08-04 02:03:16
Chromium people are not following libjxl development. They are focused on AV1/AV2/AVIF etc.
2022-08-04 02:03:53
Chromium people have developed AVIF, from their point of view JPEG XL looks as a distraction and something that can be an obstacle to deploy AVIF quickly
2022-08-04 02:05:03
or cause confusion in the field
JendaLinda
2022-08-04 02:38:37
In IrfanView, it takes about 2 seconds to load a 10kx10k JXL image for me. That's not bad imo.
Jyrki Alakuijala Chromium people are not following libjxl development. They are focused on AV1/AV2/AVIF etc.
2022-08-04 03:19:31
That's kinda paradox that Chromium based MS Edge doesn't support AVIF at all.
Jyrki Alakuijala
2022-08-04 03:46:41
I didn't know that
Pashi
2022-08-05 06:33:53
Have you tried installing the AV1 codec from the MS store?
2022-08-05 06:34:13
After that all the apps on windows support avif
The_Decryptor
2022-08-05 06:34:18
Not Edge
Pashi
2022-08-05 06:34:32
including the file manager and default photo viewer
2022-08-05 06:36:37
wow you're right edge is the exception
2022-08-05 06:36:48
how weird
w
2022-08-05 06:37:06
many things dont work in edge
Pashi
2022-08-05 06:37:11
yet exactly to be expected from a piece of shit unremoveable malware like edge
w
2022-08-05 06:37:22
the odd browser
Pashi
2022-08-05 06:37:34
The browser you can't uninstall
2022-08-05 06:39:37
You can never get rid of
2022-08-05 06:39:49
Opens itself even if you selected another browser as your default
w
2022-08-05 06:40:00
i haven't ever had that issue
2022-08-05 06:40:03
and it's not too bad
2022-08-05 06:40:34
and for the normal person it's good enough
2022-08-05 06:40:38
i use it more than i do chrome
Pashi
2022-08-05 06:40:58
Happens all the time, on all of the PCs I use, and I use a lot of PCs because my job is to use everyone's PC.
The_Decryptor
2022-08-05 06:41:04
If Firefox supported PWAs (And fixed some other annoying issues) I might have stuck with it, but as it stands Edge is Chrome but without all the annoying Google stuff
Pashi
2022-08-05 06:42:36
No annoying google stuff, just unremoveable adware that spams sponsored political stories and can never be uninstalled
2022-08-05 06:43:20
Like that shitty "news and interests" bullshit on the taskbar in Windows 10
2022-08-05 06:43:47
that automatically opens itself if your mouse accidentally merely hovers over it
The_Decryptor
2022-08-05 06:43:56
Yeah I just disabled that
w
2022-08-05 06:44:21
just disable it man
2022-08-05 06:44:23
it can all be disabled
Pashi
2022-08-05 06:44:28
I disable that like 10 times a day because of how many computers I have to use lol
w
2022-08-05 06:44:29
no point in getting angry over it
Pashi
2022-08-05 06:45:00
You'd be angry too if you had to deal with it that much lol
w
2022-08-05 06:45:00
everything has something like that in some form
Pashi
2022-08-05 06:45:45
But yeah I've tried using edge and I don't think you can fully disable everything on the new tab page
2022-08-05 06:46:09
There's still political shit on the bottom edge even in "focused" mode
w
2022-08-05 06:46:13
2022-08-05 06:46:14
?
Pashi
2022-08-05 06:47:18
I could never get it to look like that.
2022-08-05 06:48:11
I selected "focused" mode and even tried custom mode and there's always some political stuff at the bottom edge of the page and even more of it if you scroll
w
2022-08-05 06:48:35
Pashi
2022-08-05 06:48:47
I don't use Windows when I'm not at work either
w
2022-08-05 06:49:27
this is actually pretty nice
2022-08-05 06:49:43
2022-08-05 06:50:27
lmao
Pashi
2022-08-05 06:50:29
Yeah, I tried custom mode like that
2022-08-05 06:51:21
And there was always stories of the bottom mostly of the political derp yawnfest variety
2022-08-05 06:51:34
No matter what settings I chose
2022-08-05 06:52:06
Maybe because we just had some kind of ceremony recently, I think the humans call it an election
2022-08-05 06:53:00
Seems like a pretty asinine ritual if you ask me
w
2022-08-05 06:53:19
it's the content setting
Pashi
2022-08-05 06:54:31
All that it seemed to do is move the content to the very bottom
2022-08-05 06:54:44
While still always there.
2022-08-05 06:55:00
And the page was always scrollable
2022-08-05 06:56:16
You want to know another great feature of Windows that I have to deal with all the time? Microsoft store apps that aren't even installed taking up ALL of the space on the hard drive. Like every version of Candy Crush that has ever been released
2022-08-05 06:56:27
All in an undeleteable hidden folder :)
_wb_
2022-08-05 06:57:09
Maybe move this discussion to <#806898911091753051> ?
Pashi
2022-08-05 06:57:12
Even though it isn't installed and has never been installed, for some reason 100 versions of candy crush collect in this folder
fab
2022-08-05 03:41:32
2022-08-05 03:41:44
Jxl s7 s8 isn't optimized for those kind of photos
2022-08-05 03:42:13
You need s9
2022-08-06 12:00:15
though svt isn't is as pleasant
2022-08-06 12:01:23
it denoises too much
2022-08-06 12:01:50
2022-08-06 12:02:20
and certain movements appears too fast as someone is using a mooping
2022-08-06 12:03:14
original is 23,5 mb with included 4,56 audio track
2022-08-06 12:03:22
this will be 49,6 mb
2022-08-06 12:04:28
encoding is slow 9 hours for a 5:02, 640x480 video
2022-08-06 12:04:41
with these settings
2022-08-06 12:04:42
--input-depth 10 --preset 3 --tune 0 --film-grain 33 --crf 15
2022-08-06 12:04:59
and staxrip choosed 8 bit
2022-08-06 12:05:27
so with 10 bit and tune 0 even slower
2022-08-06 12:06:37
this is a normal cpu 3 settings
Fox Wizard
2022-08-06 12:51:59
Are you using a potato? <a:DogeScared:926955696669466636>
fab
2022-08-06 01:33:07
i3 330m
2022-08-06 01:33:28
basically is like using xiaomi mi11 lite 5g for encoding
Fox Wizard
2022-08-06 01:54:27
That's... oh no. No wonder it's taking that long <:KekDog:884736660376535040>
fab
2022-08-06 01:59:47
Can you do in 20 minutes with modern laptop processors?
Fox Wizard
2022-08-06 02:10:40
No idea tbh. Can't say I ever use laptops <:KekDog:884736660376535040>
diskorduser
2022-08-06 02:37:07
Poor cpu doing heavy work
fab
diskorduser Poor cpu doing heavy work
2022-08-06 03:04:46
Why all people says only this all the time?
diskorduser
2022-08-06 03:07:06
Because encoding avif on cpu is a heavy work.
2022-08-06 03:07:20
Especially on that processor
fab
diskorduser Because encoding avif on cpu is a heavy work.
2022-08-06 03:27:01
Yes i know encoding HTML screenshot Is superslow
2022-08-06 03:27:18
43 minutes for 440x22000
2022-08-06 03:27:21
S6
2022-08-06 03:38:06
2022-08-06 03:38:07
That's how Wikipedia works
w
2022-08-08 02:18:15
omg free nitro from steam!?
2022-08-08 02:18:45
<:uhoh:650565843851280384>
Demez
2022-08-08 02:33:41
lol
Brinkie Pie
2022-08-09 10:52:23
I think the bots just search the web for open invite links, similar to how you can (and do) get email spam even as a non-popular person.
Fox Wizard
2022-08-09 01:19:25
That and people who fall for scams which causes their accounts to be used for spamming ~~like those very obvious free Nitro scams XD~~
JendaLinda
2022-08-09 02:32:50
Oh those spammers have such terrible life. They have no friends. Nobody likes them. They're so unappreciated. They just need some love and attention but they're going about it the wrong way.
w
2022-08-10 05:55:47
<:weirdge:778473410341896222>
2022-08-10 12:07:56
can someone delete that
_wb_
2022-08-10 08:45:26
https://twitter.com/pantrymoth/status/1557085719318990850?t=370DSHfOgypfsGL5zyPgCQ&s=19
2022-08-10 08:45:50
I wonder if jxl's noise generator can be abused to generate that
yurume
2022-08-10 08:49:32
is it a *single* particular image?
BlueSwordM
yurume is it a *single* particular image?
2022-08-10 08:49:57
It's similar to blue noise dithering.
2022-08-10 08:50:02
Very important thing ๐Ÿ˜„
_wb_
2022-08-10 08:50:08
Frame 0: reference-only, solid gray with noise Frame 1: 8x upsampling, patch from frame 0 (which gets upsampled using some suitable kernel) Frame 2: 4x upsampling, patch from frame 0 at different offset, alpha at constant 0.5, blended with frame 1. Etc.
yurume
2022-08-10 08:50:24
yeah, I assumed it's just a general introduction to Perlin noise, not that particular noise
_wb_
2022-08-10 08:50:36
Would that work or did we define patches in a way that doesn't make that work?
2022-08-10 08:52:35
Another approach would be to use some chaotic modular cellular automaton to directly generate something that is close enough, something involving Weighted predictor probably
yurume
_wb_ Frame 0: reference-only, solid gray with noise Frame 1: 8x upsampling, patch from frame 0 (which gets upsampled using some suitable kernel) Frame 2: 4x upsampling, patch from frame 0 at different offset, alpha at constant 0.5, blended with frame 1. Etc.
2022-08-10 08:53:51
thinking about that, I think this is not exactly Perlin noise, and is generally called https://en.wikipedia.org/wiki/Value_noise
_wb_
2022-08-10 08:55:30
<@768090355546587137> has an ancient webpage about this: https://lodev.org/cgtutor/randomnoise.html
fab
fab
2022-08-13 10:13:19
<@794205442175402004> this has difficulty to retain noise in new cjxl binary
2022-08-14 12:33:49
there is a way to force jpeg xl to retain noise is
2022-08-14 12:33:50
for %i in (C:\Users\Use\Documents\SE\*.png) do cjxl --progressive -d 0.341 --intensity_target=292 --gaborish=0 -e 9 --modular_predictor=1 --keep_invisible=1 "%i" "%i.jxl"
2022-08-14 12:34:03
with the fix
2022-08-14 12:34:08
2022-08-14 12:34:12
without the fix
2022-08-14 12:34:21
2022-08-14 12:34:30
for %i in (C:\Users\Use\Documents\SEVEN\*.png) do cjxl -d 1 -e 7 "%i" "%i.jxl"
Jyrki Alakuijala
_wb_ I wonder if jxl's noise generator can be abused to generate that
2022-08-15 05:16:57
no
_wb_
2022-08-15 05:24:06
Well not directly, of course โ€” jxl's noise is pixel-sized
2022-08-15 05:24:57
But maybe in combination with repeated upsampling and blending, something can be done
Jyrki Alakuijala
2022-08-15 05:57:54
I think better chances with palette and context tree magic
_wb_
2022-08-15 06:38:31
Yes, this kind of jxl art can produce various kinds of natural looking textures: https://jxl-art.surma.technology/?zcode=c8osSUktKMlQMDTgCs9MATOMTLg8UjPTM0og7NCC4sTcgpxUBUOuIOcQBVMursw0hUoFO6CsAZeCApAT7u4B5OoaAnkKCroKjmXp4dp-CsYIrp-2n6uCrjFUNVCtAVQuHGxPagpCc3BqiYIR0GAA
2022-08-15 06:38:36
Jyrki Alakuijala
2022-08-15 07:01:55
โค๏ธ
fab
2022-08-16 03:17:32
what is libjxl tiny
2022-08-16 03:17:40
https://github.com/libjxl/libjxl-tiny/pull/15/files
improver
2022-08-16 03:52:56
a tiny libjxl
_wb_
2022-08-16 04:57:00
Goal is to make a simple encoder, a bit worse than libjxl but much less code and maybe a bit faster. Will be used to help design a hardware implementation.
fab
2022-08-16 05:18:13
Will use to improve Picture quality of libjxl encoder?
_wb_
2022-08-16 06:13:32
No
2022-08-16 06:15:38
Its goal is to preserve as much density and quality as possible while also reducing the complexity of the encoder, to get something that is simple enough to eventually turn into a cheap chip to put in cameras.
diskorduser
2022-08-16 06:16:15
So brotli gets hw encoder and decoder too?
_wb_
2022-08-16 06:16:37
Nah, jxl doesn't really need brotli
2022-08-16 06:17:16
Brotli is only used for metadata and jpeg reconstruction data, both of which are optional
diskorduser
2022-08-16 06:18:06
I know. So uncompressed data for hw implementation?
_wb_
2022-08-16 06:18:28
I don't think things like brotli and gzip would benefit much from hw anyway
yurume
2022-08-16 06:19:04
I guess there would be no metadata to begin with for most HW applications
2022-08-16 06:19:38
you don't really need jbrd, while XMP and Exif can be probably pre-compressed
_wb_
2022-08-16 06:20:05
Yes, either there is no or very little metadata so uncompressed is fine, or they can do the metadata compression separately in software, or just keep it uncompressed which is what they currently do (Exif in JPEG is just uncompressed)
yurume
2022-08-16 06:20:41
it does need to compress an ICC profile, but that also rarely changes
_wb_
2022-08-16 06:21:15
The preview image is typically the largest thing in Exif, but that is better done as a native jxl preview
2022-08-16 06:22:09
Enum colorspaces don't need compression, and they cover all sane RGB colorspaces
2022-08-16 06:22:44
Cameras don't shoot in CMYK, which is the only thing you really need actual non-Enum ICC profiles for in jxl
diskorduser
2022-08-16 06:26:27
Is modular jxl difficult to implement on hardware? I hope they don't omit it
username
2022-08-16 06:30:37
I would guess that most hardware implementations would be used for stuff like cameras of which lossy does pretty well with photos so modular will probably be not present. and also I have never really heard of a equivalent in the past like say for example a hardware png encoder
yurume
2022-08-16 06:31:59
there exist hardware PNG encoders, but they seem to fix the Huffman table
diskorduser
2022-08-16 06:33:13
Modular is important for raw/dng.
_wb_
2022-08-16 06:55:44
An encoder can pick a simple subset of modular, like fjxl did. It needs to implement some of modular in any case because all encode modes use it. VarDCT uses it for the 1:8 LF image, the map of which block types are used where, the adaptive quantization weights, the chroma from luma multipliers, the epf filter strength map, and custom quantization tables. Most of those are optional and could be a constant value (which doesn't require a real modular implementation), but the LF image is not optional.
2022-08-16 07:02:33
I wonder to what extent raw/dng will still be that useful if you can just do a d0.3 lossy jxl that preserves all the dynamic range the sensor can capture (so adjustments can still be done). Of course some pros will still want to do manual debayering and avoid even the tiniest dct artifact and generation loss, but I think in nearly all use cases a very high quality jxl would be as good as a raw and a lot more convenient (more software support, smaller size, no need for embedded previews etc).
fab
2022-08-17 04:03:59
I edited the JPEG XL italian article
2022-08-17 04:04:35
Also av1 article
2022-08-17 04:05:06
The only thing i didnt was to precise 1.2.1-3 is out
2022-08-17 04:05:12
Of SVT av1
2022-08-17 05:56:08
Is Jon dyslexic?
Brinkie Pie
2022-08-17 07:36:15
I think there's discord bots that try to take care of spam automatically
_wb_
2022-08-17 07:37:00
the main source of spam is the integration with Matrix
fab
2022-08-17 07:55:23
Latest svt vs jxl
2022-08-17 07:55:39
Svt 143 kb sharp
2022-08-17 07:55:48
Jxl 103 kb
2022-08-17 07:55:54
Less sharp
2022-08-17 07:56:05
More resampled
2022-08-17 07:56:24
But overrall higher Nicky jam Niko pandetta sharpness
2022-08-17 07:56:44
They look sharper than all image
2022-08-17 07:58:28
2022-08-17 08:00:28
Svt looks so daala in the first
2022-08-17 08:10:01
D 0.886 s 9 is the best for jxl
2022-08-17 08:13:03
D 0.464 epf 0 s9 is what I recommend
2022-08-17 08:23:26
D
2022-08-17 08:23:37
Discord isn't working anymore for me
2022-08-17 08:23:41
Too problems
2022-08-17 08:23:46
I must quit
2022-08-17 08:24:23
Firefox Windows 7 notepad when i press enter it makes a space and don't upload the post
2022-08-17 08:25:12
The new bluecord version is bugged with the chinese font i have
2022-08-17 08:25:22
It's 22:25
2022-08-17 08:25:32
I have not watched reddit
2022-08-17 08:25:44
Local news i didnt read
2022-08-17 08:25:49
Even shower
2022-08-17 08:25:57
Nothing i did todau
2022-08-17 08:28:17
Discord already shows the copy messages with the graph paranthesis
2022-08-17 08:28:31
I hate it, i can't copy nothing
2022-08-17 08:28:47
My font are messy to do this stuff
2022-08-17 08:29:14
2022-08-17 08:30:34
Many programs promise the compatibility with Windows 7 when the reality is that you can't do nothing
2022-08-17 08:30:57
Honestly keyboard looks better with jxl
2022-08-17 08:31:08
Even android keyboard
Jyrki Alakuijala
diskorduser I know. So uncompressed data for hw implementation?
2022-08-22 10:00:02
libjxl-tiny is a feasibility study that gives some guidance for hardware implementors -- but hw guys will make their own design. Some guidance on what to leave out can be found from the compromise that Zoltan will give in libjxl-tiny.
daxpedda
2022-08-23 01:41:01
I'm having some problem with the specification I can't make any sense of the Distribution Clustering decoding. Specifically I can't figure out how to calculate `num_clusters`. In C.2.2 it says: > The decoder then initializes a symbol decoder using a single distribution D, as specified in C.2.1. For each pre-clustered distribution i, the decoder reads an integer as specified in C.3.3. I have no clue what "distribution D" means here, I feel like "C.2.1" and "C.3.3" are not correctly referenced here, maybe some of them where moved in the past and not corrected here. I did look at the reference implementation, but can't seem to find anything in the spec that correlates to whats going on there.
Greg Benz
2022-08-23 03:31:38
Anyone know of a way to create an HDR JXL from a source image which is 32-bit (ideally) or 16-bit PNG? I just tried CJXL on a 16-bit PNG which shows as HDR in Photoshop, and the resulting JXL does not show as HDR in Chrome. I am able to see valid HDR AVIF in Chrome but do not know yet if Chrome properly supports HDR JXL (ie unclear if I'm seeing clipped data because of the conversion or Chrome), so... I then did a reverse conversion via DJXL to bring that JXL back to PNG to see how the round tripped image would look in Photoshop, and the twice converted image was no longer HDR in Photoshop. The image is clipped to SDR values.
yurume
daxpedda I'm having some problem with the specification I can't make any sense of the Distribution Clustering decoding. Specifically I can't figure out how to calculate `num_clusters`. In C.2.2 it says: > The decoder then initializes a symbol decoder using a single distribution D, as specified in C.2.1. For each pre-clustered distribution i, the decoder reads an integer as specified in C.3.3. I have no clue what "distribution D" means here, I feel like "C.2.1" and "C.3.3" are not correctly referenced here, maybe some of them where moved in the past and not corrected here. I did look at the reference implementation, but can't seem to find anything in the spec that correlates to whats going on there.
2022-08-23 03:33:46
`num_clusters` is implicit (not directly encoded), it is defined to be the maximum of each `cluster[i]` plus 1.
daxpedda
2022-08-23 04:30:12
is this mentioned in the specification anywhere?
2022-08-23 04:33:24
<@268284145820631040> https://gist.github.com/lifthrasiir/137a3bf550f5a8408d4d9450d026101f#file-j40-h-L1752-L1756 what is this magic you are doing here? is this some nice efficient way to determine maximums?
yurume
2022-08-23 04:35:05
uh, so the cluster map is a length-defined array of unsigned integers, which bound is implied from the prefix code or ANS distribution
2022-08-23 04:35:24
once they are read you can compute the maximum value to determine the actual number of clusters used
DuxVitae
2022-08-23 04:35:31
Anyone know of a way to create an HDR
yurume
2022-08-23 04:35:54
in that particular code I'm also testing whether there is an unused cluster (not "seen"), which is an error according to the spec
daxpedda
2022-08-23 04:39:18
yeah okay, maybe I will understand this when I get a bit further just to get this right, to determine `num_clusters` I find the biggest number in `cluster[i]` plus 1?
yurume
2022-08-23 04:39:34
yes
2022-08-23 04:40:30
the draft spec and libjxl makes sure that `num_clusters <= 256` as well, so if you are concerned about reading out-of-bound integers, that's how you prevent that
daxpedda
2022-08-23 04:41:19
aaaah, so that's what this is ... I get it now ๐Ÿ˜„
yurume
2022-08-23 04:41:31
sorry for a cryptic C speak lol
daxpedda
2022-08-23 04:42:09
all good, just didn't do C in a long while, I feel a bit sick every time I look at it now
yurume
2022-08-23 04:42:23
C makes me sick as well ๐Ÿ˜‰
2022-08-23 04:43:05
honestly speaking I didn't know that j40 would be 6000+ lines of C code, if I knew that I would have chosen Rust haha
daxpedda
2022-08-23 04:46:02
I looked into the code <@179701849576833024> has written so far, I really like the approach with the proc-macros, it makes the code much cleaner and easier to read (after you understand the proc-macro) and avoids a lot of errors that naturally come with hand-written code
yurume
2022-08-23 04:46:33
AFAIK that's a natural translation from libjxl, which had a same sort of Fields code
2022-08-23 04:47:03
but in Rust you can't have undefined fields in structs at all anyway, so that makes a hand-written code much more safer
daxpedda
2022-08-23 04:47:46
I have a question about the specification so, I understand that this is under ISO, which means that ISO owns the specification and it can't just be easily shared, legally I don't know exactly how to maintain a JPEG-XL decoder open source project without being able to properly link to the specification in code or in issues and PRs in addition, considering the specification is kinda awful to read, in my humble opinion, I would like to provide feedback, also plenty of errors as you guys already know also, it would be nice to see draft iteration, to make it easier to update code is this possible legally? basically keep the draft open source and public but let the specification be closed behind ISO?
2022-08-23 04:49:19
alternatively, if this can't work, is it legal to upload the "leaked" draft, as part of the repo for example?
_wb_
2022-08-23 04:51:34
It is all a bit of gray zone, but bottom line is that ISO owns the copyright and can sue people who illegally distribute specs
daxpedda
2022-08-23 04:51:47
yeah, but what about the draft?
_wb_
2022-08-23 04:52:02
Now how exactly it works with drafts is not very clear
yurume
2022-08-23 04:53:49
given ISO C/C++ WG are regularly publishing drafts including those almost identical to the IS, there seems no actual hurdle at least from ISO if an WG wants to do so
2022-08-23 04:54:43
but I don't know if things greatly differ between different SCs (C/C++ are JTC1/SC22 while JPEG is at JTC1/SC29)
_wb_
2022-08-23 04:55:50
I tried to get the green light from JPEG to make the spec drafting repo public but they didn't give me the green light
daxpedda
2022-08-23 04:56:27
bribe them with cookies plz
2022-08-23 04:57:18
I really think this is incredibly unfortunate, I've worked with plenty of IETF specs before and the amount of feedback they get from the open source community is incredible ... JPEG is missing out
_wb_
2022-08-23 05:00:31
I agree, but I don't really see a way to improve the situation. Other JPEG members are worried about ISO burocrats getting mad at them, so I don't get consensus to make the spec drafting repo public. If I unilaterally do it anyway, other JPEG members will get mad at me.
2022-08-23 05:02:05
Even though everyone in JPEG sees the advantages of having open access to (draft) specs, they don't really seem to have the guts to stand up to ISO.
daxpedda
_wb_ I agree, but I don't really see a way to improve the situation. Other JPEG members are worried about ISO burocrats getting mad at them, so I don't get consensus to make the spec drafting repo public. If I unilaterally do it anyway, other JPEG members will get mad at me.
2022-08-23 05:02:14
I understand of course, apologies, I think I was kinda venting some frustration here
_wb_
2022-08-23 05:04:09
The gray zone I can work with is leaking drafts in a plausibly non-public way, i.e. not on a public website, but in a 'private' space like this discord.
yurume
2022-08-23 05:04:11
I personally don't like this "solution", but one possibility is a parallel "guide" document that is detailed enough to implement everything without the actual spec
2022-08-23 05:04:46
I learned, for example, ASN.1 DER/BER via http://luca.ntop.org/Teaching/Appunti/asn1.html which was pretty enough for my purpose
2022-08-23 05:05:04
I don't like this because this is very hard to maintain
_wb_
2022-08-23 05:05:30
Yes, at some point I want to make a jxl book that basically contains an annotated spec as one of its main parts
2022-08-23 05:05:50
But that only makes sense if the spec is bug-free and final
2022-08-23 05:06:27
Atm it's still a buggy draft of a spec, tbh
daxpedda
2022-08-23 05:07:18
I would be very happy to contribute to something like that, I'm doing my own little "guide" as I'm going along anyway
yurume
2022-08-23 05:11:12
just in case, are you writing a (presumably Rust) code in progress?
2022-08-23 05:11:40
or are you reading the draft to make sense of it?
daxpedda
2022-08-23 05:13:12
I'm currently just reading the draft and test parsing some things by hand to see if I understand it correctly
2022-08-23 05:13:31
but the plan is to write a Rust library
yurume
2022-08-23 05:14:56
yeah, I thought if you already had some code I would join
daxpedda
2022-08-23 05:15:25
I will make it public as soon as I write my first line of code and post it here!
2022-08-23 05:15:52
(just changed my name on this server to match my GitHub profile)
yurume
2022-08-23 05:16:55
I do have some code sketches in Rust, but not really working together
2022-08-23 05:17:57
it might be the case that I'm thinking too far beyond and don't make an actual progress
daxpedda
2022-08-23 05:20:13
would you be interested in re-using <@179701849576833024>s work? (I think I asked this before)
veluca
2022-08-23 05:20:54
You can also take over the repo and write whatever you want as far as I'm concerned ๐Ÿ˜‰
yurume
2022-08-23 05:20:54
I'm actually not sure, I originally wanted to roll my own but that might not be really productive
improver
2022-08-23 05:20:59
i think veluca's stuff was very declarative & indirect
2022-08-23 05:21:05
and also faulty in places back when i checked
daxpedda
2022-08-23 05:21:13
I was thinking of forking it, cleaning it up and and continuing from there
yurume
2022-08-23 05:21:22
I do feel that Fields are very hard to understand
veluca
daxpedda I was thinking of forking it, cleaning it up and and continuing from there
2022-08-23 05:22:02
You can also work in the repo directly ๐Ÿ˜› (or at least as far as I'm concerned)
improver
2022-08-23 05:22:10
what have you written rust wise so far? maybe i could just integrate my rust stuff on top of that
veluca
2022-08-23 05:22:18
I can even review if you want
yurume
2022-08-23 05:22:41
if you want to see what I was aiming for, this is my sketch of SizeHeader: ```rust #[derive(Debug)] pub(crate) struct SizeHeader { width: u32, height: u32, } impl Decodable for SizeHeader { fn read_from(&mut self, br: &mut BitReader) -> DecodeResult<SizeHeader> { let div8 = read!(br, div8 = Bool()); let height = if div8 { implied!(height = read!(br, h_div8 = 1 + u(5)) * 8) } else { read!(br, height = U32(1 + u(9), 1 + u(13), 1 + u(18), 1 + u(32))) }; let width = match read!(br, ratio = u(3)) { 1 => height, 2 => (height as u64 * 6 / 5) as u32, 3 => (height as u64 * 4 / 3) as u32, 4 => (height as u64 * 3 / 2) as u32, 5 => (height as u64 * 16 / 9) as u32, 6 => (height as u64 * 5 / 4) as u32, 7 => height * 2, _ => { if div8 { implied!(width = read!(br, w_div8 = 1 + u(5)) * 8) } else { read!(br, width = U32(1 + u(9), 1 + u(13), 1 + u(18), 1 + u(32))) } }, }; Ok(SizeHeader { width, height }) } } ```
improver
2022-08-23 05:23:45
i have stuff like ```rust pub fn read_size_header(&mod self) -> Result<SizeHeader> { let mut x: SizeHeader; let small = self.read_bool()?; if small { x.height = self.read_u(5)?; x.height = (x.height + 1) * 8; } else { x.height = self.read_dist_u32(Bits(9), Bits(13), Bits(18), Bits(30))?; x.height++; } let ratio = c.read_u(3)?; if ratio == 0 { if small { x.width = self.read_u(5)?; x.width = (x.width + 1) * 8; } else { x.width = self.read_dist_u32(Bits(9), Bits(13), Bits(18), Bits(30))?; x.width++; } } else { match ratio { 1 => x.width = x.height, 2 => x.width = x.height * 12 / 10, 3 => x.width = x.height * 4 / 3, 4 => x.width = x.height * 3 / 2, 5 => x.width = x.height * 16 / 9, 6 => x.width = x.height * 5 / 4, 7 => x.width = x.height * 2 / 1, _ => unreachable!(), } // specification doesn't mention it but limit anyway if x.width > 1<<30 { return Err(Error::new(ErrorKind::InvalidData, "resulting width exceeds 2^30")); } } Ok(x) } ```
veluca
2022-08-23 05:24:31
(fwiw the spec defines level that *do* limit the width :P)
improver
2022-08-23 05:24:46
draft ive read didn't, i think
2022-08-23 05:24:50
oh
2022-08-23 05:24:55
level
2022-08-23 05:25:00
maybe not at decoder site tho
yurume
2022-08-23 05:25:00
yes, but SizeHeader doesn't have to know about profiles ๐Ÿ˜‰
veluca
2022-08-23 05:25:22
Sure but my point was that if you want to limit it, best limit it to a level
improver
2022-08-23 05:25:25
it just doesnt feel fair to allow decoding something unintended
2022-08-23 05:26:38
and uhh i guess i should probably change it to something "probably limited by all levels mentioned in spec"
2022-08-23 05:26:48
either way it's impossible to represent without using ratio
2022-08-23 05:26:55
which is why ive put it there
2022-08-23 05:27:24
as u can read max of 2^30
yurume
2022-08-23 05:27:42
I do have the same sort of limit in j40, but only because I don't want to use `uint32_t` specifically for width
2022-08-23 05:28:25
in Rust signed and unsigned types do not mix so there is no reason to disallow 2^31 width
2022-08-23 05:28:31
at least in decoders
improver
2022-08-23 05:30:43
there is a reason imo - it opens doors for something not really properly defined and conceptually dirty - you can't specify it going so high without using ratio, so its not really 2^31
daxpedda
veluca Sure but my point was that if you want to limit it, best limit it to a level
2022-08-23 05:31:09
I would love to take you up on the offer for review I don't mind contributing directly to jxl-rs instead of forking it, but I would like to test first if I don't want to make any large scale changes and get your approval first so I will do the following, I will come up with some sort of decoding proc-macro of my own and let you guys take a look to see if it's good or not, and you can tell me if it's a good improvements to integrate into jxl-rs
veluca
2022-08-23 05:31:30
Sounds good to me
2022-08-23 05:31:49
You can also drop the black magic to produce a .tex description of the fields, btw ๐Ÿ˜›
daxpedda
2022-08-23 05:32:07
ahaha, alright ๐Ÿ˜„
Jyrki Alakuijala
2022-08-23 05:53:46
please write to https://bugs.chromium.org/p/chromium/issues/detail?id=1178058 why we need JPEG XL
2022-08-23 05:54:30
Chrome's next review to consider enabling/keeping/removing JPEG XL is coming up
2022-08-23 05:54:51
they will only read this bug and disregard other evidence
Fraetor
2022-08-23 06:14:38
This is what I've got. I don't know whether it is worth adding, as I'm hardly an authority. https://www.frost.cx/2022/why-jpeg-xl
_wb_
2022-08-23 07:07:52
<@604964375924834314> what's the syntax again for telling cjxl that a ppm input should be interpreted as rec2100 PQ?
2022-08-23 07:08:03
(and does that still work in current cjxl?)
spider-mario
2022-08-23 07:08:38
```cjxl -x color_space=RGB_D65_202_Rel_PeQ``` and yes
_wb_
2022-08-23 07:10:15
Thanks!
2022-08-23 07:15:48
This is kind of hard to remember, we could use at least some info in the help screen about it, and maybe also some shorthand notation (something like `cjxl --input_color rec2100pq`, with other options being e.g. srgb, adobe98, prophoto, displayp3, dcip3, rec2100hlg, and it showing a list of those when passing an unrecognized one)
Jyrki Alakuijala
Fraetor This is what I've got. I don't know whether it is worth adding, as I'm hardly an authority. https://www.frost.cx/2022/why-jpeg-xl
2022-08-24 09:02:12
Consider linking your writing to the bug, just a single line comment is enough for Chrome guys to discover your opinions
gurpreetgill
Jyrki Alakuijala Chrome's next review to consider enabling/keeping/removing JPEG XL is coming up
2022-08-24 02:18:31
hey Jyrki! Do we have an exact date on when's the next review!
Jim
2022-08-24 02:21:50
They are very different. Chrome devs are much more open to people posting their ideas as long as they are on-topic. On the other hand, Mozilla only wants "new" reasons that haven't been stated previously. Though you can vote for the issue if you support it (and I encourage you to do so to let them know there is a large interest in it). I've heard there's also a split among Firefox developers. Older developers are almost universally against adding any new formats while younger devs do want to add at least JXL and maybe WebP2 (though development of this format has slowed considerably over the last year).
Jyrki Alakuijala
gurpreetgill hey Jyrki! Do we have an exact date on when's the next review!
2022-08-24 02:32:08
The review is on 2022-08-29
2022-08-24 02:32:46
it would be nice to get everything in long before the review, as soon as possible
2022-08-24 02:33:38
yes -- a very senior Chrome lead has asked me to collect the support in that bug
Traneptora
2022-08-27 04:51:50
just added my two cents https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c68
Jim
2022-08-28 08:01:52
I've always thought JXL should be part of the Alliance for Open Media. I know it's basically controlled by Google and will likely never accept it, but having open formats that cover a large swath of things (low fidelity, high fidelity, lossless, video, etc) should be their goal. It shouldn't have just stopped at AV1/AVIF.
Fraetor
2022-08-28 09:48:20
JPEG XL was developed by the JPEG committee, which is a workiong group of the ISO. As such it is an ISO standard.
yurume
2022-08-28 09:59:11
the same standard can be submitted to multiple standard organizations in principle
Fraetor
2022-08-28 10:06:20
I think part of the issue is that the ISO has copyright over the standard.
2022-08-28 10:06:50
I think you could do it so long as you entirely rewrite the entire standard.
BlueSwordM
Jim I've always thought JXL should be part of the Alliance for Open Media. I know it's basically controlled by Google and will likely never accept it, but having open formats that cover a large swath of things (low fidelity, high fidelity, lossless, video, etc) should be their goal. It shouldn't have just stopped at AV1/AVIF.
2022-08-28 11:20:43
The problem is not Google. It is ISO itself.
w
2022-08-29 02:23:10
is this from the matrix bridge
username
2022-08-29 02:24:30
probably, I would assume that's why they are marked as a bot
w
2022-08-29 03:07:47
does anyone actually use matrix
diskorduser
2022-08-29 04:59:07
Me
w
2022-08-29 05:58:25
does anyone actually use matrix for this server
OkyDooky
2022-08-29 06:01:35
yes
Jyrki Alakuijala
2022-08-29 02:24:58
last chance to contribute to the fate of JPEG XL in Chrome before it gets decided in 30 min ๐Ÿ™‚
2022-08-29 02:25:18
participate here https://bugs.chromium.org/p/chromium/issues/detail?id=1178058
Traneptora just added my two cents https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c68
2022-08-29 02:26:35
perfect!
Fraetor JPEG XL was developed by the JPEG committee, which is a workiong group of the ISO. As such it is an ISO standard.
2022-08-29 02:28:06
99.999 % (or more) was developed outside of the JPEG committee and within Google and Cloudinary.
2022-08-29 02:28:31
these developments were then brought into the JPEG committee and standardized there
2022-08-29 02:29:04
nothing related to psychovisual modeling or compression was developed in the committee, that was all brought in
2022-08-29 02:29:28
the JPEG committee was smart enough not to change it, however
2022-08-29 02:30:08
there were some requirements that were reflected from requests by JPEG committee members, like ISOBMFF structure vs. plain code stream
2022-08-29 02:30:22
they did come up with the name
2022-08-29 02:31:11
also profiles (5 and 10) were probably a consequence of JPEG committee thinking
fab
2022-08-29 02:52:35
Made a stupid comment
_wb_
2022-08-29 02:53:57
The name "JPEG XL" was decided very early in the process, it was chosen before the Call for Proposals was issued and certainly before it was known on what proposals it would actually be based and who would be working on it.
2022-08-29 02:55:05
The main contribution of the JPEG committee was to bring together various proposals, including Pik and FUIF, and to 'force' us to collaborate and combine the best elements from both of them.
diskorduser
fab Made a stupid comment
2022-08-29 03:02:18
Bruh
Jim
2022-08-29 03:51:22
Don't think it's as dumb as the next comment. There are multiple implementations being worked on and at least I've seen Rust and WASM implementations already in the wild. In most cases having a "native code" implimentation will be slower and make things more confusing for people. Just having a C/C++ wrapper library is common for many formats and keeps the speed of the original encoder/decoder. If they are referring to having something like libjpeg-turbo, there's nothing stopping anyone from making such a thing... but why not contribute back to libjxl and help make it faster rather than making a separate library?
2022-08-29 03:51:40
Also, why would they be deciding on it "in 30 minutes?"
Fraetor
Jim Also, why would they be deciding on it "in 30 minutes?"
2022-08-29 03:56:00
There is a chrome meeting going on about it.
Jim
2022-08-29 03:56:36
Ah
fab
Fraetor There is a chrome meeting going on about it.
2022-08-29 03:56:38
Explain more
Jim
2022-08-29 03:59:11
Likely just what was said - the Chrome dev team are having a meeting and one of the agenda items is whether to start adding JXL support to the browser. I'm crossing my fingers it's a yes. ๐Ÿคž <:JXL:805850130203934781> It's really needed.
username
2022-08-29 04:03:09
I should have left a comment but I ended up not sadly, I was going to focus on how useful the progressive decoding would be since with other formats loading them on a slow connection is painful
2022-08-29 04:03:20
and my internet sucks so being a able to see full images in a lower quality would be amazing, I have encountered progressive jpegs in the past and they are great in that way unlike other formats which very slowly load from top to bottem and I can't even tell what the images are supposed to be
_wb_
2022-08-29 04:04:19
Also crossing my fingers. I wish I could attend this meeting, but it looks like it's a Google-only thing.
fab
2022-08-29 04:05:57
The ssimulacra2 don't change output size
_wb_
2022-08-29 04:06:21
output size of what?
2022-08-29 04:06:35
it is not used in libjxl in any way
fab
2022-08-29 04:06:40
Cjxl s7 d1
2022-08-29 04:06:57
Ok
_wb_
2022-08-29 04:07:37
it is just a new metric, maybe at some point it can be added to benchmark_xl and/or as an option for e8/e9 encoding, but atm it's just a metric
fab
2022-08-29 04:08:14
Did jxl have video inter as some time like with jxl2
2022-08-29 04:08:40
Is there someone Who will try to use JPEG XL for video?
2022-08-29 04:11:01
Like JPEG himself
Jim
2022-08-29 04:11:04
JXL wasn't made for video. If you mean the animation portion, I think it's just one jxl image after another, don't think there any P frames.
fab
2022-08-29 04:11:07
Or someone big
2022-08-29 04:11:28
Like to fork it
Jim
2022-08-29 04:21:58
You can if you're looking to try, but I don't see why you would do that. AV1 was designed for video and works well. JXL would likely produce a significantly larger file that may not be good for streaming - granted, it would likely be higher visual quality.
BlueSwordM
Jim You can if you're looking to try, but I don't see why you would do that. AV1 was designed for video and works well. JXL would likely produce a significantly larger file that may not be good for streaming - granted, it would likely be higher visual quality.
2022-08-29 04:29:05
Indeed.
2022-08-29 04:29:25
The biggest inter feature would be delta coding, which is what ffv1 has as well.
fab
2022-08-29 04:34:08
A full hd video of jxl can be decoded on i3 330m or xiaomi mi 11 lite 5g?
2022-08-29 04:35:00
Someone has made it possible?
JendaLinda
2022-08-29 04:44:33
I would use animated JXL in lossless mode for small animations. I suppose the goal was to replace GIF and APNG.
Jim
2022-08-29 04:47:55
Added my comment, a little late likely, but I noticed nothing was said about viewport sizes & container query units that would fit well with the responsive sizing feature.
_wb_
2022-08-29 05:03:41
I wish there was a public cross-browser discussion platform where decisions could be made on what codecs to support or not, on a basis of evidence and rational arguments.
2022-08-29 05:04:47
But sadly, Chrome just does its own thing, Safari does its own thing, and the others don't really have any impact at all on the web platform.
Demez
2022-08-29 05:08:30
that would be quite nice, yeah
paperboyo
2022-08-29 05:08:35
Is the scenario presented in https://bugs.chromium.org/p/chromium/issues/detail?id=1178058#c74 possible (browser just downloading not-yet-downloaded portion of an already-partially-downloaded file) how JXL progressive does already work? Or how it could work (if browsers/servers complied)? Or is it sci-fi?
_wb_
2022-08-29 05:21:02
It is how it could work. And it does come at some cost in filesize and decode speed, and requires browsers/servers to implement new logic. But the bitstream certainly does allow encoding e.g. a 1x image in a first pass and a 2x in a second pass, without redundantly storing the 1x info twice.
2022-08-29 05:31:24
Progressive and responsive are basically the same thing, and in theory you could even do this with progressive JPEGs, but that would be not very effective since 1) JPEG has no TOC so you need to externalize that functionality, 2) you need to respect zigzag order in progressive scan scripts in JPEG, which is not optimal for responsive images, and you also cannot revisit coefficient bits once they have been signaled (unlike jxl where you can e.g. zero coeffs in the 1x image but then make them nonzero in the 2x image)
2022-08-29 05:33:24
And of course 3) JPEG only does 8x8 DCT and has poor DC compression, so it is not very effective for 1:2 and certainly not for 1:4.
Jim
2022-08-29 06:20:40
On the server side, nothing needs to be supported. If content ranges are supported (most servers already support this), it will reduce the amount of bandwidth needed. Otherwise it has to re-send the entire image file each time a new viewport or container size is requested.
2022-08-29 06:27:00
Also, it might increase the filesize some, but its likely still far less total size than having 5-10 of the same image for each size you want to support.
_wb_
2022-08-29 06:41:03
For powers of two size factors it works well. For other factors not really. So you might still want to have something like a 200px, 400px, 800px image in one jxl file, and a 300px, 600px, 1200px image in another jxl file.
Traneptora
Jim JXL wasn't made for video. If you mean the animation portion, I think it's just one jxl image after another, don't think there any P frames.
2022-08-29 07:58:53
sorta
2022-08-29 07:59:31
subsequent frames can be smaller than the viewport, which only overwrites pixels within their rectangle
2022-08-29 07:59:51
but otherwise yes
_wb_
2022-08-29 08:01:57
well you can also do kAdd frame blending (i.e. subtract the previous frame from the current and encode the difference), use patches, and store up to 4 earlier frames to use as a basis for the next one
2022-08-29 08:02:25
for stuff like sprite-based animations, it's probably quite powerful
2022-08-29 08:03:34
something like a C64 or SNES emulator could in principle exploit this to make quite compact screen recordings since it knows what the sprites are when hardware sprite blitting is used...
2022-08-29 08:04:42
but it is true that all the inter tools of jxl are only there because they can also be useful for (layered) still images
2022-08-29 08:05:20
and we don't have any jxl encoder that tries to do something clever for animation
Jim
2022-08-29 08:13:01
Would be interesting if you could store the sprites in different hidden layers then size/position them in the visible frame as needed.
remsleep
2022-08-29 08:16:45
Likely just what was said the Chrome dev
_wb_
Jim Would be interesting if you could store the sprites in different hidden layers then size/position them in the visible frame as needed.
2022-08-29 09:17:04
You can do that. There are kReferenceOnly frames exactly for that purpose, used only to use as a source for Patches.
Jyrki Alakuijala
fab Did jxl have video inter as some time like with jxl2
2022-09-01 09:55:42
we don't have motion, but we can blend frames which may allow primitive delta coding -- we tried it out in late 2018 and out of ~13 sample videos one was better than h265
_wb_ well you can also do kAdd frame blending (i.e. subtract the previous frame from the current and encode the difference), use patches, and store up to 4 earlier frames to use as a basis for the next one
2022-09-01 09:56:52
this is pretty closely what we did -- we may have reused the adaptive quantization matrix, too, don't remember any more
2022-09-01 09:57:18
the promising results of that experimentation led to the kAdd frame
fab
2022-09-01 09:58:06
Does JPEG XL beat pingo a30 optimizer
2022-09-01 09:58:20
Why s7 is blocky in modular
2022-09-01 09:58:35
Is too fast at moment
Jyrki Alakuijala
2022-09-01 09:59:57
pingo is perfect at what it does, but it does a different thing than JPEG XL
2022-09-01 10:01:08
modular is not a competitive way to store lossy compression -- it is great for control fiels, lossless and palette-lossy
2022-09-01 10:01:40
if you start making loss in modular, it is okeyish in the psnr sense, but it will not look beautiful
fab
2022-09-01 10:01:56
Yes but some parts of jxl is modular
2022-09-01 10:02:38
Also has error this article https://en.m.wikipedia.org/wiki/JPEG_XL
2022-09-01 10:02:47
Because i added some italian things
2022-09-01 10:03:11
In the texhbical details
2022-09-01 10:03:22
And i do not if it will change
2022-09-01 10:03:54
Someone probably will readapt it
2022-09-01 10:04:24
Does it get read by JPEG XL commitee
2022-09-01 10:04:33
Does JPEG XL commitee exist
2022-09-01 10:04:42
Or is called only JPEG
2022-09-01 10:25:22
Pingo preserves more tattoo but quality is too sharp and does only aitomatic detection
_wb_
fab Does JPEG XL commitee exist
2022-09-01 11:11:23
there's a JPEG XL Ad-Hoc Group within the JPEG committee (which is formally known as Working Group 1 of SubCommittee 29 of the Joint Technical Committee 1 of the International Organization for Standardization and the International Electrotechnical Commission, i.e. ISO/IEC JTC1 / SC29 / WG1)
2022-09-01 11:12:45
using Modular for visual data is not really recommended in general, at least for photographic material, VarDCT will perform significantly better, both because it has more suitable coding tools and because it has a perceptually tuned encoder.
fab
2022-09-01 12:02:39
2022-09-01 12:03:06
Jxl s9 d1 vardct
2022-09-01 12:04:50
2 minutes and 10
2022-09-01 12:05:03
For 1 minutes and 40 of audio
2022-09-01 12:05:15
Average ram used 710 mb
2022-09-01 12:11:38
2.054178
2022-09-01 12:11:42
Average
2022-09-01 12:11:55
I'm doing heavier things
2022-09-01 12:12:04
Quality will be greater
2022-09-01 12:15:01
2022-09-01 12:16:55
That only modular 128 kbps
2022-09-01 12:19:04
From 132 kbps and up is decent
2022-09-01 12:20:28
E 9 q 96 gaborish 0 epf 2 dots 0 fsster decoding 1
2022-09-01 12:20:37
2 gb RAM used
2022-09-01 12:21:28
Though Is impressive like wma 174 kbps
2022-09-01 12:24:51
Though i think is 258 kbps at least
_wb_
2022-09-01 12:26:33
lol what are you doing? compressing audio with an image codec?
fab
2022-09-01 12:27:11
The volume will be different
2022-09-01 12:27:42
But i wanted to test if is audible
2022-09-01 12:35:11
2022-09-01 12:35:27
Without vardct is worse percetivly
_wb_
2022-09-01 01:14:11
if you take uncompressed audio and interpret it as an uncompressed image, I'm sure you can do something. E.g. take an uncompressed 16-bit wav, remove the wav header, replace it with a 16-bit ppm header, and voila, it is an image now
2022-09-01 01:14:53
the only thing is how to turn the 1D audio into a 2D image โ€” I suppose you can just pad it and pick an arbitrary number for the width to make the image more or less square
Fraetor
2022-09-01 01:17:25
For music maybe you could have it split where melodies change or something. That might help compression.
_wb_
2022-09-01 02:01:42
heh what is relevant for visual compression is very likely not very relevant for audio compression
ExpedientFalcon
2022-09-02 04:35:05
Hi, I'm looking for any docs specifically on the XYB colorspace, if someone has links for that? I'm looking to see if it can be used for optimizations in other video coding applications.
2022-09-02 04:50:54
Neat, thanks! I also found a tweet which links to how the conversion is done in butteraugli, which is hugely helpful, although it's from Linear RGB to XYB. *Ideally* there's a direct path from YUV to XYB but I'm not sure if that's feasible.
BlueSwordM
2022-09-02 05:15:57
Yeah, it'd be really nice if that actually existed, as it would make it far easier to use in other applications that are sadly limited to YCbCr sources.
_wb_
2022-09-02 05:21:40
Yuv to nonlinear rgb is easy enough
yurume
2022-09-02 05:24:16
XYB-to-RGB transformation is basically a non-linear per-channel function followed by a 3x3 matrix multiplication, and RGB-to-YCbCr is also just a 3x3 matrix multiplication so it can be combined
BlueSwordM
2022-09-02 05:25:18
Basically, here's what we want to do: YCbCr to XYB at input, XYB to YCbCr at output ๐Ÿ˜„
yurume
2022-09-02 05:26:47
jxl allows for different XYB transformation parameters, which makes it possible to produce an.... interesting image.
2022-09-02 05:37:22
as it stands I think jxl allows for free linear transformation across channels and arbitrary 3x3 convolution
2022-09-02 05:38:10
for example you can abuse gaborish to make a sobel-like filter
_wb_
2022-09-02 05:55:11
Yes, I have been thinking about using non-default gaborish to do a reversible sharpening/blurring effect just by fiddling with the header
2022-09-02 05:55:40
And similarly you could do some kinds of color adjustments by fiddling with custom xyb weights
2022-09-02 05:56:37
(that you could actually also do in jpeg/png by modifying the icc profile, I suppose)
Traneptora
ExpedientFalcon Hi, I'm looking for any docs specifically on the XYB colorspace, if someone has links for that? I'm looking to see if it can be used for optimizations in other video coding applications.
2022-09-02 09:19:08
https://discord.com/channels/794206087879852103/794206087879852106/1002706317061922909
2022-09-02 09:21:05
in particular, the opsin absorbance matrix can be left-multiplied by the yuv -> rbg matrix
2022-09-02 09:21:43
since this is a composition of a affine transforms, you can bake them together
2022-09-02 09:21:56
do note it is linear sRGB
2022-09-02 09:23:10
so if you have a nonlinear transfer, like Rec 709 you must first convert it to RGB, then apply the transfer to linearize it, then convert it to Opsin space before cuberooting
ExpedientFalcon
2022-09-02 09:23:36
Ah I see. That's a bit of a pain. I was hoping we'd be able to use magic math to make it one op.
2022-09-02 09:24:19
Given that generally we'll be working with either Rec.709 or PQ.
2022-09-02 09:24:57
Still, thanks for the info! Very helpful
Brinkie Pie
Jim On the server side, nothing needs to be supported. If content ranges are supported (most servers already support this), it will reduce the amount of bandwidth needed. Otherwise it has to re-send the entire image file each time a new viewport or container size is requested.
2022-09-03 10:30:33
I made a Proof of Concept of this with JPEG and service workers a few years ago, but both Chrome and Firefox were a bit buggy and sometimes rendered images as all-white when scrolling. [update: certainly not my finest piece of code; https://ba.jtbrinkmann.de/gallery/ loads a JSON with the list of images incl. byte count for each progressive scan, then uses `fetch` with a range header to load only a portion of the image file, depending on the dimensions needed; https://ba.jtbrinkmann.de/gallery/sw.html also includes a (broken) service worker implementation, which automatically sets the range headers depending on parameters in the image url, so you can use it in `<img>` for example]
BlueSwordM
2022-09-04 06:33:51
<@794205442175402004> How exactly is in-block RDO done currently in libjxl? I know it sounds like a strange question, but I'm currently looking at the differences in use and aptitude of in-block RDO vs normal block RDO, and it is rather interesting to see the differences in approach and how it is done.
_wb_
2022-09-04 07:54:48
<@179701849576833024>, <@532010383041363969> and @szabadka#0582 know more about that than me. Afaiu, we always first do block type selection (per 64x64 macroblock, segment it into the various block sized and types), then select the adaptive quantization weights. At effort 8+, this is done iteratively by evaluating butteraugli and adjusting weights. At lower effort, some kind of heuristics select the quantweights directly.
veluca
2022-09-04 08:48:35
Nah, we select the weights first ๐Ÿ˜‰
_wb_
2022-09-04 09:05:48
Really? Weights are chosen before blocktype is known?
2022-09-04 09:16:40
Why do I keep misremembering this
yurume
2022-09-04 10:02:21
I don't have a copy of 18181-2 so I'm not very sure about this, but is the header of the last codestream box (either jxlc or jxlp) guaranteed to be early in the container in normal cases? I know that an intentionally crafted container has no such guarantee, but if most container-based images utilizing jxlp have such guarantee my current design will surely work.
_wb_
2022-09-04 11:05:01
Currently libjxl makes one jxlp per frame in case of animation, so the last one can be arbitrarily far