1
0
mirror of https://github.com/dguglielmi/sunny-overlay.git synced 2026-04-05 23:06:34 +02:00

Compare commits

...

3 Commits

67 changed files with 14 additions and 6140 deletions

View File

@@ -1,32 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# @ECLASS: kodi-addon.eclass
# @MAINTAINER:
# candrews@gentoo.org
# @SUPPORTED_EAPIS: 7 8
# @PROVIDES: cmake
# @BLURB: Helper for correct building and (importantly) installing Kodi addon packages.
# @DESCRIPTION:
# Provides a src_configure function for correct CMake configuration
case ${EAPI} in
7|8) ;;
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
inherit cmake
# @FUNCTION: kodi-addon_src_configure
# @DESCRIPTION:
# Configure handling for Kodi addons
kodi-addon_src_configure() {
mycmakeargs+=(
-DCMAKE_INSTALL_LIBDIR="${EPREFIX}/usr/$(get_libdir)/kodi"
)
cmake_src_configure
}
EXPORT_FUNCTIONS src_configure

View File

@@ -1,6 +0,0 @@
DIST bento4-1.6.0-639-7-Omega.tar.gz 5481533 BLAKE2B 0636f0c94ebb3246c8720e120f3b505e4a82ed2e37d9ed44351875dcf3fab8bc2e53b83e0be43fb711aac3144d6df3d8ae2ead24fcd55bd116f3c54f07e3c19f SHA512 bf257e5831eec44db944d1313858262c1ba32b6e67564bb8f809a1aa0fc8a55faaaac2357d80f1ce2e794914f6bec5263548e77802db2b9e52998af2b6276809
DIST bento4-1.6.0-641-Omega.tar.gz 5487100 BLAKE2B b1a92d4688731fc626327ec4900bc4808e04e496fb44d6ff711bdf427c0aa98dd785c4c9e6a31ea6f141e938199cacdaf34c7579a9b8ca58c767cf69c26d79a0 SHA512 6d08b8e028cc5a73fa634e42cb4c0e89cc4a7a700177df7ef8e9be18c02077baae25e5a0f1b8d9cb4ceb2a6ff3108e41a4a07aae5f64d9372e915efce0fbd861
DIST kodi-inputstream-adaptive-20.3.18.tar.gz 779751 BLAKE2B 201702996b976fde820c8df6abe43b04977946e4ed0d13752e5713db1ca944146915fcdb60b1d6ebdbd42b57678a8f518bc2b683cfc0dc7ba196be85e0cfbef6 SHA512 87435271bedc1e0371356d953a170233c3a259c773f0caec7bf314c23432925215e138c5cac83da1b016fcfd0c9c1a6cbd18c87911a7ef990bc7199ffe2a67de
DIST kodi-inputstream-adaptive-21.4.4.tar.gz 813157 BLAKE2B fa0e33068ed09dc593ea0b24553316c373816c6212cc5261e65904e1fd7df01fb9a9edfd002a935d52bffaa1566db64d967fa3d9156c2cff5eec6f77f3d472cd SHA512 fbd7a625106ad7cdffd8ba6390d1cbedfb92c26bb0059f80253f0cce3788829da58da57cf36b4c9c2a158fa4be226272c6443281186766b5ee42bc718c96b167
EBUILD kodi-inputstream-adaptive-20.3.18.ebuild 1074 BLAKE2B 3388e42f1489458b6e45ac233400527ab4be942baea39865639e43a3cb439e1a4886eeaa83c546818fa475a3716c2855e8c6acfa5d75a4b1106bc8b8d1eb5998 SHA512 e888bac841cf7426a425c4beffe69921adfda1593d2b008219800131a3d4ae3288d821e465d3794c1ef39bf1fd409e2ae908614f2aa8c7b633981d267c89a436
EBUILD kodi-inputstream-adaptive-21.4.4.ebuild 1090 BLAKE2B 0cd14290342db50df267271458c04a84a1493a332e080215c2451a9d0d7939abfcb392ebf802df7e650f591feff40c31cdced6ebf1099531ee7d1c55b286c39c SHA512 f81ca9f463398b0429a196120853e677796a55e19d05dcdbd4ad8725b1cf4bbe5399315ad9cc1cb02d93842fe0f39d83a4c81e7aadc71d0df45cc9f1664a48c6

View File

@@ -1,49 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's Adaptive inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.adaptive.git"
CODENAME="Nexus"
BENTO4_VERSION="1.6.0-639-7-Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/inputstream.adaptive/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz
https://github.com/xbmc/Bento4/archive/${BENTO4_VERSION}.tar.gz -> bento4-${BENTO4_VERSION}.tar.gz"
S="${WORKDIR}/inputstream.adaptive-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
RESTRICT="!test? ( test )"
IUSE="test"
COMMON_DEPEND="
dev-libs/expat
=media-tv/kodi-20*
"
DEPEND="
${COMMON_DEPEND}
test? ( dev-cpp/gtest )
"
RDEPEND="
${COMMON_DEPEND}
"
src_unpack() {
unpack ${P}.tar.gz
}
src_configure() {
local mycmakeargs=(
-DBUILD_TESTING=$(usex test)
-DENABLE_INTERNAL_BENTO4=ON
-DBENTO4_URL="${DISTDIR}/bento4-${BENTO4_VERSION}.tar.gz"
-DCMAKE_INSTALL_LIBDIR="${EPREFIX}/usr/$(get_libdir)/kodi"
-Wno-dev
)
cmake_src_configure
}

View File

@@ -1,50 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's Adaptive inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.adaptive.git"
CODENAME="Omega"
BENTO4_VERSION="1.6.0-641-Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/inputstream.adaptive/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz
https://github.com/xbmc/Bento4/archive/${BENTO4_VERSION}.tar.gz -> bento4-${BENTO4_VERSION}.tar.gz"
S="${WORKDIR}/inputstream.adaptive-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
RESTRICT="!test? ( test )"
IUSE="test"
COMMON_DEPEND="
dev-libs/expat
dev-libs/pugixml
=media-tv/kodi-21*
"
DEPEND="
${COMMON_DEPEND}
test? ( dev-cpp/gtest )
"
RDEPEND="
${COMMON_DEPEND}
"
src_unpack() {
unpack ${P}.tar.gz
}
src_configure() {
local mycmakeargs=(
-DBUILD_TESTING=$(usex test)
-DENABLE_INTERNAL_BENTO4=ON
-DBENTO4_URL="${DISTDIR}/bento4-${BENTO4_VERSION}.tar.gz"
-DCMAKE_INSTALL_LIBDIR="${EPREFIX}/usr/$(get_libdir)/kodi"
-Wno-dev
)
cmake_src_configure
}

View File

@@ -1,9 +0,0 @@
AUX kodi-inputstream-ffmpegdirect-20.5.0-Fix-use-after-free-in-TimeshiftSegment.patch 1001 BLAKE2B ee4624253c0ab6bddd22a8ce5da969eb4e7acd22eb658eaf091fc826f714aa1314898b26a283b4e64233d4c5e5f4766a465bbbea4d4fe7b1997740a46f375d91 SHA512 608b45bf89b1430b6d25cf75f402567c1615e6457c20997efe7175aa631501eb967b5961b5dd9ff1b373de32c5d88f9a4b6da0cb92ef1866dfd81d149938e8aa
AUX kodi-inputstream-ffmpegdirect-20.5.0-Get-extradata-with-extract_extradata-BSF.patch 9834 BLAKE2B d26b4a56ddad02488868c94670440ab369a2016416a606b9f05386b615367028379279e270771d6635c69370e670178bd4dc80d4296d8ea69165b297708ded38 SHA512 77964f8d726e6bad4ea20fc9c5320f36a20047d9d9b999cc154f78e1f38612624a742c23a45ae060289e8507cc122fbd828b6f460e9449fa3e44bbc22ac61c14
AUX kodi-inputstream-ffmpegdirect-20.5.0-ffmpeg5.patch 13078 BLAKE2B 50fa84e7790b06960177cc48a097fca12d1f984bd41db335f98e01ebd2ecca5c4fad8e917af5af8a6d8bcc3408856542d44784834fecbd119a82ee75ec243df4 SHA512 63427c395dea7533c0909cbc43fecf8e14998bb108da50a43c2e755f8fa94cdd74751ce4b09ebc8db1780eaaf1fc717f5e4ed156443f78c9fdd6fb3bf730482b
AUX kodi-inputstream-ffmpegdirect-20.5.0-ffmpeg6.patch 1467 BLAKE2B 1a82346927a978c059e0d69bde63451a5463fec0035b8f32ea735a1fd26374254aec3f4b60041f13a49993542f9244ebf232c734b4aff5c5cece0d1bdde2320f SHA512 6c385aad0afa07379235ee7bd70a11e434befabde46dd5185c90ad85258d4ac5451c8426354f4d6e1e16b4e7c6e6a267843c4abba9a2e6601677c2e7023ce9b1
AUX kodi-inputstream-ffmpegdirect-20.5.0-gcc13.patch 1260 BLAKE2B 601ad71dfe4859e3fda621ce58f5687941e454214295514082e4f463bcc886588b83624b7afb28e204d9479c27ea9ed0bbe3b8b845716ce57cde4df164fbf8a8 SHA512 fbeaa550c562b6c29555c88108813cc6f19699506395e3efe9de54022676ebf3e6da893dde8803ea4d84f6b81563a886aac7c62ddeaab8e427d5e48dd3351eba
DIST kodi-inputstream-ffmpegdirect-20.5.0.tar.gz 289362 BLAKE2B 2e8c63bd47d54f84cade2acb092a8e3ef11c31170071f66b5f22d4aa6fd27992a22b19ecb8070ce7d952f80882fe617e5eaed70dcf325b9bdb579220ddd59688 SHA512 9db8e25f04400635e13cf7c79f7079be9c7ffbf427423abcfc449dcd06f6259dcf9ed1ad1eae1563db239978c8399e054e7c6adcbebb5cc70c4de1c01643d074
DIST kodi-inputstream-ffmpegdirect-21.3.5.tar.gz 300657 BLAKE2B 08ec234f3a5850da080f825a842d38490dc14097f1a9bcb6c4188e0fadb3bf60bf4086c7ac89e50b4631f31f16f283babc3390f75e15ecab8aeddd45a991486c SHA512 70ea8529e93d8438a3d541d15a28bc1a445bc4e2c2c6d61174174ed6308931ab4a7e05ee32f07e58213644d4b52094bd18b479680649238702519380bddf0b26
EBUILD kodi-inputstream-ffmpegdirect-20.5.0-r1.ebuild 1041 BLAKE2B 48e05ea76a55ee3dbd732f21f111844e072fa1588000ae9e287f1209938d5a46288f165a093e51dac7955ea8bfe348357ba2cd4ee211d29ab8ef0b3d9c5a68e2 SHA512 984c856e10cacc54b111a544ff6f2e49f21fdeca07a5473586fe58c2180bd4387e503b5acc490ade8cf0caa17d2e239854c82273860b657c0ebaaa19f7795c69
EBUILD kodi-inputstream-ffmpegdirect-21.3.5.ebuild 796 BLAKE2B f57cd4376cd5dc2f376de831f6f8e7dce0e5dd9ff3647dd668a98649caa758bb8b7308a856ec915fd3def68f9ea05516f57bde57744bad36c8f09574f18ddcd4 SHA512 ac823b2d03f370df1c8a8af4076ebede1921c4a03191796100d3a08706b7975f99d2f9326440eeacc772b4305c5cb4ce7a63a1b2e17379eae2f25914413bbf80

View File

