]> git.pld-linux.org Git - packages/kodi.git/commitdiff
up to 19.3
authorJan Palus <atler@pld-linux.org>
Thu, 11 Nov 2021 22:13:21 +0000 (23:13 +0100)
committerJan Palus <atler@pld-linux.org>
Thu, 11 Nov 2021 22:13:21 +0000 (23:13 +0100)
- cleaned up unused patches
- cleaned up unused bconds
- dropped old autotools invocation
- support for all platforms (x11/wayland/gbm)
- updated dependencies
- -devel subpackage for binary addons
- dropped obsolete workarounds

assert.patch [deleted file]
dvdread.patch [deleted file]
ffmpeg3.patch [deleted file]
fmt.patch [deleted file]
gcc5.patch [deleted file]
jpeglib-boolean.patch [deleted file]
kodi.spec
microhttpd.patch [deleted file]

diff --git a/assert.patch b/assert.patch
deleted file mode 100644 (file)
index d4fb96e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-From bbfc36f06c191d3bdea19cacc498afb86bd25404 Mon Sep 17 00:00:00 2001
-From: Craig Andrews <candrews@integralblue.com>
-Date: Thu, 5 Dec 2019 14:49:50 -0500
-Subject: [PATCH] Add missing cassert includes
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Without these includes, â€˜assert’ was not declared in this scope errors
-occur.
----
- xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp | 1 +
- xbmc/windowing/GraphicContext.cpp                  | 2 ++
- 2 files changed, 3 insertions(+)
-
-
---- xbmc-18.4-Leia/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp~ 2019-08-31 11:34:13.000000000 +0000
-+++ xbmc-18.4-Leia/xbmc/profiles/dialogs/GUIDialogProfileSettings.cpp  2021-08-20 09:13:44.012432476 +0000
-@@ -8,6 +8,7 @@
-
- #include "GUIDialogProfileSettings.h"
-+#include <cassert>
- #include <utility>
- #include "dialogs/GUIDialogFileBrowser.h"
---- xbmc-18.4-Leia/xbmc/windowing/GraphicContext.cpp~  2019-08-31 11:34:13.000000000 +0000
-+++ xbmc-18.4-Leia/xbmc/windowing/GraphicContext.cpp   2021-08-20 09:16:14.469325393 +0000
-@@ -24,6 +24,8 @@
- #include "guilib/GUIWindowManager.h"
- #include "guilib/TextureManager.h"
-+#include <cassert>
-+
- using namespace KODI::MESSAGING;
- CGraphicContext::CGraphicContext(void) = default;
diff --git a/dvdread.patch b/dvdread.patch
deleted file mode 100644 (file)
index 1b17355..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-origin:
-http://cvs.rpmfusion.org/viewvc/rpms/kodi/devel/xbmc-13.0-dvdread.patch?revision=1.1&root=free&view=markup
-
-From 7bc0877dc9715e891159392abf669f970722dece Mon Sep 17 00:00:00 2001
-From: Ken Dreyer <ktdreyer@ktdreyer.com>
-Date: Mon, 6 May 2013 17:07:40 -0600
-Subject: [PATCH 1/3] Fedora: use external dvdread
-
-Original patch by Alex Lancaster <alexlan[AT]fedoraproject org>
-(cherry picked from commit 9f9845af842a376d5bdf70742785e7727695fd03)
----
- bootstrap.mk           |  5 -----
- configure.in           | 19 -------------------
- lib/libdvd/Makefile.in | 20 +++++++-------------
- 3 files changed, 7 insertions(+), 37 deletions(-)
-
-diff --git a/bootstrap.mk b/bootstrap.mk
-index 8bc4795..1fc31a4 100644
---- a/bootstrap.mk
-+++ b/bootstrap.mk
-@@ -8,7 +8,6 @@ ifneq ($(wildcard lib/libdvd/libdvdcss/configure.ac),)
- BOOTSTRAP_SUBDIRS += lib/libdvd/libdvdcss/configure.ac
- DVD_CSS=lib/libdvd/libdvdcss/configure
- endif
--BOOTSTRAP_SUBDIRS += lib/libdvd/libdvdread/configure.ac
- BOOTSTRAP_SUBDIRS += lib/libdvd/libdvdnav/configure.ac
- ifneq ($(wildcard pvr-addons/Makefile.am),)
-@@ -18,10 +17,6 @@ endif
- BOOTSTRAP_TARGETS=$(basename $(BOOTSTRAP_SUBDIRS))
- all: $(BOOTSTRAP_TARGETS)
--#preserve order for libdvd. dvdcss (if present) -> dvdread -> dvdnav.
--lib/libdvd/libdvdread/configure: $(DVD_CSS)
--lib/libdvd/libdvdnav/configure: lib/libdvd/libdvdread/configure
--
- %: %.ac
-       autoreconf -vif $(@D)
-       -@rm -rf $(@D)/autom4te.cache
-diff --git a/configure.ac b/configure.ac
-index beb8aac..343292e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2860,27 +2860,9 @@
-     --with-pic
- ], [$SKIP_CONFIG_DVDCSS])
--XB_CONFIG_MODULE([lib/libdvd/libdvdread], [
--  ./configure2 \
--    --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../libdvdcss/src $DROID_DVDLIB_SEEK64" \
--    --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
--    --host=$host_alias \
--    --build=$build_alias \
--    --target=$target_alias \      
--    --enable-static \
--    --disable-shared \
--    --disable-strip \
--    --disable-opts \
--    --cc="$CC" &&
--  mkdir -p `pwd`/../includes/dvdread
--  cp `pwd`/../libdvdread/src/*.h `pwd`/../includes/dvdread
--  cp `pwd`/../libdvdread/src/dvdread/*.h `pwd`/../includes/dvdread
--], [0])
--
- XB_CONFIG_MODULE([lib/libdvd/libdvdnav], [
-   ./configure2 \
-     --extra-cflags="$CFLAGS $DVDREAD_CFLAGS -I`pwd`/../includes $DROID_DVDLIB_SEEK64" \
--    --extra-ldflags="-L`pwd`/../libdvdread/obj" \
-     --with-dvdread-config="`pwd`/../dvdread-config" \
-     --prefix="${prefix}" --includedir="${includedir}" --libdir="${libdir}" --datadir="${datadir}" \
-     --host=$host_alias \
-diff --git a/lib/libdvd/Makefile.in b/lib/libdvd/Makefile.in
-index 69d2286..1f5eebb 100644
---- a/lib/libdvd/Makefile.in
-+++ b/lib/libdvd/Makefile.in
-@@ -5,8 +5,7 @@ CXX=@CXX@
- SYSDIR=@abs_top_srcdir@/system/players/dvdplayer
- SOS= libdvdnav-$(ARCH).so
--DIRS= libdvdread \
--      libdvdnav
-+DIRS= libdvdnav
- WRAPPER=@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper.o
- WRAPPER_MACH_ALIAS=@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper_mach_alias
-@@ -14,7 +13,7 @@ WRAPPER_MACH_ALIAS=@abs_top_srcdir@/xbmc/cores/DllLoader/exports/wrapper_mach_al
- ifeq ($(findstring osx,$(ARCH)),osx)
- LDFLAGS +=-bundle -undefined dynamic_lookup -read_only_relocs suppress
- else
--LDFLAGS += -shared -fPIC -rdynamic
-+LDFLAGS += -shared -fPIC -rdynamic -ldvdread
- endif
- ifeq ($(ARCH), powerpc-osx)
-@@ -35,8 +34,7 @@ SLIB=$(addprefix $(SYSDIR)/, $(SOS))
- DISTCLEAN_FILES=includes/dvdread/*.h \
-               includes/dvdcss/*.h \
--              libdvdnav/config.h \
--              libdvdread/config.h
-+              libdvdnav/config.h
- .PHONY: $(DIRS) compile
-@@ -48,9 +46,9 @@ $(SYSDIR)/libdvdcss-$(ARCH).so:  $($(WRAPPER)) libdvdcss/src/.libs/libdvdcss.a
-       $(CC) $(LDFLAGS) -Wl,-alias_list,$(WRAPPER_MACH_ALIAS) -o $@ \
-               $(WRAPPER) libdvdcss/src/*.o $(BUNDLE1_O)
--$(SYSDIR)/libdvdnav-$(ARCH).so: $($(WRAPPER)) $(DVDCSS_A) libdvdread/obj/libdvdread.a libdvdnav/obj/libdvdnav.a
-+$(SYSDIR)/libdvdnav-$(ARCH).so: $($(WRAPPER)) $(DVDCSS_A) libdvdnav/obj/libdvdnav.a
-       $(CC) $(LDFLAGS) -Wl,-alias_list,$(WRAPPER_MACH_ALIAS) -o $@ \
--              $(WRAPPER) $(DVDCSS_O) libdvdread/obj/*.o libdvdnav/obj/*.o $(BUNDLE1_O)
-+              $(WRAPPER) $(DVDCSS_O) libdvdnav/obj/*.o $(BUNDLE1_O)
- else
-@@ -59,8 +57,8 @@ $(SYSDIR)/libdvdcss-$(ARCH).so: $(WRAPPER) libdvdcss/src/.libs/libdvdcss.a
-               libdvdcss/src/*.o -Wl,--unresolved-symbols=ignore-all -lm \
-               `cat $(WRAPPER:.o=.def)` $(WRAPPER)
--$(SYSDIR)/libdvdnav-$(ARCH).so: $(WRAPPER) $(DVDCSS_A) libdvdread/obj/libdvdread.a libdvdnav/obj/libdvdnav.a
--      $(CC) -o $@ $(LDFLAGS) -Wl,--soname,$@ $(DVDCSS_O) libdvdread/obj/*.o libdvdnav/obj/*.o -lm \
-+$(SYSDIR)/libdvdnav-$(ARCH).so: $(WRAPPER) $(DVDCSS_A) libdvdnav/obj/libdvdnav.a
-+      $(CC) -o $@ $(LDFLAGS) -Wl,--soname,$@ $(DVDCSS_O) libdvdnav/obj/*.o -lm \
-               -Wl,--unresolved-symbols=ignore-all \
-               `cat $(WRAPPER:.o=.def)` $(WRAPPER)
-@@ -70,10 +68,6 @@ libdvdcss/src/.libs/libdvdcss.a: libdvdcss;
- libdvdcss: compile
-       $(MAKE) -C $@
--libdvdread/obj/libdvdread.a: libdvdread;
--libdvdread: compile
--      $(MAKE) -C $@
--
- libdvdnav/obj/libdvdnav.a: libdvdnav;
- libdvdnav: compile
-       $(MAKE) -C $@
--- 
-1.8.5.3
-
diff --git a/ffmpeg3.patch b/ffmpeg3.patch
deleted file mode 100644 (file)
index 79e7d85..0000000
+++ /dev/null
@@ -1,420 +0,0 @@
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp   2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/DVDCodecUtils.cpp        2016-03-31 21:13:02.941888135 +0900
-@@ -42,7 +42,7 @@
- #include "libswscale/swscale.h"
- }
--// allocate a new picture (PIX_FMT_YUV420P)
-+// allocate a new picture (AV_PIX_FMT_YUV420P)
- DVDVideoPicture* CDVDCodecUtils::AllocatePicture(int iWidth, int iHeight)
- {
-   DVDVideoPicture* pPicture = new DVDVideoPicture;
-@@ -267,11 +267,11 @@
-         int dstformat;
-         if (format == RENDER_FMT_UYVY422)
--          dstformat = PIX_FMT_UYVY422;
-+          dstformat = AV_PIX_FMT_UYVY422;
-         else
--          dstformat = PIX_FMT_YUYV422;
-+          dstformat = AV_PIX_FMT_YUYV422;
--        struct SwsContext *ctx = sws_getContext(pSrc->iWidth, pSrc->iHeight, PIX_FMT_YUV420P,
-+        struct SwsContext *ctx = sws_getContext(pSrc->iWidth, pSrc->iHeight, AV_PIX_FMT_YUV420P,
-                                                            pPicture->iWidth, pPicture->iHeight, (AVPixelFormat)dstformat,
-                                                            SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL);
-         sws_scale(ctx, src, srcStride, 0, pSrc->iHeight, dst, dstStride);
-@@ -464,25 +464,25 @@
- }
- struct EFormatMap {
--  PixelFormat   pix_fmt;
-+  AVPixelFormat   pix_fmt;
-   ERenderFormat format;
- };
- static const EFormatMap g_format_map[] = {
--   { PIX_FMT_YUV420P,     RENDER_FMT_YUV420P    }
--,  { PIX_FMT_YUVJ420P,    RENDER_FMT_YUV420P    }
--,  { PIX_FMT_YUV420P10,   RENDER_FMT_YUV420P10  }
--,  { PIX_FMT_YUV420P16,   RENDER_FMT_YUV420P16  }
--,  { PIX_FMT_UYVY422,     RENDER_FMT_UYVY422    }
--,  { PIX_FMT_YUYV422,     RENDER_FMT_YUYV422    }
--,  { PIX_FMT_VAAPI_VLD,   RENDER_FMT_VAAPI      }
--,  { PIX_FMT_DXVA2_VLD,   RENDER_FMT_DXVA       }
--,  { PIX_FMT_NONE     ,   RENDER_FMT_NONE       }
-+   { AV_PIX_FMT_YUV420P,     RENDER_FMT_YUV420P    }
-+,  { AV_PIX_FMT_YUVJ420P,    RENDER_FMT_YUV420P    }
-+,  { AV_PIX_FMT_YUV420P10,   RENDER_FMT_YUV420P10  }
-+,  { AV_PIX_FMT_YUV420P16,   RENDER_FMT_YUV420P16  }
-+,  { AV_PIX_FMT_UYVY422,     RENDER_FMT_UYVY422    }
-+,  { AV_PIX_FMT_YUYV422,     RENDER_FMT_YUYV422    }
-+,  { AV_PIX_FMT_VAAPI_VLD,   RENDER_FMT_VAAPI      }
-+,  { AV_PIX_FMT_DXVA2_VLD,   RENDER_FMT_DXVA       }
-+,  { AV_PIX_FMT_NONE     ,   RENDER_FMT_NONE       }
- };
- ERenderFormat CDVDCodecUtils::EFormatFromPixfmt(int fmt)
- {
--  for(const EFormatMap *p = g_format_map; p->pix_fmt != PIX_FMT_NONE; ++p)
-+  for(const EFormatMap *p = g_format_map; p->pix_fmt != AV_PIX_FMT_NONE; ++p)
-   {
-     if(p->pix_fmt == fmt)
-       return p->format;
-@@ -492,10 +492,10 @@
- int CDVDCodecUtils::PixfmtFromEFormat(ERenderFormat fmt)
- {
--  for(const EFormatMap *p = g_format_map; p->pix_fmt != PIX_FMT_NONE; ++p)
-+  for(const EFormatMap *p = g_format_map; p->pix_fmt != AV_PIX_FMT_NONE; ++p)
-   {
-     if(p->format == fmt)
-       return p->pix_fmt;
-   }
--  return PIX_FMT_NONE;
-+  return AV_PIX_FMT_NONE;
- }
---- xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp~     2016-04-15 00:11:54.000000000 +0300
-+++ xbmc-16.0-Jarvis/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp      2016-04-15 00:17:02.509741123 +0300
-@@ -79,8 +79,8 @@
-   STATE_SW_MULTI
- };
--enum PixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
--                                                , const PixelFormat * fmt )
-+enum AVPixelFormat CDVDVideoCodecFFmpeg::GetFormat( struct AVCodecContext * avctx
-+                                                , const AVPixelFormat * fmt )
- {
-   CDVDVideoCodecFFmpeg* ctx  = (CDVDVideoCodecFFmpeg*)avctx->opaque;
-@@ -97,8 +97,8 @@
-     return avcodec_default_get_format(avctx, fmt);
-   }
--  const PixelFormat * cur = fmt;
--  while(*cur != PIX_FMT_NONE)
-+  const AVPixelFormat * cur = fmt;
-+  while(*cur != AV_PIX_FMT_NONE)
-   {
- #ifdef HAVE_LIBVDPAU
-     if(VDPAU::CDecoder::IsVDPAUFormat(*cur) && CSettings::Get().GetBool("videoplayer.usevdpau"))
-@@ -137,7 +137,7 @@
- #endif
- #ifdef HAVE_LIBVA
-     // mpeg4 vaapi decoding is disabled
--    if(*cur == PIX_FMT_VAAPI_VLD && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI))
-+    if(*cur == AV_PIX_FMT_VAAPI_VLD && CSettings::GetInstance().GetBool(CSettings::SETTING_VIDEOPLAYER_USEVAAPI))
-     {
-       VAAPI::CDecoder* dec = new VAAPI::CDecoder();
-       if(dec->Open(avctx, ctx->m_pCodecContext, *cur, ctx->m_uSurfacesCount) == true)
-@@ -216,11 +216,11 @@
-   for(std::vector<ERenderFormat>::iterator it = options.m_formats.begin(); it != options.m_formats.end(); ++it)
-   {
--    m_formats.push_back((PixelFormat)CDVDCodecUtils::PixfmtFromEFormat(*it));
-+    m_formats.push_back((AVPixelFormat)CDVDCodecUtils::PixfmtFromEFormat(*it));
-     if(*it == RENDER_FMT_YUV420P)
--      m_formats.push_back(PIX_FMT_YUVJ420P);
-+      m_formats.push_back(AV_PIX_FMT_YUVJ420P);
-   }
--  m_formats.push_back(PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */
-+  m_formats.push_back(AV_PIX_FMT_NONE); /* always add none to get a terminated list in ffmpeg world */
-   pCodec = avcodec_find_decoder(hints.codec);
-@@ -660,7 +660,7 @@
-   pDvdVideoPicture->color_transfer = m_pCodecContext->color_trc;
-   pDvdVideoPicture->color_matrix = m_pCodecContext->colorspace;
-   if(m_pCodecContext->color_range == AVCOL_RANGE_JPEG
--  || m_pCodecContext->pix_fmt     == PIX_FMT_YUVJ420P)
-+  || m_pCodecContext->pix_fmt     == AV_PIX_FMT_YUVJ420P)
-     pDvdVideoPicture->color_range = 1;
-   else
-     pDvdVideoPicture->color_range = 0;
-@@ -743,8 +743,8 @@
-   pDvdVideoPicture->iFlags |= pDvdVideoPicture->data[0] ? 0 : DVP_FLAG_DROPPED;
-   pDvdVideoPicture->extended_format = 0;
--  PixelFormat pix_fmt;
--  pix_fmt = (PixelFormat)m_pFrame->format;
-+  AVPixelFormat pix_fmt;
-+  pix_fmt = (AVPixelFormat)m_pFrame->format;
-   pDvdVideoPicture->format = CDVDCodecUtils::EFormatFromPixfmt(pix_fmt);
-   return true;
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h 2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.h      2016-03-31 21:00:47.697798052 +0900
-@@ -46,7 +46,7 @@
-     public:
-              IHardwareDecoder() {}
-     virtual ~IHardwareDecoder() {};
--    virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces) = 0;
-+    virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces) = 0;
-     virtual int  Decode    (AVCodecContext* avctx, AVFrame* frame) = 0;
-     virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture) = 0;
-     virtual int  Check     (AVCodecContext* avctx) = 0;
-@@ -77,7 +77,7 @@
-   void               SetHardware(IHardwareDecoder* hardware);
- protected:
--  static enum PixelFormat GetFormat(struct AVCodecContext * avctx, const PixelFormat * fmt);
-+  static enum AVPixelFormat GetFormat(struct AVCodecContext * avctx, const AVPixelFormat * fmt);
-   int  FilterOpen(const std::string& filters, bool scale);
-   void FilterClose();
-@@ -121,7 +121,7 @@
-   int m_iLastKeyframe;
-   double m_dts;
-   bool   m_started;
--  std::vector<PixelFormat> m_formats;
-+  std::vector<AVPixelFormat> m_formats;
-   double m_decoderPts;
-   int    m_skippedDeint;
-   bool   m_requestSkipDeint;
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp     2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.cpp  2016-03-31 21:16:03.131015505 +0900
-@@ -479,7 +479,7 @@
-   Close();
- }
--bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat fmt, unsigned int surfaces)
-+bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat fmt, unsigned int surfaces)
- {
-   // don't support broken wrappers by default
-   // nvidia cards with a vaapi to vdpau wrapper
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h       2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VAAPI.h    2016-03-31 21:14:41.633219057 +0900
-@@ -406,7 +406,7 @@
-   CDecoder();
-   virtual ~CDecoder();
--  virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces = 0);
-+  virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces = 0);
-   virtual int  Decode    (AVCodecContext* avctx, AVFrame* frame);
-   virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture);
-   virtual void Reset();
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp     2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.cpp  2016-03-31 21:15:34.730618946 +0900
-@@ -483,7 +483,7 @@
-   m_vdpauConfig.context = 0;
- }
--bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat fmt, unsigned int surfaces)
-+bool CDecoder::Open(AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat fmt, unsigned int surfaces)
- {
-   // check if user wants to decode this format with VDPAU
-   std::string gpuvendor = g_Windowing.GetRenderVendor();
-@@ -757,7 +757,7 @@
-   return 0;
- }
--bool CDecoder::IsVDPAUFormat(PixelFormat format)
-+bool CDecoder::IsVDPAUFormat(AVPixelFormat format)
- {
-   if (format == AV_PIX_FMT_VDPAU)
-     return true;
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h       2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDCodecs/Video/VDPAU.h    2016-03-31 21:14:26.429677869 +0900
-@@ -556,7 +556,7 @@
-   CDecoder();
-   virtual ~CDecoder();
--  virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum PixelFormat, unsigned int surfaces = 0);
-+  virtual bool Open      (AVCodecContext* avctx, AVCodecContext* mainctx, const enum AVPixelFormat, unsigned int surfaces = 0);
-   virtual int  Decode    (AVCodecContext* avctx, AVFrame* frame);
-   virtual bool GetPicture(AVCodecContext* avctx, AVFrame* frame, DVDVideoPicture* picture);
-   virtual void Reset();
-@@ -571,7 +571,7 @@
-   bool Supports(VdpVideoMixerFeature feature);
-   bool Supports(EINTERLACEMETHOD method);
-   EINTERLACEMETHOD AutoInterlaceMethod();
--  static bool IsVDPAUFormat(PixelFormat fmt);
-+  static bool IsVDPAUFormat(AVPixelFormat fmt);
-   static void FFReleaseBuffer(void *opaque, uint8_t *data);
-   static int FFGetBuffer(AVCodecContext *avctx, AVFrame *pic, int flags);
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp        2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDDemuxers/DVDDemuxFFmpeg.cpp     2016-03-31 21:16:43.421582924 +0900
-@@ -1617,7 +1617,7 @@
-   // for video we need a decoder to get desired information into codec context
-   if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO && st->codec->extradata &&
--      (!st->codec->width || st->codec->pix_fmt == PIX_FMT_NONE))
-+      (!st->codec->width || st->codec->pix_fmt == AV_PIX_FMT_NONE))
-   {
-     // open a decoder, it will be cleared down by ffmpeg on closing the stream
-     if (!st->codec->codec)
-@@ -1674,7 +1674,7 @@
-       st = m_pFormatContext->streams[idx];
-       if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
-       {
--        if (st->codec->width && st->codec->pix_fmt != PIX_FMT_NONE)
-+        if (st->codec->width && st->codec->pix_fmt != AV_PIX_FMT_NONE)
-           return true;
-         hasVideo = true;
-       }
-@@ -1687,7 +1687,7 @@
-       st = m_pFormatContext->streams[i];
-       if (st->codec->codec_type == AVMEDIA_TYPE_VIDEO)
-       {
--        if (st->codec->width && st->codec->pix_fmt != PIX_FMT_NONE)
-+        if (st->codec->width && st->codec->pix_fmt != AV_PIX_FMT_NONE)
-           return true;
-         hasVideo = true;
-       }
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDFileInfo.cpp xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDFileInfo.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/dvdplayer/DVDFileInfo.cpp       2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/dvdplayer/DVDFileInfo.cpp    2016-03-31 21:10:31.139940012 +0900
-@@ -275,7 +275,7 @@
-             uint8_t *pOutBuf = new uint8_t[nWidth * nHeight * 4];
-             struct SwsContext *context = sws_getContext(picture.iWidth, picture.iHeight,
--                  PIX_FMT_YUV420P, nWidth, nHeight, PIX_FMT_BGRA, SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL);
-+                  AV_PIX_FMT_YUV420P, nWidth, nHeight, AV_PIX_FMT_BGRA, SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL);
-             if (context)
-             {
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/FFmpeg.h xbmc-15.0-Isengard/xbmc/cores/FFmpeg.h
---- xbmc-15.0-Isengard.orig/xbmc/cores/FFmpeg.h        2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/FFmpeg.h     2016-03-31 21:09:46.016055600 +0900
-@@ -39,13 +39,13 @@
-   int flags = 0;
-   if (cpuFeatures & CPU_FEATURE_MMX)
--    flags |= SWS_CPU_CAPS_MMX;
-+    flags |= PP_CPU_CAPS_MMX;
-   if (cpuFeatures & CPU_FEATURE_MMX2)
--    flags |= SWS_CPU_CAPS_MMX2;
-+    flags |= PP_CPU_CAPS_MMX2;
-   if (cpuFeatures & CPU_FEATURE_3DNOW)
--    flags |= SWS_CPU_CAPS_3DNOW;
-+    flags |= PP_CPU_CAPS_3DNOW;
-   if (cpuFeatures & CPU_FEATURE_ALTIVEC)
--    flags |= SWS_CPU_CAPS_ALTIVEC;
-+    flags |= PP_CPU_CAPS_ALTIVEC;
-   return flags;
- }
-diff -ur xbmc-15.0-Isengard.orig/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp xbmc-15.0-Isengard/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp
---- xbmc-15.0-Isengard.orig/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp      2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/cores/VideoRenderers/LinuxRendererGL.cpp   2016-03-31 21:18:55.470144206 +0900
-@@ -2932,7 +2932,7 @@
-   }
-   else if (m_format == RENDER_FMT_NV12)
-   {
--    srcFormat = PIX_FMT_NV12;
-+    srcFormat = AV_PIX_FMT_NV12;
-     for (int i = 0; i < 2; i++)
-     {
-       src[i]       = im->plane[i];
-@@ -2941,13 +2941,13 @@
-   }
-   else if (m_format == RENDER_FMT_YUYV422)
-   {
--    srcFormat    = PIX_FMT_YUYV422;
-+    srcFormat    = AV_PIX_FMT_YUYV422;
-     src[0]       = im->plane[0];
-     srcStride[0] = im->stride[0];
-   }
-   else if (m_format == RENDER_FMT_UYVY422)
-   {
--    srcFormat    = PIX_FMT_UYVY422;
-+    srcFormat    = AV_PIX_FMT_UYVY422;
-     src[0]       = im->plane[0];
-     srcStride[0] = im->stride[0];
-   }
-@@ -2965,7 +2965,7 @@
-   m_context = sws_getCachedContext(m_context,
-                                                  im->width, im->height, (AVPixelFormat)srcFormat,
--                                                 im->width, im->height, (AVPixelFormat)PIX_FMT_BGRA,
-+                                                 im->width, im->height, (AVPixelFormat)AV_PIX_FMT_BGRA,
-                                                  SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL);
-   uint8_t *dst[]       = { m_rgbBuffer, 0, 0, 0 };
-@@ -2995,7 +2995,7 @@
-   if (m_format == RENDER_FMT_YUV420P)
-   {
--    srcFormat = PIX_FMT_YUV420P;
-+    srcFormat = AV_PIX_FMT_YUV420P;
-     for (int i = 0; i < 3; i++)
-     {
-       srcTop[i]       = im->plane[i];
-@@ -3006,7 +3006,7 @@
-   }
-   else if (m_format == RENDER_FMT_NV12)
-   {
--    srcFormat = PIX_FMT_NV12;
-+    srcFormat = AV_PIX_FMT_NV12;
-     for (int i = 0; i < 2; i++)
-     {
-       srcTop[i]       = im->plane[i];
-@@ -3017,7 +3017,7 @@
-   }
-   else if (m_format == RENDER_FMT_YUYV422)
-   {
--    srcFormat       = PIX_FMT_YUYV422;
-+    srcFormat       = AV_PIX_FMT_YUYV422;
-     srcTop[0]       = im->plane[0];
-     srcStrideTop[0] = im->stride[0] * 2;
-     srcBot[0]       = im->plane[0] + im->stride[0];
-@@ -3025,7 +3025,7 @@
-   }
-   else if (m_format == RENDER_FMT_UYVY422)
-   {
--    srcFormat       = PIX_FMT_UYVY422;
-+    srcFormat       = AV_PIX_FMT_UYVY422;
-     srcTop[0]       = im->plane[0];
-     srcStrideTop[0] = im->stride[0] * 2;
-     srcBot[0]       = im->plane[0] + im->stride[0];
-@@ -3045,7 +3045,7 @@
-   m_context = sws_getCachedContext(m_context,
-                                                  im->width, im->height >> 1, (AVPixelFormat)srcFormat,
--                                                 im->width, im->height >> 1, (AVPixelFormat)PIX_FMT_BGRA,
-+                                                 im->width, im->height >> 1, (AVPixelFormat)AV_PIX_FMT_BGRA,
-                                                  SWS_FAST_BILINEAR | SwScaleCPUFlags(), NULL, NULL, NULL);
-   uint8_t *dstTop[]    = { m_rgbBuffer, 0, 0, 0 };
-   uint8_t *dstBot[]    = { m_rgbBuffer + m_sourceWidth * m_sourceHeight * 2, 0, 0, 0 };
-diff -ur xbmc-15.0-Isengard.orig/xbmc/video/FFmpegVideoDecoder.cpp xbmc-15.0-Isengard/xbmc/video/FFmpegVideoDecoder.cpp
---- xbmc-15.0-Isengard.orig/xbmc/video/FFmpegVideoDecoder.cpp  2015-07-22 03:41:29.000000000 +0900
-+++ xbmc-15.0-Isengard/xbmc/video/FFmpegVideoDecoder.cpp       2016-03-31 21:37:37.869490415 +0900
-@@ -248,7 +248,7 @@
-       return false;
-     // Due to a bug in swsscale we need to allocate one extra line of data
--    if ( avpicture_alloc( m_pFrameRGB, PIX_FMT_RGB32, m_frameRGBwidth, m_frameRGBheight + 1 ) < 0 )
-+    if ( avpicture_alloc( m_pFrameRGB, AV_PIX_FMT_RGB32, m_frameRGBwidth, m_frameRGBheight + 1 ) < 0 )
-       return false;
-   }
-@@ -283,7 +283,7 @@
-   // We got the video frame, render it into the picture buffer
-   struct SwsContext * context = sws_getContext( m_pCodecCtx->width, m_pCodecCtx->height, m_pCodecCtx->pix_fmt,
--                           m_frameRGBwidth, m_frameRGBheight, PIX_FMT_RGB32, SWS_FAST_BILINEAR, NULL, NULL, NULL );
-+                           m_frameRGBwidth, m_frameRGBheight, AV_PIX_FMT_RGB32, SWS_FAST_BILINEAR, NULL, NULL, NULL );
-   sws_scale( context, m_pFrame->data, m_pFrame->linesize, 0, m_pCodecCtx->height,
-                                                                      m_pFrameRGB->data, m_pFrameRGB->linesize );
---- xbmc-16.0-Jarvis/xbmc/pictures/Picture.cpp~        2016-02-20 17:21:19.000000000 +0200
-+++ xbmc-16.0-Jarvis/xbmc/pictures/Picture.cpp 2016-04-15 00:56:59.263272399 +0300
-@@ -342,8 +342,8 @@
-                           uint8_t *out_pixels, unsigned int out_width, unsigned int out_height, unsigned int out_pitch,
-                           CPictureScalingAlgorithm::Algorithm scalingAlgorithm /* = CPictureScalingAlgorithm::NoAlgorithm */)
- {
--  struct SwsContext *context = sws_getContext(in_width, in_height, PIX_FMT_BGRA,
--                                                         out_width, out_height, PIX_FMT_BGRA,
-+  struct SwsContext *context = sws_getContext(in_width, in_height, AV_PIX_FMT_BGRA,
-+                                                         out_width, out_height, AV_PIX_FMT_BGRA,
-                                                          CPictureScalingAlgorithm::ToSwscale(scalingAlgorithm) | SwScaleCPUFlags(), NULL, NULL, NULL);
-   uint8_t *src[] = { in_pixels, 0, 0, 0 };
diff --git a/fmt.patch b/fmt.patch
deleted file mode 100644 (file)
index 458666c..0000000
--- a/fmt.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 18ff80a9c169fb969b75e2143d9f1f234b71a730 Mon Sep 17 00:00:00 2001
-From: Craig Andrews <candrews@integralblue.com>
-Date: Thu, 24 Jun 2021 20:41:11 -0400
-Subject: [PATCH] [utils] include fmt/xchar.h
-
-fmt 8 moved wchar/custom char overloads to xchar.h, so for fmt 8 compatibility, xchar.h must be included
-
-See https://github.com/fmtlib/fmt/commit/76ee490468212f8705a1421b4c88f8f814b2d351
----
- xbmc/utils/StringUtils.h | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/xbmc/utils/StringUtils.h b/xbmc/utils/StringUtils.h
-index ca6f82953d90a..2dc5c3f03af2f 100644
---- a/xbmc/utils/StringUtils.h
-+++ b/xbmc/utils/StringUtils.h
-@@ -36,6 +36,9 @@
- #if FMT_VERSION >= 40000
- #include <fmt/printf.h>
- #endif
-+#if FMT_VERSION >= 80000
-+#include <fmt/xchar.h>
-+#endif
- #include "XBDateTime.h"
- #include "utils/params_check_macros.h"
diff --git a/gcc5.patch b/gcc5.patch
deleted file mode 100644 (file)
index 07a76a2..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
---- xbmc-16.1-Jarvis/xbmc/filesystem/FTPParse.cpp.orig 2016-04-24 08:48:30.000000000 +0200
-+++ xbmc-16.1-Jarvis/xbmc/filesystem/FTPParse.cpp      2017-12-11 17:11:03.079955624 +0100
-@@ -34,6 +34,8 @@
- #include <cmath>
- #include "FTPParse.h"
-+using std::string;
-+
- CFTPParse::CFTPParse()
- {
-   m_flagtrycwd = 0;
---- xbmc-16.1-Jarvis/lib/cximage-6.0/CxImage/ximadsp.cpp.orig  2016-04-24 08:48:30.000000000 +0200
-+++ xbmc-16.1-Jarvis/lib/cximage-6.0/CxImage/ximadsp.cpp       2017-12-11 18:34:55.026753161 +0100
-@@ -3,12 +3,14 @@
-  * CxImage version 6.0.0 02/Feb/2008
-  */
-+#if CXIMAGE_SUPPORT_DSP
-+// include <queue> before any local headers, as they define min/max as macros
-+#include <queue>
-+
- #include "ximage.h"
- #include "ximaiter.h"
--#if CXIMAGE_SUPPORT_DSP
--
- ////////////////////////////////////////////////////////////////////////////////
- /**
-  * Converts the image to B&W.
-@@ -3477,7 +3479,6 @@
- }
- ////////////////////////////////////////////////////////////////////////////////
--#include <queue>
- ////////////////////////////////////////////////////////////////////////////////
- /**
-  * Flood Fill
diff --git a/jpeglib-boolean.patch b/jpeglib-boolean.patch
deleted file mode 100644 (file)
index 52283b8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
---- xbmc-12.3-Frodo/xbmc/guilib/JpegIO.cpp~    2013-12-12 22:47:49.000000000 +0100
-+++ xbmc-12.3-Frodo/xbmc/guilib/JpegIO.cpp     2014-01-03 18:43:06.138467273 +0100
-@@ -341,7 +341,7 @@
-   else
-   {
-     jpeg_save_markers (&m_cinfo, JPEG_APP0 + 1, 0xFFFF);
--    jpeg_read_header(&m_cinfo, true);
-+    jpeg_read_header(&m_cinfo, TRUE);
-     /*  libjpeg can scale the image for us if it is too big. It must be in the format
-     num/denom, where (for our purposes) that is [1-8]/8 where 8/8 is the unscaled image.
---- xbmc-12.3-Frodo/xbmc/guilib/JpegIO.h~      2014-01-03 11:07:38.000000000 +0100
-+++ xbmc-12.3-Frodo/xbmc/guilib/JpegIO.h       2014-01-03 11:08:16.622039556 +0100
-@@ -26,6 +26,8 @@
- #pragma comment(lib, "turbojpeg-static.lib")
- #endif
-+#undef TRUE
-+#undef FALSE
- #include <jpeglib.h>
- #include "utils/StdString.h"
---- xbmc-12.3-Frodo/lib/cximage-6.0/CxImage/ximajpg.cpp~       2013-12-12 22:47:49.000000000 +0100
-+++ xbmc-12.3-Frodo/lib/cximage-6.0/CxImage/ximajpg.cpp        2014-01-03 11:52:50.862020197 +0100
-@@ -10,7 +10,7 @@
- #if CXIMAGE_SUPPORT_JPG
- #ifdef _LINUX
--#include <jmorecfg.h>
-+//#include <jmorecfg.h>
- #else
- #include "../jpeg/jmorecfg.h"
- #endif
-@@ -659,7 +659,7 @@
-       if ((GetCodecOption(CXIMAGE_FORMAT_JPG) & ENCODE_SMOOTHING) != 0)
-               cinfo.smoothing_factor = m_nSmoothing;
--      jpeg_set_quality(&cinfo, GetJpegQuality(), (GetCodecOption(CXIMAGE_FORMAT_JPG) & ENCODE_BASELINE) != 0);
-+      jpeg_set_quality(&cinfo, GetJpegQuality(), (boolean)((GetCodecOption(CXIMAGE_FORMAT_JPG) & ENCODE_BASELINE) != 0));
- //#ifdef C_PROGRESSIVE_SUPPORTED
-       if ((GetCodecOption(CXIMAGE_FORMAT_JPG) & ENCODE_PROGRESSIVE) != 0)
---- xbmc-12.3-Frodo/lib/cximage-6.0/CxImage/ximajpg.h~ 2014-01-03 11:51:37.000000000 +0100
-+++ xbmc-12.3-Frodo/lib/cximage-6.0/CxImage/ximajpg.h  2014-01-03 18:05:40.095150198 +0100
-@@ -29,6 +29,8 @@
- extern "C" {
- #ifdef _LINUX
-+#undef TRUE
-+#undef FALSE
-  #include <jpeglib.h>
-  #include <jerror.h>
- #else
index ca77d3bc516256e384aaca47c85989cf0da3133f..3829193fa795108c7afc9e526ef255c76a2b5c9b 100644 (file)
--- a/kodi.spec
+++ b/kodi.spec
 #
 # Conditional build:
 # Features:
-%bcond_with    afpclient       # AFP support via libafpclient
-%bcond_without airplay         # AirPlay support
 %bcond_with    airtunes        # AirTunes support
-%bcond_without alsa            # ALSA support
-%bcond_without avahi           # Avahi support
-%bcond_without dbus            # DBUS support
 %bcond_without dvdcss          # DVDCSS support
-%bcond_without opengl          # OpenGL rendering
-%bcond_with    gtest           # configure Google Test Framework
-%bcond_without joystick        # SDL joystick support
-%bcond_without libcap          # libcap support
-%bcond_with    libcec          # libcec support
-%bcond_without gif             # GIF support via giflib
-%bcond_without libusb          # libusb support
-%bcond_with    mdnsembedded    # mDNSEmbedded support
-%bcond_without mysql           # MySQL
-%bcond_without nfs             # NFS support via libnfs
-%bcond_without nonfree         # componentents with non-compliant licenses
-%bcond_with    openmax         # OpenMax decoding, requires OpenGLES
+%bcond_without gbm             # GBM platform
 %bcond_without optical_drive   # optical drive
-%bcond_without projectm        # ProjectM visualisation
-%bcond_without pulse           # PulseAudio support
-%bcond_without rtmp            # RTMP support via librtmp
-%bcond_without samba           # SAMBA support
-%bcond_without sdl             # SDL
-%bcond_without ssh             # SSH SFTP support
-%bcond_without texturepacker   # texturepacker support
-%bcond_without udev            # udev support
 %bcond_without upnp            # UPnP support
-%bcond_without vaapi           # VAAPI decoding
-%bcond_without vdpau           # VDPAU decoding
-%bcond_with    vtbdecoder      # VTBDecoder decoding (VTB Decoder not supported on this platform)
-%bcond_without webserver       # webserver
-%bcond_without x11             # x11 'Linux Only'
-%bcond_without xrandr          # XRandR support
-%bcond_with    asap_codec      # ASAP ADPCM support
+%bcond_without x11             # X11 platform
 %bcond_with    gles            # OpenGLES rendering
-%bcond_without libbluray       # libbluray support
-%bcond_without mid             # MID support
-%bcond_with    profiling       # gprof profiling
-%bcond_with    tegra           # Tegra2 arm
-%bcond_with    wayland         # wayland
+%bcond_without wayland         # Wayland platform
 # System libs:
 %bcond_without system_ffmpeg   # build with system ffmpeg
-%bcond_with    system_dvdread  # build with system dvdread
+# CPU instructions
+%bcond_with    avx             # use AVX instructions
+%bcond_with    avx2            # use AVX2 instructions
+%bcond_with    neon            # use NEON instructions
+%bcond_with    sse             # use SSE instructions
+%bcond_with    sse2            # use SSE2 instructions
+%bcond_with    sse3            # use SSE3 instructions
+%bcond_with    ssse3           # use SSSE3 instructions
+%bcond_with    sse41           # use SSE4.1 instructions
+%bcond_with    sse42           # use SSE4.2 instructions
 
-%define        codename Leia
+%ifarch %{arm_with_neon}
+%define                with_neon       1
+%endif
+%ifarch %{x86_with_sse}
+%define                with_sse        1
+%endif
+%ifarch %{x86_with_sse2}
+%define                with_sse2       1
+%endif
+
+%define        codename Matrix
 #define        subver  rc1
 Summary:       Kodi is a free and open source media-player and entertainment hub
 Name:          kodi
-Version:       18.4
-Release:       8
+Version:       19.3
+Release:       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}.tar.gz
-# Source0-md5: 5e5e1e2527c2619785597b04e35fda6c
-Patch0:                jpeglib-boolean.patch
-Patch1:                disable-static.patch
-Patch2:                dvdread.patch
-Patch3:                ffmpeg3.patch
-Patch4:                gcc5.patch
-Patch5:                libdvd.patch
-Patch6:                microhttpd.patch
-Patch7:                assert.patch
-Patch8:                fmt.patch
+# Source0-md5: 623583e6eac14668468d6c5628b8f1c5
+Patch0:                disable-static.patch
+Patch1:                libdvd.patch
 URL:           https://kodi.tv/
 BuildRequires: EGL-devel
+%{?with_gbm:BuildRequires:     Mesa-libgbm-devel}
+# for eglextchromium.h
+%{?with_x11:BuildRequires:     Mesa-libEGL-devel}
+%if %{without gles}
 BuildRequires: OpenGL-GLU-devel
 BuildRequires: OpenGL-devel
-BuildRequires: SDL2-devel
-BuildRequires: alsa-lib-devel
+%if %{with x11}
+BuildRequires: OpenGL-GLX-devel
+%endif
+%endif
+%{?with_gles:BuildRequires:    OpenGLES-devel}
+BuildRequires: alsa-lib-devel >= 1.0.27
 BuildRequires: avahi-devel
 BuildRequires: bluez-libs-devel >= 4.99
-BuildRequires: bzip2-devel
 BuildRequires: cmake >= 3.4
 BuildRequires: crossguid-devel
 BuildRequires: curl-devel
+BuildRequires: dav1d-devel
 BuildRequires: dbus-devel
-BuildRequires: libfmt-devel >= 3.0.1
-BuildRequires: rapidjson-devel >= 1.1.0
-# libavcodec >= 56.26.100 libavfilter >= 5.11.102 libavformat >= 56.25.101 libavutil >= 54.20.100 libpostproc >= 53.3.100 libswscale >= 3.1.101 libswresample >= 1.1.100
-%{?with_system_ffmpeg:BuildRequires:   ffmpeg-devel >= 2.4.4}
-BuildRequires: flac-devel
+# libavcodec >= 58.91.100 libavfilter >= 7.85.100 libavformat >= 58.45.100 libavutil >= 56.51.100 libpostproc >= 55.7.100 libswscale >= 5.7.100 libswresample >= 3.7.100
+%{?with_system_ffmpeg:BuildRequires:   ffmpeg-devel >= 4.3}
 BuildRequires: flatbuffers-devel >= 1.9.0
 BuildRequires: fontconfig-devel
 BuildRequires: freetype-devel
 BuildRequires: fribidi-devel
-BuildRequires: gawk
-BuildRequires: gettext-autopoint
+BuildRequires: fstrcmp-devel >= 0.7
 BuildRequires: gettext-tools
-%{?with_gif:BuildRequires:     giflib-devel}
-BuildRequires: gperf
-BuildRequires: jre
+BuildRequires: giflib-devel >= 5
 BuildRequires: lcms2-devel
 BuildRequires: libass-devel
 BuildRequires: libatomic-devel
-BuildRequires: libbluray-devel >= 0.7.0
+BuildRequires: libbluray-devel >= 0.9.3
 BuildRequires: libcap-devel
-BuildRequires: libcdio-devel
-%{?with_libcec:BuildRequires:  libcec-devel >= 3.0.0}
-BuildRequires: libdrm-devel
-BuildRequires: libdvdcss-devel >= 1.4.1
-%{?with_system_dvdread:BuildRequires:  libdvdread-devel}
-BuildRequires: libgcrypt-devel
+BuildRequires: libcdio-c++-devel >= 2.1.0
+BuildRequires: libcdio-devel >= 2.1.0
+BuildRequires: libcec-devel >= 3.0.0
+BuildRequires: libdrm-devel >= 2.4.95
+%{?with_dvdcss:BuildRequires:  libdvdcss-devel >= 1.4.1}
+BuildRequires: libdvdnav-devel
+BuildRequires: libdvdread-devel
+BuildRequires: libfmt-devel >= 6.1.2
+%{?with_gbm:BuildRequires:     libinput-devel}
 BuildRequires: libjpeg-devel
-BuildRequires: libltdl-devel
 BuildRequires: libmicrohttpd-devel >= 0.9.40
-BuildRequires: libogg-devel
-BuildRequires: libplist-devel
+BuildRequires: libnfs-devel
+BuildRequires: libplist-devel >= 2.0
 BuildRequires: libpng-devel
-BuildRequires: librtmp-devel
 BuildRequires: libsmbclient-devel
-BuildRequires: libssh-devel
-BuildRequires: libstdc++-devel
-BuildRequires: libtool
+BuildRequires: libstdc++-devel >= 6:5
+BuildRequires: libudfread-devel >= 1.0.0
 BuildRequires: libuuid-devel
 BuildRequires: libva-devel
-BuildRequires: libva-x11-devel
+BuildRequires: libva-drm-devel
+%{?with_wayland:BuildRequires: libva-wayland-devel}
+%{?with_x11:BuildRequires:     libva-x11-devel}
+%if %{with x11} && %{without gles}
 BuildRequires: libvdpau-devel
-BuildRequires: libvorbis-devel
+%endif
 BuildRequires: libxml2-devel >= 2.0
 BuildRequires: libxslt-devel
-BuildRequires: lzo-devel
+BuildRequires: lirc-devel
+BuildRequires: lzo-devel >= 2
 BuildRequires: mysql-devel
-%ifarch %{ix86}
-BuildRequires: nasm
-%endif
-BuildRequires: fstrcmp-devel >= 0.7
-BuildRequires: openssl-devel
+BuildRequires: openssl-devel >= 1.0.2
 BuildRequires: pcre-cxx-devel
 BuildRequires: pkgconfig
-BuildRequires: pkgconfig(egl)
-BuildRequires: pkgconfig(gl)
-BuildRequires: pkgconfig(glu)
-BuildRequires: pulseaudio-devel >= 1.0
-BuildRequires: python-devel >= 1:2.6
+BuildRequires: pulseaudio-devel >= 11.0.0
+BuildRequires: python3-devel >= 1:3.8
+BuildRequires: rapidjson-devel >= 1.1.0
 BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.566
+BuildRequires: rpmbuild(macros) >= 2.007
 BuildRequires: sed >= 4.0
+BuildRequires: spdlog-devel >= 1.5.0
 BuildRequires: sqlite3-devel
 BuildRequires: swig
-BuildRequires: taglib-devel >= 1.8
+BuildRequires: taglib-devel >= 1.9.0
 BuildRequires: tinyxml-devel >= 2.6.2
 BuildRequires: udev-devel
-BuildRequires: unzip
+%if %{with wayland}
+BuildRequires: wayland-protocols >= 1.7
+BuildRequires: waylandpp-devel >= 0.2.2
+%endif
+%if %{with x11}
 BuildRequires: xorg-lib-libX11-devel
 BuildRequires: xorg-lib-libXext-devel
 BuildRequires: xorg-lib-libXrandr-devel
-BuildRequires: yajl-devel >= 2
-BuildRequires: zip
+%endif
+%if %{with gbm} || %{with wayland}
+BuildRequires: xorg-lib-libxkbcommon-devel >= 0.4.1
+%endif
 BuildRequires: zlib-devel
-# kodi uses it's own, modified squish
-BuildConflicts:        squish-devel
-#https://github.com/sahlberg/libnfs
-BuildRequires: libnfs-devel
-#http://sites.google.com/site/alexthepuffin/home
-#BuildRequires:        afpfs-ng-devel
-#BuildRequires:        shairplay-devel
+Requires:      %{name}-common = %{version}-%{release}
 Requires:      /usr/bin/glxinfo
-Requires:      SDL >= 1.2.14-5
+Requires:      alsa-lib >= 1.0.27
+Requires:      desktop-file-utils
+Requires:      ffmpeg-libs >= 4.3
+Requires:      flatbuffers >= 1.9.0
+Requires:      hicolor-icon-theme
+Requires:      libbluray >= 0.9.3
+Requires:      libcdio >= 2.1.0
+Requires:      libcdio-c++ >= 2.1.0
+Requires:      libcec >= 3.0.0
+Requires:      libdrm >= 2.4.95
+%{?with_dvdcss:Requires:       libdvdcss >= 1.4.1}
+Requires:      libfmt >= 6.1.2
+Requires:      libmicrohttpd >= 0.9.40
+Requires:      libplist >= 2.0
+Requires:      libudfread >= 1.0.0
 Requires:      lsb-release
-Requires:      xorg-app-xdpyinfo
-# dlopened libraries:
-# grep 'DLL_PATH_.*lib.*\.so' xbmc/DllPaths_generated.h | grep -v special://
-Requires:      curl-libs
-Requires:      libass
-Requires:      libbluray
-Requires:      libmodplug
-Requires:      libmpeg2-libs
-Requires:      libogg
-Requires:      libplist
-Requires:      libvorbis
+Requires:      openssl >= 1.0.2
+Requires:      pulseaudio-libs >= 11.0.0
+Requires:      spdlog >= 1.5.0
+Requires:      taglib >= 1.9.0
+Requires:      tinyxml >= 2.6.2
+%{?with_wayland:Requires:      waylandpp >= 0.2.2}
+%if %{with gbm} || %{with wayland}
+Requires:      xorg-lib-libxkbcommon >= 0.4.1
+%endif
 Obsoletes:     xbmc < 14.0
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-# extracting debug info from /home/users/glen/tmp/kodi-18.0-root-glen/usr/lib64/kodi/kodi-x11
-# /usr/lib/rpm/bin/debugedit: canonicalization unexpectedly shrank by one character
-%define                _noautostrip    kodi-x11
-%define                _enable_debug_packages  0
-
 %description
 Kodi Entertainment Center (formerly XBMC) is a free and open-source
 media player software developed by the XBMC Foundation, a non-profit
@@ -196,17 +182,25 @@ for use with televisions and remote controls. It allows users to play
 and view most videos, music, such as podcasts from the internet, and
 all common digital media files from local and network storage media.
 
+%package common
+Summary:       Common files for Kodi
+BuildArch:     noarch
+
+%description common
+Common files for Kodi.
+
+%package devel
+Summary:       Header files for Kodi
+Group:         Development/Libraries
+Requires:      %{name}-common = %{version}-%{release}
+
+%description devel
+Header files for Kodi.
+
 %prep
 %setup -q -n xbmc-%{version}%{?subver}-%{codename}
-#%patch0 -p1
+%patch0 -p1
 %patch1 -p1
-%{?with_system_dvdread:%patch2 -p1}
-#%patch3 -p1
-#%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
 
 %{__rm} -r lib/win32
 
@@ -215,72 +209,40 @@ all common digital media files from local and network storage media.
 %endif
 
 %build
-install -d build
-cd build
-# cmake not picking up include path from pkgconfig
-# https://trac.kodi.tv/ticket/16861
-%define        specflags -I/usr/include/freetype2
-%cmake \
-       -DENABLE_AIRTUNES=%{__true_false airtunes} \
-       -DENABLE_DVDCSS=%{__true_false dvdcss} \
-       -DENABLE_INTERNAL_CROSSGUID=OFF \
-       -DENABLE_INTERNAL_FFMPEG=%{!?with_system_ffmpeg:ON}%{?with_system_ffmpeg:OFF} \
-       -DENABLE_INTERNAL_LIBDVD=OFF \
-       -DENABLE_OPTICAL=%{__true_false optical_drive} \
-       -DENABLE_UPNP=%{__true_false upnp} \
-       ..
-%if 0
-%configure \
-       ac_cv_type__Bool=yes \
-       --disable-silent-rules \
-       --disable-debug \
-       --disable-ccache \
-       --with-ffmpeg=%{!?with_system_ffmpeg:force}%{?with_system_ffmpeg:shared} \
-       %{__enable_disable afpclient} \
-       %{__enable_disable airplay} \
-       %{__enable_disable alsa} \
-       %{__enable_disable asap_codec asap-codec} \
-       %{__enable_disable avahi} \
-       %{__enable_disable dbus} \
-       %{__enable_disable gles} \
-       %{__enable_disable opengl gl} \
-       %{__enable_disable gtest} \
-       %{__enable_disable joystick} \
-       %{__enable_disable libbluray} \
-       %{__enable_disable libcap} \
-       %{__enable_disable libcec} \
-       %{__enable_disable gif libgif} \
-       %{__enable_disable libusb} \
-       %{__enable_disable mdnsembedded} \
-       %{__enable_disable mid} \
-       %{__enable_disable mysql} \
-       %{__enable_disable nfs} \
-       %{__enable_disable nonfree non-free} \
-       %{__enable_disable openmax} \
-       %{__enable_disable profiling} \
-       %{__enable_disable pulse} \
-       %{__enable_disable rtmp} \
-       %{__enable_disable samba} \
-       %{__enable_disable sdl} \
-       %{__enable_disable ssh} \
-       %{__enable_disable tegra} \
-       %{__enable_disable texturepacker} \
-       %{__enable_disable udev} \
-       %{__enable_disable upnp} \
-       %{__enable_disable vaapi} \
-       %{__enable_disable vdpau} \
-       %{__enable_disable vtbdecoder} \
-       %{__enable_disable wayland} \
-       %{__enable_disable webserver} \
-       %{__enable_disable x11} \
-       %{__enable_disable xrandr} \
-       %{nil}
-%endif
+%cmake -B build \
+       -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_CROSSGUID:BOOL=OFF \
+       -DENABLE_INTERNAL_DAV1D:BOOL=OFF \
+       -DENABLE_INTERNAL_FFMPEG:BOOLD=%{?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_LIBDVD:BOOL=OFF \
+       -DENABLE_INTERNAL_RapidJSON:BOOL=OFF \
+       -DENABLE_INTERNAL_SPDLOG:BOOL=OFF \
+       -DENABLE_INTERNAL_UDFREAD:BOOL=OFF \
+       -DENABLE_LDGOLD:BOOL=OFF \
+       -DENABLE_TESTING:BOOL=OFF \
+       %{cmake_on_off optical_drive ENABLE_OPTICAL} \
+       %{cmake_on_off upnp ENABLE_UPNP} \
+       %{cmake_on_off avx ENABLE_AVX} \
+       %{cmake_on_off avx2 ENABLE_AVX2} \
+       %{cmake_on_off neon ENABLE_NEON} \
+       %{cmake_on_off sse ENABLE_SSE} \
+       %{cmake_on_off sse2 ENABLE_SSE2} \
+       %{cmake_on_off sse3 ENABLE_SSE3} \
+       %{cmake_on_off ssse3 ENABLE_SSSE3} \
+       %{cmake_on_off sse41 ENABLE_SSE4_1} \
+       %{cmake_on_off sse42 ENABLE_SSE4_2}
 
-%{__make}
+%{__make} -C build
 
 %install
 rm -rf $RPM_BUILD_ROOT
+
 %{__make} -C build install \
        DESTDIR=$RPM_BUILD_ROOT
 
@@ -289,20 +251,40 @@ rm -rf $RPM_BUILD_ROOT
 # not packaged
 %{__rm} $RPM_BUILD_ROOT%{_prefix}/lib/firewalld/services/kodi-*.xml
 
-# no -devel package yet
-%{__rm} -r $RPM_BUILD_ROOT%{_includedir}/kodi
-
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%post
+%update_icon_cache hicolor
+%update_desktop_database
+
+%postun
+%update_icon_cache hicolor
+%update_desktop_database_postun
+
 %files
 %defattr(644,root,root,755)
 %doc README.md docs/README.Linux.md
+%attr(755,root,root) %{_bindir}/JsonSchemaBuilder
 %attr(755,root,root) %{_bindir}/TexturePacker
 %attr(755,root,root) %{_bindir}/kodi
 %attr(755,root,root) %{_bindir}/kodi-standalone
-%{_datadir}/%{name}
+%{_datadir}/%{name}/addons
+%{_datadir}/%{name}/media
+%{_datadir}/%{name}/privacy-policy.txt
+%{_datadir}/%{name}/system
+%{_datadir}/%{name}/userdata
 %attr(755,root,root) %{_libdir}/%{name}
 %{_desktopdir}/kodi.desktop
 %{_iconsdir}/hicolor/*/apps/%{name}.png
+%{_datadir}/metainfo/org.xbmc.kodi.metainfo.xml
 %{_datadir}/xsessions/kodi.desktop
+
+%files common
+%defattr(644,root,root,755)
+%dir %{_datadir}/%{name}
+
+%files devel
+%defattr(644,root,root,755)
+%{_includedir}/kodi
+%{_datadir}/%{name}/cmake
diff --git a/microhttpd.patch b/microhttpd.patch
deleted file mode 100644 (file)
index 63c0626..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-From 59f9ee47dc60386f05bc331da9fd0420e22ed344 Mon Sep 17 00:00:00 2001
-From: Craig Andrews <candrews@integralblue.com>
-Date: Thu, 2 Jul 2020 14:36:09 -0400
-Subject: [PATCH] Compatibility with libmicrohttpd 0.9.71
-
-From the libmicrohttpd 0.9.71 release notes:
-
-The release introduces an 'enum MHD_Result' instead of
-for certain API misuse bugs by providing better types (not everything is
-an 'int').  While this does NOT change the binary API, this change
-_will_ cause compiler warnings for all legacy code -- until 'int' is
-replaced with 'enum MHD_Result'.
----
- xbmc/network/WebServer.cpp                    | 45 ++++++++++---------
- xbmc/network/WebServer.h                      | 30 ++++++-------
- .../httprequesthandler/HTTPFileHandler.cpp    |  2 +-
- .../httprequesthandler/HTTPFileHandler.h      |  2 +-
- .../HTTPImageTransformationHandler.cpp        |  2 +-
- .../HTTPImageTransformationHandler.h          |  2 +-
- .../httprequesthandler/HTTPJsonRpcHandler.cpp |  2 +-
- .../httprequesthandler/HTTPJsonRpcHandler.h   |  2 +-
- .../httprequesthandler/HTTPPythonHandler.cpp  |  2 +-
- .../httprequesthandler/HTTPPythonHandler.h    |  2 +-
- .../HTTPRequestHandlerUtils.cpp               |  4 +-
- .../HTTPRequestHandlerUtils.h                 |  4 +-
- .../HTTPWebinterfaceAddonsHandler.cpp         |  2 +-
- .../HTTPWebinterfaceAddonsHandler.h           |  2 +-
- .../httprequesthandler/IHTTPRequestHandler.h  |  8 +++-
- 15 files changed, 60 insertions(+), 51 deletions(-)
-
-diff --git a/xbmc/network/WebServer.cpp b/xbmc/network/WebServer.cpp
-index 783404227785..53549aafa9ce 100644
---- a/xbmc/network/WebServer.cpp
-+++ b/xbmc/network/WebServer.cpp
-@@ -86,7 +86,7 @@ static MHD_Response* create_response(size_t size, const void* data, int free, in
-   return MHD_create_response_from_buffer(size, const_cast<void*>(data), mode);
- }
--int CWebServer::AskForAuthentication(const HTTPRequest& request) const
-+MHD_RESULT CWebServer::AskForAuthentication(const HTTPRequest& request) const
- {
-   struct MHD_Response *response = create_response(0, nullptr, MHD_NO, MHD_NO);
-   if (!response)
-@@ -95,7 +95,7 @@ int CWebServer::AskForAuthentication(const HTTPRequest& request) const
-     return MHD_NO;
-   }
--  int ret = AddHeader(response, MHD_HTTP_HEADER_CONNECTION, "close");
-+  MHD_RESULT ret = AddHeader(response, MHD_HTTP_HEADER_CONNECTION, "close");
-   if (!ret)
-   {
-     CLog::Log(LOGERROR, "CWebServer[%hu]: unable to prepare HTTP Unauthorized response", m_port);
-@@ -105,7 +105,10 @@ int CWebServer::AskForAuthentication(const HTTPRequest& request) const
-   LogResponse(request, MHD_HTTP_UNAUTHORIZED);
--  ret = MHD_queue_basic_auth_fail_response(request.connection, "XBMC", response);
-+  // This MHD_RESULT cast is only necessary for libmicrohttpd 0.9.71
-+  // The return type of MHD_queue_basic_auth_fail_response was fixed for future versions
-+  // See https://git.gnunet.org/libmicrohttpd.git/commit/?id=860b42e9180da4dcd7e8690a3fcdb4e37e5772c5
-+  ret = static_cast<MHD_RESULT>(MHD_queue_basic_auth_fail_response(request.connection, "XBMC", response));
-   MHD_destroy_response(response);
-   return ret;
-@@ -135,7 +138,7 @@ bool CWebServer::IsAuthenticated(const HTTPRequest& request) const
-   return authenticated;
- }
--int CWebServer::AnswerToConnection(void *cls, struct MHD_Connection *connection,
-+MHD_RESULT CWebServer::AnswerToConnection(void *cls, struct MHD_Connection *connection,
-                       const char *url, const char *method,
-                       const char *version, const char *upload_data,
-                       size_t *upload_data_size, void **con_cls)
-@@ -163,7 +166,7 @@ int CWebServer::AnswerToConnection(void *cls, struct MHD_Connection *connection,
-   return webServer->HandlePartialRequest(connection, connectionHandler, request, upload_data, upload_data_size, con_cls);
- }
--int CWebServer::HandlePartialRequest(struct MHD_Connection *connection, ConnectionHandler* connectionHandler, const HTTPRequest& request, const char *upload_data, size_t *upload_data_size, void **con_cls)
-+MHD_RESULT CWebServer::HandlePartialRequest(struct MHD_Connection *connection, ConnectionHandler* connectionHandler, const HTTPRequest& request, const char *upload_data, size_t *upload_data_size, void **con_cls)
- {
-   std::unique_ptr<ConnectionHandler> conHandler(connectionHandler);
-@@ -276,7 +279,7 @@ int CWebServer::HandlePartialRequest(struct MHD_Connection *connection, Connecti
-   return SendErrorResponse(request, MHD_HTTP_NOT_FOUND, request.method);
- }
--int CWebServer::HandlePostField(void *cls, enum MHD_ValueKind kind, const char *key,
-+MHD_RESULT CWebServer::HandlePostField(void *cls, enum MHD_ValueKind kind, const char *key,
-                                 const char *filename, const char *content_type,
-                                 const char *transfer_encoding, const char *data, uint64_t off,
-                                 size_t size)
-@@ -294,13 +297,13 @@ int CWebServer::HandlePostField(void *cls, enum MHD_ValueKind kind, const char *
-   return MHD_YES;
- }
--int CWebServer::HandleRequest(const std::shared_ptr<IHTTPRequestHandler>& handler)
-+MHD_RESULT CWebServer::HandleRequest(const std::shared_ptr<IHTTPRequestHandler>& handler)
- {
-   if (handler == nullptr)
-     return MHD_NO;
-   HTTPRequest request = handler->GetRequest();
--  int ret = handler->HandleRequest();
-+  MHD_RESULT ret = handler->HandleRequest();
-   if (ret == MHD_NO)
-   {
-     CLog::Log(LOGERROR, "CWebServer[%hu]: failed to handle HTTP request for %s", m_port, request.pathUrl.c_str());
-@@ -348,7 +351,7 @@ int CWebServer::HandleRequest(const std::shared_ptr<IHTTPRequestHandler>& handle
-   return FinalizeRequest(handler, responseDetails.status, response);
- }
--int CWebServer::FinalizeRequest(const std::shared_ptr<IHTTPRequestHandler>& handler, int responseStatus, struct MHD_Response *response)
-+MHD_RESULT CWebServer::FinalizeRequest(const std::shared_ptr<IHTTPRequestHandler>& handler, int responseStatus, struct MHD_Response *response)
- {
-   if (handler == nullptr || response == nullptr)
-     return MHD_NO;
-@@ -562,7 +565,7 @@ void CWebServer::FinalizePostDataProcessing(ConnectionHandler *connectionHandler
-   MHD_destroy_post_processor(connectionHandler->postprocessor);
- }
--int CWebServer::CreateMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
- {
-   if (handler == nullptr)
-     return MHD_NO;
-@@ -620,7 +623,7 @@ int CWebServer::CreateMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestH
-   return CreateRangedMemoryDownloadResponse(handler, response);
- }
--int CWebServer::CreateRangedMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateRangedMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
- {
-   if (handler == nullptr)
-     return MHD_NO;
-@@ -700,7 +703,7 @@ int CWebServer::CreateRangedMemoryDownloadResponse(const std::shared_ptr<IHTTPRe
-   return CreateMemoryDownloadResponse(request.connection, result.c_str(), result.size(), false, true, response);
- }
--int CWebServer::CreateRedirect(struct MHD_Connection *connection, const std::string &strURL, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateRedirect(struct MHD_Connection *connection, const std::string &strURL, struct MHD_Response *&response) const
- {
-   response = create_response(0, nullptr, MHD_NO, MHD_NO);
-   if (response == nullptr)
-@@ -713,7 +716,7 @@ int CWebServer::CreateRedirect(struct MHD_Connection *connection, const std::str
-   return MHD_YES;
- }
--int CWebServer::CreateFileDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateFileDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const
- {
-   if (handler == nullptr)
-     return MHD_NO;
-@@ -850,7 +853,7 @@ int CWebServer::CreateFileDownloadResponse(const std::shared_ptr<IHTTPRequestHan
-   return MHD_YES;
- }
--int CWebServer::CreateErrorResponse(struct MHD_Connection *connection, int responseType, HTTPMethod method, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateErrorResponse(struct MHD_Connection *connection, int responseType, HTTPMethod method, struct MHD_Response *&response) const
- {
-   size_t payloadSize = 0;
-   const void *payload = nullptr;
-@@ -881,7 +884,7 @@ int CWebServer::CreateErrorResponse(struct MHD_Connection *connection, int respo
-   return MHD_YES;
- }
--int CWebServer::CreateMemoryDownloadResponse(struct MHD_Connection *connection, const void *data, size_t size, bool free, bool copy, struct MHD_Response *&response) const
-+MHD_RESULT CWebServer::CreateMemoryDownloadResponse(struct MHD_Connection *connection, const void *data, size_t size, bool free, bool copy, struct MHD_Response *&response) const
- {
-   response = create_response(size, const_cast<void*>(data), free ? MHD_YES : MHD_NO, copy ? MHD_YES : MHD_NO);
-   if (response == nullptr)
-@@ -893,20 +896,20 @@ int CWebServer::CreateMemoryDownloadResponse(struct MHD_Connection *connection,
-   return MHD_YES;
- }
--int CWebServer::SendResponse(const HTTPRequest& request, int responseStatus, MHD_Response *response) const
-+MHD_RESULT CWebServer::SendResponse(const HTTPRequest& request, int responseStatus, MHD_Response *response) const
- {
-   LogResponse(request, responseStatus);
--  int ret = MHD_queue_response(request.connection, responseStatus, response);
-+  MHD_RESULT ret = MHD_queue_response(request.connection, responseStatus, response);
-   MHD_destroy_response(response);
-   return ret;
- }
--int CWebServer::SendErrorResponse(const HTTPRequest& request, int errorType, HTTPMethod method) const
-+MHD_RESULT CWebServer::SendErrorResponse(const HTTPRequest& request, int errorType, HTTPMethod method) const
- {
-   struct MHD_Response *response = nullptr;
--  int ret = CreateErrorResponse(request.connection, errorType, method, response);
-+  MHD_RESULT ret = CreateErrorResponse(request.connection, errorType, method, response);
-   if (ret == MHD_NO)
-     return MHD_NO;
-@@ -1296,10 +1299,10 @@ std::string CWebServer::CreateMimeTypeFromExtension(const char *ext)
-   return CMime::GetMimeType(ext);
- }
--int CWebServer::AddHeader(struct MHD_Response *response, const std::string &name, const std::string &value) const
-+MHD_RESULT CWebServer::AddHeader(struct MHD_Response *response, const std::string &name, const std::string &value) const
- {
-   if (response == nullptr || name.empty())
--    return 0;
-+    return MHD_NO;
-   CLog::Log(LOGDEBUG, LOGWEBSERVER, "CWebServer[%hu] [OUT] %s: %s", m_port, name.c_str(), value.c_str());
-diff --git a/xbmc/network/WebServer.h b/xbmc/network/WebServer.h
-index c7a909304a21..1274a2e0ed40 100644
---- a/xbmc/network/WebServer.h
-+++ b/xbmc/network/WebServer.h
-@@ -56,17 +56,17 @@ class CWebServer
-   virtual void LogRequest(const char* uri) const;
--  virtual int HandlePartialRequest(struct MHD_Connection *connection, ConnectionHandler* connectionHandler, const HTTPRequest& request,
-+  virtual MHD_RESULT HandlePartialRequest(struct MHD_Connection *connection, ConnectionHandler* connectionHandler, const HTTPRequest& request,
-                                    const char *upload_data, size_t *upload_data_size, void **con_cls);
--  virtual int HandleRequest(const std::shared_ptr<IHTTPRequestHandler>& handler);
--  virtual int FinalizeRequest(const std::shared_ptr<IHTTPRequestHandler>& handler, int responseStatus, struct MHD_Response *response);
-+  virtual MHD_RESULT HandleRequest(const std::shared_ptr<IHTTPRequestHandler>& handler);
-+  virtual MHD_RESULT FinalizeRequest(const std::shared_ptr<IHTTPRequestHandler>& handler, int responseStatus, struct MHD_Response *response);
- private:
-   struct MHD_Daemon* StartMHD(unsigned int flags, int port);
-   std::shared_ptr<IHTTPRequestHandler> FindRequestHandler(const HTTPRequest& request) const;
--  int AskForAuthentication(const HTTPRequest& request) const;
-+  MHD_RESULT AskForAuthentication(const HTTPRequest& request) const;
-   bool IsAuthenticated(const HTTPRequest& request) const;
-   bool IsRequestCacheable(const HTTPRequest& request) const;
-@@ -76,18 +76,18 @@ class CWebServer
-   bool ProcessPostData(const HTTPRequest& request, ConnectionHandler *connectionHandler, const char *upload_data, size_t *upload_data_size, void **con_cls) const;
-   void FinalizePostDataProcessing(ConnectionHandler *connectionHandler) const;
--  int CreateMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
--  int CreateRangedMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateRangedMemoryDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
--  int CreateRedirect(struct MHD_Connection *connection, const std::string &strURL, struct MHD_Response *&response) const;
--  int CreateFileDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
--  int CreateErrorResponse(struct MHD_Connection *connection, int responseType, HTTPMethod method, struct MHD_Response *&response) const;
--  int CreateMemoryDownloadResponse(struct MHD_Connection *connection, const void *data, size_t size, bool free, bool copy, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateRedirect(struct MHD_Connection *connection, const std::string &strURL, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateFileDownloadResponse(const std::shared_ptr<IHTTPRequestHandler>& handler, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateErrorResponse(struct MHD_Connection *connection, int responseType, HTTPMethod method, struct MHD_Response *&response) const;
-+  MHD_RESULT CreateMemoryDownloadResponse(struct MHD_Connection *connection, const void *data, size_t size, bool free, bool copy, struct MHD_Response *&response) const;
--  int SendResponse(const HTTPRequest& request, int responseStatus, MHD_Response *response) const;
--  int SendErrorResponse(const HTTPRequest& request, int errorType, HTTPMethod method) const;
-+  MHD_RESULT SendResponse(const HTTPRequest& request, int responseStatus, MHD_Response *response) const;
-+  MHD_RESULT SendErrorResponse(const HTTPRequest& request, int errorType, HTTPMethod method) const;
--  int AddHeader(struct MHD_Response *response, const std::string &name, const std::string &value) const;
-+  MHD_RESULT AddHeader(struct MHD_Response *response, const std::string &name, const std::string &value) const;
-   void LogRequest(const HTTPRequest& request) const;
-   void LogResponse(const HTTPRequest& request, int responseStatus) const;
-@@ -100,11 +100,11 @@ class CWebServer
-   static ssize_t ContentReaderCallback (void *cls, uint64_t pos, char *buf, size_t max);
-   static void ContentReaderFreeCallback(void *cls);
--  static int AnswerToConnection (void *cls, struct MHD_Connection *connection,
-+  static MHD_RESULT AnswerToConnection (void *cls, struct MHD_Connection *connection,
-                         const char *url, const char *method,
-                         const char *version, const char *upload_data,
-                         size_t *upload_data_size, void **con_cls);
--  static int HandlePostField(void *cls, enum MHD_ValueKind kind, const char *key,
-+  static MHD_RESULT HandlePostField(void *cls, enum MHD_ValueKind kind, const char *key,
-                              const char *filename, const char *content_type,
-                              const char *transfer_encoding, const char *data, uint64_t off,
-                              size_t size);
-diff --git a/xbmc/network/httprequesthandler/HTTPFileHandler.cpp b/xbmc/network/httprequesthandler/HTTPFileHandler.cpp
-index 2101d49f0911..26e53901dbfa 100644
---- a/xbmc/network/httprequesthandler/HTTPFileHandler.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPFileHandler.cpp
-@@ -23,7 +23,7 @@ CHTTPFileHandler::CHTTPFileHandler(const HTTPRequest &request)
-     m_lastModified()
- { }
--int CHTTPFileHandler::HandleRequest()
-+MHD_RESULT CHTTPFileHandler::HandleRequest()
- {
-   return !m_url.empty() ? MHD_YES : MHD_NO;
- }
-diff --git a/xbmc/network/httprequesthandler/HTTPFileHandler.h b/xbmc/network/httprequesthandler/HTTPFileHandler.h
-index 3c74b5275092..6121315c6f5f 100644
---- a/xbmc/network/httprequesthandler/HTTPFileHandler.h
-+++ b/xbmc/network/httprequesthandler/HTTPFileHandler.h
-@@ -19,7 +19,7 @@ class CHTTPFileHandler : public IHTTPRequestHandler
- public:
-   ~CHTTPFileHandler() override = default;
--  int HandleRequest() override;
-+  MHD_RESULT HandleRequest() override;
-   bool CanHandleRanges() const override { return m_canHandleRanges; }
-   bool CanBeCached() const override { return m_canBeCached; }
-diff --git a/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.cpp b/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.cpp
-index de42e7fd3017..6902be012532 100644
---- a/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.cpp
-@@ -104,7 +104,7 @@ bool CHTTPImageTransformationHandler::CanHandleRequest(const HTTPRequest &reques
-           options.find(TRANSFORMATION_OPTION_HEIGHT) != options.end());
- }
--int CHTTPImageTransformationHandler::HandleRequest()
-+MHD_RESULT CHTTPImageTransformationHandler::HandleRequest()
- {
-   if (m_response.type == HTTPError)
-     return MHD_YES;
-diff --git a/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.h b/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.h
-index c55015ec4eb0..0d17afc3250a 100644
---- a/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.h
-+++ b/xbmc/network/httprequesthandler/HTTPImageTransformationHandler.h
-@@ -23,7 +23,7 @@ class CHTTPImageTransformationHandler : public IHTTPRequestHandler
-   IHTTPRequestHandler* Create(const HTTPRequest &request) const override { return new CHTTPImageTransformationHandler(request); }
-   bool CanHandleRequest(const HTTPRequest &request)const  override;
--  int HandleRequest() override;
-+  MHD_RESULT HandleRequest() override;
-   bool CanHandleRanges() const override { return true; }
-   bool CanBeCached() const override { return true; }
-diff --git a/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.cpp b/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.cpp
-index e8e2fa36924b..a4c3c198eba3 100644
---- a/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.cpp
-@@ -25,7 +25,7 @@ bool CHTTPJsonRpcHandler::CanHandleRequest(const HTTPRequest &request) const
-   return (request.pathUrl.compare("/jsonrpc") == 0);
- }
--int CHTTPJsonRpcHandler::HandleRequest()
-+MHD_RESULT CHTTPJsonRpcHandler::HandleRequest()
- {
-   CHTTPClient client(m_request.method);
-   bool isRequest = false;
-diff --git a/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.h b/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.h
-index 67c14b666ef6..2659fd549c25 100644
---- a/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.h
-+++ b/xbmc/network/httprequesthandler/HTTPJsonRpcHandler.h
-@@ -24,7 +24,7 @@ class CHTTPJsonRpcHandler : public IHTTPRequestHandler
-   IHTTPRequestHandler* Create(const HTTPRequest &request) const override { return new CHTTPJsonRpcHandler(request); }
-   bool CanHandleRequest(const HTTPRequest &request) const override;
--  int HandleRequest() override;
-+  MHD_RESULT HandleRequest() override;
-   HttpResponseRanges GetResponseData() const override;
-diff --git a/xbmc/network/httprequesthandler/HTTPPythonHandler.cpp b/xbmc/network/httprequesthandler/HTTPPythonHandler.cpp
-index 5f9aeef10f2e..a07ef0d3ac31 100644
---- a/xbmc/network/httprequesthandler/HTTPPythonHandler.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPPythonHandler.cpp
-@@ -112,7 +112,7 @@ bool CHTTPPythonHandler::CanHandleRequest(const HTTPRequest &request) const
-   return true;
- }
--int CHTTPPythonHandler::HandleRequest()
-+MHD_RESULT CHTTPPythonHandler::HandleRequest()
- {
-   if (m_response.type == HTTPError || m_response.type == HTTPRedirect)
-     return MHD_YES;
-diff --git a/xbmc/network/httprequesthandler/HTTPPythonHandler.h b/xbmc/network/httprequesthandler/HTTPPythonHandler.h
-index 03c150693ff4..166430e68d51 100644
---- a/xbmc/network/httprequesthandler/HTTPPythonHandler.h
-+++ b/xbmc/network/httprequesthandler/HTTPPythonHandler.h
-@@ -25,7 +25,7 @@ class CHTTPPythonHandler : public IHTTPRequestHandler
-   bool CanBeCached() const override { return false; }
-   bool GetLastModifiedDate(CDateTime &lastModified) const override;
--  int HandleRequest() override;
-+  MHD_RESULT HandleRequest() override;
-   HttpResponseRanges GetResponseData() const override { return m_responseRanges; }
-diff --git a/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.cpp b/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.cpp
-index 80d1d6733475..f2ea1f2e51ed 100644
---- a/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.cpp
-@@ -61,7 +61,7 @@ bool HTTPRequestHandlerUtils::GetRequestedRanges(struct MHD_Connection *connecti
-   return ranges.Parse(GetRequestHeaderValue(connection, MHD_HEADER_KIND, MHD_HTTP_HEADER_RANGE), totalLength);
- }
--int HTTPRequestHandlerUtils::FillArgumentMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
-+MHD_RESULT HTTPRequestHandlerUtils::FillArgumentMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
- {
-   if (cls == nullptr || key == nullptr)
-     return MHD_NO;
-@@ -72,7 +72,7 @@ int HTTPRequestHandlerUtils::FillArgumentMap(void *cls, enum MHD_ValueKind kind,
-   return MHD_YES;
- }
--int HTTPRequestHandlerUtils::FillArgumentMultiMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
-+MHD_RESULT HTTPRequestHandlerUtils::FillArgumentMultiMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value)
- {
-   if (cls == nullptr || key == nullptr)
-     return MHD_NO;
-diff --git a/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.h b/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.h
-index 9a07801914e4..0ec5ed1bf706 100644
---- a/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.h
-+++ b/xbmc/network/httprequesthandler/HTTPRequestHandlerUtils.h
-@@ -25,6 +25,6 @@ class HTTPRequestHandlerUtils
- private:
-   HTTPRequestHandlerUtils() = delete;
--  static int FillArgumentMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value);
--  static int FillArgumentMultiMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value);
-+  static MHD_RESULT FillArgumentMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value);
-+  static MHD_RESULT FillArgumentMultiMap(void *cls, enum MHD_ValueKind kind, const char *key, const char *value);
- };
-diff --git a/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.cpp b/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.cpp
-index 01a6b503bdf6..0716a5df96ca 100644
---- a/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.cpp
-+++ b/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.cpp
-@@ -18,7 +18,7 @@ bool CHTTPWebinterfaceAddonsHandler::CanHandleRequest(const HTTPRequest &request
-   return (request.pathUrl.compare("/addons") == 0 || request.pathUrl.compare("/addons/") == 0);
- }
--int CHTTPWebinterfaceAddonsHandler::HandleRequest()
-+MHD_RESULT CHTTPWebinterfaceAddonsHandler::HandleRequest()
- {
-   m_responseData = ADDON_HEADER;
-   ADDON::VECADDONS addons;
-diff --git a/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.h b/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.h
-index e9b1c6d29a41..23cea36d1436 100644
---- a/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.h
-+++ b/xbmc/network/httprequesthandler/HTTPWebinterfaceAddonsHandler.h
-@@ -21,7 +21,7 @@ class CHTTPWebinterfaceAddonsHandler : public IHTTPRequestHandler
-   IHTTPRequestHandler* Create(const HTTPRequest &request) const override { return new CHTTPWebinterfaceAddonsHandler(request); }
-   bool CanHandleRequest(const HTTPRequest &request) const override;
--  int HandleRequest() override;
-+  MHD_RESULT HandleRequest() override;
-   HttpResponseRanges GetResponseData() const override;
-diff --git a/xbmc/network/httprequesthandler/IHTTPRequestHandler.h b/xbmc/network/httprequesthandler/IHTTPRequestHandler.h
-index 4b1e40a587a7..567c8e55ee9b 100644
---- a/xbmc/network/httprequesthandler/IHTTPRequestHandler.h
-+++ b/xbmc/network/httprequesthandler/IHTTPRequestHandler.h
-@@ -22,6 +22,12 @@
- #include "utils/HttpRangeUtils.h"
-+#if MHD_VERSION >= 0x00097002
-+using MHD_RESULT = MHD_Result;
-+#else
-+using MHD_RESULT = int;
-+#endif
-+
- class CDateTime;
- class CWebServer;
-@@ -114,7 +120,7 @@ class IHTTPRequestHandler
-    *
-    * \return MHD_NO if a severe error has occurred otherwise MHD_YES.
-    */
--  virtual int HandleRequest() = 0;
-+  virtual MHD_RESULT HandleRequest() = 0;
-   /*!
-    * \brief Whether the HTTP response could also be provided in ranges.
This page took 1.132468 seconds and 4 git commands to generate.