mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-29 21:56:42 +00:00
Merge pull request #5546 from CvH/11.0/kodi_up
Kodi bump to 20.0 branch
This commit is contained in:
commit
cccb5bd7bb
@ -5,4 +5,4 @@
|
||||
OS_VERSION="11.0"
|
||||
|
||||
# ADDON_VERSION: Addon version
|
||||
ADDON_VERSION="10.80.0"
|
||||
ADDON_VERSION="10.80.1"
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="kodi"
|
||||
PKG_VERSION="6402a50950ff6463042f8891ec4029c782730391"
|
||||
PKG_SHA256="56e1a64f2cd1b38e6997dac3057cdeb81e33109bfa449521493208b514466bd0"
|
||||
PKG_VERSION="3d01768da145e67708ed378dfc36bb4b61a81624"
|
||||
PKG_SHA256="fcc2ac30f62b55bf36fb5edf9026cdd4b1af2aaecd17accc0500705850de0cc3"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/xbmc/xbmc/archive/${PKG_VERSION}.tar.gz"
|
||||
|
@ -13,15 +13,15 @@ Subject: disable online check
|
||||
{"uptime", SYSTEM_UPTIME},
|
||||
--- a/xbmc/utils/SystemInfo.cpp
|
||||
+++ b/xbmc/utils/SystemInfo.cpp
|
||||
@@ -271,7 +271,6 @@ bool CSysInfoJob::DoWork()
|
||||
@@ -274,7 +274,6 @@ bool CSysInfoJob::DoWork()
|
||||
{
|
||||
m_info.systemUptime = GetSystemUpTime(false);
|
||||
m_info.systemTotalUptime = GetSystemUpTime(true);
|
||||
- m_info.internetState = GetInternetState();
|
||||
m_info.videoEncoder = GetVideoEncoder();
|
||||
m_info.cpuFrequency =
|
||||
StringUtils::Format("%4.0f MHz", CServiceBroker::GetCPUInfo()->GetCPUFrequency());
|
||||
@@ -1000,9 +999,7 @@ int CSysInfo::GetXbmcBitness(void)
|
||||
StringUtils::Format("{:4.0f} MHz", CServiceBroker::GetCPUInfo()->GetCPUFrequency());
|
||||
@@ -1010,9 +1009,7 @@ int CSysInfo::GetXbmcBitness(void)
|
||||
|
||||
bool CSysInfo::HasInternet()
|
||||
{
|
||||
@ -35,10 +35,10 @@ Subject: disable online check
|
||||
--- a/xbmc/windows/GUIWindowSystemInfo.cpp
|
||||
+++ b/xbmc/windows/GUIWindowSystemInfo.cpp
|
||||
@@ -124,7 +124,6 @@ void CGUIWindowSystemInfo::FrameMove()
|
||||
SetControlLabel(i++, "%s: %s", 13160, NETWORK_GATEWAY_ADDRESS);
|
||||
SetControlLabel(i++, "%s: %s", 13161, NETWORK_DNS1_ADDRESS);
|
||||
SetControlLabel(i++, "%s: %s", 20307, NETWORK_DNS2_ADDRESS);
|
||||
- SetControlLabel(i++, "%s %s", 13295, SYSTEM_INTERNET_STATE);
|
||||
SetControlLabel(i++, "{}: {}", 13160, NETWORK_GATEWAY_ADDRESS);
|
||||
SetControlLabel(i++, "{}: {}", 13161, NETWORK_DNS1_ADDRESS);
|
||||
SetControlLabel(i++, "{}: {}", 20307, NETWORK_DNS2_ADDRESS);
|
||||
- SetControlLabel(i++, "{} {}", 13295, SYSTEM_INTERNET_STATE);
|
||||
}
|
||||
|
||||
else if (m_section == CONTROL_BT_VIDEO)
|
||||
|
@ -23,7 +23,7 @@ credits to vpeter4 for the patch
|
||||
#include "AddonManager.h"
|
||||
#include "addons/settings/AddonSettings.h"
|
||||
#include "filesystem/Directory.h"
|
||||
@@ -385,6 +389,28 @@ void OnPreInstall(const AddonPtr& addon)
|
||||
@@ -390,6 +394,28 @@ void OnPreInstall(const AddonPtr& addon)
|
||||
|
||||
void OnPostInstall(const AddonPtr& addon, bool update, bool modal)
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ this should probably be removed after OE 6
|
||||
|
||||
--- a/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
+++ b/xbmc/windowing/X11/WinSystemX11.cpp
|
||||
@@ -753,8 +753,6 @@ bool CWinSystemX11::SetWindow(int width,
|
||||
@@ -756,8 +756,6 @@ bool CWinSystemX11::SetWindow(int width,
|
||||
|
||||
if (fullscreen && hasWM)
|
||||
{
|
||||
|
@ -9,11 +9,11 @@ Subject: [PATCH 07/13] disable minimize
|
||||
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -4818,7 +4818,6 @@ bool CApplication::SwitchToFullScreen(bo
|
||||
@@ -2055,7 +2055,6 @@ void CApplication::OnApplicationMessage(
|
||||
break;
|
||||
|
||||
void CApplication::Minimize()
|
||||
{
|
||||
- CServiceBroker::GetWinSystem()->Minimize();
|
||||
}
|
||||
case TMSG_MINIMIZE:
|
||||
- CServiceBroker::GetWinSystem()->Minimize();
|
||||
break;
|
||||
|
||||
std::string CApplication::GetCurrentPlayer()
|
||||
case TMSG_EXECUTE_OS:
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/xbmc/addons/Addon.cpp
|
||||
+++ b/xbmc/addons/Addon.cpp
|
||||
@@ -380,6 +380,37 @@ AddonVersion CAddon::GetDependencyVersio
|
||||
@@ -385,6 +385,37 @@ AddonVersion CAddon::GetDependencyVersio
|
||||
return m_addonInfo->DependencyVersion(dependencyID);
|
||||
}
|
||||
|
||||
@ -38,7 +38,7 @@
|
||||
void OnPreInstall(const AddonPtr& addon)
|
||||
{
|
||||
//Fallback to the pre-install callback in the addon.
|
||||
@@ -409,6 +440,8 @@ void OnPostInstall(const AddonPtr& addon
|
||||
@@ -414,6 +445,8 @@ void OnPostInstall(const AddonPtr& addon
|
||||
}
|
||||
closedir(addonsDir);
|
||||
}
|
||||
@ -47,7 +47,7 @@
|
||||
// OE
|
||||
|
||||
addon->OnPostInstall(update, modal);
|
||||
@@ -416,6 +449,8 @@ void OnPostInstall(const AddonPtr& addon
|
||||
@@ -421,6 +454,8 @@ void OnPostInstall(const AddonPtr& addon
|
||||
|
||||
void OnPreUnInstall(const AddonPtr& addon)
|
||||
{
|
||||
@ -76,7 +76,7 @@
|
||||
public:
|
||||
--- a/xbmc/addons/AddonManager.cpp
|
||||
+++ b/xbmc/addons/AddonManager.cpp
|
||||
@@ -789,6 +789,7 @@ bool CAddonMgr::DisableAddon(const std::
|
||||
@@ -795,6 +795,7 @@ bool CAddonMgr::DisableAddon(const std::
|
||||
AddonPtr addon;
|
||||
if (GetAddon(id, addon, ADDON_UNKNOWN, OnlyEnabled::NO) && addon != NULL)
|
||||
{
|
||||
@ -84,7 +84,7 @@
|
||||
CServiceBroker::GetEventLog().Add(EventPtr(new CAddonManagementEvent(addon, 24141)));
|
||||
}
|
||||
|
||||
@@ -834,6 +835,7 @@ bool CAddonMgr::EnableSingle(const std::
|
||||
@@ -840,6 +841,7 @@ bool CAddonMgr::EnableSingle(const std::
|
||||
if (!m_database.EnableAddon(id))
|
||||
return false;
|
||||
m_disabled.erase(id);
|
||||
|
@ -24,7 +24,7 @@ so, when shutdown/reboot is requested:
|
||||
|
||||
--- a/xbmc/Application.cpp
|
||||
+++ b/xbmc/Application.cpp
|
||||
@@ -2118,12 +2118,12 @@ void CApplication::OnApplicationMessage(
|
||||
@@ -1935,12 +1935,12 @@ void CApplication::OnApplicationMessage(
|
||||
switch (msg)
|
||||
{
|
||||
case TMSG_POWERDOWN:
|
||||
@ -39,7 +39,7 @@ so, when shutdown/reboot is requested:
|
||||
break;
|
||||
|
||||
case TMSG_SHUTDOWN:
|
||||
@@ -2144,12 +2144,13 @@ void CApplication::OnApplicationMessage(
|
||||
@@ -1961,12 +1961,13 @@ void CApplication::OnApplicationMessage(
|
||||
|
||||
case TMSG_RESTART:
|
||||
case TMSG_RESET:
|
||||
@ -54,7 +54,7 @@ so, when shutdown/reboot is requested:
|
||||
Stop(EXITCODE_RESTARTAPP);
|
||||
#endif
|
||||
break;
|
||||
@@ -2635,6 +2636,17 @@ bool CApplication::Cleanup()
|
||||
@@ -2456,6 +2457,17 @@ bool CApplication::Cleanup()
|
||||
}
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@ so, when shutdown/reboot is requested:
|
||||
void CApplication::Stop(int exitCode)
|
||||
{
|
||||
CLog::Log(LOGINFO, "Stopping player");
|
||||
@@ -2661,7 +2673,7 @@ void CApplication::Stop(int exitCode)
|
||||
@@ -2482,7 +2494,7 @@ void CApplication::Stop(int exitCode)
|
||||
m_frameMoveGuard.unlock();
|
||||
|
||||
CVariant vExitCode(CVariant::VariantTypeObject);
|
||||
@ -81,7 +81,7 @@ so, when shutdown/reboot is requested:
|
||||
CServiceBroker::GetAnnouncementManager()->Announce(ANNOUNCEMENT::System, "OnQuit", vExitCode);
|
||||
|
||||
// Abort any active screensaver
|
||||
@@ -2693,7 +2705,6 @@ void CApplication::Stop(int exitCode)
|
||||
@@ -2514,7 +2526,6 @@ void CApplication::Stop(int exitCode)
|
||||
// Needs cleaning up
|
||||
CApplicationMessenger::GetInstance().Stop();
|
||||
m_AppFocused = false;
|
||||
@ -89,7 +89,7 @@ so, when shutdown/reboot is requested:
|
||||
CLog::Log(LOGINFO, "Stopping all");
|
||||
|
||||
// cancel any jobs from the jobmanager
|
||||
@@ -4347,7 +4358,7 @@ void CApplication::ProcessSlow()
|
||||
@@ -4157,7 +4168,7 @@ void CApplication::ProcessSlow()
|
||||
if (CPlatformPosix::TestQuitFlag())
|
||||
{
|
||||
CLog::Log(LOGINFO, "Quitting due to POSIX signal");
|
||||
@ -100,8 +100,8 @@ so, when shutdown/reboot is requested:
|
||||
|
||||
--- a/xbmc/Application.h
|
||||
+++ b/xbmc/Application.h
|
||||
@@ -156,6 +156,7 @@ public:
|
||||
bool StartServer(enum ESERVERS eServer, bool bStart, bool bWait = false);
|
||||
@@ -138,6 +138,7 @@ public:
|
||||
bool InitWindow(RESOLUTION res = RES_INVALID);
|
||||
|
||||
bool IsCurrentThread() const;
|
||||
+ void SetExitCode(int exitCode);
|
||||
@ -110,7 +110,7 @@ so, when shutdown/reboot is requested:
|
||||
bool LoadCustomWindows();
|
||||
--- a/xbmc/XBApplicationEx.cpp
|
||||
+++ b/xbmc/XBApplicationEx.cpp
|
||||
@@ -23,6 +23,7 @@ CXBApplicationEx::CXBApplicationEx()
|
||||
@@ -22,6 +22,7 @@ CXBApplicationEx::CXBApplicationEx()
|
||||
m_bStop = false;
|
||||
m_AppFocused = true;
|
||||
m_ExitCode = EXITCODE_QUIT;
|
||||
|
@ -1,10 +1,10 @@
|
||||
--- a/xbmc/windows/GUIWindowSystemInfo.cpp
|
||||
+++ b/xbmc/windows/GUIWindowSystemInfo.cpp
|
||||
@@ -99,7 +99,6 @@ void CGUIWindowSystemInfo::FrameMove()
|
||||
SetControlLabel(i++, "%s %s", 13283, SYSTEM_OS_VERSION_INFO);
|
||||
SetControlLabel(i++, "%s: %s", 12390, SYSTEM_UPTIME);
|
||||
SetControlLabel(i++, "%s: %s", 12394, SYSTEM_TOTALUPTIME);
|
||||
- SetControlLabel(i++, "%s: %s", 12395, SYSTEM_BATTERY_LEVEL);
|
||||
SetControlLabel(i++, "{} {}", 13283, SYSTEM_OS_VERSION_INFO);
|
||||
SetControlLabel(i++, "{}: {}", 12390, SYSTEM_UPTIME);
|
||||
SetControlLabel(i++, "{}: {}", 12394, SYSTEM_TOTALUPTIME);
|
||||
- SetControlLabel(i++, "{}: {}", 12395, SYSTEM_BATTERY_LEVEL);
|
||||
}
|
||||
|
||||
else if (m_section == CONTROL_BT_STORAGE)
|
||||
|
@ -9,7 +9,7 @@ Subject: [PATCH] refresh /etc/environment on install and uninstall
|
||||
|
||||
--- a/xbmc/addons/Addon.cpp
|
||||
+++ b/xbmc/addons/Addon.cpp
|
||||
@@ -445,6 +445,9 @@ void OnPostInstall(const AddonPtr& addon
|
||||
@@ -450,6 +450,9 @@ void OnPostInstall(const AddonPtr& addon
|
||||
// OE
|
||||
|
||||
addon->OnPostInstall(update, modal);
|
||||
@ -19,7 +19,7 @@ Subject: [PATCH] refresh /etc/environment on install and uninstall
|
||||
}
|
||||
|
||||
void OnPreUnInstall(const AddonPtr& addon)
|
||||
@@ -457,6 +460,9 @@ void OnPreUnInstall(const AddonPtr& addo
|
||||
@@ -462,6 +465,9 @@ void OnPreUnInstall(const AddonPtr& addo
|
||||
void OnPostUnInstall(const AddonPtr& addon)
|
||||
{
|
||||
addon->OnPostUnInstall();
|
||||
|
@ -10,18 +10,13 @@ https://github.com/xbmc/xbmc/pull/19091
|
||||
xbmc/platform/linux/PlatformLinux.h | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/xbmc/platform/linux/PlatformLinux.h b/xbmc/platform/linux/PlatformLinux.h
|
||||
index c45d41143a..9a872a5f55 100644
|
||||
--- a/xbmc/platform/linux/PlatformLinux.h
|
||||
+++ b/xbmc/platform/linux/PlatformLinux.h
|
||||
@@ -21,7 +21,6 @@ public:
|
||||
~CPlatformLinux() override = default;
|
||||
|
||||
bool Init() override;
|
||||
bool InitStageOne() override;
|
||||
- bool IsConfigureAddonsAtStartupEnabled() override { return true; };
|
||||
|
||||
private:
|
||||
std::unique_ptr<OPTIONALS::CLircContainer, OPTIONALS::delete_CLircContainer> m_lirc;
|
||||
--
|
||||
2.31.1
|
||||
|
||||
|
@ -3,8 +3,8 @@
|
||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="ffmpeg"
|
||||
PKG_VERSION="4.3.2-Matrix-19.1"
|
||||
PKG_SHA256="c2558449f1eddb6b13ed168288388c7804049c2af8d6db4952ccd6b4af6e9fdd"
|
||||
PKG_VERSION="4.4-N-Alpha1"
|
||||
PKG_SHA256="eb396f46ef7c5ac01b67818d0f2c0516fd4ab32aa9065a9ffa71eebede67ff20"
|
||||
PKG_LICENSE="LGPLv2.1+"
|
||||
PKG_SITE="https://ffmpeg.org"
|
||||
PKG_URL="https://github.com/xbmc/FFmpeg/archive/${PKG_VERSION}.tar.gz"
|
||||
|
@ -1,4 +1,4 @@
|
||||
From 823b70bfa0f451a0f8cd0539e1707f7bb7ff5891 Mon Sep 17 00:00:00 2001
|
||||
From 8f7c8a0f9e28641880d72996b9452e0a9da1288c Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Wed, 10 Apr 2019 13:39:21 -0700
|
||||
Subject: [PATCH 1/2] libavcodec/libdav1d: add libdav1d_get_format method to
|
||||
@ -18,10 +18,10 @@ decoding is properly activated.
|
||||
1 file changed, 11 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c
|
||||
index bbb3ec1e6c..d8a7555c29 100644
|
||||
index 3c2a68b7e0..68996426cc 100644
|
||||
--- a/libavcodec/libdav1d.c
|
||||
+++ b/libavcodec/libdav1d.c
|
||||
@@ -55,6 +55,16 @@ static const enum AVPixelFormat pix_fmt_rgb[3] = {
|
||||
@@ -58,6 +58,16 @@ static const enum AVPixelFormat pix_fmt_rgb[3] = {
|
||||
AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12,
|
||||
};
|
||||
|
||||
@ -38,7 +38,7 @@ index bbb3ec1e6c..d8a7555c29 100644
|
||||
static void libdav1d_log_callback(void *opaque, const char *fmt, va_list vl)
|
||||
{
|
||||
AVCodecContext *c = opaque;
|
||||
@@ -259,6 +269,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame)
|
||||
@@ -264,6 +274,7 @@ static int libdav1d_receive_frame(AVCodecContext *c, AVFrame *frame)
|
||||
c->profile = p->seq_hdr->profile;
|
||||
c->level = ((p->seq_hdr->operating_points[0].major_level - 2) << 2)
|
||||
| p->seq_hdr->operating_points[0].minor_level;
|
||||
@ -47,7 +47,7 @@ index bbb3ec1e6c..d8a7555c29 100644
|
||||
frame->height = p->p.h;
|
||||
if (c->width != p->p.w || c->height != p->p.h) {
|
||||
|
||||
From 1485078472d107806d1d3f52f89e3ff47ae8715c Mon Sep 17 00:00:00 2001
|
||||
From 635cf67be3d37159c96e75f00399b3e232372251 Mon Sep 17 00:00:00 2001
|
||||
From: chewitt <github@chrishewitt.net>
|
||||
Date: Sun, 11 Aug 2019 07:08:19 +0000
|
||||
Subject: [PATCH 2/2] add long-term yuv2rgb logging patch
|
||||
@ -57,7 +57,7 @@ Subject: [PATCH 2/2] add long-term yuv2rgb logging patch
|
||||
1 file changed, 4 deletions(-)
|
||||
|
||||
diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c
|
||||
index 588462504e..20364ff318 100644
|
||||
index 6a3956e8e2..d6f9aea166 100644
|
||||
--- a/libswscale/yuv2rgb.c
|
||||
+++ b/libswscale/yuv2rgb.c
|
||||
@@ -688,10 +688,6 @@ SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c)
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,122 +1,7 @@
|
||||
From b29b5b9f529bbb10cd9880adebf0fb287dcf233b Mon Sep 17 00:00:00 2001
|
||||
From: Andriy Gelman <andriy.gelman@gmail.com>
|
||||
Date: Tue, 28 Apr 2020 22:54:21 -0400
|
||||
Subject: [PATCH 01/11] avcodec/v4l2_m2m: Adapt to call close() on init fail
|
||||
|
||||
This fixes several mem leaks when init of encoder/decoder failed.
|
||||
|
||||
Fixes ticket #8285
|
||||
|
||||
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
|
||||
---
|
||||
libavcodec/v4l2_m2m.c | 8 ++++++++
|
||||
libavcodec/v4l2_m2m_dec.c | 10 ++--------
|
||||
libavcodec/v4l2_m2m_enc.c | 1 +
|
||||
3 files changed, 11 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m.c b/libavcodec/v4l2_m2m.c
|
||||
index e48b3a8ccf..bfea70ff0c 100644
|
||||
--- a/libavcodec/v4l2_m2m.c
|
||||
+++ b/libavcodec/v4l2_m2m.c
|
||||
@@ -338,6 +338,13 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv)
|
||||
V4L2m2mContext *s = priv->context;
|
||||
int ret;
|
||||
|
||||
+ if (!s)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (av_codec_is_decoder(s->avctx->codec))
|
||||
+ av_packet_unref(&s->buf_pkt);
|
||||
+
|
||||
+ if (s->fd >= 0) {
|
||||
ret = ff_v4l2_context_set_status(&s->output, VIDIOC_STREAMOFF);
|
||||
if (ret)
|
||||
av_log(s->avctx, AV_LOG_ERROR, "VIDIOC_STREAMOFF %s\n", s->output.name);
|
||||
@@ -345,6 +352,7 @@ int ff_v4l2_m2m_codec_end(V4L2m2mPriv *priv)
|
||||
ret = ff_v4l2_context_set_status(&s->capture, VIDIOC_STREAMOFF);
|
||||
if (ret)
|
||||
av_log(s->avctx, AV_LOG_ERROR, "VIDIOC_STREAMOFF %s\n", s->capture.name);
|
||||
+ }
|
||||
|
||||
ff_v4l2_context_release(&s->output);
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index 3e17e0fcac..a2ea0ff73a 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -212,9 +212,6 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
ret = ff_v4l2_m2m_codec_init(priv);
|
||||
if (ret) {
|
||||
av_log(avctx, AV_LOG_ERROR, "can't configure decoder\n");
|
||||
- s->self_ref = NULL;
|
||||
- av_buffer_unref(&priv->context_ref);
|
||||
-
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -223,10 +220,7 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
|
||||
static av_cold int v4l2_decode_close(AVCodecContext *avctx)
|
||||
{
|
||||
- V4L2m2mPriv *priv = avctx->priv_data;
|
||||
- V4L2m2mContext *s = priv->context;
|
||||
- av_packet_unref(&s->buf_pkt);
|
||||
- return ff_v4l2_m2m_codec_end(priv);
|
||||
+ return ff_v4l2_m2m_codec_end(avctx->priv_data);
|
||||
}
|
||||
|
||||
#define OFFSET(x) offsetof(V4L2m2mPriv, x)
|
||||
@@ -261,7 +255,7 @@ static const AVOption options[] = {
|
||||
.close = v4l2_decode_close, \
|
||||
.bsfs = bsf_name, \
|
||||
.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \
|
||||
- .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS, \
|
||||
+ .caps_internal = FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_CLEANUP, \
|
||||
.wrapper_name = "v4l2m2m", \
|
||||
}
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m_enc.c b/libavcodec/v4l2_m2m_enc.c
|
||||
index 32321f392f..9f1b2c2ffc 100644
|
||||
--- a/libavcodec/v4l2_m2m_enc.c
|
||||
+++ b/libavcodec/v4l2_m2m_enc.c
|
||||
@@ -416,6 +416,7 @@ static const AVCodecDefault v4l2_m2m_defaults[] = {
|
||||
.close = v4l2_encode_close, \
|
||||
.defaults = v4l2_m2m_defaults, \
|
||||
.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY, \
|
||||
+ .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, \
|
||||
.wrapper_name = "v4l2m2m", \
|
||||
}
|
||||
|
||||
|
||||
From 7aaac68934c0e03a78c9f477ec64e522729a64b7 Mon Sep 17 00:00:00 2001
|
||||
From: Andriy Gelman <andriy.gelman@gmail.com>
|
||||
Date: Tue, 5 May 2020 01:54:54 -0400
|
||||
Subject: [PATCH 02/11] avcodec/v4l2_m2m_dec: Use av_packet_move_ref()
|
||||
|
||||
Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
|
||||
---
|
||||
libavcodec/v4l2_m2m_dec.c | 3 +--
|
||||
1 file changed, 1 insertion(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index a2ea0ff73a..45e9a8e9fe 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -142,8 +142,7 @@ static int v4l2_receive_frame(AVCodecContext *avctx, AVFrame *frame)
|
||||
int ret;
|
||||
|
||||
if (s->buf_pkt.size) {
|
||||
- avpkt = s->buf_pkt;
|
||||
- memset(&s->buf_pkt, 0, sizeof(AVPacket));
|
||||
+ av_packet_move_ref(&avpkt, &s->buf_pkt);
|
||||
} else {
|
||||
ret = ff_decode_get_packet(avctx, &avpkt);
|
||||
if (ret < 0 && ret != AVERROR_EOF)
|
||||
|
||||
From c6b85ed30f06ea99513b13cc768a922ebe4d68c2 Mon Sep 17 00:00:00 2001
|
||||
From 40a990827399c05ad3ce3f8242321bd8a67aa0bd Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Tue, 24 Apr 2018 23:00:23 -0700
|
||||
Subject: [PATCH 03/11] libavcodec: v4l2m2m: output AVDRMFrameDescriptor
|
||||
Subject: [PATCH 1/9] libavcodec: v4l2m2m: output AVDRMFrameDescriptor
|
||||
|
||||
This allows for a zero-copy output by exporting the v4l2 buffer then wrapping that buffer
|
||||
in the AVDRMFrameDescriptor like it is done in rkmpp.
|
||||
@ -157,7 +42,7 @@ V5:
|
||||
5 files changed, 213 insertions(+), 12 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
|
||||
index 02f23d954b..4bb2bf6f87 100644
|
||||
index 4b2679eb38..cbd3e5680d 100644
|
||||
--- a/libavcodec/v4l2_buffers.c
|
||||
+++ b/libavcodec/v4l2_buffers.c
|
||||
@@ -21,6 +21,7 @@
|
||||
@ -397,7 +282,7 @@ index 8dbc7fc104..037e667997 100644
|
||||
* of how many context-refs we are holding. */
|
||||
AVBufferRef *context_ref;
|
||||
diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
|
||||
index 29b144ed73..7a92df2c3e 100644
|
||||
index ff1ea8e57b..e9e8c27a54 100644
|
||||
--- a/libavcodec/v4l2_context.c
|
||||
+++ b/libavcodec/v4l2_context.c
|
||||
@@ -455,22 +455,54 @@ static int v4l2_release_buffers(V4L2Context* ctx)
|
||||
@ -460,10 +345,10 @@ index 29b144ed73..7a92df2c3e 100644
|
||||
|
||||
static inline int v4l2_try_raw_format(V4L2Context* ctx, enum AVPixelFormat pixfmt)
|
||||
diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h
|
||||
index 456281f48c..4ee0be653b 100644
|
||||
index b67b216331..0fbd19a013 100644
|
||||
--- a/libavcodec/v4l2_m2m.h
|
||||
+++ b/libavcodec/v4l2_m2m.h
|
||||
@@ -63,6 +63,9 @@ typedef struct V4L2m2mContext {
|
||||
@@ -66,6 +66,9 @@ typedef struct V4L2m2mContext {
|
||||
|
||||
/* reference back to V4L2m2mPriv */
|
||||
void *priv;
|
||||
@ -474,7 +359,7 @@ index 456281f48c..4ee0be653b 100644
|
||||
|
||||
typedef struct V4L2m2mPriv {
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index 45e9a8e9fe..eb6ecc8ed5 100644
|
||||
index ab07c0a24a..6bc7442702 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -23,6 +23,9 @@
|
||||
@ -497,7 +382,7 @@ index 45e9a8e9fe..eb6ecc8ed5 100644
|
||||
#include "v4l2_context.h"
|
||||
#include "v4l2_m2m.h"
|
||||
#include "v4l2_fmt.h"
|
||||
@@ -207,6 +213,15 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
@@ -201,6 +207,15 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
capture->av_codec_id = AV_CODEC_ID_RAWVIDEO;
|
||||
capture->av_pix_fmt = avctx->pix_fmt;
|
||||
|
||||
@ -513,7 +398,7 @@ index 45e9a8e9fe..eb6ecc8ed5 100644
|
||||
s->avctx = avctx;
|
||||
ret = ff_v4l2_m2m_codec_init(priv);
|
||||
if (ret) {
|
||||
@@ -232,6 +247,11 @@ static const AVOption options[] = {
|
||||
@@ -226,6 +241,11 @@ static const AVOption options[] = {
|
||||
{ NULL},
|
||||
};
|
||||
|
||||
@ -525,7 +410,7 @@ index 45e9a8e9fe..eb6ecc8ed5 100644
|
||||
#define M2MDEC_CLASS(NAME) \
|
||||
static const AVClass v4l2_m2m_ ## NAME ## _dec_class = { \
|
||||
.class_name = #NAME "_v4l2m2m_decoder", \
|
||||
@@ -255,6 +275,9 @@ static const AVOption options[] = {
|
||||
@@ -249,6 +269,9 @@ static const AVOption options[] = {
|
||||
.bsfs = bsf_name, \
|
||||
.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \
|
||||
.caps_internal = FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_CLEANUP, \
|
||||
@ -536,10 +421,10 @@ index 45e9a8e9fe..eb6ecc8ed5 100644
|
||||
}
|
||||
|
||||
|
||||
From 2b5cd753892dceba3b211053a6266c40aab38c55 Mon Sep 17 00:00:00 2001
|
||||
From 9a2a361c2c84c8da54cd3a74b0d0bb966df8fe69 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Thu, 16 Aug 2018 21:09:40 -0700
|
||||
Subject: [PATCH 04/11] libavcodec: v4l2m2m: depends on libdrm
|
||||
Subject: [PATCH 2/9] libavcodec: v4l2m2m: depends on libdrm
|
||||
|
||||
---
|
||||
configure | 1 +
|
||||
@ -547,10 +432,10 @@ Subject: [PATCH 04/11] libavcodec: v4l2m2m: depends on libdrm
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 8569a60bf8..a049707dd6 100755
|
||||
index d7a3f507e8..d203f6f7da 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3401,6 +3401,7 @@ sndio_indev_deps="sndio"
|
||||
@@ -3437,6 +3437,7 @@ sndio_indev_deps="sndio"
|
||||
sndio_outdev_deps="sndio"
|
||||
v4l2_indev_deps_any="linux_videodev2_h sys_videoio_h"
|
||||
v4l2_indev_suggest="libv4l2"
|
||||
@ -559,7 +444,7 @@ index 8569a60bf8..a049707dd6 100755
|
||||
v4l2_outdev_suggest="libv4l2"
|
||||
vfwcap_indev_deps="vfw32 vfwcap_defines"
|
||||
diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
|
||||
index 4bb2bf6f87..c36a73d1fa 100644
|
||||
index cbd3e5680d..bebe2c1796 100644
|
||||
--- a/libavcodec/v4l2_buffers.c
|
||||
+++ b/libavcodec/v4l2_buffers.c
|
||||
@@ -21,7 +21,7 @@
|
||||
@ -572,10 +457,10 @@ index 4bb2bf6f87..c36a73d1fa 100644
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
From 09a0f1b99548a249991891ee4e02ae6613b545d7 Mon Sep 17 00:00:00 2001
|
||||
From 7b0fa2d859c12a8a129c884d16673ca731336c06 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Thu, 16 Aug 2018 21:10:13 -0700
|
||||
Subject: [PATCH 05/11] libavcodec: v4l2m2m: set format_modifier to
|
||||
Subject: [PATCH 3/9] libavcodec: v4l2m2m: set format_modifier to
|
||||
DRM_FORMAT_MOD_LINEAR
|
||||
|
||||
---
|
||||
@ -583,7 +468,7 @@ Subject: [PATCH 05/11] libavcodec: v4l2m2m: set format_modifier to
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
|
||||
index c36a73d1fa..072b77bbda 100644
|
||||
index bebe2c1796..12037d5d66 100644
|
||||
--- a/libavcodec/v4l2_buffers.c
|
||||
+++ b/libavcodec/v4l2_buffers.c
|
||||
@@ -328,10 +328,12 @@ static int v4l2_buffer_export_drm(V4L2Buffer* avbuf)
|
||||
@ -600,10 +485,10 @@ index c36a73d1fa..072b77bbda 100644
|
||||
}
|
||||
|
||||
|
||||
From e8df5a982f705aaba1e03aef653169bc17a0d464 Mon Sep 17 00:00:00 2001
|
||||
From e1857456c8f24e40d5c898886f2f51014e59ee9d Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Thu, 16 Aug 2018 21:10:53 -0700
|
||||
Subject: [PATCH 06/11] libavcodec: v4l2m2m: only mmap the buffer when it is
|
||||
Subject: [PATCH 4/9] libavcodec: v4l2m2m: only mmap the buffer when it is
|
||||
output type and drm prime is used
|
||||
|
||||
---
|
||||
@ -611,7 +496,7 @@ Subject: [PATCH 06/11] libavcodec: v4l2m2m: only mmap the buffer when it is
|
||||
1 file changed, 14 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
|
||||
index 072b77bbda..8162531973 100644
|
||||
index 12037d5d66..1adf518ab9 100644
|
||||
--- a/libavcodec/v4l2_buffers.c
|
||||
+++ b/libavcodec/v4l2_buffers.c
|
||||
@@ -662,14 +662,22 @@ int ff_v4l2_buffer_initialize(V4L2Buffer* avbuf, int index)
|
||||
@ -644,20 +529,20 @@ index 072b77bbda..8162531973 100644
|
||||
|
||||
if (avbuf->plane_info[i].mm_addr == MAP_FAILED)
|
||||
|
||||
From 4fb7664bb6be542b691323a03050cdd024585afc Mon Sep 17 00:00:00 2001
|
||||
From c8fc3ea1b5777546f7ec72a54b053a2d4fa9fd59 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Thu, 16 Aug 2018 21:11:38 -0700
|
||||
Subject: [PATCH 07/11] libavcodec: v4l2m2m: allow using software pixel formats
|
||||
Subject: [PATCH 5/9] libavcodec: v4l2m2m: allow using software pixel formats
|
||||
|
||||
---
|
||||
libavcodec/v4l2_m2m_dec.c | 11 ++++++++++-
|
||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index eb6ecc8ed5..3b2449ae6c 100644
|
||||
index 6bc7442702..4b9baf833c 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -219,8 +219,16 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
@@ -213,8 +213,16 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
* - the DRM frame format is passed in the DRM frame descriptor layer.
|
||||
* check the v4l2_get_drm_frame function.
|
||||
*/
|
||||
@ -675,7 +560,7 @@ index eb6ecc8ed5..3b2449ae6c 100644
|
||||
|
||||
s->avctx = avctx;
|
||||
ret = ff_v4l2_m2m_codec_init(priv);
|
||||
@@ -276,6 +284,7 @@ static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = {
|
||||
@@ -270,6 +278,7 @@ static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = {
|
||||
.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_AVOID_PROBING, \
|
||||
.caps_internal = FF_CODEC_CAP_SETS_PKT_DTS | FF_CODEC_CAP_INIT_CLEANUP, \
|
||||
.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_DRM_PRIME, \
|
||||
@ -684,10 +569,10 @@ index eb6ecc8ed5..3b2449ae6c 100644
|
||||
.hw_configs = v4l2_m2m_hw_configs, \
|
||||
.wrapper_name = "v4l2m2m", \
|
||||
|
||||
From 27ae887df07992385b1afc9b532f978066e83774 Mon Sep 17 00:00:00 2001
|
||||
From 13f02e940f083f19dbe8b9ac8fc7df45700dd36e Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Mon, 24 Sep 2018 13:39:31 -0700
|
||||
Subject: [PATCH 08/11] libavcodec: v4l2m2m: implement hwcontext
|
||||
Subject: [PATCH 6/9] libavcodec: v4l2m2m: implement hwcontext
|
||||
|
||||
---
|
||||
libavcodec/v4l2_buffers.c | 22 ++++++++++++++++++++++
|
||||
@ -697,7 +582,7 @@ Subject: [PATCH 08/11] libavcodec: v4l2m2m: implement hwcontext
|
||||
4 files changed, 37 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c
|
||||
index 8162531973..9c5d471c9b 100644
|
||||
index 1adf518ab9..6e2a544394 100644
|
||||
--- a/libavcodec/v4l2_buffers.c
|
||||
+++ b/libavcodec/v4l2_buffers.c
|
||||
@@ -435,6 +435,7 @@ static int v4l2_buffer_buf_to_swframe(AVFrame *frame, V4L2Buffer *avbuf)
|
||||
@ -750,10 +635,10 @@ index 22a9532444..e804e94131 100644
|
||||
|
||||
/**
|
||||
diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h
|
||||
index 4ee0be653b..61cb919771 100644
|
||||
index 0fbd19a013..adf5997bb5 100644
|
||||
--- a/libavcodec/v4l2_m2m.h
|
||||
+++ b/libavcodec/v4l2_m2m.h
|
||||
@@ -64,6 +64,8 @@ typedef struct V4L2m2mContext {
|
||||
@@ -67,6 +67,8 @@ typedef struct V4L2m2mContext {
|
||||
/* reference back to V4L2m2mPriv */
|
||||
void *priv;
|
||||
|
||||
@ -763,7 +648,7 @@ index 4ee0be653b..61cb919771 100644
|
||||
int output_drm;
|
||||
} V4L2m2mContext;
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index 3b2449ae6c..c6b865fde8 100644
|
||||
index 4b9baf833c..6c23693137 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -35,6 +35,7 @@
|
||||
@ -774,7 +659,7 @@ index 3b2449ae6c..c6b865fde8 100644
|
||||
|
||||
#include "v4l2_context.h"
|
||||
#include "v4l2_m2m.h"
|
||||
@@ -230,6 +231,16 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
@@ -224,6 +225,16 @@ static av_cold int v4l2_decode_init(AVCodecContext *avctx)
|
||||
break;
|
||||
}
|
||||
|
||||
@ -792,10 +677,10 @@ index 3b2449ae6c..c6b865fde8 100644
|
||||
ret = ff_v4l2_m2m_codec_init(priv);
|
||||
if (ret) {
|
||||
|
||||
From aee464209ec6ad060d352dfb638344a1f4db3ce4 Mon Sep 17 00:00:00 2001
|
||||
From 34be198b8039c9df434792f19f0985e45419407e Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Mon, 4 May 2020 13:01:29 -0700
|
||||
Subject: [PATCH 09/11] libavcodec: v4l2m2m: allow lower minimum buffer values
|
||||
Subject: [PATCH 7/9] libavcodec: v4l2m2m: allow lower minimum buffer values
|
||||
|
||||
There is no reason to enforce a high minimum. In the context
|
||||
of streaming only a few output buffers and capture buffers
|
||||
@ -807,7 +692,7 @@ alleviate memory pressure when decoding 4K media.
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h
|
||||
index 61cb919771..feeb162812 100644
|
||||
index adf5997bb5..1082b9dad2 100644
|
||||
--- a/libavcodec/v4l2_m2m.h
|
||||
+++ b/libavcodec/v4l2_m2m.h
|
||||
@@ -38,7 +38,7 @@
|
||||
@ -820,10 +705,10 @@ index 61cb919771..feeb162812 100644
|
||||
typedef struct V4L2m2mContext {
|
||||
char devname[PATH_MAX];
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index c6b865fde8..b9725be377 100644
|
||||
index 6c23693137..e323c37052 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -262,7 +262,7 @@ static av_cold int v4l2_decode_close(AVCodecContext *avctx)
|
||||
@@ -256,7 +256,7 @@ static av_cold int v4l2_decode_close(AVCodecContext *avctx)
|
||||
static const AVOption options[] = {
|
||||
V4L_M2M_DEFAULT_OPTS,
|
||||
{ "num_capture_buffers", "Number of buffers in the capture context",
|
||||
@ -833,10 +718,10 @@ index c6b865fde8..b9725be377 100644
|
||||
};
|
||||
|
||||
|
||||
From ffc4419f456c00ab71cf93f792b0473c6de14e64 Mon Sep 17 00:00:00 2001
|
||||
From 2956fd1881d28abf6bf77bd9a57866c4ba81d199 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Wed, 6 May 2020 11:12:58 -0700
|
||||
Subject: [PATCH 10/11] libavcodec: v4l2m2m: add option to specify pixel format
|
||||
Subject: [PATCH 8/9] libavcodec: v4l2m2m: add option to specify pixel format
|
||||
used by the decoder
|
||||
|
||||
---
|
||||
@ -846,7 +731,7 @@ Subject: [PATCH 10/11] libavcodec: v4l2m2m: add option to specify pixel format
|
||||
3 files changed, 12 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/v4l2_context.c b/libavcodec/v4l2_context.c
|
||||
index 7a92df2c3e..fa2deae888 100644
|
||||
index e9e8c27a54..a97b70e836 100644
|
||||
--- a/libavcodec/v4l2_context.c
|
||||
+++ b/libavcodec/v4l2_context.c
|
||||
@@ -531,6 +531,8 @@ static inline int v4l2_try_raw_format(V4L2Context* ctx, enum AVPixelFormat pixfm
|
||||
@ -873,7 +758,7 @@ index 7a92df2c3e..fa2deae888 100644
|
||||
ret = v4l2_try_raw_format(ctx, pixfmt);
|
||||
if (ret){
|
||||
diff --git a/libavcodec/v4l2_m2m.h b/libavcodec/v4l2_m2m.h
|
||||
index feeb162812..0e88bf9329 100644
|
||||
index 1082b9dad2..943a8923c4 100644
|
||||
--- a/libavcodec/v4l2_m2m.h
|
||||
+++ b/libavcodec/v4l2_m2m.h
|
||||
@@ -30,6 +30,7 @@
|
||||
@ -884,7 +769,7 @@ index feeb162812..0e88bf9329 100644
|
||||
#include "v4l2_context.h"
|
||||
|
||||
#define container_of(ptr, type, member) ({ \
|
||||
@@ -78,6 +79,7 @@ typedef struct V4L2m2mPriv {
|
||||
@@ -81,6 +82,7 @@ typedef struct V4L2m2mPriv {
|
||||
|
||||
int num_output_buffers;
|
||||
int num_capture_buffers;
|
||||
@ -893,10 +778,10 @@ index feeb162812..0e88bf9329 100644
|
||||
|
||||
/**
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index b9725be377..6109deee8a 100644
|
||||
index e323c37052..363e998142 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -263,6 +263,7 @@ static const AVOption options[] = {
|
||||
@@ -257,6 +257,7 @@ static const AVOption options[] = {
|
||||
V4L_M2M_DEFAULT_OPTS,
|
||||
{ "num_capture_buffers", "Number of buffers in the capture context",
|
||||
OFFSET(num_capture_buffers), AV_OPT_TYPE_INT, {.i64 = 20}, 2, INT_MAX, FLAGS },
|
||||
@ -905,20 +790,20 @@ index b9725be377..6109deee8a 100644
|
||||
};
|
||||
|
||||
|
||||
From 8595d06d4909bbec0aa14625fcfc869c6bcef696 Mon Sep 17 00:00:00 2001
|
||||
From 2bb6d0cb244590f0c70dd111ed978cd87fa3bee1 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Rusak <lorusak@gmail.com>
|
||||
Date: Mon, 24 Sep 2018 13:39:56 -0700
|
||||
Subject: [PATCH 11/11] libavcodec: v4l2m2m: implement flush
|
||||
Subject: [PATCH 9/9] libavcodec: v4l2m2m: implement flush
|
||||
|
||||
---
|
||||
libavcodec/v4l2_m2m_dec.c | 36 ++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 36 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/v4l2_m2m_dec.c b/libavcodec/v4l2_m2m_dec.c
|
||||
index 6109deee8a..820cdf241f 100644
|
||||
index 363e998142..52ec67cb59 100644
|
||||
--- a/libavcodec/v4l2_m2m_dec.c
|
||||
+++ b/libavcodec/v4l2_m2m_dec.c
|
||||
@@ -256,6 +256,41 @@ static av_cold int v4l2_decode_close(AVCodecContext *avctx)
|
||||
@@ -250,6 +250,41 @@ static av_cold int v4l2_decode_close(AVCodecContext *avctx)
|
||||
return ff_v4l2_m2m_codec_end(avctx->priv_data);
|
||||
}
|
||||
|
||||
@ -960,7 +845,7 @@ index 6109deee8a..820cdf241f 100644
|
||||
#define OFFSET(x) offsetof(V4L2m2mPriv, x)
|
||||
#define FLAGS AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM
|
||||
|
||||
@@ -292,6 +327,7 @@ static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = {
|
||||
@@ -286,6 +321,7 @@ static const AVCodecHWConfigInternal *v4l2_m2m_hw_configs[] = {
|
||||
.init = v4l2_decode_init, \
|
||||
.receive_frame = v4l2_receive_frame, \
|
||||
.close = v4l2_decode_close, \
|
||||
|
@ -1,4 +1,4 @@
|
||||
From fd7c38d6a87d92faaf3b7f18df5cb19918aca3a7 Mon Sep 17 00:00:00 2001
|
||||
From 904af26693095364851bbc6c6557fca9b3437b69 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 3 Dec 2018 23:48:04 +0100
|
||||
Subject: [PATCH 01/18] avutil: add av_buffer_pool_flush()
|
||||
@ -12,10 +12,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 18 insertions(+)
|
||||
|
||||
diff --git a/libavutil/buffer.c b/libavutil/buffer.c
|
||||
index 38a554208a90..b0fedabc3e7d 100644
|
||||
index 858633e8c7..41555d9982 100644
|
||||
--- a/libavutil/buffer.c
|
||||
+++ b/libavutil/buffer.c
|
||||
@@ -273,6 +273,19 @@ static void buffer_pool_free(AVBufferPool *pool)
|
||||
@@ -305,6 +305,19 @@ static void buffer_pool_free(AVBufferPool *pool)
|
||||
av_freep(&pool);
|
||||
}
|
||||
|
||||
@ -36,11 +36,11 @@ index 38a554208a90..b0fedabc3e7d 100644
|
||||
{
|
||||
AVBufferPool *pool;
|
||||
diff --git a/libavutil/buffer.h b/libavutil/buffer.h
|
||||
index c0f3f6cc9abe..998beec9ac5b 100644
|
||||
index 241a80ed67..f41363faf1 100644
|
||||
--- a/libavutil/buffer.h
|
||||
+++ b/libavutil/buffer.h
|
||||
@@ -267,6 +267,11 @@ AVBufferPool *av_buffer_pool_init2(int size, void *opaque,
|
||||
AVBufferRef* (*alloc)(void *opaque, int size),
|
||||
@@ -315,6 +315,11 @@ AVBufferPool *av_buffer_pool_init2(size_t size, void *opaque,
|
||||
#endif
|
||||
void (*pool_free)(void *opaque));
|
||||
|
||||
+/**
|
||||
@ -52,7 +52,7 @@ index c0f3f6cc9abe..998beec9ac5b 100644
|
||||
* Mark the pool as being available for freeing. It will actually be freed only
|
||||
* once all the allocated buffers associated with the pool are released. Thus it
|
||||
|
||||
From 73677b0d323aca461e88c9ee287afb4d6744a0bc Mon Sep 17 00:00:00 2001
|
||||
From ec84dc22e99f544e4de7c43e7f8ef9ab7ee8e19b Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 02/18] Add common V4L2 request API code
|
||||
@ -69,18 +69,18 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 36713ab658f9..81ee0e740498 100755
|
||||
index d7a3f507e8..f2e203d134 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -274,6 +274,7 @@ External library support:
|
||||
--enable-libtls enable LibreSSL (via libtls), needed for https support
|
||||
@@ -279,6 +279,7 @@ External library support:
|
||||
if openssl, gnutls or mbedtls is not used [no]
|
||||
--enable-libtwolame enable MP2 encoding via libtwolame [no]
|
||||
--enable-libuavs3d enable AVS3 decoding via libuavs3d [no]
|
||||
+ --enable-libudev enable libudev [no]
|
||||
--enable-libv4l2 enable libv4l2/v4l-utils [no]
|
||||
--enable-libvidstab enable video stabilization using vid.stab [no]
|
||||
--enable-libvmaf enable vmaf filter via libvmaf [no]
|
||||
@@ -342,6 +343,7 @@ External library support:
|
||||
@@ -346,6 +347,7 @@ External library support:
|
||||
--enable-omx-rpi enable OpenMAX IL code for Raspberry Pi [no]
|
||||
--enable-rkmpp enable Rockchip Media Process Platform code [no]
|
||||
--disable-v4l2-m2m disable V4L2 mem2mem code [autodetect]
|
||||
@ -88,15 +88,15 @@ index 36713ab658f9..81ee0e740498 100755
|
||||
--disable-vaapi disable Video Acceleration API (mainly Unix/Intel) code [autodetect]
|
||||
--disable-vdpau disable Nvidia Video Decode and Presentation API for Unix code [autodetect]
|
||||
--disable-videotoolbox disable VideoToolbox code [autodetect]
|
||||
@@ -1807,6 +1809,7 @@ EXTERNAL_LIBRARY_LIST="
|
||||
libtesseract
|
||||
@@ -1814,6 +1816,7 @@ EXTERNAL_LIBRARY_LIST="
|
||||
libtheora
|
||||
libtwolame
|
||||
libuavs3d
|
||||
+ libudev
|
||||
libv4l2
|
||||
libvmaf
|
||||
libvorbis
|
||||
libvpx
|
||||
@@ -1861,6 +1864,7 @@ HWACCEL_LIBRARY_LIST="
|
||||
@@ -1868,6 +1871,7 @@ HWACCEL_LIBRARY_LIST="
|
||||
mmal
|
||||
omx
|
||||
opencl
|
||||
@ -104,7 +104,7 @@ index 36713ab658f9..81ee0e740498 100755
|
||||
vulkan
|
||||
"
|
||||
|
||||
@@ -2903,6 +2907,7 @@ d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
|
||||
@@ -2919,6 +2923,7 @@ d3d11va_deps="dxva_h ID3D11VideoDecoder ID3D11VideoContext"
|
||||
dxva2_deps="dxva2api_h DXVA2_ConfigPictureDecode ole32 user32"
|
||||
ffnvcodec_deps_any="libdl LoadLibrary"
|
||||
nvdec_deps="ffnvcodec"
|
||||
@ -112,15 +112,15 @@ index 36713ab658f9..81ee0e740498 100755
|
||||
vaapi_x11_deps="xlib"
|
||||
videotoolbox_hwaccel_deps="videotoolbox pthreads"
|
||||
videotoolbox_hwaccel_extralibs="-framework QuartzCore"
|
||||
@@ -6376,6 +6381,7 @@ enabled libtls && require_pkg_config libtls libtls tls.h tls_configur
|
||||
enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame &&
|
||||
@@ -6438,6 +6443,7 @@ enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame
|
||||
{ check_lib libtwolame twolame.h twolame_encode_buffer_float32_interleaved -ltwolame ||
|
||||
die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
|
||||
enabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode
|
||||
+enabled libudev && require_pkg_config libudev libudev libudev.h udev_new
|
||||
enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
|
||||
enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
|
||||
enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 1.3.9" libvmaf.h compute_vmaf
|
||||
@@ -6475,6 +6481,10 @@ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/r
|
||||
enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 1.5.2" libvmaf.h compute_vmaf
|
||||
@@ -6536,6 +6542,10 @@ enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/r
|
||||
{ enabled libdrm ||
|
||||
die "ERROR: rkmpp requires --enable-libdrm"; }
|
||||
}
|
||||
@ -131,7 +131,7 @@ index 36713ab658f9..81ee0e740498 100755
|
||||
enabled vapoursynth && require_pkg_config vapoursynth "vapoursynth-script >= 42" VSScript.h vsscript_init
|
||||
|
||||
|
||||
@@ -6556,6 +6566,8 @@ if enabled v4l2_m2m; then
|
||||
@@ -6617,6 +6627,8 @@ if enabled v4l2_m2m; then
|
||||
check_cc vp9_v4l2_m2m linux/videodev2.h "int i = V4L2_PIX_FMT_VP9;"
|
||||
fi
|
||||
|
||||
@ -141,10 +141,10 @@ index 36713ab658f9..81ee0e740498 100755
|
||||
test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
|
||||
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index 5a6ea59715af..d74220516826 100644
|
||||
index 33a280cf69..90dfffcb20 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -153,6 +153,7 @@ OBJS-$(CONFIG_VP3DSP) += vp3dsp.o
|
||||
@@ -155,6 +155,7 @@ OBJS-$(CONFIG_VP3DSP) += vp3dsp.o
|
||||
OBJS-$(CONFIG_VP56DSP) += vp56dsp.o
|
||||
OBJS-$(CONFIG_VP8DSP) += vp8dsp.o
|
||||
OBJS-$(CONFIG_V4L2_M2M) += v4l2_m2m.o v4l2_context.o v4l2_buffers.o v4l2_fmt.o
|
||||
@ -153,7 +153,7 @@ index 5a6ea59715af..d74220516826 100644
|
||||
OBJS-$(CONFIG_WMV2DSP) += wmv2dsp.o
|
||||
|
||||
diff --git a/libavcodec/hwconfig.h b/libavcodec/hwconfig.h
|
||||
index f421dc909f44..ee78d8ab8e89 100644
|
||||
index f421dc909f..ee78d8ab8e 100644
|
||||
--- a/libavcodec/hwconfig.h
|
||||
+++ b/libavcodec/hwconfig.h
|
||||
@@ -80,6 +80,8 @@ typedef struct AVCodecHWConfigInternal {
|
||||
@ -167,7 +167,7 @@ index f421dc909f44..ee78d8ab8e89 100644
|
||||
&(const AVCodecHWConfigInternal) { \
|
||||
diff --git a/libavcodec/v4l2_request.c b/libavcodec/v4l2_request.c
|
||||
new file mode 100644
|
||||
index 000000000000..5234b5049b0d
|
||||
index 0000000000..5234b5049b
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request.c
|
||||
@@ -0,0 +1,984 @@
|
||||
@ -1157,7 +1157,7 @@ index 000000000000..5234b5049b0d
|
||||
+}
|
||||
diff --git a/libavcodec/v4l2_request.h b/libavcodec/v4l2_request.h
|
||||
new file mode 100644
|
||||
index 000000000000..58d2aa70af80
|
||||
index 0000000000..58d2aa70af
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request.h
|
||||
@@ -0,0 +1,77 @@
|
||||
@ -1239,7 +1239,7 @@ index 000000000000..58d2aa70af80
|
||||
+
|
||||
+#endif /* AVCODEC_V4L2_REQUEST_H */
|
||||
|
||||
From 4b5bc3f75955694bfe7af15a323f0c902e53acf1 Mon Sep 17 00:00:00 2001
|
||||
From e432d3151f4c5507e40fb1fe8b3c3fb7c7a0a08c Mon Sep 17 00:00:00 2001
|
||||
From: Ezequiel Garcia <ezequiel@collabora.com>
|
||||
Date: Wed, 20 Feb 2019 11:18:00 -0300
|
||||
Subject: [PATCH 03/18] h264dec: add idr_pic_id to slice context
|
||||
@ -1254,10 +1254,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
|
||||
index 111e1dfe7fa1..81f9a74cb629 100644
|
||||
index 2d0605c7f4..c3a7338a70 100644
|
||||
--- a/libavcodec/h264_slice.c
|
||||
+++ b/libavcodec/h264_slice.c
|
||||
@@ -1818,7 +1818,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
@@ -1830,7 +1830,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
}
|
||||
|
||||
if (nal->type == H264_NAL_IDR_SLICE)
|
||||
@ -1267,10 +1267,10 @@ index 111e1dfe7fa1..81f9a74cb629 100644
|
||||
if (sps->poc_type == 0) {
|
||||
sl->poc_lsb = get_bits(&sl->gb, sps->log2_max_poc_lsb);
|
||||
diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h
|
||||
index a419615124b2..316dc6a2c890 100644
|
||||
index b7b19ba4f1..0698ab95ba 100644
|
||||
--- a/libavcodec/h264dec.h
|
||||
+++ b/libavcodec/h264dec.h
|
||||
@@ -335,6 +335,7 @@ typedef struct H264SliceContext {
|
||||
@@ -336,6 +336,7 @@ typedef struct H264SliceContext {
|
||||
int delta_poc[2];
|
||||
int curr_pic_num;
|
||||
int max_pic_num;
|
||||
@ -1279,7 +1279,7 @@ index a419615124b2..316dc6a2c890 100644
|
||||
|
||||
/**
|
||||
|
||||
From 89a05a843c5ecef72b37e5381d2169027e3450b0 Mon Sep 17 00:00:00 2001
|
||||
From 84564d13ec0ec40f408622ff6b0d900723bbab5b Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Wed, 22 May 2019 14:44:22 +0200
|
||||
Subject: [PATCH 04/18] h264dec: add ref_pic_marking and pic_order_cnt bit_size
|
||||
@ -1295,10 +1295,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 7 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
|
||||
index 81f9a74cb629..2b370d18e82d 100644
|
||||
index c3a7338a70..c28b58cd5d 100644
|
||||
--- a/libavcodec/h264_slice.c
|
||||
+++ b/libavcodec/h264_slice.c
|
||||
@@ -1736,7 +1736,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
@@ -1748,7 +1748,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
unsigned int slice_type, tmp, i;
|
||||
int field_pic_flag, bottom_field_flag;
|
||||
int first_slice = sl == h->slice_ctx && !h->current_slice;
|
||||
@ -1307,7 +1307,7 @@ index 81f9a74cb629..2b370d18e82d 100644
|
||||
|
||||
if (first_slice)
|
||||
av_assert0(!h->setup_finished);
|
||||
@@ -1820,6 +1820,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
@@ -1832,6 +1832,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
if (nal->type == H264_NAL_IDR_SLICE)
|
||||
sl->idr_pic_id = get_ue_golomb_long(&sl->gb);
|
||||
|
||||
@ -1315,7 +1315,7 @@ index 81f9a74cb629..2b370d18e82d 100644
|
||||
if (sps->poc_type == 0) {
|
||||
sl->poc_lsb = get_bits(&sl->gb, sps->log2_max_poc_lsb);
|
||||
|
||||
@@ -1833,6 +1834,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
@@ -1845,6 +1846,7 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
if (pps->pic_order_present == 1 && picture_structure == PICT_FRAME)
|
||||
sl->delta_poc[1] = get_se_golomb(&sl->gb);
|
||||
}
|
||||
@ -1323,7 +1323,7 @@ index 81f9a74cb629..2b370d18e82d 100644
|
||||
|
||||
sl->redundant_pic_count = 0;
|
||||
if (pps->redundant_pic_cnt_present)
|
||||
@@ -1872,9 +1874,11 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
@@ -1884,9 +1886,11 @@ static int h264_slice_header_parse(const H264Context *h, H264SliceContext *sl,
|
||||
|
||||
sl->explicit_ref_marking = 0;
|
||||
if (nal->ref_idc) {
|
||||
@ -1336,10 +1336,10 @@ index 81f9a74cb629..2b370d18e82d 100644
|
||||
|
||||
if (sl->slice_type_nos != AV_PICTURE_TYPE_I && pps->cabac) {
|
||||
diff --git a/libavcodec/h264dec.h b/libavcodec/h264dec.h
|
||||
index 316dc6a2c890..f2cabac468d0 100644
|
||||
index 0698ab95ba..2b39e82c3b 100644
|
||||
--- a/libavcodec/h264dec.h
|
||||
+++ b/libavcodec/h264dec.h
|
||||
@@ -328,6 +328,7 @@ typedef struct H264SliceContext {
|
||||
@@ -329,6 +329,7 @@ typedef struct H264SliceContext {
|
||||
MMCO mmco[MAX_MMCO_COUNT];
|
||||
int nb_mmco;
|
||||
int explicit_ref_marking;
|
||||
@ -1347,7 +1347,7 @@ index 316dc6a2c890..f2cabac468d0 100644
|
||||
|
||||
int frame_num;
|
||||
int poc_lsb;
|
||||
@@ -336,6 +337,7 @@ typedef struct H264SliceContext {
|
||||
@@ -337,6 +338,7 @@ typedef struct H264SliceContext {
|
||||
int curr_pic_num;
|
||||
int max_pic_num;
|
||||
int idr_pic_id;
|
||||
@ -1356,7 +1356,7 @@ index 316dc6a2c890..f2cabac468d0 100644
|
||||
|
||||
/**
|
||||
|
||||
From bd9786a78eb4c44325caef40305f86b2856ecad4 Mon Sep 17 00:00:00 2001
|
||||
From 5a8628cf6368fe18457d02bf551d5935609efab5 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 05/18] Add V4L2 request API h264 hwaccel
|
||||
@ -1374,10 +1374,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request_h264.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 81ee0e740498..0f5b8e355950 100755
|
||||
index f2e203d134..b17e4108c1 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2925,6 +2925,8 @@ h264_dxva2_hwaccel_deps="dxva2"
|
||||
@@ -2951,6 +2951,8 @@ h264_dxva2_hwaccel_deps="dxva2"
|
||||
h264_dxva2_hwaccel_select="h264_decoder"
|
||||
h264_nvdec_hwaccel_deps="nvdec"
|
||||
h264_nvdec_hwaccel_select="h264_decoder"
|
||||
@ -1386,7 +1386,7 @@ index 81ee0e740498..0f5b8e355950 100755
|
||||
h264_vaapi_hwaccel_deps="vaapi"
|
||||
h264_vaapi_hwaccel_select="h264_decoder"
|
||||
h264_vdpau_hwaccel_deps="vdpau"
|
||||
@@ -6567,6 +6569,7 @@ if enabled v4l2_m2m; then
|
||||
@@ -6628,6 +6630,7 @@ if enabled v4l2_m2m; then
|
||||
fi
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
@ -1395,22 +1395,22 @@ index 81ee0e740498..0f5b8e355950 100755
|
||||
check_headers sys/videoio.h
|
||||
test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index d74220516826..4f6e7fc2515c 100644
|
||||
index 90dfffcb20..426c7528e9 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -903,6 +903,7 @@ OBJS-$(CONFIG_H264_D3D11VA_HWACCEL) += dxva2_h264.o
|
||||
@@ -935,6 +935,7 @@ OBJS-$(CONFIG_H264_D3D11VA_HWACCEL) += dxva2_h264.o
|
||||
OBJS-$(CONFIG_H264_DXVA2_HWACCEL) += dxva2_h264.o
|
||||
OBJS-$(CONFIG_H264_NVDEC_HWACCEL) += nvdec_h264.o
|
||||
OBJS-$(CONFIG_H264_QSV_HWACCEL) += qsvdec_h2645.o
|
||||
OBJS-$(CONFIG_H264_QSV_HWACCEL) += qsvdec.o
|
||||
+OBJS-$(CONFIG_H264_V4L2REQUEST_HWACCEL) += v4l2_request_h264.o
|
||||
OBJS-$(CONFIG_H264_VAAPI_HWACCEL) += vaapi_h264.o
|
||||
OBJS-$(CONFIG_H264_VDPAU_HWACCEL) += vdpau_h264.o
|
||||
OBJS-$(CONFIG_H264_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
||||
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
|
||||
index 2b370d18e82d..dd5ba98a02cb 100644
|
||||
index c28b58cd5d..0a10d00aad 100644
|
||||
--- a/libavcodec/h264_slice.c
|
||||
+++ b/libavcodec/h264_slice.c
|
||||
@@ -759,6 +759,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
@@ -768,6 +768,7 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
#define HWACCEL_MAX (CONFIG_H264_DXVA2_HWACCEL + \
|
||||
(CONFIG_H264_D3D11VA_HWACCEL * 2) + \
|
||||
CONFIG_H264_NVDEC_HWACCEL + \
|
||||
@ -1418,7 +1418,7 @@ index 2b370d18e82d..dd5ba98a02cb 100644
|
||||
CONFIG_H264_VAAPI_HWACCEL + \
|
||||
CONFIG_H264_VIDEOTOOLBOX_HWACCEL + \
|
||||
CONFIG_H264_VDPAU_HWACCEL)
|
||||
@@ -843,6 +844,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
@@ -852,6 +853,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
#endif
|
||||
#if CONFIG_H264_VIDEOTOOLBOX_HWACCEL
|
||||
*fmt++ = AV_PIX_FMT_VIDEOTOOLBOX;
|
||||
@ -1429,10 +1429,10 @@ index 2b370d18e82d..dd5ba98a02cb 100644
|
||||
if (h->avctx->codec->pix_fmts)
|
||||
choices = h->avctx->codec->pix_fmts;
|
||||
diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c
|
||||
index 5eedeb3c275d..a504c89565c7 100644
|
||||
index 0a999bef43..d78e3eaee3 100644
|
||||
--- a/libavcodec/h264dec.c
|
||||
+++ b/libavcodec/h264dec.c
|
||||
@@ -1102,6 +1102,9 @@ AVCodec ff_h264_decoder = {
|
||||
@@ -1076,6 +1076,9 @@ AVCodec ff_h264_decoder = {
|
||||
#endif
|
||||
#if CONFIG_H264_VIDEOTOOLBOX_HWACCEL
|
||||
HWACCEL_VIDEOTOOLBOX(h264),
|
||||
@ -1443,10 +1443,10 @@ index 5eedeb3c275d..a504c89565c7 100644
|
||||
NULL
|
||||
},
|
||||
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
|
||||
index 6109c89bd63c..f758c34ddcf9 100644
|
||||
index 8e54cf73f9..969a1da0f4 100644
|
||||
--- a/libavcodec/hwaccels.h
|
||||
+++ b/libavcodec/hwaccels.h
|
||||
@@ -27,6 +27,7 @@ extern const AVHWAccel ff_h264_d3d11va_hwaccel;
|
||||
@@ -32,6 +32,7 @@ extern const AVHWAccel ff_h264_d3d11va_hwaccel;
|
||||
extern const AVHWAccel ff_h264_d3d11va2_hwaccel;
|
||||
extern const AVHWAccel ff_h264_dxva2_hwaccel;
|
||||
extern const AVHWAccel ff_h264_nvdec_hwaccel;
|
||||
@ -1456,7 +1456,7 @@ index 6109c89bd63c..f758c34ddcf9 100644
|
||||
extern const AVHWAccel ff_h264_videotoolbox_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_h264.c b/libavcodec/v4l2_request_h264.c
|
||||
new file mode 100644
|
||||
index 000000000000..88da8f0a2db0
|
||||
index 0000000000..88da8f0a2d
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_h264.c
|
||||
@@ -0,0 +1,456 @@
|
||||
@ -1917,7 +1917,7 @@ index 000000000000..88da8f0a2db0
|
||||
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
|
||||
+};
|
||||
|
||||
From e36de603c7c9daa8e1a833539c7311438eb1dc0c Mon Sep 17 00:00:00 2001
|
||||
From 02b8fb17c2a019463dcab4baa1cb0bec63353183 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 06/18] Add V4L2 request API mpeg2 hwaccel
|
||||
@ -1933,10 +1933,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request_mpeg2.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 0f5b8e355950..6ed48234dd25 100755
|
||||
index b17e4108c1..ec141fabbd 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2969,6 +2969,8 @@ mpeg2_dxva2_hwaccel_deps="dxva2"
|
||||
@@ -2995,6 +2995,8 @@ mpeg2_dxva2_hwaccel_deps="dxva2"
|
||||
mpeg2_dxva2_hwaccel_select="mpeg2video_decoder"
|
||||
mpeg2_nvdec_hwaccel_deps="nvdec"
|
||||
mpeg2_nvdec_hwaccel_select="mpeg2video_decoder"
|
||||
@ -1945,7 +1945,7 @@ index 0f5b8e355950..6ed48234dd25 100755
|
||||
mpeg2_vaapi_hwaccel_deps="vaapi"
|
||||
mpeg2_vaapi_hwaccel_select="mpeg2video_decoder"
|
||||
mpeg2_vdpau_hwaccel_deps="vdpau"
|
||||
@@ -6570,6 +6572,7 @@ fi
|
||||
@@ -6631,6 +6633,7 @@ fi
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE;"
|
||||
@ -1954,22 +1954,22 @@ index 0f5b8e355950..6ed48234dd25 100755
|
||||
check_headers sys/videoio.h
|
||||
test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index 4f6e7fc2515c..9a10a292e377 100644
|
||||
index 426c7528e9..02c023a447 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -923,6 +923,7 @@ OBJS-$(CONFIG_MPEG2_D3D11VA_HWACCEL) += dxva2_mpeg2.o
|
||||
@@ -955,6 +955,7 @@ OBJS-$(CONFIG_MPEG2_D3D11VA_HWACCEL) += dxva2_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2_DXVA2_HWACCEL) += dxva2_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2_NVDEC_HWACCEL) += nvdec_mpeg12.o
|
||||
OBJS-$(CONFIG_MPEG2_QSV_HWACCEL) += qsvdec_other.o
|
||||
OBJS-$(CONFIG_MPEG2_QSV_HWACCEL) += qsvdec.o
|
||||
+OBJS-$(CONFIG_MPEG2_V4L2REQUEST_HWACCEL) += v4l2_request_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2_VAAPI_HWACCEL) += vaapi_mpeg2.o
|
||||
OBJS-$(CONFIG_MPEG2_VDPAU_HWACCEL) += vdpau_mpeg12.o
|
||||
OBJS-$(CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL) += videotoolbox.o
|
||||
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
|
||||
index f758c34ddcf9..44e00e79b515 100644
|
||||
index 969a1da0f4..a8ae1483d8 100644
|
||||
--- a/libavcodec/hwaccels.h
|
||||
+++ b/libavcodec/hwaccels.h
|
||||
@@ -48,6 +48,7 @@ extern const AVHWAccel ff_mpeg2_d3d11va_hwaccel;
|
||||
@@ -53,6 +53,7 @@ extern const AVHWAccel ff_mpeg2_d3d11va_hwaccel;
|
||||
extern const AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
|
||||
extern const AVHWAccel ff_mpeg2_nvdec_hwaccel;
|
||||
extern const AVHWAccel ff_mpeg2_dxva2_hwaccel;
|
||||
@ -1978,10 +1978,10 @@ index f758c34ddcf9..44e00e79b515 100644
|
||||
extern const AVHWAccel ff_mpeg2_vdpau_hwaccel;
|
||||
extern const AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
|
||||
diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c
|
||||
index 99e56532a59e..15aaf97a34c7 100644
|
||||
index 94221da2c1..4b0176f6cb 100644
|
||||
--- a/libavcodec/mpeg12dec.c
|
||||
+++ b/libavcodec/mpeg12dec.c
|
||||
@@ -1154,6 +1154,9 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = {
|
||||
@@ -1147,6 +1147,9 @@ static const enum AVPixelFormat mpeg2_hwaccel_pixfmt_list_420[] = {
|
||||
#endif
|
||||
#if CONFIG_MPEG2_VIDEOTOOLBOX_HWACCEL
|
||||
AV_PIX_FMT_VIDEOTOOLBOX,
|
||||
@ -1991,7 +1991,7 @@ index 99e56532a59e..15aaf97a34c7 100644
|
||||
#endif
|
||||
AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_NONE
|
||||
@@ -2952,6 +2955,9 @@ AVCodec ff_mpeg2video_decoder = {
|
||||
@@ -2961,6 +2964,9 @@ AVCodec ff_mpeg2video_decoder = {
|
||||
#endif
|
||||
#if CONFIG_MPEG2_XVMC_HWACCEL
|
||||
HWACCEL_XVMC(mpeg2),
|
||||
@ -2003,7 +2003,7 @@ index 99e56532a59e..15aaf97a34c7 100644
|
||||
},
|
||||
diff --git a/libavcodec/v4l2_request_mpeg2.c b/libavcodec/v4l2_request_mpeg2.c
|
||||
new file mode 100644
|
||||
index 000000000000..84d53209c79d
|
||||
index 0000000000..84d53209c7
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_mpeg2.c
|
||||
@@ -0,0 +1,159 @@
|
||||
@ -2167,7 +2167,7 @@ index 000000000000..84d53209c79d
|
||||
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
|
||||
+};
|
||||
|
||||
From 8fedb1c1d5c232936ec7ddff71e72dd27dbace6d Mon Sep 17 00:00:00 2001
|
||||
From 1cd61e5730acc12c39c964bcf13c73a54203a390 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Wed, 22 May 2019 14:46:58 +0200
|
||||
Subject: [PATCH 07/18] Add V4L2 request API vp8 hwaccel
|
||||
@ -2180,15 +2180,15 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
libavcodec/Makefile | 1 +
|
||||
libavcodec/hwaccels.h | 1 +
|
||||
libavcodec/v4l2_request_vp8.c | 180 ++++++++++++++++++++++++++++++++++
|
||||
libavcodec/vp8.c | 8 +-
|
||||
5 files changed, 192 insertions(+), 1 deletion(-)
|
||||
libavcodec/vp8.c | 6 ++
|
||||
5 files changed, 191 insertions(+)
|
||||
create mode 100644 libavcodec/v4l2_request_vp8.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 6ed48234dd25..a3c724861caa 100755
|
||||
index ec141fabbd..f16bed65a3 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3001,6 +3001,8 @@ vc1_vdpau_hwaccel_deps="vdpau"
|
||||
@@ -3027,6 +3027,8 @@ vc1_vdpau_hwaccel_deps="vdpau"
|
||||
vc1_vdpau_hwaccel_select="vc1_decoder"
|
||||
vp8_nvdec_hwaccel_deps="nvdec"
|
||||
vp8_nvdec_hwaccel_select="vp8_decoder"
|
||||
@ -2197,7 +2197,7 @@ index 6ed48234dd25..a3c724861caa 100755
|
||||
vp8_vaapi_hwaccel_deps="vaapi"
|
||||
vp8_vaapi_hwaccel_select="vp8_decoder"
|
||||
vp9_d3d11va_hwaccel_deps="d3d11va DXVA_PicParams_VP9"
|
||||
@@ -6573,6 +6575,7 @@ fi
|
||||
@@ -6634,6 +6636,7 @@ fi
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE;"
|
||||
check_cc mpeg2_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2_SLICE;"
|
||||
@ -2206,10 +2206,10 @@ index 6ed48234dd25..a3c724861caa 100755
|
||||
check_headers sys/videoio.h
|
||||
test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index 9a10a292e377..c74d2ebfdd23 100644
|
||||
index 02c023a447..c79d678eb3 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -939,6 +939,7 @@ OBJS-$(CONFIG_VC1_QSV_HWACCEL) += qsvdec_other.o
|
||||
@@ -971,6 +971,7 @@ OBJS-$(CONFIG_VC1_QSV_HWACCEL) += qsvdec.o
|
||||
OBJS-$(CONFIG_VC1_VAAPI_HWACCEL) += vaapi_vc1.o
|
||||
OBJS-$(CONFIG_VC1_VDPAU_HWACCEL) += vdpau_vc1.o
|
||||
OBJS-$(CONFIG_VP8_NVDEC_HWACCEL) += nvdec_vp8.o
|
||||
@ -2218,10 +2218,10 @@ index 9a10a292e377..c74d2ebfdd23 100644
|
||||
OBJS-$(CONFIG_VP9_D3D11VA_HWACCEL) += dxva2_vp9.o
|
||||
OBJS-$(CONFIG_VP9_DXVA2_HWACCEL) += dxva2_vp9.o
|
||||
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
|
||||
index 44e00e79b515..14838083ec36 100644
|
||||
index a8ae1483d8..9f8d41e367 100644
|
||||
--- a/libavcodec/hwaccels.h
|
||||
+++ b/libavcodec/hwaccels.h
|
||||
@@ -64,6 +64,7 @@ extern const AVHWAccel ff_vc1_nvdec_hwaccel;
|
||||
@@ -69,6 +69,7 @@ extern const AVHWAccel ff_vc1_nvdec_hwaccel;
|
||||
extern const AVHWAccel ff_vc1_vaapi_hwaccel;
|
||||
extern const AVHWAccel ff_vc1_vdpau_hwaccel;
|
||||
extern const AVHWAccel ff_vp8_nvdec_hwaccel;
|
||||
@ -2231,7 +2231,7 @@ index 44e00e79b515..14838083ec36 100644
|
||||
extern const AVHWAccel ff_vp9_d3d11va2_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_vp8.c b/libavcodec/v4l2_request_vp8.c
|
||||
new file mode 100644
|
||||
index 000000000000..bc0fc400727a
|
||||
index 0000000000..bc0fc40072
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_vp8.c
|
||||
@@ -0,0 +1,180 @@
|
||||
@ -2416,10 +2416,10 @@ index 000000000000..bc0fc400727a
|
||||
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
|
||||
+};
|
||||
diff --git a/libavcodec/vp8.c b/libavcodec/vp8.c
|
||||
index e84fcdeaa1e7..0608d9e4e165 100644
|
||||
index d16e7b6aa3..8ee768d875 100644
|
||||
--- a/libavcodec/vp8.c
|
||||
+++ b/libavcodec/vp8.c
|
||||
@@ -175,6 +175,9 @@ static enum AVPixelFormat get_pixel_format(VP8Context *s)
|
||||
@@ -176,6 +176,9 @@ static enum AVPixelFormat get_pixel_format(VP8Context *s)
|
||||
#endif
|
||||
#if CONFIG_VP8_NVDEC_HWACCEL
|
||||
AV_PIX_FMT_CUDA,
|
||||
@ -2429,16 +2429,7 @@ index e84fcdeaa1e7..0608d9e4e165 100644
|
||||
#endif
|
||||
AV_PIX_FMT_YUV420P,
|
||||
AV_PIX_FMT_NONE,
|
||||
@@ -198,7 +201,7 @@ int update_dimensions(VP8Context *s, int width, int height, int is_vp7)
|
||||
return ret;
|
||||
}
|
||||
|
||||
- if (!s->actually_webp && !is_vp7) {
|
||||
+ if (!s->actually_webp && !is_vp7 && s->pix_fmt == AV_PIX_FMT_NONE) {
|
||||
s->pix_fmt = get_pixel_format(s);
|
||||
if (s->pix_fmt < 0)
|
||||
return AVERROR(EINVAL);
|
||||
@@ -2968,6 +2971,9 @@ AVCodec ff_vp8_decoder = {
|
||||
@@ -2972,6 +2975,9 @@ AVCodec ff_vp8_decoder = {
|
||||
#endif
|
||||
#if CONFIG_VP8_NVDEC_HWACCEL
|
||||
HWACCEL_NVDEC(vp8),
|
||||
@ -2449,7 +2440,7 @@ index e84fcdeaa1e7..0608d9e4e165 100644
|
||||
NULL
|
||||
},
|
||||
|
||||
From aba2a109c8191b8e914522c7504f78385e1da3ed Mon Sep 17 00:00:00 2001
|
||||
From 0065c180f7345bef065e5704ddb9827dc18b2f4b Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 08/18] Add V4L2 request API hevc hwaccel
|
||||
@ -2466,10 +2457,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/v4l2_request_hevc.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index a3c724861caa..94476afd5df1 100755
|
||||
index f16bed65a3..02a80cf27f 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2941,6 +2941,8 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
@@ -2967,6 +2967,8 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
hevc_dxva2_hwaccel_select="hevc_decoder"
|
||||
hevc_nvdec_hwaccel_deps="nvdec"
|
||||
hevc_nvdec_hwaccel_select="hevc_decoder"
|
||||
@ -2478,7 +2469,7 @@ index a3c724861caa..94476afd5df1 100755
|
||||
hevc_vaapi_hwaccel_deps="vaapi VAPictureParameterBufferHEVC"
|
||||
hevc_vaapi_hwaccel_select="hevc_decoder"
|
||||
hevc_vdpau_hwaccel_deps="vdpau VdpPictureInfoHEVC"
|
||||
@@ -6574,6 +6576,7 @@ fi
|
||||
@@ -6635,6 +6637,7 @@ fi
|
||||
|
||||
check_func_headers "linux/media.h linux/videodev2.h" v4l2_timeval_to_ns
|
||||
check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE;"
|
||||
@ -2487,22 +2478,22 @@ index a3c724861caa..94476afd5df1 100755
|
||||
check_cc vp8_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_VP8_FRAME;"
|
||||
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index c74d2ebfdd23..d6af854daaa6 100644
|
||||
index c79d678eb3..0059074530 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -911,6 +911,7 @@ OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o
|
||||
@@ -943,6 +943,7 @@ OBJS-$(CONFIG_HEVC_D3D11VA_HWACCEL) += dxva2_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_DXVA2_HWACCEL) += dxva2_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_NVDEC_HWACCEL) += nvdec_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec_h2645.o
|
||||
OBJS-$(CONFIG_HEVC_QSV_HWACCEL) += qsvdec.o
|
||||
+OBJS-$(CONFIG_HEVC_V4L2REQUEST_HWACCEL) += v4l2_request_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_VAAPI_HWACCEL) += vaapi_hevc.o h265_profile_level.o
|
||||
OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o
|
||||
OBJS-$(CONFIG_HEVC_VDPAU_HWACCEL) += vdpau_hevc.o h265_profile_level.o
|
||||
OBJS-$(CONFIG_MJPEG_NVDEC_HWACCEL) += nvdec_mjpeg.o
|
||||
diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c
|
||||
index 1eaeaf72f145..7e47bd7177e1 100644
|
||||
index 2231aed259..7507966d71 100644
|
||||
--- a/libavcodec/hevcdec.c
|
||||
+++ b/libavcodec/hevcdec.c
|
||||
@@ -372,6 +372,7 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
@@ -392,6 +392,7 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
#define HWACCEL_MAX (CONFIG_HEVC_DXVA2_HWACCEL + \
|
||||
CONFIG_HEVC_D3D11VA_HWACCEL * 2 + \
|
||||
CONFIG_HEVC_NVDEC_HWACCEL + \
|
||||
@ -2510,7 +2501,7 @@ index 1eaeaf72f145..7e47bd7177e1 100644
|
||||
CONFIG_HEVC_VAAPI_HWACCEL + \
|
||||
CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL + \
|
||||
CONFIG_HEVC_VDPAU_HWACCEL)
|
||||
@@ -398,6 +399,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
@@ -418,6 +419,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
#endif
|
||||
#if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL
|
||||
*fmt++ = AV_PIX_FMT_VIDEOTOOLBOX;
|
||||
@ -2520,7 +2511,7 @@ index 1eaeaf72f145..7e47bd7177e1 100644
|
||||
#endif
|
||||
break;
|
||||
case AV_PIX_FMT_YUV420P10:
|
||||
@@ -416,6 +420,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
@@ -439,6 +443,9 @@ static enum AVPixelFormat get_format(HEVCContext *s, const HEVCSPS *sps)
|
||||
#endif
|
||||
#if CONFIG_HEVC_NVDEC_HWACCEL
|
||||
*fmt++ = AV_PIX_FMT_CUDA;
|
||||
@ -2530,7 +2521,7 @@ index 1eaeaf72f145..7e47bd7177e1 100644
|
||||
#endif
|
||||
break;
|
||||
case AV_PIX_FMT_YUV444P:
|
||||
@@ -3593,6 +3600,9 @@ AVCodec ff_hevc_decoder = {
|
||||
@@ -3705,6 +3712,9 @@ AVCodec ff_hevc_decoder = {
|
||||
#endif
|
||||
#if CONFIG_HEVC_VIDEOTOOLBOX_HWACCEL
|
||||
HWACCEL_VIDEOTOOLBOX(hevc),
|
||||
@ -2541,10 +2532,10 @@ index 1eaeaf72f145..7e47bd7177e1 100644
|
||||
NULL
|
||||
},
|
||||
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
|
||||
index 14838083ec36..bd75e94f4cae 100644
|
||||
index 9f8d41e367..ffb9fa5087 100644
|
||||
--- a/libavcodec/hwaccels.h
|
||||
+++ b/libavcodec/hwaccels.h
|
||||
@@ -35,6 +35,7 @@ extern const AVHWAccel ff_hevc_d3d11va_hwaccel;
|
||||
@@ -40,6 +40,7 @@ extern const AVHWAccel ff_hevc_d3d11va_hwaccel;
|
||||
extern const AVHWAccel ff_hevc_d3d11va2_hwaccel;
|
||||
extern const AVHWAccel ff_hevc_dxva2_hwaccel;
|
||||
extern const AVHWAccel ff_hevc_nvdec_hwaccel;
|
||||
@ -2554,7 +2545,7 @@ index 14838083ec36..bd75e94f4cae 100644
|
||||
extern const AVHWAccel ff_hevc_videotoolbox_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
new file mode 100644
|
||||
index 000000000000..d385c2f03615
|
||||
index 0000000000..d385c2f036
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -0,0 +1,574 @@
|
||||
@ -3133,7 +3124,7 @@ index 000000000000..d385c2f03615
|
||||
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
|
||||
+};
|
||||
|
||||
From 7f7d8dd75d175f9f6944ed334c67380b6b4c8cbf Mon Sep 17 00:00:00 2001
|
||||
From 5877cc36995d4cdf012bcee11a36e9f4543d35fe Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 14 Feb 2019 23:20:05 +0100
|
||||
Subject: [PATCH 09/18] Add and use private linux v5.14 headers for V4L2
|
||||
@ -3149,10 +3140,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
create mode 100644 libavcodec/hevc-ctrls.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 94476afd5df1..e90c9b913dcb 100755
|
||||
index 02a80cf27f..30ee788711 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -2941,7 +2941,7 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
@@ -2967,7 +2967,7 @@ hevc_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_HEVC"
|
||||
hevc_dxva2_hwaccel_select="hevc_decoder"
|
||||
hevc_nvdec_hwaccel_deps="nvdec"
|
||||
hevc_nvdec_hwaccel_select="hevc_decoder"
|
||||
@ -3163,7 +3154,7 @@ index 94476afd5df1..e90c9b913dcb 100755
|
||||
hevc_vaapi_hwaccel_select="hevc_decoder"
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
new file mode 100644
|
||||
index 000000000000..53c0038c792b
|
||||
index 0000000000..53c0038c79
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -0,0 +1,240 @@
|
||||
@ -3408,7 +3399,7 @@ index 000000000000..53c0038c792b
|
||||
+
|
||||
+#endif
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index d385c2f03615..ad555c3bb836 100644
|
||||
index d385c2f036..ad555c3bb8 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -19,6 +19,7 @@
|
||||
@ -3420,7 +3411,7 @@ index d385c2f03615..ad555c3bb836 100644
|
||||
#define MAX_SLICES 16
|
||||
|
||||
|
||||
From 838ed5b6317f13d17b5890d769df325a3aaf0c98 Mon Sep 17 00:00:00 2001
|
||||
From 2cdf67404bf52fb684d1857442331f302d3a35d8 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 29 Apr 2019 22:08:59 +0000
|
||||
Subject: [PATCH 10/18] HACK: hwcontext_drm: do not require drm device
|
||||
@ -3431,10 +3422,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/libavutil/hwcontext_drm.c b/libavutil/hwcontext_drm.c
|
||||
index 32cbde82ebfa..aa4794c5e665 100644
|
||||
index 7a9fdbd263..6297d1f9b6 100644
|
||||
--- a/libavutil/hwcontext_drm.c
|
||||
+++ b/libavutil/hwcontext_drm.c
|
||||
@@ -43,6 +43,11 @@ static int drm_device_create(AVHWDeviceContext *hwdev, const char *device,
|
||||
@@ -53,6 +53,11 @@ static int drm_device_create(AVHWDeviceContext *hwdev, const char *device,
|
||||
AVDRMDeviceContext *hwctx = hwdev->hwctx;
|
||||
drmVersionPtr version;
|
||||
|
||||
@ -3447,7 +3438,7 @@ index 32cbde82ebfa..aa4794c5e665 100644
|
||||
if (hwctx->fd < 0)
|
||||
return AVERROR(errno);
|
||||
|
||||
From 72db468e754b14ea76ad00fea2deaf55f47fac26 Mon Sep 17 00:00:00 2001
|
||||
From 37cbcb6ca05cea82e896e661a185dbf32da0702b Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 11/18] WIP: hevc scaling matrix
|
||||
@ -3459,7 +3450,7 @@ Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
2 files changed, 38 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
index 53c0038c792b..0e5c4a2eecff 100644
|
||||
index 53c0038c79..0e5c4a2eec 100644
|
||||
--- a/libavcodec/hevc-ctrls.h
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -19,6 +19,7 @@
|
||||
@ -3495,7 +3486,7 @@ index 53c0038c792b..0e5c4a2eecff 100644
|
||||
#define V4L2_CID_CODEC_HANTRO_BASE (V4L2_CTRL_CLASS_CODEC | 0x1200)
|
||||
/*
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index ad555c3bb836..b6c191120e44 100644
|
||||
index ad555c3bb8..b6c191120e 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -27,6 +27,7 @@ typedef struct V4L2RequestControlsHEVC {
|
||||
@ -3552,7 +3543,7 @@ index ad555c3bb836..b6c191120e44 100644
|
||||
.id = V4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS,
|
||||
.ptr = &controls->slice_params,
|
||||
|
||||
From fb279e99271bed8ba6bb3a01fad6cf9232567ff8 Mon Sep 17 00:00:00 2001
|
||||
From ddf97421cbb8583af0f96fa53a0d7f12d9f4ed21 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 12/18] WIP: hevc segment address
|
||||
@ -3564,7 +3555,7 @@ Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
2 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
index 0e5c4a2eecff..42ad0fe81e66 100644
|
||||
index 0e5c4a2eec..42ad0fe81e 100644
|
||||
--- a/libavcodec/hevc-ctrls.h
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -198,6 +198,7 @@ struct v4l2_ctrl_hevc_slice_params {
|
||||
@ -3576,7 +3567,7 @@ index 0e5c4a2eecff..42ad0fe81e66 100644
|
||||
__u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
|
||||
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index b6c191120e44..f645c538c25c 100644
|
||||
index b6c191120e..f645c538c2 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -188,6 +188,9 @@ static void v4l2_request_hevc_fill_slice_params(const HEVCContext *h,
|
||||
@ -3590,7 +3581,7 @@ index b6c191120e44..f645c538c25c 100644
|
||||
.nal_unit_type = h->nal_unit_type,
|
||||
.nuh_temporal_id_plus1 = h->temporal_id + 1,
|
||||
|
||||
From 55a85bb6be2b1661c4830b5d085e5657579436a4 Mon Sep 17 00:00:00 2001
|
||||
From 1bc89a4553c4c4f7cf4654fe1a7e39de16531126 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Sat, 15 Dec 2018 22:32:16 +0100
|
||||
Subject: [PATCH 13/18] WIP: hevc entry point offsets
|
||||
@ -3602,7 +3593,7 @@ Signed-off-by: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
2 files changed, 12 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
index 42ad0fe81e66..a24916603017 100644
|
||||
index 42ad0fe81e..a249166030 100644
|
||||
--- a/libavcodec/hevc-ctrls.h
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -202,7 +202,9 @@ struct v4l2_ctrl_hevc_slice_params {
|
||||
@ -3617,7 +3608,7 @@ index 42ad0fe81e66..a24916603017 100644
|
||||
/* ISO/IEC 23008-2, ITU-T Rec. H.265: Weighted prediction parameter */
|
||||
struct v4l2_hevc_pred_weight_table pred_weight_table;
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index f645c538c25c..601202a77d7a 100644
|
||||
index f645c538c2..601202a77d 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -256,6 +256,15 @@ static void v4l2_request_hevc_fill_slice_params(const HEVCContext *h,
|
||||
@ -3637,7 +3628,7 @@ index f645c538c25c..601202a77d7a 100644
|
||||
|
||||
static void fill_sps(struct v4l2_ctrl_hevc_sps *ctrl, const HEVCContext *h)
|
||||
|
||||
From 4c1dd736399c6c4f0dbc5510616b16773b892832 Mon Sep 17 00:00:00 2001
|
||||
From 79118d89a57da6fe3fa9b065207e4959c56eff76 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Thu, 12 Dec 2019 16:13:55 +0100
|
||||
Subject: [PATCH 14/18] WIP: Add V4L2 request API vp9 hwaccel
|
||||
@ -3654,10 +3645,10 @@ Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
create mode 100644 libavcodec/v4l2_request_vp9.c
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index e90c9b913dcb..33c8ed54679a 100755
|
||||
index 30ee788711..4e3e868d7a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3015,6 +3015,8 @@ vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
|
||||
@@ -3041,6 +3041,8 @@ vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
|
||||
vp9_dxva2_hwaccel_select="vp9_decoder"
|
||||
vp9_nvdec_hwaccel_deps="nvdec"
|
||||
vp9_nvdec_hwaccel_select="vp9_decoder"
|
||||
@ -3666,7 +3657,7 @@ index e90c9b913dcb..33c8ed54679a 100755
|
||||
vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
|
||||
vp9_vaapi_hwaccel_select="vp9_decoder"
|
||||
vp9_vdpau_hwaccel_deps="vdpau VdpPictureInfoVP9"
|
||||
@@ -6579,6 +6581,7 @@ check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE;"
|
||||
@@ -6640,6 +6642,7 @@ check_cc h264_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_H264_SLICE;"
|
||||
check_cc hevc_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_HEVC_SLICE;"
|
||||
check_cc mpeg2_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_MPEG2_SLICE;"
|
||||
check_cc vp8_v4l2_request linux/videodev2.h "int i = V4L2_PIX_FMT_VP8_FRAME;"
|
||||
@ -3675,22 +3666,22 @@ index e90c9b913dcb..33c8ed54679a 100755
|
||||
check_headers sys/videoio.h
|
||||
test_code cc sys/videoio.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
|
||||
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
|
||||
index d6af854daaa6..2f0e0a0976f6 100644
|
||||
index 0059074530..38edf1cfe5 100644
|
||||
--- a/libavcodec/Makefile
|
||||
+++ b/libavcodec/Makefile
|
||||
@@ -945,6 +945,7 @@ OBJS-$(CONFIG_VP8_VAAPI_HWACCEL) += vaapi_vp8.o
|
||||
@@ -977,6 +977,7 @@ OBJS-$(CONFIG_VP8_VAAPI_HWACCEL) += vaapi_vp8.o
|
||||
OBJS-$(CONFIG_VP9_D3D11VA_HWACCEL) += dxva2_vp9.o
|
||||
OBJS-$(CONFIG_VP9_DXVA2_HWACCEL) += dxva2_vp9.o
|
||||
OBJS-$(CONFIG_VP9_NVDEC_HWACCEL) += nvdec_vp9.o
|
||||
+OBJS-$(CONFIG_VP9_V4L2REQUEST_HWACCEL) += v4l2_request_vp9.o
|
||||
OBJS-$(CONFIG_VP9_VAAPI_HWACCEL) += vaapi_vp9.o
|
||||
OBJS-$(CONFIG_VP9_VDPAU_HWACCEL) += vdpau_vp9.o
|
||||
OBJS-$(CONFIG_VP8_QSV_HWACCEL) += qsvdec_other.o
|
||||
OBJS-$(CONFIG_VP8_QSV_HWACCEL) += qsvdec.o
|
||||
diff --git a/libavcodec/hwaccels.h b/libavcodec/hwaccels.h
|
||||
index bd75e94f4cae..03a1aefe09bc 100644
|
||||
index ffb9fa5087..fc5d0b0479 100644
|
||||
--- a/libavcodec/hwaccels.h
|
||||
+++ b/libavcodec/hwaccels.h
|
||||
@@ -71,6 +71,7 @@ extern const AVHWAccel ff_vp9_d3d11va_hwaccel;
|
||||
@@ -76,6 +76,7 @@ extern const AVHWAccel ff_vp9_d3d11va_hwaccel;
|
||||
extern const AVHWAccel ff_vp9_d3d11va2_hwaccel;
|
||||
extern const AVHWAccel ff_vp9_dxva2_hwaccel;
|
||||
extern const AVHWAccel ff_vp9_nvdec_hwaccel;
|
||||
@ -3700,7 +3691,7 @@ index bd75e94f4cae..03a1aefe09bc 100644
|
||||
extern const AVHWAccel ff_wmv3_d3d11va_hwaccel;
|
||||
diff --git a/libavcodec/v4l2_request_vp9.c b/libavcodec/v4l2_request_vp9.c
|
||||
new file mode 100644
|
||||
index 000000000000..4074c7fe4b8e
|
||||
index 0000000000..4074c7fe4b
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/v4l2_request_vp9.c
|
||||
@@ -0,0 +1,352 @@
|
||||
@ -4057,7 +4048,7 @@ index 000000000000..4074c7fe4b8e
|
||||
+ .caps_internal = HWACCEL_CAP_ASYNC_SAFE,
|
||||
+};
|
||||
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
|
||||
index fd0bab14a239..434f905c62c5 100644
|
||||
index 4659f94ee8..47340c3875 100644
|
||||
--- a/libavcodec/vp9.c
|
||||
+++ b/libavcodec/vp9.c
|
||||
@@ -191,6 +191,7 @@ static int update_size(AVCodecContext *avctx, int w, int h)
|
||||
@ -4070,25 +4061,25 @@ index fd0bab14a239..434f905c62c5 100644
|
||||
enum AVPixelFormat pix_fmts[HWACCEL_MAX + 2], *fmtp = pix_fmts;
|
||||
@@ -223,6 +224,9 @@ static int update_size(AVCodecContext *avctx, int w, int h)
|
||||
#endif
|
||||
#if CONFIG_VP9_VAAPI_HWACCEL
|
||||
*fmtp++ = AV_PIX_FMT_VAAPI;
|
||||
#if CONFIG_VP9_VDPAU_HWACCEL
|
||||
*fmtp++ = AV_PIX_FMT_VDPAU;
|
||||
+#endif
|
||||
+#if CONFIG_VP9_V4L2REQUEST_HWACCEL
|
||||
+ *fmtp++ = AV_PIX_FMT_DRM_PRIME;
|
||||
#endif
|
||||
break;
|
||||
case AV_PIX_FMT_YUV420P12:
|
||||
@@ -231,6 +235,9 @@ static int update_size(AVCodecContext *avctx, int w, int h)
|
||||
@@ -234,6 +238,9 @@ static int update_size(AVCodecContext *avctx, int w, int h)
|
||||
#endif
|
||||
#if CONFIG_VP9_VAAPI_HWACCEL
|
||||
*fmtp++ = AV_PIX_FMT_VAAPI;
|
||||
#if CONFIG_VP9_VDPAU_HWACCEL
|
||||
*fmtp++ = AV_PIX_FMT_VDPAU;
|
||||
+#endif
|
||||
+#if CONFIG_VP9_V4L2REQUEST_HWACCEL
|
||||
+ *fmtp++ = AV_PIX_FMT_DRM_PRIME;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
@@ -700,7 +707,8 @@ static int decode_frame_header(AVCodecContext *avctx,
|
||||
@@ -703,7 +710,8 @@ static int decode_frame_header(AVCodecContext *avctx,
|
||||
get_bits(&s->gb, 8) : 255;
|
||||
}
|
||||
|
||||
@ -4098,7 +4089,7 @@ index fd0bab14a239..434f905c62c5 100644
|
||||
s->s.h.segmentation.absolute_vals = get_bits1(&s->gb);
|
||||
for (i = 0; i < 8; i++) {
|
||||
if ((s->s.h.segmentation.feat[i].q_enabled = get_bits1(&s->gb)))
|
||||
@@ -1909,6 +1917,9 @@ AVCodec ff_vp9_decoder = {
|
||||
@@ -1912,6 +1920,9 @@ AVCodec ff_vp9_decoder = {
|
||||
#endif
|
||||
#if CONFIG_VP9_VDPAU_HWACCEL
|
||||
HWACCEL_VDPAU(vp9),
|
||||
@ -4109,7 +4100,7 @@ index fd0bab14a239..434f905c62c5 100644
|
||||
NULL
|
||||
},
|
||||
diff --git a/libavcodec/vp9shared.h b/libavcodec/vp9shared.h
|
||||
index 54726df742f9..fee3568736f7 100644
|
||||
index 54726df742..fee3568736 100644
|
||||
--- a/libavcodec/vp9shared.h
|
||||
+++ b/libavcodec/vp9shared.h
|
||||
@@ -131,6 +131,7 @@ typedef struct VP9BitstreamHeader {
|
||||
@ -4121,7 +4112,7 @@ index 54726df742f9..fee3568736f7 100644
|
||||
uint8_t pred_prob[3];
|
||||
struct {
|
||||
|
||||
From b4ce2068a1ba8723908fd39c1b2099b286715dde Mon Sep 17 00:00:00 2001
|
||||
From 189a3278e21e4d6ff06d1f1fe4c7430357499471 Mon Sep 17 00:00:00 2001
|
||||
From: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
Date: Thu, 12 Dec 2019 16:13:55 +0100
|
||||
Subject: [PATCH 15/18] WIP: Add and use vp9 private linux header
|
||||
@ -4135,10 +4126,10 @@ Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
|
||||
create mode 100644 libavcodec/vp9-ctrls.h
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 33c8ed54679a..921e74470145 100755
|
||||
index 4e3e868d7a..1c1929d2c2 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -3015,7 +3015,7 @@ vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
|
||||
@@ -3041,7 +3041,7 @@ vp9_dxva2_hwaccel_deps="dxva2 DXVA_PicParams_VP9"
|
||||
vp9_dxva2_hwaccel_select="vp9_decoder"
|
||||
vp9_nvdec_hwaccel_deps="nvdec"
|
||||
vp9_nvdec_hwaccel_select="vp9_decoder"
|
||||
@ -4148,7 +4139,7 @@ index 33c8ed54679a..921e74470145 100755
|
||||
vp9_vaapi_hwaccel_deps="vaapi VADecPictureParameterBufferVP9_bit_depth"
|
||||
vp9_vaapi_hwaccel_select="vp9_decoder"
|
||||
diff --git a/libavcodec/v4l2_request_vp9.c b/libavcodec/v4l2_request_vp9.c
|
||||
index 4074c7fe4b8e..2e10b7ad1acb 100644
|
||||
index 4074c7fe4b..2e10b7ad1a 100644
|
||||
--- a/libavcodec/v4l2_request_vp9.c
|
||||
+++ b/libavcodec/v4l2_request_vp9.c
|
||||
@@ -19,6 +19,7 @@
|
||||
@ -4161,7 +4152,7 @@ index 4074c7fe4b8e..2e10b7ad1acb 100644
|
||||
struct v4l2_ctrl_vp9_frame_decode_params decode_params;
|
||||
diff --git a/libavcodec/vp9-ctrls.h b/libavcodec/vp9-ctrls.h
|
||||
new file mode 100644
|
||||
index 000000000000..0cdea8a18b72
|
||||
index 0000000000..0cdea8a18b
|
||||
--- /dev/null
|
||||
+++ b/libavcodec/vp9-ctrls.h
|
||||
@@ -0,0 +1,485 @@
|
||||
@ -4651,7 +4642,7 @@ index 000000000000..0cdea8a18b72
|
||||
+
|
||||
+#endif /* _VP9_CTRLS_H_ */
|
||||
|
||||
From 5ba520963c60bb72e9e418a4392724c619e95f89 Mon Sep 17 00:00:00 2001
|
||||
From 8fde9d49bf9fbf0a1a9fdf242753c2b1b6ae377c Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Fri, 15 May 2020 16:54:05 +0000
|
||||
Subject: [PATCH 16/18] WIP: add NV15 and NV20 support
|
||||
@ -4663,10 +4654,10 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 35 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
|
||||
index dd5ba98a02cb..c952997d685d 100644
|
||||
index 0a10d00aad..45057fd049 100644
|
||||
--- a/libavcodec/h264_slice.c
|
||||
+++ b/libavcodec/h264_slice.c
|
||||
@@ -785,10 +785,17 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
@@ -794,10 +794,17 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
*fmt++ = AV_PIX_FMT_GBRP10;
|
||||
} else
|
||||
*fmt++ = AV_PIX_FMT_YUV444P10;
|
||||
@ -4686,7 +4677,7 @@ index dd5ba98a02cb..c952997d685d 100644
|
||||
break;
|
||||
case 12:
|
||||
if (CHROMA444(h)) {
|
||||
@@ -827,6 +834,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
@@ -836,6 +843,9 @@ static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
|
||||
else
|
||||
*fmt++ = AV_PIX_FMT_YUV444P;
|
||||
} else if (CHROMA422(h)) {
|
||||
@ -4697,7 +4688,7 @@ index dd5ba98a02cb..c952997d685d 100644
|
||||
*fmt++ = AV_PIX_FMT_YUVJ422P;
|
||||
else
|
||||
diff --git a/libavcodec/v4l2_request.c b/libavcodec/v4l2_request.c
|
||||
index 5234b5049b0d..0b294feff2eb 100644
|
||||
index 5234b5049b..0b294feff2 100644
|
||||
--- a/libavcodec/v4l2_request.c
|
||||
+++ b/libavcodec/v4l2_request.c
|
||||
@@ -188,6 +188,13 @@ const uint32_t v4l2_request_capture_pixelformats[] = {
|
||||
@ -4738,7 +4729,7 @@ index 5234b5049b0d..0b294feff2eb 100644
|
||||
default:
|
||||
return -1;
|
||||
|
||||
From ea35c24c6c19e90e8a33bf9415cf3b90143221f7 Mon Sep 17 00:00:00 2001
|
||||
From e60693f9f34d717a53b54768e56ccbbdda375abe Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Mon, 27 Jul 2020 23:15:45 +0000
|
||||
Subject: [PATCH 17/18] HACK: define drm NV15 and NV20 format
|
||||
@ -4748,7 +4739,7 @@ Subject: [PATCH 17/18] HACK: define drm NV15 and NV20 format
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/libavcodec/v4l2_request.c b/libavcodec/v4l2_request.c
|
||||
index 0b294feff2eb..a8f0ee79eeef 100644
|
||||
index 0b294feff2..a8f0ee79ee 100644
|
||||
--- a/libavcodec/v4l2_request.c
|
||||
+++ b/libavcodec/v4l2_request.c
|
||||
@@ -30,6 +30,14 @@
|
||||
@ -4767,7 +4758,7 @@ index 0b294feff2eb..a8f0ee79eeef 100644
|
||||
{
|
||||
V4L2RequestDescriptor *req = (V4L2RequestDescriptor*)frame->data[0];
|
||||
|
||||
From 36dbf222487a459156f1752436530b3fae39d35c Mon Sep 17 00:00:00 2001
|
||||
From 688bb66bf9715c02565b63446b75933282d41805 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Karlman <jonas@kwiboo.se>
|
||||
Date: Wed, 13 May 2020 22:51:21 +0000
|
||||
Subject: [PATCH 18/18] WIP: hevc rkvdec fields
|
||||
@ -4779,7 +4770,7 @@ Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
|
||||
2 files changed, 22 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/libavcodec/hevc-ctrls.h b/libavcodec/hevc-ctrls.h
|
||||
index a24916603017..cd143526685f 100644
|
||||
index a249166030..cd14352668 100644
|
||||
--- a/libavcodec/hevc-ctrls.h
|
||||
+++ b/libavcodec/hevc-ctrls.h
|
||||
@@ -58,6 +58,8 @@ enum v4l2_mpeg_video_hevc_start_code {
|
||||
@ -4829,7 +4820,7 @@ index a24916603017..cd143526685f 100644
|
||||
__u32 entry_point_offset_minus1[256];
|
||||
__u8 padding[8];
|
||||
diff --git a/libavcodec/v4l2_request_hevc.c b/libavcodec/v4l2_request_hevc.c
|
||||
index 601202a77d7a..be7838244447 100644
|
||||
index 601202a77d..be78382444 100644
|
||||
--- a/libavcodec/v4l2_request_hevc.c
|
||||
+++ b/libavcodec/v4l2_request_hevc.c
|
||||
@@ -214,6 +214,9 @@ static void v4l2_request_hevc_fill_slice_params(const HEVCContext *h,
|
||||
|
@ -152,8 +152,8 @@ index 2b334c95d47a..1e5624e7af50 100644
|
||||
+ const AVFilter* outFilter = avfilter_get_by_name("buffersink");
|
||||
+ enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_DRM_PRIME, AV_PIX_FMT_NONE };
|
||||
+
|
||||
+ std::string args = StringUtils::Format("video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:"
|
||||
+ "pixel_aspect=%d/%d:sws_param=flags=2",
|
||||
+ std::string args = StringUtils::Format("video_size={}x{}:pix_fmt={}:time_base={}/{}:"
|
||||
+ "pixel_aspect={}/{}",
|
||||
+ m_pCodecContext->width,
|
||||
+ m_pCodecContext->height,
|
||||
+ m_pCodecContext->pix_fmt,
|
||||
@ -273,7 +273,7 @@ index 2b334c95d47a..1e5624e7af50 100644
|
||||
+ char* graphDump = avfilter_graph_dump(m_pFilterGraph, nullptr);
|
||||
+ if (graphDump)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::FilterOpen - Final filter graph:\n%s",
|
||||
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::FilterOpen - Final filter graph:\n{}",
|
||||
+ graphDump);
|
||||
+ av_freep(&graphDump);
|
||||
+ }
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From 58f2acdc63d85eb9818d783a9a858b1ecc267fa7 Mon Sep 17 00:00:00 2001
|
||||
From: Jernej Skrabec <jernej.skrabec@siol.net>
|
||||
Date: Thu, 26 Dec 2019 11:01:51 +0100
|
||||
Subject: [PATCH] WIP: DRMPRIME deinterlace filter
|
||||
Subject: [PATCH 2/2] WIP: DRMPRIME deinterlace filter
|
||||
|
||||
---
|
||||
.../DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp | 368 +++++++++++++++---
|
||||
@ -9,7 +9,7 @@ Subject: [PATCH] WIP: DRMPRIME deinterlace filter
|
||||
2 files changed, 322 insertions(+), 55 deletions(-)
|
||||
|
||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
||||
index 7507c12e9a..4759dde3f9 100644
|
||||
index 2b334c95d47a..1e5624e7af50 100644
|
||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.cpp
|
||||
@@ -79,12 +79,15 @@ CDVDVideoCodecDRMPRIME::CDVDVideoCodecDRMPRIME(CProcessInfo& processInfo)
|
||||
@ -28,7 +28,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
avcodec_free_context(&m_pCodecContext);
|
||||
}
|
||||
|
||||
@@ -341,8 +344,19 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio
|
||||
@@ -330,8 +333,19 @@ bool CDVDVideoCodecDRMPRIME::Open(CDVDStreamInfo& hints, CDVDCodecOptions& optio
|
||||
}
|
||||
|
||||
UpdateProcessInfo(m_pCodecContext, m_pCodecContext->pix_fmt);
|
||||
@ -49,7 +49,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -405,6 +419,8 @@ void CDVDVideoCodecDRMPRIME::Reset()
|
||||
@@ -394,6 +408,8 @@ void CDVDVideoCodecDRMPRIME::Reset()
|
||||
return;
|
||||
|
||||
Drain();
|
||||
@ -58,7 +58,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
|
||||
do
|
||||
{
|
||||
@@ -443,7 +459,7 @@ void CDVDVideoCodecDRMPRIME::Drain()
|
||||
@@ -432,7 +448,7 @@ void CDVDVideoCodecDRMPRIME::Drain()
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
{
|
||||
pVideoPicture->iWidth = m_pFrame->width;
|
||||
pVideoPicture->iHeight = m_pFrame->height;
|
||||
@@ -525,13 +541,232 @@ void CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture)
|
||||
@@ -514,13 +530,232 @@ void CDVDVideoCodecDRMPRIME::SetPictureParams(VideoPicture* pVideoPicture)
|
||||
? DVD_NOPTS_VALUE
|
||||
: static_cast<double>(pts) * DVD_TIME_BASE / AV_TIME_BASE;
|
||||
pVideoPicture->dts = DVD_NOPTS_VALUE;
|
||||
@ -101,9 +101,8 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+ }
|
||||
+
|
||||
+ return true;
|
||||
}
|
||||
|
||||
-CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn()
|
||||
+}
|
||||
+
|
||||
+void CDVDVideoCodecDRMPRIME::FilterTest()
|
||||
+{
|
||||
+ const AVFilter* filter;
|
||||
@ -153,8 +152,8 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+ const AVFilter* outFilter = avfilter_get_by_name("buffersink");
|
||||
+ enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_DRM_PRIME, AV_PIX_FMT_NONE };
|
||||
+
|
||||
+ std::string args = StringUtils::Format("video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:"
|
||||
+ "pixel_aspect=%d/%d:sws_param=flags=2",
|
||||
+ std::string args = StringUtils::Format("video_size={}x{}:pix_fmt={}:time_base={}/{}:"
|
||||
+ "pixel_aspect={}/{}",
|
||||
+ m_pCodecContext->width,
|
||||
+ m_pCodecContext->height,
|
||||
+ m_pCodecContext->pix_fmt,
|
||||
@ -249,7 +248,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+ {
|
||||
+ char err[AV_ERROR_MAX_STRING_SIZE] = {};
|
||||
+ av_strerror(result, err, AV_ERROR_MAX_STRING_SIZE);
|
||||
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::FilterOpen - avfilter_graph_config: {} ({})",
|
||||
+ CLog::Log(LOGERROR, "CDVDVideoCodecDRMPRIME::FilterOpen - avfilter_graph_config: {} ({})",
|
||||
+ err, result);
|
||||
+ return false;
|
||||
+ }
|
||||
@ -274,7 +273,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+ char* graphDump = avfilter_graph_dump(m_pFilterGraph, nullptr);
|
||||
+ if (graphDump)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::FilterOpen - Final filter graph:\n%s",
|
||||
+ CLog::Log(LOGDEBUG, "CDVDVideoCodecDRMPRIME::FilterOpen - Final filter graph:\n{}",
|
||||
+ graphDump);
|
||||
+ av_freep(&graphDump);
|
||||
+ }
|
||||
@ -284,9 +283,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+}
|
||||
+
|
||||
+void CDVDVideoCodecDRMPRIME::FilterClose()
|
||||
{
|
||||
- if (!m_pFilterIn)
|
||||
- return VC_PICTURE;
|
||||
+{
|
||||
+ if (m_pFilterGraph)
|
||||
+ {
|
||||
+ CLog::Log(LOGDEBUG, LOGVIDEO, "CDVDVideoCodecDRMPRIME::FilterClose - Freeing filter graph");
|
||||
@ -296,14 +293,17 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
+ m_pFilterIn = nullptr;
|
||||
+ m_pFilterOut = nullptr;
|
||||
+ }
|
||||
+}
|
||||
}
|
||||
|
||||
+CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn()
|
||||
+{
|
||||
CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn()
|
||||
{
|
||||
- if (!m_pFilterIn)
|
||||
- return VC_PICTURE;
|
||||
-
|
||||
int ret = av_buffersrc_add_frame(m_pFilterIn, m_pFrame);
|
||||
if (ret < 0)
|
||||
{
|
||||
@@ -547,21 +782,14 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn()
|
||||
@@ -536,21 +771,14 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterIn()
|
||||
|
||||
CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterOut()
|
||||
{
|
||||
@ -329,7 +329,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
}
|
||||
else if (ret)
|
||||
{
|
||||
@@ -572,9 +800,27 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterOut()
|
||||
@@ -561,9 +789,27 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::ProcessFilterOut()
|
||||
return VC_ERROR;
|
||||
}
|
||||
|
||||
@ -357,7 +357,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideoPicture)
|
||||
{
|
||||
if (m_codecControlFlags & DVD_CODEC_CTRL_DRAIN)
|
||||
@@ -586,57 +832,71 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo
|
||||
@@ -575,57 +821,71 @@ CDVDVideoCodec::VCReturn CDVDVideoCodecDRMPRIME::GetPicture(VideoPicture* pVideo
|
||||
pVideoPicture->videoBuffer = nullptr;
|
||||
}
|
||||
|
||||
@ -468,7 +468,7 @@ index 7507c12e9a..4759dde3f9 100644
|
||||
return VC_PICTURE;
|
||||
}
|
||||
diff --git a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
||||
index 7112d1b48a..13bec95135 100644
|
||||
index 7112d1b48afb..13bec9513579 100644
|
||||
--- a/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
||||
+++ b/xbmc/cores/VideoPlayer/DVDCodecs/Video/DVDVideoCodecDRMPRIME.h
|
||||
@@ -38,18 +38,25 @@ public:
|
||||
@ -498,3 +498,6 @@ index 7112d1b48a..13bec95135 100644
|
||||
AVFilterGraph* m_pFilterGraph = nullptr;
|
||||
AVFilterContext* m_pFilterIn = nullptr;
|
||||
AVFilterContext* m_pFilterOut = nullptr;
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
# base ffmpeg version
|
||||
KODI_FFMPEG_REPO="https://github.com/xbmc/FFmpeg"
|
||||
KODI_FFMPEG_VERSION="4.3.2-Matrix-19.1"
|
||||
KODI_FFMPEG_VERSION="4.4-N-Alpha1"
|
||||
|
||||
ALL_FEATURE_SETS="v4l2-drmprime v4l2-request libreelec rpi"
|
||||
|
||||
@ -24,20 +24,20 @@ create_patch() {
|
||||
REFTYPE="branch"
|
||||
case "${FEATURE_SET}" in
|
||||
v4l2-drmprime)
|
||||
REPO="https://github.com/lrusak/FFmpeg"
|
||||
REFSPEC="v4l2-drmprime-v5"
|
||||
REPO="https://github.com/jernejsk/FFmpeg"
|
||||
REFSPEC="v4l2-drmprime-v6"
|
||||
;;
|
||||
v4l2-request)
|
||||
REPO="https://github.com/jernejsk/FFmpeg"
|
||||
REFSPEC="v4l2-request-hwaccel-4.3.1"
|
||||
REFSPEC="v4l2-request-hwaccel-4.4"
|
||||
;;
|
||||
libreelec)
|
||||
REPO="https://github.com/LibreELEC/FFmpeg"
|
||||
REFSPEC="4.3-libreelec-misc"
|
||||
REFSPEC="4.4-libreelec-misc"
|
||||
;;
|
||||
rpi)
|
||||
REPO="https://github.com/jc-kynesim/rpi-ffmpeg"
|
||||
REFSPEC="test/4.3.2/rpi_main"
|
||||
REFSPEC="dev/4.4/rpi_import_1"
|
||||
;;
|
||||
*)
|
||||
echo "illegal feature set ${FEATURE_SET}"
|
||||
|
Loading…
x
Reference in New Issue
Block a user