Commit Graph

7356 Commits

Author SHA1 Message Date
openvela-robot 2abdb3a8da cbs: Always check for bitstream end before reading 2026-04-20 19:37:39 +08:00
Steven Liu df5c3829fb avformat/dashdec: add dash demuxer base version
ffmpeg need a dash demuxer for demux the dash formats base on
https://github.com/samsamsam-iptvplayer/exteplayer3/blob/master/tmp/ffmpeg/patches/3.2.2/000001_add_dash_demux.patch

TODO:
1. support multi bitrate dash.

v2 fixed:
1. from autodetect to disabled
2. from camelCase code style to ffmpeg code style
3. from RepType to AVMediaType
4. fix variable typo
5. change time value from uint32_t to uint64_t
6. removed be used once API
7. change 'time(NULL)`, except it is not 2038-safe.' to av_gettime and av_timegm
8. merge complex free operation to free_fragment
9. use API from snprintf to av_asprintf

v3 fixed:
1. fix typo from --enabled-xml2 to --enable-xml2

v4 fixed:
1. from --enable-xml2 to --enable-libxml2
2. move system includes to top
3. remove nouse includes
4. rename enum name
5. add a trailing comma for the last entry enum
6. fix comment typo
7. add const to DASHContext class front
8. check sscanf if return arguments and give warning message when error
9. check validity before free seg->url and seg
10. check if the val is null, before use atoll

v5 fixed:
1. fix typo from mainifest to manifest

v6 fixed:
1. from realloc to av_realloc
2. from free to av_free

v7 fixed:
1. remove the -lxml2 from configure when require_pkg_config

v8 fixed:
1. fix replace filename template by av_asprintf secure problem

v9 modified:
1. make manifest parser clearly

