mirror of
https://github.com/dguglielmi/sunny-overlay.git
synced 2026-04-05 23:06:34 +02:00
Compare commits
3 Commits
01f794a375
...
f3285374c9
| Author | SHA1 | Date | |
|---|---|---|---|
|
f3285374c9
|
|||
|
2700d3c00a
|
|||
|
091efe9902
|
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
{
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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);
|
|
||||||
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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}
|
|
||||||
"
|
|
||||||
@@ -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
|
|
||||||
@@ -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}
|
|
||||||
"
|
|
||||||
@@ -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}
|
|
||||||
"
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
@@ -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)
|
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
@@ -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
@@ -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
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -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"
|
|
||||||
|
|
||||||
@@ -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;
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
|
||||||
}
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user