git: 2b8c1c0c0420 - main - multimedia/ffmpeg: add NVENC option

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Wed, 19 Oct 2022 17:44:10 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2b8c1c0c04209a7630d53df0b6c5a07c6ebe4c10

commit 2b8c1c0c04209a7630d53df0b6c5a07c6ebe4c10
Author:     Alex S <iwtcex@gmail.com>
AuthorDate: 2022-05-16 21:08:57 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2022-10-19 17:43:35 +0000

    multimedia/ffmpeg: add NVENC option
    
    On FreeBSD requires nvidia-driver >= 495 for CUDA initialization fix
    and linux-nvidia-libs + libc6-shim until nvidia-driver provides native
    libcuda.so, libnvidia-encode.so, libnvcuvid.so.
    
    PR:             264027
---
 multimedia/ffmpeg/Makefile              | 7 ++++++-
 multimedia/ffmpeg/files/patch-configure | 9 +++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile
index f2491e1c1dee..5675a639adb0 100644
--- a/multimedia/ffmpeg/Makefile
+++ b/multimedia/ffmpeg/Makefile
@@ -34,7 +34,7 @@ OPTIONS_DEFINE=	ALSA AMR_NB AMR_WB AOM ARIBB24 ASM ASS BS2B CACA CDIO \
 		CODEC2 DAV1D DAVS2 DC1394 DEBUG DOCS DRM FDK_AAC FLITE \
 		FONTCONFIG FREETYPE FREI0R FRIBIDI GLSLANG GME GSM ICONV ILBC \
 		JACK KLVANC KVAZAAR LADSPA LAME LENSFUN LIBBLURAY LIBRSVG2 \
-		LIBXML2 LTO LV2 MODPLUG MYSOFA OPENAL OPENCL OPENGL \
+		LIBXML2 LTO LV2 MODPLUG MYSOFA NVENC OPENAL OPENCL OPENGL \
 		OPENH264 OPENJPEG OPENMPT OPENVINO OPTIMIZED_CFLAGS OPUS POCKETSPHINX \
 		PULSEAUDIO RAV1E RABBITMQ RIST RTCPU RUBBERBAND SDL SMB SNAPPY \
 		SNDIO SOXR SPEEX SRT SSH SVTAV1 SVTHEVC SVTVP9 TENSORFLOW \
@@ -112,6 +112,7 @@ LV2_DESC=	LV2 audio filtering
 MFX_DESC=	Intel MediaSDK (aka Quick Sync Video)
 MYSOFA_DESC=	SOFAlizer binaural filter
 NONFREE_DESC=	Allow use of nonfree code
+NVENC_DESC=	NVIDIA decoder/encoder with CUDA support
 OPENMPT_DESC=	Decoding tracked files via libopenmpt
 OPENH264_DESC=	H.264 video codec support via OpenH264
 OPENVINO_DESC=	OpenVINO as a DNN module backend for DNN based filters like dnn_processing
@@ -347,6 +348,10 @@ MODPLUG_CONFIGURE_ENABLE=	libmodplug
 MYSOFA_LIB_DEPENDS=	libmysofa.so:audio/libmysofa
 MYSOFA_CONFIGURE_ENABLE=	libmysofa
 
+# nvenc
+NVENC_BUILD_DEPENDS=	${LOCALBASE}/include/ffnvcodec/nvEncodeAPI.h:multimedia/ffnvcodec-headers
+NVENC_CONFIGURE_ENABLE=	nvenc
+
 # OpenAL
 OPENAL_LIB_DEPENDS=	libopenal.so:audio/openal-soft
 OPENAL_CONFIGURE_ENABLE=	openal
diff --git a/multimedia/ffmpeg/files/patch-configure b/multimedia/ffmpeg/files/patch-configure
index 1b06074fc3fa..760c50b8e912 100644
--- a/multimedia/ffmpeg/files/patch-configure
+++ b/multimedia/ffmpeg/files/patch-configure
@@ -15,3 +15,12 @@
  cpu="generic"
  intrinsics="none"
  
+@@ -6758,7 +6752,7 @@ if enabled x86; then
+ 
+ if enabled x86; then
+     case $target_os in
+-        mingw32*|mingw64*|win32|win64|linux|cygwin*)
++        freebsd|mingw32*|mingw64*|win32|win64|linux|cygwin*)
+             ;;
+         *)
+             disable ffnvcodec cuvid nvdec nvenc