1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-11-23 21:54:53 +02:00
Commit Graph

6011 Commits

Author SHA1 Message Date
Vittorio Palmisano
13ce36fef9 libavfilter: Whisper audio filter
It adds a new audio filter for running audio transcriptions with the whisper model.
Documentation and examples are included into the patch.
2025-08-08 21:59:56 +02:00
Lynne
6f97c9384b configure: enable Vulkan VP9 decoding and AV1 encoding if the headers support it 2025-08-08 15:07:33 +00:00
Jacob Lifshay
14a95ab471 lavf: add mcc muxer
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Jacob Lifshay
ceb9688fee lavf/mccdec: clean up, add support for mcc 2.0 features, and add SMPTE_436M_ANC output stream
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Jacob Lifshay
a18d5a766d lavf/mxfenc: support EIA-608/708 streams by using eia608_to_smpte436m bsf
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Jacob Lifshay
0271d0423a lavc: add eia608_to_smpte436m bitstream filter
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Jacob Lifshay
aa5b9db7bd lavc: add smpte436m_to_eia608 bitstream filter
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Jacob Lifshay
1c85a3832a lavc: add API for manipulating SMPTE-436M VBI/ANC data
Signed-off-by: Jacob Lifshay <programmerjake@gmail.com>
2025-08-08 03:04:42 -07:00
Lynne
75aeffb1c6 lavc: add a ProRes RAW Vulkan hwaccel
This commit adds a ProRes RAW hardware implementation written in Vulkan.
Both version 0 and version 1 streams are supported.
The implementation is highly parallelized, with 512 invocations dispatched
per every tile, with generally 4k tiles on a 5.8k stream.

Thanks to unlord for the 8-point iDCT.

Benchmark for a generic 5.8k RAW HQ file:
6900XT: 63fps
7900XTX: 84fps
6000 Ada: 120fps
Intel: 9fps
2025-08-08 18:29:41 +09:00
Lynne
589b3ed943 lavc: add a ProRes RAW decoder 2025-08-08 18:29:41 +09:00
Lynne
b2928971e8 lavc: add an av1_vulkan encoder
This commit adds a Vulkan AV1 encoder, using the native acceleration API.
2025-08-08 18:29:40 +09:00
Lynne
2caf23e7c4 vp9: add Vulkan VP9 hwaccel 2025-08-08 18:29:40 +09:00
Lynne
c0bf1382a7 lavc/vp9dec: use cbs_vp9 to parse the frame header 2025-08-08 18:29:39 +09:00
Zhao Zhili
7f150dc4b7 configure: Fix build with MSVC
The copyright message of cl.exe doesn't always begin with Microsoft,
e.g., when local is Chinese.

Fix regression since 53da090ab7.
2025-08-07 21:16:40 +00:00
Sean McGovern
10f1ff7dc2 configure: add POWER9 & 10 cpus
IBM introduced POWER9 in 2017 and likewise POWER10 in 2020.
2025-08-06 21:53:25 +00:00
Jiawei
1464930696 configure: don't disable '-ftree-vectorize' on GCC >= 13 on major architectures
This changes configure to stop disabling -ftree-vectorize on
GCC versions 13 and newer, on major architectures.

Background:
- Original `-fno-tree-vectorize` was added in 2009 in commit
  973859f523 to avoid compiler errors.
- Re-enabled in 2016 in commit cb8646af24 but caused failures due
  to inline CABAC assembly issues and was disabled again in
  fd6dbc5385.
- Commit 182663a58a in 2023 fixed the inline CABAC assembly issues.
- Recent versions of GCC, in particular 13 and newer, seem to
  generally work reliably with respect to vectorization, although bugs
  have been observed on Loongarch.

Cautiously allow the GCC default of having vectorization enabled,
on major architectures where we expect to see enough testing. If
further issues are observed, they should be reported and noted here in
configure, so the workarounds can be scoped and version limited.
2025-08-06 11:05:05 +03:00
Kacper Michajłow
bc012ac918 configure: treat unrecognized flags as errors on MSVC
This is important for feature checking to work correctly.

It can happen that an unrecognized flag passes the compile test with
only a warning, while failing in preprocessor-only check with an error.
This causes all test_cpp calls to fail and silently produces arguably
broken MSVC builds. Also, all check_* functions don't work as expected,
because they assume the check passed, even though there was a warning.

Additionally, this brings the behavior in line with GCC/Clang based
builds, failing early on unrecognized flags instead of silently
continuing with warnings in the log.

The /options:strict option is available starting in Visual Studio 2022
version 17.0. Because of that, we cannot use check_cflags alone, as it
would add this flag for older MSVC versions and produce warnings. So, we
need to manually perform a version check. A bit of a chicken and egg
problem.

Perform the version check before adding extra flags from the user to
ensure we don't silently fail the preprocessor check due to invalid
flags on older MSVC versions. Note that behavior differs depending on
whether we are compiling or only preprocessing.