@@ -1,25 +0,0 @@
From e6541a98b64631836336de17e57efa8e8e0b8425 Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:09:20 +0000
Subject: [PATCH] Fix use-after-free in TimeshiftSegment
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/TimeshiftSegment.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/stream/TimeshiftSegment.cpp b/src/stream/TimeshiftSegment.cpp
index 9323a44a..9e1cd09c 100644
--- a/src/stream/TimeshiftSegment.cpp
+++ b/src/stream/TimeshiftSegment.cpp
@@ -90,8 +90,8 @@ void TimeshiftSegment::AddPacket(DEMUX_PACKET* packet)
m_packetBuffer.emplace_back(newPacket);
int secondsSinceStart = 0;
- if (packet->pts != STREAM_NOPTS_VALUE && packet->pts > 0)
- secondsSinceStart = packet->pts / STREAM_TIME_BASE;
+ if (newPacket->pts != STREAM_NOPTS_VALUE && newPacket->pts > 0)
+ secondsSinceStart = newPacket->pts / STREAM_TIME_BASE;
if (secondsSinceStart != m_lastPacketSecondsSinceStart)
{

View File

@@ -1,290 +0,0 @@
From 07ea26d7ce6bde1350ceb15380f4908da454f004 Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:17:48 +0000
Subject: [PATCH] ffmpeg5: Get extradata with extract_extradata BSF
Fixes the transport stream playback failures described in
https://bugs.debian.org/1016925
@Rogo95 made an excellent technical analysis of the root cause
and reported that to the bug thread.
Later on, James Almer (@jamrial) suggested the solution to use
extract_extradata bitstream filter to replace the removed split()
function.
Finally, I adapted the following code snippet:
https://gist.github.com/moonpfe/f6795d51294d91ee0f82f62ff6985db0
to Kodi and tested it by playing the affected files in TS format.
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/FFmpegStream.cpp | 222 ++++++++++++++++++++++++++++++------
src/stream/FFmpegStream.h | 2 +
2 files changed, 192 insertions(+), 32 deletions(-)
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index f2140a17..95d1da83 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -29,6 +29,7 @@
#endif
extern "C" {
+#include <libavcodec/bsf.h>
#include <libavutil/dict.h>
#include <libavutil/opt.h>
}
@@ -1586,6 +1587,168 @@ bool FFmpegStream::SeekTime(double time, bool backwards, double* startpts)
return false;
}
+int FFmpegStream::GetPacketExtradata(const AVPacket* pkt, const AVCodecParserContext* parserCtx, AVCodecContext* codecCtx, uint8_t **p_extradata)
+{
+ int extradata_size = 0;
+
+ if (!pkt || !p_extradata)
+ return 0;
+
+ *p_extradata = nullptr;
+
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 0, 100)
+ /* extract_extradata bitstream filter is implemented only
+ * for certain codecs, as noted in discussion of PR#21248
+ */
+
+ AVCodecID codecId = codecCtx->codec_id;
+
+ // clang-format off
+ if (
+ codecId != AV_CODEC_ID_MPEG1VIDEO &&
+ codecId != AV_CODEC_ID_MPEG2VIDEO &&
+ codecId != AV_CODEC_ID_H264 &&
+ codecId != AV_CODEC_ID_HEVC &&
+ codecId != AV_CODEC_ID_MPEG4 &&
+ codecId != AV_CODEC_ID_VC1 &&
+ codecId != AV_CODEC_ID_AV1 &&
+ codecId != AV_CODEC_ID_AVS2 &&
+ codecId != AV_CODEC_ID_AVS3 &&
+ codecId != AV_CODEC_ID_CAVS
+ )
+ // clang-format on
+ return 0;
+
+ AVBSFContext *bsf = nullptr;
+ AVPacket *dst_pkt = nullptr;
+ const AVBitStreamFilter *f;
+ AVPacket *pkt_ref = nullptr;
+ int ret = 0;
+ uint8_t *ret_extradata = nullptr;
+ size_t ret_extradata_size = 0;
+
+ f = av_bsf_get_by_name("extract_extradata");
+ if (!f)
+ return 0;
+
+ bsf = nullptr;
+ ret = av_bsf_alloc(f, &bsf);
+ if (ret < 0)
+ return 0;
+
+ bsf->par_in->codec_id = codecCtx->codec_id;
+
+ ret = av_bsf_init(bsf);
+ if (ret < 0)
+ {
+ av_bsf_free(&bsf);
+ return 0;
+ }
+
+ dst_pkt = av_packet_alloc();
+ pkt_ref = dst_pkt;
+
+ ret = av_packet_ref(pkt_ref, pkt);
+ if (ret < 0)
+ {
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ ret = av_bsf_send_packet(bsf, pkt_ref);
+ if (ret < 0)
+ {
+ av_packet_unref(pkt_ref);
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ ret = 0;
+ while (ret >= 0)
+ {
+ ret = av_bsf_receive_packet(bsf, pkt_ref);
+ if (ret < 0)
+ {
+ if (ret != AVERROR(EAGAIN) && ret != AVERROR_EOF)
+ break;
+
+ continue;
+ }
+
+ ret_extradata = av_packet_get_side_data(pkt_ref,
+ AV_PKT_DATA_NEW_EXTRADATA,
+ &ret_extradata_size);
+ if (ret_extradata &&
+ ret_extradata_size > 0 &&
+ ret_extradata_size < FF_MAX_EXTRADATA_SIZE)
+ {
+ *p_extradata = (uint8_t*)av_malloc(ret_extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!*p_extradata)
+ {
+ Log(LOGLEVEL_ERROR,
+ "%s - failed to allocate %zu bytes for extradata",
+ __FUNCTION__,
+ ret_extradata_size);
+
+ av_packet_unref(pkt_ref);
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+ return 0;
+ }
+
+ Log(LOGLEVEL_DEBUG,
+ "%s - fetching extradata, extradata_size(%zu)",
+ __FUNCTION__,
+ ret_extradata_size);
+
+ memcpy(*p_extradata, ret_extradata, ret_extradata_size);
+ memset(*p_extradata + ret_extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+ extradata_size = ret_extradata_size;
+
+ av_packet_unref(pkt_ref);
+ break;
+ }
+
+ av_packet_unref(pkt_ref);
+ }
+
+ av_bsf_free(&bsf);
+ av_packet_free(&dst_pkt);
+#else
+ if (codecCtx && parserCtx && parserCtx->parser && parserCtx->parser->split)
+ extradata_size = parserCtx->parser->split(codecCtx, pkt->data, pkt->size);
+
+ if (extradata_size <= 0 || extradata_size >= FF_MAX_EXTRADATA_SIZE)
+ {
+ Log(LOGLEVEL_DEBUG, "%s - fetched extradata of weird size %zd",
+ __FUNCTION__, extradata_size);
+ return 0;
+ }
+
+ *p_extradata = (uint8_t*)av_malloc(extradata_size + AV_INPUT_BUFFER_PADDING_SIZE);
+ if (!*p_extradata)
+ {
+ Log(LOGLEVEL_ERROR,
+ "%s - failed to allocate %zd bytes for extradata",
+ __FUNCTION__,
+ extradata_size);
+ return 0;
+ }
+
+ Log(LOGLEVEL_DEBUG,
+ "%s - fetching extradata, extradata_size(%zd)",
+ __FUNCTION__,
+ extradata_size);
+
+ memcpy(*p_extradata, pkt->data, extradata_size);
+ memset(*p_extradata + extradata_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+#endif
+
+ return extradata_size;
+}
+
void FFmpegStream::ParsePacket(AVPacket* pkt)
{
AVStream* st = m_pFormatContext->streams[pkt->stream_index];
@@ -1617,43 +1780,38 @@ void FFmpegStream::ParsePacket(AVPacket* pkt)
if (parser->second->m_parserCtx &&
parser->second->m_parserCtx->parser &&
- parser->second->m_parserCtx->parser->split &&
!st->codecpar->extradata)
{
- int i = parser->second->m_parserCtx->parser->split(parser->second->m_codecCtx, pkt->data, pkt->size);
- if (i > 0 && i < FF_MAX_EXTRADATA_SIZE)
+ int i = GetPacketExtradata(pkt,
+ parser->second->m_parserCtx,
+ parser->second->m_codecCtx,
+ &st->codecpar->extradata);
+ if (i > 0)
{
- st->codecpar->extradata = (uint8_t*)av_malloc(i + AV_INPUT_BUFFER_PADDING_SIZE);
- if (st->codecpar->extradata)
- {
- Log(LOGLEVEL_DEBUG, "CDVDDemuxFFmpeg::ParsePacket() fetching extradata, extradata_size(%d)", i);
- st->codecpar->extradata_size = i;
- memcpy(st->codecpar->extradata, pkt->data, i);
- memset(st->codecpar->extradata + i, 0, AV_INPUT_BUFFER_PADDING_SIZE);
+ st->codecpar->extradata_size = i;
- if (parser->second->m_parserCtx->parser->parser_parse)
+ if (parser->second->m_parserCtx->parser->parser_parse)
+ {
+ parser->second->m_codecCtx->extradata = st->codecpar->extradata;
+ parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size;
+ const uint8_t* outbufptr;
+ int bufSize;
+ parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES;
+ parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx,
+ parser->second->m_codecCtx,
+ &outbufptr, &bufSize,
+ pkt->data, pkt->size);
+ parser->second->m_codecCtx->extradata = nullptr;
+ parser->second->m_codecCtx->extradata_size = 0;
+
+ if (parser->second->m_parserCtx->width != 0)
{
- parser->second->m_codecCtx->extradata = st->codecpar->extradata;
- parser->second->m_codecCtx->extradata_size = st->codecpar->extradata_size;
- const uint8_t* outbufptr;
- int bufSize;
- parser->second->m_parserCtx->flags |= PARSER_FLAG_COMPLETE_FRAMES;
- parser->second->m_parserCtx->parser->parser_parse(parser->second->m_parserCtx,
- parser->second->m_codecCtx,
- &outbufptr, &bufSize,
- pkt->data, pkt->size);
- parser->second->m_codecCtx->extradata = nullptr;
- parser->second->m_codecCtx->extradata_size = 0;
-
- if (parser->second->m_parserCtx->width != 0)
- {
- st->codecpar->width = parser->second->m_parserCtx->width;
- st->codecpar->height = parser->second->m_parserCtx->height;
- }
- else
- {
- Log(LOGLEVEL_ERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height");
- }
+ st->codecpar->width = parser->second->m_parserCtx->width;
+ st->codecpar->height = parser->second->m_parserCtx->height;
+ }
+ else
+ {
+ Log(LOGLEVEL_ERROR, "CDVDDemuxFFmpeg::ParsePacket() invalid width/height");
}
}
}
diff --git a/src/stream/FFmpegStream.h b/src/stream/FFmpegStream.h
index 356905dd..f0634d0f 100644
--- a/src/stream/FFmpegStream.h
+++ b/src/stream/FFmpegStream.h
@@ -109,6 +109,8 @@ class FFmpegStream
bool IsPaused() { return m_speed == STREAM_PLAYSPEED_PAUSE; }
virtual bool CheckReturnEmptyOnPacketResult(int result);
+ int GetPacketExtradata(const AVPacket* pkt, const AVCodecParserContext* parserCtx, AVCodecContext* codecCtx, uint8_t **p_extradata);
+
int64_t m_demuxerId;
mutable std::recursive_mutex m_mutex;
double m_currentPts; // used for stream length estimation

View File

@@ -1,319 +0,0 @@
From fcad1884954ec1998f353750dd7332501e204ddb Mon Sep 17 00:00:00 2001
From: Vasyl Gello <vasek.gello@gmail.com>
Date: Sat, 15 Oct 2022 16:08:14 +0000
Subject: [PATCH] Adapt AlwinEsch's ffmpeg5 port patch
Signed-off-by: Vasyl Gello <vasek.gello@gmail.com>
---
src/stream/FFmpegStream.cpp | 96 ++++++++++++++++++++++++++++++++-----
src/stream/FFmpegStream.h | 6 ++-
src/utils/FFmpegCompat.h | 20 ++++++++
3 files changed, 107 insertions(+), 15 deletions(-)
create mode 100644 src/utils/FFmpegCompat.h
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index 73e0963c..f2140a17 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -462,7 +462,14 @@ DEMUX_PACKET* FFmpegStream::DemuxRead()
// we already check for a valid m_streams[pPacket->iStreamId] above
else if (stream->type == INPUTSTREAM_TYPE_AUDIO)
{
- if (static_cast<DemuxStreamAudio*>(stream)->iChannels != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->channels ||
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels =
+ m_pFormatContext->streams[pPacket->iStreamId]->codecpar->ch_layout.nb_channels;
+#else
+ int codecparChannels = m_pFormatContext->streams[pPacket->iStreamId]->codecpar->channels;
+#endif
+ if (static_cast<DemuxStreamAudio*>(stream)->iChannels != codecparChannels ||
static_cast<DemuxStreamAudio*>(stream)->iSampleRate != m_pFormatContext->streams[pPacket->iStreamId]->codecpar->sample_rate)
{
// content has changed
@@ -658,7 +665,7 @@ bool FFmpegStream::Aborted()
bool FFmpegStream::Open(bool fileinfo)
{
- AVInputFormat* iformat = NULL;
+ FFMPEG_FMT_CONST AVInputFormat* iformat = nullptr;
std::string strFile;
m_streaminfo = !m_isRealTimeStream && !m_reopen;;
m_currentPts = STREAM_NOPTS_VALUE;
@@ -729,6 +736,8 @@ bool FFmpegStream::Open(bool fileinfo)
m_streaminfo = true;
}
+ // https://github.com/FFmpeg/FFmpeg/blob/56450a0ee4/doc/APIchanges#L18-L26
+#if LIBAVFORMAT_BUILD < AV_VERSION_INT(59, 0, 100)
if (iformat && (strcmp(iformat->name, "mov,mp4,m4a,3gp,3g2,mj2") == 0))
{
CURL url(m_streamUrl);
@@ -736,6 +745,7 @@ bool FFmpegStream::Open(bool fileinfo)
if (!url.GetProtocol().empty() && !url.IsProtocol("file"))
m_pFormatContext->iformat->flags |= AVFMT_NOGENSEARCH;
}
+#endif
// we need to know if this is matroska, avi or sup later
m_bMatroska = strncmp(m_pFormatContext->iformat->name, "matroska", 8) == 0; // for "matroska.webm"
@@ -785,8 +795,11 @@ bool FFmpegStream::Open(bool fileinfo)
// if format can be nonblocking, let's use that
m_pFormatContext->flags |= AVFMT_FLAG_NONBLOCK;
- // deprecated, will be always set in future versions
+ // https://github.com/FFmpeg/FFmpeg/blob/d682ae70b4/doc/APIchanges#L18-L21
+#if LIBAVFORMAT_BUILD < AV_VERSION_INT(57, 66, 105) && \
+ LIBAVCODEC_BUILD < AV_VERSION_INT(57, 83, 101)
m_pFormatContext->flags |= AVFMT_FLAG_KEEP_SIDE_DATA;
+#endif
UpdateCurrentPTS();
@@ -828,12 +841,23 @@ bool FFmpegStream::Open(bool fileinfo)
{
int idx = m_pFormatContext->programs[i]->stream_index[j];
AVStream* st = m_pFormatContext->streams[idx];
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ // Related to https://patchwork.ffmpeg.org/project/ffmpeg/patch/20210429143825.53040-1-jamrial@gmail.com/
+ // has been replaced with AVSTREAM_EVENT_FLAG_NEW_PACKETS.
+ if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && (st->event_flags & AVSTREAM_EVENT_FLAG_NEW_PACKETS)) ||
+ (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate > 0))
+ {
+ nProgram = i;
+ break;
+ }
+#else
if ((st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && st->codec_info_nb_frames > 0) ||
(st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate > 0))
{
nProgram = i;
break;
}
+#endif
}
}
@@ -870,7 +894,7 @@ bool FFmpegStream::Open(bool fileinfo)
return true;
}
-bool FFmpegStream::OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB& int_cb)
+bool FFmpegStream::OpenWithFFmpeg(FFMPEG_FMT_CONST AVInputFormat* iformat, const AVIOInterruptCB& int_cb)
{
Log(LOGLEVEL_INFO, "%s - IO handled by FFmpeg's AVFormat", __FUNCTION__);
@@ -959,7 +983,7 @@ bool FFmpegStream::OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB&
return true;
}
-bool FFmpegStream::OpenWithCURL(AVInputFormat* iformat)
+bool FFmpegStream::OpenWithCURL(FFMPEG_FMT_CONST AVInputFormat* iformat)
{
Log(LOGLEVEL_INFO, "%s - IO handled by Kodi's cURL", __FUNCTION__);
@@ -1039,8 +1063,7 @@ bool FFmpegStream::OpenWithCURL(AVInputFormat* iformat)
// is present, we assume it is PCM audio.
// AC3 is always wrapped in iec61937 (ffmpeg "spdif"), while DTS
// may be just padded.
- AVInputFormat* iformat2;
- iformat2 = av_find_input_format("spdif");
+ FFMPEG_FMT_CONST AVInputFormat* iformat2 = av_find_input_format("spdif");
if (iformat2 && iformat2->read_probe(&pd) > AVPROBE_SCORE_MAX / 4)
{
@@ -1147,11 +1170,19 @@ void FFmpegStream::UpdateCurrentPTS()
if (idx >= 0)
{
AVStream* stream = m_pFormatContext->streams[idx];
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ if (stream && m_pkt.pkt.dts != (int64_t)AV_NOPTS_VALUE)
+ {
+ double ts = ConvertTimestamp(m_pkt.pkt.dts, stream->time_base.den, stream->time_base.num);
+ m_currentPts = ts;
+ }
+#else
if (stream && stream->cur_dts != (int64_t)AV_NOPTS_VALUE)
{
double ts = ConvertTimestamp(stream->cur_dts, stream->time_base.den, stream->time_base.num);
m_currentPts = ts;
}
+#endif
}
}
@@ -1230,9 +1261,15 @@ bool FFmpegStream::IsProgramChange()
return true;
if (m_pFormatContext->streams[idx]->codecpar->codec_id != stream->codec)
return true;
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels =
+ m_pFormatContext->streams[idx]->codecpar->ch_layout.nb_channels;
+#else
+ int codecparChannels = m_pFormatContext->streams[idx]->codecpar->channels;
+#endif
if (m_pFormatContext->streams[idx]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
- m_pFormatContext->streams[idx]->codecpar->channels !=
- static_cast<DemuxStreamAudio*>(stream)->iChannels)
+ codecparChannels != static_cast<DemuxStreamAudio*>(stream)->iChannels)
return true;
if (m_pFormatContext->streams[idx]->codecpar->extradata_size != static_cast<int>(stream->ExtraSize))
return true;
@@ -1564,7 +1601,7 @@ void FFmpegStream::ParsePacket(AVPacket* pkt)
parser->second->m_parserCtx = av_parser_init(st->codecpar->codec_id);
- AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id);
+ FFMPEG_FMT_CONST AVCodec* codec = avcodec_find_decoder(st->codecpar->codec_id);
if (codec == nullptr)
{
Log(LOGLEVEL_ERROR, "%s - can't find decoder", __FUNCTION__);
@@ -1641,7 +1678,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamAudioState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = idx;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1661,7 +1702,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamAudioState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = i;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1694,7 +1739,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamVideoState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = idx;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1714,7 +1763,11 @@ TRANSPORT_STREAM_STATE FFmpegStream::TransportStreamVideoState()
{
if (!m_startTime)
{
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 3, 100)
+ m_startTime = av_rescale(m_pkt.pkt.dts, st->time_base.num, st->time_base.den) - 0.000001;
+#else
m_startTime = av_rescale(st->cur_dts, st->time_base.num, st->time_base.den) - 0.000001;
+#endif
m_seekStream = i;
}
return TRANSPORT_STREAM_STATE::READY;
@@ -1824,14 +1877,31 @@ DemuxStream* FFmpegStream::AddStream(int streamIdx)
{
DemuxStreamAudioFFmpeg* st = new DemuxStreamAudioFFmpeg(pStream);
stream = st;
- st->iChannels = pStream->codecpar->channels;
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ int codecparChannels = pStream->codecpar->ch_layout.nb_channels;
+ int codecparChannelLayout = pStream->codecpar->ch_layout.u.mask;
+#else
+ int codecparChannels = pStream->codecpar->channels;
+ int codecparChannelLayout = pStream->codecpar->channel_layout;
+#endif
+ st->iChannels = codecparChannels;
+ st->iChannelLayout = codecparChannelLayout;
st->iSampleRate = pStream->codecpar->sample_rate;
st->iBlockAlign = pStream->codecpar->block_align;
st->iBitRate = static_cast<int>(pStream->codecpar->bit_rate);
st->iBitsPerSample = pStream->codecpar->bits_per_raw_sample;
- st->iChannelLayout = pStream->codecpar->channel_layout;
char buf[32] = { 0 };
+ // https://github.com/FFmpeg/FFmpeg/blob/6ccc3989d15/doc/APIchanges#L50-L53
+#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
+ LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
+ AVChannelLayout layout = {};
+ av_channel_layout_from_mask(&layout, st->iChannelLayout);
+ av_channel_layout_describe(&layout, buf, sizeof(buf));
+ av_channel_layout_uninit(&layout);
+#else
av_get_channel_layout_string(buf, 31, st->iChannels, st->iChannelLayout);
+#endif
st->m_channelLayoutName = buf;
if (st->iBitsPerSample == 0)
st->iBitsPerSample = pStream->codecpar->bits_per_coded_sample;
@@ -2070,7 +2140,7 @@ std::string FFmpegStream::GetStreamCodecName(int iStreamId)
return strName;
}
- AVCodec* codec = avcodec_find_decoder(stream->codec);
+ FFMPEG_FMT_CONST AVCodec* codec = avcodec_find_decoder(stream->codec);
if (codec)
strName = codec->name;
}
diff --git a/src/stream/FFmpegStream.h b/src/stream/FFmpegStream.h
index bf8a50f9..356905dd 100644
--- a/src/stream/FFmpegStream.h
+++ b/src/stream/FFmpegStream.h
@@ -7,6 +7,7 @@
#pragma once
+#include "../utils/FFmpegCompat.h"
#include "../utils/HttpProxy.h"
#include "../utils/Properties.h"
#include "BaseStream.h"
@@ -33,6 +34,7 @@ extern "C"
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/mastering_display_metadata.h>
+#include <libavutil/version.h>
}
#ifndef __GNUC__
@@ -117,8 +119,8 @@ class FFmpegStream
private:
bool Open(bool fileinfo);
- bool OpenWithFFmpeg(AVInputFormat* iformat, const AVIOInterruptCB& int_cb);
- bool OpenWithCURL(AVInputFormat* iformat);
+ bool OpenWithFFmpeg(FFMPEG_FMT_CONST AVInputFormat* iformat, const AVIOInterruptCB& int_cb);
+ bool OpenWithCURL(FFMPEG_FMT_CONST AVInputFormat* iformat);
AVDictionary* GetFFMpegOptionsFromInput();
void ResetVideoStreams();
double ConvertTimestamp(int64_t pts, int den, int num);
diff --git a/src/utils/FFmpegCompat.h b/src/utils/FFmpegCompat.h
new file mode 100644
index 00000000..46cff53f
--- /dev/null
+++ b/src/utils/FFmpegCompat.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2005-2022 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+extern "C" {
+#include <libavformat/avformat.h>
+}
+
+// https://github.com/FFmpeg/FFmpeg/blob/56450a0ee4/doc/APIchanges#L18-L26
+#if LIBAVFORMAT_BUILD >= AV_VERSION_INT(59, 0, 100)
+#define FFMPEG_FMT_CONST const
+#else
+#define FFMPEG_FMT_CONST
+#endif

View File

@@ -1,31 +0,0 @@
From 98ccdd2f4263eb1590c65f175c11deeec18fe6c2 Mon Sep 17 00:00:00 2001
From: Bernd Kuhls <bernd.kuhls@t-online.de>
Date: Fri, 3 Mar 2023 19:33:04 +0100
Subject: [PATCH] Fix build with ffmpeg 6.0
This feature was removed from ffmpeg:
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=add33e370d241d947209c914de1bf062fe44d58e
---
src/stream/FFmpegStream.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/stream/FFmpegStream.cpp b/src/stream/FFmpegStream.cpp
index 341062ed..0996b446 100644
--- a/src/stream/FFmpegStream.cpp
+++ b/src/stream/FFmpegStream.cpp
@@ -920,7 +920,6 @@ bool FFmpegStream::OpenWithFFmpeg(const AVInputFormat* iformat, const AVIOInterr
// We only process this condition for manifest streams when this setting is disabled
if (!kodi::addon::GetSettingBoolean("useFastOpenForManifestStreams") || m_manifestType.empty())
{
- m_pFormatContext->flags |= AVFMT_FLAG_PRIV_OPT;
if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0)
{
Log(LOGLEVEL_DEBUG, "Error, could not open file %s", CURL::GetRedacted(strFile).c_str());
@@ -935,7 +934,6 @@ bool FFmpegStream::OpenWithFFmpeg(const AVInputFormat* iformat, const AVIOInterr
}
m_pFormatContext->interrupt_callback = int_cb;
- m_pFormatContext->flags &= ~AVFMT_FLAG_PRIV_OPT;
options = GetFFMpegOptionsFromInput();
av_dict_set_int(&options, "load_all_variants", 0, AV_OPT_SEARCH_CHILDREN);

View File

@@ -1,47 +0,0 @@
From fd7bd5ad86fd0006ad571a051fa5d5603a47e4b4 Mon Sep 17 00:00:00 2001
From: Rudi Heitbaum <rudi@heitbaum.com>
Date: Wed, 26 Apr 2023 17:15:00 +0000
Subject: [PATCH] include missing <cstdint> to support gcc-13
gcc 13 moved some includes around and as a result <cstdint> is no longer transitively
included [1]. Explicitly include it for uint{32,64}_t.
[1] https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes
Signed-off-by: Rudi Heitbaum <rudi@heitbaum.com>
---
src/utils/DiskUtils.h | 1 +
src/utils/HttpProxy.h | 3 ++-
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/utils/DiskUtils.h b/src/utils/DiskUtils.h
index 79e34268..f900ec58 100644
--- a/src/utils/DiskUtils.h
+++ b/src/utils/DiskUtils.h
@@ -7,6 +7,7 @@
#pragma once
+#include <cstdint>
#include <string>
namespace ffmpegdirect
diff --git a/src/utils/HttpProxy.h b/src/utils/HttpProxy.h
index eb0c99cb..d203ce36 100644
--- a/src/utils/HttpProxy.h
+++ b/src/utils/HttpProxy.h
@@ -7,6 +7,7 @@
#pragma once
+#include <cstdint>
#include <string>
namespace ffmpegdirect
@@ -36,4 +37,4 @@ namespace ffmpegdirect
std::string m_user;
std::string m_password;
};
-} //namespace ffmpegdirect
\ No newline at end of file
+} //namespace ffmpegdirect

View File

@@ -1,51 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's FFMpeg Direct Inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.ffmpegdirect"
SRC_URI=""
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
CODENAME="Nexus"
SRC_URI="https://github.com/xbmc/inputstream.ffmpegdirect/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/inputstream.ffmpegdirect-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
BDEPEND="
virtual/pkgconfig
"
COMMON_DEPEND="
media-video/ffmpeg:=[encode,libxml2,zlib]
virtual/libiconv
app-arch/bzip2
=media-tv/kodi-20*
"
DEPEND="
${COMMON_DEPEND}
"
RDEPEND="
${COMMON_DEPEND}
"
PATCHES=(
"${FILESDIR}"/${P}-ffmpeg5.patch
"${FILESDIR}"/${P}-Get-extradata-with-extract_extradata-BSF.patch
"${FILESDIR}"/${P}-Fix-use-after-free-in-TimeshiftSegment.patch
"${FILESDIR}"/${P}-ffmpeg6.patch
"${FILESDIR}"/${P}-gcc13.patch
)
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,43 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's FFMpeg Direct Inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.ffmpegdirect"
SRC_URI=""
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
CODENAME="Omega"
SRC_URI="https://github.com/xbmc/inputstream.ffmpegdirect/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/inputstream.ffmpegdirect-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
BDEPEND="
virtual/pkgconfig
"
COMMON_DEPEND="
media-video/ffmpeg:=[encode,libxml2,zlib]
virtual/libiconv
app-arch/bzip2
=media-tv/kodi-21*
"
DEPEND="
${COMMON_DEPEND}
"
RDEPEND="
${COMMON_DEPEND}
"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,4 +0,0 @@
DIST kodi-inputstream-rtmp-20.3.0.tar.gz 88703 BLAKE2B 226ffca80634a05bfd7be268f7a024c5f9d54e9c561da213fe53a3369e7657fa92549e3a5107899d9304d382997bf502092fe21f09e6e013858b0de2828caaef SHA512 4c70d3df184eae19e359460560257012fece6cbd571d9a27c01f0dbdff84f1ce12b88527a1797cdc3c2a12e39edb92a7a82dd1cfd5721b553290a295733df9f6
DIST kodi-inputstream-rtmp-21.1.0.tar.gz 88737 BLAKE2B ca06e97078a162a197bc4be70d192359ee43afbba1421efb4eecaefc2f233acfc99ee32bf4c1203e6cc94f789208d51dcdb1c36c2839227e651239bd524791b3 SHA512 a386974b2efbded5f17837aa78cbc8d7b8c8a4073099ab99567d6af121f0f193331af8d671fb24edfd156106b65f0f9e983bac5dd93b360cb8d4eb4b1e179e16
EBUILD kodi-inputstream-rtmp-20.3.0.ebuild 707 BLAKE2B cfc25e400f0e2c57af86328e264a4a58da308c1ae0fa361006ca7db76b5c4fc13c23ed41f84b868b6d693ce6eac2b67031a6ea8a9ac3379c16565d363ab55dfc SHA512 a2bf3a5d40678eca20f25ec3603ad66e00bdc3a0255c01c34dc209b59160ecfedceb394025e6b667ca8b173602acbf9e5be318f056b65c9d524946cf3a6189f8
EBUILD kodi-inputstream-rtmp-21.1.0.ebuild 707 BLAKE2B 5ac134f60e037184a991fac171f0334316abfbc2a84f8b7ca040724993ba0c08b31bdddb933e1bda50672266ce2a9f75aeae05be98e52c8fb3b5e360505183e1 SHA512 1118f92ea35d08afdcb7e0bd046da78e66f7c85475d6bf6cb07c2d960dc65b3471604bdfbc4319b6a71ab2f08bc141aa2fe8a057741c72abb03e1c938ce1e42b

View File

@@ -1,34 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's RTMP inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.rtmp"
KODI_PLUGIN_NAME="inputstream.rtmp"
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/${KODI_PLUGIN_NAME}/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${KODI_PLUGIN_NAME}-${PV}-${CODENAME}"
DEPEND="=media-tv/kodi-20*:="
LICENSE="GPL-2+"
SLOT="0"
IUSE=""
DEPEND+="
media-video/rtmpdump[ssl]
"
RDEPEND="${DEPEND}"
BDEPEND="virtual/pkgconfig"
src_prepare() {
if [ -d depends ]; then rm -rf depends || die; fi
cmake_src_prepare
}

View File

@@ -1,34 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Kodi's RTMP inputstream addon"
HOMEPAGE="https://github.com/xbmc/inputstream.rtmp"
KODI_PLUGIN_NAME="inputstream.rtmp"
CODENAME="Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/${KODI_PLUGIN_NAME}/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/${KODI_PLUGIN_NAME}-${PV}-${CODENAME}"
DEPEND="=media-tv/kodi-21*:="
LICENSE="GPL-2+"
SLOT="0"
IUSE=""
DEPEND+="
media-video/rtmpdump[ssl]
"
RDEPEND="${DEPEND}"
BDEPEND="virtual/pkgconfig"
src_prepare() {
if [ -d depends ]; then rm -rf depends || die; fi
cmake_src_prepare
}

View File

@@ -1,2 +0,0 @@
DIST kodi-peripheral-joystick-20.1.0.tar.gz 126103 BLAKE2B ead6450b2e44bf3ba7c907553541d10fdd118fc0f01ac63931d69e5674b1c709c6e5e23ddb0d808482eb9986eb42e67ef2a5cfb23e549f02b74d76ad4ed0a359 SHA512 c5016f74bee316e5b25686420125397cb1840de72be4e9a11390a1338ad920b93d2e8cf36e845feb82aba826a425152dcb621a9ef1b6aea6259d9423283957d9
EBUILD kodi-peripheral-joystick-20.1.0.ebuild 736 BLAKE2B 6204c5ae5d0f7797988b69528c45830eacb118f1633f861cc36742fc658871fe85ca6d76b71b1875c755a8c09116fd02c20e097e0fa176a454a2d282620a8b9c SHA512 5c08136c117c400aaa36ff3ae755176929c749d2d3b16debc216550bf0bcd12125b2ab1599fd426ff47d201aaa3c7eab333334785b7e6e2cd35e84d6f474e3d7

View File

@@ -1,38 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="Libretro compatibility layer for the Kodi Game API"
HOMEPAGE="https://github.com/xbmc/peripheral.joystick"
SRC_URI=""
case ${PV} in
9999)
SRC_URI=""
EGIT_BRANCH="Nexus"
EGIT_REPO_URI="https://github.com/xbmc/peripheral.joystick.git"
inherit git-r3
;;
*)
KEYWORDS="~amd64 ~x86"
CODENAME="Nexus"
SRC_URI="https://github.com/xbmc/peripheral.joystick/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/peripheral.joystick-${PV}-${CODENAME}"
;;
esac
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
=media-tv/kodi-20*
dev-libs/libpcre
dev-libs/tinyxml
"
RDEPEND="
${DEPEND}
"

View File

@@ -1,4 +0,0 @@
DIST kodi-pvr-hts-20.7.2.tar.gz 218776 BLAKE2B e09b9462f9b8913b1e156c2fa966170e4f59b5d6a88b5694159027006e22ce610a9217eae345f41752a81083a450b3f466db685e03231ae30ffd26884b21675b SHA512 ef16355ff0a9e00a44717ab5216bd88d9a63e745f656694dace73e35437b945034ae852cf1415c04ebab7c1bb102a8cf8b913c7fc8bce49237aa7c3c96c2f290
DIST kodi-pvr-hts-21.2.1.tar.gz 217080 BLAKE2B 7d8bde3b074a8187b538c28e955c86bb0372b6af38e8d36fca9ab61e347f236a2085b731c6764cd28665cc6f571e20d138af39089d5c1b6513178c18e93515d1 SHA512 d7bd128d1b804f5bba7de52c95c879c7fff15bd7f1082514e6f0b1867a46dc05fcd91ea2a2bfae4bd4d0aa788a46ecfbaf9011f2cec87a18e633dfc1c8a0249e
EBUILD kodi-pvr-hts-20.7.2.ebuild 533 BLAKE2B 9c6f56c6036c07e269e73df302b56bb2e154e4d9cd84ac75358e4d2b1bba14bbb585d07e32cb70453c132b48c2cf6923acf50638fc369e14ab038e2890ce2074 SHA512 7698aef6dcb69f0d64bc8f63e73357b92987d6ad20ae3007e1de7c410b02874fbf59fd878127e3695a23ebf16cbe74977e8c9cad2bf45fd7edfb46e55feb857b
EBUILD kodi-pvr-hts-21.2.1.ebuild 533 BLAKE2B a9a25b30392a7b004a808bab449bf6fda6aad42c80d3188032b194580f763549264f0ac641dc7f174fa5e726352489c15429664a050406aa2ca44442de8902e9 SHA512 3b0d626dfdbddc414c65aef5e133fc91600e7a9495c525c4e71a68ef6b86bf3aec1db29591176ac6a37a40204c08e66e61a99160c433a160b3778f60c30ac251

View File

@@ -1,27 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake kodi-addon
DESCRIPTION="Tvheadend Live TV and Radio PVR client addon for Kodi"
HOMEPAGE="https://github.com/kodi-pvr/pvr.hts"
SRC_URI=""
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/kodi-pvr/pvr.hts/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/pvr.hts-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
=media-tv/kodi-20*
"
RDEPEND="
${DEPEND}
"

View File

@@ -1,27 +0,0 @@
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake kodi-addon
DESCRIPTION="Tvheadend Live TV and Radio PVR client addon for Kodi"
HOMEPAGE="https://github.com/kodi-pvr/pvr.hts"
SRC_URI=""
CODENAME="Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/kodi-pvr/pvr.hts/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/pvr.hts-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
=media-tv/kodi-21*
"
RDEPEND="
${DEPEND}
"

View File

@@ -1,4 +0,0 @@
DIST kodi-pvr-iptvsimple-20.13.0.tar.gz 793075 BLAKE2B abc758f09bd876f6c2395b9a7ec1fdd3a847da85ab87daca667e0c2678545749421db3dc6b4b9b5f6c9e6b309cae6e4acbc4bb0f32075fcc8f4d270b4cd156a1 SHA512 970e264b79309190f3d89386c79cd6e48ddfa2c51f25b7c513b2a5454671e03726b669fe846e55acdaab3e7157d2de078416dd11cc5a1ed1d599b49525f5e63d
DIST kodi-pvr-iptvsimple-21.8.3.tar.gz 378116 BLAKE2B b16e7ccd5f8b8b9f2635eb891673ac5b93ad1b43b54351ca29b7670562365f67d6fc4d4d635ed8f9494e013b3235bb36516fc08155bdcfb01941896af99cd4bb SHA512 f19ab8e91b6e270c96f8e3912139ba6109893131eb78a38c5b35cac58f9d8bfb7672d1dcce73343432d5552d1bb5cba4cd6943971893929748da7e7e78eb2c77
EBUILD kodi-pvr-iptvsimple-20.13.0.ebuild 639 BLAKE2B 8ee50b2277fd9d857899616c52605fec50ad01158e8c6513884777ad21733f1d6b6f09ab4d28c2c41854a58a14f5441cf251f391360b40ef97dbfa31ab7e71f5 SHA512 76476aa2260ea187f7a67f3bb7e8bff6e754f7738a1ea4720f080eaa9b82b280631d095966338f7c8f944da0761c86e6d2e47a33acc7768716a2113322e82821
EBUILD kodi-pvr-iptvsimple-21.8.3.ebuild 639 BLAKE2B 579d53e9a186bab886f945aca1e1214f5f014becfe4a4275eebc8d829ecce2ecab9edb8c1d6c88cd81ba6deefc12a1de7102bbb68754344420c9b3bc00fe28fb SHA512 a77faa08be34738daa84596e1756d8c38ddca8d5ddaece021d4b7f8e0df56d1b4de17cf845fedd9594399d41796c2586727e076bc02f497e2975a7ac96462717

