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 7.1.1 has been released! | Please read ffmpeg.org/developer.html#Code-of-conduct
<fflogger> [editedticket] Balling: Ticket #11524 ([avcodec] g726(le) produces clicks in encoded audio) updated https://trac.ffmpeg.org/ticket/11524#comment:10
iive has quit [Quit: They came for me...]
<sdc> is the only way to get a copy of the mpeg1 standard to buy a pdf of it?
<ramiro> haasn: and sometimes in the convert op as well. apparently nan is not treated the same way
thilo has quit [Ping timeout: 252 seconds]
thilo has joined #ffmpeg-devel
thilo has quit [Changing host]
thilo has joined #ffmpeg-devel
Mirarora has quit [Quit: Mirarora encountered a fatal error and needs to close]
Kei_N has joined #ffmpeg-devel
System_Error has quit [Ping timeout: 264 seconds]
Kei_N_ has quit [Ping timeout: 248 seconds]
Mirarora has joined #ffmpeg-devel
<haasn> The presence of NaN inputs is kinda always gonna be a problem
<haasn> So I think we can loosen bitexactness requirements when the source itself is a floating point image
<haasn> Maybe we could specify that BITEXACT has no effect on floating point formats
<haasn> And as for checkasm, when testing float inputs we could mask out NaNs and Infinities I guess
<haasn> But yeah, still thinking about that fixed point path
System_Error has joined #ffmpeg-devel
IndecisiveTurtle has quit [Ping timeout: 272 seconds]
System_Error has quit [Remote host closed the connection]
System_Error has joined #ffmpeg-devel
abdu has joined #ffmpeg-devel
<fflogger> [editedticket] Balling: Ticket #11138 ([swresample] FFmpeg audio dither creates unwanted DC offset) updated https://trac.ffmpeg.org/ticket/11138#comment:4
abdu57 has joined #ffmpeg-devel
abdu has quit [Ping timeout: 240 seconds]
manny68 has joined #ffmpeg-devel
^Neo has quit [Ping timeout: 265 seconds]
abdu73 has joined #ffmpeg-devel
abdu57 has quit [Ping timeout: 240 seconds]
minimal has quit [Quit: Leaving]
abdu63 has joined #ffmpeg-devel
abdu73 has quit [Ping timeout: 240 seconds]
abdu61 has joined #ffmpeg-devel
abdu63 has quit [Ping timeout: 240 seconds]
zeezie01 has quit [Quit: Leaving]
jamrial has quit []
manny68 has quit [Quit: Client closed]
abdu61 has quit [Quit: Ping timeout (120 seconds)]
Ishesh has joined #ffmpeg-devel
witchymary has quit [Ping timeout: 268 seconds]
derpydoo has joined #ffmpeg-devel
derpydoo has quit [Ping timeout: 244 seconds]
abdu has joined #ffmpeg-devel
derpydoo has joined #ffmpeg-devel
Ishesh has quit [Quit: Client closed]
rit has joined #ffmpeg-devel
shawgaze has joined #ffmpeg-devel
abdu has quit [Quit: Client closed]
abdu has joined #ffmpeg-devel
abdu has quit [Quit: Client closed]
rit has quit [Ping timeout: 240 seconds]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has quit [Quit: WeeChat 4.5.2]
ngaullier has joined #ffmpeg-devel
ngaullier has quit [Remote host closed the connection]
usagi_mimi has joined #ffmpeg-devel
Grimmauld has joined #ffmpeg-devel
Anthony_ZO has joined #ffmpeg-devel
ngaullier has joined #ffmpeg-devel
shawgaze has quit [Quit: Client closed]
___nick___ has joined #ffmpeg-devel
___nick___ has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
martinr1 has joined #ffmpeg-devel
___nick___ has joined #ffmpeg-devel
___nick___ has quit [Client Quit]
___nick___ has joined #ffmpeg-devel
___nick___ has quit [Ping timeout: 252 seconds]
___nick___ has joined #ffmpeg-devel
cone-827 has joined #ffmpeg-devel
<cone-827> ffmpeg Zhao Zhili release/7.1:48c0f071d4b5: avcodec/mediacodecdec_common: Workaround MTK broken crop implementation
BradleyS has quit [Read error: Connection reset by peer]
compnn has quit [Read error: Connection reset by peer]
BradleyS has joined #ffmpeg-devel
compnn has joined #ffmpeg-devel
<fflogger> [editedticket] MasterQuestionable: Ticket #11535 ([avformat] Fixes for CVE-2023-6602 broke my code) updated https://trac.ffmpeg.org/ticket/11535#comment:1
<fflogger> [editedticket] pxia: Ticket #4907 ([avcodec] Support decoding animated WebP images) updated https://trac.ffmpeg.org/ticket/4907#comment:39
___nick___ has quit [Ping timeout: 272 seconds]
Grimmauld has quit [Quit: Client closed]
<kasper93> Direct leak of 1 byte(s) /src/ffmpeg/tools/target_swr_fuzzer.c:135:16
<kasper93> seems to be leaking when av_samples_fill_arrays() fails
<kasper93> it probably never failed before(?)
<kasper93> after 46e3bc2ebd21b215edce773de7c498121c1be766 it jumps over av_freep
<kasper93> though I'm suprised you don't see this leak in your oss-fuzz dashboard
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
^Neo has joined #ffmpeg-devel
^Neo has joined #ffmpeg-devel
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has quit [Client Quit]
usagi_mimi has joined #ffmpeg-devel
<kasper93> sent a hotfix
<kasper93> hopefully this is last thing needed to unblock oss-fuzz
<kasper93> also libswscale has pretty low coverage 0% in gamma.c and csputils.c lut3d.c
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has quit [Client Quit]
usagi_mimi has joined #ffmpeg-devel
derpydoo has quit [Quit: derpydoo]
mkver has joined #ffmpeg-devel
jamrial has joined #ffmpeg-devel
Grimmauld has joined #ffmpeg-devel
ccawley2011 has joined #ffmpeg-devel
cone-827 has quit [Quit: transmission timeout]
<haasn> ramiro: I think the cleanest way to handle the multiple block sizes issue on the API level is to re-add the separate block_size() function; and then allow the user to set a lower block size in chain->block_w/h when actually compiling
<mkver> jamrial: Can you provide a sample for 261cd929e06b716b3?
<haasn> or, even better idea: the user can set chain->block_w/h before calling compile() to "suggest" a block size
<haasn> and the implementation will then pick the best compatible one, rounding up or down as needed
<jamrial> mkver: no, i wrote that three years ago. i have no idea how i tested it
<mkver> I don't think it ever worked: skipped_last_frame is not synced among threads.
<mkver> May I just nuke it?
Anthony_ZO has quit [Ping timeout: 252 seconds]
rit has joined #ffmpeg-devel
rit has quit [Remote host closed the connection]
rit has joined #ffmpeg-devel
ccawley2011 has quit [Ping timeout: 265 seconds]
<haasn> Gramner: wbs: do you have an opinion on adjusting checkasm to report cycles per pixel instead of raw cycles? (for functions with fixed/known sizes)
<haasn> the main reason I am interested in this is because in my swscale implementation, platforms may choose different block sizes; and benchmarking a 64x1 x86 kernel against a 32x1 C kernel misrepresents the speedup
<Gramner> not a fan of that
<Gramner> would just make things confusing imo
<haasn> one alternative work-around I can implement is to call checkasm_get_perf_context() a second time and manually double the number of iters to normalize everything to the C block size
<haasn> but I'm not a huge fan of that either
<haasn> so I think what I'll do is just call a spade by a spade and name tests with different block sizes differently
<wbs> that's what we do for e.g. codec DSP functions with different sizes yes
<haasn> this loses the ability to see speedup numbers directly though
<wbs> can't you loop the elemental functions to do a fixed size, running more or less iterations of the asm function?
<Gramner> so the dsp functions does different things on different implementations or what? e.g. if you have a 64x64 block do you have call the dsp function 64 times in one implementation and 128 times in the other?
<Gramner> that seems kind of awkward
<wbs> I guess that requires some sort of function wrapper?
<haasn> Gramner: the wrapper calls it as many times as needed, yes
<Gramner> can't you just benchmark the wrapper then?
<haasn> the wrapper is the same on all platforms
<haasn> check_func() doesn't work that way, it relies on the uniqueness of function pointers
<haasn> I think comparing it with traditional dsp functions is sort of flawed
<haasn> a better analogy would be a bytecode interpreter
<Gramner> i am indeed confused about this dsp design, yes. normally such things are considered internal implementations details within the dsp function itself. e.g. with wider vectors you may process more data per loop and perform fewer loop iterations
<Gramner> but the caller doesn't know nor care about that
<haasn> the problem is that we have a custom calling convention between dsp functions; and depending on how many vector registers you have available (and their size) there is a cpu-dependent limit on the amount of data that you can pass between functions
<haasn> we specifically _avoid_ passing data in memory between function calls, which would be required if you need to process more data than you have available registers
<Lynne> we had the same issue for lavu/tx
<haasn> so what we do on e.g. AVX2 is reserve 8 vector registers for passing pixel data between functions
<Lynne> could you just run the code as-is on a single-line, rather than benchmarking each chunk?
<haasn> I could
<haasn> I mean I could change func_new to the wrapper before calling bench_new()
<haasn> and have the wrapper repeat the actual function the number of times until it covers a set size e.g. 256
<haasn> Gramner: instead of a dsp table of fixed size kernels for specific operations, I have a compile() function that lets the backend assemble any sequence of primitives it wants; and in practice we use an internal calling convention + CPS to link kernels together
<haasn> but e.g. ramiro is working on an asmjit backend that just directly generates the appropriate simd function
<haasn> and I will also write a gpu backend that compiles it down to a compute shader
<Gramner> if you have asm functions with custom calling conventions, surely those are just called internally from some other asm function right? you wouldn't call such functions directly from C and pray that the compiler doesn't clobber some particular register?
<haasn> correct
<haasn> so for testing internal functions we construct a minimal sequence { read from memory; OP_TO_TEST; write to memory }
<haasn> and compile that to a function callable from C using the backend.compile()
<Gramner> could you make that constructed function loop over a fixed (instead of implementation-specific) block size?
<Lynne> you compile the function? don't you use function pointers?
witchymary has joined #ffmpeg-devel
<Gramner> testing and comparing different implementations against each other would probably be more accurate if you're making them do the exact same thing rather than different things and trying to somehow normalize the results afterwards
usagi_mimi has quit [Quit: WeeChat 4.5.2]
<haasn> yeah I think I've been thoroughly convinced that we should benchmark it over a fixed, larger number of pixels (say 256)
<haasn> I can definitely do that without too much hassle
<haasn> Lynne: don't understand the question
<haasn> so my plan for now is to write a dedicated wrapper inside checkasm that will loop the platform-chosen block size over the fixed size of the checkasm test array
<haasn> and then split the checkasm test up into each a separate entry for each possible block size
<haasn> that gives us the most information and also standardizes the benchmark results
<Lynne> haasn: its called compile, but it's not like you jit by gluing executable chunks, surely you just set a few function pointers in a context for functions to call whichever stage they need
<haasn> Lynne: yeah, also assembling data for the ops
usagi_mimi has joined #ffmpeg-devel
<haasn> the code is probably easier to understand than me trying to explain it :) https://github.com/haasn/FFmpeg/blob/swscale5/libswscale/ops_internal.h#L55
martinr1 has quit [Ping timeout: 252 seconds]
usagi_mimi has quit [Quit: WeeChat 4.5.2]
Grimmauld has quit [Quit: Client closed]
<fflogger> [editedticket] ffmpegScale: Ticket #11500 ([swscale] AV1 frame extraction (screenshot) fails) updated https://trac.ffmpeg.org/ticket/11500#comment:10
martinr1 has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has joined #ffmpeg-devel
ccawley2011 has joined #ffmpeg-devel
abdu has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 252 seconds]
usagi_mimi has quit [Quit: WeeChat 4.5.2]
rit has quit [Ping timeout: 240 seconds]
usagi_mimi has joined #ffmpeg-devel
usagi_mimi has quit [Client Quit]
usagi_mimi has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
abdu has quit [Quit: Client closed]
abdu has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 248 seconds]
cone-373 has joined #ffmpeg-devel
<cone-373> ffmpeg Martin Storsjö master:19a4719f3b5a: libavfilter: metal: Fix the version condition for iOS
<cone-373> ffmpeg Martin Storsjö master:1129957ae2ba: configure: Add a dependency for the audiotoolbox outdev
<cone-373> ffmpeg Martin Storsjö master:d8ae11365c31: configure: Check for an actual function in VideoToolbox
<cone-373> ffmpeg Martin Storsjö master:d7d6e9ae696f: videotoolboxenc: Add an iOS version condition for VTCopySupportedPropertyDictionaryForEncoder
minimal has joined #ffmpeg-devel
rvalue has quit [Read error: Connection reset by peer]
<cone-373> ffmpeg Kieran Kunhya master:4db571e5164c: checkasm/v210enc.c: Use checkasm_check()
rvalue has joined #ffmpeg-devel
ngaullier has quit [Remote host closed the connection]
<cone-373> ffmpeg Martin Storsjö master:37c664a2533b: checkasm: Make checkasm_fail_func return whether we should print verbosely
<cone-373> ffmpeg Martin Storsjö master:b863b81500f3: checkasm: Implement helpers for defining and checking padded rects
<cone-373> ffmpeg Martin Storsjö master:c1a2da72cc27: checkasm: vp8dsp: Use checkasm_check_padded in check_mc
<fflogger> [editedticket] uncoder: Ticket #11435 ([avformat] Added "-extension_picky" breaks various applications) updated https://trac.ffmpeg.org/ticket/11435#comment:19
haihao has quit [Ping timeout: 246 seconds]
haihao has joined #ffmpeg-devel
ccawley2011 has quit [Ping timeout: 265 seconds]
ccawley2011 has joined #ffmpeg-devel
abdu has quit [Quit: Client closed]
abdu has joined #ffmpeg-devel
ccawley2011 has quit [Ping timeout: 260 seconds]
Wu_Jianhua has joined #ffmpeg-devel
haihao has quit [Ping timeout: 246 seconds]
<Wu_Jianhua> Hi there, I sent patches by Gmail today and yesterday to the ffmpeg-devel@ffmpeg.org, but the patchset doesn't occur on https://ffmpeg.org/pipermail/ffmpeg-devel/2025-April/date.html. Do you happen to know what happened?
haihao has joined #ffmpeg-devel
<sfan5> did you subscribe successfully before sending the patches?
<Wu_Jianhua> Not for the gamil. I used to send the patches by my outlook email, but the outlook is not able to use in the git send-emai now.
abdu has quit [Quit: Client closed]
<Wu_Jianhua> So I need to subscribe with my Gmail, right?
abdu has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
<sfan5> yes
<sfan5> with the exact email you will be sending from
<cone-373> ffmpeg Cameron Gutman master:839b41991d5e: avcodec/nvenc: unify CBR filler data insertion for all codecs
<Wu_Jianhua> It works. Thank you sfan5!
paulk has quit [Read error: Connection reset by peer]
paulk has joined #ffmpeg-devel
paulk has joined #ffmpeg-devel
Wu_Jianhua has quit [Quit: Client closed]
Wu_Jianhua has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 245 seconds]
iive has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
Marth64[m] has joined #ffmpeg-devel
<Lynne> kierank: nice
<Lynne> have we decided on 1337 hacker names yet, in case we get called to the pentagon?
<kierank> Lol
Marth64 has quit [Ping timeout: 260 seconds]
mkver has quit [Ping timeout: 244 seconds]
abdu has quit [Quit: Client closed]
abdu has joined #ffmpeg-devel
abdu has quit [Client Quit]
Wu_Jianhua has quit [Quit: Client closed]
<ePirat> kierank, can you give me the ffmpeg discord link?
martinr1 has quit [Ping timeout: 252 seconds]
<ePirat> kierank, thanks
<kierank> ePirat: lemme make you a mod
uau has quit [Ping timeout: 272 seconds]
Guest59 has joined #ffmpeg-devel
Guest59 has quit [Client Quit]
martinr1 has joined #ffmpeg-devel
derpydoo has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 272 seconds]
MisterMinister has quit [Remote host closed the connection]
<fflogger> [editedticket] Balling: Ticket #10043 ([avcodec] HEVC filler data question) updated https://trac.ffmpeg.org/ticket/10043#comment:2
rvalue- has joined #ffmpeg-devel
rvalue has quit [Ping timeout: 252 seconds]
rvalue- is now known as rvalue
mkver has joined #ffmpeg-devel
ccawley2011 has joined #ffmpeg-devel
uau has joined #ffmpeg-devel
Flat_ has quit [Ping timeout: 260 seconds]
IndecisiveTurtle has joined #ffmpeg-devel
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
Flat has joined #ffmpeg-devel
Flat has quit [Ping timeout: 252 seconds]
abdu has joined #ffmpeg-devel
cone-373 has quit [Quit: transmission timeout]
wyatt8750 has quit [Remote host closed the connection]
Flat has joined #ffmpeg-devel
jess has joined #ffmpeg-devel
averne_ has joined #ffmpeg-devel
averne has quit [Ping timeout: 246 seconds]
averne_ is now known as averne
wyatt8740 has joined #ffmpeg-devel
wyatt8740 has quit [Ping timeout: 245 seconds]
wyatt8740 has joined #ffmpeg-devel
Anthony_ZO has joined #ffmpeg-devel
<ramiro> haasn: I think SwsFunc should return an int. it'll probably be a little bit tricky, since only write() would return a value. at first I'm thinking only of doing the horizontal loop, so the return value would be either "exec has been updated" or "exec has not been updated"
derpydoo has quit [Quit: derpydoo]
<ramiro> at some point later in time, it could return "exec.x has been updated", "exec.x and exec.y have been updated", or "exec has not been updated". but I think when we factor in that the scaler could be downscaling or upscaling, it would probably make more sense if exec.y was not updated
<ramiro> it would be much trickier to jit a scaler that can downscale and upscale, and at that point it would probably be easier to have the C code take care of it.
abdu24 has joined #ffmpeg-devel
abdu has quit [Ping timeout: 240 seconds]
System_Error has quit [Ping timeout: 264 seconds]
System_Error has joined #ffmpeg-devel
lemourin has quit [Quit: The Lounge - https://thelounge.chat]
IndecisiveTurtle has quit [Ping timeout: 246 seconds]
lemourin has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 252 seconds]
microchip_ has quit [Ping timeout: 252 seconds]
putacho has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
ccawley2011 has quit [Read error: Connection reset by peer]
martinr1 has quit [Ping timeout: 245 seconds]
mkver has quit [Ping timeout: 260 seconds]
usagi_mimi has quit [Quit: WeeChat 4.5.2]
usagi_mimi has joined #ffmpeg-devel
martinr1 has joined #ffmpeg-devel
martinr1 has quit [Ping timeout: 252 seconds]
<j-b> kierank: joined too :)
wyatt8740 has quit [Ping timeout: 244 seconds]
<Lynne> michaelni jamrial: ffv1 decode is broken atm, AVERROR(ENOMEM)
wyatt8740 has joined #ffmpeg-devel
<kasper93> could someone push https://ffmpeg.org/pipermail/ffmpeg-devel/2025-April/341758.html ? it's simple enough :)
<jamrial> Lynne: what commit broke it?
wyatt8740 has quit [Ping timeout: 268 seconds]
<Lynne> jamrial: apparently its michael's commits which broke anything that the ffv1_vulkan encoder outputs
<Lynne> .......
<Lynne> michaelni: fix it!
<Lynne> the decoder should never even error out with enomem unless there's no memory, even if the file is invalid
wyatt8740 has joined #ffmpeg-devel
pross has quit [Ping timeout: 265 seconds]
iive has quit [Quit: They came for me...]
<michaelni> Lynne, ffv1 has always been tested before git push. And fate did and does pass
<Lynne> you update ffv1 yet you don't pay any attention if any change you made in the shared ffv1 code affects any vulkan code
<Lynne> you update both at the same time
<Lynne> this was level 4, level 3 still works
<Lynne> nevermind, level 3 is broken too
<Lynne> michaelni: you broke being able to use 1024 slices and 1000 slices is the issue
<Lynne> fate doesn't test that
<Lynne> you can generate 1000 slice ffv1 streams via the software decoder too, -slices 1000
<ramiro> Lynne: perhaps we should add a test then
<michaelni> Lynne, i can look at slices 1000 but it seems "config.h:#define CONFIG_VULKAN 0"
<Lynne> you don't need vulkan
<Lynne> seems like you've completely overbalooned the decoder's use of memory
<Lynne> 576 slices causes an OOM on my machine
<Lynne> this is all C code, no vulkan involved at all
martinr1 has joined #ffmpeg-devel
<michaelni> 576 slices is alot but, yes some commits from me and james added some stuff to FFV1SliceContext. Ill look into reducing that
<Lynne> 256 slices consumes 12GiB of memory to decode
<Lynne> at 1080p...
<Lynne> this has been broken for about 2 weeks
martinr1 has quit [Ping timeout: 252 seconds]
<michaelni> Lynne, the newly added arrays are only 0.6GiB with 256 slices in the software decoder so iam not sure
<Lynne> threading?
<michaelni> ill look at the new arrays and will get rid of them for all the cases that dont need them
<Lynne> the new state added is about 3MiB per slice, times 1024 slices is 2.5GiB, times 16 threads is 40GiB exactly
<Lynne> michaelni: could you allocate the slice state at runtime, rather than init time?
<michaelni> 16 frame threads and 1024 slices. You have 16000 CPUs ?
<Lynne> GPUs do
<michaelni> ill allocate only when needed
<Lynne> thanks
<michaelni> i need to check if we can reduce them beyond that