- removing Ted Hess as maintainer per request by himself
- removing Ian Leonard as maintainer per request by himself
- adding myself (Mirko Vogt) as maintainer
- adding Daniel Golle as maintainer
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
V4L2 Request API hwaccels for stateless decoders such as Allwinner
cedrus, exporting DRM_PRIME frames, and a V4L2 M2M deinterlace filter
driving mem2mem deinterlacers such as Allwinner's sun8i-di on DRM_PRIME
frames. The hwaccels introduce the v4l2-request and libudev configure
options.
Add the FFMPEG_V4L2_REQUEST option (pulls libdrm and libudev) to the
libffmpeg menu, keep both new configure options explicitly off in the
common block like the other autodetected ones, and re-add the
*_v4l2request hwaccels under manual component selection.
Patches:
120-v4l2-request-01 to -13: carried over from LibreELEC
(packages/multimedia/ffmpeg/patches/v4l2-request/0001-v4l2-request.patch
as of LibreELEC commit 79de202a10), one file per patch of the series:
01 avutil/hwcontext: Add hwdevice type for V4L2 Request API
(Jonas Karlman)
02 avutil/hwcontext_v4l2request: Probe for a capable media and
video device (Jonas Karlman)
03 avcodec: Add common V4L2 Request API code (Jonas Karlman)
04 avcodec/v4l2request: Add common decode support for hwaccels
(Jonas Karlman)
05 avcodec: Add V4L2 Request API mpeg2 hwaccel (Jonas Karlman)
06 avcodec/h264dec: add ref_pic_marking and pic_order_cnt bit_size
to slice context (Boris Brezillon)
07 avcodec: Add V4L2 Request API h264 hwaccel (Jernej Skrabec)
08 avcodec: Add V4L2 Request API hevc hwaccel (Jernej Skrabec)
09 avcodec: Add V4L2 Request API vp8 hwaccel (Boris Brezillon)
10 avcodec: Add V4L2 Request API vp9 hwaccel (Boris Brezillon)
11 avcodec: Add V4L2 Request API av1 hwaccel (Jonas Karlman)
12 avutil/hwcontext_v4l2request: Add support for AFBC_16X16_SPLIT
pix fmts (Jernej Skrabec)
13 avutil/hwcontext_v4l2request: Add support for BROADCOM_SAND128
pix fmts (Jonas Karlman)
Co-developed by Alex Bee, Benjamin Gaignard and Ezequiel Garcia.
140-vf-deinterlace-v4l2m2m: carried over from LibreELEC
(packages/multimedia/ffmpeg/patches/vf-deinterlace-v4l2m2m/0001-vf-deinterlace-v4l2m2m.patch
as of LibreELEC commit 9ef6c9c6f7; Jernej Skrabec): adds the
deinterlace_v4l2m2m filter
Headers unchanged, hunks refreshed with quilt; the patched tree is
identical to the one LibreELEC's files produce.
LibreELEC's v4l2-drmprime patch (stateful M2M decoders) is not carried:
it needs a rebase for FFmpeg 9 which LibreELEC has not done either.
The V4L2 Request API series is under review upstream as:
https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20847
The patches here are taken from LibreELEC, though,
as that's the set that Kodi is built and tested against,
incl. some platform specific fixes.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Patches:
110-libdav1d-get-format: carried over from LibreELEC (Lukas Rusak):
adds a get_format callback to the libdav1d decoder so Kodi's
hardware-first, software-fallback decoder setup initialises
multithreaded software decoding properly; without effect until the
libdav1d option is enabled
111-swscale-yuv2rgb-no-warning: carried over from LibreELEC
(Christian Hewitt): removes the warning swscale logs on every
context initialisation without an accelerated colourspace
conversion
LibreELEC keeps both in one file
(packages/multimedia/ffmpeg/patches/libreelec/0001-libreelec.patch as
of LibreELEC commit 5d54b2dd82); they are split here so each keeps its
own header. Headers unchanged, hunks refreshed with quilt; the patched
tree is identical to the one LibreELEC's file produces.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Upstream dropped libpostproc in 8.0; Kodi still requires it.
The --enable/--disable-postproc option the patch re-introduces is set
explicitly: on together with GPL in libffmpeg, off in libffmpeg-mini.
Patches:
100-postproc: carried over from LibreELEC (Matthias Reichl's rebase
of Michael Niedermayer's libpostproc source plugin;
packages/multimedia/ffmpeg/patches/postproc/0001-postproc.patch as
of LibreELEC commit 5f03a122f8): re-adds libpostproc as a source
plugin
Header unchanged, hunks refreshed with quilt; the patched tree is
identical to the one LibreELEC's file produces.
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Rework the package while bumping from 6.1.4.
Variants: libffmpeg is the configurable build (menu "FFmpeg
configuration"; the defaults give a full-featured build), libffmpeg-mini
a fixed small decoder set for playback-only consumers; the two conflict.
The former -full, -custom and -audio-dec variants are folded into
libffmpeg: its menu carries the per-codec/format/protocol selection the
custom variant had, controlled by a "manual component selection"
option that is off by default. libffmpeg provides libffmpeg-full and
libffmpeg-audio-dec as transitional aliases for consumers not yet
updated. libffmpeg-mini no longer provides the libffmpeg virtual
package: its fixed set is too small for the in-tree consumers of that
name (mpd, minidlna), which need the default build; it is for consumers
that depend on it explicitly.
* deterministic configure: --disable-autodetect plus an explicit
--disable baseline for everything configure would pick up from the
environment; each optional library/hwaccel is one config symbol
driving both the conditional DEPENDS and the configure flag
* menu: licence, size/speed, programs, hwaccels (libdrm, V4L2 M2M,
VA-API), TLS backend (default mbedTLS, OpenWrt's default TLS
library), external libraries, system libraries, component selection.
Defaults follow what in-tree consumers need: libopus, LAME (shine
on soft-float) and libx264 on; fdk-aac only for a nonfree, non-GPL
build. The ALSA input device is dropped (no in-tree consumer).
libdav1d (FFmpeg has no native software AV1 decoder) and VA-API are
prepared but commented out until the dav1d and libva packages exist
in the feeds.
* BUILD_PATENTED: vvc (H.266) is added to the patented component lists
next to h264, hevc and vc1; FFmpeg 9 builds its native VVC decoder,
parser, muxer and demuxer by default and H.266 is licensed through
the same patent pools as HEVC.
Build fixes for 9.0.1 are part of this commit; feature patches from
LibreELEC and the options they introduce follow in separate commits.
Patches:
010-pkgconfig: kept unchanged: expresses libdir and includedir
relative to ${prefix} in the generated .pc files
020-libavcodec-fix-Wint-conversion-in-vulkan,
030-avformat-file-guard-fd_dup-by-FD_PROTOCOL-or-PIPE_PR,
040-vulkan_decode-fix-the-print-format-of-VkDeviceSize,
050-avcodec-dct-Make-declarations-and-definitions-match,
060-avutil-tx-fix-GCC-memset-warning,
080-avcodec-pcm-bluray-dvd-Use-correct-pointer-types-on-,
090-avcodec-tiff-Suppress-unused-variable-warnings,
100-avcodec-tableprint_vlc-Unbreak-hardcoded-tables,
120-avfilter-af_channelsplit-fix-mixed-declaration-and-c:
dropped: merged upstream
070-avformat-rawdec-guard-by-CONFIG_DATA_DEMUXER: dropped: only
silenced an unused-function warning in builds without the data
demuxer
160-libavdevice-v4l2-libv4l2-posix-ioctl: new: libv4l2.h only
declares v4l2_ioctl() with the POSIX "int request" signature when
the consumer defines a feature macro first; FFmpeg detects that
signature (HAVE_IOCTL_POSIX) but never tells the header, and GCC 14
turns the resulting pointer-type mismatch into an error. Define
both macro spellings (v4l-utils <= 1.30 and >= 1.32). Same approach
as q66's posix-ioctl.patch in Chimera Linux, also carried by Alpine,
which defines one of the two names per copy
170-tls_mbedtls-build-without-version-module: new: OpenWrt's mbedtls
package disables MBEDTLS_VERSION_C, so mbedtls_version_get_number()
is not declared; fall back to the compile-time MBEDTLS_VERSION_NUMBER
180-mips-cabac-no-mips16: re-added: restores the MIPS16 guard for the
MIPS CABAC inline assembly from Rosen Penev's 030-h264-mips.patch
(2020), dropped by the 6.1.2 update
190-configure-hevcparse-select-hevc_sei: new: configure's hevcparse
component does not select hevc_sei although hevc/parse.c needs it;
without BUILD_PATENTED the HEVC decoder and parser that used to pull
it in are off while the default-enabled dovi_split bitstream filter
still needs hevcparse, leaving ff_hevc_decode_nal_sei undefined
The explicit GPL option and the explicit libdrm dependency follow
Daniel Golle's 7.1.4 update proposal of this package, which was superseded
by this PR/update.
Assisted-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: Mirko Vogt <mirko-openwrt@nanl.de>
Add a note indicating that patented codecs and technologies are
available when CONFIG_BUILD_PATENTED=y.
Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Remove warning disable. The issue was fixed in 7.1 and backported to
6.1.3
Remove atrac3 from patented list. It's no longer true and is already in
the non patented list.
Add missing upstream patch in 6.1.4 to fix x86 build.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Some platforms lack builtin atomics and use libatomic. Add it.
Backport various patches to fix some warnings.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
- Remove 020-ioctl patch - upstreamed
- Remove 030-h264-mips patch - implemented slightly different in the upstream
- Two remaining patches are unaffected
- Fixup CPU type detected as ' ' on x86_64
Signed-off-by: Aleksey Vasilenko <aleksey.vasilenko@gmail.com>
Enable V4L2 support on ffmpeg-full package.
Tested using V4L2 Raspberry Pi 4 encoder/decoder.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
fix addresses issue when building ffmpeg with binutils v2.41
that is documented here: https://trac.ffmpeg.org/ticket/10405
Issue about build failure is available here:
https://github.com/openwrt/packages/issues/22170
Remarks:
Patch is merged to ffmpeg upstream and will be included in
next release of ffmpeg, so patch applies only to current
version and is removed when package is updated to next
version of ffmpeg.
Signed-off-by: Oskari Rauta <oskari.rauta@gmail.com>
Co-authored-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
The previous solution overwrote the provide from ``define
Package/libffmpeg/Default``, but that's not what was wanted.
Thus libffmpeg-full should provide three packages libffmpeg,
libffmpeg-mini and libffmpeg-audio-dec
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Motivation of this change is that full variants provides the mini
variant and as well audio-dec package, thus you can not install both as
it fails with the following output:
Collected errors:
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavcodec.so.58
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavcodec.so.58.91.100
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavdevice.so.58
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavdevice.so.58.10.100
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavformat.so.58
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavformat.so.58.45.100
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavutil.so.56
But that file is already provided by package * libffmpeg-full
* check_data_file_clashes: Package libffmpeg-audio-dec wants to install file /usr/lib/libavutil.so.56.51.100
But that file is already provided by package * libffmpeg-full
* opkg_install_cmd: Cannot install package libffmpeg-audio-dec.
Let's change it to:
Installing libffmpeg-audio-dec (4.3.4-1) to root...
Collected errors:
* check_conflicts_for: The following packages conflict with libffmpeg-audio-dec:
* check_conflicts_for: libffmpeg-full *
* opkg_install_cmd: Cannot install package libffmpeg-audio-dec.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
The crude loop I wrote to come up with this changeset:
find -L package/feeds/packages/ -name patches | \
sed 's/patches$/refresh/' | sort | xargs make
Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
For speexdsp, support for NEON on aarch64 was added in 1.2.0[1].
[1]: https://github.com/xiph/speexdsp/pull/8
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
With openwrt/openwrt@8dcc108760, the ARM
FPU compiler options are no longer part of CONFIG_TARGET_OPTIMIZATION.
This updates various packages that look for NEON/VFP support to search
CONFIG_CPU_TYPE instead.
Signed-off-by: Jeffery To <jeffery.to@gmail.com>
Presently, this attempts to disable atrac3, h264, hevc and vc1. These
encoders don't exist or are done through other programs (eg libx264).
Handling of those other programs is done elsewhere.
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Provides access to services requiring a secure connection.
Chosen over openssl for license reason (can't redistribute). To my
knowledge, libressl will have the same issue.
mbed-tls is the only other ssl/tls provider, and this package is
complicated enough.
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
Since getting rid of the patented line, it seems fdk-aac is now getting
enabled for -full, causing a missing dependency. OTOH, fdk-aac can only be
enabled if x264 is not. So add a ! dependency for it.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Both libraries in the tree (fdk-aac and faad) have patented functionality
disabled when CONFIG_BUILD_PATENTED is off.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
The patch created patch files in the ffmpeg build directory, which did
absolutely nothing. Properly backported them.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
This removes lines that set PKG_BUILD_DIR when the set value is no
different from the default value.
Specifically, the line is removed if the assigned value is:
* $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
The default PKG_BUILD_DIR was updated[1] to incorporate BUILD_VARIANT
if it is set, so now this is identical to the default value.
* $(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_SOURCE_SUBDIR)
if PKG_SOURCE_SUBDIR is set to $(PKG_NAME)-$(PKG_VERSION), making it
the same as the previous case
* $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
This is the same as the default PKG_BUILD_DIR when there is no
BUILD_VARIANT.
* $(BUILD_DIR)/[name]-$(PKG_VERSION)
where [name] is a string that is identical to PKG_NAME
[1]: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=e545fac8d968864a965edb9e50c6f90940b0a6c9
Signed-off-by: Jeffery To <jeffery.to@gmail.com>