View File

@@ -1,35 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake kodi-addon
DESCRIPTION="Kodi's IPTVSimple client addon"
HOMEPAGE="https://github.com/kodi-pvr/pvr.iptvsimple"
SRC_URI=""
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/kodi-pvr/pvr.iptvsimple/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/pvr.iptvsimple-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
dev-libs/pugixml
=media-tv/kodi-20*
sys-libs/zlib
"
RDEPEND="
${DEPEND}
"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,35 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit cmake kodi-addon
DESCRIPTION="Kodi's IPTVSimple client addon"
HOMEPAGE="https://github.com/kodi-pvr/pvr.iptvsimple"
SRC_URI=""
CODENAME="Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/kodi-pvr/pvr.iptvsimple/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/pvr.iptvsimple-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
dev-libs/pugixml
=media-tv/kodi-21*
sys-libs/zlib
"
RDEPEND="
${DEPEND}
"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,4 +0,0 @@
DIST kodi-vfs-sftp-20.1.0.tar.gz 45904 BLAKE2B f9c0f4359075609122627fbec2c945d643a844d7cb07eb09d7ab1581856a2c46790a36398e414ba9ef03c4b36eb361f2ea5a5a23aef980a83a8e6124e1b19f52 SHA512 ea2b205a5b4f279f8211a5744d0f5e6efb6346052ba927aef95733e1c964df5b97fc1176e2fa5d2b378561464f868cdc37e564ca120079f6ff70d2e79b48667c
DIST kodi-vfs-sftp-21.0.0_pre240219.tar.gz 46169 BLAKE2B 539a2dc8ee1a6b042c75b1e860c0e7c1b82d5eba1d23677baad98400125a94959a1b1e585cea5e6879826a6b9e67634bbcb661bbb03a40aeb95c3ce355aa46af SHA512 64370da865e07fec5e91a31a924469f9b217a733cd6209d014231d75fe4eff46e0b77099589c24b97de5591251ce2521be61b5e57ad47ea916d6baa4cf18bdf8
EBUILD kodi-vfs-sftp-20.1.0.ebuild 584 BLAKE2B 4393f5a510a214c2b13d8266656e33bfafa5b7a82dc1d1b1a193cea9ba797cb09968b757f2a06ed3087e8209ab23c6f9062d064d93b3351563927f58f767b474 SHA512 8cc26519db1d83c8241004f5b4d7af04f8f7ba9dca4e7b3100df368ddcfca7531a539626a3882c41599a146c868128d0c4d20c8aab327b09889c2b651a4ffc14
EBUILD kodi-vfs-sftp-21.0.0_pre240219.ebuild 617 BLAKE2B 8c7d07a514c914357c4834d04aadf892aa4fdf496492ca068c5e38f1a46f08bce7699be3feb36a737dff26a34436cb94a2278d2f35e891714c432ade581edb7c SHA512 b8c587473f862af1ef841a9aaf5adaeacc76f57dc95eb7940ecbe33e063ef17b247925f4600a3fa2192be1ea084236a1d2e3a8395daf4ab1e114c4553baa92ac

View File

@@ -1,30 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
DESCRIPTION="SFTP VFS addon for Kodi"
HOMEPAGE="https://github.com/xbmc/vfs.sftp"
SRC_URI=""
CODENAME="Nexus"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/vfs.sftp/archive/${PV}-${CODENAME}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/vfs.sftp-${PV}-${CODENAME}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
net-libs/libssh[sftp]
=media-tv/kodi-20*
"
RDEPEND="${DEPEND}"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,31 +0,0 @@
# Copyright 2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit kodi-addon
COMMIT_ID="9fe870e71a10a37f2d793b2261bac48b195f2705"
DESCRIPTION="SFTP VFS addon for Kodi"
HOMEPAGE="https://github.com/xbmc/vfs.sftp"
CODENAME="Omega"
KEYWORDS="~amd64 ~x86"
SRC_URI="https://github.com/xbmc/vfs.sftp/archive/${COMMIT_ID}.tar.gz -> ${P}.tar.gz"
S="${WORKDIR}/vfs.sftp-${COMMIT_ID}"
LICENSE="GPL-2"
SLOT="0"
IUSE=""
DEPEND="
net-libs/libssh[sftp]
=media-tv/kodi-21*
"
RDEPEND="${DEPEND}"
src_prepare() {
[ -d depends ] && rm -rf depends || die
cmake_src_prepare
}

View File

@@ -1,21 +0,0 @@
AUX kodi-20.5-CDVDInputStreamFile-use-64K-read-chunk-size-when-filesystem.patch 1326 BLAKE2B 0a0900e464cf92e217c0b228e1b65482894601b5f7a277cbfaa547b1540ff3a5ade7aca05d37df151d2193a58dfa70df7765e83a246992b39b5a118df3ea8a59 SHA512 b4e5ead1d582d409004a091e134d6575857456951907521d4776326315c5db5e6ae9660e2a242c2824676a3afe05fcb21afc73db44bbedc36af135be1f3a082e
AUX kodi-20.5-VideoPlayerAudio-invalidate-previous-sync-type-after-Audio.patch 1010 BLAKE2B e623854a71f0b53b90950fbbf71ee4d666a24c3071c6ae8489d476a8407068e01028a69c8ec5cbff909a646dd15efe7a1807aeee214995ae1486281bce309e30 SHA512 3db461ebad0f922fab7727e902beada28b5b43e2b71d9c6e39bdf9b2a7767d214ea6caf3a975649a27ba77b7a9a93d5e7b1df6c1ec0edf61223855e2463d5115
AUX kodi-20.5-binutils-2.41.patch 3399 BLAKE2B 5608adfb32777371a71091de237e6173c72c272a5911e999c3e4bde6f0c0f788db644ccf1098ddabbbba7e6d2a0d65fbfa7570f6acf83cd351a6e779dd8b7f5f SHA512 aec2995737c78cf4ae3e9a4e9212f0481664fd91eb83e07d0bd354cede014015929628833e8b5a87fb19dda20d30abc5585d676a69bff3ee0111fb1f21bb87e7
AUX kodi-20.5-ffmpeg5.patch 94498 BLAKE2B f8244260911df037ec6cdf945fe19dae7e71e98c052c0ce3ec4c9bf5459205bef7696af599b00a86d5b554d0cbc674fed6f7835a45dd6df40ae4e83549e55175 SHA512 9dc21d7e41eac956816330e79e826456566a88c5fdc747be234fe873ff3b9e7241d87dcc6ecd804189fff8b61c027ac4e31e1af0da5de0537f91e8f51b3d96c5
AUX kodi-20.5-ffmpeg6.patch 24798 BLAKE2B d9ed0a7e8d0d873f46ffe95e84eefb94ca4f5328da80a447acd3996971b3b913a2ce249ddf8b5c4019db58e5fdb158b2c5d1034cd3962c8ca6d6aab34e9c6f15 SHA512 3e419a882a112bc9c12078f9c8f8c31c6eb5546f12e71e558f31a862ac8119999aa1e63c8e42cc654361534024e0483288da3bec62a45c601ecf7694c04a66c2
AUX kodi-20.5-fix-crash-in-avcodec_parameters_from_context.patch 1351 BLAKE2B 0c1739fbda97c0e5a8064c0242a2d1d2e5db499bf336abc8d0119398aef156128a114f1f8616cee235f09e39752df156d99f3049fd2f13693246526593c5e08f SHA512 34da97b3803b585f90f2e5fced64bc0c7447c36df73384df29f539348bc8d230bbb9fcdfa7a12baf2794d0d0e1493248723e012ebe3ac0862e1d4add06f64b94
AUX kodi-20.5-smart_ptr-and-custom-destructor-for-AVCodecParameters.patch 2113 BLAKE2B 4e6e3401c8b25297f633ff88457eda364de639e915b210d71a5905877c309bc81cf7d6e748307e76e8b9badca76024e313e7d32d88bba626642d4daa91e63357 SHA512 2b1a50e6f7f5eec62f2dc13cf3afb126cb0a05a5db7c87a5dfc9a4962b45c93c12ea71cb77fa007b4fab2a98109c08b1890a78cc5a85c99b658ac7e9648d0bcd
AUX kodi-20.5-swig-4.2.patch 446 BLAKE2B 6b11113506dce61aa951a3b8c533fa2478a6c686f309c79187dc681fa9ea7e813ac6c902f613b68293e6ce28ce81a30dd5f2705fdc58ab25984bf387a6d9b37c SHA512 8e570d10eff512f45ea926b3cf0af8167cab2ae5097d0e8602634d6948eb064e5196bc60d8a4d6b7a6145bea8a2dd295df0731b9d5e1081879f628520225e336
AUX kodi-21.0-fix-head-use-after-free.patch 32519 BLAKE2B f5f9d4005da38381bd156307789253c358b32df3284e1eb84848f68d9c9e2b9b854c3801a5e4076ba172801dcd2e655505f446ceee89f5040e129003f85d7f84 SHA512 f654300c5d1d3d0bd49388430b843da4768c7fe225dd50f9908e0494375d22aadb3dc1251fb77af47796971769a872ee6d13ede5dc0b0aaeea07c49bc7e0b940
DIST apache-groovy-binary-4.0.16.zip 29793704 BLAKE2B 30f77c6400c85821cf78f6ba1070da1e68644531f85f71cf7695443b13b81393cc89d4103eb869d1523f0a22a6e1c3428dcabf4f79c8a2c6eb2a6dea74e84e8f SHA512 743698979c801f3cfb36545888b5303e1e25dae5692bb45cab7ebbe102a6eda31f09abc6978349ad90ecaf630416fc87eacba7781244855e7e771a3c44041fa0
DIST commons-lang3-3.14.0-bin.tar.gz 9442785 BLAKE2B 2ecdd06f97ac2688220055a08f67da9b859bed3ab00ff41800d5d9a1cebda599db2e816425c10c265dd6827a0ef79fc3dd094a8b3c9b9ae4ceae8f5750a59cf2 SHA512 8e7e62418a49ba810512c13a640a8bf35f878fcd54af32fdaab1111e37817f58b21b475980ba663fba4887e45ef8d88af8ff17796f20d202e929e8e2574546dc
DIST commons-text-1.11.0-bin.tar.gz 3018564 BLAKE2B c32e41c6b8c90dea876caf4c2cedc9358d5e49506bfee7aee42ac6b92dbe8505d5e5d81c860a739bb06214b832cc29e91ddb95f3cfc24515c970302a519a5e43 SHA512 2e94877000dd270b69e2e8cbf49f258a90b4c628b6b6b0814e300a2f0e9c391f0816dceb0707e596ae3b7c9532f93e7a4917df47c77f44b3a810e14042ce5f3f
DIST ffmpeg-kodi-4.4.1-Nexus-Alpha1.tar.gz 13725564 BLAKE2B 51d310e7000aeba657d55341c5fdb540474e197b85062228ab4b314c8309ec11985aa7f105193333fc6106529e8e58c86eafe268190894be8532d0e0b9065fa6 SHA512 8beb04d577b5251e74b0d52f4d130997a8ba94bbd488c7c8309e6b45095c27807e150212888ce3a384b23dff52f8df1a7bde5407bae924ddc363f8125c0616c5
DIST ffmpeg-kodi-6.0.1-Omega.tar.gz 15437409 BLAKE2B 6424e30c6d354abbbea8a807822ae61589413189e9c4ba7aa51c307179287506b9072626e9745861fe83753c0015b50d179f9b4f298fe9abf74bee13936639af SHA512 945e34840092dc0fd3824eb1af2be79868af2afb4fe13159b19a9bcfc464cc4d53243c13ff065199290e9393ddbf4b1c5c8abccf83a31a31d6c7490e499fd1fc
DIST kodi-20.5-Nexus.tar.gz 54568445 BLAKE2B 15eb409918fa3768528d9abd24c52fd8b94c82699ef2ce10a529278fe25544dc335b66d137ae8ae304511cd92c1c0be34881937ec705ba936f5a4b0d737903f7 SHA512 a47a54ca11e1d3daeddea8c1ae716cd4461e3441de43a026a920c709b2ff5c7e0acc2a5fd4ac8c15f0da1940bd7f21a65eff32203ad8e167603c1576b21d4dcc
DIST kodi-21.0-Omega.tar.gz 40987733 BLAKE2B 33adaf588b3362dc9d184bfb66c36ad5fa2e442255da47db4813f926e73f5a607dd7de809ecf8a4982f985bc8dac53cba17fb9db6a009bb0cdb6284db3b1edb4 SHA512 9c2ca6b6e72197d2b1c26a47cf4ddc209318fcaa5a30ea20475ecc5518c7d1395c2e9cf3e3a75a13334b0505e7b417acdb0d76a20567a0c86841b3e69232625b
DIST libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz 102124 BLAKE2B 2f503d3ab767094958f7ec10b4ad11ffd02665deee571c8f3c739bef5fc7e2ff84babc5a3fdee638dc095f896b72fe3ce65e6b688674cb5f7b7b77190992688c SHA512 d3be3bfc13c5ea56d8db745c2aab090c99760684fe4c8f62a13d266feb319e9180ceeecf8116bfd2ed90d9accba2c11dbbf93b61ad00f69a40812ebf4eabcdda
DIST libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz 128547 BLAKE2B db4d05836d8fbb3637ae50bdbfc0e4b612ee6b3be24addfea94ce772c3bf28d58b63a3f252d6f9f016f72f8cbb841cc1820b091226b136f4c4664385a32da73c SHA512 51e6fc033121241354a5f0b3fc9a430577ae3ff6bb7f31445aa548ef4893037fb80eea3b2c6774c81e9ebaf9c45e9b490c98c2c65eb38f9f7daba84b236f7e1d
DIST libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz 110513 BLAKE2B c94feb5a03a12efa5b7767965118d2500a088299ea36f3b82e46d157e45893e6b04503cb50f179ca681bac914457607fab26acfa6e304752b355c407578572d1 SHA512 629a41157d07b8ec0ea1fe89ae5ec48f63047472a862782b805c531ae31a0376fc4dc15175f8280c3ef91d7fa977bacebb1b51232640034a34bab2293210fc5e
EBUILD kodi-20.5.ebuild 12607 BLAKE2B bcf5ac4df923c3c789a56bdb5d93997d3e52b63c480717d18ccd0dd1d6dfa92e309e0e2da79febba946b685295aea9791766bd20fb3ad86055aa93ba96419659 SHA512 d58c5693c42dd1ba6d41d4e8bd0986ae35edb80b63c79619659d51fac5f617bd3cb97631ecd8626d974b75d611fe88c4d53e0ed185c5b11612db9e5bd53b978e
EBUILD kodi-21.0.ebuild 12985 BLAKE2B 1f92981dbf88468dd487878635faa413606d1f23dc4f39b2feb2fabaaeb3ac93c68efd291ddbb67b80bb10fefc3fc0507862d5892d6b1c082cd319b64f845cc0 SHA512 0b5c839b0d0a82fff064ccf818141a343f01377e0644922d15a2b70710923d316f056706b3a5f25f440fa3b7519ceef2996321518e4a552f510dae8c0900b015

View File

@@ -1,36 +0,0 @@
From 033988b975d65b791bc4ff282b9461f2b5b1c704 Mon Sep 17 00:00:00 2001
From: thexai <58434170+thexai@users.noreply.github.com>
Date: Wed, 8 Mar 2023 18:19:51 +0100
Subject: [PATCH] CDVDInputStreamFile: use 64K read chunk size when filesystem
not has specific requirement
This is used for media files as MKV, MP4, etc. but not DVD, Blu-Ray that
may have specific blocksize/sectorsize requirements.
---
.../DVDInputStreams/DVDInputStreamFile.cpp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDInputStreams/DVDInputStreamFile.cpp b/xbmc/cores/VideoPlayer/DVDInputStreams/DVDInputStreamFile.cpp
index bebc68324af47..4214673f081c7 100644
--- a/xbmc/cores/VideoPlayer/DVDInputStreams/DVDInputStreamFile.cpp
+++ b/xbmc/cores/VideoPlayer/DVDInputStreams/DVDInputStreamFile.cpp
@@ -142,12 +142,15 @@ BitstreamStats CDVDInputStreamFile::GetBitstreamStats() const
return m_stats;
}
+// Use value returned by filesystem if is > 1
+// otherwise defaults to 64K
int CDVDInputStreamFile::GetBlockSize()
{
- if(m_pFile)
- return m_pFile->GetChunkSize();
- else
- return 0;
+ int chunk = 0;
+ if (m_pFile)
+ chunk = m_pFile->GetChunkSize();
+
+ return ((chunk > 1) ? chunk : 64 * 1024);
}
void CDVDInputStreamFile::SetReadRate(uint32_t rate)

View File

@@ -1,24 +0,0 @@
From 52a424a3ca743c9a6ad9ab21bea8b17df7999311 Mon Sep 17 00:00:00 2001
From: mglae <mglmail@arcor.de>
Date: Sun, 16 Apr 2023 19:38:54 +0200
Subject: [PATCH] VideoPlayerAudio: invalidate previous sync type after Audio
Sink created
Sync type will be set for the new created Sink
---
xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp b/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp
index 01be866fcf9ed..2c246da6204f5 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayerAudio.cpp
@@ -526,6 +526,8 @@ bool CVideoPlayerAudio::ProcessDecoderOutput(DVDAudioFrame &audioframe)
if (!m_audioSink.Create(audioframe, m_streaminfo.codec, m_synctype == SYNC_RESAMPLE))
CLog::Log(LOGERROR, "{} - failed to create audio renderer", __FUNCTION__);
+ m_prevsynctype = -1;
+
if (m_syncState == IDVDStreamPlayer::SYNC_INSYNC)
m_audioSink.Resume();
}

View File

@@ -1,103 +0,0 @@
https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/effadce6c756247ea8bae32dc13bb3e6f464f0eb
From db99a6e0ed9490478a7af7b6a3299688b1a329e1 Mon Sep 17 00:00:00 2001
From: Alfred Wingate <parona@protonmail.com>
Date: Sun, 24 Dec 2023 14:02:37 +0200
Subject: [PATCH] ffmpeg: add patch to fix build against binutils-2.41
Signed-off-by: Alfred Wingate <parona@protonmail.com>
--- a/cmake/modules/FindFFMPEG.cmake
+++ b/cmake/modules/FindFFMPEG.cmake
@@ -96,7 +96,9 @@ macro(buildFFMPEG)
-DPKG_CONFIG_PATH=${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/lib/pkgconfig)
set(PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/CMakeLists.txt
- <SOURCE_DIR>)
+ <SOURCE_DIR> &&
+ # patch internal ffmpeg, fix build against binutils 2.41
+ patch -p1 < ${CMAKE_SOURCE_DIR}/tools/depends/target/ffmpeg/build-fix-for-binutils-2.41.patch)
if(CMAKE_GENERATOR STREQUAL Xcode)
set(FFMPEG_GENERATOR CMAKE_GENERATOR "Unix Makefiles")
--- /dev/null
+++ b/tools/depends/target/ffmpeg/build-fix-for-binutils-2.41.patch
@@ -0,0 +1,76 @@
+From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
+From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 16 Jul 2023 18:18:02 +0300
+Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
+ instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+ libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
+index 6298f5ed19..ca7e2dffc1 100644
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+--
+2.25.1
+
--
2.43.0

File diff suppressed because it is too large Load Diff

View File

