aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex S <iwtcex@gmail.com>2026-03-03 00:06:34 +0000
committerYuri Victorovich <yuri@FreeBSD.org>2026-03-03 00:08:20 +0000
commit9fb3cdfc599bbd632a72f679171562a786006cf9 (patch)
tree90a684691a53fc6d235942e60f3f09a73da1e496
parentbb8247385cbd3f1d98e02f5dd5a33af3636fb449 (diff)
multimedia/obs-studio: bring back NVENC
PR: 291889
-rw-r--r--multimedia/obs-studio/Makefile12
-rw-r--r--multimedia/obs-studio/files/patch-plugins_CMakeLists.txt11
-rw-r--r--multimedia/obs-studio/files/patch-plugins_obs-nvenc_CMakeLists.txt29
-rw-r--r--multimedia/obs-studio/files/patch-plugins_obs-nvenc_obs-nvenc-test_CMakeLists.txt10
-rw-r--r--multimedia/obs-studio/pkg-plist50
5 files changed, 106 insertions, 6 deletions
diff --git a/multimedia/obs-studio/Makefile b/multimedia/obs-studio/Makefile
index 0230659db1c8..170cf5265a5b 100644
--- a/multimedia/obs-studio/Makefile
+++ b/multimedia/obs-studio/Makefile
@@ -1,6 +1,6 @@
PORTNAME= obs-studio
DISTVERSION= 32.0.4
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= multimedia
MASTER_SITES= https://github.com/obsproject/obs-studio/releases/download/${DISTVERSION}/
DISTFILES= OBS-Studio-${DISTVERSION}-Sources${EXTRACT_SUFX}
@@ -76,10 +76,8 @@ LDFLAGS+= -fPIC # pending https://github.com/obsproject/obs-studio/issues/3436
WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION}-sources
-WITH_DEBUG= yes # workaround for https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=292376#c6
-
-OPTIONS_DEFINE= BROWSER PIPEWIRE VLC VST WAYLAND
-OPTIONS_DEFAULT= PIPEWIRE VLC VST WAYLAND
+OPTIONS_DEFINE= BROWSER NVENC PIPEWIRE VLC VST WAYLAND
+OPTIONS_DEFAULT= NVENC PIPEWIRE VLC VST WAYLAND
OPTIONS_MULTI= AUDIO
OPTIONS_MULTI_AUDIO= JACK PULSEAUDIO SNDIO
OPTIONS_DEFAULT+= ${OPTIONS_MULTI_AUDIO}
@@ -94,6 +92,10 @@ JACK_LIB_DEPENDS= libjack.so:audio/jack
JACK_CMAKE_ON= -DENABLE_JACK=TRUE
JACK_CMAKE_OFF= -DDISABLE_JACK=TRUE
+NVENC_DESC= NVIDIA Hardware Encoder Plugin
+NVENC_BUILD_DEPENDS= ffnvcodec-headers>=13.0.19.0:multimedia/ffnvcodec-headers
+NVENC_CMAKE_BOOL= ENABLE_NVENC
+
PIPEWIRE_DESC= Screen capture via PipeWire
PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire
PIPEWIRE_CMAKE_BOOL= ENABLE_PIPEWIRE
diff --git a/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt b/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
index 5eb379428270..3abe06b98b69 100644
--- a/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
+++ b/multimedia/obs-studio/files/patch-plugins_CMakeLists.txt
@@ -1,5 +1,14 @@
---- plugins/CMakeLists.txt.orig 2025-08-01 04:15:57 UTC
+--- plugins/CMakeLists.txt.orig 2025-09-26 21:04:14 UTC
+++ plugins/CMakeLists.txt
+@@ -61,7 +61,7 @@ add_obs_plugin(obs-libfdk)
+ add_obs_plugin(obs-ffmpeg)
+ add_obs_plugin(obs-filters)
+ add_obs_plugin(obs-libfdk)
+-add_obs_plugin(obs-nvenc PLATFORMS WINDOWS LINUX ARCHITECTURES x64 x86_64)
++add_obs_plugin(obs-nvenc PLATFORMS WINDOWS LINUX FREEBSD ARCHITECTURES x64 x86_64)
+ add_obs_plugin(obs-outputs)
+ add_obs_plugin(
+ obs-qsv11
@@ -72,7 +72,7 @@ add_obs_plugin(
add_obs_plugin(obs-transitions)
add_obs_plugin(
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-nvenc_CMakeLists.txt b/multimedia/obs-studio/files/patch-plugins_obs-nvenc_CMakeLists.txt
new file mode 100644
index 000000000000..02d47b297049
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-nvenc_CMakeLists.txt
@@ -0,0 +1,29 @@
+--- plugins/obs-nvenc/CMakeLists.txt.orig 2025-09-27 00:04:14.000000000 +0300
++++ plugins/obs-nvenc/CMakeLists.txt 2025-12-23 07:49:06.708408000 +0300
+@@ -14,7 +14,7 @@
+ add_subdirectory("${CMAKE_SOURCE_DIR}/shared/opts-parser" "${CMAKE_BINARY_DIR}/shared/opts-parser")
+ endif()
+
+-if(OS_LINUX AND NOT TARGET OBS::glad)
++if((OS_LINUX OR OS_FREEBSD) AND NOT TARGET OBS::glad)
+ add_subdirectory("${CMAKE_SOURCE_DIR}/deps/glad" "${CMAKE_BINARY_DIR}/deps/glad")
+ endif()
+
+@@ -28,7 +28,7 @@
+ target_sources(
+ obs-nvenc
+ PRIVATE
+- $<$<PLATFORM_ID:Linux>:nvenc-opengl.c>
++ $<$<PLATFORM_ID:Linux,FreeBSD>:nvenc-opengl.c>
+ $<$<PLATFORM_ID:Windows>:nvenc-d3d11.c>
+ cuda-helpers.c
+ cuda-helpers.h
+@@ -46,7 +46,7 @@
+
+ target_link_libraries(
+ obs-nvenc
+- PRIVATE OBS::libobs OBS::opts-parser FFnvcodec::FFnvcodec $<$<PLATFORM_ID:Linux>:OBS::glad>
++ PRIVATE OBS::libobs OBS::opts-parser FFnvcodec::FFnvcodec $<$<PLATFORM_ID:Linux,FreeBSD>:OBS::glad>
+ )
+
+ target_compile_definitions(obs-nvenc PRIVATE $<$<BOOL:${ENABLE_NVENC_FFMPEG_IDS}>:REGISTER_FFMPEG_IDS>)
diff --git a/multimedia/obs-studio/files/patch-plugins_obs-nvenc_obs-nvenc-test_CMakeLists.txt b/multimedia/obs-studio/files/patch-plugins_obs-nvenc_obs-nvenc-test_CMakeLists.txt
new file mode 100644
index 000000000000..9bfa22764db4
--- /dev/null
+++ b/multimedia/obs-studio/files/patch-plugins_obs-nvenc_obs-nvenc-test_CMakeLists.txt
@@ -0,0 +1,10 @@
+--- plugins/obs-nvenc/obs-nvenc-test/CMakeLists.txt.orig 2025-09-26 21:04:14 UTC
++++ plugins/obs-nvenc/obs-nvenc-test/CMakeLists.txt
+@@ -5,6 +5,6 @@ target_sources(obs-nvenc-test PRIVATE obs-nvenc-test.c
+ add_executable(obs-nvenc-test)
+
+ target_sources(obs-nvenc-test PRIVATE obs-nvenc-test.cpp)
+-target_link_libraries(obs-nvenc-test FFnvcodec::FFnvcodec)
++target_link_libraries(obs-nvenc-test FFnvcodec::FFnvcodec Threads::Threads)
+
+ set_target_properties_obs(obs-nvenc-test PROPERTIES FOLDER plugins/obs-nvenc)
diff --git a/multimedia/obs-studio/pkg-plist b/multimedia/obs-studio/pkg-plist
index 6a0b78131a03..5deaed149e78 100644
--- a/multimedia/obs-studio/pkg-plist
+++ b/multimedia/obs-studio/pkg-plist
@@ -1,5 +1,6 @@
bin/obs
bin/obs-ffmpeg-mux
+%%NVENC%%bin/obs-nvenc-test
include/obs/callback/calldata.h
include/obs/callback/decl.h
include/obs/callback/proc.h
@@ -117,6 +118,7 @@ lib/obs-plugins/linux-capture.so
lib/obs-plugins/linux-v4l2.so
lib/obs-plugins/obs-ffmpeg.so
lib/obs-plugins/obs-filters.so
+%%NVENC%%lib/obs-plugins/obs-nvenc.so
lib/obs-plugins/obs-outputs.so
lib/obs-plugins/obs-transitions.so
%%VST%%lib/obs-plugins/obs-vst.so
@@ -838,6 +840,54 @@ share/obs/obs-plugins/obs-filters/luma_key_filter_v2.effect
share/obs/obs-plugins/obs-filters/mask_alpha_filter.effect
share/obs/obs-plugins/obs-filters/mask_color_filter.effect
share/obs/obs-plugins/obs-filters/sharpness.effect
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ar-SA.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/be-BY.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/bg-BG.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ca-ES.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/cs-CZ.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/da-DK.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/de-DE.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/el-GR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/en-GB.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/en-US.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/es-ES.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/et-EE.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/fa-IR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/fi-FI.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/fr-FR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/gl-ES.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/he-IL.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/hi-IN.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/hr-HR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/hu-HU.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/id-ID.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/is-IS.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/it-IT.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ja-JP.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ka-GE.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/kaa.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/kmr-TR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ko-KR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ms-MY.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/nb-NO.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/nl-NL.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/nn-NO.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/pl-PL.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/pt-BR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/pt-PT.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ro-RO.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ru-RU.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/sk-SK.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/sr-SP.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/sv-SE.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/th-TH.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/tr-TR.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/tt-RU.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/ug-CN.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/uk-UA.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/vi-VN.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/zh-CN.ini
+%%NVENC%%share/obs/obs-plugins/obs-nvenc/locale/zh-TW.ini
share/obs/obs-plugins/obs-outputs/locale/af-ZA.ini
share/obs/obs-plugins/obs-outputs/locale/ar-SA.ini
share/obs/obs-plugins/obs-outputs/locale/ba-RU.ini