v10 fixed:
1. fix function API name code style
2. remove redundant strreplace call
3. remove redundant memory operation and check return value from get_content_url()
4. add space between ) and {
5. remove no need to log the value for print

v11 fixed:
1. from atoll to strtoll
Suggested-by: Michael Niedermayer <michael@niedermayer.cc>

v12 fixed:
1. remove strreplace and instead by av_strreplace
Suggested-by: Nicolas George <george@nsup.org>

v13 fixed:
1. fix bug: cannot play:
http://dash.edgesuite.net/akamai/bbb_30fps/bbb_30fps.mpd
Reported-by: Andy Furniss <adf.lists@gmail.com>

v14 fixed:
1. fix bug: TLS connection was non-properly terminated
2. fix bug: No trailing CRLF found in HTTP header
Reported-by: Andy Furniss <adf.lists@gmail.com>

v15 fixed:
1. play youtube link: ffmpeg -i $(youtube-dl -J "https://www.youtube.com/watch?v=XmL19DOP_Ls" | jq -r ".requested_formats[0].manifest_url")
2. code refine for timeline living stream
Reported-by: Ricardo Constantino <wiiaboo@gmail.com>

v16 fixed:
1. remove the snprintf and instead by get_segment_filename make safety
2. remove unnecessary loops
3. updated xmlStrcmp and xmlFree to av_* functions
4. merge code repeat into one function
5. add memory alloc faild check
6. update update_init_section and open_url
7. output safety error message when filename template not safe
Suggested-by : wm4 <nfxjfg@googlemail.com>

v17 fixed:
1. add memory alloc faild check
2. fix resource space error at free_representation

v18 fixed:
1. add condition of template format

v19 fixed:
1. fix typo of the option describe

v20 fixed:
1. add the c->base_url alloc check
2. make the DASHTmplId same to dashenc

v21 fixed:
1. remove get_repl_pattern_and_format and get_segment_filename
2. process use dashcomm APIs

v22 fixed:
1. modify the include "dashcomm.h" to include "dash.h"
2. use internal API from dash_fill_tmpl_params to ff_dash_fill_tmpl_params

Signed-off-by: Steven Liu <lq@onvideo.cn>
Signed-off-by: samsamsam <samsamsam@o2.pl>
2026-04-20 19:37:34 +08:00
Clément Bœsch 1c94bff1fe build: cleanup videotoolbox
- there is no need for kCVImageBufferColorPrimaries_ITU_R_2020 checks,
  it's done at runtime
- VideoToolbox presence is now checked with check_apple_framework()
- link to CoreServices is only done when videotoolbox is enabled
2026-04-20 19:37:34 +08:00
Clément Bœsch af5064a69c build: cleanup audiotoolbox handling
*_at codecs only need the AudioToolbox framework, which is now checked
like the other Apple frameworks.
2026-04-20 19:37:34 +08:00
Clément Bœsch ed70348589 build: add --disable-coreimage autodetect switch 2026-04-20 19:37:34 +08:00
Clément Bœsch 9570b8a177 build: add --disable-avfoundation autodetect switch 2026-04-20 19:37:34 +08:00
Clément Bœsch 79259127c2 build: add check_apple_framework()
This will be used in the following commits.
2026-04-20 19:37:33 +08:00
Clément Bœsch 4fc9351bf7 lavfi/coreimage: reduce dependency scope from QuartzCore to CoreImage
What is required by the filter is CoreImage, there is no QuartzCore
usage. QuartzCore/CoreImage.h is simply an include to
CoreImage/CoreImage.h.
2026-04-20 19:37:33 +08:00
Clément Bœsch c16966d574 build: fix objcc header check
$headers is a variable set in the context of other functions (we don't
use the "local" keyword in our scripts, so those variables are global).

Currently, when checking for AVFoundation/AVFoundation.h, the actual
enabled header is math.h.

Similarly, when testing for QuartzCore/CoreImage.h, the actual enabled
header is CoreGraphics/CoreGraphics.h.

This is completely broken and may be the reason why these checks are
made in random places.
2026-04-20 19:37:33 +08:00
Clément Bœsch 994d1ee94c checkasm: use perf API on Linux ARM*
On ARM platforms, accessing the PMU registers requires special user
access permissions. Since there is no other way to get accurate timers,
the current implementation of timers in FFmpeg rely on these registers.
Unfortunately, enabling user access to these registers on Linux is not
trivial, and generally involve compiling a random and unreliable github
kernel module, or patching somehow your kernel.

Such module is very unlikely to reach the upstream anytime soon. Quoting
Robin Murphin from ARM:

> Say you do give userspace direct access to the PMU; now run two or more
> programs at once that believe they can use the counters for their own
> "minimal-overhead" profiling. Have fun interpreting those results...
>
> And that's not even getting into the implications of scheduling across
> different CPUs, CPUidle, etc. where the PMU state is completely beyond
> userspace's control. In general, the plan to provide userspace with
> something which might happen to just about work in a few corner cases,
> but is meaningless, misleading or downright broken in all others, is to
> never do so.

As a result, the alternative is to use the Performance Monitoring Linux
API which makes use of these registers internally (assuming the PMU of
your ARM board is supported in the kernel, which is definitely not a
given...).

While the Linux API is obviously cross platform, it does have a
significant overhead which needs to be taken into account. As a result,
that mode is only weakly enabled on ARM platforms exclusively.

Note on the non flexibility of the implementation: the timers (native
FFmpeg vs Linux API) are selected at compilation time to prevent the
need of function calls, which would result in a negative impact on the
cycle counters.
2026-04-20 19:37:33 +08:00
Clément Bœsch 25b560d221 build: consistent spacing between lists (cosmetics) 2026-04-20 19:37:30 +08:00
Clément Bœsch dbdb17a969 lavd: drop QTKit indev
QTKit has been deprecated in favor of AVFoundation for years, and we
have an avfoundation input device.

See https://developer.apple.com/documentation/qtkit
2026-04-20 19:37:30 +08:00
openvela-robot 56294c9719 avfilter/vf_datascope: make it possible for output window to automatically change position
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2026-04-20 19:37:29 +08:00
openvela-robot c727fd9de4 flvdec: Check the avio_seek return value after reading a metadata packet
If the metadata packet is corrupted, flv_read_metabody can accidentally
read past the start of the next packet. If the start of the next packet
had been flushed out of the IO buffer, we would be unable to seek to
the right position (on a nonseekable stream).

Prefer to clearly error out instead of silently trying to read from a
desynced stream which will only be interpreted as garbage.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:37:26 +08:00
Clément Bœsch db01336fec lavd: drop disabled v4l code
This code is disabled since 2012. V4L1 was dropped from the kernel more
than 10 years ago.
2026-04-20 19:37:23 +08:00
openvela-robot 3111366040 avcodec/diracdec: Fix integer overflow in INTRA_DC_PRED()
Fixes: runtime error: signed integer overflow: 1168175789 + 1168178473 cannot be represented in type 'int'
Fixes: 3081/clusterfuzz-testcase-minimized-4807564879462400
Fixes: 2844/clusterfuzz-testcase-minimized-5561715838156800

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
2026-04-20 19:37:22 +08:00
openvela-robot 64a2fcfaa9 Revert "checkasm: Test more h264 idct variants"
This reverts commit 547db1eaec.

This commit wasn't supposed to be pushed (yet) since it hasn't
been reviewed.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:37:20 +08:00
Clément Bœsch 701314bfea build: drop unused sndio_h and asoundlib_h 2026-04-20 19:37:17 +08:00
Clément Bœsch 5b9ebd7fdd build: make sndio part of the autodetected libraries
sndio is already autodetected, this commit makes sure
--disable-autodetect actually disable it unless --enable-sndio is
specified.
2026-04-20 19:37:17 +08:00
Clément Bœsch 614f5d162c build: make jack part of the autodetected libraries
jack is already autodetected, this commit makes sure
--disable-autodetect actually disable it unless --enable-jack is
specified.
2026-04-20 19:37:17 +08:00
Clément Bœsch 40ed8604a2 build: make alsa part of the autodetected libraries
alsa libs are already autodetected, this commit makes sure
--disable-autodetect actually disable it unless --enable-alsa is
specified.
2026-04-20 19:37:17 +08:00
Clément Bœsch fc0566c522 build: make sure a disabled autodetect still pick the libc's iconv 2026-04-20 19:37:17 +08:00
Clément Bœsch f74f01859d build: add --disable-autodetect switch 2026-04-20 19:37:17 +08:00
Clément Bœsch 0da92d16ef build: simplify weak-enabling of autodetected libraries 2026-04-20 19:37:17 +08:00
Clément Bœsch f52d7f11e8 build: remove vda_framework from enable_weak
vda_framework is already pulled by the weakly enabled vda and
videotoolbox.
2026-04-20 19:37:17 +08:00
Clément Bœsch d2460a1e80 build: replace use of HAVE_SDL2 with existing CONFIG_SDL2
There is no need for duplication.
2026-04-20 19:37:17 +08:00
Clément Bœsch 55b32263a3 build: treat sdl2 like other autodetected libraries 2026-04-20 19:37:17 +08:00
Clément Bœsch 0bce271714 build: isolate sdl-to-sdl2 aliasing
This simplifies incoming SDL related changes by removing potential
mismatching states of sdl and sdl2 variables. Since a component can have
all kind of states (such as unset, enabled, disabled or requested),
keeping these variables in sync manually in random places is not robust.
2026-04-20 19:37:17 +08:00
Clément Bœsch e8016fbf85 build: treat securetransport and schannel like other autodetected libraries 2026-04-20 19:37:17 +08:00
Clément Bœsch ecfcb34485 build: treat libxcb like other autodetected libraries 2026-04-20 19:37:17 +08:00
Clément Bœsch 86118dbb61 build: treat iconv like other autodetected libraries 2026-04-20 19:37:17 +08:00
Clément Bœsch 8d13a375e7 build: treat crystalhd like other hwaccels 2026-04-20 19:37:16 +08:00
Clément Bœsch b752f531fb build: group z libs with other autodetected libraries 2026-04-20 19:37:16 +08:00
openvela-robot 17e8e04310 avcodec/fits: add missing header includes
Fixes checkheaders.

Signed-off-by: James Almer <jamrial@gmail.com>
2026-04-20 19:37:14 +08:00
Martin Storsjö 51420860a5 configure: Use dllexport/dllimport for data symbols across DLLs with mingw
This avoids having to use pseudo relocations.

The version script used for exporting functions is skipped as soon
as the set of object files contains symbols marked with dllexport,
therefore we need to use makedef to produce the full list of symbols
to be exported.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:37:12 +08:00
openvela-robot c83c6794f5 msvc: Properly specify dllexport for data symbols shared across dll boundaries
We currently only have exported data symbols within libavcodec, but
the concept is easy to extend to other libraries if necessary.
The attribute declaration needs to be in a private header though,
since we can't use CONFIG_SHARED in public installed headers.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:37:11 +08:00
Martin Storsjö 91711a2c50 Remove support for building for mingw32ce (Windows CE)
The toolchain for this target is unmaintained since many years.

While it has been continuously build tested on fate, it hasn't
actually been tested at runtime since many, many years (and back
then, only a few codecs in libavcodec were tested).

So far, keeping support for it has been mostly effortless, but
the compiler does seem to have issues with dllimported data symbols,
ending up as internal compiler errors in some cases. Instead of
jumping through further hoops to work around that, just remove the
target.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:37:09 +08:00
Ashish Singh e8291669a5 configure: require pkg-config for libvmaf
This patch makes the libvmaf filter use pkg-config to detect
and link to libvmaf.

Signed-off-by: Ashish Singh <ashk43712@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2026-04-20 19:37:08 +08:00
openvela-robot c5ed9f1ee5 avfilter/vf_libvmaf: fix pre convert to framesync2 bugs
Hi, it fixes the errors while converting to framesync2.
libvmaf was changed recently, double *score variable is removed in the new
version since it's not used anywhere. This patch fixes all the warnings and
segmentation faults.

Signed-off-by: Ashish Singh <ashk43712@gmail.com>
Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
2026-04-20 19:37:07 +08:00
openvela-robot 51c82b2c0e lavf: make avio_read_partial() public
Main use-case is proxying avio through a foreign I/O layer and a custom
AVIO context, without losing latency and performance characteristics.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2026-04-20 19:37:05 +08:00
Timo Rothenpieler 4ce387637f configure: add support for libnpp* from cuda sdk 9
Signed-off-by: Timo Rothenpieler <timo@rothenpieler.org>
2026-04-20 19:37:02 +08:00
openvela-robot 8f53bc3adc lavc/vaapi_encode_h265: Enable VBR mode
Follow vaapi_h264 style, enable the VBR mode.

Signed-off-by: Jun Zhao <jun.zhao@intel.com>
Signed-off-by: Mark Thompson <sw@jkqxz.net>
2026-04-20 19:36:59 +08:00
openvela-robot d6b24a2408 swscale: Do not expand a macro with 'defined' in it
Fixes:

    libswscale/utils.c:1632:5: warning: macro expansion producing 'defined' has undefined behavior [-Wexpansion-to-defined]
    #if USE_MMAP
        ^
    libswscale/utils.c:1577:49: note: expanded from macro 'USE_MMAP'
    #define USE_MMAP (HAVE_MMAP && HAVE_MPROTECT && defined MAP_ANONYMOUS)
                                                    ^
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2026-04-20 19:36:57 +08:00
Maksym Veremeyenko de7d9bc8b4 lavd: implement NewTek NDI input/output device support
Signed-off-by: Marton Balint <cus@passwd.hu>
2026-04-20 19:36:53 +08:00
Martin Vignali 1ee441ed9a configure: add avx2 enabled log
Signed-off-by: James Almer <jamrial@gmail.com>
2026-04-20 19:36:53 +08:00
openvela-robot 4af5536f55 avfilter/af_agate: switch to activate
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2026-04-20 19:36:50 +08:00
openvela-robot c0df136248 configure: Include d3d11va_extralibs in libavutil
This fixes shared WinRT/UWP builds with d3d11va enabled.

Signed-off-by: Martin Storsjö <martin@martin.st>
2026-04-20 19:36:48 +08:00
openvela-robot 5bfef89719 libavdevice/decklink: configurablity to set max queue size
Signed-off-by: Ravindra Patagar <rpatagar@akamai.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
2026-04-20 19:36:43 +08:00
openvela-robot 8a6966744a yadif: Account for the buffer alignment while processing the frame edges
Avoid out of bound reads.

Bug-Id: 1031
CC: libav-stable@libav.org
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2026-04-20 19:36:41 +08:00
openvela-robot 36baa52d31 lavc/g726: Add a little-endian G.726 encoder.
Fixes ticket #6596.
2026-04-20 19:36:37 +08:00