@@ -1,624 +0,0 @@
From c9e25dc15acf1214b079da7021ad89acf85fa77d Mon Sep 17 00:00:00 2001
From: CastagnaIT <gottardo.stefano.83@gmail.com>
Date: Sun, 29 Jan 2023 17:51:51 +0100
Subject: [PATCH] [VideoPlayerVideo] Log an error when codec extradata is
required
---
xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp b/xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp
index 20f6b3b1cb51d..38f63f0766718 100644
--- a/xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp
+++ b/xbmc/cores/VideoPlayer/VideoPlayerVideo.cpp
@@ -114,8 +114,11 @@ bool CVideoPlayerVideo::OpenStream(CDVDStreamInfo hint)
hint.codec == AV_CODEC_ID_WMV3 ||
hint.codec == AV_CODEC_ID_VC1 ||
hint.codec == AV_CODEC_ID_AV1)
- // clang-format on
+ {
+ CLog::LogF(LOGERROR, "Codec id {} require extradata.", hint.codec);
return false;
+ }
+ // clang-format on
}
CLog::Log(LOGINFO, "Creating video codec with codec id: {}", hint.codec);
From 2559466404d342428d43076bf90fcacc24313af0 Mon Sep 17 00:00:00 2001
From: enen92 <92enen@gmail.com>
Date: Mon, 6 Feb 2023 15:36:11 +0000
Subject: [PATCH] video: remove ffmpeg bsf hack
Manually setting the codecID on the bsf filter is wrong.
avcodec_parameters_copy should be used instead.
---
xbmc/cores/FFmpeg.cpp | 13 ++++++++-----
xbmc/cores/FFmpeg.h | 3 +--
.../VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp | 10 +++++++++-
.../VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 3 +--
4 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/xbmc/cores/FFmpeg.cpp b/xbmc/cores/FFmpeg.cpp
index d071f6d8e33a3..73b7ea2ae875c 100644
--- a/xbmc/cores/FFmpeg.cpp
+++ b/xbmc/cores/FFmpeg.cpp
@@ -135,9 +135,7 @@ void ff_avutil_log(void* ptr, int level, const char* format, va_list va)
buffer.erase(0, start);
}
-std::tuple<uint8_t*, int> GetPacketExtradata(const AVPacket* pkt,
- const AVCodecParserContext* parserCtx,
- AVCodecContext* codecCtx)
+std::tuple<uint8_t*, int> GetPacketExtradata(const AVPacket* pkt, const AVCodecParameters* codecPar)
{
constexpr int FF_MAX_EXTRADATA_SIZE = ((1 << 28) - AV_INPUT_BUFFER_PADDING_SIZE);
@@ -151,7 +149,7 @@ std::tuple<uint8_t*, int> GetPacketExtradata(const AVPacket* pkt,
* for certain codecs, as noted in discussion of PR#21248
*/
- AVCodecID codecId = codecCtx->codec_id;
+ AVCodecID codecId = codecPar->codec_id;
// clang-format off
if (
@@ -178,7 +176,12 @@ std::tuple<uint8_t*, int> GetPacketExtradata(const AVPacket* pkt,
if (ret < 0)
return std::make_tuple(nullptr, 0);
- bsf->par_in->codec_id = codecId;
+ ret = avcodec_parameters_copy(bsf->par_in, codecPar);
+ if (ret < 0)
+ {
+ av_bsf_free(&bsf);
+ return std::make_tuple(nullptr, 0);
+ }
ret = av_bsf_init(bsf);
if (ret < 0)
diff --git a/xbmc/cores/FFmpeg.h b/xbmc/cores/FFmpeg.h
index 05547a0ba2b5f..5e35d58c6b0a6 100644
--- a/xbmc/cores/FFmpeg.h
+++ b/xbmc/cores/FFmpeg.h
@@ -73,5 +73,4 @@ class CFFmpegLog
};
std::tuple<uint8_t*, int> GetPacketExtradata(const AVPacket* pkt,
- const AVCodecParserContext* parserCtx,
- AVCodecContext* codecCtx);
+ const AVCodecParameters* codecPar);
diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
index 052332331702a..9ca07b9a2dd39 100644
--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
@@ -162,7 +162,15 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
avpkt->size = pkt->iSize;
avpkt->dts = avpkt->pts = AV_NOPTS_VALUE;
- auto [retExtraData, len] = GetPacketExtradata(avpkt, stream->m_parser, stream->m_context);
+ AVCodecParameters* codecPar = nullptr;
+ int ret = avcodec_parameters_from_context(codecPar, stream->m_context);
+ if (ret < 0)
+ {
+ CLog::LogF(LOGERROR, "avcodec_parameters_from_context failed");
+ return false;
+ }
+
+ auto [retExtraData, len] = GetPacketExtradata(avpkt, codecPar);
if (len > 0)
{
st->changes++;
diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index 7e6a2e10616d7..bc6b54c87235d 100644
--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -2290,8 +2290,7 @@ void CDVDDemuxFFmpeg::ParsePacket(AVPacket* pkt)
parser->second->m_parserCtx->parser &&
!st->codecpar->extradata)
{
- auto [retExtraData, i] =
- GetPacketExtradata(pkt, parser->second->m_parserCtx, parser->second->m_codecCtx);
+ auto [retExtraData, i] = GetPacketExtradata(pkt, st->codecpar);
if (i > 0)
{
st->codecpar->extradata_size = i;
From f30f1e6418ea60bc7cb081c59f5f1d9431d264e6 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 13:28:38 -0800
Subject: [PATCH 01/10] CDVDAudioCodecFFmpeg: ifdef use of
AV_CODEC_FLAG_TRUNCATED for ffmpeg 6.0
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
index b2849c797dbc4..325bb0b7549ab 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
@@ -73,8 +73,10 @@ bool CDVDAudioCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
m_pCodecContext->debug = 0;
m_pCodecContext->workaround_bugs = 1;
+#if LIBAVCODEC_VERSION_MAJOR < 60
if (pCodec->capabilities & AV_CODEC_CAP_TRUNCATED)
m_pCodecContext->flags |= AV_CODEC_FLAG_TRUNCATED;
+#endif
m_matrixEncoding = AV_MATRIX_ENCODING_NONE;
m_channels = 0;
From 3b71910ee0bb650816456ecc9a21251aff650c4d Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 13:29:18 -0800
Subject: [PATCH 02/10] CDVDAudioCodecFFmpeg: fix setting channel layout mask
when opening codec
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
.../DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp | 17 ++++++++++++++---
1 file changed, 14 insertions(+), 3 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
index 325bb0b7549ab..d1fb2cfe96afc 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Audio/DVDAudioCodecFFmpeg.cpp
@@ -80,13 +80,21 @@
m_channels = 0;
#if LIBAVCODEC_BUILD >= AV_VERSION_INT(59, 37, 100) && \
LIBAVUTIL_BUILD >= AV_VERSION_INT(57, 28, 100)
- av_channel_layout_uninit(&m_pCodecContext->ch_layout);
- m_pCodecContext->ch_layout.order = AV_CHANNEL_ORDER_NATIVE;
- m_pCodecContext->ch_layout.nb_channels = hints.channels;
+ if (hints.channels > 0 && hints.channellayout > 0)
+ {
+ m_pCodecContext->ch_layout.order = AV_CHANNEL_ORDER_NATIVE;
+ m_pCodecContext->ch_layout.nb_channels = hints.channels;
+ m_pCodecContext->ch_layout.u.mask = hints.channellayout;
+ }
+ else if (hints.channels > 0)
+ {
+ av_channel_layout_default(&m_pCodecContext->ch_layout, hints.channels);
+ }
+
+ m_hint_layout = m_pCodecContext->ch_layout.u.mask;
#else
m_pCodecContext->channels = hints.channels;
#endif
- m_hint_layout = hints.channellayout;
m_pCodecContext->sample_rate = hints.samplerate;
m_pCodecContext->block_align = hints.blockalign;
m_pCodecContext->bit_rate = hints.bitrate;
From f4fadb3ba4583c45fb06908a3eb352be8c29f235 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 13:29:34 -0800
Subject: [PATCH 03/10] CDVDAudioCodecFFmpeg: drop unneeded use of
AVFMT_FLAG_PRIV_OPT
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp | 2 --
1 file changed, 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
index bc6b54c87235d..016d198206716 100644
--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxFFmpeg.cpp
@@ -323,7 +323,6 @@ bool CDVDDemuxFFmpeg::Open(const std::shared_ptr<CDVDInputStream>& pInput, bool
}
if (result < 0)
{
- m_pFormatContext->flags |= AVFMT_FLAG_PRIV_OPT;
if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0)
{
CLog::Log(LOGDEBUG, "Error, could not open file {}", CURL::GetRedacted(strFile));
@@ -335,7 +334,6 @@ bool CDVDDemuxFFmpeg::Open(const std::shared_ptr<CDVDInputStream>& pInput, bool
avformat_close_input(&m_pFormatContext);
m_pFormatContext = avformat_alloc_context();
m_pFormatContext->interrupt_callback = int_cb;
- m_pFormatContext->flags &= ~AVFMT_FLAG_PRIV_OPT;
AVDictionary* options = GetFFMpegOptionsFromInput();
av_dict_set_int(&options, "load_all_variants", 0, AV_OPT_SEARCH_CHILDREN);
if (avformat_open_input(&m_pFormatContext, strFile.c_str(), iformat, &options) < 0)
From 7d03f33b83e5fb127a7495798a20c3b63ac06795 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Wed, 15 Mar 2023 19:58:56 -0700
Subject: [PATCH 04/10] CDVDVideoCodecFFmpeg: update filter args to use
key/value pairs
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
.../VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index bb9c20bf9d06e..c080589896ce7 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -1164,8 +1164,9 @@ int CDVDVideoCodecFFmpeg::FilterOpen(const std::string& filters, bool scale)
const AVFilter* outFilter = avfilter_get_by_name("buffersink"); // should be last filter in the graph for now
std::string args = StringUtils::Format(
- "{}:{}:{}:{}:{}:{}:{}", m_pCodecContext->width, m_pCodecContext->height,
- m_pCodecContext->pix_fmt, m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1,
+ "video_size={}x{}:pix_fmt={}:time_base={}/{}:pixel_aspect={}/{}", m_pCodecContext->width,
+ m_pCodecContext->height, m_pCodecContext->pix_fmt,
+ m_pCodecContext->time_base.num ? m_pCodecContext->time_base.num : 1,
m_pCodecContext->time_base.num ? m_pCodecContext->time_base.den : 1,
m_pCodecContext->sample_aspect_ratio.num != 0 ? m_pCodecContext->sample_aspect_ratio.num : 1,
m_pCodecContext->sample_aspect_ratio.num != 0 ? m_pCodecContext->sample_aspect_ratio.den : 1);
From 30bd7912802cf0f608751c452c48fc1a2eb8d91b Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Wed, 15 Mar 2023 19:59:27 -0700
Subject: [PATCH 05/10] CFFmpegPostproc: update filter args to use key/value
pairs
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
index 81b969d119667..6c4f664591a04 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
@@ -2962,10 +2962,11 @@ bool CFFmpegPostproc::Init(EINTERLACEMETHOD method)
const AVFilter* srcFilter = avfilter_get_by_name("buffer");
const AVFilter* outFilter = avfilter_get_by_name("buffersink");
- std::string args = StringUtils::Format("{}:{}:{}:{}:{}:{}:{}", m_config.vidWidth,
- m_config.vidHeight, AV_PIX_FMT_NV12, 1, 1,
- (m_config.aspect.num != 0) ? m_config.aspect.num : 1,
- (m_config.aspect.num != 0) ? m_config.aspect.den : 1);
+ std::string args =
+ StringUtils::Format("video_size={}x{}:pix_fmt={}:time_base={}/{}:pixel_aspect={}/{}",
+ m_config.vidWidth, m_config.vidHeight, AV_PIX_FMT_NV12, 1, 1,
+ (m_config.aspect.num != 0) ? m_config.aspect.num : 1,
+ (m_config.aspect.num != 0) ? m_config.aspect.den : 1);
if (avfilter_graph_create_filter(&m_pFilterIn, srcFilter, "src", args.c_str(), NULL, m_pFilterGraph) < 0)
{
From 54a21151374a2d40a2a452fae2709205ed8e8836 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 19:32:09 -0800
Subject: [PATCH 08/10] DXVA: CDecoder: replace removed av_mallocz_array with
av_calloc
ref: https://ffmpeg.org/doxygen/5.0/group__lavu__mem__funcs.html\#ga6627f140c3f70847bc6d9690a2fd001f
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
index a1bc3761c59d1..c06bd1ac0c7e6 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
@@ -972,7 +972,8 @@ CDecoder::CDecoder(CProcessInfo& processInfo)
m_event.Set();
m_avD3D11Context = av_d3d11va_alloc_context();
m_avD3D11Context->cfg = reinterpret_cast<D3D11_VIDEO_DECODER_CONFIG*>(av_mallocz(sizeof(D3D11_VIDEO_DECODER_CONFIG)));
- m_avD3D11Context->surface = reinterpret_cast<ID3D11VideoDecoderOutputView**>(av_mallocz_array(32, sizeof(ID3D11VideoDecoderOutputView*)));
+ m_avD3D11Context->surface = reinterpret_cast<ID3D11VideoDecoderOutputView**>(
+ av_calloc(32, sizeof(ID3D11VideoDecoderOutputView*)));
m_bufferPool.reset();
DX::Windowing()->Register(this);
From be1247d627cee6561174467094f1e8a46357df79 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 19:45:46 -0800
Subject: [PATCH 09/10] CFFmpegImage: remove deprecated use of pkt_duration
ref: https://ffmpeg.org/doxygen/6.0/structAVFrame.html\#a91725a40000e348b0607adf7f577e646
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
xbmc/guilib/FFmpegImage.cpp | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/xbmc/guilib/FFmpegImage.cpp b/xbmc/guilib/FFmpegImage.cpp
index e71980998b2e5..7171c046a9ce5 100644
--- a/xbmc/guilib/FFmpegImage.cpp
+++ b/xbmc/guilib/FFmpegImage.cpp
@@ -294,7 +294,15 @@ AVFrame* CFFmpegImage::ExtractFrame()
return nullptr;
}
//we need milliseconds
- frame->pkt_duration = av_rescale_q(frame->pkt_duration, m_fctx->streams[0]->time_base, AVRational{ 1, 1000 });
+
+#if LIBAVCODEC_VERSION_MAJOR < 60
+ frame->pkt_duration =
+ av_rescale_q(frame->pkt_duration, m_fctx->streams[0]->time_base, AVRational{1, 1000});
+#else
+ frame->duration =
+ av_rescale_q(frame->duration, m_fctx->streams[0]->time_base, AVRational{1, 1000});
+#endif
+
m_height = frame->height;
m_width = frame->width;
m_originalWidth = m_width;
@@ -745,7 +753,13 @@ std::shared_ptr<Frame> CFFmpegImage::ReadFrame()
if (avframe == nullptr)
return nullptr;
std::shared_ptr<Frame> frame(new Frame());
+
+#if LIBAVCODEC_VERSION_MAJOR < 60
frame->m_delay = (unsigned int)avframe->pkt_duration;
+#else
+ frame->m_delay = (unsigned int)avframe->duration;
+#endif
+
frame->m_pitch = avframe->width * 4;
frame->m_pImage = (unsigned char*) av_malloc(avframe->height * frame->m_pitch);
DecodeFrame(avframe, avframe->width, avframe->height, frame->m_pitch, frame->m_pImage);
From c12af890b0973f7c86316087e823f8a31c6b2ed3 Mon Sep 17 00:00:00 2001
From: Lukas Rusak <lorusak@gmail.com>
Date: Sat, 11 Mar 2023 19:45:01 -0800
Subject: [PATCH 10/10] CDVDVideoCodecFFmpeg: remove deprecated use of
reordered_opaque
ref: https://ffmpeg.org/doxygen/6.0/structAVFrame.html#a12f572ed19a2cba6be3790393cee76b5
Signed-off-by: Lukas Rusak <lorusak@gmail.com>
---
.../DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp | 11 ++++++++++-
xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp | 6 ++++--
xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp | 3 +++
xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp | 5 ++++-
4 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
index c080589896ce7..6a53ade4a7351 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecFFmpeg.cpp
@@ -370,6 +370,10 @@ bool CDVDVideoCodecFFmpeg::Open(CDVDStreamInfo &hints, CDVDCodecOptions &options
m_pCodecContext->get_format = GetFormat;
m_pCodecContext->codec_tag = hints.codec_tag;
+#if LIBAVCODEC_VERSION_MAJOR >= 60
+ m_pCodecContext->flags = AV_CODEC_FLAG_COPY_OPAQUE;
+#endif
+
// setup threading model
if (!(hints.codecOptions & CODEC_FORCE_SOFTWARE))
{
@@ -545,9 +549,10 @@ void CDVDVideoCodecFFmpeg::UpdateName()
CLog::Log(LOGDEBUG, "CDVDVideoCodecFFmpeg - Updated codec: {}", m_name);
}
+#if LIBAVCODEC_VERSION_MAJOR < 60
union pts_union
{
- double pts_d;
+ double pts_d;
int64_t pts_i;
};
@@ -557,6 +562,7 @@ static int64_t pts_dtoi(double pts)
u.pts_d = pts;
return u.pts_i;
}
+#endif
bool CDVDVideoCodecFFmpeg::AddData(const DemuxPacket &packet)
{
@@ -575,7 +581,10 @@ bool CDVDVideoCodecFFmpeg::AddData(const DemuxPacket &packet)
m_started = true;
m_dts = packet.dts;
+
+#if LIBAVCODEC_VERSION_MAJOR < 60
m_pCodecContext->reordered_opaque = pts_dtoi(packet.pts);
+#endif
AVPacket* avpkt = av_packet_alloc();
if (!avpkt)
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
index c06bd1ac0c7e6..81451995ca1db 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DXVA.cpp
@@ -1538,8 +1538,6 @@ int CDecoder::GetBuffer(AVCodecContext* avctx, AVFrame* pic)
return -1;
}
- pic->reordered_opaque = avctx->reordered_opaque;
-
for (unsigned i = 0; i < 4; i++)
{
pic->data[i] = nullptr;
@@ -1556,6 +1554,10 @@ int CDecoder::GetBuffer(AVCodecContext* avctx, AVFrame* pic)
}
pic->buf[0] = buffer;
+#if LIBAVCODEC_VERSION_MAJOR < 60
+ pic->reordered_opaque = avctx->reordered_opaque;
+#endif
+
Acquire();
return 0;
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
index 6c4f664591a04..447a13495d4e8 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VAAPI.cpp
@@ -867,7 +867,10 @@ int CDecoder::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic, int flags)
}
pic->buf[0] = buffer;
+#if LIBAVCODEC_VERSION_MAJOR < 60
pic->reordered_opaque = avctx->reordered_opaque;
+#endif
+
va->Acquire();
return 0;
}
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp
index ec07af79de819..50e16d492ebc7 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/VDPAU.cpp
@@ -1041,7 +1041,10 @@ int CDecoder::FFGetBuffer(AVCodecContext *avctx, AVFrame *pic, int flags)
}
pic->buf[0] = buffer;
- pic->reordered_opaque= avctx->reordered_opaque;
+#if LIBAVCODEC_VERSION_MAJOR < 60
+ pic->reordered_opaque = avctx->reordered_opaque;
+#endif
+
return 0;
}
From 928a7e4196046154419727a23c734d904e5e1b6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20H=C3=A4rer?= <markus.haerer@gmx.net>
Date: Sun, 23 Apr 2023 23:29:28 +0200
Subject: [PATCH] FFmpegImage: Switch back to jpeg_pipe for FFmpeg>=6.0
---
xbmc/guilib/FFmpegImage.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/xbmc/guilib/FFmpegImage.cpp b/xbmc/guilib/FFmpegImage.cpp
index 7171c046a9ce5..429037740a7d2 100644
--- a/xbmc/guilib/FFmpegImage.cpp
+++ b/xbmc/guilib/FFmpegImage.cpp
@@ -198,9 +198,16 @@ bool CFFmpegImage::Initialize(unsigned char* buffer, size_t bufSize)
bool is_png = (bufSize > 3 && buffer[1] == 'P' && buffer[2] == 'N' && buffer[3] == 'G');
bool is_tiff = (bufSize > 2 && buffer[0] == 'I' && buffer[1] == 'I' && buffer[2] == '*');
+ // See Github #19113
+#if LIBAVCODEC_VERSION_MAJOR < 60
+ constexpr char jpegFormat[] = "image2";
+#else
+ constexpr char jpegFormat[] = "jpeg_pipe";
+#endif
+
FFMPEG_FMT_CONST AVInputFormat* inp = nullptr;
if (is_jpeg)
- inp = av_find_input_format("image2");
+ inp = av_find_input_format(jpegFormat);
else if (m_strMimeType == "image/apng")
inp = av_find_input_format("apng");
else if (is_png)
@@ -213,7 +220,7 @@ bool CFFmpegImage::Initialize(unsigned char* buffer, size_t bufSize)
inp = av_find_input_format("webp_pipe");
// brute force parse if above check already failed
else if (m_strMimeType == "image/jpeg" || m_strMimeType == "image/jpg")
- inp = av_find_input_format("image2");
+ inp = av_find_input_format(jpegFormat);
else if (m_strMimeType == "image/png")
inp = av_find_input_format("png_pipe");
else if (m_strMimeType == "image/tiff")
From 9d7f4dfd00d89d4a5d6d8095ee9b0b746051b30c Mon Sep 17 00:00:00 2001
From: CrystalP <crystalp@kodi.tv>
Date: Mon, 1 May 2023 13:26:56 -0400
Subject: [PATCH] [fix] extern C for ffmpeg includes
---
xbmc/cores/RetroPlayer/process/RPProcessInfo.h | 3 +++
xbmc/cores/RetroPlayer/rendering/RenderTranslator.h | 3 +++
xbmc/cores/VideoPlayer/DVDFileInfo.cpp | 4 ++--
xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h | 4 ++++
.../VideoPlayer/VideoRenderers/windows/RendererShaders.h | 4 ++++
5 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/RetroPlayer/process/RPProcessInfo.h b/xbmc/cores/RetroPlayer/process/RPProcessInfo.h
index 9f930e78e9d84..f5ffe670d68aa 100644
--- a/xbmc/cores/RetroPlayer/process/RPProcessInfo.h
+++ b/xbmc/cores/RetroPlayer/process/RPProcessInfo.h
@@ -17,7 +17,10 @@
#include <string>
#include <vector>
+extern "C"
+{
#include <libavutil/pixfmt.h>
+}
class CDataCacheCore;
diff --git a/xbmc/cores/RetroPlayer/rendering/RenderTranslator.h b/xbmc/cores/RetroPlayer/rendering/RenderTranslator.h
index 575ad814fc125..d78e1c25e4070 100644
--- a/xbmc/cores/RetroPlayer/rendering/RenderTranslator.h
+++ b/xbmc/cores/RetroPlayer/rendering/RenderTranslator.h
@@ -10,7 +10,10 @@
#include "cores/GameSettings.h"
+extern "C"
+{
#include <libavutil/pixfmt.h>
+}
namespace KODI
{
diff --git a/xbmc/cores/VideoPlayer/DVDFileInfo.cpp b/xbmc/cores/VideoPlayer/DVDFileInfo.cpp
index 0860b40475b18..c7253bbd5497f 100644
--- a/xbmc/cores/VideoPlayer/DVDFileInfo.cpp
+++ b/xbmc/cores/VideoPlayer/DVDFileInfo.cpp
@@ -32,8 +32,6 @@
#include "DVDDemuxers/DVDDemuxVobsub.h"
#include "Process/ProcessInfo.h"
-#include <libavcodec/avcodec.h>
-#include <libswscale/swscale.h>
#include "filesystem/File.h"
#include "cores/FFmpeg.h"
#include "TextureCache.h"
@@ -44,7 +42,9 @@
#include <memory>
extern "C" {
+#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
+#include <libswscale/swscale.h>
}
bool CDVDFileInfo::GetFileDuration(const std::string &path, int& duration)
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h
index 9412377157f94..0eed9503dc9ac 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererDXVA.h
@@ -13,7 +13,11 @@
#include <map>
#include <d3d11_4.h>
+
+extern "C"
+{
#include <libavutil/pixfmt.h>
+}
enum RenderMethod;
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h
index 945cadda76841..af4d677aae923 100644
--- a/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/windows/RendererShaders.h
@@ -13,7 +13,11 @@
#include <map>
#include <d3d11_4.h>
+
+extern "C"
+{
#include <libavutil/pixfmt.h>
+}
#define PLANE_Y 0
#define PLANE_U 1

View File

@@ -1,36 +0,0 @@
From 3ad9588656e30abd421e48147b23aee9fb4b3557 Mon Sep 17 00:00:00 2001
From: Miguel Borges de Freitas <92enen@gmail.com>
Date: Sun, 12 Feb 2023 12:08:36 +0000
Subject: [PATCH] [video] fix crash in avcodec_parameters_from_context
---
xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
index 9ca07b9a2dd39..26fa9522eea7a 100644
--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
@@ -162,11 +162,12 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
avpkt->size = pkt->iSize;
avpkt->dts = avpkt->pts = AV_NOPTS_VALUE;
- AVCodecParameters* codecPar = nullptr;
+ AVCodecParameters* codecPar = avcodec_parameters_alloc();
int ret = avcodec_parameters_from_context(codecPar, stream->m_context);
if (ret < 0)
{
CLog::LogF(LOGERROR, "avcodec_parameters_from_context failed");
+ avcodec_parameters_free(&codecPar);
return false;
}
@@ -188,7 +189,7 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
avcodec_close(stream->m_context);
}
}
-
+ avcodec_parameters_free(&codecPar);
av_packet_free(&avpkt);
}

View File

@@ -1,55 +0,0 @@
From 456d6557ea570f63dc18831242b9189f96c1097d Mon Sep 17 00:00:00 2001
From: Steve Hartwell <steve.hartwell@gmail.com>
Date: Sun, 12 Feb 2023 18:10:45 +0000
Subject: [PATCH] [video] use smart_ptr and custom destructor for
AVCodecParameters
Co-authored-by: Miguel Borges de Freitas <92enen@gmail.com>
---
.../cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
index 26fa9522eea7a..2a42244b62b68 100644
--- a/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
+++ b/xbmc/cores/VideoPlayer/DVDDemuxers/DVDDemuxClient.cpp
@@ -14,7 +14,9 @@
#include "cores/VideoPlayer/Interface/TimingConstants.h"
#include "utils/log.h"
+#include <memory>
#include <tuple>
+#include <type_traits>
#include <utility>
class CDemuxStreamClientInternal
@@ -162,16 +164,17 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
avpkt->size = pkt->iSize;
avpkt->dts = avpkt->pts = AV_NOPTS_VALUE;
- AVCodecParameters* codecPar = avcodec_parameters_alloc();
- int ret = avcodec_parameters_from_context(codecPar, stream->m_context);
+ constexpr auto codecParDeleter = [](AVCodecParameters* p) { avcodec_parameters_free(&p); };
+ auto codecPar = std::unique_ptr<AVCodecParameters, decltype(codecParDeleter)>(
+ avcodec_parameters_alloc(), codecParDeleter);
+ int ret = avcodec_parameters_from_context(codecPar.get(), stream->m_context);
if (ret < 0)
{
CLog::LogF(LOGERROR, "avcodec_parameters_from_context failed");
- avcodec_parameters_free(&codecPar);
return false;
}
- auto [retExtraData, len] = GetPacketExtradata(avpkt, codecPar);
+ auto [retExtraData, len] = GetPacketExtradata(avpkt, codecPar.get());
if (len > 0)
{
st->changes++;
@@ -189,7 +192,6 @@ bool CDVDDemuxClient::ParsePacket(DemuxPacket* pkt)
avcodec_close(stream->m_context);
}
}
- avcodec_parameters_free(&codecPar);
av_packet_free(&avpkt);
}

View File

@@ -1,10 +0,0 @@
diff -dNur a/xbmc/interfaces/swig/AddonModuleXbmcaddon.i b/xbmc/interfaces/swig/AddonModuleXbmcaddon.i
--- a/xbmc/interfaces/swig/AddonModuleXbmcaddon.i 2024-01-10 04:24:09.000000000 +0100
+++ b/xbmc/interfaces/swig/AddonModuleXbmcaddon.i 2024-01-14 21:58:20.619762773 +0100
@@ -33,5 +33,6 @@
%include "interfaces/legacy/AddonString.h"
%include "interfaces/legacy/Addon.h"
+%nodefaultctor Settings;
%include "interfaces/legacy/Settings.h"

View File

