gnu: libebml: Update to 1.4.2 [fixes CVE-2021-3405].
[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>
740c0f37 4;;; Copyright © 2014, 2015, 2016, 2018, 2020 Mark H Weaver <mhw@netris.org>
cda163cd 5;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
954b4c73 6;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
12f92e38 7;;; Copyright © 2015 Andy Patterson <ajpatter@uwaterloo.ca>
d4f86c8b 8;;; Copyright © 2015, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
28cbf65c 9;;; Copyright © 2015, 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
2b841707 10;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
3c8ba11a 11;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
ed6ba9cc 12;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
4df07622 13;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
3c986a7d 14;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
adff7395 15;;; Copyright © 2016, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
590abe01 16;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
72fa6667 17;;; Copyright © 2017 Feng Shu <tumashu@163.com>
d17e6f2b 18;;; Copyright © 201–72021 Tobias Geerinckx-Rice <me@tobias.gr>
794223bc 19;;; Copyright © 2017 Chris Marusich <cmmarusich@gmail.com>
b5b20bda 20;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
e0c40707 21;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
eb88e2c1 22;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
2973ebf5 23;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
394207c1 24;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
e21f3473 25;;; Copyright © 2018 Roel Janssen <roel@gnu.org>
c0fe2e1f 26;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
68c858de 27;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz>
554f5b62 28;;; Copyright © 2018, 2019, 2020 Leo Famulari <leo@famulari.name>
dcfa0acd 29;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot>
0c85d2c6 30;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
18e56ad7 31;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
e7cdd311
MM
32;;; Copyright © 2018 Mark Meyer <mark@ofosos.org>
33;;; Copyright © 2018 Gábor Boskovit <boskovits@gmail.com>
548642db 34;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
04b6e9c5 35;;; Copyright © 2019 Timo Eisenmann <eisenmann@fn.de>
a7afa454 36;;; Copyright © 2019 Arne Babenhauserheide <arne_bab@web.de>
b9d8aa09 37;;; Copyright © 2019 Riku Viitanen <riku.viitanen@protonmail.com>
3f95ac91 38;;; Copyright © 2020, 2021 Oleg Pykhalov <go.wigust@gmail.com>
567a1453 39;;; Copyright © 2020 Josh Holland <josh@inv.alid.pw>
4233e74b 40;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
2f095261 41;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
618819aa 42;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
58a361fe 43;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
d8fd1c17 44;;; Copyright © 2020, 2021 Michael Rohleder <mike@rohleder.de>
d6817e00 45;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
667903d1 46;;; Copyright © 2020 Brett Gilio <brettg@gnu.org>
6a3b4765 47;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
a172a646 48;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
928bedca 49;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
5be01dcd 50;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
aee9f696 51;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
2c9a4c9a 52;;; Copyright © 2021 David Wilson <david@daviwil.com>
39efcc9b
AE
53;;;
54;;; This file is part of GNU Guix.
55;;;
56;;; GNU Guix is free software; you can redistribute it and/or modify it
57;;; under the terms of the GNU General Public License as published by
58;;; the Free Software Foundation; either version 3 of the License, or (at
59;;; your option) any later version.
60;;;
61;;; GNU Guix is distributed in the hope that it will be useful, but
62;;; WITHOUT ANY WARRANTY; without even the implied warranty of
63;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
64;;; GNU General Public License for more details.
65;;;
66;;; You should have received a copy of the GNU General Public License
67;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
68
69(define-module (gnu packages video)
fe138965 70 #:use-module (ice-9 match)
740c0f37 71 #:use-module ((srfi srfi-1) #:hide (zip))
2b94c14c 72 #:use-module (srfi srfi-26)
ae0bdd81 73 #:use-module ((guix licenses) #:prefix license:)
e930c2a3 74 #:use-module (guix utils)
39efcc9b
AE
75 #:use-module (guix packages)
76 #:use-module (guix download)
38829eac 77 #:use-module (guix git-download)
d8841cc5 78 #:use-module (guix svn-download)
aee9f696 79 #:use-module (guix hg-download)
ca4b5588 80 #:use-module (guix build-system cargo)
44726031 81 #:use-module (guix build-system cmake)
2a844af9 82 #:use-module (guix build-system copy)
39efcc9b 83 #:use-module (guix build-system gnu)
0e74bb5b 84 #:use-module (guix build-system glib-or-gtk)
635f981b 85 #:use-module (guix build-system meson)
6f45e45d 86 #:use-module (guix build-system perl)
615215a5 87 #:use-module (guix build-system python)
1c1178cd 88 #:use-module (guix build-system waf)
f27f264e 89 #:use-module (guix build-system trivial)
3b02429c 90 #:use-module (gnu packages)
39efcc9b 91 #:use-module (gnu packages algebra)
4fbcfc14 92 #:use-module (gnu packages assembly)
72bfebf5 93 #:use-module (gnu packages audio)
f1044010 94 #:use-module (gnu packages autotools)
d5a748e8 95 #:use-module (gnu packages avahi)
76277052 96 #:use-module (gnu packages backup)
38829eac 97 #:use-module (gnu packages base)
8dd6fc51 98 #:use-module (gnu packages bison)
2973ebf5 99 #:use-module (gnu packages boost)
d5a748e8 100 #:use-module (gnu packages cdrom)
2973ebf5 101 #:use-module (gnu packages check)
fe047e13 102 #:use-module (gnu packages cmake)
39efcc9b 103 #:use-module (gnu packages compression)
e0c40707 104 #:use-module (gnu packages cpp)
ca4b5588 105 #:use-module (gnu packages crates-io)
9f86a6da 106 #:use-module (gnu packages crates-graphics)
f464016d 107 #:use-module (gnu packages curl)
3a44c7bb 108 #:use-module (gnu packages dejagnu)
78d112c2 109 #:use-module (gnu packages dns)
2973ebf5 110 #:use-module (gnu packages docbook)
e37bdc0f 111 #:use-module (gnu packages documentation)
f22e0e26 112 #:use-module (gnu packages elf)
2973ebf5 113 #:use-module (gnu packages file)
8dd6fc51 114 #:use-module (gnu packages flex)
2afb7939 115 #:use-module (gnu packages fonts)
39efcc9b 116 #:use-module (gnu packages fontutils)
c161c22a 117 #:use-module (gnu packages freedesktop)
44726031
AE
118 #:use-module (gnu packages fribidi)
119 #:use-module (gnu packages gettext)
38829eac 120 #:use-module (gnu packages ghostscript)
d5a748e8
AE
121 #:use-module (gnu packages gl)
122 #:use-module (gnu packages glib)
2cd85cf9 123 #:use-module (gnu packages guile)
fe047e13 124 #:use-module (gnu packages gnome)
c3069cd1 125 #:use-module (gnu packages gnunet)
d5a748e8 126 #:use-module (gnu packages gnupg)
fe047e13 127 #:use-module (gnu packages gstreamer)
44726031 128 #:use-module (gnu packages gtk)
e55354b8 129 #:use-module (gnu packages image)
b5b20bda 130 #:use-module (gnu packages imagemagick)
f48feaa2 131 #:use-module (gnu packages iso-codes)
76277052 132 #:use-module (gnu packages libidn)
c812f460 133 #:use-module (gnu packages libreoffice)
c941b312 134 #:use-module (gnu packages libusb)
d5a748e8
AE
135 #:use-module (gnu packages linux)
136 #:use-module (gnu packages lua)
fe047e13 137 #:use-module (gnu packages m4)
3a44c7bb 138 #:use-module (gnu packages man)
f3395a7b 139 #:use-module (gnu packages markup)
c941b312 140 #:use-module (gnu packages maths)
d5a748e8 141 #:use-module (gnu packages mp3)
4d94b93c 142 #:use-module (gnu packages ncurses)
579a9cde 143 #:use-module (gnu packages networking)
6f6c8b65 144 #:use-module (gnu packages ocr)
69a57387 145 #:use-module (gnu packages pcre)
39efcc9b 146 #:use-module (gnu packages perl)
6c71d56d 147 #:use-module (gnu packages perl-check)
3123cdaf 148 #:use-module (gnu packages perl-web)
5389e030 149 #:use-module (gnu packages photo)
39efcc9b 150 #:use-module (gnu packages pkg-config)
a7d94b54 151 #:use-module (gnu packages popt)
f3395a7b 152 #:use-module (gnu packages pretty-print)
fc2982f7 153 #:use-module (gnu packages protobuf)
d5a748e8 154 #:use-module (gnu packages pulseaudio)
39efcc9b 155 #:use-module (gnu packages python)
f48feaa2 156 #:use-module (gnu packages python-crypto)
589e3f4e 157 #:use-module (gnu packages python-web)
44d10b1f 158 #:use-module (gnu packages python-xyz)
d5a748e8 159 #:use-module (gnu packages qt)
76277052 160 #:use-module (gnu packages rdesktop)
c7ed031d 161 #:use-module (gnu packages re2c)
2973ebf5 162 #:use-module (gnu packages ruby)
ca4b5588 163 #:use-module (gnu packages rust-apps)
76277052 164 #:use-module (gnu packages samba)
d5a748e8 165 #:use-module (gnu packages sdl)
2973ebf5
GG
166 #:use-module (gnu packages serialization)
167 #:use-module (gnu packages shells)
cd0322a3 168 #:use-module (gnu packages sqlite)
d5a748e8 169 #:use-module (gnu packages ssh)
579a9cde 170 #:use-module (gnu packages swig)
6b2c6be0 171 #:use-module (gnu packages texinfo)
c426e61e 172 #:use-module (gnu packages textutils)
a7fd7b68 173 #:use-module (gnu packages tls)
1a291593 174 #:use-module (gnu packages time)
76277052 175 #:use-module (gnu packages upnp)
870541d6 176 #:use-module (gnu packages vulkan)
bb470bd3 177 #:use-module (gnu packages web)
fe047e13 178 #:use-module (gnu packages webkit)
794223bc 179 #:use-module (gnu packages wxwidgets)
ee3b55ea 180 #:use-module (gnu packages xdisorg)
54ff0b7d 181 #:use-module (gnu packages xiph)
d5a748e8 182 #:use-module (gnu packages xml)
4fbcfc14 183 #:use-module (gnu packages xorg))
39efcc9b 184
ce49fdc6
RG
185(define-public transcode
186 (package
187 (name "transcode")
188 (version "1.1.7")
189 (source
190 (origin
191 (method url-fetch)
192 (uri
193 (string-append "https://sources.archlinux.org/other/community/"
194 name "/" name "-" version ".tar.bz2"))
195 (sha256
196 (base32 "14ha9xjsjrj131f35jd56z5v1jb4rbsrj1nril5shqnxw3c74khy"))
197 (patches
198 (search-patches "transcode-ffmpeg.patch"))))
199 (build-system gnu-build-system)
200 (arguments
201 `(#:configure-flags
202 (list
203 "--enable-libv4l2"
204 "--enable-libmpeg2"
205 "--enable-libmpeg2convert"
206 "--enable-v4l"
207 ;;; XXX: Not available.
208 ;"--enable-bktr"
209 ;"--enable-sunau"
210 "--enable-oss"
211 "--enable-alsa"
212 ;;; XXX: Not available.
213 ;"--enable-libpostproc"
214 "--enable-freetype2"
215 "--enable-xvid"
216 "--enable-x264"
217 "--enable-ogg"
218 "--enable-vorbis"
219 "--enable-theora"
220 ;;; XXX: Not available.
221 ;"--enable-pvm3"
222 "--enable-libdv"
223 "--enable-libquicktime"
224 "--enable-lzo"
225 "--enable-a52"
226 "--enable-faac"
227 "--enable-libxml2"
228 ;;; XXX: Not available.
229 ;"--enable-ibp"
230 ;;"--enable-mjpegtools"
231 "--enable-sdl"
232 "--enable-imagemagick"
233 ;;; XXX: Not available.
234 ;"--enable-libjpegmmx"
235 "--enable-libjpeg")))
236 ;;; XXX: Not available.
237 ;"--enable-bsdav"
238 ;"--enable-pv3"
239 ;"--enable-nuv"
240 (native-inputs
241 `(("autoconf" ,autoconf)
242 ("automake" ,automake)
243 ("iconv" ,libiconv)
244 ("libtool" ,libtool)
245 ("libxml2" ,libxml2)
246 ("perl" ,perl)
247 ("pkg-config" ,pkg-config)
248 ("python" ,python-wrapper)))
249 (inputs
250 `(("alsa-lib" ,alsa-lib)
251 ("faac" ,faac)
252 ("ffmpeg" ,ffmpeg)
253 ("freetype" ,freetype)
cb89b36c 254 ("imagemagick" ,imagemagick)
ce49fdc6
RG
255 ("lame" ,lame)
256 ("liba52" ,liba52)
257 ("libdv" ,libdv)
258 ("libdvdread" ,libdvdread)
259 ("libjpeg" ,libjpeg-turbo)
260 ("libmpeg2" ,libmpeg2)
261 ("libogg" ,libogg)
262 ("libquicktime" ,libquicktime)
263 ("libtheora" ,libtheora)
264 ("libvorbis" ,libvorbis)
265 ("lzo" ,lzo)
266 ("mjepgtools" ,mjpegtools)
267 ("sdl" ,sdl)
268 ("v4l-utils" ,v4l-utils)
269 ("x11" ,libx11)
270 ("x264" ,libx264)
271 ("xaw" ,libxaw)
272 ("xext" ,libxext)
273 ("xpm" ,libxpm)
274 ("xv" ,libxv)
275 ("xvid" ,xvid)
276 ("zlib" ,zlib)))
277 (synopsis "Audio/Video Transcoder")
278 (description "Transcode is a fast, versatile and command-line based
279audio/video everything to everything converter primarily focussed on producing
280AVI video files with MP3 audio, but also including a program to read all the
281video and audio streams from a DVD.")
282 (home-page
283 "http://linuxfromscratch.org/blfs/view/svn/multimedia/transcode.html")
284 (license license:gpl2+)))
285
a56e1a84
RG
286(define-public svt-hevc
287 (package
288 (name "svt-hevc")
289 (version "1.4.3")
290 (source
291 (origin
292 (method git-fetch)
293 (uri
294 (git-reference
8ed4c468 295 (url "https://github.com/OpenVisualCloud/SVT-HEVC")
a56e1a84
RG
296 (commit (string-append "v" version))))
297 (file-name (git-file-name name version))
298 (sha256
299 (base32 "1sqh3dciqm2p1b66kngcpxqy5fx3ramxlxy8gfcbdwn2i3rsqhs7"))))
300 (build-system cmake-build-system)
301 (arguments
302 `(#:tests? #f)) ; Test script is stand-alone
303 (native-inputs
304 `(("yasm" ,yasm)))
305 (synopsis "SVT HEVC encoder")
306 (description "Scalable Video Technology (SVT) is a software-based video
307coding technology that is highly optimized for Intel's Xeon processors. Using
308the SVT-HEVC encoder, it is possible to spread video encoding processing across
309multiple Intel's Xeon processors to achieve a real advantage of processing
310efficiency.")
311 (home-page "https://01.org/svt")
312 (license (license:non-copyleft "file:///LICENSE.md"))))
313
71a77016
RG
314(define-public mediasdk
315 (package
316 (name "mediasdk")
317 (version "20.1.1")
318 (source
319 (origin
320 (method git-fetch)
321 (uri
322 (git-reference
8ed4c468 323 (url "https://github.com/Intel-Media-SDK/MediaSDK")
71a77016
RG
324 (commit (string-append "intel-" name "-" version))))
325 (file-name (git-file-name name version))
326 (sha256
327 (base32 "0blwcxr5j8762nylx2cxrq0h53bpgnk859dbs6crq4wr9fcxlx9z"))))
328 (build-system cmake-build-system)
329 (arguments
330 `(#:configure-flags
331 (list
332 "-DENABLE_X11=ON"
333 "-DENABLE_X11_DRI3=ON"
334 "-DENABLE_WAYLAND=ON"
335 "-DENABLE_TEXTLOG=ON"
336 "-DENABLE_STAT=ON"
337 "-DBUILD_TESTS=ON"
338 "-DBUILD_TOOLS=ON"
339 (string-append "-DCMAKE_EXE_LINKER_FLAGS=-Wl,-rpath="
340 (assoc-ref %outputs "out") "/lib"))))
341 (native-inputs
342 `(("pkg-config" ,pkg-config)
343 ("python" ,python-wrapper)))
344 (inputs
345 `(("libdrm" ,libdrm)
346 ("libva" ,libva)
347 ("pciaccess" ,libpciaccess)
348 ("wayland" ,wayland)
349 ("x11" ,libx11)))
350 (synopsis "Intel Media SDK")
351 (description "MediaSDK provides a plain C API to access hardware-accelerated
352video decode, encode and filtering on Intel's Gen graphics hardware platforms.")
353 (home-page "http://mediasdk.intel.com/")
354 (license (license:non-copyleft "file:///LICENSE"))))
355
d6a413a7
RG
356(define-public schroedinger
357 (package
358 (name "schroedinger")
359 (version "1.0.11")
360 (source
361 (origin
362 (method url-fetch)
363 (uri
364 (string-append "https://launchpad.net/" name "/trunk/" version
365 "/+download/" name "-" version ".tar.gz"))
366 (sha256
367 (base32 "04prr667l4sn4zx256v1z36a0nnkxfdqyln48rbwlamr6l3jlmqy"))))
368 (build-system gnu-build-system)
369 (outputs '("out" "doc"))
370 (arguments
371 `(#:phases
372 (modify-phases %standard-phases
373 (add-after 'install 'move-docs
374 (lambda* (#:key outputs #:allow-other-keys)
375 (let* ((out (assoc-ref outputs "out"))
376 (doc (assoc-ref outputs "doc")))
377 (mkdir-p (string-append doc "/share"))
378 (rename-file
379 (string-append out "/share/gtk-doc")
380 (string-append doc "/share/gtk-doc"))
381 #t))))))
382 (native-inputs
383 `(("dash" ,dash)
384 ("gtk-doc" ,gtk-doc)
385 ("pkg-config" ,pkg-config)))
386 (inputs
387 `(("glew" ,glew)
388 ("opengl" ,mesa)))
389 (propagated-inputs
390 `(("orc" ,orc)))
391 (synopsis "Dirac video codec")
392 (description "Schroedinger is a project implementing the Dirac video codec in
393ANSI C code. It is meant to be highly optimized and portable. It is developed
394as a joint effort between the BBC and Fluendo.")
395 (home-page "https://launchpad.net/schroedinger")
396 (license
397 ;; This library is licensed under 4 different licenses,
398 ;; and you can choose to use it under the terms of any one of them.
399 (list
400 license:gpl2+
401 license:lgpl2.0+
402 license:expat
403 license:mpl1.1))))
404
0444187d
RG
405(define-public libquicktime
406 (package
407 (name "libquicktime")
408 (version "1.2.4")
409 (source
410 (origin
411 (method url-fetch)
412 (uri
413 (string-append "https://sourceforge.net/projects/" name "/files/"
414 name "/" version "/" name "-" version ".tar.gz"))
415 (sha256
416 (base32 "0s3kshzl3zfjw3phzv73r91fkr9z8q8kc3dhsys4f4xk6ff3alqw"))
417 (patches
418 (search-patches "libquicktime-ffmpeg.patch"))))
419 (build-system gnu-build-system)
420 (native-inputs
421 `(("gettext" ,gettext-minimal)
422 ("doxygen" ,doxygen)
423 ("pkg-config" ,pkg-config)))
424 (inputs
425 `(("alsa" ,alsa-lib)
426 ("ffmpeg" ,ffmpeg)
427 ("gtk+-2" ,gtk+-2)
428 ("lame" ,lame)
429 ("libdv" ,libdv)
430 ("libjpeg" ,libjpeg-turbo)
431 ("libpng" ,libpng)
432 ("libvorbis" ,libvorbis)
433 ("opengl" ,mesa)
434 ("schroedinger" ,schroedinger)
435 ("x11" ,libx11)
436 ("x264" ,libx264)
437 ("xaw" ,libxaw)
438 ("xv" ,libxv)))
439 (synopsis "Quick Time Library")
440 (description "The goal of this project is to enhance the quicktime4linux
441library.")
442 (home-page "http://libquicktime.sourceforge.net/")
443 (license license:lgpl2.1+)))
444
502114de
RG
445(define-public mjpegtools
446 (package
447 (name "mjpegtools")
448 (version "2.1.0")
449 (source
450 (origin
451 (method url-fetch)
452 (uri
453 (string-append "https://sourceforge.net/projects/" name "/files/"
454 name "/" version "/" name "-" version ".tar.gz"))
455 (sha256
456 (base32 "0kvhxr5hkabj9v7ah2rzkbirndfqdijd9hp8v52c1z6bxddf019w"))))
457 (build-system gnu-build-system)
458 (inputs
459 `(("gtk+-2" ,gtk+-2)
460 ("libdv" ,libdv)
461 ("libpng" ,libpng)
462 ("libquicktime" ,libquicktime)
463 ("sdl" ,sdl)))
464 (synopsis "Tools for handling MPEG")
465 (description "Mjpeg tools is a suite of programs which support video capture,
466editing, playback, and compression to MPEG of MJPEG video. Edit, play and
467compression software is hardware independent.")
468 (home-page "http://mjpeg.sourceforge.net/")
469 (license license:gpl2+)))
470
97f3fe7c
RG
471(define-public libmms
472 (package
473 (name "libmms")
474 (version "0.6.4")
475 (source
476 (origin
477 (method url-fetch)
478 (uri
479 (string-append "https://sourceforge.net/projects/" name "/files/"
480 name "/" version "/" name "-" version ".tar.gz"))
481 (sha256
482 (base32 "0kvhxr5hkabj9v7ah2rzkbirndfqdijd9hp8v52c1z6bxddf019w"))))
483 (build-system gnu-build-system)
484 (synopsis "MMS stream protocol library")
485 (description "Libmms is a library for streaming media files using the mmst
486and mmsh protocols.")
487 (home-page "https://sourceforge.net/projects/libmms/")
488 (license license:lgpl2.1+)))
489
02c05485
RG
490(define-public libvideogfx
491 (package
492 (name "libvideogfx")
493 (version "1.0.9")
494 (source
495 (origin
496 (method git-fetch)
497 (uri
498 (git-reference
8ed4c468 499 (url "https://github.com/farindk/libvideogfx")
02c05485
RG
500 (commit (string-append "v" version))))
501 (file-name (git-file-name name version))
502 (sha256
503 (base32 "154b0j8cfg879pg08xcbwvbz8z9nrfnyj31i48vxir1psas70ynq"))))
504 (build-system gnu-build-system)
505 (arguments
506 `(#:phases
507 (modify-phases %standard-phases
508 (add-after 'unpack 'fix-build-errors
509 (lambda _
510 (substitute* "libvideogfx/graphics/fileio/ffmpeg.cc"
511 (("av_close_input_file\\(")
512 "avformat_close_input(&"))
513 (substitute* "libvideogfx/graphics/fileio/png.cc"
514 (("is != NULL") "is.good()"))
515 #t)))))
516 (native-inputs
517 `(("autoconf" ,autoconf)
518 ("automake" ,automake)
519 ("libtool" ,libtool)
520 ("pkg-config" ,pkg-config)))
521 (inputs
522 `(("ffmpeg" ,ffmpeg-2.8)
523 ("jpeg" ,libjpeg-turbo)
524 ("png" ,libpng)
525 ("x11" ,libx11)
526 ("xext" ,libxext)))
527 (synopsis "Video processing library")
528 (description "LibVideoGfx is a C++ library for low-level video processing.
529It aims at speeding up the development process for image and video processing
530applications by providing high-level classes for commonly required tasks.")
531 (home-page "https://dirk-farin.net/software/libvideogfx/index.html")
532 (license license:lgpl2.1+)))
533
5f524bdd
TGR
534(define-public libde265
535 (package
536 (name "libde265")
9f2f60d3 537 (version "1.0.8")
5f524bdd
TGR
538 (source
539 (origin
540 (method git-fetch)
541 (uri
542 (git-reference
8ed4c468 543 (url "https://github.com/strukturag/libde265")
5f524bdd
TGR
544 (commit (string-append "v" version))))
545 (file-name (git-file-name name version))
546 (sha256
9f2f60d3 547 (base32 "1dzflqbk248lz5ws0ni5acmf32b3rmnq5gsfaz7691qqjxkl1zml"))))
5f524bdd 548 (build-system gnu-build-system)
cb9fd8de
TGR
549 (arguments
550 `(#:configure-flags
551 (list "--disable-static")))
5f524bdd
TGR
552 (native-inputs
553 `(("autoconf" ,autoconf)
554 ("automake" ,automake)
555 ("libtool" ,libtool)
556 ("pkg-config" ,pkg-config)
557 ("python" ,python-wrapper)))
558 (inputs
559 `(;; XXX: Build fails with libvideogfx.
560 ;; ("libvideogfx" ,libvideogfx)
561 ("qt" ,qtbase)
562 ("sdl" ,sdl)))
563 (synopsis "H.265 video codec implementation")
564 (description "Libde265 is an implementation of the h.265 video codec. It is
565written from scratch and has a plain C API to enable a simple integration into
566other software.")
567 (home-page "https://www.libde265.org/")
568 (license
569 (list
570 ;; Applications.
571 license:expat
572 ;; Library.
573 license:lgpl3+))))
574
1a6bc33d
RG
575(define-public tslib
576 (package
577 (name "tslib")
0fa01ccd 578 (version "1.22")
1a6bc33d
RG
579 (source
580 (origin
581 (method git-fetch)
582 (uri
583 (git-reference
8ed4c468 584 (url "https://github.com/libts/tslib")
1a6bc33d
RG
585 (commit version)))
586 (file-name (git-file-name name version))
587 (sha256
0fa01ccd 588 (base32 "197p6vy539wvfrv23agbvmay4rjya1jnisi46llm0nx4cvqh48by"))))
1a6bc33d
RG
589 (build-system gnu-build-system)
590 (arguments
591 `(#:test-target "tests"
592 #:configure-flags
0fa01ccd 593 (list "--with-sdl2")))
1a6bc33d
RG
594 (native-inputs
595 `(("autoconf" ,autoconf)
596 ("automake" ,automake)
597 ("libtool" ,libtool)
598 ("pkg-config" ,pkg-config)))
599 (inputs
600 `(("linux-headers" ,linux-libre-headers)
601 ("sdl2" ,sdl2)))
602 (synopsis "Touchscreen access library")
603 (description "TSLib is a cross-platform library that provides access to
604touchscreen devices and the ability to apply filters to their input events.")
605 (home-page "http://www.tslib.org/")
606 (license license:lgpl2.1+)))
607
09fd9898
RG
608(define-public libmpeg3
609 (package
610 (name "libmpeg3")
611 (version "1.8")
612 (source
613 (origin
614 (method url-fetch)
615 (uri
616 (string-append "https://sourceforge.net/projects/heroines/files/"
617 "releases/081108/" name "-" version "-src.tar.bz2"))
618 (sha256
619 (base32 "1i53vv0wm5qfwgg1z7j9g14s6c7gxxkiy4vbdkq3lijjyyz50vv5"))))
620 (build-system gnu-build-system)
621 (arguments
622 `(#:test-target "test"
623 #:make-flags
624 (list
625 (string-append "A52DIR=" (assoc-ref %build-inputs "liba52"))
626 (string-append "DST=" (assoc-ref %outputs "out") "/bin"))
627 #:phases
628 (modify-phases %standard-phases
629 (add-after 'unpack 'delete-bundled-a52dec
630 (lambda _
631 (delete-file-recursively "a52dec-0.7.3")
632 (substitute* "Makefile"
633 (("include Makefile\\.a52")
634 "")
635 (("\\(A52DIR\\)/include")
636 "(A52DIR)/include/a52dec")
637 (("LIBS = " match)
638 (string-append match "-la52 ")))
639 #t))
640 (add-before 'install 'create-destination-directory
641 (lambda* (#:key outputs #:allow-other-keys)
642 (let* ((out (string-append (assoc-ref outputs "out"))))
643 (mkdir-p (string-append out "/bin"))
644 #t))))))
645 (native-inputs
646 `(("nasm" ,nasm)))
647 (inputs
648 `(("liba52" ,liba52)))
649 (synopsis "Advanced MPEG editing and manipulation library")
650 (description "Libmpeg3 decodes MP2, MP3, AC3, MPEG-1 video, MPEG-2 video,
651and DVD footage in a single library. It supports many esoteric features like
652parallel video decoding, frame-accurate editing, YUV 4:2:2, and ATSC transport
653stream decoding")
654 (home-page "http://heroinewarrior.com/libmpeg3.php")
655 (license license:gpl2+)))
656
6b2c6be0
SB
657(define-public aalib
658 (package
659 (name "aalib")
660 (version "1.4rc5")
661 (source (origin
662 (method url-fetch)
de67e922
LF
663 (uri (string-append "mirror://sourceforge/aa-project/aa-lib/"
664 version "/" name "-" version ".tar.gz"))
6b2c6be0
SB
665 (sha256
666 (base32
667 "1vkh19gb76agvh4h87ysbrgy82hrw88lnsvhynjf4vng629dmpgv"))))
668 (build-system gnu-build-system)
669 (native-inputs
670 `(("makeinfo" ,texinfo)))
671 (inputs
672 `(("ncurses" ,ncurses)))
673 (arguments
c437922a 674 `(#:phases
6b2c6be0 675 (modify-phases %standard-phases
3a4de6b2 676 (replace 'configure
014cbde6 677 (lambda* (#:key build inputs outputs #:allow-other-keys)
6b2c6be0
SB
678 ;; This old `configure' script doesn't support
679 ;; variables passed as arguments.
680 (let ((out (assoc-ref outputs "out"))
681 (ncurses (assoc-ref inputs "ncurses")))
682 (setenv "CONFIG_SHELL" (which "bash"))
3595e83d
MW
683 (invoke "./configure"
684 (string-append "--prefix=" out)
685 (string-append "--build=" build)
686 ;; The ancient config.guess is unable to
687 ;; guess the host triplet on mips64el.
688 ,@(if (string=? "mips64el-linux"
689 (%current-system))
690 '("--host=mips64el-unknown-linux-gnu")
691 '())
692 ;; The same is also true with aarch64.
693 ,@(if (string=? "aarch64-linux"
694 (%current-system))
695 '("--host=aarch64-unknown-linux-gnu")
696 '())
697 (string-append "--with-ncurses="
698 ncurses))))))))
6b2c6be0
SB
699 (home-page "http://aa-project.sourceforge.net/aalib/")
700 (synopsis "ASCII-art library")
701 (description
702 "AA-lib is a low level gfx library which does not require graphics device.
703In fact, there is no graphical output possible. AA-lib replaces those
704old-fashioned output methods with powerful ascii-art renderer.")
705 (license license:lgpl2.0+)))
706
b7f5fa82
TGR
707(define-public celluloid
708 (package
709 (name "celluloid")
26746c67 710 (version "0.20")
b7f5fa82
TGR
711 (source
712 (origin
713 (method url-fetch)
26746c67
TGR
714 (uri (string-append "https://github.com/celluloid-player/celluloid"
715 "/releases/download/v" version
716 "/celluloid-" version ".tar.xz"))
b7f5fa82 717 (sha256
26746c67 718 (base32 "0kjjv2pcdvwcn4yi8kbpsca7pnx6cx6xdznv7ppqm0fssx68qyb3"))))
b7f5fa82
TGR
719 (build-system glib-or-gtk-build-system)
720 (native-inputs
721 `(("intltool" ,intltool)
722 ("pkg-config" ,pkg-config)))
723 (inputs
724 `(("gtk+" ,gtk+)
725 ("libepoxy" ,libepoxy)
726 ("mpv" ,mpv)))
727 (home-page "https://github.com/celluloid-player/celluloid")
728 (synopsis "GTK+ frontend for the mpv media player")
729 (description "Celluloid is a simple GTK+ frontend for the mpv media player.
730It interacts with mpv via the client API exported by libmpv, allowing access to
731mpv's powerful playback capabilities.")
732 (license license:gpl3+)))
733
cda163cd
TUBK
734(define-public liba52
735 (package
736 (name "liba52")
737 (version "0.7.4")
738 (source (origin
739 (method url-fetch)
8c056935
TUBK
740 (uri (string-append
741 ;; A mirror://sourceforge URI doesn't work, presumably
742 ;; because the SourceForge project is misconfigured.
743 "http://liba52.sourceforge.net/files/a52dec-" version
744 ".tar.gz"))
cda163cd
TUBK
745 (sha256
746 (base32
23da88f6 747 "0czccp4fcpf2ykp16xcrzdfmnircz1ynhls334q374xknd5747d2"))
fc1adab1
AK
748 (patches (search-patches "liba52-enable-pic.patch"
749 "liba52-set-soname.patch"
750 "liba52-use-mtune-not-mcpu.patch"
751 "liba52-link-with-libm.patch"))))
cda163cd 752 (build-system gnu-build-system)
23da88f6
MW
753 ;; XXX We need to run ./bootstrap because of the build system fixes above.
754 (native-inputs
755 `(("autoconf" ,autoconf)
756 ("automake" ,automake)
757 ("libtool" ,libtool)))
412a2422 758 (arguments `(#:configure-flags '("--enable-shared")
23da88f6
MW
759 #:phases
760 (modify-phases %standard-phases
761 ;; XXX We need to run ./bootstrap because of the build
762 ;; system fixes above.
189be331 763 (replace 'bootstrap
78666a68 764 (lambda _ (invoke "sh" "bootstrap"))))))
cda163cd
TUBK
765 (home-page "http://liba52.sourceforge.net/")
766 (synopsis "ATSC A/52 stream decoder")
767 (description "liba52 is a library for decoding ATSC A/52 streams. The
768A/52 standard is used in a variety of applications, including digital
769television and DVD. It is also known as AC-3.")
ae0bdd81 770 (license license:gpl2+)))
cda163cd 771
a7afa454 772(define-public libaom
08cc1397
LF
773 (package
774 (name "libaom")
cfee8608 775 (version "2.0.1")
08cc1397
LF
776 (source (origin
777 (method git-fetch)
778 (uri (git-reference
779 (url "https://aomedia.googlesource.com/aom/")
780 (commit (string-append "v" version))))
781 (file-name (git-file-name name version))
782 (sha256
783 (base32
cfee8608 784 "1vakwmcwvmmrdw7460m8hzq96y71lxqix8b2g07c6s12br0rrdhl"))))
08cc1397
LF
785 (build-system cmake-build-system)
786 (native-inputs
787 `(("perl" ,perl)
788 ("pkg-config" ,pkg-config)
789 ("python" ,python))) ; to detect the version
790 (arguments
791 `(#:tests? #f ;no check target
792 #:configure-flags
793 ;; build dynamic library
794 (list "-DBUILD_SHARED_LIBS=YES"
795 "-DENABLE_PIC=TRUE"
796 "-DAOM_TARGET_CPU=generic"
797 (string-append "-DCMAKE_INSTALL_PREFIX="
798 (assoc-ref %outputs "out")))))
799 (home-page "https://aomedia.googlesource.com/aom/")
800 (synopsis "AV1 video codec")
801 (description "Libaom is the reference implementation of AV1. It includes a
802shared library and encoder and decoder command-line executables.")
803 (license license:bsd-2)))
a7afa454 804
e0884109
MW
805(define-public libmpeg2
806 (package
807 (name "libmpeg2")
808 (version "0.5.1")
809 (source (origin
810 (method url-fetch)
811 ;; A mirror://sourceforge URI doesn't work, presumably
812 ;; because the SourceForge project is misconfigured.
813 (uri (string-append "http://libmpeg2.sourceforge.net/files/"
814 name "-" version ".tar.gz"))
c50b07dd
MB
815 (patches (search-patches "libmpeg2-arm-private-symbols.patch"
816 "libmpeg2-global-symbol-test.patch"))
e0884109
MW
817 (sha256
818 (base32
819 "1m3i322n2fwgrvbs1yck7g5md1dbg22bhq5xdqmjpz5m7j4jxqny"))))
820 (inputs
821 `(("libx11" ,libx11)
822 ("libxext" ,libxext)
823 ("libxv" ,libxv)
824 ("libsm" ,libsm)
825 ("libice" ,libice)
826 ("sdl" ,sdl)))
827 (build-system gnu-build-system)
828 (home-page "http://libmpeg2.sourceforge.net/")
829 (synopsis "MPEG1 and MPEG2 video decoder library")
830 (description
831 "libmpeg2 is a library which can decode MPEG1 and MPEG2 video streams.")
832 (license license:gpl2+)))
833
82712597 834(define-public libx264
c0fe2e1f
MB
835 ;; There are no tags in the repository, so we take the version number from
836 ;; the X264_BUILD variable defined in x264.h.
d407b087
LF
837 (let ((version "161")
838 (commit "4c2aafd864dd201832ec2be0fef4484925146650")
c0fe2e1f
MB
839 (revision "0"))
840 (package
841 (name "libx264")
842 (version (git-version version revision commit))
843 (source (origin
844 (method git-fetch)
845 (uri (git-reference
846 (url "https://code.videolan.org/videolan/x264.git")
847 (commit commit)))
848 (file-name (git-file-name name version))
849 (sha256
850 (base32
d407b087 851 "1i6v9h3xx9pi0zmlj3anwwjxqa63sbhy9crrif8dphipwfn9hyg5"))))
c0fe2e1f
MB
852 (build-system gnu-build-system)
853 (native-inputs
854 `(("pkg-config" ,pkg-config)
855 ("nasm" ,nasm)))
856 ;; TODO: Add gpac input
857 (arguments
858 `(#:tests? #f ;no check target
859 #:configure-flags '("--enable-shared"
860 ;; Don't build the command-line program. If we
861 ;; want it later, we should do so in a different
862 ;; package to avoid a circular dependency (the x264
863 ;; program depends on ffmpeg and ffmpeg depends on
864 ;; libx264).
865 "--disable-cli"
cb50d0c2 866
c0fe2e1f
MB
867 ;; On MIPS, we must pass "--disable-asm" or else
868 ;; configure fails after printing: "You specified a
869 ;; pre-MSA CPU in your CFLAGS. If you really want
870 ;; to run on such a CPU, configure with
871 ;; --disable-asm."
872 ,@(if (string-prefix? "mips"
873 (or (%current-target-system)
874 (%current-system)))
875 '("--disable-asm")
876 '()))))
877 (home-page "https://www.videolan.org/developers/x264.html")
878 (synopsis "H.264 video coding library")
879 (description "libx264 is an advanced encoding library for creating
82712597 880H.264 (MPEG-4 AVC) video streams.")
c0fe2e1f
MB
881 (license (list license:gpl2+ ;most files
882 license:isc ;common/x86/x86inc.asm
883 license:lgpl2.1+ ;extras/getopt.c
884 license:bsd-3 ;extras/inttypes.h
885 (license:non-copyleft ;extras/cl*.h
886 "file://extras/cl.h"
887 "See extras/cl.h in the distribution."))))))
82712597 888
2973ebf5
GG
889(define-public mkvtoolnix
890 (package
891 (name "mkvtoolnix")
d8fd1c17 892 (version "52.0.0")
2973ebf5
GG
893 (source
894 (origin
895 (method url-fetch)
896 (uri (string-append "https://mkvtoolnix.download/sources/"
908d8bed 897 "mkvtoolnix-" version ".tar.xz"))
2973ebf5 898 (sha256
d8fd1c17 899 (base32 "15y7ahlifsclnkl70wn5w34dil8nwcwcjnw3k2ydqc6dz4vb0j5s"))
2973ebf5 900 (modules '((guix build utils)))
6cbee49d
MW
901 (snippet '(begin
902 ;; Delete bundled libraries.
903 (for-each delete-file-recursively
f3395a7b
EF
904 '("lib/fmt"
905 "lib/libebml"
6cbee49d
MW
906 "lib/libmatroska"
907 "lib/nlohmann-json"
908 "lib/pugixml"
909 "lib/utf8-cpp"))
910 #t))))
2973ebf5 911 (build-system gnu-build-system)
99d5e5df 912 (outputs '("out" "gui")) ; "mkvtoolnix-gui" brings the closure size from ~300 MB to 1.5+ GB.
2973ebf5
GG
913 (inputs
914 `(("boost" ,boost)
915 ("bzip2" ,bzip2)
f3395a7b 916 ("cmark" ,cmark)
2973ebf5 917 ("libebml" ,libebml)
2973ebf5 918 ("file" ,file)
f3395a7b
EF
919 ("flac" ,flac)
920 ("fmt" ,fmt)
d8fd1c17 921 ("libdvdread" ,libdvdread)
2973ebf5
GG
922 ("libmatroska" ,libmatroska)
923 ("libogg" ,libogg)
924 ("libvorbis" ,libvorbis)
925 ("lzo" ,lzo)
69a57387 926 ("pcre2" ,pcre2)
2973ebf5 927 ("pugixml" ,pugixml)
662ff659
EF
928 ("qtbase" ,qtbase)
929 ("qtmultimedia" ,qtmultimedia)
2973ebf5
GG
930 ("utfcpp" ,utfcpp)
931 ("zlib" ,zlib)))
932 (native-inputs
933 `(("docbook-xsl" ,docbook-xsl)
934 ("gettext" ,gettext-minimal)
935 ("googletest" ,googletest)
936 ("libxslt" ,libxslt)
936aa052 937 ("json-modern-cxx" ,json-modern-cxx)
2973ebf5
GG
938 ("perl" ,perl)
939 ("pkg-config" ,pkg-config)
940 ("po4a" ,po4a)
662ff659 941 ("qttools" ,qttools)
2973ebf5
GG
942 ("ruby" ,ruby)))
943 (arguments
944 `(#:configure-flags
945 (list (string-append "--with-boost="
946 (assoc-ref %build-inputs "boost"))
947 (string-append "--with-docbook-xsl-root="
948 (assoc-ref %build-inputs "docbook-xsl")
949 "/xml/xsl/docbook-xsl-"
950 ,(package-version docbook-xsl))
e7ed996c
EF
951 "--enable-update-check=no"
952 "--enable-precompiled-headers=no")
2973ebf5
GG
953 #:phases
954 (modify-phases %standard-phases
07272bd8
TGR
955 (add-after 'unpack 'patch-relative-file-names
956 (lambda* (#:key outputs #:allow-other-keys)
957 (let ((out (assoc-ref outputs "out")))
958 (substitute* "src/mkvtoolnix-gui/util/settings.cpp"
959 (("mkvmerge" match)
960 (string-append out "/bin/" match)))
961 #t)))
2973ebf5 962 (add-before 'configure 'add-googletest
e7ed996c 963 (lambda* (#:key inputs #:allow-other-keys)
2973ebf5 964 (symlink
e7ed996c
EF
965 (string-append (assoc-ref inputs "googletest")
966 "/include/gtest") "lib/gtest")
2973ebf5
GG
967 #t))
968 (replace 'build
969 (lambda _
970 (let ((-j (list "-j" (number->string (parallel-job-count)))))
6c4d1413 971 (apply invoke "rake" -j))))
2973ebf5
GG
972 (replace 'check
973 (lambda _
6c4d1413 974 (invoke "rake" "tests/unit")))
2973ebf5
GG
975 (replace 'install
976 (lambda _
99d5e5df
PN
977 (invoke "rake" "install")))
978 (add-after 'install 'post-install
979 (lambda* (#:key outputs #:allow-other-keys)
980 ;; Move the Qt interface to "gui".
b55db494
PN
981 (let* ((out (assoc-ref outputs "out"))
982 (gui (assoc-ref outputs "gui"))
983 (strip-store-dir (lambda (path)
984 (substring path (string-prefix-length out path)))))
99d5e5df
PN
985 (for-each
986 (lambda (file)
987 (mkdir-p (string-append gui (dirname file)))
988 (rename-file (string-append out file)
989 (string-append gui file)))
b55db494
PN
990 (append '("/bin/mkvtoolnix-gui"
991 "/share/applications/org.bunkus.mkvtoolnix-gui.desktop"
992 "/share/metainfo/org.bunkus.mkvtoolnix-gui.appdata.xml"
993 "/share/mime/packages/org.bunkus.mkvtoolnix-gui.xml")
994 (map strip-store-dir (find-files out "\\.ogg$"))
995 (map strip-store-dir (find-files out "mkvtoolnix-gui\\.png$"))
996 (map strip-store-dir (find-files out "mkvtoolnix-gui\\.1"))))
997 (for-each
998 (lambda (file)
999 (delete-file-recursively (string-append out file)))
1000 '("/share/applications"
1001 "/share/metainfo"
1002 "/share/mime"
1003 "/share/mkvtoolnix")))
99d5e5df 1004 #t)))))
2973ebf5
GG
1005 (home-page "https://mkvtoolnix.download")
1006 (synopsis "Tools to create, alter and inspect Matroska files")
1007 (description
1008 "MKVToolNix provides tools for getting information about Matroska files
df14dc48
TGR
1009(@command{mkvinfo}), extracting tracks/data from Matroska files
1010(@command{mkvextract}), and creating Matroska files from other media files
1011(@command{mkvmerge}).")
2973ebf5
GG
1012 (license license:gpl2)))
1013
6c71d56d
TGR
1014(define-public straw-viewer
1015 (package
1016 (name "straw-viewer")
fee91b87 1017 (version "0.1.2")
6c71d56d
TGR
1018 (source
1019 (origin
1020 (method git-fetch)
1021 (uri (git-reference
1022 (url "https://github.com/trizen/straw-viewer")
1023 (commit version)))
1024 (file-name (git-file-name name version))
1025 (sha256
fee91b87 1026 (base32 "1s6w8m9377ajy21x7lf6mbgp5yk5i70nhzmqscibjnarr3xfg9zs"))))
6c71d56d
TGR
1027 (build-system perl-build-system)
1028 (native-inputs
1029 `(("perl-module-build" ,perl-module-build)
1030 ("perl-test-pod" ,perl-test-pod)))
1031 (inputs
1032 `(("perl-data-dump" ,perl-data-dump)
1033 ("perl-json" ,perl-json)
1034 ("perl-libwww" ,perl-libwww)
1035 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
1036 ("perl-lwp-useragent-cached" ,perl-lwp-useragent-cached)
1037 ("perl-mozilla-ca" ,perl-mozilla-ca)
1038 ("perl-term-readline-gnu" ,perl-term-readline-gnu)
1039 ("perl-unicode-linebreak" ,perl-unicode-linebreak)
0717ab76
BG
1040 ("xdg-utils" ,xdg-utils)))
1041 ;; Required only when building the graphical interface (--gtk).
1042 ;;("perl-file-sharedir" ,perl-file-sharedir)
1043
1044 ;; Some videos play without youtube-dl, but others silently fail to.
1045 (propagated-inputs
1046 `(("youtube-dl" ,youtube-dl)))
6c71d56d
TGR
1047 (arguments
1048 `(#:modules ((guix build perl-build-system)
1049 (guix build utils)
1050 (srfi srfi-26))
1051 #:phases
1052 (modify-phases %standard-phases
1053 (add-after 'unpack 'refer-to-inputs
1054 (lambda* (#:key inputs #:allow-other-keys)
1055 (substitute* "lib/WWW/StrawViewer.pm"
1056 (("'youtube-dl'")
1057 (format #f "'~a/bin/youtube-dl'"
1058 (assoc-ref inputs "youtube-dl"))))
1059 (substitute* "bin/gtk-straw-viewer"
1060 (("'xdg-open'")
1061 (format #f "'~a/bin/xdg-open'"
1062 (assoc-ref inputs "xdg-utils"))))
1063 #t))
511bfafa
TGR
1064 ;; (add-after 'install 'install-desktop
1065 ;; (lambda* (#:key outputs #:allow-other-keys)
1066 ;; (let* ((out (assoc-ref outputs "out"))
1067 ;; (sharedir (string-append out "/share")))
1068 ;; (install-file "share/gtk-straw-viewer.desktop"
1069 ;; (string-append sharedir "/applications"))
1070 ;; (install-file "share/icons/gtk-straw-viewer.png"
1071 ;; (string-append sharedir "/pixmaps"))
1072 ;; #t)))
6c71d56d
TGR
1073 (add-after 'install 'wrap-program
1074 (lambda* (#:key outputs #:allow-other-keys)
1075 (let* ((out (assoc-ref outputs "out"))
1076 (bin-dir (string-append out "/bin/"))
1077 (site-dir (string-append out "/lib/perl5/site_perl/"))
1078 (lib-path (getenv "PERL5LIB")))
1079 (for-each (cut wrap-program <>
1080 `("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
1081 (find-files bin-dir))
1082 #t))))))
1083 (synopsis
1084 "Light-weight application for searching and streaming videos from YouTube")
1085 (description
1086 "Straw-viewer searches for YouTube videos using @uref{https://invidio.us/,
1087invidio.us} and plays them locally in a native media player like @command{vlc}
1088or @command{mpv}.
1089
1090You can search for videos, playlists, and/or channels. The videos are streamed
1091directly to the player at the best chosen resolution and with closed captions if
1092available.")
1093 ;; XXX Add #:module-build-flags '("--gtk") dependencies and this sentence.
1094 ;; Both a command-line and a graphical interface are available.
1095 (home-page "https://github.com/trizen/youtube-viewer")
1096 (license license:perl-license)))
1097
7bc7ffc2
EF
1098(define-public x265
1099 (package
1100 (name "x265")
afdc16d9 1101 (version "3.4")
020d4d2c 1102 (outputs '("out" "static"))
7bc7ffc2
EF
1103 (source
1104 (origin
1105 (method url-fetch)
621ce95c
MB
1106 (uri (list (string-append "https://bitbucket.org/multicoreware/x265"
1107 "/downloads/x265_" version ".tar.gz")
1108 (string-append "https://download.videolan.org/videolan/x265/"
1109 "x265_" version ".tar.gz")))
7bc7ffc2 1110 (sha256
afdc16d9 1111 (base32 "0wl62hfsdqpf3r3z3s6l9bz7pdb1rcik5ll00b3yaadplqipy162"))
23c25982 1112 (patches (search-patches "x265-arm-flags.patch"))
7bc7ffc2 1113 (modules '((guix build utils)))
6cbee49d
MW
1114 (snippet '(begin
1115 (delete-file-recursively "source/compat/getopt")
1116 #t))))
7bc7ffc2 1117 (build-system cmake-build-system)
d32a3b39
MB
1118 (native-inputs
1119 ;; XXX: ASM optimization fails on i686-linux, see <https://bugs.gnu.org/41768>.
1120 (if (string-prefix? "i686" (%current-system))
1121 '()
1122 `(("nasm" ,nasm))))
7bc7ffc2
EF
1123 (arguments
1124 `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built
bd606fb2
EF
1125 #:configure-flags
1126 ;; Ensure position independent code for everyone.
1127 (list "-DENABLE_PIC=TRUE"
afdc16d9 1128 ,@(if (target-arm?)
8e59c5fe
EF
1129 '("-DENABLE_ASSEMBLY=OFF")
1130 '())
bd606fb2
EF
1131 (string-append "-DCMAKE_INSTALL_PREFIX="
1132 (assoc-ref %outputs "out")))
7bc7ffc2
EF
1133 #:phases
1134 (modify-phases %standard-phases
bd606fb2 1135 (add-after 'unpack 'prepare-build
7bc7ffc2
EF
1136 (lambda _
1137 (delete-file-recursively "build")
1138 (chdir "source")
bd606fb2
EF
1139 #t))
1140 (add-before 'configure 'build-12-bit
1141 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
1142 (mkdir "../build-12bit")
1143 (with-directory-excursion "../build-12bit"
1144 (apply invoke
1145 "cmake" "../source"
1146 "-DHIGH_BIT_DEPTH=ON"
1147 "-DEXPORT_C_API=OFF"
1148 "-DENABLE_CLI=OFF"
1149 "-DMAIN12=ON"
1150 configure-flags)
1151 (substitute* (cons "cmake_install.cmake"
1152 (append
1153 (find-files "CMakeFiles/x265-shared.dir" ".")
1154 (find-files "CMakeFiles/x265-static.dir" ".")))
1155 (("libx265") "libx265_main12"))
1156 (invoke "make"))))
1157 (add-before 'configure 'build-10-bit
1158 (lambda* (#:key (configure-flags '()) #:allow-other-keys)
1159 (mkdir "../build-10bit")
1160 (with-directory-excursion "../build-10bit"
1161 (apply invoke
1162 "cmake" "../source"
1163 "-DHIGH_BIT_DEPTH=ON"
1164 "-DEXPORT_C_API=OFF"
1165 "-DENABLE_CLI=OFF"
1166 configure-flags)
1167 (substitute* (cons "cmake_install.cmake"
1168 (append
1169 (find-files "CMakeFiles/x265-shared.dir" ".")
1170 (find-files "CMakeFiles/x265-static.dir" ".")))
1171 (("libx265") "libx265_main10"))
1172 (invoke "make"))))
1173 (add-after 'install 'install-more-libs
1174 (lambda _
1175 (with-directory-excursion "../build-12bit"
1176 (invoke "make" "install"))
1177 (with-directory-excursion "../build-10bit"
020d4d2c
EF
1178 (invoke "make" "install"))))
1179 (add-before 'strip 'move-static-libs
1180 (lambda* (#:key outputs #:allow-other-keys)
1181 (let ((out (assoc-ref outputs "out"))
1182 (static (assoc-ref outputs "static")))
1183 (mkdir-p (string-append static "/lib"))
1184 (with-directory-excursion
1185 (string-append out "/lib")
1186 (for-each
1187 (lambda (file)
1188 (rename-file file
1189 (string-append static "/lib/" file)))
1190 (find-files "." "\\.a$"))))
1191 #t)))))
7bc7ffc2
EF
1192 (home-page "http://x265.org/")
1193 (synopsis "Library for encoding h.265/HEVC video streams")
1194 (description "x265 is a H.265 / HEVC video encoder application library,
1195designed to encode video or images into an H.265 / HEVC encoded bitstream.")
1196 (license license:gpl2+)))
1197
c426e61e
TUBK
1198(define-public libass
1199 (package
1200 (name "libass")
9e586b16 1201 (version "0.15.0")
c426e61e
TUBK
1202 (source (origin
1203 (method url-fetch)
1204 (uri (string-append
1205 "https://github.com/libass/libass/releases/download/"
1206 version "/libass-" version ".tar.xz"))
1207 (sha256
1208 (base32
9e586b16 1209 "0cz8v6kh3f2j5rdjrra2z0h715fa16vjm7kambvqx9hak86262cz"))))
c426e61e 1210 (build-system gnu-build-system)
845ba68d
MB
1211 (arguments
1212 '(#:configure-flags '("--disable-static")))
c426e61e
TUBK
1213 (native-inputs
1214 `(("pkg-config" ,pkg-config)
449ad88b 1215 ("nasm" ,nasm)))
c426e61e
TUBK
1216 (propagated-inputs
1217 `(("freetype" ,freetype)
1218 ("fribidi" ,fribidi)
1219 ("fontconfig" ,fontconfig)
79d7f35a 1220 ("harfbuzz" ,harfbuzz)))
c426e61e
TUBK
1221 (home-page "https://github.com/libass/libass")
1222 (synopsis "Subtitle rendering library for the ASS/SSA format")
1223 (description "libass is a subtitle rendering library for the
1224ASS/SSA (Advanced Substation Alpha/SubStation Alpha) subtitle format.")
ae0bdd81 1225 (license license:isc)))
c426e61e 1226
4d94b93c
TUBK
1227(define-public libcaca
1228 (package
1229 (name "libcaca")
1230 (version "0.99.beta19")
1231 (source (origin
1232 (method url-fetch)
1233 (uri (string-append "http://caca.zoy.org/files/libcaca/libcaca-"
1234 version ".tar.gz"))
1235 (sha256
1236 (base32
1237 "1x3j6yfyxl52adgnabycr0n38j9hx2j74la0hz0n8cnh9ry4d2qj"))))
1238 (build-system gnu-build-system)
12c40ca9
EF
1239 (arguments
1240 '(#:configure-flags '("--disable-static")))
4d94b93c
TUBK
1241 (native-inputs `(("pkg-config" ,pkg-config)))
1242 (inputs
1243 `(("freeglut" ,freeglut)
1244 ("ftgl" ,ftgl)
43d51239 1245 ("imlib2" ,imlib2)
4d94b93c
TUBK
1246 ("libx11" ,libx11)
1247 ("mesa" ,mesa)
1248 ("ncurses" ,ncurses)
1249 ("zlib" ,zlib)))
1250 (home-page "http://caca.zoy.org/wiki/libcaca")
1251 (synopsis "Colour ASCII-art library")
1252 (description "libcaca is a graphics library that outputs text instead of
1253pixels, so that it can work on older video cards or text terminals. It
1254supports Unicode, 2048 colors, dithering of color images, and advanced text
1255canvas operations.")
8506fce0 1256 (license license:wtfpl2)))
4d94b93c 1257
3bfb78dc
TUBK
1258(define-public libdca
1259 (package
1260 (name "libdca")
fd13a65c 1261 (version "0.0.7")
3bfb78dc
TUBK
1262 (source (origin
1263 (method url-fetch)
1264 (uri (string-append
b8a31908 1265 "https://download.videolan.org/pub/videolan/libdca/"
3bfb78dc
TUBK
1266 version "/libdca-" version ".tar.bz2"))
1267 (sha256
1268 (base32
fd13a65c 1269 "0sjz0s0nrv7jcpvh1i432x3jza0y5yycmzw84cfncb2qby0i62rs"))))
3bfb78dc 1270 (build-system gnu-build-system)
fd13a65c
TGR
1271 (native-inputs
1272 `(("autoconf" ,autoconf)
1273 ("automake" ,automake)
1274 ("libtool" ,libtool)))
b8a31908 1275 (home-page "https://www.videolan.org/developers/libdca.html")
3bfb78dc
TUBK
1276 (synopsis "DTS Coherent Acoustics decoder")
1277 (description "libdca is a library for decoding DTS Coherent Acoustics
1278streams.")
ae0bdd81 1279 (license license:gpl2+)))
3bfb78dc 1280
99d4c455
TUBK
1281(define-public libdv
1282 (package
1283 (name "libdv")
1284 (version "1.0.0")
1285 (source (origin
1286 (method url-fetch)
1287 (uri (string-append
d2e1a0ac
TGR
1288 "mirror://sourceforge/libdv/libdv/"
1289 version "/libdv-" version ".tar.gz"))
99d4c455
TUBK
1290 (sha256
1291 (base32
1292 "1fl96f2xh2slkv1i1ix7kqk576a0ak1d33cylm0mbhm96d0761d3"))))
1293 (build-system gnu-build-system)
1294 (native-inputs `(("pkg-config" ,pkg-config)))
1295 (inputs `(("libxv" ,libxv)))
1296 (home-page "http://libdv.sourceforge.net/")
1297 (synopsis "DV video (IEC 61834 and SMPTE 314M) codec")
1298 (description "The Quasar DV codec (libdv) is a software codec for DV
1299video, the encoding format used by most digital camcorders, typically those
1300that support the IEEE 1394 (a.k.a. FireWire or i.Link) interface. Libdv was
1301developed according to the official standards for DV video: IEC 61834 and
1302SMPTE 314M.")
ae0bdd81 1303 (license license:lgpl2.1+)))
99d4c455 1304
15f1d02a
GG
1305(define-public libmatroska
1306 (package
1307 (name "libmatroska")
967fa5d0 1308 (version "1.6.2")
15f1d02a
GG
1309 (source
1310 (origin
1311 (method url-fetch)
1312 (uri (string-append "https://dl.matroska.org/downloads/"
309f3408 1313 "libmatroska/libmatroska-" version ".tar.xz"))
15f1d02a 1314 (sha256
967fa5d0 1315 (base32 "140r3q6n4a0n11zaf76lvyxd9gp435dgm8gn7mj0gar2hjm7ji5w"))))
23e24ff6 1316 (build-system cmake-build-system)
15f1d02a
GG
1317 (inputs
1318 `(("libebml" ,libebml)))
23e24ff6
TGR
1319 (arguments
1320 `(#:configure-flags
1321 (list "-DBUILD_SHARED_LIBS=YES")
1322 #:tests? #f)) ; no test suite
15f1d02a 1323 (home-page "https://www.matroska.org")
cb778117 1324 (synopsis "C++ library to parse Matroska files (.mkv and .mka)")
15f1d02a
GG
1325 (description
1326 "Matroska aims to become the standard of multimedia container formats.
cb778117 1327It is based on @dfn{EBML} (Extensible Binary Meta Language), a binary derivative
15f1d02a
GG
1328of XML. EBML enables the Matroska Development Team to gain significant
1329advantages in terms of future format extensibility, without breaking file
1330support in old parsers.
1331libebml is a C++ library to read and write EBML files.")
1332 (license license:lgpl2.1)))
1333
ee3b55ea
TUBK
1334(define-public libva
1335 (package
1336 (name "libva")
575f8350 1337 (version "2.10.0")
ee3b55ea
TUBK
1338 (source
1339 (origin
1340 (method url-fetch)
575f8350
MB
1341 (uri (string-append "https://github.com/intel/libva/releases/download/"
1342 version "/libva-" version ".tar.bz2"))
ee3b55ea 1343 (sha256
575f8350 1344 (base32 "0dh2zjn6wi74ga75r6pbrrj8hjm213zyxvn9bv78z0fra1dy70gs"))))
ee3b55ea
TUBK
1345 (build-system gnu-build-system)
1346 (native-inputs
1347 `(("pkg-config" ,pkg-config)))
1348 (inputs
1349 `(("libdrm" ,libdrm)
1350 ("libx11" ,libx11)
1351 ("libxext" ,libxext)
1352 ("libxfixes" ,libxfixes)
3ee7b4cc
EF
1353 ("mesa" ,mesa)
1354 ("wayland" ,wayland)))
372cf039
TUBK
1355 (arguments
1356 `(#:phases
1357 (modify-phases %standard-phases
1358 (add-before
1359 'build 'fix-dlopen-paths
1360 (lambda* (#:key outputs #:allow-other-keys)
1361 (let ((out (assoc-ref outputs "out")))
1362 (substitute* "va/drm/va_drm_auth_x11.c"
1363 (("\"libva-x11\\.so\\.%d\"")
d5c88f16
MW
1364 (string-append "\"" out "/lib/libva-x11.so.%d\"")))
1365 #t))))
372cf039
TUBK
1366 ;; Most drivers are in mesa's $prefix/lib/dri, so use that. (Can be
1367 ;; overridden at run-time via LIBVA_DRIVERS_PATH.)
1368 #:configure-flags
1369 (list (string-append "--with-drivers-path="
1370 (assoc-ref %build-inputs "mesa") "/lib/dri"))
1371 ;; However, we can't write to mesa's store directory, so override the
1372 ;; following make variable to install the dummy driver to libva's
1373 ;; $prefix/lib/dri directory.
1374 #:make-flags
1375 (list (string-append "dummy_drv_video_ladir="
1376 (assoc-ref %outputs "out") "/lib/dri"))))
5c1c2254 1377 (home-page "https://www.freedesktop.org/wiki/Software/vaapi/")
ee3b55ea
TUBK
1378 (synopsis "Video acceleration library")
1379 (description "The main motivation for VA-API (Video Acceleration API) is
1380to enable hardware accelerated video decode/encode at various
1381entry-points (VLD, IDCT, Motion Compensation etc.) for prevailing coding
1382standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
ae0bdd81 1383 (license license:expat)))
ee3b55ea 1384
3563220e
TGR
1385(define-public libva-utils
1386 (package
1387 (name "libva-utils")
1388 (version "2.5.0")
1389 (source
1390 (origin
1391 (method url-fetch)
1392 (uri (string-append "https://github.com/intel/libva-utils/releases/download/"
1393 version "/libva-utils-" version ".tar.bz2"))
1394 (sha256
1395 (base32 "05rasyqnsg522zqxak1q8rrm1hys7wwbi41kd0szjq0d27awjf4j"))))
1396 (build-system gnu-build-system)
1397 (arguments
1398 `(#:configure-flags
1399 (list "--enable-wayland"
1400 "--enable-x11")))
1401 (native-inputs
1402 `(("pkg-config" ,pkg-config)))
1403 (inputs
1404 `(("libdrm" ,libdrm)
1405 ("libva" ,libva)
1406 ("libx11" ,libx11)
1407 ("mesa" ,mesa)
1408 ("wayland" ,wayland)))
1409 (home-page "https://01.org/linuxmedia/vaapi")
1410 (synopsis "Collection of testing utilities for VA-API")
1411 (description
1412 "This is a collection of utilities to query and test the @acronym{VA-API,
1413Video Acceleration API} implemented by the libva library.
1414
1415These tools require a supported graphics chip, driver, and VA-API back end to
1416operate properly.")
1417 (license license:expat)))
1418
39efcc9b
AE
1419(define-public ffmpeg
1420 (package
1421 (name "ffmpeg")
e89c1dd4 1422 (version "4.3.2")
39efcc9b
AE
1423 (source (origin
1424 (method url-fetch)
a1121a7f
EF
1425 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
1426 version ".tar.xz"))
39efcc9b
AE
1427 (sha256
1428 (base32
e89c1dd4 1429 "1nyd9jlcy0pqnwzi29a7sg50hq37vb0g3f9l16y3q8yh3m7ydr26"))))
39efcc9b
AE
1430 (build-system gnu-build-system)
1431 (inputs
86445c8e
RH
1432 `(("dav1d" ,dav1d)
1433 ("fontconfig" ,fontconfig)
39efcc9b 1434 ("freetype" ,freetype)
8fd43200 1435 ("frei0r-plugins" ,frei0r-plugins)
c8dab7f4 1436 ("gnutls" ,gnutls)
e816b348 1437 ("opus" ,opus)
71241192 1438 ("ladspa" ,ladspa)
d4f12db8 1439 ("lame" ,lame)
84eb265e 1440 ("libaom" ,libaom)
c426e61e 1441 ("libass" ,libass)
5d3609e4 1442 ("libbluray" ,libbluray)
4d94b93c 1443 ("libcaca" ,libcaca)
cc6c0170 1444 ("libcdio-paranoia" ,libcdio-paranoia)
1f61cc10 1445 ("libdrm" ,libdrm)
39efcc9b 1446 ("libtheora" ,libtheora)
bb3df15e 1447 ("libva" ,libva)
f88f0d20 1448 ("libvdpau" ,libvdpau)
39efcc9b 1449 ("libvorbis" ,libvorbis)
dc55b8b2 1450 ("libvpx" ,libvpx)
f88f0d20 1451 ("libx11" ,libx11)
549381d6 1452 ("libx264" ,libx264)
f88f0d20 1453 ("mesa" ,mesa)
71241192 1454 ("openal" ,openal)
71241192 1455 ("pulseaudio" ,pulseaudio)
402d0375
MB
1456 ;; XXX: rav1e depends on rust, which currently only works on x86_64.
1457 ;; See also the related configure flag when changing this.
1458 ,@(if (string-prefix? "x86_64" (or (%current-target-system)
1459 (%current-system)))
1460 `(("rav1e" ,rav1e))
1461 '())
85bc5434 1462 ("sdl" ,sdl2)
72bfebf5 1463 ("soxr" ,soxr)
c4c4cc05 1464 ("speex" ,speex)
64661754
LF
1465 ;; FFmpeg is not yet compatible with SRT > 1.4.1.
1466 ("srt" ,srt-1.4.1)
72bfebf5 1467 ("twolame" ,twolame)
6d777ff9 1468 ("vidstab" ,vidstab)
d505801a 1469 ("x265" ,x265)
67932f86 1470 ("xvid" ,xvid)
b3546174 1471 ("zlib" ,zlib)))
c4c4cc05
JD
1472 (native-inputs
1473 `(("bc" ,bc)
39efcc9b
AE
1474 ("perl" ,perl)
1475 ("pkg-config" ,pkg-config)
824d9dc3 1476 ("texinfo" ,texinfo)
39efcc9b 1477 ("speex" ,speex)
c4c4cc05 1478 ("yasm" ,yasm)))
39efcc9b 1479 (arguments
31f9322e 1480 `(#:test-target "fate"
12f92e38
AP
1481 #:configure-flags
1482 ;; possible additional inputs:
1483 ;; --enable-avisynth enable reading of AviSynth script
1484 ;; files [no]
12f92e38
AP
1485 ;; --enable-libaacplus enable AAC+ encoding via libaacplus [no]
1486 ;; --enable-libcelt enable CELT decoding via libcelt [no]
1487 ;; --enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
1488 ;; and libraw1394 [no]
1489 ;; --enable-libfaac enable AAC encoding via libfaac [no]
1490 ;; --enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
1491 ;; --enable-libflite enable flite (voice synthesis) support via
1492 ;; libflite [no]
1493 ;; --enable-libgme enable Game Music Emu via libgme [no]
1494 ;; --enable-libgsm enable GSM de/encoding via libgsm [no]
1495 ;; --enable-libiec61883 enable iec61883 via libiec61883 [no]
1496 ;; --enable-libilbc enable iLBC de/encoding via libilbc [no]
1497 ;; --enable-libmodplug enable ModPlug via libmodplug [no]
1498 ;; --enable-libnut enable NUT (de)muxing via libnut,
1499 ;; native (de)muxer exists [no]
1500 ;; --enable-libopencore-amrnb enable AMR-NB de/encoding via
1501 ;; libopencore-amrnb [no]
1502 ;; --enable-libopencore-amrwb enable AMR-WB decoding via
1503 ;; libopencore-amrwb [no]
1504 ;; --enable-libopencv enable video filtering via libopencv [no]
1505 ;; --enable-libopenjpeg enable JPEG 2000 de/encoding via
1506 ;; OpenJPEG [no]
1507 ;; --enable-librtmp enable RTMP[E] support via librtmp [no]
1508 ;; --enable-libschroedinger enable Dirac de/encoding via
1509 ;; libschroedinger [no]
1510 ;; --enable-libshine enable fixed-point MP3 encoding via
1511 ;; libshine [no]
1512 ;; --enable-libssh enable SFTP protocol via libssh [no]
1513 ;; (libssh2 does not work)
1514 ;; --enable-libstagefright-h264 enable H.264 decoding via
1515 ;; libstagefright [no]
1516 ;; --enable-libutvideo enable Ut Video encoding and decoding via
1517 ;; libutvideo [no]
1518 ;; --enable-libv4l2 enable libv4l2/v4l-utils [no]
12f92e38
AP
1519 ;; --enable-libvo-aacenc enable AAC encoding via libvo-aacenc [no]
1520 ;; --enable-libvo-amrwbenc enable AMR-WB encoding via
1521 ;; libvo-amrwbenc [no]
1522 ;; --enable-libwavpack enable wavpack encoding via libwavpack [no]
1523 ;; --enable-libxavs enable AVS encoding via xavs [no]
1524 ;; --enable-libzmq enable message passing via libzmq [no]
1525 ;; --enable-libzvbi enable teletext support via libzvbi [no]
1526 ;; --enable-opencl enable OpenCL code
12f92e38
AP
1527 '("--enable-avresample"
1528 "--enable-gpl" ; enable optional gpl licensed parts
1529 "--enable-shared"
8fd43200 1530 "--enable-frei0r"
12f92e38 1531 "--enable-fontconfig"
c8dab7f4 1532 "--enable-gnutls"
12f92e38 1533 "--enable-ladspa"
84eb265e 1534 "--enable-libaom"
12f92e38
AP
1535 "--enable-libass"
1536 "--enable-libbluray"
1537 "--enable-libcaca"
1538 "--enable-libcdio"
86445c8e 1539 "--enable-libdav1d"
12f92e38
AP
1540 "--enable-libfreetype"
1541 "--enable-libmp3lame"
1542 "--enable-libopus"
1543 "--enable-libpulse"
402d0375
MB
1544 ,@(if (string-prefix? "x86_64" (or (%current-target-system)
1545 (%current-system)))
1546 '("--enable-librav1e")
1547 '())
12f92e38
AP
1548 "--enable-libsoxr"
1549 "--enable-libspeex"
64661754 1550 "--enable-libsrt"
12f92e38
AP
1551 "--enable-libtheora"
1552 "--enable-libtwolame"
6d777ff9 1553 "--enable-libvidstab"
12f92e38
AP
1554 "--enable-libvorbis"
1555 "--enable-libvpx"
1556 "--enable-libxvid"
1557 "--enable-libx264"
d505801a 1558 "--enable-libx265"
12f92e38 1559 "--enable-openal"
f88f0d20 1560 "--enable-opengl"
1f61cc10 1561 "--enable-libdrm"
12f92e38
AP
1562
1563 "--enable-runtime-cpudetect"
1564
1e2a36e1
EF
1565 ;; The HTML pages take 7.2 MiB
1566 "--disable-htmlpages"
1567
1568 ;; The static libraries are 23 MiB
1569 "--disable-static"
1570
12f92e38
AP
1571 ;; Runtime cpu detection is not implemented on
1572 ;; MIPS, so we disable some features.
1573 "--disable-mips32r2"
c5e1fcd0 1574 "--disable-mipsdsp"
12f92e38
AP
1575 "--disable-mipsdspr2"
1576 "--disable-mipsfpu")
31f9322e 1577 #:phases
f2feb0ce
LC
1578 (modify-phases %standard-phases
1579 (replace
39efcc9b
AE
1580 'configure
1581 ;; configure does not work followed by "SHELL=..." and
1582 ;; "CONFIG_SHELL=..."; set environment variables instead
1583 (lambda* (#:key outputs configure-flags #:allow-other-keys)
1584 (let ((out (assoc-ref outputs "out")))
1585 (substitute* "configure"
47734a56 1586 (("#! /bin/sh") (string-append "#!" (which "sh"))))
39efcc9b
AE
1587 (setenv "SHELL" (which "bash"))
1588 (setenv "CONFIG_SHELL" (which "bash"))
3918ed73
MW
1589 (apply invoke
1590 "./configure"
1591 (string-append "--prefix=" out)
1592 ;; Add $libdir to the RUNPATH of all the binaries.
1593 (string-append "--extra-ldflags=-Wl,-rpath="
1594 out "/lib")
1595 configure-flags))))
457e528e
LC
1596 (add-before
1597 'check 'set-ld-library-path
1598 (lambda _
1599 ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
1600 ;; running tests.
1601 (let* ((dso (find-files "." "\\.so$"))
1602 (path (string-join (map dirname dso) ":")))
1603 (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
1604 (setenv "LD_LIBRARY_PATH" path)
27350ef8 1605 #t))))))
702bfbf1 1606 (home-page "https://www.ffmpeg.org/")
39efcc9b
AE
1607 (synopsis "Audio and video framework")
1608 (description "FFmpeg is a complete, cross-platform solution to record,
1609convert and stream audio and video. It includes the libavcodec
1610audio/video codec library.")
ae0bdd81 1611 (license license:gpl2+)))
d5a748e8 1612
3d5a217d
MB
1613;; ungoogled-chromium crashes with ffmpeg 4.3, so stick with this version for
1614;; now. See <https://issues.guix.gnu.org/41987>.
1615(define-public ffmpeg-4.2
1616 (package
1617 (inherit ffmpeg)
1618 (version "4.2.3")
1619 (source (origin
1620 (method url-fetch)
1621 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
1622 version ".tar.xz"))
1623 (sha256
1624 (base32
1625 "0cddkb5sma9dzy8i59sfls19rhjlq40zn9mh3x666dqkxl5ckxlx"))))
1626 (arguments
1627 (substitute-keyword-arguments (package-arguments ffmpeg)
1628 ((#:configure-flags flags)
54d83268
LP
1629 `(delete "--enable-librav1e" ,flags))))
1630 (inputs (fold alist-delete
1631 (package-inputs ffmpeg)
1632 '("rav1e")))))
3d5a217d 1633
06079c19
RH
1634(define-public ffmpeg-3.4
1635 (package
1636 (inherit ffmpeg)
66c15f72 1637 (version "3.4.7")
06079c19
RH
1638 (source (origin
1639 (method url-fetch)
1640 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
1641 version ".tar.xz"))
1642 (sha256
1643 (base32
66c15f72 1644 "1j7mdk9szrljgv4sdx69bm1pnbb3cldbdxbkr42jbdi9zn11gl7g"))))
84eb265e
AB
1645 (arguments
1646 (substitute-keyword-arguments (package-arguments ffmpeg)
324057e8
GLV
1647 ((#:modules modules %gnu-build-system-modules)
1648 `((srfi srfi-1)
1649 ,@modules))
84eb265e 1650 ((#:configure-flags flags)
324057e8
GLV
1651 `(fold delete
1652 ,flags
1653 '("--enable-libdav1d"
1654 "--enable-libaom"
1655 "--enable-librav1e"
1656 "--enable-libsrt")))))
1657 (inputs (fold alist-delete
1658 (package-inputs ffmpeg)
1659 '("dav1d" "libaom" "rav1e" "srt")))))
06079c19 1660
1178ae47
RG
1661(define-public ffmpeg-2.8
1662 (package
1663 (inherit ffmpeg)
1664 (version "2.8.16")
1665 (source (origin
1666 (method url-fetch)
1667 (uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
1668 version ".tar.xz"))
1669 (sha256
1670 (base32
1671 "14n0xg22yz1r4apif2idm91s3avcmkz4sl8gyj5763gcy415k2bb"))))
1672 (arguments
1673 `(#:tests? #f ; XXX: Enable them later, if required
1674 #:configure-flags
1675 (list
1676 "--disable-static"
1677 "--enable-shared"
1678 "--extra-cflags=-DFF_API_OLD_ENCODE_VIDEO -DFF_API_OLD_ENCODE_AUDIO")
1679 #:phases
1680 (modify-phases %standard-phases
1681 (replace 'configure
1682 (lambda* (#:key outputs configure-flags #:allow-other-keys)
1683 (let ((out (assoc-ref outputs "out")))
1684 (substitute* "configure"
1685 (("#! /bin/sh") (string-append "#!" (which "sh"))))
1686 ;; configure does not work followed by "SHELL=..." and
1687 ;; "CONFIG_SHELL=..."; set environment variables instead.
1688 (setenv "SHELL" (which "bash"))
1689 (setenv "CONFIG_SHELL" (which "bash"))
1690 (apply invoke
1691 "./configure"
1692 (string-append "--prefix=" out)
1693 ;; Add $libdir to the RUNPATH of all the binaries.
1694 (string-append "--extra-ldflags=-Wl,-rpath="
1695 out "/lib")
1696 configure-flags))))
1697 (add-before
1698 'check 'set-ld-library-path
1699 (lambda _
1700 ;; Allow $(top_builddir)/ffmpeg to find its dependencies when
1701 ;; running tests.
1702 (let* ((dso (find-files "." "\\.so$"))
1703 (path (string-join (map dirname dso) ":")))
1704 (format #t "setting LD_LIBRARY_PATH to ~s~%" path)
1705 (setenv "LD_LIBRARY_PATH" path)
c33df8ab
LF
1706 #t))))))
1707 (inputs (fold alist-delete
1708 (package-inputs ffmpeg)
1709 '("dav1d" "libaom" "rav1e" "srt")))))
1178ae47 1710
1faf0a04
NG
1711(define-public ffmpeg-for-stepmania
1712 (hidden-package
1713 (package
1714 (inherit ffmpeg)
1715 (version "2.1.3")
1716 (source
1717 (origin
1718 (method git-fetch)
1719 (uri (git-reference
b0e7b699 1720 (url "https://github.com/stepmania/ffmpeg")
1faf0a04
NG
1721 (commit "eda6effcabcf9c238e4635eb058d72371336e09b")))
1722 (sha256
1723 (base32 "1by8rmbva8mfrivdbbkr2gx4kga89zqygkd4cfjl76nr8mdcdamb"))
1724 (file-name (git-file-name "ffmpeg" version))))
1725 (arguments
1726 (substitute-keyword-arguments (package-arguments ffmpeg)
1727 ((#:configure-flags flags)
1728 '(list "--disable-programs"
1729 "--disable-doc"
1730 "--disable-debug"
1731 "--disable-avdevice"
1732 "--disable-swresample"
1733 "--disable-postproc"
1734 "--disable-avfilter"
1735 "--disable-shared"
1736 "--enable-static"))))
1737 (inputs '()))))
940778c7 1738
4febfdd0
BT
1739(define-public ffmpegthumbnailer
1740 (package
1741 (name "ffmpegthumbnailer")
f1b8ed3f 1742 (version "2.2.2")
4febfdd0 1743 (source (origin
722e6ffe
RW
1744 (method git-fetch)
1745 (uri (git-reference
b0e7b699 1746 (url "https://github.com/dirkvdb/ffmpegthumbnailer")
722e6ffe
RW
1747 (commit version)))
1748 (file-name (git-file-name name version))
4febfdd0
BT
1749 (sha256
1750 (base32
f1b8ed3f 1751 "1bakbr714j7yxdal1f5iq0gcl4cxggbbgj227ihdh5kvygqlwich"))))
4febfdd0
BT
1752 (build-system cmake-build-system)
1753 (native-inputs
1754 `(("pkg-config" ,pkg-config)))
1755 (inputs
1756 `(("ffmpeg" ,ffmpeg)
1757 ("libjpeg-turbo" ,libjpeg-turbo)
1758 ("libpng" ,libpng)
1759 ("gvfs" ,gvfs)))
1760 (arguments
1761 `(#:configure-flags (list "-DENABLE_GIO=ON" "-DENABLE_THUMBNAILER=ON")))
1762 (home-page "https://github.com/dirkvdb/ffmpegthumbnailer")
1763 (synopsis "Create thumbnails from video files")
1764 (description "FFmpegthumbnailer is a lightweight video thumbnailer that
1765can be used by file managers to create thumbnails for your video files. The
1766thumbnailer uses ffmpeg to decode frames from the video files, so supported
1767videoformats depend on the configuration flags of ffmpeg.")
1768 (license license:gpl2+)))
1769
d5a748e8
AE
1770(define-public vlc
1771 (package
1772 (name "vlc")
def314d8 1773 (version "3.0.12")
d5a748e8 1774 (source (origin
520b18e6
NG
1775 (method url-fetch)
1776 (uri (string-append
1777 "https://download.videolan.org/pub/videolan/vlc/"
1778 (car (string-split version #\-))
1779 "/vlc-" version ".tar.xz"))
1780 (sha256
1781 (base32
def314d8 1782 "0ygqihw2c5vvzv8950dlf7rdwz1cpz1668jgyja604ljibrmix7g"))))
d5a748e8
AE
1783 (build-system gnu-build-system)
1784 (native-inputs
76277052
MW
1785 `(("flex" ,flex)
1786 ("bison" ,bison)
1787 ("gettext" ,gettext-minimal)
d5a748e8
AE
1788 ("pkg-config" ,pkg-config)))
1789 ;; FIXME: Add optional inputs once available.
1790 (inputs
1791 `(("alsa-lib" ,alsa-lib)
1792 ("avahi" ,avahi)
1793 ("dbus" ,dbus)
76277052 1794 ("eudev" ,eudev)
d5a748e8 1795 ("flac" ,flac)
76277052 1796 ("ffmpeg" ,ffmpeg)
d5a748e8
AE
1797 ("fontconfig" ,fontconfig)
1798 ("freetype" ,freetype)
76277052 1799 ("fribidi" ,fribidi)
d5a748e8 1800 ("gnutls" ,gnutls)
8824da4c 1801 ("liba52" ,liba52)
76277052
MW
1802 ("libarchive" ,libarchive)
1803 ("libass" ,libass)
1804 ("libavc1394" ,libavc1394)
1805 ("libbluray" ,libbluray)
1806 ("libcaca" ,libcaca)
d5a748e8 1807 ("libcddb" ,libcddb)
76277052 1808 ("libdca" ,libdca)
72b6a894 1809 ("libdvbpsi" ,libdvbpsi)
76277052
MW
1810 ("libdvdnav" ,libdvdnav)
1811 ("libdvdread" ,libdvdread)
1812 ("libebml" ,libebml)
d5a748e8 1813 ("libgcrypt" ,libgcrypt)
76277052 1814 ("libidn" ,libidn)
d5a748e8
AE
1815 ("libkate" ,libkate)
1816 ("libmad" ,libmad)
76277052 1817 ("libmatroska" ,libmatroska)
78d112c2 1818 ("libmicrodns" ,libmicrodns)
76277052
MW
1819 ("libmodplug" ,libmodplug)
1820 ("libmpeg2" ,libmpeg2)
d5a748e8
AE
1821 ("libogg" ,libogg)
1822 ("libpng" ,libpng)
76277052
MW
1823 ("libraw1394" ,libraw1394)
1824 ("librsvg" ,librsvg)
d5a748e8 1825 ("libsamplerate" ,libsamplerate)
76277052 1826 ("libsecret" ,libsecret)
d5a748e8 1827 ("libssh2" ,libssh2)
76277052
MW
1828 ("libupnp" ,libupnp)
1829 ("libva" ,libva)
1830 ("libvdpau" ,libvdpau)
d5a748e8 1831 ("libvorbis" ,libvorbis)
26986544 1832 ("libvpx" ,libvpx)
d5a748e8 1833 ("libtheora" ,libtheora)
76277052 1834 ("libx264" ,libx264)
d5a748e8 1835 ("libxext" ,libxext)
c161c22a 1836 ("libxi" ,libxi)
d5a748e8
AE
1837 ("libxinerama" ,libxinerama)
1838 ("libxml2" ,libxml2)
1839 ("libxpm" ,libxpm)
2aaa5729 1840 ("livemedia-utils" ,livemedia-utils)
76277052 1841 ("lua" ,lua-5.2)
d5a748e8
AE
1842 ("mesa" ,mesa)
1843 ("opus" ,opus)
1844 ("perl" ,perl)
1845 ("pulseaudio" ,pulseaudio)
fc2982f7 1846 ("protobuf" ,protobuf)
d5a748e8 1847 ("python" ,python-wrapper)
552c3e95 1848 ("qtbase" ,qtbase)
76277052 1849 ("qtsvg" ,qtsvg)
552c3e95 1850 ("qtx11extras" ,qtx11extras)
76277052 1851 ("samba" ,samba)
d5a748e8
AE
1852 ("sdl" ,sdl)
1853 ("sdl-image" ,sdl-image)
1854 ("speex" ,speex)
76277052 1855 ("speexdsp" ,speexdsp)
9c5c64b8
LF
1856 ;; VLC is not yet compatible with SRT > 1.4.1.
1857 ("srt" ,srt-1.4.1)
76277052
MW
1858 ("taglib" ,taglib)
1859 ("twolame" ,twolame)
1860 ("unzip" ,unzip)
1861 ("wayland" ,wayland)
1862 ("wayland-protocols" ,wayland-protocols)
8f5f6c92 1863 ("x265" ,x265)
d5a748e8
AE
1864 ("xcb-util-keysyms" ,xcb-util-keysyms)))
1865 (arguments
1866 `(#:configure-flags
0fe041bd 1867 `("BUILDCC=gcc"
d5a748e8
AE
1868 ,(string-append "LDFLAGS=-Wl,-rpath -Wl,"
1869 (assoc-ref %build-inputs "ffmpeg")
520b18e6 1870 "/lib")) ;needed for the tests
cd76fbde
LC
1871
1872 #:phases
1873 (modify-phases %standard-phases
2d2e97bd 1874 (add-after 'unpack 'patch-source
2aaa5729
CL
1875 (lambda* (#:key inputs #:allow-other-keys)
1876 (let ((livemedia-utils (assoc-ref inputs "livemedia-utils")))
2d2e97bd 1877 (substitute* "configure"
2aaa5729
CL
1878 (("LIVE555_PREFIX=\\$\\{LIVE555_PREFIX-\"/usr\"\\}")
1879 (string-append "LIVE555_PREFIX=" livemedia-utils)))
2d2e97bd
MB
1880 ;; Some of the tests require using the display to test out VLC,
1881 ;; which fails in our sandboxed build system
1882 (substitute* "test/run_vlc.sh"
1883 (("./vlc --ignore-config") "echo"))
2aaa5729 1884 #t)))
76277052 1885 (add-after 'strip 'regenerate-plugin-cache
cd76fbde
LC
1886 (lambda* (#:key outputs #:allow-other-keys)
1887 ;; The 'install-exec-hook' rule in the top-level Makefile.am
1888 ;; generates 'lib/vlc/plugins/plugins.dat', a plugin cache, using
1889 ;; 'vlc-cache-gen'. This file includes the mtime of the plugins
1890 ;; it references. Thus, we first reset the timestamps of all
1891 ;; these files, and then regenerate the cache such that the
1892 ;; mtimes it includes are always zero instead of being dependent
1893 ;; on the build time.
1894 (let* ((out (assoc-ref outputs "out"))
1895 (pkglibdir (string-append out "/lib/vlc"))
1896 (plugindir (string-append pkglibdir "/plugins"))
1897 (cachegen (string-append pkglibdir "/vlc-cache-gen")))
1898 ;; TODO: Factorize 'reset-timestamps'.
1899 (for-each (lambda (file)
1900 (let ((s (lstat file)))
1901 (unless (eq? (stat:type s) 'symlink)
76277052 1902 (utime file 1 1))))
cd76fbde 1903 (find-files plugindir))
76277052
MW
1904 (invoke cachegen plugindir))))
1905 (add-after 'install 'wrap-executable
1906 (lambda* (#:key outputs #:allow-other-keys)
520b18e6
NG
1907 (let ((out (assoc-ref outputs "out"))
1908 (plugin-path (getenv "QT_PLUGIN_PATH")))
1909 (wrap-program (string-append out "/bin/vlc")
1910 `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))
1911 #t)))))
d5a748e8
AE
1912 (home-page "https://www.videolan.org/")
1913 (synopsis "Audio and video framework")
1914 (description "VLC is a cross-platform multimedia player and framework
1915that plays most multimedia files as well as DVD, Audio CD, VCD, and various
34a19d35 1916streaming protocols.")
ae0bdd81 1917 (license license:gpl2+)))
ace69243
AE
1918
1919(define-public mplayer
1920 (package
1921 (name "mplayer")
59ed95d6 1922 (version "1.4")
ace69243
AE
1923 (source (origin
1924 (method url-fetch)
1925 (uri (string-append
ebde7c7a 1926 "https://www.mplayerhq.hu/MPlayer/releases/MPlayer-"
ace69243
AE
1927 version ".tar.xz"))
1928 (sha256
1929 (base32
59ed95d6 1930 "0j5mflr0wnklxsvnpmxvk704hscyn2785hvvihj2i3a7b3anwnc2"))))
ace69243
AE
1931 (build-system gnu-build-system)
1932 ;; FIXME: Add additional inputs once available.
1933 (native-inputs
a5498025
EF
1934 `(("pkg-config" ,pkg-config)
1935 ("yasm" ,yasm)))
ace69243
AE
1936 (inputs
1937 `(("alsa-lib" ,alsa-lib)
1938 ("cdparanoia" ,cdparanoia)
59ed95d6 1939 ("ffmpeg" ,ffmpeg)
778a6a8b 1940 ("fontconfig" ,fontconfig)
ace69243 1941 ("freetype" ,freetype)
8480bdd3 1942 ("giflib" ,giflib)
ace69243 1943 ("lame" ,lame)
778a6a8b 1944 ("libass" ,libass)
b3546174 1945 ("libdvdcss" ,libdvdcss)
e46aacac
TGR
1946 ("libdvdnav" ,libdvdnav) ; ignored without libdvdread
1947 ("libdvdread" ,libdvdread) ; ignored without libdvdnav
4bd428a7 1948 ("libjpeg" ,libjpeg-turbo)
778a6a8b 1949 ("libmpeg2" ,libmpeg2)
59ed95d6 1950 ("libmpg123" ,mpg123) ; audio codec for MP3
ace69243
AE
1951 ("libpng" ,libpng)
1952 ("libtheora" ,libtheora)
778a6a8b 1953 ("libvdpau" ,libvdpau)
ace69243
AE
1954 ("libvorbis" ,libvorbis)
1955 ("libx11" ,libx11)
778a6a8b 1956 ("libx264" ,libx264)
ace69243
AE
1957 ("libxinerama" ,libxinerama)
1958 ("libxv" ,libxv)
778a6a8b 1959 ("libxxf86dga" ,libxxf86dga)
ace69243 1960 ("mesa" ,mesa)
778a6a8b 1961 ("opus" ,opus)
ace69243
AE
1962 ("perl" ,perl)
1963 ("pulseaudio" ,pulseaudio)
1964 ("python" ,python-wrapper)
1965 ("sdl" ,sdl)
1966 ("speex" ,speex)
ace69243
AE
1967 ("zlib" ,zlib)))
1968 (arguments
59ed95d6 1969 `(#:tests? #f ; no test target
ace69243 1970 #:phases
ebde7c7a
EF
1971 (modify-phases %standard-phases
1972 (replace 'configure
ace69243
AE
1973 ;; configure does not work followed by "SHELL=..." and
1974 ;; "CONFIG_SHELL=..."; set environment variables instead
1975 (lambda* (#:key inputs outputs #:allow-other-keys)
1976 (let ((out (assoc-ref outputs "out"))
1977 (libx11 (assoc-ref inputs "libx11")))
1978 (substitute* "configure"
2564b7c2 1979 (("#! /bin/sh") (string-append "#!" (which "sh"))))
ace69243
AE
1980 (setenv "SHELL" (which "bash"))
1981 (setenv "CONFIG_SHELL" (which "bash"))
1fe5791d 1982 (invoke "./configure"
ace69243
AE
1983 (string-append "--extra-cflags=-I"
1984 libx11 "/include") ; to detect libx11
ebde7c7a 1985 "--disable-ffmpeg_a" ; disables bundled ffmpeg
ace69243 1986 (string-append "--prefix=" out)
fe138965
MW
1987 ;; Enable runtime cpu detection where supported,
1988 ;; and choose a suitable target.
1989 ,@(match (or (%current-target-system)
1990 (%current-system))
1991 ("x86_64-linux"
1992 '("--enable-runtime-cpudetection"
1993 "--target=x86_64-linux"))
1994 ("i686-linux"
1995 '("--enable-runtime-cpudetection"
1996 "--target=i686-linux"))
1997 ("mips64el-linux"
f0d6d835
MW
1998 '("--target=mips3-linux"))
1999 (_ (list (string-append
2000 "--target="
2001 (or (%current-target-system)
2002 (nix-system->gnu-triplet
2003 (%current-system)))))))
1fe5791d 2004 "--disable-iwmmxt")))))))
858b68e4 2005 (home-page "https://www.mplayerhq.hu")
ace69243
AE
2006 (synopsis "Audio and video player")
2007 (description "MPlayer is a movie player. It plays most MPEG/VOB, AVI,
2008Ogg/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT,
2009NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVA files. One can watch VideoCD,
2010SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
ae0bdd81 2011 (license license:gpl2)))
d0ed39be 2012
1c1178cd
TUBK
2013(define-public mpv
2014 (package
2015 (name "mpv")
4bf33b02 2016 (version "0.33.0")
1c1178cd 2017 (source (origin
ce4ac7d5
RW
2018 (method git-fetch)
2019 (uri (git-reference
b0e7b699 2020 (url "https://github.com/mpv-player/mpv")
ce4ac7d5
RW
2021 (commit (string-append "v" version))))
2022 (file-name (git-file-name name version))
1c1178cd
TUBK
2023 (sha256
2024 (base32
4bf33b02 2025 "06cmycd2gb826kf2zv470w6nhzyk9sdhjydsdiinbgb902lzcpfy"))))
1c1178cd
TUBK
2026 (build-system waf-build-system)
2027 (native-inputs
832d60dc 2028 `(("perl" ,perl) ; for zsh completion file
1c1178cd
TUBK
2029 ("pkg-config" ,pkg-config)
2030 ("python-docutils" ,python-docutils)))
3440f12a 2031 ;; Missing features: libguess, V4L2
1c1178cd
TUBK
2032 (inputs
2033 `(("alsa-lib" ,alsa-lib)
2034 ("enca" ,enca)
06079c19 2035 ("ffmpeg" ,ffmpeg)
2d8781a4 2036 ("jack" ,jack-1)
1c1178cd
TUBK
2037 ("ladspa" ,ladspa)
2038 ("lcms" ,lcms)
2039 ("libass" ,libass)
2040 ("libbluray" ,libbluray)
2041 ("libcaca" ,libcaca)
2042 ("libbs2b" ,libbs2b)
2043 ("libcdio-paranoia" ,libcdio-paranoia)
2044 ("libdvdread" ,libdvdread)
2045 ("libdvdnav" ,libdvdnav)
4bd428a7 2046 ("libjpeg" ,libjpeg-turbo)
1c1178cd 2047 ("libva" ,libva)
81c29ccc 2048 ("libvdpau" ,libvdpau)
1c1178cd
TUBK
2049 ("libx11" ,libx11)
2050 ("libxext" ,libxext)
2051 ("libxinerama" ,libxinerama)
2052 ("libxrandr" ,libxrandr)
2053 ("libxscrnsaver" ,libxscrnsaver)
2054 ("libxv" ,libxv)
e66f0dd2
AP
2055 ;; XXX: lua > 5.2 is not currently supported; see
2056 ;; waftools/checks/custom.py
2057 ("lua" ,lua-5.2)
1c1178cd
TUBK
2058 ("mesa" ,mesa)
2059 ("mpg123" ,mpg123)
2060 ("pulseaudio" ,pulseaudio)
2061 ("rsound" ,rsound)
870541d6 2062 ("shaderc" ,shaderc)
08899ee9 2063 ("vulkan-headers" ,vulkan-headers)
e6fcf903 2064 ("vulkan-loader" ,vulkan-loader)
f0b8d83a 2065 ("waf" ,python-waf)
3440f12a 2066 ("wayland" ,wayland)
abc5ef5a 2067 ("wayland-protocols" ,wayland-protocols)
c695fb76 2068 ("libxkbcommon" ,libxkbcommon)
1c1178cd
TUBK
2069 ("youtube-dl" ,youtube-dl)
2070 ("zlib" ,zlib)))
2071 (arguments
2072 '(#:phases
2073 (modify-phases %standard-phases
3df69aaf
TE
2074 (add-after
2075 'unpack 'patch-paths
2076 (lambda* (#:key inputs #:allow-other-keys)
2077 (let ((ytdl (assoc-ref inputs "youtube-dl")))
2078 (substitute* "player/lua/ytdl_hook.lua"
2079 (("\"youtube-dl\",")
2080 (string-append "\"" ytdl "/bin/youtube-dl\",")))
2081 #t)))
a864d407
MB
2082 (add-before 'configure 'build-reproducibly
2083 (lambda _
2084 ;; Somewhere in the build system library dependencies are enumerated
2085 ;; and passed as linker flags, but the order in which they are added
2086 ;; varies. See <https://github.com/mpv-player/mpv/issues/7855>.
2087 ;; Set PYTHONHASHSEED as a workaround for deterministic results.
2088 (setenv "PYTHONHASHSEED" "1")
2089 #t))
1c1178cd 2090 (add-before
f8503e2b 2091 'configure 'setup-waf
1c1178cd 2092 (lambda* (#:key inputs #:allow-other-keys)
a2aa746c
EF
2093 (let ((waf (assoc-ref inputs "waf")))
2094 (copy-file (string-append waf "/bin/waf") "waf"))
d39260dc
MW
2095 (setenv "CC" "gcc")
2096 #t)))
98c8b963 2097 #:configure-flags (list "--enable-libmpv-shared"
43ba5dd4 2098 "--enable-cdda"
43ba5dd4 2099 "--enable-dvdnav"
98c8b963 2100 "--disable-build-date")
1c1178cd
TUBK
2101 ;; No check function defined.
2102 #:tests? #f))
581873b5 2103 (home-page "https://mpv.io/")
1c1178cd
TUBK
2104 (synopsis "Audio and video player")
2105 (description "mpv is a general-purpose audio and video player. It is a
2106fork of mplayer2 and MPlayer. It shares some features with the former
2107projects while introducing many more.")
ae0bdd81 2108 (license license:gpl2+)))
1c1178cd 2109
0e74bb5b 2110(define-public gnome-mpv
b7f5fa82 2111 (deprecated-package "gnome-mpv" celluloid))
0e74bb5b 2112
6ed192a2
EF
2113(define-public mpv-mpris
2114 (package
2115 (name "mpv-mpris")
fe95a078 2116 (version "0.5")
6ed192a2
EF
2117 (source
2118 (origin
2119 (method git-fetch)
2120 (uri (git-reference
2121 (url "https://github.com/hoyon/mpv-mpris")
2122 (commit version)))
2123 (file-name (git-file-name name version))
2124 (sha256
2125 (base32
fe95a078 2126 "07p6li5z38pkfd40029ag2jqx917vyl3ng5p2i4v5a0af14slcnk"))))
2a844af9 2127 (build-system copy-build-system)
6ed192a2 2128 (arguments
2a844af9
EF
2129 '(#:install-plan
2130 '(("mpris.so" "lib/"))
6ed192a2
EF
2131 #:phases
2132 (modify-phases %standard-phases
2a844af9
EF
2133 (add-before 'install 'build
2134 (lambda _
2135 (setenv "CC" (which "gcc"))
2136 (invoke "make"))))))
6ed192a2
EF
2137 (native-inputs
2138 `(("pkg-config" ,pkg-config)))
2139 (inputs
2140 `(("glib" ,glib)
2141 ("mpv" ,mpv)))
2142 (home-page "https://github.com/hoyon/mpv-mpris")
2143 (synopsis "MPRIS plugin for mpv")
2144 (description "This package provides an @dfn{MPRIS} (Media Player Remote
2145Interfacing Specification) plugin for the @code{mpv} media player. It implements
2146@code{org.mpris.MediaPlayer2} and @code{org.mpris.MediaPlayer2.Player} D-Bus
2147interfaces.
2148
2149To load this plugin, specify the following option when starting mpv:
2150@code{--script $GUIX_PROFILE/lib/mpris.so} or link it into
2151@file{$HOME/.config/mpv/scripts}.")
2152 (license license:expat)))
2153
d0ed39be
DT
2154(define-public libvpx
2155 (package
2156 (name "libvpx")
2f702f2d 2157 (version "1.9.0")
d0ed39be 2158 (source (origin
8a464433
MB
2159 (method git-fetch)
2160 (uri (git-reference
2161 (url "https://chromium.googlesource.com/webm/libvpx")
2162 (commit (string-append "v" version))))
2163 (file-name (git-file-name name version))
d0ed39be
DT
2164 (sha256
2165 (base32
2f702f2d 2166 "16xv6ambc82g14h1y0q1vyy57wp6j9fbp0nk0wd5csnrw407rhry"))
037d5913 2167 (patches (search-patches "libvpx-CVE-2016-2818.patch"))))
d0ed39be
DT
2168 (build-system gnu-build-system)
2169 (arguments
e896c227 2170 `(#:configure-flags (list "--enable-shared"
1e667df4 2171 "--disable-static"
0e47b4e7
EF
2172 "--as=yasm"
2173 ;; Limit size to avoid CVE-2015-1258
2174 "--size-limit=16384x16384"
e896c227
MB
2175 (string-append "--prefix=" (assoc-ref %outputs "out")))
2176 #:make-flags (list (string-append "LDFLAGS=-Wl,-rpath="
2177 (assoc-ref %outputs "out") "/lib"))
2178 #:phases (modify-phases %standard-phases
2179 (replace 'configure
2180 (lambda* (#:key configure-flags #:allow-other-keys)
2181 ;; The configure script does not understand some of the GNU
2182 ;; options, so we only add the flags specified above.
2183 (apply invoke "./configure" configure-flags))))
2f702f2d
MB
2184
2185 ;; XXX: The test suite wants to download 871 files from a cloud storage
2186 ;; service (see test/test-data.sha1). It is possible to specify a
2187 ;; custom directory, but there seems to be no tarball with all files.
2188 #:tests? #f))
d0ed39be
DT
2189 (native-inputs
2190 `(("perl" ,perl)
2191 ("yasm" ,yasm)))
2192 (synopsis "VP8/VP9 video codec")
2193 (description "libvpx is a codec for the VP8/VP9 video compression format.")
ae0bdd81 2194 (license license:bsd-3)
ad7664f6 2195 (home-page "https://www.webmproject.org/")))
615215a5
LC
2196
2197(define-public youtube-dl
2198 (package
2199 (name "youtube-dl")
a239237b 2200 (version "2021.02.22")
615215a5
LC
2201 (source (origin
2202 (method url-fetch)
09bbf0b4
TGR
2203 (uri (string-append "https://youtube-dl.org/downloads/latest/"
2204 "youtube-dl-" version ".tar.gz"))
615215a5
LC
2205 (sha256
2206 (base32
a239237b 2207 "19j4kfqln1yk47dpid9j4z3zvgxy6xar1mpfsadifikfdgbmsq7x"))
740c0f37
MW
2208 (snippet
2209 '(begin
2210 ;; Delete the pre-generated files, except for the man page
2211 ;; which requires 'pandoc' to build.
2212 (for-each delete-file '("youtube-dl"
2213 ;;pandoc is needed to generate
2214 ;;"youtube-dl.1"
2215 "youtube-dl.bash-completion"
2216 "youtube-dl.fish"
2217 "youtube-dl.zsh"))
2218 #t))))
615215a5 2219 (build-system python-build-system)
2ad9515c
AV
2220 (arguments
2221 ;; The problem here is that the directory for the man page and completion
2222 ;; files is relative, and for some reason, setup.py uses the
2223 ;; auto-detected sys.prefix instead of the user-defined "--prefix=FOO".
2224 ;; So, we need pass the prefix directly. In addition, make sure the Bash
2225 ;; completion file is called 'youtube-dl' rather than
2226 ;; 'youtube-dl.bash-completion'.
31c58006
LF
2227 `(#:tests? #f ; Many tests fail. The test suite can be run with pytest.
2228 #:phases (modify-phases %standard-phases
7194b638
TGR
2229 (add-after 'unpack 'default-to-the-ffmpeg-input
2230 (lambda _
2231 ;; See <https://issues.guix.gnu.org/43418#5>.
2232 ;; ffmpeg is big but required to request free formats
2233 ;; from, e.g., YouTube so pull it in unconditionally.
2234 ;; Continue respecting the --ffmpeg-location argument.
2235 (substitute* "youtube_dl/postprocessor/ffmpeg.py"
2236 (("\\.get\\('ffmpeg_location'\\)" match)
2237 (format #f "~a or '~a'" match (which "ffmpeg"))))
2238 #t))
740c0f37
MW
2239 (add-before 'build 'build-generated-files
2240 (lambda _
2241 ;; Avoid the make targets that require pandoc.
2242 (invoke "make"
2243 "PYTHON=python"
2244 "youtube-dl"
2245 ;;"youtube-dl.1" ; needs pandoc
2246 "youtube-dl.bash-completion"
2247 "youtube-dl.zsh"
2248 "youtube-dl.fish")))
2ad9515c
AV
2249 (add-before 'install 'fix-the-data-directories
2250 (lambda* (#:key outputs #:allow-other-keys)
2251 (let ((prefix (assoc-ref outputs "out")))
2252 (mkdir "bash-completion")
2253 (rename-file "youtube-dl.bash-completion"
2254 "bash-completion/youtube-dl")
2255 (substitute* "setup.py"
2256 (("youtube-dl\\.bash-completion")
2257 "bash-completion/youtube-dl")
2258 (("'etc/")
2259 (string-append "'" prefix "/etc/"))
2260 (("'share/")
caa8de70 2261 (string-append "'" prefix "/share/")))
4233e74b 2262 #t)))
7884fc43
BW
2263 (add-after 'install 'install-completion
2264 (lambda* (#:key outputs #:allow-other-keys)
2265 (let* ((out (assoc-ref outputs "out"))
2266 (zsh (string-append out
2267 "/share/zsh/site-functions")))
2268 (mkdir-p zsh)
2269 (copy-file "youtube-dl.zsh"
2270 (string-append zsh "/_youtube-dl"))
caa8de70 2271 #t))))))
740c0f37
MW
2272 (native-inputs
2273 `(("zip" ,zip)))
7194b638
TGR
2274 (inputs
2275 `(("ffmpeg" ,ffmpeg)))
615215a5
LC
2276 (synopsis "Download videos from YouTube.com and other sites")
2277 (description
b798dfde 2278 "Youtube-dl is a small command-line program to download videos from
1c911690 2279YouTube.com and many more sites.")
39dc7032 2280 (home-page "https://yt-dl.org")
ae0bdd81 2281 (license license:public-domain)))
e6bdb36a 2282
794223bc
CM
2283(define-public youtube-dl-gui
2284 (package
2285 (name "youtube-dl-gui")
2286 (version "0.3.8")
2287 (source
2288 (origin
2289 (method url-fetch)
2290 (uri (pypi-uri "Youtube-DLG" version))
2291 (sha256
2292 (base32
2293 "0napxwzgls5ik1bxbp99vly32l23xpc4ng5kr24hfhf21ypjyadb"))))
2294 (build-system python-build-system)
2295 (arguments
2296 ;; In Guix, wxpython has not yet been packaged for Python 3.
2297 `(#:python ,python-2
2298 ;; This package has no tests.
2299 #:tests? #f
2300 #:phases
2301 (modify-phases %standard-phases
2302 (add-before 'build 'patch-source
2303 (lambda* (#:key inputs #:allow-other-keys)
2304 ;; The youtube-dl-gui program lets you configure options. Some of
2305 ;; them are problematic, so we change their defaults.
2306 (substitute* "youtube_dl_gui/optionsmanager.py"
2307 ;; When this is true, the builder process will try (and fail) to
2308 ;; write logs to the builder user's home directory.
2309 (("'enable_log': True") "'enable_log': False")
2310 ;; This determines which youtube-dl program youtube-dl-gui will
2311 ;; run. If we don't set this, then youtube-dl-gui might download
2312 ;; an arbitrary copy from the Internet into the user's home
2313 ;; directory and run it, so let's make sure youtube-dl-gui uses
2314 ;; the youtube-dl from the inputs by default.
2315 (("'youtubedl_path': self.config_path")
2316 (string-append "'youtubedl_path': '"
2317 (assoc-ref inputs "youtube-dl")
2318 "/bin'"))
2319 ;; When this is True, when youtube-dl-gui is finished downloading
2320 ;; a file, it will try (and possibly fail) to open the directory
2321 ;; containing the downloaded file. This can fail because it
2322 ;; assumes that xdg-open is in PATH. Unfortunately, simply
2323 ;; adding xdg-utils to the propagated inputs is not enough to
2324 ;; make this work, so for now we set the default to False.
2325 (("'open_dl_dir': True") "'open_dl_dir': False"))
2326 ;; The youtube-dl program from the inputs is actually a wrapper
2327 ;; script written in bash, so attempting to invoke it as a python
2328 ;; script will fail.
2329 (substitute* "youtube_dl_gui/downloaders.py"
2330 (("cmd = \\['python', self\\.youtubedl_path\\]")
2331 "cmd = [self.youtubedl_path]"))
2332 ;; Use relative paths for installing data files so youtube-dl-gui
2333 ;; installs the files relative to its prefix in the store, rather
2334 ;; than relative to /. Also, instead of installing data files into
2335 ;; $prefix/usr/share, install them into $prefix/share for
2336 ;; consistency (see: (standards) Directory Variables).
2337 (substitute* "setup.py"
2338 (("= '/usr/share") "= 'share"))
2339 ;; Update get_locale_file() so it finds the installed localization
2340 ;; files.
2341 (substitute* "youtube_dl_gui/utils.py"
2342 (("os\\.path\\.join\\('/usr', 'share'")
2343 (string-append "os.path.join('"
2344 (assoc-ref %outputs "out")
9dcfd6aa 2345 "', 'share'")))
db37dd91
TGR
2346 #t))
2347 (add-after 'install 'create-desktop-file
2348 (lambda* (#:key outputs #:allow-other-keys)
2349 (let* ((out (assoc-ref outputs "out"))
2350 (applications (string-append out "/share/applications")))
2351 (mkdir-p applications)
2352 (call-with-output-file
2353 (string-append applications "/youtube-dl-gui.desktop")
2354 (lambda (file)
2355 (format
2356 file
2357 "[Desktop Entry]~@
2358 Name=Youtube-dl GUI~@
2359 Comment=Graphical interface to download video with youtube-dl~@
2360 Exec=youtube-dl-gui~@
2361 TryExec=youtube-dl-gui~@
2362 Terminal=false~@
2363 Icon=youtube-dl-gui~@
2364 Type=Application~@
2365 Categories=AudioVideo;Audio;Video;Network~%")))
2366 #t))))))
794223bc
CM
2367 (inputs
2368 `(("python2-wxpython" ,python2-wxpython)
2369 ("youtube-dl" ,youtube-dl)))
2370 (home-page "https://github.com/MrS0m30n3/youtube-dl-gui")
2371 (synopsis
2372 "GUI (Graphical User Interface) for @command{youtube-dl}")
2373 (description
2374 "Youtube-dlG is a GUI (Graphical User Interface) for
2375@command{youtube-dl}. You can use it to download videos from YouTube and any
2376other site that youtube-dl supports.")
2377 (license license:unlicense)))
2378
72fa6667
FS
2379(define-public you-get
2380 (package
2381 (name "you-get")
434f378d 2382 (version "0.4.1500")
72fa6667 2383 (source (origin
5d9e3edd
RW
2384 (method git-fetch)
2385 (uri (git-reference
b0e7b699 2386 (url "https://github.com/soimort/you-get")
5d9e3edd
RW
2387 (commit (string-append "v" version))))
2388 (file-name (git-file-name name version))
72fa6667
FS
2389 (sha256
2390 (base32
434f378d 2391 "02wkmq6bjg9iz0kccsgs192aiky99l2jnw1xs6zjhvjvq7jyvf7s"))))
72fa6667 2392 (build-system python-build-system)
72fa6667 2393 (inputs
5e84eab0
TGR
2394 `(("ffmpeg" ,ffmpeg))) ; for multi-part and >=1080p videos
2395 (arguments
2396 `(#:phases
2397 (modify-phases %standard-phases
2398 (add-after 'unpack 'qualify-input-references
2399 ;; Explicitly invoke the input ffmpeg, instead of whichever one
2400 ;; happens to be in the user's $PATH at run time.
2401 (lambda* (#:key inputs #:allow-other-keys)
2402 (let ((ffmpeg (string-append (assoc-ref inputs "ffmpeg")
2403 "/bin/ffmpeg")))
2404 (substitute* "src/you_get/processor/ffmpeg.py"
2405 ;; Don't blindly replace all occurrences of ‘'ffmpeg'’: the
2406 ;; same string is also used when sniffing ffmpeg's output.
2407 (("(FFMPEG == |\\()'ffmpeg'" _ prefix)
2408 (string-append prefix "'" ffmpeg "'")))
2409 #t))))
2410 #:tests? #f)) ; XXX some tests need Internet access
817e91bc 2411 (synopsis "Download videos, audio, or images from Web sites")
72fa6667
FS
2412 (description
2413 "You-Get is a command-line utility to download media contents (videos,
2414audio, images) from the Web. It can use either mpv or vlc for playback.")
2415 (home-page "https://you-get.org/")
2416 (license license:expat)))
2417
6f45e45d
AV
2418(define-public youtube-viewer
2419 (package
2420 (name "youtube-viewer")
d17e6f2b 2421 (version "3.8.1")
6f45e45d 2422 (source (origin
6be44578
TGR
2423 (method git-fetch)
2424 (uri (git-reference
b0e7b699 2425 (url "https://github.com/trizen/youtube-viewer")
6be44578
TGR
2426 (commit version)))
2427 (file-name (git-file-name name version))
6f45e45d
AV
2428 (sha256
2429 (base32
d17e6f2b 2430 "0xdybiihd66b79rbsawjhxs9snm78gld5ziz3gnp8vdcw0bshwz7"))))
6f45e45d
AV
2431 (build-system perl-build-system)
2432 (native-inputs
2433 `(("perl-module-build" ,perl-module-build)))
6f45e45d
AV
2434 (inputs
2435 `(("perl-data-dump" ,perl-data-dump)
2436 ("perl-file-sharedir" ,perl-file-sharedir)
2437 ("perl-gtk2" ,perl-gtk2)
2438 ("perl-json" ,perl-json)
b5a26299 2439 ("perl-json-xs" ,perl-json-xs)
6f45e45d
AV
2440 ("perl-libwww" ,perl-libwww)
2441 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
adff7395 2442 ("perl-lwp-useragent-cached" ,perl-lwp-useragent-cached)
0d7c75f0 2443 ("perl-memoize" ,perl-memoize)
6f45e45d 2444 ("perl-mozilla-ca" ,perl-mozilla-ca)
adff7395 2445 ("perl-term-readline-gnu" ,perl-term-readline-gnu)
58637415 2446 ("perl-unicode-linebreak" ,perl-unicode-linebreak)
adff7395 2447 ("xdg-utils" ,xdg-utils)
58637415
TGR
2448
2449 ;; Some videos play without youtube-dl, but others silently fail to.
2450 ("youtube-dl" ,youtube-dl)))
6f45e45d
AV
2451 (arguments
2452 `(#:modules ((guix build perl-build-system)
2453 (guix build utils)
2454 (srfi srfi-26))
619edce5
EF
2455 ;; gtk-2/3 variants are both installed by default but the gtk3 variant
2456 ;; is broken without perl-gtk3.
315b98b9 2457 #:module-build-flags '("--gtk2")
63d99002
AV
2458 #:phases
2459 (modify-phases %standard-phases
58637415
TGR
2460 (add-after 'unpack 'refer-to-inputs
2461 (lambda* (#:key inputs #:allow-other-keys)
2462 (substitute* "lib/WWW/YoutubeViewer.pm"
2463 (("'youtube-dl'")
2464 (format #f "'~a/bin/youtube-dl'"
2465 (assoc-ref inputs "youtube-dl"))))
adff7395
EB
2466 (substitute* '("bin/gtk2-youtube-viewer"
2467 "bin/gtk3-youtube-viewer")
2468 (("'xdg-open'")
2469 (format #f "'~a/bin/xdg-open'"
2470 (assoc-ref inputs "xdg-utils"))))
58637415 2471 #t))
0dd8da0b
EB
2472 (add-after 'install 'install-desktop
2473 (lambda* (#:key outputs #:allow-other-keys)
2474 (let* ((out (assoc-ref outputs "out"))
2475 (sharedir (string-append out "/share")))
2476 (install-file "share/gtk-youtube-viewer.desktop"
2477 (string-append sharedir "/applications"))
2478 (install-file "share/icons/gtk-youtube-viewer.png"
2479 (string-append sharedir "/pixmaps"))
2480 #t)))
63d99002
AV
2481 (add-after 'install 'wrap-program
2482 (lambda* (#:key outputs #:allow-other-keys)
2483 (let* ((out (assoc-ref outputs "out"))
2484 (bin-dir (string-append out "/bin/"))
2485 (site-dir (string-append out "/lib/perl5/site_perl/"))
2486 (lib-path (getenv "PERL5LIB")))
2487 (for-each (cut wrap-program <>
2488 `("PERL5LIB" ":" prefix (,lib-path ,site-dir)))
2489 (find-files bin-dir))
2490 #t))))))
6f45e45d
AV
2491 (synopsis
2492 "Lightweight application for searching and streaming videos from YouTube")
2493 (description
2494 "Youtube-viewer searches and plays YouTube videos in a native player.
2495It comes with various search options; it can search for videos, playlists
2496and/or channels. The videos are streamed directly in a selected video player
2497at the best resolution (customizable) and with closed-captions (if available).
2498Both command-line and GTK2 interface are available.")
2499 (home-page "https://github.com/trizen/youtube-viewer")
2500 (license license:perl-license)))
2501
5d3609e4
TUBK
2502(define-public libbluray
2503 (package
2504 (name "libbluray")
004450f4 2505 (version "1.0.2")
5d3609e4
TUBK
2506 (source (origin
2507 (method url-fetch)
5e3f68e6 2508 (uri (string-append "https://download.videolan.org/videolan/"
5d3609e4
TUBK
2509 name "/" version "/"
2510 name "-" version ".tar.bz2"))
2511 (sha256
2512 (base32
004450f4 2513 "1zxfnw1xbghcj7b3zz5djndv6gwssxda19cz1lrlqrkg8577r7kd"))))
5d3609e4 2514 (build-system gnu-build-system)
6c0cd765 2515 (arguments
a58adb89
EF
2516 `(#:configure-flags '("--disable-bdjava-jar"
2517 "--disable-static")
6c0cd765
AP
2518 #:phases
2519 (modify-phases %standard-phases
004450f4
TGR
2520 (add-after 'unpack 'refer-to-libxml2-in-.pc-file
2521 ;; Avoid the need to propagate libxml2 by referring to it
2522 ;; directly, as is already done for fontconfig & freetype.
2523 (lambda* (#:key inputs #:allow-other-keys)
2524 (let ((libxml2 (assoc-ref inputs "libxml2")))
2525 (substitute* "configure"
2526 ((" libxml-2.0") ""))
2527 (substitute* "src/libbluray.pc.in"
2528 (("^Libs.private:" field)
2529 (string-append field " -L" libxml2 "/lib -lxml2")))
2530 #t)))
6c0cd765
AP
2531 (add-before 'build 'fix-dlopen-paths
2532 (lambda* (#:key inputs #:allow-other-keys)
2533 (let ((libaacs (assoc-ref inputs "libaacs"))
2534 (libbdplus (assoc-ref inputs "libbdplus")))
2535 (substitute* "src/libbluray/disc/aacs.c"
2536 (("\"libaacs\"")
2537 (string-append "\"" libaacs "/lib/libaacs\"")))
2538 (substitute* "src/libbluray/disc/bdplus.c"
2539 (("\"libbdplus\"")
2540 (string-append "\"" libbdplus "/lib/libbdplus\"")))
2541 #t))))))
2da45ebe 2542 (native-inputs `(("pkg-config" ,pkg-config)))
5d3609e4 2543 (inputs
71ee51a0 2544 `(("fontconfig" ,fontconfig)
5d3609e4 2545 ("freetype" ,freetype)
6c0cd765
AP
2546 ("libaacs" ,libaacs)
2547 ("libbdplus" ,libbdplus)
71ee51a0 2548 ("libxml2" ,libxml2)))
5e3f68e6 2549 (home-page "https://www.videolan.org/developers/libbluray.html")
5d3609e4
TUBK
2550 (synopsis "Blu-Ray Disc playback library")
2551 (description
2552 "libbluray is a library designed for Blu-Ray Disc playback for media
2553players, like VLC or MPlayer.")
ae0bdd81 2554 (license license:lgpl2.1+)))
5d3609e4 2555
e6bdb36a
AE
2556(define-public libdvdread
2557 (package
2558 (name "libdvdread")
29f62363 2559 (version "6.0.2")
e6bdb36a
AE
2560 (source (origin
2561 (method url-fetch)
b8a31908 2562 (uri (string-append "https://download.videolan.org/videolan/"
767b4427
TGR
2563 "libdvdread/" version "/"
2564 "libdvdread-" version ".tar.bz2"))
e6bdb36a
AE
2565 (sha256
2566 (base32
29f62363 2567 "1c7yqqn67m3y3n7nfrgrnzz034zjaw5caijbwbfrq89v46ph257r"))))
e6bdb36a 2568 (build-system gnu-build-system)
e21f3473
RJ
2569 (arguments
2570 `(#:configure-flags '("--with-libdvdcss=yes")))
2571 (native-inputs
2572 `(("pkg-config" ,pkg-config)))
2573 (propagated-inputs
2574 `(("libdvdcss" ,libdvdcss)))
e6bdb36a
AE
2575 (home-page "http://dvdnav.mplayerhq.hu/")
2576 (synopsis "Library for reading video DVDs")
2577 (description
2578 "Libdvdread provides a simple foundation for reading DVD video
2579disks. It provides the functionality that is required to access many
2580DVDs. It parses IFO files, reads NAV-blocks, and performs CSS
2581authentication and descrambling (if an external libdvdcss library is
2582installed).")
ae0bdd81 2583 (license license:gpl2+)))
b027d919 2584
b5b20bda
TD
2585(define-public dvdauthor
2586 (package
2587 (name "dvdauthor")
2588 (version "0.7.2")
2589 (source
2590 (origin
2591 (method url-fetch)
2592 (uri (string-append "mirror://sourceforge/dvdauthor/dvdauthor-"
2593 version ".tar.gz"))
2594 (sha256
2595 (base32
2596 "1drfc47hikfzc9d7hjk34rw10iqw01d2vwmn91pv73ppx4nsj81h"))))
2597 (build-system gnu-build-system)
2598 (inputs
2599 `(("libdvdread" ,libdvdread)
2600 ("libpng" ,libpng)
2601 ("imagemagick" ,imagemagick)
2602 ("libxml2" ,libxml2)
2603 ("freetype" ,freetype)))
2604 (native-inputs
2605 `(("pkg-config" ,pkg-config)))
2606 (synopsis "Generates a DVD-Video movie from a MPEG-2 stream")
2607 (description "@command{dvdauthor} will generate a DVD-Video movie from a
2608MPEG-2 stream containing VOB packets.")
2609 (home-page "http://dvdauthor.sourceforge.net")
2610 (license license:gpl3+)))
2611
b027d919
AE
2612(define-public libdvdnav
2613 (package
2614 (name "libdvdnav")
059a6e9a 2615 (version "6.0.1")
b027d919
AE
2616 (source (origin
2617 (method url-fetch)
b8a31908 2618 (uri (string-append "https://download.videolan.org/videolan/"
0104ed80
TGR
2619 "libdvdnav/" version "/"
2620 "libdvdnav-" version ".tar.bz2"))
b027d919
AE
2621 (sha256
2622 (base32
059a6e9a 2623 "0cv7j8irsv1n2dadlnhr6i1b8pann2ah6xpxic41f04my6ba6rp5"))))
b027d919
AE
2624 (build-system gnu-build-system)
2625 (native-inputs
2626 `(("pkg-config" ,pkg-config)))
2627 (inputs
2628 `(("libdvdread" ,libdvdread)))
2629 (home-page "http://dvdnav.mplayerhq.hu/")
2630 (synopsis "Library for video DVD navigation features")
2631 (description
2632 "Libdvdnav is a library for developers of multimedia
2633applications. It allows easy use of sophisticated DVD navigation features
2634such as DVD menus, multiangle playback and even interactive DVD games. All
2635this functionality is provided through a simple API which provides the DVD
2636playback as a single logical stream of blocks, intermitted by special
2637dvdnav events to report certain conditions. The main usage of libdvdnav is
2638a loop regularly calling a function to get the next block, surrounded by
2639additional calls to tell the library of user interaction. The whole
2640DVD virtual machine and internal playback states are completely
2641encapsulated.")
ae0bdd81 2642 (license license:gpl2+)))
2cd85cf9 2643
a6f710ec
TUBK
2644(define-public libdvdcss
2645 (package
2646 (name "libdvdcss")
c77fb2d6 2647 (version "1.4.2")
a6f710ec
TUBK
2648 (source (origin
2649 (method url-fetch)
b8a31908 2650 (uri (string-append "https://download.videolan.org/pub/"
a6f710ec
TUBK
2651 name "/" version "/"
2652 name "-" version ".tar.bz2"))
2653 (sha256
2654 (base32
c77fb2d6 2655 "0x957zzpf4w2cp8zlk29prj8i2q6hay3lzdzsyz8y3cwxivyvhkq"))))
a6f710ec 2656 (build-system gnu-build-system)
b8a31908 2657 (home-page "https://www.videolan.org/developers/libdvdcss.html")
a6f710ec
TUBK
2658 (synopsis "Library for accessing DVDs as block devices")
2659 (description
2660 "libdvdcss is a simple library designed for accessing DVDs like a block
2661device without having to bother about the decryption.")
ae0bdd81 2662 (license license:gpl2+)))
a6f710ec 2663
2cd85cf9
DT
2664(define-public srt2vtt
2665 (package
2666 (name "srt2vtt")
2667 (version "0.1")
2668 (source (origin
2669 (method url-fetch)
2670 (uri (string-append
152fc959 2671 "https://files.dthompson.us/srt2vtt/srt2vtt-"
2cd85cf9
DT
2672 version ".tar.gz"))
2673 (sha256
2674 (base32
2675 "16b377znjm6qlga5yb8aj7b7bcisa1ghcnj2lrb1d30lvxp4liif"))))
2676 (build-system gnu-build-system)
2677 (inputs
2678 `(("guile" ,guile-2.0)))
2679 (synopsis "SubRip to WebVTT subtitle converter")
2680 (description "srt2vtt converts SubRip formatted subtitles to WebVTT format
2681for use with HTML5 video.")
373cc3b7 2682 (home-page "https://dthompson.us/projects/srt2vtt.html")
ae0bdd81 2683 (license license:gpl3+)))
44726031
AE
2684
2685(define-public avidemux
2686 (package
2687 (name "avidemux")
66a087d5 2688 (version "2.7.6")
44726031
AE
2689 (source (origin
2690 (method url-fetch)
2691 (uri (string-append
7d3ac6c0
TGR
2692 "mirror://sourceforge/avidemux/avidemux/" version "/"
2693 "avidemux_" version ".tar.gz"))
44726031
AE
2694 (sha256
2695 (base32
66a087d5 2696 "1kwkn976ppahrcr74bnv6sqx75pzl9y21m1mvr5ksi1m6lgp924s"))
fc1adab1 2697 (patches (search-patches "avidemux-install-to-lib.patch"))))
44726031
AE
2698 (build-system cmake-build-system)
2699 (native-inputs
4632e7c7
EF
2700 `(("perl" ,perl)
2701 ("pkg-config" ,pkg-config)
2702 ("python" ,python-wrapper)
2703 ("qttools" ,qttools)
2704 ("yasm" ,yasm)))
44726031
AE
2705 ;; FIXME: Once packaged, add libraries not found during the build.
2706 (inputs
2707 `(("alsa-lib" ,alsa-lib)
2708 ("fontconfig" ,fontconfig)
2709 ("freetype" ,freetype)
2710 ("fribidi" ,fribidi)
2711 ("glu" ,glu)
44726031
AE
2712 ("jack" ,jack-1)
2713 ("lame" ,lame)
66a087d5 2714 ("libaom" ,libaom)
4cafe8ad
EF
2715 ("libva" ,libva)
2716 ("libvdpau" ,libvdpau)
44726031
AE
2717 ("libvorbis" ,libvorbis)
2718 ("libvpx" ,libvpx)
2719 ("libxv" ,libxv)
44726031 2720 ("pulseaudio" ,pulseaudio)
3261a732 2721 ("qtbase" ,qtbase)
44726031 2722 ("sqlite" ,sqlite)
44726031
AE
2723 ("zlib" ,zlib)))
2724 (arguments
37f62896 2725 `(#:tests? #f ; no check target
44726031
AE
2726 #:phases
2727 ;; Make sure files inside the included ffmpeg tarball are
2728 ;; patch-shebanged.
66a087d5 2729 (let ((ffmpeg "ffmpeg-4.2.3"))
642de36b
TGR
2730 (modify-phases %standard-phases
2731 (add-before 'patch-source-shebangs 'unpack-ffmpeg
2732 (lambda _
2733 (with-directory-excursion "avidemux_core/ffmpeg_package"
2734 (invoke "tar" "xf" (string-append ffmpeg ".tar.bz2"))
2735 (delete-file (string-append ffmpeg ".tar.bz2")))
2736 #t))
2737 (add-after 'patch-source-shebangs 'repack-ffmpeg
2738 (lambda _
2739 (with-directory-excursion "avidemux_core/ffmpeg_package"
2740 (substitute* (string-append ffmpeg "/configure")
2741 (("#! /bin/sh") (string-append "#!" (which "sh"))))
2742 (invoke "tar" "cjf" (string-append ffmpeg ".tar.bz2") ffmpeg
2743 ;; avoid non-determinism in the archive
2744 "--sort=name" "--mtime=@0"
2745 "--owner=root:0" "--group=root:0")
2746 (delete-file-recursively ffmpeg))
2747 #t))
2748 (replace 'configure
2749 (lambda _
2750 ;; Copy-paste settings from the cmake build system.
2751 (setenv "CMAKE_LIBRARY_PATH" (getenv "LIBRARY_PATH"))
2752 (setenv "CMAKE_INCLUDE_PATH" (getenv "C_INCLUDE_PATH"))
2753 #t))
2754 (replace 'build
2755 (lambda* (#:key inputs outputs #:allow-other-keys)
2756 (let* ((out (assoc-ref outputs "out"))
2757 (lib (string-append out "/lib"))
2758 (top (getcwd))
642de36b
TGR
2759 (build_component
2760 (lambda* (component srcdir #:optional (args '()))
2761 (let ((builddir (string-append "build_" component)))
2762 (mkdir builddir)
2763 (with-directory-excursion builddir
2764 (apply invoke "cmake"
2765 "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE"
2766 (string-append "-DCMAKE_INSTALL_PREFIX=" out)
2767 (string-append "-DCMAKE_INSTALL_RPATH=" lib)
2768 (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
2769 "\"-Wl,-rpath=" lib "\"")
2770 (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
642de36b
TGR
2771 (string-append "../" srcdir)
2772 "-DENABLE_QT5=True"
2773 args)
2774 (invoke "make" "-j"
2775 (number->string (parallel-job-count)))
2776 (invoke "make" "install"))))))
2777 (mkdir out)
2778 (build_component "core" "avidemux_core")
2779 (build_component "cli" "avidemux/cli")
2780 (build_component "qt4" "avidemux/qt4")
2781 (build_component "plugins_common" "avidemux_plugins"
2782 '("-DPLUGIN_UI=COMMON"))
2783 (build_component "plugins_cli" "avidemux_plugins"
2784 '("-DPLUGIN_UI=CLI"))
2785 (build_component "plugins_qt4" "avidemux_plugins"
2786 '("-DPLUGIN_UI=QT4"))
2787 (build_component "plugins_settings" "avidemux_plugins"
2788 '("-DPLUGIN_UI=SETTINGS"))
2789 ;; Remove .exe and .dll file.
2790 (delete-file-recursively
2791 (string-append out "/share/ADM6_addons"))
2792 #t)))
2793 (delete 'install)))))
44726031
AE
2794 (home-page "http://fixounet.free.fr/avidemux/")
2795 (synopsis "Video editor")
2796 (description "Avidemux is a video editor designed for simple cutting,
2797filtering and encoding tasks. It supports many file types, including AVI,
2798DVD compatible MPEG files, MP4 and ASF, using a variety of codecs. Tasks
2799can be automated using projects, job queue and powerful scripting
2800capabilities.")
afd9ed5c 2801 (supported-systems '("x86_64-linux" "i686-linux" "armhf-linux"))
44726031 2802 ;; Software with various licenses is included, see License.txt.
ae0bdd81 2803 (license license:gpl2+)))
44726031 2804
6f6c8b65
TUBK
2805(define-public vapoursynth
2806 (package
2807 (name "vapoursynth")
de864032 2808 (version "52")
6f6c8b65 2809 (source (origin
97ef6df5
RW
2810 (method git-fetch)
2811 (uri (git-reference
b0e7b699 2812 (url "https://github.com/vapoursynth/vapoursynth")
97ef6df5
RW
2813 (commit (string-append "R" version))))
2814 (file-name (git-file-name name version))
6f6c8b65
TUBK
2815 (sha256
2816 (base32
de864032 2817 "1krfdzc2x2vxv4nq9kiv1c09hgj525qn120ah91fw2ikq8ldvmx4"))))
6f6c8b65
TUBK
2818 (build-system gnu-build-system)
2819 (native-inputs
2820 `(("autoconf" ,autoconf)
2821 ("automake" ,automake)
2822 ("cython" ,python-cython)
2823 ("libtool" ,libtool)
2824 ("pkg-config" ,pkg-config)
2825 ("python" ,python)
2826 ("yasm" ,yasm)))
2827 (inputs
2828 `(("ffmpeg" ,ffmpeg)
2829 ("libass" ,libass)
f80d5fe0
EF
2830 ("tesseract-ocr" ,tesseract-ocr)
2831 ("zimg" ,zimg)))
6f6c8b65
TUBK
2832 (home-page "http://www.vapoursynth.com/")
2833 (synopsis "Video processing framework")
2834 (description "VapourSynth is a C++ library and Python module for video
2835manipulation. It aims to be a modern rewrite of Avisynth, supporting
2836multithreading, generalized colorspaces, per frame properties, and videos with
2837format changes.")
9a078f48 2838 ;; src/core/cpufeatures only allows x86, ARM or PPC
cda20ee8
EF
2839 (supported-systems (fold delete %supported-systems
2840 '("mips64el-linux" "aarch64-linux")))
6f6c8b65 2841 ;; As seen from the source files.
ae0bdd81 2842 (license license:lgpl2.1+)))
6f6c8b65 2843
67932f86
TUBK
2844(define-public xvid
2845 (package
2846 (name "xvid")
2a42629f 2847 (version "1.3.7")
67932f86
TUBK
2848 (source (origin
2849 (method url-fetch)
2850 (uri (string-append
e661d5c2 2851 "http://downloads.xvid.com/downloads/xvidcore-"
67932f86
TUBK
2852 version ".tar.bz2"))
2853 (sha256
2854 (base32
2a42629f 2855 "1xyg3amgg27zf7188kss7y248s0xhh1vv8rrk0j9bcsd5nasxsmf"))))
67932f86
TUBK
2856 (build-system gnu-build-system)
2857 (native-inputs `(("yasm" ,yasm)))
2858 (arguments
2859 '(#:phases
62fe2d47 2860 (modify-phases %standard-phases
2a42629f 2861 (add-before 'configure 'pre-configure
62fe2d47
EF
2862 (lambda _
2863 (chdir "build/generic")
2864 (substitute* "configure"
9dcfd6aa
MW
2865 (("#! /bin/sh") (string-append "#!" (which "sh"))))
2866 #t)))
2a42629f 2867 #:tests? #f)) ; no test suite
67932f86
TUBK
2868 (home-page "https://www.xvid.com/")
2869 (synopsis "MPEG-4 Part 2 Advanced Simple Profile video codec")
2870 (description "Xvid is an MPEG-4 Part 2 Advanced Simple Profile (ASP) video
2871codec library. It uses ASP features such as b-frames, global and quarter
2872pixel motion compensation, lumi masking, trellis quantization, and H.263, MPEG
2873and custom quantization matrices.")
ae0bdd81 2874 (license license:gpl2+)))
e16fde14 2875
f48feaa2 2876(define-public streamlink
15b283e7
EF
2877 (package
2878 (name "streamlink")
3f95ac91 2879 (version "2.0.0")
15b283e7
EF
2880 (source
2881 (origin
2882 (method url-fetch)
2883 (uri (pypi-uri "streamlink" version))
2884 (sha256
2885 (base32
3f95ac91 2886 "1nv2kj1k42a1b20ws8sdzlxk3wh1qz6pg5mxp75433b3c7lxksn0"))))
15b283e7
EF
2887 (build-system python-build-system)
2888 (home-page "https://github.com/streamlink/streamlink")
2889 (native-inputs
2890 `(("python-freezegun" ,python-freezegun)
2891 ("python-pytest" ,python-pytest)
2892 ("python-mock" ,python-mock)
2893 ("python-requests-mock" ,python-requests-mock)))
2894 (propagated-inputs
2895 `(("python-pysocks" ,python-pysocks)
2896 ("python-websocket-client" ,python-websocket-client)
2897 ("python-iso3166" ,python-iso3166)
2898 ("python-iso639" ,python-iso639)
b42b5afd 2899 ("python-isodate" ,python-isodate)
15b283e7
EF
2900 ("python-pycryptodome" ,python-pycryptodome)
2901 ("python-requests" ,python-requests)
2902 ("python-urllib3" ,python-urllib3)))
2903 (synopsis "Extract streams from various services")
2904 (description "Streamlink is command-line utility that extracts streams
f48feaa2 2905from sites like Twitch.tv and pipes them into a video player of choice.")
15b283e7 2906 (license license:bsd-2)))
f48feaa2 2907
e5e5eb1f 2908(define-public twitchy
04b6e9c5 2909 (let ((commit "9beb36d80b16662414129693e74fa3a2fd97554e")) ; 3.4 has no tag
e5e5eb1f
OP
2910 (package
2911 (name "twitchy")
04b6e9c5 2912 (version (git-version "3.4" "1" commit))
e5e5eb1f
OP
2913 (source
2914 (origin
2915 (method git-fetch)
2916 (uri (git-reference
b0e7b699 2917 (url "https://github.com/BasioMeusPuga/twitchy")
e5e5eb1f
OP
2918 (commit commit)))
2919 (file-name (git-file-name name version))
2920 (sha256
2921 (base32
04b6e9c5 2922 "0di03h1j9ipp2bbnxxlxz07v87icyg2hmnsr4s7184z5ql8kpzr7"))))
e5e5eb1f
OP
2923 (build-system python-build-system)
2924 (arguments
2925 '(#:phases
2926 (modify-phases %standard-phases
04b6e9c5
TE
2927 (add-after 'unpack 'patch-paths
2928 (lambda* (#:key inputs #:allow-other-keys)
2929 (substitute* "twitchy/twitchy_play.py"
2930 (("\"streamlink ")
2931 (string-append "\"" (assoc-ref inputs "streamlink")
2932 "/bin/streamlink ")))
2933 #t))
e5e5eb1f
OP
2934 (add-before 'check 'check-setup
2935 (lambda _
2936 (setenv "HOME" (getcwd)) ;Needs to write to ‘$HOME’.
ca82bdfd
OP
2937 #t))
2938 (add-after 'install 'install-rofi-plugin
2939 (lambda* (#:key outputs #:allow-other-keys)
2940 (install-file "plugins/rofi-twitchy"
2941 (string-append (assoc-ref outputs "out")
9dcfd6aa
MW
2942 "/bin"))
2943 #t)))))
e5e5eb1f
OP
2944 (inputs
2945 `(("python-requests" ,python-requests)
2946 ("streamlink" ,streamlink)))
2947 (home-page "https://github.com/BasioMeusPuga/twitchy")
2948 (synopsis "Command-line interface for Twitch.tv")
2949 (description
2950 "This package provides a command-line interface for Twitch.tv")
2951 (license license:gpl3+))))
2952
307ad140
RW
2953(define-public mlt
2954 (package
2955 (name "mlt")
5389e030 2956 (version "6.22.1")
307ad140 2957 (source (origin
520b5d06
RW
2958 (method git-fetch)
2959 (uri (git-reference
b0e7b699 2960 (url "https://github.com/mltframework/mlt")
520b5d06
RW
2961 (commit (string-append "v" version))))
2962 (file-name (git-file-name name version))
307ad140
RW
2963 (sha256
2964 (base32
5389e030 2965 "0jxv848ykw0csbnayrd710ylw46m0picfv7rpzsxz1vh4jzs395k"))))
307ad140
RW
2966 (build-system gnu-build-system)
2967 (arguments
7acc52f9 2968 `(#:tests? #f ; no tests
0fe041bd 2969 #:make-flags '("CC=gcc" "CXX=g++")
307ad140
RW
2970 #:configure-flags
2971 (list "--enable-gpl3"
2972 "--enable-gpl")
2973 #:phases
2974 (modify-phases %standard-phases
2975 (add-after
7acc52f9
TGR
2976 'configure 'override-LDFLAGS
2977 (lambda* (#:key outputs #:allow-other-keys)
2978 (substitute* "config.mak"
2979 (("LDFLAGS\\+=")
2980 (string-append "LDFLAGS+=-Wl,-rpath="
2981 (assoc-ref outputs "out")
2982 "/lib ")))
2983 #t)))))
307ad140
RW
2984 (inputs
2985 `(("alsa-lib" ,alsa-lib)
0752dabb 2986 ("ffmpeg" ,ffmpeg)
307ad140 2987 ("fftw" ,fftw)
e7cdd311
MM
2988 ("frei0r-plugins" ,frei0r-plugins)
2989 ("gdk-pixbuf" ,gdk-pixbuf)
2990 ("gtk+" ,gtk+-2)
307ad140
RW
2991 ("libxml2" ,libxml2)
2992 ("jack" ,jack-1)
2993 ("ladspa" ,ladspa)
5389e030
MR
2994 ("libexif" ,libexif)
2995 ("libvorbis" ,libvorbis)
2996 ("rubberband" ,rubberband)
307ad140 2997 ("libsamplerate" ,libsamplerate)
4c7729dc 2998 ("pulseaudio" ,pulseaudio)
e7cdd311
MM
2999 ("qtbase" ,qtbase)
3000 ("qtsvg" ,qtsvg)
307ad140
RW
3001 ("sdl" ,sdl)
3002 ("sox" ,sox)))
3003 (native-inputs
3004 `(("pkg-config" ,pkg-config)))
4c7729dc 3005 (home-page "https://www.mltframework.org/")
307ad140
RW
3006 (synopsis "Author, manage, and run multitrack audio/video compositions")
3007 (description
3008 "MLT is a multimedia framework, designed and developed for television
3009broadcasting. It provides a toolkit for broadcasters, video editors, media
3010players, transcoders, web streamers and many more types of applications. The
3011functionality of the system is provided via an assortment of ready to use
3012tools, XML authoring components, and an extensible plug-in based API.")
42b9541c 3013 (license license:gpl3)))
f464016d 3014
945d985a
DT
3015(define-public v4l-utils
3016 (package
3017 (name "v4l-utils")
c702f5dd 3018 (version "1.20.0")
945d985a
DT
3019 (source (origin
3020 (method url-fetch)
1d4ac724 3021 (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
945d985a
DT
3022 "/v4l-utils-" version ".tar.bz2"))
3023 (sha256
3024 (base32
c702f5dd 3025 "1xr66y6w422hil6s7n8d61a2vhwh4im8l267amf41jvw7xqihqcm"))))
945d985a 3026 (build-system gnu-build-system)
a172a646
IK
3027 ;; Separate graphical tools in order to save almost 1 GiB on the closure
3028 ;; for the common case.
3029 (outputs '("out" "gui"))
945d985a
DT
3030 (arguments
3031 '(#:configure-flags
4f4377f6
MB
3032 (list "--disable-static"
3033 (string-append "--with-udevdir="
945d985a 3034 (assoc-ref %outputs "out")
a172a646
IK
3035 "/lib/udev"))
3036 #:phases
3037 (modify-phases %standard-phases
3038 (add-after 'install 'split
3039 (lambda* (#:key outputs #:allow-other-keys)
3040 (let ((out (assoc-ref outputs "out"))
3041 (gui (assoc-ref outputs "gui")))
3042 (mkdir-p (string-append gui "/bin"))
3043 (mkdir-p (string-append gui "/share/man/man1"))
3044 (mkdir-p (string-append gui "/share/applications"))
3045 (for-each
3046 (lambda (prog)
3047 (for-each
3048 (lambda (file)
3049 (rename-file (string-append out file)
3050 (string-append gui file)))
3051 (list
3052 (string-append "/bin/" prog)
3053 (string-append "/share/man/man1/" prog ".1")
3054 (string-append "/share/applications/" prog ".desktop"))))
3055 '("qv4l2" "qvidcap"))
3056 (copy-recursively (string-append out "/share/icons")
3057 (string-append gui "/share/icons"))
3058 (delete-file-recursively (string-append out "/share/icons"))
3059 (rmdir (string-append out "/share/applications"))
3060 #t))))))
945d985a 3061 (native-inputs
4ca077d5
TGR
3062 `(("perl" ,perl)
3063 ("pkg-config" ,pkg-config)))
945d985a
DT
3064 (inputs
3065 `(("alsa-lib" ,alsa-lib)
3066 ("glu" ,glu)
4bd428a7 3067 ("libjpeg" ,libjpeg-turbo)
945d985a 3068 ("libx11" ,libx11)
b37662e2 3069 ("qtbase" ,qtbase)
945d985a
DT
3070 ("eudev" ,eudev)))
3071 (synopsis "Realtime video capture utilities for Linux")
3072 (description "The v4l-utils provide a series of libraries and utilities to
3073be used for realtime video capture via Linux-specific APIs.")
3074 (home-page "https://linuxtv.org/wiki/index.php/V4l-utils")
3075 ;; libv4l2 is LGPL2.1+, while utilities are GPL2 only.
3076 (license (list license:lgpl2.1+ license:gpl2))))
3077
f464016d
DT
3078(define-public obs
3079 (package
3080 (name "obs")
8aa66ccb 3081 (version "26.1.2")
f464016d 3082 (source (origin
2f069a1f
RW
3083 (method git-fetch)
3084 (uri (git-reference
b0e7b699 3085 (url "https://github.com/obsproject/obs-studio")
2f069a1f
RW
3086 (commit version)))
3087 (file-name (git-file-name name version))
f464016d
DT
3088 (sha256
3089 (base32
5be01dcd
AA
3090 "1k1asqiqw757v59ayx0w029ril947hs0lcp8n91knzjl891fr4nc"))
3091 (patches
3092 (search-patches "obs-modules-location.patch"))))
f464016d 3093 (build-system cmake-build-system)
08858812 3094 (arguments
5257618b
EF
3095 `(#:configure-flags
3096 (list (string-append "-DOBS_VERSION_OVERRIDE=" ,version)
45cad97d
OP
3097 "-DENABLE_UNIT_TESTS=TRUE")
3098 #:phases
3099 (modify-phases %standard-phases
3100 (add-after 'install 'wrap-executable
3101 (lambda* (#:key outputs #:allow-other-keys)
3102 (let ((out (assoc-ref outputs "out"))
3103 (plugin-path (getenv "QT_PLUGIN_PATH")))
3104 (wrap-program (string-append out "/bin/obs")
3105 `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))
3106 #t)))))
5be01dcd
AA
3107 (native-search-paths
3108 (list (search-path-specification
3109 (variable "OBS_PLUGINS_DIRECTORY")
3110 (separator #f) ;single entry
3111 (files '("lib/obs-plugins")))
3112 (search-path-specification
3113 (variable "OBS_PLUGINS_DATA_DIRECTORY")
3114 (separator #f) ;single entry
3115 (files '("share/obs/obs-plugins")))))
f464016d 3116 (native-inputs
5257618b
EF
3117 `(("cmocka" ,cmocka)
3118 ("pkg-config" ,pkg-config)))
f464016d 3119 (inputs
4f98c3c5
EF
3120 `(("alsa-lib" ,alsa-lib)
3121 ("curl" ,curl)
f464016d
DT
3122 ("eudev" ,eudev)
3123 ("ffmpeg" ,ffmpeg)
4f98c3c5 3124 ("fontconfig" ,fontconfig)
f464016d
DT
3125 ("freetype" ,freetype)
3126 ("jack" ,jack-1)
3127 ("jansson" ,jansson)
3128 ("libx264" ,libx264)
3129 ("libxcomposite" ,libxcomposite)
9be18877 3130 ("mbedtls" ,mbedtls-apache)
f464016d
DT
3131 ("mesa" ,mesa)
3132 ("pulseaudio" ,pulseaudio)
90a2309b 3133 ("qtbase" ,qtbase)
900ddbf5 3134 ("qtsvg" ,qtsvg)
90a2309b 3135 ("qtx11extras" ,qtx11extras)
676c866b 3136 ("speexdsp" ,speexdsp)
d4df2032 3137 ("v4l-utils" ,v4l-utils)
f464016d
DT
3138 ("zlib" ,zlib)))
3139 (synopsis "Live streaming software")
3140 (description "Open Broadcaster Software provides a graphical interface for
3141video recording and live streaming. OBS supports capturing audio and video
3142from many input sources such as webcams, X11 (for screencasting), PulseAudio,
3143and JACK.")
3144 (home-page "https://obsproject.com")
3145 (license license:gpl2+)))
d5650f86 3146
deadd978
AT
3147(define-public obs-spectralizer
3148 (package
3149 (name "obs-spectralizer")
3150 (version "1.3.3")
3151 (source
3152 (origin
3153 (method git-fetch)
3154 (uri (git-reference
3155 (url "https://github.com/univrsal/spectralizer")
3156 (commit (string-append "v" version))))
3157 (file-name (git-file-name name version))
84929062
LC
3158
3159 ;; Remove bundled Windows DLLs.
3160 (snippet '(delete-file-recursively "fftw3"))
3161 (modules '((guix build utils)))
3162
deadd978
AT
3163 (sha256
3164 (base32
3165 "0q75cnyqydpvfda51zm9gxqj3wqr99ad0lxzjhw0ld67qvj1ag6i"))))
3166 (build-system cmake-build-system)
3167 (arguments
3168 `(#:tests? #f
3169 #:configure-flags
3170 (list "-DGLOBAL_INSTALLATION=ON" "-DUSE_CMAKE_LIBDIR=ON")))
3171 (inputs `(("obs" ,obs)
3172 ("fftw" ,fftw)))
3173 (home-page "https://github.com/univrsal/spectralizer")
3174 (synopsis "OBS plugin for audio visualization")
3175 (description "This OBS plugins allows you to vizualize MPD and internal
3176OBS audio sources.")
3177 (license license:gpl2)))
3178
2c9a4c9a
DW
3179(define-public obs-websocket
3180 (package
3181 (name "obs-websocket")
3182 (version "4.9.0")
3183 (source
3184 (origin
3185 (method git-fetch)
3186 (uri (git-reference
3187 (url "https://github.com/Palakis/obs-websocket")
3188 (commit version)
3189 (recursive? #t)))
3190 (file-name (git-file-name name version))
3191 (sha256
3192 (base32 "1r47861ma1s3998clahbnbc216wcf706b1ps514k5p28h511l5w0"))))
3193 (build-system cmake-build-system)
3194 (arguments
3195 `(#:tests? #f ;no tests
3196 #:phases
3197 (modify-phases %standard-phases
3198 (add-after 'unpack 'remove-permission-change
3199 (lambda* _
3200 (substitute* "CMakeLists.txt"
3201 ;; Remove lines that set writeable permissions on outputs.
3202 (("set\\(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS") "")
3203 (("OWNER_READ.*\\)") "")
3204 (("PERMISSIONS") ")"))
3205 #t)))))
3206 (inputs
3207 `(("obs" ,obs)
3208 ("qtbase" ,qtbase)))
3209 (home-page "https://github.com/Palakis/obs-websocket")
3210 (synopsis "OBS plugin for remote control via WebSockets")
3211 (description "This OBS plugin allows you to establish a WebSocket channel
3212from within your running OBS instance so that you can control it remotely from
3213programs on your current machine or on other machines.")
3214 (license license:gpl2+)))
3215
aee9f696
AT
3216(define-public obs-wlrobs
3217 (package
3218 (name "obs-wlrobs")
3219 (version "1.0")
3220 (source
3221 (origin
3222 (method hg-fetch)
3223 (uri (hg-reference
3224 (url "https://hg.sr.ht/~scoopta/wlrobs")
3225 (changeset (string-append "v" version))))
3226 (file-name (git-file-name name version))
3227 (sha256
3228 (base32
3229 "1faiq2gdb7qis3m1hilm4pz8lkmkab75vzm608dbiazahhybf96p"))))
3230 (build-system meson-build-system)
3231 (native-inputs
3232 `(("pkg-config" ,pkg-config)))
3233 (propagated-inputs `() )
3234 (inputs `(("obs" ,obs)
3235 ("libx11" ,libx11 "out")
3236 ("wayland" ,wayland)
3237 ("wayland-protocols" ,wayland-protocols)))
3238 (home-page "https://hg.sr.ht/~scoopta/wlrobs")
3239 (synopsis "OBS plugin for Wayland (wlroots) screen capture")
3240 (description
3241 "This OBS plugin allows you to capture the screen on wlroots-based
3242Wayland compositors.")
3243 (license license:gpl3+)))
3244
d5650f86
EF
3245(define-public libvdpau
3246 (package
3247 (name "libvdpau")
9c71b341 3248 (version "1.4")
d5650f86
EF
3249 (source
3250 (origin
65ff644e
RH
3251 (method git-fetch)
3252 (uri (git-reference
3253 (url "https://gitlab.freedesktop.org/vdpau/libvdpau.git")
3254 (commit version)))
3255 (file-name (git-file-name name version))
d5650f86
EF
3256 (sha256
3257 (base32
9c71b341 3258 "1hc4mcrbr1yhfiy4zfd8wc2iiqbp90z6jswap0jia20vmyk5lqld"))))
65ff644e 3259 (build-system meson-build-system)
d5650f86
EF
3260 (native-inputs
3261 `(("pkg-config" ,pkg-config)))
3262 (inputs
3993a28a
MB
3263 `(("libx11" ,libx11 "out")
3264 ("libxext" ,libxext)
3265 ("xorgproto" ,xorgproto)))
d5650f86
EF
3266 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
3267 (synopsis "Video Decode and Presentation API")
3268 (description "VDPAU is the Video Decode and Presentation API for UNIX. It
3269provides an interface to video decode acceleration and presentation hardware
3270present in modern GPUs.")
3271 (license (license:x11-style "file://COPYING"))))
3161d32d
EF
3272
3273(define-public vdpauinfo
3274 (package
3275 (name "vdpauinfo")
c1d6814b 3276 (version "1.4")
3161d32d
EF
3277 (source
3278 (origin
f637483a
TGR
3279 (method git-fetch)
3280 (uri (git-reference
3281 (url "https://gitlab.freedesktop.org/vdpau/vdpauinfo")
c1d6814b 3282 (commit version)))
f637483a 3283 (file-name (git-file-name name version))
3161d32d 3284 (sha256
c1d6814b 3285 (base32 "0s84bavxr39w0r7zfaac7kpbfsg88hgymqyzcr0yvbj1yry3liz2"))))
3161d32d 3286 (build-system gnu-build-system)
f637483a
TGR
3287 (arguments
3288 `(#:phases
3289 (modify-phases %standard-phases
3290 (replace 'bootstrap
3291 ;; ./autogen.sh runs ./configure too soon.
3292 (lambda _
3293 (invoke "autoreconf" "-fiv"))))))
3161d32d 3294 (native-inputs
f637483a
TGR
3295 `(("autoconf" ,autoconf)
3296 ("automake" ,automake)
3297 ("libx11" ,libx11)
3298 ("pkg-config" ,pkg-config)))
3161d32d
EF
3299 (propagated-inputs
3300 `(("libvdpau" ,libvdpau)))
3301 (home-page "https://wiki.freedesktop.org/www/Software/VDPAU/")
3302 (synopsis "Tool to query the capabilities of a VDPAU implementation")
3303 (description "Vdpauinfo is a tool to query the capabilities of a VDPAU
3304implementation.")
3305 (license (license:x11-style "file://COPYING"))))
a7d94b54 3306
67df7164
EF
3307(define-public libvdpau-va-gl
3308 (package
3309 (name "libvdpau-va-gl")
3310 (version "0.4.2")
3311 (source
3312 (origin
3313 (method url-fetch)
3314 (uri (string-append "https://github.com/i-rinat/libvdpau-va-gl/"
3315 "releases/download/v" version "/libvdpau-va-gl-"
3316 version ".tar.gz"))
3317 (sha256
3318 (base32
3319 "1x2ag1f2fwa4yh1g5spv99w9x1m33hbxlqwyhm205ssq0ra234bx"))
3320 (patches (search-patches "libvdpau-va-gl-unbundle.patch"))
3321 (modules '((guix build utils)))
6cbee49d
MW
3322 (snippet '(begin (delete-file-recursively "3rdparty")
3323 #t))))
67df7164
EF
3324 (build-system cmake-build-system)
3325 (arguments
3326 '(#:tests? #f)) ; Tests require a running X11 server, with VA-API support.
3327 (native-inputs
3328 `(("libvdpau" ,libvdpau)
3329 ("pkg-config" ,pkg-config)))
3330 (inputs
3331 `(("libva" ,libva)
3332 ("mesa" ,mesa)))
3333 (home-page "https://github.com/i-rinat/libvdpau-va-gl")
3334 (synopsis "VDPAU driver with VA-API/OpenGL backend")
3335 (description
3336 "Many applications can use VDPAU to accelerate portions of the video
3337decoding process and video post-processing to the GPU video hardware. Since
3338there is no VDPAU available on Intel chips, they fall back to different drawing
3339techniques. This driver uses OpenGL under the hood to accelerate drawing and
3340scaling and VA-API (if available) to accelerate video decoding.")
3341 (license license:expat)))
3342
a7d94b54
LC
3343(define-public recordmydesktop
3344 (package
3345 (name "recordmydesktop")
3346 (version "0.3.8.1")
3347 (source (origin
3348 (method url-fetch)
3349 (uri (string-append "mirror://sourceforge/" name "/" name "/"
3350 version "/recordmydesktop-" version ".tar.gz"))
3351 (sha256
3352 (base32
3353 "133kkl5j0r877d41bzj7kj0vf3xm8x80yyx2n8nqxrva304f58ik"))))
3354 (build-system gnu-build-system)
3355 (inputs `(("popt" ,popt)
3356 ("zlib" ,zlib)
3357 ("libx11" ,libx11)
3358 ("libice" ,libice)
3359 ("libsm" ,libsm)
3360 ("libxfixes" ,libxfixes)
3361 ("libxdamage" ,libxdamage)
3362 ("libxext" ,libxext)
ed6ba9cc 3363 ("alsa-lib" ,alsa-lib)
a7d94b54
LC
3364 ("libvorbis" ,libvorbis)
3365 ("libtheora" ,libtheora)))
3366 (home-page "http://recordmydesktop.sourceforge.net/")
3367 (synopsis "Desktop session video recorder")
3368 (description
3369 "recordMyDesktop is a command-line tool that captures the activity in
3370your graphical desktop and encodes it as a video. This is a useful tool for
3371making @dfn{screencasts}.")
3372 (license license:gpl2+)))
d8841cc5 3373
63cd4d53
AV
3374(define-public simplescreenrecorder
3375 (package
3376 (name "simplescreenrecorder")
1825729f 3377 (version "0.4.2")
63cd4d53
AV
3378 (source
3379 (origin
21309b8b
RW
3380 (method git-fetch)
3381 (uri (git-reference
b0e7b699 3382 (url "https://github.com/MaartenBaert/ssr")
21309b8b
RW
3383 (commit version)))
3384 (file-name (git-file-name name version))
63cd4d53
AV
3385 (sha256
3386 (base32
1825729f 3387 "1dzp5yzqlha65crzklx2qlan6ssw1diwzfpc4svd7gnr858q2292"))))
83c92882 3388 (build-system cmake-build-system)
63cd4d53
AV
3389 ;; Although libx11, libxfixes, libxext are listed as build dependencies in
3390 ;; README.md, the program builds and functions properly without them.
3391 ;; As a result, they are omitted. Please add them back if problems appear.
3392 (inputs
3393 `(("alsa-lib" ,alsa-lib)
8332ac03 3394 ("ffmpeg" ,ffmpeg)
63cd4d53
AV
3395 ("glu" ,glu)
3396 ("jack" ,jack-1)
3397 ("libxi" ,libxi)
1825729f 3398 ("libxinerama" ,libxinerama)
63cd4d53 3399 ("pulseaudio" ,pulseaudio)
91562061
MB
3400 ("qtbase" ,qtbase)
3401 ("qtx11extras" ,qtx11extras)))
63cd4d53 3402 (native-inputs `(("pkg-config" ,pkg-config)))
83c92882
TGR
3403 (arguments
3404 `(#:configure-flags
3405 (list "-DWITH_QT5=TRUE")
3406 #:tests? #f)) ; no test suite
63cd4d53 3407 ;; Using HTTPS causes part of the page to be displayed improperly.
10b52f46 3408 (home-page "https://www.maartenbaert.be/simplescreenrecorder/")
63cd4d53
AV
3409 (synopsis "Screen recorder")
3410 (description "SimpleScreenRecorder is an easy to use screen recorder with
3411a graphical user interface. It supports recording the entire screen, or a
3412part of it, and allows encoding in many different codecs and file formats.
3413Other features include a live preview and live streaming.")
3414 (license (list license:gpl3+ ; most files
3415 license:zlib ; glinject/elfhacks.*
3416 license:isc ; glinject/*
3417 license:x11)))) ; build-aux/install-sh
3418
d8841cc5
KK
3419(define-public libsmpeg
3420 (package
3421 (name "libsmpeg")
d7764d42 3422 (version "0.4.5-401")
d8841cc5
KK
3423 (source (origin
3424 (method svn-fetch)
3425 (uri (svn-reference
3426 (url "svn://svn.icculus.org/smpeg/trunk/")
3427 (revision 401))) ; last revision before smpeg2 (for SDL 2.0)
b9af0564 3428 (file-name (string-append name "-" version "-checkout"))
d8841cc5
KK
3429 (sha256
3430 (base32
3431 "18yfkr70lr1x1hc8snn2ldnbzdcc7b64xmkqrfk8w59gpg7sl1xn"))))
3432 (build-system gnu-build-system)
27130ee8
LC
3433 (arguments
3434 ;; libsmpeg fails to build with -std=c++11, which is the default with
3435 ;; GCC 7. Also, 'configure' does CXXFLAGS=$CFLAGS, hence this hack.
3436 '(#:configure-flags '("CFLAGS=-O2 -g -std=c++03")))
d8841cc5
KK
3437 (native-inputs
3438 `(("autoconf" ,autoconf)
3439 ("automake" ,automake)))
3440 (inputs
3441 `(("sdl" ,sdl2)))
84f19b1d 3442 (home-page "https://icculus.org/smpeg/")
d8841cc5
KK
3443 (synopsis "SDL MPEG decoding library")
3444 (description
3445 "SMPEG (SDL MPEG Player Library) is a free MPEG1 video player library
3446with sound support. Video playback is based on the ubiquitous Berkeley MPEG
3447player, mpeg_play v2.2. Audio is played through a slightly modified mpegsound
3448library, part of splay v0.8.2. SMPEG supports MPEG audio (MP3), MPEG-1 video,
3449and MPEG system streams.")
3450 (license (list license:expat
3451 license:lgpl2.1
3452 license:lgpl2.1+
3453 license:gpl2))))
4df07622 3454
d7764d42
RW
3455;; for btanks
3456(define-public libsmpeg-with-sdl1
3457 (package (inherit libsmpeg)
3458 (name "libsmpeg")
3459 (version "0.4.5-399")
3460 (source (origin
3461 (method svn-fetch)
3462 (uri (svn-reference
3463 (url "svn://svn.icculus.org/smpeg/trunk/")
3464 (revision 399))) ; tagged release 0.4.5
3465 (file-name (string-append name "-" version "-checkout"))
3466 (sha256
3467 (base32
3468 "0jfi085rf3fa5xsn0vd3nqf32my8ph9c6a9445y7a8lrlz4dms64"))))
3469 (inputs
3470 `(("sdl" ,sdl)))))
3471
4df07622
AP
3472(define-public libbdplus
3473 (package
3474 (name "libbdplus")
3475 (version "0.1.2")
3476 (source
3477 (origin
3478 (method url-fetch)
6f13c4fd 3479 (uri (string-append "https://ftp.videolan.org/pub/videolan/libbdplus/"
4df07622
AP
3480 version "/" name "-" version ".tar.bz2"))
3481 (sha256
3482 (base32 "02n87lysqn4kg2qk7d1ffrp96c44zkdlxdj0n16hbgrlrpiwlcd6"))))
3483 (inputs
3484 `(("libgcrypt" ,libgcrypt)))
3485 (build-system gnu-build-system)
b8a31908 3486 (home-page "https://www.videolan.org/developers/libbdplus.html")
4df07622
AP
3487 (synopsis "Library for decrypting certain Blu-Ray discs")
3488 (description "libbdplus is a library which implements the BD+ System
3489specifications.")
3490 (license license:lgpl2.1+)))
8dd6fc51
AP
3491
3492(define-public libaacs
3493 (package
3494 (name "libaacs")
24128818 3495 (version "0.11.0")
8dd6fc51
AP
3496 (source
3497 (origin
3498 (method url-fetch)
6c2481ef 3499 (uri (string-append "https://ftp.videolan.org/pub/videolan/libaacs/"
5a462ea8 3500 version "/libaacs-" version ".tar.bz2"))
8dd6fc51 3501 (sha256
24128818 3502 (base32 "11skjqjlldmbjkyxdcz4fmcn6y4p95r1xagbcnjy4ndnzf0l723d"))))
8dd6fc51
AP
3503 (inputs
3504 `(("libgcrypt" ,libgcrypt)))
3505 (native-inputs
3506 `(("bison" ,bison)
3507 ("flex" ,flex)))
3508 (build-system gnu-build-system)
b8a31908 3509 (home-page "https://www.videolan.org/developers/libaacs.html")
8dd6fc51
AP
3510 (synopsis "Library for decrypting certain Blu-Ray discs")
3511 (description "libaacs is a library which implements the Advanced Access
3512Content System specification.")
3513 (license license:lgpl2.1+)))
05234973 3514
3515(define-public mps-youtube
3516 (package
3517 (name "mps-youtube")
c53fa8c8 3518 (version "0.2.8")
05234973 3519 (source
3520 (origin
e0a80ee4
RW
3521 (method git-fetch)
3522 (uri (git-reference
b0e7b699 3523 (url "https://github.com/mps-youtube/mps-youtube")
e0a80ee4
RW
3524 (commit (string-append "v" version))))
3525 (file-name (git-file-name name version))
05234973 3526 (sha256
3527 (base32
e0a80ee4 3528 "1w1jhw9rg3dx7vp97cwrk5fymipkcy2wrbl1jaa38ivcjhqg596y"))))
05234973 3529 (build-system python-build-system)
175d6264 3530 (arguments
3531 ;; Tests need to be disabled until #556 upstream is fixed. It reads as if the
3532 ;; test suite results differ depending on the country and also introduce
3533 ;; non-determinism in the tests.
3534 ;; https://github.com/mps-youtube/mps-youtube/issues/556
3535 `(#:tests? #f))
05234973 3536 (propagated-inputs
3537 `(("python-pafy" ,python-pafy)
3538 ("python-pygobject" ,python-pygobject))) ; For mpris2 support
3539 (home-page "https://github.com/mps-youtube/mps-youtube")
3540 (synopsis "Terminal based YouTube player and downloader")
3541 (description
3542 "@code{mps-youtube} is based on mps, a terminal based program to
3543search, stream and download music. This implementation uses YouTube as
3544a source of content and can play and download video as well as audio.
3545It can use either mpv or mplayer for playback, and for conversion of
3546formats ffmpeg or libav is used. Users should install one of the
3547supported players in addition to this package.")
3548 (license license:gpl3+)))
fe047e13
EB
3549
3550(define-public handbrake
3551 (package
3552 (name "handbrake")
89528896 3553 (version "1.3.3")
fe047e13
EB
3554 (source (origin
3555 (method url-fetch)
147499a4
TGR
3556 (uri (string-append "https://github.com/HandBrake/HandBrake/"
3557 "releases/download/" version "/"
3558 "HandBrake-" version "-source.tar.bz2"))
fe047e13
EB
3559 (sha256
3560 (base32
89528896 3561 "11bzhyp052bmng5119x74xvdj5632smx6qsk537ygda8bzckg2i1"))
fe047e13
EB
3562 (modules '((guix build utils)))
3563 (snippet
37b82ccc
EB
3564 ;; Remove "contrib" and source not necessary for
3565 ;; building/running under a GNU environment.
fe047e13 3566 '(begin
37b82ccc 3567 (for-each delete-file-recursively
dc3e62a4 3568 '("contrib" "macosx" "win")) ; 540KiB, 11MiB, 5.9MiB resp.
37b82ccc
EB
3569 (substitute* "make/include/main.defs"
3570 ;; Disable unconditional inclusion of "contrib" libraries
3571 ;; (ffmpeg, libvpx, libdvdread, libdvdnav, and libbluray),
3572 ;; which would lead to fetching and building of these
3573 ;; libraries. Use our own instead.
3574 (("MODULES \\+= contrib") "# MODULES += contrib"))
dc3e62a4 3575 #t))))
fe047e13
EB
3576 (build-system glib-or-gtk-build-system)
3577 (native-inputs
dc3e62a4 3578 `(("automake" ,automake) ; GUI subpackage must be bootstrapped
fe047e13 3579 ("autoconf" ,autoconf)
fe047e13
EB
3580 ("intltool" ,intltool)
3581 ("libtool" ,libtool)
3582 ("pkg-config" ,pkg-config)
dc3e62a4 3583 ("python" ,python-2))) ; For configuration
fe047e13
EB
3584 (inputs
3585 `(("bzip2" ,bzip2)
3586 ("dbus-glib" ,dbus-glib)
37b82ccc 3587 ("ffmpeg" ,ffmpeg)
fe047e13
EB
3588 ("fontconfig" ,fontconfig)
3589 ("freetype" ,freetype)
3590 ("glib" ,glib)
3591 ("gstreamer" ,gstreamer)
3592 ("gst-plugins-base" ,gst-plugins-base)
3593 ("gtk+" ,gtk+)
37b82ccc 3594 ("jansson" ,jansson)
fe047e13
EB
3595 ("lame" ,lame)
3596 ("libass" ,libass)
3597 ("libbluray" ,libbluray)
dc3e62a4 3598 ("libdav1d" ,dav1d)
fe047e13
EB
3599 ("libdvdnav" ,libdvdnav)
3600 ("libdvdread" ,libdvdread)
3601 ("libgudev" ,libgudev)
3602 ("libmpeg2" ,libmpeg2)
3603 ("libnotify" ,libnotify)
dc3e62a4 3604 ("libnuma" ,numactl)
fe047e13 3605 ("libogg" ,libogg)
37b82ccc 3606 ("libopus" ,opus)
fe047e13
EB
3607 ("libsamplerate" ,libsamplerate)
3608 ("libtheora" ,libtheora)
3609 ("libvorbis" ,libvorbis)
3610 ("libvpx" ,libvpx)
3611 ("libxml2" ,libxml2)
3612 ("libx264" ,libx264)
4bdd41bb 3613 ("speex" ,speex)
fe047e13
EB
3614 ("x265" ,x265)
3615 ("zlib" ,zlib)))
3616 (arguments
3617 `(#:tests? #f ;tests require Ruby and claim to be unsupported
37b82ccc 3618 #:configure-flags
4bdd41bb 3619 (list "--disable-gtk-update-checks"
dc3e62a4 3620 "--disable-nvenc"
4bdd41bb 3621 (string-append "CPPFLAGS=-I"
37b82ccc
EB
3622 (assoc-ref %build-inputs "libxml2")
3623 "/include/libxml2")
3624 "LDFLAGS=-lx265")
fe047e13
EB
3625 #:phases
3626 (modify-phases %standard-phases
189be331 3627 (replace 'bootstrap
fe047e13
EB
3628 ;; Run bootstrap ahead of time so that shebangs get patched.
3629 (lambda _
3630 (setenv "CONFIG_SHELL" (which "sh"))
fe047e13
EB
3631 ;; Patch the Makefile so that it doesn't bootstrap again.
3632 (substitute* "gtk/module.rules"
dc3e62a4
EB
3633 ((".*autoreconf.*") ""))
3634 (with-directory-excursion "gtk"
3635 (invoke "autoreconf" "-fiv"))))
3636 (add-before 'configure 'patch-SHELL
3637 (lambda _
3638 (substitute* "gtk/po/Makefile.in.in"
3639 (("SHELL = /bin/sh") "SHELL = @SHELL@"))
3640 #t))
3641 (add-before 'configure 'relax-reqs
3642 (lambda _
3643 (substitute* "make/configure.py"
3644 ;; cmake is checked for so that it can be used to build
3645 ;; contrib/harfbuzz and contrib/x265, but we get these as
3646 ;; inputs, so don't abort if it's not found. Similarly, meson
3647 ;; and ninja are only needed for contrib/libdav1d, and nasm
3648 ;; only for libvpx
3649 (("((cmake|meson|ninja|nasm) *=.*abort=)True" _ &)
3650 (string-append & "False")))
3651 #t))
fe047e13
EB
3652 (replace 'configure
3653 (lambda* (#:key outputs configure-flags #:allow-other-keys)
3654 ;; 'configure' is not an autoconf-generated script, and
3655 ;; errors on unrecognized arguments,
3656 ;; e.g. --enable-fast-install
3657 (let ((out (assoc-ref outputs "out")))
da6f345c
TGR
3658 (apply invoke "./configure"
3659 (string-append "--prefix=" out)
3660 (or configure-flags '())))))
fe047e13
EB
3661 (add-after 'configure 'chdir-build
3662 (lambda _ (chdir "./build") #t)))))
3663 (home-page "https://handbrake.fr")
3664 (synopsis "Video transcoder")
3665 (description
3666 "HandBrake is a tool for converting video from any format to a selection
3667of modern, widely supported codecs.")
37b82ccc
EB
3668 ;; Some under GPLv2+, some under LGPLv2.1+, and portions under BSD3.
3669 ;; Combination under GPLv2. See LICENSE.
3670 (license license:gpl2)))
590abe01 3671
d8d7565b
TGR
3672(define-public intel-vaapi-driver
3673 (package
3674 (name "intel-vaapi-driver")
a0cfa1e2 3675 (version "2.4.1")
d8d7565b
TGR
3676 (source
3677 (origin
a0cfa1e2
TGR
3678 (method git-fetch)
3679 (uri (git-reference
3680 (url "https://github.com/intel/intel-vaapi-driver")
3681 (commit version)))
d8d7565b 3682 (sha256
a0cfa1e2
TGR
3683 (base32 "1cidki3av9wnkgwi7fklxbg3bh6kysf8w3fk2qadjr05a92mx3zp"))
3684 (file-name (git-file-name name version))))
d8d7565b
TGR
3685 (build-system gnu-build-system)
3686 (native-inputs
a0cfa1e2
TGR
3687 `(("autoconf" ,autoconf)
3688 ("automake" ,automake)
3689 ("libtool" ,libtool)
3690 ("pkg-config" ,pkg-config)))
d8d7565b
TGR
3691 (inputs
3692 `(("libdrm" ,libdrm)
3693 ("libva" ,libva)
3694 ("libx11" ,libx11)))
3695 (arguments
3696 `(#:phases
3697 (modify-phases %standard-phases
3698 (add-before 'configure 'set-target-directory
3699 (lambda* (#:key outputs #:allow-other-keys)
3700 (let ((out (assoc-ref outputs "out")))
3701 (setenv "LIBVA_DRIVERS_PATH" (string-append out "/lib/dri"))
3702 #t))))))
3703 ;; XXX Because of <https://issues.guix.gnu.org/issue/22138>, we need to add
3704 ;; this to all VA-API back ends instead of once to libva.
3705 (native-search-paths
3706 (list (search-path-specification
3707 (variable "LIBVA_DRIVERS_PATH")
3708 (files '("lib/dri")))))
3935507f 3709 (supported-systems '("i686-linux" "x86_64-linux"))
d8d7565b
TGR
3710 (home-page "https://01.org/linuxmedia/vaapi")
3711 (synopsis "VA-API video acceleration driver for Intel GEN Graphics devices")
3712 (description
3713 "This is the @acronym{VA-API, Video Acceleration API} back end required for
3714hardware-accelerated video processing on Intel GEN Graphics devices supported by
3715the i915 driver, such as integrated Intel HD Graphics. It provides access to
3716both hardware and shader functionality for faster encoding, decoding, and
3717post-processing of video formats like MPEG2, H.264/AVC, and VC-1.")
3718 (license (list license:bsd-2 ; src/gen9_vp9_const_def.c
3719 license:expat)))) ; the rest, excluding the test suite
3720
590abe01
JN
3721(define-public openh264
3722 (package
3723 (name "openh264")
4fbe53a5 3724 (version "2.1.1")
590abe01 3725 (source (origin
20ab6851
MB
3726 (method git-fetch)
3727 (uri (git-reference
3728 (url "https://github.com/cisco/openh264")
3729 (commit (string-append "v" version))))
3730 (file-name (git-file-name name version))
590abe01
JN
3731 (sha256
3732 (base32
4fbe53a5 3733 "0ffav46pz3sbj92nipd62z03fibyqgclfq9w8lgr80s6za6zdk5s"))))
590abe01
JN
3734 (build-system gnu-build-system)
3735 (native-inputs
3736 `(("nasm" ,nasm)
3737 ("python" ,python)))
3738 (arguments
8363a835
EF
3739 '(#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
3740 "CC=gcc")
590abe01
JN
3741 #:test-target "test"
3742 #:phases (modify-phases %standard-phases
3743 ;; no configure script
3744 (delete 'configure))))
e11639f3 3745 (home-page "https://www.openh264.org/")
590abe01
JN
3746 (synopsis "H264 decoder library")
3747 (description
3748 "Openh264 is a library which can decode H264 video streams.")
3749 (license license:bsd-2)))
3a44c7bb 3750
3751(define-public libmp4v2
3752 (package
3753 (name "libmp4v2")
3754 (version "2.0.0")
3755 (source
3756 (origin
3757 (method url-fetch)
3758 ;; XXX: The new location of upstream is uncertain and will become relevant the
3759 ;; moment when the googlecode archive shuts down. It is past the date it
3760 ;; should've been turned off. I tried to communicate with upstream, but this
3761 ;; wasn't very responsive and not very helpful. The short summary is, it is
3762 ;; chaos when it comes to the amount of forks and only time will tell where
3763 ;; the new upstream location is.
3764 (uri (string-append "https://storage.googleapis.com/google-"
3765 "code-archive-downloads/v2/"
3766 "code.google.com/mp4v2/mp4v2-" version ".tar.bz2"))
3767 (file-name (string-append name "-" version ".tar.bz2"))
995c30d0 3768 (patches (search-patches "libmp4v2-c++11.patch"))
3a44c7bb 3769 (sha256
3770 (base32
3771 "0f438bimimsvxjbdp4vsr8hjw2nwggmhaxgcw07g2z361fkbj683"))))
3772 (build-system gnu-build-system)
3773 (outputs '("out"
3774 "static")) ; 3.7MiB .a file
3775 (arguments
3776 `(#:phases
3777 (modify-phases %standard-phases
3778 (add-after 'unpack 'remove-dates
3779 (lambda _
3780 ;; Make the build reproducible.
3781 (substitute* "configure"
3782 (("PROJECT_build=\"`date`\"") "PROJECT_build=\"\"")
3783 (("ac_abs_top_builddir=$ac_pwd") "ac_abs_top_builddir=\"\""))
3784 #t))
3785 (add-after 'install 'move-static-libraries
3786 (lambda* (#:key outputs #:allow-other-keys)
3787 ;; Move static libraries to the "static" output.
3788 (let* ((out (assoc-ref outputs "out"))
3789 (lib (string-append out "/lib"))
3790 (static (assoc-ref outputs "static"))
3791 (slib (string-append static "/lib")))
3792 (mkdir-p slib)
3793 (for-each (lambda (file)
3794 (install-file file slib)
3795 (delete-file file))
3796 (find-files lib "\\.a$"))
3797 #t))))))
3798 (native-inputs
3799 `(("help2man" ,help2man)
3800 ("dejagnu" ,dejagnu)))
3801 (home-page "https://code.google.com/archive/p/mp4v2/")
3802 (synopsis "API to create and modify mp4 files")
3803 (description
3804 "The MP4v2 library provides an API to create and modify mp4 files as defined by
3805ISO-IEC:14496-1:2001 MPEG-4 Systems. This file format is derived from Apple's QuickTime
3806file format that has been used as a multimedia file format in a variety of platforms and
3807applications. It is a very powerful and extensible format that can accommodate
3808practically any type of media.")
3809 (license license:mpl1.1)))
e0c40707
EJ
3810
3811(define-public libmediainfo
3812 (package
3813 (name "libmediainfo")
42a5c643 3814 (version "20.09")
e0c40707
EJ
3815 (source (origin
3816 (method url-fetch)
3817 (uri (string-append "https://mediaarea.net/download/source/"
7ae5d7d7
MR
3818 name "/" version "/"
3819 name "_" version ".tar.xz"))
e0c40707
EJ
3820 (sha256
3821 (base32
42a5c643 3822 "15ni9pnch6688m72swwax109a7mg4a08yx75qknrx7qa6dbyhz6h"))))
e0c40707
EJ
3823 ;; TODO add a Big Buck Bunny webm for tests.
3824 (native-inputs
3825 `(("autoconf" ,autoconf)
3826 ("automake" ,automake)
3827 ("libtool" ,libtool)
3828 ("pkg-config" ,pkg-config)
3829 ("zlib" ,zlib)
3830 ("tinyxml2" ,tinyxml2)
3831 ("curl" ,curl)
3832 ("libzen" ,libzen)))
3833 (build-system gnu-build-system)
3834 (arguments
3835 '(#:tests? #f ; see above TODO
3836 #:phases
3837 ;; build scripts not in root of archive
3838 (modify-phases %standard-phases
0cae36b5 3839 (add-after 'unpack 'change-to-build-dir
e0c40707 3840 (lambda _
0cae36b5 3841 (chdir "Project/GNU/Library")
1d05b683 3842 #t)))))
e0c40707
EJ
3843 (home-page "https://mediaarea.net/en/MediaInfo")
3844 (synopsis "Library for retrieving media metadata")
3845 (description "MediaInfo is a library used for retrieving technical
3846information and other metadata about audio or video files. A non-exhaustive
3847list of the information MediaInfo can retrieve from media files include:
3848
3849@itemize
3850@item General: title, author, director, album, track number, date, duration...
3851@item Video: codec, aspect, fps, bitrate...
3852@item Audio: codec, sample rate, channels, language, bitrate...
3853@item Text: language of subtitle
3854@item Chapters: number of chapters, list of chapters
3855@end itemize
3856
3857MediaInfo supports the following formats:
3858
3859@itemize
3860@item Video: MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1,
3861MPEG-2, MPEG-4, DVD (VOB)...
3862@item Video Codecs: DivX, XviD, MSMPEG4, ASP, H.264, AVC...)
3863@item Audio: OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF...
3864@item Subtitles: SRT, SSA, ASS, SAMI...
3865@end itemize\n")
3866 (license license:bsd-2)))
3867
d5fa2777
EJ
3868;; TODO also have a GUI version available
3869(define-public mediainfo
3870 (package
3871 (name "mediainfo")
d5318e0c 3872 (version "20.09")
d5fa2777
EJ
3873 (source (origin
3874 (method url-fetch)
f528588a
PN
3875 ;; Warning: This source has proved unreliable 1 time at least.
3876 ;; Consider an alternate source or report upstream if this
3877 ;; happens again.
d5fa2777
EJ
3878 (uri (string-append "https://mediaarea.net/download/source/"
3879 name "/" version "/"
4c1f5ea3 3880 name "_" version ".tar.xz"))
d5fa2777
EJ
3881 (sha256
3882 (base32
d5318e0c 3883 "0rqg9z7s5bk7vlvjrs4gackzg7ib05a0dffi2ihsjf5a7kw7wcir"))))
d5fa2777
EJ
3884 (native-inputs
3885 `(("autoconf" ,autoconf)
3886 ("automake" ,automake)
3887 ("libtool" ,libtool)
3888 ("pkg-config" ,pkg-config)
3889 ("zlib" ,zlib)
c695fb76 3890 ("libmediainfo" ,libmediainfo)
d5fa2777
EJ
3891 ("libzen" ,libzen)))
3892 (build-system gnu-build-system)
3893 (arguments
3894 '(#:tests? #f ; lacks tests
3895 #:phases
3896 ;; build scripts not in root of archive
3897 (modify-phases %standard-phases
2f17187f 3898 (add-after 'unpack 'change-to-build-dir
d5fa2777 3899 (lambda _
2f17187f 3900 (chdir "Project/GNU/CLI")
f528588a 3901 #t)))))
d5fa2777
EJ
3902 (home-page "https://mediaarea.net/en/MediaInfo")
3903 (synopsis "Utility for reading media metadata")
3904 (description "MediaInfo is a utility used for retrieving technical
3905information and other metadata about audio or video files. It supports the
3906many codecs and formats supported by libmediainfo.")
3907 (license license:bsd-2)))
fa379a5b 3908
6a3b4765
ASM
3909(define-public atomicparsley
3910 (package
3911 (name "atomicparsley")
3912 (version "20200701.154658.b0d6223")
3913 (source (origin
3914 (method git-fetch)
3915 (uri (git-reference
3916 (url "https://github.com/wez/atomicparsley")
3917 (commit version)))
3918 (file-name (git-file-name name version))
3919 (sha256
3920 (base32
3921 "1kym2l5y34nmbrrlkfmxsf1cwrvch64kb34jp0hpa0b89idbhwqh"))))
3922 (build-system cmake-build-system)
3923 (arguments
3924 `(#:tests? #f ;; no tests included
3925 #:phases
3926 (modify-phases %standard-phases
3927 (add-before 'configure 'set-cmake-version
3928 (lambda* _
3929 (substitute* "CMakeLists.txt"
3930 ;; At the time of writing, Guix has CMake at 3.16, but
3931 ;; AtomicParsley uses 3.17. This brings the required CMake
3932 ;; version down to what Guix can afford.
3933 (("VERSION 3.17") "VERSION 3.16"))
3934 #t))
3935 (replace 'install
3936 (lambda* (#:key outputs #:allow-other-keys)
3937 (let* ((out (assoc-ref outputs "out"))
3938 (bin (string-append out "/bin")))
3939 (install-file "AtomicParsley" bin))
3940 #t)))))
3941 (inputs
3942 `(("zlib" ,zlib)))
3943 (synopsis "Metadata editor for MPEG-4 files")
3944 (description "AtomicParsley is a lightweight command line program for
3945reading, parsing and setting metadata into MPEG-4 files, in particular,
3946iTunes-style metadata.")
3947 (home-page "https://github.com/wez/atomicparsley")
3948 (license license:gpl2+)))
3949
fa379a5b
CL
3950(define-public livemedia-utils
3951 (package
3952 (name "livemedia-utils")
0fbf2b86 3953 (version "2020.11.19")
fa379a5b
CL
3954 (source (origin
3955 (method url-fetch)
3956 (uri (string-append
517c66c0 3957 "https://download.videolan.org/contrib/live555/live."
fa379a5b
CL
3958 version ".tar.gz"))
3959 (sha256
3960 (base32
0fbf2b86 3961 "16w6yxdbmjdhvffnrb752dn4llf3l0wb00dgdkyia0vqsv2qqyn7"))))
fa379a5b
CL
3962 (build-system gnu-build-system)
3963 (arguments
71bb7332
TGR
3964 `(#:tests? #f ; no tests
3965 #:make-flags (list (string-append "CC=" ,(cc-for-target))
3966 (string-append "CXX=" ,(cxx-for-target))
fa379a5b
CL
3967 (string-append "LDFLAGS=-Wl,-rpath="
3968 (assoc-ref %outputs "out") "/lib")
3969 (string-append "PREFIX="
3970 (assoc-ref %outputs "out")))
3971 #:phases (modify-phases %standard-phases
3972 (add-before 'configure 'fix-makefiles-generation
3973 (lambda _
3974 (substitute* "genMakefiles"
3975 (("/bin/rm") "rm"))
3976 #t))
3977 (replace 'configure
3978 (lambda _
6b677bb0
TGR
3979 (invoke "./genMakefiles"
3980 "linux-with-shared-libraries"))))))
0ac2e11b
TGR
3981 (inputs
3982 `(("openssl" ,openssl)))
fa379a5b
CL
3983 (home-page "http://www.live555.com/liveMedia/")
3984 (synopsis "Set of C++ libraries for multimedia streaming")
3985 (description "This code forms a set of C++ libraries for multimedia
3986streaming, using open standard protocols (RTP/RTCP, RTSP, SIP). The libraries
3987can be used to stream, receive, and process MPEG, H.265, H.264, H.263+, DV or
3988JPEG video, and several audio codecs. They can easily be extended to support
3989additional (audio and/or video) codecs, and can also be used to build basic
3990RTSP or SIP clients and servers.")
3991 (license license:lgpl3+)))
0dff4dd9
CL
3992
3993(define-public libdvbpsi
3994 (package
3995 (name "libdvbpsi")
1cb256ab 3996 (version "1.3.3")
0dff4dd9
CL
3997 (source (origin
3998 (method url-fetch)
3999 (uri (string-append
4000 "https://download.videolan.org/pub/libdvbpsi/"
4001 version "/libdvbpsi-" version ".tar.bz2"))
4002 (sha256
4003 (base32
1cb256ab 4004 "04h1l3vrkrdsrvkgzcr51adk10g6hxcxvgjphyyxz718ry5rkd82"))))
0dff4dd9
CL
4005 (build-system gnu-build-system)
4006 (home-page "https://www.videolan.org/developers/libdvbpsi.html")
4007 (synopsis "Library for decoding and generation of MPEG TS and DVB PSI
4008tables")
4009 (description "libdvbpsi is a simple library designed for decoding and
4010generation of MPEG TS and DVB PSI tables according to standards ISO/IEC 13818s
4011and ITU-T H.222.0.")
4012 (license license:lgpl2.1)))
6779ae27
JL
4013
4014(define-public ffms2
4015 (package
4016 (name "ffms2")
4017 (version "2.23")
b1eaede0 4018 (home-page "https://github.com/FFMS/ffms2")
6779ae27 4019 (source (origin
940fdd0c
RW
4020 (method git-fetch)
4021 (uri (git-reference
b0e7b699 4022 (url "https://github.com/FFMS/ffms2")
940fdd0c
RW
4023 (commit version)))
4024 (file-name (git-file-name name version))
6779ae27
JL
4025 (sha256
4026 (base32
940fdd0c 4027 "0dkz5b3gxq5p4xz0qqg6l2sigszrlsinz3skyf0ln4wf3zrvf8m5"))))
6779ae27
JL
4028 (build-system gnu-build-system)
4029 (arguments
4030 '(#:configure-flags
4031 (list "--enable-avresample")))
4032 (inputs
4033 `(("zlib" ,zlib)))
4034 (propagated-inputs
4035 `(("ffmpeg" ,ffmpeg)))
4036 (native-inputs
4037 `(("pkg-config" ,pkg-config)))
4038 (synopsis "Cross-platform wrapper around ffmpeg/libav")
4039 (description
4040 "FFMpegSource is a wrapper library around ffmpeg/libav that allows
4041programmers to access a standard API to open and decompress media files.")
4042 ;; sources are distributed under a different license that the binary.
4043 ;; see https://github.com/FFMS/ffms2/blob/master/COPYING
4044 (license license:gpl2+))); inherits from ffmpeg
c812f460
JL
4045
4046(define-public aegisub
4047 (package
4048 (name "aegisub")
4049 (version "3.2.2")
4050 (source (origin
4051 (method url-fetch)
4052 (uri (string-append
4053 "http://ftp.aegisub.org/pub/archives/releases/source/"
4054 name "-" version ".tar.xz"))
4055 (sha256
4056 (base32
18e56ad7 4057 "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5"))
644af6c8 4058 (patches (search-patches "aegisub-icu59-include-unistr.patch"
e43e980f 4059 "aegisub-make43.patch"
644af6c8 4060 "aegisub-boost68.patch"))))
c812f460
JL
4061 (build-system gnu-build-system)
4062 (arguments
4063 `(#:configure-flags
4064 (list "--disable-update-checker"
4065 "--without-portaudio"
4066 "--without-openal"
18e56ad7
BH
4067 "--without-oss"
4068 "CXXFLAGS=-DU_USING_ICU_NAMESPACE=1")
c812f460
JL
4069 ;; tests require busted, a lua package we don't have yet
4070 #:tests? #f
4071 #:phases
4072 (modify-phases %standard-phases
4073 (add-before 'configure 'fix-ldflags
4074 (lambda _
18e56ad7 4075 (setenv "LDFLAGS" "-pthread")
f6974e15
BH
4076 #t))
4077 (add-after 'unpack 'fix-boost-headers
4078 (lambda _
4079 (substitute*
4080 '("src/subtitles_provider_libass.cpp"
4081 "src/colour_button.cpp"
4082 "src/video_provider_dummy.cpp"
4083 "./src/video_frame.cpp")
4084 (("#include <boost/gil/gil_all.hpp>")
4085 "#include <boost/gil.hpp>"))
4086 #t)))))
c812f460
JL
4087 (inputs
4088 `(("boost" ,boost)
c812f460
JL
4089 ("ffms2" ,ffms2)
4090 ("fftw" ,fftw)
4091 ("hunspell" ,hunspell)
4092 ("mesa" ,mesa)
4093 ("libass" ,libass)
4094 ("alsa-lib" ,alsa-lib)
4095 ("pulseaudio" ,pulseaudio)
4096 ("libx11" ,libx11)
4097 ("freetype" ,freetype)
4098 ("wxwidgets-gtk2" ,wxwidgets-gtk2)))
4099 (native-inputs
4100 `(("intltool" ,intltool)
2f095261 4101 ("desktop-file-utils" ,desktop-file-utils)
c812f460
JL
4102 ("pkg-config" ,pkg-config)))
4103 (home-page "http://www.aegisub.org/")
4104 (synopsis "Subtitle engine")
4105 (description
4106 "Aegisub is a tool for creating and modifying subtitles. Aegisub makes
4107it quick and easy to time subtitles to audio, and features many powerful
4108tools for styling them, including a built-in real-time video preview.")
4109 (license (list license:bsd-3 ; the package is licensed under the bsd-3, except
4110 license:mpl1.1 ; for vendor/universalchardet under the mpl1.1
4111 license:expat)))) ; and src/gl that is under a license similar
4112 ; the the Expat license, with a rewording (Software -> Materials). (called MIT
4113 ; by upstream). See https://github.com/Aegisub/Aegisub/blob/master/LICENCE
4114 ; src/MatroskaParser.(c|h) is under bsd-3 with permission from the author
4115
c412900d
LP
4116(define-public pitivi
4117 ;; Pitivi switched to a non-semantic versioning scheme close before 1.0
4118 (let ((latest-semver "0.999.0")
8c5cafab 4119 (%version "2021.01.0"))
c412900d
LP
4120 (package
4121 (name "pitivi")
4122 (version (string-append latest-semver "-" %version))
e98c67b8
TGR
4123 (source
4124 (origin
4125 (method git-fetch)
4126 (uri (git-reference
4127 (url "https://gitlab.gnome.org/GNOME/pitivi.git")
4128 (commit %version)))
4129 (file-name (git-file-name name version))
4130 (sha256
8c5cafab 4131 (base32 "1jics10l16ismi5br6wxi4jxz3dd4p0c0xv8l0l3nvksvda4aafi"))))
c412900d
LP
4132 (build-system meson-build-system)
4133 (inputs
4134 `(("glib" ,glib)
4135 ("gst-editing-services" ,gst-editing-services)
4136 ("gstreamer" ,gstreamer)
4137 ("gst-plugins-base" ,gst-plugins-base)
4138 ("gst-plugins-good" ,gst-plugins-good)
4139 ("gst-plugins-bad"
4140 ,(gst-plugins/selection gst-plugins-bad
4141 #:plugins '("debugutils" "transcoder")
4142 #:configure-flags '("-Dintrospection=enabled")))
4143 ("gst-libav" ,gst-libav)
4144 ("gsound" ,gsound)
4145 ("gtk+" ,gtk+)
4146 ("gdk-pixbuf+svg" ,gdk-pixbuf+svg)
4147 ("libpeas" ,libpeas)
4148 ("libnotify" ,libnotify)
4149 ("pango" ,pango)
4150 ("python-gst" ,python-gst)
4151 ("python-numpy" ,python-numpy)
4152 ("python-matplotlib" ,python-matplotlib)
4153 ("python-pycairo" ,python-pycairo)
4154 ("python-pygobject" ,python-pygobject)))
635f981b 4155 (native-inputs
c412900d
LP
4156 `(("gettext" ,gettext-minimal)
4157 ("glib:bin" ,glib "bin")
4158 ("itstool" ,itstool)
635f981b 4159 ("pkg-config" ,pkg-config)))
c412900d
LP
4160 (arguments
4161 `(#:glib-or-gtk? #t
4162 #:phases
4163 (modify-phases %standard-phases
4164 (add-after 'glib-or-gtk-wrap 'wrap-other-dependencies
4165 (lambda* (#:key outputs #:allow-other-keys)
4166 (let ((prog (string-append (assoc-ref outputs "out")
4167 "/bin/pitivi")))
4168 (wrap-program prog
4169 `("PYTHONPATH" = (,(getenv "PYTHONPATH")))
4170 `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH")))
4171 ;; We've only added inputs for what Pitivi deems either
4172 ;; necessary or optional. Let the user's packages take
4173 ;; precedence in case they have e.g. the full gst-plugins-bad.
4174 `("GST_PLUGIN_SYSTEM_PATH" suffix
4175 (,(getenv "GST_PLUGIN_SYSTEM_PATH")))))
4176 #t)))))
4177 (home-page "http://www.pitivi.org")
4178 (synopsis "Video editor based on GStreamer Editing Services")
4179 (description "Pitivi is a video editor built upon the GStreamer Editing
4180Services. It aims to be an intuitive and flexible application that can appeal
4181to newbies and professionals alike.")
4182 (license license:lgpl2.1+))))
e37bdc0f 4183
4184(define-public gavl
4185 (package
4186 (name "gavl")
4187 (version "1.4.0")
4188 (source
4189 (origin
4190 (method url-fetch)
4191 (uri (string-append "mirror://sourceforge/gmerlin/"
4192 name "/" version "/"
4193 name "-" version ".tar.gz"))
4194 (file-name (string-append name "-" version ".tar.gz"))
4195 (sha256
4196 (base32
4197 "1kikkn971a14zzm7svi7190ldc14fjai0xyhpbcmp48s750sraji"))))
4198 (build-system gnu-build-system)
c178aa34
EF
4199 (arguments
4200 '(#:configure-flags '("LIBS=-lm")))
e37bdc0f 4201 (native-inputs
4202 `(("pkg-config" ,pkg-config)
4203 ("doxygen" ,doxygen)))
4204 (home-page "http://gmerlin.sourceforge.net")
4205 (synopsis "Low level library for multimedia API building")
4206 (description
4207 "Gavl is short for Gmerlin Audio Video Library. It is a low level
4208library, upon which multimedia APIs can be built. Gavl handles all the
4209details of audio and video formats like colorspaces, sample rates,
4210multichannel configurations, etc. It provides standardized definitions for
4211those formats as well as container structures for carrying audio samples or
4212video images inside an application.
4213
4214In addition, it handles the sometimes ugly task of converting between all
4215these formats and provides some elementary operations (copying, scaling,
4216alpha blending etc).")
4217 (license license:gpl3)))
49e1d76d 4218
4219(define-public frei0r-plugins
4220 (package
4221 (name "frei0r-plugins")
1debba19 4222 (version "1.7.0")
49e1d76d 4223 (source
4224 (origin
4225 (method url-fetch)
4226 (uri (string-append "https://files.dyne.org/frei0r/"
4227 "frei0r-plugins-" version ".tar.gz"))
4228 (sha256
4229 (base32
1debba19 4230 "0fjji3060r4fwr7vn91lwfzl80lg3my9lkp94kbyw8xwz7qgh7qv"))))
49e1d76d 4231 (build-system gnu-build-system)
4232 (arguments
4233 `(#:phases
4234 (modify-phases %standard-phases
1debba19 4235 (add-after 'unpack 'patch-Makefile
49e1d76d 4236 (lambda _
1debba19
MB
4237 ;; XXX: The 1.7.0 Makefile looks for files that have slightly different
4238 ;; names in the tarball. Try removing this for future versions.
4239 (substitute* "Makefile.in"
4240 (("README\\.md ChangeLog TODO AUTHORS")
4241 "README.txt ChangeLog.txt TODO.txt AUTHORS.txt"))
4242 #t)))))
63181c85 4243 ;; TODO: opencv for additional face detection filters.
49e1d76d 4244 (inputs
4245 `(("gavl" ,gavl)
4246 ("cairo" ,cairo)))
4247 (native-inputs
1debba19 4248 `(("pkg-config" ,pkg-config)))
49e1d76d 4249 (home-page "https://www.dyne.org/software/frei0r/")
4250 (synopsis "Minimalistic plugin API for video effects")
4251 (description
4252 "Frei0r is a minimalistic plugin API for video effects.
4253The main emphasis is on simplicity for an API that will round up
4254the most common video effects into simple filters, sources and
4255mixers that can be controlled by parameters. Frei0r wants to
4256provide a way to share these simple effects between many
4257applications, avoiding their reimplementation by different projects.
4258It counts more than 100 plugins.")
4259 (license (list license:gpl2+
4260 ;; The following files are licensed as LGPL2.1+:
4261 ;; src/generator/ising0r/ising0r.c
4262 ;; src/generator/onecol0r/onecol0r.cpp
4263 ;; src/generator/nois0r/nois0r.cpp
4264 ;; src/generator/lissajous0r/lissajous0r.cpp
4265 ;; src/filter/ndvi/gradientlut.hpp
4266 ;; src/filter/ndvi/ndvi.cpp
4267 ;; src/filter/facedetect/facedetect.cpp
4268 license:lgpl2.1+))))
eb3e41c9
LC
4269
4270(define-public motion
4271 (package
4272 (name "motion")
dc5d5143 4273 (version "4.3.2")
eb3e41c9
LC
4274 (home-page "https://motion-project.github.io/")
4275 (source (origin
2ea678fa
TGR
4276 (method git-fetch)
4277 (uri (git-reference
b0e7b699 4278 (url "https://github.com/Motion-Project/motion")
2ea678fa 4279 (commit (string-append "release-" version))))
eb3e41c9
LC
4280 (sha256
4281 (base32
dc5d5143 4282 "09xs815jsivcilpmnrx2jkcxirj4lg5kp99fkr0p2sdxw03myi95"))
2ea678fa 4283 (file-name (git-file-name name version))))
eb3e41c9
LC
4284 (build-system gnu-build-system)
4285 (native-inputs
464f5447 4286 `(("autoconf" ,autoconf-wrapper)
eb3e41c9 4287 ("automake" ,automake)
33bddd30 4288 ("gettext" ,gettext-minimal)
eb3e41c9
LC
4289 ("pkg-config" ,pkg-config)))
4290 (inputs
4bd428a7 4291 `(("libjpeg" ,libjpeg-turbo)
b87840f0 4292 ("ffmpeg" ,ffmpeg)
c3069cd1 4293 ("libmicrohttpd" ,libmicrohttpd)
eb3e41c9
LC
4294 ("sqlite" ,sqlite)))
4295 (arguments
4296 '(#:phases (modify-phases %standard-phases
189be331 4297 (replace 'bootstrap
eb3e41c9 4298 (lambda _
dc5d5143 4299 (patch-shebang "scripts/version.sh")
eb3e41c9
LC
4300 (invoke "autoreconf" "-vfi"))))
4301 #:configure-flags '("--sysconfdir=/etc")
4302 #:make-flags (list (string-append "sysconfdir="
4303 (assoc-ref %outputs "out")
4304 "/etc"))
4305
a9e9c738 4306 #:tests? #f)) ; no 'check' target
eb3e41c9
LC
4307 (synopsis "Detect motion from video signals")
4308 (description
4309 "Motion is a program that monitors the video signal from one or more
4310cameras and is able to detect if a significant part of the picture has
4311changed. Or in other words, it can detect motion.")
4312
4313 ;; Some files say "version 2" and others "version 2 or later".
4314 (license license:gpl2)))
f27f264e
PN
4315
4316(define-public subdl
4317 (let ((commit "4cf5789b11f0ff3f863b704b336190bf968cd471")
4318 (revision "1"))
4319 (package
4320 (name "subdl")
4321 (version (git-version "1.0.3" revision commit))
4322 (source (origin
4323 (method git-fetch)
4324 (uri (git-reference
b0e7b699 4325 (url "https://github.com/alexanderwink/subdl")
f27f264e
PN
4326 (commit commit)))
4327 (file-name (git-file-name name version))
4328 (sha256
4329 (base32
4330 "0kmk5ck1j49q4ww0lvas2767kwnzhkq0vdwkmjypdx5zkxz73fn8"))))
4331 (build-system trivial-build-system)
4332 (arguments
4333 `(#:modules ((guix build utils))
4334 #:builder (begin
4335 (use-modules (guix build utils))
4336 (let* ((out (assoc-ref %outputs "out"))
4337 (bin (string-append out "/bin"))
4338 (source (assoc-ref %build-inputs "source"))
4339 (python (assoc-ref %build-inputs "python")))
4340 (install-file (string-append source "/subdl") bin)
4341 (patch-shebang (string-append bin "/subdl")
4342 (list (string-append python "/bin")))))))
4343 (inputs `(("python" ,python)))
4344 (synopsis "Command-line tool for downloading subtitles from opensubtitles.org")
4345 (description "Subdl is a command-line tool for downloading subtitles from
4346opensubtitles.org. By default, it will search for English subtitles, display
4347the results, download the highest-rated result in the requested language and
4348save it to the appropriate filename.")
4349 (license license:gpl3+)
4350 (home-page "https://github.com/alexanderwink/subdl"))))
eb88e2c1
CL
4351
4352(define-public l-smash
4353 (package
4354 (name "l-smash")
4355 (version "2.14.5")
4356 (source (origin
45b2eff0
RW
4357 (method git-fetch)
4358 (uri (git-reference
b0e7b699 4359 (url "https://github.com/l-smash/l-smash")
45b2eff0
RW
4360 (commit (string-append "v" version))))
4361 (file-name (git-file-name name version))
eb88e2c1
CL
4362 (sha256
4363 (base32
45b2eff0 4364 "0rcq9727im6kd8da8b7kzzbzxdldvmh5nsljj9pvr4m3lj484b02"))))
eb88e2c1
CL
4365 (build-system gnu-build-system)
4366 (arguments
4367 `(#:tests? #f ;no tests
4368 #:make-flags
4369 (list (string-append "LDFLAGS=-Wl,-L.,-rpath="
4370 (assoc-ref %outputs "out") "/lib"))
4371 #:phases
4372 (modify-phases %standard-phases
4373 ;; configure fails if it is followed by CONFIG_SHELL
4374 (replace 'configure
4375 (lambda* (#:key outputs #:allow-other-keys)
4376 (let ((out (assoc-ref outputs "out")))
4377 (invoke "./configure" (string-append "--prefix=" out)
4378 "--disable-static")))))))
4379 (native-inputs
4380 `(("which" ,which)))
4381 (home-page "https://l-smash.github.io/l-smash/")
4382 (synopsis "MP4 multiplexer and demultiplexer library")
4383 (description
4384 "L-SMASH is a cross-platform library that handles the ISO base media file
4385format and some of its derived file formats, including MP4. It operates as a
4386multiplexer and demultiplexer, and can mux video and audio in several formats
4387using standalone executable files.")
4388 (license license:isc)))
a0135eee
LF
4389
4390(define-public qtfaststart
4391 (package
4392 (name "qtfaststart")
4393 (version "1.8")
4394 (source (origin
4395 (method url-fetch)
4396 (uri (pypi-uri "qtfaststart" version))
4397 (sha256
4398 (base32
4399 "0hcjfik8hhb1syqvyh5c6aillpvzal26nkjflcq1270z64aj6i5h"))))
4400 (build-system python-build-system)
4401 (arguments
4402 '(#:tests? #f)) ; no test suite
4403 (synopsis "Move QuickTime and MP4 metadata to the beginning of the file")
4404 (description "qtfaststart enables streaming and pseudo-streaming of
4405QuickTime and MP4 files by moving metadata and offset information to the
4406beginning of the file. It can also print some useful information about the
4407structure of the file. This program is based on qt-faststart.c from the FFmpeg
4408project, which is released into the public domain, as well as ISO 14496-12:2005
4409(the official spec for MP4), which can be obtained from the ISO or found
4410online.")
4411 (home-page "https://github.com/danielgtaylor/qtfaststart")
4412 (license license:expat)))
485638cd
LF
4413
4414(define-public vidstab
ad64f271
LF
4415 (let ((commit "aeabc8daa7904f9edf7441a11f293965a5ef53b8")
4416 (revision "0"))
4417 (package
4418 (name "vidstab")
4419 (version (git-version "1.1.0" revision commit))
4420 (source (origin
4421 (method git-fetch)
4422 (uri (git-reference
b0e7b699 4423 (url "https://github.com/georgmartius/vid.stab")
ad64f271
LF
4424 (commit commit)))
4425 (file-name (git-file-name name version))
4426 (sha256
4427 (base32
4428 "042iy0f3khwzr68djzvqgn301sy21ljvkf52rnc2c73q7ircnzzn"))))
4429 (build-system cmake-build-system)
4430 (arguments
4431 '(#:tests? #f)) ; tests are not run as part of standard build process
4432 (home-page "http://public.hronopik.de/vid.stab/")
4433 (synopsis "Video stabilization library")
4434 (description "Vidstab is a video stabilization library which can be used
485638cd
LF
4435with FFmpeg. A video acquired using a hand-held camera or a camera mounted on a
4436vehicle typically suffers from undesirable shakes and jitters. Activities such
4437as surfing, skiing, riding and walking while shooting videos are especially
4438prone to erratic camera shakes. Vidstab targets these video contents to help
4439create smoother and stable videos.")
ad64f271 4440 (license license:gpl2+))))
579a9cde
EB
4441
4442(define-public libopenshot
4443 (package
4444 (name "libopenshot")
747953c4 4445 (version "0.2.5")
579a9cde
EB
4446 (source (origin
4447 (method git-fetch)
4448 (uri (git-reference
4449 (url "https://github.com/OpenShot/libopenshot")
4450 (commit (string-append "v" version))))
4451 (file-name (git-file-name name version))
4452 (sha256
4453 (base32
747953c4 4454 "1mxjkgjmjzgf628y3rscc6rqf55hxgjpmvwxlncfk1216i5xskwp"))
579a9cde
EB
4455 (modules '((guix build utils)))
4456 (snippet '(begin
4457 ;; Allow overriding of the python installation dir
4458 (substitute* "src/bindings/python/CMakeLists.txt"
4459 (("(SET\\(PYTHON_MODULE_PATH.*)\\)" _ set)
4460 (string-append set " CACHE PATH "
4461 "\"Python bindings directory\")")))
277becbb 4462 (delete-file-recursively "thirdparty")
4994174f 4463 #t))))
579a9cde
EB
4464 (build-system cmake-build-system)
4465 (native-inputs
4466 `(("pkg-config" ,pkg-config)
4467 ("python" ,python)
4468 ("swig" ,swig)
4469 ("unittest++" ,unittest-cpp)))
4470 (propagated-inputs ;all referenced in installed headers
4471 `(("cppzmq" ,cppzmq)
4472 ("ffmpeg" ,ffmpeg)
4473 ("imagemagick" ,imagemagick)
4474 ("jsoncpp" ,jsoncpp)
4475 ("libopenshot-audio" ,libopenshot-audio)
ad656e70
EF
4476 ("qtbase" ,qtbase)
4477 ("qtmultimedia" ,qtmultimedia)
579a9cde
EB
4478 ("zeromq" ,zeromq)))
4479 (arguments
4480 `(#:configure-flags
4481 (list (string-append "-DPYTHON_MODULE_PATH:PATH=" %output "/lib/python"
4482 ,(version-major+minor (package-version python))
4483 "/site-packages")
4484 "-DUSE_SYSTEM_JSONCPP:BOOL=ON")
4485 #:phases
4486 (modify-phases %standard-phases
4487 (add-before 'configure 'set-vars
4488 (lambda* (#:key inputs #:allow-other-keys)
4489 (setenv "LIBOPENSHOT_AUDIO_DIR"
4490 (assoc-ref inputs "libopenshot-audio"))
4491 (setenv "ZMQDIR"
4492 (assoc-ref inputs "zeromq"))
4493 (setenv "UNITTEST_DIR"
4494 (string-append (assoc-ref inputs "unittest++")
4495 "/include/UnitTest++"))
4496 #t)))))
4497 (home-page "https://openshot.org")
4498 (synopsis "Video-editing, animation, and playback library")
4499 (description "OpenShot Library (libopenshot) is a powerful C++ video
4500editing library with a multi-threaded and feature rich video editing
4501API. It includes bindings for Python, Ruby, and other languages.")
4502 (license license:lgpl3+)))
69a3fcc0
EB
4503
4504(define-public openshot
4505 (package
4506 (name "openshot")
5020a263 4507 (version "2.5.1")
69a3fcc0
EB
4508 (source (origin
4509 (method git-fetch)
4510 (uri (git-reference
4511 (url "https://github.com/OpenShot/openshot-qt")
4512 (commit (string-append "v" version))))
4513 (file-name (git-file-name name version))
4514 (sha256
4515 (base32
5020a263 4516 "0qc5i0ay6j2wab1whl41sjb71cj02pg6y79drf7asrprq8b2rmfq"))
2afb7939
EF
4517 (modules '((guix build utils)))
4518 (snippet
4519 '(begin
5020a263 4520 ;; TODO: Unbundle jquery and others from src/timeline/media
2afb7939 4521 (delete-file-recursively "src/images/fonts") #t))))
69a3fcc0
EB
4522 (build-system python-build-system)
4523 (inputs
4524 `(("ffmpeg" ,ffmpeg)
2afb7939 4525 ("font-ubuntu" ,font-ubuntu)
69a3fcc0
EB
4526 ("libopenshot" ,libopenshot)
4527 ("python" ,python)
4528 ("python-pyqt" ,python-pyqt)
4529 ("python-pyzmq" ,python-pyzmq)
4530 ("python-requests" ,python-requests)
4531 ("qtsvg" ,qtsvg)))
4532 (arguments
e7228f0c 4533 `(#:modules ((guix build python-build-system)
a512aa91
EF
4534 (guix build qt-utils)
4535 (guix build utils))
4536 #:imported-modules (,@%python-build-system-modules
4537 (guix build qt-utils))
69a3fcc0
EB
4538 #:phases (modify-phases %standard-phases
4539 (delete 'build) ;install phase does all the work
e7228f0c
EF
4540 (replace 'check
4541 (lambda _
4542 (setenv "QT_QPA_PLATFORM" "offscreen")
4543 (invoke "python" "src/tests/query_tests.py")))
2afb7939
EF
4544 (add-after 'unpack 'patch-font-location
4545 (lambda* (#:key inputs #:allow-other-keys)
4546 (let ((font (assoc-ref inputs "font-ubuntu")))
4547 (substitute* "src/classes/app.py"
4548 (("info.IMAGES_PATH") (string-append "\"" font "\""))
4549 (("fonts") "share/fonts/truetype")))
4550 #t))
69a3fcc0
EB
4551 (add-before 'install 'set-tmp-home
4552 (lambda _
4553 ;; src/classes/info.py "needs" to create several
4554 ;; directories in $HOME when loaded during build
4555 (setenv "HOME" "/tmp")
4556 #t))
4557 (add-after 'install 'wrap-program
918a099e 4558 (lambda* (#:key outputs #:allow-other-keys)
a512aa91 4559 (let ((out (assoc-ref outputs "out")))
918a099e 4560 (wrap-qt-program out "openshot-qt"))
a512aa91 4561 #t)))))
5020a263 4562 (home-page "https://www.openshot.org/")
69a3fcc0
EB
4563 (synopsis "Video editor")
4564 (description "OpenShot takes your videos, photos, and music files and
4565helps you create the film you have always dreamed of. Easily add sub-titles,
4566transitions, and effects and then export your film to many common formats.")
4567 (license license:gpl3+)))
8c380a01
EF
4568
4569(define-public dav1d
4570 (package
4571 (name "dav1d")
aa2e420e 4572 (version "0.8.1")
8c380a01
EF
4573 (source
4574 (origin
b6404ffe
LF
4575 (method git-fetch)
4576 (uri (git-reference
4577 (url "https://code.videolan.org/videolan/dav1d.git")
4578 (commit version)))
f36bee14 4579 (file-name (git-file-name name version))
8c380a01 4580 (sha256
aa2e420e 4581 (base32 "1820fpmmq1vxjzjmza6ydk4fgxipb8gmcc5skybki64qn7410v7x"))))
8c380a01
EF
4582 (build-system meson-build-system)
4583 (native-inputs `(("nasm" ,nasm)))
4584 (home-page "https://code.videolan.org/videolan/dav1d")
4585 (synopsis "AV1 decoder")
4586 (description "dav1d is a new AV1 cross-platform decoder, and focused on
4587speed and correctness.")
4588 (license license:bsd-2)))
20b4aa6b
RH
4589
4590(define-public wlstream
4591 (let ((commit "182076a94562b128c3a97ecc53cc68905ea86838")
4592 (revision "1"))
4593 (package
4594 (name "wlstream")
4595 (version (git-version "0.0" revision commit))
4596 (source
1d591432
RH
4597 (origin
4598 (method git-fetch)
4599 (uri (git-reference
b0e7b699 4600 (url "https://github.com/atomnuker/wlstream")
1d591432
RH
4601 (commit commit)))
4602 (file-name (git-file-name name version))
4603 (sha256
4604 (base32
4605 "01qbcgfl3g9kfwn1jf1z9pdj3bvf5lmg71d1vwkcllc2az24bjqp"))))
20b4aa6b
RH
4606 (build-system meson-build-system)
4607 (native-inputs `(("libdrm" ,libdrm)
4608 ("pkg-config" ,pkg-config)))
4609 (inputs `(("ffmpeg" ,ffmpeg)
4610 ("pulseaudio" ,pulseaudio)
4611 ("wayland" ,wayland)
4612 ("wayland-protocols" ,wayland-protocols)))
4613 (home-page "https://github.com/atomnuker/wlstream")
4614 (synopsis "Screen capture tool for Wayland sessions")
4615 (description "Wlstream is a screen capture tool for recording audio and
4616video from a Wayland session.")
4617 (license license:lgpl2.1+))))
08486153
PN
4618
4619(define-public gaupol
4620 (package
4621 (name "gaupol")
418de558 4622 (version "1.9")
08486153
PN
4623 (source (origin
4624 (method git-fetch)
4625 (uri (git-reference
4626 (url "https://github.com/otsaloma/gaupol/")
4627 (commit version)))
4628 (file-name (git-file-name name version))
4629 (sha256
4630 (base32
418de558 4631 "1mmjg8nwhif2hmmp8i11643izwzdf839brqdai3ksfg0qkh8rnxk"))))
08486153
PN
4632 (build-system python-build-system)
4633 (native-inputs
4634 `(("gettext" ,gettext-minimal)
4635 ("pkg-config" ,pkg-config)))
4636 (inputs
4637 `(("python-pygobject" ,python-pygobject)
4638 ("gtk+" ,gtk+)
4639 ("python-pycairo" ,python-pycairo) ; Required or else clicking on a subtitle line fails.
4640 ("python-chardet" ,python-chardet) ; Optional: Character encoding detection.
4641 ("gtkspell3" ,gtkspell3) ; Optional: Inline spell-checking.
4642 ("iso-codes" ,iso-codes) ; Optional: Translations.
4643 ("gstreamer" ,gstreamer)
4644 ("gst-libav" ,gst-libav)
4645 ("gst-plugins-base" ,gst-plugins-base)
4646 ("gst-plugins-good" ,gst-plugins-good)
4647 ("gst-plugins-bad" ,gst-plugins-bad)
4648 ("gst-plugins-ugly" ,gst-plugins-ugly)))
4649 (arguments
4650 `(#:tests? #f ; Tests seem to require networking.
4651 #:phases
4652 (modify-phases %standard-phases
4653 ;; gaupol's setup.py script does not support one of the Python build
4654 ;; system's default flags, "--single-version-externally-managed".
4655 (replace 'install
4656 (lambda* (#:key outputs #:allow-other-keys)
4657 (invoke "python" "setup.py" "install"
4658 (string-append "--prefix=" (assoc-ref outputs "out"))
4659 "--root=/")))
4660 (add-after 'install 'wrap-gaupol
4661 (lambda* (#:key outputs #:allow-other-keys)
4662 (let ((out (assoc-ref outputs "out"))
4663 (gst-plugin-path (getenv "GST_PLUGIN_SYSTEM_PATH"))
4664 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
4665 (wrap-program (string-append out "/bin/gaupol")
4666 `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path))
4667 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))))
4668 #t))
4669 (add-after 'unpack 'patch-data-dir
4670 ;; Fix some path variables that setup.py seems to garble.
4671 (lambda* (#:key outputs #:allow-other-keys)
4672 (let ((out (assoc-ref outputs "out")))
4673 (substitute* "setup.py"
4674 (("DATA_DIR = \\{!r\\}\"\\.format\\(data_dir\\)")
4675 (string-append "DATA_DIR = '" out "/share/gaupol'\""))
4676 (("LOCALE_DIR = \\{!r\\}\"\\.format\\(locale_dir\\)")
4677 (string-append "LOCALE_DIR = '" out "/share/locale'\"")))
4678 #t))))))
4679 (synopsis "Editor for text-based subtitles")
4680 (description
4681 "Gaupol supports multiple subtitle file formats and provides means of
4682creating subtitles, editing texts and timing subtitles to match video. The
4683user interface features a builtin video player and is designed with attention
4684to convenience of translating and batch processing of multiple documents.")
4685 (home-page "https://otsaloma.io/gaupol/")
4686 (license license:gpl3+)))
97115892
PN
4687
4688(define-public theorafile
4689 (let ((commit "404b14d7602b5918d117eaa64e8aa6601ede8593"))
4690 (package
4691 (name "theorafile")
4692 (version (git-version "0.0.0" "1" commit))
4693 (source
4694 (origin
4695 (method git-fetch)
4696 (uri (git-reference
b0e7b699 4697 (url "https://github.com/FNA-XNA/Theorafile")
97115892
PN
4698 (commit commit)))
4699 (file-name (git-file-name name version))
4700 (sha256
4701 (base32 "128c3pjzqbgrj020glm5jd6ss18vl19471lj615w2brjwb7c1f0z"))))
4702 (build-system gnu-build-system)
4703 (arguments
4704 '(#:make-flags '("CC=gcc")
4705 #:phases
4706 (modify-phases %standard-phases
4707 (delete 'configure)
4708 (replace 'check
4709 (lambda _
4710 (setenv "CC" "gcc")
4711 (invoke "make" "test")))
4712 (replace 'install
4713 (lambda* (#:key outputs #:allow-other-keys)
4714 (let ((out (assoc-ref outputs "out")))
4715 (install-file "libtheorafile.so" (string-append out "/lib"))
4716 (install-file "theorafile.h" (string-append out "/include")))
4717 #t)))))
4718 (native-inputs
4719 ;; For tests.
4720 `(("sdl2" ,sdl2)))
4721 (home-page "https://github.com/FNA-XNA/Theorafile")
4722 (synopsis "Ogg Theora Video Decoder Library")
4723 (description "Theorafile is a library for quickly and easily decoding Ogg
4724Theora videos. Theorafile was written to be used for FNA's VideoPlayer.")
4725 (license license:zlib))))
b9d8aa09
RV
4726
4727(define-public dvdbackup
4728 (package
4729 (name "dvdbackup")
4730 (version "0.4.2")
4731 (source
4732 (origin
4733 (method url-fetch)
4734 (uri (string-append "mirror://sourceforge/dvdbackup/dvdbackup/"
4735 "dvdbackup-" version "/"
4736 "dvdbackup-" version ".tar.xz"))
4737 (sha256
4738 (base32 "1rl3h7waqja8blmbpmwy01q9fgr5r0c32b8dy3pbf59bp3xmd37g"))))
4739 (build-system gnu-build-system)
4740 (inputs
4741 `(("libdvdcss" ,libdvdcss)
4742 ("libdvdread" ,libdvdread)))
4743 (home-page "http://dvdbackup.sourceforge.net")
4744 (synopsis "DVD video ripper")
4745 (description
4746 "A simple command line tool to backup video from a DVD. Decrypts the
4747DVD using @command{libdvdcss}, but does @strong{not} demux, remux,
4748transcode or reformat the videos in any way, producing perfect backups.")
4749 (license license:gpl3+)))
554f5b62
LF
4750
4751(define-public svt-av1
4752 (package
4753 (name "svt-av1")
975ffa3d 4754 (version "0.8.6")
c15a8fbf
TGR
4755 (source
4756 (origin
4757 (method git-fetch)
4758 (uri (git-reference
fad9b4bb 4759 (url "https://github.com/AOMediaCodec/SVT-AV1")
c15a8fbf
TGR
4760 (commit (string-append "v" version))))
4761 (file-name (git-file-name name version))
4762 (sha256
975ffa3d 4763 (base32 "1wzamg89azi1f93wxvdy7silsgklckc754ca066k33drvyacicyw"))))
554f5b62 4764 (build-system cmake-build-system)
da287723
LF
4765 ;; SVT-AV1 only supports 64-bit Intel-compatible CPUs.
4766 (supported-systems '("x86_64-linux"))
554f5b62
LF
4767 (arguments
4768 ;; The test suite tries to download test data and git clone a 3rd-party
4769 ;; fork of libaom. Skip it.
4770 `(#:tests? #f
4771 #:phases
4772 (modify-phases %standard-phases
4773 (add-after 'install 'install-documentation
4774 (lambda* (#:key outputs #:allow-other-keys)
4775 (let* ((out (assoc-ref %outputs "out"))
4776 (doc (string-append out "/share/doc/svt-av1-" ,version)))
4777 (copy-recursively "../source/Docs" doc)
4778 #t))))))
4779 (native-inputs
4780 `(("yasm" ,yasm)))
4781 (synopsis "AV1 video codec")
4782 (description "SVT-AV1 is an AV1 codec implementation. The encoder is a
4783work-in-progress, aiming to support video-on-demand and live streaming
4784applications. It only supports Intel-compatible CPUs (x86).")
fad9b4bb 4785 (home-page "https://github.com/AOMediaCodec/SVT-AV1")
554f5b62 4786 (license license:bsd-2)))
618819aa 4787
5ea79e16
LF
4788(define-public svt-vp9
4789 (package
4790 (name "svt-vp9")
4791 (version "0.3.0")
4792 (source (origin
4793 (method git-fetch)
4794 (uri (git-reference
4795 (url "https://github.com/OpenVisualCloud/SVT-VP9")
4796 (commit (string-append "v" version))))
4797 (file-name (git-file-name name version))
4798 (sha256
4799 (base32
4800 "1ypdiw4cq22llvm8jyszxdq6r1aydkj80dsxjarjn5b7c1f2q3ar"))))
4801 ;; SVT-AV1 only supports 64-bit Intel-compatible CPUs.
4802 (supported-systems '("x86_64-linux"))
4803 (build-system cmake-build-system)
4804 (arguments
4805 `(#:tests? #f ; No test suite
4806 #:phases
4807 (modify-phases %standard-phases
4808 (add-after 'install 'install-documentation
4809 (lambda* (#:key outputs #:allow-other-keys)
4810 (let* ((out (assoc-ref %outputs "out"))
4811 (doc (string-append out "/share/doc/" ,name "-" ,version)))
4812 (copy-recursively "../source/Docs" doc)
4813 #t))))))
4814 (native-inputs
4815 `(("yasm" ,yasm)))
4816 (home-page "https://github.com/OpenVisualCloud/SVT-VP9")
4817 (synopsis "VP9 video encoder")
4818 (description "SVT-VP9 is a VP9 video encoder implementation. It is focused
4819on supporting video-on-demand and live encoding on Intel Xeon processors.")
554f5b62 4820 (license license:bsd-2)))
618819aa
GLV
4821
4822(define-public w-scan
4823 (package
4824 (name "w-scan")
4825 (version "20170107")
4826 (source
4827 (origin
4828 (method url-fetch)
4829 (uri (string-append "https://www.gen2vdr.de/wirbel/w_scan/w_scan-"
4830 version ".tar.bz2"))
4831 (sha256
4832 (base32 "1zkgnj2sfvckix360wwk1v5s43g69snm45m0drnzyv7hgf5g7q1q"))))
4833 (build-system gnu-build-system)
4834 (synopsis "Scan ATSC/DVB-C/DVB-S/DVB-T channels")
4835 (description
4836 "This is a small command line utility used to perform frequency scans for
4837DVB and ATSC transmissions without initial tuning data. It can print the
4838result in several formats:
4839@itemize
4840@item VDR channels.conf,
4841@item czap/tzap/xine/mplayer channels.conf,
4842@item Gstreamer dvbsrc plugin,
4843@item VLC xspf playlist,
4844@item XML,
4845@item initial tuning data for scan or dvbv5-scan.
4846@end itemize\n")
4847 (home-page "https://www.gen2vdr.de/wirbel/w_scan/index2.html")
4848 (license license:gpl2+)))
ca4b5588
LF
4849
4850(define-public rav1e
4851 (package
4852 (name "rav1e")
e7ff878f 4853 (version "0.3.5")
ca4b5588
LF
4854 (source
4855 (origin
4856 (method url-fetch)
4857 (uri (crate-uri "rav1e" version))
4858 (file-name
4859 (string-append name "-" version ".tar.gz"))
4860 (sha256
4861 (base32
e7ff878f 4862 "0c40gq4qid2apmlgzx98f6826jmn2n61prk0rn7sjxaw7yimw854"))))
ca4b5588
LF
4863 (build-system cargo-build-system)
4864 (arguments
4865 `(#:cargo-inputs
928bedca 4866 (("rust-aom-sys" ,rust-aom-sys-0.2)
ca4b5588 4867 ("rust-arbitrary" ,rust-arbitrary-0.2)
e26d6cc7
EF
4868 ("rust-arg-enum-proc-macro" ,rust-arg-enum-proc-macro-0.3)
4869 ("rust-arrayvec" ,rust-arrayvec-0.5)
4870 ("rust-backtrace" ,rust-backtrace-0.3)
e26d6cc7 4871 ("rust-bitstream-io" ,rust-bitstream-io-0.8)
a699f329 4872 ("rust-byteorder" ,rust-byteorder-1)
928bedca 4873 ("rust-cc" ,rust-cc-1)
e26d6cc7
EF
4874 ("rust-cfg-if" ,rust-cfg-if-0.1)
4875 ("rust-clap" ,rust-clap-2)
4fc95933 4876 ("rust-console" ,rust-console-0.11)
e26d6cc7 4877 ("rust-dav1d-sys" ,rust-dav1d-sys-0.3)
4fc95933
EF
4878 ("rust-fern" ,rust-fern-0.6)
4879 ("rust-image" ,rust-image-0.23)
e26d6cc7 4880 ("rust-interpolate-name" ,rust-interpolate-name-0.2)
4fc95933 4881 ("rust-itertools" ,rust-itertools-0.9)
e26d6cc7
EF
4882 ("rust-ivf" ,rust-ivf-0.1)
4883 ("rust-libc" ,rust-libc-0.2)
ca4b5588 4884 ("rust-log" ,rust-log-0.4)
928bedca 4885 ("rust-nasm-rs" ,rust-nasm-rs-0.2)
e26d6cc7
EF
4886 ("rust-noop-proc-macro" ,rust-noop-proc-macro-0.2)
4887 ("rust-num-derive" ,rust-num-derive-0.3)
4888 ("rust-num-traits" ,rust-num-traits-0.2)
4889 ("rust-paste" ,rust-paste-0.1)
ca4b5588 4890 ("rust-rand" ,rust-rand-0.7)
e26d6cc7
EF
4891 ("rust-rand-chacha" ,rust-rand-chacha-0.2)
4892 ("rust-rayon" ,rust-rayon-1)
4893 ("rust-rust-hawktracer" ,rust-rust-hawktracer-0.7)
928bedca 4894 ("rust-rustc-version" ,rust-rustc-version-0.2)
e26d6cc7 4895 ("rust-scan-fmt" ,rust-scan-fmt-0.2)
271161db 4896 ("rust-serde" ,rust-serde-1)
e26d6cc7
EF
4897 ("rust-signal-hook" ,rust-signal-hook-0.1)
4898 ("rust-simd-helpers" ,rust-simd-helpers-0.1)
262e40d0 4899 ("rust-thiserror" ,rust-thiserror-1)
e26d6cc7 4900 ("rust-toml" ,rust-toml-0.5)
ca64fc4d 4901 ("rust-vergen" ,rust-vergen-3)
928bedca 4902 ("rust-y4m" ,rust-y4m-0.5))
ca4b5588 4903 #:cargo-development-inputs
4fc95933
EF
4904 (("rust-assert-cmd" ,rust-assert-cmd-1)
4905 ("rust-criterion" ,rust-criterion-0.3)
e26d6cc7
EF
4906 ("rust-interpolate-name" ,rust-interpolate-name-0.2)
4907 ("rust-pretty-assertions" ,rust-pretty-assertions-0.6)
ca4b5588 4908 ("rust-rand" ,rust-rand-0.7)
e26d6cc7 4909 ("rust-rand-chacha" ,rust-rand-chacha-0.2)
ca4b5588
LF
4910 ("rust-semver" ,rust-semver-0.9))
4911 #:phases
4912 (modify-phases %standard-phases
4913 (replace 'build
4914 (lambda* (#:key outputs #:allow-other-keys)
4915 (let ((out (assoc-ref outputs "out")))
4916 (invoke "cargo" "cinstall" "--release"
4917 (string-append "--prefix=" out))))))))
4918 (native-inputs
4919 `(("cargo-c" ,rust-cargo-c)))
4920 (inputs
4921 `(("nasm" ,nasm)))
4922 (home-page "https://github.com/xiph/rav1e/")
4923 (synopsis "The fastest and safest AV1 encoder")
4924 (description
4925 "The fastest and safest AV1 encoder.")
4926 (license license:bsd-2)))
d4f86c8b
RW
4927
4928(define-public peek
4929 (package
4930 (name "peek")
4931 (version "1.5.1")
4932 (source
4933 (origin
4934 (method git-fetch)
4935 (uri (git-reference
b0e7b699 4936 (url "https://github.com/phw/peek")
d4f86c8b
RW
4937 (commit version)))
4938 (file-name (git-file-name name version))
4939 (sha256
4940 (base32 "1xwlfizga6hvjqq127py8vabaphsny928ar7mwqj9cyqfl6fx41x"))))
4941 (build-system meson-build-system)
4942 (arguments '(#:glib-or-gtk? #t))
4943 (inputs
4944 `(("gtk+" ,gtk+)))
4945 (native-inputs
4946 `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database
4947 ("gettext" ,gettext-minimal)
4948 ("glib:bin" ,glib "bin") ; for glib-compile-resources
4949 ("gtk+-bin" ,gtk+ "bin") ; For gtk-update-icon-cache
4950 ("pkg-config" ,pkg-config)
4951 ("vala" ,vala)))
4952 (home-page "https://github.com/phw/peek")
4953 (synopsis "Simple animated GIF screen recorder")
4954 (description
4955 "Peek makes it easy to create short screencasts of a screen area. It was
4956built for the specific use case of recording screen areas, e.g. for easily
4957showing UI features of your own apps or for showing a bug in bug reports.
4958With Peek, you simply place the Peek window over the area you want to record
4959and press \"Record\". Peek is optimized for generating animated GIFs, but you
4960can also directly record to WebM or MP4 if you prefer.")
4961 (license license:gpl3+)))
58a361fe
AM
4962
4963(define-public wf-recorder
4964 (package
4965 (name "wf-recorder")
4966 (version "0.2.1")
4967 (source (origin
4968 (method git-fetch)
4969 (uri (git-reference
b0e7b699 4970 (url "https://github.com/ammen99/wf-recorder")
58a361fe
AM
4971 (commit (string-append "v" version))))
4972 (file-name (git-file-name name version))
4973 (sha256
4974 (base32
4975 "1cw6kpcbl33wh95pvy32xrsrm6kkk1awccr3phyh885xjs3b3iim"))))
4976 (build-system meson-build-system)
4977 (native-inputs
4978 `(("pkg-config" ,pkg-config)))
4979 (inputs
4980 `(("ffmpeg" ,ffmpeg)
4981 ("pulseaudio" ,pulseaudio)
4982 ("wayland" ,wayland)
4983 ("wayland-protocols" ,wayland-protocols)
4984 ("libx264" ,libx264)))
4985 (home-page "https://github.com/ammen99/wf-recorder")
4986 (synopsis "Screen recorder for wlroots-based compositors")
4987 (description
4988 "@code{wf-recorder} is a utility program for screen recording of
4989wlroots-based compositors. More specifically, those that support
4990@code{wlr-screencopy-v1} and @code{xdg-output}.")
4991 (license license:expat)))
c941b312
LC
4992
4993(define-public guvcview
4994 (package
4995 (name "guvcview")
4996 (version "2.0.6")
4997 (source (origin
4998 (method url-fetch)
4999 (uri (string-append "mirror://sourceforge/guvcview/source/guvcview-"
5000 "src-" version ".tar.gz"))
5001 (sha256
5002 (base32
5003 "11byyfpkcik7wvf2qic77zjamfr2rhji97dpj1gy2fg1bvpiqf4m"))))
5004 (build-system gnu-build-system)
5005 (arguments
5006 ;; There are no tests and "make check" would fail on an intltool error.
5007 '(#:tests? #f))
5008 (native-inputs
5009 `(("pkg-config" ,pkg-config)
5010 ("intltool" ,intltool)))
5011 (inputs
5012 `(("gtk+" ,gtk+)
5013 ("eudev" ,eudev)
5014 ("libusb" ,libusb)
5015 ("v4l-utils" ,v4l-utils) ;libv4l2
5016 ("ffmpeg" ,ffmpeg) ;libavcodec, libavutil
5017 ("sdl2" ,sdl2)
5018 ("gsl" ,gsl)
5019 ("portaudio" ,portaudio)
5020 ("alsa-lib" ,alsa-lib)))
5021 (home-page "http://guvcview.sourceforge.net/")
5022 (synopsis "Control your webcam and capture videos and images")
5023 (description
5024 "GTK+ UVC Viewer (guvcview) is a graphical application to control a
5025webcam accessible with Video4Linux (V4L2) and to capture videos and images.
5026It provides control over precise settings of the webcam such as exposure,
5027brightness, contrast, and frame rate.")
5028
5029 ;; 'COPYING' is GPLv3 but source headers say GPLv2+.
5030 (license license:gpl2+)))
3123cdaf
EF
5031
5032(define-public get-iplayer
5033 (package
5034 (name "get-iplayer")
5035 (version "3.26")
5036 (source
5037 (origin
5038 (method git-fetch)
5039 (uri (git-reference
5040 (url "https://github.com/get-iplayer/get_iplayer")
5041 (commit (string-append "v" version))))
5042 (file-name (git-file-name name version))
5043 (sha256
5044 (base32
5045 "0lsz5hz1ia5j612540rb0f31y7j2k5gf7x5i43l8k06b90wi73d6"))))
5046 (build-system perl-build-system)
5047 (arguments
5048 `(#:tests? #f ; no tests
5049 #:phases
5050 (modify-phases %standard-phases
5051 (delete 'configure)
5052 (delete 'build)
5053 (replace 'install
5054 (lambda* (#:key outputs #:allow-other-keys)
5055 (let* ((out (assoc-ref outputs "out"))
5056 (bin (string-append out "/bin"))
5057 (man (string-append out "/share/man/man1")))
5058 (install-file "get_iplayer" bin)
5059 (install-file "get_iplayer.cgi" bin)
5060 (install-file "get_iplayer.1" man))
5061 #t))
5062 (add-after 'install 'wrap-program
5063 (lambda* (#:key inputs outputs #:allow-other-keys)
5064 (let* ((out (assoc-ref outputs "out"))
5065 (perllib (string-append out "/lib/perl5/site_perl/"
5066 ,(package-version perl))))
5067 (wrap-program (string-append out "/bin/get_iplayer")
5068 `("PERL5LIB" ":"
5069 prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
5070 (wrap-program (string-append out "/bin/get_iplayer.cgi")
5071 `("PERL5LIB" ":"
5072 prefix (,(string-append perllib ":" (getenv "PERL5LIB")))))
5073 #t))))))
5074 (inputs
5075 `(("perl-mojolicious" ,perl-mojolicious)
5076 ("perl-lwp-protocol-https" ,perl-lwp-protocol-https)
5077 ("perl-xml-libxml" ,perl-xml-libxml)))
5078 (home-page "https://github.com/get-iplayer/get_iplayer")
5079 (synopsis "Download or stream available BBC iPlayer TV and radio programmes")
5080 (description "@code{get_iplayer} lists, searches and records BBC iPlayer
5081TV/Radio, BBC Podcast programmes. Other third-party plugins may be available.
5082@code{get_iplayer} has three modes: recording a complete programme for later
5083playback, streaming a programme directly to a playback application, such as
5084mplayer; and as a @dfn{Personal Video Recorder} (PVR), subscribing to search
5085terms and recording programmes automatically. It can also stream or record live
5086BBC iPlayer output.")
5087 (license license:gpl3+)))
68c858de
PN
5088
5089(define-public ogmtools
5090 (package
5091 (name "ogmtools")
5092 (version "1.5")
5093 (source (origin
5094 (method url-fetch)
5095 (uri (string-append "https://www.bunkus.org/videotools/ogmtools/ogmtools-"
5096 version
5097 ".tar.bz2"))
5098 (sha256
5099 (base32
5100 "1spx81p5wf59ksl3r3gvf78d77sh7gj8a6lw773iv67bphfivmn8"))))
5101 (build-system gnu-build-system)
5102 (inputs
5103 `(("libvorbis" ,libvorbis)
5104 ("libdvdread" ,libdvdread)))
5105 (synopsis "Information, extraction or creation for OGG media streams")
5106 (description
5107 "These tools allow information about (@code{ogminfo}) or extraction from
5108\(@code{ogmdemux}) or creation of (@code{ogmmerge}) OGG media streams. It
5109includes @code{dvdxchap} tool for extracting chapter information from DVD.")
5110 (license license:gpl2)
5111 (home-page "https://www.bunkus.org/videotools/ogmtools/")))
c7ed031d
LF
5112
5113(define-public libcaption
5114 (package
5115 (name "libcaption")
5116 (version "0.7")
5117 (source (origin
5118 (method git-fetch)
5119 (uri (git-reference
5120 (url "https://github.com/szatmary/libcaption")
5121 (commit version)))
5122 (file-name (git-file-name name version))
5123 (sha256
5124 (base32
5125 "16mhw8wpl7wdjj4n7rd1c294p1r8r322plj7z91crla5aah726rq"))))
5126 (build-system cmake-build-system)
5127 (arguments
5128 `(#:tests? #f ; Cannot figure out how to run the unit tests
5129 #:configure-flags '("-DENABLE_RE2C=ON")))
5130 (native-inputs
5131 `(("re2c" ,re2c)))
5132 (synopsis "CEA608 / CEA708 closed-caption codec")
5133 (description "Libcaption creates and parses closed-caption data,
5134providing an encoder / decoder for the EIA608 and CEA708 closed-caption
5135standards.
5136
5137608 support is currently limited to encoding and decoding the necessary control
5138and preamble codes as well as support for the Basic North American, Special
5139North American and Extended Western European character sets.
5140
5141708 support is limited to encoding the 608 data in NTSC field 1 user data type
5142structure.
5143
5144In addition, utility functions to create h.264 SEI (Supplementary enhancement
5145information) NALUs (Network Abstraction Layer Unit) for inclusion into an h.264
5146elementary stream are provided.")
5147 (home-page "https://github.com/szatmary/libcaption")
5148 (license license:expat)))