419 lines
15 KiB
Scheme
419 lines
15 KiB
Scheme
(define-module (ajatt packages video)
|
|
#:use-module (gnu packages video)
|
|
#:use-module (guix build-system copy)
|
|
#:use-module (guix git-download)
|
|
#:use-module (gnu packages)
|
|
#:use-module (guix download)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix gexp)
|
|
#:use-module (guix utils)
|
|
#:use-module (guix build-system gnu)
|
|
#:use-module (guix build-system cmake)
|
|
#:use-module (gnu packages cmake)
|
|
#:use-module (gnu packages pkg-config)
|
|
#:use-module (gnu packages assembly)
|
|
#:use-module (gnu packages compression)
|
|
#:use-module (gnu packages fontutils)
|
|
#:use-module (gnu packages tls)
|
|
#:use-module (ice-9 match)
|
|
#:use-module ((srfi srfi-1) #:hide (zip))
|
|
#:use-module (srfi srfi-26)
|
|
#:use-module ((guix licenses) #:prefix license:)
|
|
#:use-module (guix utils)
|
|
#:use-module (guix packages)
|
|
#:use-module (guix download)
|
|
#:use-module (guix gexp)
|
|
#:use-module (guix git-download)
|
|
#:use-module (guix svn-download)
|
|
#:use-module (guix hg-download)
|
|
#:use-module (guix build-system cargo)
|
|
#:use-module (guix build-system cmake)
|
|
#:use-module (guix build-system copy)
|
|
#:use-module (guix build-system gnu)
|
|
#:use-module (guix build-system go)
|
|
#:use-module (guix build-system glib-or-gtk)
|
|
#:use-module (guix build-system meson)
|
|
#:use-module (guix build-system perl)
|
|
#:use-module (guix build-system pyproject)
|
|
#:use-module (guix build-system python)
|
|
#:use-module (guix build-system qt)
|
|
#:use-module (guix build-system waf)
|
|
#:use-module (guix build-system trivial)
|
|
#:use-module (gnu packages)
|
|
#:use-module (gnu packages algebra)
|
|
#:use-module (gnu packages assembly)
|
|
#:use-module (gnu packages audio)
|
|
#:use-module (gnu packages autotools)
|
|
#:use-module (gnu packages avahi)
|
|
#:use-module (gnu packages backup)
|
|
#:use-module (gnu packages base)
|
|
#:use-module (gnu packages bash)
|
|
#:use-module (gnu packages bison)
|
|
#:use-module (gnu packages bittorrent)
|
|
#:use-module (gnu packages boost)
|
|
#:use-module (gnu packages cdrom)
|
|
#:use-module (gnu packages check)
|
|
#:use-module (gnu packages compression)
|
|
#:use-module (gnu packages cpp)
|
|
#:use-module (gnu packages crates-io)
|
|
#:use-module (gnu packages crates-graphics)
|
|
#:use-module (gnu packages curl)
|
|
#:use-module (gnu packages dbm)
|
|
#:use-module (gnu packages dejagnu)
|
|
#:use-module (gnu packages dns)
|
|
#:use-module (gnu packages docbook)
|
|
#:use-module (gnu packages documentation)
|
|
#:use-module (gnu packages file)
|
|
#:use-module (gnu packages flex)
|
|
#:use-module (gnu packages fonts)
|
|
#:use-module (gnu packages fontutils)
|
|
#:use-module (gnu packages freedesktop)
|
|
#:use-module (gnu packages fribidi)
|
|
#:use-module (gnu packages gcc)
|
|
#:use-module (gnu packages gettext)
|
|
#:use-module (gnu packages ghostscript)
|
|
#:use-module (gnu packages gl)
|
|
#:use-module (gnu packages glib)
|
|
#:use-module (gnu packages guile)
|
|
#:use-module (gnu packages gnome)
|
|
#:use-module (gnu packages gnunet)
|
|
#:use-module (gnu packages gnupg)
|
|
#:use-module (gnu packages golang)
|
|
#:use-module (gnu packages gstreamer)
|
|
#:use-module (gnu packages gtk)
|
|
#:use-module (gnu packages haskell-xyz)
|
|
#:use-module (gnu packages hunspell)
|
|
#:use-module (gnu packages image)
|
|
#:use-module (gnu packages imagemagick)
|
|
#:use-module (gnu packages iso-codes)
|
|
#:use-module (gnu packages libcanberra)
|
|
#:use-module (gnu packages libidn)
|
|
#:use-module (gnu packages libusb)
|
|
#:use-module (gnu packages linux)
|
|
#:use-module (gnu packages lua)
|
|
#:use-module (gnu packages man)
|
|
#:use-module (gnu packages markup)
|
|
#:use-module (gnu packages maths)
|
|
#:use-module (gnu packages messaging)
|
|
#:use-module (gnu packages music)
|
|
#:use-module (gnu packages mp3)
|
|
#:use-module (gnu packages multiprecision)
|
|
#:use-module (gnu packages ncurses)
|
|
#:use-module (gnu packages nettle)
|
|
#:use-module (gnu packages networking)
|
|
#:use-module (gnu packages ocr)
|
|
#:use-module (gnu packages pcre)
|
|
#:use-module (gnu packages pciutils)
|
|
#:use-module (gnu packages perl)
|
|
#:use-module (gnu packages perl-check)
|
|
#:use-module (gnu packages perl-web)
|
|
#:use-module (gnu packages php)
|
|
#:use-module (gnu packages photo)
|
|
#:use-module (gnu packages pkg-config)
|
|
#:use-module (gnu packages popt)
|
|
#:use-module (gnu packages pretty-print)
|
|
#:use-module (gnu packages protobuf)
|
|
#:use-module (gnu packages pulseaudio)
|
|
#:use-module (gnu packages python)
|
|
#:use-module (gnu packages python-build)
|
|
#:use-module (gnu packages python-check)
|
|
#:use-module (gnu packages python-crypto)
|
|
#:use-module (gnu packages python-web)
|
|
#:use-module (gnu packages python-xyz)
|
|
#:use-module (gnu packages qt)
|
|
#:use-module (gnu packages re2c)
|
|
#:use-module (gnu packages ruby)
|
|
#:use-module (gnu packages rust-apps)
|
|
#:use-module (gnu packages samba)
|
|
#:use-module (gnu packages sdl)
|
|
#:use-module (gnu packages serialization)
|
|
#:use-module (gnu packages shells)
|
|
#:use-module (gnu packages spice)
|
|
#:use-module (gnu packages sqlite)
|
|
#:use-module (gnu packages ssh)
|
|
#:use-module (gnu packages swig)
|
|
#:use-module (gnu packages terminals)
|
|
#:use-module (gnu packages texinfo)
|
|
#:use-module (gnu packages textutils)
|
|
#:use-module (gnu packages tls)
|
|
#:use-module (gnu packages time)
|
|
#:use-module (gnu packages upnp)
|
|
#:use-module (gnu packages version-control)
|
|
#:use-module (gnu packages vulkan)
|
|
#:use-module (gnu packages web)
|
|
#:use-module (gnu packages wget)
|
|
#:use-module (gnu packages wxwidgets)
|
|
#:use-module (gnu packages xdisorg)
|
|
#:use-module (gnu packages xiph)
|
|
#:use-module (gnu packages xml)
|
|
#:use-module (gnu packages xorg)
|
|
#:use-module (gnu packages python)
|
|
#:use-module ((guix licenses) #:prefix license:))
|
|
|
|
|
|
(define-public vvdec
|
|
(package
|
|
(name "vvdec")
|
|
(version "2.3.1")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri
|
|
(git-reference
|
|
(url "https://github.com/fraunhoferhhi/vvdec.git")
|
|
(commit "ad8f4bb7d6271b5fe6b3ab0a5e64114dec1af5d4")))
|
|
(sha256
|
|
(base32 "0qr4sp3gq3pxpl7nr2dxd628jmdwv09f76pgsyc5rydz05ahymym"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
(list
|
|
#:configure-flags
|
|
#~(list "-DBUILD_SHARED_LIBS=1")
|
|
#:cmake cmake
|
|
#:tests? #f ))
|
|
(synopsis "VVdeC, the Fraunhofer Versatile Video Decoder.")
|
|
(description
|
|
"VVdeC, the Fraunhofer Versatile Video Decoder, is a fast software H.266/VVC decoder implementation supporting all features of the VVC Main10 profile.")
|
|
(home-page "https://www.hhi.fraunhofer.de/en/departments/vca/technologies-and-solutions/h266-vvc.html")
|
|
(license
|
|
(list license:bsd-3))))
|
|
|
|
|
|
|
|
|
|
(define-public ffmpeg-vvdec
|
|
(package
|
|
(inherit ffmpeg)
|
|
(name "ffmpeg-vvdec")
|
|
(version "7.0.1")
|
|
(source (origin
|
|
(method url-fetch)
|
|
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
|
|
version ".tar.xz"))
|
|
(sha256
|
|
(base32
|
|
"1zz4n2zqazl5nlvil31aikf90hhvlq8pgwxij0iriy3yy6qfxsdw"))))
|
|
(outputs '("out" "debug"))
|
|
(build-system gnu-build-system)
|
|
(inputs
|
|
(append
|
|
;; XXX: rav1e depends on rust, which currently only works on x86_64.
|
|
;; See also the related configure flag when changing this.
|
|
(if (target-x86-64?) (list rav1e) '())
|
|
(list dav1d
|
|
fontconfig
|
|
freetype
|
|
frei0r-plugins
|
|
gnutls
|
|
vvdec
|
|
opus
|
|
ladspa
|
|
lame
|
|
libaom
|
|
libass
|
|
libbluray
|
|
libcaca
|
|
libcdio-paranoia
|
|
libdrm
|
|
libtheora
|
|
libva
|
|
libvdpau
|
|
libvorbis
|
|
libvpx
|
|
libwebp
|
|
libx11
|
|
libx264
|
|
mesa
|
|
openal
|
|
pulseaudio
|
|
sdl2
|
|
soxr
|
|
speex
|
|
srt
|
|
twolame
|
|
vidstab
|
|
x265
|
|
xvid
|
|
zlib)))
|
|
(native-inputs
|
|
(list bc
|
|
perl
|
|
pkg-config
|
|
python
|
|
texinfo
|
|
speex
|
|
yasm))
|
|
(arguments
|
|
(list
|
|
#:test-target "fate"
|
|
#:configure-flags
|
|
;; possible additional inputs:
|
|
;; --enable-avisynth enable reading of AviSynth script
|
|
;; files [no]
|
|
;; --enable-libaacplus enable AAC+ encoding via libaacplus [no]
|
|
;; --enable-libcelt enable CELT decoding via libcelt [no]
|
|
;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
|
|
;; and libraw1394 [no]
|
|
;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
|
|
;; --enable-libflite enable flite (voice synthesis) support via
|
|
;; libflite [no]
|
|
;; --enable-libgme enable Game Music Emu via libgme [no]
|
|
;; --enable-libgsm enable GSM de/encoding via libgsm [no]
|
|
;; --enable-libiec61883 enable iec61883 via libiec61883 [no]
|
|
;; --enable-libilbc enable iLBC de/encoding via libilbc [no]
|
|
;; --enable-libmodplug enable ModPlug via libmodplug [no]
|
|
;; --enable-libnut enable NUT (de)muxing via libnut,
|
|
;; native (de)muxer exists [no]
|
|
;; --enable-libopencore-amrnb enable AMR-NB de/encoding via
|
|
;; libopencore-amrnb [no]
|
|
;; --enable-libopencore-amrwb enable AMR-WB decoding via
|
|
;; libopencore-amrwb [no]
|
|
;; --enable-libopencv enable video filtering via libopencv [no]
|
|
;; --enable-libopenjpeg enable JPEG 2000 de/encoding via
|
|
;; OpenJPEG [no]
|
|
;; --enable-librtmp enable RTMP[E] support via librtmp [no]
|
|
;; --enable-libschroedinger enable Dirac de/encoding via
|
|
;; libschroedinger [no]
|
|
;; --enable-libshine enable fixed-point MP3 encoding via
|
|
;; libshine [no]
|
|
;; --enable-libssh enable SFTP protocol via libssh [no]
|
|
;; (libssh2 does not work)
|
|
;; --enable-libstagefright-h264 enable H.264 decoding via
|
|
;; libstagefright [no]
|
|
;; --enable-libutvideo enable Ut Video encoding and decoding via
|
|
;; libutvideo [no]
|
|
;; --enable-libv4l2 enable libv4l2/v4l-utils [no]
|
|
;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
|
|
;; --enable-libvo-amrwbenc enable AMR-WB encoding via
|
|
;; libvo-amrwbenc [no]
|
|
;; --enable-libwavpack enable wavpack encoding via libwavpack [no]
|
|
;; --enable-libxavs enable AVS encoding via xavs [no]
|
|
;; --enable-libzmq enable message passing via libzmq [no]
|
|
;; --enable-libzvbi enable teletext support via libzvbi [no]
|
|
;; --enable-opencl enable OpenCL code
|
|
#~(list
|
|
#$@(if (target-powerpc?)
|
|
;; These tests fail on powerpc64-le (see:
|
|
;; https://trac.ffmpeg.org/ticket/9604).
|
|
'("--ignore-tests=checkasm-sw_scale,filter-scale2ref_keep_aspect")
|
|
'())
|
|
"--enable-gpl" ;enable optional gpl licensed parts
|
|
"--enable-shared"
|
|
"--enable-frei0r"
|
|
"--enable-fontconfig"
|
|
"--enable-gnutls"
|
|
"--enable-ladspa"
|
|
"--enable-libaom"
|
|
"--enable-libass"
|
|
"--enable-libbluray"
|
|
"--enable-libcaca"
|
|
"--enable-libcdio"
|
|
"--enable-libdav1d"
|
|
"--enable-libfreetype"
|
|
"--enable-libmp3lame"
|
|
"--enable-libopus"
|
|
"--enable-libpulse"
|
|
#$@(if (target-x86-64?)
|
|
'("--enable-librav1e")
|
|
'())
|
|
"--enable-libsoxr"
|
|
"--enable-libspeex"
|
|
;; "--enable-libvvenc" TODO: this needs a patch
|
|
;; https://patchwork.ffmpeg.org/series/12059/mbox/
|
|
"--extra-cflags=-Ofast"
|
|
"--extra-cxxflags=-Ofast"
|
|
"--enable-libsrt"
|
|
"--enable-libtheora"
|
|
"--enable-libtwolame"
|
|
"--enable-libvidstab"
|
|
"--enable-libvorbis"
|
|
"--enable-libvpx"
|
|
"--enable-libwebp"
|
|
"--enable-libxvid"
|
|
"--enable-libx264"
|
|
"--enable-libx265"
|
|
"--enable-openal"
|
|
"--enable-opengl"
|
|
"--enable-libdrm"
|
|
"--enable-vaapi"
|
|
|
|
"--enable-runtime-cpudetect"
|
|
|
|
;; The HTML pages take 7.2 MiB
|
|
"--disable-htmlpages"
|
|
|
|
;; The static libraries are 23 MiB
|
|
"--disable-static"
|
|
|
|
"--disable-stripping"
|
|
|
|
#$@(if (target-riscv64?)
|
|
'("--extra-cflags=-fPIC")
|
|
'())
|
|
|
|
;; Runtime cpu detection is not implemented on
|
|
;; MIPS, so we disable some features.
|
|
"--disable-mips32r2"
|
|
"--disable-mipsdsp"
|
|
"--disable-mipsdspr2"
|
|
"--disable-mipsfpu")
|
|
#:phases
|
|
#~(modify-phases %standard-phases
|
|
(replace 'configure
|
|
;; configure does not work followed by "SHELL=..." and
|
|
;; "CONFIG_SHELL=..."; set environment variables instead
|
|
(lambda* (#:key outputs configure-flags #:allow-other-keys)
|
|
(let ((out (assoc-ref outputs "out")))
|
|
(substitute* "configure"
|
|
(("#! /bin/sh") (string-append "#!" (which "sh"))))
|
|
(setenv "SHELL" (which "bash"))
|
|
(setenv "CONFIG_SHELL" (which "bash"))
|
|
(apply invoke
|
|
"./configure"
|
|
(string-append "--prefix=" out)
|
|
;; Add $libdir to the RUNPATH of all the binaries.
|
|
(string-append "--extra-ldflags=-Wl,-rpath="
|
|
out "/lib")
|
|
configure-flags))))
|
|
(add-before 'check 'set-ld-library-path
|
|
(lambda _
|
|
;; Allow $(top_builddir)/ffmpeg to find its dependencies when
|
|
;; running tests.
|
|
(let* ((dso (find-files "." "\\.so$"))
|
|
(path (string-join (map dirname dso) ":")))
|
|
(format #t "setting LD_LIBRARY_PATH to ~s~%" path)
|
|
(setenv "LD_LIBRARY_PATH" path)))))))
|
|
(home-page "https://www.ffmpeg.org/")
|
|
(synopsis "Audio and video framework")
|
|
(description "FFmpeg is a complete, cross-platform solution to record,
|
|
convert and stream audio and video. It includes the libavcodec
|
|
audio/video codec library.")
|
|
(license license:gpl2+)))
|
|
|
|
|
|
(define-public uvg266
|
|
(package
|
|
(name "uvg266")
|
|
(version "0.8.1")
|
|
(source
|
|
(origin
|
|
(method git-fetch)
|
|
(uri
|
|
(git-reference
|
|
(url "https://github.com/ultravideo/uvg266.git")
|
|
(commit "c1b97048259140ff5d5a22a29c1724e60112da4f")))
|
|
(sha256
|
|
(base32 "0kwfhv3kvbc4sl0bingncmpn9i210vv02lszjiqi91fa84rlxisj"))))
|
|
(build-system cmake-build-system)
|
|
(arguments
|
|
(list #:cmake cmake ;; currently this is not enough
|
|
#:tests? #f )) ;; it's needed to use "make install" after the cmake stage
|
|
(synopsis "An open-source VVC encoder based on Kvazaar.")
|
|
(description
|
|
"An open-source VVC encoder licensed under 3-clause BSD.")
|
|
(home-page "https://ultravideo.fi/uvg266.html")
|
|
(license
|
|
(list license:bsd-3))))
|
|
|
|
uvg266
|