gnu: Move sqlite to separate module.
[jackhill/guix/guix.git] / gnu / packages / video.scm
index 4882f04..947c498 100644 (file)
@@ -3,16 +3,16 @@
 ;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
 ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
-;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2018 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2015, 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
 ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
 ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
 ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2016, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;; Copyright © 2017 Feng Shu <tumashu@163.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@@ -21,7 +21,7 @@
 ;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
 ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
-;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
@@ -29,6 +29,9 @@
 ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org>
 ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
+;;; Copyright © 2018 Gábor Boskovit <boskovits@gmail.com>
+;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,6 +68,7 @@
   #: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)
@@ -78,8 +82,8 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages cpp)
   #:use-module (gnu packages curl)
-  #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
+  #:use-module (gnu packages dns)
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages elf)
@@ -94,6 +98,7 @@
   #: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 gstreamer)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages man)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages networking)
   #:use-module (gnu packages ocr)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages popt)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages python)
   #: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 rdesktop)
   #:use-module (gnu packages ruby)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
   #:use-module (gnu packages shells)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
+  #:use-module (gnu packages swig)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages xml)
-  #:use-module (gnu packages xorg)
-  #:use-module (gnu packages assembly))
+  #:use-module (gnu packages xorg))
 
 (define-public aalib
   (package
@@ -390,7 +399,8 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
 (define-public x265
   (package
     (name "x265")
-    (version "2.8")
+    (version "2.9")
+    (outputs '("out" "static"))
     (source
       (origin
         (method url-fetch)
@@ -398,9 +408,9 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
                             "x265_" version ".tar.gz"))
         (sha256
          (base32
-          "0qx8mavwdzdpkkby7n29i9av7zsnklavacwfz537mf62q2pzjnbf"))
-        (patches (search-patches "x265-fix-ppc64le-build.patch"
-                                 "x265-arm-asm-primitives.patch"))
+          "090hp4216isis8q5gb7bwzia8rfyzni54z21jnwm97x3hiy6ibpb"))
+        (patches (search-patches "x265-arm-flags.patch"
+                                 "x265-detect512-all-arches.patch"))
         (modules '((guix build utils)))
         (snippet '(begin
                     (delete-file-recursively "source/compat/getopt")
@@ -408,18 +418,76 @@ and creating Matroska files from other media files (@code{mkvmerge}).")
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
-       ;; Currently the source code doesn't check for aarch64.
-       ,@(if (any (cute string-prefix? <> (or (%current-system)
-                                              (%current-target-system)))
-                  '("armhf" "aarch64"))
-           '(#:configure-flags '("-DENABLE_PIC=TRUE"))
-           '())
+       #:configure-flags
+         ;; Ensure position independent code for everyone.
+         (list "-DENABLE_PIC=TRUE"
+               ,@(if (string-prefix? "armhf" (or (%current-system)
+                                                 (%current-target-system)))
+                     '("-DENABLE_ASSEMBLY=OFF")
+                     '())
+               (string-append "-DCMAKE_INSTALL_PREFIX="
+                              (assoc-ref %outputs "out")))
        #:phases
        (modify-phases %standard-phases
-         (add-before 'configure 'prepare-build
+         (add-after 'unpack 'prepare-build
            (lambda _
              (delete-file-recursively "build")
              (chdir "source")
+             ;; recognize armv8 in 32-bit mode as ARM
+             (substitute* "CMakeLists.txt"
+              (("armv6l") "armv8l"))
+             #t))
+         (add-before 'configure 'build-12-bit
+           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+             (mkdir "../build-12bit")
+             (with-directory-excursion "../build-12bit"
+               (apply invoke
+                 "cmake" "../source"
+                 "-DHIGH_BIT_DEPTH=ON"
+                 "-DEXPORT_C_API=OFF"
+                 "-DENABLE_CLI=OFF"
+                 "-DMAIN12=ON"
+                 configure-flags)
+               (substitute* (cons "cmake_install.cmake"
+                                  (append
+                                    (find-files "CMakeFiles/x265-shared.dir" ".")
+                                    (find-files "CMakeFiles/x265-static.dir" ".")))
+                 (("libx265") "libx265_main12"))
+               (invoke "make"))))
+         (add-before 'configure 'build-10-bit
+           (lambda* (#:key (configure-flags '()) #:allow-other-keys)
+             (mkdir "../build-10bit")
+             (with-directory-excursion "../build-10bit"
+               (apply invoke
+                 "cmake" "../source"
+                 "-DHIGH_BIT_DEPTH=ON"
+                 "-DEXPORT_C_API=OFF"
+                 "-DENABLE_CLI=OFF"
+                 configure-flags)
+               (substitute* (cons "cmake_install.cmake"
+                                  (append
+                                    (find-files "CMakeFiles/x265-shared.dir" ".")
+                                    (find-files "CMakeFiles/x265-static.dir" ".")))
+                 (("libx265") "libx265_main10"))
+               (invoke "make"))))
+         (add-after 'install 'install-more-libs
+           (lambda _
+             (with-directory-excursion "../build-12bit"
+               (invoke "make" "install"))
+             (with-directory-excursion "../build-10bit"
+               (invoke "make" "install"))))
+         (add-before 'strip 'move-static-libs
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out"))
+                   (static (assoc-ref outputs "static")))
+               (mkdir-p (string-append static "/lib"))
+               (with-directory-excursion
+                 (string-append out "/lib")
+                 (for-each
+                   (lambda (file)
+                     (rename-file file
+                                  (string-append static "/lib/" file)))
+                   (find-files "." "\\.a$"))))
              #t)))))
     (home-page "http://x265.org/")
     (synopsis "Library for encoding h.265/HEVC video streams")
@@ -616,14 +684,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
 (define-public ffmpeg
   (package
     (name "ffmpeg")
-    (version "4.0.2")
+    (version "4.1")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "15rgzcmdccy4flajs63gkz4n3k24wkkg50r13l1r83lrxg4hqp59"))))
+               "150rrm549fy1x71c9whmyi5knyd9sliwvmcsm438bdgg4v8c93m3"))))
     (build-system gnu-build-system)
     (inputs
      `(("fontconfig" ,fontconfig)
@@ -637,6 +705,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
        ("libbluray" ,libbluray)
        ("libcaca" ,libcaca)
        ("libcdio-paranoia" ,libcdio-paranoia)
+       ("libdrm" ,libdrm)
        ("libtheora" ,libtheora)
        ("libva" ,libva)
        ("libvdpau" ,libvdpau)
@@ -738,6 +807,7 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
          "--enable-libx265"
          "--enable-openal"
          "--enable-opengl"
+         "--enable-libdrm"
 
          "--enable-runtime-cpudetect"
 
@@ -792,46 +862,28 @@ audio/video codec library.")
 (define-public ffmpeg-3.4
   (package
     (inherit ffmpeg)
-    (version "3.4.4")
-    (source (origin
-             (method url-fetch)
-             (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
-                                 version ".tar.xz"))
-             (sha256
-              (base32
-               "1iizgnhjbhar9y1ykqlj1czqanlv24knkfq5vvfnppv5x00pcvrq"))))))
-
-(define-public ffmpeg-2.8
-  (package
-    (inherit ffmpeg)
-    (version "2.8.15")
+    (version "3.4.5")
     (source (origin
              (method url-fetch)
              (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
                                  version ".tar.xz"))
              (sha256
               (base32
-               "065xbvnfmxfbfrc14cavpqyd2slil99vcjksw4ndb7w8zdh0wp3v"))))
-    (arguments
-     (substitute-keyword-arguments (package-arguments ffmpeg)
-       ((#:configure-flags flags)
-        `(map (lambda (flag)
-                (if (string=? flag "--disable-mipsdsp")
-                    "--disable-mipsdspr1"
-                    flag))
-              ,flags))))))
+               "0b59qk5wpc5ksiha76jbhb859g5gxa4w0k6afh3kgvgajiivs73l"))))))
 
 (define-public ffmpegthumbnailer
   (package
     (name "ffmpegthumbnailer")
     (version "2.2.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/dirkvdb/"
-                                  name "/archive/" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/dirkvdb/ffmpegthumbnailer.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "13qs4iwd4l3iiim30s5051n80z0vgsnikym8vsn321cnm9algiwb"))))
+                "0kl8aa547icy9b05njps02a8sw4yn4f8fzs228kig247sn09s4cp"))))
     (build-system cmake-build-system)
     (native-inputs
      `(("pkg-config" ,pkg-config)))
@@ -850,31 +902,19 @@ thumbnailer uses ffmpeg to decode frames from the video files, so supported
 videoformats depend on the configuration flags of ffmpeg.")
     (license license:gpl2+)))
 
-;; Fix build with newer x264.
-(define %vlc-libx264-compat.patch
-  (origin
-    (method url-fetch)
-    (uri (string-append "https://git.videolan.org/?p=vlc.git;a=patch;h="
-                        "a8953ba707cca1f2de372ca24513296bcfcdaaa8"))
-    (file-name "vlc-libx264-compat.patch")
-    (sha256
-     (base32
-      "04igckbdp3sbp8vh0ihmhcf3yjyyk9r3cd5dm9mn9j6vipi1dg3g"))))
-
 (define-public vlc
   (package
     (name "vlc")
-    (version "3.0.4")
+    (version "3.0.5")
     (source (origin
              (method url-fetch)
              (uri (string-append
                    "https://download.videolan.org/pub/videolan/vlc/"
                    (car (string-split version #\-))
                    "/vlc-" version ".tar.xz"))
-             (patches (list %vlc-libx264-compat.patch))
              (sha256
               (base32
-               "17jsq0zqpqyxw4ckvjba0hf6zk8ywc4wf8sy3z03hh3ij0vxpwq1"))))
+               "1nvj00khy08sing0mdnw6virmiq579mrk5rvpx9710nlxggqgh7m"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("flex" ,flex)
@@ -911,6 +951,7 @@ videoformats depend on the configuration flags of ffmpeg.")
        ("libkate" ,libkate)
        ("libmad" ,libmad)
        ("libmatroska" ,libmatroska)
+       ("libmicrodns" ,libmicrodns)
        ("libmodplug" ,libmodplug)
        ("libmpeg2" ,libmpeg2)
        ("libogg" ,libogg)
@@ -938,6 +979,7 @@ videoformats depend on the configuration flags of ffmpeg.")
        ("opus" ,opus)
        ("perl" ,perl)
        ("pulseaudio" ,pulseaudio)
+       ("protobuf" ,protobuf)
        ("python" ,python-wrapper)
        ("qtbase" ,qtbase)
        ("qtsvg" ,qtsvg)
@@ -1022,7 +1064,7 @@ videoformats depend on the configuration flags of ffmpeg.")
     (synopsis "Audio and video framework")
     (description "VLC is a cross-platform multimedia player and framework
 that plays most multimedia files as well as DVD, Audio CD, VCD, and various
-treaming protocols.")
+streaming protocols.")
     (license license:gpl2+)))
 
 (define-public mplayer
@@ -1121,16 +1163,16 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
 (define-public mpv
   (package
     (name "mpv")
-    (version "0.29.0")
+    (version "0.29.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/mpv-player/mpv/archive/v" version
-                    ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mpv-player/mpv.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "06bk8836brzik1qmq8kycwg5n35r438sd2176k6msjg5rrwghakp"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "138921kx8g6qprim558xin09xximjhsj9ss8b71ifg2m6kclym8m"))))
     (build-system waf-build-system)
     (native-inputs
      `(("perl" ,perl) ; for zsh completion file
@@ -1182,7 +1224,8 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
          (add-before
           'configure 'setup-waf
           (lambda* (#:key inputs #:allow-other-keys)
-            (copy-file (assoc-ref inputs "waf") "waf")
+            (let ((waf (assoc-ref inputs "waf")))
+              (copy-file (string-append waf "/bin/waf") "waf"))
             (setenv "CC" "gcc")
             #t)))
        #:configure-flags (list "--enable-libmpv-shared"
@@ -1242,7 +1285,8 @@ access to mpv's powerful playback capabilities.")
               (sha256
                (base32
                 "0vvh89hvp8qg9an9vcmwb7d9k3nixhxaz6zi65qdjnd0i56kkcz6"))
-              (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
+              (patches (search-patches "libvpx-use-after-free-in-postproc.patch"
+                                       "libvpx-CVE-2016-2818.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags (list "--enable-shared"
@@ -1270,15 +1314,15 @@ access to mpv's powerful playback capabilities.")
 (define-public youtube-dl
   (package
     (name "youtube-dl")
-    (version "2018.09.08")
+    (version "2019.01.10")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://yt-dl.org/downloads/"
-                                  version "/youtube-dl-"
+              (uri (string-append "https://github.com/rg3/youtube-dl/releases/"
+                                  "download/" version "/youtube-dl-"
                                   version ".tar.gz"))
               (sha256
                (base32
-                "0vwc4faqdddrb3nm4fzmkr60n5rc2zwyy8jwrrjad60kcp8isf05"))))
+                "07r1y06697vhbkbf8pix4cnybaqmlf1wb2df5glj2xv8nl6f51gd"))))
     (build-system python-build-system)
     (arguments
      ;; The problem here is that the directory for the man page and completion
@@ -1372,7 +1416,8 @@ YouTube.com and many more sites.")
                (("os\\.path\\.join\\('/usr', 'share'")
                 (string-append "os.path.join('"
                                (assoc-ref %outputs "out")
-                               "', 'share'"))))))))
+                               "', 'share'")))
+             #t)))))
     (inputs
      `(("python2-wxpython" ,python2-wxpython)
        ("youtube-dl" ,youtube-dl)))
@@ -1390,14 +1435,14 @@ other site that youtube-dl supports.")
     (name "you-get")
     (version "0.4.1077")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/soimort/you-get/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/soimort/you-get.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "04vxc91k627qgsqs8dhqajrb6vpj4pw21jlwbha28qakfiz2x11k"))))
+                "1rwkn3wb3r70b8cqj40qdknkg9kqbgzkvi901hbpy2a8s1b7858n"))))
     (build-system python-build-system)
     (inputs
      `(("ffmpeg" ,ffmpeg)))             ; for multi-part and >=1080p videos