@@ -1,333 +0,0 @@
From 02e6b6f9003aaf3984ccb83b91df4bf4cd183c6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20H=C3=A4rer?= <markus.haerer@gmx.net>
Date: Mon, 1 Apr 2024 19:15:07 +0200
Subject: [PATCH 1/2] [GUIIncludes] Fix heap-use-after-free
Only remove the child if the node is actually a child.
==51989==ERROR: AddressSanitizer: heap-use-after-free on address 0x511003b69210 at pc 0x5ce4b249275e bp 0x7fff43e1d430 sp 0x7fff43e1d428
READ of size 8 at 0x511003b69210 thread T0
#0 0x5ce4b249275d in TiXmlAttributeSet::First() /usr/include/tinyxml.h:915:50
#1 0x5ce4b2492098 in TiXmlElement::FirstAttribute() /usr/include/tinyxml.h:1087:61
#2 0x5ce4b2bb091e in CGUIIncludes::ResolveParametersForNode(TiXmlElement*, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>> const&) xbmc/guilib/GUIIncludes.cpp:586:37
#3 0x5ce4b2bae9bb in CGUIIncludes::ResolveIncludes(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:485:9
#4 0x5ce4b2ba8eaf in CGUIIncludes::Resolve(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:312:3
#5 0x5ce4b2ba8fce in CGUIIncludes::Resolve(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:318:5
#6 0x5ce4b3e808d3 in ADDON::CSkinInfo::ResolveIncludes(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/addons/Skin.cpp:307:14
#7 0x5ce4b2e00084 in CGUIWindow::Prepare(std::unique_ptr<TiXmlElement, std::default_delete<TiXmlElement>> const&) xbmc/guilib/GUIWindow.cpp:168:15
#8 0x5ce4b2dff45e in CGUIWindow::LoadXML(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/guilib/GUIWindow.cpp:155:15
#9 0x5ce4b2dfd540 in CGUIWindow::Load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) xbmc/guilib/GUIWindow.cpp:109:14
#10 0x5ce4b2e1cac5 in CGUIWindow::AllocResources(bool) xbmc/guilib/GUIWindow.cpp:765:7
#11 0x5ce4b2e14c77 in CGUIWindow::OnMessage(CGUIMessage&) xbmc/guilib/GUIWindow.cpp:594:52
#12 0x5ce4b19ce9d2 in CGUIWindowHome::OnMessage(CGUIMessage&) xbmc/windows/GUIWindowHome.cpp:182:22
#13 0x5ce4b2e613a1 in CGUIWindowManager::ActivateWindow_Internal(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:896:15
#14 0x5ce4b2e5ce3c in CGUIWindowManager::ActivateWindow(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:802:5
#15 0x5ce4b683ad63 in int (anonymous namespace)::ActivateWindow<true>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&) xbmc/interfaces/builtins/GUIBuiltins.cpp:109:52
#16 0x5ce4b6822865 in CBuiltins::Execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/interfaces/builtins/Builtins.cpp:158:14
#17 0x5ce4b34047ff in CApplication::ExecuteXBMCAction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<CGUIListItem> const&) xbmc/application/Application.cpp:3037:32
#18 0x5ce4b3400a16 in CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp:3013:14
#19 0x5ce4b34058a0 in non-virtual thunk to CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp
#20 0x5ce4b2e52261 in CGUIWindowManager::SendMessage(CGUIMessage&) xbmc/guilib/GUIWindowManager.cpp:510:23
#21 0x5ce4b2e7cc7f in CGUIWindowManager::DispatchThreadMessages() xbmc/guilib/GUIWindowManager.cpp:1572:7
#22 0x5ce4b3405bfa in CApplication::Process() xbmc/application/Application.cpp:3139:48
#23 0x5ce4b33ddc98 in CApplication::Run() xbmc/application/Application.cpp:1855:5
#24 0x5ce4b251b323 in XBMC_Run xbmc/platform/xbmc.cpp:61:26
#25 0x5ce4af14af0f in main xbmc/platform/posix/main.cpp:70:16
#26 0x76d804243ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#27 0x76d804243d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#28 0x5ce4af010b94 in _start (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa317b94) (BuildId: 923aa634157be6adc50052366abd3ca0edfeffc0)
0x511003b69210 is located 208 bytes inside of 216-byte region [0x511003b69140,0x511003b69218)
freed by thread T0 here:
#0 0x5ce4af148d72 in operator delete(void*, unsigned long) (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa44fd72) (BuildId: 923aa634157be6adc50052366abd3ca0edfeffc0)
#1 0x76d80670ea48 in TiXmlNode::RemoveChild(TiXmlNode*) (/usr/lib/libtinyxml.so.0+0x8a48) (BuildId: 2f5d236264d4d695dbe432f41e1eb46c7bc2d5d4)
#2 0x5ce4b2bae9a3 in CGUIIncludes::ResolveIncludes(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:482:9
#3 0x5ce4b2ba8eaf in CGUIIncludes::Resolve(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:312:3
#4 0x5ce4b2ba8fce in CGUIIncludes::Resolve(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/guilib/GUIIncludes.cpp:318:5
#5 0x5ce4b3e808d3 in ADDON::CSkinInfo::ResolveIncludes(TiXmlElement*, std::map<std::shared_ptr<INFO::InfoBool>, bool, std::less<std::shared_ptr<INFO::InfoBool>>, std::allocator<std::pair<std::shared_ptr<INFO::InfoBool> const, bool>>>*) xbmc/addons/Skin.cpp:307:14
#6 0x5ce4b2e00084 in CGUIWindow::Prepare(std::unique_ptr<TiXmlElement, std::default_delete<TiXmlElement>> const&) xbmc/guilib/GUIWindow.cpp:168:15
#7 0x5ce4b2dff45e in CGUIWindow::LoadXML(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/guilib/GUIWindow.cpp:155:15
#8 0x5ce4b2dfd540 in CGUIWindow::Load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) xbmc/guilib/GUIWindow.cpp:109:14
#9 0x5ce4b2e1cac5 in CGUIWindow::AllocResources(bool) xbmc/guilib/GUIWindow.cpp:765:7
#10 0x5ce4b2e14c77 in CGUIWindow::OnMessage(CGUIMessage&) xbmc/guilib/GUIWindow.cpp:594:52
#11 0x5ce4b19ce9d2 in CGUIWindowHome::OnMessage(CGUIMessage&) xbmc/windows/GUIWindowHome.cpp:182:22
#12 0x5ce4b2e613a1 in CGUIWindowManager::ActivateWindow_Internal(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:896:15
#13 0x5ce4b2e5ce3c in CGUIWindowManager::ActivateWindow(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:802:5
#14 0x5ce4b683ad63 in int (anonymous namespace)::ActivateWindow<true>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&) xbmc/interfaces/builtins/GUIBuiltins.cpp:109:52
#15 0x5ce4b6822865 in CBuiltins::Execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/interfaces/builtins/Builtins.cpp:158:14
#16 0x5ce4b34047ff in CApplication::ExecuteXBMCAction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<CGUIListItem> const&) xbmc/application/Application.cpp:3037:32
#17 0x5ce4b3400a16 in CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp:3013:14
#18 0x5ce4b34058a0 in non-virtual thunk to CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp
#19 0x5ce4b2e52261 in CGUIWindowManager::SendMessage(CGUIMessage&) xbmc/guilib/GUIWindowManager.cpp:510:23
#20 0x5ce4b2e7cc7f in CGUIWindowManager::DispatchThreadMessages() xbmc/guilib/GUIWindowManager.cpp:1572:7
#21 0x5ce4b3405bfa in CApplication::Process() xbmc/application/Application.cpp:3139:48
#22 0x5ce4b33ddc98 in CApplication::Run() xbmc/application/Application.cpp:1855:5
#23 0x5ce4b251b323 in XBMC_Run xbmc/platform/xbmc.cpp:61:26
#24 0x5ce4af14af0f in main xbmc/platform/posix/main.cpp:70:16
#25 0x76d804243ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
previously allocated by thread T0 here:
#0 0x5ce4af147e12 in operator new(unsigned long) (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa44ee12) (BuildId: 923aa634157be6adc50052366abd3ca0edfeffc0)
#1 0x76d806711497 in TiXmlElement::Clone() const (/usr/lib/libtinyxml.so.0+0xb497) (BuildId: 2f5d236264d4d695dbe432f41e1eb46c7bc2d5d4)
SUMMARY: AddressSanitizer: heap-use-after-free /usr/include/tinyxml.h:915:50 in TiXmlAttributeSet::First()
Shadow bytes around the buggy address:
0x511003b68f80: 00 00 00 fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69000: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69100: fa fa fa fa fa fa fa fa fd fd fd fd fd fd fd fd
0x511003b69180: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x511003b69200: fd fd[fd]fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69280: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69300: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69380: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69400: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x511003b69480: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==51989==ABORTING
(cherry picked from commit 52988c92e934e593ddb8e93d6369f0636dc7db84)
---
xbmc/guilib/GUIIncludes.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/xbmc/guilib/GUIIncludes.cpp b/xbmc/guilib/GUIIncludes.cpp
index 55d967346f1f5..da8f3a33c943e 100644
--- a/xbmc/guilib/GUIIncludes.cpp
+++ b/xbmc/guilib/GUIIncludes.cpp
@@ -529,7 +529,8 @@ void CGUIIncludes::InsertNested(TiXmlElement *controls, TiXmlElement *include, T
}
child = child->NextSiblingElement();
}
- target->RemoveChild(nested);
+ if (nested != node)
+ target->RemoveChild(nested);
}
}
From 25dec1b0ee14b65cc44d0fd1792e4e6b583fbdcb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Markus=20H=C3=A4rer?= <markus.haerer@gmx.net>
Date: Mon, 1 Apr 2024 19:24:57 +0200
Subject: [PATCH 2/2] [GUIBaseContainer] Fix heap-use-after-free
See comment in code for information.
==30885==ERROR: AddressSanitizer: heap-use-after-free on address 0x51800050bbe8 at pc 0x56aa085d20db bp 0x7ffd92777f50 sp 0x7ffd92777f48
READ of size 1 at 0x51800050bbe8 thread T0
#0 0x56aa085d20da in CGUIAction::ExecuteActions(int, int, std::shared_ptr<CGUIListItem> const&) const xbmc/guilib/GUIAction.cpp:86:9
#1 0x56aa084b7701 in CStaticListProvider::OnClick(std::shared_ptr<CGUIListItem> const&) xbmc/guilib/listproviders/StaticProvider.cpp:136:40
#2 0x56aa0862e065 in CGUIBaseContainer::OnClick(int) xbmc/guilib/GUIBaseContainer.cpp:881:27
#3 0x56aa0862b09c in CGUIBaseContainer::OnAction(CAction const&) xbmc/guilib/GUIBaseContainer.cpp:474:28
#4 0x56aa08c4bdf5 in CGUIWrappingListContainer::OnAction(CAction const&) xbmc/guilib/GUIWrappingListContainer.cpp:75:29
#5 0x56aa08b8f441 in CGUIWindow::OnAction(CAction const&) xbmc/guilib/GUIWindow.cpp:429:27
#6 0x56aa08bee00c in CGUIWindowManager::HandleAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1199:20
#7 0x56aa08bec973 in CGUIWindowManager::OnAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1144:11
#8 0x56aa0912be04 in CApplication::OnAction(CAction const&) xbmc/application/Application.cpp:913:54
#9 0x56aa0c914de1 in CInputManager::ExecuteInputAction(CAction const&) xbmc/input/InputManager.cpp:746:29
#10 0x56aa0c921842 in CInputManager::HandleKey(CKey const&) xbmc/input/InputManager.cpp:680:10
#11 0x56aa0c91c2ec in CInputManager::OnKeyUp(CKey const&) xbmc/input/InputManager.cpp:693:5
#12 0x56aa0c917737 in CInputManager::OnEvent(XBMC_Event&) xbmc/input/InputManager.cpp:361:7
#13 0x56aa090fe458 in CAppInboundProtocol::HandleEvents() xbmc/application/AppInboundProtocol.cpp:113:43
#14 0x56aa0915b240 in CApplication::FrameMove(bool, bool) xbmc/application/Application.cpp:1756:17
#15 0x56aa0915f200 in CApplication::Run() xbmc/application/Application.cpp:1860:7
#16 0x56aa0829c3e3 in XBMC_Run xbmc/platform/xbmc.cpp:61:26
#17 0x56aa04ecbfcf in main xbmc/platform/posix/main.cpp:70:16
#18 0x7517fb043ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#19 0x7517fb043d89 in __libc_start_main (/usr/lib/libc.so.6+0x25d89) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
#20 0x56aa04d91c54 in _start (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa317c54) (BuildId: 7f84180dd757174de6de03b115843129667234d3)
0x51800050bbe8 is located 872 bytes inside of 880-byte region [0x51800050b880,0x51800050bbf0)
freed by thread T0 here:
#0 0x56aa04ec996a in operator delete(void*) (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa44f96a) (BuildId: 7f84180dd757174de6de03b115843129667234d3)
#1 0x56aa08ae24d1 in CGUIStaticItem::~CGUIStaticItem() xbmc/guilib/GUIStaticItem.h:55:38
#2 0x56aa05922763 in std::_Sp_counted_ptr<CGUIStaticItem*, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/shared_ptr_base.h:428:9
#3 0x56aa04ecd0bc in std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/shared_ptr_base.h:346:8
#4 0x56aa04eccca9 in std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/shared_ptr_base.h:1071:11
#5 0x56aa050d1c6c in std::__shared_ptr<CGUIListItem, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/shared_ptr_base.h:1524:31
#6 0x56aa050c6ee8 in std::shared_ptr<CGUIListItem>::~shared_ptr() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/shared_ptr.h:175:11
#7 0x56aa08465110 in void std::_Destroy<std::shared_ptr<CGUIListItem>>(std::shared_ptr<CGUIListItem>*) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_construct.h:151:19
#8 0x56aa0846505e in void std::_Destroy_aux<false>::__destroy<std::shared_ptr<CGUIListItem>*>(std::shared_ptr<CGUIListItem>*, std::shared_ptr<CGUIListItem>*) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_construct.h:163:6
#9 0x56aa08465024 in void std::_Destroy<std::shared_ptr<CGUIListItem>*>(std::shared_ptr<CGUIListItem>*, std::shared_ptr<CGUIListItem>*) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_construct.h:195:7
#10 0x56aa084a624b in void std::_Destroy<std::shared_ptr<CGUIListItem>*, std::shared_ptr<CGUIListItem>>(std::shared_ptr<CGUIListItem>*, std::shared_ptr<CGUIListItem>*, std::allocator<std::shared_ptr<CGUIListItem>>&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/alloc_traits.h:947:7
#11 0x56aa084a624b in std::vector<std::shared_ptr<CGUIListItem>, std::allocator<std::shared_ptr<CGUIListItem>>>::~vector() /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/stl_vector.h:732:2
#12 0x56aa086169e5 in CGUIBaseContainer::~CGUIBaseContainer() xbmc/guilib/GUIBaseContainer.cpp:117:1
#13 0x56aa08c4a148 in CGUIWrappingListContainer::~CGUIWrappingListContainer() xbmc/guilib/GUIWrappingListContainer.cpp:26:59
#14 0x56aa08c4a198 in CGUIWrappingListContainer::~CGUIWrappingListContainer() xbmc/guilib/GUIWrappingListContainer.cpp:26:59
#15 0x56aa08758935 in CGUIControlGroup::ClearAll() xbmc/guilib/GUIControlGroup.cpp:525:5
#16 0x56aa08743bb9 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:56:3
#17 0x56aa08743c48 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:55:1
#18 0x56aa08758935 in CGUIControlGroup::ClearAll() xbmc/guilib/GUIControlGroup.cpp:525:5
#19 0x56aa08743bb9 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:56:3
#20 0x56aa08743c48 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:55:1
#21 0x56aa08758935 in CGUIControlGroup::ClearAll() xbmc/guilib/GUIControlGroup.cpp:525:5
#22 0x56aa08743bb9 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:56:3
#23 0x56aa08743c48 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:55:1
#24 0x56aa08758935 in CGUIControlGroup::ClearAll() xbmc/guilib/GUIControlGroup.cpp:525:5
#25 0x56aa08743bb9 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:56:3
#26 0x56aa08743c48 in CGUIControlGroup::~CGUIControlGroup() xbmc/guilib/GUIControlGroup.cpp:55:1
#27 0x56aa08758935 in CGUIControlGroup::ClearAll() xbmc/guilib/GUIControlGroup.cpp:525:5
#28 0x56aa08b9f39d in CGUIWindow::ClearAll() xbmc/guilib/GUIWindow.cpp:816:21
#29 0x56aa08b9ed97 in CGUIWindow::FreeResources(bool) xbmc/guilib/GUIWindow.cpp:799:53
#30 0x56aa08bf8e34 in CGUIWindowManager::DeInitialize() xbmc/guilib/GUIWindowManager.cpp:1452:14
#31 0x56aa09264d22 in CApplicationSkinHandling::UnloadSkin() xbmc/application/ApplicationSkinHandling.cpp:235:29
#32 0x56aa0925e0fd in CApplicationSkinHandling::LoadSkin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/application/ApplicationSkinHandling.cpp:111:3
#33 0x56aa0926a8e6 in CApplicationSkinHandling::ReloadSkin(bool) xbmc/application/ApplicationSkinHandling.cpp:390:7
#34 0x56aa0c635399 in ReloadSkin(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&) xbmc/interfaces/builtins/SkinBuiltins.cpp:46:12
#35 0x56aa0c5a39e5 in CBuiltins::Execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/interfaces/builtins/Builtins.cpp:158:14
#36 0x56aa0918597f in CApplication::ExecuteXBMCAction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<CGUIListItem> const&) xbmc/application/Application.cpp:3037:32
#37 0x56aa09181b96 in CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp:3013:14
#38 0x56aa09186a20 in non-virtual thunk to CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp
#39 0x56aa08bd33e1 in CGUIWindowManager::SendMessage(CGUIMessage&) xbmc/guilib/GUIWindowManager.cpp:510:23
#40 0x56aa085d2502 in CGUIAction::ExecuteActions(int, int, std::shared_ptr<CGUIListItem> const&) const xbmc/guilib/GUIAction.cpp:89:52
#41 0x56aa084b7701 in CStaticListProvider::OnClick(std::shared_ptr<CGUIListItem> const&) xbmc/guilib/listproviders/StaticProvider.cpp:136:40
#42 0x56aa0862e065 in CGUIBaseContainer::OnClick(int) xbmc/guilib/GUIBaseContainer.cpp:881:27
#43 0x56aa0862b09c in CGUIBaseContainer::OnAction(CAction const&) xbmc/guilib/GUIBaseContainer.cpp:474:28
#44 0x56aa08c4bdf5 in CGUIWrappingListContainer::OnAction(CAction const&) xbmc/guilib/GUIWrappingListContainer.cpp:75:29
#45 0x56aa08b8f441 in CGUIWindow::OnAction(CAction const&) xbmc/guilib/GUIWindow.cpp:429:27
#46 0x56aa08bee00c in CGUIWindowManager::HandleAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1199:20
#47 0x56aa08bec973 in CGUIWindowManager::OnAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1144:11
#48 0x56aa0912be04 in CApplication::OnAction(CAction const&) xbmc/application/Application.cpp:913:54
#49 0x56aa0c914de1 in CInputManager::ExecuteInputAction(CAction const&) xbmc/input/InputManager.cpp:746:29
#50 0x56aa0c921842 in CInputManager::HandleKey(CKey const&) xbmc/input/InputManager.cpp:680:10
#51 0x56aa0c91c2ec in CInputManager::OnKeyUp(CKey const&) xbmc/input/InputManager.cpp:693:5
#52 0x56aa0c917737 in CInputManager::OnEvent(XBMC_Event&) xbmc/input/InputManager.cpp:361:7
#53 0x56aa090fe458 in CAppInboundProtocol::HandleEvents() xbmc/application/AppInboundProtocol.cpp:113:43
#54 0x56aa0915b240 in CApplication::FrameMove(bool, bool) xbmc/application/Application.cpp:1756:17
#55 0x56aa0915f200 in CApplication::Run() xbmc/application/Application.cpp:1860:7
#56 0x56aa0829c3e3 in XBMC_Run xbmc/platform/xbmc.cpp:61:26
#57 0x56aa04ecbfcf in main xbmc/platform/posix/main.cpp:70:16
#58 0x7517fb043ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
previously allocated by thread T0 here:
#0 0x56aa04ec8ed2 in operator new(unsigned long) (/home/mark/Coding/Repos/kodi-git/build_clang_debug_sanitizer/kodi.bin+0xa44eed2) (BuildId: 7f84180dd757174de6de03b115843129667234d3)
#1 0x56aa084b3183 in CStaticListProvider::CStaticListProvider(TiXmlElement const*, int) xbmc/guilib/listproviders/StaticProvider.cpp:28:33
#2 0x56aa0849c590 in std::__detail::_MakeUniq<CStaticListProvider>::__single_object std::make_unique<CStaticListProvider, TiXmlElement const*, int&>(TiXmlElement const*&&, int&) /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/13.2.1/../../../../include/c++/13.2.1/bits/unique_ptr.h:1070:34
#3 0x56aa0849bac7 in IListProvider::CreateSingle(TiXmlNode const*, int) xbmc/guilib/listproviders/IListProvider.cpp:34:12
#4 0x56aa0849b582 in IListProvider::Create(TiXmlNode const*, int) xbmc/guilib/listproviders/IListProvider.cpp:25:12
#5 0x56aa0864bbe8 in CGUIBaseContainer::LoadListProvider(TiXmlElement*, int, bool) xbmc/guilib/GUIBaseContainer.cpp:1282:20
#6 0x56aa0871b1c3 in CGUIControlFactory::Create(int, CRectGen<float> const&, TiXmlElement*, bool) xbmc/guilib/GUIControlFactory.cpp:1543:17
#7 0x56aa08b884c4 in CGUIWindow::LoadControl(TiXmlElement*, CGUIControlGroup*, CRectGen<float> const&) xbmc/guilib/GUIWindow.cpp:281:38
#8 0x56aa08b8a088 in CGUIWindow::LoadControl(TiXmlElement*, CGUIControlGroup*, CRectGen<float> const&) xbmc/guilib/GUIWindow.cpp:309:9
#9 0x56aa08b8a088 in CGUIWindow::LoadControl(TiXmlElement*, CGUIControlGroup*, CRectGen<float> const&) xbmc/guilib/GUIWindow.cpp:309:9
#10 0x56aa08b8a088 in CGUIWindow::LoadControl(TiXmlElement*, CGUIControlGroup*, CRectGen<float> const&) xbmc/guilib/GUIWindow.cpp:309:9
#11 0x56aa08b8a088 in CGUIWindow::LoadControl(TiXmlElement*, CGUIControlGroup*, CRectGen<float> const&) xbmc/guilib/GUIWindow.cpp:309:9
#12 0x56aa08b87cf6 in CGUIWindow::Load(TiXmlElement*) xbmc/guilib/GUIWindow.cpp:264:11
#13 0x56aa08b80657 in CGUIWindow::LoadXML(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/guilib/GUIWindow.cpp:155:10
#14 0x56aa08b7e6c0 in CGUIWindow::Load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, bool) xbmc/guilib/GUIWindow.cpp:109:14
#15 0x56aa08b9dc45 in CGUIWindow::AllocResources(bool) xbmc/guilib/GUIWindow.cpp:765:7
#16 0x56aa08b95df7 in CGUIWindow::OnMessage(CGUIMessage&) xbmc/guilib/GUIWindow.cpp:594:52
#17 0x56aa08be2521 in CGUIWindowManager::ActivateWindow_Internal(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:896:15
#18 0x56aa08bddfbc in CGUIWindowManager::ActivateWindow(int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, bool, bool) xbmc/guilib/GUIWindowManager.cpp:802:5
#19 0x56aa0c5b75f3 in int (anonymous namespace)::ActivateWindow<false>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&) xbmc/interfaces/builtins/GUIBuiltins.cpp:109:52
#20 0x56aa0c5a39e5 in CBuiltins::Execute(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) xbmc/interfaces/builtins/Builtins.cpp:158:14
#21 0x56aa0918597f in CApplication::ExecuteXBMCAction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::shared_ptr<CGUIListItem> const&) xbmc/application/Application.cpp:3037:32
#22 0x56aa09181b96 in CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp:3013:14
#23 0x56aa09186a20 in non-virtual thunk to CApplication::OnMessage(CGUIMessage&) xbmc/application/Application.cpp
#24 0x56aa08bd33e1 in CGUIWindowManager::SendMessage(CGUIMessage&) xbmc/guilib/GUIWindowManager.cpp:510:23
#25 0x56aa085d2502 in CGUIAction::ExecuteActions(int, int, std::shared_ptr<CGUIListItem> const&) const xbmc/guilib/GUIAction.cpp:89:52
#26 0x56aa0867f896 in CGUIButtonControl::OnClick() xbmc/guilib/GUIButtonControl.cpp:393:16
#27 0x56aa08677e86 in CGUIButtonControl::OnAction(CAction const&) xbmc/guilib/GUIButtonControl.cpp:212:5
#28 0x56aa08b8f441 in CGUIWindow::OnAction(CAction const&) xbmc/guilib/GUIWindow.cpp:429:27
#29 0x56aa08bee00c in CGUIWindowManager::HandleAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1199:20
#30 0x56aa08bec973 in CGUIWindowManager::OnAction(CAction const&) const xbmc/guilib/GUIWindowManager.cpp:1144:11
#31 0x56aa0912be04 in CApplication::OnAction(CAction const&) xbmc/application/Application.cpp:913:54
#32 0x56aa0c914de1 in CInputManager::ExecuteInputAction(CAction const&) xbmc/input/InputManager.cpp:746:29
#33 0x56aa0c921842 in CInputManager::HandleKey(CKey const&) xbmc/input/InputManager.cpp:680:10
#34 0x56aa0c91c2ec in CInputManager::OnKeyUp(CKey const&) xbmc/input/InputManager.cpp:693:5
#35 0x56aa0c917737 in CInputManager::OnEvent(XBMC_Event&) xbmc/input/InputManager.cpp:361:7
#36 0x56aa090fe458 in CAppInboundProtocol::HandleEvents() xbmc/application/AppInboundProtocol.cpp:113:43
#37 0x56aa0915b240 in CApplication::FrameMove(bool, bool) xbmc/application/Application.cpp:1756:17
#38 0x56aa0915f200 in CApplication::Run() xbmc/application/Application.cpp:1860:7
#39 0x56aa0829c3e3 in XBMC_Run xbmc/platform/xbmc.cpp:61:26
#40 0x56aa04ecbfcf in main xbmc/platform/posix/main.cpp:70:16
#41 0x7517fb043ccf (/usr/lib/libc.so.6+0x25ccf) (BuildId: c0caa0b7709d3369ee575fcd7d7d0b0fc48733af)
SUMMARY: AddressSanitizer: heap-use-after-free xbmc/guilib/GUIAction.cpp:86:9 in CGUIAction::ExecuteActions(int, int, std::shared_ptr<CGUIListItem> const&) const
Shadow bytes around the buggy address:
0x51800050b900: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x51800050b980: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x51800050ba00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x51800050ba80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x51800050bb00: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x51800050bb80: fd fd fd fd fd fd fd fd fd fd fd fd fd[fd]fa fa
0x51800050bc00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x51800050bc80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x51800050bd00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x51800050bd80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x51800050be00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==30885==ABORTING
(cherry picked from commit 9e4cfd2d174bd939191d64e1788835a00ffcb28f)
---
xbmc/guilib/GUIBaseContainer.cpp | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/xbmc/guilib/GUIBaseContainer.cpp b/xbmc/guilib/GUIBaseContainer.cpp
index c22eb71284f27..897459790dd76 100644
--- a/xbmc/guilib/GUIBaseContainer.cpp
+++ b/xbmc/guilib/GUIBaseContainer.cpp
@@ -13,6 +13,7 @@
#include "GUIListItemLayout.h"
#include "GUIMessage.h"
#include "ServiceBroker.h"
+#include "guilib/GUIListItem.h"
#include "guilib/guiinfo/GUIInfoLabels.h"
#include "guilib/listproviders/IListProvider.h"
#include "input/actions/Action.h"
@@ -875,10 +876,16 @@ bool CGUIBaseContainer::OnClick(int actionID)
int selected = GetSelectedItem();
if (selected >= 0 && selected < static_cast<int>(m_items.size()))
{
+ // One of the actions could trigger a reload of the GUI which destroys
+ // this CGUIBaseContainer and therefore the m_items[selected] we are
+ // going to process. The shared_ptr ensures that item survives until
+ // it has been processed.
+ std::shared_ptr<CGUIListItem> item = m_items[selected];
+
if (m_clickActions.HasActionsMeetingCondition())
- m_clickActions.ExecuteActions(0, GetParentID(), m_items[selected]);
+ m_clickActions.ExecuteActions(0, GetParentID(), item);
else
- m_listProvider->OnClick(m_items[selected]);
+ m_listProvider->OnClick(item);
}
return true;
}

