4
1

29 Commity 82b9a5daf2 ... 542ff91b9b

Autor SHA1 Správa Dátum
  Waldemar Brodkorb 542ff91b9b xf86-input-libinput: allow all qemu graphic variants 1 mesiac pred
  Waldemar Brodkorb 2c87879bff kodi: update to 21.2 1 mesiac pred
  Waldemar Brodkorb 8d57fb6d7b libffi: update to 3.5.2 1 mesiac pred
  Waldemar Brodkorb d38d629dac nghttp2: update to 1.67.1 1 mesiac pred
  Waldemar Brodkorb 92524d4c2b qemu: enable evdev 1 mesiac pred
  Waldemar Brodkorb 4a6d2f3ccd libx264: update to latest git version 1 mesiac pred
  Waldemar Brodkorb 8a4d70c531 libx265: update to 4.1 1 mesiac pred
  Waldemar Brodkorb a23e15dc1f qemu: needs DRM for graphics 1 mesiac pred
  Waldemar Brodkorb a878bba254 zip: fix gcc 14.x issue 1 mesiac pred
  Waldemar Brodkorb e8188d2023 xvidcore: update to 1.3.7 1 mesiac pred
  Waldemar Brodkorb 57e91a82af taglib: update to 2.1.1 1 mesiac pred
  Waldemar Brodkorb 42e2d466ab ruby: update to 3.4.6 1 mesiac pred
  Waldemar Brodkorb b1e8974c25 libvpx: update to 1.15.2 1 mesiac pred
  Waldemar Brodkorb 807a898e3b libvorbis: update to 1.3.7 1 mesiac pred
  Waldemar Brodkorb b5ca31408b libtiff: update to 4.7.1 1 mesiac pred
  Waldemar Brodkorb 4f42aaee10 libsquish: update to 1.15 1 mesiac pred
  Waldemar Brodkorb 08af057ab7 libsamplerate: update to 0.2.2 1 mesiac pred
  Waldemar Brodkorb bb1c12de62 libogg: update to 1.3.6 1 mesiac pred
  Waldemar Brodkorb e5dba38c80 libjpeg-turbo: update to 3.1.2 1 mesiac pred
  Waldemar Brodkorb ff3fb241fe gnupg2: disable keyboxd 1 mesiac pred
  Waldemar Brodkorb 575eacce8f flatbuffers: update to 25.9.23 1 mesiac pred
  Waldemar Brodkorb 14d0827c3d flac: update to 1.5.0 1 mesiac pred
  Waldemar Brodkorb b15e4ee063 ffmpeg: update to 7.1.2 1 mesiac pred
  Waldemar Brodkorb 487d530123 cmake: update to 4.1.2 1 mesiac pred
  Waldemar Brodkorb 98256e88f8 qemu: add virtio GPU support 1 mesiac pred
  Waldemar Brodkorb ffd8a56915 wayland-protocols: update to 1.45 1 mesiac pred
  Waldemar Brodkorb e38b727365 wayland: update to 1.24.0 1 mesiac pred
  Waldemar Brodkorb 946854123f mutt: update to 2.2.15 1 mesiac pred
  Waldemar Brodkorb 144541e742 gnutls: update to 3.8.10 1 mesiac pred

+ 2 - 2
package/cmake/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		cmake
-PKG_VERSION:=		4.0.0
+PKG_VERSION:=		4.1.2
 PKG_RELEASE:=		1
-PKG_HASH:=		ddc54ad63b87e153cf50be450a6580f1b17b4881de8941da963ff56991a4083b
+PKG_HASH:=		643f04182b7ba323ab31f526f785134fb79cba3188a852206ef0473fee282a15
 PKG_DESCR:=		build utility
 PKG_SECTION:=		dev/tools
 HOST_BUILDDEP:=		curl-host

+ 5 - 5
package/ffmpeg/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		ffmpeg
-PKG_VERSION:=		6.1.1
-PKG_RELEASE:=		2
-PKG_HASH:=		5e3133939a61ef64ac9b47ffd29a5ea6e337a4023ef0ad972094b4da844e3a20
+PKG_VERSION:=		7.1.2
+PKG_RELEASE:=		1
+PKG_HASH:=		5eb62f529114778333b7eb0381cb16e2b8725ce2ae081d07b1082effe22b12e9
 PKG_DESCR:=		record, convert and stream audio & video
 PKG_SECTION:=		libs/video
 PKG_NEEDS:=		threads
@@ -17,7 +17,7 @@ PKG_SITES:=		http://www.ffmpeg.org/releases/
 PKG_LIBNAME:=		libffmpeg
 PKG_OPTS:=		dev
 
-PKG_CHOICES_LIBFFMPEG:=	WITH_LIBRESSL WITH_OPENSSL
+PKG_CHOICES_LIBFFMPEG:=	WITH_OPENSSL WITH_LIBRESSL
 PKGCD_WITH_LIBRESSL:=	use libressl for crypto
 PKGCS_WITH_LIBRESSL:=	libressl ca-certificates
 PKGCB_WITH_LIBRESSL:=	libressl
@@ -196,7 +196,6 @@ CONFIGURE_ARGS:=	--prefix=/usr \
 			--disable-doc \
 			--disable-debug \
 			--disable-iconv \
-			--disable-yasm \
 			--disable-optimizations \
 			--disable-stripping \
 			--enable-shared \
@@ -206,6 +205,7 @@ CONFIGURE_ARGS:=	--prefix=/usr \
 			--enable-swscale \
 			--enable-postproc \
 			--enable-openssl \
+			--disable-x86asm \
 			$(CONFIGURE_CPU_OPTS)
 
 ifeq ($(ADK_PACKAGE_LIBFFMPEG_WITH_BZIP2),y)

+ 0 - 59
package/ffmpeg/patches/0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch

