4.5.0 uses three interfaces FFmpeg 7 removed; upstream guards them since
4.6. Drop 010-no-po-man.patch and switch PKG_FIXUP to gettext-version,
which runs autopoint and so supplies the po/Makefile.in.in the patch was
working around. Drop --without-mmal, which 4.7.1 no longer has.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
FFmpeg 7 removed AVCodecParameters.channels, causing MiniDLNA 1.3.3
to fail to compile when reading audio channel counts.
Add an OpenWrt package patch to use ch_layout.nb_channels with
libavcodec 61 and later. Retain the existing channels field access
for older versions.
Signed-off-by: Marcin Maj <marcinmajsc@gmail.com>
The package allocates a group named dvb with a dynamic id, while
openwrt.git's dvb-support package allocates it as gid 49 together with
the hotplug rules that put the DVB adapter nodes into it. Two different
ids for one group name make the metadata scan fail.
Depend on dvb-support and pin the group to the same id.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
libdvbcsa no longer requires BUILD_PATENTED, so enable dvbcsa
unconditionally and drop the BUILD_PATENTED dependency and config
toggle.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
libdvbcsa no longer requires BUILD_PATENTED, so drop the gate from the
libdvbcsa dependency and the configure args. Software descrambling is
now enabled via TVHEADEND_CSA alone.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
start_service() runs chgrp and chmod on /dev/dvb/*. Without a DVB
adapter the pattern does not match, so every start, including the one
during a package upgrade, prints
chgrp: /dev/dvb/*: No such file or directory
chmod: /dev/dvb/*: No such file or directory
Only touch the entries that exist. The fix itself is still needed for
adapters that were plugged in before the package was installed, as no
hotplug event sets their group then.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
The DVB device nodes are created after the USB hotplug event, so the
existing USB hotplug script may run before the nodes exist. This leaves
newly connected tuners owned by root:root 0600 and inaccessible to
tvheadend.
Handle DVB hotplug events instead. On add, fix the group ownership and
permissions after procd creates the node. On remove, remove the empty
adapter directory so tvheadend can detect that the adapter disappeared.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
The NEON audio resampler has been compiled out of every 32-bit ARM build
since 1.28. Its inline asm advances pointers with add.w, a Thumb-2 only
mnemonic that gas rejects in ARM (A32) state, which is how OpenWrt builds
ARM. The same add.w sits in the meson probe that gates HAVE_ARM_NEON, so
the probe fails first and hides the broken asm behind the generic C path.
Backport the upstream fix, which selects the operand form per ISA and
drops add.w from the probe. Thumb-2 code generation is unchanged.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.7.
Drop 001-gst-libav-Fix-build-failure-with-FFmpeg-9.0.patch. The fix it
carries is already in 1.28.7, so quilt refuses to apply it ("can be
reverse-applied") and the build fails before it starts.
Signed-off-by: W. Michael Petullo <mike@flyn.org>
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Upstream list of changes is available at
https://gstreamer.freedesktop.org/releases/1.28/#1.28.7.
The y4m plugin is gone from gst-plugins-bad in 1.28: its y4mdec element
moved into the gst-plugins-good y4m plugin, and neither gst/y4m nor the
y4m meson option exists here any more. Drop the -Dy4m= argument, which
meson would now reject as unknown, together with the gst1-mod-y4mdec
package. The element stays available as gst1-mod-y4m from
gst-plugins-good.
Signed-off-by: W. Michael Petullo <mike@flyn.org>
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
In 1.28 upstream merged the y4mdec element from gst-plugins-bad into the
gst-plugins-good y4m plugin, which now registers both y4mdec and y4menc
from a single libgsty4m. The Makefile has passed -Dy4m= since 1.16.2,
but the package line stayed commented out, so the plugin was never
built.
Enable it, so the y4mdec element dropped from gst-plugins-bad in this
series stays available. Anyone who selected gst1-mod-y4mdec needs to
select gst1-mod-y4m instead.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
libavcodec 63 does not define the V308, V408 and V410 codec IDs that
the video decoder and encoder registration list among the quasi
codecs to skip, so both files fail to compile. Backport the upstream
change that guards those entries by libavcodec major version.
Fixes: 78521023 ("ffmpeg: update to 9.0.1")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ustreamer and ustreamer-dump import 64-bit atomics from libatomic where
the compiler cannot inline them, but the build links the library on
every architecture. ATOMIC64_DEPENDS restricts the dependency to the
targets that need it; --as-needed drops the unused library elsewhere.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
The open-coded architecture list pulls libatomic onto ARMv6K and ARMv7
targets although they inline 64-bit atomics. ATOMIC64_DEPENDS covers
exactly the targets that need it.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
- 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>
The handwritten debian/changelog is only used to override the version
reported by support/version, but it is unnecessary and causes a version
mismatch:
- Build/Prepare feeds the raw git hash into debian/changelog, so the
binary reports ddb984f4c17f4a26fd34f3e1b24e3323f9641b75~openwrt1
instead of the package version 2026.08.17~ddb984f4.
- The CI package test then fails because it cannot find the package
version in the output of any installed executable.
- Without .git, debian/changelog or rpm/version, support/version falls
back to the source directory name.
- OpenWrt already names the source directory tvheadend-$(PKG_VERSION),
so the binary correctly reports 2026.08.17~ddb984f4 without any
override.
Alpine uses rpm/version in the same way and does not encode its own
package release into the version either.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
tvheadend has no transliteration of its own. It asks iconv for
"<charset>//TRANSLIT//IGNORE", a GNU extension that musl does not
implement. Converting "ŽluťoučkýKůň" to ASCII on mpc85xx/p2020
(Turris 1.x), musl 1.2.6:
charset musl GNU libiconv
ASCII//TRANSLIT//IGNORE EINVAL "Zlutouck'yKun"
ASCII//TRANSLIT EINVAL "Zlutouck'yKun"
ASCII "*lu*ou*k*K**" EILSEQ
050-iconv-test-continue.patch removed the abort() from the startup
self-test that reports this, so the package could be built against
musl's iconv. That silenced the check without fixing anything:
intlconv_utf8() still returns -EIO, so cleanup_filename() in
src/dvr/dvr_rec.c cannot build a recording file name and
pvr_generate_filename() fails. The charset cannot be avoided either,
because intlconv_filesystem_charset() returns "ASCII" unless $LANG
names a UTF-8 locale, which OpenWrt does not set by default.
Depend on libiconv-full instead of $(ICONV_DEPENDS), which pulls it in
only when BUILD_NLS is set, and point the compiler at its staging prefix
when nls.mk has not already done so. The binary then links against
libiconv.so.2, the self-test passes and the patch can be dropped.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
Update to git master ddb984f4, 124 commits on from the previously
packaged 395afb85. Most of that is web UI work and translation updates,
with smaller fixes in the build system, mpegts and dvr code.
Signed-off-by: Josef Schlehofer <pepe.schlehofer@gmail.com>
The binaries print the version as X.Y.Z-R while PKG_VERSION is X.Y.Z.R,
so the generic per-executable version probe never matches and the job
fails. Add a test-version.sh override that greps for the dashed form,
mirroring the conversion the runtime test.sh already does.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Exercise more gm subcommands and codecs on top of the existing PNG/JPEG,
resize, pixel, draw and composite checks: TIFF round-trip, PPM and GIF
encoders, crop, 90-degree rotate, horizontal append and in-place mogrify.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Exercise more of the toolchain on top of the existing PNG/JPEG/BMP,
resize, pixel-sampling, grayscale and composite checks: TIFF round-trip,
PPM and GIF encoders, crop, 90-degree rotate, horizontal append, the IM7
'magick' driver and in-place mogrify.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Update to the latest upstream stable release. Also fix PKG_SOURCE_URL:
imagemagick.org/archive no longer serves the release tarballs (404),
they live under download.imagemagick.org/archive/releases now.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
The 'gl_api' meson option was left at its 'auto' default, so the
GL plugin probed for desktop OpenGL. OpenWrt's Mesa is built with
-Dglx=disabled and -Dglvnd=disabled on every target, so it ships
no linkable desktop-GL library (no libGL.so, no gl.pc) - desktop
GL is only reachable through EGL. With nothing to satisfy the
probe in the sysroot, meson's cc.find_library('GL') fallback
escaped into the build host's /usr/lib and, on a host that has a
desktop libGL installed, put that foreign library on the link
line, breaking the cross link with:
mold: fatal: /usr/lib/libGL.so: incompatible file type:
riscv64 is expected but got x86_64
Pin -Dgl_api=gles2 and -Dgl_platform=egl to match what Mesa
actually provides (libGLESv2 + libEGL). This is correct on every
target, including x86_64: the desktop-GL link path was never
functional on OpenWrt and only ever "succeeded" by picking up a
host library.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
When dnsmasq is disabled, /var/etc doesn't exist. minidlna start was then failing. Partially reverted commit 733aae9 which broke this.
Signed-off-by: Peter Maivald <plasticassius@gmail.com>
arm926ej-s (ARMv5) does not have native lock-free atomics and the
toolchain inserts calls to libatomic.so.1 for atomic operations.
The libgstreamer1 DEPENDS only listed armeb, powerpc, mips and mipsel
as needing libatomic, missing plain arm (little-endian 32-bit ARM).
Extend the condition to include arm so the package is properly
declared on all 32-bit ARM targets that require libatomic.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Security fixes:
- Fix MSL/SVG parsers to use libxml2 SAX handlers, removing archaic
cruft with potential security issues
- Fix JP2 Jasper max_samples calculation to avoid DoS via huge images
- Apply image dimension resource limits and fix heap write overflow in JXL
- Fix WPG palette buffer allocation (SF bug #750)
- Fix ColorFloodfillImage() to error when clip-mask is present
Bug fixes:
- Fix JPEG CMYK inversion regression introduced in 1.3.43
- Re-implement PNG8 writer with correct indexed-color and binary transparency
- Re-write HEIF reader (AVIF, HEIC) based on heif_image_get_plane_readonly2(),
adding deep image support and YCbCr/monochrome output
- Fix Hull transform arithmetic overflow regression from Oct 2023
- Fix -crop percentage tiling regression
- Re-enable EXPERIMENTAL_EXIF_TAGS by default with known issues fixed
- Fix Magick++ thread safety regression since 2003 (pthreads support)
New features:
- Add support for newer Artifex urw-base35-fonts (OpenType and Type 1)
- Add ImagesResource limit to control simultaneous loaded images
- Add EXIF Version 3.0 decoding and validation
- Add preliminary MP4 coder with HEIF sequence support
- Require C99 compiler compatibility in build infrastructure
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
Seems a lot of packages are just getting abandoned by people.
Will pick these up and see them through.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
I could not reproduce the bug reported, but the update should fix it
anyway. Tested on Turris Omnia, OpenWrt r31111.
Signed-off-by: Marius Dinu <m95d+git at psihoexpert.ro>
[imported from mailing list]
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
As we're seeing in various test.sh scrip runs, importing 'email' fails
with not finding 'urllib' and vice-versa.
Then via a7e96ec91 ("python3-email: add python3-urllib as dependency")
I created a circular dependency.
So, might as well merge the two packages into one (named python3-urllib)
and updates all dependencies to pull python3-urllib.
Signed-off-by: Alexandru Ardelean <alex@shruggie.ro>
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>