gnu: r-jsonlite: Use HTTPS home page.
[jackhill/guix/guix.git] / gnu / packages / video.scm
CommitLineData
39efcc9b 1;;; GNU Guix --- Functional package management for GNU
71ee51a0 2;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
945d985a 3;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
76277052 4;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
cda163cd 5;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
954b4c73 6;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
12f92e38 7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
d7764d42 8;;; Copyright © 2015, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
28cbf65c 9;;; Copyright © 2015, 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
2b841707 10;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
3c8ba11a 11;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
ed6ba9cc 12;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
4df07622 13;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
47956fa0 14;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
adff7395 15;;; Copyright © 2016, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
590abe01 16;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
72fa6667 17;;; Copyright © 2017 Feng Shu <tumashu@163.com>
1aab0332 18;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
794223bc 19;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
b5b20bda 20;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
e0c40707 21;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
eb88e2c1 22;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
2973ebf5 23;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
394207c1 24;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
e21f3473 25;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
c0fe2e1f 26;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
97115892 27;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz>
a6f9f18c 28;;; Copyright © 2018, 2019 Leo Famulari <leo@famulari.name>
dcfa0acd 29;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
0c85d2c6 30;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
18e56ad7 31;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
e7cdd311
MM
32;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
33;;; Copyright © 2018 Gábor Boskovit <boskovits@gmail.com>
548642db 34;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
04b6e9c5 35;;; Copyright © 2019 Timo Eisenmann <eisenmann@fn.de>
a7afa454 36;;; Copyright © 2019 Arne Babenhauserheide <arne_bab@web.de>
b9d8aa09 37;;; Copyright © 2019 Riku Viitanen <riku.viitanen@protonmail.com>
67f9f578 38;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
567a1453 39;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
39efcc9b
AE
40;;;
41;;; This file is part of GNU Guix.
42;;;
43;;; GNU Guix is free software; you can redistribute it and/or modify it
44;;; under the terms of the GNU General Public License as published by
45;;; the Free Software Foundation; either version 3 of the License, or (at
46;;; your option) any later version.
47;;;
48;;; GNU Guix is distributed in the hope that it will be useful, but
49;;; WITHOUT ANY WARRANTY; without even the implied warranty of
50;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
51;;; GNU General Public License for more details.
52;;;
53;;; You should have received a copy of the GNU General Public License
54;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
55
56(define-module (gnu packages video)
fe138965 57 #:use-module (ice-9 match)
08858812 58 #:use-module (srfi srfi-1)
2b94c14c 59 #:use-module (srfi srfi-26)
ae0bdd81 60 #:use-module ((guix licenses) #:prefix license:)
e930c2a3 61 #:use-module (guix utils)
39efcc9b
AE
62 #:use-module (guix packages)
63 #:use-module (guix download)
38829eac 64 #:use-module (guix git-download)
d8841cc5 65 #:use-module (guix svn-download)
44726031 66 #:use-module (guix build-system cmake)
39efcc9b 67 #:use-module (guix build-system gnu)
0e74bb5b 68 #:use-module (guix build-system glib-or-gtk)
635f981b 69 #:use-module (guix build-system meson)
6f45e45d 70 #:use-module (guix build-system perl)
615215a5 71 #:use-module (guix build-system python)
1c1178cd 72 #:use-module (guix build-system waf)
f27f264e 73 #:use-module (guix build-system trivial)
3b02429c 74 #:use-module (gnu packages)
39efcc9b 75 #:use-module (gnu packages algebra)
4fbcfc14 76 #:use-module (gnu packages assembly)
72bfebf5 77 #:use-module (gnu packages audio)
f1044010 78 #:use-module (gnu packages autotools)
d5a748e8 79 #:use-module (gnu packages avahi)
76277052 80 #:use-module (gnu packages backup)
38829eac 81 #:use-module (gnu packages base)
8dd6fc51 82 #:use-module (gnu packages bison)
2973ebf5 83 #:use-module (gnu packages boost)
d5a748e8 84 #:use-module (gnu packages cdrom)
2973ebf5 85 #:use-module (gnu packages check)
fe047e13 86 #:use-module (gnu packages cmake)
39efcc9b 87 #:use-module (gnu packages compression)
e0c40707 88 #:use-module (gnu packages cpp)
f464016d 89 #:use-module (gnu packages curl)
3a44c7bb 90 #:use-module (gnu packages dejagnu)
78d112c2 91 #:use-module (gnu packages dns)
2973ebf5 92 #:use-module (gnu packages docbook)
e37bdc0f 93 #:use-module (gnu packages documentation)
f22e0e26 94 #:use-module (gnu packages elf)
2973ebf5 95 #:use-module (gnu packages file)
8dd6fc51 96 #:use-module (gnu packages flex)
2afb7939 97 #:use-module (gnu packages fonts)
39efcc9b 98 #:use-module (gnu packages fontutils)
c161c22a 99 #:use-module (gnu packages freedesktop)
44726031
AE
100 #:use-module (gnu packages fribidi)
101 #:use-module (gnu packages gettext)
38829eac 102 #:use-module (gnu packages ghostscript)
d5a748e8
AE
103 #:use-module (gnu packages gl)
104 #:use-module (gnu packages glib)
2cd85cf9 105 #:use-module (gnu packages guile)
fe047e13 106 #:use-module (gnu packages gnome)
c3069cd1 107 #:use-module (gnu packages gnunet)
d5a748e8 108 #:use-module (gnu packages gnupg)
fe047e13 109 #:use-module (gnu packages gstreamer)
44726031 110 #:use-module (gnu packages gtk)
e55354b8 111 #:use-module (gnu packages image)
b5b20bda 112 #:use-module (gnu packages imagemagick)
f48feaa2 113 #:use-module (gnu packages iso-codes)
76277052 114 #:use-module (gnu packages libidn)
c812f460 115 #:use-module (gnu packages libreoffice)
d5a748e8
AE
116 #:use-module (gnu packages linux)
117 #:use-module (gnu packages lua)
fe047e13 118 #:use-module (gnu packages m4)
3a44c7bb 119 #:use-module (gnu packages man)
f3395a7b 120 #:use-module (gnu packages markup)
d5a748e8 121 #:use-module (gnu packages mp3)
4d94b93c 122 #:use-module (gnu packages ncurses)
579a9cde 123 #:use-module (gnu packages networking)
6f6c8b65 124 #:use-module (gnu packages ocr)
39efcc9b
AE
125 #:use-module (gnu packages perl)
126 #:use-module (gnu packages pkg-config)
a7d94b54 127 #:use-module (gnu packages popt)
f3395a7b 128 #:use-module (gnu packages pretty-print)
fc2982f7 129 #:use-module (gnu packages protobuf)
d5a748e8 130 #:use-module (gnu packages pulseaudio)
39efcc9b 131 #:use-module (gnu packages python)
f48feaa2 132 #:use-module (gnu packages python-crypto)
589e3f4e 133 #:use-module (gnu packages python-web)
44d10b1f 134 #:use-module (gnu packages python-xyz)
d5a748e8 135 #:use-module (gnu packages qt)
76277052 136 #:use-module (gnu packages rdesktop)
2973ebf5 137 #:use-module (gnu packages ruby)
76277052 138 #:use-module (gnu packages samba)
d5a748e8 139 #:use-module (gnu packages sdl)
2973ebf5
GG
140 #:use-module (gnu packages serialization)
141 #:use-module (gnu packages shells)
cd0322a3 142 #:use-module (gnu packages sqlite)
d5a748e8 143 #:use-module (gnu packages ssh)
579a9cde 144 #:use-module (gnu packages swig)
6b2c6be0 145 #:use-module (gnu packages texinfo)
c426e61e 146 #:use-module (gnu packages textutils)
a7fd7b68 147 #:use-module (gnu packages tls)
1a291593 148 #:use-module (gnu packages time)
76277052 149 #:use-module (gnu packages upnp)
d5a748e8 150 #:use-module (gnu packages version-control)
870541d6 151 #:use-module (gnu packages vulkan)
bb470bd3 152 #:use-module (gnu packages web)
fe047e13 153 #:use-module (gnu packages webkit)
794223bc 154 #:use-module (gnu packages wxwidgets)
ee3b55ea 155 #:use-module (gnu packages xdisorg)
54ff0b7d 156 #:use-module (gnu packages xiph)
d5a748e8 157 #:use-module (gnu packages xml)
4fbcfc14 158 #:use-module (gnu packages xorg))
39efcc9b 159
6b2c6be0
SB
160(define-public aalib
161 (package
162 (name "aalib")
163 (version "1.4rc5")
164 (source (origin
165 (method url-fetch)
de67e922
LF
166 (uri (string-append "mirror://sourceforge/aa-project/aa-lib/"
167 version "/" name "-" version ".tar.gz"))
6b2c6be0
SB
168 (sha256
169 (base32
170 "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv"))))
171 (build-system gnu-build-system)
172 (native-inputs
173 `(("makeinfo" ,texinfo)))
174 (inputs
175 `(("ncurses" ,ncurses)))
176 (arguments
c437922a 177 `(#:phases
6b2c6be0 178 (modify-phases %standard-phases
3a4de6b2 179 (replace 'configure
014cbde6 180 (lambda* (#:key build inputs outputs #:allow-other-keys)
6b2c6be0
SB
181 ;; This old `configure' script doesn't support
182 ;; variables passed as arguments.
183 (let ((out (assoc-ref outputs "out"))
184 (ncurses (assoc-ref inputs "ncurses")))
185 (setenv "CONFIG_SHELL" (which "bash"))
3595e83d
MW
186 (invoke "./configure"
187 (string-append "--prefix=" out)
188 (string-append "--build=" build)
189 ;; The ancient config.guess is unable to
190 ;; guess the host triplet on mips64el.
191 ,@(if (string=? "mips64el-linux"
192 (%current-system))
193 '("--host=mips64el-unknown-linux-gnu")
194 '())
195 ;; The same is also true with aarch64.
196 ,@(if (string=? "aarch64-linux"
197 (%current-system))
198 '("--host=aarch64-unknown-linux-gnu")
199 '())
200 (string-append "--with-ncurses="
201 ncurses))))))))
6b2c6be0
SB
202 (home-page "http://aa-project.sourceforge.net/aalib/")
203 (synopsis "ASCII-art library")
204 (description
205 "AA-lib is a low level gfx library which does not require graphics device.
206In fact, there is no graphical output possible. AA-lib replaces those
207old-fashioned output methods with powerful ascii-art renderer.")
208 (license license:lgpl2.0+)))
209
b7f5fa82
TGR
210(define-public celluloid
211 (package
212 (name "celluloid")
763925b2 213 (version "0.18")
b7f5fa82
TGR
214 (source
215 (origin
216 (method url-fetch)
217 (uri (string-append "https://github.com/celluloid-player/celluloid/releases"
218 "/download/v" version "/celluloid-" version ".tar.xz"))
219 (sha256
763925b2 220 (base32 "0gmscx9zb8ppfjlnmgbcmhknhawa05sdhxi7dv5wjapjq0glq481"))))
b7f5fa82
TGR
221 (build-system glib-or-gtk-build-system)
222 (native-inputs
223 `(("intltool" ,intltool)
224 ("pkg-config" ,pkg-config)))
225 (inputs
226 `(("gtk+" ,gtk+)
227 ("libepoxy" ,libepoxy)
228 ("mpv" ,mpv)))
229 (home-page "https://github.com/celluloid-player/celluloid")
230 (synopsis "GTK+ frontend for the mpv media player")
231 (description "Celluloid is a simple GTK+ frontend for the mpv media player.
232It interacts with mpv via the client API exported by libmpv, allowing access to
233mpv's powerful playback capabilities.")
234 (license license:gpl3+)))
235
cda163cd
TUBK
236(define-public liba52
237 (package
238 (name "liba52")
239 (version "0.7.4")
240 (source (origin
241 (method url-fetch)
8c056935
TUBK
242 (uri (string-append
243 ;; A mirror://sourceforge URI doesn't work, presumably
244 ;; because the SourceForge project is misconfigured.
245 "http://liba52.sourceforge.net/files/a52dec-" version
246 ".tar.gz"))
cda163cd
TUBK
247 (sha256
248 (base32
23da88f6 249 "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"))
fc1adab1
AK
250 (patches (search-patches "liba52-enable-pic.patch"
251 "liba52-set-soname.patch"
252 "liba52-use-mtune-not-mcpu.patch"
253 "liba52-link-with-libm.patch"))))
cda163cd 254 (build-system gnu-build-system)
23da88f6
MW
255 ;; XXX We need to run ./bootstrap because of the build system fixes above.
256 (native-inputs
257 `(("autoconf" ,autoconf)
258 ("automake" ,automake)
259 ("libtool" ,libtool)))
412a2422 260 (arguments `(#:configure-flags '("--enable-shared")
23da88f6
MW
261 #:phases
262 (modify-phases %standard-phases
263 ;; XXX We need to run ./bootstrap because of the build
264 ;; system fixes above.
189be331 265 (replace 'bootstrap
78666a68 266 (lambda _ (invoke "sh" "bootstrap"))))))
cda163cd
TUBK
267 (home-page "http://liba52.sourceforge.net/")
268 (synopsis "ATSC A/52 stream decoder")
269 (description "liba52 is a library for decoding ATSC A/52 streams. The
270A/52 standard is used in a variety of applications, including digital
271television and DVD. It is also known as AC-3.")
ae0bdd81 272 (license license:gpl2+)))
cda163cd 273
a7afa454
AB
274(define-public libaom
275 ;; The 1.0.0-errata1 release installs a broken pkg-config .pc file. This
276 ;; is fixed in libaom commit 0ddc150, but we use an even later commit.
277 (let ((commit "22b150bf040608028a56d8bf39e72f771383d836")
278 (revision "0"))
279 (package
280 (name "libaom")
281 (version (git-version "1.0.0-errata1" revision commit))
282 (source (origin
283 (method git-fetch)
284 (uri (git-reference
285 (url "https://aomedia.googlesource.com/aom/")
286 (commit commit)))
287 (file-name (git-file-name name version))
288 (sha256
289 (base32
290 "1pdd5h3n42607n6qmggz4yv8izhjr2kl6knb3kh7gh4v0vy47h1r"))))
291 (build-system cmake-build-system)
292 (native-inputs
293 `(("perl" ,perl)
294 ("pkg-config" ,pkg-config)
295 ("python" ,python))) ; to detect the version
296 (arguments
297 `(#:tests? #f ;no check target
298 #:configure-flags
299 ;; build dynamic library
300 (list "-DBUILD_SHARED_LIBS=YES"
301 "-DENABLE_PIC=TRUE"
302 "-DAOM_TARGET_CPU=generic"
303 (string-append "-DCMAKE_INSTALL_PREFIX="
304 (assoc-ref %outputs "out")))))
305 (home-page "https://aomedia.googlesource.com/aom/")
306 (synopsis "AV1 video codec")
307 (description "Libaom is the reference implementation of AV1. It includes
308a shared library and encoder and decoder command-line executables.")
309 (license license:bsd-2))))
310
e0884109
MW
311(define-public libmpeg2
312 (package
313 (name "libmpeg2")
314 (version "0.5.1")
315 (source (origin
316 (method url-fetch)
317 ;; A mirror://sourceforge URI doesn't work, presumably
318 ;; because the SourceForge project is misconfigured.
319 (uri (string-append "http://libmpeg2.sourceforge.net/files/"
320 name "-" version ".tar.gz"))
c50b07dd
MB
321 (patches (search-patches "libmpeg2-arm-private-symbols.patch"
322 "libmpeg2-global-symbol-test.patch"))
e0884109
MW
323 (sha256
324 (base32
325 "1m3i322n2fwgrvbs1yck7g5md1dbg22bhq5xdqmjpz5m7j4jxqny"))))
326 (inputs
327 `(("libx11" ,libx11)
328 ("libxext" ,libxext)
329 ("libxv" ,libxv)
330 ("libsm" ,libsm)
331 ("libice" ,libice)
332 ("sdl" ,sdl)))
333 (build-system gnu-build-system)
334 (home-page "http://libmpeg2.sourceforge.net/")
335 (synopsis "MPEG1 and MPEG2 video decoder library")
336 (description
337 "libmpeg2 is a library which can decode MPEG1 and MPEG2 video streams.")
338 (license license:gpl2+)))
339
82712597 340(define-public libx264
c0fe2e1f
MB
341 ;; There are no tags in the repository, so we take the version number from
342 ;; the X264_BUILD variable defined in x264.h.
343 (let ((version "159")
344 (commit "1771b556ee45207f8711744ccbd5d42a3949b14c")
345 (revision "0"))
346 (package
347 (name "libx264")
348 (version (git-version version revision commit))
349 (source (origin
350 (method git-fetch)
351 (uri (git-reference
352 (url "https://code.videolan.org/videolan/x264.git")
353 (commit commit)))
354 (file-name (git-file-name name version))
355 (sha256
356 (base32
357 "0kmi78gs5101d4df33il5bmjbns54nvdjsyn44xiw60lwsg11vwz"))))
358 (build-system gnu-build-system)
359 (native-inputs
360 `(("pkg-config" ,pkg-config)
361 ("nasm" ,nasm)))
362 ;; TODO: Add gpac input
363 (arguments
364 `(#:tests? #f ;no check target
365 #:configure-flags '("--enable-shared"
366 ;; Don't build the command-line program. If we
367 ;; want it later, we should do so in a different
368 ;; package to avoid a circular dependency (the x264
369 ;; program depends on ffmpeg and ffmpeg depends on
370 ;; libx264).
371 "--disable-cli"
cb50d0c2 372
c0fe2e1f
MB
373 ;; On MIPS, we must pass "--disable-asm" or else
374 ;; configure fails after printing: "You specified a
375 ;; pre-MSA CPU in your CFLAGS. If you really want
376 ;; to run on such a CPU, configure with
377 ;; --disable-asm."
378 ,@(if (string-prefix? "mips"
379 (or (%current-target-system)
380 (%current-system)))
381 '("--disable-asm")
382 '()))))
383 (home-page "https://www.videolan.org/developers/x264.html")
384 (synopsis "H.264 video coding library")
385 (description "libx264 is an advanced encoding library for creating
82712597 386H.264 (MPEG-4 AVC) video streams.")
c0fe2e1f
MB
387 (license (list license:gpl2+ ;most files
388 license:isc ;common/x86/x86inc.asm
389 license:lgpl2.1+ ;extras/getopt.c
390 license:bsd-3 ;extras/inttypes.h
391 (license:non-copyleft ;extras/cl*.h
392 "file://extras/cl.h"
393 "See extras/cl.h in the distribution."))))))
82712597 394
2973ebf5
GG
395(define-public mkvtoolnix
396 (package
397 (name "mkvtoolnix")
296b3de6 398 (version "37.0.0")
2973ebf5
GG
399 (source
400 (origin
401 (method url-fetch)
402 (uri (string-append "https://mkvtoolnix.download/sources/"
908d8bed 403 "mkvtoolnix-" version ".tar.xz"))
2973ebf5 404 (sha256
296b3de6 405 (base32 "0r4d9318ymb9a0mkc0shi9p4kjy3m70s49v4f8dmjhvj63silhix"))
2973ebf5 406 (modules '((guix build utils)))
6cbee49d
MW
407 (snippet '(begin
408 ;; Delete bundled libraries.
409 (for-each delete-file-recursively
f3395a7b
EF
410 '("lib/fmt"
411 "lib/libebml"
6cbee49d
MW
412 "lib/libmatroska"
413 "lib/nlohmann-json"
414 "lib/pugixml"
415 "lib/utf8-cpp"))
416 #t))))
2973ebf5 417 (build-system gnu-build-system)
99d5e5df 418 (outputs '("out" "gui")) ; "mkvtoolnix-gui" brings the closure size from ~300 MB to 1.5+ GB.
2973ebf5
GG
419 (inputs
420 `(("boost" ,boost)
421 ("bzip2" ,bzip2)
f3395a7b 422 ("cmark" ,cmark)
2973ebf5 423 ("libebml" ,libebml)
2973ebf5 424 ("file" ,file)
f3395a7b
EF
425 ("flac" ,flac)
426 ("fmt" ,fmt)
2973ebf5
GG
427 ("libmatroska" ,libmatroska)
428 ("libogg" ,libogg)
429 ("libvorbis" ,libvorbis)
430 ("lzo" ,lzo)
431 ("pugixml" ,pugixml)
662ff659
EF
432 ("qtbase" ,qtbase)
433 ("qtmultimedia" ,qtmultimedia)
2973ebf5
GG
434 ("utfcpp" ,utfcpp)
435 ("zlib" ,zlib)))
436 (native-inputs
437 `(("docbook-xsl" ,docbook-xsl)
438 ("gettext" ,gettext-minimal)
439 ("googletest" ,googletest)
440 ("libxslt" ,libxslt)
936aa052 441 ("json-modern-cxx" ,json-modern-cxx)
2973ebf5
GG
442 ("perl" ,perl)
443 ("pkg-config" ,pkg-config)
444 ("po4a" ,po4a)
662ff659 445 ("qttools" ,qttools)
2973ebf5
GG
446 ("ruby" ,ruby)))
447 (arguments
448 `(#:configure-flags
449 (list (string-append "--with-boost="
450 (assoc-ref %build-inputs "boost"))
451 (string-append "--with-docbook-xsl-root="
452 (assoc-ref %build-inputs "docbook-xsl")
453 "/xml/xsl/docbook-xsl-"
454 ,(package-version docbook-xsl))
e7ed996c
EF
455 "--enable-update-check=no"
456 "--enable-precompiled-headers=no")
2973ebf5
GG
457 #:phases
458 (modify-phases %standard-phases
07272bd8
TGR
459 (add-after 'unpack 'patch-relative-file-names
460 (lambda* (#:key outputs #:allow-other-keys)
461 (let ((out (assoc-ref outputs "out")))
462 (substitute* "src/mkvtoolnix-gui/util/settings.cpp"
463 (("mkvmerge" match)
464 (string-append out "/bin/" match)))
465 #t)))
2973ebf5 466 (add-before 'configure 'add-googletest
e7ed996c 467 (lambda* (#:key inputs #:allow-other-keys)
2973ebf5 468 (symlink
e7ed996c
EF
469 (string-append (assoc-ref inputs "googletest")
470 "/include/gtest") "lib/gtest")
2973ebf5
GG
471 #t))
472 (replace 'build
473 (lambda _
474 (let ((-j (list "-j" (number->string (parallel-job-count)))))
6c4d1413 475 (apply invoke "rake" -j))))
2973ebf5
GG
476 (replace 'check
477 (lambda _
6c4d1413 478 (invoke "rake" "tests/unit")))
2973ebf5
GG
479 (replace 'install
480 (lambda _
99d5e5df
PN
481 (invoke "rake" "install")))
482 (add-after 'install 'post-install
483 (lambda* (#:key outputs #:allow-other-keys)
484 ;; Move the Qt interface to "gui".
b55db494
PN
485 (let* ((out (assoc-ref outputs "out"))
486 (gui (assoc-ref outputs "gui"))
487 (strip-store-dir (lambda (path)
488 (substring path (string-prefix-length out path)))))
99d5e5df
PN
489 (for-each
490 (lambda (file)
491 (mkdir-p (string-append gui (dirname file)))
492 (rename-file (string-append out file)
493 (string-append gui file)))
b55db494
PN
494 (append '("/bin/mkvtoolnix-gui"
495 "/share/applications/org.bunkus.mkvtoolnix-gui.desktop"
496 "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml"
497 "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml")
498 (map strip-store-dir (find-files out "\\.ogg$"))
499 (map strip-store-dir (find-files out "mkvtoolnix-gui\\.png$"))
500 (map strip-store-dir (find-files out "mkvtoolnix-gui\\.1"))))
501 (for-each
502 (lambda (file)
503 (delete-file-recursively (string-append out file)))
504 '("/share/applications"
505 "/share/metainfo"
506 "/share/mime"
507 "/share/mkvtoolnix")))
99d5e5df 508 #t)))))
2973ebf5
GG
509 (home-page "https://mkvtoolnix.download")
510 (synopsis "Tools to create, alter and inspect Matroska files")
511 (description
512 "MKVToolNix provides tools for getting information about Matroska files
df14dc48
TGR
513(@command{mkvinfo}), extracting tracks/data from Matroska files
514(@command{mkvextract}), and creating Matroska files from other media files
515(@command{mkvmerge}).")
2973ebf5
GG
516 (license license:gpl2)))
517
7bc7ffc2
EF
518(define-public x265
519 (package
520 (name "x265")
9a3be6fc 521 (version "3.2.1")
020d4d2c 522 (outputs '("out" "static"))
7bc7ffc2
EF
523 (source
524 (origin
525 (method url-fetch)
621ce95c
MB
526 (uri (list (string-append "https://bitbucket.org/multicoreware/x265"
527 "/downloads/x265_" version ".tar.gz")
528 (string-append "https://download.videolan.org/videolan/x265/"
529 "x265_" version ".tar.gz")))
7bc7ffc2 530 (sha256
9a3be6fc 531 (base32 "1k5vijsy6cgcghw69f5275xfmbjjx7js0nlbgxbd6krnjb7sv6zv"))
23c25982 532 (patches (search-patches "x265-arm-flags.patch"))
7bc7ffc2 533 (modules '((guix build utils)))
6cbee49d
MW
534 (snippet '(begin
535 (delete-file-recursively "source/compat/getopt")
536 #t))))
7bc7ffc2
EF
537 (build-system cmake-build-system)
538 (arguments
539 `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
bd606fb2
EF
540 #:configure-flags
541 ;; Ensure position independent code for everyone.
542 (list "-DENABLE_PIC=TRUE"
8e59c5fe
EF
543 ,@(if (string-prefix? "armhf" (or (%current-system)
544 (%current-target-system)))
545 '("-DENABLE_ASSEMBLY=OFF")
546 '())
bd606fb2
EF
547 (string-append "-DCMAKE_INSTALL_PREFIX="
548 (assoc-ref %outputs "out")))
7bc7ffc2
EF
549 #:phases
550 (modify-phases %standard-phases
bd606fb2 551 (add-after 'unpack 'prepare-build
7bc7ffc2
EF
552 (lambda _
553 (delete-file-recursively "build")
554 (chdir "source")
8e59c5fe
EF
555 ;; recognize armv8 in 32-bit mode as ARM
556 (substitute* "CMakeLists.txt"
557 (("armv6l") "armv8l"))
bd606fb2
EF
558 #t))
559 (add-before 'configure 'build-12-bit
560 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
561 (mkdir "../build-12bit")
562 (with-directory-excursion "../build-12bit"
563 (apply invoke
564 "cmake" "../source"
565 "-DHIGH_BIT_DEPTH=ON"
566 "-DEXPORT_C_API=OFF"
567 "-DENABLE_CLI=OFF"
568 "-DMAIN12=ON"
569 configure-flags)
570 (substitute* (cons "cmake_install.cmake"
571 (append
572 (find-files "CMakeFiles/x265-shared.dir" ".")
573 (find-files "CMakeFiles/x265-static.dir" ".")))
574 (("libx265") "libx265_main12"))
575 (invoke "make"))))
576 (add-before 'configure 'build-10-bit
577 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
578 (mkdir "../build-10bit")
579 (with-directory-excursion "../build-10bit"
580 (apply invoke
581 "cmake" "../source"
582 "-DHIGH_BIT_DEPTH=ON"
583 "-DEXPORT_C_API=OFF"
584 "-DENABLE_CLI=OFF"
585 configure-flags)
586 (substitute* (cons "cmake_install.cmake"
587 (append
588 (find-files "CMakeFiles/x265-shared.dir" ".")
589 (find-files "CMakeFiles/x265-static.dir" ".")))
590 (("libx265") "libx265_main10"))
591 (invoke "make"))))
592 (add-after 'install 'install-more-libs
593 (lambda _
594 (with-directory-excursion "../build-12bit"
595 (invoke "make" "install"))
596 (with-directory-excursion "../build-10bit"
020d4d2c
EF
597 (invoke "make" "install"))))
598 (add-before 'strip 'move-static-libs
599 (lambda* (#:key outputs #:allow-other-keys)
600 (let ((out (assoc-ref outputs "out"))
601 (static (assoc-ref outputs "static")))
602 (mkdir-p (string-append static "/lib"))
603 (with-directory-excursion
604 (string-append out "/lib")
605 (for-each
606 (lambda (file)
607 (rename-file file
608 (string-append static "/lib/" file)))
609 (find-files "." "\\.a$"))))
610 #t)))))
7bc7ffc2
EF
611 (home-page "http://x265.org/")
612 (synopsis "Library for encoding h.265/HEVC video streams")
613 (description "x265 is a H.265 / HEVC video encoder application library,
614designed to encode video or images into an H.265 / HEVC encoded bitstream.")
615 (license license:gpl2+)))
616
c426e61e
TUBK
617(define-public libass
618 (package
619 (name "libass")
449ad88b 620 (version "0.14.0")
c426e61e
TUBK
621 (source (origin
622 (method url-fetch)
623 (uri (string-append
624 "https://github.com/libass/libass/releases/download/"
625 version "/libass-" version ".tar.xz"))
626 (sha256
627 (base32
449ad88b 628 "18iqznl4mabhj9ywfsz4kwvbsplcv1jjxq50nxssvbj8my1267w8"))))
c426e61e
TUBK
629 (build-system gnu-build-system)
630 (native-inputs
631 `(("pkg-config" ,pkg-config)
449ad88b 632 ("nasm" ,nasm)))
c426e61e
TUBK
633 (propagated-inputs
634 `(("freetype" ,freetype)
635 ("fribidi" ,fribidi)
636 ("fontconfig" ,fontconfig)
637 ("harfbuzz" ,harfbuzz)
638 ("enca" ,enca)))
639 (home-page "https://github.com/libass/libass")
640 (synopsis "Subtitle rendering library for the ASS/SSA format")
641 (description "libass is a subtitle rendering library for the
642ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
ae0bdd81 643 (license license:isc)))
c426e61e 644
4d94b93c
TUBK
645(define-public libcaca
646 (package
647 (name "libcaca")
648 (version "0.99.beta19")
649 (source (origin
650 (method url-fetch)
651 (uri (string-append "http://caca.zoy.org/files/libcaca/libcaca-"
652 version ".tar.gz"))
653 (sha256
654 (base32
655 "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj"))))
656 (build-system gnu-build-system)
657 (native-inputs `(("pkg-config" ,pkg-config)))
658 (inputs
659 `(("freeglut" ,freeglut)
660 ("ftgl" ,ftgl)
43d51239 661 ("imlib2" ,imlib2)
4d94b93c
TUBK
662 ("libx11" ,libx11)
663 ("mesa" ,mesa)
664 ("ncurses" ,ncurses)
665 ("zlib" ,zlib)))
666 (home-page "http://caca.zoy.org/wiki/libcaca")
667 (synopsis "Colour ASCII-art library")
668 (description "libcaca is a graphics library that outputs text instead of
669pixels, so that it can work on older video cards or text terminals. It
670supports Unicode, 2048 colors, dithering of color images, and advanced text
671canvas operations.")
ae0bdd81 672 (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
4d94b93c 673
3bfb78dc
TUBK
674(define-public libdca
675 (package
676 (name "libdca")
649b334b 677 (version "0.0.6")
3bfb78dc
TUBK
678 (source (origin
679 (method url-fetch)
680 (uri (string-append
b8a31908 681 "https://download.videolan.org/pub/videolan/libdca/"
3bfb78dc
TUBK
682 version "/libdca-" version ".tar.bz2"))
683 (sha256
684 (base32
649b334b 685 "0h0zvcn97i9kyljdpifzi8in9xnw31fx3b3ggj96p8h0l2d8mycq"))))
3bfb78dc 686 (build-system gnu-build-system)
b8a31908 687 (home-page "https://www.videolan.org/developers/libdca.html")
3bfb78dc
TUBK
688 (synopsis "DTS Coherent Acoustics decoder")
689 (description "libdca is a library for decoding DTS Coherent Acoustics
690streams.")
ae0bdd81 691 (license license:gpl2+)))
3bfb78dc 692
99d4c455
TUBK
693(define-public libdv
694 (package
695 (name "libdv")
696 (version "1.0.0")
697 (source (origin
698 (method url-fetch)
699 (uri (string-append
d2e1a0ac
TGR
700 "mirror://sourceforge/libdv/libdv/"
701 version "/libdv-" version ".tar.gz"))
99d4c455
TUBK
702 (sha256
703 (base32
704 "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"))))
705 (build-system gnu-build-system)
706 (native-inputs `(("pkg-config" ,pkg-config)))
707 (inputs `(("libxv" ,libxv)))
708 (home-page "http://libdv.sourceforge.net/")
709 (synopsis "DV video (IEC 61834 and SMPTE 314M) codec")
710 (description "The Quasar DV codec (libdv) is a software codec for DV
711video, the encoding format used by most digital camcorders, typically those
712that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface. Libdv was
713developed according to the official standards for DV video: IEC 61834 and
714SMPTE 314M.")
ae0bdd81 715 (license license:lgpl2.1+)))
99d4c455 716
15f1d02a
GG
717(define-public libmatroska
718 (package
719 (name "libmatroska")
ad8e5a53 720 (version "1.5.2")
15f1d02a
GG
721 (source
722 (origin
723 (method url-fetch)
724 (uri (string-append "https://dl.matroska.org/downloads/"
309f3408 725 "libmatroska/libmatroska-" version ".tar.xz"))
15f1d02a 726 (sha256
ad8e5a53 727 (base32 "0qn9lfs0877wbv581yxw2gywxywxpvwslc5q07q4f7bqpyzxxiha"))))
23e24ff6 728 (build-system cmake-build-system)
15f1d02a
GG
729 (inputs
730 `(("libebml" ,libebml)))
23e24ff6
TGR
731 (arguments
732 `(#:configure-flags
733 (list "-DBUILD_SHARED_LIBS=YES")
734 #:tests? #f)) ; no test suite
15f1d02a 735 (home-page "https://www.matroska.org")
cb778117 736 (synopsis "C++ library to parse Matroska files (.mkv and .mka)")
15f1d02a
GG
737 (description
738 "Matroska aims to become the standard of multimedia container formats.
cb778117 739It is based on @dfn{EBML} (Extensible Binary Meta Language), a binary derivative
15f1d02a
GG
740of XML. EBML enables the Matroska Development Team to gain significant
741advantages in terms of future format extensibility, without breaking file
742support in old parsers.
743libebml is a C++ library to read and write EBML files.")
744 (license license:lgpl2.1)))
745
ee3b55ea
TUBK
746(define-public libva
747 (package
748 (name "libva")
fe19ab3f 749 (version "2.6.1")
ee3b55ea
TUBK
750 (source
751 (origin
752 (method url-fetch)
7035d2dd
MB
753 (uri (list
754 ;; Newer releases are only available on GitHub.
755 (string-append "https://github.com/01org/libva/releases/download/"
756 version "/libva-" version ".tar.bz2")
757 ;; Keep the old URL around for compatibility.
758 (string-append "https://www.freedesktop.org/software/vaapi/releases/"
759 "libva/libva-" version "/libva-" version ".tar.bz2")))
ee3b55ea 760 (sha256
fe19ab3f 761 (base32 "19df3r02k1p4cbyvifkdjyc8q7hi23f5b3x3390z52l25mjfnmvc"))))
ee3b55ea
TUBK
762 (build-system gnu-build-system)
763 (native-inputs
764 `(("pkg-config" ,pkg-config)))
765 (inputs
766 `(("libdrm" ,libdrm)
767 ("libx11" ,libx11)
768 ("libxext" ,libxext)
769 ("libxfixes" ,libxfixes)
3ee7b4cc
EF
770 ("mesa" ,mesa)
771 ("wayland" ,wayland)))
372cf039
TUBK
772 (arguments
773 `(#:phases
774 (modify-phases %standard-phases
775 (add-before
776 'build 'fix-dlopen-paths
777 (lambda* (#:key outputs #:allow-other-keys)
778 (let ((out (assoc-ref outputs "out")))
779 (substitute* "va/drm/va_drm_auth_x11.c"
780 (("\"libva-x11\\.so\\.%d\"")
d5c88f16
MW
781 (string-append "\"" out "/lib/libva-x11.so.%d\"")))
782 #t))))
372cf039
TUBK
783 ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be
784 ;; overridden at run-time via LIBVA_DRIVERS_PATH.)
785 #:configure-flags
786 (list (string-append "--with-drivers-path="
787 (assoc-ref %build-inputs "mesa") "/lib/dri"))
788 ;; However, we can't write to mesa's store directory, so override the
789 ;; following make variable to install the dummy driver to libva's
790 ;; $prefix/lib/dri directory.
791 #:make-flags
792 (list (string-append "dummy_drv_video_ladir="
793 (assoc-ref %outputs "out") "/lib/dri"))))
5c1c2254 794 (home-page "https://www.freedesktop.org/wiki/Software/vaapi/")
ee3b55ea
TUBK
795 (synopsis "Video acceleration library")
796 (description "The main motivation for VA-API (Video Acceleration API) is
797to enable hardware accelerated video decode/encode at various
798entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding
799standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
ae0bdd81 800 (license license:expat)))
ee3b55ea 801
3563220e
TGR
802(define-public libva-utils
803 (package
804 (name "libva-utils")
805 (version "2.5.0")
806 (source
807 (origin
808 (method url-fetch)
809 (uri (string-append "https://github.com/intel/libva-utils/releases/download/"
810 version "/libva-utils-" version ".tar.bz2"))
811 (sha256
812 (base32 "05rasyqnsg522zqxak1q8rrm1hys7wwbi41kd0szjq0d27awjf4j"))))
813 (build-system gnu-build-system)
814 (arguments
815 `(#:configure-flags
816 (list "--enable-wayland"
817 "--enable-x11")))
818 (native-inputs
819 `(("pkg-config" ,pkg-config)))
820 (inputs
821 `(("libdrm" ,libdrm)
822 ("libva" ,libva)
823 ("libx11" ,libx11)
824 ("mesa" ,mesa)
825 ("wayland" ,wayland)))
826 (home-page "https://01.org/linuxmedia/vaapi")
827 (synopsis "Collection of testing utilities for VA-API")
828 (description
829 "This is a collection of utilities to query and test the @acronym{VA-API,
830Video Acceleration API} implemented by the libva library.
831
832These tools require a supported graphics chip, driver, and VA-API back end to
833operate properly.")
834 (license license:expat)))
835
39efcc9b
AE
836(define-public ffmpeg
837 (package
838 (name "ffmpeg")
fd4b27e4 839 (version "4.2.2")
39efcc9b
AE
840 (source (origin
841 (method url-fetch)
a1121a7f
EF
842 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
843 version ".tar.xz"))
39efcc9b
AE
844 (sha256
845 (base32
fd4b27e4 846 "176jn1lcdf0gk7sa5l2mv0faqp5dsqdhx1gqcrgymqhfmdal4xfb"))))
39efcc9b
AE
847 (build-system gnu-build-system)
848 (inputs
86445c8e
RH
849 `(("dav1d" ,dav1d)
850 ("fontconfig" ,fontconfig)
39efcc9b 851 ("freetype" ,freetype)
8fd43200 852 ("frei0r-plugins" ,frei0r-plugins)
c8dab7f4 853 ("gnutls" ,gnutls)
e816b348 854 ("opus" ,opus)
71241192 855 ("ladspa" ,ladspa)
d4f12db8 856 ("lame" ,lame)
84eb265e 857 ("libaom" ,libaom)
c426e61e 858 ("libass" ,libass)
5d3609e4 859 ("libbluray" ,libbluray)
4d94b93c 860 ("libcaca" ,libcaca)
cc6c0170 861 ("libcdio-paranoia" ,libcdio-paranoia)
1f61cc10 862 ("libdrm" ,libdrm)
39efcc9b 863 ("libtheora" ,libtheora)
bb3df15e 864 ("libva" ,libva)
f88f0d20 865 ("libvdpau" ,libvdpau)
39efcc9b 866 ("libvorbis" ,libvorbis)
dc55b8b2 867 ("libvpx" ,libvpx)
f88f0d20 868 ("libx11" ,libx11)
549381d6 869 ("libx264" ,libx264)
f88f0d20 870 ("mesa" ,mesa)
71241192 871 ("openal" ,openal)
71241192 872 ("pulseaudio" ,pulseaudio)
85bc5434 873 ("sdl" ,sdl2)
72bfebf5 874 ("soxr" ,soxr)
c4c4cc05 875 ("speex" ,speex)
72bfebf5 876 ("twolame" ,twolame)
6d777ff9 877 ("vidstab" ,vidstab)
d505801a 878 ("x265" ,x265)
67932f86 879 ("xvid" ,xvid)
b3546174 880 ("zlib" ,zlib)))
c4c4cc05
JD
881 (native-inputs
882 `(("bc" ,bc)
39efcc9b
AE
883 ("perl" ,perl)
884 ("pkg-config" ,pkg-config)
824d9dc3 885 ("texinfo" ,texinfo)
39efcc9b
AE
886 ("python" ,python-2) ; scripts use interpreter python2
887 ("speex" ,speex)
c4c4cc05 888 ("yasm" ,yasm)))
39efcc9b 889 (arguments
31f9322e 890 `(#:test-target "fate"
12f92e38
AP
891 #:configure-flags
892 ;; possible additional inputs:
893 ;; --enable-avisynth enable reading of AviSynth script
894 ;; files [no]
12f92e38
AP
895 ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no]
896 ;; --enable-libcelt enable CELT decoding via libcelt [no]
897 ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
898 ;; and libraw1394 [no]
899 ;; --enable-libfaac enable AAC encoding via libfaac [no]
900 ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
901 ;; --enable-libflite enable flite (voice synthesis) support via
902 ;; libflite [no]
903 ;; --enable-libgme enable Game Music Emu via libgme [no]
904 ;; --enable-libgsm enable GSM de/encoding via libgsm [no]
905 ;; --enable-libiec61883 enable iec61883 via libiec61883 [no]
906 ;; --enable-libilbc enable iLBC de/encoding via libilbc [no]
907 ;; --enable-libmodplug enable ModPlug via libmodplug [no]
908 ;; --enable-libnut enable NUT (de)muxing via libnut,
909 ;; native (de)muxer exists [no]
910 ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via
911 ;; libopencore-amrnb [no]
912 ;; --enable-libopencore-amrwb enable AMR-WB decoding via
913 ;; libopencore-amrwb [no]
914 ;; --enable-libopencv enable video filtering via libopencv [no]
915 ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via
916 ;; OpenJPEG [no]
917 ;; --enable-librtmp enable RTMP[E] support via librtmp [no]
918 ;; --enable-libschroedinger enable Dirac de/encoding via
919 ;; libschroedinger [no]
920 ;; --enable-libshine enable fixed-point MP3 encoding via
921 ;; libshine [no]
922 ;; --enable-libssh enable SFTP protocol via libssh [no]
923 ;; (libssh2 does not work)
924 ;; --enable-libstagefright-h264 enable H.264 decoding via
925 ;; libstagefright [no]
926 ;; --enable-libutvideo enable Ut Video encoding and decoding via
927 ;; libutvideo [no]
928 ;; --enable-libv4l2 enable libv4l2/v4l-utils [no]
12f92e38
AP
929 ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
930 ;; --enable-libvo-amrwbenc enable AMR-WB encoding via
931 ;; libvo-amrwbenc [no]
932 ;; --enable-libwavpack enable wavpack encoding via libwavpack [no]
933 ;; --enable-libxavs enable AVS encoding via xavs [no]
934 ;; --enable-libzmq enable message passing via libzmq [no]
935 ;; --enable-libzvbi enable teletext support via libzvbi [no]
936 ;; --enable-opencl enable OpenCL code
12f92e38
AP
937 '("--enable-avresample"
938 "--enable-gpl" ; enable optional gpl licensed parts
939 "--enable-shared"
8fd43200 940 "--enable-frei0r"
12f92e38 941 "--enable-fontconfig"
c8dab7f4 942 "--enable-gnutls"
12f92e38 943 "--enable-ladspa"
84eb265e 944 "--enable-libaom"
12f92e38
AP
945 "--enable-libass"
946 "--enable-libbluray"
947 "--enable-libcaca"
948 "--enable-libcdio"
86445c8e 949 "--enable-libdav1d"
12f92e38
AP
950 "--enable-libfreetype"
951 "--enable-libmp3lame"
952 "--enable-libopus"
953 "--enable-libpulse"
12f92e38
AP
954 "--enable-libsoxr"
955 "--enable-libspeex"
956 "--enable-libtheora"
957 "--enable-libtwolame"
6d777ff9 958 "--enable-libvidstab"
12f92e38
AP
959 "--enable-libvorbis"
960 "--enable-libvpx"
961 "--enable-libxvid"
962 "--enable-libx264"
d505801a 963 "--enable-libx265"
12f92e38 964 "--enable-openal"
f88f0d20 965 "--enable-opengl"
1f61cc10 966 "--enable-libdrm"
12f92e38
AP
967
968 "--enable-runtime-cpudetect"
969
1e2a36e1
EF
970 ;; The HTML pages take 7.2 MiB
971 "--disable-htmlpages"
972
973 ;; The static libraries are 23 MiB
974 "--disable-static"
975
12f92e38
AP
976 ;; Runtime cpu detection is not implemented on
977 ;; MIPS, so we disable some features.
978 "--disable-mips32r2"
c5e1fcd0 979 "--disable-mipsdsp"
12f92e38
AP
980 "--disable-mipsdspr2"
981 "--disable-mipsfpu")
31f9322e 982 #:phases
f2feb0ce
LC
983 (modify-phases %standard-phases
984 (replace
39efcc9b
AE
985 'configure
986 ;; configure does not work followed by "SHELL=..." and
987 ;; "CONFIG_SHELL=..."; set environment variables instead
988 (lambda* (#:key outputs configure-flags #:allow-other-keys)
989 (let ((out (assoc-ref outputs "out")))
990 (substitute* "configure"
47734a56 991 (("#! /bin/sh") (string-append "#!" (which "sh"))))
39efcc9b
AE
992 (setenv "SHELL" (which "bash"))
993 (setenv "CONFIG_SHELL" (which "bash"))
3918ed73
MW
994 (apply invoke
995 "./configure"
996 (string-append "--prefix=" out)
997 ;; Add $libdir to the RUNPATH of all the binaries.
998 (string-append "--extra-ldflags=-Wl,-rpath="
999 out "/lib")
1000 configure-flags))))
457e528e
LC
1001 (add-before
1002 'check 'set-ld-library-path
1003 (lambda _
1004 ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
1005 ;; running tests.
1006 (let* ((dso (find-files "." "\\.so$"))
1007 (path (string-join (map dirname dso) ":")))
1008 (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
1009 (setenv "LD_LIBRARY_PATH" path)
27350ef8 1010 #t))))))
702bfbf1 1011 (home-page "https://www.ffmpeg.org/")
39efcc9b
AE
1012 (synopsis "Audio and video framework")
1013 (description "FFmpeg is a complete, cross-platform solution to record,
1014convert and stream audio and video. It includes the libavcodec
1015audio/video codec library.")
ae0bdd81 1016 (license license:gpl2+)))
d5a748e8 1017
06079c19
RH
1018(define-public ffmpeg-3.4
1019 (package
1020 (inherit ffmpeg)
66c15f72 1021 (version "3.4.7")
06079c19
RH
1022 (source (origin
1023 (method url-fetch)
1024 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
1025 version ".tar.xz"))
1026 (sha256
1027 (base32
66c15f72 1028 "1j7mdk9szrljgv4sdx69bm1pnbb3cldbdxbkr42jbdi9zn11gl7g"))))
84eb265e
AB
1029 (arguments
1030 (substitute-keyword-arguments (package-arguments ffmpeg)
1031 ((#:configure-flags flags)
86445c8e
RH
1032 `(delete "--enable-libdav1d" (delete "--enable-libaom"
1033 ,flags)))))
1034 (inputs (alist-delete "dav1d" (alist-delete "libaom"
1035 (package-inputs ffmpeg))))))
06079c19 1036
1faf0a04
NG
1037(define-public ffmpeg-for-stepmania
1038 (hidden-package
1039 (package
1040 (inherit ffmpeg)
1041 (version "2.1.3")
1042 (source
1043 (origin
1044 (method git-fetch)
1045 (uri (git-reference
1046 (url "https://github.com/stepmania/ffmpeg.git")
1047 (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
1048 (sha256
1049 (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
1050 (file-name (git-file-name "ffmpeg" version))))
1051 (arguments
1052 (substitute-keyword-arguments (package-arguments ffmpeg)
1053 ((#:configure-flags flags)
1054 '(list "--disable-programs"
1055 "--disable-doc"
1056 "--disable-debug"
1057 "--disable-avdevice"
1058 "--disable-swresample"
1059 "--disable-postproc"
1060 "--disable-avfilter"
1061 "--disable-shared"
1062 "--enable-static"))))
1063 (inputs '()))))
940778c7 1064
4febfdd0
BT
1065(define-public ffmpegthumbnailer
1066 (package
1067 (name "ffmpegthumbnailer")
f1b8ed3f 1068 (version "2.2.2")
4febfdd0 1069 (source (origin
722e6ffe
RW
1070 (method git-fetch)
1071 (uri (git-reference
1072 (url "https://github.com/dirkvdb/ffmpegthumbnailer.git")
1073 (commit version)))
1074 (file-name (git-file-name name version))
4febfdd0
BT
1075 (sha256
1076 (base32
f1b8ed3f 1077 "1bakbr714j7yxdal1f5iq0gcl4cxggbbgj227ihdh5kvygqlwich"))))
4febfdd0
BT
1078 (build-system cmake-build-system)
1079 (native-inputs
1080 `(("pkg-config" ,pkg-config)))
1081 (inputs
1082 `(("ffmpeg" ,ffmpeg)
1083 ("libjpeg-turbo" ,libjpeg-turbo)
1084 ("libpng" ,libpng)
1085 ("gvfs" ,gvfs)))
1086 (arguments
1087 `(#:configure-flags (list "-DENABLE_GIO=ON" "-DENABLE_THUMBNAILER=ON")))
1088 (home-page "https://github.com/dirkvdb/ffmpegthumbnailer")
1089 (synopsis "Create thumbnails from video files")
1090 (description "FFmpegthumbnailer is a lightweight video thumbnailer that
1091can be used by file managers to create thumbnails for your video files. The
1092thumbnailer uses ffmpeg to decode frames from the video files, so supported
1093videoformats depend on the configuration flags of ffmpeg.")
1094 (license license:gpl2+)))
1095
d5a748e8
AE
1096(define-public vlc
1097 (package
1098 (name "vlc")
178f1d1f 1099 (version "3.0.8")
d5a748e8 1100 (source (origin
520b18e6
NG
1101 (method url-fetch)
1102 (uri (string-append
1103 "https://download.videolan.org/pub/videolan/vlc/"
1104 (car (string-split version #\-))
1105 "/vlc-" version ".tar.xz"))
1106 (sha256
1107 (base32
1108 "1xmxjpyzdhabchwncz6lvx3kzvl7fz9c42bkv3nbj68albs9w570"))
1109 (patches
1110 (search-patches
1111 ;; TODO: The test "libvlc_slaves" fails. Applied upstream as
1112 ;; <https://git.videolan.org/?p=vlc.git;a=commit;h=4186c94104ee528abd6860611b49515f3e6ec644>.
1113 ;; Try removing it in 3.0.9.
1114 "vlc-fix-test_libvlc_slaves.patch"))))
d5a748e8
AE
1115 (build-system gnu-build-system)
1116 (native-inputs
76277052
MW
1117 `(("flex" ,flex)
1118 ("bison" ,bison)
1119 ("gettext" ,gettext-minimal)
520b18e6 1120 ("git" ,git) ; needed for a test
d5a748e8
AE
1121 ("pkg-config" ,pkg-config)))
1122 ;; FIXME: Add optional inputs once available.
1123 (inputs
1124 `(("alsa-lib" ,alsa-lib)
1125 ("avahi" ,avahi)
1126 ("dbus" ,dbus)
76277052 1127 ("eudev" ,eudev)
d5a748e8 1128 ("flac" ,flac)
76277052 1129 ("ffmpeg" ,ffmpeg)
d5a748e8
AE
1130 ("fontconfig" ,fontconfig)
1131 ("freetype" ,freetype)
76277052 1132 ("fribidi" ,fribidi)
d5a748e8 1133 ("gnutls" ,gnutls)
8824da4c 1134 ("liba52" ,liba52)
76277052
MW
1135 ("libarchive" ,libarchive)
1136 ("libass" ,libass)
1137 ("libavc1394" ,libavc1394)
1138 ("libbluray" ,libbluray)
1139 ("libcaca" ,libcaca)
d5a748e8 1140 ("libcddb" ,libcddb)
76277052 1141 ("libdca" ,libdca)
72b6a894 1142 ("libdvbpsi" ,libdvbpsi)
76277052
MW
1143 ("libdvdnav" ,libdvdnav)
1144 ("libdvdread" ,libdvdread)
1145 ("libebml" ,libebml)
d5a748e8 1146 ("libgcrypt" ,libgcrypt)
76277052 1147 ("libidn" ,libidn)
d5a748e8
AE
1148 ("libkate" ,libkate)
1149 ("libmad" ,libmad)
76277052 1150 ("libmatroska" ,libmatroska)
78d112c2 1151 ("libmicrodns" ,libmicrodns)
76277052
MW
1152 ("libmodplug" ,libmodplug)
1153 ("libmpeg2" ,libmpeg2)
d5a748e8
AE
1154 ("libogg" ,libogg)
1155 ("libpng" ,libpng)
76277052
MW
1156 ("libraw1394" ,libraw1394)
1157 ("librsvg" ,librsvg)
d5a748e8 1158 ("libsamplerate" ,libsamplerate)
76277052 1159 ("libsecret" ,libsecret)
d5a748e8 1160 ("libssh2" ,libssh2)
76277052
MW
1161 ("libupnp" ,libupnp)
1162 ("libva" ,libva)
1163 ("libvdpau" ,libvdpau)
d5a748e8 1164 ("libvorbis" ,libvorbis)
26986544 1165 ("libvpx" ,libvpx)
d5a748e8 1166 ("libtheora" ,libtheora)
76277052 1167 ("libx264" ,libx264)
d5a748e8 1168 ("libxext" ,libxext)
c161c22a 1169 ("libxi" ,libxi)
d5a748e8
AE
1170 ("libxinerama" ,libxinerama)
1171 ("libxml2" ,libxml2)
1172 ("libxpm" ,libxpm)
2aaa5729 1173 ("livemedia-utils" ,livemedia-utils)
76277052 1174 ("lua" ,lua-5.2)
d5a748e8
AE
1175 ("mesa" ,mesa)
1176 ("opus" ,opus)
1177 ("perl" ,perl)
1178 ("pulseaudio" ,pulseaudio)
fc2982f7 1179 ("protobuf" ,protobuf)
d5a748e8 1180 ("python" ,python-wrapper)
552c3e95 1181 ("qtbase" ,qtbase)
76277052 1182 ("qtsvg" ,qtsvg)
552c3e95 1183 ("qtx11extras" ,qtx11extras)
76277052 1184 ("samba" ,samba)
d5a748e8
AE
1185 ("sdl" ,sdl)
1186 ("sdl-image" ,sdl-image)
1187 ("speex" ,speex)
76277052
MW
1188 ("speexdsp" ,speexdsp)
1189 ("taglib" ,taglib)
1190 ("twolame" ,twolame)
1191 ("unzip" ,unzip)
1192 ("wayland" ,wayland)
1193 ("wayland-protocols" ,wayland-protocols)
8f5f6c92 1194 ("x265" ,x265)
d5a748e8
AE
1195 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1196 (arguments
1197 `(#:configure-flags
0fe041bd 1198 `("BUILDCC=gcc"
d5a748e8
AE
1199 ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
1200 (assoc-ref %build-inputs "ffmpeg")
520b18e6 1201 "/lib")) ;needed for the tests
cd76fbde
LC
1202
1203 #:phases
1204 (modify-phases %standard-phases
2d2e97bd 1205 (add-after 'unpack 'patch-source
2aaa5729
CL
1206 (lambda* (#:key inputs #:allow-other-keys)
1207 (let ((livemedia-utils (assoc-ref inputs "livemedia-utils")))
2d2e97bd 1208 (substitute* "configure"
2aaa5729
CL
1209 (("LIVE555_PREFIX=\\$\\{LIVE555_PREFIX-\"/usr\"\\}")
1210 (string-append "LIVE555_PREFIX=" livemedia-utils)))
2d2e97bd
MB
1211 ;; Some of the tests require using the display to test out VLC,
1212 ;; which fails in our sandboxed build system
1213 (substitute* "test/run_vlc.sh"
1214 (("./vlc --ignore-config") "echo"))
76277052
MW
1215
1216 ;; modules/text_renderer/freetype/text_layout.c uses a
1217 ;; now-deprecated interface 'fribidi_get_par_embedding_levels'
1218 ;; from fribidi.h, so for now we enable the use of deprecated
1219 ;; fribidi interfaces from this file.
1220 ;; FIXME: Try removing this for vlc >= 3.0.3.
1221 (substitute* "modules/text_renderer/freetype/text_layout.c"
1222 (("# define FRIBIDI_NO_DEPRECATED 1") ""))
1223
10384f88
LF
1224 ;; Fix build with libssh2 > 1.8.0:
1225 ;; <https://trac.videolan.org/vlc/ticket/22060>
1226 ;; <https://git.videolan.org/?p=vlc.git;a=commit;h=11449b5cd8b415768e010d9b7c1d6ba3cea21f82>
1227 (substitute* "modules/access/sftp.c"
1228 (("010801") "010900"))
2aaa5729 1229 #t)))
76277052 1230 (add-after 'strip 'regenerate-plugin-cache
cd76fbde
LC
1231 (lambda* (#:key outputs #:allow-other-keys)
1232 ;; The 'install-exec-hook' rule in the top-level Makefile.am
1233 ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
1234 ;; 'vlc-cache-gen'. This file includes the mtime of the plugins
1235 ;; it references. Thus, we first reset the timestamps of all
1236 ;; these files, and then regenerate the cache such that the
1237 ;; mtimes it includes are always zero instead of being dependent
1238 ;; on the build time.
1239 (let* ((out (assoc-ref outputs "out"))
1240 (pkglibdir (string-append out "/lib/vlc"))
1241 (plugindir (string-append pkglibdir "/plugins"))
1242 (cachegen (string-append pkglibdir "/vlc-cache-gen")))
1243 ;; TODO: Factorize 'reset-timestamps'.
1244 (for-each (lambda (file)
1245 (let ((s (lstat file)))
1246 (unless (eq? (stat:type s) 'symlink)
76277052 1247 (utime file 1 1))))
cd76fbde 1248 (find-files plugindir))
76277052
MW
1249 (invoke cachegen plugindir))))
1250 (add-after 'install 'wrap-executable
1251 (lambda* (#:key outputs #:allow-other-keys)
520b18e6
NG
1252 (let ((out (assoc-ref outputs "out"))
1253 (plugin-path (getenv "QT_PLUGIN_PATH")))
1254 (wrap-program (string-append out "/bin/vlc")
1255 `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))
1256 #t)))))
d5a748e8
AE
1257 (home-page "https://www.videolan.org/")
1258 (synopsis "Audio and video framework")
1259 (description "VLC is a cross-platform multimedia player and framework
1260that plays most multimedia files as well as DVD, Audio CD, VCD, and various
34a19d35 1261streaming protocols.")
ae0bdd81 1262 (license license:gpl2+)))
ace69243
AE
1263
1264(define-public mplayer
1265 (package
1266 (name "mplayer")
e71b20e5 1267 (version "1.3.0")
ace69243
AE
1268 (source (origin
1269 (method url-fetch)
1270 (uri (string-append
ebde7c7a 1271 "https://www.mplayerhq.hu/MPlayer/releases/MPlayer-"
ace69243
AE
1272 version ".tar.xz"))
1273 (sha256
1274 (base32
e71b20e5 1275 "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s"))))
ace69243
AE
1276 (build-system gnu-build-system)
1277 ;; FIXME: Add additional inputs once available.
1278 (native-inputs
a5498025
EF
1279 `(("pkg-config" ,pkg-config)
1280 ("yasm" ,yasm)))
ace69243
AE
1281 (inputs
1282 `(("alsa-lib" ,alsa-lib)
1283 ("cdparanoia" ,cdparanoia)
21e6428d 1284 ("ffmpeg" ,ffmpeg-3.4)
778a6a8b 1285 ("fontconfig" ,fontconfig)
ace69243 1286 ("freetype" ,freetype)
778a6a8b 1287;; ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
ace69243 1288 ("lame" ,lame)
778a6a8b 1289 ("libass" ,libass)
b3546174
MW
1290 ("libdvdcss" ,libdvdcss)
1291 ("libdvdnav" ,libdvdnav)
ace69243 1292 ("libjpeg" ,libjpeg)
778a6a8b
EF
1293 ("libmpeg2" ,libmpeg2)
1294 ("libmpg123" ,mpg123) ; audio codec for MP3
ace69243
AE
1295 ("libpng" ,libpng)
1296 ("libtheora" ,libtheora)
778a6a8b 1297 ("libvdpau" ,libvdpau)
ace69243
AE
1298 ("libvorbis" ,libvorbis)
1299 ("libx11" ,libx11)
778a6a8b 1300 ("libx264" ,libx264)
ace69243
AE
1301 ("libxinerama" ,libxinerama)
1302 ("libxv" ,libxv)
778a6a8b 1303 ("libxxf86dga" ,libxxf86dga)
ace69243 1304 ("mesa" ,mesa)
778a6a8b 1305 ("opus" ,opus)
ace69243
AE
1306 ("perl" ,perl)
1307 ("pulseaudio" ,pulseaudio)
1308 ("python" ,python-wrapper)
1309 ("sdl" ,sdl)
1310 ("speex" ,speex)
ace69243
AE
1311 ("zlib" ,zlib)))
1312 (arguments
1313 `(#:tests? #f ; no test target
1314 #:phases
ebde7c7a
EF
1315 (modify-phases %standard-phases
1316 (replace 'configure
ace69243
AE
1317 ;; configure does not work followed by "SHELL=..." and
1318 ;; "CONFIG_SHELL=..."; set environment variables instead
1319 (lambda* (#:key inputs outputs #:allow-other-keys)
1320 (let ((out (assoc-ref outputs "out"))
1321 (libx11 (assoc-ref inputs "libx11")))
1322 (substitute* "configure"
2564b7c2 1323 (("#! /bin/sh") (string-append "#!" (which "sh"))))
ace69243
AE
1324 (setenv "SHELL" (which "bash"))
1325 (setenv "CONFIG_SHELL" (which "bash"))
1fe5791d 1326 (invoke "./configure"
ace69243
AE
1327 (string-append "--extra-cflags=-I"
1328 libx11 "/include") ; to detect libx11
ebde7c7a 1329 "--disable-ffmpeg_a" ; disables bundled ffmpeg
ace69243 1330 (string-append "--prefix=" out)
fe138965
MW
1331 ;; Enable runtime cpu detection where supported,
1332 ;; and choose a suitable target.
1333 ,@(match (or (%current-target-system)
1334 (%current-system))
1335 ("x86_64-linux"
1336 '("--enable-runtime-cpudetection"
1337 "--target=x86_64-linux"))
1338 ("i686-linux"
1339 '("--enable-runtime-cpudetection"
1340 "--target=i686-linux"))
1341 ("mips64el-linux"
f0d6d835
MW
1342 '("--target=mips3-linux"))
1343 (_ (list (string-append
1344 "--target="
1345 (or (%current-target-system)
1346 (nix-system->gnu-triplet
1347 (%current-system)))))))
1fe5791d 1348 "--disable-iwmmxt")))))))
ebde7c7a 1349 (home-page "https://www.mplayerhq.hu/design7/news.html")
ace69243
AE
1350 (synopsis "Audio and video player")
1351 (description "MPlayer is a movie player. It plays most MPEG/VOB, AVI,
1352Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT,
1353NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files. One can watch VideoCD,
1354SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
ae0bdd81 1355 (license license:gpl2)))
d0ed39be 1356
1c1178cd
TUBK
1357(define-public mpv
1358 (package
1359 (name "mpv")
954b4c73 1360 (version "0.32.0")
1c1178cd 1361 (source (origin
ce4ac7d5
RW
1362 (method git-fetch)
1363 (uri (git-reference
1364 (url "https://github.com/mpv-player/mpv.git")
1365 (commit (string-append "v" version))))
1366 (file-name (git-file-name name version))
1c1178cd
TUBK
1367 (sha256
1368 (base32
954b4c73 1369 "0kmy1q0hp87vq4rpv7py04x8bpg1wmlzaibavmkf713jqp6qy596"))))
1c1178cd
TUBK
1370 (build-system waf-build-system)
1371 (native-inputs
832d60dc 1372 `(("perl" ,perl) ; for zsh completion file
1c1178cd
TUBK
1373 ("pkg-config" ,pkg-config)
1374 ("python-docutils" ,python-docutils)))
3440f12a 1375 ;; Missing features: libguess, V4L2
1c1178cd
TUBK
1376 (inputs
1377 `(("alsa-lib" ,alsa-lib)
1378 ("enca" ,enca)
06079c19 1379 ("ffmpeg" ,ffmpeg)
2d8781a4 1380 ("jack" ,jack-1)
1c1178cd
TUBK
1381 ("ladspa" ,ladspa)
1382 ("lcms" ,lcms)
1383 ("libass" ,libass)
1384 ("libbluray" ,libbluray)
1385 ("libcaca" ,libcaca)
1386 ("libbs2b" ,libbs2b)
1387 ("libcdio-paranoia" ,libcdio-paranoia)
1388 ("libdvdread" ,libdvdread)
1389 ("libdvdnav" ,libdvdnav)
1390 ("libjpeg" ,libjpeg)
1391 ("libva" ,libva)
81c29ccc 1392 ("libvdpau" ,libvdpau)
1c1178cd
TUBK
1393 ("libx11" ,libx11)
1394 ("libxext" ,libxext)
1395 ("libxinerama" ,libxinerama)
1396 ("libxrandr" ,libxrandr)
1397 ("libxscrnsaver" ,libxscrnsaver)
1398 ("libxv" ,libxv)
e66f0dd2
AP
1399 ;; XXX: lua > 5.2 is not currently supported; see
1400 ;; waftools/checks/custom.py
1401 ("lua" ,lua-5.2)
1c1178cd
TUBK
1402 ("mesa" ,mesa)
1403 ("mpg123" ,mpg123)
1404 ("pulseaudio" ,pulseaudio)
1405 ("rsound" ,rsound)
870541d6 1406 ("shaderc" ,shaderc)
08899ee9 1407 ("vulkan-headers" ,vulkan-headers)
e6fcf903 1408 ("vulkan-loader" ,vulkan-loader)
f0b8d83a 1409 ("waf" ,python-waf)
3440f12a 1410 ("wayland" ,wayland)
abc5ef5a 1411 ("wayland-protocols" ,wayland-protocols)
c695fb76 1412 ("libxkbcommon" ,libxkbcommon)
1c1178cd
TUBK
1413 ("youtube-dl" ,youtube-dl)
1414 ("zlib" ,zlib)))
1415 (arguments
1416 '(#:phases
1417 (modify-phases %standard-phases
3df69aaf
TE
1418 (add-after
1419 'unpack 'patch-paths
1420 (lambda* (#:key inputs #:allow-other-keys)
1421 (let ((ytdl (assoc-ref inputs "youtube-dl")))
1422 (substitute* "player/lua/ytdl_hook.lua"
1423 (("\"youtube-dl\",")
1424 (string-append "\"" ytdl "/bin/youtube-dl\",")))
1425 #t)))
1c1178cd 1426 (add-before
f8503e2b 1427 'configure 'setup-waf
1c1178cd 1428 (lambda* (#:key inputs #:allow-other-keys)
a2aa746c
EF
1429 (let ((waf (assoc-ref inputs "waf")))
1430 (copy-file (string-append waf "/bin/waf") "waf"))
d39260dc
MW
1431 (setenv "CC" "gcc")
1432 #t)))
98c8b963 1433 #:configure-flags (list "--enable-libmpv-shared"
43ba5dd4 1434 "--enable-cdda"
43ba5dd4 1435 "--enable-dvdnav"
98c8b963 1436 "--disable-build-date")
1c1178cd
TUBK
1437 ;; No check function defined.
1438 #:tests? #f))
581873b5 1439 (home-page "https://mpv.io/")
1c1178cd
TUBK
1440 (synopsis "Audio and video player")
1441 (description "mpv is a general-purpose audio and video player. It is a
1442fork of mplayer2 and MPlayer. It shares some features with the former
1443projects while introducing many more.")
ae0bdd81 1444 (license license:gpl2+)))
1c1178cd 1445
0e74bb5b 1446(define-public gnome-mpv
b7f5fa82 1447 (deprecated-package "gnome-mpv" celluloid))
0e74bb5b 1448
6ed192a2
EF
1449(define-public mpv-mpris
1450 (package
1451 (name "mpv-mpris")
1452 (version "0.2")
1453 (source
1454 (origin
1455 (method git-fetch)
1456 (uri (git-reference
1457 (url "https://github.com/hoyon/mpv-mpris")
1458 (commit version)))
1459 (file-name (git-file-name name version))
1460 (sha256
1461 (base32
1462 "06hq3j1jjlaaz9ss5l7illxz8vm5bng86jl24kawglwkqayhdnjx"))))
1463 (build-system gnu-build-system)
1464 (arguments
1465 '(#:tests? #f ; no tests
1466 #:make-flags '("CC=gcc")
1467 #:phases
1468 (modify-phases %standard-phases
1469 (delete 'configure) ; no configure script
1470 (replace 'install
1471 (lambda* (#:key outputs #:allow-other-keys)
1472 (let ((out (assoc-ref outputs "out")))
1473 (install-file "mpris.so" (string-append out "/lib")))
1474 #t)))))
1475 (native-inputs
1476 `(("pkg-config" ,pkg-config)))
1477 (inputs
1478 `(("glib" ,glib)
1479 ("mpv" ,mpv)))
1480 (home-page "https://github.com/hoyon/mpv-mpris")
1481 (synopsis "MPRIS plugin for mpv")
1482 (description "This package provides an @dfn{MPRIS} (Media Player Remote
1483Interfacing Specification) plugin for the @code{mpv} media player. It implements
1484@code{org.mpris.MediaPlayer2} and @code{org.mpris.MediaPlayer2.Player} D-Bus
1485interfaces.
1486
1487To load this plugin, specify the following option when starting mpv:
1488@code{--script $GUIX_PROFILE/lib/mpris.so} or link it into
1489@file{$HOME/.config/mpv/scripts}.")
1490 (license license:expat)))
1491
d0ed39be
DT
1492(define-public libvpx
1493 (package
1494 (name "libvpx")
0fd80a25 1495 (version "1.8.2")
d0ed39be 1496 (source (origin
8a464433
MB
1497 ;; XXX: Upstream does not provide tarballs for > 1.6.1.
1498 (method git-fetch)
1499 (uri (git-reference
1500 (url "https://chromium.googlesource.com/webm/libvpx")
1501 (commit (string-append "v" version))))
1502 (file-name (git-file-name name version))
d0ed39be
DT
1503 (sha256
1504 (base32
0fd80a25 1505 "0gyq4fkbd2fv7m1mm9xrvn6rk6f4jsmbv8bnlhingmnrvyncnmnr"))
037d5913 1506 (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
d0ed39be
DT
1507 (build-system gnu-build-system)
1508 (arguments
e896c227 1509 `(#:configure-flags (list "--enable-shared"
1e667df4 1510 "--disable-static"
0e47b4e7
EF
1511 "--as=yasm"
1512 ;; Limit size to avoid CVE-2015-1258
1513 "--size-limit=16384x16384"
e896c227
MB
1514 (string-append "--prefix=" (assoc-ref %outputs "out")))
1515 #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
1516 (assoc-ref %outputs "out") "/lib"))
1517 #:phases (modify-phases %standard-phases
1518 (replace 'configure
1519 (lambda* (#:key configure-flags #:allow-other-keys)
1520 ;; The configure script does not understand some of the GNU
1521 ;; options, so we only add the flags specified above.
1522 (apply invoke "./configure" configure-flags))))
4f8f15cd 1523 #:tests? #f)) ; no check target
d0ed39be
DT
1524 (native-inputs
1525 `(("perl" ,perl)
1526 ("yasm" ,yasm)))
1527 (synopsis "VP8/VP9 video codec")
1528 (description "libvpx is a codec for the VP8/VP9 video compression format.")
ae0bdd81 1529 (license license:bsd-3)
ad7664f6 1530 (home-page "https://www.webmproject.org/")))
615215a5 1531
037d5913
MB
1532;; GNU IceCat fails to build against 1.8.0, so keep this version for now.
1533(define-public libvpx-1.7
1534 (package
1535 (inherit libvpx)
1536 (version "1.7.0")
1537 (source (origin
1538 (inherit (package-source libvpx))
1539 (uri (git-reference
1540 (url "https://chromium.googlesource.com/webm/libvpx")
1541 (commit (string-append "v" version))))
1542 (file-name (git-file-name "libvpx" version))
1543 (sha256
1544 (base32
1545 "0vvh89hvp8qg9an9vcmwb7d9k3nixhxaz6zi65qdjnd0i56kkcz6"))
1546 (patches
1547 (append
1548 (origin-patches (package-source libvpx))
1549 (search-patches "libvpx-use-after-free-in-postproc.patch")))))))
1550
615215a5
LC
1551(define-public youtube-dl
1552 (package
1553 (name "youtube-dl")
df6ce9fc 1554 (version "2020.01.24")
615215a5
LC
1555 (source (origin
1556 (method url-fetch)
ff1d80f3
EF
1557 (uri (string-append "https://github.com/ytdl-org/youtube-dl/"
1558 "releases/download/" version "/youtube-dl-"
615215a5
LC
1559 version ".tar.gz"))
1560 (sha256
1561 (base32
df6ce9fc 1562 "1zrnbjnwv315f9a83lk5c0gl4ianvp6q2kinxvqlv604sabcq78b"))))
615215a5 1563 (build-system python-build-system)
2ad9515c
AV
1564 (arguments
1565 ;; The problem here is that the directory for the man page and completion
1566 ;; files is relative, and for some reason, setup.py uses the
1567 ;; auto-detected sys.prefix instead of the user-defined "--prefix=FOO".
1568 ;; So, we need pass the prefix directly. In addition, make sure the Bash
1569 ;; completion file is called 'youtube-dl' rather than
1570 ;; 'youtube-dl.bash-completion'.
31c58006
LF
1571 `(#:tests? #f ; Many tests fail. The test suite can be run with pytest.
1572 #:phases (modify-phases %standard-phases
2ad9515c
AV
1573 (add-before 'install 'fix-the-data-directories
1574 (lambda* (#:key outputs #:allow-other-keys)
1575 (let ((prefix (assoc-ref outputs "out")))
1576 (mkdir "bash-completion")
1577 (rename-file "youtube-dl.bash-completion"
1578 "bash-completion/youtube-dl")
1579 (substitute* "setup.py"
1580 (("youtube-dl\\.bash-completion")
1581 "bash-completion/youtube-dl")
1582 (("'etc/")
1583 (string-append "'" prefix "/etc/"))
1584 (("'share/")
caa8de70
TGR
1585 (string-append "'" prefix "/share/")))
1586 #t))))))
615215a5
LC
1587 (synopsis "Download videos from YouTube.com and other sites")
1588 (description
b798dfde 1589 "Youtube-dl is a small command-line program to download videos from
1c911690 1590YouTube.com and many more sites.")
39dc7032 1591 (home-page "https://yt-dl.org")
ae0bdd81 1592 (license license:public-domain)))
e6bdb36a 1593
794223bc
CM
1594(define-public youtube-dl-gui
1595 (package
1596 (name "youtube-dl-gui")
1597 (version "0.3.8")
1598 (source
1599 (origin
1600 (method url-fetch)
1601 (uri (pypi-uri "Youtube-DLG" version))
1602 (sha256
1603 (base32
1604 "0napxwzgls5ik1bxbp99vly32l23xpc4ng5kr24hfhf21ypjyadb"))))
1605 (build-system python-build-system)
1606 (arguments
1607 ;; In Guix, wxpython has not yet been packaged for Python 3.
1608 `(#:python ,python-2
1609 ;; This package has no tests.
1610 #:tests? #f
1611 #:phases
1612 (modify-phases %standard-phases
1613 (add-before 'build 'patch-source
1614 (lambda* (#:key inputs #:allow-other-keys)
1615 ;; The youtube-dl-gui program lets you configure options. Some of
1616 ;; them are problematic, so we change their defaults.
1617 (substitute* "youtube_dl_gui/optionsmanager.py"
1618 ;; When this is true, the builder process will try (and fail) to
1619 ;; write logs to the builder user's home directory.
1620 (("'enable_log': True") "'enable_log': False")
1621 ;; This determines which youtube-dl program youtube-dl-gui will
1622 ;; run. If we don't set this, then youtube-dl-gui might download
1623 ;; an arbitrary copy from the Internet into the user's home
1624 ;; directory and run it, so let's make sure youtube-dl-gui uses
1625 ;; the youtube-dl from the inputs by default.
1626 (("'youtubedl_path': self.config_path")
1627 (string-append "'youtubedl_path': '"
1628 (assoc-ref inputs "youtube-dl")
1629 "/bin'"))
1630 ;; When this is True, when youtube-dl-gui is finished downloading
1631 ;; a file, it will try (and possibly fail) to open the directory
1632 ;; containing the downloaded file. This can fail because it
1633 ;; assumes that xdg-open is in PATH. Unfortunately, simply
1634 ;; adding xdg-utils to the propagated inputs is not enough to
1635 ;; make this work, so for now we set the default to False.
1636 (("'open_dl_dir': True") "'open_dl_dir': False"))
1637 ;; The youtube-dl program from the inputs is actually a wrapper
1638 ;; script written in bash, so attempting to invoke it as a python
1639 ;; script will fail.
1640 (substitute* "youtube_dl_gui/downloaders.py"
1641 (("cmd = \\['python', self\\.youtubedl_path\\]")
1642 "cmd = [self.youtubedl_path]"))
1643 ;; Use relative paths for installing data files so youtube-dl-gui
1644 ;; installs the files relative to its prefix in the store, rather
1645 ;; than relative to /. Also, instead of installing data files into
1646 ;; $prefix/usr/share, install them into $prefix/share for
1647 ;; consistency (see: (standards) Directory Variables).
1648 (substitute* "setup.py"
1649 (("= '/usr/share") "= 'share"))
1650 ;; Update get_locale_file() so it finds the installed localization
1651 ;; files.
1652 (substitute* "youtube_dl_gui/utils.py"
1653 (("os\\.path\\.join\\('/usr', 'share'")
1654 (string-append "os.path.join('"
1655 (assoc-ref %outputs "out")
9dcfd6aa 1656 "', 'share'")))
db37dd91
TGR
1657 #t))
1658 (add-after 'install 'create-desktop-file
1659 (lambda* (#:key outputs #:allow-other-keys)
1660 (let* ((out (assoc-ref outputs "out"))
1661 (applications (string-append out "/share/applications")))
1662 (mkdir-p applications)
1663 (call-with-output-file
1664 (string-append applications "/youtube-dl-gui.desktop")
1665 (lambda (file)
1666 (format
1667 file
1668 "[Desktop Entry]~@
1669 Name=Youtube-dl GUI~@
1670 Comment=Graphical interface to download video with youtube-dl~@
1671 Exec=youtube-dl-gui~@
1672 TryExec=youtube-dl-gui~@
1673 Terminal=false~@
1674 Icon=youtube-dl-gui~@
1675 Type=Application~@
1676 Categories=AudioVideo;Audio;Video;Network~%")))
1677 #t))))))
794223bc
CM
1678 (inputs
1679 `(("python2-wxpython" ,python2-wxpython)
1680 ("youtube-dl" ,youtube-dl)))
1681 (home-page "https://github.com/MrS0m30n3/youtube-dl-gui")
1682 (synopsis
1683 "GUI (Graphical User Interface) for @command{youtube-dl}")
1684 (description
1685 "Youtube-dlG is a GUI (Graphical User Interface) for
1686@command{youtube-dl}. You can use it to download videos from YouTube and any
1687other site that youtube-dl supports.")
1688 (license license:unlicense)))
1689
72fa6667
FS
1690(define-public you-get
1691 (package
1692 (name "you-get")
49dc1669 1693 (version "0.4.1355")
72fa6667 1694 (source (origin
5d9e3edd
RW
1695 (method git-fetch)
1696 (uri (git-reference
1697 (url "https://github.com/soimort/you-get.git")
1698 (commit (string-append "v" version))))
1699 (file-name (git-file-name name version))
72fa6667
FS
1700 (sha256
1701 (base32
49dc1669 1702 "0xq7z04hvw3b3npiahlpzhbxsjvam9n9dynplyrkn84dx6k9ajbj"))))
72fa6667 1703 (build-system python-build-system)
72fa6667 1704 (inputs
5e84eab0
TGR
1705 `(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos
1706 (arguments
1707 `(#:phases
1708 (modify-phases %standard-phases
1709 (add-after 'unpack 'qualify-input-references
1710 ;; Explicitly invoke the input ffmpeg, instead of whichever one
1711 ;; happens to be in the user's $PATH at run time.
1712 (lambda* (#:key inputs #:allow-other-keys)
1713 (let ((ffmpeg (string-append (assoc-ref inputs "ffmpeg")
1714 "/bin/ffmpeg")))
1715 (substitute* "src/you_get/processor/ffmpeg.py"
1716 ;; Don't blindly replace all occurrences of ‘'ffmpeg'’: the
1717 ;; same string is also used when sniffing ffmpeg's output.
1718 (("(FFMPEG == |\\()'ffmpeg'" _ prefix)
1719 (string-append prefix "'" ffmpeg "'")))
1720 #t))))
1721 #:tests? #f)) ; XXX some tests need Internet access
817e91bc 1722 (synopsis "Download videos, audio, or images from Web sites")
72fa6667
FS
1723 (description
1724 "You-Get is a command-line utility to download media contents (videos,
1725audio, images) from the Web. It can use either mpv or vlc for playback.")
1726 (home-page "https://you-get.org/")
1727 (license license:expat)))
1728
6f45e45d
AV
1729(define-public youtube-viewer
1730 (package
1731 (name "youtube-viewer")
adff7395 1732 (version "3.7.0")
6f45e45d 1733 (source (origin
6be44578
TGR
1734 (method git-fetch)
1735 (uri (git-reference
1736 (url "https://github.com/trizen/youtube-viewer.git")
1737 (commit version)))
1738 (file-name (git-file-name name version))
6f45e45d
AV
1739 (sha256
1740 (base32
adff7395 1741 "1h0m8rn7najdrzvg5md9albiax287273b40ncrihh9amsvvb47c9"))))
6f45e45d
AV
1742 (build-system perl-build-system)
1743 (native-inputs
1744 `(("perl-module-build" ,perl-module-build)))
6f45e45d
AV
1745 (inputs
1746 `(("perl-data-dump" ,perl-data-dump)
1747 ("perl-file-sharedir" ,perl-file-sharedir)
1748 ("perl-gtk2" ,perl-gtk2)
1749 ("perl-json" ,perl-json)
1750 ("perl-libwww" ,perl-libwww)
1751 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
adff7395 1752 ("perl-lwp-useragent-cached" ,perl-lwp-useragent-cached)
6f45e45d 1753 ("perl-mozilla-ca" ,perl-mozilla-ca)
adff7395 1754 ("perl-term-readline-gnu" ,perl-term-readline-gnu)
58637415 1755 ("perl-unicode-linebreak" ,perl-unicode-linebreak)
adff7395 1756 ("xdg-utils" ,xdg-utils)
58637415
TGR
1757
1758 ;; Some videos play without youtube-dl, but others silently fail to.
1759 ("youtube-dl" ,youtube-dl)))
6f45e45d
AV
1760 (arguments
1761 `(#:modules ((guix build perl-build-system)
1762 (guix build utils)
1763 (srfi srfi-26))
1764 #:module-build-flags '("--gtk")
63d99002
AV
1765 #:phases
1766 (modify-phases %standard-phases
58637415
TGR
1767 (add-after 'unpack 'refer-to-inputs
1768 (lambda* (#:key inputs #:allow-other-keys)
1769 (substitute* "lib/WWW/YoutubeViewer.pm"
1770 (("'youtube-dl'")
1771 (format #f "'~a/bin/youtube-dl'"
1772 (assoc-ref inputs "youtube-dl"))))
adff7395
EB
1773 (substitute* '("bin/gtk2-youtube-viewer"
1774 "bin/gtk3-youtube-viewer")
1775 (("'xdg-open'")
1776 (format #f "'~a/bin/xdg-open'"
1777 (assoc-ref inputs "xdg-utils"))))
58637415 1778 #t))
0dd8da0b
EB
1779 (add-after 'install 'install-desktop
1780 (lambda* (#:key outputs #:allow-other-keys)
1781 (let* ((out (assoc-ref outputs "out"))
1782 (sharedir (string-append out "/share")))
1783 (install-file "share/gtk-youtube-viewer.desktop"
1784 (string-append sharedir "/applications"))
1785 (install-file "share/icons/gtk-youtube-viewer.png"
1786 (string-append sharedir "/pixmaps"))
1787 #t)))
63d99002
AV
1788 (add-after 'install 'wrap-program
1789 (lambda* (#:key outputs #:allow-other-keys)
1790 (let* ((out (assoc-ref outputs "out"))
1791 (bin-dir (string-append out "/bin/"))
1792 (site-dir (string-append out "/lib/perl5/site_perl/"))
1793 (lib-path (getenv "PERL5LIB")))
1794 (for-each (cut wrap-program <>
1795 `("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
1796 (find-files bin-dir))
1797 #t))))))
6f45e45d
AV
1798 (synopsis
1799 "Lightweight application for searching and streaming videos from YouTube")
1800 (description
1801 "Youtube-viewer searches and plays YouTube videos in a native player.
1802It comes with various search options; it can search for videos, playlists
1803and/or channels. The videos are streamed directly in a selected video player
1804at the best resolution (customizable) and with closed-captions (if available).
1805Both command-line and GTK2 interface are available.")
1806 (home-page "https://github.com/trizen/youtube-viewer")
1807 (license license:perl-license)))
1808
5d3609e4
TUBK
1809(define-public libbluray
1810 (package
1811 (name "libbluray")
004450f4 1812 (version "1.0.2")
5d3609e4
TUBK
1813 (source (origin
1814 (method url-fetch)
5e3f68e6 1815 (uri (string-append "https://download.videolan.org/videolan/"
5d3609e4
TUBK
1816 name "/" version "/"
1817 name "-" version ".tar.bz2"))
1818 (sha256
1819 (base32
004450f4 1820 "1zxfnw1xbghcj7b3zz5djndv6gwssxda19cz1lrlqrkg8577r7kd"))))
5d3609e4 1821 (build-system gnu-build-system)
6c0cd765 1822 (arguments
d76e2634 1823 `(#:configure-flags '("--disable-bdjava-jar")
6c0cd765
AP
1824 #:phases
1825 (modify-phases %standard-phases
004450f4
TGR
1826 (add-after 'unpack 'refer-to-libxml2-in-.pc-file
1827 ;; Avoid the need to propagate libxml2 by referring to it
1828 ;; directly, as is already done for fontconfig & freetype.
1829 (lambda* (#:key inputs #:allow-other-keys)
1830 (let ((libxml2 (assoc-ref inputs "libxml2")))
1831 (substitute* "configure"
1832 ((" libxml-2.0") ""))
1833 (substitute* "src/libbluray.pc.in"
1834 (("^Libs.private:" field)
1835 (string-append field " -L" libxml2 "/lib -lxml2")))
1836 #t)))
6c0cd765
AP
1837 (add-before 'build 'fix-dlopen-paths
1838 (lambda* (#:key inputs #:allow-other-keys)
1839 (let ((libaacs (assoc-ref inputs "libaacs"))
1840 (libbdplus (assoc-ref inputs "libbdplus")))
1841 (substitute* "src/libbluray/disc/aacs.c"
1842 (("\"libaacs\"")
1843 (string-append "\"" libaacs "/lib/libaacs\"")))
1844 (substitute* "src/libbluray/disc/bdplus.c"
1845 (("\"libbdplus\"")
1846 (string-append "\"" libbdplus "/lib/libbdplus\"")))
1847 #t))))))
2da45ebe 1848 (native-inputs `(("pkg-config" ,pkg-config)))
5d3609e4 1849 (inputs
71ee51a0 1850 `(("fontconfig" ,fontconfig)
5d3609e4 1851 ("freetype" ,freetype)
6c0cd765
AP
1852 ("libaacs" ,libaacs)
1853 ("libbdplus" ,libbdplus)
71ee51a0 1854 ("libxml2" ,libxml2)))
5e3f68e6 1855 (home-page "https://www.videolan.org/developers/libbluray.html")
5d3609e4
TUBK
1856 (synopsis "Blu-Ray Disc playback library")
1857 (description
1858 "libbluray is a library designed for Blu-Ray Disc playback for media
1859players, like VLC or MPlayer.")
ae0bdd81 1860 (license license:lgpl2.1+)))
5d3609e4 1861
e6bdb36a
AE
1862(define-public libdvdread
1863 (package
1864 (name "libdvdread")
29f62363 1865 (version "6.0.2")
e6bdb36a
AE
1866 (source (origin
1867 (method url-fetch)
b8a31908 1868 (uri (string-append "https://download.videolan.org/videolan/"
767b4427
TGR
1869 "libdvdread/" version "/"
1870 "libdvdread-" version ".tar.bz2"))
e6bdb36a
AE
1871 (sha256
1872 (base32
29f62363 1873 "1c7yqqn67m3y3n7nfrgrnzz034zjaw5caijbwbfrq89v46ph257r"))))
e6bdb36a 1874 (build-system gnu-build-system)
e21f3473
RJ
1875 (arguments
1876 `(#:configure-flags '("--with-libdvdcss=yes")))
1877 (native-inputs
1878 `(("pkg-config" ,pkg-config)))
1879 (propagated-inputs
1880 `(("libdvdcss" ,libdvdcss)))
e6bdb36a
AE
1881 (home-page "http://dvdnav.mplayerhq.hu/")
1882 (synopsis "Library for reading video DVDs")
1883 (description
1884 "Libdvdread provides a simple foundation for reading DVD video
1885disks. It provides the functionality that is required to access many
1886DVDs. It parses IFO files, reads NAV-blocks, and performs CSS
1887authentication and descrambling (if an external libdvdcss library is
1888installed).")
ae0bdd81 1889 (license license:gpl2+)))
b027d919 1890
b5b20bda
TD
1891(define-public dvdauthor
1892 (package
1893 (name "dvdauthor")
1894 (version "0.7.2")
1895 (source
1896 (origin
1897 (method url-fetch)
1898 (uri (string-append "mirror://sourceforge/dvdauthor/dvdauthor-"
1899 version ".tar.gz"))
1900 (sha256
1901 (base32
1902 "1drfc47hikfzc9d7hjk34rw10iqw01d2vwmn91pv73ppx4nsj81h"))))
1903 (build-system gnu-build-system)
1904 (inputs
1905 `(("libdvdread" ,libdvdread)
1906 ("libpng" ,libpng)
1907 ("imagemagick" ,imagemagick)
1908 ("libxml2" ,libxml2)
1909 ("freetype" ,freetype)))
1910 (native-inputs
1911 `(("pkg-config" ,pkg-config)))
1912 (synopsis "Generates a DVD-Video movie from a MPEG-2 stream")
1913 (description "@command{dvdauthor} will generate a DVD-Video movie from a
1914MPEG-2 stream containing VOB packets.")
1915 (home-page "http://dvdauthor.sourceforge.net")
1916 (license license:gpl3+)))
1917
b027d919
AE
1918(define-public libdvdnav
1919 (package
1920 (name "libdvdnav")
059a6e9a 1921 (version "6.0.1")
b027d919
AE
1922 (source (origin
1923 (method url-fetch)
b8a31908 1924 (uri (string-append "https://download.videolan.org/videolan/"
0104ed80
TGR
1925 "libdvdnav/" version "/"
1926 "libdvdnav-" version ".tar.bz2"))
b027d919
AE
1927 (sha256
1928 (base32
059a6e9a 1929 "0cv7j8irsv1n2dadlnhr6i1b8pann2ah6xpxic41f04my6ba6rp5"))))
b027d919
AE
1930 (build-system gnu-build-system)
1931 (native-inputs
1932 `(("pkg-config" ,pkg-config)))
1933 (inputs
1934 `(("libdvdread" ,libdvdread)))
1935 (home-page "http://dvdnav.mplayerhq.hu/")
1936 (synopsis "Library for video DVD navigation features")
1937 (description
1938 "Libdvdnav is a library for developers of multimedia
1939applications. It allows easy use of sophisticated DVD navigation features
1940such as DVD menus, multiangle playback and even interactive DVD games. All
1941this functionality is provided through a simple API which provides the DVD
1942playback as a single logical stream of blocks, intermitted by special
1943dvdnav events to report certain conditions. The main usage of libdvdnav is
1944a loop regularly calling a function to get the next block, surrounded by
1945additional calls to tell the library of user interaction. The whole
1946DVD virtual machine and internal playback states are completely
1947encapsulated.")
ae0bdd81 1948 (license license:gpl2+)))
2cd85cf9 1949
a6f710ec
TUBK
1950(define-public libdvdcss
1951 (package
1952 (name "libdvdcss")
c77fb2d6 1953 (version "1.4.2")
a6f710ec
TUBK
1954 (source (origin
1955 (method url-fetch)
b8a31908 1956 (uri (string-append "https://download.videolan.org/pub/"
a6f710ec
TUBK
1957 name "/" version "/"
1958 name "-" version ".tar.bz2"))
1959 (sha256
1960 (base32
c77fb2d6 1961 "0x957zzpf4w2cp8zlk29prj8i2q6hay3lzdzsyz8y3cwxivyvhkq"))))
a6f710ec 1962 (build-system gnu-build-system)
b8a31908 1963 (home-page "https://www.videolan.org/developers/libdvdcss.html")
a6f710ec
TUBK
1964 (synopsis "Library for accessing DVDs as block devices")
1965 (description
1966 "libdvdcss is a simple library designed for accessing DVDs like a block
1967device without having to bother about the decryption.")
ae0bdd81 1968 (license license:gpl2+)))
a6f710ec 1969
2cd85cf9
DT
1970(define-public srt2vtt
1971 (package
1972 (name "srt2vtt")
1973 (version "0.1")
1974 (source (origin
1975 (method url-fetch)
1976 (uri (string-append
152fc959 1977 "https://files.dthompson.us/srt2vtt/srt2vtt-"
2cd85cf9
DT
1978 version ".tar.gz"))
1979 (sha256
1980 (base32
1981 "16b377znjm6qlga5yb8aj7b7bcisa1ghcnj2lrb1d30lvxp4liif"))))
1982 (build-system gnu-build-system)
1983 (inputs
1984 `(("guile" ,guile-2.0)))
1985 (synopsis "SubRip to WebVTT subtitle converter")
1986 (description "srt2vtt converts SubRip formatted subtitles to WebVTT format
1987for use with HTML5 video.")
373cc3b7 1988 (home-page "https://dthompson.us/projects/srt2vtt.html")
ae0bdd81 1989 (license license:gpl3+)))
44726031
AE
1990
1991(define-public avidemux
1992 (package
1993 (name "avidemux")
ce23c5ff 1994 (version "2.7.4")
44726031
AE
1995 (source (origin
1996 (method url-fetch)
1997 (uri (string-append
7d3ac6c0
TGR
1998 "mirror://sourceforge/avidemux/avidemux/" version "/"
1999 "avidemux_" version ".tar.gz"))
44726031
AE
2000 (sha256
2001 (base32
ce23c5ff 2002 "1acdb3m37vdzzbm8mwyibcn8msi7birb5v30qfi7jli5r00src3x"))
fc1adab1 2003 (patches (search-patches "avidemux-install-to-lib.patch"))))
44726031
AE
2004 (build-system cmake-build-system)
2005 (native-inputs
4632e7c7
EF
2006 `(("perl" ,perl)
2007 ("pkg-config" ,pkg-config)
2008 ("python" ,python-wrapper)
2009 ("qttools" ,qttools)
2010 ("yasm" ,yasm)))
44726031
AE
2011 ;; FIXME: Once packaged, add libraries not found during the build.
2012 (inputs
2013 `(("alsa-lib" ,alsa-lib)
2014 ("fontconfig" ,fontconfig)
2015 ("freetype" ,freetype)
2016 ("fribidi" ,fribidi)
2017 ("glu" ,glu)
44726031
AE
2018 ("jack" ,jack-1)
2019 ("lame" ,lame)
4cafe8ad
EF
2020 ("libva" ,libva)
2021 ("libvdpau" ,libvdpau)
44726031
AE
2022 ("libvorbis" ,libvorbis)
2023 ("libvpx" ,libvpx)
2024 ("libxv" ,libxv)
44726031 2025 ("pulseaudio" ,pulseaudio)
3261a732 2026 ("qtbase" ,qtbase)
44726031 2027 ("sqlite" ,sqlite)
44726031
AE
2028 ("zlib" ,zlib)))
2029 (arguments
37f62896 2030 `(#:tests? #f ; no check target
44726031
AE
2031 #:phases
2032 ;; Make sure files inside the included ffmpeg tarball are
2033 ;; patch-shebanged.
ce23c5ff 2034 (let ((ffmpeg "ffmpeg-4.1.4"))
642de36b
TGR
2035 (modify-phases %standard-phases
2036 (add-before 'patch-source-shebangs 'unpack-ffmpeg
2037 (lambda _
2038 (with-directory-excursion "avidemux_core/ffmpeg_package"
2039 (invoke "tar" "xf" (string-append ffmpeg ".tar.bz2"))
2040 (delete-file (string-append ffmpeg ".tar.bz2")))
2041 #t))
2042 (add-after 'patch-source-shebangs 'repack-ffmpeg
2043 (lambda _
2044 (with-directory-excursion "avidemux_core/ffmpeg_package"
2045 (substitute* (string-append ffmpeg "/configure")
2046 (("#! /bin/sh") (string-append "#!" (which "sh"))))
2047 (invoke "tar" "cjf" (string-append ffmpeg ".tar.bz2") ffmpeg
2048 ;; avoid non-determinism in the archive
2049 "--sort=name" "--mtime=@0"
2050 "--owner=root:0" "--group=root:0")
2051 (delete-file-recursively ffmpeg))
2052 #t))
2053 (replace 'configure
2054 (lambda _
2055 ;; Copy-paste settings from the cmake build system.
2056 (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
2057 (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
2058 #t))
2059 (replace 'build
2060 (lambda* (#:key inputs outputs #:allow-other-keys)
2061 (let* ((out (assoc-ref outputs "out"))
2062 (lib (string-append out "/lib"))
2063 (top (getcwd))
642de36b
TGR
2064 (build_component
2065 (lambda* (component srcdir #:optional (args '()))
2066 (let ((builddir (string-append "build_" component)))
2067 (mkdir builddir)
2068 (with-directory-excursion builddir
2069 (apply invoke "cmake"
2070 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
2071 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
2072 (string-append "-DCMAKE_INSTALL_RPATH=" lib)
2073 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
2074 "\"-Wl,-rpath=" lib "\"")
2075 (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
642de36b
TGR
2076 (string-append "../" srcdir)
2077 "-DENABLE_QT5=True"
2078 args)
2079 (invoke "make" "-j"
2080 (number->string (parallel-job-count)))
2081 (invoke "make" "install"))))))
2082 (mkdir out)
2083 (build_component "core" "avidemux_core")
2084 (build_component "cli" "avidemux/cli")
2085 (build_component "qt4" "avidemux/qt4")
2086 (build_component "plugins_common" "avidemux_plugins"
2087 '("-DPLUGIN_UI=COMMON"))
2088 (build_component "plugins_cli" "avidemux_plugins"
2089 '("-DPLUGIN_UI=CLI"))
2090 (build_component "plugins_qt4" "avidemux_plugins"
2091 '("-DPLUGIN_UI=QT4"))
2092 (build_component "plugins_settings" "avidemux_plugins"
2093 '("-DPLUGIN_UI=SETTINGS"))
2094 ;; Remove .exe and .dll file.
2095 (delete-file-recursively
2096 (string-append out "/share/ADM6_addons"))
2097 #t)))
2098 (delete 'install)))))
44726031
AE
2099 (home-page "http://fixounet.free.fr/avidemux/")
2100 (synopsis "Video editor")
2101 (description "Avidemux is a video editor designed for simple cutting,
2102filtering and encoding tasks. It supports many file types, including AVI,
2103DVD compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks
2104can be automated using projects, job queue and powerful scripting
2105capabilities.")
afd9ed5c 2106 (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
44726031 2107 ;; Software with various licenses is included, see License.txt.
ae0bdd81 2108 (license license:gpl2+)))
44726031 2109
6f6c8b65
TUBK
2110(define-public vapoursynth
2111 (package
2112 (name "vapoursynth")
1d34b527 2113 (version "48")
6f6c8b65 2114 (source (origin
97ef6df5
RW
2115 (method git-fetch)
2116 (uri (git-reference
2117 (url "https://github.com/vapoursynth/vapoursynth.git")
2118 (commit (string-append "R" version))))
2119 (file-name (git-file-name name version))
6f6c8b65
TUBK
2120 (sha256
2121 (base32
1d34b527 2122 "1i6163bidlp0p9zcnxpsphr44ayfzd51fig4ri7vbrbl9lw9jaih"))))
6f6c8b65
TUBK
2123 (build-system gnu-build-system)
2124 (native-inputs
2125 `(("autoconf" ,autoconf)
2126 ("automake" ,automake)
2127 ("cython" ,python-cython)
2128 ("libtool" ,libtool)
2129 ("pkg-config" ,pkg-config)
2130 ("python" ,python)
2131 ("yasm" ,yasm)))
2132 (inputs
2133 `(("ffmpeg" ,ffmpeg)
2134 ("libass" ,libass)
f80d5fe0
EF
2135 ("tesseract-ocr" ,tesseract-ocr)
2136 ("zimg" ,zimg)))
6f6c8b65
TUBK
2137 (home-page "http://www.vapoursynth.com/")
2138 (synopsis "Video processing framework")
2139 (description "VapourSynth is a C++ library and Python module for video
2140manipulation. It aims to be a modern rewrite of Avisynth, supporting
2141multithreading, generalized colorspaces, per frame properties, and videos with
2142format changes.")
9a078f48 2143 ;; src/core/cpufeatures only allows x86, ARM or PPC
cda20ee8
EF
2144 (supported-systems (fold delete %supported-systems
2145 '("mips64el-linux" "aarch64-linux")))
6f6c8b65 2146 ;; As seen from the source files.
ae0bdd81 2147 (license license:lgpl2.1+)))
6f6c8b65 2148
67932f86
TUBK
2149(define-public xvid
2150 (package
2151 (name "xvid")
e5f415e0 2152 (version "1.3.6")
67932f86
TUBK
2153 (source (origin
2154 (method url-fetch)
2155 (uri (string-append
e661d5c2 2156 "http://downloads.xvid.com/downloads/xvidcore-"
67932f86
TUBK
2157 version ".tar.bz2"))
2158 (sha256
2159 (base32
e5f415e0 2160 "0zppakvcgq5a42mhqqsbliclpg2jrhbmbfgrzalyfzr47jqmhssy"))))
67932f86
TUBK
2161 (build-system gnu-build-system)
2162 (native-inputs `(("yasm" ,yasm)))
2163 (arguments
2164 '(#:phases
62fe2d47
EF
2165 (modify-phases %standard-phases
2166 (add-before
2167 'configure 'pre-configure
2168 (lambda _
2169 (chdir "build/generic")
2170 (substitute* "configure"
9dcfd6aa
MW
2171 (("#! /bin/sh") (string-append "#!" (which "sh"))))
2172 #t)))
67932f86
TUBK
2173 ;; No 'check' target.
2174 #:tests? #f))
2175 (home-page "https://www.xvid.com/")
2176 (synopsis "MPEG-4 Part 2 Advanced Simple Profile video codec")
2177 (description "Xvid is an MPEG-4 Part 2 Advanced Simple Profile (ASP) video
2178codec library. It uses ASP features such as b-frames, global and quarter
2179pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG
2180and custom quantization matrices.")
ae0bdd81 2181 (license license:gpl2+)))
e16fde14 2182
f48feaa2 2183(define-public streamlink
15b283e7
EF
2184 (package
2185 (name "streamlink")
567a1453 2186 (version "1.3.1")
15b283e7
EF
2187 (source
2188 (origin
2189 (method url-fetch)
2190 (uri (pypi-uri "streamlink" version))
2191 (sha256
2192 (base32
567a1453 2193 "0cnlg3ra3g6dml4xfy9ysy9b4qwyn458fadd8ac44cfwi3v4gq6y"))))
15b283e7
EF
2194 (build-system python-build-system)
2195 (home-page "https://github.com/streamlink/streamlink")
2196 (native-inputs
2197 `(("python-freezegun" ,python-freezegun)
2198 ("python-pytest" ,python-pytest)
2199 ("python-mock" ,python-mock)
2200 ("python-requests-mock" ,python-requests-mock)))
2201 (propagated-inputs
2202 `(("python-pysocks" ,python-pysocks)
2203 ("python-websocket-client" ,python-websocket-client)
2204 ("python-iso3166" ,python-iso3166)
2205 ("python-iso639" ,python-iso639)
b42b5afd 2206 ("python-isodate" ,python-isodate)
15b283e7
EF
2207 ("python-pycryptodome" ,python-pycryptodome)
2208 ("python-requests" ,python-requests)
2209 ("python-urllib3" ,python-urllib3)))
2210 (synopsis "Extract streams from various services")
2211 (description "Streamlink is command-line utility that extracts streams
f48feaa2 2212from sites like Twitch.tv and pipes them into a video player of choice.")
15b283e7 2213 (license license:bsd-2)))
f48feaa2 2214
d84e2257
OP
2215(define-public livestreamer
2216 (deprecated-package "livestreamer" streamlink))
2217
e5e5eb1f 2218(define-public twitchy
04b6e9c5 2219 (let ((commit "9beb36d80b16662414129693e74fa3a2fd97554e")) ; 3.4 has no tag
e5e5eb1f
OP
2220 (package
2221 (name "twitchy")
04b6e9c5 2222 (version (git-version "3.4" "1" commit))
e5e5eb1f
OP
2223 (source
2224 (origin
2225 (method git-fetch)
2226 (uri (git-reference
2227 (url "https://github.com/BasioMeusPuga/twitchy.git")
2228 (commit commit)))
2229 (file-name (git-file-name name version))
2230 (sha256
2231 (base32
04b6e9c5 2232 "0di03h1j9ipp2bbnxxlxz07v87icyg2hmnsr4s7184z5ql8kpzr7"))))
e5e5eb1f
OP
2233 (build-system python-build-system)
2234 (arguments
2235 '(#:phases
2236 (modify-phases %standard-phases
04b6e9c5
TE
2237 (add-after 'unpack 'patch-paths
2238 (lambda* (#:key inputs #:allow-other-keys)
2239 (substitute* "twitchy/twitchy_play.py"
2240 (("\"streamlink ")
2241 (string-append "\"" (assoc-ref inputs "streamlink")
2242 "/bin/streamlink ")))
2243 #t))
e5e5eb1f
OP
2244 (add-before 'check 'check-setup
2245 (lambda _
2246 (setenv "HOME" (getcwd)) ;Needs to write to ‘$HOME’.
ca82bdfd
OP
2247 #t))
2248 (add-after 'install 'install-rofi-plugin
2249 (lambda* (#:key outputs #:allow-other-keys)
2250 (install-file "plugins/rofi-twitchy"
2251 (string-append (assoc-ref outputs "out")
9dcfd6aa
MW
2252 "/bin"))
2253 #t)))))
e5e5eb1f
OP
2254 (inputs
2255 `(("python-requests" ,python-requests)
2256 ("streamlink" ,streamlink)))
2257 (home-page "https://github.com/BasioMeusPuga/twitchy")
2258 (synopsis "Command-line interface for Twitch.tv")
2259 (description
2260 "This package provides a command-line interface for Twitch.tv")
2261 (license license:gpl3+))))
2262
307ad140
RW
2263(define-public mlt
2264 (package
2265 (name "mlt")
3e1ccbef 2266 (version "6.18.0")
307ad140 2267 (source (origin
520b5d06
RW
2268 (method git-fetch)
2269 (uri (git-reference
2270 (url "https://github.com/mltframework/mlt.git")
2271 (commit (string-append "v" version))))
2272 (file-name (git-file-name name version))
307ad140
RW
2273 (sha256
2274 (base32
3e1ccbef 2275 "0iiqym15n8kbnjzj0asmm86gs23yykz0va5b475cc4v2vv5admgx"))))
307ad140
RW
2276 (build-system gnu-build-system)
2277 (arguments
7acc52f9 2278 `(#:tests? #f ; no tests
0fe041bd 2279 #:make-flags '("CC=gcc" "CXX=g++")
307ad140
RW
2280 #:configure-flags
2281 (list "--enable-gpl3"
2282 "--enable-gpl")
2283 #:phases
2284 (modify-phases %standard-phases
2285 (add-after
7acc52f9
TGR
2286 'configure 'override-LDFLAGS
2287 (lambda* (#:key outputs #:allow-other-keys)
2288 (substitute* "config.mak"
2289 (("LDFLAGS\\+=")
2290 (string-append "LDFLAGS+=-Wl,-rpath="
2291 (assoc-ref outputs "out")
2292 "/lib ")))
2293 #t)))))
307ad140
RW
2294 (inputs
2295 `(("alsa-lib" ,alsa-lib)
bb5c508c 2296 ("ffmpeg" ,ffmpeg-3.4)
307ad140 2297 ("fftw" ,fftw)
e7cdd311
MM
2298 ("frei0r-plugins" ,frei0r-plugins)
2299 ("gdk-pixbuf" ,gdk-pixbuf)
2300 ("gtk+" ,gtk+-2)
307ad140
RW
2301 ("libxml2" ,libxml2)
2302 ("jack" ,jack-1)
2303 ("ladspa" ,ladspa)
2304 ("libsamplerate" ,libsamplerate)
4c7729dc 2305 ("pulseaudio" ,pulseaudio)
e7cdd311
MM
2306 ("qtbase" ,qtbase)
2307 ("qtsvg" ,qtsvg)
307ad140
RW
2308 ("sdl" ,sdl)
2309 ("sox" ,sox)))
2310 (native-inputs
2311 `(("pkg-config" ,pkg-config)))
4c7729dc 2312 (home-page "https://www.mltframework.org/")
307ad140
RW
2313 (synopsis "Author, manage, and run multitrack audio/video compositions")
2314 (description
2315 "MLT is a multimedia framework, designed and developed for television
2316broadcasting. It provides a toolkit for broadcasters, video editors, media
2317players, transcoders, web streamers and many more types of applications. The
2318functionality of the system is provided via an assortment of ready to use
2319tools, XML authoring components, and an extensible plug-in based API.")
42b9541c 2320 (license license:gpl3)))
f464016d 2321
945d985a
DT
2322(define-public v4l-utils
2323 (package
2324 (name "v4l-utils")
fdf1108a 2325 (version "1.16.6")
945d985a
DT
2326 (source (origin
2327 (method url-fetch)
1d4ac724 2328 (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
945d985a
DT
2329 "/v4l-utils-" version ".tar.bz2"))
2330 (sha256
2331 (base32
fdf1108a 2332 "1bkqlrizx0j2rd6ybam2x17bjrpwzl4v4szmnzm3cmixis3w3npr"))))
945d985a
DT
2333 (build-system gnu-build-system)
2334 (arguments
2335 '(#:configure-flags
2336 (list (string-append "--with-udevdir="
2337 (assoc-ref %outputs "out")
0fe041bd 2338 "/lib/udev"))))
945d985a 2339 (native-inputs
4ca077d5
TGR
2340 `(("perl" ,perl)
2341 ("pkg-config" ,pkg-config)))
945d985a
DT
2342 (inputs
2343 `(("alsa-lib" ,alsa-lib)
2344 ("glu" ,glu)
2345 ("libjpeg" ,libjpeg)
2346 ("libx11" ,libx11)
b37662e2 2347 ("qtbase" ,qtbase)
945d985a
DT
2348 ("eudev" ,eudev)))
2349 (synopsis "Realtime video capture utilities for Linux")
2350 (description "The v4l-utils provide a series of libraries and utilities to
2351be used for realtime video capture via Linux-specific APIs.")
2352 (home-page "https://linuxtv.org/wiki/index.php/V4l-utils")
2353 ;; libv4l2 is LGPL2.1+, while utilities are GPL2 only.
2354 (license (list license:lgpl2.1+ license:gpl2))))
2355
f464016d
DT
2356(define-public obs
2357 (package
2358 (name "obs")
31649323 2359 (version "24.0.4")
f464016d 2360 (source (origin
2f069a1f
RW
2361 (method git-fetch)
2362 (uri (git-reference
a42bdd1c 2363 (url "https://github.com/obsproject/obs-studio.git")
2f069a1f
RW
2364 (commit version)))
2365 (file-name (git-file-name name version))
f464016d
DT
2366 (sha256
2367 (base32
31649323 2368 "0m15ch2ix9qrdf1a9mj7wcpl72z3h13zx60c9q72sb1435id2g1q"))))
f464016d 2369 (build-system cmake-build-system)
08858812 2370 (arguments
6854a5d5 2371 `(#:tests? #f)) ; no tests
f464016d
DT
2372 (native-inputs
2373 `(("pkg-config" ,pkg-config)))
2374 (inputs
4f98c3c5
EF
2375 `(("alsa-lib" ,alsa-lib)
2376 ("curl" ,curl)
f464016d
DT
2377 ("eudev" ,eudev)
2378 ("ffmpeg" ,ffmpeg)
4f98c3c5 2379 ("fontconfig" ,fontconfig)
f464016d
DT
2380 ("freetype" ,freetype)
2381 ("jack" ,jack-1)
2382 ("jansson" ,jansson)
2383 ("libx264" ,libx264)
2384 ("libxcomposite" ,libxcomposite)
2385 ("mesa" ,mesa)
2386 ("pulseaudio" ,pulseaudio)
90a2309b 2387 ("qtbase" ,qtbase)
900ddbf5 2388 ("qtsvg" ,qtsvg)
90a2309b 2389 ("qtx11extras" ,qtx11extras)
4f98c3c5 2390 ("speex" ,speex)
d4df2032 2391 ("v4l-utils" ,v4l-utils)
f464016d
DT
2392 ("zlib" ,zlib)))
2393 (synopsis "Live streaming software")
2394 (description "Open Broadcaster Software provides a graphical interface for
2395video recording and live streaming. OBS supports capturing audio and video
2396from many input sources such as webcams, X11 (for screencasting), PulseAudio,
2397and JACK.")
2398 (home-page "https://obsproject.com")
f3bd1728 2399 (supported-systems '("x86_64-linux" "i686-linux"))
f464016d 2400 (license license:gpl2+)))
d5650f86
EF
2401
2402(define-public libvdpau
2403 (package
2404 (name "libvdpau")
65ff644e 2405 (version "1.3")
d5650f86
EF
2406 (source
2407 (origin
65ff644e
RH
2408 (method git-fetch)
2409 (uri (git-reference
2410 (url "https://gitlab.freedesktop.org/vdpau/libvdpau.git")
2411 (commit version)))
2412 (file-name (git-file-name name version))
d5650f86
EF
2413 (sha256
2414 (base32
65ff644e
RH
2415 "1fb1nh5apr9kzx9bm2lysjwpyva1s60b2l2p230nqgvb11q25hd2"))))
2416 (build-system meson-build-system)
d5650f86
EF
2417 (native-inputs
2418 `(("pkg-config" ,pkg-config)))
2419 (inputs
3993a28a
MB
2420 `(("libx11" ,libx11 "out")
2421 ("libxext" ,libxext)
2422 ("xorgproto" ,xorgproto)))
d5650f86
EF
2423 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
2424 (synopsis "Video Decode and Presentation API")
2425 (description "VDPAU is the Video Decode and Presentation API for UNIX. It
2426provides an interface to video decode acceleration and presentation hardware
2427present in modern GPUs.")
2428 (license (license:x11-style "file://COPYING"))))
3161d32d
EF
2429
2430(define-public vdpauinfo
2431 (package
2432 (name "vdpauinfo")
2433 (version "1.0")
2434 (source
2435 (origin
2436 (method url-fetch)
2437 (uri (string-append "https://secure.freedesktop.org/~aplattner/vdpau/"
2438 name "-" version ".tar.gz"))
2439 (sha256
2440 (base32
2441 "1i2b0k9h8r0lnxlrkgqzmrjakgaw3f1ygqqwzx8w6676g85rcm20"))))
2442 (build-system gnu-build-system)
2443 (native-inputs
2444 `(("pkg-config" ,pkg-config)
2445 ("libx11" ,libx11)))
2446 (propagated-inputs
2447 `(("libvdpau" ,libvdpau)))
2448 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
2449 (synopsis "Tool to query the capabilities of a VDPAU implementation")
2450 (description "Vdpauinfo is a tool to query the capabilities of a VDPAU
2451implementation.")
2452 (license (license:x11-style "file://COPYING"))))
a7d94b54 2453
67df7164
EF
2454(define-public libvdpau-va-gl
2455 (package
2456 (name "libvdpau-va-gl")
2457 (version "0.4.2")
2458 (source
2459 (origin
2460 (method url-fetch)
2461 (uri (string-append "https://github.com/i-rinat/libvdpau-va-gl/"
2462 "releases/download/v" version "/libvdpau-va-gl-"
2463 version ".tar.gz"))
2464 (sha256
2465 (base32
2466 "1x2ag1f2fwa4yh1g5spv99w9x1m33hbxlqwyhm205ssq0ra234bx"))
2467 (patches (search-patches "libvdpau-va-gl-unbundle.patch"))
2468 (modules '((guix build utils)))
6cbee49d
MW
2469 (snippet '(begin (delete-file-recursively "3rdparty")
2470 #t))))
67df7164
EF
2471 (build-system cmake-build-system)
2472 (arguments
2473 '(#:tests? #f)) ; Tests require a running X11 server, with VA-API support.
2474 (native-inputs
2475 `(("libvdpau" ,libvdpau)
2476 ("pkg-config" ,pkg-config)))
2477 (inputs
2478 `(("libva" ,libva)
2479 ("mesa" ,mesa)))
2480 (home-page "https://github.com/i-rinat/libvdpau-va-gl")
2481 (synopsis "VDPAU driver with VA-API/OpenGL backend")
2482 (description
2483 "Many applications can use VDPAU to accelerate portions of the video
2484decoding process and video post-processing to the GPU video hardware. Since
2485there is no VDPAU available on Intel chips, they fall back to different drawing
2486techniques. This driver uses OpenGL under the hood to accelerate drawing and
2487scaling and VA-API (if available) to accelerate video decoding.")
2488 (license license:expat)))
2489
a7d94b54
LC
2490(define-public recordmydesktop
2491 (package
2492 (name "recordmydesktop")
2493 (version "0.3.8.1")
2494 (source (origin
2495 (method url-fetch)
2496 (uri (string-append "mirror://sourceforge/" name "/" name "/"
2497 version "/recordmydesktop-" version ".tar.gz"))
2498 (sha256
2499 (base32
2500 "133kkl5j0r877d41bzj7kj0vf3xm8x80yyx2n8nqxrva304f58ik"))))
2501 (build-system gnu-build-system)
2502 (inputs `(("popt" ,popt)
2503 ("zlib" ,zlib)
2504 ("libx11" ,libx11)
2505 ("libice" ,libice)
2506 ("libsm" ,libsm)
2507 ("libxfixes" ,libxfixes)
2508 ("libxdamage" ,libxdamage)
2509 ("libxext" ,libxext)
ed6ba9cc 2510 ("alsa-lib" ,alsa-lib)
a7d94b54
LC
2511 ("libvorbis" ,libvorbis)
2512 ("libtheora" ,libtheora)))
2513 (home-page "http://recordmydesktop.sourceforge.net/")
2514 (synopsis "Desktop session video recorder")
2515 (description
2516 "recordMyDesktop is a command-line tool that captures the activity in
2517your graphical desktop and encodes it as a video. This is a useful tool for
2518making @dfn{screencasts}.")
2519 (license license:gpl2+)))
d8841cc5 2520
63cd4d53
AV
2521(define-public simplescreenrecorder
2522 (package
2523 (name "simplescreenrecorder")
8332ac03 2524 (version "0.3.11")
63cd4d53
AV
2525 (source
2526 (origin
21309b8b
RW
2527 (method git-fetch)
2528 (uri (git-reference
2529 (url "https://github.com/MaartenBaert/ssr.git")
2530 (commit version)))
2531 (file-name (git-file-name name version))
63cd4d53
AV
2532 (sha256
2533 (base32
21309b8b 2534 "0n702dnv4qshgn3b90ixvplfafjhgz6040yir5vy8khjdpciysq4"))))
83c92882 2535 (build-system cmake-build-system)
63cd4d53
AV
2536 ;; Although libx11, libxfixes, libxext are listed as build dependencies in
2537 ;; README.md, the program builds and functions properly without them.
2538 ;; As a result, they are omitted. Please add them back if problems appear.
2539 (inputs
2540 `(("alsa-lib" ,alsa-lib)
8332ac03 2541 ("ffmpeg" ,ffmpeg)
63cd4d53
AV
2542 ("glu" ,glu)
2543 ("jack" ,jack-1)
2544 ("libxi" ,libxi)
2545 ("pulseaudio" ,pulseaudio)
91562061
MB
2546 ("qtbase" ,qtbase)
2547 ("qtx11extras" ,qtx11extras)))
63cd4d53 2548 (native-inputs `(("pkg-config" ,pkg-config)))
83c92882
TGR
2549 (arguments
2550 `(#:configure-flags
2551 (list "-DWITH_QT5=TRUE")
2552 #:tests? #f)) ; no test suite
63cd4d53
AV
2553 ;; Using HTTPS causes part of the page to be displayed improperly.
2554 (home-page "http://www.maartenbaert.be/simplescreenrecorder/")
2555 (synopsis "Screen recorder")
2556 (description "SimpleScreenRecorder is an easy to use screen recorder with
2557a graphical user interface. It supports recording the entire screen, or a
2558part of it, and allows encoding in many different codecs and file formats.
2559Other features include a live preview and live streaming.")
2560 (license (list license:gpl3+ ; most files
2561 license:zlib ; glinject/elfhacks.*
2562 license:isc ; glinject/*
2563 license:x11)))) ; build-aux/install-sh
2564
d8841cc5
KK
2565(define-public libsmpeg
2566 (package
2567 (name "libsmpeg")
d7764d42 2568 (version "0.4.5-401")
d8841cc5
KK
2569 (source (origin
2570 (method svn-fetch)
2571 (uri (svn-reference
2572 (url "svn://svn.icculus.org/smpeg/trunk/")
2573 (revision 401))) ; last revision before smpeg2 (for SDL 2.0)
b9af0564 2574 (file-name (string-append name "-" version "-checkout"))
d8841cc5
KK
2575 (sha256
2576 (base32
2577 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
2578 (build-system gnu-build-system)
27130ee8
LC
2579 (arguments
2580 ;; libsmpeg fails to build with -std=c++11, which is the default with
2581 ;; GCC 7. Also, 'configure' does CXXFLAGS=$CFLAGS, hence this hack.
2582 '(#:configure-flags '("CFLAGS=-O2 -g -std=c++03")))
d8841cc5
KK
2583 (native-inputs
2584 `(("autoconf" ,autoconf)
2585 ("automake" ,automake)))
2586 (inputs
2587 `(("sdl" ,sdl2)))
2588 (home-page "http://icculus.org/smpeg/")
2589 (synopsis "SDL MPEG decoding library")
2590 (description
2591 "SMPEG (SDL MPEG Player Library) is a free MPEG1 video player library
2592with sound support. Video playback is based on the ubiquitous Berkeley MPEG
2593player, mpeg_play v2.2. Audio is played through a slightly modified mpegsound
2594library, part of splay v0.8.2. SMPEG supports MPEG audio (MP3), MPEG-1 video,
2595and MPEG system streams.")
2596 (license (list license:expat
2597 license:lgpl2.1
2598 license:lgpl2.1+
2599 license:gpl2))))
4df07622 2600
d7764d42
RW
2601;; for btanks
2602(define-public libsmpeg-with-sdl1
2603 (package (inherit libsmpeg)
2604 (name "libsmpeg")
2605 (version "0.4.5-399")
2606 (source (origin
2607 (method svn-fetch)
2608 (uri (svn-reference
2609 (url "svn://svn.icculus.org/smpeg/trunk/")
2610 (revision 399))) ; tagged release 0.4.5
2611 (file-name (string-append name "-" version "-checkout"))
2612 (sha256
2613 (base32
2614 "0jfi085rf3fa5xsn0vd3nqf32my8ph9c6a9445y7a8lrlz4dms64"))))
2615 (inputs
2616 `(("sdl" ,sdl)))))
2617
4df07622
AP
2618(define-public libbdplus
2619 (package
2620 (name "libbdplus")
2621 (version "0.1.2")
2622 (source
2623 (origin
2624 (method url-fetch)
6f13c4fd 2625 (uri (string-append "https://ftp.videolan.org/pub/videolan/libbdplus/"
4df07622
AP
2626 version "/" name "-" version ".tar.bz2"))
2627 (sha256
2628 (base32 "02n87lysqn4kg2qk7d1ffrp96c44zkdlxdj0n16hbgrlrpiwlcd6"))))
2629 (inputs
2630 `(("libgcrypt" ,libgcrypt)))
2631 (build-system gnu-build-system)
b8a31908 2632 (home-page "https://www.videolan.org/developers/libbdplus.html")
4df07622
AP
2633 (synopsis "Library for decrypting certain Blu-Ray discs")
2634 (description "libbdplus is a library which implements the BD+ System
2635specifications.")
2636 (license license:lgpl2.1+)))
8dd6fc51
AP
2637
2638(define-public libaacs
2639 (package
2640 (name "libaacs")
ba58886a 2641 (version "0.9.0")
8dd6fc51
AP
2642 (source
2643 (origin
2644 (method url-fetch)
6c2481ef 2645 (uri (string-append "https://ftp.videolan.org/pub/videolan/libaacs/"
8dd6fc51
AP
2646 version "/" name "-" version ".tar.bz2"))
2647 (sha256
ba58886a 2648 (base32 "1kms92i0c7i1yl659kqjf19lm8172pnpik5lsxp19xphr74vvq27"))))
8dd6fc51
AP
2649 (inputs
2650 `(("libgcrypt" ,libgcrypt)))
2651 (native-inputs
2652 `(("bison" ,bison)
2653 ("flex" ,flex)))
2654 (build-system gnu-build-system)
b8a31908 2655 (home-page "https://www.videolan.org/developers/libaacs.html")
8dd6fc51
AP
2656 (synopsis "Library for decrypting certain Blu-Ray discs")
2657 (description "libaacs is a library which implements the Advanced Access
2658Content System specification.")
2659 (license license:lgpl2.1+)))
05234973 2660
2661(define-public mps-youtube
2662 (package
2663 (name "mps-youtube")
c53fa8c8 2664 (version "0.2.8")
05234973 2665 (source
2666 (origin
e0a80ee4
RW
2667 (method git-fetch)
2668 (uri (git-reference
2669 (url "https://github.com/mps-youtube/mps-youtube.git")
2670 (commit (string-append "v" version))))
2671 (file-name (git-file-name name version))
05234973 2672 (sha256
2673 (base32
e0a80ee4 2674 "1w1jhw9rg3dx7vp97cwrk5fymipkcy2wrbl1jaa38ivcjhqg596y"))))
05234973 2675 (build-system python-build-system)
175d6264 2676 (arguments
2677 ;; Tests need to be disabled until #556 upstream is fixed. It reads as if the
2678 ;; test suite results differ depending on the country and also introduce
2679 ;; non-determinism in the tests.
2680 ;; https://github.com/mps-youtube/mps-youtube/issues/556
2681 `(#:tests? #f))
05234973 2682 (propagated-inputs
2683 `(("python-pafy" ,python-pafy)
2684 ("python-pygobject" ,python-pygobject))) ; For mpris2 support
2685 (home-page "https://github.com/mps-youtube/mps-youtube")
2686 (synopsis "Terminal based YouTube player and downloader")
2687 (description
2688 "@code{mps-youtube} is based on mps, a terminal based program to
2689search, stream and download music. This implementation uses YouTube as
2690a source of content and can play and download video as well as audio.
2691It can use either mpv or mplayer for playback, and for conversion of
2692formats ffmpeg or libav is used. Users should install one of the
2693supported players in addition to this package.")
2694 (license license:gpl3+)))
fe047e13
EB
2695
2696(define-public handbrake
2697 (package
2698 (name "handbrake")
c301dcef 2699 (version "1.3.1")
fe047e13
EB
2700 (source (origin
2701 (method url-fetch)
37b82ccc
EB
2702 (uri (string-append "https://download.handbrake.fr/releases/"
2703 version "/HandBrake-" version "-source.tar.bz2"))
fe047e13
EB
2704 (sha256
2705 (base32
c301dcef 2706 "09rcrq0kjs1lc1as7w3glbpbfvzldwpx3xv0pfmkn4pl7acxw1f0"))
fe047e13
EB
2707 (modules '((guix build utils)))
2708 (snippet
37b82ccc
EB
2709 ;; Remove "contrib" and source not necessary for
2710 ;; building/running under a GNU environment.
fe047e13 2711 '(begin
37b82ccc 2712 (for-each delete-file-recursively
dc3e62a4 2713 '("contrib" "macosx" "win")) ; 540KiB, 11MiB, 5.9MiB resp.
37b82ccc
EB
2714 (substitute* "make/include/main.defs"
2715 ;; Disable unconditional inclusion of "contrib" libraries
2716 ;; (ffmpeg, libvpx, libdvdread, libdvdnav, and libbluray),
2717 ;; which would lead to fetching and building of these
2718 ;; libraries. Use our own instead.
2719 (("MODULES \\+= contrib") "# MODULES += contrib"))
dc3e62a4 2720 #t))))
fe047e13
EB
2721 (build-system glib-or-gtk-build-system)
2722 (native-inputs
dc3e62a4 2723 `(("automake" ,automake) ; GUI subpackage must be bootstrapped
fe047e13 2724 ("autoconf" ,autoconf)
fe047e13
EB
2725 ("intltool" ,intltool)
2726 ("libtool" ,libtool)
2727 ("pkg-config" ,pkg-config)
dc3e62a4 2728 ("python" ,python-2))) ; For configuration
fe047e13
EB
2729 (inputs
2730 `(("bzip2" ,bzip2)
2731 ("dbus-glib" ,dbus-glib)
37b82ccc 2732 ("ffmpeg" ,ffmpeg)
fe047e13
EB
2733 ("fontconfig" ,fontconfig)
2734 ("freetype" ,freetype)
2735 ("glib" ,glib)
2736 ("gstreamer" ,gstreamer)
2737 ("gst-plugins-base" ,gst-plugins-base)
2738 ("gtk+" ,gtk+)
37b82ccc 2739 ("jansson" ,jansson)
fe047e13
EB
2740 ("lame" ,lame)
2741 ("libass" ,libass)
2742 ("libbluray" ,libbluray)
dc3e62a4 2743 ("libdav1d" ,dav1d)
fe047e13
EB
2744 ("libdvdnav" ,libdvdnav)
2745 ("libdvdread" ,libdvdread)
2746 ("libgudev" ,libgudev)
2747 ("libmpeg2" ,libmpeg2)
2748 ("libnotify" ,libnotify)
dc3e62a4 2749 ("libnuma" ,numactl)
fe047e13 2750 ("libogg" ,libogg)
37b82ccc 2751 ("libopus" ,opus)
fe047e13
EB
2752 ("libsamplerate" ,libsamplerate)
2753 ("libtheora" ,libtheora)
2754 ("libvorbis" ,libvorbis)
2755 ("libvpx" ,libvpx)
2756 ("libxml2" ,libxml2)
2757 ("libx264" ,libx264)
4bdd41bb 2758 ("speex" ,speex)
fe047e13
EB
2759 ("x265" ,x265)
2760 ("zlib" ,zlib)))
2761 (arguments
2762 `(#:tests? #f ;tests require Ruby and claim to be unsupported
37b82ccc 2763 #:configure-flags
4bdd41bb 2764 (list "--disable-gtk-update-checks"
dc3e62a4 2765 "--disable-nvenc"
4bdd41bb 2766 (string-append "CPPFLAGS=-I"
37b82ccc
EB
2767 (assoc-ref %build-inputs "libxml2")
2768 "/include/libxml2")
2769 "LDFLAGS=-lx265")
fe047e13
EB
2770 #:phases
2771 (modify-phases %standard-phases
189be331 2772 (replace 'bootstrap
fe047e13
EB
2773 ;; Run bootstrap ahead of time so that shebangs get patched.
2774 (lambda _
2775 (setenv "CONFIG_SHELL" (which "sh"))
fe047e13
EB
2776 ;; Patch the Makefile so that it doesn't bootstrap again.
2777 (substitute* "gtk/module.rules"
dc3e62a4
EB
2778 ((".*autoreconf.*") ""))
2779 (with-directory-excursion "gtk"
2780 (invoke "autoreconf" "-fiv"))))
2781 (add-before 'configure 'patch-SHELL
2782 (lambda _
2783 (substitute* "gtk/po/Makefile.in.in"
2784 (("SHELL = /bin/sh") "SHELL = @SHELL@"))
2785 #t))
2786 (add-before 'configure 'relax-reqs
2787 (lambda _
2788 (substitute* "make/configure.py"
2789 ;; cmake is checked for so that it can be used to build
2790 ;; contrib/harfbuzz and contrib/x265, but we get these as
2791 ;; inputs, so don't abort if it's not found. Similarly, meson
2792 ;; and ninja are only needed for contrib/libdav1d, and nasm
2793 ;; only for libvpx
2794 (("((cmake|meson|ninja|nasm) *=.*abort=)True" _ &)
2795 (string-append & "False")))
2796 #t))
fe047e13
EB
2797 (replace 'configure
2798 (lambda* (#:key outputs configure-flags #:allow-other-keys)
2799 ;; 'configure' is not an autoconf-generated script, and
2800 ;; errors on unrecognized arguments,
2801 ;; e.g. --enable-fast-install
2802 (let ((out (assoc-ref outputs "out")))
da6f345c
TGR
2803 (apply invoke "./configure"
2804 (string-append "--prefix=" out)
2805 (or configure-flags '())))))
fe047e13
EB
2806 (add-after 'configure 'chdir-build
2807 (lambda _ (chdir "./build") #t)))))
2808 (home-page "https://handbrake.fr")
2809 (synopsis "Video transcoder")
2810 (description
2811 "HandBrake is a tool for converting video from any format to a selection
2812of modern, widely supported codecs.")
37b82ccc
EB
2813 ;; Some under GPLv2+, some under LGPLv2.1+, and portions under BSD3.
2814 ;; Combination under GPLv2. See LICENSE.
2815 (license license:gpl2)))
590abe01 2816
d8d7565b
TGR
2817(define-public intel-vaapi-driver
2818 (package
2819 (name "intel-vaapi-driver")
02d6e27e 2820 (version "2.4.0")
d8d7565b
TGR
2821 (source
2822 (origin
2823 (method url-fetch)
2824 (uri (string-append "https://github.com/intel/intel-vaapi-driver/"
2825 "releases/download/" version "/intel-vaapi-driver-"
2826 version ".tar.bz2"))
2827 (sha256
02d6e27e 2828 (base32 "12fhydgwpvyh97gxqlgv77wsf9yax321h46vi49j4sxghpcxvqki"))))
d8d7565b
TGR
2829 (build-system gnu-build-system)
2830 (native-inputs
2831 `(("pkg-config" ,pkg-config)))
2832 (inputs
2833 `(("libdrm" ,libdrm)
2834 ("libva" ,libva)
2835 ("libx11" ,libx11)))
2836 (arguments
2837 `(#:phases
2838 (modify-phases %standard-phases
2839 (add-before 'configure 'set-target-directory
2840 (lambda* (#:key outputs #:allow-other-keys)
2841 (let ((out (assoc-ref outputs "out")))
2842 (setenv "LIBVA_DRIVERS_PATH" (string-append out "/lib/dri"))
2843 #t))))))
2844 ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add
2845 ;; this to all VA-API back ends instead of once to libva.
2846 (native-search-paths
2847 (list (search-path-specification
2848 (variable "LIBVA_DRIVERS_PATH")
2849 (files '("lib/dri")))))
3935507f 2850 (supported-systems '("i686-linux" "x86_64-linux"))
d8d7565b
TGR
2851 (home-page "https://01.org/linuxmedia/vaapi")
2852 (synopsis "VA-API video acceleration driver for Intel GEN Graphics devices")
2853 (description
2854 "This is the @acronym{VA-API, Video Acceleration API} back end required for
2855hardware-accelerated video processing on Intel GEN Graphics devices supported by
2856the i915 driver, such as integrated Intel HD Graphics. It provides access to
2857both hardware and shader functionality for faster encoding, decoding, and
2858post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
2859 (license (list license:bsd-2 ; src/gen9_vp9_const_def.c
2860 license:expat)))) ; the rest, excluding the test suite
2861
590abe01
JN
2862(define-public openh264
2863 (package
2864 (name "openh264")
e4386b33 2865 (version "2.0.0")
590abe01
JN
2866 (source (origin
2867 (method url-fetch)
2868 (uri (string-append "https://github.com/cisco/"
03229b36 2869 name "/releases/download/v"
e4386b33 2870 version "/Source.Code.tar.gz"))
590abe01
JN
2871 (file-name (string-append name "-" version ".tar.gz"))
2872 (sha256
2873 (base32
e4386b33 2874 "0iq802xfsfkskg6q1j0kg90xh04vv1sxf61mrmahgynz5d7hx2ii"))))
590abe01
JN
2875 (build-system gnu-build-system)
2876 (native-inputs
2877 `(("nasm" ,nasm)
2878 ("python" ,python)))
2879 (arguments
8363a835
EF
2880 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
2881 "CC=gcc")
590abe01
JN
2882 #:test-target "test"
2883 #:phases (modify-phases %standard-phases
2884 ;; no configure script
2885 (delete 'configure))))
2886 (home-page "http://www.openh264.org/")
2887 (synopsis "H264 decoder library")
2888 (description
2889 "Openh264 is a library which can decode H264 video streams.")
2890 (license license:bsd-2)))
3a44c7bb 2891
2892(define-public libmp4v2
2893 (package
2894 (name "libmp4v2")
2895 (version "2.0.0")
2896 (source
2897 (origin
2898 (method url-fetch)
2899 ;; XXX: The new location of upstream is uncertain and will become relevant the
2900 ;; moment when the googlecode archive shuts down. It is past the date it
2901 ;; should've been turned off. I tried to communicate with upstream, but this
2902 ;; wasn't very responsive and not very helpful. The short summary is, it is
2903 ;; chaos when it comes to the amount of forks and only time will tell where
2904 ;; the new upstream location is.
2905 (uri (string-append "https://storage.googleapis.com/google-"
2906 "code-archive-downloads/v2/"
2907 "code.google.com/mp4v2/mp4v2-" version ".tar.bz2"))
2908 (file-name (string-append name "-" version ".tar.bz2"))
995c30d0 2909 (patches (search-patches "libmp4v2-c++11.patch"))
3a44c7bb 2910 (sha256
2911 (base32
2912 "0f438bimimsvxjbdp4vsr8hjw2nwggmhaxgcw07g2z361fkbj683"))))
2913 (build-system gnu-build-system)
2914 (outputs '("out"
2915 "static")) ; 3.7MiB .a file
2916 (arguments
2917 `(#:phases
2918 (modify-phases %standard-phases
2919 (add-after 'unpack 'remove-dates
2920 (lambda _
2921 ;; Make the build reproducible.
2922 (substitute* "configure"
2923 (("PROJECT_build=\"`date`\"") "PROJECT_build=\"\"")
2924 (("ac_abs_top_builddir=$ac_pwd") "ac_abs_top_builddir=\"\""))
2925 #t))
2926 (add-after 'install 'move-static-libraries
2927 (lambda* (#:key outputs #:allow-other-keys)
2928 ;; Move static libraries to the "static" output.
2929 (let* ((out (assoc-ref outputs "out"))
2930 (lib (string-append out "/lib"))
2931 (static (assoc-ref outputs "static"))
2932 (slib (string-append static "/lib")))
2933 (mkdir-p slib)
2934 (for-each (lambda (file)
2935 (install-file file slib)
2936 (delete-file file))
2937 (find-files lib "\\.a$"))
2938 #t))))))
2939 (native-inputs
2940 `(("help2man" ,help2man)
2941 ("dejagnu" ,dejagnu)))
2942 (home-page "https://code.google.com/archive/p/mp4v2/")
2943 (synopsis "API to create and modify mp4 files")
2944 (description
2945 "The MP4v2 library provides an API to create and modify mp4 files as defined by
2946ISO-IEC:14496-1:2001 MPEG-4 Systems. This file format is derived from Apple's QuickTime
2947file format that has been used as a multimedia file format in a variety of platforms and
2948applications. It is a very powerful and extensible format that can accommodate
2949practically any type of media.")
2950 (license license:mpl1.1)))
e0c40707
EJ
2951
2952(define-public libmediainfo
2953 (package
2954 (name "libmediainfo")
2955 (version "0.7.95")
2956 (source (origin
2957 (method url-fetch)
2958 (uri (string-append "https://mediaarea.net/download/source/"
2959 name "/" version"/"
2960 name "_" version ".tar.bz2"))
2961 (sha256
2962 (base32
2963 "1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b"))))
2964 ;; TODO add a Big Buck Bunny webm for tests.
2965 (native-inputs
2966 `(("autoconf" ,autoconf)
2967 ("automake" ,automake)
2968 ("libtool" ,libtool)
2969 ("pkg-config" ,pkg-config)
2970 ("zlib" ,zlib)
2971 ("tinyxml2" ,tinyxml2)
2972 ("curl" ,curl)
2973 ("libzen" ,libzen)))
2974 (build-system gnu-build-system)
2975 (arguments
2976 '(#:tests? #f ; see above TODO
2977 #:phases
2978 ;; build scripts not in root of archive
2979 (modify-phases %standard-phases
0cae36b5 2980 (add-after 'unpack 'change-to-build-dir
e0c40707 2981 (lambda _
0cae36b5 2982 (chdir "Project/GNU/Library")
1d05b683 2983 #t)))))
e0c40707
EJ
2984 (home-page "https://mediaarea.net/en/MediaInfo")
2985 (synopsis "Library for retrieving media metadata")
2986 (description "MediaInfo is a library used for retrieving technical
2987information and other metadata about audio or video files. A non-exhaustive
2988list of the information MediaInfo can retrieve from media files include:
2989
2990@itemize
2991@item General: title, author, director, album, track number, date, duration...
2992@item Video: codec, aspect, fps, bitrate...
2993@item Audio: codec, sample rate, channels, language, bitrate...
2994@item Text: language of subtitle
2995@item Chapters: number of chapters, list of chapters
2996@end itemize
2997
2998MediaInfo supports the following formats:
2999
3000@itemize
3001@item Video: MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1,
3002MPEG-2, MPEG-4, DVD (VOB)...
3003@item Video Codecs: DivX, XviD, MSMPEG4, ASP, H.264, AVC...)
3004@item Audio: OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...
3005@item Subtitles: SRT, SSA, ASS, SAMI...
3006@end itemize\n")
3007 (license license:bsd-2)))
3008
d5fa2777
EJ
3009;; TODO also have a GUI version available
3010(define-public mediainfo
3011 (package
3012 (name "mediainfo")
f528588a 3013 (version "18.12")
d5fa2777
EJ
3014 (source (origin
3015 (method url-fetch)
f528588a
PN
3016 ;; Warning: This source has proved unreliable 1 time at least.
3017 ;; Consider an alternate source or report upstream if this
3018 ;; happens again.
d5fa2777
EJ
3019 (uri (string-append "https://mediaarea.net/download/source/"
3020 name "/" version "/"
3021 name "_" version ".tar.bz2"))
3022 (sha256
3023 (base32
f528588a 3024 "1ix95ilcjlawcq6phh25cgplm3riqa2ii7ql82g8yagqs4ldqp6a"))))
d5fa2777
EJ
3025 (native-inputs
3026 `(("autoconf" ,autoconf)
3027 ("automake" ,automake)
3028 ("libtool" ,libtool)
3029 ("pkg-config" ,pkg-config)
3030 ("zlib" ,zlib)
c695fb76 3031 ("libmediainfo" ,libmediainfo)
d5fa2777
EJ
3032 ("libzen" ,libzen)))
3033 (build-system gnu-build-system)
3034 (arguments
3035 '(#:tests? #f ; lacks tests
3036 #:phases
3037 ;; build scripts not in root of archive
3038 (modify-phases %standard-phases
2f17187f 3039 (add-after 'unpack 'change-to-build-dir
d5fa2777 3040 (lambda _
2f17187f 3041 (chdir "Project/GNU/CLI")
f528588a 3042 #t)))))
d5fa2777
EJ
3043 (home-page "https://mediaarea.net/en/MediaInfo")
3044 (synopsis "Utility for reading media metadata")
3045 (description "MediaInfo is a utility used for retrieving technical
3046information and other metadata about audio or video files. It supports the
3047many codecs and formats supported by libmediainfo.")
3048 (license license:bsd-2)))
fa379a5b
CL
3049
3050(define-public livemedia-utils
3051 (package
3052 (name "livemedia-utils")
ecdc2f82 3053 (version "2019.05.29")
fa379a5b
CL
3054 (source (origin
3055 (method url-fetch)
3056 (uri (string-append
517c66c0 3057 "https://download.videolan.org/contrib/live555/live."
fa379a5b
CL
3058 version ".tar.gz"))
3059 (sha256
3060 (base32
ecdc2f82 3061 "08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my"))))
fa379a5b
CL
3062 (build-system gnu-build-system)
3063 (arguments
ecdc2f82 3064 '(#:tests? #f ; no tests
fa379a5b
CL
3065 #:make-flags (list "CC=gcc"
3066 (string-append "LDFLAGS=-Wl,-rpath="
3067 (assoc-ref %outputs "out") "/lib")
3068 (string-append "PREFIX="
3069 (assoc-ref %outputs "out")))
3070 #:phases (modify-phases %standard-phases
3071 (add-before 'configure 'fix-makefiles-generation
3072 (lambda _
3073 (substitute* "genMakefiles"
3074 (("/bin/rm") "rm"))
3075 #t))
3076 (replace 'configure
3077 (lambda _
6b677bb0
TGR
3078 (invoke "./genMakefiles"
3079 "linux-with-shared-libraries"))))))
fa379a5b
CL
3080 (home-page "http://www.live555.com/liveMedia/")
3081 (synopsis "Set of C++ libraries for multimedia streaming")
3082 (description "This code forms a set of C++ libraries for multimedia
3083streaming, using open standard protocols (RTP/RTCP, RTSP, SIP). The libraries
3084can be used to stream, receive, and process MPEG, H.265, H.264, H.263+, DV or
3085JPEG video, and several audio codecs. They can easily be extended to support
3086additional (audio and/or video) codecs, and can also be used to build basic
3087RTSP or SIP clients and servers.")
3088 (license license:lgpl3+)))
0dff4dd9
CL
3089
3090(define-public libdvbpsi
3091 (package
3092 (name "libdvbpsi")
1cb256ab 3093 (version "1.3.3")
0dff4dd9
CL
3094 (source (origin
3095 (method url-fetch)
3096 (uri (string-append
3097 "https://download.videolan.org/pub/libdvbpsi/"
3098 version "/libdvbpsi-" version ".tar.bz2"))
3099 (sha256
3100 (base32
1cb256ab 3101 "04h1l3vrkrdsrvkgzcr51adk10g6hxcxvgjphyyxz718ry5rkd82"))))
0dff4dd9
CL
3102 (build-system gnu-build-system)
3103 (home-page "https://www.videolan.org/developers/libdvbpsi.html")
3104 (synopsis "Library for decoding and generation of MPEG TS and DVB PSI
3105tables")
3106 (description "libdvbpsi is a simple library designed for decoding and
3107generation of MPEG TS and DVB PSI tables according to standards ISO/IEC 13818s
3108and ITU-T H.222.0.")
3109 (license license:lgpl2.1)))
6779ae27
JL
3110
3111(define-public ffms2
3112 (package
3113 (name "ffms2")
3114 (version "2.23")
b1eaede0 3115 (home-page "https://github.com/FFMS/ffms2")
6779ae27 3116 (source (origin
940fdd0c
RW
3117 (method git-fetch)
3118 (uri (git-reference
3119 (url "https://github.com/FFMS/ffms2.git")
3120 (commit version)))
3121 (file-name (git-file-name name version))
6779ae27
JL
3122 (sha256
3123 (base32
940fdd0c 3124 "0dkz5b3gxq5p4xz0qqg6l2sigszrlsinz3skyf0ln4wf3zrvf8m5"))))
6779ae27
JL
3125 (build-system gnu-build-system)
3126 (arguments
3127 '(#:configure-flags
3128 (list "--enable-avresample")))
3129 (inputs
3130 `(("zlib" ,zlib)))
3131 (propagated-inputs
3132 `(("ffmpeg" ,ffmpeg)))
3133 (native-inputs
3134 `(("pkg-config" ,pkg-config)))
3135 (synopsis "Cross-platform wrapper around ffmpeg/libav")
3136 (description
3137 "FFMpegSource is a wrapper library around ffmpeg/libav that allows
3138programmers to access a standard API to open and decompress media files.")
3139 ;; sources are distributed under a different license that the binary.
3140 ;; see https://github.com/FFMS/ffms2/blob/master/COPYING
3141 (license license:gpl2+))); inherits from ffmpeg
c812f460
JL
3142
3143(define-public aegisub
3144 (package
3145 (name "aegisub")
3146 (version "3.2.2")
3147 (source (origin
3148 (method url-fetch)
3149 (uri (string-append
3150 "http://ftp.aegisub.org/pub/archives/releases/source/"
3151 name "-" version ".tar.xz"))
3152 (sha256
3153 (base32
18e56ad7 3154 "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5"))
644af6c8
BH
3155 (patches (search-patches "aegisub-icu59-include-unistr.patch"
3156 "aegisub-boost68.patch"))))
c812f460
JL
3157 (build-system gnu-build-system)
3158 (arguments
3159 `(#:configure-flags
3160 (list "--disable-update-checker"
3161 "--without-portaudio"
3162 "--without-openal"
18e56ad7
BH
3163 "--without-oss"
3164 "CXXFLAGS=-DU_USING_ICU_NAMESPACE=1")
c812f460
JL
3165 ;; tests require busted, a lua package we don't have yet
3166 #:tests? #f
3167 #:phases
3168 (modify-phases %standard-phases
3169 (add-before 'configure 'fix-ldflags
3170 (lambda _
18e56ad7 3171 (setenv "LDFLAGS" "-pthread")
f6974e15
BH
3172 #t))
3173 (add-after 'unpack 'fix-boost-headers
3174 (lambda _
3175 (substitute*
3176 '("src/subtitles_provider_libass.cpp"
3177 "src/colour_button.cpp"
3178 "src/video_provider_dummy.cpp"
3179 "./src/video_frame.cpp")
3180 (("#include <boost/gil/gil_all.hpp>")
3181 "#include <boost/gil.hpp>"))
3182 #t)))))
c812f460
JL
3183 (inputs
3184 `(("boost" ,boost)
3185 ("desktop-file-utils" ,desktop-file-utils)
3186 ("ffms2" ,ffms2)
3187 ("fftw" ,fftw)
3188 ("hunspell" ,hunspell)
3189 ("mesa" ,mesa)
3190 ("libass" ,libass)
3191 ("alsa-lib" ,alsa-lib)
3192 ("pulseaudio" ,pulseaudio)
3193 ("libx11" ,libx11)
3194 ("freetype" ,freetype)
3195 ("wxwidgets-gtk2" ,wxwidgets-gtk2)))
3196 (native-inputs
3197 `(("intltool" ,intltool)
3198 ("pkg-config" ,pkg-config)))
3199 (home-page "http://www.aegisub.org/")
3200 (synopsis "Subtitle engine")
3201 (description
3202 "Aegisub is a tool for creating and modifying subtitles. Aegisub makes
3203it quick and easy to time subtitles to audio, and features many powerful
3204tools for styling them, including a built-in real-time video preview.")
3205 (license (list license:bsd-3 ; the package is licensed under the bsd-3, except
3206 license:mpl1.1 ; for vendor/universalchardet under the mpl1.1
3207 license:expat)))) ; and src/gl that is under a license similar
3208 ; the the Expat license, with a rewording (Software -> Materials). (called MIT
3209 ; by upstream). See https://github.com/Aegisub/Aegisub/blob/master/LICENCE
3210 ; src/MatroskaParser.(c|h) is under bsd-3 with permission from the author
3211
635f981b 3212(define-public gst-transcoder
3213 (package
3214 (name "gst-transcoder")
3215 (version "1.12.2")
3216 (source
3217 (origin
e7c7b10d
RW
3218 (method git-fetch)
3219 (uri (git-reference
3220 (url "https://github.com/pitivi/gst-transcoder.git")
3221 (commit version)))
3222 (file-name (git-file-name name version))
635f981b 3223 (sha256
3224 (base32
e7c7b10d 3225 "0nw1zykqc6c8xs3ri55pm00pwyz93z4y4nd880apfiwj7yv5p3az"))))
635f981b 3226 (build-system meson-build-system)
3227 (inputs
3228 `(("gobject-introspection" ,gobject-introspection)
3229 ("glib" ,glib)
3230 ("gstreamer" ,gstreamer)
3231 ("gst-plugins-base" ,gst-plugins-base)))
3232 (native-inputs
3233 `(("python" ,python)
3234 ("pkg-config" ,pkg-config)))
3235 (home-page "https://github.com/pitivi/gst-transcoder/")
3236 (synopsis "GStreamer Transcoding API")
3237 (description "GStreamer Transcoding API")
3238 (license license:lgpl2.1)))
e37bdc0f 3239
3240(define-public gavl
3241 (package
3242 (name "gavl")
3243 (version "1.4.0")
3244 (source
3245 (origin
3246 (method url-fetch)
3247 (uri (string-append "mirror://sourceforge/gmerlin/"
3248 name "/" version "/"
3249 name "-" version ".tar.gz"))
3250 (file-name (string-append name "-" version ".tar.gz"))
3251 (sha256
3252 (base32
3253 "1kikkn971a14zzm7svi7190ldc14fjai0xyhpbcmp48s750sraji"))))
3254 (build-system gnu-build-system)
c178aa34
EF
3255 (arguments
3256 '(#:configure-flags '("LIBS=-lm")))
e37bdc0f 3257 (native-inputs
3258 `(("pkg-config" ,pkg-config)
3259 ("doxygen" ,doxygen)))
3260 (home-page "http://gmerlin.sourceforge.net")
3261 (synopsis "Low level library for multimedia API building")
3262 (description
3263 "Gavl is short for Gmerlin Audio Video Library. It is a low level
3264library, upon which multimedia APIs can be built. Gavl handles all the
3265details of audio and video formats like colorspaces, sample rates,
3266multichannel configurations, etc. It provides standardized definitions for
3267those formats as well as container structures for carrying audio samples or
3268video images inside an application.
3269
3270In addition, it handles the sometimes ugly task of converting between all
3271these formats and provides some elementary operations (copying, scaling,
3272alpha blending etc).")
3273 (license license:gpl3)))
49e1d76d 3274
3275(define-public frei0r-plugins
3276 (package
3277 (name "frei0r-plugins")
1debba19 3278 (version "1.7.0")
49e1d76d 3279 (source
3280 (origin
3281 (method url-fetch)
3282 (uri (string-append "https://files.dyne.org/frei0r/"
3283 "frei0r-plugins-" version ".tar.gz"))
3284 (sha256
3285 (base32
1debba19 3286 "0fjji3060r4fwr7vn91lwfzl80lg3my9lkp94kbyw8xwz7qgh7qv"))))
49e1d76d 3287 (build-system gnu-build-system)
3288 (arguments
3289 `(#:phases
3290 (modify-phases %standard-phases
1debba19 3291 (add-after 'unpack 'patch-Makefile
49e1d76d 3292 (lambda _
1debba19
MB
3293 ;; XXX: The 1.7.0 Makefile looks for files that have slightly different
3294 ;; names in the tarball. Try removing this for future versions.
3295 (substitute* "Makefile.in"
3296 (("README\\.md ChangeLog TODO AUTHORS")
3297 "README.txt ChangeLog.txt TODO.txt AUTHORS.txt"))
3298 #t)))))
63181c85 3299 ;; TODO: opencv for additional face detection filters.
49e1d76d 3300 (inputs
3301 `(("gavl" ,gavl)
3302 ("cairo" ,cairo)))
3303 (native-inputs
1debba19 3304 `(("pkg-config" ,pkg-config)))
49e1d76d 3305 (home-page "https://www.dyne.org/software/frei0r/")
3306 (synopsis "Minimalistic plugin API for video effects")
3307 (description
3308 "Frei0r is a minimalistic plugin API for video effects.
3309The main emphasis is on simplicity for an API that will round up
3310the most common video effects into simple filters, sources and
3311mixers that can be controlled by parameters. Frei0r wants to
3312provide a way to share these simple effects between many
3313applications, avoiding their reimplementation by different projects.
3314It counts more than 100 plugins.")
3315 (license (list license:gpl2+
3316 ;; The following files are licensed as LGPL2.1+:
3317 ;; src/generator/ising0r/ising0r.c
3318 ;; src/generator/onecol0r/onecol0r.cpp
3319 ;; src/generator/nois0r/nois0r.cpp
3320 ;; src/generator/lissajous0r/lissajous0r.cpp
3321 ;; src/filter/ndvi/gradientlut.hpp
3322 ;; src/filter/ndvi/ndvi.cpp
3323 ;; src/filter/facedetect/facedetect.cpp
3324 license:lgpl2.1+))))
eb3e41c9
LC
3325
3326(define-public motion
3327 (package
3328 (name "motion")
a9e9c738 3329 (version "4.2.2")
eb3e41c9
LC
3330 (home-page "https://motion-project.github.io/")
3331 (source (origin
2ea678fa
TGR
3332 (method git-fetch)
3333 (uri (git-reference
3334 (url "https://github.com/Motion-Project/motion.git")
3335 (commit (string-append "release-" version))))
eb3e41c9
LC
3336 (sha256
3337 (base32
a9e9c738 3338 "05c1gx75xy2hw49x6vkydvwxbr80kipsc3nr906k3hq8735svx6f"))
2ea678fa 3339 (file-name (git-file-name name version))))
eb3e41c9
LC
3340 (build-system gnu-build-system)
3341 (native-inputs
464f5447 3342 `(("autoconf" ,autoconf-wrapper)
eb3e41c9 3343 ("automake" ,automake)
33bddd30 3344 ("gettext" ,gettext-minimal)
eb3e41c9
LC
3345 ("pkg-config" ,pkg-config)))
3346 (inputs
3347 `(("libjpeg" ,libjpeg)
bb5c508c 3348 ("ffmpeg" ,ffmpeg-3.4)
c3069cd1 3349 ("libmicrohttpd" ,libmicrohttpd)
eb3e41c9
LC
3350 ("sqlite" ,sqlite)))
3351 (arguments
3352 '(#:phases (modify-phases %standard-phases
189be331 3353 (replace 'bootstrap
eb3e41c9
LC
3354 (lambda _
3355 (patch-shebang "version.sh")
3356 (invoke "autoreconf" "-vfi"))))
3357 #:configure-flags '("--sysconfdir=/etc")
3358 #:make-flags (list (string-append "sysconfdir="
3359 (assoc-ref %outputs "out")
3360 "/etc"))
3361
a9e9c738 3362 #:tests? #f)) ; no 'check' target
eb3e41c9
LC
3363 (synopsis "Detect motion from video signals")
3364 (description
3365 "Motion is a program that monitors the video signal from one or more
3366cameras and is able to detect if a significant part of the picture has
3367changed. Or in other words, it can detect motion.")
3368
3369 ;; Some files say "version 2" and others "version 2 or later".
3370 (license license:gpl2)))
f27f264e
PN
3371
3372(define-public subdl
3373 (let ((commit "4cf5789b11f0ff3f863b704b336190bf968cd471")
3374 (revision "1"))
3375 (package
3376 (name "subdl")
3377 (version (git-version "1.0.3" revision commit))
3378 (source (origin
3379 (method git-fetch)
3380 (uri (git-reference
3381 (url "https://github.com/alexanderwink/subdl.git")
3382 (commit commit)))
3383 (file-name (git-file-name name version))
3384 (sha256
3385 (base32
3386 "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8"))))
3387 (build-system trivial-build-system)
3388 (arguments
3389 `(#:modules ((guix build utils))
3390 #:builder (begin
3391 (use-modules (guix build utils))
3392 (let* ((out (assoc-ref %outputs "out"))
3393 (bin (string-append out "/bin"))
3394 (source (assoc-ref %build-inputs "source"))
3395 (python (assoc-ref %build-inputs "python")))
3396 (install-file (string-append source "/subdl") bin)
3397 (patch-shebang (string-append bin "/subdl")
3398 (list (string-append python "/bin")))))))
3399 (inputs `(("python" ,python)))
3400 (synopsis "Command-line tool for downloading subtitles from opensubtitles.org")
3401 (description "Subdl is a command-line tool for downloading subtitles from
3402opensubtitles.org. By default, it will search for English subtitles, display
3403the results, download the highest-rated result in the requested language and
3404save it to the appropriate filename.")
3405 (license license:gpl3+)
3406 (home-page "https://github.com/alexanderwink/subdl"))))
eb88e2c1
CL
3407
3408(define-public l-smash
3409 (package
3410 (name "l-smash")
3411 (version "2.14.5")
3412 (source (origin
45b2eff0
RW
3413 (method git-fetch)
3414 (uri (git-reference
3415 (url "https://github.com/l-smash/l-smash.git")
3416 (commit (string-append "v" version))))
3417 (file-name (git-file-name name version))
eb88e2c1
CL
3418 (sha256
3419 (base32
45b2eff0 3420 "0rcq9727im6kd8da8b7kzzbzxdldvmh5nsljj9pvr4m3lj484b02"))))
eb88e2c1
CL
3421 (build-system gnu-build-system)
3422 (arguments
3423 `(#:tests? #f ;no tests
3424 #:make-flags
3425 (list (string-append "LDFLAGS=-Wl,-L.,-rpath="
3426 (assoc-ref %outputs "out") "/lib"))
3427 #:phases
3428 (modify-phases %standard-phases
3429 ;; configure fails if it is followed by CONFIG_SHELL
3430 (replace 'configure
3431 (lambda* (#:key outputs #:allow-other-keys)
3432 (let ((out (assoc-ref outputs "out")))
3433 (invoke "./configure" (string-append "--prefix=" out)
3434 "--disable-static")))))))
3435 (native-inputs
3436 `(("which" ,which)))
3437 (home-page "https://l-smash.github.io/l-smash/")
3438 (synopsis "MP4 multiplexer and demultiplexer library")
3439 (description
3440 "L-SMASH is a cross-platform library that handles the ISO base media file
3441format and some of its derived file formats, including MP4. It operates as a
3442multiplexer and demultiplexer, and can mux video and audio in several formats
3443using standalone executable files.")
3444 (license license:isc)))
a0135eee
LF
3445
3446(define-public qtfaststart
3447 (package
3448 (name "qtfaststart")
3449 (version "1.8")
3450 (source (origin
3451 (method url-fetch)
3452 (uri (pypi-uri "qtfaststart" version))
3453 (sha256
3454 (base32
3455 "0hcjfik8hhb1syqvyh5c6aillpvzal26nkjflcq1270z64aj6i5h"))))
3456 (build-system python-build-system)
3457 (arguments
3458 '(#:tests? #f)) ; no test suite
3459 (synopsis "Move QuickTime and MP4 metadata to the beginning of the file")
3460 (description "qtfaststart enables streaming and pseudo-streaming of
3461QuickTime and MP4 files by moving metadata and offset information to the
3462beginning of the file. It can also print some useful information about the
3463structure of the file. This program is based on qt-faststart.c from the FFmpeg
3464project, which is released into the public domain, as well as ISO 14496-12:2005
3465(the official spec for MP4), which can be obtained from the ISO or found
3466online.")
3467 (home-page "https://github.com/danielgtaylor/qtfaststart")
3468 (license license:expat)))
485638cd
LF
3469
3470(define-public vidstab
ad64f271
LF
3471 (let ((commit "aeabc8daa7904f9edf7441a11f293965a5ef53b8")
3472 (revision "0"))
3473 (package
3474 (name "vidstab")
3475 (version (git-version "1.1.0" revision commit))
3476 (source (origin
3477 (method git-fetch)
3478 (uri (git-reference
3479 (url "https://github.com/georgmartius/vid.stab.git")
3480 (commit commit)))
3481 (file-name (git-file-name name version))
3482 (sha256
3483 (base32
3484 "042iy0f3khwzr68djzvqgn301sy21ljvkf52rnc2c73q7ircnzzn"))))
3485 (build-system cmake-build-system)
3486 (arguments
3487 '(#:tests? #f)) ; tests are not run as part of standard build process
3488 (home-page "http://public.hronopik.de/vid.stab/")
3489 (synopsis "Video stabilization library")
3490 (description "Vidstab is a video stabilization library which can be used
485638cd
LF
3491with FFmpeg. A video acquired using a hand-held camera or a camera mounted on a
3492vehicle typically suffers from undesirable shakes and jitters. Activities such
3493as surfing, skiing, riding and walking while shooting videos are especially
3494prone to erratic camera shakes. Vidstab targets these video contents to help
3495create smoother and stable videos.")
ad64f271 3496 (license license:gpl2+))))
579a9cde
EB
3497
3498(define-public libopenshot
3499 (package
3500 (name "libopenshot")
4994174f 3501 (version "0.2.3")
579a9cde
EB
3502 (source (origin
3503 (method git-fetch)
3504 (uri (git-reference
3505 (url "https://github.com/OpenShot/libopenshot")
3506 (commit (string-append "v" version))))
3507 (file-name (git-file-name name version))
3508 (sha256
3509 (base32
4994174f 3510 "0r1qmr8ar5n72603xkj9h065vbpznrqsq88kxxmn9n8djyyvk03k"))
579a9cde
EB
3511 (modules '((guix build utils)))
3512 (snippet '(begin
3513 ;; Allow overriding of the python installation dir
3514 (substitute* "src/bindings/python/CMakeLists.txt"
3515 (("(SET\\(PYTHON_MODULE_PATH.*)\\)" _ set)
3516 (string-append set " CACHE PATH "
3517 "\"Python bindings directory\")")))
277becbb 3518 (delete-file-recursively "thirdparty")
4994174f 3519 #t))))
579a9cde
EB
3520 (build-system cmake-build-system)
3521 (native-inputs
3522 `(("pkg-config" ,pkg-config)
3523 ("python" ,python)
3524 ("swig" ,swig)
3525 ("unittest++" ,unittest-cpp)))
3526 (propagated-inputs ;all referenced in installed headers
3527 `(("cppzmq" ,cppzmq)
3528 ("ffmpeg" ,ffmpeg)
3529 ("imagemagick" ,imagemagick)
3530 ("jsoncpp" ,jsoncpp)
3531 ("libopenshot-audio" ,libopenshot-audio)
ad656e70
EF
3532 ("qtbase" ,qtbase)
3533 ("qtmultimedia" ,qtmultimedia)
579a9cde
EB
3534 ("zeromq" ,zeromq)))
3535 (arguments
3536 `(#:configure-flags
3537 (list (string-append "-DPYTHON_MODULE_PATH:PATH=" %output "/lib/python"
3538 ,(version-major+minor (package-version python))
3539 "/site-packages")
3540 "-DUSE_SYSTEM_JSONCPP:BOOL=ON")
3541 #:phases
3542 (modify-phases %standard-phases
3543 (add-before 'configure 'set-vars
3544 (lambda* (#:key inputs #:allow-other-keys)
3545 (setenv "LIBOPENSHOT_AUDIO_DIR"
3546 (assoc-ref inputs "libopenshot-audio"))
3547 (setenv "ZMQDIR"
3548 (assoc-ref inputs "zeromq"))
3549 (setenv "UNITTEST_DIR"
3550 (string-append (assoc-ref inputs "unittest++")
3551 "/include/UnitTest++"))
3552 #t)))))
3553 (home-page "https://openshot.org")
3554 (synopsis "Video-editing, animation, and playback library")
3555 (description "OpenShot Library (libopenshot) is a powerful C++ video
3556editing library with a multi-threaded and feature rich video editing
3557API. It includes bindings for Python, Ruby, and other languages.")
3558 (license license:lgpl3+)))
69a3fcc0
EB
3559
3560(define-public openshot
3561 (package
3562 (name "openshot")
fc83a891 3563 (version "2.4.4")
69a3fcc0
EB
3564 (source (origin
3565 (method git-fetch)
3566 (uri (git-reference
3567 (url "https://github.com/OpenShot/openshot-qt")
3568 (commit (string-append "v" version))))
3569 (file-name (git-file-name name version))
3570 (sha256
3571 (base32
2afb7939
EF
3572 "0mg63v36h7l8kv2sgf6x8c1n3ygddkqqwlciz7ccxpbm4x1idqba"))
3573 (modules '((guix build utils)))
3574 (snippet
3575 '(begin
3576 (delete-file-recursively "src/images/fonts") #t))))
69a3fcc0
EB
3577 (build-system python-build-system)
3578 (inputs
3579 `(("ffmpeg" ,ffmpeg)
2afb7939 3580 ("font-ubuntu" ,font-ubuntu)
69a3fcc0
EB
3581 ("libopenshot" ,libopenshot)
3582 ("python" ,python)
3583 ("python-pyqt" ,python-pyqt)
3584 ("python-pyzmq" ,python-pyzmq)
3585 ("python-requests" ,python-requests)
3586 ("qtsvg" ,qtsvg)))
3587 (arguments
3588 `(#:tests? #f ;no tests
a512aa91
EF
3589 #:modules ((guix build python-build-system)
3590 (guix build qt-utils)
3591 (guix build utils))
3592 #:imported-modules (,@%python-build-system-modules
3593 (guix build qt-utils))
69a3fcc0
EB
3594 #:phases (modify-phases %standard-phases
3595 (delete 'build) ;install phase does all the work
2afb7939
EF
3596 (add-after 'unpack 'patch-font-location
3597 (lambda* (#:key inputs #:allow-other-keys)
3598 (let ((font (assoc-ref inputs "font-ubuntu")))
3599 (substitute* "src/classes/app.py"
3600 (("info.IMAGES_PATH") (string-append "\"" font "\""))
3601 (("fonts") "share/fonts/truetype")))
3602 #t))
69a3fcc0
EB
3603 (add-before 'install 'set-tmp-home
3604 (lambda _
3605 ;; src/classes/info.py "needs" to create several
3606 ;; directories in $HOME when loaded during build
3607 (setenv "HOME" "/tmp")
3608 #t))
3609 (add-after 'install 'wrap-program
a512aa91
EF
3610 (lambda* (#:key outputs #:allow-other-keys)
3611 (let ((out (assoc-ref outputs "out")))
3612 (wrap-qt-program out "openshot-qt"))
3613 #t)))))
69a3fcc0
EB
3614 (home-page "https://openshot.org")
3615 (synopsis "Video editor")
3616 (description "OpenShot takes your videos, photos, and music files and
3617helps you create the film you have always dreamed of. Easily add sub-titles,
3618transitions, and effects and then export your film to many common formats.")
3619 (license license:gpl3+)))
8c380a01
EF
3620
3621(define-public dav1d
3622 (package
3623 (name "dav1d")
fd69abde 3624 (version "0.5.2")
8c380a01
EF
3625 (source
3626 (origin
3627 (method url-fetch)
10f2ae01
MB
3628 (uri (string-append "https://downloads.videolan.org/pub/videolan"
3629 "/dav1d/" version "/dav1d-" version ".tar.xz"))
8c380a01 3630 (sha256
89ccc9ce 3631 (base32
fd69abde 3632 "02hgarv2x2bqbac15pdj7pbm8f4lyn78ws0dncygvhis9a6ghk7r"))))
8c380a01
EF
3633 (build-system meson-build-system)
3634 (native-inputs `(("nasm" ,nasm)))
3635 (home-page "https://code.videolan.org/videolan/dav1d")
3636 (synopsis "AV1 decoder")
3637 (description "dav1d is a new AV1 cross-platform decoder, and focused on
3638speed and correctness.")
3639 (license license:bsd-2)))
20b4aa6b
RH
3640
3641(define-public wlstream
3642 (let ((commit "182076a94562b128c3a97ecc53cc68905ea86838")
3643 (revision "1"))
3644 (package
3645 (name "wlstream")
3646 (version (git-version "0.0" revision commit))
3647 (source
1d591432
RH
3648 (origin
3649 (method git-fetch)
3650 (uri (git-reference
3651 (url "https://github.com/atomnuker/wlstream.git")
3652 (commit commit)))
3653 (file-name (git-file-name name version))
3654 (sha256
3655 (base32
3656 "01qbcgfl3g9kfwn1jf1z9pdj3bvf5lmg71d1vwkcllc2az24bjqp"))))
20b4aa6b
RH
3657 (build-system meson-build-system)
3658 (native-inputs `(("libdrm" ,libdrm)
3659 ("pkg-config" ,pkg-config)))
3660 (inputs `(("ffmpeg" ,ffmpeg)
3661 ("pulseaudio" ,pulseaudio)
3662 ("wayland" ,wayland)
3663 ("wayland-protocols" ,wayland-protocols)))
3664 (home-page "https://github.com/atomnuker/wlstream")
3665 (synopsis "Screen capture tool for Wayland sessions")
3666 (description "Wlstream is a screen capture tool for recording audio and
3667video from a Wayland session.")
3668 (license license:lgpl2.1+))))
08486153
PN
3669
3670(define-public gaupol
3671 (package
3672 (name "gaupol")
ce5b71f9 3673 (version "1.7")
08486153
PN
3674 (source (origin
3675 (method git-fetch)
3676 (uri (git-reference
3677 (url "https://github.com/otsaloma/gaupol/")
3678 (commit version)))
3679 (file-name (git-file-name name version))
3680 (sha256
3681 (base32
ce5b71f9 3682 "1cp0ka8hzma1dxiisdhl2fznxklj2pl63vkdqcd91lrblghdj6x9"))))
08486153
PN
3683 (build-system python-build-system)
3684 (native-inputs
3685 `(("gettext" ,gettext-minimal)
3686 ("pkg-config" ,pkg-config)))
3687 (inputs
3688 `(("python-pygobject" ,python-pygobject)
3689 ("gtk+" ,gtk+)
3690 ("python-pycairo" ,python-pycairo) ; Required or else clicking on a subtitle line fails.
3691 ("python-chardet" ,python-chardet) ; Optional: Character encoding detection.
3692 ("gtkspell3" ,gtkspell3) ; Optional: Inline spell-checking.
3693 ("iso-codes" ,iso-codes) ; Optional: Translations.
3694 ("gstreamer" ,gstreamer)
3695 ("gst-libav" ,gst-libav)
3696 ("gst-plugins-base" ,gst-plugins-base)
3697 ("gst-plugins-good" ,gst-plugins-good)
3698 ("gst-plugins-bad" ,gst-plugins-bad)
3699 ("gst-plugins-ugly" ,gst-plugins-ugly)))
3700 (arguments
3701 `(#:tests? #f ; Tests seem to require networking.
3702 #:phases
3703 (modify-phases %standard-phases
3704 ;; gaupol's setup.py script does not support one of the Python build
3705 ;; system's default flags, "--single-version-externally-managed".
3706 (replace 'install
3707 (lambda* (#:key outputs #:allow-other-keys)
3708 (invoke "python" "setup.py" "install"
3709 (string-append "--prefix=" (assoc-ref outputs "out"))
3710 "--root=/")))
3711 (add-after 'install 'wrap-gaupol
3712 (lambda* (#:key outputs #:allow-other-keys)
3713 (let ((out (assoc-ref outputs "out"))
3714 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
3715 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
3716 (wrap-program (string-append out "/bin/gaupol")
3717 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
3718 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
3719 #t))
3720 (add-after 'unpack 'patch-data-dir
3721 ;; Fix some path variables that setup.py seems to garble.
3722 (lambda* (#:key outputs #:allow-other-keys)
3723 (let ((out (assoc-ref outputs "out")))
3724 (substitute* "setup.py"
3725 (("DATA_DIR = \\{!r\\}\"\\.format\\(data_dir\\)")
3726 (string-append "DATA_DIR = '" out "/share/gaupol'\""))
3727 (("LOCALE_DIR = \\{!r\\}\"\\.format\\(locale_dir\\)")
3728 (string-append "LOCALE_DIR = '" out "/share/locale'\"")))
3729 #t))))))
3730 (synopsis "Editor for text-based subtitles")
3731 (description
3732 "Gaupol supports multiple subtitle file formats and provides means of
3733creating subtitles, editing texts and timing subtitles to match video. The
3734user interface features a builtin video player and is designed with attention
3735to convenience of translating and batch processing of multiple documents.")
3736 (home-page "https://otsaloma.io/gaupol/")
3737 (license license:gpl3+)))
97115892
PN
3738
3739(define-public theorafile
3740 (let ((commit "404b14d7602b5918d117eaa64e8aa6601ede8593"))
3741 (package
3742 (name "theorafile")
3743 (version (git-version "0.0.0" "1" commit))
3744 (source
3745 (origin
3746 (method git-fetch)
3747 (uri (git-reference
3748 (url "https://github.com/FNA-XNA/Theorafile.git")
3749 (commit commit)))
3750 (file-name (git-file-name name version))
3751 (sha256
3752 (base32 "128c3pjzqbgrj020glm5jd6ss18vl19471lj615w2brjwb7c1f0z"))))
3753 (build-system gnu-build-system)
3754 (arguments
3755 '(#:make-flags '("CC=gcc")
3756 #:phases
3757 (modify-phases %standard-phases
3758 (delete 'configure)
3759 (replace 'check
3760 (lambda _
3761 (setenv "CC" "gcc")
3762 (invoke "make" "test")))
3763 (replace 'install
3764 (lambda* (#:key outputs #:allow-other-keys)
3765 (let ((out (assoc-ref outputs "out")))
3766 (install-file "libtheorafile.so" (string-append out "/lib"))
3767 (install-file "theorafile.h" (string-append out "/include")))
3768 #t)))))
3769 (native-inputs
3770 ;; For tests.
3771 `(("sdl2" ,sdl2)))
3772 (home-page "https://github.com/FNA-XNA/Theorafile")
3773 (synopsis "Ogg Theora Video Decoder Library")
3774 (description "Theorafile is a library for quickly and easily decoding Ogg
3775Theora videos. Theorafile was written to be used for FNA's VideoPlayer.")
3776 (license license:zlib))))
b9d8aa09
RV
3777
3778(define-public dvdbackup
3779 (package
3780 (name "dvdbackup")
3781 (version "0.4.2")
3782 (source
3783 (origin
3784 (method url-fetch)
3785 (uri (string-append "mirror://sourceforge/dvdbackup/dvdbackup/"
3786 "dvdbackup-" version "/"
3787 "dvdbackup-" version ".tar.xz"))
3788 (sha256
3789 (base32 "1rl3h7waqja8blmbpmwy01q9fgr5r0c32b8dy3pbf59bp3xmd37g"))))
3790 (build-system gnu-build-system)
3791 (inputs
3792 `(("libdvdcss" ,libdvdcss)
3793 ("libdvdread" ,libdvdread)))
3794 (home-page "http://dvdbackup.sourceforge.net")
3795 (synopsis "DVD video ripper")
3796 (description
3797 "A simple command line tool to backup video from a DVD. Decrypts the
3798DVD using @command{libdvdcss}, but does @strong{not} demux, remux,
3799transcode or reformat the videos in any way, producing perfect backups.")
3800 (license license:gpl3+)))