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