gnu: sshuttle: Update to 0.78.4.
[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>
ce4a347f 5;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
0d3ecf77 6;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
9e46245b 7;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
51895712 8;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
22885fb8
AE
9;;;
10;;; This file is part of GNU Guix.
11;;;
12;;; GNU Guix is free software; you can redistribute it and/or modify it
13;;; under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 3 of the License, or (at
15;;; your option) any later version.
16;;;
17;;; GNU Guix is distributed in the hope that it will be useful, but
18;;; WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
24
25(define-module (gnu packages gstreamer)
5cde47ec 26 #:use-module ((guix licenses) #:prefix license:)
22885fb8
AE
27 #:use-module (guix packages)
28 #:use-module (guix download)
29 #:use-module (guix build-system gnu)
201cfb81 30 #:use-module (guix utils)
f506ed92 31 #:use-module (gnu packages)
40f6f76e 32 #:use-module (gnu packages audio)
22885fb8 33 #:use-module (gnu packages bison)
e9a0b5e7 34 #:use-module (gnu packages cdrom)
db12dac0 35 #:use-module (gnu packages curl)
1fcf67f4 36 #:use-module (gnu packages compression)
22885fb8 37 #:use-module (gnu packages flex)
db12dac0
SB
38 #:use-module (gnu packages freedesktop)
39 #:use-module (gnu packages gl)
22885fb8 40 #:use-module (gnu packages glib)
40f6f76e 41 #:use-module (gnu packages gnome)
db12dac0
SB
42 #:use-module (gnu packages gnupg)
43 #:use-module (gnu packages graphics)
1fcf67f4 44 #:use-module (gnu packages gtk)
a4d89136 45 #:use-module (gnu packages image)
db12dac0 46 #:use-module (gnu packages libusb)
1fcf67f4 47 #:use-module (gnu packages linux)
40f6f76e 48 #:use-module (gnu packages mp3)
51895712 49 #:use-module (gnu packages ncurses)
22885fb8 50 #:use-module (gnu packages perl)
a4d89136 51 #:use-module (gnu packages pulseaudio)
db12dac0
SB
52 #:use-module (gnu packages qt)
53 #:use-module (gnu packages rdf)
04a20db2 54 #:use-module (gnu packages video)
1fcf67f4
JD
55 #:use-module (gnu packages xorg)
56 #:use-module (gnu packages xiph)
22885fb8 57 #:use-module (gnu packages pkg-config)
f506ed92 58 #:use-module (gnu packages python)
db12dac0
SB
59 #:use-module (gnu packages ssh)
60 #:use-module (gnu packages telephony)
61 #:use-module (gnu packages tls)
62 #:use-module (gnu packages version-control)
09b87aff 63 #:use-module (gnu packages assembly)
f506ed92 64 #:use-module (gnu packages xml))
22885fb8 65
195857b0
SB
66(define-public orc
67 (package
68 (name "orc")
0c417d95 69 (version "0.4.28")
195857b0
SB
70 (source (origin
71 (method url-fetch)
5cc3096c 72 (uri (string-append "https://gstreamer.freedesktop.org/data/src/"
195857b0
SB
73 "orc/orc-" version ".tar.xz"))
74 (sha256
75 (base32
0c417d95 76 "1kl3rlmzr27bdpn78nvpnjs142ja1m6grvafdhw74mmhcdjprkdz"))))
195857b0 77 (build-system gnu-build-system)
462b5676
EF
78 (arguments
79 `(#:phases
80 (modify-phases %standard-phases
81 (add-before 'check 'disable-faulty-test
82 (lambda _
83 ;; XXX Disable the 'test-limits' and 'exec_opcodes_sys'
84 ;; tests, which fail on some machines. See:
85 ;; https://bugzilla.gnome.org/show_bug.cgi?id=735273
86 (substitute* '("testsuite/test-limits.c"
87 "testsuite/exec_opcodes_sys.c")
88 (("if \\(error\\) return 1;")
89 "if (error) return 77;")))))))
57e7d748 90 (home-page "https://gstreamer.freedesktop.org/modules/orc.html")
195857b0
SB
91 (synopsis "Oil runtime compiler")
92 (description
93 "Orc is a just-in-time compiler implemented as a library and set of
94associated tools for compiling and executing simple programs that operate on
95arrays of data.")
96 ;; The source code implementing the Marsenne Twister algorithm is licensed
97 ;; under the 3-clause BSD license, the rest is under 2-clause BSD license.
5cde47ec 98 (license (list license:bsd-2 license:bsd-3))))
195857b0 99
22885fb8
AE
100(define-public gstreamer
101 (package
102 (name "gstreamer")
4cb77941 103 (version "1.12.4")
22885fb8
AE
104 (source
105 (origin
106 (method url-fetch)
a124bbd2 107 (uri (string-append
5cc3096c 108 "https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-"
a124bbd2 109 version ".tar.xz"))
22885fb8
AE
110 (sha256
111 (base32
4cb77941 112 "0x06jxmc5fhlz7cr1pl5lp0hm1jgz519jjic37d09srf9jm091ss"))))
22885fb8 113 (build-system gnu-build-system)
2fb016b8
SB
114 (outputs '("out" "doc"))
115 (arguments
31e021f8 116 `(#:configure-flags
2fb016b8
SB
117 (list (string-append "--with-html-dir="
118 (assoc-ref %outputs "doc")
119 "/share/gtk-doc/html"))))
e244dc6d 120 (propagated-inputs `(("glib" ,glib))) ; required by gstreamer-1.0.pc.
c4c4cc05 121 (native-inputs
22885fb8
AE
122 `(("bison" ,bison)
123 ("flex" ,flex)
426adbe8 124 ("glib" ,glib "bin")
0f998a14 125 ("gobject-introspection" ,gobject-introspection)
22885fb8
AE
126 ("perl" ,perl)
127 ("pkg-config" ,pkg-config)
144f9f25 128 ("python-wrapper" ,python-wrapper)))
96693d1d
SB
129 (native-search-paths
130 (list (search-path-specification
131 (variable "GST_PLUGIN_SYSTEM_PATH")
132 (files '("lib/gstreamer-1.0")))))
5cc3096c 133 (home-page "https://gstreamer.freedesktop.org/")
93bfe3e2 134 (synopsis "Multimedia library")
22885fb8
AE
135 (description
136 "GStreamer is a library for constructing graphs of media-handling
137components. The applications it supports range from simple Ogg/Vorbis
e881752c
AK
138playback, audio/video streaming to complex audio mixing and video
139non-linear editing.
22885fb8
AE
140
141Applications can take advantage of advances in codec and filter technology
142transparently. Developers can add new codecs and filters by writing a
143simple plugin with a clean, generic interface.
144
145This package provides the core library and elements.")
5cde47ec 146 (license license:lgpl2.0+)))
477c91ce
AE
147
148(define-public gst-plugins-base
149 (package
150 (name "gst-plugins-base")
4cb77941 151 (version "1.12.4")
477c91ce
AE
152 (source
153 (origin
154 (method url-fetch)
8cf39f7f 155 (uri (string-append "https://gstreamer.freedesktop.org/src/" name "/"
a124bbd2 156 name "-" version ".tar.xz"))
477c91ce
AE
157 (sha256
158 (base32
4cb77941 159 "10i255q7i8an1hxz3szb36x1jcs9nfdy511pj2wg24h2vw1nnc2c"))))
477c91ce 160 (build-system gnu-build-system)
e9a82129 161 (outputs '("out" "doc"))
34ff76fd
SB
162 (propagated-inputs
163 `(("gstreamer" ,gstreamer))) ; required by gstreamer-plugins-base-1.0.pc
477c91ce 164 (inputs
e9a0b5e7 165 `(("cdparanoia" ,cdparanoia)
5e50f846 166 ("opus" ,opus)
e9a0b5e7 167 ("orc" ,orc)
1fcf67f4
JD
168 ("pango" ,pango)
169 ("libogg" ,libogg)
170 ("libtheora" ,libtheora)
171 ("libvorbis" ,libvorbis)
172 ("libx11" ,libx11)
173 ("zlib" ,zlib)
174 ("libXext" ,libxext)
175 ("libxv" ,libxv)
34ff76fd 176 ("alsa-lib" ,alsa-lib)))
c4c4cc05
JD
177 (native-inputs
178 `(("pkg-config" ,pkg-config)
426adbe8 179 ("glib" ,glib "bin")
4ec48644 180 ("gobject-introspection" ,gobject-introspection)
c4c4cc05 181 ("python-wrapper" ,python-wrapper)))
477c91ce 182 (arguments
7bc36f8d
SB
183 `(#:parallel-tests? #f ; 'pipelines/tcp' fails in parallel
184 #:configure-flags
e9a82129
SB
185 (list (string-append "--with-html-dir="
186 (assoc-ref %outputs "doc")
187 "/share/gtk-doc/html"))
188 #:phases
cda6aaf0
EF
189 (modify-phases %standard-phases
190 (add-before 'configure 'patch
191 (lambda _
192 (substitute* "tests/check/libs/pbutils.c"
de0e591a
EF
193 (("/bin/sh") (which "sh")))
194 #t)))))
70e863e5 195 (home-page "https://gstreamer.freedesktop.org/")
477c91ce 196 (synopsis
1fcf67f4
JD
197 "Plugins for the GStreamer multimedia library")
198 (description "This package provides an essential exemplary set of plug-ins
199for the GStreamer multimedia library.")
5cde47ec 200 (license license:lgpl2.0+)))
477c91ce 201
477c91ce 202
1fcf67f4
JD
203(define-public gst-plugins-good
204 (package
205 (name "gst-plugins-good")
4cb77941 206 (version "1.12.4")
1fcf67f4
JD
207 (source
208 (origin
209 (method url-fetch)
e881752c 210 (uri (string-append
48caecb7
SB
211 "https://gstreamer.freedesktop.org/src/" name "/"
212 name "-" version ".tar.xz"))
1fcf67f4
JD
213 (sha256
214 (base32
4cb77941 215 "0mxrbrqrfq1946gn9im19maj7ivld4k946vkwrzd94h8qsz4k7v4"))))
1fcf67f4
JD
216 (build-system gnu-build-system)
217 (inputs
40f6f76e 218 `(("aalib" ,aalib)
a4d89136 219 ("cairo" ,cairo)
a4d89136 220 ("flac" ,flac)
40f6f76e
SB
221 ("gdk-pixbuf" ,gdk-pixbuf)
222 ("gst-plugins-base" ,gst-plugins-base)
0dc2e348 223 ("jack" ,jack-1)
40f6f76e
SB
224 ("libavc1394" ,libavc1394)
225 ("libcaca" ,libcaca)
226 ("libdv" ,libdv)
227 ("libiec61883" ,libiec61883)
a4d89136 228 ("libjpeg" ,libjpeg)
40f6f76e
SB
229 ("libpng" ,libpng)
230 ("libshout" ,libshout)
231 ("libsoup" ,libsoup)
232 ("libvpx" ,libvpx)
233 ("orc" ,orc)
a4d89136 234 ("pulseaudio" ,pulseaudio)
40f6f76e
SB
235 ("speex" ,speex)
236 ("taglib" ,taglib)
237 ("wavpack" ,wavpack)))
1fcf67f4 238 (native-inputs
40f6f76e
SB
239 `(("glib:bin" ,glib "bin")
240 ("pkg-config" ,pkg-config)
241 ("python-wrapper" ,python-wrapper)))
0ba652b2
MW
242 (arguments
243 `(#:phases
244 (modify-phases %standard-phases
245 (add-after
d1ceedf8 246 'unpack 'disable-failing-tests
0ba652b2 247 (lambda _
d1ceedf8 248 ;; Disable tests that fail non-deterministically.
0d3ecf77
EF
249 ;; This test fails on aarch64 on 1.12.x.
250 (substitute* "tests/check/elements/alpha.c"
251 (("tcase_add_test \\(tc_chain, test_chromakeying\\);" all)
0ba652b2
MW
252 (string-append "/* " all " */")))
253 #t)))))
d1ceedf8 254 (home-page "https://gstreamer.freedesktop.org/")
1fcf67f4
JD
255 (synopsis
256 "Plugins for the GStreamer multimedia library")
257 (description "GStreamer Good Plug-ins is a set of plug-ins for the
258GStreamer multimedia library. This set contains those plug-ins which the
259developers consider to have good quality code and correct functionality.")
5cde47ec 260 (license license:lgpl2.0+)))
4e9b38eb 261
db12dac0
SB
262(define-public gst-plugins-bad
263 (package
264 (name "gst-plugins-bad")
4cb77941 265 (version "1.12.4")
db12dac0
SB
266 (source (origin
267 (method url-fetch)
268 (uri (string-append "https://gstreamer.freedesktop.org/src/"
269 name "/" name "-" version ".tar.xz"))
270 (sha256
271 (base32
4cb77941 272 "021d3q81m968lpnah517sfclagadcqwd6jz3lqdmqvb82sz5fy0c"))))
db12dac0
SB
273 (outputs '("out" "doc"))
274 (build-system gnu-build-system)
275 (arguments
0cee33ac 276 '(#:tests? #f ; XXX: 18 of 65 tests fail
db12dac0
SB
277 #:configure-flags
278 (list (string-append "--with-html-dir="
279 (assoc-ref %outputs "doc")
4cb77941 280 "/share/gtk-doc/html"))))
db12dac0
SB
281 (propagated-inputs
282 `(("gst-plugins-base" ,gst-plugins-base)))
283 (native-inputs
284 `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
285 ("gobject-introspection" ,gobject-introspection)
286 ("pkg-config" ,pkg-config)
287 ("python" ,python)))
288 (inputs
289 ;; XXX: The following dependencies are missing:
290 ;; vo-amrwbenc, vo-aacenc, bs2b, chromaprint, directfb, daala, libdts,
291 ;; faac, flite, libgsm, libde265, libmms, libmimic, mjpegtools,
292 ;; mpeg2enc, libofa, opencv, openh264, openni2, libtimemmgr, wildmidi,
e3cb00d2 293 ;; openspc, gme, sbc, schroedinger, zbar, librtmp, spandsp
db12dac0
SB
294 `(("bluez" ,bluez)
295 ("curl" ,curl)
296 ("faad2" ,faad2)
297 ("fluidsynth" ,fluidsynth)
298 ("gtk+" ,gtk+)
299 ("ladspa" ,ladspa)
300 ("libass" ,libass)
301 ("libdvdnav" ,libdvdnav)
302 ("libdvdread" ,libdvdread)
303 ("libgcrypt" ,libgcrypt)
304 ("libgudev" ,libgudev)
305 ("libkate" ,libkate)
306 ("libmodplug" ,libmodplug)
307 ("librsvg" ,librsvg)
308 ("libsndfile" ,libsndfile)
309 ("libsrtp" ,libsrtp)
310 ("libssh2" ,libssh2)
311 ("libusb" ,libusb)
312 ("libvdpau" ,libvdpau)
313 ("libwebp" ,libwebp)
314 ("libxml2" ,libxml2)
315 ("lrdf" ,lrdf)
316 ("mesa" ,mesa)
317 ("mpg123" ,mpg123)
318 ("neon" ,neon)
319 ("openal" ,openal)
320 ("openexr" ,openexr)
321 ("openjpeg" ,openjpeg)
322 ("openssl" ,openssl)
323 ("opus" ,opus)
324 ("orc" ,orc)
6779b932
EF
325 ;("qtbase" ,qtbase)
326 ;("qtdeclarative" ,qtdeclarative)
327 ;("qtx11extras" ,qtx11extras)
db12dac0 328 ("soundtouch" ,soundtouch)
e3cb00d2 329 ("x265" ,x265)
94b179c6 330 ("wayland" ,wayland)))
0cee33ac 331 (home-page "https://gstreamer.freedesktop.org/")
db12dac0
SB
332 (synopsis "Plugins for the GStreamer multimedia library")
333 (description
334 "GStreamer Bad Plug-ins is a set of plug-ins whose quality aren't up to
335par compared to the rest.")
5cde47ec 336 (license license:lgpl2.0+)))
db12dac0 337
92f1b4a5
MW
338(define-public gst-plugins-ugly
339 (package
340 (name "gst-plugins-ugly")
4cb77941 341 (version "1.12.4")
92f1b4a5
MW
342 (source
343 (origin
344 (method url-fetch)
5cc3096c 345 (uri (string-append "https://gstreamer.freedesktop.org/src/"
92f1b4a5
MW
346 name "/" name "-" version ".tar.xz"))
347 (sha256
348 (base32
4cb77941 349 "08p5kggk1szvr76cdbx3q3yfc235w1przb76v2n51lwfi26mn5hw"))))
92f1b4a5
MW
350 (build-system gnu-build-system)
351 (inputs
352 `(("gst-plugins-base" ,gst-plugins-base)
353 ("liba52" ,liba52)
354 ("libmad" ,libmad)
355 ("lame" ,lame)
356 ("libcdio" ,libcdio)
357 ("twolame" ,twolame)
358 ("libmpeg2" ,libmpeg2)
359 ("libdvdread" ,libdvdread)
360 ("libx264" ,libx264)
58458a65 361 ("mpg123" ,mpg123)
92f1b4a5
MW
362 ;; TODO:
363 ;; * opencore-amr (for the AMR-NB decoder and encoder and the
364 ;; AMR-WB decoder) <http://sourceforge.net/projects/opencore-amr/>
365 ("orc" ,orc)))
366 (native-inputs
367 `(("glib:bin" ,glib "bin")
368 ("pkg-config" ,pkg-config)
369 ("python-wrapper" ,python-wrapper)))
40dad30c 370 (home-page "https://gstreamer.freedesktop.org/")
e881752c 371 (synopsis "GStreamer plugins from the \"ugly\" set")
92f1b4a5
MW
372 (description "GStreamer Ugly Plug-ins. This set contains those plug-ins
373which the developers consider to have good quality code but that might pose
374distribution problems in some jurisdictions, e.g. due to patent threats.")
5cde47ec 375 (license license:lgpl2.0+)))
92f1b4a5 376
1b922590
SB
377(define-public gst-libav
378 (package
379 (name "gst-libav")
4cb77941 380 (version "1.12.4")
1b922590
SB
381 (source (origin
382 (method url-fetch)
383 (uri (string-append
5cc3096c 384 "https://gstreamer.freedesktop.org/src/" name "/"
1b922590
SB
385 name "-" version ".tar.xz"))
386 (sha256
387 (base32
4cb77941 388 "0qly3lgamm36xql9q7wg5751gi6j2d3ifzz1pkr15ncc5mfslmia"))))
1b922590
SB
389 (build-system gnu-build-system)
390 (arguments
933204e5
MW
391 '(#:configure-flags '("--with-system-libav")
392 #:phases
1b922590 393 (modify-phases %standard-phases
279a587d 394 (add-before 'configure 'patch-/bin/sh
1b922590
SB
395 (lambda _
396 (substitute* "gst-libs/ext/libav/configure"
397 (("#! /bin/sh")
81fc4b20
EF
398 (string-append "#! "(which "sh"))))
399 #t)))))
1b922590
SB
400 (native-inputs
401 `(("pkg-config" ,pkg-config)
04a20db2 402 ("python" ,python)))
1b922590
SB
403 (inputs
404 `(("gst-plugins-base" ,gst-plugins-base)
f419fe4d 405 ("ffmpeg" ,ffmpeg)
1b922590
SB
406 ("orc" ,orc)
407 ("zlib" ,zlib)))
57e7d748 408 (home-page "https://gstreamer.freedesktop.org/")
1b922590
SB
409 (synopsis "Plugins for the GStreamer multimedia library")
410 (description
411 "This GStreamer plugin supports a large number of audio and video
412compression formats through the use of the libav library.")
5cde47ec 413 (license license:gpl2+)))
201cfb81
SB
414
415(define-public python-gst
416 (package
417 (name "python-gst")
4cb77941 418 (version "1.12.4")
201cfb81
SB
419 (source (origin
420 (method url-fetch)
421 (uri (string-append
422 "https://gstreamer.freedesktop.org/src/gst-python/"
423 "gst-python-" version ".tar.xz"))
424 (sha256
425 (base32
4cb77941 426 "1sm3dy10klf6i3w6a6mz0rnm29l2lxci5hr8346496jwc7v6mki0"))))
201cfb81
SB
427 (build-system gnu-build-system)
428 (arguments
429 ;; XXX: Factorize python-sitedir with python-build-system.
430 `(#:imported-modules (,@%gnu-build-system-modules
431 (guix build python-build-system))
432 #:configure-flags
433 (let* ((python (assoc-ref %build-inputs "python"))
434 (python-version ((@@ (guix build python-build-system)
435 get-python-version)
436 python))
437 (python-sitedir (string-append
438 "lib/python" python-version "/site-packages")))
439 (list (string-append
440 "--with-pygi-overrides-dir=" %output "/" python-sitedir
441 "/gi/overrides")))))
442 (native-inputs
443 `(("pkg-config" ,pkg-config)
444 ("python" ,python)))
445 (propagated-inputs
446 `(("gst-plugins-base" ,gst-plugins-base)
447 ("python-pygobject" ,python-pygobject)))
d2b5dec5 448 (home-page "https://gstreamer.freedesktop.org/")
201cfb81
SB
449 (synopsis "GStreamer GObject Introspection overrides for Python")
450 (description
451 "This package contains GObject Introspection overrides for Python that can
452be used by Python applications using GStreamer.")
5cde47ec 453 (license license:lgpl2.1+)
201cfb81
SB
454 (properties `((python2-variant . ,(delay python2-gst))))))
455
456(define-public python2-gst
457 (package (inherit python-gst)
458 (name "python2-gst")
459 (native-inputs
460 `(("pkg-config" ,pkg-config)
461 ("python" ,python-2)))
462 (propagated-inputs
463 `(("gst-plugins-base" ,gst-plugins-base)
464 ("python-pygobject" ,python2-pygobject)))))
51895712
RW
465
466(define-public gst123
467 (package
468 (name "gst123")
469 (version "0.3.5")
470 (source (origin
471 (method url-fetch)
472 (uri (string-append "http://space.twc.de/~stefan/gst123/gst123-"
473 version ".tar.bz2"))
474 (sha256
475 (base32
476 "0zaa117n4wkya9p903vkj8hj58lmdb66pxsdx5wwcv7nffbp5d67"))))
477 (build-system gnu-build-system)
478 (inputs
479 `(("gtk+" ,gtk+-2)
480 ("ncurses" ,ncurses)
481 ("gstreamer" ,gstreamer)
482 ("gst-plugins-base" ,gst-plugins-base)))
483 (native-inputs
484 `(("pkg-config" ,pkg-config)))
485 (home-page "http://space.twc.de/~stefan/gst123.php")
486 (synopsis "Flexible command line media player based on gstreamer")
487 (description "The program gst123 is designed to be a more flexible command
488line player in the spirit of ogg123 and mpg123, based on the gstreamer media
489framework. It plays all file formats gstreamer supports, so if you have a
490music collection which contains different file formats, like flac, ogg and
491mp3, you can use gst123 to play all your music files.")
492 (license license:lgpl2.0+)))