FFmpeg/libswscale
Niklas Haas 2a091d4f2e swscale: introduce new, dynamic scaling API
As part of a larger, ongoing effort to modernize and partially rewrite
libswscale, it was decided and generally agreed upon to introduce a new
public API for libswscale. This API is designed to be less stateful, more
explicitly defined, and considerably easier to use than the existing one.

Most of the API work has been already accomplished in the previous commits,
this commit merely introduces the ability to use sws_scale_frame()
dynamically, without prior sws_init_context() calls. Instead, the new API
takes frame properties from the frames themselves, and the implementation is
based on the new SwsGraph API, which we simply reinitialize as needed.

This high-level wrapper also recreates the logic that used to live inside
vf_scale for scaling interlaced frames, enabling it to be reused more easily
by end users.

Finally, this function is designed to simply copy refs directly when nothing
needs to be done, substantially improving throughput of the noop fast path.

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
2024-11-25 11:03:50 +01:00
..
aarch64 swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
arm swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
loongarch swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
ppc swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
riscv swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
tests swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
x86 swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
alphablend.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
bayer_template.c swscale/internal: constify SwsFunc 2024-10-07 19:51:34 +02:00
gamma.c swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
graph.c swscale/graph: add new high-level scaler dispatch mechanism 2024-11-25 11:02:16 +01:00
graph.h swscale/graph: add new high-level scaler dispatch mechanism 2024-11-25 11:02:16 +01:00
half2float.c swscale/input: add rgbaf16 input support 2022-08-19 22:09:36 +02:00
hscale.c swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
hscale_fast_bilinear.c swscale: rename SwsContext to SwsInternal 2024-10-24 22:50:00 +02:00
input.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
libswscale.v build: Change structure of the linker version script templates 2016-05-29 16:43:11 +02:00
log2_tab.c lsws: duplicate ff_log2_tab 2014-08-12 20:52:21 +02:00
Makefile swscale/graph: add new high-level scaler dispatch mechanism 2024-11-25 11:02:16 +01:00
options.c swscale: eliminate redundant SwsInternal accesses 2024-11-25 10:59:52 +01:00
output.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
rgb2rgb.c swscale/swscale_unscaled: add unscaled x2rgb10le to packed RGB 2024-11-06 17:34:32 -03:00
rgb2rgb.h swscale/swscale_unscaled: add unscaled x2rgb10le to packed RGB 2024-11-06 17:34:32 -03:00
rgb2rgb_template.c swscale/swscale_unscaled: add unscaled conversion for AYUV/VUYA/UYVA 2024-11-02 15:01:31 -03:00
slice.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
swscale.c swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
swscale.h swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
swscale_internal.h swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
swscale_unscaled.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
swscaleres.rc
utils.c swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
utils.h swscale: add new frame testing API 2024-10-23 23:06:16 +02:00
version.c lib*/version: Use static_assert for static asserts 2024-03-31 00:08:42 +01:00
version.h swscale: introduce new, dynamic scaling API 2024-11-25 11:03:50 +01:00
version_major.h libs: bump major version for all libraries 2024-03-07 11:29:43 -03:00
vscale.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00
yuv2rgb.c swscale/internal: group user-facing options together 2024-11-21 12:49:56 +01:00