gnu: Remove "tags" properties for KDE games.
[jackhill/guix/guix.git] / gnu / packages / video.scm
index e52b332..ef60767 100644 (file)
@@ -24,7 +24,7 @@
 ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com>
-;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;; Copyright © 2018, 2019 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
@@ -428,7 +428,7 @@ H.264 (MPEG-4 AVC) video streams.")
        ("gettext" ,gettext-minimal)
        ("googletest" ,googletest)
        ("libxslt" ,libxslt)
-       ("nlohmann-json-cpp" ,nlohmann-json-cpp)
+       ("json-modern-cxx" ,json-modern-cxx)
        ("perl" ,perl)
        ("pkg-config" ,pkg-config)
        ("po4a" ,po4a)
@@ -1008,14 +1008,14 @@ audio/video codec library.")
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
-    (version "3.4.6")
+    (version "3.4.7")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "0gmqbhg5jjcfanrxrl657zn12lzz73sfs8xwryfy7n9rn6f2fwim"))))
+               "1j7mdk9szrljgv4sdx69bm1pnbb3cldbdxbkr42jbdi9zn11gl7g"))))
     (arguments
      (substitute-keyword-arguments (package-arguments ffmpeg)
        ((#:configure-flags flags)
@@ -1266,7 +1266,8 @@ streaming protocols.")
     (build-system gnu-build-system)
     ;; FIXME: Add additional inputs once available.
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("pkg-config" ,pkg-config)
+       ("yasm" ,yasm)))
     (inputs
      `(("alsa-lib" ,alsa-lib)
        ("cdparanoia" ,cdparanoia)
@@ -1297,7 +1298,6 @@ streaming protocols.")
        ("python" ,python-wrapper)
        ("sdl" ,sdl)
        ("speex" ,speex)
-       ("yasm" ,yasm)
        ("zlib" ,zlib)))
     (arguments
      `(#:tests? #f ; no test target
@@ -1454,6 +1454,7 @@ projects while introducing many more.")
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-shared"
+                               "--disable-static"
                                "--as=yasm"
                                ;; Limit size to avoid CVE-2015-1258
                                "--size-limit=16384x16384"
@@ -1497,7 +1498,7 @@ projects while introducing many more.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2019.10.29")
+    (version "2019.11.28")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
@@ -1505,7 +1506,7 @@ projects while introducing many more.")
                                   version ".tar.gz"))
               (sha256
                (base32
-                "1lq6ycjbx07831s24yx42q6m6svas4mf02vbszw0965dbbzs7vp4"))))
+                "19xiwdn3l0kizyj7cik9vyhgrlwg7ss4wl4hy2pbbbqwh5vwppwk"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1802,7 +1803,7 @@ players, like VLC or MPlayer.")
 (define-public libdvdread
   (package
     (name "libdvdread")
-    (version "6.0.1")
+    (version "6.0.2")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.videolan.org/videolan/"
@@ -1810,7 +1811,7 @@ players, like VLC or MPlayer.")
                                   "libdvdread-" version ".tar.bz2"))
               (sha256
                (base32
-                "1gfmh8ii3s2fw1c8vn57piwxc0smd3va4h7xgp9s8g48cc04zki8"))))
+                "1c7yqqn67m3y3n7nfrgrnzz034zjaw5caijbwbfrq89v46ph257r"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags '("--with-libdvdcss=yes")))
@@ -1858,15 +1859,15 @@ MPEG-2 stream containing VOB packets.")
 (define-public libdvdnav
   (package
     (name "libdvdnav")
-    (version "6.0.0")
+    (version "6.0.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.videolan.org/videolan/"
-                                  name "/" version "/"
-                                  name "-" version ".tar.bz2"))
+                                  "libdvdnav/" version "/"
+                                  "libdvdnav-" version ".tar.bz2"))
               (sha256
                (base32
-                "062njcksmpgw9yv3737qkf93r2pzhaxi9szqjabpa8d010dp38ph"))))
+                "0cv7j8irsv1n2dadlnhr6i1b8pann2ah6xpxic41f04my6ba6rp5"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -1943,7 +1944,11 @@ for use with HTML5 video.")
              (patches (search-patches "avidemux-install-to-lib.patch"))))
     (build-system cmake-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("perl" ,perl)
+       ("pkg-config" ,pkg-config)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)
+       ("yasm" ,yasm)))
     ;; FIXME: Once packaged, add libraries not found during the build.
     (inputs
      `(("alsa-lib" ,alsa-lib)
@@ -1958,14 +1963,9 @@ for use with HTML5 video.")
        ("libvorbis" ,libvorbis)
        ("libvpx" ,libvpx)
        ("libxv" ,libxv)
-       ("perl" ,perl)
        ("pulseaudio" ,pulseaudio)
-       ("python" ,python-wrapper)
        ("qtbase" ,qtbase)
-       ("qttools" ,qttools)
-       ("sdl" ,sdl)
        ("sqlite" ,sqlite)
-       ("yasm" ,yasm)
        ("zlib" ,zlib)))
     (arguments
      `(#:tests? #f                      ; no check target
@@ -2002,7 +2002,6 @@ for use with HTML5 video.")
                (let* ((out (assoc-ref outputs "out"))
                       (lib (string-append out "/lib"))
                       (top (getcwd))
-                      (sdl (assoc-ref inputs "sdl"))
                       (build_component
                        (lambda* (component srcdir #:optional (args '()))
                          (let ((builddir (string-append "build_" component)))
@@ -2015,8 +2014,6 @@ for use with HTML5 video.")
                                     (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
                                                    "\"-Wl,-rpath=" lib "\"")
                                     (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
-                                    (string-append "-DSDL_INCLUDE_DIR="
-                                                   sdl "/include/SDL")
                                     (string-append "../" srcdir)
                                     "-DENABLE_QT5=True"
                                     args)
@@ -2208,7 +2205,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.16.0")
+    (version "6.18.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2217,7 +2214,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1362fv63p34kza9v4b71b6wakgvsa2vdx9y0g28x3yh4cp4k97kx"))))
+                "0iiqym15n8kbnjzj0asmm86gs23yykz0va5b475cc4v2vv5admgx"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no tests
@@ -2301,7 +2298,7 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "24.0.1")
+    (version "24.0.3")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -2310,7 +2307,7 @@ be used for realtime video capture via Linux-specific APIs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "056s0hs1ds3c57sc0gy39dxaxvwlakl3w25jxgawh0fs99211ar5"))))
+                "0g8nzs696f3myz4hvygav85b0jgjmn6dicy50axmapdv8miff9xa"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f))                    ; no tests
@@ -2347,17 +2344,18 @@ and JACK.")
 (define-public libvdpau
   (package
     (name "libvdpau")
-    (version "1.2")
+    (version "1.3")
     (source
       (origin
-        (method url-fetch)
-        (uri (string-append "https://gitlab.freedesktop.org/vdpau/libvdpau"
-                            "/uploads/14b620084c027d546fa0b3f083b800c6/"
-                            "libvdpau-" version ".tar.bz2"))
+        (method git-fetch)
+        (uri (git-reference
+              (url "https://gitlab.freedesktop.org/vdpau/libvdpau.git")
+              (commit version)))
+        (file-name (git-file-name name version))
         (sha256
          (base32
-          "01ps6g6p6q7j2mjm9vn44pmzq3g75mm7mdgmnhb1qkjjdwc9njba"))))
-    (build-system gnu-build-system)
+          "1fb1nh5apr9kzx9bm2lysjwpyva1s60b2l2p230nqgvb11q25hd2"))))
+    (build-system meson-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
     (inputs
@@ -2640,39 +2638,36 @@ supported players in addition to this package.")
 (define-public handbrake
   (package
     (name "handbrake")
-    (version "1.2.2")
+    (version "1.3.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://download.handbrake.fr/releases/"
                                   version "/HandBrake-" version "-source.tar.bz2"))
               (sha256
                (base32
-                "0k2yaqy7zi06k8mkp9az2mn9dlgj3a1339vacakfh2nn2zsics6z"))
+                "15hxncswmaj62hb40fxixsa6d519zb712z9xbdq979q4rasjxa59"))
               (modules '((guix build utils)))
               (snippet
                ;; Remove "contrib" and source not necessary for
                ;; building/running under a GNU environment.
                '(begin
                   (for-each delete-file-recursively
-                            '("contrib" "macosx" "win"))
+                            '("contrib" "macosx" "win")) ; 540KiB, 11MiB, 5.9MiB resp.
                   (substitute* "make/include/main.defs"
                     ;; Disable unconditional inclusion of "contrib" libraries
                     ;; (ffmpeg, libvpx, libdvdread, libdvdnav, and libbluray),
                     ;; which would lead to fetching and building of these
                     ;; libraries.  Use our own instead.
                     (("MODULES \\+= contrib") "# MODULES += contrib"))
-                  #t))
-              (patches (search-patches "handbrake-opt-in-nvenc.patch"))))
+                  #t))))
     (build-system  glib-or-gtk-build-system)
     (native-inputs
-     `(("automake" ,automake)           ;gui subpackage must be bootstrapped
+     `(("automake" ,automake)           ; GUI subpackage must be bootstrapped
        ("autoconf" ,autoconf)
-       ("cmake" ,cmake-minimal) ;TODO: could probably strip check from make/configure.py
-       ("curl" ,curl)                   ;not actually used, but tested for
        ("intltool" ,intltool)
        ("libtool" ,libtool)
        ("pkg-config" ,pkg-config)
-       ("python" ,python-2)))           ;for configuration
+       ("python" ,python-2)))           ; For configuration
     (inputs
      `(("bzip2" ,bzip2)
        ("dbus-glib" ,dbus-glib)
@@ -2687,11 +2682,13 @@ supported players in addition to this package.")
        ("lame" ,lame)
        ("libass" ,libass)
        ("libbluray" ,libbluray)
+       ("libdav1d" ,dav1d)
        ("libdvdnav" ,libdvdnav)
        ("libdvdread" ,libdvdread)
        ("libgudev" ,libgudev)
        ("libmpeg2" ,libmpeg2)
        ("libnotify" ,libnotify)
+       ("libnuma" ,numactl)
        ("libogg" ,libogg)
        ("libopus" ,opus)
        ("libsamplerate" ,libsamplerate)
@@ -2707,6 +2704,7 @@ supported players in addition to this package.")
      `(#:tests? #f             ;tests require Ruby and claim to be unsupported
        #:configure-flags
        (list "--disable-gtk-update-checks"
+             "--disable-nvenc"
              (string-append "CPPFLAGS=-I"
                             (assoc-ref %build-inputs "libxml2")
                             "/include/libxml2")
@@ -2717,11 +2715,27 @@ supported players in addition to this package.")
            ;; Run bootstrap ahead of time so that shebangs get patched.
            (lambda _
              (setenv "CONFIG_SHELL" (which "sh"))
-             (setenv "NOCONFIGURE" "1")
              ;; Patch the Makefile so that it doesn't bootstrap again.
              (substitute* "gtk/module.rules"
-               ((".*autogen\\.sh.*") ""))
-             (invoke "sh" "./gtk/autogen.sh")))
+               ((".*autoreconf.*") ""))
+             (with-directory-excursion "gtk"
+               (invoke "autoreconf" "-fiv"))))
+         (add-before 'configure 'patch-SHELL
+           (lambda _
+             (substitute* "gtk/po/Makefile.in.in"
+               (("SHELL = /bin/sh") "SHELL = @SHELL@"))
+             #t))
+         (add-before 'configure 'relax-reqs
+           (lambda _
+             (substitute* "make/configure.py"
+               ;; cmake is checked for so that it can be used to build
+               ;; contrib/harfbuzz and contrib/x265, but we get these as
+               ;; inputs, so don't abort if it's not found.  Similarly, meson
+               ;; and ninja are only needed for contrib/libdav1d, and nasm
+               ;; only for libvpx
+               (("((cmake|meson|ninja|nasm) *=.*abort=)True" _ &)
+                (string-append & "False")))
+             #t))
          (replace 'configure
            (lambda* (#:key outputs configure-flags #:allow-other-keys)
              ;; 'configure' is not an autoconf-generated script, and
@@ -3203,7 +3217,7 @@ alpha blending etc).")
 (define-public frei0r-plugins
   (package
     (name "frei0r-plugins")
-    (version "1.6.1")
+    (version "1.7.0")
     (source
      (origin
        (method url-fetch)
@@ -3211,23 +3225,25 @@ alpha blending etc).")
                            "frei0r-plugins-" version ".tar.gz"))
        (sha256
         (base32
-         "0pji26fpd0dqrx1akyhqi6729s394irl73dacnyxk58ijqq4dhp0"))))
+         "0fjji3060r4fwr7vn91lwfzl80lg3my9lkp94kbyw8xwz7qgh7qv"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
-         (add-after 'unpack 'autotools
+         (add-after 'unpack 'patch-Makefile
            (lambda _
-             (invoke "sh" "autogen.sh"))))))
+             ;; XXX: The 1.7.0 Makefile looks for files that have slightly different
+             ;; names in the tarball.  Try removing this for future versions.
+             (substitute* "Makefile.in"
+               (("README\\.md ChangeLog TODO AUTHORS")
+                "README.txt ChangeLog.txt TODO.txt AUTHORS.txt"))
+             #t)))))
     ;; TODO: opencv for additional face detection filters.
     (inputs
      `(("gavl" ,gavl)
        ("cairo" ,cairo)))
     (native-inputs
-     `(("pkg-config" ,pkg-config)
-       ("libtool" ,libtool)
-       ("automake" ,automake)
-       ("autoconf" ,autoconf)))
+     `(("pkg-config" ,pkg-config)))
     (home-page "https://www.dyne.org/software/frei0r/")
     (synopsis "Minimalistic plugin API for video effects")
     (description
@@ -3547,7 +3563,7 @@ transitions, and effects and then export your film to many common formats.")
 (define-public dav1d
   (package
     (name "dav1d")
-    (version "0.5.1")
+    (version "0.5.2")
     (source
       (origin
         (method url-fetch)
@@ -3555,7 +3571,7 @@ transitions, and effects and then export your film to many common formats.")
                             "/dav1d/" version "/dav1d-" version ".tar.xz"))
         (sha256
          (base32
-          "03cf6f9if45prq97qp7llzi1p71dyw9ymc87hc225iy89kmzjsdd"))))
+          "02hgarv2x2bqbac15pdj7pbm8f4lyn78ws0dncygvhis9a6ghk7r"))))
     (build-system meson-build-system)
     (native-inputs `(("nasm" ,nasm)))
     (home-page "https://code.videolan.org/videolan/dav1d")
@@ -3661,3 +3677,42 @@ user interface features a builtin video player and is designed with attention
 to convenience of translating and batch processing of multiple documents.")
     (home-page "https://otsaloma.io/gaupol/")
     (license license:gpl3+)))
+
+(define-public theorafile
+  (let ((commit "404b14d7602b5918d117eaa64e8aa6601ede8593"))
+    (package
+      (name "theorafile")
+      (version (git-version "0.0.0" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/FNA-XNA/Theorafile.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32 "128c3pjzqbgrj020glm5jd6ss18vl19471lj615w2brjwb7c1f0z"))))
+      (build-system gnu-build-system)
+      (arguments
+       '(#:make-flags '("CC=gcc")
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'check
+             (lambda _
+               (setenv "CC" "gcc")
+               (invoke "make" "test")))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let ((out (assoc-ref outputs "out")))
+                 (install-file "libtheorafile.so" (string-append out "/lib"))
+                 (install-file "theorafile.h" (string-append out "/include")))
+               #t)))))
+      (native-inputs
+       ;; For tests.
+       `(("sdl2" ,sdl2)))
+      (home-page "https://github.com/FNA-XNA/Theorafile")
+      (synopsis "Ogg Theora Video Decoder Library")
+      (description "Theorafile is a library for quickly and easily decoding Ogg
+Theora videos.  Theorafile was written to be used for FNA's VideoPlayer.")
+      (license license:zlib))))