gnu: calibre: Wrap QTWEBENGINEPROCESS_PATH.
[jackhill/guix/guix.git] / gnu / packages / gstreamer.scm
CommitLineData
22885fb8 1;;; GNU Guix --- Functional package management for GNU
71a4b2ab 2;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
ce4a347f 3;;; Copyright © 2014 John Darrington <jmd@gnu.org>
b3585d9b 4;;; Copyright © 2015, 2016 Sou Bunnbu <iyzsong@gmail.com>
0392030d 5;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
0d3ecf77 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
399c5faf 7;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
51895712 8;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
d22d7468 9;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
cc1b2b3e 10;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com>
64fc4f37 11;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
22885fb8
AE
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28(define-module (gnu packages gstreamer)
5cde47ec 29 #:use-module ((guix licenses) #:prefix license:)
22885fb8
AE
30 #:use-module (guix packages)
31 #:use-module (guix download)
702f243a 32 #:use-module (guix git-download)
2aa73609 33 #:use-module (guix build-system cmake)
22885fb8 34 #:use-module (guix build-system gnu)
45b01f2e 35 #:use-module (guix build-system meson)
201cfb81 36 #:use-module (guix utils)
f506ed92 37 #:use-module (gnu packages)
40f6f76e 38 #:use-module (gnu packages audio)
702f243a
RG
39 #:use-module (gnu packages autotools)
40 #:use-module (gnu packages base)
22885fb8 41 #:use-module (gnu packages bison)
e9a0b5e7 42 #:use-module (gnu packages cdrom)
db12dac0 43 #:use-module (gnu packages curl)
1fcf67f4 44 #:use-module (gnu packages compression)
84b63357
RG
45 #:use-module (gnu packages docbook)
46 #:use-module (gnu packages documentation)
47 #:use-module (gnu packages elf)
22885fb8 48 #:use-module (gnu packages flex)
db12dac0 49 #:use-module (gnu packages freedesktop)
702f243a 50 #:use-module (gnu packages gettext)
db12dac0 51 #:use-module (gnu packages gl)
22885fb8 52 #:use-module (gnu packages glib)
40f6f76e 53 #:use-module (gnu packages gnome)
db12dac0
SB
54 #:use-module (gnu packages gnupg)
55 #:use-module (gnu packages graphics)
7508378d 56 #:use-module (gnu packages graphviz)
1fcf67f4 57 #:use-module (gnu packages gtk)
a4d89136 58 #:use-module (gnu packages image)
7508378d
RG
59 #:use-module (gnu packages iso-codes)
60 #:use-module (gnu packages java)
61 #:use-module (gnu packages libunwind)
db12dac0 62 #:use-module (gnu packages libusb)
1fcf67f4 63 #:use-module (gnu packages linux)
40f6f76e 64 #:use-module (gnu packages mp3)
51895712 65 #:use-module (gnu packages ncurses)
702f243a 66 #:use-module (gnu packages networking)
2aa73609 67 #:use-module (gnu packages ocr)
22885fb8 68 #:use-module (gnu packages perl)
a4d89136 69 #:use-module (gnu packages pulseaudio)
db12dac0
SB
70 #:use-module (gnu packages qt)
71 #:use-module (gnu packages rdf)
55cc7dcd 72 #:use-module (gnu packages sdl)
702f243a 73 #:use-module (gnu packages shells)
04a20db2 74 #:use-module (gnu packages video)
1fcf67f4 75 #:use-module (gnu packages xorg)
aa4557a2 76 #:use-module (gnu packages xdisorg)
1fcf67f4 77 #:use-module (gnu packages xiph)
22885fb8 78 #:use-module (gnu packages pkg-config)
aa4557a2
RG
79 #:use-module (gnu packages ruby)
80 #:use-module (gnu packages speech)
f506ed92 81 #:use-module (gnu packages python)
db12dac0
SB
82 #:use-module (gnu packages ssh)
83 #:use-module (gnu packages telephony)
84 #:use-module (gnu packages tls)
85 #:use-module (gnu packages version-control)
09b87aff 86 #:use-module (gnu packages assembly)
f506ed92 87 #:use-module (gnu packages xml))
22885fb8 88
7508378d
RG
89(define-public openni2
90 (package
91 (name "openni2")
92 (version "2.2.0")
93 (source
94 (origin
95 (method git-fetch)
96 (uri
97 (git-reference
98 (url "https://github.com/occipital/OpenNI2.git")
99 (commit (string-append "v" version "-debian"))))
100 (file-name (git-file-name name version))
101 (sha256
102 (base32 "0mfnyzpq53wnzgjfx91xcbx0nrl0lp1vrk1rk20a3gb3kshsr675"))))
103 (build-system gnu-build-system)
104 (arguments
105 `(#:tests? #f ; No target
106 #:phases
107 (modify-phases %standard-phases
108 (delete 'configure))))
109 (native-inputs
110 `(("graphviz" ,graphviz)
111 ("doxygen" ,doxygen)
112 ("openjdk" ,openjdk14)
113 ("openjdk:jdk" ,openjdk14 "jdk")
114 ("python" ,python-wrapper)))
115 (inputs
116 `(("freeglut3" ,freeglut)
117 ("libudev" ,eudev)
118 ("libusb" ,libusb)))
119 (synopsis "Framework for sensor-based 'Natural Interaction")
120 (description "OpenNI is a framework for getting data to support
121'Natural Interaction', i.e. skeleton tracking, gesture tracking, and similar
122ways of getting data from humans. It provides the interface for physical devices
123and for middleware components.")
124 (home-page "https://structure.io/openni")
125 (license license:asl2.0)))
126
84b63357
RG
127(define-public libdc1394
128 (package
129 (name "libdc1394")
130 (version "2.2.6")
131 (source (origin
132 (method url-fetch)
133 (uri
134 (string-append "https://sourceforge.net/projects/" name "/files/"
135 name "-2" "/" version "/" name "-" version ".tar.gz"))
136 (sha256
137 (base32 "1v8gq54n1pg8izn7s15yylwjf8r1l1dmzbm2yvf6pv2fmb4mz41b"))))
138 (build-system gnu-build-system)
139 (native-inputs
140 `(("doxygen" ,doxygen)
141 ("perl" ,perl)
142 ("pkg-config" ,pkg-config)))
143 (inputs
144 `(("glu" ,glu)
145 ("libraw1394" ,libraw1394)
146 ("libusb" ,libusb)
147 ("libxv" ,libxv)
148 ("linux-headers" ,linux-libre-headers)
149 ("mesa" ,mesa)
150 ("sdl" ,sdl)
151 ("v4l" ,v4l-utils)))
152 (synopsis "1394-Based Digital Camera Control Library")
153 (description "LibDC1394 is a library that provides functionality to control
154any camera that conforms to the 1394-Based Digital Camera Specification written
155by the 1394 Trade Association. It utilizes the lowlevel functionality provided
156by libraw1394 to communicate with the camera. It also uses the video1394 kernel
157module for the DMA capture of the video flow.")
158 (home-page "https://damien.douxchamps.net/ieee1394/libdc1394/")
159 (license license:lgpl2.0+)))
160
2aa73609
RG
161(define-public ccextractor
162 (package
163 (name "ccextractor")
164 (version "0.88")
165 (source
166 (origin
167 (method git-fetch)
168 (uri
169 (git-reference
170 (url "https://github.com/CCExtractor/ccextractor.git")
171 (commit (string-append "v" version))))
172 (file-name (git-file-name name version))
173 (sha256
174 (base32 "1sya45hvv4d46bk7541yimmafgvgyhkpsvwfz9kv6pm4yi1lz6nb"))))
175 (build-system cmake-build-system)
176 (arguments
177 `(#:tests? #f ; No target
178 #:configure-flags
179 (list
180 "-DWITH_FFMPEG=ON"
181 "-DWITH_OCR=ON"
182 "-DWITH_SHARING=ON"
183 "-DWITH_HARDSUBX=ON")
184 #:phases
185 (modify-phases %standard-phases
186 ;; The package is in a sub-dir of this repo.
187 (add-after 'unpack 'chdir
188 (lambda _
189 (chdir "src")
190 #t))
191 (add-after 'chdir 'fix-build-errors
192 (lambda _
193 (substitute* "CMakeLists.txt"
194 (("libnanomsg")
195 "nanomsg"))
196 #t)))))
197 (native-inputs
198 `(("perl" ,perl)
199 ("pkg-config" ,pkg-config)
200 ("python" ,python-wrapper)))
201 (inputs
202 `(("ffmeg" ,ffmpeg-3.4)
203 ("nanomsg" ,nanomsg)
a9e961b0 204 ("leptonica" ,leptonica)
2aa73609
RG
205 ("ocr" ,tesseract-ocr)
206 ("zlib" ,zlib)))
207 (synopsis "Closed Caption Extractor")
208 (description "CCExtractor is a tool that analyzes video files and produces
209independent subtitle files from the closed captions data. It is portable, small,
210and very fast.")
211 (home-page "https://www.ccextractor.org/")
212 (license license:gpl2+)))
213
55cc7dcd
RG
214(define-public libvisual
215 (package
216 (name "libvisual")
217 (version "0.4.0")
218 (source
219 (origin
220 (method git-fetch)
221 (uri
222 (git-reference
223 (url "https://github.com/Libvisual/libvisual.git")
224 (commit (string-append name "-" version))))
225 (file-name (git-file-name name version))
226 (sha256
227 (base32 "02xwakwkqjsznc03pjlb6hcv1li1gw3r8xvyswqsm4msix5xq18a"))))
228 (build-system gnu-build-system)
229 (arguments
230 `(#:phases
231 (modify-phases %standard-phases
232 ;; The package is in a sub-dir of this repo.
233 (add-after 'unpack 'chdir
234 (lambda _
235 (chdir "libvisual")
236 #t)))))
237 (native-inputs
238 `(("gettext" ,gettext-minimal)
239 ("libintl" ,intltool)
240 ("libtool" ,libtool)
241 ("pkg-config" ,pkg-config)))
242 (inputs
243 `(("sdl" ,sdl)))
244 (native-search-paths
245 (list
246 (search-path-specification
247 (variable "LIBVISUAL_PLUGINS_BASE_DIR")
248 (files '("lib/libvisual-0.4")))))
249 ;; To load libvisual-plugins.
250 (search-paths native-search-paths)
251 (synopsis "Audio visualisation library")
252 (description "Libvisual is a library that acts as a middle layer between
253applications that want audio visualisation and audio visualisation plugins.")
254 (home-page "http://libvisual.org/")
255 (license
256 (list
257 ;; Libraries.
258 license:lgpl2.1+
259 ;; Examples and Tests.
260 license:gpl2+))))
261
d1e1a93e
RG
262(define-public libvisual-plugins
263 (package
264 (name "libvisual-plugins")
265 (version "0.4.0")
266 (source
267 (origin
268 (method git-fetch)
269 (uri
270 (git-reference
271 (url "https://github.com/Libvisual/libvisual.git")
272 (commit (string-append name "-" version))))
273 (file-name (git-file-name name version))
274 (sha256
275 (base32 "02xwakwkqjsznc03pjlb6hcv1li1gw3r8xvyswqsm4msix5xq18a"))))
276 (build-system gnu-build-system)
277 (arguments
278 `(#:configure-flags
279 (list
280 "--disable-gstreamer-plugin"
281 "--disable-corona"
282 "--disable-gforce"
283 (string-append "--with-plugins-base-dir=" (assoc-ref %outputs "out")
284 "/lib/libvisual-0.4"))
285 #:phases
286 (modify-phases %standard-phases
287 ;; The package is in a sub-dir of this repo.
288 (add-after 'unpack 'chdir
289 (lambda _
290 (chdir "libvisual-plugins")
291 #t)))))
292 (native-inputs
293 `(("bison" ,bison)
294 ("flex" ,flex)
295 ("gettext" ,gettext-minimal)
296 ("libintl" ,intltool)
297 ("libtool" ,libtool)
298 ("pkg-config" ,pkg-config)))
299 (inputs
300 `(("alsa-lib" ,alsa-lib)
301 ("esound" ,esound)
302 ("gdk-pixbuf" ,gdk-pixbuf+svg)
303 ("gtk+" ,gtk+-2)
304 ("jack" ,jack-2)
305 ("libx11" ,libx11)
306 ("libxext" ,libxext)))
307 (propagated-inputs
308 `(("libvisual" ,libvisual)))
309 (synopsis "Audio visualisation library")
310 (description "Libvisual is a library that acts as a middle layer between
311applications that want audio visualisation and audio visualisation plugins.")
312 (home-page "http://libvisual.org/")
313 (license license:gpl2+)))
314
702f243a
RG
315(define-public esound
316 (package
317 (name "esound")
318 (version "0.2.41")
319 (source
320 (origin
321 (method git-fetch)
322 (uri
323 (git-reference
324 (url "https://gitlab.gnome.org/Archive/esound.git")
325 (commit "ESOUND_0_2_41")))
326 (file-name (git-file-name name version))
327 (sha256
328 (base32 "141jg70fim276i8k2kyypm84gy89i1k9mm4yf68mfwnybvjw1d6n"))))
329 (build-system gnu-build-system)
330 (native-inputs
331 `(("autoconf" ,autoconf)
332 ("automake" ,automake)
333 ("gettext" ,gettext-minimal)
334 ("gnome-common" ,gnome-common)
335 ("libtool" ,libtool)
336 ("pkg-config" ,pkg-config)
337 ("tcsh" ,tcsh) ; for the tests
338 ("which" ,which)))
339 (inputs
340 `(("alsa-lib" ,alsa-lib)
341 ("pcaudiolib" ,pcaudiolib)
342 ("tcp-wrappers" ,tcp-wrappers)))
343 (propagated-inputs
344 `(("audiofile" ,audiofile)))
345 (synopsis "Enlightened Sound Daemon")
346 (description "The Enlightened Sound Daemon mixes several audio streams for
347playback by a single audio device. You can also pre-load samples, and play them
348back without having to send all the data for the sound. Network transparency is
349also built in, so you can play sounds on one machine, and listen to them on
350another.")
351 (home-page "https://web.archive.org/web/20160528230227/
352http://www.tux.org/~ricdude/overview.html")
353 (license
354 (list
355 ;; Libraries.
356 license:lgpl2.0+
357 ;; Others.
358 license:gpl2+))))
359
195857b0
SB
360(define-public orc
361 (package
362 (name "orc")
99732a8f 363 (version "0.4.31")
195857b0
SB
364 (source (origin
365 (method url-fetch)
5cc3096c 366 (uri (string-append "https://gstreamer.freedesktop.org/data/src/"
195857b0
SB
367 "orc/orc-" version ".tar.xz"))
368 (sha256
369 (base32
99732a8f 370 "0xb0c7q3xv1ldmz5ipybazb01gy3cijj8622dcx7rbm9lq85zax0"))))
45b01f2e 371 (build-system meson-build-system)
462b5676
EF
372 (arguments
373 `(#:phases
374 (modify-phases %standard-phases
45b01f2e 375 (add-after 'unpack 'disable-faulty-test
462b5676
EF
376 (lambda _
377 ;; XXX Disable the 'test-limits' and 'exec_opcodes_sys'
378 ;; tests, which fail on some machines. See:
379 ;; https://bugzilla.gnome.org/show_bug.cgi?id=735273
380 (substitute* '("testsuite/test-limits.c"
381 "testsuite/exec_opcodes_sys.c")
382 (("if \\(error\\) return 1;")
0392030d
MW
383 "if (error) return 77;"))
384 #t)))))
45b01f2e
MB
385 (native-inputs
386 `(("gtk-doc" ,gtk-doc)))
57e7d748 387 (home-page "https://gstreamer.freedesktop.org/modules/orc.html")
195857b0
SB
388 (synopsis "Oil runtime compiler")
389 (description
390 "Orc is a just-in-time compiler implemented as a library and set of
391associated tools for compiling and executing simple programs that operate on
392arrays of data.")
393 ;; The source code implementing the Marsenne Twister algorithm is licensed
394 ;; under the 3-clause BSD license, the rest is under 2-clause BSD license.
5cde47ec 395 (license (list license:bsd-2 license:bsd-3))))
195857b0 396
a64eeaf7
MB
397;; Increase the test timeouts to accommodate slow or busy machines.
398(define %common-gstreamer-phases
399 '((add-after 'unpack 'increase-test-timeout
400 (lambda _
401 (substitute* "tests/check/meson.build"
402 (("'CK_DEFAULT_TIMEOUT', '20'")
403 "'CK_DEFAULT_TIMEOUT', '60'")
404 (("timeout ?: 3 \\* 60")
405 "timeout: 9 * 60"))
406 #t))))
407
22885fb8
AE
408(define-public gstreamer
409 (package
410 (name "gstreamer")
94249ba8 411 (version "1.16.2")
22885fb8
AE
412 (source
413 (origin
414 (method url-fetch)
a124bbd2 415 (uri (string-append
5cc3096c 416 "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
a124bbd2 417 version ".tar.xz"))
22885fb8
AE
418 (sha256
419 (base32
94249ba8 420 "0kp93622y29pck8asvil1fmzf55s2gx76wv475a6izc3cwj49w73"))))
9792adaa 421 (build-system meson-build-system)
2fb016b8
SB
422 (outputs '("out" "doc"))
423 (arguments
0025a1d3 424 `(#:phases
9792adaa 425 (modify-phases %standard-phases
a64eeaf7 426 ,@%common-gstreamer-phases
0025a1d3
MB
427 ;; FIXME: Since switching to the meson-build-system, two tests
428 ;; started failing on i686. See
429 ;; <https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/499>.
430 ,@(if (string-prefix? "i686" (or (%current-target-system)
431 (%current-system)))
432 `((add-after 'unpack 'disable-some-tests
433 (lambda _
434 (substitute* "tests/check/gst/gstsystemclock.c"
435 (("tcase_add_test \\(tc_chain, test_stress_cleanup_unschedule.*")
436 "")
437 (("tcase_add_test \\(tc_chain, test_stress_reschedule.*")
438 ""))
439 #t)))
440 '())
9792adaa
MB
441 (add-after 'install 'move-docs
442 (lambda* (#:key outputs #:allow-other-keys)
443 (let ((out (assoc-ref outputs "out"))
444 (doc (assoc-ref outputs "doc")))
445 (mkdir-p (string-append doc "/share"))
446 (copy-recursively (string-append out "/share/gtk-doc")
447 (string-append doc "/share/gtk-doc"))
448 (delete-file-recursively (string-append out "/share/gtk-doc"))
449 #t))))))
e244dc6d 450 (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
c4c4cc05 451 (native-inputs
22885fb8
AE
452 `(("bison" ,bison)
453 ("flex" ,flex)
426adbe8 454 ("glib" ,glib "bin")
0f998a14 455 ("gobject-introspection" ,gobject-introspection)
9792adaa 456 ("gtk-doc" ,gtk-doc)
22885fb8
AE
457 ("perl" ,perl)
458 ("pkg-config" ,pkg-config)
144f9f25 459 ("python-wrapper" ,python-wrapper)))
96693d1d
SB
460 (native-search-paths
461 (list (search-path-specification
462 (variable "GST_PLUGIN_SYSTEM_PATH")
463 (files '("lib/gstreamer-1.0")))))
5cc3096c 464 (home-page "https://gstreamer.freedesktop.org/")
93bfe3e2 465 (synopsis "Multimedia library")
22885fb8
AE
466 (description
467 "GStreamer is a library for constructing graphs of media-handling
468components. The applications it supports range from simple Ogg/Vorbis
e881752c
AK
469playback, audio/video streaming to complex audio mixing and video
470non-linear editing.
22885fb8
AE
471
472Applications can take advantage of advances in codec and filter technology
473transparently. Developers can add new codecs and filters by writing a
474simple plugin with a clean, generic interface.
475
476This package provides the core library and elements.")
5cde47ec 477 (license license:lgpl2.0+)))
477c91ce
AE
478
479(define-public gst-plugins-base
480 (package
481 (name "gst-plugins-base")
94249ba8 482 (version "1.16.2")
477c91ce
AE
483 (source
484 (origin
485 (method url-fetch)
8cf39f7f 486 (uri (string-append "https://gstreamer.freedesktop.org/src/" name "/"
a124bbd2 487 name "-" version ".tar.xz"))
477c91ce
AE
488 (sha256
489 (base32
94249ba8 490 "0sl1hxlyq46r02k7z70v09vx1gi4rcypqmzra9jid93lzvi76gmi"))))
738923b6 491 (build-system meson-build-system)
34ff76fd 492 (propagated-inputs
a53f4311
MB
493 `(("glib" ,glib) ;required by gstreamer-sdp-1.0.pc
494 ("gstreamer" ,gstreamer) ;required by gstreamer-plugins-base-1.0.pc
cc1b2b3e
MB
495
496 ;; XXX: Do not enable Orc optimizations on ARM systems because
497 ;; it leads to two test failures.
498 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/683
499 ,@(if (string-prefix? "arm" (or (%current-target-system)
500 (%current-system)))
501 '()
502 `(("orc" ,orc))))) ;required by gstreamer-audio-1.0.pc
477c91ce 503 (inputs
e9a0b5e7 504 `(("cdparanoia" ,cdparanoia)
1fcf67f4
JD
505 ("pango" ,pango)
506 ("libogg" ,libogg)
507 ("libtheora" ,libtheora)
508 ("libvorbis" ,libvorbis)
509 ("libx11" ,libx11)
510 ("zlib" ,zlib)
511 ("libXext" ,libxext)
512 ("libxv" ,libxv)
399c5faf
LF
513 ("alsa-lib" ,alsa-lib)
514 ;; XXX Don't build with opus on 32-bit systems:
515 ;; <https://bugs.gnu.org/32360>
516 ,@(if (target-64bit?)
517 `(("opus" ,opus))
518 '())))
c4c4cc05
JD
519 (native-inputs
520 `(("pkg-config" ,pkg-config)
a53f4311 521 ("glib:bin" ,glib "bin")
4ec48644 522 ("gobject-introspection" ,gobject-introspection)
c4c4cc05 523 ("python-wrapper" ,python-wrapper)))
477c91ce 524 (arguments
a64eeaf7 525 `(#:configure-flags '("-Dgl=disabled"
738923b6
MB
526 ;; FIXME: Documentation fails to build without
527 ;; enabling GL above, which causes other problems.
528 "-Ddoc=false")
e9a82129 529 #:phases
cda6aaf0 530 (modify-phases %standard-phases
a64eeaf7 531 ,@%common-gstreamer-phases
cda6aaf0
EF
532 (add-before 'configure 'patch
533 (lambda _
534 (substitute* "tests/check/libs/pbutils.c"
de0e591a
EF
535 (("/bin/sh") (which "sh")))
536 #t)))))
70e863e5 537 (home-page "https://gstreamer.freedesktop.org/")
477c91ce 538 (synopsis
1fcf67f4
JD
539 "Plugins for the GStreamer multimedia library")
540 (description "This package provides an essential exemplary set of plug-ins
541for the GStreamer multimedia library.")
5cde47ec 542 (license license:lgpl2.0+)))
477c91ce 543
1fcf67f4
JD
544(define-public gst-plugins-good
545 (package
546 (name "gst-plugins-good")
94249ba8 547 (version "1.16.2")
1fcf67f4
JD
548 (source
549 (origin
798441b6
RG
550 (method url-fetch)
551 (uri
552 (string-append
553 "https://gstreamer.freedesktop.org/src/" name "/"
554 name "-" version ".tar.xz"))
555 (sha256
556 (base32 "068k3cbv1yf3gbllfdzqsg263kzwh21y8dpwr0wvgh15vapkpfs0"))))
321f47c2 557 (build-system meson-build-system)
798441b6
RG
558 (arguments
559 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
560 #:phases
561 (modify-phases %standard-phases
562 (add-after 'unpack 'patch-docbook-xml
563 (lambda* (#:key inputs #:allow-other-keys)
564 (with-directory-excursion "docs"
565 (substitute* "plugins/gst-plugins-good-plugins-docs.sgml"
566 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
567 (string-append (assoc-ref inputs "docbook-xml")
568 "/xml/dtd/docbook/"))))
569 #t))
570 (add-before
571 'check 'pre-check
572 (lambda _
573 ;; Tests require a running X server.
574 (system "Xvfb :1 +extension GLX &")
575 (setenv "DISPLAY" ":1")
576 ;; Tests write to $HOME.
577 (setenv "HOME" (getcwd))
578 ;; Tests look for $XDG_RUNTIME_DIR.
579 (setenv "XDG_RUNTIME_DIR" (getcwd))
580 ;; For missing '/etc/machine-id'.
581 (setenv "DBUS_FATAL_WARNINGS" "0")
582 #t)))))
583 (native-inputs
584 `(("docbook-xml" ,docbook-xml-4.1.2)
585 ("gettext" ,gettext-minimal)
586 ("glib:bin" ,glib "bin")
587 ("gobject-introspection" ,gobject-introspection)
588 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
589 ("perl" ,perl)
590 ("pkg-config" ,pkg-config)
591 ("python-wrapper" ,python-wrapper)
592 ("xmllint" ,libxml2)
593 ("xorg-server" ,xorg-server-for-tests)))
1fcf67f4 594 (inputs
40f6f76e 595 `(("aalib" ,aalib)
798441b6 596 ("bzip2" ,bzip2)
a4d89136 597 ("cairo" ,cairo)
a4d89136 598 ("flac" ,flac)
798441b6
RG
599 ("gdk-pixbuf" ,gdk-pixbuf+svg)
600 ("glib" ,glib)
601 ("glib-networking" ,glib-networking)
602 ("glu" ,glu)
b3aba78b 603 ("gtk+" ,gtk+)
798441b6 604 ("jack" ,jack-2)
02d5ed4a 605 ("lame" ,lame)
40f6f76e
SB
606 ("libavc1394" ,libavc1394)
607 ("libcaca" ,libcaca)
608 ("libdv" ,libdv)
798441b6 609 ("libgudev" ,libgudev)
40f6f76e 610 ("libiec61883" ,libiec61883)
4bd428a7 611 ("libjpeg" ,libjpeg-turbo)
40f6f76e
SB
612 ("libpng" ,libpng)
613 ("libshout" ,libshout)
614 ("libsoup" ,libsoup)
615 ("libvpx" ,libvpx)
798441b6
RG
616 ("libx11" ,libx11)
617 ("libxdamage" ,libxdamage)
618 ("libxfixes" ,libxfixes)
619 ("libxext" ,libxext)
620 ("libxshm" ,libxshmfence)
621 ("mesa" ,mesa)
02d5ed4a 622 ("mpg123" ,mpg123)
40f6f76e 623 ("orc" ,orc)
a4d89136 624 ("pulseaudio" ,pulseaudio)
40f6f76e
SB
625 ("speex" ,speex)
626 ("taglib" ,taglib)
02d5ed4a 627 ("twolame" ,twolame)
798441b6
RG
628 ("v4l-utils" ,v4l-utils)
629 ("wavpack" ,wavpack)
630 ("zlib" ,zlib)))
631 (propagated-inputs
632 `(("gstreamer" ,gstreamer)
633 ("gst-plugins-base" ,gst-plugins-base)))
634 (synopsis "GStreamer plugins and helper libraries")
635 (description "GStreamer-Plugins-Good is a collection of plug-ins you'd want
636to have right next to you on the battlefield. Shooting sharp and making no
637mistakes, these plug-ins have it all: good looks, good code, and good
638licensing. Documented and dressed up in tests. If you're looking for a role
639model to base your own plug-in on, here it is.")
d1ceedf8 640 (home-page "https://gstreamer.freedesktop.org/")
5cde47ec 641 (license license:lgpl2.0+)))
4e9b38eb 642
db12dac0
SB
643(define-public gst-plugins-bad
644 (package
645 (name "gst-plugins-bad")
94249ba8 646 (version "1.16.2")
db12dac0
SB
647 (source (origin
648 (method url-fetch)
649 (uri (string-append "https://gstreamer.freedesktop.org/src/"
650 name "/" name "-" version ".tar.xz"))
651 (sha256
652 (base32
94249ba8 653 "0x0y0hm0ga3zqi5q4090hw5sjh59y1ry9ak16qsaascm72i7mjzi"))))
2dc277dd 654 (build-system meson-build-system)
db12dac0 655 (arguments
e003b759 656 `(#:phases
2dc277dd 657 (modify-phases %standard-phases
a64eeaf7 658 ,@%common-gstreamer-phases
e003b759
MB
659 ,@(if (string-prefix? "arm" (or (%current-target-system)
660 (%current-system)))
661 ;; Disable test that fails on ARMv7.
662 ;; https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1188
663 `((add-after 'unpack 'disable-asfmux-test
664 (lambda _
665 (substitute* "tests/check/meson.build"
666 (("\\[\\['elements/asfmux\\.c'\\]\\],")
667 ""))
668 #t)))
669 '())
2dc277dd
MB
670 (add-after 'unpack 'disable-failing-test
671 (lambda _
672 ;; FIXME: Why is this failing.
673 (substitute* "tests/check/meson.build"
674 ((".*elements/dash_mpd\\.c.*")
675 ""))
676 #t)))))
db12dac0
SB
677 (propagated-inputs
678 `(("gst-plugins-base" ,gst-plugins-base)))
679 (native-inputs
680 `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
681 ("gobject-introspection" ,gobject-introspection)
2dc277dd
MB
682 ;; TODO: Enable documentation for 1.18.
683 ;;("gtk-doc" ,gtk-doc)
db12dac0
SB
684 ("pkg-config" ,pkg-config)
685 ("python" ,python)))
686 (inputs
687 ;; XXX: The following dependencies are missing:
688 ;; vo-amrwbenc, vo-aacenc, bs2b, chromaprint, directfb, daala, libdts,
689 ;; faac, flite, libgsm, libde265, libmms, libmimic, mjpegtools,
690 ;; mpeg2enc, libofa, opencv, openh264, openni2, libtimemmgr, wildmidi,
e3cb00d2 691 ;; openspc, gme, sbc, schroedinger, zbar, librtmp, spandsp
db12dac0
SB
692 `(("bluez" ,bluez)
693 ("curl" ,curl)
694 ("faad2" ,faad2)
695 ("fluidsynth" ,fluidsynth)
696 ("gtk+" ,gtk+)
697 ("ladspa" ,ladspa)
698 ("libass" ,libass)
699 ("libdvdnav" ,libdvdnav)
700 ("libdvdread" ,libdvdread)
701 ("libgcrypt" ,libgcrypt)
702 ("libgudev" ,libgudev)
703 ("libkate" ,libkate)
704 ("libmodplug" ,libmodplug)
705 ("librsvg" ,librsvg)
706 ("libsndfile" ,libsndfile)
707 ("libsrtp" ,libsrtp)
708 ("libssh2" ,libssh2)
709 ("libusb" ,libusb)
710 ("libvdpau" ,libvdpau)
711 ("libwebp" ,libwebp)
712 ("libxml2" ,libxml2)
713 ("lrdf" ,lrdf)
714 ("mesa" ,mesa)
db12dac0
SB
715 ("neon" ,neon)
716 ("openal" ,openal)
717 ("openexr" ,openexr)
718 ("openjpeg" ,openjpeg)
719 ("openssl" ,openssl)
720 ("opus" ,opus)
721 ("orc" ,orc)
6779b932
EF
722 ;("qtbase" ,qtbase)
723 ;("qtdeclarative" ,qtdeclarative)
724 ;("qtx11extras" ,qtx11extras)
db12dac0 725 ("soundtouch" ,soundtouch)
e3cb00d2 726 ("x265" ,x265)
94b179c6 727 ("wayland" ,wayland)))
0cee33ac 728 (home-page "https://gstreamer.freedesktop.org/")
db12dac0
SB
729 (synopsis "Plugins for the GStreamer multimedia library")
730 (description
731 "GStreamer Bad Plug-ins is a set of plug-ins whose quality aren't up to
732par compared to the rest.")
5cde47ec 733 (license license:lgpl2.0+)))
db12dac0 734
92f1b4a5
MW
735(define-public gst-plugins-ugly
736 (package
737 (name "gst-plugins-ugly")
94249ba8 738 (version "1.16.2")
92f1b4a5
MW
739 (source
740 (origin
741 (method url-fetch)
f65cfc6d
RG
742 (uri
743 (string-append "https://gstreamer.freedesktop.org/src/"
744 name "/" name "-" version ".tar.xz"))
92f1b4a5 745 (sha256
f65cfc6d 746 (base32 "1jpvc32x6q01zjkfgh6gmq6aaikiyfwwnhj7bmvn52syhrdl202m"))))
1bf1e32b 747 (build-system meson-build-system)
a64eeaf7 748 (arguments
f65cfc6d
RG
749 `(#:glib-or-gtk? #t ; To wrap binaries and/or compile schemas
750 #:phases
751 (modify-phases %standard-phases
752 (add-after 'unpack 'patch-docbook-xml
753 (lambda* (#:key inputs #:allow-other-keys)
754 (with-directory-excursion "docs"
755 (substitute* "plugins/gst-plugins-ugly-plugins-docs.sgml"
756 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
757 (string-append (assoc-ref inputs "docbook-xml")
758 "/xml/dtd/docbook/"))))
759 #t))
760 (add-before
761 'check 'pre-check
762 (lambda _
763 ;; Tests require a running X server.
764 (system "Xvfb :1 +extension GLX &")
765 (setenv "DISPLAY" ":1")
766 ;; Tests write to $HOME.
767 (setenv "HOME" (getcwd))
768 ;; Tests look for $XDG_RUNTIME_DIR.
769 (setenv "XDG_RUNTIME_DIR" (getcwd))
770 ;; For missing '/etc/machine-id'.
771 (setenv "DBUS_FATAL_WARNINGS" "0")
772 #t)))))
773 (native-inputs
774 `(("docbook-xml" ,docbook-xml-4.1.2)
775 ("gettext" ,gettext-minimal)
776 ("glib:bin" ,glib "bin")
777 ("gobject-introspection" ,gobject-introspection)
778 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
779 ("perl" ,perl)
780 ("pkg-config" ,pkg-config)
781 ("python-wrapper" ,python-wrapper)
782 ("xorg-server" ,xorg-server-for-tests)))
92f1b4a5 783 (inputs
f65cfc6d
RG
784 `(("glib" ,glib)
785 ("glib-networking" ,glib-networking)
92f1b4a5 786 ("liba52" ,liba52)
92f1b4a5 787 ("libcdio" ,libcdio)
f65cfc6d 788 ("libdvdread" ,libdvdread)
92f1b4a5 789 ("libmpeg2" ,libmpeg2)
92f1b4a5 790 ("libx264" ,libx264)
f65cfc6d 791 ("opencore-amr" ,opencore-amr)
92f1b4a5 792 ("orc" ,orc)))
f65cfc6d
RG
793 (propagated-inputs
794 `(("gstreamer" ,gstreamer)
795 ("gst-plugins-base" ,gst-plugins-base)))
796 (synopsis "GStreamer plugins and helper libraries")
797 (description "Gst-Plugins-Ugly are the ones that might have a patent noose
798around their neck, or a lock-up license, or any other problem that makes you
799think twice about shipping them.")
40dad30c 800 (home-page "https://gstreamer.freedesktop.org/")
5cde47ec 801 (license license:lgpl2.0+)))
92f1b4a5 802
1b922590
SB
803(define-public gst-libav
804 (package
805 (name "gst-libav")
94249ba8 806 (version "1.16.2")
aa4557a2
RG
807 (source
808 (origin
809 (method url-fetch)
810 (uri
811 (string-append
812 "https://gstreamer.freedesktop.org/src/" name "/"
813 name "-" version ".tar.xz"))
814 (sha256
815 (base32 "1wpfilc98bad9nsv3y1qapxp35dvn2mvwvrmqwrsj58cf09gc967"))
816 (modules '((guix build utils)))
817 (snippet
818 '(begin
819 ;; Drop bundled ffmpeg.
820 (delete-file-recursively "gst-libs/ext/libav")
821 #t))))
4bebd7e4 822 (build-system meson-build-system)
aa4557a2
RG
823 (arguments
824 `(#:phases
825 (modify-phases %standard-phases
826 (add-after 'unpack 'patch-docbook-xml
827 (lambda* (#:key inputs #:allow-other-keys)
828 (with-directory-excursion "docs"
829 (substitute* "plugins/gst-libav-plugins-docs.sgml"
830 (("http://www.oasis-open.org/docbook/xml/4.1.2/")
831 (string-append (assoc-ref inputs "docbook-xml")
832 "/xml/dtd/docbook/"))))
833 #t)))))
1b922590 834 (native-inputs
aa4557a2
RG
835 `(("docbook-xml" ,docbook-xml-4.1.2)
836 ("perl" ,perl)
837 ("pkg-config" ,pkg-config)
838 ("python" ,python-wrapper)
839 ("ruby" ,ruby)))
1b922590 840 (inputs
aa4557a2
RG
841 `(("ffmpeg" ,ffmpeg)))
842 (propagated-inputs
843 `(("gstreamer" ,gstreamer)
844 ("gst-plugins-base" ,gst-plugins-base)))
845 (synopsis "GStreamer plugins and helper libraries")
846 (description "Gst-Libav contains a GStreamer plugin for using the encoders,
847decoders, muxers, and demuxers provided by FFmpeg.")
57e7d748 848 (home-page "https://gstreamer.freedesktop.org/")
aa4557a2 849 (license license:lgpl2.0+)))
201cfb81 850
64fc4f37
LP
851(define-public gst-editing-services
852 (package
853 (name "gst-editing-services")
854 (version "1.16.2")
855 (source (origin
856 (method url-fetch)
857 (uri (string-append
858 "https://gstreamer.freedesktop.org/src/" name "/"
859 "gstreamer-editing-services-" version ".tar.xz"))
860 (sha256
861 (base32
862 "05hcf3prna8ajjnqd53221gj9syarrrjbgvjcbhicv0c38csc1hf"))))
863 (build-system meson-build-system)
864 (arguments
865 ;; FIXME: 16/22 failing tests.
a64eeaf7
MB
866 `(#:tests? #f
867 #:phases (modify-phases %standard-phases
868 ,@%common-gstreamer-phases)))
64fc4f37
LP
869 (inputs
870 `(("gst-plugins-base" ,gst-plugins-base)
871 ("libxml2" ,libxml2)))
872 (native-inputs
873 `(("flex" ,flex)
874 ("gst-plugins-bad" ,gst-plugins-bad)
875 ("gst-plugins-good" ,gst-plugins-good)
876 ("perl" ,perl)
877 ("pkg-config" ,pkg-config)
878 ("python" ,python)))
879 (home-page "https://gstreamer.freedesktop.org/")
880 (synopsis "GStreamer library for non-linear editors")
881 (description
882 "This is a high-level library for facilitating the creation of audio/video
883non-linear editors.")
884 (license license:gpl2+)))
885
201cfb81
SB
886(define-public python-gst
887 (package
888 (name "python-gst")
94249ba8 889 (version "1.16.2")
201cfb81
SB
890 (source (origin
891 (method url-fetch)
892 (uri (string-append
893 "https://gstreamer.freedesktop.org/src/gst-python/"
894 "gst-python-" version ".tar.xz"))
895 (sha256
896 (base32
20d7dbc7
CB
897 "1a48ca66izmm8hnp608jv5isg3jxb0vlfmhns0bg9nbkilag7390"))
898 (patches
899 (search-patches "python-gst-fix-build-with-python-3.8.patch"))))
c450ee97 900 (build-system meson-build-system)
201cfb81 901 (arguments
c450ee97
MB
902 `(#:modules ((guix build meson-build-system)
903 (guix build utils)
a5c2e796 904 ((guix build python-build-system) #:prefix python:))
c450ee97 905 #:imported-modules (,@%meson-build-system-modules
201cfb81
SB
906 (guix build python-build-system))
907 #:configure-flags
a5c2e796 908 (list (string-append
c450ee97 909 "-Dpygi-overrides-dir="
a5c2e796 910 (python:site-packages %build-inputs %outputs) "gi/overrides"))))
201cfb81
SB
911 (native-inputs
912 `(("pkg-config" ,pkg-config)
913 ("python" ,python)))
914 (propagated-inputs
915 `(("gst-plugins-base" ,gst-plugins-base)
916 ("python-pygobject" ,python-pygobject)))
d2b5dec5 917 (home-page "https://gstreamer.freedesktop.org/")
201cfb81
SB
918 (synopsis "GStreamer GObject Introspection overrides for Python")
919 (description
920 "This package contains GObject Introspection overrides for Python that can
921be used by Python applications using GStreamer.")
5cde47ec 922 (license license:lgpl2.1+)
201cfb81
SB
923 (properties `((python2-variant . ,(delay python2-gst))))))
924
925(define-public python2-gst
926 (package (inherit python-gst)
927 (name "python2-gst")
928 (native-inputs
929 `(("pkg-config" ,pkg-config)
930 ("python" ,python-2)))
931 (propagated-inputs
932 `(("gst-plugins-base" ,gst-plugins-base)
933 ("python-pygobject" ,python2-pygobject)))))
51895712
RW
934
935(define-public gst123
936 (package
937 (name "gst123")
938 (version "0.3.5")
939 (source (origin
940 (method url-fetch)
941 (uri (string-append "http://space.twc.de/~stefan/gst123/gst123-"
942 version ".tar.bz2"))
943 (sha256
944 (base32
945 "0zaa117n4wkya9p903vkj8hj58lmdb66pxsdx5wwcv7nffbp5d67"))))
946 (build-system gnu-build-system)
947 (inputs
948 `(("gtk+" ,gtk+-2)
949 ("ncurses" ,ncurses)
950 ("gstreamer" ,gstreamer)
951 ("gst-plugins-base" ,gst-plugins-base)))
952 (native-inputs
953 `(("pkg-config" ,pkg-config)))
954 (home-page "http://space.twc.de/~stefan/gst123.php")
955 (synopsis "Flexible command line media player based on gstreamer")
956 (description "The program gst123 is designed to be a more flexible command
957line player in the spirit of ogg123 and mpg123, based on the gstreamer media
958framework. It plays all file formats gstreamer supports, so if you have a
959music collection which contains different file formats, like flac, ogg and
960mp3, you can use gst123 to play all your music files.")
961 (license license:lgpl2.0+)))