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