diff options
Diffstat (limited to 'nongnu/packages/video.scm')
-rw-r--r-- | nongnu/packages/video.scm | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/nongnu/packages/video.scm b/nongnu/packages/video.scm new file mode 100644 index 0000000..e5af3a1 --- /dev/null +++ b/nongnu/packages/video.scm @@ -0,0 +1,158 @@ +;;; SPDX-License-Identifier: GPL-3.0-or-later +;;; Copyright © 2022 Jelle Licht <jlicht@fsfe.org> +;;; Copyright © 2024 Oleg Pykhalov <go.wigust@gmail.com> + +(define-module (nongnu packages video) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages video) + #:use-module (guix build utils) + #:use-module (guix build-system cmake) + #:use-module (guix gexp) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (nongnu packages chromium)) + +(define-public gmmlib + (package + (name "gmmlib") + (version "22.3.19") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/intel/gmmlib") + (commit (string-append "intel-gmmlib-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0p3wp6xcvpb4jzw4fsf6554qy91iblmq9y50ph3iy29m19q6nznb")))) + (build-system cmake-build-system) + (arguments + ;; Tests are run as part of the normal build step + '(#:tests? #f)) + (home-page "https://github.com/intel/gmmlib") + (synopsis "Intel Graphics Memory Management Library") + (description + "This package provides device specific and buffer management for the +Intel Graphics Compute Runtime for OpenCL and the Intel Media Driver +for VAAPI.") + (license license:expat))) + +(define-public intel-media-driver + (package + (name "intel-media-driver") + (version "24.1.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/intel/media-driver") + (commit (string-append "intel-media-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1jm4imld48scj0j499wq5zbdjv4gg7hg2sawljqnjvy09dmp09bs")))) + (build-system cmake-build-system) + (inputs (list libva gmmlib)) + (native-inputs (list pkg-config)) + (arguments + (list #:tests? #f ;Tests are run as part of the normal build step + #:configure-flags + #~(list "-DENABLE_NONFREE_KERNELS=OFF" + (string-append "-DLIBVA_DRIVERS_PATH=" + #$output "/lib/dri")))) + ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add + ;; this to all VA-API back ends instead of once to libva. + (native-search-paths + (list (search-path-specification + (variable "LIBVA_DRIVERS_PATH") + (files '("lib/dri"))))) + (supported-systems '("i686-linux" "x86_64-linux")) + (home-page "https://github.com/intel/media-driver") + (synopsis "Intel Media Driver for VAAPI") + (description + "This package provides a VA-API user mode driver supporting hardware +accelerated decoding, encoding, and video post processing for the GEN based +graphics hardware.") + (license (list license:expat license:bsd-3)))) + +(define-public intel-media-driver/nonfree + (package + (inherit intel-media-driver) + (name "intel-media-driver-nonfree") + (arguments + (substitute-keyword-arguments (package-arguments intel-media-driver) + ((#:configure-flags flags #~'()) + #~(cons "-DENABLE_NONFREE_KERNELS=ON" + (delete "-DENABLE_NONFREE_KERNELS=OFF" #$flags))))) + (synopsis + (string-append + (package-synopsis intel-media-driver) + " with nonfree kernels")) + (description + (string-append + (package-description intel-media-driver) + " This build of intel-media-driver includes nonfree blobs to fully enable the +video decode capabilities of supported Intel GPUs.")))) + +(define-public obs-with-cef + (package + (inherit obs) + (name "obs-with-cef") + (inputs + (append (package-inputs obs) + `(("chromium-embedded-framework" ,chromium-embedded-framework)))) + (arguments + (substitute-keyword-arguments (package-arguments obs) + ((#:configure-flags flags) + #~(append #$flags + '("-DBUILD_BROWSER=ON" + "-DCEF_ROOT_DIR=../source/cef"))) + ((#:phases phases) + #~(modify-phases #$phases + (add-before 'configure 'add-cef + (lambda* (#:key inputs #:allow-other-keys) + (let ((chromium-embedded-framework + #$(this-package-input "chromium-embedded-framework"))) + (mkdir-p "cef/Release") + (mkdir-p "cef/Resources") + (for-each (lambda (file) + (symlink file (string-append "cef/Release/" + (basename file))) + (symlink file (string-append "cef/Resources/" + (basename file)))) + (filter + (lambda (file) + (not (string= (basename (dirname file)) + "locales"))) + (find-files + (string-append chromium-embedded-framework + "/share/cef")))) + (symlink (string-append chromium-embedded-framework + "/lib/libcef.so") + "cef/Release/libcef.so") + (mkdir-p "cef/libcef_dll_wrapper") + (symlink (string-append chromium-embedded-framework + "/lib/libcef_dll_wrapper.a") + "cef/libcef_dll_wrapper/libcef_dll_wrapper.a") + (symlink (string-append chromium-embedded-framework + "/include") + "cef/include")))) + (add-after 'install 'symlink-obs-browser + ;; Required for lib/obs-plugins/obs-browser.so file. + (lambda* (#:key outputs #:allow-other-keys) + (symlink + (string-append #$output + "/lib/libobs-frontend-api.so.0") + (string-append #$output + "/lib/obs-plugins/libobs-frontend-api.so.0")) + (symlink + (string-append #$output + "/lib/libobs.so.0") + (string-append #$output + "/lib/obs-plugins/libobs.so.0")))))))) + (description + (string-append + (package-description obs) + " This build of OBS includes embeded Chromium-based browser to enable +Browser source.")))) |