This fixes silent different between handling:

`cl.exe -P foo c.c`
    c1: fatal error C1083: Cannot open source file: 'foo': No such file
    or directory

`cl.exe -c foo c.c`
    cl : Command line warning D9024 : unrecognized source file type
    'foo', object file assumed

Where -P fails, while -c throws warnings only. Of course `foo` is
completely bogus here, but depends on the flags or configuration this
may be unsupported argument. Or even some converted path from MSYS when
run inside it. The objective is to always error out instead of silently
hiding this.

Use check_cflags even after the _MSC_FULL_VER check, for non-MSVC
compilers. For example Clang-CL impersonate MSVC, but does not support
-options:strict flag currently.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-08-05 18:31:05 +02:00
Kacper Michajłow
50408c55ac configure: filter link flags separately for MSVC
This avoids adding flags that cl.exe doesn't understand.

Fixes cases where external libraries pkg-config file adds `-L` to the
cflags, strip it before passing to cl.exe.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-08-05 18:31:04 +02:00
Kacper Michajłow
5b3d6c0460 configure: don't use dangling temp file state
There was implicit assumption that the $TMPC file is empty when doing
--cpu=host checks. This breaks if any check is done before that.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-08-05 18:31:04 +02:00
Timo Rothenpieler
262d41c804 all: fix typos found by codespell 2025-08-03 13:48:47 +02:00
Dash Santosh
96821211c2 avfilter: add scale_d3d11 filter
This commit introduces a new hardware-accelerated video filter, scale_d3d11,
which performs scaling and format conversion using Direct3D 11. The filter enables
efficient GPU-based scaling and pixel format conversion (p010 to nv12), reducing
CPU overhead and latency in video pipelines.
2025-07-31 21:07:51 +00:00
Dariusz Frankiewicz
9d8469e431 avcodec/apv: align APV color format support with latest liboapv version
Signed-off-by: Dariusz Frankiewicz <d.frankiewic@samsung.com>
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2025-07-31 20:24:40 +02:00
Kacper Michajłow
c64f6812eb configure: suppress Wmicrosoft-enum-forward-reference
Clang-CL complains about fwd references of enums, but we do use it
everywhere, so ignore this.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-22 19:56:34 +02:00
Kacper Michajłow
bf2bb119a7 configure: remove ossfuzz sanitizer flags
In OSS-Fuzz build environment flags are handled by CFLAGS and LDFLAGS.
In local build use --toolchain=clang-fuzz-asan-ubsan or similar
combination depending on requested sanitizers.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-19 00:36:25 +02:00
Kacper Michajłow
e1665fd71d configure: add -fuzz support to --toolchain
libFuzzer is linked only for fuzzing targets.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-19 00:36:19 +02:00
Kacper Michajłow
c6ce05cec3 configure: allow -ubsan in toolchain
It's is commonly called UBSAN after all.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-19 00:32:05 +02:00
Kacper Michajłow
1bed76cdcd configure: add -fno-omit-frame-pointer when sanitizers are used
All sanitizers give better reports with frame pointers. And skip adding
-fomit-frame-pointer.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-19 00:32:05 +02:00
Kacper Michajłow
85ae10575b configure: allow multiple sanitizers in --toolchain
For example this allows: --toolchain=clang-asan-usan.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-19 00:32:05 +02:00
Zhao Zhili
fa0080bf2e avcodec/ohenc: Add h264/hevc OpenHarmony encoders 2025-07-18 14:45:13 +08:00
Zhao Zhili
e7f44f8cd8 avcodec/ohdec: Add h264/hevc OpenHarmony decoders 2025-07-18 14:45:13 +08:00
Zhao Zhili
fbda5ffb95 avutil/hwcontext: Add ohcodec device and pixel format
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
2025-07-18 14:44:39 +08:00
Kacper Michajłow
2869cce163 configure: add -Wl when linker is called indirectly
It's possible to call linker indirectly through driver like Clang. In
which cases linker args has to be prefixed with -Wl.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
2025-07-17 00:28:21 +02:00
James Almer
307983b292 avformat/tls_schannel: add check for Windows 10 only types and defines
Old Mingw-w64 releases provided by some distros seemingly don't have them, so
check for them and disable the dtls protocol if unavailable.

Signed-off-by: James Almer <jamrial@gmail.com>
2025-07-15 10:24:08 -03:00
Timo Rothenpieler
90fa9636ef avformat/tls_schannel: add DTLS support 2025-07-11 17:49:57 +02:00
Marvin Scholz
f256487cd8 configure: require at least OpenSSL 1.1.0
Given that OPENSSL_init_ssl was introduced in 1.1.0 means we can rely on
that to ensure we have at least 1.1.0.
2025-07-07 01:52:46 +02:00
Jorge Estrada
ad0a44028d avfilter: add pad_cuda filter
This patch adds the pad_cuda video filter. A filter similar to the existing pad filter but accelerated by CUDA.

