mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-08-02 07:27:49 +00:00
Merge pull request #3633 from MilhouseVH/le10_kodi_18.3
kodi: update to 18.3-Leia
This commit is contained in:
commit
18953c408e
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.hts"
|
PKG_NAME="pvr.hts"
|
||||||
PKG_VERSION="4.4.17-Leia"
|
PKG_VERSION="4.4.18-Leia"
|
||||||
PKG_SHA256="9036f32396d17c06b820cc4c04381c6270abad9486c14c6fde429480de4674b1"
|
PKG_SHA256="1a5ee260f0e9ca597376ca6d9014c922116a3739e1bbf53ce7de7a715b2aecfe"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.iptvsimple"
|
PKG_NAME="pvr.iptvsimple"
|
||||||
PKG_VERSION="3.5.7-Leia"
|
PKG_VERSION="3.5.8-Leia"
|
||||||
PKG_SHA256="eb1a72baaf5d0a6766214eb452c8e8635ac1d917ac621a76b70d0138c63b9341"
|
PKG_SHA256="84e985b5b31044352eaf54914c266a1775f6b7c32a6ce6a46001ddb7d1f9d7fa"
|
||||||
PKG_REV="3"
|
PKG_REV="3"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.mediaportal.tvserver"
|
PKG_NAME="pvr.mediaportal.tvserver"
|
||||||
PKG_VERSION="3.5.17-Leia"
|
PKG_VERSION="3.5.18-Leia"
|
||||||
PKG_SHA256="30a65feecd7dba8524e058e99def458933ce1ad7ff5d5215fb8baa214d542bc2"
|
PKG_SHA256="9c05578566f7448dc3a7677587c804596aa314afd493cb9c62cc65ea883645aa"
|
||||||
PKG_REV="3"
|
PKG_REV="3"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.sledovanitv.cz"
|
PKG_NAME="pvr.sledovanitv.cz"
|
||||||
PKG_VERSION="1.4.9-Leia"
|
PKG_VERSION="1.5.0-Leia"
|
||||||
PKG_SHA256="e3af803c2b69a3e5a1658c8d766fcbb882d6071be6a7acde9ffca317200783c1"
|
PKG_SHA256="6089a7b800e0338160363415a13dff8ea3d0c5c956897b2ae8ccfad7800ea176"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPLv2"
|
PKG_LICENSE="GPLv2"
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.vuplus"
|
PKG_NAME="pvr.vuplus"
|
||||||
PKG_VERSION="3.22.0-Leia"
|
PKG_VERSION="3.25.0-Leia"
|
||||||
PKG_SHA256="71acd4b2c99a351a2ae5fbb3547fa4248bb98779475ec0369421cb90ce41076b"
|
PKG_SHA256="030d1ed942e0baa651538ce0a07f55a05559a1fc6564d0a90f3fcd48cbc2f75d"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="pvr.zattoo"
|
PKG_NAME="pvr.zattoo"
|
||||||
PKG_VERSION="18.1.0-Leia"
|
PKG_VERSION="18.1.3-Leia"
|
||||||
PKG_SHA256="acea12b9a22e85316e7926cab0feb563623d19e0994feb798eb474434de49a63"
|
PKG_SHA256="1474dd13c8f4f437e198284b70db2dc46fb9e2de646b6799ffd36827639df67a"
|
||||||
PKG_REV="1"
|
PKG_REV="1"
|
||||||
PKG_ARCH="any"
|
PKG_ARCH="any"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
|
@ -13,20 +13,20 @@ PKG_PATCH_DIRS="$KODI_VENDOR"
|
|||||||
|
|
||||||
case $KODI_VENDOR in
|
case $KODI_VENDOR in
|
||||||
raspberrypi)
|
raspberrypi)
|
||||||
PKG_VERSION="newclock5_18.2rc1-Leia"
|
PKG_VERSION="newclock5_18.3-Leia"
|
||||||
PKG_SHA256="05ed821ae667b93876279fa556405976b854763c9859a3fed2c6eeb1ad51d915"
|
PKG_SHA256="7e7a89a66a1921b0fa32478277d11361b3c7a04aea88784bac668b300b182298"
|
||||||
PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz"
|
PKG_URL="https://github.com/popcornmix/xbmc/archive/$PKG_VERSION.tar.gz"
|
||||||
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
|
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
|
||||||
;;
|
;;
|
||||||
rockchip)
|
rockchip)
|
||||||
PKG_VERSION="rockchip_18.2rc1-Leia"
|
PKG_VERSION="rockchip_18.3-Leia-v2"
|
||||||
PKG_SHA256="e3275c17164f120d8b66bab5e8d62d3e5215af5e88c7bea3e391ac560e6a3e28"
|
PKG_SHA256="dfce13129aa8381a4e06cd6c0f597c6212f4230184723edf802d06ea20d5509b"
|
||||||
PKG_URL="https://github.com/kwiboo/xbmc/archive/$PKG_VERSION.tar.gz"
|
PKG_URL="https://github.com/kwiboo/xbmc/archive/$PKG_VERSION.tar.gz"
|
||||||
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
|
PKG_SOURCE_NAME="kodi-$KODI_VENDOR-$PKG_VERSION.tar.gz"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
PKG_VERSION="18.2rc1-Leia"
|
PKG_VERSION="18.3-Leia"
|
||||||
PKG_SHA256="da9f4b9be427031665ac736319aa60d4463b9cb8b27daf35c11d91fb16761422"
|
PKG_SHA256="4f265901c00f582beb8d6ad96c9c303e5ab82611e828c7121ae822b07c0915cc"
|
||||||
PKG_URL="https://github.com/xbmc/xbmc/archive/$PKG_VERSION.tar.gz"
|
PKG_URL="https://github.com/xbmc/xbmc/archive/$PKG_VERSION.tar.gz"
|
||||||
PKG_SOURCE_NAME="kodi-$PKG_VERSION.tar.gz"
|
PKG_SOURCE_NAME="kodi-$PKG_VERSION.tar.gz"
|
||||||
;;
|
;;
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
|
||||||
index 3b0d0d832d..221f48f061 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
|
||||||
@@ -243,12 +362,6 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (m_pCodecContext->pix_fmt != AV_PIX_FMT_DRM_PRIME)
|
|
||||||
- {
|
|
||||||
- CLog::Log(LOGNOTICE, "CDVDVideoCodecDRMPRIME::%s - unexpected pix fmt %s", __FUNCTION__, av_get_pix_fmt_name(m_pCodecContext->pix_fmt));
|
|
||||||
- avcodec_free_context(&m_pCodecContext);
|
|
||||||
- return false;
|
|
||||||
- }
|
|
||||||
|
|
||||||
const char* pixFmtName = av_get_pix_fmt_name(m_pCodecContext->pix_fmt);
|
|
||||||
m_processInfo.SetVideoPixelFormat(pixFmtName ? pixFmtName : "");
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
|||||||
From 4d6af620f4d6a6645229dcf3403a397dfb1a8a93 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Mon, 15 Apr 2019 16:51:09 -0700
|
|
||||||
Subject: [PATCH] CDRMUtils: rework modifiers flag selection
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/windowing/gbm/DRMUtils.cpp | 11 +++++++----
|
|
||||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
index df46ad4bdc25..8e1ec9d0dcb5 100644
|
|
||||||
--- a/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
+++ b/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
@@ -109,10 +109,13 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo)
|
|
||||||
memset(offsets, 0, 16);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- if (modifiers[0] == DRM_FORMAT_MOD_INVALID)
|
|
||||||
- modifiers[0] = DRM_FORMAT_MOD_LINEAR;
|
|
||||||
+ uint32_t flags = 0;
|
|
||||||
|
|
||||||
- CLog::Log(LOGDEBUG, "CDRMUtils::%s - using modifier: %lli", __FUNCTION__, modifiers[0]);
|
|
||||||
+ if (modifiers[0] && modifiers[0] != DRM_FORMAT_MOD_INVALID)
|
|
||||||
+ {
|
|
||||||
+ flags |= DRM_MODE_FB_MODIFIERS;
|
|
||||||
+ CLog::Log(LOGDEBUG, "CDRMUtils::{} - using modifier: {:#x}", __FUNCTION__, modifiers[0]);
|
|
||||||
+ }
|
|
||||||
|
|
||||||
auto ret = drmModeAddFB2WithModifiers(m_fd,
|
|
||||||
width,
|
|
||||||
@@ -123,7 +126,7 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo)
|
|
||||||
offsets,
|
|
||||||
modifiers,
|
|
||||||
&fb->fb_id,
|
|
||||||
- (modifiers[0] > 0) ? DRM_MODE_FB_MODIFIERS : 0);
|
|
||||||
+ flags);
|
|
||||||
|
|
||||||
if(ret)
|
|
||||||
{
|
|
@ -1,383 +0,0 @@
|
|||||||
From af01b284b158891d258b3a2617697b9779af11c5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Thu, 7 Mar 2019 15:08:24 -0800
|
|
||||||
Subject: [PATCH 1/4] CEGLFence: add class to help with EGL sync objects
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/utils/CMakeLists.txt | 6 ++--
|
|
||||||
xbmc/utils/EGLFence.cpp | 68 +++++++++++++++++++++++++++++++++++++++
|
|
||||||
xbmc/utils/EGLFence.h | 32 ++++++++++++++++++
|
|
||||||
3 files changed, 104 insertions(+), 2 deletions(-)
|
|
||||||
create mode 100644 xbmc/utils/EGLFence.cpp
|
|
||||||
create mode 100644 xbmc/utils/EGLFence.h
|
|
||||||
|
|
||||||
diff --git a/xbmc/utils/CMakeLists.txt b/xbmc/utils/CMakeLists.txt
|
|
||||||
index f0ce99014b84..6dbee35a1a60 100644
|
|
||||||
--- a/xbmc/utils/CMakeLists.txt
|
|
||||||
+++ b/xbmc/utils/CMakeLists.txt
|
|
||||||
@@ -169,8 +169,10 @@ if(XSLT_FOUND)
|
|
||||||
list(APPEND HEADERS XSLTUtils.h)
|
|
||||||
endif()
|
|
||||||
if(EGL_FOUND)
|
|
||||||
- list(APPEND SOURCES EGLUtils.cpp)
|
|
||||||
- list(APPEND HEADERS EGLUtils.h)
|
|
||||||
+ list(APPEND SOURCES EGLUtils.cpp
|
|
||||||
+ EGLFence.cpp)
|
|
||||||
+ list(APPEND HEADERS EGLUtils.h
|
|
||||||
+ EGLFence.h)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# The large map trips the clang optimizer
|
|
||||||
diff --git a/xbmc/utils/EGLFence.cpp b/xbmc/utils/EGLFence.cpp
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..55cc45c4282a
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/xbmc/utils/EGLFence.cpp
|
|
||||||
@@ -0,0 +1,68 @@
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2017-2018 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.
|
|
||||||
+ */
|
|
||||||
+
|
|
||||||
+#include "EGLFence.h"
|
|
||||||
+
|
|
||||||
+#include "EGLUtils.h"
|
|
||||||
+
|
|
||||||
+CEGLFence::CEGLFence(EGLDisplay display) :
|
|
||||||
+ m_display(display)
|
|
||||||
+{
|
|
||||||
+ m_eglCreateSyncKHR = CEGLUtils::GetRequiredProcAddress<PFNEGLCREATESYNCKHRPROC>("eglCreateSyncKHR");
|
|
||||||
+ m_eglDestroySyncKHR = CEGLUtils::GetRequiredProcAddress<PFNEGLDESTROYSYNCKHRPROC>("eglDestroySyncKHR");
|
|
||||||
+ m_eglGetSyncAttribKHR = CEGLUtils::GetRequiredProcAddress<PFNEGLGETSYNCATTRIBKHRPROC>("eglGetSyncAttribKHR");
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+bool CEGLFence::CreateFence()
|
|
||||||
+{
|
|
||||||
+ m_fence = m_eglCreateSyncKHR(m_display, EGL_SYNC_FENCE_KHR, nullptr);
|
|
||||||
+ if (m_fence == EGL_NO_SYNC_KHR)
|
|
||||||
+ {
|
|
||||||
+ CEGLUtils::LogError("failed to create egl sync fence");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void CEGLFence::DestroyFence()
|
|
||||||
+{
|
|
||||||
+ if (m_fence == EGL_NO_SYNC_KHR)
|
|
||||||
+ {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (m_eglDestroySyncKHR(m_display, m_fence) != EGL_TRUE)
|
|
||||||
+ {
|
|
||||||
+ CEGLUtils::LogError("failed to destroy egl sync fence");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ m_fence = EGL_NO_SYNC_KHR;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+bool CEGLFence::IsSignaled()
|
|
||||||
+{
|
|
||||||
+ if (m_fence == EGL_NO_SYNC_KHR)
|
|
||||||
+ {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ EGLint status = EGL_UNSIGNALED_KHR;
|
|
||||||
+ if (m_eglGetSyncAttribKHR(m_display, m_fence, EGL_SYNC_STATUS_KHR, &status) != EGL_TRUE)
|
|
||||||
+ {
|
|
||||||
+ CEGLUtils::LogError("failed to query egl sync fence");
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (status == EGL_SIGNALED_KHR)
|
|
||||||
+ {
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
diff --git a/xbmc/utils/EGLFence.h b/xbmc/utils/EGLFence.h
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..eb285ac4260e
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/xbmc/utils/EGLFence.h
|
|
||||||
@@ -0,0 +1,32 @@
|
|
||||||
+/*
|
|
||||||
+ * Copyright (C) 2017-2018 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
|
|
||||||
+
|
|
||||||
+#include <EGL/egl.h>
|
|
||||||
+#include <EGL/eglext.h>
|
|
||||||
+
|
|
||||||
+class CEGLFence
|
|
||||||
+{
|
|
||||||
+public:
|
|
||||||
+ explicit CEGLFence(EGLDisplay display);
|
|
||||||
+ CEGLFence(CEGLFence const& other) = delete;
|
|
||||||
+ CEGLFence& operator=(CEGLFence const& other) = delete;
|
|
||||||
+
|
|
||||||
+ bool CreateFence();
|
|
||||||
+ void DestroyFence();
|
|
||||||
+ bool IsSignaled();
|
|
||||||
+
|
|
||||||
+private:
|
|
||||||
+ EGLDisplay m_display{nullptr};
|
|
||||||
+ EGLSyncKHR m_fence{nullptr};
|
|
||||||
+
|
|
||||||
+ PFNEGLCREATESYNCKHRPROC m_eglCreateSyncKHR{nullptr};
|
|
||||||
+ PFNEGLDESTROYSYNCKHRPROC m_eglDestroySyncKHR{nullptr};
|
|
||||||
+ PFNEGLGETSYNCATTRIBKHRPROC m_eglGetSyncAttribKHR{nullptr};
|
|
||||||
+};
|
|
||||||
|
|
||||||
From eebac4f4e456aa3eb174286bf69073b1e740e4a9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Thu, 7 Mar 2019 18:43:15 -0800
|
|
||||||
Subject: [PATCH 2/4] CRendererDRMPRIMEGLES: use CEGLFence to sync rendering
|
|
||||||
|
|
||||||
---
|
|
||||||
.../HwDecRender/RendererDRMPRIMEGLES.cpp | 23 +++++++++++++++++++
|
|
||||||
.../HwDecRender/RendererDRMPRIMEGLES.h | 8 +++++++
|
|
||||||
2 files changed, 31 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
index 330823196fbc..5b8d82c2cd2f 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
@@ -10,6 +10,7 @@
|
|
||||||
|
|
||||||
#include "cores/VideoPlayer/VideoRenderers/RenderFactory.h"
|
|
||||||
#include "ServiceBroker.h"
|
|
||||||
+#include "utils/EGLFence.h"
|
|
||||||
#include "utils/log.h"
|
|
||||||
#include "windowing/gbm/WinSystemGbmGLESContext.h"
|
|
||||||
|
|
||||||
@@ -43,15 +44,32 @@ bool CRendererDRMPRIMEGLES::Configure(const VideoPicture &picture, float fps, un
|
|
||||||
for (auto &texture : m_DRMPRIMETextures)
|
|
||||||
texture.Init(winSystem->GetEGLDisplay());
|
|
||||||
|
|
||||||
+ for (auto& fence : m_fences)
|
|
||||||
+ {
|
|
||||||
+ fence.reset(new CEGLFence(winSystem->GetEGLDisplay()));
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
return CLinuxRendererGLES::Configure(picture, fps, orientation);
|
|
||||||
}
|
|
||||||
|
|
||||||
void CRendererDRMPRIMEGLES::ReleaseBuffer(int index)
|
|
||||||
{
|
|
||||||
+ m_fences[index]->DestroyFence();
|
|
||||||
+
|
|
||||||
m_DRMPRIMETextures[index].Unmap();
|
|
||||||
CLinuxRendererGLES::ReleaseBuffer(index);
|
|
||||||
}
|
|
||||||
|
|
||||||
+bool CRendererDRMPRIMEGLES::NeedBuffer(int index)
|
|
||||||
+{
|
|
||||||
+ if (m_fences[index]->IsSignaled())
|
|
||||||
+ {
|
|
||||||
+ return false;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
bool CRendererDRMPRIMEGLES::CreateTexture(int index)
|
|
||||||
{
|
|
||||||
CPictureBuffer &buf = m_buffers[index];
|
|
||||||
@@ -188,3 +206,8 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index)
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+void CRendererDRMPRIMEGLES::AfterRenderHook(int index)
|
|
||||||
+{
|
|
||||||
+ m_fences[index]->CreateFence();
|
|
||||||
+}
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
index f879b6cf5a38..1666f70443ac 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
@@ -11,6 +11,11 @@
|
|
||||||
#include "cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h"
|
|
||||||
#include "DRMPRIMEEGL.h"
|
|
||||||
|
|
||||||
+#include <array>
|
|
||||||
+#include <memory>
|
|
||||||
+
|
|
||||||
+class CEGLFence;
|
|
||||||
+
|
|
||||||
class CRendererDRMPRIMEGLES : public CLinuxRendererGLES
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
@@ -24,14 +29,17 @@ class CRendererDRMPRIMEGLES : public CLinuxRendererGLES
|
|
||||||
// CLinuxRendererGLES overrides
|
|
||||||
bool Configure(const VideoPicture &picture, float fps, unsigned int orientation) override;
|
|
||||||
void ReleaseBuffer(int index) override;
|
|
||||||
+ bool NeedBuffer(int index) override;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
// CLinuxRendererGLES overrides
|
|
||||||
bool LoadShadersHook() override;
|
|
||||||
bool RenderHook(int index) override;
|
|
||||||
+ void AfterRenderHook(int index) override;
|
|
||||||
bool UploadTexture(int index) override;
|
|
||||||
void DeleteTexture(int index) override;
|
|
||||||
bool CreateTexture(int index) override;
|
|
||||||
|
|
||||||
+ std::array<std::unique_ptr<CEGLFence>, NUM_BUFFERS> m_fences;
|
|
||||||
CDRMPRIMETexture m_DRMPRIMETextures[NUM_BUFFERS];
|
|
||||||
};
|
|
||||||
|
|
||||||
From 86d11125437086b290ec380cbe200acd96e76475 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Mon, 18 Feb 2019 19:18:39 -0800
|
|
||||||
Subject: [PATCH 3/4] CRendererDRMPRIMEGLES: update VBO's to be similar to
|
|
||||||
CLinuxRendererGL
|
|
||||||
|
|
||||||
---
|
|
||||||
.../HwDecRender/RendererDRMPRIMEGLES.cpp | 48 ++++++++++++-------
|
|
||||||
1 file changed, 32 insertions(+), 16 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
index 5b8d82c2cd2f..1f3176422885 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
@@ -157,28 +157,44 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index)
|
|
||||||
{
|
|
||||||
float x, y, z;
|
|
||||||
float u1, v1;
|
|
||||||
- } vertex[4];
|
|
||||||
+ };
|
|
||||||
+
|
|
||||||
+ std::array<PackedVertex, 4> vertex;
|
|
||||||
|
|
||||||
GLint vertLoc = renderSystem->GUIShaderGetPos();
|
|
||||||
GLint loc = renderSystem->GUIShaderGetCoord0();
|
|
||||||
|
|
||||||
- for (unsigned int i = 0; i < 4; i++)
|
|
||||||
- {
|
|
||||||
- // Setup vertex position values
|
|
||||||
- vertex[i].x = m_rotatedDestCoords[i].x;
|
|
||||||
- vertex[i].y = m_rotatedDestCoords[i].y;
|
|
||||||
- vertex[i].z = 0.0f;
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- // Setup texture coordinates
|
|
||||||
- vertex[0].u1 = vertex[3].u1 = plane.rect.x1;
|
|
||||||
- vertex[0].v1 = vertex[1].v1 = plane.rect.y1;
|
|
||||||
- vertex[1].u1 = vertex[2].u1 = plane.rect.x2;
|
|
||||||
- vertex[2].v1 = vertex[3].v1 = plane.rect.y2;
|
|
||||||
+ // top left
|
|
||||||
+ vertex[0].x = m_rotatedDestCoords[0].x;
|
|
||||||
+ vertex[0].y = m_rotatedDestCoords[0].y;
|
|
||||||
+ vertex[0].z = 0.0f;
|
|
||||||
+ vertex[0].u1 = plane.rect.x1;
|
|
||||||
+ vertex[0].v1 = plane.rect.y1;
|
|
||||||
+
|
|
||||||
+ // top right
|
|
||||||
+ vertex[1].x = m_rotatedDestCoords[1].x;
|
|
||||||
+ vertex[1].y = m_rotatedDestCoords[1].y;
|
|
||||||
+ vertex[1].z = 0.0f;
|
|
||||||
+ vertex[1].u1 = plane.rect.x2;
|
|
||||||
+ vertex[1].v1 = plane.rect.y1;
|
|
||||||
+
|
|
||||||
+ // bottom right
|
|
||||||
+ vertex[2].x = m_rotatedDestCoords[2].x;
|
|
||||||
+ vertex[2].y = m_rotatedDestCoords[2].y;
|
|
||||||
+ vertex[2].z = 0.0f;
|
|
||||||
+ vertex[2].u1 = plane.rect.x2;
|
|
||||||
+ vertex[2].v1 = plane.rect.y2;
|
|
||||||
+
|
|
||||||
+ // bottom left
|
|
||||||
+ vertex[3].x = m_rotatedDestCoords[3].x;
|
|
||||||
+ vertex[3].y = m_rotatedDestCoords[3].y;
|
|
||||||
+ vertex[3].z = 0.0f;
|
|
||||||
+ vertex[3].u1 = plane.rect.x1;
|
|
||||||
+ vertex[3].v1 = plane.rect.y2;;
|
|
||||||
|
|
||||||
glGenBuffers(1, &vertexVBO);
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, vertexVBO);
|
|
||||||
- glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex)*4, &vertex[0], GL_STATIC_DRAW);
|
|
||||||
+ glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex) * vertex.size(), vertex.data(), GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
glVertexAttribPointer(vertLoc, 3, GL_FLOAT, 0, sizeof(PackedVertex), reinterpret_cast<const GLvoid*>(offsetof(PackedVertex, x)));
|
|
||||||
glVertexAttribPointer(loc, 2, GL_FLOAT, 0, sizeof(PackedVertex), reinterpret_cast<const GLvoid*>(offsetof(PackedVertex, u1)));
|
|
||||||
@@ -188,7 +204,7 @@ bool CRendererDRMPRIMEGLES::RenderHook(int index)
|
|
||||||
|
|
||||||
glGenBuffers(1, &indexVBO);
|
|
||||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexVBO);
|
|
||||||
- glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte)*4, idx, GL_STATIC_DRAW);
|
|
||||||
+ glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte) * 4, idx, GL_STATIC_DRAW);
|
|
||||||
|
|
||||||
glDrawElements(GL_TRIANGLE_STRIP, 4, GL_UNSIGNED_BYTE, 0);
|
|
||||||
|
|
||||||
|
|
||||||
From 8d4e4760cb92c90b56aa28a9260d364cd40e0245 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Mon, 18 Feb 2019 19:20:11 -0800
|
|
||||||
Subject: [PATCH 4/4] CRendererDRMPRIMEGLES: add override methods for
|
|
||||||
ERENDERFEATURE and ESCALINGMETHOD
|
|
||||||
|
|
||||||
---
|
|
||||||
.../HwDecRender/RendererDRMPRIMEGLES.cpp | 24 +++++++++++++++++++
|
|
||||||
.../HwDecRender/RendererDRMPRIMEGLES.h | 3 +++
|
|
||||||
2 files changed, 27 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
index 1f3176422885..ac01d52c10d7 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.cpp
|
|
||||||
@@ -227,3 +227,27 @@ void CRendererDRMPRIMEGLES::AfterRenderHook(int index)
|
|
||||||
{
|
|
||||||
m_fences[index]->CreateFence();
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+bool CRendererDRMPRIMEGLES::Supports(ERENDERFEATURE feature)
|
|
||||||
+{
|
|
||||||
+ if (feature == RENDERFEATURE_STRETCH ||
|
|
||||||
+ feature == RENDERFEATURE_ZOOM ||
|
|
||||||
+ feature == RENDERFEATURE_VERTICAL_SHIFT ||
|
|
||||||
+ feature == RENDERFEATURE_PIXEL_RATIO ||
|
|
||||||
+ feature == RENDERFEATURE_ROTATION)
|
|
||||||
+ {
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+bool CRendererDRMPRIMEGLES::Supports(ESCALINGMETHOD method)
|
|
||||||
+{
|
|
||||||
+ if (method == VS_SCALINGMETHOD_LINEAR)
|
|
||||||
+ {
|
|
||||||
+ return true;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
index 1666f70443ac..4e9ae779daf8 100644
|
|
||||||
--- a/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/HwDecRender/RendererDRMPRIMEGLES.h
|
|
||||||
@@ -31,6 +31,9 @@ class CRendererDRMPRIMEGLES : public CLinuxRendererGLES
|
|
||||||
void ReleaseBuffer(int index) override;
|
|
||||||
bool NeedBuffer(int index) override;
|
|
||||||
|
|
||||||
+ bool Supports(ERENDERFEATURE feature) override;
|
|
||||||
+ bool Supports(ESCALINGMETHOD method) override;
|
|
||||||
+
|
|
||||||
protected:
|
|
||||||
// CLinuxRendererGLES overrides
|
|
||||||
bool LoadShadersHook() override;
|
|
@ -1,65 +0,0 @@
|
|||||||
From 2104dbd5e263b9f83c0e6cd451a486d6f3046f83 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Sat, 20 Apr 2019 12:01:19 -0700
|
|
||||||
Subject: [PATCH] CDRMUtils: fallback to drmModeAddFB2 if
|
|
||||||
drmModeAddFB2WithModifiers fails
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/windowing/gbm/DRMUtils.cpp | 43 +++++++++++++++++++++------------
|
|
||||||
1 file changed, 28 insertions(+), 15 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/windowing/gbm/DRMUtils.cpp b/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
index 8e1ec9d0dcb5..6cae2176296f 100644
|
|
||||||
--- a/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
+++ b/xbmc/windowing/gbm/DRMUtils.cpp
|
|
||||||
@@ -117,22 +117,35 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struct gbm_bo *bo)
|
|
||||||
CLog::Log(LOGDEBUG, "CDRMUtils::{} - using modifier: {:#x}", __FUNCTION__, modifiers[0]);
|
|
||||||
}
|
|
||||||
|
|
||||||
- auto ret = drmModeAddFB2WithModifiers(m_fd,
|
|
||||||
- width,
|
|
||||||
- height,
|
|
||||||
- fb->format,
|
|
||||||
- handles,
|
|
||||||
- strides,
|
|
||||||
- offsets,
|
|
||||||
- modifiers,
|
|
||||||
- &fb->fb_id,
|
|
||||||
- flags);
|
|
||||||
+ int ret = drmModeAddFB2WithModifiers(m_fd,
|
|
||||||
+ width,
|
|
||||||
+ height,
|
|
||||||
+ fb->format,
|
|
||||||
+ handles,
|
|
||||||
+ strides,
|
|
||||||
+ offsets,
|
|
||||||
+ modifiers,
|
|
||||||
+ &fb->fb_id,
|
|
||||||
+ flags);
|
|
||||||
+
|
|
||||||
+ if(ret < 0)
|
|
||||||
+ {
|
|
||||||
+ ret = drmModeAddFB2(m_fd,
|
|
||||||
+ width,
|
|
||||||
+ height,
|
|
||||||
+ fb->format,
|
|
||||||
+ handles,
|
|
||||||
+ strides,
|
|
||||||
+ offsets,
|
|
||||||
+ &fb->fb_id,
|
|
||||||
+ flags);
|
|
||||||
|
|
||||||
- if(ret)
|
|
||||||
- {
|
|
||||||
- delete (fb);
|
|
||||||
- CLog::Log(LOGDEBUG, "CDRMUtils::%s - failed to add framebuffer", __FUNCTION__);
|
|
||||||
- return nullptr;
|
|
||||||
+ if (ret < 0)
|
|
||||||
+ {
|
|
||||||
+ delete (fb);
|
|
||||||
+ CLog::Log(LOGDEBUG, "CDRMUtils::{} - failed to add framebuffer: {} ({})", __FUNCTION__, strerror(errno), errno);
|
|
||||||
+ return nullptr;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
gbm_bo_set_user_data(bo, fb, DrmFbDestroyCallback);
|
|
72
projects/Amlogic/patches/kodi/kodi-PR16313.patch
Normal file
72
projects/Amlogic/patches/kodi/kodi-PR16313.patch
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
From 9da95fb8a3c57fd7b8963f561a05d836edc2b601 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stefan Sichler <stsichler@web.de>
|
||||||
|
Date: Thu, 27 Jun 2019 09:07:12 +0200
|
||||||
|
Subject: [PATCH] LinuxRendererGLES: fixed memory leak, fixed segfault when
|
||||||
|
NV12 textures are in use, when (stride != width*bps) and GL_UNPACK_ROW_LENGTH
|
||||||
|
is not available
|
||||||
|
|
||||||
|
---
|
||||||
|
.../VideoRenderers/LinuxRendererGLES.cpp | 17 +++++++++++------
|
||||||
|
.../VideoRenderers/LinuxRendererGLES.h | 1 +
|
||||||
|
2 files changed, 12 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
index 39e3866face4..c524a2ff6970 100644
|
||||||
|
--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.cpp
|
||||||
|
@@ -289,11 +289,18 @@ void CLinuxRendererGLES::LoadPlane(CYuvPlane& plane, int type,
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
+ size_t planeSize = width * height * bps;
|
||||||
|
+ if (m_planeBufferSize < planeSize)
|
||||||
|
+ {
|
||||||
|
+ m_planeBuffer = static_cast<unsigned char*>(realloc(m_planeBuffer, planeSize));
|
||||||
|
+ m_planeBufferSize = planeSize;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
unsigned char *src(static_cast<unsigned char*>(data)),
|
||||||
|
*dst(m_planeBuffer);
|
||||||
|
|
||||||
|
- for (unsigned int y = 0; y < height; ++y, src += stride, dst += width * bpp)
|
||||||
|
- memcpy(dst, src, width * bpp);
|
||||||
|
+ for (unsigned int y = 0; y < height; ++y, src += stride, dst += width * bps)
|
||||||
|
+ memcpy(dst, src, width * bps);
|
||||||
|
|
||||||
|
pixelData = m_planeBuffer;
|
||||||
|
}
|
||||||
|
@@ -1292,11 +1299,9 @@ bool CLinuxRendererGLES::CreateYV12Texture(int index)
|
||||||
|
im.planesize[1] = im.stride[1] * (im.height >> im.cshift_y);
|
||||||
|
im.planesize[2] = im.stride[2] * (im.height >> im.cshift_y);
|
||||||
|
|
||||||
|
- m_planeBuffer = static_cast<unsigned char*>(realloc(m_planeBuffer, m_sourceHeight * m_sourceWidth * im.bpp));
|
||||||
|
-
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
- im.plane[i] = new uint8_t[im.planesize[i]];
|
||||||
|
+ im.plane[i] = nullptr; // will be set in UploadTexture()
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int f = 0; f < MAX_FIELDS; f++)
|
||||||
|
@@ -1459,7 +1464,7 @@ bool CLinuxRendererGLES::CreateNV12Texture(int index)
|
||||||
|
|
||||||
|
for (int i = 0; i < 2; i++)
|
||||||
|
{
|
||||||
|
- im.plane[i] = new uint8_t[im.planesize[i]];
|
||||||
|
+ im.plane[i] = nullptr; // will be set in UploadTexture()
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int f = 0; f < MAX_FIELDS; f++)
|
||||||
|
diff --git a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h
|
||||||
|
index b0f53705d20e..ecb4a9f8c72c 100644
|
||||||
|
--- a/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h
|
||||||
|
+++ b/xbmc/cores/VideoPlayer/VideoRenderers/LinuxRendererGLES.h
|
||||||
|
@@ -203,6 +203,7 @@ class CLinuxRendererGLES : public CBaseRenderer
|
||||||
|
AVColorPrimaries m_srcPrimaries;
|
||||||
|
bool m_toneMap = false;
|
||||||
|
unsigned char* m_planeBuffer = nullptr;
|
||||||
|
+ size_t m_planeBufferSize = 0;
|
||||||
|
|
||||||
|
// clear colour for "black" bars
|
||||||
|
float m_clearColour{0.0f};
|
||||||
|
|
@ -1,9 +1,7 @@
|
|||||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp 2019-06-14 04:29:43.569698373 +0000
|
||||||
index e04c3c6ff6..dcf97af4ef 100644
|
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp 2019-06-14 04:33:21.357709602 +0000
|
||||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
@@ -26,7 +26,7 @@ extern "C" {
|
||||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
using namespace KODI::WINDOWING::GBM;
|
||||||
@@ -156,7 +156,7 @@ void CVideoBufferPoolDRMPRIME::Return(int id)
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
CDVDVideoCodecDRMPRIME::CDVDVideoCodecDRMPRIME(CProcessInfo& processInfo)
|
CDVDVideoCodecDRMPRIME::CDVDVideoCodecDRMPRIME(CProcessInfo& processInfo)
|
||||||
- : CDVDVideoCodec(processInfo)
|
- : CDVDVideoCodec(processInfo)
|
||||||
@ -11,7 +9,7 @@ index e04c3c6ff6..dcf97af4ef 100644
|
|||||||
{
|
{
|
||||||
m_pFrame = av_frame_alloc();
|
m_pFrame = av_frame_alloc();
|
||||||
m_videoBufferPool = std::make_shared<CVideoBufferPoolDRMPRIME>();
|
m_videoBufferPool = std::make_shared<CVideoBufferPoolDRMPRIME>();
|
||||||
@@ -406,6 +406,20 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo
|
@@ -281,6 +281,20 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecD
|
||||||
return VC_ERROR;
|
return VC_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,21 +30,17 @@ index e04c3c6ff6..dcf97af4ef 100644
|
|||||||
if (pVideoPicture->videoBuffer)
|
if (pVideoPicture->videoBuffer)
|
||||||
pVideoPicture->videoBuffer->Release();
|
pVideoPicture->videoBuffer->Release();
|
||||||
pVideoPicture->videoBuffer = nullptr;
|
pVideoPicture->videoBuffer = nullptr;
|
||||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h 2019-06-14 04:35:37.981723614 +0000
|
||||||
index ffcdf1a7b6..4455280e38 100644
|
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h 2019-06-14 04:35:30.437722730 +0000
|
||||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
@@ -42,4 +42,6 @@ protected:
|
||||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
|
||||||
@@ -79,4 +79,6 @@ protected:
|
|
||||||
AVCodecContext* m_pCodecContext = nullptr;
|
AVCodecContext* m_pCodecContext = nullptr;
|
||||||
AVFrame* m_pFrame = nullptr;
|
AVFrame* m_pFrame = nullptr;
|
||||||
std::shared_ptr<CVideoBufferPoolDRMPRIME> m_videoBufferPool;
|
std::shared_ptr<IVideoBufferPool> m_videoBufferPool;
|
||||||
+ int64_t m_prevTime;
|
+ int64_t m_prevTime;
|
||||||
+ bool m_seeking;
|
+ bool m_seeking;
|
||||||
};
|
};
|
||||||
diff --git a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp
|
--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp 2019-04-13 17:57:10.000000000 +0000
|
||||||
index e8d9023a9f..4299894c00 100644
|
+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp 2019-06-14 04:37:34.214037038 +0000
|
||||||
--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.cpp
|
|
||||||
@@ -635,6 +635,13 @@ bool CProcessInfo::GetVideoRender()
|
@@ -635,6 +635,13 @@ bool CProcessInfo::GetVideoRender()
|
||||||
return m_renderVideoLayer;
|
return m_renderVideoLayer;
|
||||||
}
|
}
|
||||||
@ -61,10 +55,8 @@ index e8d9023a9f..4299894c00 100644
|
|||||||
void CProcessInfo::SetPlayTimes(time_t start, int64_t current, int64_t min, int64_t max)
|
void CProcessInfo::SetPlayTimes(time_t start, int64_t current, int64_t min, int64_t max)
|
||||||
{
|
{
|
||||||
CSingleLock lock(m_stateSection);
|
CSingleLock lock(m_stateSection);
|
||||||
diff --git a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h
|
--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h 2019-04-13 17:57:10.000000000 +0000
|
||||||
index e8042c2bc2..5b4aea9b9d 100644
|
+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h 2019-06-14 04:38:50.698426382 +0000
|
||||||
--- a/xbmc/cores/VideoPlayer/Process/ProcessInfo.h
|
|
||||||
+++ b/xbmc/cores/VideoPlayer/Process/ProcessInfo.h
|
|
||||||
@@ -101,6 +101,7 @@ public:
|
@@ -101,6 +101,7 @@ public:
|
||||||
bool GetGuiRender();
|
bool GetGuiRender();
|
||||||
void SetVideoRender(bool video);
|
void SetVideoRender(bool video);
|
@ -1,36 +0,0 @@
|
|||||||
From 1667f2b95424f7c42fbd5b30aaadef53ab76e3ad Mon Sep 17 00:00:00 2001
|
|
||||||
From: Lukas Rusak <lorusak@gmail.com>
|
|
||||||
Date: Fri, 12 Apr 2019 22:22:34 -0700
|
|
||||||
Subject: [PATCH] CWinSystemGbm: only lock the front buffer if something is
|
|
||||||
rendered
|
|
||||||
|
|
||||||
---
|
|
||||||
xbmc/windowing/gbm/WinSystemGbm.cpp | 12 ++++++++++--
|
|
||||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/xbmc/windowing/gbm/WinSystemGbm.cpp b/xbmc/windowing/gbm/WinSystemGbm.cpp
|
|
||||||
index 4a3291a55045..5cee802be2de 100644
|
|
||||||
--- a/xbmc/windowing/gbm/WinSystemGbm.cpp
|
|
||||||
+++ b/xbmc/windowing/gbm/WinSystemGbm.cpp
|
|
||||||
@@ -207,11 +207,19 @@ void CWinSystemGbm::FlipPage(bool rendered, bool videoLayer)
|
|
||||||
m_videoLayerBridge->Disable();
|
|
||||||
}
|
|
||||||
|
|
||||||
- struct gbm_bo *bo = m_GBM->LockFrontBuffer();
|
|
||||||
+ struct gbm_bo *bo = nullptr;
|
|
||||||
+
|
|
||||||
+ if (rendered)
|
|
||||||
+ {
|
|
||||||
+ bo = m_GBM->LockFrontBuffer();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
m_DRM->FlipPage(bo, rendered, videoLayer);
|
|
||||||
|
|
||||||
- m_GBM->ReleaseBuffer();
|
|
||||||
+ if (rendered)
|
|
||||||
+ {
|
|
||||||
+ m_GBM->ReleaseBuffer();
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (m_videoLayerBridge && !videoLayer)
|
|
||||||
{
|
|
Loading…
x
Reference in New Issue
Block a user