michaelni changed the topic of #ffmpeg-devel to: Welcome to the FFmpeg development channel | Questions about using FFmpeg or developing with libav* libs should be asked in #ffmpeg | This channel is publicly logged | FFmpeg 6.1 has been released! | Please read ffmpeg.org/developer.html#Code-of-conduct
gust82 has quit [Remote host closed the connection]
gust82 has joined #ffmpeg-devel
lexano has quit [Ping timeout: 260 seconds]
kurosu has quit [Quit: Connection closed for inactivity]
gust82 has quit [Remote host closed the connection]
gust82 has joined #ffmpeg-devel
<ePirat>
cheesylard, interesting, I wonder if this affects VLC…
MrZeus_ has quit [Ping timeout: 256 seconds]
MrZeus_ has joined #ffmpeg-devel
thilo has quit [Ping timeout: 245 seconds]
thilo has joined #ffmpeg-devel
thilo has quit [Changing host]
thilo has joined #ffmpeg-devel
MrZeus_ has quit [Read error: Connection reset by peer]
dellas has joined #ffmpeg-devel
MrZeus has joined #ffmpeg-devel
MrZeus_ has joined #ffmpeg-devel
MrZeus has quit [Ping timeout: 245 seconds]
dellas has quit [Remote host closed the connection]
gust82 has quit [Remote host closed the connection]
gust82 has joined #ffmpeg-devel
cone-957 has quit [Quit: transmission timeout]
englishm has quit [Server closed connection]
englishm has joined #ffmpeg-devel
jkhsjdhjs has quit [Server closed connection]
jkhsjdhjs has joined #ffmpeg-devel
lemourin has quit [Read error: Connection reset by peer]
lemourin5 has joined #ffmpeg-devel
<cheesylard>
Pirat: VLC uses ffmpeg 4.2?
jamrial has quit []
durandal_1707 has quit [Ping timeout: 256 seconds]
durandal_1707 has joined #ffmpeg-devel
bcheng has quit [Server closed connection]
bcheng has joined #ffmpeg-devel
mkver has quit [Ping timeout: 268 seconds]
microchip_ has quit [Server closed connection]
microchip_ has joined #ffmpeg-devel
georgereynolds8 has quit [Server closed connection]
georgereynolds8 has joined #ffmpeg-devel
rossy has quit [Server closed connection]
rossy has joined #ffmpeg-devel
AbleBacon has quit [Read error: Connection reset by peer]
kurosu has joined #ffmpeg-devel
MrZeus__ has joined #ffmpeg-devel
MrZeus_ has quit [Ping timeout: 245 seconds]
MrZeus__ has quit [Ping timeout: 246 seconds]
rodgort has quit [Quit: Leaving]
TD-Linux has quit [Server closed connection]
TD-Linux has joined #ffmpeg-devel
rodgort has joined #ffmpeg-devel
lyc has joined #ffmpeg-devel
lyc has quit [Client Quit]
Krowl has joined #ffmpeg-devel
Krowl has quit [Client Quit]
Krowl has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
Krowl has quit [Read error: Connection reset by peer]
elastic_dog has joined #ffmpeg-devel
<Lynne>
wow, that's complex
<durandal_1707>
its just 7 cascaded filters, rest is for seeing spectrogram and amix/asplit is for possibility to play difference of original and filtered, just use weights '1 -1' instead of '1 0'
<elenril>
how much lavfi overhead?
<durandal_1707>
0
<elenril>
[doubt]
<durandal_1707>
please define 'lavfi overhead'
<Lynne>
durandal_1707: it's impressive when it works, though sometimes it loses track of what the noise is, and blocks the voice instead
<Lynne>
at the lower frequencies
<durandal_1707>
Lynne: yes, i'm aware of that
<durandal_1707>
need to see actual values calculated for lowest/1st filter
<durandal_1707>
and sometimes it never triggers, if noise have too strong sinusoids
<Lynne>
you could also train a neural network or copy opus' voice detection, though for that to work best, you'd need a single filter
<elenril>
durandal_1707: how much cpu and memory consumption is caused by the fact you have a fuckton of filters
<durandal_1707>
but those voice detectors are far from perfect last time i checked....
<elenril>
as opposed to a single individual filter
<durandal_1707>
elenril: it should not matter, lavfi overhead is 0, 7 cascaded filters run in 10x and only 1 filter of that cascade run in 38x
<durandal_1707>
so it should be 10x faster: 100x realtime
Krowl has joined #ffmpeg-devel
<durandal_1707>
but that is ffmpeg.c fault
<elenril>
no, it's because you didn't write frame threading for lavfi
<durandal_1707>
elenril: nonsense, filters are cascaded and IIR so frame threading can not help at all
<durandal_1707>
and parallel IIR filters are not possible from those
<elenril>
nonsense is what you're saying
<durandal_1707>
i never expected elenril would out-troll me
<elenril>
frame threading is possible for any filterchain
<elenril>
pretty much by definition
<elenril>
what can I say, I learned from the best
<durandal_1707>
elenril: how so? IIR needs previous frame output
<elenril>
I don't see the problem
<elenril>
every filter is a standalone black box
<elenril>
frames go in, frames go out
<elenril>
the filter doesn't know about previous filters in the chain
<durandal_1707>
but it knows/needs previous filter output
<elenril>
hence the preceding filter in the chain can be processing next frame in parallel
<aaabbb>
doesn't it just put it in a pipeline?
novaphoenix has quit [Server closed connection]
novaphoenix has joined #ffmpeg-devel
<durandal_1707>
elenril: nonsense
<durandal_1707>
its same as some audio decoders like mp3 are not frame threaded
<durandal_1707>
same filter graph with wav input instead of mp3: [abench @ 0x55a85ff851c0] t:0.004306 avg:0.002969 max:0.006801 min:0.001735
noonien8 has quit [Server closed connection]
<elenril>
mp3 is not composed of 8 independent stages in a series
noonien8 has joined #ffmpeg-devel
<elenril>
if it was, it could be frame threaded, if you're willing to tolerate extra latency
<durandal_1707>
1/1/0.002969=336
<durandal_1707>
elenril: but those filters in filtergraph, (7 filters: adynamicequalizer) are *dependent*
<elenril>
the dependency can only go one way
<durandal_1707>
every single one filters out one specific frequency dynamically
<durandal_1707>
and to get useful output you need to cascade them
<elenril>
consider two filters: F1 -> F2
<elenril>
F1 is done with frame 0 and gives it to F2
<elenril>
F2 is processing frame 0
<elenril>
meanwhile F1 can start on frame 1
<elenril>
what prevents this?
<durandal_1707>
filters currently work that way anyway
<elenril>
except it's not actually parallelized
<elenril>
because you failed to do it so far
<durandal_1707>
but how you would parallize that for filters that are dependent
<elenril>
I don't understand what you mean by 'dependent'
<elenril>
F2 depends on input from F1
<elenril>
it does not depend on the current internal state of F1
<durandal_1707>
and also its filter context (private data belonging to filter itself)
<elenril>
why would that matter
<elenril>
it's not running in parallel with itself (like frame threading for decoders)
<durandal_1707>
it matters for IIR filter
<elenril>
it's running in parallel with previous filters in the chain
<durandal_1707>
each IIR filter keeps state from previous run frame
<durandal_1707>
so unless you do synchronization somehow between threads than it could somehow work
<elenril>
you won't need any synchronization inside the filters themselves
<elenril>
only in code that transmits frames between filters
<durandal_1707>
but your point that filter wastes time because it ends processing before some previous/next filter is sometime problematic but not always, exp. not in this specific filtergraph
<elenril>
you misunderstand
<elenril>
my point is not about wasting time
<elenril>
my point is trolling you
<elenril>
specifically trolling you into implementing frame threading for libavfilter
<elenril>
otherwise your filtergraph is too slow for any real-world deployment
<durandal_1707>
still ffmpeg.c give huge overhead for that filtergraph, abench shows filtering takes so little time, but here its always 10x realtime, when by abench results it should be >= 300x
gust82 has quit [Remote host closed the connection]
gust82 has joined #ffmpeg-devel
<durandal_1707>
is this because ffmpeg.c still uses sleep() ?
MisterMinister has quit [Ping timeout: 246 seconds]
navi has joined #ffmpeg-devel
<durandal_1707>
elenril: 10x -> 12x
<elenril>
because you still need to implement frame threading
signalhunter has quit [Server closed connection]
signalhunter has joined #ffmpeg-devel
tufei has quit [Read error: Connection reset by peer]
dellas has joined #ffmpeg-devel
tufei has joined #ffmpeg-devel
HarshK23 has quit [Quit: Connection closed for inactivity]
jamrial has joined #ffmpeg-devel
mkver has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
HarshK23 has joined #ffmpeg-devel
balling has quit [Ping timeout: 255 seconds]
balling has joined #ffmpeg-devel
gust82 has quit [Remote host closed the connection]
gust82 has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
<BBB>
jamrial: so ... would it make sense to add a metadata bsf for vp8 as well then, to test this code?
<BBB>
(you're not being very explicit whether that's expected or not :) )
<jamrial>
BBB: that depends on what can be changed in the bitstream
<jamrial>
is color information present? if so, imo that's enough
<jamrial>
and i'm not asking for such a filter, just stating that trace_headers is not testeable, and the usual way to test a cbs implementation is with one of those
<JEEB>
yea I thought of trace_headers adding side data to the stuff it outputs
<JEEB>
which contains the entries it logged
<JEEB>
I think BBB previously brought up that it would be nice to have a programmatic interface like that
<jamrial>
not sure how could we achieve that without exporting the actual cbs codec specific structs
<jamrial>
s/exporting/exposing
<BBB>
is cbs always active during regular decoding?
<JEEB>
yea there needs to be a list of some sort of structures in that side data
<BBB>
or only when explicitly enabled?
<BBB>
one thing that has occurred to me is that there's some sort of duplication in terms of functionality between header parsing in decoding vs. the cbs stuff
<JEEB>
yea
<BBB>
can we unify that? and yes, I'm planning to expose headers at some point, so that intersects here also
<JEEB>
VVCdec will utilize CBS for that
<BBB>
I'd like to get programmatic access to headers (and other stuff, but one thing at a time) in the application, just like dav1d allows
<BBB>
and I agree that needs some kind of introspection interface
lexano has joined #ffmpeg-devel
<jamrial>
BBB: right now, a bunch of bsfs, av1_parser, av1dec use it, and once commited vvcdec will use it too
<BBB>
does it make sense to e.g. refactor h264 or vp9 to use it?
<jamrial>
normal vp8 and vp9 decoding doesn't use it at any point
<JEEB>
as deduplication of existing code, probably
<jamrial>
BBB: vp9 i guess yes, h264 no as the native decoder has a lot of considerations for broken files that cbs will reject because it strictly adheres to the spec
<balling>
Remind me, did you fix metadata vs bsf preserving all layers in hevc?
<BBB>
should cbs be "fixed" to support broken files?
<BBB>
it's a bit weird if it works in one way but not another
<BBB>
esp. since we (apparently) know how to fix it
<jamrial>
the native h264 decoder works around such files by for example reparsing a lot of bytes once it finds out it may be the output of some known old broken encoder
gust82 has quit [Remote host closed the connection]
<JEEB>
there's a patch for that on the ML, I think I even commented on one of the revisions of it
<BBB>
jamrial: hm... ok, fine then. is there a performance penalty for using e.g. vp9 cbs in ffvp9dec?
<BBB>
in terms of cpu, memory, something else
<balling>
7799 patch is there, 2 of them
<balling>
.
psykose has quit [Server closed connection]
psykose has joined #ffmpeg-devel
<BBB>
balling: so merge them
<BBB>
looks like nobody cares about this hevc codec thing, so you should sign up as maintainer
<BBB>
get involved. we want YOU to maintain ffhevcdec
<BBB>
(imagine picture of uncle sam pointing his finger at the screen)
<JEEB>
he explicitly said he doesn't want to follow the rules of the community so he is one of the few actually banned from the ML :)
<JEEB>
(usually even if people think that way they don't say that out loud :P)
<balling>
I never said that. I said that you do not understand the rules of top posting.
<JEEB>
feel free to quote it, the archive has it :)
<balling>
Not to mention that LGTM comment does not need anything like that. LGTM mark can be set in patchwork.
<JEEB>
patchwork is a helper tool currently. the ML is the official thing
<JEEB>
when we move to gitlab or so, then that will be it
<balling>
You do not need to quote all patch to just say LGTM. It does not count as top posting. You are allowed to just use message ID to links mail together.
feiw1 has quit [Ping timeout: 246 seconds]
<BBB>
omg balling you're already being difficult and I don't even know what you were (supposedly?) banned for. chill out, dude
invertedguy0485 has quit [Server closed connection]
feiw1 has joined #ffmpeg-devel
invertedguy0485 has joined #ffmpeg-devel
<balling>
@BBB They said me replying with just LGTM counts as top posting. No, it does not, there was nothing cited.
<BBB>
can you please chill out
<BBB>
why do you care
<BBB>
it takes no effort whatsoever to just not do whatever it is they asked you not to do. zero
<BBB>
it's just a nice thing to do which costs nothing and apparently makes some folks a bit happier. just do it and chill. why do you need to fight
balling has quit [Read error: Connection reset by peer]
BtbN has quit [Server closed connection]
BtbN has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
user23 has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Ping timeout: 276 seconds]
balling has joined #ffmpeg-devel
<jamrial>
BBB: i don't think so. for reading it should be cheap. it's writting what's expensive afaik
<BBB>
okiedokie, tnx
<BBB>
I may at some point give it a try for vp9 then. just for funsies to see what happens
<BBB>
and to get rid of some duplicate code maybe
<BBB>
are the structs shared for h264? like pps/sps/slicehdr
<BBB>
or do they also need extra members to account for the hackyhack?
balling has quit [Read error: Connection reset by peer]
<jkqxz>
The CBS structs are intended to be exactly the syntax elements as they are in the spec.
<jkqxz>
Decoder structs store derived values immediately without checking them, and also contain lots of other stuff.
<BBB>
maybe a decoder struct could embed a header struct
<BBB>
the idea is that cbs allows exposing a header
<BBB>
I'm trying to think of how to add that to decoders
<BBB>
I don't want this to be incompatible
<jkqxz>
Yeah, embedding the cbs struct in the decoder struct I think is what vvc was doing last I looked (a long time ago).
<BBB>
one way to prevent that is for it to be the same
<BBB>
and vvc indeed already does it, said jamrial. so maybe this makes sense in more places
<BBB>
it would really suck if we had tow mechanisms to access headers and they were somehow incompatible and different and duplicate and we end up like prores_ks vs prores_an
<jamrial>
jkqxz: also the av1 decoder, even if there's no actual software decoding going on and it's currently just to pass bitstream values to hwaccel implementations
TheElixZammuto has quit [Server closed connection]
TheElixZammuto has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
deus0ww has quit [Ping timeout: 260 seconds]
balling has quit [Read error: Connection reset by peer]
deus0ww has joined #ffmpeg-devel
rom1v has quit [Server closed connection]
rom1v has joined #ffmpeg-devel
user23 has quit [Remote host closed the connection]
user23 has joined #ffmpeg-devel
derpydoo has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
MisterMinister has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
Krowl has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
Chagall has quit [Server closed connection]
Chagall has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
balling has quit [Ping timeout: 256 seconds]
balling has joined #ffmpeg-devel
balling has quit [Remote host closed the connection]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
iive has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
psilokos has quit [Server closed connection]
psilokos has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
Krowl has quit [Read error: Connection reset by peer]
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
AbleBacon has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
mkver has quit [Ping timeout: 276 seconds]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Ping timeout: 255 seconds]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
user23 has quit [Remote host closed the connection]
user23 has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
elastic_dog has quit [Ping timeout: 246 seconds]
balling has quit [Ping timeout: 255 seconds]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
elastic_dog has joined #ffmpeg-devel
Gramner has quit [Ping timeout: 256 seconds]
Gramner has joined #ffmpeg-devel
Krowl has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
kekePower has quit [Read error: Connection reset by peer]
kekePower has joined #ffmpeg-devel
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
dellas has quit [Ping timeout: 276 seconds]
balling has joined #ffmpeg-devel
dellas has joined #ffmpeg-devel
kekePower has quit [Quit: Ping timeout (120 seconds)]
kekePower has joined #ffmpeg-devel
user23 has quit [Remote host closed the connection]
user23 has joined #ffmpeg-devel
kekePower has quit [Quit: Ping timeout (120 seconds)]
kekePower has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
kekePower has quit [Quit: Ping timeout (120 seconds)]
kekePower has joined #ffmpeg-devel
MisterMinister has quit [Ping timeout: 260 seconds]
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
kekePower has quit [Read error: Connection reset by peer]
Krowl has quit [Read error: Connection reset by peer]
kekePower has joined #ffmpeg-devel
kekePower has quit [Client Quit]
kekePower has joined #ffmpeg-devel
kekePower has quit [Client Quit]
kekePower has joined #ffmpeg-devel
jkhsjdhjs has quit [Quit: Error: Leaving not permitted]
kekePower has quit [Read error: Connection reset by peer]
kekePower has joined #ffmpeg-devel
mkver has joined #ffmpeg-devel
kekePower has quit [Read error: Connection reset by peer]
kekePower has joined #ffmpeg-devel
balling has quit [Read error: Connection reset by peer]
balling has joined #ffmpeg-devel
<balling>
BTW, just checked ffplay -hwaccel vulkan works and even 64 bits png do work, but only if you do -vf zscale after the name of the file. Dolby Vision does not work. :(