Commit Graph

11985 Commits

Author SHA1 Message Date
Niklas Haas
2d9435d76f avfilter/f_ebur128: simplify sample cache array
We don't need an X sample cache anymore, and we also can simplify the
access macro slightly.
2025-06-21 17:19:50 +02:00
Niklas Haas
c5f3033a86 avfilter/f_ebur128: use transformed direct form II
Instead of direct form I. See af_biquads.c for math. Also eliminate
an unnecessary indirection.
2025-06-21 17:19:50 +02:00
Niklas Haas
7039a37e35 avfilter/vf_libplacebo: add reset_sar option
This was requested by users of `vf_libplacebo`, to mirror the existing
option on the other `vf_scale_*` family of filters. While we have
`vf_normalize`, it was not as useful in the event that the content
stretching was actually desired.

Bridges an important usability gap between `vf_scale` and `vf_libplacebo`
that made mixing and matching the filters needlessly difficult.
2025-06-20 15:13:25 +02:00
Niklas Haas
c0698840c4 avfilter/vf_libplacebo: correctly update SAR to reflect scaled result
This aligns the behavior of vf_libplacebo with other filters in the
vf_scale family, that forward any change in the SAR as a result of
changing the output resolution to the output frame / link, and updates
the ff_scale_adjust_dimensions() call to continue working as intended.

The new behavior reflects the documentation of vf_libplacebo, which
described this behavior despite that not being the way the filter worked
up to this point.

As an aside, also fixes a bug where the AVFrame SAR was inconsistent
with the AVFilterLink SAR when the s->nb_inputs > 1 condition was met.
2025-06-20 15:13:25 +02:00
Niklas Haas
f883b7cf93 avfilter/vf_libplacebo: list AV_PIX_FMT_VULKAN first
Under normal circumstances, this change does not affect anything, as the vast
majority of filters either support only vulkan or only software formats.
However, when a filter supports both (such as vf_libplacebo itself, and
possibly vf_scale in the future), linking together two such filter instances
without an explicit format will default matching the input format, resulting
in a redundant round trip through host RAM.

This change bumps up AV_PIX_FMT_VULKAN to the first entry in the format list,
ensuring that it gets preferred whenever possible.
2025-06-20 15:13:25 +02:00
Andreas Rheinhardt
730ffc5d35 avfilter/vf_overlay: Hoist calculations out of loop
Also use const where appropriate.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Andreas Rheinhardt
a4b3474de6 avfilter/vf_overlay: Keep dst_step in bytes
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Andreas Rheinhardt
48427b012d avfilter/vf_overlay: Use correct alpha when > 8 bits
When chroma subsampling is in use, the filter averages
the corresponding (non subsampled) alpha values to get
the actual alpha value. When vertical subsampling is
in use, the next line is accessed via a[src->linesize[3]],
yet a is an uint16_t* for >8 bit formats and linesize
is always in bytes, so that this actually uses the second
line below the current one. This is fixed in this commit.

No FATE test needed updates, because the filter-overlay-yuv420p10
and filter-overlay-yuv444p10 tests use a yuv420p test file
that has constant opacity after conversion to yuva.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Andreas Rheinhardt
b3edc84872 avfilter/vf_overlay: Pass variable type directly in macro
Improves readability.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Andreas Rheinhardt
ca51a0fef7 avfilter/vf_overlay: Avoid converting stride to uint16_t and back
Just keep the pointers for the beginning of a line uint8_t*
and use uint16_t* to do the actual processing.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Andreas Rheinhardt
eeb82a4406 avfilter/vf_overlay: Don't perform UB pointer arithmetic
This happens when the pixel format of the output does not
have an alpha channel. It leads to FATE failures with
the ffmpeg-filter_colorkey, filter-overlay-dvdsub-2397
filter-overlay,
filter-overlay_{gbrp_gbrap,nv12,nv21,yuv420,yuv420_yuva420,
yuv420p10,yuv422_yuva422,yuv422p10,yuv444_yuva444,yuv444p10}
and sub2video tests when using Clang UBSan.

Fix this by only performing the pointer arithmetic when
it is going to be used. This can be checked via variables
that compile-time constants due to inlining, so that the
checks are free. Given that the pointer is potentially
used as a function argument, the compiler could elide
the calculation, but not it can. The size of .text decreased
by 1632B with GCC 14 and by 1392B with Clang 19 (both -O3).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-17 00:33:09 +02:00
Zhao Zhili
93987c03ec avfilter/vf_libplacebo: Use new vulkan queue API
Fixes deprecation warning.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-06-16 20:46:10 +02:00
Niklas Haas
04ceabe2ba avfilter/vf_scale: set correct AVFrame SAR if reset_sar=1
This otherwise generates an inconsistency between the frame state and the
link state, since the link state is set to 1:1 explicitly when `reset_sar`
is enabled, but this line of code unconditionally overwrote the output
frame SAR with the value that would be computed in the absence of `reset_sar`.

