gnu: Add hexedit.
[jackhill/guix/guix.git] / gnu / packages / video.scm
CommitLineData
39efcc9b 1;;; GNU Guix --- Functional package management for GNU
71ee51a0 2;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr>
945d985a 3;;; Copyright © 2014, 2015, 2016 David Thompson <davet@gnu.org>
ca3f9952 4;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
cda163cd 5;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
26da7c26 6;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
12f92e38 7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
307ad140 8;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net>
2ad9515c 9;;; Copyright © 2015 Alex Vong <alexvong1995@gmail.com>
6cf83e3f 10;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
39efcc9b
AE
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)
fe138965 28 #:use-module (ice-9 match)
08858812
EF
29 #:use-module (srfi srfi-1)
30 #:use-module (srfi srfi-26)
ae0bdd81 31 #:use-module ((guix licenses) #:prefix license:)
e930c2a3 32 #:use-module (guix utils)
39efcc9b
AE
33 #:use-module (guix packages)
34 #:use-module (guix download)
38829eac 35 #:use-module (guix git-download)
44726031 36 #:use-module (guix build-system cmake)
39efcc9b 37 #:use-module (guix build-system gnu)
0e74bb5b 38 #:use-module (guix build-system glib-or-gtk)
615215a5 39 #:use-module (guix build-system python)
1c1178cd 40 #:use-module (guix build-system waf)
3b02429c 41 #:use-module (gnu packages)
39efcc9b 42 #:use-module (gnu packages algebra)
72bfebf5 43 #:use-module (gnu packages audio)
f1044010 44 #:use-module (gnu packages autotools)
d5a748e8 45 #:use-module (gnu packages avahi)
38829eac 46 #:use-module (gnu packages base)
d5a748e8 47 #:use-module (gnu packages cdrom)
39efcc9b 48 #:use-module (gnu packages compression)
f464016d 49 #:use-module (gnu packages curl)
44726031 50 #:use-module (gnu packages databases)
f22e0e26 51 #:use-module (gnu packages elf)
39efcc9b 52 #:use-module (gnu packages fontutils)
44726031
AE
53 #:use-module (gnu packages fribidi)
54 #:use-module (gnu packages gettext)
38829eac 55 #:use-module (gnu packages ghostscript)
d5a748e8
AE
56 #:use-module (gnu packages gl)
57 #:use-module (gnu packages glib)
2cd85cf9 58 #:use-module (gnu packages guile)
d5a748e8 59 #:use-module (gnu packages gnupg)
44726031 60 #:use-module (gnu packages gtk)
e55354b8 61 #:use-module (gnu packages image)
d5a748e8
AE
62 #:use-module (gnu packages linux)
63 #:use-module (gnu packages lua)
64 #:use-module (gnu packages mp3)
4d94b93c 65 #:use-module (gnu packages ncurses)
6f6c8b65 66 #:use-module (gnu packages ocr)
39efcc9b
AE
67 #:use-module (gnu packages perl)
68 #:use-module (gnu packages pkg-config)
a7d94b54 69 #:use-module (gnu packages popt)
d5a748e8 70 #:use-module (gnu packages pulseaudio)
39efcc9b 71 #:use-module (gnu packages python)
d5a748e8
AE
72 #:use-module (gnu packages qt)
73 #:use-module (gnu packages sdl)
74 #:use-module (gnu packages ssh)
6b2c6be0 75 #:use-module (gnu packages texinfo)
c426e61e 76 #:use-module (gnu packages textutils)
a7fd7b68 77 #:use-module (gnu packages tls)
d5a748e8 78 #:use-module (gnu packages version-control)
bb470bd3 79 #:use-module (gnu packages web)
ee3b55ea 80 #:use-module (gnu packages xdisorg)
54ff0b7d 81 #:use-module (gnu packages xiph)
d5a748e8
AE
82 #:use-module (gnu packages xml)
83 #:use-module (gnu packages xorg)
09b87aff 84 #:use-module (gnu packages assembly)
44726031 85 #:use-module (gnu packages zip))
39efcc9b 86
6b2c6be0
SB
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
3a4de6b2 106 (replace 'configure
014cbde6 107 (lambda* (#:key build inputs outputs #:allow-other-keys)
6b2c6be0
SB
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)
014cbde6 115 (string-append "--build=" build)
6b2c6be0
SB
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
cda163cd
TUBK
126(define-public liba52
127 (package
128 (name "liba52")
129 (version "0.7.4")
130 (source (origin
131 (method url-fetch)
8c056935
TUBK
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"))
cda163cd
TUBK
137 (sha256
138 (base32
23da88f6 139 "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"))
fc1adab1
AK
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"))))
cda163cd 144 (build-system gnu-build-system)
23da88f6
MW
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)))
412a2422 150 (arguments `(#:configure-flags '("--enable-shared")
23da88f6
MW
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")))))))
cda163cd
TUBK
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.")
ae0bdd81 163 (license license:gpl2+)))
cda163cd 164
e0884109
MW
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
82712597
MW
192(define-public libx264
193 (package
194 (name "libx264")
466a7d70 195 (version "20160220-2245")
82712597
MW
196 (source (origin
197 (method url-fetch)
735e84c7 198 (uri (string-append "http://download.videolan.org/pub/x264/snapshots/"
82712597
MW
199 "x264-snapshot-" version ".tar.bz2"))
200 (sha256
201 (base32
466a7d70 202 "12zyzbiihfhamf7yi4qqaj6k0nisnrydvfr36kxadvmsm7dg4sj3"))))
82712597
MW
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
c426e61e
TUBK
229(define-public libass
230 (package
231 (name "libass")
97206519 232 (version "0.13.2")
c426e61e
TUBK
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
97206519 240 "1kpsw4zw95v4cjvild9wpk73dzavn1khsm3bm32kcz6amnkd166n"))))
c426e61e
TUBK
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.")
ae0bdd81 255 (license license:isc)))
c426e61e 256
4d94b93c
TUBK
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.")
ae0bdd81 283 (license (license:fsf-free "file://COPYING")))) ;WTFPL version 2
4d94b93c 284
3bfb78dc
TUBK
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.")
ae0bdd81 302 (license license:gpl2+)))
3bfb78dc 303
99d4c455
TUBK
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.")
ae0bdd81 325 (license license:lgpl2.1+)))
99d4c455 326
ee3b55ea
TUBK
327(define-public libva
328 (package
329 (name "libva")
26fceae2 330 (version "1.6.1")
ee3b55ea
TUBK
331 (source
332 (origin
333 (method url-fetch)
334 (uri (string-append
5cc3096c 335 "https://www.freedesktop.org/software/vaapi/releases/libva/libva-"
ee3b55ea
TUBK
336 version".tar.bz2"))
337 (sha256
26fceae2 338 (base32 "0bjfb5s8dk3lql843l91ffxzlq47isqks5sj19cxh7j3nhzw58kz"))))
ee3b55ea
TUBK
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)))
372cf039
TUBK
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"))))
26fceae2 369 (home-page "http://www.freedesktop.org/wiki/Software/vaapi/")
ee3b55ea
TUBK
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).")
ae0bdd81 375 (license license:expat)))
ee3b55ea 376
39efcc9b
AE
377(define-public ffmpeg
378 (package
379 (name "ffmpeg")
8ffa5a57 380 (version "3.1.1")
39efcc9b
AE
381 (source (origin
382 (method url-fetch)
a1121a7f
EF
383 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
384 version ".tar.xz"))
39efcc9b
AE
385 (sha256
386 (base32
8ffa5a57 387 "1nris3flwqd4v4b65yrrv9aqhsab7cb9lfp4wpxz6bi0m3r13g3i"))))
39efcc9b
AE
388 (build-system gnu-build-system)
389 (inputs
c4c4cc05 390 `(("fontconfig" ,fontconfig)
39efcc9b 391 ("freetype" ,freetype)
c8dab7f4 392 ("gnutls" ,gnutls)
e816b348 393 ("opus" ,opus)
71241192 394 ("ladspa" ,ladspa)
d4f12db8 395 ("lame" ,lame)
c426e61e 396 ("libass" ,libass)
5d3609e4 397 ("libbluray" ,libbluray)
4d94b93c 398 ("libcaca" ,libcaca)
cc6c0170 399 ("libcdio-paranoia" ,libcdio-paranoia)
39efcc9b 400 ("libtheora" ,libtheora)
f88f0d20 401 ("libvdpau" ,libvdpau)
39efcc9b 402 ("libvorbis" ,libvorbis)
dc55b8b2 403 ("libvpx" ,libvpx)
f88f0d20 404 ("libx11" ,libx11)
549381d6 405 ("libx264" ,libx264)
f88f0d20 406 ("mesa" ,mesa)
71241192 407 ("openal" ,openal)
71241192 408 ("pulseaudio" ,pulseaudio)
72bfebf5 409 ("soxr" ,soxr)
c4c4cc05 410 ("speex" ,speex)
72bfebf5 411 ("twolame" ,twolame)
67932f86 412 ("xvid" ,xvid)
b3546174 413 ("zlib" ,zlib)))
c4c4cc05
JD
414 (native-inputs
415 `(("bc" ,bc)
39efcc9b
AE
416 ("perl" ,perl)
417 ("pkg-config" ,pkg-config)
824d9dc3 418 ("texinfo" ,texinfo)
39efcc9b
AE
419 ("python" ,python-2) ; scripts use interpreter python2
420 ("speex" ,speex)
c4c4cc05 421 ("yasm" ,yasm)))
39efcc9b 422 (arguments
31f9322e 423 `(#:test-target "fate"
12f92e38
AP
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
12f92e38
AP
473 '("--enable-avresample"
474 "--enable-gpl" ; enable optional gpl licensed parts
475 "--enable-shared"
476 "--enable-fontconfig"
c8dab7f4 477 "--enable-gnutls"
12f92e38
AP
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"
12f92e38
AP
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"
f88f0d20
EF
496 "--enable-opengl"
497 "--enable-x11grab"
12f92e38
AP
498
499 "--enable-runtime-cpudetect"
500
501 ;; Runtime cpu detection is not implemented on
502 ;; MIPS, so we disable some features.
503 "--disable-mips32r2"
c5e1fcd0 504 "--disable-mipsdsp"
12f92e38
AP
505 "--disable-mipsdspr2"
506 "--disable-mipsfpu")
31f9322e 507 #:phases
f2feb0ce
LC
508 (modify-phases %standard-phases
509 (replace
39efcc9b
AE
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"))
12f92e38
AP
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)))))
457e528e
LC
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)
27350ef8 535 #t))))))
702bfbf1 536 (home-page "https://www.ffmpeg.org/")
39efcc9b
AE
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.")
ae0bdd81 541 (license license:gpl2+)))
d5a748e8 542
940778c7
LC
543(define-public ffmpeg-2.8
544 (package
545 (inherit ffmpeg)
fbb060fe 546 (version "2.8.7")
940778c7
LC
547 (source (origin
548 (method url-fetch)
549 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
550 version ".tar.xz"))
551 (sha256
552 (base32
fbb060fe 553 "0z0mcj2q3ysp9qdn1ks03g5sn2zxyr06vxs4al0m4b5b3in8mglp"))))
940778c7
LC
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
d5a748e8
AE
563(define-public vlc
564 (package
565 (name "vlc")
a134cc8e 566 (version "2.2.4")
d5a748e8
AE
567 (source (origin
568 (method url-fetch)
569 (uri (string-append
a134cc8e 570 "https://download.videolan.org/pub/videolan/vlc/"
d5a748e8
AE
571 version "/vlc-" version ".tar.xz"))
572 (sha256
573 (base32
a134cc8e 574 "1gjkrwlg8ab3skzl67cxb9qzg4187ifckd1z9kpy11q058fyjchn"))
4ef2721b
LC
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\"")))))
d5a748e8
AE
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)
b4dff935 592 ("ffmpeg" ,ffmpeg-2.8) ;fails to build against ffmpeg 3.0
d5a748e8
AE
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)
a134cc8e
EF
616 ("qtbase" ,qtbase)
617 ;("qtx11extras" ,qtx11extras)
d5a748e8
AE
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
d5a748e8
AE
625 ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
626 (assoc-ref %build-inputs "ffmpeg")
cd76fbde
LC
627 "/lib")) ;needed for the tests
628
629 #:phases
630 (modify-phases %standard-phases
a134cc8e
EF
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))
cd76fbde
LC
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))))))))
d5a748e8
AE
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.")
ae0bdd81 663 (license license:gpl2+)))
ace69243
AE
664
665(define-public mplayer
666 (package
667 (name "mplayer")
e71b20e5 668 (version "1.3.0")
ace69243
AE
669 (source (origin
670 (method url-fetch)
671 (uri (string-append
ebde7c7a 672 "https://www.mplayerhq.hu/MPlayer/releases/MPlayer-"
ace69243
AE
673 version ".tar.xz"))
674 (sha256
675 (base32
e71b20e5 676 "0hwqn04bdknb2ic88xd75smffxx63scvz0zvwvjb56nqj9n89l1s"))))
ace69243
AE
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)
b3546174 684 ("ffmpeg" ,ffmpeg)
778a6a8b 685 ("fontconfig" ,fontconfig)
ace69243 686 ("freetype" ,freetype)
778a6a8b 687;; ("giflib" ,giflib) ; uses QuantizeBuffer, requires version >= 5
ace69243 688 ("lame" ,lame)
778a6a8b 689 ("libass" ,libass)
b3546174
MW
690 ("libdvdcss" ,libdvdcss)
691 ("libdvdnav" ,libdvdnav)
ace69243 692 ("libjpeg" ,libjpeg)
778a6a8b
EF
693 ("libmpeg2" ,libmpeg2)
694 ("libmpg123" ,mpg123) ; audio codec for MP3
ace69243
AE
695 ("libpng" ,libpng)
696 ("libtheora" ,libtheora)
778a6a8b 697 ("libvdpau" ,libvdpau)
ace69243
AE
698 ("libvorbis" ,libvorbis)
699 ("libx11" ,libx11)
778a6a8b 700 ("libx264" ,libx264)
ace69243
AE
701 ("libxinerama" ,libxinerama)
702 ("libxv" ,libxv)
778a6a8b 703 ("libxxf86dga" ,libxxf86dga)
ace69243 704 ("mesa" ,mesa)
778a6a8b 705 ("opus" ,opus)
ace69243
AE
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
ebde7c7a
EF
716 (modify-phases %standard-phases
717 (replace 'configure
ace69243
AE
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
ebde7c7a 731 "--disable-ffmpeg_a" ; disables bundled ffmpeg
ace69243 732 (string-append "--prefix=" out)
fe138965
MW
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"
f0d6d835
MW
744 '("--target=mips3-linux"))
745 (_ (list (string-append
746 "--target="
747 (or (%current-target-system)
748 (nix-system->gnu-triplet
749 (%current-system)))))))
ebde7c7a
EF
750 "--disable-iwmmxt"))))))))
751 (home-page "https://www.mplayerhq.hu/design7/news.html")
ace69243
AE
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.")
ae0bdd81 757 (license license:gpl2)))
d0ed39be 758
1c1178cd
TUBK
759(define-public mpv
760 (package
761 (name "mpv")
66fd9858 762 (version "0.18.0")
1c1178cd
TUBK
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
66fd9858 770 "0az0zqb2rakak51zsvfqzj9a8jiqpvc61jxap8hjdkkb9y6n6mmn"))
1c1178cd
TUBK
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)))
81c29ccc 777 ;; Missing features: libguess, Wayland, V4L2
1c1178cd
TUBK
778 (inputs
779 `(("alsa-lib" ,alsa-lib)
780 ("enca" ,enca)
781 ("ffmpeg" ,ffmpeg)
2d8781a4 782 ("jack" ,jack-1)
1c1178cd
TUBK
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)
81c29ccc 794 ("libvdpau" ,libvdpau)
1c1178cd
TUBK
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)
1c1178cd
TUBK
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.
54567afa 811 (uri "http://www.freehackers.org/~tnagy/release/waf-1.8.12")
1c1178cd
TUBK
812 (sha256
813 (base32
54567afa 814 "12y9c352zwliw0zk9jm2lhynsjcf5jy0k1qch1c1av8hnbm2pgq1"))))
1c1178cd
TUBK
815 ("youtube-dl" ,youtube-dl)
816 ("zlib" ,zlib)))
817 (arguments
818 '(#:phases
819 (modify-phases %standard-phases
820 (add-before
f8503e2b 821 'configure 'setup-waf
1c1178cd
TUBK
822 (lambda* (#:key inputs #:allow-other-keys)
823 (copy-file (assoc-ref inputs "waf") "waf")
599fd842 824 (setenv "CC" "gcc"))))
6cf83e3f 825 #:configure-flags (list "--enable-libmpv-shared" "--enable-zsh-comp")
1c1178cd
TUBK
826 ;; No check function defined.
827 #:tests? #f))
581873b5 828 (home-page "https://mpv.io/")
1c1178cd
TUBK
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.")
ae0bdd81 833 (license license:gpl2+)))
1c1178cd 834
0e74bb5b
AG
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
d0ed39be
DT
863(define-public libvpx
864 (package
865 (name "libvpx")
fb197c0d 866 (version "1.5.0")
d0ed39be
DT
867 (source (origin
868 (method url-fetch)
723e8866
MW
869 (uri (string-append "http://storage.googleapis.com/"
870 "downloads.webmproject.org/releases/webm/"
871 name "-" version ".tar.bz2"))
d0ed39be
DT
872 (sha256
873 (base32
c7c49446
MW
874 "15v7qw0ydyxn08ksb6lxn1l51pxgpwgshdwd3275yrr5hs86fv9h"))
875 (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
d0ed39be
DT
876 (build-system gnu-build-system)
877 (arguments
0e47b4e7
EF
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)))))))
4f8f15cd 892 #:tests? #f)) ; no check target
d0ed39be
DT
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.")
ae0bdd81 898 (license license:bsd-3)
d0ed39be 899 (home-page "http://www.webmproject.org/")))
615215a5
LC
900
901(define-public youtube-dl
902 (package
903 (name "youtube-dl")
feb5c554 904 (version "2016.06.14")
615215a5
LC
905 (source (origin
906 (method url-fetch)
feb5c554 907 (uri (string-append "https://youtube-dl.org/downloads/"
615215a5
LC
908 version "/youtube-dl-"
909 version ".tar.gz"))
910 (sha256
911 (base32
feb5c554 912 "0fmvpqipc1xwagvk7ih4slmv1xz1rb6s8wpndhypwvrq4pnnm9ns"))))
615215a5 913 (build-system python-build-system)
feb5c554 914 (home-page "https://youtube-dl.org")
2ad9515c
AV
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/")))))))))
615215a5
LC
936 (synopsis "Download videos from YouTube.com and other sites")
937 (description
b798dfde 938 "Youtube-dl is a small command-line program to download videos from
615215a5 939YouTube.com and a few more sites.")
ae0bdd81 940 (license license:public-domain)))
e6bdb36a 941
5d3609e4
TUBK
942(define-public libbluray
943 (package
944 (name "libbluray")
5e3f68e6 945 (version "0.9.3")
5d3609e4
TUBK
946 (source (origin
947 (method url-fetch)
5e3f68e6 948 (uri (string-append "https://download.videolan.org/videolan/"
5d3609e4
TUBK
949 name "/" version "/"
950 name "-" version ".tar.bz2"))
951 (sha256
952 (base32
5e3f68e6 953 "1q1whviqv5sr9nr372h31zwid1rvbfbx3z4lzr8lnj25xha6cdm6"))))
5d3609e4 954 (build-system gnu-build-system)
2da45ebe
EF
955 (arguments `(#:configure-flags '("--disable-bdjava")))
956 (native-inputs `(("pkg-config" ,pkg-config)))
5d3609e4 957 (inputs
71ee51a0 958 `(("fontconfig" ,fontconfig)
5d3609e4 959 ("freetype" ,freetype)
71ee51a0 960 ("libxml2" ,libxml2)))
5e3f68e6 961 (home-page "https://www.videolan.org/developers/libbluray.html")
5d3609e4
TUBK
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.")
ae0bdd81 966 (license license:lgpl2.1+)))
5d3609e4 967
e6bdb36a
AE
968(define-public libdvdread
969 (package
970 (name "libdvdread")
9aebf330 971 (version "5.0.3")
e6bdb36a
AE
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
9aebf330 979 "0ayqiq0psq18rcp6f5pz82sxsq66v0kwv0y55dbrcg68plnxy71j"))))
e6bdb36a
AE
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).")
ae0bdd81 989 (license license:gpl2+)))
b027d919
AE
990
991(define-public libdvdnav
992 (package
993 (name "libdvdnav")
734976b6 994 (version "5.0.3")
b027d919
AE
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
734976b6 1002 "0v8byv5z598k06rqzdmj7739vc86xq3zf79zfr698dib7lz055sh"))))
b027d919
AE
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.")
ae0bdd81 1021 (license license:gpl2+)))
2cd85cf9 1022
f1044010
TUBK
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
a6f710ec
TUBK
1049(define-public libdvdcss
1050 (package
1051 (name "libdvdcss")
98416109 1052 (version "1.4.0")
a6f710ec
TUBK
1053 (source (origin
1054 (method url-fetch)
98416109 1055 (uri (string-append "http://download.videolan.org/pub/"
a6f710ec
TUBK
1056 name "/" version "/"
1057 name "-" version ".tar.bz2"))
1058 (sha256
1059 (base32
98416109 1060 "0nl45ifc4xcb196snv9d6hinfw614cqpzcqp92dg43c0hickg290"))))
a6f710ec
TUBK
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.")
ae0bdd81 1067 (license license:gpl2+)))
a6f710ec 1068
2cd85cf9
DT
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")
ae0bdd81 1088 (license license:gpl3+)))
44726031
AE
1089
1090(define-public avidemux
1091 (package
1092 (name "avidemux")
9e786e8b 1093 (version "2.6.12")
44726031
AE
1094 (source (origin
1095 (method url-fetch)
1096 (uri (string-append
1097 "mirror://sourceforge/avidemux/avidemux_"
1098 version ".tar.gz"))
1099 (sha256
1100 (base32
9e786e8b 1101 "0nz52yih8sff53inndkh2dba759xjzsh4b8xjww419lcpk0qp6kn"))
fc1adab1 1102 (patches (search-patches "avidemux-install-to-lib.patch"))))
44726031
AE
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)
44726031
AE
1113 ("jack" ,jack-1)
1114 ("lame" ,lame)
4cafe8ad
EF
1115 ("libva" ,libva)
1116 ("libvdpau" ,libvdpau)
44726031
AE
1117 ("libvorbis" ,libvorbis)
1118 ("libvpx" ,libvpx)
1119 ("libxv" ,libxv)
1120 ("perl" ,perl)
1121 ("pulseaudio" ,pulseaudio)
1122 ("python" ,python-wrapper)
64e8be67
EF
1123 ("qtbase" ,qtbase)
1124 ("qttools" ,qttools)
44726031
AE
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.
1898900f
EF
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
44726031
AE
1141 (lambda _
1142 (with-directory-excursion "avidemux_core/ffmpeg_package"
9e786e8b 1143 (substitute* "ffmpeg-2.7.6/configure"
44726031 1144 (("#! /bin/sh") (string-append "#!" (which "bash"))))
9e786e8b 1145 (system* "tar" "cjf" "ffmpeg-2.7.6.tar.bz2" "ffmpeg-2.7.6"
c09e6a5f 1146 ;; avoid non-determinism in the archive
92226a47
MW
1147 "--sort=name" "--mtime=@0"
1148 "--owner=root:0" "--group=root:0")
1898900f
EF
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
44726031
AE
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)
c687f731
AE
1173 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
1174 "\"-Wl,-rpath=" lib "\"")
44726031
AE
1175 (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
1176 (string-append "-DSDL_INCLUDE_DIR="
1177 sdl "/include/SDL")
1178 (string-append "../" srcdir)
aab56ab7 1179 "-DENABLE_QT5=True"
44726031 1180 args)
1898900f
EF
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))))
44726031
AE
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.
ae0bdd81 1208 (license license:gpl2+)))
44726031 1209
6f6c8b65
TUBK
1210(define-public vapoursynth
1211 (package
1212 (name "vapoursynth")
f80d5fe0 1213 (version "32")
6f6c8b65
TUBK
1214 (source (origin
1215 (method url-fetch)
1216 (uri (string-append
1217 "https://github.com/vapoursynth/vapoursynth/archive/R"
1218 version ".tar.gz"))
f673552c 1219 (file-name (string-append name "-" version))
6f6c8b65
TUBK
1220 (sha256
1221 (base32
f80d5fe0 1222 "1j08whj946v2kkpgxsfhpca8xf0ax9iqzn73wvwjx319p9j0ymp9"))))
6f6c8b65
TUBK
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)
f80d5fe0
EF
1235 ("tesseract-ocr" ,tesseract-ocr)
1236 ("zimg" ,zimg)))
6f6c8b65
TUBK
1237 (arguments
1238 '(#:phases
1239 (modify-phases %standard-phases
1240 (add-after
f8503e2b 1241 'unpack 'autogen
6f6c8b65
TUBK
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.
ae0bdd81 1251 (license license:lgpl2.1+)))
6f6c8b65 1252
67932f86
TUBK
1253(define-public xvid
1254 (package
1255 (name "xvid")
e05035c7 1256 (version "1.3.4")
67932f86
TUBK
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
e05035c7 1264 "1xwbmp9wqshc0ckm970zdpi0yvgqxlqg0s8bkz98mnr8p2067bsz"))))
67932f86
TUBK
1265 (build-system gnu-build-system)
1266 (native-inputs `(("yasm" ,yasm)))
1267 (arguments
1268 '(#:phases
62fe2d47
EF
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")))))))
67932f86
TUBK
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.")
ae0bdd81 1284 (license license:gpl2+)))
e16fde14
DT
1285
1286(define-public livestreamer
1287 (package
1288 (name "livestreamer")
68e88a09 1289 (version "1.12.2")
e16fde14
DT
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
68e88a09 1298 "1fp3d3z2grb1ls97smjkraazpxnvajda2d1g1378s6gzmda2jvjd"))))
e16fde14
DT
1299 (build-system python-build-system)
1300 (arguments
1301 '(#:tests? #f)) ; tests rely on external web servers
e16fde14 1302 (propagated-inputs
5b9fe59f 1303 `(("python-requests" ,python-requests)))
e16fde14
DT
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)))
307ad140
RW
1309
1310(define-public mlt
1311 (package
1312 (name "mlt")
4c7729dc 1313 (version "6.2.0")
307ad140
RW
1314 (source (origin
1315 (method url-fetch)
4c7729dc
EF
1316 (uri (string-append "https://github.com/mltframework/mlt/"
1317 "archive/v" version ".tar.gz"))
1318 (file-name (string-append name "-" version ".tar.gz"))
307ad140
RW
1319 (sha256
1320 (base32
4c7729dc 1321 "1zwzfgxrcbwkxnkiwv0a1rzxdnnaly90yyarl9wdw84nx11ffbnx"))))
307ad140
RW
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)
4c7729dc 1347 ("pulseaudio" ,pulseaudio)
307ad140
RW
1348 ("sdl" ,sdl)
1349 ("sox" ,sox)))
1350 (native-inputs
1351 `(("pkg-config" ,pkg-config)))
4c7729dc 1352 (home-page "https://www.mltframework.org/")
307ad140
RW
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+)))
f464016d 1361
945d985a
DT
1362(define-public v4l-utils
1363 (package
1364 (name "v4l-utils")
9a5c0320 1365 (version "1.10.1")
945d985a
DT
1366 (source (origin
1367 (method url-fetch)
1d4ac724 1368 (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
945d985a
DT
1369 "/v4l-utils-" version ".tar.bz2"))
1370 (sha256
1371 (base32
9a5c0320 1372 "1h1nhg5cmmzlbipak526nk4bm6d0yb217mll75f3rpg7kz1cqiv1"))))
945d985a
DT
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)
b37662e2 1386 ("qtbase" ,qtbase)
945d985a
DT
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
f464016d
DT
1395(define-public obs
1396 (package
1397 (name "obs")
cf1dc4b7 1398 (version "0.15.1")
f464016d
DT
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
cf1dc4b7 1406 "18fycg7xlj2i89wdb9c5js0bnl964s1lpmnvmfyj11zi9k061wsg"))))
f464016d 1407 (build-system cmake-build-system)
08858812
EF
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 '())))
f464016d
DT
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)
90a2309b
EF
1436 ("qtbase" ,qtbase)
1437 ("qtx11extras" ,qtx11extras)
d4df2032 1438 ("v4l-utils" ,v4l-utils)
f464016d
DT
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+)))
d5650f86
EF
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"))))
3161d32d
EF
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"))))
a7d94b54
LC
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+)))