summaryrefslogtreecommitdiff
path: root/gnu/packages/video.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/video.scm')
-rw-r--r--gnu/packages/video.scm733
1 files changed, 557 insertions, 176 deletions
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index a6dfec06bf..90b3bdb585 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -50,7 +50,7 @@
;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
;;; Copyright © 2021, 2022, 2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 David Wilson <david@daviwil.com>
-;;; Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021, 2022, 2023, 2024 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;; Copyright © 2021 Thiago Jung Bauermann <bauermann@kolabnow.com>
@@ -66,6 +66,8 @@
;;; Copyright © 2023 Ott Joon <oj@vern.cc>
;;; Copyright © 2023 Dominik Delgado Steuter <dds@disroot.org>
;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
+;;; Copyright © 2023 Jaeme Sifat <jaeme@runbox.com>
+;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -116,6 +118,7 @@
#: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)
@@ -179,6 +182,7 @@
#: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)
@@ -194,6 +198,7 @@
#: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)
@@ -209,6 +214,78 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
+(define-public ani-cli
+ (package
+ (name "ani-cli")
+ (version "4.6")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pystardust/ani-cli")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ni9pzjb5qh87iz7c8252bx79qadr1qx6jnkqvvjcqrchh7q473a"))))
+ (build-system gnu-build-system)
+ (arguments
+ (list
+ #:tests? #f ;no test suite
+ #:phases
+ #~(modify-phases %standard-phases
+ (delete 'configure) ;nothing to configure
+ (delete 'build) ;nothing to build
+ (replace 'install
+ (lambda _
+ (install-file "ani-cli" (string-append #$output "/bin"))
+ (install-file "ani-cli.1"
+ (string-append #$output "/share/man/man1"))))
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs #:allow-other-keys)
+ (define (bin command)
+ (dirname (search-input-file
+ inputs (string-append "bin/" command))))
+ (wrap-program (string-append #$output "/bin/ani-cli")
+ `("PATH" ":" prefix
+ ,(map bin (list "aria2c"
+ "curl"
+ "ffmpeg"
+ "fzf"
+ "grep"
+ "mpv"
+ "sed"
+ "tput"
+ "uname"
+ "yt-dlp")))))))))
+ (inputs (list aria2
+ bash-minimal
+ coreutils
+ curl
+ ffmpeg
+ fzf
+ grep
+ mpv
+ ncurses
+ sed
+ yt-dlp))
+ (native-search-paths
+ ;; This was copied from the curl package.
+ (list (search-path-specification
+ (variable "CURL_CA_BUNDLE")
+ (file-type 'regular)
+ (separator #f) ;single entry
+ (files '("etc/ssl/certs/ca-certificates.crt")))))
+ (home-page "https://github.com/pystardust/ani-cli")
+ (synopsis "Browse and watch anime from the command line")
+ (description
+ "ani-cli is a @acronym{CLI, command-line interface} to browse and watch
+anime by streaming videos from @uref{https://allanime.to,All Anime}.
+
+There are different features such as episode browsing, history tracking,
+streaming at multiple resolutions, and much more, depending on what programs the
+user has installed.")
+ (license license:gpl3+)))
+
(define-public transcode
(package
(name "transcode")
@@ -970,14 +1047,14 @@ H.264 (MPEG-4 AVC) video streams.")
(define-public mkvtoolnix
(package
(name "mkvtoolnix")
- (version "52.0.0")
+ (version "80.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://mkvtoolnix.download/sources/"
"mkvtoolnix-" version ".tar.xz"))
(sha256
- (base32 "15y7ahlifsclnkl70wn5w34dil8nwcwcjnw3k2ydqc6dz4vb0j5s"))
+ (base32 "1x9k9pmw7mzm2amvm251a45dlj9p9iqfank5p4w2fizxkapws25v"))
(modules '((guix build utils)))
(snippet '(begin
;; Delete bundled libraries.
@@ -993,6 +1070,7 @@ H.264 (MPEG-4 AVC) video streams.")
(outputs '("out" "gui")) ; "mkvtoolnix-gui" brings the closure size from ~300 MB to 1.5+ GB.
(inputs
(list boost
+ gmp
bzip2
cmark
libebml
@@ -1006,86 +1084,96 @@ H.264 (MPEG-4 AVC) video streams.")
lzo
pcre2
pugixml
- qtbase-5
- qtmultimedia-5
+ qtbase
+ qtmultimedia
+ qtsvg
utfcpp
zlib))
(native-inputs
- `(("docbook-xsl" ,docbook-xsl)
- ("gettext" ,gettext-minimal)
- ("googletest" ,googletest)
- ("libxslt" ,libxslt)
- ("nlohmann-json" ,nlohmann-json)
- ("perl" ,perl)
- ("pkg-config" ,pkg-config)
- ("po4a" ,po4a)
- ("qttools-5" ,qttools-5)
- ("ruby" ,ruby-2.7)))
+ (list docbook-xsl
+ gettext-minimal
+ googletest
+ libxslt
+ nlohmann-json
+ perl
+ pkg-config
+ po4a
+ qttools
+ ruby-3.2))
(arguments
- `(#:configure-flags
- (list (string-append "--with-boost="
- (assoc-ref %build-inputs "boost"))
- (string-append "--with-docbook-xsl-root="
- (assoc-ref %build-inputs "docbook-xsl")
- "/xml/xsl/docbook-xsl-"
- ,(package-version docbook-xsl))
- "--enable-update-check=no"
- "--enable-precompiled-headers=no")
- #:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'fix-utfcpp-include
- (lambda _
- (substitute* "src/common/strings/utf8.cpp"
- (("<utf8.h>")
- "<utf8cpp/utf8.h>"))))
- (add-after 'unpack 'patch-relative-file-names
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (substitute* "src/mkvtoolnix-gui/util/settings.cpp"
- (("mkvmerge" match)
- (string-append out "/bin/" match)))
- #t)))
- (add-before 'configure 'add-googletest
- (lambda* (#:key inputs #:allow-other-keys)
- (symlink (search-input-directory inputs "/include/gtest")
- "lib/gtest")))
- (replace 'build
- (lambda _
- (let ((-j (list "-j" (number->string (parallel-job-count)))))
- (apply invoke "rake" -j))))
- (replace 'check
- (lambda _
- (invoke "rake" "tests/unit")))
- (replace 'install
- (lambda _
- (invoke "rake" "install")))
- (add-after 'install 'post-install
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Move the Qt interface to "gui".
- (let* ((out (assoc-ref outputs "out"))
- (gui (assoc-ref outputs "gui"))
- (strip-store-dir (lambda (path)
- (substring path (string-prefix-length out path)))))
- (for-each
- (lambda (file)
- (mkdir-p (string-append gui (dirname file)))
- (rename-file (string-append out file)
- (string-append gui file)))
- (append '("/bin/mkvtoolnix-gui"
- "/share/applications/org.bunkus.mkvtoolnix-gui.desktop"
- "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml"
- "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml")
- (map strip-store-dir (find-files out "\\.ogg$"))
- (map strip-store-dir (find-files out "mkvtoolnix-gui\\.png$"))
- (map strip-store-dir (find-files out "mkvtoolnix-gui\\.1"))))
- (for-each
- (lambda (file)
- (delete-file-recursively (string-append out file)))
- '("/share/applications"
- "/share/metainfo"
- "/share/mime"
- "/share/mkvtoolnix")))
- #t)))))
+ (list
+ #:configure-flags
+ #~(list (string-append "--with-boost="
+ #$(this-package-input "boost"))
+ (string-append "--with-docbook-xsl-root="
+ #$(this-package-native-input "docbook-xsl")
+ "/xml/xsl/docbook-xsl-"
+ #$(package-version
+ (this-package-native-input "docbook-xsl")))
+ "--enable-update-check=no"
+ "--enable-precompiled-headers=no")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'fix-utfcpp-include
+ (lambda _
+ (substitute* "src/common/strings/utf8.cpp"
+ (("<utf8.h>")
+ "<utf8cpp/utf8.h>"))))
+ (add-after 'unpack 'patch-relative-file-names
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "src/mkvtoolnix-gui/util/settings.cpp"
+ (("mkvmerge" match)
+ (string-append out "/bin/" match))) #t)))
+ (add-before 'configure 'add-googletest
+ (lambda* (#:key inputs #:allow-other-keys)
+ (symlink (search-input-directory inputs
+ "/include/gtest")
+ "lib/gtest")))
+ (replace 'build
+ (lambda _
+ (let ((-j (list "-j"
+ (number->string (parallel-job-count)))))
+ (apply invoke "rake" -j))))
+ (replace 'check
+ (lambda _
+ (invoke "rake" "tests/unit")))
+ (replace 'install
+ (lambda _
+ (invoke "rake" "install")))
+ (add-after 'install 'post-install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Move the Qt interface to "gui".
+ (let* ((out (assoc-ref outputs "out"))
+ (gui (assoc-ref outputs "gui"))
+ (strip-store-dir (lambda (path)
+ (substring path
+ (string-prefix-length
+ out path)))))
+ (for-each (lambda (file)
+ (mkdir-p (string-append gui
+ (dirname
+ file)))
+ (rename-file (string-append out file)
+ (string-append gui file)))
+ (append '("/bin/mkvtoolnix-gui"
+ "/share/applications/org.bunkus.mkvtoolnix-gui.desktop"
+ "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml"
+ "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml")
+ (map strip-store-dir
+ (find-files out "\\.ogg$"))
+ (map strip-store-dir
+ (find-files out
+ "mkvtoolnix-gui\\.png$"))
+ (map strip-store-dir
+ (find-files out
+ "mkvtoolnix-gui\\.1"))))
+ (for-each (lambda (file)
+ (delete-file-recursively
+ (string-append out file)))
+ '("/share/applications"
+ "/share/metainfo" "/share/mime"
+ "/share/mkvtoolnix"))))))))
(home-page "https://mkvtoolnix.download")
(synopsis "Tools to create, alter and inspect Matroska files")
(description
@@ -1428,14 +1516,14 @@ SMPTE 314M.")
(define-public libmatroska
(package
(name "libmatroska")
- (version "1.6.3")
+ (version "1.7.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://dl.matroska.org/downloads/"
"libmatroska/libmatroska-" version ".tar.xz"))
(sha256
- (base32 "06h81sxyz2riic0gpzik6ffcnq32wrqphi8c6k55glcdymiimyfs"))))
+ (base32 "1cqq61qgv6x3xjzjrw71dya7lbsbrsmi9raqm2k4hgfrp0rk0ajp"))))
(build-system cmake-build-system)
(inputs
(list libebml))
@@ -1457,7 +1545,7 @@ libebml is a C++ library to read and write EBML files.")
(define-public libplacebo
(package
(name "libplacebo")
- (version "4.208.0")
+ (version "6.338.1")
(source
(origin
(method git-fetch)
@@ -1466,23 +1554,20 @@ libebml is a C++ library to read and write EBML files.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "161dp5781s74ca3gglaxlmchx7glyshf0wg43w98pl22n1jcm5qk"))))
+ (base32 "1miqk3gfwah01xkf4a6grwq29im0lfh94gp92y7js855gx3v169m"))))
(build-system meson-build-system)
(arguments
- `(#:configure-flags
- `("-Dopengl=enabled"
- ,(string-append "-Dvulkan-registry="
- (assoc-ref %build-inputs "vulkan-headers")
- "/share/vulkan/registry/vk.xml"))))
+ (list #:configure-flags
+ #~(list "-Dopengl=enabled"
+ (string-append "-Dvulkan-registry="
+ #$(this-package-input "vulkan-headers")
+ "/share/vulkan/registry/vk.xml"))))
(native-inputs
- (list python python-mako pkg-config))
- (inputs
- (list lcms
- libepoxy
- mesa
- shaderc
- vulkan-headers
- vulkan-loader))
+ (list glad python python-mako pkg-config))
+ (inputs (list libepoxy mesa vulkan-headers))
+ ;; These are propagated as they are listed in 'Requires.private' of
+ ;; libplacebo.pc.
+ (propagated-inputs (list lcms shaderc vulkan-loader))
(home-page "https://code.videolan.org/videolan/libplacebo")
(synopsis "GPU-accelerated image/video processing library")
(description "libplacebo is, in a nutshell, the core rendering algorithms
@@ -1580,14 +1665,14 @@ operate properly.")
(define-public ffmpeg
(package
(name "ffmpeg")
- (version "6.0")
+ (version "6.1.1")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "10kh2f4y4isfqj4xpcqqnzk611jh89ywcjyjnq9c2jcv5p18ggjp"))))
+ "0s7r2qv8gh2a3w568n9xxgcz0q8j5ww1jdsci1hm9f4l1yqg9146"))))
(outputs '("out" "debug"))
(build-system gnu-build-system)
(inputs
@@ -1782,14 +1867,14 @@ audio/video codec library.")
(define-public ffmpeg-5
(package
(inherit ffmpeg)
- (version "5.1.3")
+ (version "5.1.4")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "0biil32xnshg1b4lwzbdc5rxv1g7lpfsr5gdgaz96wlhzy9ka48v"))))))
+ "0qwhyhil805hns7yksdxagnrcc90h60al7lz1rc65kd1j2w3nf2l"))))))
(define-public ffmpeg-4
(package
@@ -1812,14 +1897,14 @@ audio/video codec library.")
(define-public ffmpeg-3.4
(package
(inherit ffmpeg-4)
- (version "3.4.11")
+ (version "3.4.13")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "1rijdvcx8xjqwh084qchwz91vcj8wsvb4diax0g8miywpir00ccw"))))
+ "0np0yalqdrm7rn7iykgfzz3ly4vbgigrajg48c1l6n7qrzqvfszv"))))
(arguments
(substitute-keyword-arguments (package-arguments ffmpeg-4)
((#:modules modules %gnu-build-system-modules)
@@ -1837,14 +1922,14 @@ audio/video codec library.")
(define-public ffmpeg-2.8
(package
(inherit ffmpeg-3.4)
- (version "2.8.20")
+ (version "2.8.22")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
- "1ivnfqmfnp3zmn1q2dxy4p85427y3r6d3jbnl5kprr7lqckf6rl5"))))
+ "0c8m4hhv2k5fybha908wzrpnf3wqkq52hayl658jq4bah0igdfqz"))))
(arguments
`(#:tests? #f ; XXX: Enable them later, if required
#:configure-flags
@@ -1912,6 +1997,265 @@ audio/video codec library.")
"--enable-static"))))
(inputs '()))))
+;;; Custom ffmpeg package used by Jami, which incorporates custom patches.
+(define-public ffmpeg-jami
+ (package
+ (inherit ffmpeg)
+ (name "ffmpeg-jami")
+ (source (let ((ffmpeg-origin (package-source ffmpeg)))
+ (origin
+ (inherit ffmpeg-origin)
+ ;; These patches originate come from
+ ;; <https://review.jami.net/plugins/gitiles/jami-daemon/+/refs/heads/master/contrib/src/ffmpeg/>.
+ ;; Make sure to keep them update and/or register any new ones
+ ;; here.
+ (patches
+ (append
+ (origin-patches ffmpeg-origin)
+ (search-patches
+ "ffmpeg-jami-remove-mjpeg-log.patch"
+ "ffmpeg-jami-change-RTCP-ratio.patch"
+ "ffmpeg-jami-rtp_ext_abs_send_time.patch"
+ "ffmpeg-jami-libopusdec-enable-FEC.patch"
+ "ffmpeg-jami-libopusenc-reload-packet-loss-at-encode.patch"
+ "ffmpeg-jami-screen-sharing-x11-fix.patch"))))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments ffmpeg)
+ ((#:configure-flags _ '())
+ ;; The base configure flags preserved from ffmpeg appear first.
+ #~(list "--disable-static"
+ "--enable-shared"
+ "--disable-stripping"
+
+ ;; Extra Guix-added flags that make sense for this custom
+ ;; package; these could be contributed upstream.
+ "--disable-doc"
+
+ ;; The following flags are those specified by Jami.
+ ;; They're from the jami/daemon/contrib/src/ffmpeg/rules.mak
+ ;; file. We try to keep it as close to the official Jami
+ ;; package as possible, to provide all the codecs and extra
+ ;; features that are expected (see:
+ ;; https://review.jami.net/plugins/gitiles/jami-daemon/+/
+ ;; refs/heads/master/contrib/src/ffmpeg/rules.mak).
+ "--disable-everything"
+ "--enable-zlib"
+ "--enable-gpl"
+ "--enable-swscale"
+ "--enable-bsfs"
+ "--disable-filters"
+ "--disable-programs"
+ "--disable-postproc"
+
+ "--disable-protocols"
+ "--enable-protocol=crypto"
+ "--enable-protocol=file"
+ "--enable-protocol=rtp"
+ "--enable-protocol=srtp"
+ "--enable-protocol=tcp"
+ "--enable-protocol=udp"
+ "--enable-protocol=unix"
+ "--enable-protocol=pipe"
+
+ ;; Enable muxers/demuxers.
+ "--disable-demuxers"
+ "--disable-muxers"
+ "--enable-muxer=rtp"
+ "--enable-muxer=g722"
+ "--enable-muxer=g723_1"
+ "--enable-muxer=g726"
+ "--enable-muxer=g726le"
+ "--enable-muxer=h263"
+ "--enable-muxer=h264"
+ "--enable-muxer=hevc"
+ "--enable-muxer=matroska"
+ "--enable-muxer=webm"
+ "--enable-muxer=ogg"
+ "--enable-muxer=pcm_s16be"
+ "--enable-muxer=pcm_s16le"
+ "--enable-muxer=wav"
+ "--enable-demuxer=rtp"
+ "--enable-demuxer=mjpeg"
+ "--enable-demuxer=mjpeg_2000"
+ "--enable-demuxer=mpegvideo"
+ "--enable-demuxer=gif"
+ "--enable-demuxer=image_jpeg_pipe"
+ "--enable-demuxer=image_png_pipe"
+ "--enable-demuxer=image_webp_pipe"
+ "--enable-demuxer=matroska"
+ "--enable-demuxer=m4v"
+ "--enable-demuxer=mp3"
+ "--enable-demuxer=ogg"
+ "--enable-demuxer=flac"
+ "--enable-demuxer=wav"
+ "--enable-demuxer=ac3"
+ "--enable-demuxer=g722"
+ "--enable-demuxer=g723_1"
+ "--enable-demuxer=g726"
+ "--enable-demuxer=g726le"
+ "--enable-demuxer=pcm_mulaw"
+ "--enable-demuxer=pcm_alaw"
+ "--enable-demuxer=pcm_s16be"
+ "--enable-demuxer=pcm_s16le"
+ "--enable-demuxer=h263"
+ "--enable-demuxer=h264"
+ "--enable-demuxer=hevc"
+
+ ;; Enable parsers.
+ "--enable-parser=h263"
+ "--enable-parser=h264"
+ "--enable-parser=hevc"
+ "--enable-parser=mpeg4video"
+ "--enable-parser=vp8"
+ "--enable-parser=vp9"
+ "--enable-parser=opus"
+
+ ;; Encoders/decoders.
+ "--enable-encoder=adpcm_g722"
+ "--enable-decoder=adpcm_g722"
+ "--enable-encoder=adpcm_g726"
+ "--enable-decoder=adpcm_g726"
+ "--enable-encoder=adpcm_g726le"
+ "--enable-decoder=adpcm_g726le"
+ "--enable-decoder=g729"
+ "--enable-encoder=g723_1"
+ "--enable-decoder=g723_1"
+ "--enable-encoder=rawvideo"
+ "--enable-decoder=rawvideo"
+ "--enable-encoder=libx264"
+ "--enable-decoder=h264"
+ "--enable-encoder=pcm_alaw"
+ "--enable-decoder=pcm_alaw"
+ "--enable-encoder=pcm_mulaw"
+ "--enable-decoder=pcm_mulaw"
+ "--enable-encoder=mpeg4"
+ "--enable-decoder=mpeg4"
+ "--enable-encoder=libvpx_vp8"
+ "--enable-decoder=vp8"
+ "--enable-decoder=vp9"
+ "--enable-encoder=h263"
+ "--enable-encoder=h263p"
+ "--enable-decoder=h263"
+ "--enable-encoder=mjpeg"
+ "--enable-decoder=mjpeg"
+ "--enable-decoder=mjpegb"
+ "--enable-libspeex"
+ "--enable-libopus"
+ "--enable-libvpx"
+ "--enable-libx264"
+ "--enable-encoder=libspeex"
+ "--enable-decoder=libspeex"
+ "--enable-encoder=libopus"
+ "--enable-decoder=libopus"
+
+ ;; Encoders/decoders for ringtones and audio streaming.
+ "--enable-decoder=flac"
+ "--enable-decoder=vorbis"
+ "--enable-decoder=aac"
+ "--enable-decoder=ac3"
+ "--enable-decoder=eac3"
+ "--enable-decoder=mp3"
+ "--enable-decoder=pcm_u24le"
+ "--enable-decoder=pcm_u32le"
+ "--enable-decoder=pcm_u8"
+ "--enable-decoder=pcm_f16le"
+ "--enable-decoder=pcm_f32le"
+ "--enable-decoder=pcm_f64le"
+ "--enable-decoder=pcm_s16le"
+ "--enable-decoder=pcm_s24le"
+ "--enable-decoder=pcm_s32le"
+ "--enable-decoder=pcm_s64le"
+ "--enable-decoder=pcm_u16le"
+ "--enable-encoder=pcm_u8"
+ "--enable-encoder=pcm_f32le"
+ "--enable-encoder=pcm_f64le"
+ "--enable-encoder=pcm_s16le"
+ "--enable-encoder=pcm_s32le"
+ "--enable-encoder=pcm_s64le"
+
+ ;; Encoders/decoders for images.
+ "--enable-encoder=gif"
+ "--enable-decoder=gif"
+ "--enable-encoder=jpegls"
+ "--enable-decoder=jpegls"
+ "--enable-encoder=ljpeg"
+ "--enable-decoder=jpeg2000"
+ "--enable-encoder=png"
+ "--enable-decoder=png"
+ "--enable-encoder=bmp"
+ "--enable-decoder=bmp"
+ "--enable-encoder=tiff"
+ "--enable-decoder=tiff"
+
+ ;; Filters.
+ "--enable-filter=scale"
+ "--enable-filter=overlay"
+ "--enable-filter=amix"
+ "--enable-filter=amerge"
+ "--enable-filter=aresample"
+ "--enable-filter=format"
+ "--enable-filter=aformat"
+ "--enable-filter=fps"
+ "--enable-filter=transpose"
+ "--enable-filter=pad"
+
+ ;; Decoders for ringtones and audio streaming.
+ "--enable-decoder=pcm_s16be"
+ "--enable-decoder=pcm_s16be_planar"
+ "--enable-decoder=pcm_s16le_planar"
+ "--enable-decoder=pcm_s24be"
+ "--enable-decoder=pcm_s24le_planar"
+ "--enable-decoder=pcm_s32be"
+ "--enable-decoder=pcm_s32le_planar"
+ "--enable-decoder=pcm_s64be"
+ "--enable-decoder=pcm_s8"
+ "--enable-decoder=pcm_s8_planar"
+ "--enable-decoder=pcm_u16be"
+
+ ;; More filters.
+ "--enable-filter=afir"
+ "--enable-filter=split"
+ "--enable-filter=drawbox"
+ "--enable-filter=drawtext"
+ "--enable-filter=rotate"
+ "--enable-filter=loop"
+ "--enable-filter=setpts"
+ "--enable-filter=movie"
+ "--enable-filter=alphamerge"
+ "--enable-filter=boxblur"
+ "--enable-filter=lut"
+ "--enable-filter=negate"
+ "--enable-filter=colorkey"
+ "--enable-filter=transpose"
+
+ "--enable-libfreetype"
+
+ #$@(if (string-contains (%current-system) "linux")
+ ;; Leave out the '--enable-cuvid' ... '--enable-encoder=hevc_nvenc'
+ ;; flags, as there's no support for ffnvcodec in Guix;
+ ;; it would not work with Mesa anyway.
+ '("--enable-pic"
+ "--extra-cxxflags=-fPIC"
+ "--extra-cflags=-fPIC"
+ "--target-os=linux"
+ "--enable-indev=v4l2"
+ "--enable-indev=xcbgrab"
+ "--enable-vdpau"
+ "--enable-hwaccel=h264_vdpau"
+ "--enable-hwaccel=mpeg4_vdpau"
+ "--enable-vaapi"
+ "--enable-hwaccel=h264_vaapi"
+ "--enable-hwaccel=mpeg4_vaapi"
+ "--enable-hwaccel=h263_vaapi"
+ "--enable-hwaccel=vp8_vaapi"
+ "--enable-hwaccel=mjpeg_vaapi"
+ "--enable-hwaccel=hevc_vaapi"
+ "--enable-encoder=h264_vaapi"
+ "--enable-encoder=vp8_vaapi"
+ "--enable-encoder=mjpeg_vaapi"
+ "--enable-encoder=hevc_vaapi")
+ '())))))))
+
(define-public ffmpegthumbnailer
(package
(name "ffmpegthumbnailer")
@@ -2262,7 +2606,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(define-public mpv
(package
(name "mpv")
- (version "0.36.0")
+ (version "0.37.0")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -2270,8 +2614,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1ri06h7pv6hrxmxxc618n9hymlgr0gfx38bqq5dcszdgnlashsgk"))))
- (build-system waf-build-system)
+ (base32 "1xcyfpd543lbmg587wi0mahrz8vhyrlr4432054vp6wsi3s36c4b"))))
+ (build-system meson-build-system)
(arguments
(list
#:phases
@@ -2288,61 +2632,62 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
;; and passed as linker flags, but the order in which they are added
;; varies. See <https://github.com/mpv-player/mpv/issues/7855>.
;; Set PYTHONHASHSEED as a workaround for deterministic results.
- (setenv "PYTHONHASHSEED" "1")))
- (add-before 'configure 'set-up-waf
- (lambda* (#:key inputs #:allow-other-keys)
- (copy-file (search-input-file inputs "bin/waf") "waf")
- (setenv "CC" #$(cc-for-target)))))
+ (setenv "PYTHONHASHSEED" "1"))))
#:configure-flags
- #~(list "--enable-libmpv-shared"
- "--enable-cdda"
- "--enable-dvdnav"
- "--disable-build-date")
- ;; No check function defined.
- #:tests? #f))
+ #~(list "-Dlibmpv=true"
+ "-Dcdda=enabled"
+ "-Ddvdnav=enabled"
+ "-Dbuild-date=false")))
(native-inputs
- (list perl ; for zsh completion file
- pkg-config python-docutils))
+ (list perl ;for zsh completion file
+ pkg-config
+ python-docutils
+ python-wrapper))
;; Missing features: libguess, V4L2.
(inputs
+ (list enca
+ ladspa
+ lcms
+ libbs2b
+ mpg123
+ rsound
+ vulkan-headers
+ vulkan-loader
+ yt-dlp))
+ ;; XXX: These are propagated for the mpv pkg-config package, as they are
+ ;; listed in Requires.private and would break 'pkg-config --exists mpv' if
+ ;; unavailable.
+ (propagated-inputs
(list alsa-lib
- enca
ffmpeg
jack-1
- ladspa
- lcms
libass
libbluray
libcaca
- libbs2b
libcdio-paranoia
- libdvdread
+ libdrm
libdvdnav
+ libdvdread
libjpeg-turbo
+ libplacebo
libva
libvdpau
libx11
libxext
- libxkbcommon
libxinerama
+ libxkbcommon
libxpresent
libxrandr
libxscrnsaver
libxv
- ;; XXX: lua > 5.2 is not currently supported; see
- ;; waftools/checks/custom.py
+ ;; XXX: lua > 5.2 is not currently supported; see meson.build
lua-5.2
mesa
- mpg123
pulseaudio
- python-waf
- rsound
shaderc
- vulkan-headers
- vulkan-loader
wayland
wayland-protocols
- yt-dlp
+ zimg
zlib))
(home-page "https://mpv.io/")
(synopsis "Audio and video player")
@@ -2430,7 +2775,7 @@ images and image hosting sites.")
(define-public mpv-mpris
(package
(name "mpv-mpris")
- (version "1.0")
+ (version "1.1")
(source
(origin
(method git-fetch)
@@ -2439,7 +2784,7 @@ images and image hosting sites.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1vpx4kzyg4pssn1hql2ci4s9x08sdx2v0kphw4aryywnz04yjhzf"))))
+ (base32 "1384y8n3l0xk8hbad1nsj9ljzb1h02g3ln3jysd8bd6shbl0x4mx"))))
(build-system copy-build-system)
(arguments
'(#:install-plan
@@ -2453,7 +2798,7 @@ images and image hosting sites.")
(native-inputs
(list pkg-config))
(inputs
- (list glib mpv))
+ (list ffmpeg glib mpv))
(home-page "https://github.com/hoyon/mpv-mpris")
(synopsis "MPRIS plugin for mpv")
(description "This package provides an @dfn{MPRIS} (Media Player Remote
@@ -2682,7 +3027,7 @@ YouTube.com and many more sites.")
(define-public yt-dlp
(package/inherit youtube-dl
(name "yt-dlp")
- (version "2023.09.24")
+ (version "2023.10.13")
(source
(origin
(method git-fetch)
@@ -2691,7 +3036,7 @@ YouTube.com and many more sites.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "15ngsg3cadf2bv700fa1k5az5xpsm0wqr0cixbz8fcbhwdflfq6f"))))
+ (base32 "1cy8cpqwq6yfsbrnln3qqp9lsjckn20m6w7b890ha7jahyir5m1n"))))
(arguments
(substitute-keyword-arguments (package-arguments youtube-dl)
((#:tests? _) (not (%current-target-system)))
@@ -2991,10 +3336,8 @@ MPEG-2 stream containing VOB packets.")
(base32
"0cv7j8irsv1n2dadlnhr6i1b8pann2ah6xpxic41f04my6ba6rp5"))))
(build-system gnu-build-system)
- (native-inputs
- (list pkg-config))
- (inputs
- (list libdvdread))
+ (native-inputs (list pkg-config))
+ (propagated-inputs (list libdvdread)) ;in 'Requires.private' of dvdnav.pc
(home-page "http://dvdnav.mplayerhq.hu/")
(synopsis "Library for video DVD navigation features")
(description
@@ -3272,33 +3615,45 @@ and custom quantization matrices.")
(define-public streamlink
(package
(name "streamlink")
- (version "3.2.0")
+ (version "6.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "streamlink" version))
(sha256
(base32
- "09nrspga15svzi0hmakcarbciav0nzf30hg1ff53gia473cd4w4p"))))
+ "0i2qym2plm4gpcq50vl67j69m8a4zz9mb8gi2xryx28pbnpdzh4k"))
+ (snippet
+ #~(begin (use-modules (guix build utils))
+ (substitute* "pyproject.toml"
+ (("trio >=0\\.22") "trio >=0.21"))))))
(build-system python-build-system)
(arguments
- `(#:phases (modify-phases %standard-phases
+ `(#:phases
+ (modify-phases %standard-phases
(replace 'check
(lambda* (#:key tests? #:allow-other-keys)
(when tests?
(invoke "python" "-m" "pytest")))))))
(native-inputs
- (list python-freezegun python-mock python-pytest
- python-requests-mock))
+ (list python-freezegun
+ python-requests-mock
+ python-pytest
+ python-pytest-asyncio
+ python-pytest-trio))
(propagated-inputs
- (list python-pysocks
- python-websocket-client
+ (list python-certifi
python-isodate
python-lxml
python-pycountry
python-pycryptodome
+ python-pysocks
python-requests
- python-urllib3))
+ python-trio
+ python-trio-websocket
+ python-typing-extensions
+ python-urllib3
+ python-websocket-client))
(home-page "https://github.com/streamlink/streamlink")
(synopsis "Extract streams from various services")
(description "Streamlink is command-line utility that extracts streams
@@ -3352,7 +3707,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(define-public mlt
(package
(name "mlt")
- (version "7.20.0")
+ (version "7.22.0")
(source
(origin
(method git-fetch)
@@ -3361,7 +3716,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1dc09j8yvis6ilba5a13qicf6wbgxnzwllab6h48kzfl1lc0n8g7"))))
+ (base32 "1aa23kni64751x0kd54lr87ns9kdc8pblhqp8m8608ah8xwak4mw"))))
(build-system cmake-build-system)
(arguments
(list
@@ -3548,7 +3903,10 @@ be used for realtime video capture via Linux-specific APIs.")
(lambda* _
(let ((plugin-path (getenv "QT_PLUGIN_PATH")))
(wrap-program (string-append #$output "/bin/obs")
- `("QT_PLUGIN_PATH" ":" prefix (,plugin-path)))))))))
+ `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))
+ `("LD_LIBRARY_PATH" ":" prefix
+ (,(string-append #$(this-package-input "vlc")
+ "/lib"))))))))))
(native-search-paths
(list (search-path-specification
(variable "OBS_PLUGINS_DIRECTORY")
@@ -3605,18 +3963,15 @@ and JACK.")
(define-public obs-looking-glass
(package
(name "obs-looking-glass")
- (version "B5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/gnif/LookingGlass")
- (commit version)
- (recursive? #t)))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "09mn544x5hg1z31l92ksk7fi7yj9r8xdk0dcl9fk56ivcr452ylm"))))
+ (version "B6")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://looking-glass.io/artifact/" version
+ "/source"))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "15d7wwbzfw28yqbz451b6n33ixy50vv8acyzi8gig1mq5a8gzdib"))))
(build-system cmake-build-system)
(arguments
(list
@@ -3677,6 +4032,35 @@ This may help improve your viewers watching experience, and allows you to use
your host privately.")
(license license:gpl2+)))
+(define-public obs-pipewire-audio-capture
+ (package
+ (name "obs-pipewire-audio-capture")
+ (version "1.1.2")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dimtpap/obs-pipewire-audio-capture")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0qjl8xlaf54zgz34f1dfybdg2inc2ir42659kh15ncihpgbx0wzl"))))
+ (build-system cmake-build-system)
+ (arguments
+ (list
+ #:tests? #f ; no test target
+ #:configure-flags
+ #~(list (string-append "-DLIBOBS_INCLUDE_DIR="
+ #$(this-package-input "obs") "/lib")
+ "-Wno-dev")))
+ (native-inputs (list libconfig pkg-config))
+ (inputs (list obs pipewire))
+ (home-page "https://obsproject.com/forum/resources/pipewire-audio-capture.1458/")
+ (synopsis "Audio device and application capture for OBS Studio using PipeWire")
+ (description "This plugin adds 3 sources for capturing audio outputs,
+inputs and applications using PipeWire.")
+ (license license:gpl2+)))
+
(define-public obs-websocket
;; Functionality was merged into OBS.
(deprecated-package "obs-websocket" obs))
@@ -4302,7 +4686,7 @@ practically any type of media.")
(define-public libmediainfo
(package
(name "libmediainfo")
- (version "23.03")
+ (version "23.11")
(source (origin
(method url-fetch)
(uri (string-append "https://mediaarea.net/download/source/"
@@ -4310,7 +4694,7 @@ practically any type of media.")
name "_" version ".tar.xz"))
(sha256
(base32
- "1660lsilm02324c65sxxi41fn225hg78yxqyxff5dyf6fvyzyypm"))))
+ "0gc5brnwagdgaknkpyhkbpwc52q19vf5i3sayifhsg4yqzy58zhr"))))
;; TODO add a Big Buck Bunny webm for tests.
(native-inputs
(list autoconf automake libtool pkg-config))
@@ -4365,7 +4749,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
(define-public mediainfo
(package
(name "mediainfo")
- (version "23.03")
+ (version "23.11")
(source (origin
(method url-fetch)
;; Warning: This source has proved unreliable 1 time at least.
@@ -4376,7 +4760,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
name "_" version ".tar.xz"))
(sha256
(base32
- "1654pal4x753pcha8h939a70q5z3jzaddgb39cinlrv5fljs8qgh"))))
+ "1hy9m2l94ymhpcrhlqqjpgl24lz33qm239pcdlic3z5zs6qb2740"))))
(native-inputs
(list autoconf automake libtool pkg-config))
(inputs
@@ -5503,12 +5887,9 @@ result in several formats:
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(invoke "cargo" "cinstall" "--release"
- (string-append "--prefix=" out)))))
- (add-after 'install 'delete-static-library
- (lambda* (#:key outputs #:allow-other-keys)
- ;; Delete 93 MiB (!) static library.
- (delete-file (string-append (assoc-ref outputs "out")
- "/lib/librav1e.a")))))))
+ ;; Only build the dynamic library.
+ "--library-type" "cdylib"
+ (string-append "--prefix=" out))))))))
(native-inputs
(list nasm pkg-config rust-cargo-c))
(inputs