@@ -1,59 +0,0 @@
-From 654bd47716c4f36719fb0f3f7fd8386d5ed0b916 Mon Sep 17 00:00:00 2001
-From: Ross Burton <ross.burton@arm.com>
-Date: Fri, 9 Aug 2024 11:32:00 +0100
-Subject: [PATCH] libavcodec/arm/mlpdsp_armv5te: fix label format to work with
- binutils 2.43
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-binutils 2.43 has stricter validation for labels[1] and results in errors
-when building ffmpeg for armv5:
-
-src/libavcodec/arm/mlpdsp_armv5te.S:232: Error: junk at end of line, first unrecognized character is `0'
-
-Remove the leading zero in the "01" label to resolve this error.
-
-[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b
-
-Signed-off-by: Ross Burton <ross.burton@arm.com>
-Signed-off-by: Martin Storsjö <martin@martin.st>
-Signed-off-by: Phil Sutter <phil@nwl.cc>
----
- libavcodec/arm/mlpdsp_armv5te.S | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libavcodec/arm/mlpdsp_armv5te.S b/libavcodec/arm/mlpdsp_armv5te.S
-index 4f9aa485fd21a..d31568611c30f 100644
---- a/libavcodec/arm/mlpdsp_armv5te.S
-+++ b/libavcodec/arm/mlpdsp_armv5te.S
-@@ -229,7 +229,7 @@ A .endif
-   .endif
- 
-         // Begin loop
--01:
-+1:
-   .if TOTAL_TAPS == 0
-         // Things simplify a lot in this case
-         // In fact this could be pipelined further if it's worth it...
-@@ -241,7 +241,7 @@ A .endif
-         str     ST0, [PST, #-4]!
-         str     ST0, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
-         str     ST0, [PSAMP], #4 * MAX_CHANNELS
--        bne     01b
-+        bne     1b
-   .else
-     .if \fir_taps & 1
-       .set LOAD_REG, 1
-@@ -333,7 +333,7 @@ T       orr     AC0, AC0, AC1
-         str     ST3, [PST, #-4]!
-         str     ST2, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
-         str     ST3, [PSAMP], #4 * MAX_CHANNELS
--        bne     01b
-+        bne     1b
-   .endif
-         b       99f
- 
--- 
-2.43.0
-

+ 2 - 2
package/flac/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		flac
-PKG_VERSION:=		1.3.4
+PKG_VERSION:=		1.5.0
 PKG_RELEASE:=		1
-PKG_HASH:=		8ff0607e75a322dd7cd6ec48f4f225471404ae2730d0ea945127b1355155e737
+PKG_HASH:=		f2c1c76592a82ffff8413ba3c4a1299b6c7ab06c734dee03fd88630485c2b920
 PKG_DESCR:=		free lossless audio codec utility
 PKG_SECTION:=		mm/audio
 PKG_DEPENDS:=		libflac

+ 2 - 2
package/flatbuffers/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		flatbuffers
-PKG_VERSION:=		2.0.6
+PKG_VERSION:=		25.9.23
 PKG_RELEASE:=		1
-PKG_HASH:=		e2dc24985a85b278dd06313481a9ca051d048f9474e0f199e372fea3ea4248c9
+PKG_HASH:=		9102253214dea6ae10c2ac966ea1ed2155d22202390b532d1dea64935c518ada
 PKG_DESCR:=		cross platform serialization library
 PKG_SECTION:=		libs/misc
 PKG_BUILDDEP:=		flatbuffers-host

+ 1 - 2
package/gnupg2/Makefile

@@ -28,6 +28,7 @@ $(eval $(call PKG_template,GNUPG2,gnupg2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEP
 $(eval $(call PKG_template,GPGV2,gpgv2,$(PKG_VERSION)-$(PKG_RELEASE),$(PKG_DEPENDS),$(PKG_DESCR),$(PKG_SECTION)))
 
 CONFIGURE_ARGS+=	--disable-dirmngr \
+			--disable-keyboxd \
 			--disable-gpgsm \
 			--disable-scdaemon \
 			--disable-card-support \
@@ -46,10 +47,8 @@ gpgv2-install:
 
 gnupg2-install:
 	$(INSTALL_DIR) $(IDIR_GNUPG2)/usr/bin/
-	$(INSTALL_DIR) $(IDIR_GNUPG2)/usr/libexec/
 	$(INSTALL_BIN) $(WRKBUILD)/g10/gpg $(IDIR_GNUPG2)/usr/bin/
 	$(INSTALL_BIN) $(WRKBUILD)/agent/gpg-agent $(IDIR_GNUPG2)/usr/bin/
-	$(INSTALL_BIN) $(WRKBUILD)/kbx/keyboxd $(IDIR_GNUPG2)/usr/libexec/
 	# we need root privileges for secure memory (locked pages)
 	chmod u+s $(IDIR_GNUPG2)/usr/bin/gpg
 

+ 2 - 2
package/gnutls/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		gnutls
-PKG_VERSION:=		3.8.9
+PKG_VERSION:=		3.8.10
 PKG_RELEASE:=		1
-PKG_HASH:=		69e113d802d1670c4d5ac1b99040b1f2d5c7c05daec5003813c049b5184820ed
+PKG_HASH:=		db7fab7cce791e7727ebbef2334301c821d79a550ec55c9ef096b610b03eb6b7
 PKG_DESCR:=		transport layer security library
 PKG_SECTION:=		libs/crypto
 PKG_DEPENDS:=		libgcrypt libtasn1 zlib libnettle libgmp libunistring

+ 27 - 21
package/kodi/Makefile

@@ -4,29 +4,29 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		kodi
-PKG_VERSION:=		21.0b2
+PKG_VERSION:=		21.2
 PKG_RELEASE:=		1
-PKG_HASH:=		b9d6ecbb8769cdfe00cbbe5da5c330a7624eee50cffb87d87f6271033f1ee74b
+PKG_HASH:=		da3a5df663684664b9383b65f1c06568222629d935084a59e4e641fcdcb6c383
 PKG_DESCR:=		software media player
 PKG_SECTION:=		mm/video
-PKG_DEPENDS:=		python3 libsquish libressl libxz libfmt rapidjson
+PKG_DEPENDS:=		python3 libsquish libopenssl libfmt rapidjson libpcre
 PKG_DEPENDS+=		libass libmpeg2 libmad libmodplug libcurl libxshmfence
-PKG_DEPENDS+=		libflac libbz2 libtiff libnettle librtmp liblzo
+PKG_DEPENDS+=		libflac libbz2 libtiff libnettle librtmp liblzo libXext
 PKG_DEPENDS+=		yajl tinyxml libsqlite libpcrecpp libncurses libpng
-PKG_DEPENDS+=		libpcre libcdio libfreetype libsamplerate libuuid
-PKG_DEPENDS+=		taglib libjasper libmp3lame libgpg-error giflib
+PKG_DEPENDS+=		libpcre2 libcdio libfreetype libsamplerate libuuid
+PKG_DEPENDS+=		taglib libjasper libmp3lame libgpg-error giflib nghttp2
 PKG_DEPENDS+=		glib libdcadec libffmpeg libxvidcore libiconv harfbuzz
 PKG_DEPENDS+=		flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
 PKG_DEPENDS+=		xkeyboard-config tinyxml2 libdisplay-info libudfread
 PKG_BUILDDEP:=		python3 libass ffmpeg rtmpdump libiconv libudfread
 PKG_BUILDDEP+=		libmpeg2 libmad libjpeg-turbo fmt rapidjson
 PKG_BUILDDEP+=		curl flac bzip2 libtiff yajl cmake-host libdisplay-info
-PKG_BUILDDEP+=		tinyxml tinyxml2 sqlite pcre libcdio freetype libpng
+PKG_BUILDDEP+=		tinyxml tinyxml2 sqlite pcre2 libcdio freetype libpng
 PKG_BUILDDEP+=		libsamplerate taglib libjasper giflib xkeyboard-config
 PKG_BUILDDEP+=		glib libmodplug libgpg-error xvidcore libxshmfence
 PKG_BUILDDEP+=		swig-host liblzo-host libpng-host libjpeg-turbo-host
 PKG_BUILDDEP+=		zip-host unzip-host giflib-host libsquish libdcadec
-PKG_BUILDDEP+=		libcrossguid libressl xz bzip2 liblzo harfbuzz
+PKG_BUILDDEP+=		libcrossguid openssl bzip2 liblzo harfbuzz pcre
 PKG_BUILDDEP+=		flatbuffers fstrcmp spdlog mesa libinput libxkbcommon
 PKG_NEEDS:=		threads c++ data iconv
 PKG_URL:=		http://kodi.tv/
@@ -36,7 +36,7 @@ DISTFILES:=		$(PKG_VERSION)-Omega.tar.gz
 WRKDIST=		${WRKDIR}/xbmc-$(PKG_VERSION)-Omega
 WRKBUILD=               $(WRKDIR)/$(PKG_NAME)-obj
 
-PKG_SYSTEM_DEPENDS:=	raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5
+PKG_SYSTEM_DEPENDS:=	qemu-x86_64 raspberry-pi raspberry-pi2 raspberry-pi3 raspberry-pi4 raspberry-pi4-64 rockpi4-plus raspberry-pi5
 
 PKG_FLAVOURS_KODI:=	WITH_ALSA WITH_CEC WITH_PULSEAUDIO WITH_SMB
 PKG_FLAVOURS_KODI+=	WITH_MICROHTTPD WITH_SSH WITH_AVAHI
@@ -69,17 +69,18 @@ $(eval $(call PKG_template,KODI,kodi,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS
 HOST_CXXFLAGS:=		-DTARGET_POSIX -DTARGET_LINUX -D_LINUX -I$(WRKSRC)/xbmc/linux
 CONFIG_STYLE:=		cmake
 CMAKE_FLAGS+= 		-DENABLE_CCACHE=OFF \
+			-DENABLE_TESTING=OFF \
 			-DCMAKE_BUILD_TYPE=Release \
 			-DVERBOSE=ON \
 			-DENABLE_DVDCSS=ON \
-			-DENABLE_INTERNAL_CROSSGUID=OFF \
 			-DENABLE_INTERNAL_FFMPEG=OFF \
+			-DENABLE_INTERNAL_CROSSGUID=OFF \
 			-DENABLE_INTERNAL_RapidJSON=OFF \
 			-DWITH_FFMPEG=$(STAGING_TARGET_DIR)/usr \
 			-DPYTHON_EXECUTABLE=$(STAGING_HOST_DIR)/usr/bin/python3 \
-			-DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.11 \
-			-DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.11 \
-			-DPYTHON_VER=3.11 \
+			-DPYTHON_INCLUDE_DIRS=$(STAGING_TARGET_DIR)/usr/include/python3.13 \
+			-DPYTHON_PATH=$(STAGING_TARGET_DIR)/usr/lib/python3.13 \
+			-DPYTHON_VER=3.13 \
 			-DKODI_DEPENDSBUILD=OFF \
 			-DENABLE_OPENSSL=ON \
 			-DENABLE_MYSQLCLIENT=OFF \
@@ -99,9 +100,8 @@ CMAKE_FLAGS+= 		-DENABLE_CCACHE=OFF \
 			-DENABLE_PLIST=OFF \
 			-DNATIVEPREFIX=$(STAGING_HOST_DIR)/usr \
 			-DDEPENDS_PATH=$(STAGING_TARGET_DIR)/usr \
-			-DWITH_TEXTUREPACKER=$(STAGING_HOST_DIR)/usr/bin/TexturePacker \
 			-DWITH_JSONSCHEMABUILDER=$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder \
-			-DCMAKE_EXE_LINKER_FLAGS=-latomic \
+			-DCMAKE_EXE_LINKER_FLAGS="-latomic -liconv" \
 			-DLIBDVDCSS_URL=$(DL_DIR)/libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz \
 			-DLIBDVDNAV_URL=$(DL_DIR)/libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz \
 			-DLIBDVDREAD_URL=$(DL_DIR)/libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz
@@ -112,10 +112,17 @@ CMAKE_FLAGS+=		-DWITH_ARCH=aarch64 \
 			-DENABLE_NEON=OFF
 endif
 ifeq ($(ADK_TARGET_ARCH_ARM),y)
-			-DWITH_ARCH=arm \
+CMAKE_FLAGS+=		-DWITH_ARCH=arm \
 			-DWITH_CPU=arm \
 			-DENABLE_NEON=ON
 endif
+ifeq ($(ADK_TARGET_ARCH_X86_64),y)
+CMAKE_FLAGS+=		-DWITH_ARCH=x86_64 \
+			-DAPP_RENDER_SYSTEM=gl \
+			-DCORE_PLATFORM_NAME=x11 \
+			-DENABLE_OPENGL=ON \
+			-DENABLE_X11=ON
+endif
 
 ifeq ($(ADK_TARGET_BOARD_BCM28XX),y)
 CMAKE_FLAGS+=		-DCORE_PLATFORM_NAME=gbm \
@@ -162,17 +169,16 @@ CMAKE_FLAGS+=		-DENABLE_SSH=OFF
 endif
 
 XAKE_FLAGS+=		VERBOSE=1
-TARGET_LDFLAGS+=	-latomic -liconv
 
 KODI_LIBDVDCSS_VERSION 	= 1.4.3-Next-Nexus-Alpha2-2
 KODI_LIBDVDNAV_VERSION 	= 6.1.1-Next-Nexus-Alpha2-2
 KODI_LIBDVDREAD_VERSION = 6.1.3-Next-Nexus-Alpha2-2
 
 pre-configure:
-	#(cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .)
-	#PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src
-	#cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \
-	#	$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder
+	(cd $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src && PATH='$(HOST_PATH)' cmake .)
+	PATH='$(HOST_PATH)' make -C $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src
+	cp $(WRKSRC)/tools/depends/native/JsonSchemaBuilder/src/JsonSchemaBuilder \
+		$(STAGING_HOST_DIR)/usr/bin/JsonSchemaBuilder
 	#(cd $(WRKSRC)/tools/depends/native/TexturePacker/src && PATH='$(HOST_PATH)' cmake \
 	#	-DKODI_SOURCE_DIR=$(WRKSRC) \
 	#	-DCMAKE_MODULE_PATH=$(WRKSRC)/cmake/modules \

+ 1 - 1
package/kodi/files/kodi.init

@@ -13,7 +13,7 @@ autostart)
 	;;
 start)
 	if [ ! -d /data/kodi ]; then
-		mkdir /data/kodi
+		mkdir -p /data/kodi
 	fi
 	cd / && /usr/lib/kodi/kodi-gbm &
 	;;

+ 744 - 0
package/kodi/patches/ffmpeg7-debian.patch

@@ -0,0 +1,744 @@
+From 5f731d1c62ebee57c0a545fe255c53b8018ca754 Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Thu, 11 Apr 2024 17:11:32 +0200
+Subject: [PATCH 1/7] [ffmpeg] Update to 7.0
+
+---
+ cmake/modules/FindFFMPEG.cmake                |  16 +--
+ tools/buildsteps/windows/ffmpeg_options.txt   |   1 -
+ tools/depends/target/ffmpeg/CMakeLists.txt    |   6 +-
+ tools/depends/target/ffmpeg/FFMPEG-VERSION    |   4 +-
+ xbmc/cdrip/EncoderFFmpeg.cpp                  |   2 +-
+ xbmc/cdrip/EncoderFFmpeg.h                    |   2 +-
+ .../ActiveAE/ActiveAEResampleFFMPEG.cpp       | 110 +++++++++---------
+ .../DVDDemuxers/DVDDemuxFFmpeg.cpp            |  71 +----------
+ 8 files changed, 69 insertions(+), 143 deletions(-)
+
+diff --git a/cmake/modules/FindFFMPEG.cmake b/cmake/modules/FindFFMPEG.cmake
+index 6c6bf973de..6bd05e9f3d 100644
+--- a/cmake/modules/FindFFMPEG.cmake
++++ b/cmake/modules/FindFFMPEG.cmake
+@@ -163,14 +163,14 @@ if(WITH_FFMPEG)
+   set(REQUIRED_FFMPEG_VERSION undef)
+ else()
+   # required ffmpeg library versions
+-  set(REQUIRED_FFMPEG_VERSION 6.0.0)
+-  set(_avcodec_ver ">=60.2.100")
+-  set(_avfilter_ver ">=9.3.100")
+-  set(_avformat_ver ">=60.3.100")
+-  set(_avutil_ver ">=58.2.100")
+-  set(_postproc_ver ">=57.1.100")
+-  set(_swresample_ver ">=4.10.100")
+-  set(_swscale_ver ">=7.1.100")
++  set(REQUIRED_FFMPEG_VERSION 7.0.0)
++  set(_avcodec_ver ">=61.3.100")
++  set(_avfilter_ver ">=10.1.100")
++  set(_avformat_ver ">=61.1.100")
++  set(_avutil_ver ">=59.8.100")
++  set(_postproc_ver ">=58.1.100")
++  set(_swresample_ver ">=5.1.100")
++  set(_swscale_ver ">=8.1.100")
+ endif()
+ 
+ # Allows building with external ffmpeg not found in system paths,
+diff --git a/tools/buildsteps/windows/ffmpeg_options.txt b/tools/buildsteps/windows/ffmpeg_options.txt
+index 5034ff26c4..776c0b4b35 100644
+--- a/tools/buildsteps/windows/ffmpeg_options.txt
++++ b/tools/buildsteps/windows/ffmpeg_options.txt
+@@ -1,5 +1,4 @@
+ --disable-avdevice
+---disable-crystalhd
+ --disable-cuda
+ --disable-cuvid
+ --disable-devices
+diff --git a/tools/depends/target/ffmpeg/FFMPEG-VERSION b/tools/depends/target/ffmpeg/FFMPEG-VERSION
+index f2ba09402e..60b8887de3 100644
+--- a/tools/depends/target/ffmpeg/FFMPEG-VERSION
++++ b/tools/depends/target/ffmpeg/FFMPEG-VERSION
+@@ -1,5 +1,5 @@
+ LIBNAME=ffmpeg
+-VERSION=6.0.1
++VERSION=7.0.1
+ ARCHIVE=$(LIBNAME)-$(VERSION).tar.gz
+-SHA512=945e34840092dc0fd3824eb1af2be79868af2afb4fe13159b19a9bcfc464cc4d53243c13ff065199290e9393ddbf4b1c5c8abccf83a31a31d6c7490e499fd1fc
++SHA512=43b639b0bc0597e95dea2dce3e925f4b71ca8c4d9eadaef614941053e287f2d5c2e78d95413f0f7142da0f6ea1dbf443457e4fa1c2296cd8cf4081c185ed9c04
+ 
+diff --git a/xbmc/cdrip/EncoderFFmpeg.cpp b/xbmc/cdrip/EncoderFFmpeg.cpp
+index 85f5fa412e..907d2591dd 100644
+--- a/xbmc/cdrip/EncoderFFmpeg.cpp
++++ b/xbmc/cdrip/EncoderFFmpeg.cpp
+@@ -235,7 +235,7 @@ void CEncoderFFmpeg::SetTag(const std::string& tag, const std::string& value)
+   av_dict_set(&m_formatCtx->metadata, tag.c_str(), value.c_str(), 0);
+ }
+ 
+-int CEncoderFFmpeg::avio_write_callback(void* opaque, uint8_t* buf, int buf_size)
++int CEncoderFFmpeg::avio_write_callback(void* opaque, const uint8_t* buf, int buf_size)
+ {
+   CEncoderFFmpeg* enc = static_cast<CEncoderFFmpeg*>(opaque);
+   if (enc->Write(buf, buf_size) != buf_size)
+diff --git a/xbmc/cdrip/EncoderFFmpeg.h b/xbmc/cdrip/EncoderFFmpeg.h
+index 48471a4b10..4e9f0f5bbb 100644
+--- a/xbmc/cdrip/EncoderFFmpeg.h
++++ b/xbmc/cdrip/EncoderFFmpeg.h
+@@ -33,7 +33,7 @@ public:
+   bool Close() override;
+ 
+ private:
+-  static int avio_write_callback(void* opaque, uint8_t* buf, int buf_size);
++  static int avio_write_callback(void* opaque, const uint8_t* buf, int buf_size);
+   static int64_t avio_seek_callback(void* opaque, int64_t offset, int whence);
+ 
+   void SetTag(const std::string& tag, const std::string& value);
+diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp
+index e897cbd3ea..6fce0af981 100644
+--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp
++++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEResampleFFMPEG.cpp
+@@ -66,51 +66,7 @@ bool CActiveAEResampleFFMPEG::Init(SampleConfig dstConfig, SampleConfig srcConfi
+   AVChannelLayout dstChLayout = {};
+   AVChannelLayout srcChLayout = {};
+ 
+-  av_channel_layout_from_mask(&dstChLayout, m_dst_chan_layout);
+-  av_channel_layout_from_mask(&srcChLayout, m_src_chan_layout);
+-
+-  int ret = swr_alloc_set_opts2(&m_pContext, &dstChLayout, m_dst_fmt, m_dst_rate, &srcChLayout,
+-                                m_src_fmt, m_src_rate, 0, NULL);
+-
+-  if (ret)
+-  {
+-    CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - create context failed");
+-    return false;
+-  }
+-
+-  if(quality == AE_QUALITY_HIGH)
+-  {
+-    av_opt_set_double(m_pContext, "cutoff", 1.0, 0);
+-    av_opt_set_int(m_pContext,"filter_size", 256, 0);
+-  }
+-  else if(quality == AE_QUALITY_MID)
+-  {
+-    // 0.97 is default cutoff so use (1.0 - 0.97) / 2.0 + 0.97
+-    av_opt_set_double(m_pContext, "cutoff", 0.985, 0);
+-    av_opt_set_int(m_pContext,"filter_size", 64, 0);
+-  }
+-  else if(quality == AE_QUALITY_LOW)
+-  {
+-    av_opt_set_double(m_pContext, "cutoff", 0.97, 0);
+-    av_opt_set_int(m_pContext,"filter_size", 32, 0);
+-  }
+-
+-  if (m_dst_fmt == AV_SAMPLE_FMT_S32 || m_dst_fmt == AV_SAMPLE_FMT_S32P)
+-  {
+-    av_opt_set_int(m_pContext, "output_sample_bits", m_dst_bits, 0);
+-  }
+-
+-  // tell resampler to clamp float values
+-  // not required for sink stage (remapLayout == true)
+-  if ((m_dst_fmt == AV_SAMPLE_FMT_FLT || m_dst_fmt == AV_SAMPLE_FMT_FLTP) &&
+-      (m_src_fmt == AV_SAMPLE_FMT_FLT || m_src_fmt == AV_SAMPLE_FMT_FLTP) &&
+-      !remapLayout && normalize)
+-  {
+-     av_opt_set_double(m_pContext, "rematrix_maxval", 1.0, 0);
+-  }
+-
+-  av_opt_set_double(m_pContext, "center_mix_level", centerMix, 0);
+-
++  bool hasMatrix = false;
+   if (remapLayout)
+   {
+     // one-to-one mapping of channels
+@@ -120,28 +76,19 @@ bool CActiveAEResampleFFMPEG::Init(SampleConfig dstConfig, SampleConfig srcConfi
+     m_dst_chan_layout = 0;
+     for (unsigned int out=0; out<remapLayout->Count(); out++)
+     {
+-      m_dst_chan_layout += ((uint64_t)1) << out;
++      m_dst_chan_layout += static_cast<uint64_t>(1) << out;
+       int idx = CAEUtil::GetAVChannelIndex((*remapLayout)[out], m_src_chan_layout);
+       if (idx >= 0)
+       {
+         m_rematrix[out][idx] = 1.0;
+       }
+     }
+-
+-    av_opt_set_int(m_pContext, "out_channel_count", m_dst_channels, 0);
+-    av_opt_set_int(m_pContext, "out_channel_layout", m_dst_chan_layout, 0);
+-
+-    if (swr_set_matrix(m_pContext, (const double*)m_rematrix, AE_CH_MAX) < 0)
+-    {
+-      CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - setting channel matrix failed");
+-      return false;
+-    }
++    hasMatrix = true;
+   }
+   // stereo upmix
+   else if (upmix && m_src_channels == 2 && m_dst_channels > 2)
+   {
+     memset(m_rematrix, 0, sizeof(m_rematrix));
+-    av_channel_layout_uninit(&dstChLayout);
+     av_channel_layout_from_mask(&dstChLayout, m_dst_chan_layout);
+     for (int out=0; out<m_dst_channels; out++)
+     {
+@@ -171,15 +118,64 @@ bool CActiveAEResampleFFMPEG::Init(SampleConfig dstConfig, SampleConfig srcConfi
+       }
+     }
+ 
++    hasMatrix = true;
+     av_channel_layout_uninit(&dstChLayout);
++  }
++
++  av_channel_layout_from_mask(&dstChLayout, m_dst_chan_layout);
++  av_channel_layout_from_mask(&srcChLayout, m_src_chan_layout);
++
++  int ret = swr_alloc_set_opts2(&m_pContext, &dstChLayout, m_dst_fmt, m_dst_rate, &srcChLayout,
++                                m_src_fmt, m_src_rate, 0, NULL);
++
++  if (ret)
++  {
++    CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - create context failed");
++    return false;
++  }
+ 
+-    if (swr_set_matrix(m_pContext, (const double*)m_rematrix, AE_CH_MAX) < 0)
++  if (hasMatrix)
++  {
++    if (swr_set_matrix(m_pContext, reinterpret_cast<const double*>(m_rematrix), AE_CH_MAX) < 0)
+     {
+       CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - setting channel matrix failed");
+       return false;
+     }
+   }
+ 
++  if (quality == AE_QUALITY_HIGH)
++  {
++    av_opt_set_double(m_pContext, "cutoff", 1.0, 0);
++    av_opt_set_int(m_pContext, "filter_size", 256, 0);
++  }
++  else if (quality == AE_QUALITY_MID)
++  {
++    // 0.97 is default cutoff so use (1.0 - 0.97) / 2.0 + 0.97
++    av_opt_set_double(m_pContext, "cutoff", 0.985, 0);
++    av_opt_set_int(m_pContext, "filter_size", 64, 0);
++  }
++  else if (quality == AE_QUALITY_LOW)
++  {
++    av_opt_set_double(m_pContext, "cutoff", 0.97, 0);
++    av_opt_set_int(m_pContext, "filter_size", 32, 0);
++  }
++
++  if (m_dst_fmt == AV_SAMPLE_FMT_S32 || m_dst_fmt == AV_SAMPLE_FMT_S32P)
++  {
++    av_opt_set_int(m_pContext, "output_sample_bits", m_dst_bits, 0);
++  }
++
++  // tell resampler to clamp float values
++  // not required for sink stage (remapLayout == true)
++  if ((m_dst_fmt == AV_SAMPLE_FMT_FLT || m_dst_fmt == AV_SAMPLE_FMT_FLTP) &&
++      (m_src_fmt == AV_SAMPLE_FMT_FLT || m_src_fmt == AV_SAMPLE_FMT_FLTP) && !remapLayout &&
++      normalize)
++  {
++    av_opt_set_double(m_pContext, "rematrix_maxval", 1.0, 0);
++  }
++
++  av_opt_set_double(m_pContext, "center_mix_level", centerMix, 0);
++
+   if(swr_init(m_pContext) < 0)
+   {
+     CLog::Log(LOGERROR, "CActiveAEResampleFFMPEG::Init - init resampler failed");
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+index 1aebc3dcbc..174df53f16 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+@@ -376,74 +376,7 @@ bool CDVDDemuxFFmpeg::Open(const std::shared_ptr<CDVDInputStream>& pInput, bool
+     if (iformat == nullptr)
+     {
+       // let ffmpeg decide which demuxer we have to open
+-      bool trySPDIFonly = (m_pInput->GetContent() == "audio/x-spdif-compressed");
+-
+-      if (!trySPDIFonly)
+-        av_probe_input_buffer(m_ioContext, &iformat, strFile.c_str(), NULL, 0, 0);
+-
+-      // Use the more low-level code in case we have been built against an old
+-      // FFmpeg without the above av_probe_input_buffer(), or in case we only
+-      // want to probe for spdif (DTS or IEC 61937) compressed audio
+-      // specifically, or in case the file is a wav which may contain DTS or
+-      // IEC 61937 (e.g. ac3-in-wav) and we want to check for those formats.
+-      if (trySPDIFonly || (iformat && strcmp(iformat->name, "wav") == 0))
+-      {
+-        AVProbeData pd;
+-        int probeBufferSize = 32768;
+-        std::unique_ptr<uint8_t[]> probe_buffer (new uint8_t[probeBufferSize + AVPROBE_PADDING_SIZE]);
+-
+-        // init probe data
+-        pd.buf = probe_buffer.get();
+-        pd.filename = strFile.c_str();
+-
+-        // read data using avformat's buffers
+-        pd.buf_size = avio_read(m_ioContext, pd.buf, probeBufferSize);
+-        if (pd.buf_size <= 0)
+-        {
+-          CLog::Log(LOGERROR, "{} - error reading from input stream, {}", __FUNCTION__,
+-                    CURL::GetRedacted(strFile));
+-          return false;
+-        }
+-        memset(pd.buf + pd.buf_size, 0, AVPROBE_PADDING_SIZE);
+-
+-        // restore position again
+-        avio_seek(m_ioContext , 0, SEEK_SET);
+-
+-        // the advancedsetting is for allowing the user to force outputting the
+-        // 44.1 kHz DTS wav file as PCM, so that an A/V receiver can decode
+-        // it (this is temporary until we handle 44.1 kHz passthrough properly)
+-        if (trySPDIFonly || (iformat && strcmp(iformat->name, "wav") == 0 && !CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_VideoPlayerIgnoreDTSinWAV))
+-        {
+-          // check for spdif and dts
+-          // This is used with wav files and audio CDs that may contain
+-          // a DTS or AC3 track padded for S/PDIF playback. If neither of those
+-          // is present, we assume it is PCM audio.
+-          // AC3 is always wrapped in iec61937 (ffmpeg "spdif"), while DTS
+-          // may be just padded.
+-          const AVInputFormat* iformat2 = av_find_input_format("spdif");
+-          if (iformat2 && iformat2->read_probe(&pd) > AVPROBE_SCORE_MAX / 4)
+-          {
+-            iformat = iformat2;
+-          }
+-          else
+-          {
+-            // not spdif or no spdif demuxer, try dts
+-            iformat2 = av_find_input_format("dts");
+-
+-            if (iformat2 && iformat2->read_probe(&pd) > AVPROBE_SCORE_MAX / 4)
+-            {
+-              iformat = iformat2;
+-            }
+-            else if (trySPDIFonly)
+-            {
+-              // not dts either, return false in case we were explicitly
+-              // requested to only check for S/PDIF padded compressed audio
+-              CLog::Log(LOGDEBUG, "{} - not spdif or dts file, falling back", __FUNCTION__);
+-              return false;
+-            }
+-          }
+-        }
+-      }
++      av_probe_input_buffer(m_ioContext, &iformat, strFile.c_str(), NULL, 0, 0);
+ 
+       if (!iformat)
+       {
+@@ -1353,7 +1286,7 @@ bool CDVDDemuxFFmpeg::SeekTime(double time, bool backwards, double* startpts)
+ 
+     if (ret >= 0)
+     {
+-      if (m_pFormatContext->iformat->read_seek)
++      if (!(m_pFormatContext->iformat->flags & AVFMT_NOTIMESTAMPS))
+         m_seekToKeyFrame = true;
+       m_currentPts = DVD_NOPTS_VALUE;
+     }
+-- 
+2.43.0
+
+
+From 17ce23505f171235ac6bfff7fbaa3a5b4bc9a8bf Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Thu, 11 Apr 2024 17:13:36 +0200
+Subject: [PATCH 2/7] [ffmpeg] Remove deprecated use of FF_API_INTERLACED_FRAME
+
+---
+ .../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp            | 5 +++--
+ .../VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp  | 9 +++++----
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp         | 6 ++++--
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/VTB.cpp           | 2 +-
+ 4 files changed, 13 insertions(+), 9 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+index eb2943bb8c..4da0722d5c 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+@@ -582,8 +582,9 @@ void CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture)
+ 
+   pVideoPicture->iRepeatPicture = 0;
+   pVideoPicture->iFlags = 0;
+-  pVideoPicture->iFlags |= m_pFrame->interlaced_frame ? DVP_FLAG_INTERLACED : 0;
+-  pVideoPicture->iFlags |= m_pFrame->top_field_first ? DVP_FLAG_TOP_FIELD_FIRST : 0;
++  pVideoPicture->iFlags |= m_pFrame->flags & AV_FRAME_FLAG_INTERLACED ? DVP_FLAG_INTERLACED : 0;
++  pVideoPicture->iFlags |=
++      m_pFrame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? DVP_FLAG_TOP_FIELD_FIRST : 0;
+   pVideoPicture->iFlags |= m_pFrame->data[0] ? 0 : DVP_FLAG_DROPPED;
+ 
+   if (m_codecControlFlags & DVD_CODEC_CTRL_DROP)
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+index d66378fa07..9586d211e9 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+@@ -792,12 +792,12 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecFFmpeg::GetPicture(VideoPicture* pVideoPi
+   }
+   m_dropCtrl.Process(framePTS, m_pCodecContext->skip_frame > AVDISCARD_DEFAULT);
+ 
+-  if (m_pDecodedFrame->key_frame)
++  if (m_pDecodedFrame->flags & AV_FRAME_FLAG_KEY)
+   {
+     m_started = true;
+     m_iLastKeyframe = m_pCodecContext->has_b_frames + 2;
+   }
+-  if (m_pDecodedFrame->interlaced_frame)
++  if (m_pDecodedFrame->flags & AV_FRAME_FLAG_INTERLACED)
+     m_interlaced = true;
+   else
+     m_interlaced = false;
+@@ -1013,8 +1013,9 @@ bool CDVDVideoCodecFFmpeg::GetPictureCommon(VideoPicture* pVideoPicture)
+ 
+   pVideoPicture->iRepeatPicture = 0.5 * m_pFrame->repeat_pict;
+   pVideoPicture->iFlags = 0;
+-  pVideoPicture->iFlags |= m_pFrame->interlaced_frame ? DVP_FLAG_INTERLACED : 0;
+-  pVideoPicture->iFlags |= m_pFrame->top_field_first ? DVP_FLAG_TOP_FIELD_FIRST: 0;
++  pVideoPicture->iFlags |= m_pFrame->flags & AV_FRAME_FLAG_INTERLACED ? DVP_FLAG_INTERLACED : 0;
++  pVideoPicture->iFlags |=
++      m_pFrame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? DVP_FLAG_TOP_FIELD_FIRST : 0;
+ 
+   if (m_codecControlFlags & DVD_CODEC_CTRL_DROP)
+   {
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+index fb7606e0d0..a62fa6273d 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+@@ -3068,8 +3068,10 @@ bool CFFmpegPostproc::AddPicture(CVaapiDecodedPicture &inPic)
+   m_pFilterFrameIn->height = m_config.vidHeight;
+   m_pFilterFrameIn->linesize[0] = image.pitches[0];
+   m_pFilterFrameIn->linesize[1] = image.pitches[1];
+-  m_pFilterFrameIn->interlaced_frame = (inPic.DVDPic.iFlags & DVP_FLAG_INTERLACED) ? 1 : 0;
+-  m_pFilterFrameIn->top_field_first = (inPic.DVDPic.iFlags & DVP_FLAG_TOP_FIELD_FIRST) ? 1 : 0;
++  if (inPic.DVDPic.iFlags & DVP_FLAG_INTERLACED)
++    m_pFilterFrameIn->flags |= AV_FRAME_FLAG_INTERLACED;
++  if (inPic.DVDPic.iFlags & DVP_FLAG_TOP_FIELD_FIRST)
++    m_pFilterFrameIn->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
+ 
+   if (inPic.DVDPic.pts == DVD_NOPTS_VALUE)
+     m_pFilterFrameIn->pts = AV_NOPTS_VALUE;
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VTB.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VTB.cpp
+index 1f71f643d2..567d63559d 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VTB.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VTB.cpp
+@@ -196,7 +196,7 @@ CDVDVideoCodec::VCReturn CDecoder::Decode(AVCodecContext* avctx, AVFrame* frame)
+ 
+   if(frame)
+   {
+-    if (frame->interlaced_frame)
++    if (frame->flags & AV_FRAME_FLAG_INTERLACED)
+       return CDVDVideoCodec::VC_FATAL;
+ 
+     if (m_renderBuffer)
+-- 
+2.43.0
+
+
+From 01aa01d5c096ff7554c79493eab65dd41b00402f Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Thu, 11 Apr 2024 17:14:48 +0200
+Subject: [PATCH 3/7] [ffmpeg] Remove deprecated use of avcodec_close
+
+---
+ xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+index 0cdf8c3864..477a2e82ec 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+@@ -188,7 +188,6 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
+       if (!avcodec_open2(stream->m_context, stream->m_context->codec, nullptr))
+       {
+         avcodec_send_packet(stream->m_context, avpkt);
+-        avcodec_close(stream->m_context);
+       }
+     }
+     av_packet_free(&avpkt);
+-- 
+2.43.0
+
+
+From b509d439c18bebcf35cc80d18a0997caf6eda8a6 Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Thu, 11 Apr 2024 17:15:16 +0200
+Subject: [PATCH 4/7] [ffmpeg] Remove deprecated use av_stream_get_side_data
+
+---
+ .../DVDDemuxers/DVDDemuxFFmpeg.cpp            | 53 +++++++++++--------
+ 1 file changed, 32 insertions(+), 21 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+index 174df53f16..f917bf719f 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+@@ -1630,42 +1630,49 @@ CDemuxStream* CDVDDemuxFFmpeg::AddStream(int streamIdx)
+         st->colorRange = pStream->codecpar->color_range;
+         st->hdr_type = DetermineHdrType(pStream);
+ 
+-        // https://github.com/FFmpeg/FFmpeg/blob/release/5.0/doc/APIchanges
+-        size_t size = 0;
+-        uint8_t* side_data = nullptr;
++        // https://github.com/FFmpeg/FFmpeg/blob/release/7.0/doc/APIchanges
++        const AVPacketSideData* sideData = nullptr;
+ 
+         if (st->hdr_type == StreamHdrType::HDR_TYPE_DOLBYVISION)
+         {
+-          side_data = av_stream_get_side_data(pStream, AV_PKT_DATA_DOVI_CONF, &size);
+-          if (side_data && size)
++
++          sideData =
++              av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                                      pStream->codecpar->nb_coded_side_data, AV_PKT_DATA_DOVI_CONF);
++          if (sideData && sideData->size)
+           {
+-            st->dovi = *reinterpret_cast<AVDOVIDecoderConfigurationRecord*>(side_data);
++            st->dovi = *reinterpret_cast<const AVDOVIDecoderConfigurationRecord*>(sideData->data);
+           }
+         }
+ 
+-        side_data = av_stream_get_side_data(pStream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, &size);
+-        if (side_data && size)
++        sideData = av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                                           pStream->codecpar->nb_coded_side_data,
++                                           AV_PKT_DATA_MASTERING_DISPLAY_METADATA);
++        if (sideData && sideData->size)
+         {
+           st->masteringMetaData = std::make_shared<AVMasteringDisplayMetadata>(
+-              *reinterpret_cast<AVMasteringDisplayMetadata*>(side_data));
++              *reinterpret_cast<const AVMasteringDisplayMetadata*>(sideData->data));
+         }
+ 
+-        side_data = av_stream_get_side_data(pStream, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, &size);
+-        if (side_data && size)
++        sideData = av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                                           pStream->codecpar->nb_coded_side_data,
++                                           AV_PKT_DATA_CONTENT_LIGHT_LEVEL);
++        if (sideData && sideData->size)
+         {
+           st->contentLightMetaData = std::make_shared<AVContentLightMetadata>(
+-              *reinterpret_cast<AVContentLightMetadata*>(side_data));
++              *reinterpret_cast<const AVContentLightMetadata*>(sideData->data));
+         }
+ 
+-        uint8_t* displayMatrixSideData =
+-            av_stream_get_side_data(pStream, AV_PKT_DATA_DISPLAYMATRIX, nullptr);
+-        if (displayMatrixSideData)
++        sideData = av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                                           pStream->codecpar->nb_coded_side_data,
++                                           AV_PKT_DATA_DISPLAYMATRIX);
++        if (sideData)
+         {
+-          const double tetha =
+-              av_display_rotation_get(reinterpret_cast<int32_t*>(displayMatrixSideData));
+-          if (!std::isnan(tetha))
++          const double theta =
++              av_display_rotation_get(reinterpret_cast<const int32_t*>(sideData->data));
++          if (!std::isnan(theta))
+           {
+-            st->iOrientation = ((static_cast<int>(-tetha) % 360) + 360) % 360;
++            st->iOrientation = ((static_cast<int>(-theta) % 360) + 360) % 360;
+           }
+         }
+ 
+@@ -2488,7 +2495,9 @@ StreamHdrType CDVDDemuxFFmpeg::DetermineHdrType(AVStream* pStream)
+ {
+   StreamHdrType hdrType = StreamHdrType::HDR_TYPE_NONE;
+ 
+-  if (av_stream_get_side_data(pStream, AV_PKT_DATA_DOVI_CONF, nullptr)) // DoVi
++  if (av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                              pStream->codecpar->nb_coded_side_data,
++                              AV_PKT_DATA_DOVI_CONF)) // DoVi
+     hdrType = StreamHdrType::HDR_TYPE_DOLBYVISION;
+   else if (pStream->codecpar->color_trc == AVCOL_TRC_SMPTE2084) // HDR10
+     hdrType = StreamHdrType::HDR_TYPE_HDR10;
+@@ -2496,7 +2505,9 @@ StreamHdrType CDVDDemuxFFmpeg::DetermineHdrType(AVStream* pStream)
+     hdrType = StreamHdrType::HDR_TYPE_HLG;
+   // file could be SMPTE2086 which FFmpeg currently returns as unknown
+   // so use the presence of static metadata to detect it
+-  else if (av_stream_get_side_data(pStream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, nullptr))
++  else if (av_packet_side_data_get(pStream->codecpar->coded_side_data,
++                                   pStream->codecpar->nb_coded_side_data,
++                                   AV_PKT_DATA_MASTERING_DISPLAY_METADATA))
+     hdrType = StreamHdrType::HDR_TYPE_HDR10;
+ 
+   return hdrType;
+-- 
+2.43.0
+
+
+From 5e7609bfee5e0559d6c29b01fbc4294d27168921 Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Thu, 11 Apr 2024 17:15:43 +0200
+Subject: [PATCH 5/7] [ffmpeg] Remove CrystalHD hw acceleration strings
+
+---
+ addons/resource.language.en_gb/resources/strings.po | 11 ++---------
+ 1 file changed, 2 insertions(+), 9 deletions(-)
+
+diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
+index 056b1747a0..292aae4a1b 100644
+--- a/addons/resource.language.en_gb/resources/strings.po
++++ b/addons/resource.language.en_gb/resources/strings.po
+@@ -7342,10 +7342,7 @@ msgctxt "#13427"
+ msgid "Allow hardware acceleration - DXVA2"
+ msgstr ""
+ 
+-#: system/settings/settings.xml
+-msgctxt "#13428"
+-msgid "Allow hardware acceleration - CrystalHD"
+-msgstr ""
++#empty string with id 13428
+ 
+ #: system/settings/settings.xml
+ msgctxt "#13429"
+@@ -19502,11 +19499,7 @@ msgctxt "#36158"
+ msgid "Enable DXVA2 hardware decoding of video files."
+ msgstr ""
+ 
+-#. Description of setting with label #13428 "Allow hardware acceleration (CrystalHD)"
+-#: system/settings/settings.xml
+-msgctxt "#36159"
+-msgid "Enable CrystalHD decoding of video files."
+-msgstr ""
++#empty string with id 36159
+ 
+ #. Description of setting with label #13429 "Allow hardware acceleration (VDADecoder)"
+ #: system/settings/settings.xml
+-- 
+2.43.0
+
+
+From 813a40bb30285b1b32a7ab6e63953eb3665f051a Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Sat, 13 Apr 2024 10:31:36 +0200
+Subject: [PATCH 6/7] [settings] Remove VideoPlayerignoredtsinwav advanced
+ setting
+
+---
+ xbmc/settings/AdvancedSettings.cpp | 2 --
+ xbmc/settings/AdvancedSettings.h   | 1 -
+ 2 files changed, 3 deletions(-)
+
+diff --git a/xbmc/settings/AdvancedSettings.cpp b/xbmc/settings/AdvancedSettings.cpp
+index cc06244799..4e2d6badd6 100644
+--- a/xbmc/settings/AdvancedSettings.cpp
++++ b/xbmc/settings/AdvancedSettings.cpp
+@@ -129,7 +129,6 @@ void CAdvancedSettings::Initialize()
+     return;
+ 
+   m_audioApplyDrc = -1.0f;
+-  m_VideoPlayerIgnoreDTSinWAV = false;
+ 
+   //default hold time of 25 ms, this allows a 20 hertz sine to pass undistorted
+   m_limiterHold = 0.025f;
+@@ -579,7 +578,6 @@ void CAdvancedSettings::ParseSettingsFile(const std::string &file)
+       GetCustomRegexps(pAudioExcludes, m_audioExcludeFromScanRegExps);
+ 
+     XMLUtils::GetFloat(pElement, "applydrc", m_audioApplyDrc);
+-    XMLUtils::GetBoolean(pElement, "VideoPlayerignoredtsinwav", m_VideoPlayerIgnoreDTSinWAV);
+ 
+     XMLUtils::GetFloat(pElement, "limiterhold", m_limiterHold, 0.0f, 100.0f);
+     XMLUtils::GetFloat(pElement, "limiterrelease", m_limiterRelease, 0.001f, 100.0f);
+diff --git a/xbmc/settings/AdvancedSettings.h b/xbmc/settings/AdvancedSettings.h
+index 3351caff55..8eabfe8240 100644
+--- a/xbmc/settings/AdvancedSettings.h
++++ b/xbmc/settings/AdvancedSettings.h
+@@ -120,7 +120,6 @@ class CAdvancedSettings : public ISettingCallback, public ISettingsHandler
+ 
+     std::string m_audioDefaultPlayer;
+     float m_audioPlayCountMinimumPercent;
+-    bool m_VideoPlayerIgnoreDTSinWAV;
+     float m_limiterHold;
+     float m_limiterRelease;
+ 
+-- 
+2.43.0
+
+
+From 03449b80c2e00a56912b9612afc11f3d53dd4a05 Mon Sep 17 00:00:00 2001
+From: Stephan Sundermann <stephansundermann@gmail.com>
+Date: Sat, 13 Apr 2024 13:07:58 +0200
+Subject: [PATCH 7/7] [ffmpeg] Use new audio DTS and ATMOS profiles
+
+---
+ .../VideoPlayer/DVDDemuxers/DVDDemux.cpp      | 20 +++++++++++++------
+ .../DVDInputStreams/InputStreamAddon.cpp      |  9 +++------
+ 2 files changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemux.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemux.cpp
+index 63fb9264a8..e9aa468dd0 100644
+--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemux.cpp
++++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemux.cpp
+@@ -15,15 +15,15 @@ std::string CDemuxStreamAudio::GetStreamType()
+   std::string strInfo;
+   switch (codec)
+   {
+-    //! @todo: With ffmpeg >= 6.1 add new AC4 codec
+     case AV_CODEC_ID_AC3:
+       strInfo = "AC3 ";
+       break;
++    case AV_CODEC_ID_AC4:
++      strInfo = "AC4 ";
++      break;
+     case AV_CODEC_ID_EAC3:
+     {
+-      //! @todo: With ffmpeg >= 6.1 add new atmos profile case
+-      // "JOC" its EAC3 Atmos underlying profile, there is no standard codec name string
+-      if (StringUtils::Contains(codecName, "JOC"))
++      if (profile == FF_PROFILE_EAC3_DDP_ATMOS)
+         strInfo = "DD+ ATMOS ";
+       else
+         strInfo = "DD+ ";
+@@ -31,7 +31,6 @@ std::string CDemuxStreamAudio::GetStreamType()
+     }
+     case AV_CODEC_ID_DTS:
+     {
+-      //! @todo: With ffmpeg >= 6.1 add new DTSX profile cases
+       switch (profile)
+       {
+         case FF_PROFILE_DTS_96_24:
+@@ -49,6 +48,12 @@ std::string CDemuxStreamAudio::GetStreamType()
+         case FF_PROFILE_DTS_HD_HRA:
+           strInfo = "DTS-HD HRA ";
+           break;
++        case FF_PROFILE_DTS_HD_MA_X:
++          strInfo = "DTS-HD MA X ";
++          break;
++        case FF_PROFILE_DTS_HD_MA_X_IMAX:
++          strInfo = "DTS-HD MA X (IMAX) ";
++          break;
+         default:
+           strInfo = "DTS ";
+           break;
+@@ -62,7 +67,10 @@ std::string CDemuxStreamAudio::GetStreamType()
+       strInfo = "MP3 ";
+       break;
+     case AV_CODEC_ID_TRUEHD:
+-      strInfo = "TrueHD ";
++      if (profile == FF_PROFILE_TRUEHD_ATMOS)
++        strInfo = "TrueHD ATMOS ";
++      else
++        strInfo = "TrueHD ";
+       break;
+     case AV_CODEC_ID_AAC:
+     {
+diff --git a/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp b/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
+index daf66ce0cd..902f38ade2 100644
+--- a/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
++++ b/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
+@@ -762,14 +762,11 @@ int CInputStreamAddon::ConvertAudioCodecProfile(STREAMCODEC_PROFILE profile)
+     case DTSCodecProfileHDExpress:
+       return FF_PROFILE_DTS_EXPRESS;
+     case DTSCodecProfileHDMAX:
+-      //! @todo: with ffmpeg >= 6.1 set the appropriate profile
+-      return FF_PROFILE_UNKNOWN; // FF_PROFILE_DTS_HD_MA_X
++      return FF_PROFILE_DTS_HD_MA_X;
+     case DTSCodecProfileHDMAIMAX:
+-      //! @todo: with ffmpeg >= 6.1 set the appropriate profile
+-      return FF_PROFILE_UNKNOWN; // FF_PROFILE_DTS_HD_MA_X_IMAX
++      return FF_PROFILE_DTS_HD_MA_X_IMAX;
+     case DDPlusCodecProfileAtmos:
+-      //! @todo: with ffmpeg >= 6.1 set the appropriate profile
+-      return FF_PROFILE_UNKNOWN; // FF_PROFILE_EAC3_DDP_ATMOS
++      return FF_PROFILE_EAC3_DDP_ATMOS;
+     default:
+       return FF_PROFILE_UNKNOWN;
+   }
+
+

+ 2 - 6
package/libffi/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		libffi
-PKG_VERSION:=		3.4.7
+PKG_VERSION:=		3.5.2
 PKG_RELEASE:=		1
-PKG_HASH:=		138607dee268bdecf374adf9144c00e839e38541f75f24a1fcf18b78fda48b2d
+PKG_HASH:=		f3a3082a23b37c293a4fcd1053147b371f2ff91fa7ea1b2a52e335676bac82dc
 PKG_DESCR:=		foreign function interface library
 PKG_SECTION:=		libs/misc
 HOST_BUILDDEP:=		libtool-host
@@ -25,10 +25,6 @@ $(eval $(call PKG_template,LIBFFI,libffi,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEP
 HOST_CONFIGURE_ARGS+=	--disable-builddir --with-pic --disable-symvers
 CONFIGURE_ARGS+=	--disable-builddir --with-pic --disable-symvers
 
-ifeq ($(ADK_PACKAGE_OPENJDK7),y)
-CONFIGURE_ARGS+=	--enable-static
-endif
-
 libffi-install:
 	${INSTALL_DIR} ${IDIR_LIBFFI}/usr/lib
 	${CP} ${WRKINST}/usr/lib*/libffi.so* ${IDIR_LIBFFI}/usr/lib

+ 2 - 2
package/libjpeg-turbo/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libjpeg-turbo
-PKG_VERSION:=		3.0.3
+PKG_VERSION:=		3.1.2
 PKG_RELEASE:=		1
-PKG_HASH:=		a649205a90e39a548863a3614a9576a3fb4465f8e8e66d54999f127957c25b21
+PKG_HASH:=		560f6338b547544c4f9721b18d8b87685d433ec78b3c644c70d77adad22c55e6
 PKG_DESCR:=		jpeg image library
 PKG_SECTION:=		libs/image
 PKG_BUILDDEP:=		cmake-host yasm-host

+ 2 - 2
package/libogg/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		libogg
-PKG_VERSION:=		1.3.1
+PKG_VERSION:=		1.3.6
 PKG_RELEASE:=		1
-PKG_HASH:=		3a5bad78d81afb78908326d11761c0fb1a0662ee7150b6ad587cc586838cdcfa
+PKG_HASH:=		5c8253428e181840cd20d41f3ca16557a9cc04bad4a3d04cce84808677fa1061
 PKG_DESCR:=		ogg bitstream handling library
 PKG_SECTION:=		libs/audio
 PKG_URL:=		http://www.xiph.org/ogg

+ 3 - 6
package/libsamplerate/Makefile

@@ -4,17 +4,14 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libsamplerate
-PKG_VERSION:=		0.1.9
+PKG_VERSION:=		0.2.2
 PKG_RELEASE:=		1
-PKG_HASH:=		0a7eb168e2f21353fb6d84da152e4512126f7dc48ccb0be80578c565413444c1
+PKG_HASH:=		3258da280511d24b49d6b08615bbe824d0cacc9842b0e4caf11c52cf2b043893
 PKG_DESCR:=		sample rate converter for audio
 PKG_SECTION:=		libs/audio
-PKG_URL:=		http://www.mega-nerd.com/SRC/
-PKG_SITES:=		http://www.mega-nerd.com/SRC/
+PKG_SITES:=		https://github.com/libsndfile/libsamplerate/releases/download/$(PKG_VERSION)/
 PKG_OPTS:=		dev
 
-DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
-
 include $(ADK_TOPDIR)/mk/package.mk
 
 $(eval $(call PKG_template,LIBSAMPLERATE,libsamplerate,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))

+ 5 - 5
package/libsquish/Makefile

@@ -4,16 +4,16 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libsquish
-PKG_VERSION:=		1.10
+PKG_VERSION:=		1.15
 PKG_RELEASE:=		1
-PKG_HASH:=		a0118a79d927058b656e94dc4ffce5da37839962e4952be1fedbbdd901b42848
+PKG_HASH:=		628796eeba608866183a61d080d46967c9dda6723bc0a3ec52324c85d2147269
 PKG_DESCR:=		c++ compression library
 PKG_SECTION:=		libs/misc
-PKG_SITES:=		http://sources.openelec.tv/devel/
+PKG_SITES:=		http://downloads.sourceforge.net/project/libsquish/
 PKG_OPTS:=		dev
 
-DISTFILES:=             $(PKG_NAME)-$(PKG_VERSION)-openelec.tar.gz
-WRKDIST=		${WRKDIR}/${PKG_NAME}-$(PKG_VERSION)-openelec
+WRKDIST=		${WRKDIR}/
+DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tgz
 
 include $(ADK_TOPDIR)/mk/package.mk
 

+ 0 - 10
package/libsquish/patches/patch-Makefile

@@ -1,10 +0,0 @@
---- libsquish-1.10-openelec.orig/Makefile	2015-01-09 09:52:04.000000000 -0600
-+++ libsquish-1.10-openelec/Makefile	2015-05-22 16:32:55.398921290 -0500
-@@ -10,6 +10,7 @@ LIB = libsquish.a
- all : $(LIB) squish.pc
- 
- install : $(LIB) squish.pc
-+	mkdir -p $(INSTALL_DIR)/include $(INSTALL_DIR)/lib/pkgconfig
- 	install squish.h $(INSTALL_DIR)/include 
- 	install libsquish.a $(INSTALL_DIR)/lib
- 	install squish.pc $(INSTALL_DIR)/lib/pkgconfig

+ 2 - 2
package/libtiff/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		tiff
-PKG_VERSION:=		4.3.0
+PKG_VERSION:=		4.7.1
 PKG_RELEASE:=		1
-PKG_HASH:=		0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8
+PKG_HASH:=		f698d94f3103da8ca7438d84e0344e453fe0ba3b7486e04c5bf7a9a3fabe9b69
 PKG_DESCR:=		library for reading/writing tiff images
 PKG_SECTION:=		libs/image
 PKG_NEEDS:=		c++

+ 2 - 2
package/libvorbis/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		libvorbis
-PKG_VERSION:=		1.3.5
+PKG_VERSION:=		1.3.7
 PKG_RELEASE:=		1
-PKG_HASH:=		54f94a9527ff0a88477be0a71c0bab09a4c3febe0ed878b24824906cd4b0e1d1
+PKG_HASH:=		b33cc4934322bcbf6efcbacf49e3ca01aadbea4114ec9589d1b1e9d20f72954b
 PKG_DESCR:=		vorbis general audio compression codec library
 PKG_SECTION:=		libs/audio
 PKG_BUILDDEP:=		libogg

+ 3 - 3
package/libvpx/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libvpx
-PKG_VERSION:=		1.14.0
+PKG_VERSION:=		1.15.2
 PKG_RELEASE:=		1
-PKG_HASH:=		5f21d2db27071c8a46f1725928a10227ae45c5cd1cad3727e4aafbe476e321fa
+PKG_HASH:=		26fcd3db88045dee380e581862a6ef106f49b74b6396ee95c2993a260b4636aa
 PKG_DESCR:=		vp8/vp9 codec library
 PKG_SECTION:=		libs/video
 PKG_BUILDDEP:=		yasm-host
@@ -20,7 +20,7 @@ include $(ADK_TOPDIR)/mk/package.mk
 
 $(eval $(call PKG_template,LIBVPX,libvpx,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
 
-CONFIGURE_ENV+=		LD=$(TARGET_CC)
+CONFIGURE_ENV+=		LD="$(TARGET_CC)"
 
 CONFIG_STYLE:=		minimal
 ifeq ($(ADK_TARGET_ARCH_AARCH64),y)

+ 5 - 5
package/libx264/Makefile

@@ -4,7 +4,7 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libx264
-PKG_VERSION:=		7d0ff22e8c96de126be9d3de4952edd6d1b75a8c
+PKG_VERSION:=		0480cb05fa188d37ae87e8f4fd8f1aea3711f7ee
 PKG_RELEASE:=		1
 PKG_GIT:=		hash
 PKG_DESCR:=		h264 encoding library
@@ -13,16 +13,16 @@ PKG_URL:=		http://www.videolan.org/developers/x264.html
 PKG_SITES:=		http://git.videolan.org/git/x264.git
 PKG_OPTS:=		dev
 
+DISTFILES:=		$(PKG_NAME)-$(PKG_VERSION).tar.gz
+
 include $(ADK_TOPDIR)/mk/package.mk
 
 $(eval $(call PKG_template,LIBX264,libx264,$(PKG_VERSION)-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
 
 CONFIG_STYLE:=		minimal
 
-ifeq ($(ADK_TARGET_SYSTEM_SHARP_ZAURUS),y)
-CONFIGURE_ARGS+=	--disable-asm
-endif
-CONFIGURE_ARGS+=	--disable-cli \
+CONFIGURE_ARGS+=	--disable-asm \
+			--disable-cli \
 			--disable-opencl \
 			--enable-shared \
 			--prefix=/usr \

+ 2 - 2
package/libx265/Makefile

@@ -4,8 +4,8 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		libx265
-PKG_VERSION:=		3.2
-PKG_HASH:=		364d79bcd56116a9e070fdeb1d9d2aaef1a786b4970163fb56ff0991a183133b
+PKG_VERSION:=		4.1
+PKG_HASH:=		a31699c6a89806b74b0151e5e6a7df65de4b49050482fe5ebf8a4379d7af8f29
 PKG_RELEASE:=		1
 PKG_DESCR:=		h265 encoding library
 PKG_SECTION:=		libs/video

+ 18 - 0
package/libx265/patches/patch-source_CMakeLists_txt

@@ -0,0 +1,18 @@
+--- x265_4.1.orig/source/CMakeLists.txt	2024-11-22 13:07:34.000000000 +0100
++++ x265_4.1/source/CMakeLists.txt	2025-10-05 03:09:19.216070894 +0200
+@@ -6,15 +6,9 @@ if(NOT CMAKE_BUILD_TYPE)
+         FORCE)
+ endif()
+ message(STATUS "cmake version ${CMAKE_VERSION}")
+-if(POLICY CMP0025)
+-    cmake_policy(SET CMP0025 OLD) # report Apple's Clang as just Clang
+-endif()
+ if(POLICY CMP0042)
+     cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH
+ endif()
+-if(POLICY CMP0054)
+-    cmake_policy(SET CMP0054 OLD) # Only interpret if() arguments as variables or keywords when unquoted
+-endif()
+ 
+ project (x265)
+ cmake_minimum_required (VERSION 2.8.8) # OBJECT libraries require 2.8.8

+ 7 - 3
package/mutt/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		mutt
-PKG_VERSION:=		2.2.12
+PKG_VERSION:=		2.2.15
 PKG_RELEASE:=		1
-PKG_HASH:=		043af312f64b8e56f7fd0bf77f84a205d4c498030bd9586457665c47bb18ce38
+PKG_HASH:=		a51686104e4203f4c2a3b176527be3b95d08e808e94fd2dcadb7c30566bf894d
 PKG_DESCR:=		mail client for console
 PKG_SECTION:=		net/mail
 PKG_DEPENDS:=		libncurses
@@ -14,7 +14,10 @@ PKG_BUILDDEP:=		ncurses
 PKG_URL:=		http://www.mutt.org/
 PKG_SITES:=		ftp://ftp.mutt.org/pub/mutt/
 
-PKG_CHOICES_MUTT:=	WITH_LIBRESSL WITHOUT_SSL
+PKG_CHOICES_MUTT:=	WITH_OPENSSL WITH_LIBRESSL WITHOUT_SSL
+PKGCD_WITH_OPENSSL:=	use openssl for crypto
+PKGCB_WITH_OPENSSL:=	openssl
+PKGCS_WITH_OPENSSL:=	libopenssl ca-certificates
 PKGCD_WITH_LIBRESSL:=	use libressl for crypto
 PKGCB_WITH_LIBRESSL:=	libressl
 PKGCS_WITH_LIBRESSL:=	libressl ca-certificates
@@ -31,6 +34,7 @@ CONFIGURE_ARGS+=	--with-homespool="~/Maildir" \
 			--with-curses="$(STAGING_TARGET_DIR)/usr" \
 			--enable-pop \
 			--enable-imap \
+			--enable-smtp \
 			--disable-doc
 
 ifeq ($(ADK_PACKAGE_MUTT_WITHOUT_SSL),y)

+ 3 - 3
package/nghttp2/Makefile

@@ -4,12 +4,12 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		nghttp2
-PKG_VERSION:=		1.65.0
+PKG_VERSION:=		1.67.1
 PKG_RELEASE:=		1
-PKG_HASH:=		f1b9df5f02e9942b31247e3d415483553bc4ac501c87aa39340b6d19c92a9331
+PKG_HASH:=		153972aad57e7bf9d911666df7613f2390acf37ea7e1a97a0c5567e90f98e830
 PKG_DESCR:=		http2 library
 PKG_SECTION:=		libs/misc
-PKG_SITES:=		https://github.com/nghttp2/nghttp2/releases/download/v1.65.0/
+PKG_SITES:=		https://github.com/nghttp2/nghttp2/releases/download/v$(PKG_VERSION)/
 PKG_OPTS:=		dev
 
 include $(ADK_TOPDIR)/mk/package.mk

+ 49 - 0
package/pcre/Makefile

@@ -0,0 +1,49 @@
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${ADK_TOPDIR}/rules.mk
+
+PKG_NAME:=		pcre
+PKG_VERSION:=		8.45
+PKG_RELEASE:=		1
+PKG_HASH:=		4e6ce03e0336e8b4a3d6c2b70b1c5e18590a5673a98186da90d4f33c23defc09
+PKG_DESCR:=		perl compatible regular expression library
+PKG_SECTION:=		libs/misc
+PKG_URL:=		http://www.pcre.org/
+PKG_SITES:=		${MASTER_SITE_SOURCEFORGE:=pcre/}
+PKG_LIBNAME:=		libpcre
+PKG_OPTS:=		dev
+
+DISTFILES:=		${PKG_NAME}-${PKG_VERSION}.tar.gz
+
+PKG_SUBPKGS:=		LIBPCRE LIBPCRECPP
+PKGSD_LIBPCRECPP:=	pcre c++ library
+
+include ${ADK_TOPDIR}/mk/host.mk
+include ${ADK_TOPDIR}/mk/package.mk
+
+$(eval $(call HOST_template,PCRE,pcre,${PKG_VERSION}-${PKG_RELEASE}))
+$(eval $(call PKG_template,LIBPCRE,libpcre,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION},${PKG_OPTS}))
+$(eval $(call PKG_template,LIBPCRECPP,libpcrecpp,${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKGSD_LIBPCRECPP},${PKG_SECTION}))
+
+CONFIGURE_ARGS+=	--enable-utf \
+			--enable-unicode-properties
+XAKE_FLAGS+=		${TARGET_CONFIGURE_OPTS}
+
+ifeq ($(ADK_PACKAGE_LIBPCRECPP),y)
+CONFIGURE_ARGS+=	--enable-cpp
+else
+CONFIGURE_ARGS+=	--disable-cpp
+endif
+
+libpcre-install:
+	${INSTALL_DIR} ${IDIR_LIBPCRE}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libpcre{,posix}.so* ${IDIR_LIBPCRE}/usr/lib
+
+libpcrecpp-install:
+	${INSTALL_DIR} ${IDIR_LIBPCRECPP}/usr/lib
+	${CP} ${WRKINST}/usr/lib/libpcrecpp.so* ${IDIR_LIBPCRECPP}/usr/lib
+
+include ${ADK_TOPDIR}/mk/host-bottom.mk
+include ${ADK_TOPDIR}/mk/pkg-bottom.mk
+

+ 3 - 3
package/ruby/Makefile

@@ -4,9 +4,9 @@
 include ${ADK_TOPDIR}/rules.mk
 
 PKG_NAME:=		ruby
-PKG_VERSION:=		3.3.0
+PKG_VERSION:=		3.4.6
 PKG_RELEASE:=		1
-PKG_HASH:=		676b65a36e637e90f982b57b059189b3276b9045034dcd186a7e9078847b975b
+PKG_HASH:=		804995bc22938aa475127000d3103cb133409ad3955edfc0e7412be66a4859b8
 PKG_DESCR:=		scripting language
 PKG_SECTION:=		dev/lang
 PKG_DEPENDS:=		libopenssl zlib
@@ -14,7 +14,7 @@ PKG_BUILDDEP:=		ruby-host openssl zlib
 HOST_BUILDDEP:=		openssl-host yaml-host
 PKG_NEEDS:=		threads
 PKG_URL:=		http://www.ruby-lang.org/
-PKG_SITES:=		http://ftp.ruby-lang.org/pub/ruby/3.3/
+PKG_SITES:=		http://ftp.ruby-lang.org/pub/ruby/3.4/
 
 include ${ADK_TOPDIR}/mk/host.mk
 include ${ADK_TOPDIR}/mk/package.mk

+ 2 - 2
package/taglib/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		taglib
-PKG_VERSION:=		1.13.1
+PKG_VERSION:=		2.1.1
 PKG_RELEASE:=		1
-PKG_HASH:=		c8da2b10f1bfec2cd7dbfcd33f4a2338db0765d851a50583d410bacf055cfd0b
+PKG_HASH:=		3716d31f7c83cbf17b67c8cf44dd82b2a2f17e6780472287a16823e70305ddba
 PKG_DESCR:=		audio meta-data library
 PKG_SECTION:=		libs/audio
 PKG_DEPENDS:=		zlib

+ 2 - 2
package/wayland-protocols/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		wayland-protocols
-PKG_VERSION:=		1.43
+PKG_VERSION:=		1.45
 PKG_RELEASE:=		1
-PKG_HASH:=		05fc0ff0c6b3081549d8f81c6b584076a20be18e8c2b9be65ae09ce05e5aea9e
+PKG_HASH:=		460dad72a6c84b2a7d80745bee43d96ba117f4e3dfc4d7c45f83f66469ea27df
 PKG_DESCR:=		wayland protocols
 PKG_SECTION:=		x11/libs
 PKG_BUILDDEP:=		meson-host wayland-host

+ 2 - 2
package/wayland/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		wayland
-PKG_VERSION:=		1.23.1
+PKG_VERSION:=		1.24.0
 PKG_RELEASE:=		1
-PKG_HASH:=		864fb2a8399e2d0ec39d56e9d9b753c093775beadc6022ce81f441929a81e5ed
+PKG_HASH:=		82892487a01ad67b334eca83b54317a7c86a03a89cfadacfef5211f11a5d0536
 PKG_DESCR:=		wayland
 PKG_SECTION:=		x11/libs
 PKG_BUILDDEP:=		wayland-host libffi

+ 1 - 1
package/xf86-input-libinput/Makefile

@@ -13,7 +13,7 @@ PKG_DEPENDS:=		xorg-server libudev libevdev mtdev libinput
 PKG_BUILDDEP:=		xorg-server eudev libevdev mtdev libinput
 PKG_SITES:=		https://www.x.org/releases/individual/driver/
 
-PKG_CFLINE_XF86_INPUT_LIBINPUT:= depends on ADK_TARGET_WITH_INPUT || ADK_TARGET_QEMU_WITH_GRAPHIC
+PKG_CFLINE_XF86_INPUT_LIBINPUT:= depends on ADK_TARGET_WITH_INPUT || ADK_TARGET_QEMU
 
 include $(ADK_TOPDIR)/mk/package.mk
 

+ 2 - 2
package/xvidcore/Makefile

@@ -4,9 +4,9 @@
 include $(ADK_TOPDIR)/rules.mk
 
 PKG_NAME:=		xvidcore
-PKG_VERSION:=		1.3.5
+PKG_VERSION:=		1.3.7
 PKG_RELEASE:=		1
-PKG_HASH:=		165ba6a2a447a8375f7b06db5a3c91810181f2898166e7c8137401d7fc894cf0
+PKG_HASH:=		abbdcbd39555691dd1c9b4d08f0a031376a3b211652c0d8b3b8aa9be1303ce2d
 PKG_DESCR:=		xvid codec library
 PKG_SECTION:=		libs/video
 PKG_URL:=		http://www.xvid.org/

+ 1 - 1
package/zip/Makefile

@@ -31,7 +31,7 @@ MAKE_FILE:=		unix/Makefile
 ALL_TARGET:=		generic_gcc
 
 host-build:
-	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} ${MAKE} -f ${MAKE_FILE} \
+	(cd ${WRKBUILD} && env ${HOST_MAKE_ENV} CC="$(HOST_CC) -std=gnu89" ${MAKE} -f ${MAKE_FILE} \
 		${HOST_MAKE_FLAGS} ${ALL_TARGET})
 
 zip-hostinstall:

+ 10 - 0
package/zip/patches/patch-timezone_c

@@ -0,0 +1,10 @@
+--- zip30.orig/timezone.c	2004-11-13 09:35:12.000000000 +0100
++++ zip30/timezone.c	2025-10-05 03:57:25.603996335 +0200
+@@ -41,6 +41,7 @@
+ #include "timezone.h"
+ #include <ctype.h>
+ #include <errno.h>
++#include <time.h>
+ 
+ #ifdef IZTZ_DEFINESTDGLOBALS
+ long timezone = 0;

+ 14 - 0
package/zip/patches/patch-unix_configure

@@ -0,0 +1,14 @@
+--- zip30.orig/unix/configure	2008-06-20 05:32:20.000000000 +0200
++++ zip30/unix/configure	2025-10-05 03:55:24.305239765 +0200
+@@ -519,7 +519,10 @@ done
+ 
+ 
+ echo Check for memset
+-echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c
++cat > conftest.c << _EOF_
++#include <string.h>
++int main(){ char k; memset(&k,0,0); return 0; }
++_EOF_
+ $CC -o conftest conftest.c >/dev/null 2>/dev/null
+ [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM"
+ 

+ 21 - 0
target/config/Config.in.qemuopts

@@ -4,6 +4,7 @@
 config ADK_QEMU_ARGS
 	string
 	default "-vga std" if ADK_TARGET_QEMU_WITH_GRAPHIC
+	default "-device virtio-vga-gl -display sdl,gl=on" if ADK_TARGET_QEMU_WITH_VIRTIO_GRAPHIC
 	default "-nographic"
 
 config ADK_TARGET_QEMU_WITH_BLOCK
@@ -72,12 +73,32 @@ config ADK_TARGET_QEMU_WITH_GRAPHIC
 	select ADK_LINUX_KERNEL_INPUT_MOUSEDEV
 	select ADK_LINUX_KERNEL_PLAT_VERSATILE_CLCD if ADK_TARGET_SYSTEM_QEMU_ARM_VEXPRESS_A9
 	select ADK_LINUX_KERNEL_FB_SM501 if ADK_TARGET_SYSTEM_QEMU_SH
+	select ADK_LINUX_KERNEL_DRM if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
 	select ADK_LINUX_KERNEL_DRM_BOCHS if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
 	select ADK_LINUX_KERNEL_KEYBOARD_ATKBD if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
 	select ADK_LINUX_KERNEL_MOUSE_PS2 if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
 	select ADK_LINUX_KERNEL_USB_HID if ADK_TARGET_SYSTEM_QEMU_SH
 	select ADK_LINUX_KERNEL_USB_OHCI_HCD_PLATFORM if ADK_TARGET_SYSTEM_QEMU_SH
 
+config ADK_TARGET_QEMU_WITH_VIRTIO_GRAPHIC
+	bool "virtio enabled"
+	select ADK_TARGET_WITH_VGA
+	select ADK_LINUX_KERNEL_DRM
+	select ADK_LINUX_KERNEL_DRM_VIRTIO_GPU
+	select ADK_LINUX_KERNEL_VT
+	select ADK_LINUX_KERNEL_VT_CONSOLE
+	select ADK_LINUX_KERNEL_FB
+	select ADK_LINUX_KERNEL_FRAMEBUFFER_CONSOLE
+	select ADK_LINUX_KERNEL_FONTS
+	select ADK_LINUX_KERNEL_FONT_8x16
+	select ADK_LINUX_KERNEL_KEYBOARD_ATKBD if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
+	select ADK_LINUX_KERNEL_MOUSE_PS2 if ADK_TARGET_SYSTEM_QEMU_X86 || ADK_TARGET_SYSTEM_QEMU_X86_64
+	select ADK_LINUX_KERNEL_INPUT
+	select ADK_LINUX_KERNEL_INPUT_KEYBOARD
+	select ADK_LINUX_KERNEL_INPUT_MOUSE
+	select ADK_LINUX_KERNEL_INPUT_MOUSEDEV
+	select ADK_LINUX_KERNEL_INPUT_EVDEV
+
 endchoice
 
 choice

+ 14 - 0
target/linux/config/Config.in.virtio

@@ -4,6 +4,12 @@
 menu "Virtio driver support"
 depends on ADK_TARGET_WITH_VIRTIO || ADK_TARGET_QEMU
 
+config ADK_LINUX_KERNEL_DRM_FBDEV_EMULATION
+	bool
+
+config ADK_LINUX_KERNEL_DRM_VIRTIO_GPU_KMS
+	bool
+
 config ADK_LINUX_KERNEL_VIRTIO_MENU
 	bool
 
@@ -70,4 +76,12 @@ config ADK_LINUX_KERNEL_VIRTIO_BLK
 	help
 	  Enables support for Virtio Block driver.
 
+config ADK_LINUX_KERNEL_DRM_VIRTIO_GPU
+	tristate "Virtio GPU support"
+	select ADK_LINUX_KERNEL_DRM_VIRTIO_GPU_KMS
+	select ADK_LINUX_KERNEL_DRM_FBDEV_EMULATION
+	default n
+	help
+	  Enables support for Virtio GPU driver.
+
 endmenu