Merge pull request #5360 from HiassofT/le10-kodi-19.1

kodi: update to v19.1
This commit is contained in:
CvH 2021-05-09 18:56:51 +02:00 committed by GitHub
commit 8e8c9b9bc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 2 additions and 126 deletions

View File

@ -3,8 +3,8 @@
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
PKG_NAME="kodi"
PKG_VERSION="1a1c5028f24a992134e2a1745519914e303eee4c"
PKG_SHA256="b125bf10459b6d2a15f6f4740348cf8424591e1229281b12f5aeb7f8f71a5d57"
PKG_VERSION="19.1-Matrix"
PKG_SHA256="195a916a32057e259e6f42b49ba8f07cc6253460018851a52deb058ae938c58c"
PKG_LICENSE="GPL"
PKG_SITE="http://www.kodi.tv"
PKG_URL="https://github.com/xbmc/xbmc/archive/${PKG_VERSION}.tar.gz"

View File

@ -1,63 +0,0 @@
From bdd6c0e14d52f1ec8dac34c1dee9a636fd5cd1e8 Mon Sep 17 00:00:00 2001
From: Matthias Reichl <hias@horus.com>
Date: Wed, 17 Feb 2021 22:14:15 +0100
Subject: [PATCH] windowing/gbm/drm: default to original crtc mode
This brings RES_DESKTOP handling of gbm in line with other windowing
systems.
If the framebuffer has been set up with a valid mode before kodi
startup then use that as the default / DESKTOP mode, otherwise fall
back to the previous behaviour of setting DESKTOP to the preferred
mode reported by drm.
This avoids unnecessary mode switches at kodi startup (which usually
lead to screen blanking for a short time) and allows users to easily
override broken video/edid/... setups by manually configuring a mode
in linux which then kodi uses too. That is especially important when
running kodi for the first time, if it switches to a different mode
that might not be working with the user's monitor the result is a
black screen with no easy possibility to fix the settings.
Signed-off-by: Matthias Reichl <hias@horus.com>
---
xbmc/windowing/gbm/drm/DRMCrtc.h | 1 +
xbmc/windowing/gbm/drm/DRMUtils.cpp | 10 ++++++++++
2 files changed, 11 insertions(+)
--- a/xbmc/windowing/gbm/drm/DRMCrtc.h
+++ b/xbmc/windowing/gbm/drm/DRMCrtc.h
@@ -30,6 +30,7 @@ public:
uint32_t GetX() const { return m_crtc->x; }
uint32_t GetY() const { return m_crtc->y; }
drmModeModeInfoPtr GetMode() const { return &m_crtc->mode; }
+ bool GetModeValid() const { return m_crtc->mode_valid != 0; }
private:
struct DrmModeCrtcDeleter
--- a/xbmc/windowing/gbm/drm/DRMUtils.cpp
+++ b/xbmc/windowing/gbm/drm/DRMUtils.cpp
@@ -144,6 +144,9 @@ drm_fb * CDRMUtils::DrmFbGetFromBo(struc
bool CDRMUtils::FindPreferredMode()
{
+ if (m_mode)
+ return true;
+
for (int i = 0, area = 0; i < m_connector->GetModesCount(); i++)
{
drmModeModeInfo* current_mode = m_connector->GetModeForIndex(i);
@@ -534,6 +537,13 @@ bool CDRMUtils::FindCrtc()
if (m_crtcs[i]->GetCrtcId() == m_encoder->GetCrtcId())
{
m_orig_crtc = m_crtcs[i].get();
+ if (m_orig_crtc->GetModeValid())
+ {
+ m_mode = m_orig_crtc->GetMode();
+ CLog::Log(LOGDEBUG, "CDRMUtils::{} - original crtc mode: {}x{}{} @ {} Hz", __FUNCTION__,
+ m_mode->hdisplay, m_mode->vdisplay,
+ m_mode->flags & DRM_MODE_FLAG_INTERLACE ? "i" : "", m_mode->vrefresh);
+ }
return true;
}
}

View File

@ -1,61 +0,0 @@
From a30656bf2bee534836a984bbd488b1f16e01b9a0 Mon Sep 17 00:00:00 2001
From: Jernej Skrabec <jernej.skrabec@siol.net>
Date: Sun, 14 Mar 2021 08:40:19 +0100
Subject: [PATCH] CDVDVideoCodecDRMPRIME: skip frames when requested
---
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 27 +++++++++++++++++++
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.h | 2 +-
2 files changed, 28 insertions(+), 1 deletion(-)
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
@@ -517,6 +517,12 @@ void CDVDVideoCodecDRMPRIME::SetPictureP
pVideoPicture->iFlags = 0;
pVideoPicture->iFlags |= m_pFrame->interlaced_frame ? DVP_FLAG_INTERLACED : 0;
pVideoPicture->iFlags |= m_pFrame->top_field_first ? DVP_FLAG_TOP_FIELD_FIRST : 0;
+ pVideoPicture->iFlags |= m_pFrame->data[0] ? 0 : DVP_FLAG_DROPPED;
+
+ if (m_codecControlFlags & DVD_CODEC_CTRL_DROP)
+ {
+ pVideoPicture->iFlags |= DVP_FLAG_DROPPED;
+ }
int64_t pts = m_pFrame->best_effort_timestamp;
pVideoPicture->pts = (pts == AV_NOPTS_VALUE)
@@ -590,3 +596,24 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecD
return VC_PICTURE;
}
+
+void CDVDVideoCodecDRMPRIME::SetCodecControl(int flags)
+{
+ m_codecControlFlags = flags;
+
+ if (m_pCodecContext)
+ {
+ if ((flags & DVD_CODEC_CTRL_DROP_ANY) != 0)
+ {
+ m_pCodecContext->skip_frame = AVDISCARD_NONREF;
+ m_pCodecContext->skip_idct = AVDISCARD_NONREF;
+ m_pCodecContext->skip_loop_filter = AVDISCARD_NONREF;
+ }
+ else
+ {
+ m_pCodecContext->skip_frame = AVDISCARD_DEFAULT;
+ m_pCodecContext->skip_idct = AVDISCARD_DEFAULT;
+ m_pCodecContext->skip_loop_filter = AVDISCARD_DEFAULT;
+ }
+ }
+}
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
@@ -29,7 +29,7 @@ public:
CDVDVideoCodec::VCReturn GetPicture(VideoPicture* pVideoPicture) override;
const char* GetName() override { return m_name.c_str(); }
unsigned GetAllowedReferences() override { return 5; }
- void SetCodecControl(int flags) override { m_codecControlFlags = flags; }
+ void SetCodecControl(int flags) override;
protected:
void Drain();