|
_wb_
|
|
CrushedAsian255
is it literally just two jpegs concatenated, JFIF and everything?
|
|
2024-11-18 11:20:53
|
yes, with some app markers in both of them, in the original UltraHDR it's xml-based (XMP) stuff, in the new ISO version of it it's a more compact binary syntax
|
|
|
Demiurge
|
2024-11-18 11:21:12
|
Or at least enforce a layer limit of 2
|
|
|
CrushedAsian255
|
2024-11-18 11:21:14
|
so the jhgm or whatever it's called box contains another JPEG XL file, but that sub-JPEG XL file can't contain a jhgm itself
|
|
|
Demiurge
Or at least enforce a layer limit of 2
|
|
2024-11-18 11:21:31
|
why would the gainmap need a gainmap?
|
|
|
_wb_
|
|
Demiurge
You don't want infinitely nested matroyshka dolls though do you?
|
|
2024-11-18 11:21:58
|
it can only be infinite if the bitstream is infinite 🙂
|
|
|
CrushedAsian255
|
|
_wb_
yes, with some app markers in both of them, in the original UltraHDR it's xml-based (XMP) stuff, in the new ISO version of it it's a more compact binary syntax
|
|
2024-11-18 11:21:59
|
is the ISO version just UltraHDR but ISO?
|
|
|
_wb_
it can only be infinite if the bitstream is infinite 🙂
|
|
2024-11-18 11:22:31
|
you can't pull a TIFF and self-reference itself in its own field im guessing
|
|
|
Demiurge
|
2024-11-18 11:22:49
|
You want to know how much heap space you need ahead of time
|
|
|
_wb_
|
2024-11-18 11:22:59
|
the ISO version is an attempt by Apple/Adobe/Google/etc to unify their various flavors of gain maps into a single spec rather than them each doing their own thing that is very similar but with different syntax
|
|
|
Demiurge
|
2024-11-18 11:23:04
|
Memory allocations are a big deal
|
|
|
CrushedAsian255
|
|
CrushedAsian255
so the jhgm or whatever it's called box contains another JPEG XL file, but that sub-JPEG XL file can't contain a jhgm itself
|
|
2024-11-18 11:23:25
|
I think defining this in the spec should fix the problem of infinite nesting gainmaps
|
|
|
Demiurge
|
2024-11-18 11:24:32
|
It should be feasible for decoders to know ahead of time how much memory they will need and control/limit it during the decoding process for security and embedded hardware reasons
|
|
2024-11-18 11:25:15
|
Dynamic memory allocation is not always possible in every environment
|
|
|
_wb_
|
2024-11-18 11:25:49
|
we may want to do something slightly more generic that can also deal with motion JPEG and multi-picture format (MPF) files, which can have an arbitrary amount of JPEGs concatenated. If we want to handle that though, we'll probably need to find a way to embed multiple recompressed jpegs and their jbrds, probably best not by arbitrarily deep nesting but in some flattened way.
|
|
|
CrushedAsian255
|
|
_wb_
we may want to do something slightly more generic that can also deal with motion JPEG and multi-picture format (MPF) files, which can have an arbitrary amount of JPEGs concatenated. If we want to handle that though, we'll probably need to find a way to embed multiple recompressed jpegs and their jbrds, probably best not by arbitrarily deep nesting but in some flattened way.
|
|
2024-11-18 11:26:46
|
maybe nested boxes
|
|
2024-11-18 11:26:53
|
one layer deep
|
|
2024-11-18 11:26:55
|
an array of files
|
|
2024-11-18 11:27:12
|
and just forbid nesting within nesting
|
|
2024-11-18 11:27:24
|
like each nested file cannot itself contain nested files
|
|
2024-11-18 11:27:43
|
Motion JXL
wheeeeeeeeeeeeee
|
|
|
_wb_
|
2024-11-18 11:33:03
|
this is what I'm currently having in mind, but it's still to be discussed and will probably not be for the third edition of 18181-2 (which we plan to have quickly, just to add the gain map box) but rather for a fourth edition.
|
|
2024-11-18 11:34:23
|
|
|
|
CrushedAsian255
|
2024-11-18 11:35:46
|
what does the `k` stand for? is that just what enum items prefix with
|
|
|
_wb_
|
2024-11-18 11:35:49
|
this mechanism would then allow you to basically have a "reconstruction" for multi-frame jpegs but also just arbitrary stuff that doesn't need to involve a reconstructed jpeg, like putting a brotli-compressed svg in there that can be "reconstructed"
|
|
2024-11-18 11:36:38
|
yeah all enum values are prefixed with `k` for some reason, that's something we do consistently in all of 18181-1 and 18181-2
|
|
|
Tirr
|
2024-11-18 11:38:04
|
great, we can losslessly pack jpeg comic pages into single multipage jxl and add gbrd for all pages
|
|
|
CrushedAsian255
|
2024-11-18 11:38:28
|
Can I just store random data in gbrd?
|
|
|
_wb_
|
2024-11-18 11:38:45
|
well this is just a proposal, still needs discussion before it becomes spec, and still needs implementation before it can be used 🙂
|
|
|
CrushedAsian255
|
2024-11-18 11:39:12
|
Also maybe file extension shouldn’t be limited to 4 bytes
|
|
|
_wb_
|
|
CrushedAsian255
Can I just store random data in gbrd?
|
|
2024-11-18 11:39:35
|
my proposal would be to allow that, yes, so you can e.g. rasterize a vector image but still embed the source file in there too
|
|
|
CrushedAsian255
|
|
_wb_
my proposal would be to allow that, yes, so you can e.g. rasterize a vector image but still embed the source file in there too
|
|
2024-11-18 11:40:14
|
\*stores a zipbomb in your jxl\*
|
|
|
_wb_
|
2024-11-18 11:41:20
|
or you could take an iPhone DNG file, recompress the JPEG preview as the main jxl image and put the rest of the dng file in a gbrd box (minus the jpeg preview, which would be done via a kJPEG instruction)
|
|
|
CrushedAsian255
|
2024-11-18 11:41:46
|
How would you splice the jpeg preview back in?
|
|
|
_wb_
|
|
CrushedAsian255
\*stores a zipbomb in your jxl\*
|
|
2024-11-18 11:42:36
|
yeah obviously there are security implications/risks, but there's nothing preventing you from adding a random box with random contents to a jxl file anyway
|
|
|
CrushedAsian255
|
2024-11-18 11:43:38
|
I’m just worried that if too many features are added, it will become too powerful
|
|
|
_wb_
|
|
CrushedAsian255
How would you splice the jpeg preview back in?
|
|
2024-11-18 11:43:41
|
you'd just have some brotli-compressed dng header bytes, followed by an instruction to reconstruct the main image jpeg, followed by uncompressed bytes for the rest of the dng file
|
|
|
CrushedAsian255
|
2024-11-18 11:43:44
|
Like with what’s happened with USB C
|
|
2024-11-18 11:44:08
|
USB C can do everything but it’s a nightmare knowing what a specific device/port/cable can do
|
|
2024-11-18 11:44:34
|
JXL already supports multi-layered animated multi-page images
|
|
|
_wb_
|
2024-11-18 11:45:44
|
The gbrd box can be completely ignored by a jxl decoder, just like the jbrd box. It does not have any impact on how the image or animation is rendered. It just adds another mechanism to construct some other file from the jxl file.
|
|
|
w
|
2024-11-18 11:46:17
|
jxl is just like BMP
|
|
|
CrushedAsian255
|
2024-11-18 11:46:54
|
Just add an entire bytecode interpreter instruction to the gbrd so it can generate digits of Pi to add to the end of the file as EXIF metadata
|
|
|
_wb_
|
2024-11-18 11:49:59
|
I'd prefer to keep the "instruction set" of gbrd small and certainly not Turing complete.
|
|
|
CrushedAsian255
|
|
_wb_
I'd prefer to keep the "instruction set" of gbrd small and certainly not Turing complete.
|
|
2024-11-18 11:50:17
|
100%, I was joking
|
|
|
_wb_
or you could take an iPhone DNG file, recompress the JPEG preview as the main jxl image and put the rest of the dng file in a gbrd box (minus the jpeg preview, which would be done via a kJPEG instruction)
|
|
2024-11-18 11:51:24
|
Overall I do think this is a good idea, although things like security need to be thought out, like we don’t want JXL to be able to write out an EXE file
|
|
2024-11-18 11:51:57
|
Would djxl “run” the reconstruction automatically or would it be opt in
|
|
|
_wb_
|
2024-11-18 11:52:39
|
But yeah there are security risks with arbitrary 'metadata', now already: nothing prevents you from putting malware in the "Exif" data blob and then software extracting the Exif will write a file containing malware. I guess no harm should happen as long as no applications make the output an executable file and run it.
|
|
|
CrushedAsian255
Would djxl “run” the reconstruction automatically or would it be opt in
|
|
2024-11-18 11:54:27
|
I think for this kind of thing it could make sense to do it based on the extension: if you request a .png then it just decodes the image, if you request a .svg then it looks if there happens to be a gbrd box that can make that. That way basically a jbrd box becomes just a special case of a ".jpg" gbrd box.
|
|
|
CrushedAsian255
|
2024-11-18 11:55:07
|
Still think lossless png reconstruction would be nice, using something like preflate
|
|
|
_wb_
|
2024-11-18 11:55:24
|
but API-wise it would of course be opt-in, there would be a new function to do generic bitstream reconstruction and applications that don't know about it will just decode to pixels
|
|
|
CrushedAsian255
Still think lossless png reconstruction would be nice, using something like preflate
|
|
2024-11-18 11:57:57
|
that would require a more complicated reconstruction procedure, not sure if it's worth the hassle. For bit-exact archiving, sure it could be useful. But unlike jpeg recompression, the alternative of just encoding the pixels losslessly (and preserving all the metadata) would be effective too and semantically equivalent.
|
|
|
CrushedAsian255
|
2024-11-18 11:58:36
|
I guess it could be left as a vendor specific thing
|
|
|
spider-mario
|
|
CrushedAsian255
what does the `k` stand for? is that just what enum items prefix with
|
|
2024-11-18 12:18:15
|
https://google.github.io/styleguide/cppguide.html#Constant_Names https://google.github.io/styleguide/cppguide.html#Enumerator_Names
|
|
|
_wb_
|
2024-11-18 12:20:34
|
I still wonder why "k" though
|
|
|
spider-mario
|
2024-11-18 12:20:36
|
Apple’s Carbon API also used that style https://developer.apple.com/documentation/coreservices/carbon_core/carbon_core_enumerations/1556432-anonymous
|
|
|
_wb_
|
2024-11-18 12:20:48
|
konstant
|
|
|
spider-mario
|
|
Demiurge
|
2024-11-18 01:23:50
|
Not everything needs to be bit reversible. There are different levels of lossless :)
|
|
2024-11-18 01:24:41
|
And simplicity shouldn't be sacrificed if it's nontrivial
|
|
2024-11-18 01:26:12
|
I think it would be nice if there was a lossy jpeg mode that guarantees smaller files
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
spider-mario
|
|
2024-11-18 01:37:22
|
I always thought the (most common) standard was to use capital letters for separation for classes
and underscore for variable names
|
|
|
Foxtrot
|
2024-11-18 02:54:56
|
konstant sounds like constant but from KDE
|
|
|
Quackdoc
|
|
Foxtrot
konstant sounds like constant but from KDE
|
|
2024-11-18 02:55:21
|
[av1_dogelol](https://cdn.discordapp.com/emojis/867794291652558888.webp?size=48&name=av1_dogelol)
|
|
|
Demiurge
|
2024-11-18 03:19:31
|
I think it's a nextstep thing
|
|
|
jonnyawsom3
|
|
_wb_
I don't think that's possible, since the gain map spec doesn't even define which exact upsampling to use for the gain map, so it's rather horribly underspecified...
|
|
2024-11-18 06:07:20
|
I was going to say, if they're just using standard JPEG upsampling, then being a transcoded JXL could help quality a little bit :P
|
|
|
w
|
2024-11-19 01:58:48
|
capital case for classes and camel case for variables
|
|
2024-11-19 01:58:50
|
snake case is too new
|
|
|
CrushedAsian255
|
2024-11-19 02:18:56
|
capital case? you mean PascalCase?
|
|
2024-11-19 02:19:03
|
or do you mean SCREAMING_SNAKE_CASE?
|
|
|
TheBigBadBoy - 𝙸𝚛
I always thought the (most common) standard was to use capital letters for separation for classes
and underscore for variable names
|
|
2024-11-19 02:21:52
|
this is what i mostly do now
|
|
|
Demiurge
|
2024-11-19 10:53:11
|
It's more important to guarantee smaller files than to guarantee perfect reversibility back to an objectively worse format.
|
|
|
CrushedAsian255
|
|
Demiurge
It's more important to guarantee smaller files than to guarantee perfect reversibility back to an objectively worse format.
|
|
2024-11-19 11:38:06
|
In general, yes, especially for lossless formats
|
|
2024-11-19 11:38:35
|
For JPEG specifically the specialised jpeg to jxl mode is nice but for any other format it’s not important
|
|
2024-11-19 11:39:10
|
Just cause ther are so many JPEGs out there
|
|
|
Adrià
|
2024-11-22 01:22:47
|
Hi! Hyprpaper (the wallpaper app for the Hyprland) now supports JPEG XL: https://github.com/hyprwm/hyprpaper/pull/212
|
|
|
DZgas Ж
|
2024-11-29 11:00:01
|
any jxl viewer on Android exist? <:Android:806136610642853898>
|
|
|
A homosapien
|
|
DZgas Ж
any jxl viewer on Android exist? <:Android:806136610642853898>
|
|
2024-11-29 11:13:07
|
https://github.com/FossifyOrg/Gallery
|
|
|
DZgas Ж
|
|
A homosapien
https://github.com/FossifyOrg/Gallery
|
|
2024-11-29 11:25:46
|
It does not support animation. it does the decoding and displays the last frame. but it does not paly the animation frame by frame
|
|
|
A homosapien
|
2024-11-29 11:38:42
|
Yeah, I think there are no viewers on android right now that fully support jxl animation.
|
|
2024-11-29 11:39:19
|
Wait a second, let me test Tachiyomi (now known as Mihon)
|
|
2024-11-29 11:45:00
|
nope, no animation support
|
|
|
HCrikki
|
2024-11-29 12:55:08
|
in fossify its a limit inherited from the library it uses.
having base support is already great, animation at this time is optional good to have
|
|
2024-11-29 12:58:10
|
try a nightly of oupson, it was a rebuild of an old fossify that unexpectedly had better support of some bits. i expect any useful findings there to be shared with upstream
|
|
|
oupson
|
|
A homosapien
Yeah, I think there are no viewers on android right now that fully support jxl animation.
|
|
2024-11-29 07:20:13
|
https://github.com/oupson/jxlviewer
|
|
2024-11-29 07:20:45
|
(autopromotion <:kekw:808717074305122316> )
|
|
|
Quackdoc
|
2024-11-29 08:32:04
|
I do have a few images that dont work in fossify that do in jxlviewer
|
|
2024-11-29 08:32:34
|
eventually I want to look into making a rust viewer maybe using slint so that would be compatible, but unless the doc finds some meds that can take rsi pain away, that aint happening
|
|
|
A homosapien
|
2024-11-29 09:11:07
|
I thought there were keyboards for people suffering from RSI no?
|
|
|
Quackdoc
|
2024-11-29 09:27:00
|
they help prevent issues from getting worse, but they don't make it any better
|
|
|
A homosapien
|
2024-11-29 11:40:58
|
I see
|
|
|
jonnyawsom3
|
2024-11-30 03:47:45
|
Seems like someone took notes out of SpecialK's book thinking lossless is bad <https://github.com/Lyall/FFXVIFix/blob/d7fd303c66b7ae0d79fb217a73b25875c1e33265/FFXVIFix.ini#L76>
|
|
|
username
|
|
Seems like someone took notes out of SpecialK's book thinking lossless is bad <https://github.com/Lyall/FFXVIFix/blob/d7fd303c66b7ae0d79fb217a73b25875c1e33265/FFXVIFix.ini#L76>
|
|
2024-11-30 03:50:08
|
well I mean these settings where literally taken from or suggested by the SpecialK dev
|
|
2024-11-30 03:50:21
|
I forget which exactly
|
|
|
jonnyawsom3
|
2024-11-30 03:50:31
|
That certainly makes sense
|
|
|
VcSaJen
|
|
DZgas Ж
It does not support animation. it does the decoding and displays the last frame. but it does not paly the animation frame by frame
|
|
2024-11-30 08:33:17
|
I tested mpvKt, it does not support JPEG XL. Weird, desktop mpv supports it, looks like some libraries weren't compiled or something.
|
|
|
Quackdoc
|
2024-11-30 08:58:01
|
I don't think I made the PR to MPV android enabling jxl, I don't think anyone else did either
|
|
|
VcSaJen
|
2024-11-30 09:04:26
|
I thought it was a port of desktop version, not a complete re-implementation?
|
|
|
Quackdoc
|
2024-11-30 09:18:18
|
you have to setup build scripts and what not
|
|
|
Demiurge
|
2024-11-30 09:38:31
|
I heard people who switched to Dvorak after developing an RSI tend to claim it helped.
|
|
2024-11-30 09:39:03
|
The keyboard layout
|
|
2024-11-30 09:40:45
|
It has significantly less finger movement when typing which takes some getting used to compared to how much your fingers usually have to travel back and forth when typing
|
|
2024-11-30 09:41:11
|
It almost feels like your fingers are nearly still by comparison
|
|
2024-11-30 09:41:51
|
(I switched from qwerty to dvorak)
|
|
2024-11-30 09:42:46
|
I don't have an RSI but I heard a lot of Dvorak users claim it helped
|
|
2024-11-30 09:44:18
|
For me personally it felt very weird for my fingers to hardly move when typing and took some getting used to since my fingers were used to traveling around a lot instead of being nearly motionless
|
|
|
spider-mario
|
2024-11-30 01:14:38
|
I use a dvorak-inspired French layout called [bépo](https://bepo.fr/wiki/index.php?title=Accueil&oldid=28893)
|
|
|
Demiurge
|
2024-11-30 03:59:55
|
I also heard there's a great german layout called Neo2 or something
|
|
|
dogelition
|
|
Demiurge
I also heard there's a great german layout called Neo2 or something
|
|
2024-11-30 05:33:13
|
adnw (and its variants) are significantly better because they're actually optimized
|
|
2024-11-30 05:33:38
|
source: i've used both for years each and i can type fast (<https://monkeytype.com/profile/dogelition>)
|
|
|
Dejay
|
2024-11-30 07:50:31
|
With split ergo or "column stagger" your fingers travel even less to the side. I couldn't quite get used to it after a lifetime of qwerty
|
|
|
Demiurge
|
2024-11-30 07:51:02
|
Optimizing a layout is a tricky and unintuitive thing since typing involves a lot of different finger movements that aren't really comprehensively and formally studied and documented. Simply optimizing with a monte carlo system like carpalx and looking at a few objective metrics doesn't tell the full story of how it actually feels in practice... and it's also dependent on what you typically type.
But basically, qwerty/qwertz/azerty or Sholes layout is very easy to surpass and anything else is a huge improvement
|
|
|
Dejay
|
2024-11-30 07:51:02
|
At least not yet
|
|
|
Demiurge
|
|
dogelition
adnw (and its variants) are significantly better because they're actually optimized
|
|
2024-11-30 07:52:03
|
Is that another German layout?
|
|
|
dogelition
|
2024-11-30 07:52:35
|
equally (iirc) optimized for german and english
|
|
|
Demiurge
|
2024-11-30 07:54:00
|
What's your experience and opinion comparing the two?
|
|
|
Dejay
|
2024-11-30 07:55:21
|
Reading about ergo keyboards also made me wonder if you could specifically design a programming language for fast typing. Like python but a single space for indentation that gets increased by the editor code formatting. There is a ton of things that could be improved but we're stuck in local maxima by convention
|
|
|
Demiurge
|
2024-11-30 07:58:29
|
Well it would have minimal brackets and braces
|
|
2024-11-30 07:58:44
|
Or parentheses either
|
|
2024-11-30 07:58:54
|
Those are a pain
|
|
2024-11-30 07:58:56
|
Ruby?
|
|
2024-11-30 07:59:15
|
I guess it would be ruby
|
|
2024-11-30 08:01:28
|
Easy to type with the hands but hard to type with the brain because of all the OO baggage
|
|
2024-11-30 08:03:06
|
Lots of overcomplicated baggage attached to everything with getter/setter methods and whatever
|
|
|
dogelition
|
|
Demiurge
What's your experience and opinion comparing the two?
|
|
2024-11-30 08:05:29
|
neo2 has fantastic extra layers for special characters and stuff (which adnw just copied), and it sure is better than qwerty/qwertz
|
|
2024-11-30 08:05:42
|
it's been many years since i used neo2 but i'm pretty sure adnw is significantly more comfortable to type with
|
|
2024-11-30 08:06:25
|
just because the letters are actually arranged optimically according to some statistics, and not just ~randomly
|
|
2024-11-30 08:07:03
|
maybe the linked pdfs here help in visualizing what that means http://www.adnw.de/index.php?n=Main.Grafiksammlung
|
|
|
Demiurge
|
2024-12-01 12:45:07
|
I don't think any of the layouts were arranged randomly, even Sholes put some thinking into qwerty, even though it's worse than twice the finger travel compared to every other layout.
|
|
2024-12-01 12:46:38
|
I think it started out as a simple, alphabetically-ordered layout with a few key swaps made afterwards.
|
|
2024-12-01 12:47:32
|
Hence the D FGH JKL MN
|
|
2024-12-01 12:48:32
|
That's just alphabetical order with some vowels moved and some other significant letters moved
|
|
2024-12-01 12:49:10
|
Earlier prototypes of the Sholes typewriter were in alphabetical order too.
|
|
2024-12-01 12:50:18
|
Sholes' business friend convinced him to move some letters to the top row so that all the letters to spell TYPEWRITER were in the top row
|
|
2024-12-01 12:51:34
|
So it's similar to typing on a completely randomly arranged layout, or maybe slightly better
|
|
2024-12-01 12:53:58
|
It's too bad Dvorak isn't more common... it took me a lot less time to learn it compared to how long it took to learn qwerty. Despite typing all the time at home and school as a kid I couldn't type without looking at the keys for years!
|
|
2024-12-01 12:54:51
|
And apparently that's really common for people to never learn how to type without looking
|
|
|
monad
|
2024-12-01 07:03:42
|
> a single space for indentation that gets increased by the editor
tab
|
|
|
Demiurge
|
2024-12-03 12:52:52
|
This format really needs to take over the planet already... It's been a long time without any news about Windows support or Firefox/Chrome...
|
|
|
CrushedAsian255
|
|
Demiurge
This format really needs to take over the planet already... It's been a long time without any news about Windows support or Firefox/Chrome...
|
|
2024-12-03 01:19:42
|
Blame that guy from the chrome codec team /hj
|
|
|
VcSaJen
|
2024-12-03 01:30:29
|
Firefox was waiting for jpegxl-rs, though I dunno what's the current situation is, considering a lot of people were fired since then
|
|
2024-12-03 01:30:58
|
Hopefully it won't affect it
|
|
|
CrushedAsian255
|
2024-12-03 01:32:35
|
Firefox is open source, so once jpegxl-rs is complete someone could just submit a pr
|
|
2024-12-03 01:33:58
|
You could probably modify the Waterfox JXL patch to work with Firefox and Rust
|
|
|
Demiurge
|
2024-12-03 02:30:03
|
Wait what? Even more people were recently fired?
|
|
|
Quackdoc
|
|
VcSaJen
Firefox was waiting for jpegxl-rs, though I dunno what's the current situation is, considering a lot of people were fired since then
|
|
2024-12-03 02:44:34
|
from Firefox or general Mozilla?
|
|
|
VcSaJen
|
2024-12-03 02:51:09
|
Mozilla
|
|
|
Quackdoc
|
2024-12-03 02:55:57
|
yeah nothing to indicate anything effecting firefox
|
|
|
lonjil
|
2024-12-03 06:11:05
|
Mozilla Foundation, to be more specific.
|
|
|
Traneptora
|
|
afed
animation <:Hypers:808826266060193874>
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=10238
|
|
2024-12-04 02:18:45
|
finally got around to working on this (sorry, it's been a year)
|
|
2024-12-04 03:04:36
|
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=13460
|
|
2024-12-04 03:04:39
|
here's the patch btw
|
|
2024-12-04 03:04:46
|
Zsolt Vadasz got a Co-Authored-By as well
|
|
2024-12-04 03:04:52
|
since I looked at what they did when I wrote my own
|
|
|
Demiurge
|
2024-12-05 03:56:52
|
Why is the *literal leader of the webp/avif project* Jim Bankowski allowed to unilaterally remove jxl from chromium, and unilaterally declare that there's "no interest from the wider community" like he's gaslighting all the major corporations in the bug tracker that expressed enthusiasm and support? Can anyone from the Chromium project answer this question?
|
|
2024-12-05 03:58:00
|
I know he's the head of the newly created "chrome codec team" because of his expertise and experience in leading the webp and avif team but, seriously, how is he allowed to do this?
|
|
2024-12-05 04:02:49
|
How is there no scrutiny from anyone else on the Chromium project for like 2 years over that decision that's holding the entire internet back?
|
|
2024-12-05 04:04:06
|
Imagine if Chrome were to enable the format by default shortly after Apple did.
|
|
|
HCrikki
|
2024-12-05 04:06:16
|
'origin trials' for chrome and firefox shouldve been activated long before or from beginning. itd have been more useful for adoption than verbal statements
|
|
2024-12-05 04:07:30
|
it allows specific sites (*even* small test ones) to basically have browser enable certain flags for their visitors, with logging of performance and stuff
|
|
|
Demiurge
|
2024-12-05 04:11:32
|
Now that even Apple of all people is totally on board, with their entire ecosystem and product line, there's absolutely no excuse why it's not taken over the world by now the same way avif and webp were fast-tracked and artificially crammed into our mouths with no oversight or planning except for Jim's unilateral decision making. He must be some kind of self appointed God of the Internet to be able to declare which formats belong in the browser (formats made by him obviously) and which formats need to be deliberated upon indefinitely.
|
|
2024-12-05 04:12:44
|
How has no one else from the Chromium project commented on this utterly shameless abuse of his position?
|
|
|
HCrikki
|
2024-12-05 04:13:13
|
web services delivering mainly or only to their own apps can go jxl anytime, regardless of what browsers do
|
|
2024-12-05 04:14:02
|
thing is, even if so many libraries already encode and decode jxl, many deployments of those still ship with it disabled by default as legacy defaults in need of change
|
|
|
Demiurge
|
2024-12-05 04:15:12
|
If Chrome had flipped it on by default shortly after Apple did, imagine how much more common it would be. Many bytes saved. More developers becoming aware of it and more software being written for it.
|
|
|
HCrikki
|
2024-12-05 04:16:21
|
i did numbers before and default in chromium wouldve pushed numbers up by around an extra 70% overnight, slightly below 90%
|
|
|
Demiurge
|
2024-12-05 04:16:55
|
So many things are based on Chromium and depend on Chromium to render the UI.
|
|
|
HCrikki
|
2024-12-05 04:17:34
|
electron missed its chance to have people rebase their chromium dependency onto electron/edgewebview
|
|
2024-12-05 04:20:14
|
we focus so much on a percentage that obfuscates that while users tend to use one browser, they have multiple chromium-based apps - each separately counted, as web analytic services used for those track them too as if they were actual browsers (another reason firefox % 'decreases' despite user count stable since years)
|
|
|
Demiurge
|
2024-12-05 04:24:48
|
Is anyone asking the rest of the Chromium project why specifically the head of the Chrome Codec Team is allowed to unilaterally fast track his own badly designed meme formats into the browser while getting rid of better designed formats that weren't made by his team?
|
|
2024-12-05 04:26:13
|
Why he's specifically allowed to do all this with no oversight other than his own ridiculous "avif comparison" where his own graphs show avif losing badly at ssimu2 and butteraugli scores?
|
|
2024-12-05 04:28:19
|
His only token justification is his own ludicrous comparison page where he claims to welcome feedback and improvements but completely ignores people like Jon Sneyers when he offered feedback?
|
|
2024-12-05 04:29:41
|
Every day that passes where no one from the Chromium team can explain why Jim Bankowski is allowed to do this without any oversight is a day in crazytown
|
|
2024-12-05 04:31:04
|
Maybe I should make a youtube video about it. It's surreal how stupid it is
|
|
2024-12-05 04:32:22
|
Lots of people should be making youtube videos about it. No one really goes into detail about the specifics and the specifics are what's the most outrageously ridiculous about it
|
|
2024-12-05 04:38:18
|
The same guy responsible for fast tracking webp and avif unilaterally yanks out of Chromium a better designed future proof format that wasn't made by him. Tells intel/facebook/spotify to their faces "there just isn't enough interest from the wider community honey" like he's gaslighting his wife.
|
|
2024-12-05 04:39:50
|
Crickets from the rest of Chromium project, he publishes a comparison to cover his ass but his own graphs show avif losing, he claims to welcome feedback but pretends like Jon's feedback doesn't exist.
|
|
2024-12-05 04:40:03
|
That's the story
|
|
2024-12-05 04:40:32
|
It's wild
|
|
2024-12-05 04:42:35
|
Isn't there anyone else from the Chromium project who's allowed to explain whether that's appropriate behavior from the head of the Chrome Codec Team?
|
|
|
_wb_
|
2024-12-05 05:05:28
|
https://en.wikipedia.org/wiki/Chromium_(web_browser)#2008_to_2010
> Arguing for it won't make it happen. 'A bunch of people would like it' won't make it happen. Our design decisions are not democratic. You cannot always have what you want
|
|
2024-12-05 05:07:36
|
I think that is still the approach. Chrome/ium design decisions are not meant to be democratic, and it is our mistake to think that they would be.
|
|
2024-12-05 05:07:57
|
https://about.google/philosophy/
|
|
2024-12-05 05:08:11
|
> 4. Democracy on the web works.
|
|
2024-12-05 05:09:32
|
The democracy they mean is something about the "patented PageRank™ algorithm", not about browser design decisions.
|
|
|
Quackdoc
|
2024-12-05 05:12:21
|
yeah, it's best to get as many other things to support jxl as possible, chromium will eventually be forced into it. firefox would be the next goal, then smaller ones like servo and ladybird
|
|
|
Demiurge
|
2024-12-05 05:30:22
|
Can't someone else from the Chromium team say whether or not this is an appropriate way for Jim to exercise his authority and lack of oversight?
|
|
|
HCrikki
|
2024-12-05 05:38:57
|
everyone knows it isnt. when people point out in too much detail why the excuses were bs, all it does is make them clam up - pretend they heard nothing, criticisms dont exist or theres 'no interest from the ecosystem'
|
|
|
Demiurge
|
2024-12-05 05:38:59
|
Someone else from the chromium team really needs to weigh in on whether it's appropriate for someone in his position to fast track his own half-baked meme formats while unilaterally deciding to sabotage a more thoughtfully-designed and future-proof format that wasn't made by his team.
|
|
2024-12-05 05:39:43
|
Whether that's an appropriate use of his unchecked and completely unaccountable position
|
|
|
HCrikki
|
2024-12-05 05:40:34
|
i dont think thats the proper angle to pursue, it can be likened to pressure or a character attack to imply jxl positiy is just a vocal small mob
|
|
2024-12-05 05:42:22
|
recently many large webhosts did meetings about updating their stacks to guarantee out of box support of certain libraries (so web scripts can have guaranteed support for certain features). has anything of the sort been given thought ?
|
|
2024-12-05 05:42:59
|
if not webhosts, cdns like cloudflare, fastly. whatever can maximize jxl consumption even partially (ie you dont need *all* your billion imgs converted or with a jxl copy, just the top most accessed or a fixed % to safely work out any deployment or workflow kinks is a good start)
|
|
2024-12-05 05:47:18
|
additionally formats dont need to be decodable by browsers. sites like deviantart can offer a **downloadable** jxl in addition to whatever is rendered/previewed inside browser
|
|
|
Demiurge
|
2024-12-05 05:47:19
|
But it's literally down to just one man with unchecked power
|
|
2024-12-05 05:47:28
|
That is the problem
|
|
2024-12-05 05:47:34
|
There isn't another angle here
|
|
2024-12-05 05:47:46
|
One man and his weird ego
|
|
|
HCrikki
|
2024-12-05 05:49:00
|
even if this doesnt change this still need to be bypassed
|
|
|
Demiurge
|
2024-12-05 05:49:04
|
That's the whole reason it's so ridiculous
|
|
2024-12-05 05:50:01
|
The whole reason it's so ludicrous is because it's all down to some random guy's ego as supreme lord of the internet
|
|
2024-12-05 05:50:34
|
It needs to be addressed
|
|
2024-12-05 05:50:37
|
Not bypassed
|
|
2024-12-05 05:50:42
|
It's the elephant in the room
|
|
|
HCrikki
|
2024-12-05 05:51:43
|
web services and apps are pragmatic, long ago the bw/storage savings shouldve been pushed.
consider this example: our img-heavy app loads our content much faster and consumes less bandwidth than using a browser even though it shows more ads
|
|
|
Demiurge
|
2024-12-05 05:53:09
|
The absurdity of the webp lord telling us there isn't enough interest in jxl
|
|
2024-12-05 05:53:14
|
That is the angle
|
|
|
HCrikki
|
2024-12-05 05:54:13
|
webp sucked until jyrki and some other jxl fella made it any good with lossless. even then all it had going for it is being served by cdns as substitute for recompressed jpgs - a substitute that can be replaced anytime with another final delivery-only format
|
|
|
Demiurge
|
2024-12-05 06:10:02
|
Plus jyrki was told to intentionally place arbitrary crippling limits on the lossless mode to match vp8 and the codec was named vp8ll... again all to appease Jim's ego as the head of vp8 team
|
|
2024-12-05 06:11:31
|
If Jim is the sole decision maker as he seems to be, then Chromium will never have jxl support ever again since there's absolutely no reason for him not to continue doing what he's doing forever since he isn't accountable to anyone else
|
|
2024-12-05 06:11:52
|
The ego problem needs to be addressed
|
|
|
_wb_
|
2024-12-05 06:48:06
|
The bigger picture imo is that the two major browser engines (chromium and safari) are controlled by two big companies, and that companies (at least in the political-economical system we currently live in) are not controlled in a democratic way, at all: typically the structure is hierarchical, bosses are not elected and if they want to act like dictators that is considered totally acceptable since it is "just" a private enterprise owned by private capital, not something like a public service paid for with taxpayer's money.
|
|
|
Demiurge
|
2024-12-05 08:30:36
|
I don't think the bigger picture is that people shouldn't be allowed to create private corporations and choose how to fund it and what to buy. I think that misses the point entirely, actually.
I think the bigger picture is that "web standards" are a joke and controlled by advertising agencies whose job is to spy on us rather than to make a well designed standard that respects our consent and security and privacy.
|
|
2024-12-05 08:31:38
|
And the standards are so bad that no one can follow them and Chromium is an Enterprise-grade monstrosity no one can afford to maintain except a trillion dollar company
|
|
2024-12-05 08:45:55
|
The bigger picture is why is it impossible to write a web browser (well aside from Ladybird maybe) and why are the standards so bad that we are forced to depend on Google and Chromium
|
|
2024-12-05 08:47:16
|
Google is hardly a private corporation either. They basically own the government.
|
|
2024-12-05 08:48:23
|
The government only exists to give google your money
|
|
2024-12-05 08:49:23
|
That's what it says when Jesus signed the constitution
|
|
|
jonnyawsom3
|
2024-12-05 08:49:38
|
Clearly the answer is to render all sites as <:JXL:805850130203934781> server side for maximum efficiency and ease of implementation
|
|
|
Demiurge
|
2024-12-05 08:55:43
|
The thing about power structures is, you have to ask, why does that dependency exist? What causes it to exist?
|
|
2024-12-05 08:56:17
|
The cause isn't because people are allowed to start and own their own private company.
|
|
2024-12-05 08:56:54
|
The cause is usually because people are NOT allowed to do their own thing or depend on anybody else!
|
|
2024-12-05 08:57:36
|
Government and corporations both seek to make you permanently dependent on them alone.
|
|
2024-12-05 08:58:27
|
Or, at least, control freaks do. Control freaks want control and dependency.
|
|
2024-12-05 08:59:18
|
And they usually do it by force like pirates and terrorists. Like how Sony utterly destroyed some kid's entire life for installing Linux on his own offline Playstation
|
|
2024-12-05 09:00:00
|
The problem isn't an economic system, the problem is control
|
|
2024-12-05 09:05:22
|
Control and dependency
|
|
|
_wb_
|
|
Demiurge
I don't think the bigger picture is that people shouldn't be allowed to create private corporations and choose how to fund it and what to buy. I think that misses the point entirely, actually.
I think the bigger picture is that "web standards" are a joke and controlled by advertising agencies whose job is to spy on us rather than to make a well designed standard that respects our consent and security and privacy.
|
|
2024-12-06 10:29:09
|
My point wasn't that private corporations shouldn't exist, my point was that maybe it's not a good idea to put them in charge of defining the web platform. Back when the monopoly of Microsoft Internet Explorer was ruining the web platform, it was bad, and we hoped that with Firefox and later Chrome things would get better. But in essence nothing really changed in how web standards are defined: still basically one big corporation decides what goes in or doesn't go in.
|
|
|
VcSaJen
|
2024-12-06 11:37:54
|
No browser engine should have over 50% market share. When Chrome passed that mark, it was foregone conclusion.
(government dictating standards is not really a solution: look at US vs RISC-V fiasco)
|
|
|
Demiurge
|
2024-12-06 01:34:53
|
It should be made by engineers who want to design a simple and secure standard that's easy to implement. With the user's consent and choices driving the design. Instead the users are the ones getting used. How/why did it get this way?
|
|
2024-12-06 01:36:41
|
The standard is intentionally designed to make it impossible for competitors to appear, and to completely ignore the user's consent and intent
|
|
2024-12-06 01:37:23
|
And yet it's the dominant protocol for browsing information on a network
|
|
2024-12-06 01:38:10
|
Usually the whole point of a "standard" is to allow competitors to make their own implementation
|
|
2024-12-06 01:38:30
|
While remaining compatible with existing ones
|
|
2024-12-06 01:40:28
|
Users with disabilities like blindness are now a complete afterthought too in modern web design
|
|
|
Traneptora
|
2024-12-06 04:38:39
|
not necessarily competitors, but just interop in general
|
|
2024-12-06 04:39:07
|
it's why, say, barcodes for products are standardized. that way people in the same industry but different parts of the chain can function
|
|
2024-12-06 04:39:32
|
i.e. the grocery store can scan both coke bottles and pepsi bottles since realistically they're going to carry both
|
|
2024-12-06 04:40:30
|
the issue arrises when companies use monopolistic (or almost monopolistic) market share to force the standards to be in their own interest at the detriment of other interests
but this isn't an issue with standards or the web platform. this is just an issue when a company has too much market share. which alreacy causes problems
|
|
|
Demiurge
|
|
Traneptora
the issue arrises when companies use monopolistic (or almost monopolistic) market share to force the standards to be in their own interest at the detriment of other interests
but this isn't an issue with standards or the web platform. this is just an issue when a company has too much market share. which alreacy causes problems
|
|
2024-12-06 04:44:55
|
Well it's an issue that web "standards" and the "web platform" is designed poorly on purpose because of a monopoly where the user is the product being sold rather than having the user's consent and intent in mind.
|
|
|
Traneptora
|
2024-12-06 04:45:58
|
I mean isn't that kind of what I said
|
|
2024-12-06 04:46:05
|
> the issue arrises when companies use monopolistic (or almost monopolistic) market share to force the standards to be in their own interest at the detriment of other interests
|
|
|
Demiurge
|
2024-12-06 04:47:00
|
Sure yes but they're both a problem, you’re giving the reason behind the problem, but they're both still problems
|
|
2024-12-06 04:48:43
|
But I don't see any major push or impetus to move to better standards or overhaul them to better respect users basic dignity
|
|
2024-12-06 04:49:58
|
I don't see anything like that coming and the only people who talk about that are very fringe
|
|
2024-12-06 04:50:09
|
Gopher/Gemini communities
|
|
|
Quackdoc
|
|
VcSaJen
No browser engine should have over 50% market share. When Chrome passed that mark, it was foregone conclusion.
(government dictating standards is not really a solution: look at US vs RISC-V fiasco)
|
|
2024-12-06 11:02:46
|
the solution is simple, invest in more browsers, Firefox is a failed project
|
|
|
Demiurge
|
2024-12-07 09:36:02
|
Firefox lit itself on fire and jumped off a bridge
|
|
2024-12-07 09:37:07
|
It had a lot of promise and potential and it was intentionally destroyed for some reason... Hmm... Maybe the CEO is a Google asset? 😂
|
|
2024-12-07 09:38:50
|
Maybe someone from Google gave the order to utterly destroy firefox and fire anybody capable of maintaining and modernizing the codebase. If I wanted to go tinfoil hat mode I would say that's how it looks like lol
|
|
2024-12-07 09:39:15
|
Either that or it was just eaten from within by vulture capitalists
|
|
2024-12-07 09:42:39
|
It would be interesting if there was a conspiracy to get vulture capitalists to hijack command of Firefox to benefit Google
|
|
|
CrushedAsian255
|
2024-12-07 09:55:56
|
well most of its funding comes from Google so...
|
|
|
Quackdoc
|
|
CrushedAsian255
well most of its funding comes from Google so...
|
|
2024-12-07 09:57:43
|
its not like they cant find funding else where
|
|
2024-12-07 09:57:55
|
google just wins the bids
|
|
|
HCrikki
|
2024-12-07 10:57:35
|
apple couldve funded entire mozilla's spending from the 20 billions it gets from google for search default
|
|
2024-12-07 10:59:19
|
best way mozilla couldve made any other search engine default even for free or rolled its own (ie rebranding brave search/index - remember, its actually a continuation of what was previously mozilla projects)
|
|
2024-12-07 11:00:34
|
mozilla wouldve covered the platforms apple doesnt focus on to weaken chromium monoculture
|
|
|
Quackdoc
|
2024-12-07 11:14:38
|
why would apple do that tho? zero incentive, Being realistic, there are other engines that will pay mozilla, it's just about winning the bid
|
|
2024-12-07 11:15:33
|
depending on how the monopoly stuff goes, this may wind up happening anyways
|
|
|
HCrikki
|
2024-12-07 11:26:20
|
getting back at google that way would be way cheaper than frontally attacking it. itd be basically google funding its own weakening without apple needing to micromanage its rivalry in the spaces moz covers
|
|
|
Quackdoc
|
2024-12-07 12:17:19
|
apple wouldn't want to do any of that, and mozilla always have had alternatives to google for payment, google is a non factor, the only factor is that firefox is a project on life support
|
|
2024-12-07 12:17:30
|
if you want to remove power from google, make good products, it's that simple
|
|
|
Demiurge
|
2024-12-07 06:50:39
|
Mozilla used to be known for collecting all the top genius engineers but now it's just corporate vultures eating the hollowed out corpse
|
|
|
Quackdoc
|
|
Demiurge
Mozilla used to be known for collecting all the top genius engineers but now it's just corporate vultures eating the hollowed out corpse
|
|
2024-12-07 06:51:28
|
speaking of mozilla collecting top engineers, have you seen the ladybird news?
|
|
|
Demiurge
|
2024-12-07 06:51:42
|
There's news?
|
|
|
Quackdoc
|
2024-12-07 06:51:54
|
massive news, goliath news even https://ladybird.org/posts/mike-shaver-joins-board/
|
|
2024-12-07 06:52:37
|
mike "ten fucking days" shaver joined them, AKA one of the OGs behind old firefox
|
|
|
Demiurge
|
2024-12-07 06:54:02
|
Don't know who that is, off the top of my head, but hey, sounds pretty good. If he's one of the OG mozilla founders
|
|
|
Quackdoc
|
2024-12-07 06:56:19
|
yeah, he is one of the dudes who was directly responsible from turning firefox into a fork of a janky piece of crap, to the top dog browser. so it's actually super exciting news
|
|
2024-12-07 06:57:58
|
so you have igalia and co working on servo, and you have shaver and co working on ladybird, it's a good time to be a fan of browser tech
|
|
|
Demiurge
|
2024-12-07 07:03:40
|
But the standards themselves are bad since they are designed for advertisers to hijack your computer rather than being designed around your intent and consent when browsing
|
|
2024-12-07 07:04:20
|
They are way too permissive and allowing by default without user input or consent
|
|
|
Quackdoc
|
2024-12-07 07:05:02
|
well, that simply depends on implementation, it's not like these things will time out
|
|
|
Demiurge
|
2024-12-07 07:07:27
|
The priority is "flashy graphics and scripts that run by default and hijack control of the window position and anything else on the web page at ant time" rather than accessible information retrieval that respects user intent and choice and users with disabilities.
|
|
2024-12-07 07:08:31
|
It's a problem with the "web standards" themselves because if you design a browser that behaves differently then 97% of websites don't work
|
|
2024-12-07 07:08:36
|
Or more
|
|
2024-12-07 07:09:29
|
Blind accessibility is an optional afterthought that is ignored most of the time too
|
|
2024-12-07 07:10:00
|
It's because of priorities.
|
|
2024-12-07 07:10:27
|
The priorities are the priorities of advertisers, not users. Users are the product being sold
|
|
|
Quackdoc
|
2024-12-08 04:04:31
|
you know, these could probably be solved by a simple web extension, I imagine something like modifying noscript to ask perms would work [Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&name=Hmm)
|
|
2024-12-08 04:05:02
|
browser like chrome and firefox just do that anyways internally so it's not like it makes a massive difference,
|
|
|
Demiurge
|
2024-12-08 06:18:48
|
there needs to be more granularity in user consent baked into the protocol and expectations of web developers.
|
|
|
Quackdoc
|
2024-12-08 01:06:57
|
I don't really see a need, nor a real want for it to be in the protocol, I don't see how that would help.
|
|
|
username
|
2024-12-09 05:56:36
|
|
|
2024-12-09 05:56:36
|
https://twitter.com/imgproxy_net/status/1866158801000534073
https://bsky.app/profile/imgproxy.net/post/3lcv5nbotcb2f
https://github.com/imgproxy/imgproxy/commit/3f4edb91f7c805c9a81341af7bcd0946c27e0860
https://github.com/imgproxy/imgproxy/commit/d9abf2d3d73a6132989edec59f45cb8b644201b6
|
|
|
jonnyawsom3
|
2024-12-09 06:14:05
|
Effort 4, Quality 77 by default
|
|
|
Quackdoc
|
2024-12-09 06:22:53
|
I should make my own cdn software that just uses native encoders directly so I can just feed jpeg right to jxl
|
|
|
HCrikki
|
2024-12-09 06:56:08
|
doesnt transformimg cover that ?
|
|
|
Demiurge
|
|
Quackdoc
I don't really see a need, nor a real want for it to be in the protocol, I don't see how that would help.
|
|
2024-12-09 08:02:34
|
Isn't getting consent already part of the protocol for accessing certain JS API features?
|
|
2024-12-09 08:03:00
|
There just needs to be more consent and less expectation that you're allowed to do whatever you want to someone else's machine.
|
|
2024-12-09 09:45:36
|
Nobody consents to a web page suddenly changing itself and interrupting them in the middle of reading the content of the page. Or autoplaying sound or running cryptominers and draining the battery.
|
|
2024-12-09 09:46:03
|
But you can't design a browser that respects consent without breaking like 95% of websites
|
|
2024-12-09 09:46:19
|
That's why standards and expectations of web developers need to change.
|
|
|
jonnyawsom3
|
2024-12-14 06:28:17
|
Some more info about the imgproxy implementation from the docs
> The priority is as follows (from the highest to the lowest): JPEG XL, AVIF, WebP
> Default: jxl=77,avif=63,webp=79
> IMGPROXY_JXL_EFFORT Default: 4
Though I also noticed this which is, annoying...
> IMGPROXY_JPEG_PROGRESSIVE: when true, enables progressive JPEG compression. Default: false
|
|
|
_wb_
|
2024-12-14 08:48:01
|
Effort 4 is not a great default imo. I would go for e6.
|
|
|
Demiurge
|
2024-12-14 12:50:41
|
For lossless I think it would be a good default
|
|
2024-12-14 12:51:38
|
Users might be surprised that the default speed setting for lossless is much slower than for lossy
|
|
|
jonnyawsom3
|
2024-12-14 03:07:44
|
5 would probably be best as a middle ground. Then you have the Var of VarDCT and generally good lossless speed too
|
|
|
Demiurge
|
2024-12-14 09:58:56
|
no
|
|
2024-12-14 09:59:10
|
Why does lossless have to have the same default as lossy?
|
|
2024-12-14 09:59:30
|
the default effort level for lossless can be different...
|
|
2024-12-14 09:59:46
|
What matters more is that one isn't significantly unexpectedly slower than the others
|
|
|
HCrikki
|
2024-12-14 10:05:14
|
imo the *default* effort should adapt to resolution, not be the same for all images. small images could be crunched more and itll barely take any longer time or ressources, and the opposite would accomodate large images better (decrease effort spent by 1 or even 2 so as to maintain encoding performance if its not adequately multithreaded)
|
|
|
Demiurge
|
2024-12-15 01:51:59
|
Honestly though I would be even happier if it was easier to predict or set constraints on memory usage so it doesn't DoS your system when you give it a large image
|
|
2024-12-15 01:54:28
|
memory exhaustion is a pretty serious and annoying problem to deal with
|
|
|
A homosapien
|
2024-12-15 02:32:57
|
Memory usage is surprisingly consistent when chunked encoding is enabled
|
|
2024-12-15 02:33:20
|
Without it memory usage balloons into the stratosphere
|
|
|
HCrikki
|
2024-12-15 02:34:51
|
many seem to use effort 10 and even 11 for even lossless transcode from jpg for a potential gain of one kilobyte - imo everything above e8 shouldve been an expert/dev option whose use is discouraged except in very specific situations or really powerful hardware
|
|
2024-12-15 02:35:41
|
perhaps updated documentation and comments could include reference numbers for relative performance and ram consumption between efforts?
|
|
|
A homosapien
|
2024-12-15 02:38:50
|
Effort 11 doesn't actually do anything for jpeg transcode, it just falls back to effort 10 same with VarDCT and Lossy Modular. I do agree that anything above effort 8 is kind of a foot gun, especially for lossy.
|
|
|
HCrikki
perhaps updated documentation and comments could include reference numbers for relative performance and ram consumption between efforts?
|
|
2024-12-15 02:45:41
|
Ooo that sounds fun! Now that I know the limits of chunked encoding, I can properly test memory usage. If I get consistent enough results, I'll be able to post them somewhere.
|
|
2024-12-15 02:51:32
|
Also, I want to measure BD rate comparing all effort levels, I feel like it should illustrate how little efforts higher than 8 improve quality.
|
|
|
KKT
|
2024-12-17 02:38:17
|
Acorn 8 supports export to JXL: https://flyingmeat.com/acorn/
|
|
|
pedromarques
|
2024-12-17 10:38:59
|
How "strategically" was Adobe move on adopting WebP to "Save as" option and JPG XL not (JPG XL was only adopted inside Adobe CameraRaw export option)? <@794205442175402004> ?
|
|
|
jonnyawsom3
|
2024-12-17 10:49:19
|
Adobe has been acting... Strange... For instance, they added JPEG XL to the DNG specification, but not using the premade bayer channels to store it and with bad defaults that hurt the compression...
|
|
|
pedromarques
|
2024-12-17 11:27:33
|
A strategic move could be for JPG XL to highlight its ability to compete (=add market real value) with simplistic multi-layer images that can be saved as JPG XL. In this case, it seems to be competing with Adobe PSD files, but IMO is not.
JPG XL should be more strategic with Adobe, creating a valuable solution for many consumers of large files that need space and the ability to escalate in quantity. PSD and JPG XL as multi-layered source files could benefit everyone.
What do you think <@794205442175402004> ?
|
|
|
HCrikki
|
2024-12-17 04:20:14
|
for adobe, expecting psd will eventually leverage jxl in a future version. what would make sense is a high efficiency mode, and a legacy high compatibility mode not rebuilt on jxl)
|
|
2024-12-17 04:22:04
|
integrations seem to need more support from jxl experts so as to avoid newbie mistakes out of unfamiliarity with what are many novel or barely documented approaches
|
|
|
_wb_
|
2024-12-18 02:19:05
|
I am dreaming of having Krita, Gimp, Photoshop etc all save images to layered JXL plus some box with additional data that cannot be represented in JXL itself (such as weird blend modes, text/font info for layers that are rasterized text, etc).
So if the image is sufficiently simple (only normal blending of image-only layers, nothing fancy) it's just a standard JXL;
if additional features are used like text layers, but only features that basically all major image editors support, then that goes into a semi-standardized box (that is, it's not part of the JXL standard, but there could be an industry standard / convention on the syntax of this stuff);
if any exotic features are used that are specific to a single image editor (e.g. funky layer effects that exist only in Photoshop), then that goes into a proprietary box that's only supported by that image editor.
|
|
|
CrushedAsian255
|
|
_wb_
I am dreaming of having Krita, Gimp, Photoshop etc all save images to layered JXL plus some box with additional data that cannot be represented in JXL itself (such as weird blend modes, text/font info for layers that are rasterized text, etc).
So if the image is sufficiently simple (only normal blending of image-only layers, nothing fancy) it's just a standard JXL;
if additional features are used like text layers, but only features that basically all major image editors support, then that goes into a semi-standardized box (that is, it's not part of the JXL standard, but there could be an industry standard / convention on the syntax of this stuff);
if any exotic features are used that are specific to a single image editor (e.g. funky layer effects that exist only in Photoshop), then that goes into a proprietary box that's only supported by that image editor.
|
|
2024-12-18 02:24:19
|
I would say for if this becomes a thing it would be most likely / understandable for the “spin-off” formats to have a different extension, like how there are lots of files which are technically just .ZIPs but the different extension help classify them. Like Krita could just .krxl or something and it’s still a 18181-2 file but it makes it obvious it’s a Krita project and not just an image from a camera or something.
|
|
2024-12-18 02:25:22
|
Take Affinity suite, their 3 file types are literally identical; you can rename one to the other and open it perfectly fine, which is by design, however it is still helpful for them to have different extension
|
|
2024-12-18 02:26:57
|
Especially if there is possible proprietary data that should not be messed with
|
|
2024-12-18 02:28:08
|
And then there could be some standard interchange JXL format (could just be want we have now) where all the proprietary image effects were rasterised and baked into the file, and so can be opened with any compliant editor
|
|
2024-12-18 02:28:52
|
I think the extra image editing related data could be a use for the extensions feature
|
|
2024-12-18 02:29:14
|
As it is not integral to viewing the document (a preview frame could be stored or something)
|
|
|
_wb_
|
2024-12-18 02:29:50
|
yes, using different extensions does make sense for end-users and for OSes to know what application to open it with, but for basic image processing pipelines (viewing or "generic image import") and interoperability, it's very nice to have a standard file format where you can just ignore the stuff that is only needed when opening it in an editor.
|
|
2024-12-18 02:34:52
|
basically a rasterized (but still layered, with proper layer names, etc) interchange image in the jxl codestream, and then some box(es) for all the other stuff that goes into editor project files (which is typically not a lot of data compared to the raster image data, and the generic `brob` mechanism can be used to Brotli compress it). Preferably some box with open syntax for the common basic stuff, and then some proprietary box specific to the specific editor (which has a syntax that probably changes at each new version of the editor, as new features get added etc).
|
|
|
CrushedAsian255
|
|
_wb_
basically a rasterized (but still layered, with proper layer names, etc) interchange image in the jxl codestream, and then some box(es) for all the other stuff that goes into editor project files (which is typically not a lot of data compared to the raster image data, and the generic `brob` mechanism can be used to Brotli compress it). Preferably some box with open syntax for the common basic stuff, and then some proprietary box specific to the specific editor (which has a syntax that probably changes at each new version of the editor, as new features get added etc).
|
|
2024-12-18 02:39:28
|
So like when opening with a generic program a vector layer will display a rasterised version however when opened using the correct software it will be replaced with the actual vector layer?
|
|
|
_wb_
|
|
VcSaJen
|
|
_wb_
I am dreaming of having Krita, Gimp, Photoshop etc all save images to layered JXL plus some box with additional data that cannot be represented in JXL itself (such as weird blend modes, text/font info for layers that are rasterized text, etc).
So if the image is sufficiently simple (only normal blending of image-only layers, nothing fancy) it's just a standard JXL;
if additional features are used like text layers, but only features that basically all major image editors support, then that goes into a semi-standardized box (that is, it's not part of the JXL standard, but there could be an industry standard / convention on the syntax of this stuff);
if any exotic features are used that are specific to a single image editor (e.g. funky layer effects that exist only in Photoshop), then that goes into a proprietary box that's only supported by that image editor.
|
|
2024-12-19 04:10:42
|
Full layer support is kinda impossible, because JXL does not support common blending modes. Multiply blending mode, for example, is used by nearly 100% of artists when coloring lineart.
|
|
|
jonnyawsom3
|
|
VcSaJen
Full layer support is kinda impossible, because JXL does not support common blending modes. Multiply blending mode, for example, is used by nearly 100% of artists when coloring lineart.
|
|
2024-12-19 04:23:42
|
|
|
|
_wb_
|
2024-12-19 09:00:07
|
There are certainly blend modes and layer fx that jxl does not support — but you can always just encode the layer image data itself and add an explicit merged image, just like how Photoshop does it when producing "maximum compatibility" PSD files, or TIFF files.
|
|
|
Kampidh
|
2024-12-19 09:29:29
|
I was initially about to add that specific box for layer info when working with layered JXL on Krita, since there are tons of blending mode inside krita that can't be represented with jxl. But I kind of afraid of that compatibility issues if I didn't include that 'merged image' preview on top layer (and for a reason of don't want to make another TIFF-like mess :p). Therefore the result was a pretty basic layering support for it.
+1 for using different extensions, maybe putting a todo for the near future.
|
|
|
jonnyawsom3
|
2024-12-19 09:42:42
|
It's a shame KRA can't internally use JXL, since it just uses raw bitmaps which are deflate compressed in the ZIP file
|
|
|
CrushedAsian255
|
|
It's a shame KRA can't internally use JXL, since it just uses raw bitmaps which are deflate compressed in the ZIP file
|
|
2024-12-19 10:06:00
|
`.KRXL` sometime?
|
|
|
Traneptora
|
|
_wb_
I am dreaming of having Krita, Gimp, Photoshop etc all save images to layered JXL plus some box with additional data that cannot be represented in JXL itself (such as weird blend modes, text/font info for layers that are rasterized text, etc).
So if the image is sufficiently simple (only normal blending of image-only layers, nothing fancy) it's just a standard JXL;
if additional features are used like text layers, but only features that basically all major image editors support, then that goes into a semi-standardized box (that is, it's not part of the JXL standard, but there could be an industry standard / convention on the syntax of this stuff);
if any exotic features are used that are specific to a single image editor (e.g. funky layer effects that exist only in Photoshop), then that goes into a proprietary box that's only supported by that image editor.
|
|
2024-12-21 02:52:09
|
Adobe Fireworks did this with PNG files but it made it impossible to tell what was a fireworks project and what was a basic PNG
|
|
2024-12-21 02:52:19
|
if so it would have to have some kind of different file extension maybe
|
|
|
VcSaJen
|
2024-12-21 03:34:27
|
I remember some game using PNGs as save files
|
|
|
jonnyawsom3
|
2024-12-21 04:46:57
|
Spore using Stenography
|
|
|
0xC0000054
|
|
Spore using Stenography
|
|
2024-12-21 10:39:18
|
😲 That seems like a strange decision for Maxis to make when the already had their DBPF archive format, but I am not familiar with Spore.
|
|
|
✞ 𝐁𝐢𝐠 𝐉𝐨𝐞 ✞
|
2024-12-24 05:18:17
|
Adoption should go through the roof after mid-2025 👍😃https://discord.com/channels/794206087879852103/822105409312653333/1320983484017152050
|
|
|
Quackdoc
|
2024-12-24 05:48:20
|
well assuming firefox follows through, it will take some time for chrome to implement it likely afterwards. we will also see what will happen on the android side of things, since android recognizes JXL's as images, image galleries will be able to implement jxl easier, not easy, but easier.
|
|
|
AccessViolation_
|
2024-12-24 12:49:21
|
That comment on github does say they are willing to implement it in *browsers* not just in *Firefox*, so maybe Chrome could also be swayed to add JXL support if they don't have to do it themselves
|
|
|
jonnyawsom3
|
2024-12-24 12:53:31
|
Chrome has had a JXL patch maintained since it's removal
|
|
|
username
|
2024-12-24 01:03:15
|
a complete one at that
|
|
|
Demiurge
|
2024-12-24 01:17:37
|
Yes. For libjxl. Not jxl-rs.
|
|
2024-12-24 01:18:13
|
But the libjxl integration is great. Among the best.
|
|
2024-12-24 01:19:49
|
If libwebp is allowed in then why not libjxl?
|
|
|
A homosapien
|
2024-12-24 07:36:21
|
Double standards
|
|
|
lonjil
|
2024-12-25 01:28:15
|
because libwebp was added like a million years ago?
|
|
|
Demiurge
|
2024-12-25 01:56:32
|
I mean to say, it doesn't really matter if it's written in rust or c++
|
|
2024-12-25 01:56:54
|
libwebp is c++ too
|
|
2024-12-25 01:59:02
|
And a language doesn't protect anyone from badly written code. It can only make it more convenient to write good code and less convenient to write bad
|
|
|
AccessViolation_
|
2024-12-25 08:52:07
|
I think putting it in the domain of convenience undersells it quite a bit. Google and Microsoft both independently reported that ~70% of their critical security vulnerabilities were memory safety issues,[[1]](https://www.chromium.org/Home/chromium-security/memory-safety/)[[2]](https://msrc-blog.microsoft.com/2019/07/16/a-proactive-approach-to-more-secure-code/) Google Project Zero reported that out of all the 0-days used in the wild, 67% of those were memory safety related,[[3]](https://googleprojectzero.blogspot.com/2022/04/the-more-you-know-more-you-know-you.html) and Mozilla reported that 94% of their critical/high bugs were memory safety related.[[4]](https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/) So you're effectively avoiding a huge portion of all your critical issues that you would have had, by using a memory safe language from the start
|
|
2024-12-25 08:54:29
|
It's not like the reason those numbers are so high is because it wasn't convenient enough to write safe code, implying that they could have written safe code but just didn't want to. I'm sure they wanted to and tried to write safe code, but made mistakes. Mistakes which are impossible to make in memory safe languages
|
|
|
Demiurge
|
2024-12-26 08:40:39
|
But it is convenience, though. That is all a development tool is capable of doing. Rust was designed to make it less convenient to encounter memory bugs, and more convenient to prove at compile time, with static analysis, that memory allocation has a safe and valid defined lifetime. Which is a good thing for a language to do. But it's not anything greater or more magical than that... tools to generate static proofs of memory correctness are not a new thing iirc, and it's possible to statically prove the correctness of code written in C too. But making it built into development tools and the language itself and making it less convenient to write dangerous and unproven code is the right direction to take things. But people treat Rust as some kind of magical silver bullet. I don't think the language even allows you to handle memory allocation failure like other languages do.
|
|
|
AccessViolation_
|
2024-12-26 10:41:41
|
Rust does make it more convenient to write safe code, and it also makes it impossible to write memory unsafe code outside of unsafe blocks. Zig also makes it more convenient to write safe code, but unlike Rust, it doesn't give you the guarantee that your code is memory safe. If people say Rust makes bugs impossible or makes it impossible to write bad code, they're giving people the wrong idea, but saying Rust makes it more convenient to write safe code, while true, also gives people the wrong idea, imo, because memory safety is an objective feature of Rust whereas convenience is sort of, a personal experience
|
|
|
Quackdoc
|
2024-12-26 10:45:54
|
I would say that rust does make it more convenient. but rust is better explained, not with "Rust makes it easier to write safe code" but rather "rust makes it harder to write technically bad code" since that excludes things that are "just dumb" things to do like trying to get the same number from random generation lol
|
|
|
AccessViolation_
|
2024-12-26 10:46:44
|
yeah that's a good way of putting it, I think
|
|
|
Quackdoc
|
2024-12-26 10:48:31
|
IMO the best thing about rust is that it lets me be lazy and achieve a a level of code quality that would be impossible in something like C or C++ given the level of effort I put in
|
|
|
AccessViolation_
|
2024-12-26 10:49:50
|
It provides a lot of convenience that doesn't necessarily directly translate to better code, like a first party built system, integrated unit tests feature, etc. Then it also has convenience features actually that make writing good code very convenient, like the a type system that allows you to make invalid state unrepresentable. And then it has objective features that prove your code is safe, and then it has more convenience that allows you to write potentially unsafe code if you want to
|
|
|
Quackdoc
IMO the best thing about rust is that it lets me be lazy and achieve a a level of code quality that would be impossible in something like C or C++ given the level of effort I put in
|
|
2024-12-26 10:55:29
|
For me personally I don't think I could even pick a favorite thing since I haven't written anything else in years, so I don't have a reference anymore <:KekDog:805390049033191445>
|
|
|
Quackdoc
|
2024-12-26 10:59:45
|
I hate coding, so languages that make it easier matter a lot to me, dart and rust are my two favourite langs
|
|
2024-12-26 10:59:51
|
too bad flutter sucks on linux
|
|
|
AccessViolation_
|
2024-12-26 11:02:40
|
I can reason about things I'd probably miss a lot though: good error messages (rust treats bad error messages as compiler bugs and will fix them as such), `match`, `Option<T>` and `Result<T>`, and `enum`s that allow values in their variants. These are the things I personally like and use a lot, but the most virtuous feature imo is memory safety and thread safety. It's hard to imagine, but Rust would still be a great language without it I think, it's just that memory unsafety has collectively cost us so much work and caused so many problems, and being able to just remove that entire class of bugs, effectively for free, in a systems programming language, feels like such a revolutionary thing
|
|
2024-12-26 11:04:41
|
I know it's a bit silly to praise Rust for its memory safe because yeah, no shit, but still 😅
|
|
|
Quackdoc
I hate coding, so languages that make it easier matter a lot to me, dart and rust are my two favourite langs
|
|
2024-12-26 11:05:44
|
Oh I tried Dart a couple years ago, it was a surprisingly pleasant experience
|
|
|
VcSaJen
|
|
AccessViolation_
Rust does make it more convenient to write safe code, and it also makes it impossible to write memory unsafe code outside of unsafe blocks. Zig also makes it more convenient to write safe code, but unlike Rust, it doesn't give you the guarantee that your code is memory safe. If people say Rust makes bugs impossible or makes it impossible to write bad code, they're giving people the wrong idea, but saying Rust makes it more convenient to write safe code, while true, also gives people the wrong idea, imo, because memory safety is an objective feature of Rust whereas convenience is sort of, a personal experience
|
|
2024-12-26 11:57:08
|
> impossible to write
Memory leaks are always possible
|
|
|
Demiurge
|
|
AccessViolation_
Rust does make it more convenient to write safe code, and it also makes it impossible to write memory unsafe code outside of unsafe blocks. Zig also makes it more convenient to write safe code, but unlike Rust, it doesn't give you the guarantee that your code is memory safe. If people say Rust makes bugs impossible or makes it impossible to write bad code, they're giving people the wrong idea, but saying Rust makes it more convenient to write safe code, while true, also gives people the wrong idea, imo, because memory safety is an objective feature of Rust whereas convenience is sort of, a personal experience
|
|
2024-12-27 03:14:41
|
Well it makes it more convenient to have static compile time guarantees. You can have that in other languages too but it's better for it to be built into the language like it is with Rust
|
|
2024-12-27 03:16:16
|
It's more convenient to guarantee allocated memory has a valid life cycle
|
|
|
dogelition
|
|
AccessViolation_
Rust does make it more convenient to write safe code, and it also makes it impossible to write memory unsafe code outside of unsafe blocks. Zig also makes it more convenient to write safe code, but unlike Rust, it doesn't give you the guarantee that your code is memory safe. If people say Rust makes bugs impossible or makes it impossible to write bad code, they're giving people the wrong idea, but saying Rust makes it more convenient to write safe code, while true, also gives people the wrong idea, imo, because memory safety is an objective feature of Rust whereas convenience is sort of, a personal experience
|
|
2024-12-27 03:59:14
|
not impossible https://github.com/zyedidia/transmute
|
|
|
|
veluca
|
|
dogelition
not impossible https://github.com/zyedidia/transmute
|
|
2024-12-27 08:00:52
|
more like "if it is possible it is considered a bug" 🙂
|
|
|
AccessViolation_
|
|
VcSaJen
> impossible to write
Memory leaks are always possible
|
|
2024-12-27 08:59:55
|
Memory leaks are possible. It was actually a bit of a discussion point during Rust's development, for whether memory leaks should be prevented in safe code. If they would, you would lose out on a lot of convenience and the language would be even stricter. So it was decided that the possibility of memory leaks should be minimized, but the language model doesn't easily allow the compiler to verify that they don't happen, and so it doesn't eagerly block anything where it can't say with certainty that it won't leak memory.
Ultimately what Rust really cares about is memory safety, and memory leaks don't have the possibility to cause memory unsafety. So while it's very rare that your safe code accidentally leaks memory, it's not a *guarantee* that it won't happen
|
|
2024-12-27 09:04:09
|
`Vec::leak()` can be called in safe code :)
|
|
|
VcSaJen
|
2024-12-27 10:18:18
|
_memory leaks are not considered memory unsafety_
Depends on your definition. Under some definitions even Pascal is memory-safe language.
|
|
|
AccessViolation_
|
2024-12-27 11:36:16
|
I don't think anyone uses a definition of memory safety that considers memory leaks on their own unsafe. Memory unsafety revolves around bugs arising from memory accesses. For example an out of bounds read could allow you to read memory you're not supposed to, and an out of bounds write could allow other code to read data it's not supposed to. Memory leaks can cause unsafety in conjunction with these, and Rust's guarantees say that no memory that is leaked could ever accidentally be read from safe code. I'm not very interesting in arguing definitions of memory safety, so long as we're both aware of these facts then that's fine and you can call it whatever you want, though again, I personally think saying Rust isn't memory safe because an uncommon definition of memory safety is chosen is a bit misleading
|
|
|
VcSaJen
|
2024-12-27 02:32:11
|
Rust kinda reminds me of PaleMoon. Anyway, I'm excited for jxl-rs. Aside from FF, hopefully it would mean more performant thumbnailer for Windows.
|
|
|
lonjil
|
|
Demiurge
But it is convenience, though. That is all a development tool is capable of doing. Rust was designed to make it less convenient to encounter memory bugs, and more convenient to prove at compile time, with static analysis, that memory allocation has a safe and valid defined lifetime. Which is a good thing for a language to do. But it's not anything greater or more magical than that... tools to generate static proofs of memory correctness are not a new thing iirc, and it's possible to statically prove the correctness of code written in C too. But making it built into development tools and the language itself and making it less convenient to write dangerous and unproven code is the right direction to take things. But people treat Rust as some kind of magical silver bullet. I don't think the language even allows you to handle memory allocation failure like other languages do.
|
|
2024-12-27 02:53:26
|
I would count it as more than plain convenience, since non-trivial memory safe C programs essentially don't exist. Any random program in Rust is very likely guaranteed to be memory safe. Any specifically chosen because of how well engineered it is C program likely has memory bugs.
There are no tools to *generate* proofs of memory correctness for C code, but there are tools for writing the proofs yourself. The problem is that random general C code usually can't be proven safe, you have to write your code in a way that makes the proofs easier to write, and now your C code will be super restricted in how it can look and be structured.
Let's look at Ada as an example. There is a subset of Ada that allows for static verification of correctness called SPARK. One of the limitations was that you couldn't use any pointers (called access types in Ada) at all because SPARK couldn't prove that there wouldn't be any undefined behavior. In 2021, SPARK allowed pointers finally, by copying Rust and adding a borrow checker.
|
|
|
AccessViolation_
Memory leaks are possible. It was actually a bit of a discussion point during Rust's development, for whether memory leaks should be prevented in safe code. If they would, you would lose out on a lot of convenience and the language would be even stricter. So it was decided that the possibility of memory leaks should be minimized, but the language model doesn't easily allow the compiler to verify that they don't happen, and so it doesn't eagerly block anything where it can't say with certainty that it won't leak memory.
Ultimately what Rust really cares about is memory safety, and memory leaks don't have the possibility to cause memory unsafety. So while it's very rare that your safe code accidentally leaks memory, it's not a *guarantee* that it won't happen
|
|
2024-12-27 03:03:21
|
Preventing memory leaks is in general supremely difficult. If you have reference counted types and you allow types to refer to themselves (e.g. a struct T that has a pointer to T) then it's trivial to leak memory by simply creating a cycle of reference counted values, and now suddenly you need a GC to get rid of leaks.
Any strategy to prevent leaked values from continuing to exist without GC would surely be really effed up!
Even worse if you use the stricter definition of leaking: that values continuing to exist indefinitely after the last time they are used is a leak. By this definition, GCs don't prevent leaking, since you can forget old values in a hashtable or something forever.
|
|
|
CrushedAsian255
|
|
lonjil
I would count it as more than plain convenience, since non-trivial memory safe C programs essentially don't exist. Any random program in Rust is very likely guaranteed to be memory safe. Any specifically chosen because of how well engineered it is C program likely has memory bugs.
There are no tools to *generate* proofs of memory correctness for C code, but there are tools for writing the proofs yourself. The problem is that random general C code usually can't be proven safe, you have to write your code in a way that makes the proofs easier to write, and now your C code will be super restricted in how it can look and be structured.
Let's look at Ada as an example. There is a subset of Ada that allows for static verification of correctness called SPARK. One of the limitations was that you couldn't use any pointers (called access types in Ada) at all because SPARK couldn't prove that there wouldn't be any undefined behavior. In 2021, SPARK allowed pointers finally, by copying Rust and adding a borrow checker.
|
|
2024-12-27 10:12:05
|
I would say rust makes it difficult to write memory unsafe programs
|
|
2024-12-27 10:12:15
|
You have to explicitly try to break it
|
|
|
lonjil
|
2024-12-27 10:12:44
|
If you use `unsafe`, it's easy, but if you don't, it's basically not going to happen.
|
|
|
CrushedAsian255
|
|
sklwmp
|
2024-12-31 07:05:09
|
Icaros is apparently getting JXL support soon!
Though, the last update was on November 1, hopefully more info will come sooner or later.
> Icaros is a collection of lightweight, high quality, Windows Shell Extensions.
>
> Icaros can provide Windows Explorer thumbnails, for essentially any video media format supported by FFmpeg, this includes popular filetypes such as: Mkv, Flv, Avi, Mp4, Mov, Rmvb, M2ts, Ogm etc.
https://github.com/Xanashi/Icaros/issues/24#issuecomment-2451762286
**Xanashi** commented on Nov 1:
> JXL support will be added quite soon to Icaros.
> Thank you all for chiming in on this feature request.
> I personally can't wait to get JXL added, as I agree that it's a really nice format.
|
|
|
HCrikki
|
2024-12-31 10:50:14
|
seems opencv merged support into 4.x (no release yet) https://github.com/opencv/opencv/pull/26379
|
|
|
Demiurge
|
2025-01-01 04:56:46
|
|
|
2025-01-01 04:56:47
|
This question comes up a lot... I don't have a cringe reddit account so I can't answer but if someone wants to convert a large amount of files right now, I would recommend a process that does sanity checks on each file to make sure lossless files are truly pixel-lossless, and for lossy files, that the maximum amplitude of distortion at any point in the image doesn't exceed an extreme and unexpected power. To catch weird errors in lossy compression too like missing blocks or completely wrong colors or some other rare bug.
|
|
2025-01-01 04:57:37
|
Ideally, the encoder itself should have some sanity checks like this built in, in order for it to be a truly unattended tool like it's trying to be.
|
|
2025-01-01 04:58:46
|
To catch rare bugs and corner cases where the image encoding process fails silently and produces bad output without alerting the user
|
|
2025-01-01 05:00:09
|
It would be much better if you didn't need to use an extra tool like gm or magick
|
|
2025-01-01 05:00:58
|
But if cjxl produced a warning or the library produced an error state
|
|
2025-01-01 05:05:50
|
"Output error, lossless verification failed" or "Warning, extreme distortion detected"
|
|
2025-01-01 05:06:57
|
"Major lacerations detected. Morphine administered. Power level is, forty percent. Have a very, safe day."
|
|
|
username
|
|
0xC0000054
Yes , 5.1 will have color management. Color management is one of several areas of the plugin's code that I will have to look into. I already have a bug where the plugin will tell Paint.NET use the embedded color profile without checking if it is RGB.
Paint.NET doesn't currently support HBD, it only operates in 8-bits-per-channel. So I think the XYB to sRGB code may only need to tag the loaded document with a sRGB profile.
|
|
2025-01-01 12:13:10
|
happy to see this getting addressed in the next version of the plugin! 🎉
https://github.com/0xC0000054/pdn-jpegxl/commit/bd05b8f900acd3f405a944d448b1897f35e00ec2
https://github.com/0xC0000054/pdn-jpegxl/commit/b480fed89c47889b69e32f7609dd07ffa4524ab6
|
|
|
0xC0000054
|
|
username
happy to see this getting addressed in the next version of the plugin! 🎉
https://github.com/0xC0000054/pdn-jpegxl/commit/bd05b8f900acd3f405a944d448b1897f35e00ec2
https://github.com/0xC0000054/pdn-jpegxl/commit/b480fed89c47889b69e32f7609dd07ffa4524ab6
|
|
2025-01-01 12:54:51
|
The plugin still doesn't support HBD, but there is also benefit to improving color management.
|
|
2025-01-01 12:56:36
|
One thing that I am considering, but can't implement due to Paint.NET not supporting load dialogs is allowing the user to choose the preferred XYB color space on load.
|
|
2025-01-01 12:57:17
|
But there may be a way to auto-detect which color space to use for XYB images.
|
|
|
Demiurge
|
2025-01-01 02:15:44
|
I thought xyb is an internal part of the codec that library users don't need to worry or think about
|
|
2025-01-01 02:19:47
|
It's just the internal lossy quantization space and when you decode an image it gets decoded to whatever color space is specified/attached
|
|
|
0xC0000054
But there may be a way to auto-detect which color space to use for XYB images.
|
|
2025-01-01 05:26:13
|
Presumably you would open a lossy jxl in whatever color space is written to the input file? Since that's "the suggested color space for the file"
|
|
2025-01-01 05:28:09
|
When you encode a file with cjxl to a lossy file, it embeds the original color profile so when you decode the lossy file later, you know what the original color space was and can decode it back to the same space as the original file.
|
|
2025-01-01 05:28:50
|
At least that's how it's supposed to work
|
|
2025-01-01 05:32:20
|
Sometimes there are bugs where it doesn't do that...
|
|
2025-01-01 05:33:46
|
Like the famous bug where it decodes an 8 bit srgb image to 8 bit linear. Idk if that crazy bug has been fixed yet
|
|
|
Demiurge
"Output error, lossless verification failed" or "Warning, extreme distortion detected"
|
|
2025-01-01 07:16:02
|
These should both just be treated as output errors ideally at the library level... to avoid silently writing bogus output, which is a serious concern
|
|
2025-01-01 07:27:40
|
Even the lossy encoder should have some sanity check option and try to verify it doesn't contain common types of errors like extreme distortion in specific regions/blocks or near the corners/edges of the image borders, completely wrong color/brightness throughout the whole image compared to the input, maybe even also extreme color banding that isn't present in the original image.
|
|
|
CrushedAsian255
|
|
Demiurge
Even the lossy encoder should have some sanity check option and try to verify it doesn't contain common types of errors like extreme distortion in specific regions/blocks or near the corners/edges of the image borders, completely wrong color/brightness throughout the whole image compared to the input, maybe even also extreme color banding that isn't present in the original image.
|
|
2025-01-01 11:44:37
|
for lossy, its more effort to do those tests so maybe it should be user-controllable, for lossless a simple hash should be pretty fast
|
|
|
Demiurge
|
2025-01-02 12:41:08
|
I don't think it's more effort.
|
|
2025-01-02 12:41:29
|
But that's just a theory
|
|
2025-01-02 12:42:06
|
My theory is that lossy already has to do similar tests anyways because of the nature of lossy
|
|
2025-01-02 12:42:49
|
When you specify a quality level, the lossy encoder has a perceptual model of how much distortion is acceptable and tries to make sure the maximum distortion doesn't exceed a perceptual-based threshold.
|
|
2025-01-02 12:45:10
|
So maybe it can re-use some of that code when doing a final test at the end, to try to catch silent errors.
|
|
2025-01-02 12:45:56
|
And make it an optional switch, if it takes too much time.
|
|
2025-01-02 12:46:25
|
`-V` for example
|
|
2025-01-02 12:46:39
|
wait that's version
|
|
2025-01-02 12:46:48
|
meh
|
|
2025-01-02 12:47:09
|
maybe just make the existing -V behavior the default "no arguments" behavior
|
|
2025-01-02 12:47:28
|
instead of -h
|
|
|
jonnyawsom3
|
2025-01-02 01:01:11
|
IIRC lossy uses a butteraugli heatmap of the image to decide where to spend the bits, so if it was already wrong once it would just repeat the same output
|
|
2025-01-02 01:01:31
|
Ssimulacra2 could help, at a huge memory and time cost
|
|
|
VcSaJen
|
|
0xC0000054
But there may be a way to auto-detect which color space to use for XYB images.
|
|
2025-01-02 09:11:59
|
XYB is just an implementation detail, user would never see it when decoding.
I dunno what's the problem is? From the cursory glance, [example](https://github.com/libjxl/libjxl/blob/main/examples/decode_oneshot.cc) keeps the original color profile.
|
|
|
pedromarques
|
2025-01-02 10:38:47
|
The more time passes by, the more convinced I am that the JPG XL name was a bad move:
- the name destroys the message that JPG XL is not a mere JPG upgrade. We see lots of photographers talking about JPG XL but using JPG name only
- to stand up a clear message on the uniqueness of JPG XL as a brand new advanced product (compatible with the JPG), the name JXL as a new product and not an upgrade would be more precise to newbies and the market in general
Google WebP benefits from this marketing misalignment.
|
|
|
CrushedAsian255
|
|
pedromarques
The more time passes by, the more convinced I am that the JPG XL name was a bad move:
- the name destroys the message that JPG XL is not a mere JPG upgrade. We see lots of photographers talking about JPG XL but using JPG name only
- to stand up a clear message on the uniqueness of JPG XL as a brand new advanced product (compatible with the JPG), the name JXL as a new product and not an upgrade would be more precise to newbies and the market in general
Google WebP benefits from this marketing misalignment.
|
|
2025-01-02 10:45:04
|
I personally believe JXL should be the format. Actual name in JPEG XL should be just what it expands to but not actually used most of the time.
|
|
|
w
|
2025-01-02 11:50:08
|
jpreg
|
|
|
CrushedAsian255
|
2025-01-02 12:27:52
|
Although “jpeg xl” has pretty unambiguous pronunciation “Jay-peg excel” where “JXL” has many different pronunciation:
- “jay excel”
- “jexel”
- “jay-xel” (same as above but longer first syllable)
- “jixel” (like “pixel”)
- “yixel” (some languages pronounce J as Y)
- probably way more
|
|
2025-01-02 12:28:55
|
We don’t need another GIF vs JIF (unless it can spread awareness, hmmm) 🤔
|
|
|
monad
|
2025-01-02 12:43:17
|
GIF vs JXL when
|
|
|
Meow
|
2025-01-02 12:44:21
|
jay-forty
|
|
2025-01-02 12:45:05
|
J-"ten"-L
|
|
2025-01-02 12:47:59
|
When we have iPhone "Ten"-R and JPEG "Ten"-R
|
|
|
jonnyawsom3
|
2025-01-02 03:56:14
|
I wish an iPhone was only a tenner
|
|
|
CrushedAsian255
|
|
Meow
J-"ten"-L
|
|
2025-01-02 05:31:19
|
j40 be like
|
|
|
AccessViolation_
|
|
CrushedAsian255
We don’t need another GIF vs JIF (unless it can spread awareness, hmmm) 🤔
|
|
2025-01-02 07:26:17
|
https://www.youtube.com/watch?v=Nrk8sqZfsgI
|
|
|
Quackdoc
|
2025-01-02 07:34:11
|
Every one cares about GIF versus JIF, but no one cares about PNG versus Ping.
|
|
|
jonnyawsom3
|
2025-01-02 07:37:18
|
I do. I do....
|
|
|
AccessViolation_
|
2025-01-02 07:41:36
|
Because everyone universally agrees that it should be pronounced pee-en-gee, no exceptions
|
|
2025-01-02 07:42:14
|
apart from that one wikipedia editor who wrote the introduction to the PNG article
|
|
|
_wb_
|
2025-01-02 09:02:48
|
The PNG spec says it is pronounced ping, iirc. Or maybe it was some libpng history document, not sure.
|
|
2025-01-02 09:04:23
|
If it is POrtable Network Graphics, of course "pong" would be a more logical pronunciation. But unofficially, PNG is really a recursive acronym for "PNG is Not Gif", which explains why it is pronounced "ping".
|
|
2025-01-02 09:05:15
|
I do say pee & gee myself, but I have a lot of respect for those who say ping.
|
|
|
jonnyawsom3
|
2025-01-02 09:17:50
|
> I do say pee & gee myself
There's a quote
|
|
|
juliobbv
|
2025-01-03 01:06:35
|
the real question is: how is the GIF in "PNG is not GIF" pronounced
|
|
|
Meow
|
2025-01-03 01:51:07
|
The working 3rd edition of PNG spec still says this
> This specification specifies a datastream and an associated file format, Portable Network Graphics (PNG, pronounced "ping"), for a lossless, portable, compressed individual computer graphics image or frame-based animation, transmitted across the Internet.
|
|
|
Traneptora
|
|
_wb_
If it is POrtable Network Graphics, of course "pong" would be a more logical pronunciation. But unofficially, PNG is really a recursive acronym for "PNG is Not Gif", which explains why it is pronounced "ping".
|
|
2025-01-05 12:27:39
|
PNG is not Gif afaik was a backronym from back during the LZW compuserve patent days issues
|
|
2025-01-05 12:28:01
|
most of the people who work on PNG are unrelated to the people from way back when, except I think mark addler
|
|
|
Mine18
|
2025-01-05 05:23:59
|
i wonder who is that above me lol
https://github.com/FFmpeg/FFmpeg/commit/f3c408264554211b7a4c729d5fe482d633bac01a
|
|
|
jonnyawsom3
|
2025-01-05 05:38:27
|
Oh, yeah. They announced it in <#794206170445119489> instead of here
|
|
2025-01-07 06:20:50
|
Not sure if anyone else has pointed it out, but because the Telegram desktop client for Windows uses jpegli, sending a 16bit PNG will encode with the extra bitdepth you can recover as the recipient
|
|
|
A homosapien
|
2025-01-07 07:24:58
|
that's really cool
|
|
2025-01-07 07:25:18
|
I hope other big social media platforms adopt jpegli (and jxl) <:logo:829708783336816671>
|
|
|
jonnyawsom3
|
2025-01-07 07:41:44
|
In this case, I think it's just because it's open sourced on Github. The other clients are closed or hidden and don't have jpegli
|
|
2025-01-07 07:41:49
|
Or JXL...
|
|
|
HCrikki
|
2025-01-07 07:43:16
|
afaik telegram seems to use jpegli and jxl everywhere
|
|
|
jonnyawsom3
|
2025-01-07 07:58:07
|
Nah, you can tell because the files from other clients use subsampling
|
|
|
novomesk
|
|
HCrikki
afaik telegram seems to use jpegli and jxl everywhere
|
|
2025-01-07 02:21:52
|
Telegram desktop uses jpegli on Linux. On Windows, mozjpeg is used.
|
|
|
jonnyawsom3
|
2025-01-07 02:31:31
|
I thought it was the other way around?
|
|
|
Meow
|
|
novomesk
Telegram desktop uses jpegli on Linux. On Windows, mozjpeg is used.
|
|
2025-01-07 04:26:09
|
What on macOS?
|
|
|
novomesk
|
|
Meow
What on macOS?
|
|
2025-01-07 10:36:43
|
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/build/prepare/prepare.py
According the build script I think it is very close to Windows build. So mozjpeg.
|
|
|
Meow
|
2025-01-08 01:38:35
|
Maybe there's no big difference as they should've chosen the quality below 75
|
|
|
fOld^free
|
|
novomesk
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/build/prepare/prepare.py
According the build script I think it is very close to Windows build. So mozjpeg.
|
|
2025-01-09 09:40:59
|
macOS actually have a native swift app for telegram, but they also seems to use mozjpeg?
https://github.com/overtake/TelegramSwift/blob/539b85f909080f003cf41fad66af035bb5dd26e5/submodules/Mozjpeg/Sources/Mozjpeg.h#L4
|
|
|
Gizus
|
|
novomesk
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/build/prepare/prepare.py
According the build script I think it is very close to Windows build. So mozjpeg.
|
|
2025-01-09 10:22:15
|
> stage('dav1d'
> stage('libavif'
> stage('libjxl'
Why it does not recognize .avif files as images?
|
|
|
jonnyawsom3
|
|
I thought it was the other way around?
|
|
2025-01-09 10:35:46
|
I tested and I am wrong. I was basing it on quant tables but looking again they're completely different
|
|
|
novomesk
|
|
Gizus
> stage('dav1d'
> stage('libavif'
> stage('libjxl'
Why it does not recognize .avif files as images?
|
|
2025-01-09 10:36:16
|
For me, AVIF works in Telegram Desktop:
https://github.com/telegramdesktop/tdesktop/issues/28829#issuecomment-2572903255
Can you show me what AVIF doesn't work for you there?
|
|
|
Gizus
|
|
novomesk
For me, AVIF works in Telegram Desktop:
https://github.com/telegramdesktop/tdesktop/issues/28829#issuecomment-2572903255
Can you show me what AVIF doesn't work for you there?
|
|
2025-01-09 10:39:21
|
> version 5.9
probably this is the reason why it's not working for me
|
|
|
novomesk
For me, AVIF works in Telegram Desktop:
https://github.com/telegramdesktop/tdesktop/issues/28829#issuecomment-2572903255
Can you show me what AVIF doesn't work for you there?
|
|
2025-01-09 10:48:37
|
Some avif's working, some not. The second one is large: 4800x7014 pixels
|
|
|
novomesk
|
|
Gizus
Some avif's working, some not. The second one is large: 4800x7014 pixels
|
|
2025-01-09 10:51:05
|
Can you send me the second AVIF file which didn't work?
|
|
|
Gizus
|
|
novomesk
Can you send me the second AVIF file which didn't work?
|
|
2025-01-09 10:51:19
|
|
|
|
novomesk
|
|
Gizus
|
|
2025-01-09 11:11:10
|
I think it is because the app is built using Qt6 and there is a default allocation limit 256MB.
|
|
2025-01-09 11:12:51
|
If you use 8-bit depth for that image, it would work.
|
|
|
Gizus
|
|
novomesk
I think it is because the app is built using Qt6 and there is a default allocation limit 256MB.
|
|
2025-01-09 11:20:26
|
Yes, 8bit is working
|
|
2025-01-09 11:20:31
|
thank you
|
|
|
Oleksii Matiash
|
2025-01-09 11:59:40
|
Works fine
|
|
|
Gizus
|
|
Oleksii Matiash
Works fine
|
|
2025-01-09 12:36:19
|
This is probably not Linux desktop client and not Web client
|
|
|
Oleksii Matiash
|
|
Gizus
This is probably not Linux desktop client and not Web client
|
|
2025-01-09 12:36:45
|
Correct, this is Windows one
|
|
|
novomesk
|
2025-01-09 03:23:42
|
Because Telegram Desktop for Windows uses Qt5 and it doesn't have the Qt6 limit.
Qt5 is used because it works on Win7.
|
|
|
spider-mario
|
2025-01-09 04:55:45
|
Qt6 renders text so much better, though
|
|
|
username
|
2025-01-09 05:02:08
|
I will say that this is something that exists https://github.com/crystalidea/qt6windows7/
|
|
|
jonnyawsom3
|
2025-01-10 08:06:22
|
Noticed that XYB JPEGs were getting heavy chroma bleed on Telegram. Turns out it's preserving the XYB colorspace but using YCbCr quality and quant tables
|
|
|
HCrikki
|
2025-01-11 06:40:27
|
on upcoming adoption, Kavita merged jxl support *and* transcoding in canary, basically allowing comic-style sites to store and serve only one image format (ie jxl) but live transcode to another supported format if the app/browser doesnt support the main choice - or say keep pngs stored and serve live-transcoded jxl in priority if supported without needing to transform the entire library (sounds handy for incremental conversions taking forever to swap the source images)
|
|
2025-01-11 06:40:32
|
https://github.com/Kareadita/Kavita/pull/3489
|
|
|
jonnyawsom3
|
2025-01-11 07:43:05
|
Intriguing
|
|
|
novomesk
|
|
Gizus
Yes, 8bit is working
|
|
2025-01-11 10:14:57
|
Set environment variable
QT_IMAGEIO_MAXALLOC=512
to increase Qt6 default limit.
|
|
|
Demiurge
|
2025-01-11 11:29:54
|
Using env variables is really annoying
|
|
|
jonnyawsom3
|
2025-01-13 01:48:24
|
Huh... How do you have so many server levels having only joined today?
|
|
|
username
|
|
Huh... How do you have so many server levels having only joined today?
|
|
2025-01-13 02:21:40
|
they are a long'ish time member in the server however they have changed their username (I'm probably not going to say what the old one was out of respect) and they keep deleting all their messages which is incredibly annoying because there are dozens of pre-existing conversations in this server that now have missing or broken context. I'm pretty sure I know what event caused them to start deleting everything but honestly this all feels like an overreaction to said event.
(just to be clear it's perfectly fine that they changed their display name and keep rejoining the server it's just the breaking of old conversations I have a problem with.)
|
|
|
jonnyawsom3
|
2025-01-13 03:17:19
|
I see
|
|
|
Kampidh
|
2025-01-19 01:34:35
|
<@238552565619359744> got that EPF bug on krita fixed, just merged into stable branch as well
https://invent.kde.org/graphics/krita/-/merge_requests/2309
|
|
|
jonnyawsom3
|
2025-01-19 12:40:26
|
Thanks, Krita is almost better than cjxl at this point, with a nice GUI and annotated options
|
|
|
Meow
|
2025-01-24 07:13:16
|
Needs a macOS user to verify if this Quick Action can convert multiple images to JXL and display the whole progress on Terminal
|
|
|
DZgas Ж
|
2025-01-26 02:51:52
|
<:JXL:805850130203934781>
|
|
|
jonnyawsom3
|
2025-01-26 04:19:13
|
Yeah, it's already on the website at the bottom
<https://jpegxl.info/resources/supported-software.html>
|
|
|
HCrikki
|
2025-01-26 05:45:27
|
dupe cleaner czkawka handles jxl since october's v8.0, xnviewmp is the one supporting jxl (not the old xnview classic)
|
|
2025-01-26 05:49:16
|
mention for android users - Fossify Gallery (available in play store, fdroid). successor to Simple Gallery (wich became abandonware)
|
|
|
RaveSteel
|
2025-01-26 06:08:24
|
Fossify Gallery sadly has issues displaying certain JXL files, but at least some work
|
|
|
HCrikki
|
2025-01-26 06:10:30
|
afaik a limitation from the upstream library used. oupson had a FG rebuild based on its old code that seems to not have some of those issues so i guess it could be contributed to FG's current code if identified
|
|
2025-01-27 12:46:24
|
for more universal enabling, the only option almost as good as inclusion upstream is use or preinstall of a jxl-enabled webview so any app/game with jxls available could display them without extra changes. cromite had it for a while until a change upstream got its patches disabled for further research. i wonder if dev just forgot to reenable it since noone asks
|
|
2025-01-27 06:38:57
|
**hydrus** apparently now supports jxl through a pillow plugin (version 606) https://github.com/hydrusnetwork/hydrus/releases/tag/v606-future-01
|
|
2025-01-27 06:40:38
|
its used to build, sync, redistribute and power the backend of booru-style image libraries
dev asks jxl enthusiasts for feedback
|
|
|
Demiurge
|
2025-01-31 06:50:57
|
Maybe I'm kinda impatient, but why is mozilla waiting for jxl-rs to be finished when all they need to do is just enable their existing jxl decoder that's in the nightly build?
|
|
2025-01-31 06:51:19
|
And merge the patches that fix the transparency, animation, and color profile support
|
|