From 24ff7ae790016b99d735a5c8878f1b60e5cf3d08 Mon Sep 17 00:00:00 2001 From: globule Date: Sat, 28 Dec 2024 22:04:35 +0100 Subject: [PATCH] obs-studio-plugins.distroav: init at 6.0.0 This Version has major & large code changes.Starting v6 the plugin has been re-branded DistroAV from OBS-NDI. https://github.com/DistroAV/DistroAV/releases/tag/6.0.0 "obs-studio-plugins.distroav: correct file formatting" "obs-studio-plugins.distroav: fixed fmt issue by adding tag" obs-studio-plugins.distroav: run nixfmt on the file to fix formatting osb-studio-plugins.distroav: changed lib reference to ndi-6 obs-studio-plugins.distroav: fix ndi-6 reference --- .../video/obs-studio/plugins/default.nix | 2 + .../obs-studio/plugins/distroav/default.nix | 61 +++++++++++++++++++ .../plugins/distroav/hardcode-ndi-path.patch | 18 ++++++ 3 files changed, 81 insertions(+) create mode 100644 pkgs/applications/video/obs-studio/plugins/distroav/default.nix create mode 100644 pkgs/applications/video/obs-studio/plugins/distroav/hardcode-ndi-path.patch diff --git a/pkgs/applications/video/obs-studio/plugins/default.nix b/pkgs/applications/video/obs-studio/plugins/default.nix index 2eca00244349..a86719e5fb0d 100644 --- a/pkgs/applications/video/obs-studio/plugins/default.nix +++ b/pkgs/applications/video/obs-studio/plugins/default.nix @@ -10,6 +10,8 @@ droidcam-obs = callPackage ./droidcam-obs { }; + distroav = qt6Packages.callPackage ./distroav { }; + input-overlay = qt6Packages.callPackage ./input-overlay.nix { }; looking-glass-obs = callPackage ./looking-glass-obs.nix { }; diff --git a/pkgs/applications/video/obs-studio/plugins/distroav/default.nix b/pkgs/applications/video/obs-studio/plugins/distroav/default.nix new file mode 100644 index 000000000000..6654cb08ac40 --- /dev/null +++ b/pkgs/applications/video/obs-studio/plugins/distroav/default.nix @@ -0,0 +1,61 @@ +{ + lib, + stdenv, + fetchFromGitHub, + obs-studio, + cmake, + qtbase, + ndi-6, + curl, +}: + +stdenv.mkDerivation rec { + pname = "distroav"; + version = "6.0.0"; + + nativeBuildInputs = [ + cmake + qtbase + ]; + + buildInputs = [ + obs-studio + qtbase + ndi-6 + curl + ]; + + src = fetchFromGitHub { + owner = "DistroAV"; + repo = "DistroAV"; + tag = version; + hash = "sha256-pr/5XCLo5fzergIQrYFC9o9K+KuP4leDk5/oRe5ct9Q="; + }; + + # Modify plugin-main.cpp file to fix ndi libs path + patches = [ ./hardcode-ndi-path.patch ]; + + postPatch = '' + # Add path (variable added in hardcode-ndi-path.patch + substituteInPlace src/plugin-main.cpp --replace-fail "@NDI@" "${ndi-6}" + + # Replace bundled NDI SDK with the upstream version + # (This fixes soname issues) + rm -rf lib/ndi + ln -s ${ndi-6}/include lib/ndi + ''; + + cmakeFlags = [ "-DENABLE_QT=ON" ]; + + env.NIX_CFLAGS_COMPILE = "-Wno-deprecated-declarations"; + + dontWrapQtApps = true; + + meta = { + description = "Network A/V plugin for OBS Studio (formerly obs-ndi)"; + homepage = "https://github.com/DistroAV/DistroAV"; + license = with lib.licenses; [ gpl2 ]; + maintainers = with lib.maintainers; [ globule655 ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/applications/video/obs-studio/plugins/distroav/hardcode-ndi-path.patch b/pkgs/applications/video/obs-studio/plugins/distroav/hardcode-ndi-path.patch new file mode 100644 index 000000000000..567d5c4fbcb7 --- /dev/null +++ b/pkgs/applications/video/obs-studio/plugins/distroav/hardcode-ndi-path.patch @@ -0,0 +1,18 @@ +diff --git a/src/plugin-main.cpp b/src/plugin-main.cpp +index 0d94add..617af73 100644 +--- a/src/plugin-main.cpp ++++ b/src/plugin-main.cpp +@@ -369,14 +369,7 @@ const NDIlib_v5 *load_ndilib() + if (!temp_path.isEmpty()) { + locations << temp_path; + } +-#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS) +- // Linux, MacOS +- // https://github.com/DistroAV/DistroAV/blob/master/lib/ndi/NDI%20SDK%20Documentation.pdf +- // "6.1 LOCATING THE LIBRARY +- // ... the redistributable on MacOS is installed within `/usr/local/lib` ..." +- locations << "/usr/lib"; +- locations << "/usr/local/lib"; +-#endif ++ locations << "@NDI@/lib"; + auto lib_path = QString();