Commit Graph

11646 Commits

Author SHA1 Message Date
James Almer
a49188297f avfilter/af_bs2b: remove unecessary initializer from layouts
Fixes compilation with msvc.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-05 12:36:04 -03:00
James Almer
d98de855a8 avfilter/af_asr: remove unecessary initializer from layouts
Fixes compilation with msvc.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-05 12:36:04 -03:00
James Almer
ef6a5c98fb avfilter/af_apulsator: remove unecessary initializer from layouts
Fixes compilation with msvc.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-09-05 12:35:58 -03:00
Anton Khirnov
f0f1cf2697 lavfi/af_channelmap: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
3045949945 lavfi/af_bs2b: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
96a8a6139e lavfi/af_biquads: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
2e899d3bdf lavfi/af_asr: convert to query_func2()
Also, simplify code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
cf43a02c2c lavfi/af_asetrate: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
b18f7d7e2d lavfi/af_arnndn: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
dfaa339167 lavfi/af_arls: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
814c961a78 lavfi/af_aresample: convert to query_func2() 2024-09-05 10:03:33 +02:00
Anton Khirnov
c24e0df30b lavfi/af_apulsator: convert to query_func2()
Also, simplify code, and drop a redundant call that also happens
implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
6f2adb7967 lavfi/af_anlms: convert to query_func2()
Also, drop redundant calls that also happen implicitly in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
e0ab1fcc8c lavfi/af_anequalizer: convert to query_func2()
Also, simplify code and drop redundant calls that also happen implicitly
in generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
6e4affc407 lavfi/af_aiir: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
f143723095 lavfi/af_agate: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-05 10:03:33 +02:00
Anton Khirnov
c3fb696311 lavfi/af_aformat: convert to query_func2() 2024-09-02 11:55:22 +02:00
Anton Khirnov
8bc419aeb4 lavfi/af_aformat: change options from strings to arrays
Allows to drop custom parsing code, and also the assumption that
query_formats() is not called more than once.
2024-09-02 11:55:22 +02:00
Anton Khirnov
dc488d832c lavfi/af_afir: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-02 11:55:22 +02:00
Anton Khirnov
584be51334 lavfi/af_adynamicequalizer: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-02 11:55:22 +02:00
Anton Khirnov
079834e645 lavfi/af_acrossover: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-02 11:55:22 +02:00
Anton Khirnov
edf53e15b4 lavfi/af_aap: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-02 11:55:22 +02:00
Anton Khirnov
0f004a0416 lavfi/aeval: convert to query_func2()
Drop redundant ff_set_common_all_channel_counts() /
ff_set_common_all_samplerates() calls, since those happen implicitly in
generic code.
2024-09-02 11:55:22 +02:00
Anton Khirnov
eddffbedb3 lavfi: add query_func2()
It differs from query_func() in accepting arrays of input/output format
configurations to be filled as callback parameters. This allows to mark
the filter context as const, ensuring it is not modified by this
function, as it is not supposed to have any side effects beyond
returning the supported formats.
2024-09-02 11:55:20 +02:00
Gyan Doshi
b5daaa1503 avfilter/formats: correct error message
The check is for color space, not range.
2024-09-01 10:10:16 +05:30
Zhao Zhili
2e370805da avfilter/unsharp: Merge header into .c
It was shared with opencl implementation.

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-08-26 16:58:25 +08:00
Gnattu OC
30f090b4f8 avfilter: inherit input color range for videotoolbox filters
The color range should be set to match the input when creating
the VideoToolbox context. Otherwise, the new context will default
to limited range, creates inconsistencies with full range inputs.

Signed-off-by: Gnattu OC <gnattuoc@me.com>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2024-08-24 00:24:06 +08:00
Anton Khirnov
52471b56ba lavfi: make FFFilterContext private to generic code
Nothing in it needs to be visible to filters.
2024-08-19 21:48:11 +02:00
Anton Khirnov
f19c988911 lavfi/filters: move functions only used by generic code to avfilter_internal.h 2024-08-19 21:48:11 +02:00
Anton Khirnov
6d75d44d90 lavfi: drop internal.h
All that remains in it are things that belong in avfilter_internal.h.

Move them there and remove internal.h
2024-08-19 21:48:04 +02:00
Anton Khirnov
90e4af65e1 lavfi/f_streamselect: remove a no-op ff_filter_config_links() call
It does not do anything when the links are already configured.
2024-08-19 21:45:25 +02:00
Anton Khirnov
a2314308f2 lavfi/inernal: move ff_fmt_is_regular_yuv() declaration to video.h 2024-08-19 21:45:25 +02:00
Anton Khirnov
a83a30e899 lavfi: move ff_parse_{sample_rate,channel_layout}() to audio.[ch]
That is a more appropriate place for those functions.
2024-08-19 21:45:25 +02:00
Anton Khirnov
f4bfdf7893 lavfi: move ff_parse_pixel_format() to vf_format, its only caller
The only thing this function does beyond calling av_get_pix_fmt() is
falling back onto parsing the argument as a number. No other filters
should need to do this.
2024-08-19 21:45:25 +02:00
Anton Khirnov
1afe42852b lavfi/internal: move functions used by filters to filters.h
internal.h currently mixes interfaces intended to be used by filters
with those that should be limited to generic filter- or graph-level
code.
2024-08-19 21:45:25 +02:00
James Almer
211c88b9d5 avfilter/f_zmq: fix graph argument
Fixes regression since d566a37003.

