[packages/kodi] up to 22.0rc1 (requires ffmpeg >= 7)
atler
atler at pld-linux.org
Sun Oct 18 14:04:51 CEST 2026
commit 090410788dba55650c5231b40f8fdb1d6f1ad8b2
Author: Jan Palus <atler at pld-linux.org>
Date: Sun Oct 18 13:27:50 2026 +0200
up to 22.0rc1 (requires ffmpeg >= 7)
ffmpeg7.patch | 220 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
giflib6.patch | 67 ------------------
kodi.spec | 103 ++++++++++++++-------------
3 files changed, 271 insertions(+), 119 deletions(-)
---
diff --git a/kodi.spec b/kodi.spec
index 1795a7d..02d7524 100644
--- a/kodi.spec
+++ b/kodi.spec
@@ -51,39 +51,32 @@
%define kodi_arch %{_target_base_arch}
%endif
-%define dvdread_ver 6.1.3-Next-Nexus-Alpha2-2
-%define dvdcss_ver 1.4.3-Next-Nexus-Alpha2-2
-%define dvdnav_ver 6.1.1-Next-Nexus-Alpha2-2
-%define groovy_ver 4.0.26
-%define commons_lang_ver 3.17.0
-%define commons_text_ver 1.13.0
+%define dvdread_ver 7.0.1
+%define dvdcss_ver 1.5.0
+%define dvdnav_ver 7.0.0
%{?use_default_jdk}
-%define codename Omega
+%define _rc rc1
+
+%define codename Piers
Summary: Kodi - a free and open source media-player and entertainment hub
Summary(pl.UTF-8): Kodi - wolnodostępny, mający otwarte źródła odtwarzacz multimediów i hub rozrywkowy
Name: kodi
-Version: 21.3
-Release: 5
+Version: 22.0
+Release: 0.%{_rc}.1
License: GPL v2+ and GPL v3+
Group: Applications/Multimedia
#Source0Download: https://github.com/xbmc/xbmc/releases
-Source0: https://github.com/xbmc/xbmc/archive/%{version}-%{codename}/%{version}-%{codename}.tar.gz
-# Source0-md5: bb76936b9fcf395697e2aeeed80cb14e
-Source1: https://github.com/xbmc/libdvdread/archive/%{dvdread_ver}/libdvdread-%{dvdread_ver}.tar.gz
-# Source1-md5: 0d24c950abfef9dc02e231dda56912ac
-Source2: https://github.com/xbmc/libdvdcss/archive/%{dvdcss_ver}/libdvdcss-%{dvdcss_ver}.tar.gz
-# Source2-md5: 42dc3770ae928103e8033a18b007e79d
-Source3: https://github.com/xbmc/libdvdnav/archive/%{dvdnav_ver}/libdvdnav-%{dvdnav_ver}.tar.gz
-# Source3-md5: 2349cde54d950af21fa4936371ad3349
-Source4: http://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-%{groovy_ver}.zip
-# Source4-md5: eff85b60190bbd1fddf286f3fe2273ac
-Source5: http://mirrors.kodi.tv/build-deps/sources/commons-lang3-%{commons_lang_ver}-bin.tar.gz
-# Source5-md5: ec63dbb802ed3e188388213f2657966b
-Source6: http://mirrors.kodi.tv/build-deps/sources/commons-text-%{commons_text_ver}-bin.tar.gz
-# Source6-md5: 941495aeab3bc15ab7ef60db789b51d3
-Patch0: giflib6.patch
+Source0: https://github.com/xbmc/xbmc/archive/%{version}%{_rc}-%{codename}/%{version}%{_rc}-%{codename}.tar.gz
+# Source0-md5: bf004b52aca3ad160249e02717977c40
+Source1: https://mirrors.kodi.tv/build-deps/sources/libdvdread-%{dvdread_ver}.tar.bz2
+# Source1-md5: 120e9ead9f59e2031d05e6a61ffea8ec
+Source2: https://mirrors.kodi.tv/build-deps/sources/libdvdcss-%{dvdcss_ver}.tar.bz2
+# Source2-md5: 5ff8b0240506b96d04f1a0cf04ab77d1
+Source3: https://mirrors.kodi.tv/build-deps/sources/libdvdnav-%{dvdnav_ver}.tar.bz2
+# Source3-md5: a0f4805cd9bb44fd635378b5c0447623
+Patch0: ffmpeg7.patch
URL: https://kodi.tv/
BuildRequires: EGL-devel
%{?with_gbm:BuildRequires: Mesa-libgbm-devel}
@@ -102,13 +95,14 @@ BuildRequires: autoconf
BuildRequires: automake
BuildRequires: avahi-devel
BuildRequires: bluez-libs-devel >= 4.99
-BuildRequires: cmake >= 3.15
-BuildRequires: crossguid-devel
+BuildRequires: cmake >= 3.20
+BuildRequires: crossguid-devel >= 0.2.3
BuildRequires: curl-devel
%{!?with_system_ffmpeg:BuildRequires: dav1d-devel}
BuildRequires: dbus-devel
-# libavcodec >= 60.2.100 libavfilter >= 9.3.100 libavformat >= 60.3.100 libavutil >= 58.2.100 libpostproc >= 57.1.100 libswscale >= 7.1.100 libswresample >= 4.10.100
-%{?with_system_ffmpeg:BuildRequires: ffmpeg-devel >= 6.0.0}
+BuildRequires: exiv2-devel
+# libavcodec >= 61.3.100 libavfilter >= 10.1.100 libavformat >= 61.1.100 libavutil >= 59.8.100 libpostproc >= 58.1.100 libswscale >= 8.1.100 libswresample >= 5.1.100
+%{?with_system_ffmpeg:BuildRequires: ffmpeg-devel >= 7.0.0}
BuildRequires: flatbuffers-devel >= 1.9.0
BuildRequires: fontconfig-devel
BuildRequires: freetype-devel
@@ -118,25 +112,25 @@ BuildRequires: gettext-tools
BuildRequires: giflib-devel >= 5
BuildRequires: harfbuzz-devel
%buildrequires_jdk
-BuildRequires: lcms2-devel
+BuildRequires: lcms2-devel >= 2.10
BuildRequires: libass-devel >= 0.15.0
BuildRequires: libatomic-devel
BuildRequires: libbluray-devel >= 0.9.3
BuildRequires: libcap-devel
BuildRequires: libcdio-c++-devel >= 2.1.0
BuildRequires: libcdio-devel >= 2.1.0
-BuildRequires: libcec-devel >= 4.0.0
+BuildRequires: libcec-devel >= 7.0.0
BuildRequires: libdisplay-info-devel
BuildRequires: libdrm-devel >= 2.4.95
BuildRequires: libfmt-devel >= 6.1.2
%{?with_gbm:BuildRequires: libinput-devel}
BuildRequires: libjpeg-devel
BuildRequires: libmicrohttpd-devel >= 0.9.40
-BuildRequires: libnfs-devel
+BuildRequires: libnfs-devel >= 3.0.0
BuildRequires: libplist-devel >= 2.0
BuildRequires: libpng-devel
BuildRequires: libsmbclient-devel
-BuildRequires: libstdc++-devel >= 6:5
+BuildRequires: libstdc++-devel >= 6:8
BuildRequires: libtool
BuildRequires: libudfread-devel >= 1.0.0
BuildRequires: libuuid-devel
@@ -151,21 +145,24 @@ BuildRequires: libxml2-devel >= 2.0
BuildRequires: libxslt-devel
BuildRequires: lirc-devel
BuildRequires: lzo-devel >= 2
+BuildRequires: meson
+BuildRequires: ninja
BuildRequires: mysql-devel
+BuildRequires: nlohmann-json-devel >= 3.2.0
BuildRequires: openssl-devel >= 1.1.0
-BuildRequires: pcre-cxx-devel
+BuildRequires: pcre2-8-devel
BuildRequires: pipewire-devel >= 0.3.50
BuildRequires: pkgconfig
BuildRequires: pulseaudio-devel >= 11.0.0
BuildRequires: python3-devel >= 1:3.8
-BuildRequires: rapidjson-devel >= 1.1.0
BuildRequires: rpm-build >= 4.6
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 2.021
BuildRequires: sed >= 4.0
BuildRequires: spdlog-devel >= 1.5.0
BuildRequires: sqlite3-devel
-BuildRequires: swig
+BuildRequires: swig >= 4.5.0
+BuildRequires: swig-python >= 4.5.0
BuildRequires: taglib-devel >= 1.9.0
BuildRequires: tinyxml-devel
BuildRequires: tinyxml2-devel
@@ -185,17 +182,20 @@ BuildRequires: xorg-lib-libxkbcommon-devel >= 0.4.1
BuildRequires: zlib-devel
Requires: %{name}-common = %{version}-%{release}
Requires: alsa-lib >= 1.0.27
+Requires: crossguid >= 0.2.3
Requires: desktop-file-utils
-Requires: ffmpeg-libs >= 6.0.0
+Requires: ffmpeg-libs >= 7.0.0
Requires: hicolor-icon-theme
+Requires: lcms2 >= 2.10
Requires: libass >= 0.15.0
Requires: libbluray >= 0.9.3
Requires: libcdio >= 2.1.0
Requires: libcdio-c++ >= 2.1.0
-Requires: libcec >= 4.0.0
+Requires: libcec >= 7.0.0
Requires: libdrm >= 2.4.95
Requires: libfmt >= 6.1.2
Requires: libmicrohttpd >= 0.9.40
+Requires: libnfs >= 3.0.0
Requires: libplist >= 2.0
Requires: libudfread >= 1.0.0
Requires: lsb-release
@@ -258,11 +258,9 @@ Header files for Kodi.
Pliki nagłówkowe Kodi.
%prep
-%setup -q -n xbmc-%{version}-%{codename} -a1 -a2 -a3
+%setup -q -n xbmc-%{version}%{_rc}-%{codename}
%patch -P0 -p1
-%{__rm} -r lib/win32
-
%if %{without system_ffmpeg}
#ln -s %{SOURCE1} tools/depends/target/ffmpeg/ffmpeg-2.4.4-%{codename}.tar.gz
%endif
@@ -270,35 +268,38 @@ Pliki nagłówkowe Kodi.
grep -q '^VERSION=%{dvdread_ver}$' tools/depends/target/libdvdread/LIBDVDREAD-VERSION
grep -q '^VERSION=%{dvdcss_ver}$' tools/depends/target/libdvdcss/LIBDVDCSS-VERSION
grep -q '^VERSION=%{dvdnav_ver}$' tools/depends/target/libdvdnav/LIBDVDNAV-VERSION
-grep -q 'GROOVY_VER %{groovy_ver}' xbmc/interfaces/swig/CMakeLists.txt
-grep -q 'APACHE_COMMONS_LANG_VER %{commons_lang_ver}' xbmc/interfaces/swig/CMakeLists.txt
-grep -q 'APACHE_COMMONS_TEXT_VER %{commons_text_ver}' xbmc/interfaces/swig/CMakeLists.txt
install -d build/build/download
-cp -p %{SOURCE4} %{SOURCE5} %{SOURCE6} build/build/download
+cp -p %{SOURCE1} %{SOURCE2} %{SOURCE3} build/build/download
%build
%cmake -B build \
-DHOST_CAN_EXECUTE_TARGET:BOOL=TRUE \
- -DLIBDVDREAD_SOURCE_DIR=$(pwd)/libdvdread-%{dvdread_ver} \
- -DLIBDVDCSS_SOURCE_DIR=$(pwd)/libdvdcss-%{dvdcss_ver} \
- -DLIBDVDNAV_SOURCE_DIR=$(pwd)/libdvdnav-%{dvdnav_ver} \
-DAPP_RENDER_SYSTEM=%{!?with_gles:gl}%{?with_gles:gles} \
-DCORE_PLATFORM_NAME="%{?with_gbm:GBM;}%{?with_x11:X11;}%{?with_wayland:WAYLAND;}" \
%{cmake_on_off airtunes ENABLE_AIRTUNES} \
%{cmake_on_off dvdcss ENABLE_DVDCSS} \
+ -DENABLE_INTERNAL_ASS:BOOL=OFF \
+ -DENABLE_INTERNAL_BLURAY:BOOL=OFF \
-DENABLE_INTERNAL_CEC:BOOL=OFF \
-DENABLE_INTERNAL_CROSSGUID:BOOL=OFF \
+ -DENABLE_INTERNAL_CURL:BOOL=OFF \
-DENABLE_INTERNAL_DAV1D:BOOL=OFF \
+ -DENABLE_INTERNAL_EXIV2:BOOL=OFF \
-DENABLE_INTERNAL_FFMPEG:BOOL=%{?with_system_ffmpeg:OFF}%{!?with_system_ffmpeg:ON} \
-DENABLE_INTERNAL_FLATBUFFERS:BOOL=OFF \
-DENABLE_INTERNAL_FMT:BOOL=OFF \
-DENABLE_INTERNAL_FSTRCMP:BOOL=OFF \
+ -DENABLE_INTERNAL_LCMS2:BOOL=OFF \
+ -DENABLE_INTERNAL_LIBMICROHTTPD:BOOL=OFF \
+ -DENABLE_INTERNAL_MARIADBCLIENT:BOOL=OFF \
-DENABLE_INTERNAL_NFS:BOOL=OFF \
- -DENABLE_INTERNAL_PCRE:BOOL=OFF \
- -DENABLE_INTERNAL_RapidJSON:BOOL=OFF \
+ -DENABLE_INTERNAL_NLOHMANNJSON:BOOL=OFF \
+ -DENABLE_INTERNAL_PCRE2:BOOL=OFF \
-DENABLE_INTERNAL_SPDLOG:BOOL=OFF \
+ -DENABLE_INTERNAL_SWIG:BOOL=OFF \
-DENABLE_INTERNAL_TAGLIB:BOOL=OFF \
-DENABLE_INTERNAL_UDFREAD:BOOL=OFF \
+ -DENABLE_INTERNAL_XSLT:BOOL=OFF \
%{cmake_on_off gold ENABLE_GOLD} \
-DENABLE_TESTING:BOOL=OFF \
%{cmake_on_off optical_drive ENABLE_OPTICAL} \
@@ -330,9 +331,6 @@ install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/addons
# not packaged
%{__rm} $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/kodi-*.xml
-# same as kodi-TexturePacker
-%{__rm} $RPM_BUILD_ROOT%{_bindir}/TexturePacker
-
%clean
rm -rf $RPM_BUILD_ROOT
@@ -353,6 +351,7 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/%{name}/addons
%{_datadir}/%{name}/media
%{_datadir}/%{name}/privacy-policy.txt
+%{_datadir}/%{name}/python-stubs
%{_datadir}/%{name}/system
%{_datadir}/%{name}/userdata
%attr(755,root,root) %{_libdir}/%{name}/%{name}.bin
diff --git a/ffmpeg7.patch b/ffmpeg7.patch
new file mode 100644
index 0000000..f287802
--- /dev/null
+++ b/ffmpeg7.patch
@@ -0,0 +1,220 @@
+From 3ad030d9b7aa326edb67cff2d7bd1caa1db78108 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd at kuhls.net>
+Date: Sun, 11 Oct 2026 13:35:47 +0200
+Subject: [PATCH 1/3] VAAPI: fix build with ffmpeg 7.0.3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The minimum ffmpeg version supported by Kodi Piers is 7.0:
+https://github.com/xbmc/xbmc/blob/22.0rc1-Piers/cmake/modules/FindFFMPEG.cmake#L307
+
+Building with ffmpeg 7.0.3 fails:
+
+../../../../../../xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp:
+ In member function 'virtual bool VAAPI::CDecoder::Open(AVCodecContext*,
+ AVCodecContext*, AVPixelFormat)':
+
+../../../../../../xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp:659:81:
+ error: 'AV_PIX_FMT_Y216' was not declared in this scope;
+ did you mean 'AV_PIX_FMT_Y210'?
+
+../../../../../../xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp:670:81:
+ error: 'AV_PIX_FMT_XV48' was not declared in this scope;
+ did you mean 'AV_PIX_FMT_NV42'?
+
+../../../../../../xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp:698:73:
+ error: 'AV_PIX_FMT_XV48' was not declared in this scope;
+ did you mean 'AV_PIX_FMT_NV42'?
+
+xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h:470:46:
+ error: ‘AV_PIX_FMT_Y216’ was not declared in this scope;
+ did you mean ‘AV_PIX_FMT_Y210’?
+
+because the broken code was added in ffmpeg 8.0:
+
+https://code.ffmpeg.org/FFmpeg/FFmpeg/src/tag/n8.0.3/doc/APIchanges#L159
+2024-10-26 - e02a3b40a5e - lavu 59.46.100 - pixfmt.h
+ Add AV_PIX_FMT_XV48.
+
+https://code.ffmpeg.org/FFmpeg/FFmpeg/src/tag/n8.0.3/doc/APIchanges#L176
+2024-10-23 - f462ba05f54 - lavu 59.45.100 - pixfmt.h
+ Add AV_PIX_FMT_Y216.
+
+Signed-off-by: Bernd Kuhls <bernd at kuhls.net>
+---
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp | 12 ++++++++++++
+ xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h | 4 ++++
+ 2 files changed, 16 insertions(+)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+index 121fc3625fb20..a177cd1659be6 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+@@ -656,7 +656,11 @@ bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum A
+ profile = VAProfileHEVCMain422_10;
+ else if (avctx->profile == AV_PROFILE_HEVC_REXT && m_vaapiConfig.bitDepth == 12 &&
+ chroma == 422 &&
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 45, 100)
+ (m_capFormats.Supports(AV_PIX_FMT_Y212) || m_capFormats.Supports(AV_PIX_FMT_Y216)))
++#else
++ m_capFormats.Supports(AV_PIX_FMT_Y212))
++#endif
+ profile = VAProfileHEVCMain422_12;
+ else if (avctx->profile == AV_PROFILE_HEVC_REXT && m_vaapiConfig.bitDepth == 8 &&
+ chroma == 444 &&
+@@ -667,7 +671,11 @@ bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum A
+ profile = VAProfileHEVCMain444_10;
+ else if (avctx->profile == AV_PROFILE_HEVC_REXT && m_vaapiConfig.bitDepth == 12 &&
+ chroma == 444 &&
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 46, 100)
+ (m_capFormats.Supports(AV_PIX_FMT_XV36) || m_capFormats.Supports(AV_PIX_FMT_XV48)))
++#else
++ m_capFormats.Supports(AV_PIX_FMT_XV36))
++#endif
+ profile = VAProfileHEVCMain444_12;
+ break;
+ }
+@@ -694,8 +702,12 @@ bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum A
+ profile = VAProfileVP9Profile1;
+ else if (avctx->profile == AV_PROFILE_VP9_3 && chroma == 444 &&
+ ((m_vaapiConfig.bitDepth == 10 && m_capFormats.Supports(AV_PIX_FMT_XV30)) ||
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 46, 100)
+ (m_vaapiConfig.bitDepth == 12 && (m_capFormats.Supports(AV_PIX_FMT_XV36) ||
+ m_capFormats.Supports(AV_PIX_FMT_XV48)))))
++#else
++ (m_vaapiConfig.bitDepth == 12 && (m_capFormats.Supports(AV_PIX_FMT_XV36)))))
++#endif
+ profile = VAProfileVP9Profile3;
+ break;
+ }
+diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h
+index daf553e33b3ca..93cd546283263 100644
+--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h
++++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.h
+@@ -467,13 +467,17 @@ inline constexpr VaFormatEntry kVaFormatTable[] = {
+ {VA_FOURCC_P016, VA_RT_FORMAT_YUV420_12, AV_PIX_FMT_P016},
+ {VA_FOURCC_Y210, VA_RT_FORMAT_YUV422_10, AV_PIX_FMT_Y210},
+ {VA_FOURCC_Y212, VA_RT_FORMAT_YUV422_12, AV_PIX_FMT_Y212},
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 45, 100)
+ {VA_FOURCC_Y216, VA_RT_FORMAT_YUV422_12, AV_PIX_FMT_Y216},
++#endif
+ {VA_FOURCC_AYUV, VA_RT_FORMAT_YUV444, AV_PIX_FMT_VUYA},
+ {VA_FOURCC_XYUV, VA_RT_FORMAT_YUV444, AV_PIX_FMT_VUYX},
+ {VA_FOURCC_Y410, VA_RT_FORMAT_YUV444_10, AV_PIX_FMT_XV30},
+ {VA_FOURCC_Y412, VA_RT_FORMAT_YUV444_12, AV_PIX_FMT_XV36},
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 46, 100)
+ {VA_FOURCC_Y416, VA_RT_FORMAT_YUV444_12, AV_PIX_FMT_XV48},
+ #endif
++#endif
+ };
+
+ /*!
+
+From 6acfac6ffba80898db9d022ecaf69c905881e1e9 Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd at kuhls.net>
+Date: Sun, 11 Oct 2026 14:04:52 +0200
+Subject: [PATCH 2/3] AEEncoderFFmpeg: fix build with ffmpeg 7.0.3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The minimum ffmpeg version supported by Kodi Piers is 7.0:
+https://github.com/xbmc/xbmc/blob/22.0rc1-Piers/cmake/modules/FindFFMPEG.cmake#L307
+
+Building with ffmpeg 7.0.3 fails:
+
+xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp:130:53:
+ error: ‘AV_CODEC_CONFIG_CHANNEL_LAYOUT’ was not declared in this scope;
+ did you mean ‘AV_CODEC_CAP_CHANNEL_CONF’?
+
+xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp:130:5:
+ error: ‘avcodec_get_supported_config’ was not declared in this scope;
+ did you mean ‘avcodec_get_hw_config’?
+
+because the broken code was added in ffmpeg 7.1:
+
+https://code.ffmpeg.org/FFmpeg/FFmpeg/src/tag/n7.1.5/doc/APIchanges#L28
+
+2024-09-08 - 3305767560a - lavc 61.13.100 - avcodec.h
+ Add avcodec_get_supported_config() and enum AVCodecConfig; deprecate
+ AVCodec.pix_fmts, AVCodec.sample_fmts, AVCodec.supported_framerates,
+ AVCodec.supported_samplerates and AVCodec.ch_layouts.
+
+Signed-off-by: Bernd Kuhls <bernd at kuhls.net>
+---
+ xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
+index 6a7013bc5f58d..61ba83d6aac18 100644
+--- a/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
++++ b/xbmc/cores/AudioEngine/Encoders/AEEncoderFFmpeg.cpp
+@@ -122,6 +122,7 @@ bool CAEEncoderFFmpeg::Initialize(AEAudioFormat& format, bool allow_planar_input
+ m_CodecCtx->bit_rate = m_BitRate;
+ m_CodecCtx->sample_rate = format.m_sampleRate;
+
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
+ uint64_t channelLayout = AV_CH_LAYOUT_5POINT1_BACK;
+ if (format.m_channelLayout.IsLayoutValid())
+ {
+@@ -141,9 +142,14 @@ bool CAEEncoderFFmpeg::Initialize(AEAudioFormat& format, bool allow_planar_input
+ format.m_channelLayout = layouts[best];
+ channelLayout = CAEUtil::GetAVChannelLayout(format.m_channelLayout);
+ }
++#endif
+
+ av_channel_layout_uninit(&m_CodecCtx->ch_layout);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(61, 13, 100)
+ av_channel_layout_from_mask(&m_CodecCtx->ch_layout, channelLayout);
++#else
++ av_channel_layout_from_mask(&m_CodecCtx->ch_layout, AV_CH_LAYOUT_5POINT1_BACK);
++#endif
+
+ const AVSampleFormat* sampleFmts = nullptr;
+ int numFmts = 0;
+
+From 3c3169171165607a7637c7c5dbd876a637e2109a Mon Sep 17 00:00:00 2001
+From: Bernd Kuhls <bernd at kuhls.net>
+Date: Sun, 11 Oct 2026 14:14:32 +0200
+Subject: [PATCH 3/3] InputStreamAddon: fix build with ffmpeg 7.0.3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The minimum ffmpeg version supported by Kodi Piers is 7.0:
+https://github.com/xbmc/xbmc/blob/22.0rc1-Piers/cmake/modules/FindFFMPEG.cmake#L307
+
+Building with ffmpeg 7.0.3 fails:
+
+xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp:514:25:
+ error: ‘AVDOVIDecoderConfigurationRecord’ {aka ‘struct
+ AVDOVIDecoderConfigurationRecord’} has no member named
+ ‘dv_md_compression’
+
+because the broken code was added in ffmpeg 7.1:
+
+https://code.ffmpeg.org/FFmpeg/FFmpeg/src/tag/n7.1.5/doc/APIchanges#L64
+
+2024-07-28 - cbea92c84d4 - lavu 59.30.100 - dovi_meta.h
+ Add AVDOVIDecoderConfigurationRecord.dv_md_compression.
+
+Signed-off-by: Bernd Kuhls <bernd at kuhls.net>
+---
+ xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp b/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
+index 7a98d9f84c6d1..9ee4232f51ceb 100644
+--- a/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
++++ b/xbmc/cores/VideoPlayer/DVDInputStreams/InputStreamAddon.cpp
+@@ -511,7 +511,9 @@ KODI_HANDLE CInputStreamAddon::cb_get_stream_transfer(KODI_HANDLE handle,
+ videoStream->dovi.bl_present_flag = stream->m_dvccMetadata->m_blPresentFlag;
+ videoStream->dovi.dv_bl_signal_compatibility_id =
+ stream->m_dvccMetadata->m_dvBlSignalCompatibilityId;
++#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(59, 30, 100)
+ videoStream->dovi.dv_md_compression = stream->m_dvccMetadata->m_dvMdCompression;
++#endif
+ }
+ //@}
+
diff --git a/giflib6.patch b/giflib6.patch
deleted file mode 100644
index 476dcfa..0000000
--- a/giflib6.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 29492cbd20d4c90a9c00a30ab525d4d0e81a968b Mon Sep 17 00:00:00 2001
-From: Rudi Heitbaum <rudi at heitbaum.com>
-Date: Sun, 15 Mar 2026 11:38:16 +0000
-Subject: [PATCH] TexturePacker: allow build with giflib 6.x
-
-Current #if clauses are written with a maximum of giflib 5 written in,
-update the to >= to allow for newer versiosn of the giflib api.
-
-Signed-off-by: Rudi Heitbaum <rudi at heitbaum.com>
----
- .../native/TexturePacker/src/decoder/GifHelper.cpp | 8 ++++----
- .../depends/native/TexturePacker/src/decoder/GifHelper.h | 2 +-
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp
-index eb513134b3eb8..b216ecbcef7fa 100644
---- a/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp
-+++ b/tools/depends/native/TexturePacker/src/decoder/GifHelper.cpp
-@@ -52,7 +52,7 @@ GifHelper::~GifHelper()
- bool GifHelper::Open(GifFileType*& gif, void *dataPtr, InputFunc readFunc)
- {
- int err = 0;
--#if GIFLIB_MAJOR == 5
-+#if GIFLIB_MAJOR >= 5
- gif = DGifOpen(dataPtr, readFunc, &err);
- #else
- gif = DGifOpen(dataPtr, readFunc);
-@@ -73,7 +73,7 @@ void GifHelper::Close(GifFileType* gif)
- {
- int err = 0;
- int reason = 0;
--#if GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1
-+#if (GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1) || GIFLIB_MAJOR >= 6
- err = DGifCloseFile(gif, &reason);
- #else
- err = DGifCloseFile(gif);
-@@ -181,7 +181,7 @@ bool GifHelper::Slurp(GifFileType* gif)
- if (DGifSlurp(gif) == GIF_ERROR)
- {
- int reason = 0;
--#if GIFLIB_MAJOR == 5
-+#if GIFLIB_MAJOR >= 5
- reason = gif->Error;
- #else
- reason = GifLastError();
-@@ -246,7 +246,7 @@ bool GifHelper::GcbToFrame(GifFrame &frame, unsigned int imgIdx)
-
- if (m_gif->ImageCount > 0)
- {
--#if GIFLIB_MAJOR == 5
-+#if GIFLIB_MAJOR >= 5
- GraphicsControlBlock gcb;
- if (DGifSavedExtensionToGCB(m_gif, imgIdx, &gcb))
- {
-diff --git a/tools/depends/native/TexturePacker/src/decoder/GifHelper.h b/tools/depends/native/TexturePacker/src/decoder/GifHelper.h
-index 6124b69e46296..ce5dca3394b41 100644
---- a/tools/depends/native/TexturePacker/src/decoder/GifHelper.h
-+++ b/tools/depends/native/TexturePacker/src/decoder/GifHelper.h
-@@ -128,7 +128,7 @@ class GifHelper
- bool PrepareTemplate(GifFrame &frame);
- void Release();
-
--#if GIFLIB_MAJOR != 5
-+#if GIFLIB_MAJOR < 5
- /*
- taken from giflib 5.1.0
- */
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kodi.git/commitdiff/090410788dba55650c5231b40f8fdb1d6f1ad8b2
More information about the pld-cvs-commit
mailing list