cf. vf_scale_cuda, which does this correctly
2025-06-16 20:44:52 +02:00
Clément Péron
90424a4475 various: fix typos
usefull -> useful
seperately -> separately
reciever -> receiver

Signed-off-by: Clément Péron <peron.clem@gmail.com>
2025-06-15 21:00:38 +05:30
Ethan Halsall
3f1f9db7f5 avfilter/vf_mcdeint: add yuv444p support to mcdeint
Signed-off-by: Ethan Halsall <ethanhalsall11@augustana.edu>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-06-14 23:41:38 +02:00
Marvin Scholz
089e69dfe4 lavfi/f_sendcmd: clear Command on alloc failure
If the command array failed to allocate, the current parsed
Command has to be cleared, else memory allocated for it
would be leaked.

Fix CID 1638635
2025-06-11 19:26:22 +02:00
Marvin Scholz
2c3ac6e0fa lavfi/f_sendcmd: add helper to clear Command
Makes clearing the Command more explicit and
consistent.
2025-06-11 19:26:22 +02:00
Niklas Haas
6ad95be306 avfilter/vf_blackdetect_vulkan: fix black region reporting
The old logic failed to take into account files that ended on ablack
region. The new logic matches the vf_blackdetect behavior.
2025-06-04 12:24:04 +02:00
Andreas Rheinhardt
0435cd5a62 avfilter/x86/vf_spp: Remove permutation-specific code
The MMX requantize functions have the MMX permutation
(i.e. FF_IDCT_PERM_SIMPLE) hardcoded and therefore
check for the used permutation (namely via a CRC).
Yet this is very ugly and could even lead to misdetection;
furthermore, since d7246ea9f2
the permutation used here is de-facto and since
bfb28b5ce8 definitely
impossible on x64, making this code dead on x64.
So remove it.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-05-31 01:31:09 +02:00
Niklas Haas
9568e40aeb avutil/vf_scdet_vulkan: add new filter
Carbon copy of vf_scdet.

Signed-off-by: Niklas Haas <git@haasn.dev>
Sponsored-by: nxtedition
2025-05-28 12:21:27 +02:00
Niklas Haas
0894cfb168 avfilter/blackdetect_vulkan: add hw accelerated blackdetect filter
Like vf_blackdetect but better, faster, stronger, harder.

Signed-off-by: Niklas Haas <git@haasn.dev>
Sponsored-by: nxtedition
2025-05-28 12:21:27 +02:00
Niklas Haas
7e783fac5b avfilter/vf_blackdetect: add alpha option
Check the alpha plane for (almost) transparent frames, instead of checking
the luma channel for almost black frames.

Signed-off-by: Niklas Haas <git@haasn.dev>
Sponsored-by: nxtedition
2025-05-28 12:21:27 +02:00
Niklas Haas
02f45a7f3f avfilter/vf_gblur_vulkan: omit unnecessary buffer usage flag
Implied internally now when needed.
2025-05-28 12:21:27 +02:00
Niklas Haas
559317cc13 avfilter/vf_libplacebo: add shader_cache option
Useful to speed up shader compilation. May significantly lower startup
times, in particular with large or complex shaders.

Sponsored-by: nxtedition
2025-05-23 14:05:16 +02:00
Niklas Haas
4f623b4c59 avfilter/vf_libplacebo: implement rotation option
Flipping can already be accomplished by setting the crop_w/h expressions to
their negative values, so together these options can implement any of the
common frame orientations.
2025-05-23 14:02:45 +02:00
Paul B Mahol
1b3f4842c1 avfilter/avfiltergraph: fix regression in picking channel layout
Signed-off-by: James Almer <jamrial@gmail.com>
2025-05-22 19:38:11 -03:00
Niklas Haas
4099d53759 avfilter/vf_interlace_vulkan: fix FPS and PTS calculation
ol->frame_rate is 0/0, so we need to calcalute the correct value based on
the il->frame_rate instead. Also adjust the time base, PTS and frame_duration
values accordingly. (Logic taken from vf_tinterlace.c)
2025-05-21 16:10:55 +02:00
softworkz
e2f39671ae avfilter/avfilter: Add avfilter_link_get_hw_frames_ctx()
Signed-off-by: softworkz <softworkz@hotmail.com>
2025-05-15 23:04:44 +02:00
Michael Niedermayer
8c920c4c39 Remove libpostproc
Libpostproc will be available as source plugin at
https://github.com/michaelni/FFmpeg/tree/sourceplugin-libpostproc
OR
https://github.com/michaelni/libpostproc

