Merge pull request #4774 from HiassofT/le10-ffmpeg-rpi

ffmpeg: update rpi patch
This commit is contained in:
CvH 2020-12-19 17:51:40 +01:00 committed by GitHub
commit f6135c9b8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 3689 additions and 424 deletions

View File

@ -19,8 +19,8 @@ PKG_FFMPEG_HWACCEL="--enable-hwaccels"
PKG_FFMPEG_RPI="--disable-mmal" PKG_FFMPEG_RPI="--disable-mmal"
if [ "${PROJECT}" = "RPi" -a "${DEVICE}" = "RPi4" ]; then if [ "${PROJECT}" = "RPi" ]; then
PKG_PATCH_DIRS="rpi v4l2-drmprime" PKG_PATCH_DIRS="rpi"
PKG_FFMPEG_RPI+=" --disable-rpi --enable-sand" PKG_FFMPEG_RPI+=" --disable-rpi --enable-sand"
else else
PKG_PATCH_DIRS="v4l2-request v4l2-drmprime" PKG_PATCH_DIRS="v4l2-request v4l2-drmprime"

File diff suppressed because it is too large Load Diff

View File

@ -1,130 +0,0 @@
From 276f11db060cc2967377187e2e53138242a43937 Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Fri, 27 Mar 2020 15:14:11 +0000
Subject: [PATCH] VideoPlayer: Add setting to disable non-hevc accel
---
addons/resource.language.en_gb/resources/strings.po | 10 ++++++++++
system/settings/linux.xml | 12 ++++++++++++
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 13 +++++++++++++
xbmc/settings/Settings.cpp | 2 ++
xbmc/settings/Settings.h | 1 +
5 files changed, 38 insertions(+)
diff --git a/addons/resource.language.en_gb/resources/strings.po b/addons/resource.language.en_gb/resources/strings.po
index 8fa3fe34dc..1a518905e3 100644
--- a/addons/resource.language.en_gb/resources/strings.po
+++ b/addons/resource.language.en_gb/resources/strings.po
@@ -7282,6 +7282,16 @@ msgctxt "#13467"
msgid "Unlimited / 1080 (>30Hz)"
msgstr ""
+#: system/settings/settings.xml
+msgctxt "#13500"
+msgid "Only allow acceleration for HEVC"
+msgstr ""
+
+#: system/settings/settings.xml
+msgctxt "#13501"
+msgid "This option disables acceleration for other codecs as they don't currently support seeking with V4L2"
+msgstr ""
+
#empty strings from id 13468 to 13504
#: system/settings/settings.xml
diff --git a/system/settings/linux.xml b/system/settings/linux.xml
index 6d1fb9cd49..691a84e65e 100644
--- a/system/settings/linux.xml
+++ b/system/settings/linux.xml
@@ -168,6 +168,18 @@
<default>true</default>
<control type="toggle" />
</setting>
+ <setting id="videoplayer.disablenonhevc" type="boolean" parent="videoplayer.useprimedecoderforhw" label="13500" help="13501">
+ <requirement>HAS_GLES</requirement>
+ <visible>false</visible>
+ <dependencies>
+ <dependency type="enable">
+ <condition setting="videoplayer.useprimedecoderforhw" operator="is">true</condition>
+ </dependency>
+ </dependencies>
+ <level>3</level>
+ <default>true</default>
+ <control type="toggle" />
+ </setting>
<setting id="videoplayer.useprimerenderer" type="integer" label="13462" help="13463">
<requirement>HAS_GLES</requirement>
<visible>false</visible>
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
index 8024c20816..74c29ba3b9 100644
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
@@ -37,6 +37,7 @@ namespace
{
constexpr const char* SETTING_VIDEOPLAYER_USEPRIMEDECODERFORHW{"videoplayer.useprimedecoderforhw"};
+constexpr const char* SETTING_VIDEOPLAYER_DISABLENONHEVC{"videoplayer.disablenonhevc"};
static void ReleaseBuffer(void* opaque, uint8_t* data)
{
@@ -123,6 +124,15 @@ void CDVDVideoCodecDRMPRIME::Register()
setting->SetVisible(true);
+ setting = settings->GetSetting(SETTING_VIDEOPLAYER_DISABLENONHEVC);
+ if (!setting)
+ {
+ CLog::Log(LOGERROR, "Failed to load setting for: {}", SETTING_VIDEOPLAYER_DISABLENONHEVC);
+ return;
+ }
+
+ setting->SetVisible(true);
+
CDVDFactoryCodec::RegisterHWVideoCodec("drm_prime", CDVDVideoCodecDRMPRIME::Create);
}
@@ -144,6 +154,9 @@ static const AVCodecHWConfig* FindHWConfig(const AVCodec* codec)
if (!CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
SETTING_VIDEOPLAYER_USEPRIMEDECODERFORHW))
return nullptr;
+ if (CServiceBroker::GetSettingsComponent()->GetSettings()->GetBool(
+ SETTING_VIDEOPLAYER_DISABLENONHEVC) && codec->id != AV_CODEC_ID_HEVC)
+ return nullptr;
const AVCodecHWConfig* config = nullptr;
for (int n = 0; (config = avcodec_get_hw_config(codec, n)); n++)
diff --git a/xbmc/settings/Settings.cpp b/xbmc/settings/Settings.cpp
index 2b487339d6..b9fbe306ce 100644
--- a/xbmc/settings/Settings.cpp
+++ b/xbmc/settings/Settings.cpp
@@ -140,6 +140,7 @@ constexpr const char* CSettings::SETTING_VIDEOPLAYER_RENDERMETHOD;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_HQSCALERS;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEMEDIACODEC;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE;
+constexpr const char* CSettings::SETTING_VIDEOPLAYER_DISABLE_NON_HEVC;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAU;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUMIXER;
constexpr const char* CSettings::SETTING_VIDEOPLAYER_USEVDPAUMPEG2;
@@ -982,6 +983,7 @@ void CSettings::InitializeISettingCallbacks()
settingSet.insert(CSettings::SETTING_VIDEOSCREEN_TESTPATTERN);
settingSet.insert(CSettings::SETTING_VIDEOPLAYER_USEMEDIACODEC);
settingSet.insert(CSettings::SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE);
+ settingSet.insert(CSettings::SETTING_VIDEOPLAYER_DISABLE_NON_HEVC);
settingSet.insert(CSettings::SETTING_AUDIOOUTPUT_VOLUMESTEPS);
settingSet.insert(CSettings::SETTING_SOURCE_VIDEOS);
settingSet.insert(CSettings::SETTING_SOURCE_MUSIC);
diff --git a/xbmc/settings/Settings.h b/xbmc/settings/Settings.h
index 8276c8a5aa..00967cf908 100644
--- a/xbmc/settings/Settings.h
+++ b/xbmc/settings/Settings.h
@@ -118,6 +118,7 @@ public:
static constexpr auto SETTING_VIDEOPLAYER_USEMEDIACODEC = "videoplayer.usemediacodec";
static constexpr auto SETTING_VIDEOPLAYER_USEMEDIACODECSURFACE =
"videoplayer.usemediacodecsurface";
+ static constexpr auto SETTING_VIDEOPLAYER_DISABLE_NON_HEVC = "videoplayer.disablenonhevc";
static constexpr auto SETTING_VIDEOPLAYER_USEVDPAU = "videoplayer.usevdpau";
static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUMIXER = "videoplayer.usevdpaumixer";
static constexpr auto SETTING_VIDEOPLAYER_USEVDPAUMPEG2 = "videoplayer.usevdpaumpeg2";
--
2.20.1

View File

@ -37,7 +37,7 @@ create_patch() {
;; ;;
rpi) rpi)
REPO="https://github.com/jc-kynesim/rpi-ffmpeg" REPO="https://github.com/jc-kynesim/rpi-ffmpeg"
REFSPEC="test/4.3/kodi_main" REFSPEC="dev/4.3.1/drm_prime_1"
;; ;;
*) *)
echo "illegal feature set ${FEATURE_SET}" echo "illegal feature set ${FEATURE_SET}"