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