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