From 36e49ac17922b1261396ea01288f3f164bbb604d Mon Sep 17 00:00:00 2001 From: Daniel Bermond Date: Wed, 1 May 2024 13:25:30 -0300 Subject: [PATCH] Fix nvidia vulkan decoding. Fix vulkan filters output format. Original patch for fixing nvidia vulkan decoding: https://github.com/streetpea/chiaki4deck/issues/239#issuecomment-1929365254 References ---------- [1] https://trac.ffmpeg.org/ticket/10847 [2] https://trac.ffmpeg.org/ticket/10970 [3] https://trac.ffmpeg.org/ticket/10876 [4] https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/eb7d019b326b0c34e07f2369f31e8ba266fa666b --- .SRCINFO | 8 ++++++-- ...> 050-ffmpeg-fix-segfault-with-avisynthplus.patch | 0 060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch | 12 ++++++++++++ PKGBUILD | 12 +++++++++--- 4 files changed, 27 insertions(+), 5 deletions(-) rename 060-ffmpeg-fix-segfault-with-avisynthplus.patch => 050-ffmpeg-fix-segfault-with-avisynthplus.patch (100%) create mode 100644 060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch diff --git a/.SRCINFO b/.SRCINFO index 9ff791b..850882e 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = ffmpeg-full pkgdesc = Complete solution to record, convert and stream audio and video (all possible features including libfdk-aac) pkgver = 6.1.1 - pkgrel = 4 + pkgrel = 5 url = https://www.ffmpeg.org/ arch = x86_64 license = LicenseRef-nonfree-and-unredistributable @@ -143,12 +143,14 @@ pkgbase = ffmpeg-full source = 020-ffmpeg-add-svt-hevc-docs-g6cca5b9.patch::https://raw.githubusercontent.com/OpenVisualCloud/SVT-HEVC/6cca5b932623d3a1953b165ae6b093ca1325ac44/ffmpeg_plugin/0002-doc-Add-libsvt_hevc-encoder-docs.patch source = 030-ffmpeg-add-svt-vp9-g43ef8e5.patch::https://raw.githubusercontent.com/OpenVisualCloud/SVT-VP9/43ef8e5e96932421858762392adbbab57c84aebf/ffmpeg_plugin/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch source = 040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch - source = 060-ffmpeg-fix-segfault-with-avisynthplus.patch + source = 050-ffmpeg-fix-segfault-with-avisynthplus.patch + source = 060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch source = 070-ffmpeg-fix-lensfun-detection.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e1c1dc8347f13104bc21e4100fcf4d4dddf5e5d8 source = 080-ffmpeg-glslang14-fix.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e43615fc2ab27d562ed7e087803f4a364a7d1175 source = 090-ffmpeg-vulkan-headers1.3.279-fix.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/fef22c87ada4517441701e6e61e062c9f4399c8e source = 100-ffmpeg-nvenc-replace-deprecated-format-specifiers.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/43b417d516b0fabbec1f02120d948f636b8a018e source = 110-ffmpeg-nvenc-support-sdk-12.2-bit-depth-api.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/06c2a2c425f22e7dba5cad909737a631cc676e3f + source = 120-ffmpeg-fix-vulkan-filters-output-format.patch::https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/eb7d019b326b0c34e07f2369f31e8ba266fa666b source = LICENSE validpgpkeys = FCF986EA15E6E293A5644F10B4322F04D67658D8 sha256sums = 8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968 @@ -158,11 +160,13 @@ pkgbase = ffmpeg-full sha256sums = 0433016c8523c7ce159523946a76c8fa06a926f33f94b70e8de7c2082d14178c sha256sums = 7d5ce8058b143bae1be10a06d79ac0f1a72daf00cf648309450d83bea249a6b1 sha256sums = 0e277c0d5e33612ca7a11025958133b17bfbe23168b0aee5bd07f674f6fd7440 + sha256sums = f2f73793a45c9dffb033f23c1b10a612abe6528cbd06c04b06e8189d1ef208be sha256sums = 2b72fe52ea73fbc1ce7eb70b4c181893c761e30121879ddd5513976232d7adf8 sha256sums = cebcc04cac957f6a9c08169765da4c7ef231ebbda225876e210fd60e8582c3d9 sha256sums = c2ef9c35082ed2e5989428d086b7bfef1dfe9e0a85e6d259daf46f369f115483 sha256sums = 8b5b6173c63d3dc280ba4110d91b1f303e1d0a1996956d51567962f570f770e5 sha256sums = 8d7549121dfa6a3784f3cfbc30d8a4c997aaa17ce5e703e7a93b1f9a464134b4 + sha256sums = b509207b5695dd9023ffd6f747607f774bdb417be554da3d8e974022845a5f38 sha256sums = 04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36 pkgname = ffmpeg-full diff --git a/060-ffmpeg-fix-segfault-with-avisynthplus.patch b/050-ffmpeg-fix-segfault-with-avisynthplus.patch similarity index 100% rename from 060-ffmpeg-fix-segfault-with-avisynthplus.patch rename to 050-ffmpeg-fix-segfault-with-avisynthplus.patch diff --git a/060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch b/060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch new file mode 100644 index 0000000..7caf065 --- /dev/null +++ b/060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch @@ -0,0 +1,12 @@ +--- a/libavutil/vulkan.c ++++ b/libavutil/vulkan.c +@@ -607,6 +607,9 @@ int ff_vk_exec_add_dep_frame(FFVulkanContext *s, FFVkExecContext *e, AVFrame *f, + uint32_t *queue_family_dst; + VkAccessFlagBits *access_dst; + ++ if (!f || !f->hw_frames_ctx) ++ return 1; ++ + AVHWFramesContext *hwfc = (AVHWFramesContext *)f->hw_frames_ctx->data; + AVVulkanFramesContext *vkfc = hwfc->hwctx; + AVVkFrame *vkf = (AVVkFrame *)f->data[0]; diff --git a/PKGBUILD b/PKGBUILD index aa514b9..c1e8d56 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -3,7 +3,7 @@ pkgname=ffmpeg-full pkgver=6.1.1 -pkgrel=4 +pkgrel=5 _svt_hevc_ver='6cca5b932623d3a1953b165ae6b093ca1325ac44' _svt_vp9_ver='43ef8e5e96932421858762392adbbab57c84aebf' pkgdesc='Complete solution to record, convert and stream audio and video (all possible features including libfdk-aac)' @@ -138,12 +138,14 @@ source=("https://ffmpeg.org/releases/ffmpeg-${pkgver}.tar.xz"{,.asc} "020-ffmpeg-add-svt-hevc-docs-g${_svt_hevc_ver:0:7}.patch"::"https://raw.githubusercontent.com/OpenVisualCloud/SVT-HEVC/${_svt_hevc_ver}/ffmpeg_plugin/0002-doc-Add-libsvt_hevc-encoder-docs.patch" "030-ffmpeg-add-svt-vp9-g${_svt_vp9_ver:0:7}.patch"::"https://raw.githubusercontent.com/OpenVisualCloud/SVT-VP9/${_svt_vp9_ver}/ffmpeg_plugin/master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch" '040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch' - '060-ffmpeg-fix-segfault-with-avisynthplus.patch' + '050-ffmpeg-fix-segfault-with-avisynthplus.patch' + '060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch' '070-ffmpeg-fix-lensfun-detection.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e1c1dc8347f13104bc21e4100fcf4d4dddf5e5d8' '080-ffmpeg-glslang14-fix.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e43615fc2ab27d562ed7e087803f4a364a7d1175' '090-ffmpeg-vulkan-headers1.3.279-fix.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/fef22c87ada4517441701e6e61e062c9f4399c8e' '100-ffmpeg-nvenc-replace-deprecated-format-specifiers.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/43b417d516b0fabbec1f02120d948f636b8a018e' '110-ffmpeg-nvenc-support-sdk-12.2-bit-depth-api.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/06c2a2c425f22e7dba5cad909737a631cc676e3f' + '120-ffmpeg-fix-vulkan-filters-output-format.patch'::'https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/eb7d019b326b0c34e07f2369f31e8ba266fa666b' 'LICENSE') sha256sums=('8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968' 'SKIP' @@ -152,11 +154,13 @@ sha256sums=('8684f4b00f94b85461884c3719382f1261f0d9eb3d59640a1f4ac0873616f968' '0433016c8523c7ce159523946a76c8fa06a926f33f94b70e8de7c2082d14178c' '7d5ce8058b143bae1be10a06d79ac0f1a72daf00cf648309450d83bea249a6b1' '0e277c0d5e33612ca7a11025958133b17bfbe23168b0aee5bd07f674f6fd7440' + 'f2f73793a45c9dffb033f23c1b10a612abe6528cbd06c04b06e8189d1ef208be' '2b72fe52ea73fbc1ce7eb70b4c181893c761e30121879ddd5513976232d7adf8' 'cebcc04cac957f6a9c08169765da4c7ef231ebbda225876e210fd60e8582c3d9' 'c2ef9c35082ed2e5989428d086b7bfef1dfe9e0a85e6d259daf46f369f115483' '8b5b6173c63d3dc280ba4110d91b1f303e1d0a1996956d51567962f570f770e5' '8d7549121dfa6a3784f3cfbc30d8a4c997aaa17ce5e703e7a93b1f9a464134b4' + 'b509207b5695dd9023ffd6f747607f774bdb417be554da3d8e974022845a5f38' '04a7176400907fd7db0d69116b99de49e582a6e176b3bfb36a03e50a4cb26a36') validpgpkeys=('FCF986EA15E6E293A5644F10B4322F04D67658D8') @@ -166,12 +170,14 @@ prepare() { patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/020-ffmpeg-add-svt-hevc-docs-g${_svt_hevc_ver:0:7}.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/030-ffmpeg-add-svt-vp9-g${_svt_vp9_ver:0:7}.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch" - patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/060-ffmpeg-fix-segfault-with-avisynthplus.patch" + patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/050-ffmpeg-fix-segfault-with-avisynthplus.patch" + patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/060-ffmpeg-fix-nvidia-vulkan-decoding-segfault.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/070-ffmpeg-fix-lensfun-detection.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/080-ffmpeg-glslang14-fix.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/090-ffmpeg-vulkan-headers1.3.279-fix.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/100-ffmpeg-nvenc-replace-deprecated-format-specifiers.patch" patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/110-ffmpeg-nvenc-support-sdk-12.2-bit-depth-api.patch" + patch -d "ffmpeg-${pkgver}" -Np1 -i "${srcdir}/120-ffmpeg-fix-vulkan-filters-output-format.patch" } build() {