summaryrefslogtreecommitdiff
path: root/libavfilter
Commit message (Collapse)AuthorAgeFilesLines
* avfilter/*xfade: reduce memory consumptionPaul B Mahol2023-05-142-0/+24
| | | | There is no always need for new buffers.
* avfilter/f_graphmonitor: set output frame durationPaul B Mahol2023-05-141-0/+1
|
* avfilter/f_loop: free video frames once not neededPaul B Mahol2023-05-141-4/+17
|
* avfilter/f_graphmonitor: add nozero display modePaul B Mahol2023-05-141-19/+26
|
* avfilter/f_graphmonitor: rename enumsPaul B Mahol2023-05-141-52/+53
|
* avfilter/f_loop: fix looping for aloopPaul B Mahol2023-05-141-1/+5
|
* avfilter/f_loop: add time option, for loop start in secondsPaul B Mahol2023-05-141-40/+49
|
* lavfi/vf_libplacebo: add frame_mixer optionNiklas Haas2023-05-141-6/+11
| | | | | Fairly straightforward. We just need to modify the scaler handling code slightly to support looking at a different list of filter presets.
* lavfi/vf_libplacebo: allow fps conversionNiklas Haas2023-05-141-7/+31
| | | | | | | | | | | This exposes libplacebo's frame mixing functionality to vf_libplacebo, by allowing users to specify a desired target fps to output at. Incoming frames will be smoothly resampled (in a manner determined by the `frame_mixer` option, to be added in the next commit). To generate a consistently timed output stream, we directly use the desired framerate as the timebase, and simply output frames in sequential order (tracked by the number of frames output so far).
* lavfi/vf_libplacebo: switch to activate()Niklas Haas2023-05-141-33/+80
| | | | | | | | | To present compatibility with the current behavior, we keep track of a FIFO of exact frame timestamps that we want to output to the user. In practice, this is essentially equivalent to the current filter_frame() code, but this design allows us to scale to more complicated use cases in the future - for example, insertion of intermediate frames (deinterlacing, frame doubling, conversion to fixed fps, ...)
* lavfi/vf_libplacebo: switch to pl_queue-based designNiklas Haas2023-05-141-70/+144
| | | | | | This does not leverage any immediate benefits, but refactors and prepares the codebase for upcoming changes, which will include the ability to do deinterlacing and resampling (frame mixing).
* lavfi/vf_libplacebo: split and refactor logicNiklas Haas2023-05-141-79/+93
| | | | | | | | | | | | This commit contains no functional change. The goal is merely to separate the highly intertwined `filter_frame` and `process_frames` functions into their separate concerns, specifically to separate frame uploading (which is now done directly in `filter_frame`) from emitting a frame (which is now done by a dedicated function `output_frame`). The overall idea here is to be able to ultimately call `output_frame` multiple times, to e.g. emit several output frames for a single input frame.
* lavfi/vf_libplacebo: update render params on demandNiklas Haas2023-05-141-102/+126
| | | | | | Only update this struct when it's expected to change, and cache it otherwise. Partially motivated by a desire to make `process_frames` smaller.
* avfilter/setpts: add command supportOleg2023-05-141-17/+56
| | | | | | Add support for changing expr on the fly. Signed-off-by: Oleg <oafanasiev@gmail.com>
* avfilter/vf_waveform: add input optionPaul B Mahol2023-05-141-1/+5
| | | | For finer control of selected formats for filtering.
* avfilter/avfiltergraph: remove no longer valid commentPaul B Mahol2023-05-141-1/+0
|
* avfilter/formats: fix format negotiation when multiple channel_layouts are ↵James Almer2023-05-132-10/+31
| | | | | | | | | | provided For example ffmpeg -f lavfi -i sine -af "aformat=cl=stereo|5.1|7.1,lowpass,aformat=cl=7.1|5.1|stereo" -f null - Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: James Almer <jamrial@gmail.com>
* lavfi/vf_libplacebo: allow operation without avhwdeviceNiklas Haas2023-05-131-42/+45
| | | | | | | | | | | | | | | | | | | Recent versions of libplacebo have required Vulkan versions incompatible with lavu Vulkan hwcontexts. While this is expected to change eventually, breaking vf_libplacebo every time there is such a transition period is obviously undesired behavior, as the following sea of bug reports shows. This commit adds a fallback path for init_vulkan failures which simply creates an internal device if there was no user-supplied Vulkan hwaccel. Useful when no interop with lavu vulkan hwframes is needed or desired, and makes using this filter easier inside certain applications. Fixes: https://github.com/haasn/libplacebo/issues/170 Fixes: https://github.com/mpv-player/mpv/issues/9589#issuecomment-1535432185 Fixes: https://github.com/mpv-player/mpv/issues/11363 Fixes: https://github.com/mpv-player/mpv/issues/11685#issuecomment-1546627082 Closes: https://code.videolan.org/videolan/libplacebo/-/issues/270
* avfilter/af_asetrate: extend query_formats()Paul B Mahol2023-05-131-1/+11
| | | | | | | It left some formats not defined. Causing format negotiation errors with ffplay. Fixes #9248
* avfilter/avfiltergraph: fix check for negative returnPaul B Mahol2023-05-131-2/+4
| | | | | | | | | | | | Before this commit if allocation would fail in ff_add_channel_layout() function, function would return negative error code and this would cause wrong format pick up later. If allocation would not fail return code would be 0 and then format negotiation would simply fail as code would break from the loop but with wrong return code. Error was introduced in 6aaac24d72a7da commit. Fixes #6638
* avfilter/ccfifo: constify some parametersJames Almer2023-05-122-4/+4
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter/af_loudnorm: simplify query_formats even morePaul B Mahol2023-05-121-11/+9
|
* avfilter/ccfifo: remove unnecessary context allocationsJames Almer2023-05-1211-86/+81
| | | | | | | This is not public API, no it has no need for an alloc() and free() functions. The struct can reside on stack. Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter/af_surround: scale output gain for non-default overlapPaul B Mahol2023-05-121-2/+20
|
* avfilter/af_surround: cache constant rdft_size inside loopsPaul B Mahol2023-05-121-6/+12
|
* avfilter/af_surround: reduce double usagePaul B Mahol2023-05-111-27/+27
|
* avfilter/avf_showwaves: zero whole allocated chunkPaul B Mahol2023-05-111-1/+1
|
* avfilter/vf_yadif_cuda: fix buildTimo Rothenpieler2023-05-111-2/+2
| | | | Identical patches were sent by Leo Izen and Devin Heitmueller.
* avfilter/vf_ccrepack: Add new filter to repack CEA-708 side dataDevin Heitmueller2023-05-113-0/+104
| | | | | | | | | | | | | THis filter can correct certain issues seen from upstream sources where the cc_count is not properly set or the CEA-608 tuples are not at the start of the payload as expected. Make use of the ccfifo to extract and immediately repack the CEA-708 side data, thereby removing any extra padding and ensuring the 608 tuples are at the front of the payload. Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avfilter/tinterlace: Properly preserve CEA-708 closed captionsDevin Heitmueller2023-05-112-0/+13
| | | | | | | | | | | | | | | Because the interlacing filter halves the effective framerate, we need to ensure that no CEA-708 data is lost as frames are merged. Make use of the new ccfifo mechanism to ensure that caption data is properly preserved as frames pass through the filter. Thanks to Thomas Mundt for review and noticing a couple of missed codepaths for injection on output. Thanks to Lance Wang for pointing out a memory leak. Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avfilter/yadif: Properly preserve CEA-708 closed captionsDevin Heitmueller2023-05-115-0/+32
| | | | | | | | | | | | | Various deinterlacing modes have the effect of doubling the framerate, and we need to ensure that the caption data isn't duplicated (or else you get double captions on-screen). Use the new ccfifo mechanism for yadif (and yadif_cuda and bwdif since they use the same yadif core) so that CEA-708 data is properly preserved through this filter. Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avfilter/vf_fps: properly preserve CEA-708 captionsDevin Heitmueller2023-05-111-1/+10
| | | | | | | | | | | | | | | The existing implementation made an attempt to remove duplicate captions if increasing the framerate, but made no attempt to handle reducing the framerate, nor did it rewrite the caption payloads to have the appropriate cc_count (e.g. the cc_count needs to change from 20 to 10 when going from 1080i59 to 720p59 and vice-versa). Make use of the new ccfifo mechanism to ensure that caption data is properly preserved. Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avfilter/ccfifo: Properly handle CEA-708 captions through framerate conversionDevin Heitmueller2023-05-113-0/+335
| | | | | | | | | | | | | | | | | | | | | | | | | | | When transcoding video that contains 708 closed captions, the caption data is tied to the frames as side data. Simply dropping or adding frames to change the framerate will result in loss of data, so the caption data needs to be preserved and reformatted. For example, without this patch converting 720p59 to 1080i59 would result in loss of 50% of the caption bytes, resulting in garbled 608 captions and 708 probably wouldn't render at all. Further, the frames that are there will have an illegal cc_count for the target framerate, so some decoders may ignore the packets entirely. Extract the 608 and 708 tuples and insert them onto queues. Then after dropping/adding frames, re-write the tuples back into the resulting frames at the appropriate rate given the target framerate. This includes both having the correct cc_count as well as clocking out the 608 pairs at the appropriate rate. Thanks to Lance Wang <lance.lmwang@gmail.com>, Anton Khirnov <anton@khirnov.net>, and Michael Niedermayer <michael@niedermayer.cc> for providing review/feedback. Signed-off-by: Devin Heitmueller <dheitmueller@ltnglobal.com> Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* avfilter/vsrc_testsrc: mark zoneplate as full rangePaul B Mahol2023-05-101-0/+1
|
* avfilter/af_pan: free input frame once unneededPaul B Mahol2023-05-101-2/+1
|
* avfilter/af_join: fix leak on errorPaul B Mahol2023-05-101-1/+1
|
* avfilter/af_pan: fix leaks on error casePaul B Mahol2023-05-101-1/+4
|
* avfilter/src_avsynctest: add support for commandsPaul B Mahol2023-05-101-6/+11
|
* avfilter/src_avsynctest: fix beep amplitude scalingPaul B Mahol2023-05-101-3/+4
|
* avfilter/vf_varblur: add float format supportPaul B Mahol2023-05-091-17/+28
|
* avfilter/vf_estdif: simplify finding minimum scorePaul B Mahol2023-05-091-17/+13
|
* avfilter/vf_estdif: remove float usagePaul B Mahol2023-05-091-10/+10
|
* avfilter/vf_estdif: fix recently introduced regressionPaul B Mahol2023-05-091-1/+1
|
* avfilter: add zoneplate video test sourcePaul B Mahol2023-05-094-2/+201
|
* avfilter/asrc_anoisesrc: improve velvet noise outputPaul B Mahol2023-05-091-10/+15
|
* avfilter/vf_feedback: fix artifacts with subsampled chromaPaul B Mahol2023-05-091-4/+4
|
* avfilter/vf_mpdecimate: Add option to keep the first N similar frames before ↵Thilo Borgmann2023-05-082-3/+18
| | | | | | dropping This allows for decimating large similar portions of a video while preserving small ones.
* avfilter/vf_morpho: add slice threading supportPaul B Mahol2023-05-081-99/+158
|
* avfilter/vf_morpho: remove unused function's argumentPaul B Mahol2023-05-081-3/+3
|
* avfilter/vf_morpho: move structure processing in separate loopPaul B Mahol2023-05-081-17/+22
|