@@ -1427,7 +1472,7 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
 (define-public youtube-viewer
   (package
     (name "youtube-viewer")
-    (version "3.4.1")
+    (version "3.5.0")
     (source (origin
               (method git-fetch)
               (uri (git-reference
@@ -1436,7 +1481,7 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0axgb95lx81psgrb2a5rfdd8gl4mhsrzf41jas6l58d1xkaj54ri"))))
+                "1s7hv2a46cx2nbdykrijqfh8hdkf3zqn6q8sg3ajnnc5agaspyrg"))))
     (build-system perl-build-system)
     (native-inputs
      `(("perl-module-build" ,perl-module-build)))
@@ -1458,6 +1503,15 @@ audio, images) from the Web.  It can use either mpv or vlc for playback.")
        #:module-build-flags '("--gtk")
        #:phases
        (modify-phases %standard-phases
+         (add-after 'install 'install-desktop
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (sharedir (string-append out "/share")))
+               (install-file "share/gtk-youtube-viewer.desktop"
+                             (string-append sharedir "/applications"))
+               (install-file "share/icons/gtk-youtube-viewer.png"
+                             (string-append sharedir "/pixmaps"))
+               #t)))
          (add-after 'install 'wrap-program
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
@@ -1710,67 +1764,68 @@ for use with HTML5 video.")
        (add-before 'patch-source-shebangs 'unpack-ffmpeg
          (lambda _
            (with-directory-excursion "avidemux_core/ffmpeg_package"
-             (system* "tar" "xf" "ffmpeg-2.7.6.tar.bz2")
-             (delete-file "ffmpeg-2.7.6.tar.bz2"))))
+             (invoke "tar" "xf" "ffmpeg-2.7.6.tar.bz2")
+             (delete-file "ffmpeg-2.7.6.tar.bz2"))
+           #t))
        (add-after 'patch-source-shebangs 'repack-ffmpeg
          (lambda _
            (with-directory-excursion "avidemux_core/ffmpeg_package"
              (substitute* "ffmpeg-2.7.6/configure"
                (("#! /bin/sh") (string-append "#!" (which "sh"))))
-             (system* "tar" "cjf" "ffmpeg-2.7.6.tar.bz2" "ffmpeg-2.7.6"
-                      ;; avoid non-determinism in the archive
-                      "--sort=name" "--mtime=@0"
-                      "--owner=root:0" "--group=root:0")
-             (delete-file-recursively "ffmpeg-2.7.6"))))
+             (invoke "tar" "cjf" "ffmpeg-2.7.6.tar.bz2" "ffmpeg-2.7.6"
+                     ;; avoid non-determinism in the archive
+                     "--sort=name" "--mtime=@0"
+                     "--owner=root:0" "--group=root:0")
+             (delete-file-recursively "ffmpeg-2.7.6"))
+           #t))
        (replace 'configure
          (lambda _
            ;; Copy-paste settings from the cmake build system.
            (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
-           (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))))
+           (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
+           #t))
        (replace 'build
          (lambda* (#:key inputs outputs #:allow-other-keys)
-           (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)))
-                    (mkdir builddir)
-                    (with-directory-excursion builddir
-                      (zero?
-                        (and
-                          (apply system* "cmake"
-                                 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
-                                 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
-                                 (string-append "-DCMAKE_INSTALL_RPATH=" lib)
-                                 (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)
-                         (system* "make" "-j"
+           (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)))
+                       (mkdir builddir)
+                       (with-directory-excursion builddir
+                         (apply invoke "cmake"
+                                "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
+                                (string-append "-DCMAKE_INSTALL_PREFIX=" out)
+                                (string-append "-DCMAKE_INSTALL_RPATH=" lib)
+                                (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)
+                         (invoke "make" "-j"
                                  (number->string (parallel-job-count)))
-                         (system* "make" "install"))))))))
+                         (invoke "make" "install"))))))
              (mkdir out)
-             (and (build_component "core" "avidemux_core")
-                  (build_component "cli" "avidemux/cli")
-                  (build_component "qt4" "avidemux/qt4")
-                  (build_component "plugins_common" "avidemux_plugins"
-                                  '("-DPLUGIN_UI=COMMON"))
-                  (build_component "plugins_cli" "avidemux_plugins"
-                                  '("-DPLUGIN_UI=CLI"))
-                  (build_component "plugins_qt4" "avidemux_plugins"
-                                  '("-DPLUGIN_UI=QT4"))
-                  (build_component "plugins_settings" "avidemux_plugins"
-                                  '("-DPLUGIN_UI=SETTINGS")))
+             (build_component "core" "avidemux_core")
+             (build_component "cli" "avidemux/cli")
+             (build_component "qt4" "avidemux/qt4")
+             (build_component "plugins_common" "avidemux_plugins"
+                              '("-DPLUGIN_UI=COMMON"))
+             (build_component "plugins_cli" "avidemux_plugins"
+                              '("-DPLUGIN_UI=CLI"))
+             (build_component "plugins_qt4" "avidemux_plugins"
+                              '("-DPLUGIN_UI=QT4"))
+             (build_component "plugins_settings" "avidemux_plugins"
+                              '("-DPLUGIN_UI=SETTINGS"))
              ;; Remove .exe and .dll file.
              (delete-file-recursively
-               (string-append out "/share/ADM6_addons")))))
+              (string-append out "/share/ADM6_addons"))
+             #t)))
        (delete 'install))))
     (home-page "http://fixounet.free.fr/avidemux/")
     (synopsis "Video editor")
@@ -1788,14 +1843,14 @@ capabilities.")
     (name "vapoursynth")
     (version "37")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/vapoursynth/vapoursynth/archive/R"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/vapoursynth/vapoursynth.git")
+                    (commit (string-append "R" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1g3hc079jw4mz1cmkv2y28pdb556wqc8ql7iravgh1rg8j3f1zi5"))))
+                "1ma2s7dxk6y6l04qj1jvgwia4xj7999ny3a1yx2vbk5l83giam2p"))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf)
@@ -1850,7 +1905,8 @@ format changes.")
           (lambda _
             (chdir "build/generic")
             (substitute* "configure"
-              (("#! /bin/sh") (string-append "#!" (which "sh")))))))
+              (("#! /bin/sh") (string-append "#!" (which "sh"))))
+            #t)))
        ;; No 'check' target.
        #:tests? #f))
     (home-page "https://www.xvid.com/")
@@ -1862,41 +1918,37 @@ and custom quantization matrices.")
     (license license:gpl2+)))
 
 (define-public streamlink
-  ;; Release tarball doesn't contain ‘tests/resources/dash/’ directory.
-  (let ((commit "2dca7930a938f60b48d8e23260963ea7c49d979f"))
-    (package
-      (name "streamlink")
-      (version (git-version "0.13.0" "1" commit))
-      (source
-       (origin
-         (method git-fetch)
-         (uri (git-reference
-               (url "https://github.com/streamlink/streamlink.git")
-               (commit commit)))
-         (file-name (git-file-name name version))
-         (sha256
-          (base32
-           "0vq19aspshim63aj8yl2p64ykrbk2mwwlawdx427b3j2djlc5qhw"))))
-      (build-system python-build-system)
-      (home-page "https://github.com/streamlink/streamlink")
-      (native-inputs
-       `(("python-freezegun" ,python-freezegun)
-         ("python-pytest" ,python-pytest)
-         ("python-mock" ,python-mock)
-         ("python-requests-mock" ,python-requests-mock)))
-      (propagated-inputs
-       `(("python-pysocks" ,python-pysocks)
-         ("python-websocket-client" ,python-websocket-client)
-         ("python-iso3166" ,python-iso3166)
-         ("python-iso639" ,python-iso639)
-         ("python-isodate", python-isodate)
-         ("python-pycryptodome" ,python-pycryptodome)
-         ("python-requests" ,python-requests)
-         ("python-urllib3" ,python-urllib3)))
-      (synopsis "Extract streams from various services")
-      (description "Streamlink is command-line utility that extracts streams
+  (package
+    (name "streamlink")
+    (version "0.14.2")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (pypi-uri "streamlink" version))
+        (sha256
+         (base32
+          "0l2145fd60i76afjisfxd48cwhwyir07i7s3bnimdq5db2kzkix8"))
+        (patches (search-patches "streamlink-update-test.patch"))))
+    (build-system python-build-system)
+    (home-page "https://github.com/streamlink/streamlink")
+    (native-inputs
+     `(("python-freezegun" ,python-freezegun)
+       ("python-pytest" ,python-pytest)
+       ("python-mock" ,python-mock)
+       ("python-requests-mock" ,python-requests-mock)))
+    (propagated-inputs
+     `(("python-pysocks" ,python-pysocks)
+       ("python-websocket-client" ,python-websocket-client)
+       ("python-iso3166" ,python-iso3166)
+       ("python-iso639" ,python-iso639)
+       ("python-isodate" ,python-isodate)
+       ("python-pycryptodome" ,python-pycryptodome)
+       ("python-requests" ,python-requests)
+       ("python-urllib3" ,python-urllib3)))
+    (synopsis "Extract streams from various services")
+    (description "Streamlink is command-line utility that extracts streams
 from sites like Twitch.tv and pipes them into a video player of choice.")
-      (license license:bsd-2))))
+    (license license:bsd-2)))
 
 (define-public livestreamer
   (deprecated-package "livestreamer" streamlink))
@@ -1928,7 +1980,8 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
              (lambda* (#:key outputs #:allow-other-keys)
                (install-file "plugins/rofi-twitchy"
                              (string-append (assoc-ref outputs "out")
-                                            "/bin")))))))
+                                            "/bin"))
+               #t)))))
       (inputs
        `(("python-requests" ,python-requests)
          ("streamlink" ,streamlink)))
@@ -1941,15 +1994,16 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
 (define-public mlt
   (package
     (name "mlt")
-    (version "6.4.1")
+    (version "6.10.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/mltframework/mlt/"
-                                  "archive/v" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/mltframework/mlt.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "10m3ry0b2pvqx3bk34qh5dq337nn8pkc2gzfyhsj4nv9abskln47"))
+                "0ki86yslr5ywa6sz8pjrgd9a4rn2rr4mss2zkmqi7pq8prgsm1fr"))
               (modules '((guix build utils)))
               (snippet '(begin
                           ;; As of glibc 2.26, <xlocale.h> no longer is.
@@ -1959,7 +2013,7 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f ; no tests
-       #:make-flags '("CC=gcc")
+       #:make-flags '("CC=gcc" "CXX=g++ -std=gnu++11")
        #:configure-flags
        (list "--enable-gpl3"
              "--enable-gpl")
@@ -1978,11 +2032,16 @@ from sites like Twitch.tv and pipes them into a video player of choice.")
      `(("alsa-lib" ,alsa-lib)
        ("ffmpeg" ,ffmpeg-3.4)
        ("fftw" ,fftw)
+       ("frei0r-plugins" ,frei0r-plugins)
+       ("gdk-pixbuf" ,gdk-pixbuf)
+       ("gtk+" ,gtk+-2)
        ("libxml2" ,libxml2)
        ("jack" ,jack-1)
        ("ladspa" ,ladspa)
        ("libsamplerate" ,libsamplerate)
        ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
        ("sdl" ,sdl)
        ("sox" ,sox)))
     (native-inputs
@@ -2035,15 +2094,16 @@ be used for realtime video capture via Linux-specific APIs.")
 (define-public obs
   (package
     (name "obs")
-    (version "20.1.3")
+    (version "22.0.3")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/jp9000/obs-studio"
-                                  "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/obsproject/obs-studio.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1g5z6z050v25whc7n3xvg6l238wmg5crp7ihvk73qngvzxr8bg28"))))
+                "0ri9qkqk3h71b1a5bwpjzqdr21bbmfqbykg48l779d20zln23n1i"))))
     (build-system cmake-build-system)
     (arguments
      `(#:tests? #f)) ; no tests
@@ -2199,13 +2259,14 @@ making @dfn{screencasts}.")
     (version "0.3.11")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/MaartenBaert/ssr/archive/"
-                           version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/MaartenBaert/ssr.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0l6irdadqpajvv0dj3ngs1231n559l0y1pykhs2h7526qm4w7xal"))))
+         "0n702dnv4qshgn3b90ixvplfafjhgz6040yir5vy8khjdpciysq4"))))
     (build-system cmake-build-system)
     ;; Although libx11, libxfixes, libxext are listed as build dependencies in
     ;; README.md, the program builds and functions properly without them.
