gnu: Add tint2.
[jackhill/guix/guix.git] / gnu / packages / video.scm
... / ...
CommitLineData
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
3;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
4;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
5;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
6;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
9;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com>
10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
11;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28(define-module (gnu packages video)
29 #:use-module (ice-9 match)
30 #:use-module (srfi srfi-1)
31 #:use-module (srfi srfi-26)
32 #:use-module ((guix licenses) #:prefix license:)
33 #:use-module (guix utils)
34 #:use-module (guix packages)
35 #:use-module (guix download)
36 #:use-module (guix git-download)
37 #:use-module (guix svn-download)
38 #:use-module (guix build-system cmake)
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system glib-or-gtk)
41 #:use-module (guix build-system python)
42 #:use-module (guix build-system waf)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages algebra)
45 #:use-module (gnu packages audio)
46 #:use-module (gnu packages autotools)
47 #:use-module (gnu packages avahi)
48 #:use-module (gnu packages base)
49 #:use-module (gnu packages cdrom)
50 #:use-module (gnu packages compression)
51 #:use-module (gnu packages curl)
52 #:use-module (gnu packages databases)
53 #:use-module (gnu packages elf)
54 #:use-module (gnu packages fontutils)
55 #:use-module (gnu packages fribidi)
56 #:use-module (gnu packages gettext)
57 #:use-module (gnu packages ghostscript)
58 #:use-module (gnu packages gl)
59 #:use-module (gnu packages glib)
60 #:use-module (gnu packages guile)
61 #:use-module (gnu packages gnupg)
62 #:use-module (gnu packages gtk)
63 #:use-module (gnu packages image)
64 #:use-module (gnu packages linux)
65 #:use-module (gnu packages lua)
66 #:use-module (gnu packages mp3)
67 #:use-module (gnu packages ncurses)
68 #:use-module (gnu packages ocr)
69 #:use-module (gnu packages perl)
70 #:use-module (gnu packages pkg-config)
71 #:use-module (gnu packages popt)
72 #:use-module (gnu packages pulseaudio)
73 #:use-module (gnu packages python)
74 #:use-module (gnu packages qt)
75 #:use-module (gnu packages sdl)
76 #:use-module (gnu packages ssh)
77 #:use-module (gnu packages texinfo)
78 #:use-module (gnu packages textutils)
79 #:use-module (gnu packages tls)
80 #:use-module (gnu packages version-control)
81 #:use-module (gnu packages web)
82 #:use-module (gnu packages xdisorg)
83 #:use-module (gnu packages xiph)
84 #:use-module (gnu packages xml)
85 #:use-module (gnu packages xorg)
86 #:use-module (gnu packages assembly)
87 #:use-module (gnu packages zip))
88
89(define-public aalib
90 (package
91 (name "aalib")
92 (version "1.4rc5")
93 (source (origin
94 (method url-fetch)
95 (uri (string-append "mirror://sourceforge/aa-project/aa-lib/"
96 version "/" name "-" version ".tar.gz"))
97 (sha256
98 (base32
99 "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv"))))
100 (build-system gnu-build-system)
101 (native-inputs
102 `(("makeinfo" ,texinfo)))
103 (inputs
104 `(("ncurses" ,ncurses)))
105 (arguments
106 '(#:phases
107 (modify-phases %standard-phases
108 (replace 'configure
109 (lambda* (#:key build inputs outputs #:allow-other-keys)
110 ;; This old `configure' script doesn't support
111 ;; variables passed as arguments.
112 (let ((out (assoc-ref outputs "out"))
113 (ncurses (assoc-ref inputs "ncurses")))
114 (setenv "CONFIG_SHELL" (which "bash"))
115 (zero? (system* "./configure"
116 (string-append "--prefix=" out)
117 (string-append "--build=" build)
118 (string-append "--with-ncurses="
119 ncurses)))))))))
120 (home-page "http://aa-project.sourceforge.net/aalib/")
121 (synopsis "ASCII-art library")
122 (description
123 "AA-lib is a low level gfx library which does not require graphics device.
124In fact, there is no graphical output possible. AA-lib replaces those
125old-fashioned output methods with powerful ascii-art renderer.")
126 (license license:lgpl2.0+)))
127
128(define-public liba52
129 (package
130 (name "liba52")
131 (version "0.7.4")
132 (source (origin
133 (method url-fetch)
134 (uri (string-append
135 ;; A mirror://sourceforge URI doesn't work, presumably
136 ;; because the SourceForge project is misconfigured.
137 "http://liba52.sourceforge.net/files/a52dec-" version
138 ".tar.gz"))
139 (sha256
140 (base32
141 "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"))
142 (patches (search-patches "liba52-enable-pic.patch"
143 "liba52-set-soname.patch"
144 "liba52-use-mtune-not-mcpu.patch"
145 "liba52-link-with-libm.patch"))))
146 (build-system gnu-build-system)
147 ;; XXX We need to run ./bootstrap because of the build system fixes above.
148 (native-inputs
149 `(("autoconf" ,autoconf)
150 ("automake" ,automake)
151 ("libtool" ,libtool)))
152 (arguments `(#:configure-flags '("--enable-shared")
153 #:phases
154 (modify-phases %standard-phases
155 ;; XXX We need to run ./bootstrap because of the build
156 ;; system fixes above.
157 (add-after
158 'unpack 'bootstrap
159 (lambda _ (zero? (system* "sh" "bootstrap")))))))
160 (home-page "http://liba52.sourceforge.net/")
161 (synopsis "ATSC A/52 stream decoder")
162 (description "liba52 is a library for decoding ATSC A/52 streams. The
163A/52 standard is used in a variety of applications, including digital
164television and DVD. It is also known as AC-3.")
165 (license license:gpl2+)))
166
167(define-public libmpeg2
168 (package
169 (name "libmpeg2")
170 (version "0.5.1")
171 (source (origin
172 (method url-fetch)
173 ;; A mirror://sourceforge URI doesn't work, presumably
174 ;; because the SourceForge project is misconfigured.
175 (uri (string-append "http://libmpeg2.sourceforge.net/files/"
176 name "-" version ".tar.gz"))
177 (sha256
178 (base32
179 "1m3i322n2fwgrvbs1yck7g5md1dbg22bhq5xdqmjpz5m7j4jxqny"))))
180 (inputs
181 `(("libx11" ,libx11)
182 ("libxext" ,libxext)
183 ("libxv" ,libxv)
184 ("libsm" ,libsm)
185 ("libice" ,libice)
186 ("sdl" ,sdl)))
187 (build-system gnu-build-system)
188 (home-page "http://libmpeg2.sourceforge.net/")
189 (synopsis "MPEG1 and MPEG2 video decoder library")
190 (description
191 "libmpeg2 is a library which can decode MPEG1 and MPEG2 video streams.")
192 (license license:gpl2+)))
193
194(define-public libx264
195 (package
196 (name "libx264")
197 (version "20160220-2245")
198 (source (origin
199 (method url-fetch)
200 (uri (string-append "http://download.videolan.org/pub/x264/snapshots/"
201 "x264-snapshot-" version ".tar.bz2"))
202 (sha256
203 (base32
204 "12zyzbiihfhamf7yi4qqaj6k0nisnrydvfr36kxadvmsm7dg4sj3"))))
205 (build-system gnu-build-system)
206 (native-inputs
207 `(("pkg-config" ,pkg-config)
208 ("yasm" ,yasm)))
209 ;; TODO: Add gpac input
210 (arguments
211 `(#:tests? #f ;no check target
212 #:configure-flags '("--enable-shared"
213 ;; Don't build the command-line program. If we
214 ;; want it later, we should do so in a different
215 ;; package to avoid a circular dependency (the x264
216 ;; program depends on ffmpeg and ffmpeg depends on
217 ;; libx264).
218 "--disable-cli")))
219 (home-page "http://www.videolan.org/developers/x264.html")
220 (synopsis "H.264 video coding library")
221 (description "libx264 is an advanced encoding library for creating
222H.264 (MPEG-4 AVC) video streams.")
223 (license (list license:gpl2+ ;most files
224 license:isc ;common/x86/x86inc.asm
225 license:lgpl2.1+ ;extras/getopt.c
226 license:bsd-3 ;extras/inttypes.h
227 (license:non-copyleft ;extras/cl*.h
228 "file://extras/cl.h"
229 "See extras/cl.h in the distribution.")))))
230
231(define-public libass
232 (package
233 (name "libass")
234 (version "0.13.2")
235 (source (origin
236 (method url-fetch)
237 (uri (string-append
238 "https://github.com/libass/libass/releases/download/"
239 version "/libass-" version ".tar.xz"))
240 (sha256
241 (base32
242 "1kpsw4zw95v4cjvild9wpk73dzavn1khsm3bm32kcz6amnkd166n"))))
243 (build-system gnu-build-system)
244 (native-inputs
245 `(("pkg-config" ,pkg-config)
246 ("yasm" ,yasm)))
247 (propagated-inputs
248 `(("freetype" ,freetype)
249 ("fribidi" ,fribidi)
250 ("fontconfig" ,fontconfig)
251 ("harfbuzz" ,harfbuzz)
252 ("enca" ,enca)))
253 (home-page "https://github.com/libass/libass")
254 (synopsis "Subtitle rendering library for the ASS/SSA format")
255 (description "libass is a subtitle rendering library for the
256ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
257 (license license:isc)))
258
259(define-public libcaca
260 (package
261 (name "libcaca")
262 (version "0.99.beta19")
263 (source (origin
264 (method url-fetch)
265 (uri (string-append "http://caca.zoy.org/files/libcaca/libcaca-"
266 version ".tar.gz"))
267 (sha256
268 (base32
269 "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj"))))
270 (build-system gnu-build-system)
271 (native-inputs `(("pkg-config" ,pkg-config)))
272 (inputs
273 `(("freeglut" ,freeglut)
274 ("ftgl" ,ftgl)
275 ("libx11" ,libx11)
276 ("mesa" ,mesa)
277 ("ncurses" ,ncurses)
278 ("zlib" ,zlib)))
279 (home-page "http://caca.zoy.org/wiki/libcaca")
280 (synopsis "Colour ASCII-art library")
281 (description "libcaca is a graphics library that outputs text instead of
282pixels, so that it can work on older video cards or text terminals. It
283supports Unicode, 2048 colors, dithering of color images, and advanced text
284canvas operations.")
285 (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
286
287(define-public libdca
288 (package
289 (name "libdca")
290 (version "0.0.5")
291 (source (origin
292 (method url-fetch)
293 (uri (string-append
294 "http://download.videolan.org/pub/videolan/libdca/"
295 version "/libdca-" version ".tar.bz2"))
296 (sha256
297 (base32
298 "0hh6a7l8vvccsd5i1fkv9av2gzv9fy8m0b8jpsn5p6hh4bh2586v"))))
299 (build-system gnu-build-system)
300 (home-page "http://www.videolan.org/developers/libdca.html")
301 (synopsis "DTS Coherent Acoustics decoder")
302 (description "libdca is a library for decoding DTS Coherent Acoustics
303streams.")
304 (license license:gpl2+)))
305
306(define-public libdv
307 (package
308 (name "libdv")
309 (version "1.0.0")
310 (source (origin
311 (method url-fetch)
312 (uri (string-append
313 "mirror://sourceforge/" name "/" name "/"
314 version "/" name "-" version ".tar.gz"))
315 (sha256
316 (base32
317 "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"))))
318 (build-system gnu-build-system)
319 (native-inputs `(("pkg-config" ,pkg-config)))
320 (inputs `(("libxv" ,libxv)))
321 (home-page "http://libdv.sourceforge.net/")
322 (synopsis "DV video (IEC 61834 and SMPTE 314M) codec")
323 (description "The Quasar DV codec (libdv) is a software codec for DV
324video, the encoding format used by most digital camcorders, typically those
325that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface. Libdv was
326developed according to the official standards for DV video: IEC 61834 and
327SMPTE 314M.")
328 (license license:lgpl2.1+)))
329
330(define-public libva
331 (package
332 (name "libva")
333 (version "1.7.0")
334 (source
335 (origin
336 (method url-fetch)
337 (uri (string-append
338 "https://www.freedesktop.org/software/vaapi/releases/libva/libva-"
339 version".tar.bz2"))
340 (sha256
341 (base32 "0py9igf4kicj7ji22bjawkpd6my013qpg0s4ir2np9l1rk5vr2d6"))))
342 (build-system gnu-build-system)
343 (native-inputs
344 `(("pkg-config" ,pkg-config)))
345 (inputs
346 `(("libdrm" ,libdrm)
347 ("libx11" ,libx11)
348 ("libxext" ,libxext)
349 ("libxfixes" ,libxfixes)
350 ("mesa" ,mesa)))
351 (arguments
352 `(#:phases
353 (modify-phases %standard-phases
354 (add-before
355 'build 'fix-dlopen-paths
356 (lambda* (#:key outputs #:allow-other-keys)
357 (let ((out (assoc-ref outputs "out")))
358 (substitute* "va/drm/va_drm_auth_x11.c"
359 (("\"libva-x11\\.so\\.%d\"")
360 (string-append "\"" out "/lib/libva-x11.so.%d\"")))))))
361 ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be
362 ;; overridden at run-time via LIBVA_DRIVERS_PATH.)
363 #:configure-flags
364 (list (string-append "--with-drivers-path="
365 (assoc-ref %build-inputs "mesa") "/lib/dri"))
366 ;; However, we can't write to mesa's store directory, so override the
367 ;; following make variable to install the dummy driver to libva's
368 ;; $prefix/lib/dri directory.
369 #:make-flags
370 (list (string-append "dummy_drv_video_ladir="
371 (assoc-ref %outputs "out") "/lib/dri"))))
372 (home-page "https://www.freedesktop.org/wiki/Software/vaapi/")
373 (synopsis "Video acceleration library")
374 (description "The main motivation for VA-API (Video Acceleration API) is
375to enable hardware accelerated video decode/encode at various
376entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding
377standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
378 (license license:expat)))
379
380(define-public ffmpeg
381 (package
382 (name "ffmpeg")
383 (version "3.1.1")
384 (source (origin
385 (method url-fetch)
386 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
387 version ".tar.xz"))
388 (sha256
389 (base32
390 "1nris3flwqd4v4b65yrrv9aqhsab7cb9lfp4wpxz6bi0m3r13g3i"))))
391 (build-system gnu-build-system)
392 (inputs
393 `(("fontconfig" ,fontconfig)
394 ("freetype" ,freetype)
395 ("gnutls" ,gnutls)
396 ("opus" ,opus)
397 ("ladspa" ,ladspa)
398 ("lame" ,lame)
399 ("libass" ,libass)
400 ("libbluray" ,libbluray)
401 ("libcaca" ,libcaca)
402 ("libcdio-paranoia" ,libcdio-paranoia)
403 ("libtheora" ,libtheora)
404 ("libvdpau" ,libvdpau)
405 ("libvorbis" ,libvorbis)
406 ("libvpx" ,libvpx)
407 ("libx11" ,libx11)
408 ("libx264" ,libx264)
409 ("mesa" ,mesa)
410 ("openal" ,openal)
411 ("pulseaudio" ,pulseaudio)
412 ("soxr" ,soxr)
413 ("speex" ,speex)
414 ("twolame" ,twolame)
415 ("xvid" ,xvid)
416 ("zlib" ,zlib)))
417 (native-inputs
418 `(("bc" ,bc)
419 ("perl" ,perl)
420 ("pkg-config" ,pkg-config)
421 ("texinfo" ,texinfo)
422 ("python" ,python-2) ; scripts use interpreter python2
423 ("speex" ,speex)
424 ("yasm" ,yasm)))
425 (arguments
426 `(#:test-target "fate"
427 #:configure-flags
428 ;; possible additional inputs:
429 ;; --enable-avisynth enable reading of AviSynth script
430 ;; files [no]
431 ;; --enable-frei0r enable frei0r video filtering
432 ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no]
433 ;; --enable-libcelt enable CELT decoding via libcelt [no]
434 ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
435 ;; and libraw1394 [no]
436 ;; --enable-libfaac enable AAC encoding via libfaac [no]
437 ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
438 ;; --enable-libflite enable flite (voice synthesis) support via
439 ;; libflite [no]
440 ;; --enable-libgme enable Game Music Emu via libgme [no]
441 ;; --enable-libgsm enable GSM de/encoding via libgsm [no]
442 ;; --enable-libiec61883 enable iec61883 via libiec61883 [no]
443 ;; --enable-libilbc enable iLBC de/encoding via libilbc [no]
444 ;; --enable-libmodplug enable ModPlug via libmodplug [no]
445 ;; --enable-libnut enable NUT (de)muxing via libnut,
446 ;; native (de)muxer exists [no]
447 ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via
448 ;; libopencore-amrnb [no]
449 ;; --enable-libopencore-amrwb enable AMR-WB decoding via
450 ;; libopencore-amrwb [no]
451 ;; --enable-libopencv enable video filtering via libopencv [no]
452 ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via
453 ;; OpenJPEG [no]
454 ;; --enable-librtmp enable RTMP[E] support via librtmp [no]
455 ;; --enable-libschroedinger enable Dirac de/encoding via
456 ;; libschroedinger [no]
457 ;; --enable-libshine enable fixed-point MP3 encoding via
458 ;; libshine [no]
459 ;; --enable-libssh enable SFTP protocol via libssh [no]
460 ;; (libssh2 does not work)
461 ;; --enable-libstagefright-h264 enable H.264 decoding via
462 ;; libstagefright [no]
463 ;; --enable-libutvideo enable Ut Video encoding and decoding via
464 ;; libutvideo [no]
465 ;; --enable-libv4l2 enable libv4l2/v4l-utils [no]
466 ;; --enable-libvidstab enable video stabilization using
467 ;; vid.stab [no]
468 ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
469 ;; --enable-libvo-amrwbenc enable AMR-WB encoding via
470 ;; libvo-amrwbenc [no]
471 ;; --enable-libwavpack enable wavpack encoding via libwavpack [no]
472 ;; --enable-libxavs enable AVS encoding via xavs [no]
473 ;; --enable-libzmq enable message passing via libzmq [no]
474 ;; --enable-libzvbi enable teletext support via libzvbi [no]
475 ;; --enable-opencl enable OpenCL code
476 '("--enable-avresample"
477 "--enable-gpl" ; enable optional gpl licensed parts
478 "--enable-shared"
479 "--enable-fontconfig"
480 "--enable-gnutls"
481 "--enable-ladspa"
482 "--enable-libass"
483 "--enable-libbluray"
484 "--enable-libcaca"
485 "--enable-libcdio"
486 "--enable-libfreetype"
487 "--enable-libmp3lame"
488 "--enable-libopus"
489 "--enable-libpulse"
490 "--enable-libsoxr"
491 "--enable-libspeex"
492 "--enable-libtheora"
493 "--enable-libtwolame"
494 "--enable-libvorbis"
495 "--enable-libvpx"
496 "--enable-libxvid"
497 "--enable-libx264"
498 "--enable-openal"
499 "--enable-opengl"
500 "--enable-x11grab"
501
502 "--enable-runtime-cpudetect"
503
504 ;; Runtime cpu detection is not implemented on
505 ;; MIPS, so we disable some features.
506 "--disable-mips32r2"
507 "--disable-mipsdsp"
508 "--disable-mipsdspr2"
509 "--disable-mipsfpu")
510 #:phases
511 (modify-phases %standard-phases
512 (replace
513 'configure
514 ;; configure does not work followed by "SHELL=..." and
515 ;; "CONFIG_SHELL=..."; set environment variables instead
516 (lambda* (#:key outputs configure-flags #:allow-other-keys)
517 (let ((out (assoc-ref outputs "out")))
518 (substitute* "configure"
519 (("#! /bin/sh") (string-append "#!" (which "bash"))))
520 (setenv "SHELL" (which "bash"))
521 (setenv "CONFIG_SHELL" (which "bash"))
522 (zero? (apply system*
523 "./configure"
524 (string-append "--prefix=" out)
525 ;; Add $libdir to the RUNPATH of all the binaries.
526 (string-append "--extra-ldflags=-Wl,-rpath="
527 out "/lib")
528 configure-flags)))))
529 (add-before
530 'check 'set-ld-library-path
531 (lambda _
532 ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
533 ;; running tests.
534 (let* ((dso (find-files "." "\\.so$"))
535 (path (string-join (map dirname dso) ":")))
536 (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
537 (setenv "LD_LIBRARY_PATH" path)
538 #t))))))
539 (home-page "https://www.ffmpeg.org/")
540 (synopsis "Audio and video framework")
541 (description "FFmpeg is a complete, cross-platform solution to record,
542convert and stream audio and video. It includes the libavcodec
543audio/video codec library.")
544 (license license:gpl2+)))
545
546(define-public ffmpeg-2.8
547 (package
548 (inherit ffmpeg)
549 (version "2.8.7")
550 (source (origin
551 (method url-fetch)
552 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
553 version ".tar.xz"))
554 (sha256
555 (base32
556 "0z0mcj2q3ysp9qdn1ks03g5sn2zxyr06vxs4al0m4b5b3in8mglp"))))
557 (arguments
558 (substitute-keyword-arguments (package-arguments ffmpeg)
559 ((#:configure-flags flags)
560 `(map (lambda (flag)
561 (if (string=? flag "--disable-mipsdsp")
562 "--disable-mipsdspr1"
563 flag))
564 ,flags))))))
565
566(define-public vlc
567 (package
568 (name "vlc")
569 (version "2.2.4")
570 (source (origin
571 (method url-fetch)
572 (uri (string-append
573 "https://download.videolan.org/pub/videolan/vlc/"
574 version "/vlc-" version ".tar.xz"))
575 (sha256
576 (base32
577 "1gjkrwlg8ab3skzl67cxb9qzg4187ifckd1z9kpy11q058fyjchn"))
578 (modules '((guix build utils)))
579 (snippet
580 ;; There are two occurrences where __DATE__ and __TIME__ are
581 ;; used to capture the build time and show it to the user.
582 '(substitute* (find-files "." "help\\.c(pp)?$")
583 (("__DATE__") "\"2016\"")
584 (("__TIME__") "\"00:00\"")))))
585 (build-system gnu-build-system)
586 (native-inputs
587 `(("git" ,git) ; needed for a test
588 ("pkg-config" ,pkg-config)))
589 ;; FIXME: Add optional inputs once available.
590 (inputs
591 `(("alsa-lib" ,alsa-lib)
592 ("avahi" ,avahi)
593 ("dbus" ,dbus)
594 ("flac" ,flac)
595 ("ffmpeg" ,ffmpeg-2.8) ;fails to build against ffmpeg 3.0
596 ("fontconfig" ,fontconfig)
597 ("freetype" ,freetype)
598 ("gnutls" ,gnutls)
599 ("libcddb" ,libcddb)
600 ("libgcrypt" ,libgcrypt)
601 ("libkate" ,libkate)
602 ("libmad" ,libmad)
603 ("libogg" ,libogg)
604 ("libpng" ,libpng)
605 ("libsamplerate" ,libsamplerate)
606 ("libssh2" ,libssh2)
607 ("libvorbis" ,libvorbis)
608 ("libtheora" ,libtheora)
609 ("libxext" ,libxext)
610 ("libxinerama" ,libxinerama)
611 ("libxml2" ,libxml2)
612 ("libxpm" ,libxpm)
613 ("lua" ,lua-5.1)
614 ("mesa" ,mesa)
615 ("opus" ,opus)
616 ("perl" ,perl)
617 ("pulseaudio" ,pulseaudio)
618 ("python" ,python-wrapper)
619 ("qtbase" ,qtbase)
620 ;("qtx11extras" ,qtx11extras)
621 ("sdl" ,sdl)
622 ("sdl-image" ,sdl-image)
623 ("speex" ,speex)
624 ("xcb-util-keysyms" ,xcb-util-keysyms)))
625 (arguments
626 `(#:configure-flags
627 `("--disable-a52" ; FIXME: reenable once available
628
629 ;; Gross workaround for <https://trac.videolan.org/vlc/ticket/16907>.
630 ;; In our case, this led to a test failure:
631 ;; test_libvlc_equalizer: libvlc/equalizer.c:122: test_equalizer: Assertion `isnan(libvlc_audio_equalizer_get_amp_at_index (equalizer, u_bands))' failed.
632 "ac_cv_c_fast_math=no"
633
634 ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
635 (assoc-ref %build-inputs "ffmpeg")
636 "/lib")) ;needed for the tests
637
638 #:phases
639 (modify-phases %standard-phases
640 (add-before 'configure 'remove-visual-tests
641 ;; Some of the tests require using the display to test out VLC,
642 ;; which fails in our sandboxed build system
643 (lambda _
644 (substitute* "test/run_vlc.sh"
645 (("./vlc --ignore-config") "echo"))
646 #t))
647 (add-after 'install 'regenerate-plugin-cache
648 (lambda* (#:key outputs #:allow-other-keys)
649 ;; The 'install-exec-hook' rule in the top-level Makefile.am
650 ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
651 ;; 'vlc-cache-gen'. This file includes the mtime of the plugins
652 ;; it references. Thus, we first reset the timestamps of all
653 ;; these files, and then regenerate the cache such that the
654 ;; mtimes it includes are always zero instead of being dependent
655 ;; on the build time.
656 (let* ((out (assoc-ref outputs "out"))
657 (pkglibdir (string-append out "/lib/vlc"))
658 (plugindir (string-append pkglibdir "/plugins"))
659 (cachegen (string-append pkglibdir "/vlc-cache-gen")))
660 ;; TODO: Factorize 'reset-timestamps'.
661 (for-each (lambda (file)
662 (let ((s (lstat file)))
663 (unless (eq? (stat:type s) 'symlink)
664 (utime file 0 0 0 0))))
665 (find-files plugindir))
666 (zero? (system* cachegen plugindir))))))))
667 (home-page "https://www.videolan.org/")
668 (synopsis "Audio and video framework")
669 (description "VLC is a cross-platform multimedia player and framework
670that plays most multimedia files as well as DVD, Audio CD, VCD, and various
671treaming protocols.")
672 (license license:gpl2+)))
673
674(define-public mplayer
675 (package
676 (name "mplayer")
677 (version "1.3.0")
678 (source (origin
679 (method url-fetch)
680 (uri (string-append
681 "https://www.mplayerhq.hu/MPlayer/releases/MPlayer-"
682 version ".tar.xz"))
683 (sha256
684 (base32
685 "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s"))))
686 (build-system gnu-build-system)
687 ;; FIXME: Add additional inputs once available.
688 (native-inputs
689 `(("pkg-config" ,pkg-config)))
690 (inputs
691 `(("alsa-lib" ,alsa-lib)
692 ("cdparanoia" ,cdparanoia)
693 ("ffmpeg" ,ffmpeg)
694 ("fontconfig" ,fontconfig)
695 ("freetype" ,freetype)
696;; ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
697 ("lame" ,lame)
698 ("libass" ,libass)
699 ("libdvdcss" ,libdvdcss)
700 ("libdvdnav" ,libdvdnav)
701 ("libjpeg" ,libjpeg)
702 ("libmpeg2" ,libmpeg2)
703 ("libmpg123" ,mpg123) ; audio codec for MP3
704 ("libpng" ,libpng)
705 ("libtheora" ,libtheora)
706 ("libvdpau" ,libvdpau)
707 ("libvorbis" ,libvorbis)
708 ("libx11" ,libx11)
709 ("libx264" ,libx264)
710 ("libxinerama" ,libxinerama)
711 ("libxv" ,libxv)
712 ("libxxf86dga" ,libxxf86dga)
713 ("mesa" ,mesa)
714 ("opus" ,opus)
715 ("perl" ,perl)
716 ("pulseaudio" ,pulseaudio)
717 ("python" ,python-wrapper)
718 ("sdl" ,sdl)
719 ("speex" ,speex)
720 ("yasm" ,yasm)
721 ("zlib" ,zlib)))
722 (arguments
723 `(#:tests? #f ; no test target
724 #:phases
725 (modify-phases %standard-phases
726 (replace 'configure
727 ;; configure does not work followed by "SHELL=..." and
728 ;; "CONFIG_SHELL=..."; set environment variables instead
729 (lambda* (#:key inputs outputs #:allow-other-keys)
730 (let ((out (assoc-ref outputs "out"))
731 (libx11 (assoc-ref inputs "libx11")))
732 (substitute* "configure"
733 (("#! /bin/sh") (string-append "#!" (which "bash"))))
734 (setenv "SHELL" (which "bash"))
735 (setenv "CONFIG_SHELL" (which "bash"))
736 (zero? (system*
737 "./configure"
738 (string-append "--extra-cflags=-I"
739 libx11 "/include") ; to detect libx11
740 "--disable-ffmpeg_a" ; disables bundled ffmpeg
741 (string-append "--prefix=" out)
742 ;; Enable runtime cpu detection where supported,
743 ;; and choose a suitable target.
744 ,@(match (or (%current-target-system)
745 (%current-system))
746 ("x86_64-linux"
747 '("--enable-runtime-cpudetection"
748 "--target=x86_64-linux"))
749 ("i686-linux"
750 '("--enable-runtime-cpudetection"
751 "--target=i686-linux"))
752 ("mips64el-linux"
753 '("--target=mips3-linux"))
754 (_ (list (string-append
755 "--target="
756 (or (%current-target-system)
757 (nix-system->gnu-triplet
758 (%current-system)))))))
759 "--disable-iwmmxt"))))))))
760 (home-page "https://www.mplayerhq.hu/design7/news.html")
761 (synopsis "Audio and video player")
762 (description "MPlayer is a movie player. It plays most MPEG/VOB, AVI,
763Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT,
764NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files. One can watch VideoCD,
765SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
766 (license license:gpl2)))
767
768(define-public mpv
769 (package
770 (name "mpv")
771 (version "0.18.0")
772 (source (origin
773 (method url-fetch)
774 (uri (string-append
775 "https://github.com/mpv-player/mpv/archive/v" version
776 ".tar.gz"))
777 (sha256
778 (base32
779 "0az0zqb2rakak51zsvfqzj9a8jiqpvc61jxap8hjdkkb9y6n6mmn"))
780 (file-name (string-append name "-" version ".tar.gz"))))
781 (build-system waf-build-system)
782 (native-inputs
783 `(("perl" ,perl)
784 ("pkg-config" ,pkg-config)
785 ("python-docutils" ,python-docutils)))
786 ;; Missing features: libguess, Wayland, V4L2
787 (inputs
788 `(("alsa-lib" ,alsa-lib)
789 ("enca" ,enca)
790 ("ffmpeg" ,ffmpeg)
791 ("jack" ,jack-1)
792 ("ladspa" ,ladspa)
793 ("lcms" ,lcms)
794 ("libass" ,libass)
795 ("libbluray" ,libbluray)
796 ("libcaca" ,libcaca)
797 ("libbs2b" ,libbs2b)
798 ("libcdio-paranoia" ,libcdio-paranoia)
799 ("libdvdread" ,libdvdread)
800 ("libdvdnav" ,libdvdnav)
801 ("libjpeg" ,libjpeg)
802 ("libva" ,libva)
803 ("libvdpau" ,libvdpau)
804 ("libx11" ,libx11)
805 ("libxext" ,libxext)
806 ("libxinerama" ,libxinerama)
807 ("libxrandr" ,libxrandr)
808 ("libxscrnsaver" ,libxscrnsaver)
809 ("libxv" ,libxv)
810 ("lua" ,lua)
811 ("mesa" ,mesa)
812 ("mpg123" ,mpg123)
813 ("pulseaudio" ,pulseaudio)
814 ("rsound" ,rsound)
815 ("vapoursynth" ,vapoursynth)
816 ("waf" ,python-waf)
817 ("youtube-dl" ,youtube-dl)
818 ("zlib" ,zlib)))
819 (arguments
820 '(#:phases
821 (modify-phases %standard-phases
822 (add-before
823 'configure 'setup-waf
824 (lambda* (#:key inputs #:allow-other-keys)
825 (copy-file (assoc-ref inputs "waf") "waf")
826 (setenv "CC" "gcc"))))
827 #:configure-flags (list "--enable-libmpv-shared" "--enable-zsh-comp")
828 ;; No check function defined.
829 #:tests? #f))
830 (home-page "https://mpv.io/")
831 (synopsis "Audio and video player")
832 (description "mpv is a general-purpose audio and video player. It is a
833fork of mplayer2 and MPlayer. It shares some features with the former
834projects while introducing many more.")
835 (license license:gpl2+)))
836
837(define-public gnome-mpv
838 (package
839 (name "gnome-mpv")
840 (version "0.9")
841 (source
842 (origin
843 (method url-fetch)
844 (uri (string-append "https://github.com/gnome-mpv/gnome-mpv/releases"
845 "/download/v" version "/gnome-mpv-" version
846 ".tar.xz"))
847 (sha256
848 (base32
849 "06pgxl6f3kkgxv8nlmyl7gy3pg55sqf8vgr8m6426mlpm4p3qdn0"))))
850 (native-inputs
851 `(("intltool" ,intltool)
852 ("pkg-config" ,pkg-config)))
853 (inputs
854 `(("gtk+" ,gtk+)
855 ("libepoxy" ,libepoxy)
856 ("mpv" ,mpv)))
857 (build-system glib-or-gtk-build-system)
858 (home-page "https://github.com/gnome-mpv/gnome-mpv")
859 (synopsis "GTK+ frontend for the mpv media player")
860 (description "GNOME MPV is a simple GTK+ frontend for the mpv media player.
861GNOME MPV interacts with mpv via the client API exported by libmpv, allowing
862access to mpv's powerful playback capabilities.")
863 (license license:gpl3+)))
864
865(define-public libvpx
866 (package
867 (name "libvpx")
868 (version "1.5.0")
869 (source (origin
870 (method url-fetch)
871 (uri (string-append "http://storage.googleapis.com/"
872 "downloads.webmproject.org/releases/webm/"
873 name "-" version ".tar.bz2"))
874 (sha256
875 (base32
876 "15v7qw0ydyxn08ksb6lxn1l51pxgpwgshdwd3275yrr5hs86fv9h"))
877 (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
878 (build-system gnu-build-system)
879 (arguments
880 `(#:phases
881 (modify-phases %standard-phases
882 (replace 'configure
883 (lambda* (#:key outputs #:allow-other-keys)
884 (setenv "CONFIG_SHELL" (which "bash"))
885 (let ((out (assoc-ref outputs "out")))
886 (setenv "LDFLAGS"
887 (string-append "-Wl,-rpath=" out "/lib"))
888 (zero? (system* "./configure"
889 "--enable-shared"
890 "--as=yasm"
891 ;; Limit size to avoid CVE-2015-1258
892 "--size-limit=16384x16384"
893 (string-append "--prefix=" out)))))))
894 #:tests? #f)) ; no check target
895 (native-inputs
896 `(("perl" ,perl)
897 ("yasm" ,yasm)))
898 (synopsis "VP8/VP9 video codec")
899 (description "libvpx is a codec for the VP8/VP9 video compression format.")
900 (license license:bsd-3)
901 (home-page "http://www.webmproject.org/")))
902
903(define-public youtube-dl
904 (package
905 (name "youtube-dl")
906 (version "2016.07.22")
907 (source (origin
908 (method url-fetch)
909 (uri (string-append "https://youtube-dl.org/downloads/"
910 version "/youtube-dl-"
911 version ".tar.gz"))
912 (sha256
913 (base32
914 "02wcxpcbpvsbvyxcnhhf94ma0x5dcg4fygnxxca2h31dp47dkak9"))))
915 (build-system python-build-system)
916 (home-page "https://youtube-dl.org")
917 (arguments
918 ;; The problem here is that the directory for the man page and completion
919 ;; files is relative, and for some reason, setup.py uses the
920 ;; auto-detected sys.prefix instead of the user-defined "--prefix=FOO".
921 ;; So, we need pass the prefix directly. In addition, make sure the Bash
922 ;; completion file is called 'youtube-dl' rather than
923 ;; 'youtube-dl.bash-completion'.
924 `(#:phases (modify-phases %standard-phases
925 (add-before 'install 'fix-the-data-directories
926 (lambda* (#:key outputs #:allow-other-keys)
927 (let ((prefix (assoc-ref outputs "out")))
928 (mkdir "bash-completion")
929 (rename-file "youtube-dl.bash-completion"
930 "bash-completion/youtube-dl")
931 (substitute* "setup.py"
932 (("youtube-dl\\.bash-completion")
933 "bash-completion/youtube-dl")
934 (("'etc/")
935 (string-append "'" prefix "/etc/"))
936 (("'share/")
937 (string-append "'" prefix "/share/")))))))))
938 (synopsis "Download videos from YouTube.com and other sites")
939 (description
940 "Youtube-dl is a small command-line program to download videos from
941YouTube.com and a few more sites.")
942 (license license:public-domain)))
943
944(define-public libbluray
945 (package
946 (name "libbluray")
947 (version "0.9.3")
948 (source (origin
949 (method url-fetch)
950 (uri (string-append "https://download.videolan.org/videolan/"
951 name "/" version "/"
952 name "-" version ".tar.bz2"))
953 (sha256
954 (base32
955 "1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6"))))
956 (build-system gnu-build-system)
957 (arguments `(#:configure-flags '("--disable-bdjava")))
958 (native-inputs `(("pkg-config" ,pkg-config)))
959 (inputs
960 `(("fontconfig" ,fontconfig)
961 ("freetype" ,freetype)
962 ("libxml2" ,libxml2)))
963 (home-page "https://www.videolan.org/developers/libbluray.html")
964 (synopsis "Blu-Ray Disc playback library")
965 (description
966 "libbluray is a library designed for Blu-Ray Disc playback for media
967players, like VLC or MPlayer.")
968 (license license:lgpl2.1+)))
969
970(define-public libdvdread
971 (package
972 (name "libdvdread")
973 (version "5.0.3")
974 (source (origin
975 (method url-fetch)
976 (uri (string-append "http://download.videolan.org/videolan/"
977 name "/" version "/"
978 name "-" version ".tar.bz2"))
979 (sha256
980 (base32
981 "0ayqiq0psq18rcp6f5pz82sxsq66v0kwv0y55dbrcg68plnxy71j"))))
982 (build-system gnu-build-system)
983 (home-page "http://dvdnav.mplayerhq.hu/")
984 (synopsis "Library for reading video DVDs")
985 (description
986 "Libdvdread provides a simple foundation for reading DVD video
987disks. It provides the functionality that is required to access many
988DVDs. It parses IFO files, reads NAV-blocks, and performs CSS
989authentication and descrambling (if an external libdvdcss library is
990installed).")
991 (license license:gpl2+)))
992
993(define-public libdvdnav
994 (package
995 (name "libdvdnav")
996 (version "5.0.3")
997 (source (origin
998 (method url-fetch)
999 (uri (string-append "http://download.videolan.org/videolan/"
1000 name "/" version "/"
1001 name "-" version ".tar.bz2"))
1002 (sha256
1003 (base32
1004 "0v8byv5z598k06rqzdmj7739vc86xq3zf79zfr698dib7lz055sh"))))
1005 (build-system gnu-build-system)
1006 (native-inputs
1007 `(("pkg-config" ,pkg-config)))
1008 (inputs
1009 `(("libdvdread" ,libdvdread)))
1010 (home-page "http://dvdnav.mplayerhq.hu/")
1011 (synopsis "Library for video DVD navigation features")
1012 (description
1013 "Libdvdnav is a library for developers of multimedia
1014applications. It allows easy use of sophisticated DVD navigation features
1015such as DVD menus, multiangle playback and even interactive DVD games. All
1016this functionality is provided through a simple API which provides the DVD
1017playback as a single logical stream of blocks, intermitted by special
1018dvdnav events to report certain conditions. The main usage of libdvdnav is
1019a loop regularly calling a function to get the next block, surrounded by
1020additional calls to tell the library of user interaction. The whole
1021DVD virtual machine and internal playback states are completely
1022encapsulated.")
1023 (license license:gpl2+)))
1024
1025(define-public libdvdnav-4
1026 (package
1027 (inherit libdvdnav)
1028 (version "4.2.1")
1029 (source (origin
1030 (method url-fetch)
1031 (uri
1032 (string-append
1033 "http://download.videolan.org/videolan/libdvdnav/libdvdnav-"
1034 version ".tar.xz"))
1035 (sha256
1036 (base32
1037 "0wi3gy408c8xj0ism0hckv5jbfh3lg4pmgxv87gbch9jrhp2gjkz"))))
1038 (native-inputs
1039 `(("pkg-config" ,pkg-config)
1040 ("autoconf" ,autoconf)
1041 ("automake" ,automake)
1042 ("libtool" ,libtool)))
1043 (arguments
1044 '(#:phases
1045 (alist-cons-after
1046 'unpack 'autoreconf
1047 (lambda _
1048 (zero? (system* "autoreconf" "-vif")))
1049 %standard-phases)))))
1050
1051(define-public libdvdcss
1052 (package
1053 (name "libdvdcss")
1054 (version "1.4.0")
1055 (source (origin
1056 (method url-fetch)
1057 (uri (string-append "http://download.videolan.org/pub/"
1058 name "/" version "/"
1059 name "-" version ".tar.bz2"))
1060 (sha256
1061 (base32
1062 "0nl45ifc4xcb196snv9d6hinfw614cqpzcqp92dg43c0hickg290"))))
1063 (build-system gnu-build-system)
1064 (home-page "http://www.videolan.org/developers/libdvdcss.html")
1065 (synopsis "Library for accessing DVDs as block devices")
1066 (description
1067 "libdvdcss is a simple library designed for accessing DVDs like a block
1068device without having to bother about the decryption.")
1069 (license license:gpl2+)))
1070
1071(define-public srt2vtt
1072 (package
1073 (name "srt2vtt")
1074 (version "0.1")
1075 (source (origin
1076 (method url-fetch)
1077 (uri (string-append
1078 "http://dthompson.us/releases/srt2vtt/srt2vtt-"
1079 version ".tar.gz"))
1080 (sha256
1081 (base32
1082 "16b377znjm6qlga5yb8aj7b7bcisa1ghcnj2lrb1d30lvxp4liif"))))
1083 (build-system gnu-build-system)
1084 (inputs
1085 `(("guile" ,guile-2.0)))
1086 (synopsis "SubRip to WebVTT subtitle converter")
1087 (description "srt2vtt converts SubRip formatted subtitles to WebVTT format
1088for use with HTML5 video.")
1089 (home-page "http://dthompson.us/pages/software/srt2vtt")
1090 (license license:gpl3+)))
1091
1092(define-public avidemux
1093 (package
1094 (name "avidemux")
1095 (version "2.6.12")
1096 (source (origin
1097 (method url-fetch)
1098 (uri (string-append
1099 "mirror://sourceforge/" name "/" name "/" version "/"
1100 name "_" version ".tar.gz"))
1101 (sha256
1102 (base32
1103 "0nz52yih8sff53inndkh2dba759xjzsh4b8xjww419lcpk0qp6kn"))
1104 (patches (search-patches "avidemux-install-to-lib.patch"))))
1105 (build-system cmake-build-system)
1106 (native-inputs
1107 `(("pkg-config" ,pkg-config)))
1108 ;; FIXME: Once packaged, add libraries not found during the build.
1109 (inputs
1110 `(("alsa-lib" ,alsa-lib)
1111 ("fontconfig" ,fontconfig)
1112 ("freetype" ,freetype)
1113 ("fribidi" ,fribidi)
1114 ("glu" ,glu)
1115 ("jack" ,jack-1)
1116 ("lame" ,lame)
1117 ("libva" ,libva)
1118 ("libvdpau" ,libvdpau)
1119 ("libvorbis" ,libvorbis)
1120 ("libvpx" ,libvpx)
1121 ("libxv" ,libxv)
1122 ("perl" ,perl)
1123 ("pulseaudio" ,pulseaudio)
1124 ("python" ,python-wrapper)
1125 ("qtbase" ,qtbase)
1126 ("qttools" ,qttools)
1127 ("sdl" ,sdl)
1128 ("sqlite" ,sqlite)
1129 ("yasm" ,yasm)
1130 ("zlib" ,zlib)))
1131 (arguments
1132 `(#:tests? #f ; no check target
1133 #:phases
1134 ;; Make sure files inside the included ffmpeg tarball are
1135 ;; patch-shebanged.
1136 (modify-phases %standard-phases
1137 (add-before 'patch-source-shebangs 'unpack-ffmpeg
1138 (lambda _
1139 (with-directory-excursion "avidemux_core/ffmpeg_package"
1140 (system* "tar" "xf" "ffmpeg-2.7.6.tar.bz2")
1141 (delete-file "ffmpeg-2.7.6.tar.bz2"))))
1142 (add-after 'patch-source-shebangs 'repack-ffmpeg
1143 (lambda _
1144 (with-directory-excursion "avidemux_core/ffmpeg_package"
1145 (substitute* "ffmpeg-2.7.6/configure"
1146 (("#! /bin/sh") (string-append "#!" (which "bash"))))
1147 (system* "tar" "cjf" "ffmpeg-2.7.6.tar.bz2" "ffmpeg-2.7.6"
1148 ;; avoid non-determinism in the archive
1149 "--sort=name" "--mtime=@0"
1150 "--owner=root:0" "--group=root:0")
1151 (delete-file-recursively "ffmpeg-2.7.6"))))
1152 (replace 'configure
1153 (lambda _
1154 ;; Copy-paste settings from the cmake build system.
1155 (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
1156 (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))))
1157 (replace 'build
1158 (lambda* (#:key inputs outputs #:allow-other-keys)
1159 (let*
1160 ((out (assoc-ref outputs "out"))
1161 (lib (string-append out "/lib"))
1162 (top (getcwd))
1163 (sdl (assoc-ref inputs "sdl"))
1164 (build_component
1165 (lambda* (component srcdir #:optional (args '()))
1166 (let ((builddir (string-append "build_" component)))
1167 (mkdir builddir)
1168 (with-directory-excursion builddir
1169 (zero?
1170 (and
1171 (apply system* "cmake"
1172 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
1173 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
1174 (string-append "-DCMAKE_INSTALL_RPATH=" lib)
1175 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
1176 "\"-Wl,-rpath=" lib "\"")
1177 (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
1178 (string-append "-DSDL_INCLUDE_DIR="
1179 sdl "/include/SDL")
1180 (string-append "../" srcdir)
1181 "-DENABLE_QT5=True"
1182 args)
1183 (system* "make" "-j"
1184 (number->string (parallel-job-count)))
1185 (system* "make" "install"))))))))
1186 (mkdir out)
1187 (and (build_component "core" "avidemux_core")
1188 (build_component "cli" "avidemux/cli")
1189 (build_component "qt4" "avidemux/qt4")
1190 (build_component "plugins_common" "avidemux_plugins"
1191 '("-DPLUGIN_UI=COMMON"))
1192 (build_component "plugins_cli" "avidemux_plugins"
1193 '("-DPLUGIN_UI=CLI"))
1194 (build_component "plugins_qt4" "avidemux_plugins"
1195 '("-DPLUGIN_UI=QT4"))
1196 (build_component "plugins_settings" "avidemux_plugins"
1197 '("-DPLUGIN_UI=SETTINGS")))
1198 ;; Remove .exe and .dll file.
1199 (delete-file-recursively
1200 (string-append out "/share/ADM6_addons")))))
1201 (delete 'install))))
1202 (home-page "http://fixounet.free.fr/avidemux/")
1203 (synopsis "Video editor")
1204 (description "Avidemux is a video editor designed for simple cutting,
1205filtering and encoding tasks. It supports many file types, including AVI,
1206DVD compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks
1207can be automated using projects, job queue and powerful scripting
1208capabilities.")
1209 ;; Software with various licenses is included, see License.txt.
1210 (license license:gpl2+)))
1211
1212(define-public vapoursynth
1213 (package
1214 (name "vapoursynth")
1215 (version "32")
1216 (source (origin
1217 (method url-fetch)
1218 (uri (string-append
1219 "https://github.com/vapoursynth/vapoursynth/archive/R"
1220 version ".tar.gz"))
1221 (file-name (string-append name "-" version))
1222 (sha256
1223 (base32
1224 "1j08whj946v2kkpgxsfhpca8xf0ax9iqzn73wvwjx319p9j0ymp9"))))
1225 (build-system gnu-build-system)
1226 (native-inputs
1227 `(("autoconf" ,autoconf)
1228 ("automake" ,automake)
1229 ("cython" ,python-cython)
1230 ("libtool" ,libtool)
1231 ("pkg-config" ,pkg-config)
1232 ("python" ,python)
1233 ("yasm" ,yasm)))
1234 (inputs
1235 `(("ffmpeg" ,ffmpeg)
1236 ("libass" ,libass)
1237 ("tesseract-ocr" ,tesseract-ocr)
1238 ("zimg" ,zimg)))
1239 (arguments
1240 '(#:phases
1241 (modify-phases %standard-phases
1242 (add-after
1243 'unpack 'autogen
1244 (lambda _
1245 (zero? (system* "sh" "autogen.sh")))))))
1246 (home-page "http://www.vapoursynth.com/")
1247 (synopsis "Video processing framework")
1248 (description "VapourSynth is a C++ library and Python module for video
1249manipulation. It aims to be a modern rewrite of Avisynth, supporting
1250multithreading, generalized colorspaces, per frame properties, and videos with
1251format changes.")
1252 ;; As seen from the source files.
1253 (license license:lgpl2.1+)))
1254
1255(define-public xvid
1256 (package
1257 (name "xvid")
1258 (version "1.3.4")
1259 (source (origin
1260 (method url-fetch)
1261 (uri (string-append
1262 "http://downloads.xvid.org/downloads/xvidcore-"
1263 version ".tar.bz2"))
1264 (sha256
1265 (base32
1266 "1xwbmp9wqshc0ckm970zdpi0yvgqxlqg0s8bkz98mnr8p2067bsz"))))
1267 (build-system gnu-build-system)
1268 (native-inputs `(("yasm" ,yasm)))
1269 (arguments
1270 '(#:phases
1271 (modify-phases %standard-phases
1272 (add-before
1273 'configure 'pre-configure
1274 (lambda _
1275 (chdir "build/generic")
1276 (substitute* "configure"
1277 (("#! /bin/sh") (string-append "#!" (which "sh")))))))
1278 ;; No 'check' target.
1279 #:tests? #f))
1280 (home-page "https://www.xvid.com/")
1281 (synopsis "MPEG-4 Part 2 Advanced Simple Profile video codec")
1282 (description "Xvid is an MPEG-4 Part 2 Advanced Simple Profile (ASP) video
1283codec library. It uses ASP features such as b-frames, global and quarter
1284pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG
1285and custom quantization matrices.")
1286 (license license:gpl2+)))
1287
1288(define-public livestreamer
1289 (package
1290 (name "livestreamer")
1291 (version "1.12.2")
1292 (source (origin
1293 (method url-fetch)
1294 (uri (string-append
1295 "https://github.com/chrippa/livestreamer/archive/v"
1296 version ".tar.gz"))
1297 (file-name (string-append "livestreamer-" version ".tar.gz"))
1298 (sha256
1299 (base32
1300 "1fp3d3z2grb1ls97smjkraazpxnvajda2d1g1378s6gzmda2jvjd"))))
1301 (build-system python-build-system)
1302 (arguments
1303 '(#:tests? #f)) ; tests rely on external web servers
1304 (propagated-inputs
1305 `(("python-requests" ,python-requests)))
1306 (synopsis "Internet video stream viewer")
1307 (description "Livestreamer is a command-line utility that extracts streams
1308from various services and pipes them into a video playing application.")
1309 (home-page "http://livestreamer.io/")
1310 (license license:bsd-2)))
1311
1312(define-public mlt
1313 (package
1314 (name "mlt")
1315 (version "6.2.0")
1316 (source (origin
1317 (method url-fetch)
1318 (uri (string-append "https://github.com/mltframework/mlt/"
1319 "archive/v" version ".tar.gz"))
1320 (file-name (string-append name "-" version ".tar.gz"))
1321 (sha256
1322 (base32
1323 "1zwzfgxrcbwkxnkiwv0a1rzxdnnaly90yyarl9wdw84nx11ffbnx"))))
1324 (build-system gnu-build-system)
1325 (arguments
1326 `(#:tests? #f ; no tests
1327 #:make-flags '("CC=gcc")
1328 #:configure-flags
1329 (list "--enable-gpl3"
1330 "--enable-gpl")
1331 #:phases
1332 (modify-phases %standard-phases
1333 (add-after
1334 'configure 'override-LDFLAGS
1335 (lambda* (#:key outputs #:allow-other-keys)
1336 (substitute* "config.mak"
1337 (("LDFLAGS\\+=")
1338 (string-append "LDFLAGS+=-Wl,-rpath="
1339 (assoc-ref outputs "out")
1340 "/lib ")))
1341 #t)))))
1342 (inputs
1343 `(("alsa-lib" ,alsa-lib)
1344 ("fftw" ,fftw)
1345 ("libxml2" ,libxml2)
1346 ("jack" ,jack-1)
1347 ("ladspa" ,ladspa)
1348 ("libsamplerate" ,libsamplerate)
1349 ("pulseaudio" ,pulseaudio)
1350 ("sdl" ,sdl)
1351 ("sox" ,sox)))
1352 (native-inputs
1353 `(("pkg-config" ,pkg-config)))
1354 (home-page "https://www.mltframework.org/")
1355 (synopsis "Author, manage, and run multitrack audio/video compositions")
1356 (description
1357 "MLT is a multimedia framework, designed and developed for television
1358broadcasting. It provides a toolkit for broadcasters, video editors, media
1359players, transcoders, web streamers and many more types of applications. The
1360functionality of the system is provided via an assortment of ready to use
1361tools, XML authoring components, and an extensible plug-in based API.")
1362 (license license:lgpl2.1+)))
1363
1364(define-public v4l-utils
1365 (package
1366 (name "v4l-utils")
1367 (version "1.10.1")
1368 (source (origin
1369 (method url-fetch)
1370 (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
1371 "/v4l-utils-" version ".tar.bz2"))
1372 (sha256
1373 (base32
1374 "1h1nhg5cmmzlbipak526nk4bm6d0yb217mll75f3rpg7kz1cqiv1"))))
1375 (build-system gnu-build-system)
1376 (arguments
1377 '(#:configure-flags
1378 (list (string-append "--with-udevdir="
1379 (assoc-ref %outputs "out")
1380 "/lib/udev"))))
1381 (native-inputs
1382 `(("pkg-config" ,pkg-config)))
1383 (inputs
1384 `(("alsa-lib" ,alsa-lib)
1385 ("glu" ,glu)
1386 ("libjpeg" ,libjpeg)
1387 ("libx11" ,libx11)
1388 ("qtbase" ,qtbase)
1389 ("eudev" ,eudev)))
1390 (synopsis "Realtime video capture utilities for Linux")
1391 (description "The v4l-utils provide a series of libraries and utilities to
1392be used for realtime video capture via Linux-specific APIs.")
1393 (home-page "https://linuxtv.org/wiki/index.php/V4l-utils")
1394 ;; libv4l2 is LGPL2.1+, while utilities are GPL2 only.
1395 (license (list license:lgpl2.1+ license:gpl2))))
1396
1397(define-public obs
1398 (package
1399 (name "obs")
1400 (version "0.15.1")
1401 (source (origin
1402 (method url-fetch)
1403 (uri (string-append "https://github.com/jp9000/obs-studio"
1404 "/archive/" version ".tar.gz"))
1405 (file-name (string-append name "-" version ".tar.gz"))
1406 (sha256
1407 (base32
1408 "18fycg7xlj2i89wdb9c5js0bnl964s1lpmnvmfyj11zi9k061wsg"))))
1409 (build-system cmake-build-system)
1410 (arguments
1411 `(#:tests? #f ; no tests
1412 ,@(if (any (cute string-prefix? <> (or (%current-target-system)
1413 (%current-system)))
1414 '("arm" "mips"))
1415 '(#:phases
1416 (modify-phases %standard-phases
1417 (add-after 'unpack 'remove-architecture-specific-instructions
1418 ;; non-Intel platforms fail to build with the architecture
1419 ;; specific compiler flags included by default.
1420 (lambda _
1421 (substitute* "libobs/CMakeLists.txt"
1422 (("if\\(NOT MSVC\\)") "if(MSVC)"))
1423 #t))))
1424 '())))
1425 (native-inputs
1426 `(("pkg-config" ,pkg-config)))
1427 (inputs
1428 `(("curl" ,curl)
1429 ("eudev" ,eudev)
1430 ("ffmpeg" ,ffmpeg)
1431 ("freetype" ,freetype)
1432 ("jack" ,jack-1)
1433 ("jansson" ,jansson)
1434 ("libx264" ,libx264)
1435 ("libxcomposite" ,libxcomposite)
1436 ("mesa" ,mesa)
1437 ("pulseaudio" ,pulseaudio)
1438 ("qtbase" ,qtbase)
1439 ("qtx11extras" ,qtx11extras)
1440 ("v4l-utils" ,v4l-utils)
1441 ("zlib" ,zlib)))
1442 (synopsis "Live streaming software")
1443 (description "Open Broadcaster Software provides a graphical interface for
1444video recording and live streaming. OBS supports capturing audio and video
1445from many input sources such as webcams, X11 (for screencasting), PulseAudio,
1446and JACK.")
1447 (home-page "https://obsproject.com")
1448 (license license:gpl2+)))
1449
1450(define-public libvdpau
1451 (package
1452 (name "libvdpau")
1453 (version "1.1.1")
1454 (source
1455 (origin
1456 (method url-fetch)
1457 (uri (string-append "https://secure.freedesktop.org/~aplattner/vdpau/"
1458 name "-" version ".tar.bz2"))
1459 (sha256
1460 (base32
1461 "0dnpb0yh7v6rvckx82kxg045rd9rbsw25wjv7ad5n8h94s9h2yl5"))))
1462 (build-system gnu-build-system)
1463 (native-inputs
1464 `(("pkg-config" ,pkg-config)))
1465 (inputs
1466 `(("dri2proto" ,dri2proto)
1467 ("libx11" ,libx11 "out")
1468 ("libxext" ,libxext)))
1469 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
1470 (synopsis "Video Decode and Presentation API")
1471 (description "VDPAU is the Video Decode and Presentation API for UNIX. It
1472provides an interface to video decode acceleration and presentation hardware
1473present in modern GPUs.")
1474 (license (license:x11-style "file://COPYING"))))
1475
1476(define-public vdpauinfo
1477 (package
1478 (name "vdpauinfo")
1479 (version "1.0")
1480 (source
1481 (origin
1482 (method url-fetch)
1483 (uri (string-append "https://secure.freedesktop.org/~aplattner/vdpau/"
1484 name "-" version ".tar.gz"))
1485 (sha256
1486 (base32
1487 "1i2b0k9h8r0lnxlrkgqzmrjakgaw3f1ygqqwzx8w6676g85rcm20"))))
1488 (build-system gnu-build-system)
1489 (native-inputs
1490 `(("pkg-config" ,pkg-config)
1491 ("libx11" ,libx11)))
1492 (propagated-inputs
1493 `(("libvdpau" ,libvdpau)))
1494 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
1495 (synopsis "Tool to query the capabilities of a VDPAU implementation")
1496 (description "Vdpauinfo is a tool to query the capabilities of a VDPAU
1497implementation.")
1498 (license (license:x11-style "file://COPYING"))))
1499
1500(define-public recordmydesktop
1501 (package
1502 (name "recordmydesktop")
1503 (version "0.3.8.1")
1504 (source (origin
1505 (method url-fetch)
1506 (uri (string-append "mirror://sourceforge/" name "/" name "/"
1507 version "/recordmydesktop-" version ".tar.gz"))
1508 (sha256
1509 (base32
1510 "133kkl5j0r877d41bzj7kj0vf3xm8x80yyx2n8nqxrva304f58ik"))))
1511 (build-system gnu-build-system)
1512 (inputs `(("popt" ,popt)
1513 ("zlib" ,zlib)
1514 ("libx11" ,libx11)
1515 ("libice" ,libice)
1516 ("libsm" ,libsm)
1517 ("libxfixes" ,libxfixes)
1518 ("libxdamage" ,libxdamage)
1519 ("libxext" ,libxext)
1520 ("libvorbis" ,libvorbis)
1521 ("libtheora" ,libtheora)))
1522 (home-page "http://recordmydesktop.sourceforge.net/")
1523 (synopsis "Desktop session video recorder")
1524 (description
1525 "recordMyDesktop is a command-line tool that captures the activity in
1526your graphical desktop and encodes it as a video. This is a useful tool for
1527making @dfn{screencasts}.")
1528 (license license:gpl2+)))
1529
1530(define-public libsmpeg
1531 (package
1532 (name "libsmpeg")
1533 (version "0.4.5")
1534 (source (origin
1535 (method svn-fetch)
1536 (uri (svn-reference
1537 (url "svn://svn.icculus.org/smpeg/trunk/")
1538 (revision 401))) ; last revision before smpeg2 (for SDL 2.0)
1539 (sha256
1540 (base32
1541 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
1542 (build-system gnu-build-system)
1543 (arguments
1544 `(#:phases (modify-phases %standard-phases
1545 (add-after 'unpack 'autogen.sh
1546 (lambda _
1547 (zero? (system* "sh" "autogen.sh")))))))
1548 (native-inputs
1549 `(("autoconf" ,autoconf)
1550 ("automake" ,automake)))
1551 (inputs
1552 `(("sdl" ,sdl2)))
1553 (home-page "http://icculus.org/smpeg/")
1554 (synopsis "SDL MPEG decoding library")
1555 (description
1556 "SMPEG (SDL MPEG Player Library) is a free MPEG1 video player library
1557with sound support. Video playback is based on the ubiquitous Berkeley MPEG
1558player, mpeg_play v2.2. Audio is played through a slightly modified mpegsound
1559library, part of splay v0.8.2. SMPEG supports MPEG audio (MP3), MPEG-1 video,
1560and MPEG system streams.")
1561 (license (list license:expat
1562 license:lgpl2.1
1563 license:lgpl2.1+
1564 license:gpl2))))