The filter shares the same options as the software pad filter.

Example usage:
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i input.mp4 -vf "pad_cuda=w=iw+100:h=ih+100:x=-1:y=-1:color=red" out.mp4

Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2025-07-04 01:32:27 +02:00
nyanmisaka
b2c0d37be5 avcodec/amfdec: Add VP9 AMF decoder 2025-06-26 13:48:15 +02:00
Peter Ross
b49c4d1034 configure: h264_vulkan_encoder depends on atsc_a53 2025-06-22 09:15:56 +10:00
Peter Ross
08943c82c6 configure: cbs_apv depends on cbs 2025-06-22 09:15:56 +10:00
Andreas Rheinhardt
6f84160b82 configure: Relax snowenc->mpegvideoenc dependency
It only needs mpegvideoencdsp, motion_est.o and ratecontrol.o.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:52 +02:00
Andreas Rheinhardt
da22ee281e configure: Relax diracdec->mpegvideoenc dependency
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:52 +02:00
Andreas Rheinhardt
8764b21048 configure: Relax svq1enc->mpegvideoenc dependency
It only needs mpegvideoencdsp, motion_est.o and
some H.263 specific parts.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:52 +02:00
Andreas Rheinhardt
9b409ea1e6 configure: Factor mpegvideoencdsp out of mpegvideoenc
This will allow to relax the dependency on mpegvideoenc
for several codecs.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-21 22:08:52 +02:00
Alexander Strasser
204d03c803 configure: Fix a regression when probing link.exe
The version ident is printed on stdout for link.exe and redirecting
stdout to /dev/null will cause the output of link.exe to be paged.

This caused configure to hang for some configurations and by
extension some FATE clients. You might want to check if you run
affected configurations automated in FATE clients or similar setups.

Fixes: 45a30e0361
Signed-off-by: Martin Storsjö <martin@martin.st>
2025-06-21 22:37:44 +03:00
Martin Storsjö
45a30e0361 configure: Make MSVC version grabbing more robust
When running plain "cl", to get the MSVC version, it prints the
version header on stderr, while the usage instructions are printed
on stdout. Usually, the version on stderr gets flushed first,
so "head -n1" gets the line it expects, but some times (in particular
when running MSVC wrapped in wine), it can get the usage line
first.

Redirect stdout to /dev/null, so we only grab the version among
the lines printed to stderr. This should make the version number
grabbing more robust.

At least all relevant versions of MSVC seem to print this specifically
to stderr, not stdout (so we don't risk to miss it); checked down
to MSVC 2010.

Signed-off-by: Martin Storsjö <martin@martin.st>
2025-06-19 23:24:18 +03:00
Dawid Kozinski
5d380e4431 configure: Update liboapv version requirement
Changed the minimum required version of liboapv from 0.1.13 to 0.1.13.1

Signed-off-by: Dawid Kozinski <d.kozinski@samsung.com>
Signed-off-by: James Almer <jamrial@gmail.com>
2025-06-17 10:02:44 -03:00
Kacper Michajłow
53da090ab7 configure: fix Microsoft tools detection
LLVM tools print installation path upon execution. If one uses LLVM
tools bundled with Microsoft Visual Studio installation, they would be
incorrectly detected as Microsoft's ones.

Microsoft tools can have localized names, so a more specific string
check is not feasible, but luckily we can test if "Microsoft" is at the
beginning of the line, as it is always the case.

Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Signed-off-by: Martin Storsjö <martin@martin.st>
2025-06-17 11:51:33 +03:00
Peter Ross
2663d97336 configure: add celp_math component
libavcodec/tests/celp_math depends on libavcodec/celp_math.o

This fixes fate when configuring with --disable-everything
2025-06-17 16:39:36 +10:00
Leo Izen
5fea5e3e11 configure: rename POSIX ioctl check
Commit 00b64fca55 introduced configure
detection for HAVE_POSIX_IOCTL but unfortunately this conflicts with
v4l-utils version 1.30, which itself checks for #ifdef HAVE_POSIX_IOCTL
in a public header and erroneously determines it to be true because we
define this to be 0.

Since this is only used for avdevice/v4l2, we rename this to something
else, namely ioctl_posix, simply to prevent the name conflict with the
file /usr/include/libv4l2.h at least until they can upstream a fix on
their end.

Signed-off-by: Leo Izen <leo.izen@gmail.com>
2025-06-08 19:42:56 -04:00
Andreas Rheinhardt
f0e1a315a1 avcodec/iirfilter: Remove iirfilter, psy-preprocessing
The iirfilter is only used in its test tool since
01ecb7172b which
stopped using it in AAC, its only user.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2025-06-06 17:21:31 +02:00