|
Demiurge
|
|
Quackdoc
its literally a modifer that determins how much background color to add to a pixel
|
|
2024-04-06 04:56:21
|
That's not the impression I got when I read the article. I'll double check though.
|
|
|
lonjil
|
|
Quackdoc
Keep in mind, you cannot see light unless the light is being reflected into your eyes. But that does not mean the energy disappears.
|
|
2024-04-06 04:56:43
|
you can see whatever light went directly from the light source to your eyes, but you cannot see whatever light went in any other direction
|
|
|
Quackdoc
|
2024-04-06 04:56:51
|
Be aware I would not trust Wikipedia to be accurate on anything.
|
|
|
lonjil
you can see whatever light went directly from the light source to your eyes, but you cannot see whatever light went in any other direction
|
|
2024-04-06 04:57:22
|
exactly, alpha 0 just means the light isn't being directed into the lens
|
|
2024-04-06 04:57:39
|
that doesn't mean that the energy is gone
|
|
2024-04-06 04:57:58
|
its just "not visible"
|
|
|
Demiurge
|
2024-04-06 04:58:05
|
The impression I get is that emission is a multiple of occlusion and 0 is fully occluded
|
|
2024-04-06 04:58:12
|
But I'll double check...
|
|
|
Quackdoc
|
|
Demiurge
The impression I get is that emission is a multiple of occlusion and 0 is fully occluded
|
|
2024-04-06 04:58:50
|
It's impossible for this to be true. If this is what the article leads on, then the article's just wrong. Wouldn't be the first time it's happened.
|
|
|
lonjil
|
|
lonjil
indeed, as long as what I'm saying is true in at least one situation, my point is made
|
|
2024-04-06 04:59:07
|
imagine the background is a solid piece of felt, pure black, alpha=1.
Now imagine you have a transparent light emitter in front of it, like a candle. It has alpha=0, but RGB=1,1,1.
What do you see? You see 1,1,1, despite the candle being alpha=0 and the background being 0,0,0.
|
|
|
Quackdoc
|
2024-04-06 04:59:11
|
Adobe used a few misinformation about Associate Alpha all the time because they refused to fix their shit and their goal was to convince everyone that they were right and everyone else was wrong.
|
|
|
Demiurge
|
2024-04-06 04:59:32
|
If I'm right then it should not be possible to have an alpha of 0 and a nonzero emissive value at the same time since that's division by zero
|
|
|
Quackdoc
|
2024-04-06 04:59:43
|
correct
|
|
|
lonjil
|
|
Demiurge
If I'm right then it should not be possible to have an alpha of 0 and a nonzero emissive value at the same time since that's division by zero
|
|
2024-04-06 05:00:28
|
https://community.adobe.com/t5/photoshop-ecosystem-discussions/change-in-exr-open-from-cs2-to-cs3-can-this-be-fixed/m-p/1521042/page/4#M918
|
|
|
Quackdoc
|
2024-04-06 05:00:41
|
but that's proof as to why you are wrong, because it is possible (unlike unaccositated alpha)
|
|
|
Demiurge
|
2024-04-06 05:02:40
|
Or maybe it's too expensive for computers to double check that values make sense before doing matrix multiplication?
|
|
|
Quackdoc
|
2024-04-06 05:03:10
|
it's not expensive at all
|
|
2024-04-06 05:03:15
|
well maybe in the 90s
|
|
|
lonjil
|
|
Demiurge
Or maybe it's too expensive for computers to double check that values make sense before doing matrix multiplication?
|
|
2024-04-06 05:04:33
|
but they do make sense
|
|
2024-04-06 05:05:03
|
the VFX industry is all in on associated alpha for a reason, it allows for something that unassociated alpha simply doesn't
|
|
|
fab
|
|
Demiurge
|
2024-04-06 05:16:51
|
In your model, you would first subtract the alpha and then add
|
|
2024-04-06 05:16:51
|
Your additive model doesn't make sense to me. In theory you can just keep adding but I don't think anyone does that in practice... In practice they're added and then divided as if averaging.
|
|
2024-04-06 05:16:52
|
Also, the article says at the beginning that the term alpha comes from "linear interpolation formula" which is not adding
|
|
2024-04-06 05:17:43
|
Linear interpolation has a very clear meaning and it's not adding like you're describing
|
|
2024-04-06 05:17:47
|
It's averaging
|
|
|
lonjil
|
2024-04-06 05:18:08
|
just because a term comes from something doesn't mean that that thing is the end all be all of everything afterwards
|
|
|
Demiurge
|
2024-04-06 05:18:29
|
Well, if it's called alpha...
|
|
|
lonjil
|
2024-04-06 05:18:37
|
like, just look at the text
|
|
2024-04-06 05:18:45
|
that's the formula
|
|
2024-04-06 05:18:48
|
it ain't my model
|
|
|
Demiurge
|
2024-04-06 05:18:48
|
You can see why I thought of it the way I did and got this impression
|
|
2024-04-06 05:19:48
|
For some reason the formulas do not show up in safari...
|
|
|
lonjil
|
2024-04-06 05:20:00
|
rip
|
|
2024-04-06 05:20:12
|
that's annoying!
|
|
2024-04-06 05:22:41
|
> Premultiplied alpha may also be used to allow regions of regular alpha blending (e.g. smoke) and regions with additive blending mode (e.g. flame and glitter effects) to be encoded within the same image.[7][8] This is represented by an RGBA triplet that express emission with no occlusion, such as (0.4, 0.3, 0.2, 0.0).
|
|
|
Demiurge
|
|
lonjil
like, just look at the text
|
|
2024-04-06 05:33:25
|
This equation looks perfectly compatible with additive blending
|
|
|
lonjil
|
|
Demiurge
This equation looks perfectly compatible with additive blending
|
|
2024-04-06 05:35:24
|
yeah. That's sorta the point. See the text I quoted right above. When the foreground is alpha=0, foreground and background are simply added together.
|
|
|
Demiurge
|
2024-04-06 05:42:54
|
I wonder how it works for jpegxl. It's a floating point format so loss of precision isn't a problem...
|
|
|
lonjil
|
2024-04-06 05:46:00
|
JXL supports both
|
|
|
Demiurge
|
2024-04-06 05:46:16
|
Btw why does it make sense to say associated alpha when the brightness of a pixel is NOT associated with the alpha?
|
|
2024-04-06 05:46:43
|
It makes more sense if it's associated because it's premultiplied
|
|
2024-04-06 05:47:25
|
But if that's incorrect then in what other sense is it associated
|
|
|
lonjil
JXL supports both
|
|
2024-04-06 05:49:21
|
So the file says what pixel format the values are using in other words?
|
|
2024-04-06 05:49:46
|
So it's always unambiguous?
|
|
|
lonjil
|
2024-04-06 05:50:29
|
I believe so yes
|
|
2024-04-06 05:51:18
|
yeah there's a flag that says whether the alpha channel is associated or not
|
|
|
Demiurge
|
2024-04-06 05:52:18
|
Cool. But what is it "associated" with exactly if they aren't premultiplied?
|
|
|
lonjil
|
2024-04-06 05:52:38
|
ask whoever invented that name
|
|
|
lonjil
yeah there's a flag that says whether the alpha channel is associated or not
|
|
2024-04-06 05:53:04
|
and when you do blending inside JXL with multiple frames or patches, you can tell it which blending algo to use, I think.
|
|
|
Demiurge
|
2024-04-06 05:55:56
|
Hmm. All these things conspired to make me initially believe that premultiplication is a logical term to use
|
|
|
lonjil
and when you do blending inside JXL with multiple frames or patches, you can tell it which blending algo to use, I think.
|
|
2024-04-06 06:00:09
|
Yes and surely this is specified as a very simple algo that doesn't require converting the colorspace to a linear one
|
|
|
lonjil
|
2024-04-06 06:01:02
|
keep in mind that you can do all the math to make it work out right in the end during encoding, since you know exactly how the decoder works
|
|
|
Demiurge
|
2024-04-06 06:02:16
|
Yeah, there shouldn't be a need for anything so advanced as being able to convert arbitrary colorspace to linear
|
|
|
spider-mario
|
2024-04-06 09:37:00
|
the attitude of Chris in that Adobe thread is frankly appalling
|
|
|
Quackdoc
|
|
spider-mario
the attitude of Chris in that Adobe thread is frankly appalling
|
|
2024-04-07 01:18:16
|
it really was quite something, the thread itself is very enlightening though, btw this thread is pretty notorious now
|
|
|
Demiurge
Cool. But what is it "associated" with exactly if they aren't premultiplied?
|
|
2024-04-07 01:29:25
|
hg2dc has a good explanation here https://hg2dc.com/2020/08/26/question-25/
> It would be challenging to dream up a worse term for such an encoding. Put something math-nerd in a term and you can be guaranteed that math nerds will get obsessed with the math nerdism of the subject, and completely forget the idea that RGB values are emission intensities. Mr. Gritz, cited below, was one of few sane people who chose to use the TIFF specification terminology associated alpha. As with All Things Gritz, it is a decision rooted in wisdom.
|
|
2024-04-07 01:31:39
|
the tiff spec did right by calling it associated alpha, but sadly goes on to define it as below. so kinda one step forwards half step back
> associated alpha specifies that color components are pre-multiplied by the alpha component
|
|
2024-04-07 01:46:19
|
I posted this one before, but it actually does a good job. "premultiplied" does *sometimes* make sense, it makes sense when you do the process of converting unassociated alpha to associated alpha
https://groups.google.com/g/osl-dev/c/3QKlnfW6dB0/m/KdziBfxeBgAJ,he
> the PNG file format specification dictates that color should not be premultiplied (also known as "unassociated alpha"), and the OpenEXR specification is pretty clear that color should always be premultipled (also known as "associated alpha").
> ...
> By default, OIIO's texture system will automatically premultiply upon input, for image files that appear to be unassociated
> ...
> There is an option ... that will turn off this behavior, i.e., to leave unpremultiplied colors as they were in the file. If you do that, then, the shader itself needs to do the premultiplication to use it as ordinary texture
> ...
>
> So the way that OpenImageIO ... deals with this is to attempt to determine ... its best guess on whether an image being read is associated or unassociated alpha, and for the latter will automatically premultiply in order to present the pixels on the app side of the API as if they were premultiplied.
|
|
|
_wb_
|
2024-04-07 08:43:10
|
In jxl we support everything: premultiplied or not, but also funky stuff like negative alpha or alpha > 1 which can perhaps also have interesting uses
|
|
|
fab
|
2024-04-07 08:52:04
|
I computed a new Instagram aac encoder
|
|
2024-04-07 08:53:02
|
When new array of commit or announcement?
|
|
|
spider-mario
|
2024-04-07 09:13:22
|
perhaps unassociated alpha could be renamed to “normalised alpha” or something like that
|
|
2024-04-07 09:13:50
|
(it assumes that emission won’t be more than occlusion and therefore rescales 0-1 to represent 0-alpha)
|
|
2024-04-07 09:15:35
|
maybe “normalis**ing** alpha” to make it clearer that alpha is the normaliser and not the normalisee
|
|
|
fab
|
2024-04-07 11:00:08
|
That's for formula 1 videos will help
|
|
2024-04-07 11:00:36
|
Fixing moire in jpeg xl and avif those new fast speeds
|
|
|
Demiurge
|
2024-04-07 11:48:43
|
What do these constant out of context screenshots mean
|
|
|
fab
|
2024-04-07 12:40:54
|
|
|
2024-04-07 12:41:39
|
i hope in a week we will have some builds
|
|
|
Fox Wizard
|
|
Demiurge
What do these constant out of context screenshots mean
|
|
2024-04-07 12:44:49
|
I don't think questioning Fabian's logics will really bring you anywhere <:KekDog:884736660376535040>
|
|
|
fab
|
|
Fox Wizard
I don't think questioning Fabian's logics will really bring you anywhere <:KekDog:884736660376535040>
|
|
2024-04-07 01:34:48
|
pashifox found 5 new bugs on the encoder side
|
|
2024-04-07 01:35:35
|
|
|
2024-04-07 01:36:11
|
isa good news gweewhwef.txt
|
|
|
_wb_
|
|
spider-mario
perhaps unassociated alpha could be renamed to “normalised alpha” or something like that
|
|
2024-04-07 04:15:02
|
Names aside, what makes more sense depends a lot on the use case imo. When editing images like composing two photos with a smooth "crossfade" between the two, it makes sense to see alpha as a selection mask that is independent of RGB (so unassociated/non-premultiplied). When modeling a scene using semitransparent layers where you want to have both blending and additive (emissive), associated/premultiplied is needed because otherwise you cannot have emissive light. Though if you allow sample values outside the [0,1] interval (both for color and for alpha), you can also model things that cannot be represented when everything has to be in that nominal interval.
|
|
|
fab
|
2024-04-07 06:49:21
|
It needs a tablet to do properly but now i did some new results
|
|
2024-04-07 06:49:25
|
Tedious
|
|
2024-04-07 06:49:39
|
|
|
2024-04-07 06:53:43
|
|
|
2024-04-07 06:54:02
|
I think look more like vp9 than jxl but why wb,;
|
|
2024-04-07 06:54:46
|
What i did wrong today on hall website
|
|
|
lonjil
|
2024-04-07 06:57:59
|
I found this gem of a comment on YouTube....
|
|
|
fab
|
2024-04-07 06:58:33
|
Aomedia is too slow 13 secondd a single image isn't ready
|
|
2024-04-07 06:58:42
|
Jxl has already encoded
|
|
|
spider-mario
|
|
lonjil
I found this gem of a comment on YouTube....
|
|
2024-04-07 06:59:48
|
so yet more misunderstanding of associated alpha?
|
|
2024-04-07 07:00:07
|
is it that recent video by the half-silver-face guy?
|
|
2024-04-07 07:00:20
|
(I don’t remember his name right now)
|
|
|
lonjil
|
2024-04-07 07:00:42
|
Captain Disillusion, yeah. That's the top voted comment under that video
|
|
2024-04-07 07:01:59
|
The video isn't great, but it does mention that associated alpha allows for some things that simply aren't possible with unassociated alpha, and isn't just an optimization. So it's funny that Crocker ignores that in his comment. Maybe he just didn't watch it.
|
|
2024-04-07 07:02:05
|
https://www.youtube.com/watch?v=XobSAXZaKJ8
|
|
|
spider-mario
|
2024-04-07 07:05:27
|
I’m going to reply with this
|
|
|
lonjil
|
2024-04-07 07:06:47
|
🙏
|
|
2024-04-07 07:18:17
|
incidentally, is there a standard way of doing 3-channel alpha in JXL?
|
|
2024-04-07 07:21:12
|
Presumably it's perfectly possible since you can do whatever you want with any number of extra channels, but with JXL support probably coming to VFX tools like Blender in the nearish future, I wonder if there will be an agreed upon convention for this case.
|
|
|
fab
|
|
lonjil
incidentally, is there a standard way of doing 3-channel alpha in JXL?
|
|
2024-04-07 07:36:37
|
honestly on my r580 avif looks identical to jxl
|
|
2024-04-07 07:36:56
|
butcan't make jxl identical to avif
|
|
|
Demiurge
|
2024-04-07 10:20:57
|
That has nothing to do with the question you're replying to...
|
|
|
spider-mario
|
2024-04-07 10:33:36
|
also, being identical should be symmetrical
|
|
|
Quackdoc
|
|
lonjil
I found this gem of a comment on YouTube....
|
|
2024-04-07 10:41:37
|
watch creators of a format ruin a format and decades worth of beginner VFX artists exports with one funny line
|
|
|
spider-mario
|
2024-04-07 11:02:15
|
https://www.smbc-comics.com/?id=2475
```python
.append("the only benefit of premultiplication is faster compositing")
```
|
|
|
Quackdoc
|
|
lonjil
|
|
Quackdoc
|
2024-04-07 11:14:18
|
it's not even like it was unknown the benefits at the time of PNGs inception. Porter and Duff's excellent paper came out in like '85. OFC it's entirely possible that they were unaware of it. But I feel like they information would have been available for them.
|
|
2024-04-07 11:16:48
|
Like they **knew** about pre-mulitiplied which according to alvy ray's "Alpha and the history of digital compositing" actually was first provided as terms and technologies by that specific paper
|
|
2024-04-07 11:17:33
|
oh sorry the original paper was '84 https://graphics.pixar.com/library/Compositing/paper.pdf
|
|
|
_wb_
|
|
lonjil
incidentally, is there a standard way of doing 3-channel alpha in JXL?
|
|
2024-04-08 07:15:25
|
Is that a thing? So R,G,B each get their own alpha value?
|
|
2024-04-08 07:20:48
|
You can have 3 alpha channels in jxl, but frame blending is defined in the spec to use the same alpha channel for blending R,G and B.
|
|
|
spider-mario
|
|
_wb_
Is that a thing? So R,G,B each get their own alpha value?
|
|
2024-04-08 09:54:07
|
yes, EXR supports that: https://openexr.com/en/latest/TechnicalIntroduction.html#deep-data-special-purpose-channels-and-reserved-channel-names
|
|
2024-04-08 09:54:53
|
(with the following note: “If a part contains RA, GA and/or BA channels, it must not also contain an A channel.”)
|
|
|
_wb_
|
2024-04-08 09:57:15
|
For a single layer image, we could easily just have a convention that if there are 3 alpha channels, they correspond respectively to RA, GA and BA.
For multi-layer, we currently don't have any way in the spec to do alpha blending (of frames or patches) with 3 alpha channels instead of 1. Should we add an extension for that?
|
|
|
Quackdoc
|
2024-04-08 10:39:18
|
it sounds niche, but its actually pretty important, say you are rendering/simulating a lens that filters out red light. you could do (RA GA BA) (0,100 100,0 100,0) or something like that, I think I got that right. its uber late
|
|
2024-04-08 10:39:52
|
well its more like 0,90 or something
|
|
|
_wb_
|
2024-04-08 12:40:44
|
We also have other blend modes in jxl, e.g. you could have a kMul layer with color (0.9 0 0)...
|
|
|
lonjil
|
2024-04-08 12:55:46
|
that seems like a pretty sensible way of doing it
|
|
2024-04-08 12:57:17
|
So you'd have a background layer, a kMul RGB layer, and then a kAdd RGB layer.
|
|
|
|
niutech
|
|
gb82
Do you guys know if there is a compressed vector-based image format like SVG?
|
|
2024-04-10 04:23:33
|
Yes, there is https://github.com/wwww-wwww/spline and the article: https://grass.moe/splines/
|
|
2024-04-10 04:26:26
|
I've made an SVG2JXL test some time ago: https://discord.com/channels/794206087879852103/824000991891554375/968503089663442944
|
|
|
gb82
|
|
niutech
I've made an SVG2JXL test some time ago: https://discord.com/channels/794206087879852103/824000991891554375/968503089663442944
|
|
2024-04-10 04:42:30
|
it doesn't translate perfectly though, at least currently
|
|
|
w
|
2024-04-10 05:29:28
|
it will never translate perfectly
|
|
2024-04-10 05:29:44
|
jxl splines are too weak
|
|
|
yoochan
|
2024-04-10 08:24:07
|
Weak? Is it a mathematical term?
|
|
|
_wb_
|
2024-04-10 08:24:09
|
I wouldn't say they are weak, jxl splines can do things you cannot do in SVG, but you can also do things in SVG that cannot be done with jxl splines. In particular jxl has no notion of filled shapes.
|
|
|
|
niutech
|
2024-04-11 09:44:47
|
You can approximate filled shapes by drawing thick splines from the center of a shape to its edge, but it's not very accurate. Also JXL splines aren't as sharp as SVG paths. But they are really compact in terms of file size for complicated paths.
|
|
|
Demiurge
|
|
DZgas Ж
quite recently (a couple of months ago) I abandoned png for large images, and now I use jpeg yuv420 q100 (not loseless) in order to give away some of my work. I'm only doing this because it decodes quickly, and takes up less memory than all other formats (I was shocked by the speed of jpeg decoding in chrome, and how much RAM it takes up. it spends 6 times less memory, unlike for example xnview, probably because of some special way of store the decoded image, Not with pure pixels)
|
|
2024-04-11 04:32:56
|
Yuv420 is less pixels so obviously it's faster to decode, but you're blurring the color channels
|
|
|
Kremzli
How is "mp3 superior to opus"?
|
|
2024-04-11 04:34:19
|
Harpsichord music last I checked sounds like ass with opiss
|
|
2024-04-11 04:36:48
|
And yeah jxl is a raster format, splines are not meant for vector graphics, they're meant for being subtracted from an image during preprocessing phase to improve the efficiency of DCT
|
|
2024-04-11 04:37:05
|
Just stick to brotli compressed SVG
|
|
2024-04-11 04:37:21
|
It's perfectly fine to have .svg.br
|
|
2024-04-11 04:37:44
|
There's no law against it
|
|
|
DZgas Ж
|
|
Demiurge
Yuv420 is less pixels so obviously it's faster to decode, but you're blurring the color channels
|
|
2024-04-11 05:52:26
|
blurring is a decoding problem. It's not inside the image.
|
|
2024-04-11 05:53:46
|
I writed my own RGB to YUV420 for this, in pure python
|
|
|
Demiurge
|
2024-04-11 11:16:35
|
Yeah, it is inside the image. If you convert to 420, you are throwing away a whole bunch of pixels, shrinking the image, which is essentially blurring it.
|
|
2024-04-11 11:17:12
|
Smaller images are faster to encode and decode of course but it's severely destroying the fidelity of the image
|
|
2024-04-11 11:18:22
|
Lossless cjxl at effort=1 is ludicrous speed. And smaller than PNG. Try that
|
|
2024-04-11 11:19:09
|
No need to mangle the image when you could just use a faster encoder. :)
|
|
2024-04-11 11:20:47
|
Also when you use low effort settings it decodes faster too.
|
|
2024-04-11 11:28:13
|
Effort=3 or less is very very fast
|
|
|
spider-mario
|
2024-04-14 06:26:05
|
Normal (associated)
|
|
2024-04-14 06:26:30
|
well, we know where the authors of PTGui stand
|
|
|
lonjil
|
|
LMP88959
|
2024-04-15 02:43:13
|
Hi are there any other discord servers that discuss image/video compression? I really had a hard time finding anything
|
|
|
_wb_
|
2024-04-15 07:44:45
|
https://discord.gg/AfhGNDpM
|
|
2024-04-15 07:45:02
|
https://discord.gg/ZvtV6wya
|
|
|
damian101
|
2024-04-15 08:00:13
|
https://discord.gg/HhCtDUDbgm
|
|
2024-04-15 08:00:35
|
https://discord.gg/hSrjUCMncC
|
|
2024-04-15 08:01:54
|
https://discord.gg/P2ZQSuGbkF
|
|
|
LMP88959
|
2024-04-15 11:52:04
|
Thank you both so much
|
|
|
_wb_
|
2024-04-15 12:38:05
|
TIL that ImageMagick `convert input.png -quality N output.jp2` does not do what I assumed it would do
|
|
2024-04-15 12:39:11
|
in particular, `N`is not on a scale from 0 to 100 similar to that of its jpeg or webp encoding
|
|
2024-04-15 12:39:32
|
but it is expressed as a target PSNR score
|
|
2024-04-15 12:40:08
|
i.e. if you give it any value above 50, it's extremely high quality
|
|
|
LMP88959
|
2024-04-15 12:41:22
|
Oh i ran into that problem a few months ago but i didnt look into it to see why the scale was so different
|
|
|
_wb_
|
2024-04-15 12:42:01
|
this behavior is pretty unintuitive and has caused me some head scratching before I figured out what was going on with that scale
|
|
|
LMP88959
|
2024-04-15 12:43:09
|
Yeah it is very unintuitive, im not terribly familiar with j2k but does its quantizer not map to 0-100 trivially? I cant think of a reason why they would make it like this otherwise
|
|
|
_wb_
|
2024-04-15 12:44:01
|
ImageMagick is funny in that way, its `-quality` parameter can mean quite weird things (e.g. when encoding PNG, you can configure some libpng effort settings using that option)
|
|
|
LMP88959
|
2024-04-15 12:46:24
|
Im curious how they target PSNR
|
|
|
_wb_
|
2024-04-15 12:47:09
|
No image format maps to a 0-100 scale trivially, you always need to do some kind of translation from a user-facing quality scale to internal encoding parameters. And you can never perfectly align scales between different encoders/codecs, you can align them according to a metric but even then you'll only get corpus-level alignment, not image-level alignment (and no metric correlates perfectly with actual image quality).
|
|
|
LMP88959
|
2024-04-15 12:50:31
|
But why choose a wildly different parameter to begin with
|
|
2024-04-15 12:51:13
|
Like you said given the HVS, PSNR essentially caps at ~50
|
|
2024-04-15 12:51:20
|
For visually lossless
|
|
2024-04-15 12:51:46
|
And anything under 30 or 25 is very undesirable
|
|
2024-04-15 12:52:04
|
Weird to pick that as the quality parameter
|
|
|
fab
|
2024-04-15 12:52:47
|
I'm only in that as is video focused and not media, Android and seasonal. And the admin is serious intelligent. The best information Ive found is that on jxl Discord "
|
|
|
_wb_
|
2024-04-15 12:54:03
|
Targetting PSNR is not that hard, since PSNR is such a simplistic metric. Essentially PSNR is just directly related to quantization (coarser quantization -> lower PSNR).
|
|
|
LMP88959
|
2024-04-15 12:54:55
|
True, a lookup table could be used to map it
|
|
|
_wb_
|
2024-04-15 12:55:45
|
the error introduced by quantizing pixel samples in 8-bit corresponds to PSNR 54
|
|
|
LMP88959
|
2024-04-15 12:55:46
|
I had some per code block or coefficient control loop in my head for some reason
|
|
|
_wb_
the error introduced by quantizing pixel samples in 8-bit corresponds to PSNR 54
|
|
2024-04-15 12:56:04
|
Oh interesting I didnt know that
|
|
|
_wb_
|
2024-04-15 01:00:20
|
PSNR is defined as 10 * log_10(1 / MSE), if the mean square error is computed with sample values on a 0..1 scale
|
|
2024-04-15 01:01:43
|
8-bit quantization introduces a quantization error of 0.5/255 on average, so that's PSNR 54
|
|
2024-04-15 01:02:23
|
or wait, the quantization error is I guess only 0.25/255 on average (it's 0.5 in the worst case, if you round to the nearest 8-bit integer)
|
|
|
LMP88959
|
2024-04-15 01:04:24
|
So for j2k you'd need to know how much the quantization of each subband will effect the PSNR of a decoded pixel?
|
|
2024-04-15 01:04:37
|
Or am I really overthinking this
|
|
|
_wb_
|
2024-04-15 01:07:53
|
PSNR 54 is the quantization error of using 8-bit samples, it's 10 * log_10(255 * 255 / 0.25)
|
|
|
LMP88959
So for j2k you'd need to know how much the quantization of each subband will effect the PSNR of a decoded pixel?
|
|
2024-04-15 01:10:38
|
yes, something like that, but iirc in j2k the encoder can just truncate the coefficients at exactly the spot it wants to achieve a given bitrate or PSNR, so it can easily achieve almost exact bitrate or PSNR targets
|
|
2024-04-15 01:11:17
|
(unfortunately, for human-consumed lossy image compression, you don't really care about bitrate nor PSNR but you care about perceptual quality)
|
|
|
LMP88959
|
2024-04-15 01:11:24
|
Ohhh right it has that progressive aspect
|
|
|
_wb_
(unfortunately, for human-consumed lossy image compression, you don't really care about bitrate nor PSNR but you care about perceptual quality)
|
|
2024-04-15 01:15:19
|
Yeah... I'm relatively new to this field (about 2.5 years so far) as a hobbyist so I've been slowly learning and realizing these things. The lack of one all encompassing good metric to capture perceived quality seems a huge obstacle for more effective codec development
|
|
|
_wb_
|
2024-04-15 01:26:21
|
Progress has been made with Butteraugli and SSIMULACRA 2, but it's still not a solved problem
|
|
2024-04-15 01:28:25
|
I took the initiative a while back to revive the JPEG AIC adhoc group (Assessment of Image Coding), I hope AIC-3 will help to get better subjective ground truth datasets (https://jpeg.org/aic/aic3.html) and then AIC-4 will hopefully result in better metrics
|
|
|
LMP88959
|
2024-04-15 01:28:27
|
Oh yeah I've heard of Butteraugli, haven't heard of SSIMULACRA 2 but I am familiar with SSIM
|
|
|
_wb_
I took the initiative a while back to revive the JPEG AIC adhoc group (Assessment of Image Coding), I hope AIC-3 will help to get better subjective ground truth datasets (https://jpeg.org/aic/aic3.html) and then AIC-4 will hopefully result in better metrics
|
|
2024-04-15 01:29:06
|
Sweet, how long have you been in this field?
|
|
|
_wb_
|
2024-04-15 01:29:25
|
SSIMULACRA 2: https://github.com/cloudinary/ssimulacra2
|
|
|
LMP88959
Sweet, how long have you been in this field?
|
|
2024-04-15 01:30:31
|
I started playing with image compression when I started what would become FLIF in 2010 or so; professionally I'm in the field since 2016
|
|
2024-04-15 01:30:55
|
I go to JPEG meetings since 2018
|
|
|
LMP88959
|
2024-04-15 01:32:21
|
Oh no way! That's awesome, nice to meet you
|
|
2024-04-15 01:33:46
|
Have you gotten into video compression or is image compression your preferred field?
|
|
|
_wb_
|
2024-04-15 01:36:05
|
I only do image compression, though of course I sometimes do discuss video stuff with my colleagues who do video
|
|
|
LMP88959
|
2024-04-15 01:36:30
|
👌 Fantastic
|
|
|
fab
|
2024-04-15 02:34:17
|
I rebalanced the presets hope it wouldn't be damaging to the codec
|
|
2024-04-15 02:39:46
|
The thing is that doing those things is a bad way to speed up jxl interframe patches
|
|
2024-04-15 02:40:05
|
And copied and probably you could have a patent strike
|
|
|
w
|
2024-04-15 09:24:06
|
@jpeggers is min_DCT_h_scaled_size always smaller than min_DCT_v_scaled_size?
|
|
2024-04-15 09:26:12
|
<https://github.com/libjpeg-turbo/libjpeg-turbo/blob/main/jpegapicomp.h#L17> make it looks like it is but intuitively I can't tell
|
|
2024-04-15 09:28:19
|
likewise, what even is scaled DCT in jpeg
|
|
|
DZgas Ж
|
2024-04-16 04:42:10
|
can someone tell me what the fuck is written here if *-pass 1* in ffmpeg creates an empty .log file. And *-svtav1-params pass=1* does not create any file anywhere at all
|
|
2024-04-16 04:50:11
|
Maybe I'm stupid and don't understand simple things. ~~but pass 2 for svt-av1 is not implemented for ffmpeg. It just doesn't work.~~ in fact, I remember doing this a year ago, or 2 years ago, the neurons in my brain remember that it workS, I'm trying to remember why
|
|
2024-04-16 04:53:20
|
I definitely remember that this is some kind of stupid bug.
Just facing the fact that IT doesn't work
```./ffmpeg -i IN.mkv -c:a libopus -c:v libsvtav1 -b:v 650k -pass 1 -preset 12 OUT.mkv```
|
|
2024-04-16 04:54:12
|
and IT doesn't work
```./ffmpeg -i IN.mkv -c:a libopus -c:v libsvtav1 -b:v 650k -preset 12 -svtav1-params pass=1 OUT.mkv```
|
|
2024-04-16 05:07:16
|
I remembered a bug related to AOM - if you create a video with an audio track when creating pass 1, the pass.log file becomes empty.
But this is about libaom-av1 -
it has nothing to do with svt-av1, it doesn't work that way. parameters -svtav1-params pass=1 does start the Pass 1 creation mode --- BUT it does not create a file, Nothing. At the same time, according to the manual https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Parameters.md#multi-pass-options I can set the output file ||no||
|
|
2024-04-16 05:11:33
|
great (but there was no answer there either)
|
|
|
|
afed
|
2024-04-16 05:12:08
|
yeah, not all encoders work with multi-passes through ffmpeg, so needs piping at least
also 2-pass for svt-av1 is pretty bad, all modes except crf have much worse efficiency
|
|
|
DZgas Ж
|
2024-04-16 05:13:35
|
It seems that I writed this
|
|
|
afed
yeah, not all encoders work with multi-passes through ffmpeg, so needs piping at least
also 2-pass for svt-av1 is pretty bad, all modes except crf have much worse efficiency
|
|
2024-04-16 05:16:21
|
The problem is. That the developers' github says that it works "we did it." But it doesn't work. (at startup, it writes that it has switched to a special mode. it is FAST (2 times faster than preset 12)) BUT nowhere is there out or anything at all
|
|
|
|
afed
|
2024-04-16 05:16:56
|
for example, something like this for windows should work
```ffmpeg -i xx -an -f yuv4mpegpipe -strict -1 - | SvtAv1EncApp --rc 1 --pass 1 --preset x --tbr xxx -b NUL -i stdin
ffmpeg -i xx -an -f yuv4mpegpipe -strict -1 - | SvtAv1EncApp --rc 1 --pass 2 --preset x --tbr xxx -b "xx.ivf" -i stdin```
|
|
|
DZgas Ж
|
|
afed
for example, something like this for windows should work
```ffmpeg -i xx -an -f yuv4mpegpipe -strict -1 - | SvtAv1EncApp --rc 1 --pass 1 --preset x --tbr xxx -b NUL -i stdin
ffmpeg -i xx -an -f yuv4mpegpipe -strict -1 - | SvtAv1EncApp --rc 1 --pass 2 --preset x --tbr xxx -b "xx.ivf" -i stdin```
|
|
2024-04-16 05:18:14
|
1. I have linux
2. for what reason should I use an external svt and not the one in ffmpeg.
You solve the task but you don't solve the problem
|
|
|
|
afed
|
2024-04-16 05:20:26
|
for linux it's something similar, just `null` and maybe some other changes
because svt-av1 devs don't really care about ffmpeg except for single pass modes and basic options
|
|
|
DZgas Ж
|
|
afed
for linux it's something similar, just `null` and maybe some other changes
because svt-av1 devs don't really care about ffmpeg except for single pass modes and basic options
|
|
2024-04-16 05:21:38
|
It doesn't matter. this does not solve the problem.... I'll have to create a thread on 4ch, oh, how I didn't want to go there.
|
|
|
|
afed
|
2024-04-16 05:40:34
|
if i am not confused i used to do 3-passes purely through ffmpeg
for 2-passes I only used piping (after it was changed), it works, but again 2-passes for svt-av1 are bad (half of the settings and tunes doesn't work), it exists but much less efficient, the other rc modes are just there on paper but basically useless, have a lot of issues and it won't be fixed anytime soon if at all
2-pass is only useful for 2-pass crf
btw, about the other topic, vb has been finally merged recently <:Hypers:808826266060193874>
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2195
|
|
|
DZgas Ж
|
|
afed
if i am not confused i used to do 3-passes purely through ffmpeg
for 2-passes I only used piping (after it was changed), it works, but again 2-passes for svt-av1 are bad (half of the settings and tunes doesn't work), it exists but much less efficient, the other rc modes are just there on paper but basically useless, have a lot of issues and it won't be fixed anytime soon if at all
2-pass is only useful for 2-pass crf
btw, about the other topic, vb has been finally merged recently <:Hypers:808826266060193874>
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2195
|
|
2024-04-16 05:46:18
|
Don't say that. because it makes av1 unusable for me at all
|
|
|
afed
if i am not confused i used to do 3-passes purely through ffmpeg
for 2-passes I only used piping (after it was changed), it works, but again 2-passes for svt-av1 are bad (half of the settings and tunes doesn't work), it exists but much less efficient, the other rc modes are just there on paper but basically useless, have a lot of issues and it won't be fixed anytime soon if at all
2-pass is only useful for 2-pass crf
btw, about the other topic, vb has been finally merged recently <:Hypers:808826266060193874>
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2195
|
|
2024-04-16 05:48:05
|
I encode with a size limit that cannot be exceeded. if pass 2 cannot give me a CRF according to the pre-calculated video data, this means that I will need to do 2-3 passes of full preset 13 encoding to understand which crf will fit into the specified size
|
|
|
|
afed
|
2024-04-16 05:57:08
|
svt-av1's rc is also bad, constantly overshooting or undershooting bitrate and max limits, even with some additional settings
i have a lot of issues with that, when i tried to use svt-av1 for streaming
for crf, probably some old methods with shorter sample encoding like it was used for x264 might work, but it really depends on the content
and it's mostly svt-av1 issues, other encoders have much better rc
|
|
|
DZgas Ж
|
2024-04-16 06:05:41
|
https://boards.4chan.org/g/thread/100031812
|
|
2024-04-16 06:06:14
|
Maybe someone will answer at least there
|
|
|
w
|
2024-04-16 06:08:53
|
ninibros...
|
|
|
DZgas Ж
|
|
w
ninibros...
|
|
2024-04-16 06:10:39
|
?
|
|
2024-04-16 06:42:51
|
<@1034873369314730065>2-pass crf has never exist
|
|
2024-04-16 06:43:20
|
anywhere
|
|
|
LMP88959
|
2024-04-16 06:48:07
|
^ this. crf is not trying to optimize for anything so it doesnt make sense to do more than one pass
|
|
|
|
afed
|
|
DZgas Ж
anywhere
|
|
2024-04-16 06:51:31
|
it's almost useless for x264, somewhat useful for x265
but svt-av1 works differently, stats and analysis from the first passes are used and helps for better rc for next passes
|
|
|
DZgas Ж
|
2024-04-16 06:52:59
|
this still does not solve the problem that I need to compress the file to the size limit
|
|
2024-04-16 06:55:27
|
The question for specialists: is whether there is any software to determine the** information complexity** of the video in advance?
|
|
2024-04-16 06:58:46
|
it looks like I AM will have to do full compression based on x264 ultrafast. create a video difficulty table based on the output. make a table of the recommended CRF for SVT-AV1 that will correspond to the size of the video in 1 hour of encoding with this complexity
|
|
2024-04-16 06:58:59
|
<:kekw:808717074305122316> gread shit
|
|
|
|
afed
|
2024-04-16 07:05:03
|
yeah, but it's not about solving that problem, just that multipass crf for svt-av1 is not useless
for encoding to exact size, piping works as i said, if needed a pure ffmpeg solution then not sure if it still works
it's a ffmpeg implementation problem, but in general 2-passes work for svt-av1
for complexity, yeah this is pretty widely used and such metrics exist, but mostly proprietary solution, also fast first encoding as assistance for next encodings is also widely used
|
|
|
DZgas Ж
|
|
DZgas Ж
it looks like I AM will have to do full compression based on x264 ultrafast. create a video difficulty table based on the output. make a table of the recommended CRF for SVT-AV1 that will correspond to the size of the video in 1 hour of encoding with this complexity
|
|
2024-04-16 07:07:29
|
Okay. I'll have to do AOMENC tests before I fit into this shit
|
|
2024-04-16 07:10:41
|
<:AV1:805851461774475316>
There is a very big problem. parallelizability. In general, it can be solved if you divide the file into 2 parts, encode, and then stitch it into one
but it is impossible to do proportional two-pass encoding in this way, one of the parts will always have much more bitrate than necessary
|
|
|
|
afed
|
|
afed
yeah, but it's not about solving that problem, just that multipass crf for svt-av1 is not useless
for encoding to exact size, piping works as i said, if needed a pure ffmpeg solution then not sure if it still works
it's a ffmpeg implementation problem, but in general 2-passes work for svt-av1
for complexity, yeah this is pretty widely used and such metrics exist, but mostly proprietary solution, also fast first encoding as assistance for next encodings is also widely used
|
|
2024-04-16 07:12:29
|
even for svt-av1
|
|
2024-04-16 07:13:01
|
or even with a mix of different encoders including hw for first pass cvh
|
|
|
DZgas Ж
|
2024-04-16 07:14:39
|
hah
|
|
2024-04-16 07:31:34
|
Fun... AOMENC follows the documentation so rigidly that instead of the documentation of the encoder, you can read the documentation of the codec
|
|
|
fab
|
2024-04-16 07:33:31
|
Dzgas what about avm ottverse
|
|
2024-04-16 07:33:56
|
I contributed on it this afternoon do you think they accepted something
|
|
|
DZgas Ж
|
2024-04-16 07:35:44
|
<:This:805404376658739230> <:monkaMega:809252622900789269>
|
|
|
fab
|
2024-04-16 08:16:42
|
|
|
2024-04-16 08:16:57
|
I'm still trying hopefylly Zoe Liu
|
|
2024-04-16 11:44:45
|
|
|
2024-04-16 11:44:56
|
Jxl d15
|
|
2024-04-16 11:45:07
|
I corrected grammar
|
|
|
DZgas Ж
|
2024-04-17 01:47:31
|
lie
|
|
2024-04-17 01:49:12
|
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/Parameters.md
from the table of all parameters, **[libsvtav1] Error parsing option** - 90% of all
|
|
|
Quackdoc
|
2024-04-17 02:09:10
|
how are you entering them?
|
|
|
DZgas Ж
|
2024-04-17 02:17:43
|
the code in which each parameter that can be configured - was written by someone, BUT was not added to ffmpeg
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2021-July/281971.html
|
|
2024-04-17 02:18:09
|
😕
|
|
|
Quackdoc
|
2024-04-17 02:19:18
|
what version are you running? svtav1-params has been in for a while
|
|
|
DZgas Ж
|
2024-04-17 02:21:22
|
an extremely stripped-down version. with a couple of parameters, it was added a year later, after the code that I send above. And so
|
|
|
Quackdoc
what version are you running? svtav1-params has been in for a while
|
|
2024-04-17 02:22:21
|
no, not use, absolute fuckin zero can be use
|
|
2024-04-17 02:22:53
|
it's just not written in ffmpeg/libavcodec/libsvtav1.c
|
|
|
Quackdoc
|
2024-04-17 02:24:15
|
working perfectly fine for me [akkoshrug](https://cdn.discordapp.com/emojis/854355719109345280.webp?size=48&quality=lossless&name=akkoshrug)
|
|
|
DZgas Ж
|
2024-04-17 02:24:52
|
<:BanHammer:805396864639565834>
|
|
|
Quackdoc
|
2024-04-17 02:25:32
|
what is your cmdline?
|
|
|
DZgas Ж
|
|
Quackdoc
what is your cmdline?
|
|
2024-04-17 02:26:39
|
Are you seriously asking ?
|
|
|
Quackdoc
|
2024-04-17 02:26:56
|
yes
|
|
2024-04-17 02:27:52
|
Im on ffmpeg 6.1.1-7 and it's working fine for me
|
|
2024-04-17 02:28:38
|
also ffmpeg should say the config too, but if you have libsvtav1 it should be there regardless so im not sure why
|
|
|
DZgas Ж
|
|
Quackdoc
yes
|
|
2024-04-17 02:28:48
|
No
Do
```./ffmpeg -i IN.mkv -an -c:v libsvtav1 -preset 12 -svtav1-params scm=1:sg_filter_mode=1 OUT.mkv```
whitout *[libsvtav1] Error parsing option sg_filter_mode: 1.*
|
|
2024-04-17 02:29:07
|
of sg-filter-mode=1
|
|
2024-04-17 02:29:20
|
It doesn't matter, it's not implemented.
|
|
|
Quackdoc
|
2024-04-17 02:31:09
|
my svtav1 doesnt even have an sg filter mode
|
|
2024-04-17 02:31:11
|
[Hmm](https://cdn.discordapp.com/emojis/1113499891314991275.webp?size=48&quality=lossless&name=Hmm)
|
|
2024-04-17 02:32:12
|
isnt that quite old?
|
|
|
|
afed
|
2024-04-17 02:35:06
|
yeah, seems to be some deprecated option, but `-svtav1-params` works fine, been using for years without any problems
|
|
|
Quackdoc
|
2024-04-17 02:35:33
|
at the very least, the string isn't found in svtav1's docs
|
|
2024-04-17 02:43:39
|
well considering how trash gitlab's UI is, I can't say for sure when it was removed, but it was removed a very long time ago at least
|
|
|
DZgas Ж
|
|
Quackdoc
my svtav1 doesnt even have an sg filter mode
|
|
2024-04-17 12:24:56
|
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/CommonQuestions.md bruh
|
|
2024-04-17 12:25:17
|
on with preset 1-4
|
|
2024-04-17 12:26:29
|
it strongly eliminates the incorrect movement of blocks. I would like to include it for the gameplay of The Witness (game) - on the parameter encoding preset 8 - it would be much better. instead of encoding everything in preset 4
|
|
2024-04-17 12:27:11
|
<:PepeHands:808829977608323112> 'll have to learn piping
|
|
|
Quackdoc
|
2024-04-17 01:51:09
|
im pretty sure thats hard coded isn't it?
|
|
|
DZgas Ж
|
|
Quackdoc
im pretty sure thats hard coded isn't it?
|
|
2024-04-18 12:26:08
|
I don't like it when make thing out like: it works if you work on it, and so we don't care about it.
|
|
|
Quackdoc
|
|
DZgas Ж
I don't like it when make thing out like: it works if you work on it, and so we don't care about it.
|
|
2024-04-18 03:00:54
|
you can always make a ticket on the svtav1 gitlab asking why its not configurable now
|
|
|
DZgas Ж
|
|
Quackdoc
you can always make a ticket on the svtav1 gitlab asking why its not configurable now
|
|
2024-04-18 03:15:49
|
the problem is that this is a very bad situation. because ffmpeg & svtav1 does not work together — which of them is to blame?
|
|
|
DZgas Ж
the code in which each parameter that can be configured - was written by someone, BUT was not added to ffmpeg
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2021-July/281971.html
|
|
2024-04-18 03:16:13
|
and look this
|
|
|
|
afed
|
2024-04-18 03:16:43
|
there are a lot of non-configurable params that existed in some of the first versions, now it's just "optimally" distributed by presets and groups
and it's like this is enough for the typical user
<https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Source/Lib/Encoder/Codec/EncModeConfig.c>
|
|
|
DZgas Ж
|
|
DZgas Ж
the code in which each parameter that can be configured - was written by someone, BUT was not added to ffmpeg
https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2021-July/281971.html
|
|
2024-04-18 03:16:48
|
the complete solution made 3 years ago has not been added to ffmpeg
|
|
|
afed
there are a lot of non-configurable params that existed in some of the first versions, now it's just "optimally" distributed by presets and groups
and it's like this is enough for the typical user
<https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Source/Lib/Encoder/Codec/EncModeConfig.c>
|
|
2024-04-18 03:19:35
|
But in pure svt av1 — you can
|
|
|
Quackdoc
|
|
DZgas Ж
But in pure svt av1 — you can
|
|
2024-04-18 03:21:31
|
how old is your build?
|
|
|
|
afed
|
|
DZgas Ж
But in pure svt av1 — you can
|
|
2024-04-18 03:21:52
|
from which version are these parameters?
|
|
|
DZgas Ж
|
2024-04-18 03:23:00
|
I will study piping tomorrow <:NotLikeThis:805132742819053610>in fact, I set myself a big task, to choose the parameters that are most suitable for very fast encoding for games. after making observations for 2 weeks on all preset, I found out which ones specifically params can be turned off so that they do not take up the load
|
|
|
Quackdoc
how old is your build?
|
|
2024-04-18 03:23:15
|
master <:WTF:805391680538148936>
|
|
|
Quackdoc
|
2024-04-18 03:23:41
|
it shouldn't be in it, if you are getting it shown as an output thats a bug
|
|
|
DZgas Ж
|
|
afed
from which version are these parameters?
|
|
2024-04-18 03:24:09
|
Are you saying that no more exist? I don't actually have svt, this is the print I found on the internet.
|
|
|
Quackdoc
|
2024-04-18 03:24:24
|
thats what we have been saying for a while
|
|
|
|
afed
|
|
DZgas Ж
Are you saying that no more exist? I don't actually have svt, this is the print I found on the internet.
|
|
2024-04-18 03:25:08
|
|
|
|
DZgas Ж
Are you saying that no more exist? I don't actually have svt, this is the print I found on the internet.
|
|
2024-04-18 03:26:21
|
it's like some old or even pre-release versions that are 4-5 years old or something like that
|
|
|
DZgas Ж
|
2024-04-18 03:27:10
|
Meh. Let me handle this..
after 30 hours,
I'm busy right now
|
|
2024-04-18 03:27:17
|
<:AV1:805851461774475316>
|
|
2024-04-18 03:29:08
|
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/CommonQuestions.md
|
|
|
|
afed
|
2024-04-18 03:29:09
|
and also ffmpeg works perfectly fine with svt-av1, with existing settings in current versions
maybe just a few specific ones doesn't work
|
|
|
DZgas Ж
|
|
afed
and also ffmpeg works perfectly fine with svt-av1, with existing settings in current versions
maybe just a few specific ones doesn't work
|
|
2024-04-18 03:30:51
|
Not. it is impossible to use it due to the lack of a filter specifying the block shift and its separation. what makes the shaking of large blocks when moving at crf 50+ quality
is completely removed only at preset 4 (1-4)
|
|
2024-04-18 03:31:02
|
👉 bullshit
|
|
2024-04-18 03:33:24
|
but to be honest, to compress the gameplay of aomenc — games is surprisingly full of bullshit. and rav1e is still a joke.
|
|
|
|
afed
|
2024-04-18 03:34:09
|
i'm just saying that the settings and encoding works, but not about quality
|
|
|
DZgas Ж
|
2024-04-18 03:34:36
|
The absolute truth is that SVT—AV1 is better than AOMENC for game recording.
|
|
|
afed
i'm just saying that the settings and encoding works, but not about quality
|
|
2024-04-18 03:35:23
|
It is not settings, if cannot be configured, this is 1984
|
|
|
|
afed
|
2024-04-18 03:38:53
|
because it's a pre-release version, same thing for like a research aom build or current avm, with like 2800 different settings
but when it's released, most of them will be non configurable
|
|
2024-04-18 03:43:58
|
and most settings are not needed for normal people and encoding, but some are
that's why forks exist that add back some settings or change some logic
|
|
|
DZgas Ж
|
|
afed
because it's a pre-release version, same thing for like a research aom build or current avm, with like 2800 different settings
but when it's released, most of them will be non configurable
|
|
2024-04-18 03:46:34
|
it would be funny to know that this is all done so as not to debug their variations ||(not to work)||
|
|
2024-04-19 07:03:56
|
Oh
|
|
|
afed
and most settings are not needed for normal people and encoding, but some are
that's why forks exist that add back some settings or change some logic
|
|
2024-04-19 07:04:10
|
Forks
LULE
|
|
2024-04-19 08:56:15
|
<:monkaMega:809252622900789269>
|
|
|
DZgas Ж
Forks
LULE
|
|
2024-04-19 08:59:06
|
piping works like shit, and compiling a whole ffmpeg with a fork of svt-av1-psy (that is, just an classic script will not work) - no
|
|
2024-04-19 09:01:20
|
I can't figure out this damn thing - how ```-svtav1-params enable-cdef=0``` CAN work if it's just not in the ffmpeg sources. only AOM has it
|
|
2024-04-19 09:11:43
|
ok svtav1 can accept some parameters that can
|
|
2024-04-19 09:12:21
|
https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Source/App/EncApp/EbAppConfig.c#L153
|
|
2024-04-19 09:21:45
|
yep, other hardcoded
|
|
2024-04-19 09:23:13
|
"just use preset 3"
|
|
2024-04-19 09:42:49
|
It's only by rummaging through the source code that I find out about functions that aren't even documented anywhere. but which, unlike those functions described in https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/CommonQuestions.md -- They ahaha work in ffmpeg original <:kekw:808717074305122316>
|
|
2024-04-19 09:43:34
|
As I understand it, I will be simple for the next 2 hours... although you know, this is a job for gemini 1.5
|
|
2024-04-19 10:10:23
|
I did it. This is a list of all the parameters that can be used in ffmpeg -svtav1-params
(generated by Google Gemini based on the source code)
|
|
2024-04-19 10:12:07
|
👆 if someone knows devs, tell them that, in fact, the parameters that can be applied should be documented.
|
|
|
fab
|
2024-04-19 10:47:31
|
<@703028154431832094>
|
|
|
DZgas Ж
|
|
gb82
|
|
DZgas Ж
It's only by rummaging through the source code that I find out about functions that aren't even documented anywhere. but which, unlike those functions described in https://gitlab.com/AOMediaCodec/SVT-AV1/-/blob/master/Docs/CommonQuestions.md -- They ahaha work in ffmpeg original <:kekw:808717074305122316>
|
|
2024-04-19 05:23:13
|
But you can confirm these options actually *do* something, right?
|
|
|
DZgas Ж
|
|
DZgas Ж
|
|
2024-04-19 05:24:35
|
variance-boost-strength -- solved all my problems. it was added 3 days ago. the issue is closed.
|
|
|
gb82
|
2024-04-19 05:25:14
|
It has been in SVT-AV1-PSY for a very long time now, if you want to check out our fork
|
|
|
|
afed
|
2024-04-19 05:25:27
|
just `SvtAv1EncApp --help` will give all the settings that should work
almost, a few very specific ones doesn't work through ffmpeg
|
|
|
DZgas Ж
|
|
DZgas Ж
piping works like shit, and compiling a whole ffmpeg with a fork of svt-av1-psy (that is, just an classic script will not work) - no
|
|
2024-04-19 05:25:27
|
.
|
|
|
DZgas Ж
I did it. This is a list of all the parameters that can be used in ffmpeg -svtav1-params
(generated by Google Gemini based on the source code)
|
|
2024-04-19 05:27:04
|
I've checked all the functions, here are the ones that do something or are useful
|
|
|
gb82
|
|
DZgas Ж
piping works like shit, and compiling a whole ffmpeg with a fork of svt-av1-psy (that is, just an classic script will not work) - no
|
|
2024-04-19 05:27:40
|
I don't think it is that hard ... Also most people use Av1an anyway
|
|
|
DZgas Ж
|
2024-04-19 05:27:55
|
I saw that enable-qm is generally a useless thing that does smoothing instead of noise. what is not suitable for my crf 50-60
|
|
|
gb82
|
2024-04-19 05:28:48
|
I disagree
|
|
2024-04-19 05:28:55
|
At least for PSY
|
|
|
DZgas Ж
|
2024-04-19 05:28:59
|
enable-restoration has the same problem
|
|
|
|
afed
|
2024-04-19 05:29:02
|
just need `qm-min`/`qm-max` adjustment
|
|
|
DZgas Ж
|
2024-04-19 05:29:12
|
don't use its for gameplay of GAMES
|
|
|
gb82
|
2024-04-19 05:29:21
|
Ah wait you're DZgas, there is no reasoning with you. Good luck out there <:KekDog:805390049033191445>
|
|
|
DZgas Ж
|
|
gb82
I disagree
|
|
2024-04-19 05:30:42
|
Well, tell me the arguments or what? Don't you agree? Well, and will you do weight for your opinion?
|
|
|
afed
just need `qm-min`/`qm-max` adjustment
|
|
2024-04-19 05:32:22
|
low parameters do more information on low frequencies, parameters 15 = filter off
|
|
|
|
afed
|
|
afed
just need `qm-min`/`qm-max` adjustment
|
|
2024-04-19 05:32:29
|
`enable-qm` is useful, for any bitrate and any content, with some tuning, for gameplay also, I have a lot of gameplay recordings
|
|
|
gb82
|
2024-04-19 05:32:32
|
All I'll say is that default SVT-AV1 is tuned around faulty metrics & flawed testing methodology. SVT-AV1-PSY is not just "add back some settings or change some logic," it is a total rework of the encoder. so until you start using PSY, it isn't worth discussing this
|
|
|
DZgas Ж
|
|
afed
`enable-qm` is useful, for any bitrate and any content, with some tuning, for gameplay also, I have a lot of gameplay recordings
|
|
2024-04-19 05:33:36
|
instead of turning it on at 1080p. I'd rather turn it off and use 720p.
|
|
|
|
afed
|
|
DZgas Ж
instead of turning it on at 1080p. I'd rather turn it off and use 720p.
|
|
2024-04-19 05:41:32
|
maybe there are some cases if encode something like that old examples like already low quality source from twitch to even lower quality
but in most cases qm is useful, even for that, it can be worse on some static frames, but better on normal viewing, especially with some tuning for that content
|
|
2024-04-19 05:51:33
|
and yeah, it's much easier with svt-av1-psy, even with default settings it will be much better than vanilla
but, additionally has more freedom to tweak things, even for blockiness issues, like:
`--enable-dlf 2 --qp-scale-compress-strength 2/3`
maybe `--sharpness 2`, `--tune 3` etc
piping is not that hard, it's almost the same, same encoding speed, the only difference is that there is no auto-muxing for audio and other tracks, which would require some extra effort
without using av1an or some gui or custom scripts
|
|
|
DZgas Ж
|
|
afed
maybe there are some cases if encode something like that old examples like already low quality source from twitch to even lower quality
but in most cases qm is useful, even for that, it can be worse on some static frames, but better on normal viewing, especially with some tuning for that content
|
|
2024-04-19 05:56:33
|
|
|
|
DZgas Ж
variance-boost-strength -- solved all my problems. it was added 3 days ago. the issue is closed.
|
|
2024-04-19 05:57:01
|
.
|
|
2024-04-19 05:57:33
|
I don't have any more problems.
|
|
2024-04-19 05:58:16
|
even at preset 12
|
|
|
|
afed
|
|
afed
and yeah, it's much easier with svt-av1-psy, even with default settings it will be much better than vanilla
but, additionally has more freedom to tweak things, even for blockiness issues, like:
`--enable-dlf 2 --qp-scale-compress-strength 2/3`
maybe `--sharpness 2`, `--tune 3` etc
piping is not that hard, it's almost the same, same encoding speed, the only difference is that there is no auto-muxing for audio and other tracks, which would require some extra effort
without using av1an or some gui or custom scripts
|
|
2024-04-19 06:01:53
|
`Tune 3` has a weaker tf, which can also help against blockiness and blurriness, without some efficiency loss as with completely disabled tf, also has Luma Bias in the test branch
|
|
|
DZgas Ж
I don't have any more problems.
|
|
2024-04-19 06:02:03
|
on this example, maybe, but other issues are still there in vanilla version
and vb also came from svt-av1-psy
|
|
|
DZgas Ж
I've checked all the functions, here are the ones that do something or are useful
|
|
2024-04-19 06:12:23
|
also, very weird defaults
```enable-qm | ENABLE_QM_TOKEN | 0: off, 1: on (default)
fast-decode | FAST_DECODE_TOKEN | 0: off, 1: on (default)```
because
``` --fast-decode Fast Decoder levels, default is 0 [0-1]
--enable-qm Enable quantisation matrices, default is 0 [0-1]```
for vanilla svt-av1
|
|
|
DZgas Ж
|
2024-04-19 06:13:33
|
gemini problem.
|
|
2024-04-19 06:13:46
|
and cdef params
|
|
|
|
afed
|
2024-04-19 06:15:29
|
yeah, using ai for better settings or figuring options, even in sources, is not a good idea
|
|
|
DZgas Ж
|
|
afed
yeah, using ai for better settings or figuring options, even in sources, is not a good idea
|
|
2024-04-19 06:22:05
|
Yes. developers should do this.
|
|
|
|
afed
|
2024-04-19 06:22:50
|
`SvtAv1EncApp --help`
|
|
|
Quackdoc
|
|
afed
`SvtAv1EncApp --help`
|
|
2024-04-19 06:31:43
|
too hard
|
|
|
afed
yeah, using ai for better settings or figuring options, even in sources, is not a good idea
|
|
2024-04-19 06:32:05
|
this is such a massive understatment its absurd
|
|
2024-04-19 06:32:19
|
anyone who relies on any LLM for this stuff now, or any time in the near future is an idiot
|
|
|
DZgas Ж
|
2024-04-19 06:32:37
|
🙄
|
|
|
Quackdoc
anyone who relies on any LLM for this stuff now, or any time in the near future is an idiot
|
|
2024-04-19 06:33:04
|
Don't worry, you won't have a job soon.
|
|
|
Quackdoc
|
2024-04-19 06:33:34
|
LLMs can't even do basic math questions and you're asking it to be reliable for this. That's just dumb.
|
|
|
|
afed
|
|
afed
`SvtAv1EncApp --help`
|
|
2024-04-19 06:33:58
|
and ffmpeg never had all the advanced settings in the encoder help, same for x264/x265, aom and other encoders, there are only basic ones
x264 once tried to port most of the settings in ffmpeg arguments, but it's still not all
other encoders mostly didn't even try it
the same about docs from devs, most are outdated or incomplete, `help` from external encoders is the most updated and relevant
|
|
|
DZgas Ж
|
|
Quackdoc
LLMs can't even do basic math questions and you're asking it to be reliable for this. That's just dumb.
|
|
2024-04-19 06:34:04
|
can.
|
|
|
Quackdoc
|
2024-04-19 06:35:08
|
https://tenor.com/view/laughing-hard-lol-lmao-oh-wait-youre-serious-let-me-laugh-even-harder-gif-16553942
|
|
|
gb82
|
|
DZgas Ж
Don't worry, you won't have a job soon.
|
|
2024-04-19 06:35:33
|
<:KekDog:805390049033191445> I can tell you that you certainly won't
|
|
|
Quackdoc
|
2024-04-19 06:36:03
|
Testing copilot for boilerplate generation was one of the biggest eye openers i've had
|
|
|
DZgas Ж
|
|
Quackdoc
LLMs can't even do basic math questions and you're asking it to be reliable for this. That's just dumb.
|
|
2024-04-19 06:36:05
|
obviously, you didn't understand this topic at all. although 2 days ago, together with a friend, I merged neural networks that were selected according to my tests, creating the most brutal and uncensored neural network - it's fun. https://huggingface.co/DZgas/GIGABATEMAN-7B but <#806898911091753051>
|
|
|
Quackdoc
|
|
DZgas Ж
obviously, you didn't understand this topic at all. although 2 days ago, together with a friend, I merged neural networks that were selected according to my tests, creating the most brutal and uncensored neural network - it's fun. https://huggingface.co/DZgas/GIGABATEMAN-7B but <#806898911091753051>
|
|
2024-04-19 06:36:18
|
I understand it crystal clear
|
|
2024-04-19 06:36:22
|
i've done immense testing
|
|
2024-04-19 06:36:24
|
they are shit
|
|
2024-04-19 06:36:42
|
Especially code related AI
|
|
|
DZgas Ж
|
2024-04-19 06:36:51
|
You don't have enthusiasm. do that. whatever you want.
|
|
|
Quackdoc
|
2024-04-19 06:37:02
|
I have lots of enthusiasm
|
|
|
DZgas Ж
|
|
Quackdoc
I have lots of enthusiasm
|
|
2024-04-19 06:37:34
|
ok. try my neural network 🥂
|
|
|
Quackdoc
|
2024-04-19 06:38:12
|
Im not about to waste my time trying something I have significant doubts will be any decent
|
|
|
w
|
2024-04-19 06:39:40
|
new llama passed the watermelon test
|
|
2024-04-19 06:39:43
|
it can do math
|
|
|
DZgas Ж
|
|
Quackdoc
Im not about to waste my time trying something I have significant doubts will be any decent
|
|
2024-04-19 06:40:01
|
you look like an anime guy who says that all new anime is shit (not looking at anime for 5 years)
|
|
|
w
new llama passed the watermelon test
|
|
2024-04-19 06:41:11
|
freedom in neural networks is much better than its strength in tests
|
|
|
Quackdoc
|
|
DZgas Ж
you look like an anime guy who says that all new anime is shit (not looking at anime for 5 years)
|
|
2024-04-19 06:43:58
|
good for you, I mean, I didn't think you needed glasses before but now I do
|
|
|
w
new llama passed the watermelon test
|
|
2024-04-19 06:45:40
|
Orignally I was tinkering with https://github.com/TabbyML/tabby maybe ill try it again with whatever new model this is
|
|
2024-04-19 06:46:31
|
zero faith it won't land under actively detrimental like all the rest though
|
|
|
w
|
2024-04-19 06:46:43
|
why are you so negative about it
|
|
2024-04-19 06:46:45
|
chill
|
|
2024-04-19 06:46:55
|
I get it you hate progress
|
|
|
Quackdoc
|
|
w
I get it you hate progress
|
|
2024-04-19 06:49:39
|
No, offense, but this is a really retarded comment. If I was actively trying it out, why would I be against it?
|
|
2024-04-19 06:50:04
|
Why am I negative about it? Because generally just, they're not really that useful. Does that mean I hate progress? No, I'm actively trying them out...
|
|
2024-04-19 06:50:15
|
also whisper is bad today lmao
|
|
|
w
|
2024-04-19 06:51:25
|
Auto complete and gesture typing is a good use of this type of AI
|
|
2024-04-19 06:51:41
|
You get it when you enable data improvement in your phone keyboard
|
|
2024-04-19 06:52:49
|
For the time I had GH copilot, it was also good at auto complete
|
|
2024-04-19 06:52:59
|
nobody is telling you to use it to do your entire job
|
|
2024-04-19 06:53:56
|
Just like how calculators and computers didn't replace people doing math and office work
|
|
|
Quackdoc
|
2024-04-19 06:54:00
|
LLMs have potential. but when it comes to coding they are rarely any better then just the standard tooling you already have, On the other hand, I've been seeing a lot of really trash LLM code that's been comming
|
|
2024-04-19 06:54:32
|
Originally I was really excited for LLMs since a lot of the work I did was **heavy** in boilerplate crap, And I still think LLMs will be good for that *one day*
|
|
2024-04-19 06:54:45
|
but I have significant doubts that one day is anywhere near
|
|
|
w
|
2024-04-19 06:55:03
|
I think we're already past that
|
|
2024-04-19 06:55:26
|
GH copilot is already good at that
|
|
|
Quackdoc
|
2024-04-19 06:55:47
|
yeah I have to significantly disagree
|
|
|
w
|
2024-04-19 06:55:56
|
have you tried it
|
|
|
Quackdoc
|
2024-04-19 06:56:11
|
yes, it's actually what made me go out and try tabby in the first place
|
|
|
w
|
2024-04-19 06:56:20
|
GH copilot?
|
|
|
Quackdoc
|
2024-04-19 06:56:40
|
yes
|
|
2024-04-19 06:56:55
|
https://code.visualstudio.com/docs/copilot/overview
|
|
|
w
|
2024-04-19 06:57:25
|
For me it did boilerplate pretty well
|
|
2024-04-19 06:57:53
|
And I also used it with elixir
|
|
|
Quackdoc
|
2024-04-19 06:58:49
|
Perhapps it is very language dependent. I tried flutter(dart) and rust. dart I didnt have high hopes for since there isn't really a load of open source stuff availible for it to have learned on, but on rust I did. Both were subpar at best
|
|
2024-04-19 06:59:28
|
well subpar is hard to define as of now, so let me correct myself, both were actively wrong in most cases and produced code that was no where near close to usable
|
|
|
w
|
2024-04-19 06:59:42
|
I didn't expect much from it but it was pretty quick as a replacement for the normal auto complete
|
|
|
Quackdoc
|
2024-04-19 07:00:29
|
both rust and dart's tooling around that is pretty good already I suppose so it's a fairly high bar for that. I suppose it could be a case of that. perhaps languages with less optimal tooling like C/C++ could fair better
|
|
|
w
|
2024-04-19 07:00:47
|
how much were you forcing it to generate for you? The normal use is supposed to be like 4 words completion
|
|
2024-04-19 07:01:48
|
I'd say my elixir use was an even higher bar than those two
|
|
2024-04-19 07:03:19
|
or maybe it's because most elixir code is higher quality
|
|
|
DZgas Ж
|
2024-04-19 08:04:05
|
https://trac.ffmpeg.org/ticket/4907
Support decoding animated WebP images
open enhancement
9 years ago
|
|
|
TheBigBadBoy - 𝙸𝚛
|
2024-04-19 08:07:04
|
but they do support encoding for some reason <:kekw:808717074305122316>
|
|
|
|
afed
|
2024-04-19 08:08:16
|
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=11521
|
|
|
HCrikki
|
2024-04-19 08:08:45
|
a page with multiple animated webps is ressource consuming. sometimes its smarter sticking to gif
|
|
|
TheBigBadBoy - 𝙸𝚛
|
|
afed
https://patchwork.ffmpeg.org/project/ffmpeg/list/?series=11521
|
|
2024-04-19 08:25:56
|
2 days old 0.o
|
|
|
DZgas Ж
|
|
DZgas Ж
variance-boost-strength -- solved all my problems. it was added 3 days ago. the issue is closed.
|
|
2024-04-19 10:43:41
|
SVT-AV1 surpassed AOMENC
With this new parameter. I have completely removed the use of CRF
now set crf=63 and
enable-variance-boost=1:variance-octile=1:variance-boost-strength=2
and use Only variance-boost-strength
for quality set
1 low
2 medium
3 high
3 very high
|
|
2024-04-19 10:45:13
|
<:monkaMega:809252622900789269> enable-restoration=0:startup-mg-size=4:enable-qm=0 and we are getting the best that AV1 has to offer at the moment. It is much faster and much better than any aom parameters.
|
|
2024-04-19 10:48:55
|
670 kbps video. like 360p on twitch
```./ffmpeg -i 1_1927833401.mkv -vf "fps=60,scale=1280:720:flags=lanczos" -c:a libopus -b:a 65k -apply_phase_inv 0 -frame_duration 60 -vbr on -c:v libsvtav1 -crf 63 -g 600 -preset 6 -svtav1-params lookahead=120:tune=2:scm=1:irefresh-type=2:enable-cdef=1:enable-dlf=1:enable-mfmv=1:enable-qm=0:enable-restoration=0:enable-tf=1:enable-tpl-la=1:fast-decode=0:enable-dg=1:startup-mg-size=4:tile-columns=0:tile-rows=0:enable-variance-boost=1:variance-octile=1:variance-boost-strength=2 test-W_1.mkv```
|
|
2024-04-19 10:51:01
|
There are no blocks artifacts
no error with movements blocks
no blocks quality noise
|
|
2024-04-19 10:51:37
|
it's just works <:This:805404376658739230> 👉 🥂 <:AV1:805851461774475316>
|
|
|
gb82
|
2024-04-20 06:33:41
|
yeah and SVT-AV1-PSY is even better, you'd know if you could handle piping with FFmpeg :)
|
|
|
w
|
2024-04-20 06:36:31
|
idk, i compared aomenc with svt-av1-psy with all the bells and whistles last week and it was still 10-20% behind
|
|
|
|
afed
|
2024-04-20 06:54:09
|
on slowest presets or behind at the same speed?
btw, for svt-av1-psy `preset -3` is the slowest
but, for me aom is still more consistent in quality on average, especially with forks, also works well on all rc modes like capped crf, cbr, vbr, multipass, etc
svt-av1 is not good except for crf, even capped crf is mostly broken and even the recently merged vb has brought more issues with capped crf
|
|
|
Quackdoc
|
2024-04-20 06:55:08
|
rav1e chads sitting in the corner with hoods uo happy as ever
|
|
|
|
afed
|
2024-04-20 06:56:47
|
and for rav1e, all presets except the slowest ones doesn't exist <:kekw:808717074305122316>
|
|
|
Quackdoc
|
2024-04-20 06:59:33
|
very true
|
|
|
|
afed
|
|
afed
on slowest presets or behind at the same speed?
btw, for svt-av1-psy `preset -3` is the slowest
but, for me aom is still more consistent in quality on average, especially with forks, also works well on all rc modes like capped crf, cbr, vbr, multipass, etc
svt-av1 is not good except for crf, even capped crf is mostly broken and even the recently merged vb has brought more issues with capped crf
|
|
2024-04-20 07:03:37
|
and 10-20% difference is a lot, svt-av1 is worse on some content, but not that much, not by metrics nor visually
also usually faster with about the same quality, if not using the slowest presets, even with chunking
|
|
|
w
|
2024-04-20 07:17:23
|
it was svt-av1 at preset 0 vs cpu 2
|
|
|
DZgas Ж
|
2024-04-20 11:43:33
|
svt-av1
`mmx |sse 1x
sse2 |sse3 1,32x
ssse3 1.44x
sse4_1|sse4_2|avx 5.3x
avx2 |avx512 6.9x`
|
|
|
|
JendaLinda
|
2024-04-21 09:05:07
|
When encoding a JPEG at q=100, why do programs bother writing separate quant tables for luma and chroma when they're identical.
|
|
|
Meow
|
2024-04-22 01:42:11
|
Is this a reliable test? http://littlesvr.ca/apng/gif_apng_webp.html
|
|
2024-04-22 01:43:21
|
It concludes APNG is better than GIF and lossless/lossy WebP in terms of the compression ratio
|
|
|
_wb_
|
2024-04-22 02:34:26
|
In principle lossless webp should be able to quite consistently outperform apng since it also pretty consistently outperforms regular png — but probably there is a tooling issue and you cannot easily "literally" translate apng to lossless webp.
|
|
2024-04-22 02:37:36
|
In any case, video codecs should generally be a better choice than image codecs for anything video-like.
|
|
|
Meow
|
2024-04-22 02:42:32
|
Removed the description about APNG being smaller on Wikipedia
|
|
|
|
JendaLinda
|
2024-04-22 03:02:47
|
If 32bpp APNG is converted to GIF, it's possible the GIF will be smaller, because GIF is limited to 8bpp.
|
|
|
Meow
|
2024-04-22 03:09:41
|
The original sentence was just too arbitrary and I had been feeling wrong for long time
> In a comparison made between GIF, APNG and lossless WebP, APNG had the lowest file size.
|
|
|
|
JendaLinda
|
2024-04-22 03:52:01
|
When I was attempting to create an optimized APNG, it was quite tricky. I couldn't find a tool, that would optimize the animation by storing only differences between the frames and at the same time use the lowest possible color type.
|
|
|
Meow
|
|
JendaLinda
When I was attempting to create an optimized APNG, it was quite tricky. I couldn't find a tool, that would optimize the animation by storing only differences between the frames and at the same time use the lowest possible color type.
|
|
2024-04-22 04:04:38
|
Isn't optimising all PNG files before assembling them into APNG, a workaround? And storing only differences is the job by video codecs
|
|
2024-04-22 04:05:42
|
The most important usage of animated images is making stickers
|
|
|
|
JendaLinda
|
2024-04-22 04:36:01
|
Assembling already optimized pngs is not straightforward. All frames must be the same color type, only one palette chunk and one tRNS chunk is allowed in one APNG file.
Storing only differences is a common trick used in GIF. The frame contains only new pixels and the rest of the frame is transparent.
|
|
|
Meow
|
|
JendaLinda
Assembling already optimized pngs is not straightforward. All frames must be the same color type, only one palette chunk and one tRNS chunk is allowed in one APNG file.
Storing only differences is a common trick used in GIF. The frame contains only new pixels and the rest of the frame is transparent.
|
|
2024-04-22 04:38:55
|
Is that "trick" doable for JPEG XL?
|
|
|
|
JendaLinda
|
2024-04-22 04:43:16
|
This trick is doable in APNG, WebP and JPEG XL.
|
|
2024-04-22 04:43:44
|
They all support stacking frames with transparent parts.
|
|
|
jonnyawsom3
|
|
JendaLinda
When I was attempting to create an optimized APNG, it was quite tricky. I couldn't find a tool, that would optimize the animation by storing only differences between the frames and at the same time use the lowest possible color type.
|
|
2024-04-22 05:20:57
|
I've been using the tools from here as an intermediary between GIF and JXL due to unspecified blend types erroring most GIF files I try
https://apngasm.sourceforge.net/
|
|
2024-04-22 05:21:51
|
Generally just using gif2apng, or apngopt on existing files, both cases it uses palette and inter-frame compression
|
|
|
|
JendaLinda
|
2024-04-22 05:29:06
|
I think I tried one of these but I probably misunderstood it. I will give it a try. Thank you.
|
|
|
Meow
|
2024-04-22 05:41:38
|
I revised the description about APNG included in the 3rd edition of PNG spec on Wikipedia. It's now at the candidate recommendation stage
|
|
2024-04-22 05:43:16
|
https://www.w3.org/standards/history/png-3/
|
|
2024-04-22 05:48:09
|
The previous edition was published 20 years ago
|
|
|
|
JendaLinda
|
2024-04-22 07:11:44
|
I was curious how nonstandard RGB encoded JPEG really is and I found out that early versions of Internet Explorer and Netscape Navigator do support RGB encoded JPEG.
|
|
|
LMP88959
|
2024-04-22 07:56:44
|
<@688076786525143117> i am curious how it works too, can you give me a TL;DR or a link to a resource?
|
|
|
|
JendaLinda
|
|
LMP88959
<@688076786525143117> i am curious how it works too, can you give me a TL;DR or a link to a resource?
|
|
2024-04-22 08:15:28
|
There is no color transform between RGB and YCbCr, RGB components are encoded directly. Chroma subsampling is not used. The file begins with APP14 Adobe marker instead of JFIF.
IJG cjpeg can produce RGB jpegs, so feel free to experiment.
|
|
|
LMP88959
|
2024-04-22 08:16:36
|
that makes sense
|
|
2024-04-22 08:16:45
|
cant be too efficient i'd imagine
|
|
2024-04-22 08:16:47
|
thanks!
|
|
|
|
JendaLinda
|
2024-04-22 08:19:43
|
Indeed, RGB encoded jpeg is less efficient.
|
|
|
Meow
|
2024-04-23 03:48:55
|
Only 42 stars https://github.com/w3c/PNG-spec
|
|
|
jonnyawsom3
|
2024-04-23 04:37:00
|
Huh, the end of this comment almost sounds like re-inventing JXL. XYZ color space for perceptual encoding, LZ77 compression, variable bitdepth per channel...
https://github.com/w3c/PNG-spec/issues/426#issuecomment-2053779660
|
|
|
Meow
|
|
Huh, the end of this comment almost sounds like re-inventing JXL. XYZ color space for perceptual encoding, LZ77 compression, variable bitdepth per channel...
https://github.com/w3c/PNG-spec/issues/426#issuecomment-2053779660
|
|
2024-04-23 04:56:33
|
> The following features are out of scope, and will not be addressed by this Working group.
> Changes that will invalidate existing files, editors, or viewers that conform to Portable Network Graphics (PNG) Specification (Second Edition).
🤔
https://www.w3.org/Graphics/PNG/png-2023.html#scope
|
|
|
jonnyawsom3
|
2024-04-23 04:57:43
|
The mention of 'PNG2' is... Hmmm
|
|
|
Meow
|
2024-04-23 04:59:19
|
If PNG 2 were a thing it would be as vivid as WebP 2
|
|
2024-04-23 05:04:50
|
The person who mentioned "PNG 2" is the top editor of PNG spec 3rd edition
|
|
2024-04-23 05:09:24
|
Oh don't forget that they've been charted for the 4th edition as well
|
|
|
_wb_
|
2024-04-23 05:15:56
|
PNG at this point can only add stuff that will gracefully degrade, like new chunks that can be ignored by naive decoders. Adding stuff like new compression methods or pixel formats is just going to break existing decoders completely and if you do that, you can just as well make a completely new codec from scratch.
|
|
|
|
afed
|
2024-04-23 05:16:08
|
yeah, minor improvements doesn't make sense for breaking compatibility
png is widely used because it's compatible
i think even a new purely lossless format doesn't make sense either, if it's something new it should be a lossy/lossless format that is better than the existing ones and if it's going to be worse than jxl it will just make confusion with the same name and fragmentation and won't bring something useful
why not just use jxl or add some extension for jxl (if jxl features are not enough) and promote it as a "new png" as well
|
|
|
_wb_
|
2024-04-23 05:23:10
|
As a container format, ISOBMF and PNG are quite similar: both have 4 byte box/chunk names and 4 byte payload lengths, and are otherwise just a concatenation of boxes. The only difference is the obligatory CRC in PNG, which, if you ask me, is a historical mistake that is solving a data integrity problem at the wrong layer.
|
|
|
Meow
|
|
afed
yeah, minor improvements doesn't make sense for breaking compatibility
png is widely used because it's compatible
i think even a new purely lossless format doesn't make sense either, if it's something new it should be a lossy/lossless format that is better than the existing ones and if it's going to be worse than jxl it will just make confusion with the same name and fragmentation and won't bring something useful
why not just use jxl or add some extension for jxl (if jxl features are not enough) and promote it as a "new png" as well
|
|
2024-04-23 05:32:32
|
Unless they want to violate that "PNG Working Group Charter"
|
|
2024-04-23 05:33:41
|
Those labelled backwards-incompatible shouldn't be implemented either
|
|
|
|
afed
|
2024-04-23 05:44:51
|
yeah, some changes can be useful, which are backwards compatible and png will at least be decodable even on old decoders, without some extra features, but decodable
other than that I don't see how it is useful for users, it looks more like some group just wants to take control and promote some format instead of cooperate with any of the modern formats (because there might be different visions of the design direction)
|
|
|
Meow
|
|
afed
yeah, some changes can be useful, which are backwards compatible and png will at least be decodable even on old decoders, without some extra features, but decodable
other than that I don't see how it is useful for users, it looks more like some group just wants to take control and promote some format instead of cooperate with any of the modern formats (because there might be different visions of the design direction)
|
|
2024-04-23 05:52:29
|
Not that significant and it's almost done
https://github.com/w3c/PNG-spec/blob/main/Third_Edition_Explainer.md
|
|
2024-04-23 05:53:16
|
Some changes may have existed for years
|
|
|
spider-mario
|
2024-04-23 06:09:17
|
XYZ for perceptual compression strikes me as somewhat naïve / misguided
|
|
2024-04-23 06:09:28
|
and using it indeed doesn’t guarantee the absence of imaginary colours
|
|
2024-04-23 06:10:30
|
(X=1, Y=0, Z=0) is an imaginary colour because you can’t stimulate X without also stimulating Z
|
|
2024-04-23 06:10:31
|
https://en.wikipedia.org/wiki/File:CIE_1931_XYZ_Color_Matching_Functions.svg
|
|
2024-04-23 06:11:53
|
(this is why the spectrum locus is a slanted horseshoe on the xy chromaticity diagram)
|
|
|
LMP88959
|
2024-04-23 06:12:34
|
ive messed around with different color spaces quite a bit and in my opinion effective compression isn't achieved through 'perceptual color spaces.' simple YUV is perfectly fine
|
|
2024-04-23 06:13:08
|
the reason being the color space needs to react well to compression, reducing the bit depth in the channels
|
|
2024-04-23 06:13:57
|
and it's less about matching human perception and more about removing the correlation between channels because spatial compression is where the real savings are (in terms of image compression)
|
|
|
damian101
|
|
LMP88959
ive messed around with different color spaces quite a bit and in my opinion effective compression isn't achieved through 'perceptual color spaces.' simple YUV is perfectly fine
|
|
2024-04-23 07:31:09
|
no, it's not...
|
|
2024-04-23 07:32:45
|
I mean, if at least luma was somewhat perceptually uniform...
since it's not we get way lower quality in dark areas than bright ones with simple lossy SDR compression.
|
|
2024-04-23 07:33:18
|
It makes a huge difference.
|
|
|
LMP88959
|
|
I mean, if at least luma was somewhat perceptually uniform...
since it's not we get way lower quality in dark areas than bright ones with simple lossy SDR compression.
|
|
2024-04-23 08:33:57
|
Yeah i agree. That aspect needs work. Im no expert, i was just giving my opinion based off the little experience ive had
|
|
2024-04-23 08:34:36
|
Maybe srgb intermediates?
|
|
|
damian101
|
|
LMP88959
Maybe srgb intermediates?
|
|
2024-04-23 08:41:31
|
how do you mean?
|
|
|
|
JendaLinda
|
2024-04-23 08:44:56
|
The simplicity of PNG allowed it to be usable even on 486-class computers.
|
|
2024-04-23 08:45:58
|
There are PNG viewers running on DOS.
|
|
|
LMP88959
|
|
how do you mean?
|
|
2024-04-23 08:59:19
|
Hmm not too sure but if we could figure out how to get the compressed aspect of srgb into a yuv style color space that would be great
|
|
2024-04-23 08:59:45
|
Since srgb gives more bits to dark colors and less to bright
|
|
|
damian101
|
|
LMP88959
Since srgb gives more bits to dark colors and less to bright
|
|
2024-04-23 09:01:03
|
It does so more compared to linear (which all OETFs do), but virtually all other relevant OETFs do so even more.
|
|
2024-04-23 09:01:56
|
The sRGB OETF is pretty much the worst common OETF out there, from a perceptual uniformity standpoint.
|
|
|
LMP88959
|
2024-04-23 09:03:07
|
Oh interesting, that’s good to know. Btw nice to meet you, you’re an expert in color?
|
|
|
_wb_
|
2024-04-23 09:10:13
|
sRGB models how CRT monitors work, not how the human eye works.
|
|
2024-04-23 09:13:48
|
YUV models how color TVs managed to introduce color in a backwards-compatible way in the 1960s, not how humans perceive color
|
|
|
damian101
|
|
LMP88959
Oh interesting, that’s good to know. Btw nice to meet you, you’re an expert in color?
|
|
2024-04-23 09:14:54
|
Oh, just moderately so. I think I have a decent grasp of what types of colorspaces exist and how conversion between them works in principle. But I haven't yet delved deeper into the math, except for transfer curve conversion, which is a much more simple concept.
|
|
|
_wb_
|
2024-04-23 09:15:13
|
Chroma subsampling models how the bandwidth allocated to UV was lower than that for Y because broadcast bands were already allocated and there was little room left for the chroma signal
|
|
2024-04-23 09:18:55
|
A lot of the stuff still used by image/video codecs today are effectively legacy nonsense from many decades ago, with more technical transitionary rationale (new stuff always had to remain 'compatible' with the existing old stuff) than actual perceptual motivation.
|
|
|
LMP88959
|
|
_wb_
YUV models how color TVs managed to introduce color in a backwards-compatible way in the 1960s, not how humans perceive color
|
|
2024-04-23 09:24:49
|
Yeah im not claiming any of these are based on perception
|
|
2024-04-23 09:25:17
|
Yuv does have the convenient property of separating brightness from color which indirectly helps with compression
|
|
2024-04-23 09:25:24
|
In terms of HVS
|
|
|
_wb_
Chroma subsampling models how the bandwidth allocated to UV was lower than that for Y because broadcast bands were already allocated and there was little room left for the chroma signal
|
|
2024-04-23 09:25:59
|
But that decision to reduce bandwidth of chroma was based on HVS
|
|
|
damian101
|
|
LMP88959
Yuv does have the convenient property of separating brightness from color which indirectly helps with compression
|
|
2024-04-23 10:02:33
|
Right, this is most essential for good lossy compression, and also makes the colorspace more perceptually uniform.
|
|
|
Quackdoc
|
2024-04-23 10:39:41
|
the world if yuv luma was 1:1 with brightness
|
|
2024-04-23 10:39:57
|
damn it I don't have the picture, just imagine it
|
|
|
_wb_
|
|
LMP88959
But that decision to reduce bandwidth of chroma was based on HVS
|
|
2024-04-24 06:38:05
|
Partially. And partially because they had to work with the bandwidth available. These were the days of broadcast using analog radio signals, where broadcasters already had frequency bands allocated, so they had to basically squeeze the new color signal in the padding between the existing bands.
|
|