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