whatever turns out more convenient to maintain

For the upcoming 8.0 release, libpostproc will be included, so as not to
cause delays or inconveniences

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-05-07 15:35:47 +02:00
Tobias Rapp
0f751d3836 avfilter/vf_setparams: Fix chroma_location being cleared
Fix chroma_location being cleared by setrange and setfield filters.
This was forgotten in 201f1cba15.

Signed-off-by: Tobias Rapp <t.rapp@noa-archive.com>
2025-05-07 10:52:44 +02:00
Marvin Scholz
0ea83e65aa avfilter/drawutils: narrow variable scopes 2025-04-22 20:59:16 +02:00
Marvin Scholz
b781f1836e tests: lavfi/drawutils: use av_err2str
There is no need to explicitly specify the buffer, as it
is only ever passed to printf, so av_err2str can be used.
2025-04-22 20:45:57 +02:00
Marvin Scholz
d7d103c34c lavfi/vf_xpsnr: use av_err2str
There is no need to explicitly specify the buffer, as it
is only ever passed to av_log, so av_err2str can be used.
2025-04-22 20:45:57 +02:00
Nicolas George
0040d7e608 lavfi/src_movie: set pkt_timebase
Fix “Could not update timestamps for skipped samples” warning
and associated misfeature.
2025-04-15 15:49:38 +02:00
Niklas Haas
46762c8b82 avfilter/vf_libplacebo: don't explode on zero FPS information
While technically not specifiad as valid by the AVFilterLink documentation,
it is currently possible to get an FPS of zero from various sources inside
libavfilter (notably vf_buffersrc).

Avoid a division by zero and resulting infinity when this happens.
2025-04-03 17:17:42 +02:00
Andreas Rheinhardt
265e0d3e24 avfilter/palette: Remove unused ff_srgb_u8_to_linear_int()
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-04-03 06:04:57 +02:00
James Almer
cd1ec359c4 avfilter/vsrc_testsrc: also fill alpha planes with a test pattern in {rgb,yuv}testsrc
And add support for more formats.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-04-02 09:32:08 -03:00
Martin Storsjö
19a4719f3b libavfilter: metal: Fix the version condition for iOS
MTLDevice supportsFamily is available since iOS 13, not 11, see
https://developer.apple.com/documentation/metal/mtldevice/supportsfamily(_:)?language=objc.

Signed-off-by: Martin Storsjö <martin@martin.st>
2025-04-01 18:28:26 +03:00
Danil Iashchenko
1015ea2ba1 doc/filters: add thumbnail_cuda entry
Also update thumbnail_cuda filter description.
2025-03-31 18:48:01 +05:30
James Almer
b338d1b35b libs: bump major version for all libraries
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:44:34 -03:00
James Almer
1061689ad8 avutil: remove deprecated FF_API_FRAME_KEY
Deprecated since 2023-05-04.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:33:08 -03:00
James Almer
8af3331883 avutil: remove deprecated FF_API_INTERLACED_FRAME
Deprecated since 2023-05-04.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:33:08 -03:00
James Almer
ebd6d07ab9 avutil: remove deprecated FF_API_FRAME_PKT
Deprecated since 2023-03-20.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:33:08 -03:00
James Almer
a9d9f46e9a avfilter/version_major: postpone some deprecations until the next bump
They are too recent.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:33:07 -03:00
James Almer
379632bb97 avfilter: remove deprecated FF_API_LINK_PUBLIC
Deprecated since 2024-03-08.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-28 14:33:07 -03:00
Gyan Doshi
6fb1bbd73c avfilter/scale: remove duplicate block
Added in bb80445813
2025-03-24 16:17:13 +05:30
Andreas Rheinhardt
c94143350f avutil/libm: Only include intfloat.h when needed
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-03-22 03:35:28 +01:00
James Almer
0ce405afb8 avfilter/vf_zscale: add support for grayscale formats
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-20 14:02:29 -03:00
James Almer
c3522716ff avfilter/vf_zscale: add support for half precision float RGB formats
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-20 14:02:29 -03:00
James Almer
52eb0e18db avfilter/vsrc_testsrc: use aligned macros for writing
Signed-off-by: James Almer <jamrial@gmail.com>
2025-03-13 15:00:10 -03:00