[packages/ffmpeg] - added nvenc patch (prepare for nv-codec SDK 12.2); added avisynth support
qboosh
qboosh at pld-linux.org
Mon May 27 20:29:53 CEST 2024
commit 4575071bbb87ed5f61299c1707dd3b69c5fa0ed4
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Mon May 27 20:15:06 2024 +0200
- added nvenc patch (prepare for nv-codec SDK 12.2); added avisynth support
ffmpeg-nvenc.patch | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++
ffmpeg.spec | 7 ++++
2 files changed, 114 insertions(+)
---
diff --git a/ffmpeg.spec b/ffmpeg.spec
index aff2a8b..66c2e62 100644
--- a/ffmpeg.spec
+++ b/ffmpeg.spec
@@ -17,6 +17,7 @@
%bcond_without amr # AMR-NB/WB de/encoding via libopencore-amrnb/wb
%bcond_without aom # AV1 viden de/encoding via libaom
%bcond_without aribb24 # ARIB text and caption decoding via libaribb24
+%bcond_without avisynth # AviSynth scripts support
%bcond_without avs # AVS encoding via xavs
%bcond_without avs2 # AVS2 de/encoding via libdavs2/libxavs2
%bcond_without bs2b # BS2B audio filter support
@@ -146,7 +147,9 @@ Patch1: %{name}-atadenoise.patch
Patch2: opencv4.patch
Patch3: v4l2-request-hwdec.patch
Patch4: %{name}-vulkan1.3.280.patch
+Patch5: %{name}-nvenc.patch
URL: https://ffmpeg.org/
+%{?with_avisynth:BuildRequires: AviSynthPlus-devel >= 3.7.3}
%{?with_decklink:BuildRequires: Blackmagic_DeckLink_SDK >= 10.11}
%{?with_openal:BuildRequires: OpenAL-devel >= 1.1}
%{?with_opencl:BuildRequires: OpenCL-devel >= 1.2}
@@ -382,6 +385,8 @@ Requires: twolame-libs >= 0.3.10
%{?with_zmq:Requires: zeromq >= 4.2.1}
%{?with_zimg:Requires: zimg >= 2.7.0}
%{?with_zvbi:Requires: zvbi >= 0.2.28}
+# dlopened
+%{?with_avisynth:Suggests: AviSynthPlus >= 3.7.3}
%description libs
This package contains the ffmpeg shared libraries:
@@ -570,6 +575,7 @@ Dokumentacja pakietu FFmpeg w formacie HTML.
%patch3 -p1
%endif
%patch4 -p1
+%patch5 -p1
# package the grep result for mplayer, the result formatted as ./mplayer/configure
cat <<EOF > ffmpeg-avconfig
@@ -653,6 +659,7 @@ EOF
--disable-stripping \
%{!?with_doc:--disable-doc} \
--enable-avfilter \
+ %{?with_avisynth:--enable-avisynth} \
%{?with_chromaprint:--enable-chromaprint} \
%{?with_cudasdk:--enable-cuda-nvcc} \
%{?with_decklink:--enable-decklink} \
diff --git a/ffmpeg-nvenc.patch b/ffmpeg-nvenc.patch
new file mode 100644
index 0000000..c92cd8b
--- /dev/null
+++ b/ffmpeg-nvenc.patch
@@ -0,0 +1,107 @@
+From 43b417d516b0fabbec1f02120d948f636b8a018e Mon Sep 17 00:00:00 2001
+From: Timo Rothenpieler <timo at rothenpieler.org>
+Date: Sun, 31 Mar 2024 18:25:15 +0200
+Subject: [PATCH] avcodec/nvenc: stop using long deprecated format specifiers
+
+---
+ libavcodec/nvenc.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
+index fd73af2a32..0cb3b87c67 100644
+--- a/libavcodec/nvenc.c
++++ b/libavcodec/nvenc.c
+@@ -1689,15 +1689,15 @@ static NV_ENC_BUFFER_FORMAT nvenc_map_buffer_format(enum AVPixelFormat pix_fmt)
+ {
+ switch (pix_fmt) {
+ case AV_PIX_FMT_YUV420P:
+- return NV_ENC_BUFFER_FORMAT_YV12_PL;
++ return NV_ENC_BUFFER_FORMAT_YV12;
+ case AV_PIX_FMT_NV12:
+- return NV_ENC_BUFFER_FORMAT_NV12_PL;
++ return NV_ENC_BUFFER_FORMAT_NV12;
+ case AV_PIX_FMT_P010:
+ case AV_PIX_FMT_P016:
+ return NV_ENC_BUFFER_FORMAT_YUV420_10BIT;
+ case AV_PIX_FMT_GBRP:
+ case AV_PIX_FMT_YUV444P:
+- return NV_ENC_BUFFER_FORMAT_YUV444_PL;
++ return NV_ENC_BUFFER_FORMAT_YUV444;
+ case AV_PIX_FMT_GBRP16:
+ case AV_PIX_FMT_YUV444P16:
+ return NV_ENC_BUFFER_FORMAT_YUV444_10BIT;
+--
+2.25.1
+
+From 06c2a2c425f22e7dba5cad909737a631cc676e3f Mon Sep 17 00:00:00 2001
+From: Timo Rothenpieler <timo at rothenpieler.org>
+Date: Sun, 31 Mar 2024 18:39:49 +0200
+Subject: [PATCH] avcodec/nvenc: support SDK 12.2 bit depth API
+
+---
+ libavcodec/nvenc.c | 15 +++++++++++++++
+ libavcodec/nvenc.h | 5 +++++
+ 2 files changed, 20 insertions(+)
+
+diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c
+index 0cb3b87c67..8327496937 100644
+--- a/libavcodec/nvenc.c
++++ b/libavcodec/nvenc.c
+@@ -1255,6 +1255,11 @@ static av_cold int nvenc_setup_h264_config(AVCodecContext *avctx)
+
+ h264->level = ctx->level;
+
++#ifdef NVENC_HAVE_NEW_BIT_DEPTH_API
++ h264->inputBitDepth = h264->outputBitDepth =
++ IS_10BIT(ctx->data_pix_fmt) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8;
++#endif
++
+ if (ctx->coder >= 0)
+ h264->entropyCodingMode = ctx->coder;
+
+@@ -1370,7 +1375,12 @@ static av_cold int nvenc_setup_hevc_config(AVCodecContext *avctx)
+
+ hevc->chromaFormatIDC = IS_YUV444(ctx->data_pix_fmt) ? 3 : 1;
+
++#ifdef NVENC_HAVE_NEW_BIT_DEPTH_API
++ hevc->inputBitDepth = hevc->outputBitDepth =
++ IS_10BIT(ctx->data_pix_fmt) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8;
++#else
+ hevc->pixelBitDepthMinus8 = IS_10BIT(ctx->data_pix_fmt) ? 2 : 0;
++#endif
+
+ hevc->level = ctx->level;
+
+@@ -1455,8 +1465,13 @@ static av_cold int nvenc_setup_av1_config(AVCodecContext *avctx)
+
+ av1->chromaFormatIDC = IS_YUV444(ctx->data_pix_fmt) ? 3 : 1;
+
++#ifdef NVENC_HAVE_NEW_BIT_DEPTH_API
++ av1->inputBitDepth = IS_10BIT(ctx->data_pix_fmt) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8;
++ av1->outputBitDepth = (IS_10BIT(ctx->data_pix_fmt) || ctx->highbitdepth) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8;
++#else
+ av1->inputPixelBitDepthMinus8 = IS_10BIT(ctx->data_pix_fmt) ? 2 : 0;
+ av1->pixelBitDepthMinus8 = (IS_10BIT(ctx->data_pix_fmt) || ctx->highbitdepth) ? 2 : 0;
++#endif
+
+ if (ctx->b_ref_mode >= 0)
+ av1->useBFramesAsRef = ctx->b_ref_mode;
+diff --git a/libavcodec/nvenc.h b/libavcodec/nvenc.h
+index 48cdfc58aa..d99d8a0d76 100644
+--- a/libavcodec/nvenc.h
++++ b/libavcodec/nvenc.h
+@@ -83,6 +83,11 @@ typedef void ID3D11Device;
+ #define NVENC_NO_DEPRECATED_RC
+ #endif
+
++// SDK 12.2 compile time feature checks
++#if NVENCAPI_CHECK_VERSION(12, 2)
++#define NVENC_HAVE_NEW_BIT_DEPTH_API
++#endif
++
+ typedef struct NvencSurface
+ {
+ NV_ENC_INPUT_PTR input_surface;
+--
+2.25.1
+
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/ffmpeg.git/commitdiff/4575071bbb87ed5f61299c1707dd3b69c5fa0ed4
More information about the pld-cvs-commit
mailing list