nongnu: Add ndi.
* nongnu/packages/video.scm (ndi): New variable.
This commit is contained in:
parent
1b0594dc53
commit
d8399b1e58
|
@ -3,15 +3,24 @@
|
||||||
;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
|
;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com>
|
||||||
|
|
||||||
(define-module (nongnu packages video)
|
(define-module (nongnu packages video)
|
||||||
|
#:use-module (gnu packages avahi)
|
||||||
|
#:use-module (gnu packages base)
|
||||||
|
#:use-module (gnu packages bash)
|
||||||
|
#:use-module (gnu packages compression)
|
||||||
|
#:use-module (gnu packages elf)
|
||||||
|
#:use-module (gnu packages gawk)
|
||||||
|
#:use-module (gnu packages gcc)
|
||||||
#:use-module (gnu packages pkg-config)
|
#:use-module (gnu packages pkg-config)
|
||||||
#:use-module (gnu packages video)
|
#:use-module (gnu packages video)
|
||||||
#:use-module (guix build utils)
|
#:use-module (guix build utils)
|
||||||
#:use-module (guix build-system cmake)
|
#:use-module (guix build-system cmake)
|
||||||
|
#:use-module (guix build-system trivial)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
#:use-module (guix git-download)
|
#:use-module (guix git-download)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module ((guix licenses) #:prefix license:)
|
#:use-module ((guix licenses) #:prefix license:)
|
||||||
|
#:use-module ((nonguix licenses) #:prefix nonguix-license:)
|
||||||
#:use-module (nongnu packages chromium))
|
#:use-module (nongnu packages chromium))
|
||||||
|
|
||||||
(define-public gmmlib
|
(define-public gmmlib
|
||||||
|
@ -156,3 +165,120 @@ video decode capabilities of supported Intel GPUs."))))
|
||||||
(package-description obs)
|
(package-description obs)
|
||||||
" This build of OBS includes embeded Chromium-based browser to enable
|
" This build of OBS includes embeded Chromium-based browser to enable
|
||||||
Browser source."))))
|
Browser source."))))
|
||||||
|
|
||||||
|
(define-public ndi
|
||||||
|
(package
|
||||||
|
(name "ndi")
|
||||||
|
(version "5.6.1") ;NDI SDK version from Linux/Version.txt file.
|
||||||
|
(source (local-file "/tmp/Install_NDI_SDK_v5_Linux.tar.gz"))
|
||||||
|
(build-system trivial-build-system)
|
||||||
|
(inputs (list bash-minimal tar findutils coreutils gawk gzip tar glibc patchelf `(,gcc "lib") avahi))
|
||||||
|
(native-inputs `(("source" ,source)))
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:modules '((guix build utils))
|
||||||
|
#:builder
|
||||||
|
#~(begin
|
||||||
|
(use-modules (guix build utils))
|
||||||
|
(setenv "PATH"
|
||||||
|
(string-append
|
||||||
|
#$(this-package-input "gzip") "/bin"
|
||||||
|
":" #$(this-package-input "tar") "/bin"
|
||||||
|
":" #$(this-package-input "avahi") "/bin"
|
||||||
|
":" #$(this-package-input "bash-minimal") "/bin"
|
||||||
|
":" #$(this-package-input "gawk") "/bin"
|
||||||
|
":" #$(this-package-input "findutils") "/bin"
|
||||||
|
":" #$(this-package-input "tar") "/bin"
|
||||||
|
":" #$(this-package-input "coreutils") "/bin"
|
||||||
|
":" #$(this-package-input "patchelf") "/bin"))
|
||||||
|
(invoke "tar" "-xf" #$(this-package-native-input "source"))
|
||||||
|
(system "echo y | bash -x ./Install_NDI_SDK_v5_Linux.sh")
|
||||||
|
;; Install binaries.
|
||||||
|
(mkdir-p (string-append #$output "/bin"))
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(invoke
|
||||||
|
"patchelf"
|
||||||
|
"--set-interpreter" (string-append
|
||||||
|
#$(this-package-input "glibc")
|
||||||
|
"/lib/ld-linux-x86-64.so.2")
|
||||||
|
(string-append
|
||||||
|
"NDI SDK for Linux/bin/x86_64-linux-gnu/" file))
|
||||||
|
(copy-file
|
||||||
|
(string-append
|
||||||
|
"NDI SDK for Linux/bin/x86_64-linux-gnu/" file)
|
||||||
|
(string-append
|
||||||
|
#$output "/bin/" file)))
|
||||||
|
'("ndi-benchmark"
|
||||||
|
"ndi-free-audio"
|
||||||
|
"ndi-directory-service"))
|
||||||
|
(invoke "patchelf"
|
||||||
|
"--set-interpreter" (string-append
|
||||||
|
#$(this-package-input "glibc")
|
||||||
|
"/lib/ld-linux-x86-64.so.2")
|
||||||
|
"--set-rpath" (string-append
|
||||||
|
#$(this-package-input "avahi") "/lib")
|
||||||
|
(string-append
|
||||||
|
"NDI SDK for Linux/bin/x86_64-linux-gnu/ndi-record"))
|
||||||
|
(copy-file "NDI SDK for Linux/bin/x86_64-linux-gnu/ndi-record"
|
||||||
|
(string-append #$output "/bin/ndi-record"))
|
||||||
|
;; Install libraries.
|
||||||
|
(mkdir-p (string-append #$output "/lib"))
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(invoke
|
||||||
|
"patchelf"
|
||||||
|
"--set-rpath" (string-append
|
||||||
|
#$(this-package-input "avahi") "/lib")
|
||||||
|
(string-append "NDI SDK for Linux/lib/x86_64-linux-gnu/" file))
|
||||||
|
(copy-file
|
||||||
|
(string-append
|
||||||
|
"NDI SDK for Linux/lib/x86_64-linux-gnu/" file)
|
||||||
|
(string-append
|
||||||
|
#$output "/lib/" file)))
|
||||||
|
'("libndi.so.5.6.1"))
|
||||||
|
(with-directory-excursion (string-append #$output "/lib")
|
||||||
|
(for-each (lambda (file)
|
||||||
|
(symlink "libndi.so.5.6.1" file))
|
||||||
|
'("libndi.so.5"
|
||||||
|
"libndi.so")))
|
||||||
|
;; Install misc.
|
||||||
|
(for-each (lambda (directory)
|
||||||
|
(mkdir-p (string-append #$output "/" directory))
|
||||||
|
(copy-recursively (string-append
|
||||||
|
"NDI SDK for Linux/" directory)
|
||||||
|
(string-append
|
||||||
|
#$output "/" directory)))
|
||||||
|
'("include" "examples"))
|
||||||
|
(mkdir-p (string-append #$output "/doc"))
|
||||||
|
(for-each (lambda (directory)
|
||||||
|
(mkdir-p (string-append #$output "/doc/" directory))
|
||||||
|
(copy-recursively (string-append
|
||||||
|
"NDI SDK for Linux/" directory)
|
||||||
|
(string-append
|
||||||
|
#$output "/doc/" directory)))
|
||||||
|
'("licenses"))
|
||||||
|
(copy-recursively (string-append
|
||||||
|
"NDI SDK for Linux/documentation")
|
||||||
|
(string-append #$output "/doc")))))
|
||||||
|
(home-page "https://ndi.video/for-developers/ndi-sdk/")
|
||||||
|
(synopsis "NDI Software Developer Kit")
|
||||||
|
(description "The NDI (Network Device Interface) SDK enables the
|
||||||
|
development of applications that can transmit and receive high-quality video
|
||||||
|
and audio over standard Ethernet networks. Designed for real-time production
|
||||||
|
environments, the NDI SDK provides a simple and efficient API for handling
|
||||||
|
video streaming, discovery of sources, and communication between devices.
|
||||||
|
With support for multiple platforms, including Linux, NDI offers features such
|
||||||
|
as low latency, high bandwidth efficiency, and multi-channel audio support,
|
||||||
|
making it ideal for broadcast, live streaming, and video conferencing
|
||||||
|
applications. Lightweight and easy to integrate, the NDI SDK empowers
|
||||||
|
developers to create powerful multimedia solutions that leverage the full
|
||||||
|
potential of networked audio and video.
|
||||||
|
|
||||||
|
In order to use NDI SDK version, you need to comply with NewTek's license and
|
||||||
|
download the appropriate Linux tarball from:
|
||||||
|
|
||||||
|
https://downloads.ndi.tv/SDK/NDI_SDK_Linux/Install_NDI_SDK_v5_Linux.tar.gz
|
||||||
|
|
||||||
|
Once you have downloaded the file, re-run the installation.")
|
||||||
|
(license
|
||||||
|
(nonguix-license:nonfree
|
||||||
|
"https://downloads.ndi.tv/SDK/NDI_SDK/NDI%20License%20Agreement.pdf"))))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user