Signed-off-by: James Almer <jamrial@gmail.com>
2024-08-16 09:53:22 -03:00
Niklas Haas
f1071dc634 avfilter/vf_zscale: remove unused fields 2024-08-16 11:43:37 +02:00
Niklas Haas
c8bc6fabd7 avfilter/vf_scale: fix 4:1:0 interlaced chroma pos
The current logic hard-coded a check for v_sub == 1. We can extend this
logic slightly to cover the case of interlaced 4:1:0 (which has v_sub ==
2).

Here is a diagram explaining this scenario (with center-siting):

a   a   a   a   a   a   a   a

b   b   b   b   b   b   b   b
      X               X
a   a   a   a   a   a   a   a

b   b   b   b   b   b   b   b

a   a   a   a   a   a   a   a

b   b   b   b   b   b   b   b
      Y               Y
a   a   a   a   a   a   a   a

b   b   b   b   b   b   b   b

a = even luma rows
b = odd luma rows
X = even chroma sample
Y = odd chroma sample

In progressive mode, the chroma samples sit at (384, 384) respectively.

Relative to the 8x4 grid of even luma samples (a), the X sample sits at:
  h_chr_pos = 384
  v_chr_pos = 192

Relative to the 8x4 grid of odd luma samples (b), the Y sample sits at:
  h_chr_pos = 384
  v_chr_pos = 576

The new code calculates the correct values in all circumstances.
2024-08-16 11:43:37 +02:00
Niklas Haas
15a67c0947 avfilter/vf_scale: add in/out_chroma_loc
Currently, this just functions as a more principled and user-friendly
replacement for the (undocumented and hard to use) *_chr_pos fields.

However, the goal is to automatically infer these values from the input
frames' chroma location, and deprecate the manual use of *_chr_pos
altogether. (Indeed, my plans for an swscale replacement will most
likely also end up limiting the set of legal chroma locations to those
permissible by AVFrame properties)
2024-08-16 11:43:37 +02:00
Niklas Haas
18b9687308 avfilter/swscale: always fix interlaced chroma location
The current logic only fixes it when the user does not explicitly
specify the chroma location. However, this does not make a lot of sense.
Since there is no way to specify this property per-field, it effectively
*prevents* the user from being able to correctly scale interlaced frames
with top-aligned chroma.

It makes more sense to consider the user setting in the progressive case
only, and automatically adapt it to the correct interlaced field
positions, following the details of the MPEG specification.
2024-08-16 11:43:37 +02:00
Niklas Haas
5d964df5da avfilter/vf_setparams: remove unnecessary options bounds
AV_OPT_TYPE_CONST does not use min/max, we can leave them as 0.
2024-08-16 11:43:37 +02:00
Niklas Haas
201f1cba15 avfilter/vf_setparams: allow setting chroma location
Shockingly, there isn't currently _any_ filter for overriding this.
2024-08-16 11:43:37 +02:00
Lynne
a797317ab1
vulkan_filter: don't require the storage flag for the base frames format
We check for whether subformats support storage immediately below.
Those are the ones we require storage for, rather than the base format
itself.

This permits better reuse of AVHWFrame contexts.

The patch also removes an always-false check in the subformat check.
2024-08-16 01:22:17 +02:00
Lynne
b165f144e7
vulkan_filter: allow reusing frame contexts with DRM tiling
There's no reason not to permit this, particularly if a user wants
to manipulate images which will be exported back to DRM.
2024-08-16 01:22:17 +02:00
Lynne
18d964fc2c
vulkan: enable encoding of images if video_maintenance1 is enabled
Vulkan encoding was designed in a very... consolidated way.
You had to know the exact codec and profile that the image was going to
eventually be encoded as at... image creation time. Unfortunately, as good
as our code is, glimpsing into the exact future isn't what its capable of.

video_maintenance1 removed that requirement, which only then made encoding
images practically possible.
2024-08-16 01:22:16 +02:00
Anton Khirnov
d566a37003 lavfi: move AVFilterLink.graph to FilterLink 2024-08-15 19:34:27 +02:00
Anton Khirnov
fb3efef1db lavfi: move AVFilterLink.frame_wanted_out to FilterLinkInternal 2024-08-15 19:34:27 +02:00
Anton Khirnov
42cbf66fff lavfi: move AVFilterLink.{frame,sample}_count_{in,out} to FilterLink 2024-08-15 19:34:27 +02:00
Anton Khirnov
a23d565ea7 lavfi: move AVFilterLink.frame_rate to FilterLink
Co-developed-by: James Almer <jamrial@gmail.com>
2024-08-15 19:34:27 +02:00
Anton Khirnov
d6318a244d lavfi: move AVFilterLink.current_pts(_us) to FilterLink 2024-08-15 19:34:27 +02:00