@@ -2323,13 +2384,14 @@ Content System specification.")
     (version "0.2.8")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/mps-youtube/mps-youtube/"
-                           "archive/v" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mps-youtube/mps-youtube.git")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0x7cmfh199q9j396v7bz81nnvanfllhsg86489i5dw2p3yyc9wnm"))))
+         "1w1jhw9rg3dx7vp97cwrk5fymipkcy2wrbl1jaa38ivcjhqg596y"))))
     (build-system python-build-system)
     (arguments
      ;; Tests need to be disabled until #556 upstream is fixed. It reads as if the
@@ -2354,22 +2416,27 @@ supported players in addition to this package.")
 (define-public handbrake
   (package
     (name "handbrake")
-    (version "0.10.5")
+    (version "1.1.2")
     (source (origin
               (method url-fetch)
-              (uri (string-append "https://handbrake.fr/rotation.php?file="
-                                  "HandBrake-" version ".tar.bz2"))
-              (file-name (string-append "handbrake-" version ".tar.bz2"))
+              (uri (string-append "https://download.handbrake.fr/releases/"
+                                  version "/HandBrake-" version "-source.tar.bz2"))
               (sha256
                (base32
-                "1w720y3bplkz187wgvy4a4xm0vpppg45mlni55l6yi8v2bfk14pv"))
-              (patches (search-patches "handbrake-pkg-config-path.patch"))
+                "0bny0hwlr55g2c69rsamv0xvwmfh1s4a582b9vq20xv5ly84m6ms"))
               (modules '((guix build utils)))
               (snippet
-               ;; Remove bundled libraries and source not necessary for
-               ;; running under a GNU environment.
+               ;; Remove "contrib" and source not necessary for
+               ;; building/running under a GNU environment.
                '(begin
-                  (for-each delete-file-recursively '("contrib" "macosx" "win"))
+                  (for-each delete-file-recursively
+                            '("contrib" "macosx" "win"))
+                  (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))))
     (build-system  glib-or-gtk-build-system)
     (native-inputs
@@ -2383,13 +2450,14 @@ supported players in addition to this package.")
     (inputs
      `(("bzip2" ,bzip2)
        ("dbus-glib" ,dbus-glib)
-       ("ffmpeg" ,ffmpeg-3.4)           ;compilation errors with ffmpeg-4
+       ("ffmpeg" ,ffmpeg)
        ("fontconfig" ,fontconfig)
        ("freetype" ,freetype)
        ("glib" ,glib)
        ("gstreamer" ,gstreamer)
        ("gst-plugins-base" ,gst-plugins-base)
        ("gtk+" ,gtk+)
+       ("jansson" ,jansson)
        ("lame" ,lame)
        ("libass" ,libass)
        ("libbluray" ,libbluray)
@@ -2399,6 +2467,7 @@ supported players in addition to this package.")
        ("libmpeg2" ,libmpeg2)
        ("libnotify" ,libnotify)
        ("libogg" ,libogg)
+       ("libopus" ,opus)
        ("libsamplerate" ,libsamplerate)
        ("libtheora" ,libtheora)
        ("libvorbis" ,libvorbis)
@@ -2409,6 +2478,11 @@ supported players in addition to this package.")
        ("zlib" ,zlib)))
     (arguments
      `(#:tests? #f             ;tests require Ruby and claim to be unsupported
+       #:configure-flags
+       (list (string-append "CPPFLAGS=-I"
+                            (assoc-ref %build-inputs "libxml2")
+                            "/include/libxml2")
+             "LDFLAGS=-lx265")
        #:phases
        (modify-phases %standard-phases
          (replace 'bootstrap
@@ -2420,21 +2494,6 @@ supported players in addition to this package.")
              (substitute* "gtk/module.rules"
                ((".*autogen\\.sh.*") ""))
              (invoke "sh" "./gtk/autogen.sh")))
-         (add-before 'configure 'disable-contrib
-           (lambda _
-             (substitute* "make/include/main.defs"
-               ;; Disable unconditional inclusion of some "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))
-         (add-before 'configure 'fix-x265-linking
-           (lambda _
-             (substitute* "test/module.defs"
-               ;; Fix missing library during linking error
-               (("TEST.GCC.l =") "TEST.GCC.l = x265"))
-             #t))
          (replace 'configure
            (lambda* (#:key outputs configure-flags #:allow-other-keys)
              ;; 'configure' is not an autoconf-generated script, and
@@ -2451,8 +2510,9 @@ supported players in addition to this package.")
     (description
      "HandBrake is a tool for converting video from any format to a selection
 of modern, widely supported codecs.")
-    ;; Most under GPL version 2 or later, and portions under BSD 3 Clause
-    (license (list license:gpl2+ license:bsd-3))))
+    ;; Some under GPLv2+, some under LGPLv2.1+, and portions under BSD3.
+    ;; Combination under GPLv2.  See LICENSE.
+    (license license:gpl2)))
 
 (define-public openh264
   (package
@@ -2647,7 +2707,7 @@ many codecs and formats supported by libmediainfo.")
 (define-public livemedia-utils
   (package
     (name "livemedia-utils")
-    (version "2017.10.28")
+    (version "2018.10.17")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -2655,7 +2715,7 @@ many codecs and formats supported by libmediainfo.")
                     version ".tar.gz"))
               (sha256
                (base32
-                "0f5kxpayqn3yhabqrd2cqlc74i6x2xr01jfkank1lcilxnfyrsnq"))
+                "1s69ipvdc6ldscp0cr1zpsll8xc3qcagr95nl84x7b1rbg4xjs3w"))
               (modules '((guix build utils)))
               (snippet '(begin
                           ;; As of glibc 2.26, <xlocale.h> no longer is.
@@ -2717,12 +2777,14 @@ and ITU-T H.222.0.")
     (version "2.23")
     (home-page "https://github.com/FFMS/ffms2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append home-page "/archive/" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/FFMS/ffms2.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1vbkab8vrplxz5xgag8ggzkwp4f7nf285pd0l2a7zy66n6i2m6xh"))))
+                "0dkz5b3gxq5p4xz0qqg6l2sigszrlsinz3skyf0ln4wf3zrvf8m5"))))
     (build-system gnu-build-system)
     (arguments
      '(#:configure-flags
@@ -2753,7 +2815,8 @@ programmers to access a standard API to open and decompress media files.")
               (sha256
                (base32
                 "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5"))
-              (patches (search-patches "aegisub-icu59-include-unistr.patch"))))
+              (patches (search-patches "aegisub-icu59-include-unistr.patch"
+                                       "aegisub-boost68.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:configure-flags
@@ -2805,13 +2868,14 @@ tools for styling them, including a built-in real-time video preview.")
     (version "1.12.2")
     (source
      (origin
-       (method url-fetch)
-       (uri (string-append "https://github.com/pitivi/gst-transcoder/"
-                           "archive/" version ".tar.gz"))
-       (file-name (string-append name "-" version ".tar.gz"))
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/pitivi/gst-transcoder.git")
+             (commit version)))
+       (file-name (git-file-name name version))
        (sha256
         (base32
-         "0cnwmrsd321s02ff91m3j27ydj7f8wks0jvmp5admlhka6z7zxm9"))))
+         "0nw1zykqc6c8xs3ri55pm00pwyz93z4y4nd880apfiwj7yv5p3az"))))
     (build-system meson-build-system)
     (inputs
      `(("gobject-introspection" ,gobject-introspection)
@@ -2913,25 +2977,27 @@ It counts more than 100 plugins.")
 (define-public motion
   (package
     (name "motion")
-    (version "4.1.1")
+    (version "4.2")
     (home-page "https://motion-project.github.io/")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/Motion-Project/motion/archive/"
-                    "release-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/Motion-Project/motion.git")
+                    (commit (string-append "release-" version))))
               (sha256
                (base32
-                "1qm4i8zrqafl60sv2frhixvkd0wh0r5jfcrj5i6gha7yplsvjx10"))
-              (file-name (string-append name "-" version ".tar.gz"))))
+                "0c0q6dl4v561m5y8bp0c0h4p3s52fjgcdnsrrf5ygdi288d3rfxv"))
+              (file-name (git-file-name name version))))
     (build-system gnu-build-system)
     (native-inputs
      `(("autoconf" ,autoconf-wrapper)
        ("automake" ,automake)
+       ("gettext" ,gettext-minimal)
        ("pkg-config" ,pkg-config)))
     (inputs
      `(("libjpeg" ,libjpeg)
        ("ffmpeg" ,ffmpeg-3.4)
+       ("libmicrohttpd" ,libmicrohttpd)
        ("sqlite" ,sqlite)))
     (arguments
      '(#:phases (modify-phases %standard-phases
@@ -2995,14 +3061,14 @@ save it to the appropriate filename.")
     (name "l-smash")
     (version "2.14.5")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/" name "/" name "/archive/v"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/l-smash/l-smash.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0dary0h65kq6sv93iabv25djlvzr5ckdcp3ywagbix44wqfw7xz6"))))
+                "0rcq9727im6kd8da8b7kzzbzxdldvmh5nsljj9pvr4m3lj484b02"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ;no tests
@@ -3057,12 +3123,14 @@ online.")
     (name "vidstab")
     (version "1.1.0")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/georgmartius/vid.stab/"
-                                  "archive/v" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/georgmartius/vid.stab.git")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1fy03n343djfdi19msac81833v5iivpv635yjzrx9nkfwm9s1lhl"))))
+                "0a3frpm2kdbx7vszhg64p3alisag73bcspl7fp3a2f1kgq7rbh38"))))
     (build-system cmake-build-system)
     (arguments
      '(#:tests? #f)) ; tests are not run as part of standard build process
@@ -3075,3 +3143,159 @@ as surfing, skiing, riding and walking while shooting videos are especially
 prone to erratic camera shakes.  Vidstab targets these video contents to help
 create smoother and stable videos.")
     (license license:gpl2+)))
+
+(define-public libopenshot
+  (package
+    (name "libopenshot")
+    (version "0.2.2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OpenShot/libopenshot")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1x4kv05pdq1pglb6y056aa7llc6iyibyhzg93k7zwj0q08cp5ixd"))
+              (modules '((guix build utils)))
+              (snippet '(begin
+                          ;; Allow overriding of the python installation dir
+                          (substitute* "src/bindings/python/CMakeLists.txt"
+                            (("(SET\\(PYTHON_MODULE_PATH.*)\\)" _ set)
+                             (string-append set " CACHE PATH "
+                                            "\"Python bindings directory\")")))
+                          #t))
+              (patches (search-patches "libopenshot-tests-with-system-libs.patch"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python" ,python)
+       ("swig" ,swig)
+       ("unittest++" ,unittest-cpp)))
+    (propagated-inputs                  ;all referenced in installed headers
+     `(("cppzmq" ,cppzmq)
+       ("ffmpeg" ,ffmpeg)
+       ("imagemagick" ,imagemagick)
+       ("jsoncpp" ,jsoncpp)
+       ("libopenshot-audio" ,libopenshot-audio)
+       ("qt" ,qt)       ;widgets, core, gui, multimedia, and multimediawidgets
+       ("zeromq" ,zeromq)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append "-DPYTHON_MODULE_PATH:PATH=" %output "/lib/python"
+                            ,(version-major+minor (package-version python))
+                            "/site-packages")
+             "-DUSE_SYSTEM_JSONCPP:BOOL=ON")
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'set-vars
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "LIBOPENSHOT_AUDIO_DIR"
+                     (assoc-ref inputs "libopenshot-audio"))
+             (setenv "ZMQDIR"
+                     (assoc-ref inputs "zeromq"))
+             (setenv "UNITTEST_DIR"
+                     (string-append (assoc-ref inputs "unittest++")
+                                    "/include/UnitTest++"))
+             #t)))))
+    (home-page "https://openshot.org")
+    (synopsis "Video-editing, animation, and playback library")
+    (description "OpenShot Library (libopenshot) is a powerful C++ video
+editing library with a multi-threaded and feature rich video editing
+API.  It includes bindings for Python, Ruby, and other languages.")
+    (license license:lgpl3+)))
+
+(define-public openshot
+  (package
+    (name "openshot")
+    (version "2.4.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/OpenShot/openshot-qt")
+                    (commit (string-append "v" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1qdw1mli4y9qhrnllnkaf6ydgw5vfvdb90chs4i679k0x0jyb9a2"))))
+    (build-system python-build-system)
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("libopenshot" ,libopenshot)
+       ("python" ,python)
+       ("python-pyqt" ,python-pyqt)
+       ("python-pyzmq" ,python-pyzmq)
+       ("python-requests" ,python-requests)
+       ("qtsvg" ,qtsvg)))
+    (arguments
+     `(#:tests? #f                      ;no tests
+       #:phases (modify-phases %standard-phases
+                  (delete 'build)       ;install phase does all the work
+                  (add-before 'install 'set-tmp-home
+                    (lambda _
+                      ;; src/classes/info.py "needs" to create several
+                      ;; directories in $HOME when loaded during build
+                      (setenv "HOME" "/tmp")
+                      #t))
+                  (add-after 'install 'wrap-program
+                    (lambda* (#:key inputs outputs #:allow-other-keys)
+                      (wrap-program (string-append (assoc-ref outputs "out")
+                                                   "/bin/openshot-qt")
+                        `("QT_PLUGIN_PATH" prefix
+                          ,(list (string-append (assoc-ref inputs "qtsvg")
+                                                "/lib/qt5/plugins/")))))))))
+    (home-page "https://openshot.org")
+    (synopsis "Video editor")
+    (description "OpenShot takes your videos, photos, and music files and
+helps you create the film you have always dreamed of.  Easily add sub-titles,
+transitions, and effects and then export your film to many common formats.")
+    (license license:gpl3+)))
+
+(define-public dav1d
+  (package
+    (name "dav1d")
+    (version "0.1.0")
+    (source
+      (origin
+        (method url-fetch)
+        (uri (string-append "https://downloads.videolan.org/pub/videolan/"
+                            "dav1d/" version "/dav1d-" version ".tar.xz"))
+        (sha256
+         (base32
+          "0dw0liday8cbyrirhm6bgzhxg4cdy66nspfkdlq338gdsfqcvrsc"))))
+    (build-system meson-build-system)
+    (native-inputs `(("nasm" ,nasm)))
+    (home-page "https://code.videolan.org/videolan/dav1d")
+    (synopsis "AV1 decoder")
+    (description "dav1d is a new AV1 cross-platform decoder, and focused on
+speed and correctness.")
+    (license license:bsd-2)))
+
+(define-public wlstream
+  (let ((commit "182076a94562b128c3a97ecc53cc68905ea86838")
+        (revision "1"))
+    (package
+      (name "wlstream")
+      (version (git-version "0.0" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/atomnuker/wlstream.git")
+               (commit commit)))
+         (file-name (git-file-name name version))
+         (sha256
+          (base32
+           "01qbcgfl3g9kfwn1jf1z9pdj3bvf5lmg71d1vwkcllc2az24bjqp"))))
+      (build-system meson-build-system)
+      (native-inputs `(("libdrm" ,libdrm)
+                       ("pkg-config" ,pkg-config)))
+      (inputs `(("ffmpeg" ,ffmpeg)
+                ("pulseaudio" ,pulseaudio)
+                ("wayland" ,wayland)
+                ("wayland-protocols" ,wayland-protocols)))
+      (home-page "https://github.com/atomnuker/wlstream")
+      (synopsis "Screen capture tool for Wayland sessions")
+      (description "Wlstream is a screen capture tool for recording audio and
+video from a Wayland session.")
+      (license license:lgpl2.1+))))