mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 06:06:43 +00:00
Merge pull request #5360 from HiassofT/le10-kodi-19.1
kodi: update to v19.1
This commit is contained in:
commit
8e8c9b9bc0
@ -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"
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
Loading…
x
Reference in New Issue
Block a user