View File

@@ -1,482 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# FFmpeg can be unbundled, but is currently stuck at a very old version.
# libdvd{css,read,nav} are not unbundlable without patching the buildsystem.
# Versions for the forked projects that are bundled
# See tools/depends/target/<project>/<project>-VERSION
LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2"
LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2"
LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2"
FFMPEG_VERSION="4.4.1"
CODENAME="Nexus"
FFMPEG_KODI_VERSION="Alpha1"
# Doesn't build with jdk-21
_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17} )
JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]}
# Required to be set, but not used.
JAVA_PKG_WANT_SOURCE="17"
JAVA_PKG_WANT_TARGET="17"
PYTHON_REQ_USE="sqlite,ssl"
PYTHON_COMPAT=( python3_{10..11} ) # python3.12 support added in 21
CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon"
inherit cmake desktop flag-o-matic java-pkg-2 linux-info optfeature pax-utils python-single-r1 xdg
DESCRIPTION="A free and open source media-player and entertainment hub"
HOMEPAGE="https://kodi.tv/"
SRC_URI="
https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz
-> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz
https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz
-> libdvdread-${LIBDVDREAD_VERSION}.tar.gz
css? (
https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz
-> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz
)
!system-ffmpeg? (
https://github.com/xbmc/FFmpeg/archive/${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz
-> ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz
)
"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/xbmc/xbmc.git"
if [[ ${PV} != "9999" ]]; then
EGIT_BRANCH="${CODENAME}"
fi
inherit git-r3
else
MY_PV=${PV/_p/_r}
MY_PV=${MY_PV/_alpha/a}
MY_PV=${MY_PV/_beta/b}
MY_PV=${MY_PV/_rc/RC}
MY_PV="${MY_PV}-${CODENAME}"
MY_P="${PN}-${MY_PV}"
SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
S=${WORKDIR}/xbmc-${MY_PV}
fi
LICENSE="GPL-2+"
SLOT="0"
# use flag is called libusb so that it doesn't fool people in thinking that
# it is _required_ for USB support. Otherwise they'll disable udev and
# that's going to be worse.
IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio raspberry-pi samba system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}"
REQUIRED_USE="
${PYTHON_REQUIRED_USE}
^^ ( gbm wayland X )
?? ( mariadb mysql )
bluray? ( udf )
gbm? ( udev )
udev? ( !libusb )
vdpau? ( X !gles !gbm )
zeroconf? ( dbus )
"
RESTRICT="!test? ( test )"
# dev-libs/libcec[-cubox] bug #818262
COMMON_DEPEND="
>=dev-libs/flatbuffers-1.12.0:=
>=dev-libs/lzo-2.04:2
media-libs/giflib:=
>=media-libs/libjpeg-turbo-2.0.4:=
>=media-libs/libpng-1.6.26:0=
wayland? (
dev-cpp/waylandpp:=
)
"
COMMON_TARGET_DEPEND="${PYTHON_DEPS}
>=net-misc/curl-7.68.0[http2]
>=sys-libs/zlib-1.2.11
dev-db/sqlite:3
dev-libs/crossguid
>=dev-libs/fribidi-1.0.5
>=dev-libs/libcdio-2.1.0:=[cxx]
>=dev-libs/libfmt-6.1.2:=
dev-libs/libfstrcmp
dev-libs/libpcre[cxx]
>=dev-libs/openssl-1.1.1k:0=
>=dev-libs/spdlog-1.5.0:=
dev-libs/tinyxml[stl]
media-fonts/roboto
media-libs/libglvnd[X?]
>=media-libs/freetype-2.10.1
media-libs/harfbuzz:=
>=media-libs/libass-0.13.4:=
media-libs/mesa[egl(+),gbm(+)?,wayland?,X?]
>=media-libs/taglib-1.9.0
sci-libs/kissfft
virtual/libiconv
virtual/ttf-fonts
x11-libs/libdrm
$(python_gen_cond_dep '
dev-python/pillow[${PYTHON_USEDEP}]
dev-python/pycryptodome[${PYTHON_USEDEP}]
')
airplay? (
>=app-pda/libplist-2.0.0:=
net-libs/shairplay
)
alsa? (
>=media-libs/alsa-lib-1.1.4.1
)
bluetooth? (
net-wireless/bluez:=
)
bluray? (
>=media-libs/libbluray-1.1.2:=
)
caps? (
sys-libs/libcap
)
cec? (
>=dev-libs/libcec-4.0[-cubox,raspberry-pi?]
)
dbus? (
sys-apps/dbus
)
gbm? (
>=dev-libs/libinput-1.10.5:=
x11-libs/libxkbcommon
)
gles? (
!raspberry-pi? (
media-libs/mesa[gles2]
)
)
!gles? (
media-libs/glu
)
lcms? (
>=media-libs/lcms-2.10:2
)
libusb? (
virtual/libusb:1
)
lirc? (
app-misc/lirc
)
mariadb? (
dev-db/mariadb-connector-c:=
)
mysql? (
dev-db/mysql-connector-c:=
)
nfs? (
>=net-fs/libnfs-2.0.0:=
)
pipewire? (
>=media-video/pipewire-0.3.24:=
)
pulseaudio? (
media-libs/libpulse
)
raspberry-pi? (
|| (
media-libs/raspberrypi-userland
media-libs/raspberrypi-userland-bin
media-libs/mesa[gles2,video_cards_vc4]
)
)
samba? (
>=net-fs/samba-3.4.6[smbclient(+)]
)
system-ffmpeg? (
media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?]
)
!system-ffmpeg? (
app-arch/bzip2
media-libs/dav1d:=
)
udf? (
>=dev-libs/libudfread-1.0.0
)
udev? (
virtual/libudev:=
)
vaapi? (
media-libs/libva:=[wayland?,X?]
)
vdpau? (
|| (
>=x11-libs/libvdpau-1.1
>=x11-drivers/nvidia-drivers-180.51
)
)
wayland? (
>=x11-libs/libxkbcommon-0.4.1[wayland]
)
webserver? (
>=net-libs/libmicrohttpd-0.9.55:=[messages(+)]
)
X? (
x11-libs/libX11
x11-libs/libXext
x11-libs/libXrandr
)
xslt? (
dev-libs/libxslt
>=dev-libs/libxml2-2.9.4
)
zeroconf? (
net-dns/avahi[dbus]
)
"
RDEPEND="
${COMMON_DEPEND}
${COMMON_TARGET_DEPEND}
"
DEPEND="
${COMMON_DEPEND}
${COMMON_TARGET_DEPEND}
dev-libs/rapidjson
test? (
>=dev-cpp/gtest-1.10.0
)
wayland? (
>=dev-libs/wayland-protocols-1.7
)
X? (
x11-base/xorg-proto
x11-libs/libXrender
)
"
BDEPEND="
${COMMON_DEPEND}
dev-build/cmake
dev-lang/swig
virtual/pkgconfig
<=virtual/jre-17:*
doc? (
app-text/doxygen
)
"
# bug #544020
CONFIG_CHECK="~IP_MULTICAST"
ERROR_IP_MULTICAST="
In some cases Kodi needs to access multicast addresses.
Please consider enabling IP_MULTICAST under Networking options.
"
PATCHES=(
"${FILESDIR}"/${P}-VideoPlayerAudio-invalidate-previous-sync-type-after-Audio.patch
"${FILESDIR}"/${P}-CDVDInputStreamFile-use-64K-read-chunk-size-when-filesystem.patch
"${FILESDIR}"/${P}-swig-4.2.patch
"${FILESDIR}"/${P}-binutils-2.41.patch
)
pkg_setup() {
check_extra_config
java-pkg-2_pkg_setup
python-single-r1_pkg_setup
}
src_unpack() {
if [[ ${PV} == *9999 ]] ; then
git-r3_src_unpack
else
unpack ${MY_P}.tar.gz
fi
}
src_prepare() {
cmake_src_prepare
# avoid long delays when powerkit isn't running #348580
sed -i \
-e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \
xbmc/platform/linux/*.cpp || die
# Add all possible names for kissfft libraries
for datatype in {float,int16,int32,simd}; do
sed -i \
-e "s/\(find_library(KISSFFT_LIBRARY NAMES .*\)/\1 kissfft-${datatype} kissfft-${datatype}-openmp/" \
cmake/modules/FindKissFFT.cmake || die
done
if use system-ffmpeg; then
eapply "${FILESDIR}"/${P}-ffmpeg5.patch
eapply "${FILESDIR}"/${P}-ffmpeg6.patch
eapply "${FILESDIR}"/${P}-fix-crash-in-avcodec_parameters_from_context.patch
eapply "${FILESDIR}"/${P}-smart_ptr-and-custom-destructor-for-AVCodecParameters.patch
fi
}
src_configure() {
local mycmakeargs=(
-Wno-dev # less noise
-DAPP_RENDER_SYSTEM=$(usex gles gles gl)
-DCORE_PLATFORM_NAME=$(usev gbm)$(usev wayland)$(usev X x11)
-Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
-DENABLE_TESTING=$(usex test)
-DVERBOSE=ON
# Enforce use of configured python interpeter
-DPYTHON_PATH=$(python_get_library_path)
-DPYTHON_VER=${EPYTHON##python} # wont work for pypy
# Toolchain
-DENABLE_CCACHE=OFF
-DENABLE_CLANGFORMAT=OFF
-DENABLE_CLANGTIDY=OFF
-DENABLE_CPPCHECK=OFF
-DENABLE_INCLUDEWHATYOUUSE=OFF
# https://bugs.gentoo.org/show_bug.cgi?id=606124
-DENABLE_GOLD=OFF
-DENABLE_LLD=OFF
-DENABLE_MOLD=OFF
-DUSE_LTO=OFF
# Features
-DENABLE_AIRTUNES=$(usex airplay)
-DENABLE_ALSA=$(usex alsa)
-DENABLE_AVAHI=$(usex zeroconf)
-DENABLE_BLUETOOTH=$(usex bluetooth)
-DENABLE_BLURAY=$(usex bluray)
-DENABLE_CAP=$(usex caps)
-DENABLE_CEC=$(usex cec)
-DENABLE_DBUS=$(usex dbus)
-DENABLE_DVDCSS=$(usex css)
-DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra staff in 'src_install()'
-DENABLE_ISO9660PP=$(usex optical)
-DENABLE_LCMS2=$(usex lcms)
-DENABLE_LIRCCLIENT=$(usex lirc)
-DENABLE_MARIADBCLIENT=$(usex mariadb)
-DENABLE_MDNS=OFF # used only on Android
-DENABLE_MICROHTTPD=$(usex webserver)
-DENABLE_MYSQLCLIENT=$(usex mysql)
-DENABLE_NFS=$(usex nfs)
-DENABLE_OPENGL=$(usex !gles)
-DENABLE_OPENGLES=$(usex gles)
-DENABLE_OPTICAL=$(usex optical)
-DENABLE_PIPEWIRE=$(usex pipewire)
-DENABLE_PLIST=$(usex airplay)
-DENABLE_PULSEAUDIO=$(usex pulseaudio)
-DENABLE_SMBCLIENT=$(usex samba)
-DENABLE_SNDIO=OFF
-DENABLE_UDEV=$(usex udev)
-DENABLE_UDFREAD=$(usex udf)
-DENABLE_UPNP=$(usex upnp)
-DENABLE_VAAPI=$(usex vaapi)
-DENABLE_VDPAU=$(usex vdpau)
-DENABLE_XSLT=$(usex xslt)
#To bundle or not
-DENABLE_INTERNAL_CROSSGUID=OFF
-DENABLE_INTERNAL_DAV1D=OFF
-DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)"
-DENABLE_INTERNAL_FLATBUFFERS=OFF
-DENABLE_INTERNAL_FMT=OFF
-DENABLE_INTERNAL_FSTRCMP=OFF
-DENABLE_INTERNAL_GTEST=OFF
-DENABLE_INTERNAL_KISSFFT=OFF
-DENABLE_INTERNAL_PCRE=OFF
-DENABLE_INTERNAL_RapidJSON=OFF
-DENABLE_INTERNAL_SPDLOG=OFF
-DENABLE_INTERNAL_TAGLIB=OFF
-DENABLE_INTERNAL_UDFREAD=OFF
-DWITH_FFMPEG=$(usex system-ffmpeg)
-Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz"
-Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz"
)
# Separated to avoid "Manually-specified variables were not used by the project:"
use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" )
use !system-ffmpeg && mycmakeargs+=(
-DFFMPEG_URL="${DISTDIR}/ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}-${FFMPEG_KODI_VERSION}.tar.gz"
)
use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF )
use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) )
use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON )
for flag in ${CPU_FLAGS[@]} ; do
local name=${flag#cpu_flags_*_}
mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) )
done
if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then
# Kodi requires one of the 'NDEBUG' or '_DEBUG' defines
append-cflags -DNDEBUG
append-cxxflags -DNDEBUG
fi
# Violates ODR (bug #860984) and USE_LTO does spooky stuff
# https://github.com/xbmc/xbmc/commit/cb72a22d54a91845b1092c295f84eeb48328921e
filter-lto
cmake_src_configure
}
src_compile() {
cmake_src_compile all
use doc && cmake_build doc
use test && cmake_build kodi-test
}
src_test() {
local -x CMAKE_SKIP_TESTS=(
# Known failing, unreliable test
# bug #743938
TestCPUInfo.GetCPUFrequency
# Test failure stemming from sci-libs/kissfft
# The difference between output[2i] and (i==freq1?1.0:0.0) is inf, which exceeds 1e-7, where output[2i]
# evaluates to inf,(i==freq1?1.0:0.0) evaluates to 0, and 1e-7 evaluates to 9.9999999999999995e-08.
TestRFFT.SimpleSignal
# bug #779184
# https://github.com/xbmc/xbmc/issues/18594
$(usev x86 TestDateTime.SetFromDBTime)
)
# see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213
local -x KODI_HOME="${BUILD_DIR}"
cmake_src_test
}
src_install() {
cmake_src_install
# bug #457588
pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin
newicon media/icon48x48.png kodi.png
rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die
dosym ../../../../fonts/roboto/Roboto-Thin.ttf \
usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf
if use !eventclients ; then
rm -f "${ED}"/usr/bin/kodi-ps3remote || die
rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die
rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die
rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die
rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die
fi
python_optimize "${D}$(python_get_sitedir)"
einstalldocs
use doc && dodoc -r "${S}"/docs/html/
}
pkg_postinst() {
xdg_pkg_postinst
if use dbus ; then
optfeature "getting battery level and active power source" sys-power/upower
optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd
optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2
fi
}

View File

@@ -1,490 +0,0 @@
# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# FFmpeg can be unbundled, but is currently stuck at a very old version.
# libdvd{css,read,nav} are not unbundlable without patching the buildsystem.
# Versions for the forked projects that are bundled
# See tools/depends/target/<project>/<project>-VERSION
APACHE_COMMONS_LANG_VERSION="3.14.0"
APACHE_COMMONS_TEXT_VERSION="1.11.0"
FFMPEG_VERSION="6.0.1"
GROOVY_VERSION="4.0.16"
LIBDVDCSS_VERSION="1.4.3-Next-Nexus-Alpha2-2"
LIBDVDREAD_VERSION="6.1.3-Next-Nexus-Alpha2-2"
LIBDVDNAV_VERSION="6.1.1-Next-Nexus-Alpha2-2"
CODENAME="Omega"
# Doesn't build with jdk-21
_JAVA_PKG_WANT_BUILD_VM=( {openjdk{,-jre},icedtea}{,-bin}-{8,11,17} )
JAVA_PKG_WANT_BUILD_VM=${_JAVA_PKG_WANT_BUILD_VM[@]}
# Required to be set, but not used.
JAVA_PKG_WANT_SOURCE="17"
JAVA_PKG_WANT_TARGET="17"
PYTHON_REQ_USE="sqlite,ssl"
PYTHON_COMPAT=( python3_{10..12} )
CPU_FLAGS="cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon"
inherit cmake desktop flag-o-matic java-pkg-2 linux-info optfeature pax-utils python-single-r1 xdg
DESCRIPTION="A free and open source media-player and entertainment hub"
HOMEPAGE="https://kodi.tv/"
SRC_URI="
http://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-${GROOVY_VERSION}.zip
-> apache-groovy-binary-${GROOVY_VERSION}.zip
http://mirrors.kodi.tv/build-deps/sources/commons-lang3-${APACHE_COMMONS_LANG_VERSION}-bin.tar.gz
-> commons-lang3-${APACHE_COMMONS_LANG_VERSION}-bin.tar.gz
http://mirrors.kodi.tv/build-deps/sources/commons-text-${APACHE_COMMONS_TEXT_VERSION}-bin.tar.gz
-> commons-text-${APACHE_COMMONS_TEXT_VERSION}-bin.tar.gz
https://github.com/xbmc/libdvdnav/archive/${LIBDVDNAV_VERSION}.tar.gz
-> libdvdnav-${LIBDVDNAV_VERSION}.tar.gz
https://github.com/xbmc/libdvdread/archive/${LIBDVDREAD_VERSION}.tar.gz
-> libdvdread-${LIBDVDREAD_VERSION}.tar.gz
css? (
https://github.com/xbmc/libdvdcss/archive/${LIBDVDCSS_VERSION}.tar.gz
-> libdvdcss-${LIBDVDCSS_VERSION}.tar.gz
)
!system-ffmpeg? (
https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz
-> ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}.tar.gz
)
"
if [[ ${PV} == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/xbmc/xbmc.git"
if [[ ${PV} != "9999" ]]; then
EGIT_BRANCH="${CODENAME}"
fi
inherit git-r3
else
MY_PV=${PV/_p/_r}
MY_PV=${MY_PV/_alpha/a}
MY_PV=${MY_PV/_beta/b}
MY_PV=${MY_PV/_rc/RC}
MY_PV="${MY_PV}-${CODENAME}"
MY_P="${PN}-${MY_PV}"
SRC_URI+=" https://github.com/xbmc/xbmc/archive/${MY_PV}.tar.gz -> ${MY_P}.tar.gz"
KEYWORDS="~amd64 ~arm ~arm64 ~x86"
S=${WORKDIR}/xbmc-${MY_PV}
fi
LICENSE="GPL-2+"
SLOT="0"
# use flag is called libusb so that it doesn't fool people in thinking that
# it is _required_ for USB support. Otherwise they'll disable udev and
# that's going to be worse.
IUSE="airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio raspberry-pi samba system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf ${CPU_FLAGS}"
REQUIRED_USE="
${PYTHON_REQUIRED_USE}
^^ ( gbm wayland X )
?? ( mariadb mysql )
bluray? ( udf )
gbm? ( udev )
udev? ( !libusb )
vdpau? ( X !gles !gbm )
zeroconf? ( dbus )
"
RESTRICT="!test? ( test )"
# dev-libs/libcec[-cubox] bug #818262
COMMON_DEPEND="
>=dev-libs/flatbuffers-1.12.0:=
>=dev-libs/lzo-2.04:2
media-libs/giflib:=
>=media-libs/libjpeg-turbo-2.0.4:=
>=media-libs/libpng-1.6.26:0=
wayland? (
dev-cpp/waylandpp:=
)
"
COMMON_TARGET_DEPEND="${PYTHON_DEPS}
>=net-misc/curl-7.68.0[http2]
>=sys-libs/zlib-1.2.11
dev-db/sqlite:3
dev-libs/crossguid
>=dev-libs/fribidi-1.0.5
>=dev-libs/libcdio-2.1.0:=[cxx]
>=dev-libs/libfmt-6.1.2:=
dev-libs/libfstrcmp
dev-libs/libpcre[cxx]
>=dev-libs/openssl-1.1.1k:0=
>=dev-libs/spdlog-1.5.0:=
dev-libs/tinyxml[stl]
>=dev-libs/tinyxml2-9.0.0:=
media-fonts/roboto
media-libs/libglvnd[X?]
>=media-libs/freetype-2.10.1
media-libs/harfbuzz:=
>=media-libs/libass-0.13.4:=
media-libs/mesa[egl(+),gbm(+)?,wayland?,X?]
>=media-libs/taglib-1.9.0
sci-libs/kissfft
virtual/libiconv
virtual/ttf-fonts
x11-libs/libdrm
$(python_gen_cond_dep '
dev-python/pillow[${PYTHON_USEDEP}]
dev-python/pycryptodome[${PYTHON_USEDEP}]
')
airplay? (
>=app-pda/libplist-2.0.0:=
net-libs/shairplay
)
alsa? (
>=media-libs/alsa-lib-1.1.4.1
)
bluetooth? (
net-wireless/bluez:=
)
bluray? (
>=media-libs/libbluray-1.1.2:=
)
caps? (
sys-libs/libcap
)
cec? (
>=dev-libs/libcec-4.0[-cubox,raspberry-pi?]
)
dbus? (
sys-apps/dbus
)
gbm? (
>=dev-libs/libinput-1.10.5:=
x11-libs/libxkbcommon
)
gles? (
!raspberry-pi? (
media-libs/mesa[gles2]
)
)
!gles? (
media-libs/glu
)
lcms? (
>=media-libs/lcms-2.10:2
)
libusb? (
virtual/libusb:1
)
lirc? (
app-misc/lirc
)
mariadb? (
dev-db/mariadb-connector-c:=
)
mysql? (
dev-db/mysql-connector-c:=
)
nfs? (
>=net-fs/libnfs-2.0.0:=
)
pipewire? (
>=media-video/pipewire-0.3.24:=
)
pulseaudio? (
media-libs/libpulse
)
raspberry-pi? (
|| (
media-libs/raspberrypi-userland
media-libs/raspberrypi-userland-bin
media-libs/mesa[gles2,video_cards_vc4]
)
)
samba? (
>=net-fs/samba-3.4.6[smbclient(+)]
)
system-ffmpeg? (
media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?]
)
!system-ffmpeg? (
app-arch/bzip2
media-libs/dav1d:=
)
udf? (
>=dev-libs/libudfread-1.0.0
)
udev? (
virtual/libudev:=
)
vaapi? (
media-libs/libva:=[wayland?,X?]
)
vdpau? (
|| (
>=x11-libs/libvdpau-1.1
>=x11-drivers/nvidia-drivers-180.51
)
)
wayland? (
>=x11-libs/libxkbcommon-0.4.1[wayland]
)
webserver? (
>=net-libs/libmicrohttpd-0.9.55:=[messages(+)]
)
X? (
x11-libs/libX11
x11-libs/libXext
x11-libs/libXrandr
)
xslt? (
dev-libs/libxslt
>=dev-libs/libxml2-2.9.4
)
zeroconf? (
net-dns/avahi[dbus]
)
"
RDEPEND="
${COMMON_DEPEND}
${COMMON_TARGET_DEPEND}
"
DEPEND="
${COMMON_DEPEND}
${COMMON_TARGET_DEPEND}
dev-libs/rapidjson
test? (
>=dev-cpp/gtest-1.10.0
)
wayland? (
>=dev-libs/wayland-protocols-1.7
)
X? (
x11-base/xorg-proto
x11-libs/libXrender
)
"
BDEPEND="
${COMMON_DEPEND}
dev-build/cmake
dev-lang/swig
virtual/pkgconfig
<=virtual/jre-17:*
doc? (
app-text/doxygen
)
"
# bug #544020
CONFIG_CHECK="~IP_MULTICAST"
ERROR_IP_MULTICAST="
In some cases Kodi needs to access multicast addresses.
Please consider enabling IP_MULTICAST under Networking options.
"
PATCHES=(
"${FILESDIR}/${P}-fix-head-use-after-free.patch"
)
pkg_setup() {
check_extra_config
java-pkg-2_pkg_setup
python-single-r1_pkg_setup
}
src_unpack() {
if [[ ${PV} == *9999 ]] ; then
git-r3_src_unpack
else
unpack ${MY_P}.tar.gz
fi
unpack apache-groovy-binary-${GROOVY_VERSION}.zip
unpack commons-lang3-${APACHE_COMMONS_LANG_VERSION}-bin.tar.gz
unpack commons-text-${APACHE_COMMONS_TEXT_VERSION}-bin.tar.gz
}
src_prepare() {
cmake_src_prepare
# avoid long delays when powerkit isn't running #348580
sed -i \
-e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \
xbmc/platform/linux/*.cpp || die
# Add all possible names for kissfft libraries
for datatype in {float,int16,int32,simd}; do
sed -i \
-e "s/\(find_library(KISSFFT_LIBRARY NAMES .*\)/\1 kissfft-${datatype} kissfft-${datatype}-openmp/" \
cmake/modules/FindKissFFT.cmake || die
done
}
src_configure() {
local mycmakeargs=(
-Wno-dev # less noise
-DAPP_RENDER_SYSTEM=$(usex gles gles gl)
-DCORE_PLATFORM_NAME=$(usev gbm)$(usev wayland)$(usev X x11)
-Ddocdir="${EPREFIX}/usr/share/doc/${PF}"
-DENABLE_TESTING=$(usex test)
-DVERBOSE=ON
# Enforce use of configured python interpeter
-DPYTHON_PATH=$(python_get_library_path)
-DPYTHON_VER=${EPYTHON##python} # wont work for pypy
# Toolchain
-DENABLE_CCACHE=OFF
-DENABLE_CLANGFORMAT=OFF
-DENABLE_CLANGTIDY=OFF
-DENABLE_CPPCHECK=OFF
-DENABLE_INCLUDEWHATYOUUSE=OFF
# https://bugs.gentoo.org/show_bug.cgi?id=606124
-DENABLE_GOLD=OFF
-DENABLE_LLD=OFF
-DENABLE_MOLD=OFF
-DUSE_LTO=OFF
# Features
-DENABLE_AIRTUNES=$(usex airplay)
-DENABLE_ALSA=$(usex alsa)
-DENABLE_AVAHI=$(usex zeroconf)
-DENABLE_BLUETOOTH=$(usex bluetooth)
-DENABLE_BLURAY=$(usex bluray)
-DENABLE_CAP=$(usex caps)
-DENABLE_CEC=$(usex cec)
-DENABLE_DBUS=$(usex dbus)
-DENABLE_DVDCSS=$(usex css)
-DENABLE_EVENTCLIENTS=ON # alway enable to have 'kodi-send' and filter extra staff in 'src_install()'
-DENABLE_ISO9660PP=$(usex optical)
-DENABLE_LCMS2=$(usex lcms)
-DENABLE_LIRCCLIENT=$(usex lirc)
-DENABLE_MARIADBCLIENT=$(usex mariadb)
-DENABLE_MDNS=OFF # used only on Android
-DENABLE_MICROHTTPD=$(usex webserver)
-DENABLE_MYSQLCLIENT=$(usex mysql)
-DENABLE_NFS=$(usex nfs)
-DENABLE_OPENGL=$(usex !gles)
-DENABLE_OPENGLES=$(usex gles)
-DENABLE_OPTICAL=$(usex optical)
-DENABLE_PIPEWIRE=$(usex pipewire)
-DENABLE_PLIST=$(usex airplay)
-DENABLE_PULSEAUDIO=$(usex pulseaudio)
-DENABLE_SMBCLIENT=$(usex samba)
-DENABLE_SNDIO=OFF
-DENABLE_UDEV=$(usex udev)
-DENABLE_UDFREAD=$(usex udf)
-DENABLE_UPNP=$(usex upnp)
-DENABLE_VAAPI=$(usex vaapi)
-DENABLE_VDPAU=$(usex vdpau)
-DENABLE_XSLT=$(usex xslt)
#To bundle or not
-DENABLE_INTERNAL_CROSSGUID=OFF
-DENABLE_INTERNAL_DAV1D=OFF
-DENABLE_INTERNAL_FFMPEG="$(usex !system-ffmpeg)"
-DENABLE_INTERNAL_FLATBUFFERS=OFF
-DENABLE_INTERNAL_FMT=OFF
-DENABLE_INTERNAL_FSTRCMP=OFF
-DENABLE_INTERNAL_GTEST=OFF
-DENABLE_INTERNAL_KISSFFT=OFF
-DENABLE_INTERNAL_PCRE=OFF
-DENABLE_INTERNAL_RapidJSON=OFF
-DENABLE_INTERNAL_SPDLOG=OFF
-DENABLE_INTERNAL_TAGLIB=OFF
-DENABLE_INTERNAL_UDFREAD=OFF
-DWITH_FFMPEG=$(usex system-ffmpeg)
-Dlibdvdnav_URL="${DISTDIR}/libdvdnav-${LIBDVDNAV_VERSION}.tar.gz"
-Dlibdvdread_URL="${DISTDIR}/libdvdread-${LIBDVDREAD_VERSION}.tar.gz"
-Dgroovy_SOURCE_DIR="${WORKDIR}/groovy-${GROOVY_VERSION}"
-Dapache-commons-lang_SOURCE_DIR="${WORKDIR}/commons-lang3-${APACHE_COMMONS_LANG_VERSION}"
-Dapache-commons-text_SOURCE_DIR="${WORKDIR}/commons-text-${APACHE_COMMONS_TEXT_VERSION}"
)
# Separated to avoid "Manually-specified variables were not used by the project:"
use css && mycmakeargs+=( -Dlibdvdcss_URL="${DISTDIR}/libdvdcss-${LIBDVDCSS_VERSION}.tar.gz" )
use !system-ffmpeg && mycmakeargs+=(
-DFFMPEG_URL="${DISTDIR}/ffmpeg-${PN}-${FFMPEG_VERSION}-${CODENAME}.tar.gz"
)
use nfs && mycmakeargs+=( -DENABLE_INTERNAL_NFS=OFF )
use !udev && mycmakeargs+=( -DENABLE_LIBUSB=$(usex libusb) )
use X && use !gles && mycmakeargs+=( -DENABLE_GLX=ON )
for flag in ${CPU_FLAGS[@]} ; do
local name=${flag#cpu_flags_*_}
mycmakeargs+=( -DENABLE_${name^^}=$(usex ${flag}) )
done
if ! is-flag -DNDEBUG && ! is-flag -D_DEBUG ; then
# Kodi requires one of the 'NDEBUG' or '_DEBUG' defines
append-cflags -DNDEBUG
append-cxxflags -DNDEBUG
fi
# Violates ODR (bug #860984) and USE_LTO does spooky stuff
# https://github.com/xbmc/xbmc/commit/cb72a22d54a91845b1092c295f84eeb48328921e
filter-lto
cmake_src_configure
}
src_compile() {
cmake_src_compile all
use doc && cmake_build doc
use test && cmake_build kodi-test
}
src_test() {
local -x CMAKE_SKIP_TESTS=(
# Known failing, unreliable test
# bug #743938
TestCPUInfo.GetCPUFrequency
# Test failure stemming from sci-libs/kissfft
# The difference between output[2i] and (i==freq1?1.0:0.0) is inf, which exceeds 1e-7, where output[2i]
# evaluates to inf,(i==freq1?1.0:0.0) evaluates to 0, and 1e-7 evaluates to 9.9999999999999995e-08.
TestRFFT.SimpleSignal
# bug #779184
# https://github.com/xbmc/xbmc/issues/18594
$(usev x86 TestDateTime.SetFromDBTime)
)
# see https://github.com/xbmc/xbmc/issues/17860#issuecomment-630120213
local -x KODI_HOME="${BUILD_DIR}"
cmake_src_test
}
src_install() {
cmake_src_install
# bug #457588
pax-mark Em "${ED}"/usr/$(get_libdir)/${PN}/${PN}.bin
newicon media/icon48x48.png kodi.png
rm "${ED}"/usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf || die
dosym ../../../../fonts/roboto/Roboto-Thin.ttf \
usr/share/kodi/addons/skin.estuary/fonts/Roboto-Thin.ttf
if use !eventclients ; then
rm -f "${ED}"/usr/bin/kodi-ps3remote || die
rm -f "${D}"$(python_get_sitedir)/kodi/ps3_remote.py || die
rm -rf "${D}"$(python_get_sitedir)/kodi/ps3 || die
rm -rf "${D}"$(python_get_sitedir)/kodi/bt || die
rm -rf "${ED}"/usr/share/doc/${PF}/kodi-eventclients-dev || die
fi
python_optimize "${D}$(python_get_sitedir)"
einstalldocs
use doc && dodoc -r "${S}"/docs/html/
}
pkg_postinst() {
xdg_pkg_postinst
if use dbus ; then
optfeature "getting battery level and active power source" sys-power/upower
optfeature "control of shutdown, reboot, suspend, and hibernate" sys-auth/elogind sys-apps/systemd
optfeature "storage management support (automounting, volume monitoring, etc)" sys-fs/udisks:2
fi
}

View File

@@ -12,5 +12,5 @@ REQUIRED_USE=|| ( python_targets_python3_10 python_targets_python3_11 )
RESTRICT=!test? ( test ) RESTRICT=!test? ( test )
SLOT=0 SLOT=0
SRC_URI=mirror://pypi/f/ftfy/ftfy-6.0.3.tar.gz SRC_URI=mirror://pypi/f/ftfy/ftfy-6.0.3.tar.gz
_eclasses_=distutils-r1 d9a9242b3972ef569e740451da4b90e1 eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-r1 8a28fa6d3e3bc96ff8a7eff2badbe71f python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 _eclasses_=distutils-r1 a9e13d91cb9541a054827cb1d957a660 eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-r1 8a28fa6d3e3bc96ff8a7eff2badbe71f python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084
_md5_=b7cfb825a0a318bec12e24ea803f8c3c _md5_=b7cfb825a0a318bec12e24ea803f8c3c

View File

@@ -11,5 +11,5 @@ RDEPEND=dev-python/beautifulsoup:4 >=dev-python/requests-2.6.0 python_targets_py
REQUIRED_USE=|| ( python_targets_python3_10 python_targets_python3_11 ) REQUIRED_USE=|| ( python_targets_python3_10 python_targets_python3_11 )
SLOT=0 SLOT=0
SRC_URI=mirror://pypi/w/wikipedia/wikipedia-1.4.0.tar.gz SRC_URI=mirror://pypi/w/wikipedia/wikipedia-1.4.0.tar.gz
_eclasses_=distutils-r1 d9a9242b3972ef569e740451da4b90e1 eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-r1 8a28fa6d3e3bc96ff8a7eff2badbe71f python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 _eclasses_=distutils-r1 a9e13d91cb9541a054827cb1d957a660 eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-r1 8a28fa6d3e3bc96ff8a7eff2badbe71f python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084
_md5_=2ae98751637b95e93bd334082f17701b _md5_=2ae98751637b95e93bd334082f17701b

View File

@@ -11,5 +11,5 @@ LICENSE=LGPL-2+
RDEPEND=>x11-libs/gdk-pixbuf-2.22.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >media-libs/libwebp-0.4.3:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?] RDEPEND=>x11-libs/gdk-pixbuf-2.22.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?] >media-libs/libwebp-0.4.3:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_s390_32(-)?,abi_s390_64(-)?]
SLOT=0 SLOT=0
SRC_URI=https://github.com/aruiz/webp-pixbuf-loader/archive/0.2.7.tar.gz -> gdk-pixbuf-loader-webp-0.2.7.tar.gz SRC_URI=https://github.com/aruiz/webp-pixbuf-loader/archive/0.2.7.tar.gz -> gdk-pixbuf-loader-webp-0.2.7.tar.gz
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson 92696988eaddba122c4cedc191f59bcb meson-multilib 8989922d980e5e870cc3de949d1b2586 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multilib-build e8aed98bd43dbd25694310a660ad562c multilib-minimal 4b0f1857965db8869a729948d5277e0b multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson aecae905c2e0c201d7925fae52a5576d meson-multilib 8989922d980e5e870cc3de949d1b2586 multibuild d67e78a235f541871c7dfe4cf7931489 multilib c19072c3cd7ac5cb21de013f7e9832e0 multilib-build e8aed98bd43dbd25694310a660ad562c multilib-minimal 4b0f1857965db8869a729948d5277e0b multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 out-of-source-utils 1a9007554652a6e627edbccb3c25a439 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=e819167fdcfa35449128b68ffcdfab0c _md5_=e819167fdcfa35449128b68ffcdfab0c

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,16 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test unpack
DEPEND=dev-libs/expat =media-tv/kodi-20* test? ( dev-cpp/gtest )
DESCRIPTION=Kodi's Adaptive inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.adaptive.git
INHERIT=kodi-addon
IUSE=test
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=dev-libs/expat =media-tv/kodi-20*
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.adaptive/archive/20.3.18-Nexus.tar.gz -> kodi-inputstream-adaptive-20.3.18.tar.gz https://github.com/xbmc/Bento4/archive/1.6.0-639-7-Omega.tar.gz -> bento4-1.6.0-639-7-Omega.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=0303c85744d05d68de2b08c3c26835ff

View File

@@ -1,16 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test unpack
DEPEND=dev-libs/expat dev-libs/pugixml =media-tv/kodi-21* test? ( dev-cpp/gtest )
DESCRIPTION=Kodi's Adaptive inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.adaptive.git
INHERIT=kodi-addon
IUSE=test
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=dev-libs/expat dev-libs/pugixml =media-tv/kodi-21*
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.adaptive/archive/21.4.4-Omega.tar.gz -> kodi-inputstream-adaptive-21.4.4.tar.gz https://github.com/xbmc/Bento4/archive/1.6.0-641-Omega.tar.gz -> bento4-1.6.0-641-Omega.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=263c74c27022ceaee8b20b62e2eaf4cb

View File

@@ -1,14 +0,0 @@
BDEPEND=virtual/pkgconfig app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=media-video/ffmpeg:=[encode,libxml2,zlib] virtual/libiconv app-arch/bzip2 =media-tv/kodi-20*
DESCRIPTION=Kodi's FFMpeg Direct Inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.ffmpegdirect
INHERIT=kodi-addon
KEYWORDS=~amd64 ~arm ~arm64 ~x86
LICENSE=GPL-2
RDEPEND=media-video/ffmpeg:=[encode,libxml2,zlib] virtual/libiconv app-arch/bzip2 =media-tv/kodi-20*
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.ffmpegdirect/archive/20.5.0-Nexus.tar.gz -> kodi-inputstream-ffmpegdirect-20.5.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=05ff80db9c83a2f4c06a1af33e7a831b

View File

@@ -1,14 +0,0 @@
BDEPEND=virtual/pkgconfig app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=media-video/ffmpeg:=[encode,libxml2,zlib] virtual/libiconv app-arch/bzip2 =media-tv/kodi-21*
DESCRIPTION=Kodi's FFMpeg Direct Inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.ffmpegdirect
INHERIT=kodi-addon
KEYWORDS=~amd64 ~arm ~arm64 ~x86
LICENSE=GPL-2
RDEPEND=media-video/ffmpeg:=[encode,libxml2,zlib] virtual/libiconv app-arch/bzip2 =media-tv/kodi-21*
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.ffmpegdirect/archive/21.3.5-Omega.tar.gz -> kodi-inputstream-ffmpegdirect-21.3.5.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=902b1d5168235c826e9f83ddb37a89b7

View File

@@ -1,14 +0,0 @@
BDEPEND=virtual/pkgconfig app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND==media-tv/kodi-20*:= media-video/rtmpdump[ssl]
DESCRIPTION=Kodi's RTMP inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.rtmp
INHERIT=kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2+
RDEPEND==media-tv/kodi-20*:= media-video/rtmpdump[ssl]
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.rtmp/archive/20.3.0-Nexus.tar.gz -> kodi-inputstream-rtmp-20.3.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=4a062443126ffbaa4c1dbdd58fb8d24c

View File

@@ -1,14 +0,0 @@
BDEPEND=virtual/pkgconfig app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND==media-tv/kodi-21*:= media-video/rtmpdump[ssl]
DESCRIPTION=Kodi's RTMP inputstream addon
EAPI=8
HOMEPAGE=https://github.com/xbmc/inputstream.rtmp
INHERIT=kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2+
RDEPEND==media-tv/kodi-21*:= media-video/rtmpdump[ssl]
SLOT=0
SRC_URI=https://github.com/xbmc/inputstream.rtmp/archive/21.1.0-Omega.tar.gz -> kodi-inputstream-rtmp-21.1.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=26c034e40cf12e7cca545163ee9ef2e5

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND==media-tv/kodi-20* dev-libs/libpcre dev-libs/tinyxml
DESCRIPTION=Libretro compatibility layer for the Kodi Game API
EAPI=8
HOMEPAGE=https://github.com/xbmc/peripheral.joystick
INHERIT=kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND==media-tv/kodi-20* dev-libs/libpcre dev-libs/tinyxml
SLOT=0
SRC_URI=https://github.com/xbmc/peripheral.joystick/archive/20.1.0-Nexus.tar.gz -> kodi-peripheral-joystick-20.1.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=cd4bb37653976be470773720e2ea722d

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND==media-tv/kodi-20*
DESCRIPTION=Tvheadend Live TV and Radio PVR client addon for Kodi
EAPI=8
HOMEPAGE=https://github.com/kodi-pvr/pvr.hts
INHERIT=cmake kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND==media-tv/kodi-20*
SLOT=0
SRC_URI=https://github.com/kodi-pvr/pvr.hts/archive/20.7.2-Nexus.tar.gz -> kodi-pvr-hts-20.7.2.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=946a932f4e36b57cf8f384cbba3cbf2b

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND==media-tv/kodi-21*
DESCRIPTION=Tvheadend Live TV and Radio PVR client addon for Kodi
EAPI=8
HOMEPAGE=https://github.com/kodi-pvr/pvr.hts
INHERIT=cmake kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND==media-tv/kodi-21*
SLOT=0
SRC_URI=https://github.com/kodi-pvr/pvr.hts/archive/21.2.1-Omega.tar.gz -> kodi-pvr-hts-21.2.1.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=e1e1f3a767fe863b295a81332f7f6508

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=dev-libs/pugixml =media-tv/kodi-20* sys-libs/zlib
DESCRIPTION=Kodi's IPTVSimple client addon
EAPI=8
HOMEPAGE=https://github.com/kodi-pvr/pvr.iptvsimple
INHERIT=cmake kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=dev-libs/pugixml =media-tv/kodi-20* sys-libs/zlib
SLOT=0
SRC_URI=https://github.com/kodi-pvr/pvr.iptvsimple/archive/20.13.0-Nexus.tar.gz -> kodi-pvr-iptvsimple-20.13.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=a3beb97d409e66fefa2c1475a67bf517

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=dev-libs/pugixml =media-tv/kodi-21* sys-libs/zlib
DESCRIPTION=Kodi's IPTVSimple client addon
EAPI=8
HOMEPAGE=https://github.com/kodi-pvr/pvr.iptvsimple
INHERIT=cmake kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=dev-libs/pugixml =media-tv/kodi-21* sys-libs/zlib
SLOT=0
SRC_URI=https://github.com/kodi-pvr/pvr.iptvsimple/archive/21.8.3-Omega.tar.gz -> kodi-pvr-iptvsimple-21.8.3.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=831a7b25b46795e038141163ebf0daa8

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=net-libs/libssh[sftp] =media-tv/kodi-20*
DESCRIPTION=SFTP VFS addon for Kodi
EAPI=8
HOMEPAGE=https://github.com/xbmc/vfs.sftp
INHERIT=kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=net-libs/libssh[sftp] =media-tv/kodi-20*
SLOT=0
SRC_URI=https://github.com/xbmc/vfs.sftp/archive/20.1.0-Nexus.tar.gz -> kodi-vfs-sftp-20.1.0.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=226680b794c9fb334afa4d9091d91a4b

View File

@@ -1,14 +0,0 @@
BDEPEND=app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install prepare test
DEPEND=net-libs/libssh[sftp] =media-tv/kodi-21*
DESCRIPTION=SFTP VFS addon for Kodi
EAPI=8
HOMEPAGE=https://github.com/xbmc/vfs.sftp
INHERIT=kodi-addon
KEYWORDS=~amd64 ~x86
LICENSE=GPL-2
RDEPEND=net-libs/libssh[sftp] =media-tv/kodi-21*
SLOT=0
SRC_URI=https://github.com/xbmc/vfs.sftp/archive/9fe870e71a10a37f2d793b2261bac48b195f2705.tar.gz -> kodi-vfs-sftp-21.0.0_pre240219.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c flag-o-matic 288c54efeb5e2aa70775e39032695ad4 kodi-addon 6be6829ba2a8f3a3f057ac4d6fa65bd6 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=ab531bba6b31e0c7bd32df2520b314e2

View File

@@ -1,18 +0,0 @@
BDEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) dev-build/cmake dev-lang/swig virtual/pkgconfig <=virtual/jre-17:* doc? ( app-text/doxygen ) app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test unpack
DEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) python_single_target_python3_10? ( dev-lang/python:3.10[sqlite,ssl] ) python_single_target_python3_11? ( dev-lang/python:3.11[sqlite,ssl] ) >=net-misc/curl-7.68.0[http2] >=sys-libs/zlib-1.2.11 dev-db/sqlite:3 dev-libs/crossguid >=dev-libs/fribidi-1.0.5 >=dev-libs/libcdio-2.1.0:=[cxx] >=dev-libs/libfmt-6.1.2:= dev-libs/libfstrcmp dev-libs/libpcre[cxx] >=dev-libs/openssl-1.1.1k:0= >=dev-libs/spdlog-1.5.0:= dev-libs/tinyxml[stl] media-fonts/roboto media-libs/libglvnd[X?] >=media-libs/freetype-2.10.1 media-libs/harfbuzz:= >=media-libs/libass-0.13.4:= media-libs/mesa[egl(+),gbm(+)?,wayland?,X?] >=media-libs/taglib-1.9.0 sci-libs/kissfft virtual/libiconv virtual/ttf-fonts x11-libs/libdrm python_single_target_python3_10? ( dev-python/pillow[python_targets_python3_10(-)] dev-python/pycryptodome[python_targets_python3_10(-)] ) python_single_target_python3_11? ( dev-python/pillow[python_targets_python3_11(-)] dev-python/pycryptodome[python_targets_python3_11(-)] ) airplay? ( >=app-pda/libplist-2.0.0:= net-libs/shairplay ) alsa? ( >=media-libs/alsa-lib-1.1.4.1 ) bluetooth? ( net-wireless/bluez:= ) bluray? ( >=media-libs/libbluray-1.1.2:= ) caps? ( sys-libs/libcap ) cec? ( >=dev-libs/libcec-4.0[-cubox,raspberry-pi?] ) dbus? ( sys-apps/dbus ) gbm? ( >=dev-libs/libinput-1.10.5:= x11-libs/libxkbcommon ) gles? ( !raspberry-pi? ( media-libs/mesa[gles2] ) ) !gles? ( media-libs/glu ) lcms? ( >=media-libs/lcms-2.10:2 ) libusb? ( virtual/libusb:1 ) lirc? ( app-misc/lirc ) mariadb? ( dev-db/mariadb-connector-c:= ) mysql? ( dev-db/mysql-connector-c:= ) nfs? ( >=net-fs/libnfs-2.0.0:= ) pipewire? ( >=media-video/pipewire-0.3.24:= ) pulseaudio? ( media-libs/libpulse ) raspberry-pi? ( || ( media-libs/raspberrypi-userland media-libs/raspberrypi-userland-bin media-libs/mesa[gles2,video_cards_vc4] ) ) samba? ( >=net-fs/samba-3.4.6[smbclient(+)] ) system-ffmpeg? ( media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?] ) !system-ffmpeg? ( app-arch/bzip2 media-libs/dav1d:= ) udf? ( >=dev-libs/libudfread-1.0.0 ) udev? ( virtual/libudev:= ) vaapi? ( media-libs/libva:=[wayland?,X?] ) vdpau? ( || ( >=x11-libs/libvdpau-1.1 >=x11-drivers/nvidia-drivers-180.51 ) ) wayland? ( >=x11-libs/libxkbcommon-0.4.1[wayland] ) webserver? ( >=net-libs/libmicrohttpd-0.9.55:=[messages(+)] ) X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXrandr ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.9.4 ) zeroconf? ( net-dns/avahi[dbus] ) dev-libs/rapidjson test? ( >=dev-cpp/gtest-1.10.0 ) wayland? ( >=dev-libs/wayland-protocols-1.7 ) X? ( x11-base/xorg-proto x11-libs/libXrender ) >=dev-java/java-config-2.2.0-r3
DESCRIPTION=A free and open source media-player and entertainment hub
EAPI=8
HOMEPAGE=https://kodi.tv/
IDEPEND=dev-util/desktop-file-utils x11-misc/shared-mime-info
INHERIT=cmake desktop flag-o-matic java-pkg-2 linux-info optfeature pax-utils python-single-r1 xdg
IUSE=airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio raspberry-pi samba system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon python_single_target_python3_10 python_single_target_python3_11
KEYWORDS=~amd64 ~arm ~arm64 ~x86
LICENSE=GPL-2+
RDEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) python_single_target_python3_10? ( dev-lang/python:3.10[sqlite,ssl] ) python_single_target_python3_11? ( dev-lang/python:3.11[sqlite,ssl] ) >=net-misc/curl-7.68.0[http2] >=sys-libs/zlib-1.2.11 dev-db/sqlite:3 dev-libs/crossguid >=dev-libs/fribidi-1.0.5 >=dev-libs/libcdio-2.1.0:=[cxx] >=dev-libs/libfmt-6.1.2:= dev-libs/libfstrcmp dev-libs/libpcre[cxx] >=dev-libs/openssl-1.1.1k:0= >=dev-libs/spdlog-1.5.0:= dev-libs/tinyxml[stl] media-fonts/roboto media-libs/libglvnd[X?] >=media-libs/freetype-2.10.1 media-libs/harfbuzz:= >=media-libs/libass-0.13.4:= media-libs/mesa[egl(+),gbm(+)?,wayland?,X?] >=media-libs/taglib-1.9.0 sci-libs/kissfft virtual/libiconv virtual/ttf-fonts x11-libs/libdrm python_single_target_python3_10? ( dev-python/pillow[python_targets_python3_10(-)] dev-python/pycryptodome[python_targets_python3_10(-)] ) python_single_target_python3_11? ( dev-python/pillow[python_targets_python3_11(-)] dev-python/pycryptodome[python_targets_python3_11(-)] ) airplay? ( >=app-pda/libplist-2.0.0:= net-libs/shairplay ) alsa? ( >=media-libs/alsa-lib-1.1.4.1 ) bluetooth? ( net-wireless/bluez:= ) bluray? ( >=media-libs/libbluray-1.1.2:= ) caps? ( sys-libs/libcap ) cec? ( >=dev-libs/libcec-4.0[-cubox,raspberry-pi?] ) dbus? ( sys-apps/dbus ) gbm? ( >=dev-libs/libinput-1.10.5:= x11-libs/libxkbcommon ) gles? ( !raspberry-pi? ( media-libs/mesa[gles2] ) ) !gles? ( media-libs/glu ) lcms? ( >=media-libs/lcms-2.10:2 ) libusb? ( virtual/libusb:1 ) lirc? ( app-misc/lirc ) mariadb? ( dev-db/mariadb-connector-c:= ) mysql? ( dev-db/mysql-connector-c:= ) nfs? ( >=net-fs/libnfs-2.0.0:= ) pipewire? ( >=media-video/pipewire-0.3.24:= ) pulseaudio? ( media-libs/libpulse ) raspberry-pi? ( || ( media-libs/raspberrypi-userland media-libs/raspberrypi-userland-bin media-libs/mesa[gles2,video_cards_vc4] ) ) samba? ( >=net-fs/samba-3.4.6[smbclient(+)] ) system-ffmpeg? ( media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?] ) !system-ffmpeg? ( app-arch/bzip2 media-libs/dav1d:= ) udf? ( >=dev-libs/libudfread-1.0.0 ) udev? ( virtual/libudev:= ) vaapi? ( media-libs/libva:=[wayland?,X?] ) vdpau? ( || ( >=x11-libs/libvdpau-1.1 >=x11-drivers/nvidia-drivers-180.51 ) ) wayland? ( >=x11-libs/libxkbcommon-0.4.1[wayland] ) webserver? ( >=net-libs/libmicrohttpd-0.9.55:=[messages(+)] ) X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXrandr ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.9.4 ) zeroconf? ( net-dns/avahi[dbus] ) >=dev-java/java-config-2.2.0-r3
REQUIRED_USE=^^ ( python_single_target_python3_10 python_single_target_python3_11 ) ^^ ( gbm wayland X ) ?? ( mariadb mysql ) bluray? ( udf ) gbm? ( udev ) udev? ( !libusb ) vdpau? ( X !gles !gbm ) zeroconf? ( dbus )
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=https://github.com/xbmc/libdvdnav/archive/6.1.1-Next-Nexus-Alpha2-2.tar.gz -> libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz https://github.com/xbmc/libdvdread/archive/6.1.3-Next-Nexus-Alpha2-2.tar.gz -> libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz css? ( https://github.com/xbmc/libdvdcss/archive/1.4.3-Next-Nexus-Alpha2-2.tar.gz -> libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz ) !system-ffmpeg? ( https://github.com/xbmc/FFmpeg/archive/4.4.1-Nexus-Alpha1.tar.gz -> ffmpeg-kodi-4.4.1-Nexus-Alpha1.tar.gz ) https://github.com/xbmc/xbmc/archive/20.5-Nexus.tar.gz -> kodi-20.5-Nexus.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c desktop 021728fdc1b03b36357dbc89489e0f0d flag-o-matic 288c54efeb5e2aa70775e39032695ad4 java-pkg-2 b6d755b4f6afabfd933932be28b46368 java-utils-2 b346c3901e71ba37137bae0b25b00221 linux-info 7ca3057b277f1e5978947b4cc289ce62 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 optfeature 222cb475c5a4f7ae7cfb0bf510a6fe54 pax-utils 91d47e5d20627c717aa878b9167c62a8 python-single-r1 75118e916668a74c660a13b0ecb22562 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg 4a14c5c24f121e7da66e5aab4a168c6e xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=91fb8131cd8c1d7ea8785c59df64ca46

View File

@@ -1,18 +0,0 @@
BDEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) dev-build/cmake dev-lang/swig virtual/pkgconfig <=virtual/jre-17:* doc? ( app-text/doxygen ) app-alternatives/ninja >=dev-build/cmake-3.20.5
DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test unpack
DEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) python_single_target_python3_10? ( dev-lang/python:3.10[sqlite,ssl] ) python_single_target_python3_11? ( dev-lang/python:3.11[sqlite,ssl] ) python_single_target_python3_12? ( dev-lang/python:3.12[sqlite,ssl] ) >=net-misc/curl-7.68.0[http2] >=sys-libs/zlib-1.2.11 dev-db/sqlite:3 dev-libs/crossguid >=dev-libs/fribidi-1.0.5 >=dev-libs/libcdio-2.1.0:=[cxx] >=dev-libs/libfmt-6.1.2:= dev-libs/libfstrcmp dev-libs/libpcre[cxx] >=dev-libs/openssl-1.1.1k:0= >=dev-libs/spdlog-1.5.0:= dev-libs/tinyxml[stl] >=dev-libs/tinyxml2-9.0.0:= media-fonts/roboto media-libs/libglvnd[X?] >=media-libs/freetype-2.10.1 media-libs/harfbuzz:= >=media-libs/libass-0.13.4:= media-libs/mesa[egl(+),gbm(+)?,wayland?,X?] >=media-libs/taglib-1.9.0 sci-libs/kissfft virtual/libiconv virtual/ttf-fonts x11-libs/libdrm python_single_target_python3_10? ( dev-python/pillow[python_targets_python3_10(-)] dev-python/pycryptodome[python_targets_python3_10(-)] ) python_single_target_python3_11? ( dev-python/pillow[python_targets_python3_11(-)] dev-python/pycryptodome[python_targets_python3_11(-)] ) python_single_target_python3_12? ( dev-python/pillow[python_targets_python3_12(-)] dev-python/pycryptodome[python_targets_python3_12(-)] ) airplay? ( >=app-pda/libplist-2.0.0:= net-libs/shairplay ) alsa? ( >=media-libs/alsa-lib-1.1.4.1 ) bluetooth? ( net-wireless/bluez:= ) bluray? ( >=media-libs/libbluray-1.1.2:= ) caps? ( sys-libs/libcap ) cec? ( >=dev-libs/libcec-4.0[-cubox,raspberry-pi?] ) dbus? ( sys-apps/dbus ) gbm? ( >=dev-libs/libinput-1.10.5:= x11-libs/libxkbcommon ) gles? ( !raspberry-pi? ( media-libs/mesa[gles2] ) ) !gles? ( media-libs/glu ) lcms? ( >=media-libs/lcms-2.10:2 ) libusb? ( virtual/libusb:1 ) lirc? ( app-misc/lirc ) mariadb? ( dev-db/mariadb-connector-c:= ) mysql? ( dev-db/mysql-connector-c:= ) nfs? ( >=net-fs/libnfs-2.0.0:= ) pipewire? ( >=media-video/pipewire-0.3.24:= ) pulseaudio? ( media-libs/libpulse ) raspberry-pi? ( || ( media-libs/raspberrypi-userland media-libs/raspberrypi-userland-bin media-libs/mesa[gles2,video_cards_vc4] ) ) samba? ( >=net-fs/samba-3.4.6[smbclient(+)] ) system-ffmpeg? ( media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?] ) !system-ffmpeg? ( app-arch/bzip2 media-libs/dav1d:= ) udf? ( >=dev-libs/libudfread-1.0.0 ) udev? ( virtual/libudev:= ) vaapi? ( media-libs/libva:=[wayland?,X?] ) vdpau? ( || ( >=x11-libs/libvdpau-1.1 >=x11-drivers/nvidia-drivers-180.51 ) ) wayland? ( >=x11-libs/libxkbcommon-0.4.1[wayland] ) webserver? ( >=net-libs/libmicrohttpd-0.9.55:=[messages(+)] ) X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXrandr ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.9.4 ) zeroconf? ( net-dns/avahi[dbus] ) dev-libs/rapidjson test? ( >=dev-cpp/gtest-1.10.0 ) wayland? ( >=dev-libs/wayland-protocols-1.7 ) X? ( x11-base/xorg-proto x11-libs/libXrender ) >=dev-java/java-config-2.2.0-r3
DESCRIPTION=A free and open source media-player and entertainment hub
EAPI=8
HOMEPAGE=https://kodi.tv/
IDEPEND=dev-util/desktop-file-utils x11-misc/shared-mime-info
INHERIT=cmake desktop flag-o-matic java-pkg-2 linux-info optfeature pax-utils python-single-r1 xdg
IUSE=airplay alsa bluetooth bluray caps cec +css dbus doc eventclients gbm gles lcms libusb lirc mariadb mysql nfs +optical pipewire pulseaudio raspberry-pi samba system-ffmpeg test udf udev upnp vaapi vdpau wayland webserver X +xslt zeroconf cpu_flags_x86_sse cpu_flags_x86_sse2 cpu_flags_x86_sse3 cpu_flags_x86_sse4_1 cpu_flags_x86_sse4_2 cpu_flags_x86_avx cpu_flags_x86_avx2 cpu_flags_arm_neon python_single_target_python3_10 python_single_target_python3_11 python_single_target_python3_12
KEYWORDS=~amd64 ~arm ~arm64 ~x86
LICENSE=GPL-2+
RDEPEND=>=dev-libs/flatbuffers-1.12.0:= >=dev-libs/lzo-2.04:2 media-libs/giflib:= >=media-libs/libjpeg-turbo-2.0.4:= >=media-libs/libpng-1.6.26:0= wayland? ( dev-cpp/waylandpp:= ) python_single_target_python3_10? ( dev-lang/python:3.10[sqlite,ssl] ) python_single_target_python3_11? ( dev-lang/python:3.11[sqlite,ssl] ) python_single_target_python3_12? ( dev-lang/python:3.12[sqlite,ssl] ) >=net-misc/curl-7.68.0[http2] >=sys-libs/zlib-1.2.11 dev-db/sqlite:3 dev-libs/crossguid >=dev-libs/fribidi-1.0.5 >=dev-libs/libcdio-2.1.0:=[cxx] >=dev-libs/libfmt-6.1.2:= dev-libs/libfstrcmp dev-libs/libpcre[cxx] >=dev-libs/openssl-1.1.1k:0= >=dev-libs/spdlog-1.5.0:= dev-libs/tinyxml[stl] >=dev-libs/tinyxml2-9.0.0:= media-fonts/roboto media-libs/libglvnd[X?] >=media-libs/freetype-2.10.1 media-libs/harfbuzz:= >=media-libs/libass-0.13.4:= media-libs/mesa[egl(+),gbm(+)?,wayland?,X?] >=media-libs/taglib-1.9.0 sci-libs/kissfft virtual/libiconv virtual/ttf-fonts x11-libs/libdrm python_single_target_python3_10? ( dev-python/pillow[python_targets_python3_10(-)] dev-python/pycryptodome[python_targets_python3_10(-)] ) python_single_target_python3_11? ( dev-python/pillow[python_targets_python3_11(-)] dev-python/pycryptodome[python_targets_python3_11(-)] ) python_single_target_python3_12? ( dev-python/pillow[python_targets_python3_12(-)] dev-python/pycryptodome[python_targets_python3_12(-)] ) airplay? ( >=app-pda/libplist-2.0.0:= net-libs/shairplay ) alsa? ( >=media-libs/alsa-lib-1.1.4.1 ) bluetooth? ( net-wireless/bluez:= ) bluray? ( >=media-libs/libbluray-1.1.2:= ) caps? ( sys-libs/libcap ) cec? ( >=dev-libs/libcec-4.0[-cubox,raspberry-pi?] ) dbus? ( sys-apps/dbus ) gbm? ( >=dev-libs/libinput-1.10.5:= x11-libs/libxkbcommon ) gles? ( !raspberry-pi? ( media-libs/mesa[gles2] ) ) !gles? ( media-libs/glu ) lcms? ( >=media-libs/lcms-2.10:2 ) libusb? ( virtual/libusb:1 ) lirc? ( app-misc/lirc ) mariadb? ( dev-db/mariadb-connector-c:= ) mysql? ( dev-db/mysql-connector-c:= ) nfs? ( >=net-fs/libnfs-2.0.0:= ) pipewire? ( >=media-video/pipewire-0.3.24:= ) pulseaudio? ( media-libs/libpulse ) raspberry-pi? ( || ( media-libs/raspberrypi-userland media-libs/raspberrypi-userland-bin media-libs/mesa[gles2,video_cards_vc4] ) ) samba? ( >=net-fs/samba-3.4.6[smbclient(+)] ) system-ffmpeg? ( media-video/ffmpeg:=[openssl,encode,postproc,vaapi?,vdpau?,X?] ) !system-ffmpeg? ( app-arch/bzip2 media-libs/dav1d:= ) udf? ( >=dev-libs/libudfread-1.0.0 ) udev? ( virtual/libudev:= ) vaapi? ( media-libs/libva:=[wayland?,X?] ) vdpau? ( || ( >=x11-libs/libvdpau-1.1 >=x11-drivers/nvidia-drivers-180.51 ) ) wayland? ( >=x11-libs/libxkbcommon-0.4.1[wayland] ) webserver? ( >=net-libs/libmicrohttpd-0.9.55:=[messages(+)] ) X? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXrandr ) xslt? ( dev-libs/libxslt >=dev-libs/libxml2-2.9.4 ) zeroconf? ( net-dns/avahi[dbus] ) >=dev-java/java-config-2.2.0-r3
REQUIRED_USE=^^ ( python_single_target_python3_10 python_single_target_python3_11 python_single_target_python3_12 ) ^^ ( gbm wayland X ) ?? ( mariadb mysql ) bluray? ( udf ) gbm? ( udev ) udev? ( !libusb ) vdpau? ( X !gles !gbm ) zeroconf? ( dbus )
RESTRICT=!test? ( test )
SLOT=0
SRC_URI=http://mirrors.kodi.tv/build-deps/sources/apache-groovy-binary-4.0.16.zip -> apache-groovy-binary-4.0.16.zip http://mirrors.kodi.tv/build-deps/sources/commons-lang3-3.14.0-bin.tar.gz -> commons-lang3-3.14.0-bin.tar.gz http://mirrors.kodi.tv/build-deps/sources/commons-text-1.11.0-bin.tar.gz -> commons-text-1.11.0-bin.tar.gz https://github.com/xbmc/libdvdnav/archive/6.1.1-Next-Nexus-Alpha2-2.tar.gz -> libdvdnav-6.1.1-Next-Nexus-Alpha2-2.tar.gz https://github.com/xbmc/libdvdread/archive/6.1.3-Next-Nexus-Alpha2-2.tar.gz -> libdvdread-6.1.3-Next-Nexus-Alpha2-2.tar.gz css? ( https://github.com/xbmc/libdvdcss/archive/1.4.3-Next-Nexus-Alpha2-2.tar.gz -> libdvdcss-1.4.3-Next-Nexus-Alpha2-2.tar.gz ) !system-ffmpeg? ( https://ffmpeg.org/releases/ffmpeg-6.0.1.tar.gz -> ffmpeg-kodi-6.0.1-Omega.tar.gz ) https://github.com/xbmc/xbmc/archive/21.0-Omega.tar.gz -> kodi-21.0-Omega.tar.gz
_eclasses_=cmake c7c9a62d6232cac66d4ea32d575c3e7c desktop 021728fdc1b03b36357dbc89489e0f0d flag-o-matic 288c54efeb5e2aa70775e39032695ad4 java-pkg-2 b6d755b4f6afabfd933932be28b46368 java-utils-2 b346c3901e71ba37137bae0b25b00221 linux-info 7ca3057b277f1e5978947b4cc289ce62 multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 optfeature 222cb475c5a4f7ae7cfb0bf510a6fe54 pax-utils 91d47e5d20627c717aa878b9167c62a8 python-single-r1 75118e916668a74c660a13b0ecb22562 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 xdg 4a14c5c24f121e7da66e5aab4a168c6e xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=ae66643c9b2588ef722deeedcb55c32c

View File

@@ -12,5 +12,5 @@ RDEPEND=!!net-misc/ipcalc
REQUIRED_USE=?? ( geoip geoip2 ) REQUIRED_USE=?? ( geoip geoip2 )
SLOT=0 SLOT=0
SRC_URI=https://gitlab.com/ipcalc/ipcalc/-/archive/1.0.2/ipcalc-1.0.2.tar.bz2 -> ipcalc-ng-1.0.2.tar.bz2 SRC_URI=https://gitlab.com/ipcalc/ipcalc/-/archive/1.0.2/ipcalc-1.0.2.tar.bz2 -> ipcalc-ng-1.0.2.tar.bz2
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084
_md5_=7ea336f334182b323f19107fbf1c2f05 _md5_=7ea336f334182b323f19107fbf1c2f05

View File

@@ -12,5 +12,5 @@ RDEPEND=!!net-misc/ipcalc
REQUIRED_USE=?? ( geoip geoip2 ) REQUIRED_USE=?? ( geoip geoip2 )
SLOT=0 SLOT=0
SRC_URI=https://gitlab.com/ipcalc/ipcalc/-/archive/1.0.3/ipcalc-1.0.3.tar.bz2 -> ipcalc-ng-1.0.3.tar.bz2 SRC_URI=https://gitlab.com/ipcalc/ipcalc/-/archive/1.0.3/ipcalc-1.0.3.tar.bz2 -> ipcalc-ng-1.0.3.tar.bz2
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084
_md5_=01b3008cefce799e6b53b802f69c17b0 _md5_=01b3008cefce799e6b53b802f69c17b0

View File

@@ -12,5 +12,5 @@ RDEPEND=dev-libs/dbus-glib dev-libs/glib:2 || ( >=sys-auth/libfprint-1.94.0:2 >=
RESTRICT=!test? ( test ) RESTRICT=!test? ( test )
SLOT=0 SLOT=0
SRC_URI=https://gitlab.freedesktop.org/libfprint/fprintd/-/archive/v1.94.2/fprintd-v1.94.2.tar.bz2 SRC_URI=https://gitlab.freedesktop.org/libfprint/fprintd/-/archive/v1.94.2/fprintd-v1.94.2.tar.bz2
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 pam b56d0c9c20fc5b553f13c8ae165a10a5 python-any-r1 f5169813d1619761b459800587005fd2 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca systemd c8b03e8df84486aa991d4396686e8942 toolchain-funcs e56c7649b804f051623c8bc1a1c44084 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 pam b56d0c9c20fc5b553f13c8ae165a10a5 python-any-r1 f5169813d1619761b459800587005fd2 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca systemd c8b03e8df84486aa991d4396686e8942 toolchain-funcs e56c7649b804f051623c8bc1a1c44084
_md5_=b9287b0851475470122bb9628143b3df _md5_=b9287b0851475470122bb9628143b3df

View File

@@ -11,5 +11,5 @@ LICENSE=LGPL-2.1+
RDEPEND=dev-libs/glib:2 dev-libs/libgudev dev-libs/libgusb dev-libs/nss virtual/libusb:1= x11-libs/gtk+:3 x11-libs/libX11 x11-libs/libXv x11-libs/pixman !>=sys-auth/libfprint-1.90:0 RDEPEND=dev-libs/glib:2 dev-libs/libgudev dev-libs/libgusb dev-libs/nss virtual/libusb:1= x11-libs/gtk+:3 x11-libs/libX11 x11-libs/libXv x11-libs/pixman !>=sys-auth/libfprint-1.90:0
SLOT=2 SLOT=2
SRC_URI=https://gitlab.freedesktop.org/3v1n0/libfprint/-/archive/v1.94.7+tod1/libfprint-v1.94.7+tod1.tar.bz2 -> libfprint-tod-1.94.7.tar.bz2 SRC_URI=https://gitlab.freedesktop.org/3v1n0/libfprint/-/archive/v1.94.7+tod1/libfprint-v1.94.7+tod1.tar.bz2 -> libfprint-tod-1.94.7.tar.bz2
_eclasses_=eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 udev eec0bbab06977f1cfc5597269c1fa152 _eclasses_=eapi8-dosym 5ac4857ad078256d939c44f7c64197a9 flag-o-matic 288c54efeb5e2aa70775e39032695ad4 meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 udev eec0bbab06977f1cfc5597269c1fa152
_md5_=ec39cfa27f6de9e96ef97845571c176f _md5_=ec39cfa27f6de9e96ef97845571c176f

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -12,5 +12,5 @@ RDEPEND=dev-libs/appstream-glib >=dev-libs/glib-2.7:2 sys-apps/dbus >=x11-libs/g
REQUIRED_USE=gnome? ( introspection ) vala? ( introspection ) REQUIRED_USE=gnome? ( introspection ) vala? ( introspection )
SLOT=0 SLOT=0
SRC_URI=https://github.com/Keruspe/GPaste/archive/v44.1.tar.gz -> gpaste-44.1.tar.gz SRC_URI=https://github.com/Keruspe/GPaste/archive/v44.1.tar.gz -> gpaste-44.1.tar.gz
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 vala e477903dbe0105930c51f170a592dc16 xdg-utils baea6080dd821f5562d715887954c9d3 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 vala e477903dbe0105930c51f170a592dc16 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=c6014b9ebd0bbf11da8f99540bd53c11 _md5_=c6014b9ebd0bbf11da8f99540bd53c11

View File

@@ -12,5 +12,5 @@ RDEPEND=dev-libs/appstream-glib >=dev-libs/glib-2.7:2 sys-apps/dbus >=x11-libs/g
REQUIRED_USE=gnome? ( introspection ) vala? ( introspection ) REQUIRED_USE=gnome? ( introspection ) vala? ( introspection )
SLOT=0 SLOT=0
SRC_URI=https://github.com/Keruspe/GPaste/archive/v45.tar.gz -> gpaste-45.tar.gz SRC_URI=https://github.com/Keruspe/GPaste/archive/v45.tar.gz -> gpaste-45.tar.gz
_eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson 92696988eaddba122c4cedc191f59bcb multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 vala e477903dbe0105930c51f170a592dc16 xdg-utils baea6080dd821f5562d715887954c9d3 _eclasses_=flag-o-matic 288c54efeb5e2aa70775e39032695ad4 gnome2-utils 30dbce54b89e77b86f366548f94419ad meson aecae905c2e0c201d7925fae52a5576d multilib c19072c3cd7ac5cb21de013f7e9832e0 multiprocessing 30ead54fa2e2b5f9cd4e612ffc34d0fe ninja-utils 2df4e452cea39a9ec8fb543ce059f8d6 python-utils-r1 a1229a86bd0db058e474a2d7d9191cca toolchain-funcs e56c7649b804f051623c8bc1a1c44084 vala e477903dbe0105930c51f170a592dc16 xdg-utils baea6080dd821f5562d715887954c9d3
_md5_=c6014b9ebd0bbf11da8f99540bd53c11 _md5_=c6014b9ebd0bbf11da8f99540bd53c11