gnu: mesa: Update to 17.3.6.
[jackhill/guix/guix.git] / gnu / packages / xiph.scm
CommitLineData
6a06172b 1;;; GNU Guix --- Functional package management for GNU
707d3e24 2;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
1f5ec939 3;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
15e82fb2 4;;; Copyright © 2013 David Thompson <dthompson2@worcester.edu>
a7f904fd 5;;; Copyright © 2014 Sree Harsha Totakura <sreeharsha@totakura.in>
c9a010db 6;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
a7aa4e2a 7;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
f71ce282 8;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
01229cbe 9;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
06c8258b 10;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
6a06172b
AE
11;;;
12;;; This file is part of GNU Guix.
13;;;
14;;; GNU Guix is free software; you can redistribute it and/or modify it
15;;; under the terms of the GNU General Public License as published by
16;;; the Free Software Foundation; either version 3 of the License, or (at
17;;; your option) any later version.
18;;;
19;;; GNU Guix is distributed in the hope that it will be useful, but
20;;; WITHOUT ANY WARRANTY; without even the implied warranty of
21;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22;;; GNU General Public License for more details.
23;;;
24;;; You should have received a copy of the GNU General Public License
25;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
26
54ff0b7d 27(define-module (gnu packages xiph)
dc2e4b0e
AE
28 #:use-module (gnu packages)
29 #:use-module (gnu packages bison)
30 #:use-module (gnu packages compression)
1f73d3b4 31 #:use-module (gnu packages curl)
99828fa7 32 #:use-module (gnu packages documentation)
e55354b8 33 #:use-module (gnu packages image)
76e38f0d 34 #:use-module (gnu packages pkg-config)
dc2e4b0e 35 #:use-module (gnu packages python)
ba04571a 36 #:use-module (gnu packages linux)
5ccca004 37 #:use-module (gnu packages pulseaudio)
cc2b77df 38 #:use-module (gnu packages tls)
6ef1c223 39 #:use-module (gnu packages xml)
b5b73a82 40 #:use-module ((guix licenses) #:prefix license:)
6a06172b
AE
41 #:use-module (guix packages)
42 #:use-module (guix download)
cfc8261c
LC
43 #:use-module (guix build-system gnu)
44 #:export (libogg
45 libvorbis
15e82fb2 46 libtheora
cfc8261c 47 speex
01229cbe 48 speexdsp
cfc8261c
LC
49 ao
50 flac
51 libkate
a7f904fd 52 vorbis-tools
a886404f 53 opus
a7aa4e2a 54 opusfile
a886404f 55 opus-tools))
6a06172b 56
cfc8261c 57(define libogg
6a06172b
AE
58 (package
59 (name "libogg")
72fe9d0b 60 (version "1.3.2")
6a06172b
AE
61 (source (origin
62 (method url-fetch)
63 (uri (string-append "http://downloads.xiph.org/releases/ogg/libogg-"
64 version ".tar.xz"))
65 (sha256
66 (base32
72fe9d0b 67 "16z74q422jmprhyvy7c9x909li8cqzmvzyr8cgbm52xcsp6pqs1z"))))
6a06172b 68 (build-system gnu-build-system)
35b9e423 69 (synopsis "Library for manipulating the ogg multimedia format")
6a06172b
AE
70 (description
71 "The libogg library allows to manipulate the ogg multimedia container
72format, which encapsulates raw compressed data and allows the interleaving of
35b9e423 73audio and video data. In addition to encapsulation and interleaving of
6a06172b
AE
74multiple data streams, ogg provides packet framing, error detection, and
75periodic timestamps for seeking.")
166191b3 76 (license (license:non-copyleft "file://COPYING"
dc2e4b0e 77 "See COPYING in the distribution."))
2e33e6b1 78 (home-page "https://xiph.org/ogg/")))
6a06172b 79
cfc8261c 80(define libvorbis
6a06172b
AE
81 (package
82 (name "libvorbis")
32d9109f 83 (version "1.3.5")
6a06172b
AE
84 (source (origin
85 (method url-fetch)
35b9e423
EB
86 (uri (string-append "http://downloads.xiph.org/releases/vorbis/"
87 "libvorbis-" version ".tar.xz"))
e6ebc7b1
LF
88 (patches (search-patches "libvorbis-CVE-2017-14633.patch"
89 "libvorbis-CVE-2017-14632.patch"))
6a06172b
AE
90 (sha256
91 (base32
32d9109f 92 "1lg1n3a6r41492r7in0fpvzc7909mc5ir9z0gd3qh2pz4yalmyal"))))
6a06172b 93 (build-system gnu-build-system)
bad312e3 94 (propagated-inputs `(("libogg" ,libogg)))
f0cfe3c4
EB
95 (arguments `(#:configure-flags '("LDFLAGS=-lm")
96 #:parallel-tests? #f))
35b9e423 97 (synopsis "Library implementing the vorbis audio format")
6a06172b
AE
98 (description
99 "The libvorbis library implements the ogg vorbis audio format,
100a fully open, non-proprietary, patent-and-royalty-free, general-purpose
101compressed audio format for mid to high quality (8kHz-48.0kHz, 16+ bit,
102polyphonic) audio and music at fixed and variable bitrates from 16 to
103128 kbps/channel.")
166191b3 104 (license (license:non-copyleft "file://COPYING"
dc2e4b0e 105 "See COPYING in the distribution."))
2e33e6b1 106 (home-page "https://xiph.org/vorbis/")))
6a06172b 107
15e82fb2
DT
108(define libtheora
109 (package
110 (name "libtheora")
111 (version "1.1.1")
112 (source (origin
113 (method url-fetch)
35b9e423
EB
114 (uri (string-append "http://downloads.xiph.org/releases/theora/"
115 "libtheora-" version ".tar.xz"))
15e82fb2
DT
116 (sha256
117 (base32
46acd054 118 "0q8wark9ribij57dciym5vdikg2464p8q2mgqvfb78ksjh4s8vgk"))
fc1adab1 119 (patches (search-patches "libtheora-config-guess.patch"))))
15e82fb2
DT
120 (build-system gnu-build-system)
121 (inputs `(("libvorbis" ,libvorbis)))
122 ;; The .pc files refer to libogg.
123 (propagated-inputs `(("libogg" ,libogg)))
124 (synopsis "Library implementing the Theora video format")
125 (description
126 "The libtheora library implements the ogg theora video format,
127a fully open, non-proprietary, patent-and-royalty-free, general-purpose
128compressed video format.")
129 (license license:bsd-3)
2e33e6b1 130 (home-page "https://xiph.org/theora/")))
15e82fb2 131
cfc8261c 132(define speex
1f5ec939
NK
133 (package
134 (name "speex")
8efd10cd 135 (version "1.2.0")
1f5ec939
NK
136 (source
137 (origin
138 (method url-fetch)
139 (uri (string-append "http://downloads.xiph.org/releases/speex/speex-"
140 version ".tar.gz"))
141 (sha256
142 (base32
8efd10cd 143 "150047wnllz4r94whb9r73l5qf0z5z3rlhy98bawfbblmkq8mbpa"))))
1f5ec939 144 (build-system gnu-build-system)
b79813a1
SB
145 (native-inputs
146 `(("pkg-config" ,pkg-config)))
147 (inputs
148 `(("libogg" ,libogg)
149 ("speexdsp" ,speexdsp)))
1f5ec939 150 (home-page "https://gnu.org/software/speex")
f50d2669 151 (synopsis "Library for patent-free audio compression format")
1f5ec939 152 (description
79c311b8
LC
153 "GNU Speex is a patent-free audio compression codec specially designed
154for speech. It is well-adapted to internet applications, such as VoIP. It
a22dc0c4
LC
155features compression of different bands in the same bitstream, intensity
156stereo encoding, and voice activity detection.")
1f5ec939 157 ;; 'src/getopt.c' is under LGPLv2+
166191b3 158 (license (license:non-copyleft "file://COPYING"
dc2e4b0e 159 "See COPYING in the distribution."))))
1f5ec939 160
01229cbe
MB
161(define speexdsp
162 (package
163 (name "speexdsp")
164 (version "1.2rc3")
165 (source (origin
166 (method url-fetch)
167 (uri (string-append "http://downloads.xiph.org/releases/speex/"
168 "speexdsp-" version ".tar.gz"))
169 (sha256
170 (base32
171 "1wcjyrnwlkayb20zdhp48y260rfyzg925qpjpljd5x9r01h8irja"))))
172 (build-system gnu-build-system)
f71ce282
EF
173 (arguments
174 `(#:configure-flags '(,@(if (string=? "aarch64-linux"
175 (%current-system))
176 '("--enable-neon=no") ; neon defaults to armv7-a
177 '()))))
01229cbe
MB
178 (home-page "https://speex.org/")
179 (synopsis "Speex processing library")
180 (description
181 "SpeexDSP is a @dfn{DSP} (Digital Signal Processing) library based on
182work from the @code{speex} codec.")
183 (license (license:non-copyleft "file://COPYING"
184 "See COPYING in the distribution."))))
185
cfc8261c 186(define ao
76e38f0d
AE
187 (package
188 (name "ao")
35f6c497 189 (version "1.2.0")
76e38f0d
AE
190 (source
191 (origin
192 (method url-fetch)
193 (uri (string-append "http://downloads.xiph.org/releases/ao/libao-"
194 version ".tar.gz"))
195 (sha256
196 (base32
35f6c497 197 "1bwwv1g9lchaq6qmhvj1pp3hnyqr64ydd4j38x94pmprs4d27b83"))))
76e38f0d
AE
198 (build-system gnu-build-system)
199 ;; FIXME: Add further backends, see the summary printed after configure.
5ccca004
LC
200 ;; XXX: Should back-ends be pushed to different outputs? For instance,
201 ;; "out" would include only the ALSA back-end, while "pulse" would
54ff0b7d 202 ;; contain 'lib/ao/plugins-4/libpulse.*'.
d4fe27fe
ML
203 (inputs
204 `(("alsa-lib" ,alsa-lib)
205 ("pulseaudio" ,pulseaudio)))
206 (native-inputs
207 `(("pkg-config" ,pkg-config)))
ba04571a 208 (synopsis "Cross platform audio library")
76e38f0d
AE
209 (description
210 "Libao is a cross-platform audio library that allows programs to
211output audio using a simple API on a wide variety of platforms.
212It currently supports:
2df092a9 213@enumerate
55f4b4e0
JD
214@item Null output (handy for testing without a sound device),
215@item WAV files,
216@item AU files,
217@item RAW files,
218@item OSS (Open Sound System, used on Linux and FreeBSD),
219@item ALSA (Advanced Linux Sound Architecture),
220@item aRts (Analog RealTime Synth, used by KDE),
221@item PulseAudio (next generation GNOME sound server),
222@item esd (EsounD or Enlightened Sound Daemon),
223@item Mac OS X,
224@item Windows (98 and later),
225@item AIX,
226@item Sun/NetBSD/OpenBSD,
227@item IRIX,
228@item NAS (Network Audio Server),
229@item RoarAudio (Modern, multi-OS, networked Sound System),
230@item OpenBSD's sndio.
2df092a9 231@end enumerate
55f4b4e0 232")
dc2e4b0e 233 (license license:gpl2+)
2e33e6b1 234 (home-page "https://www.xiph.org/ao/")))
76e38f0d 235
cfc8261c 236(define flac
9ae7865e
AE
237 (package
238 (name "flac")
b4fddeae 239 (version "1.3.2")
9ae7865e
AE
240 (source (origin
241 (method url-fetch)
242 (uri (string-append "http://downloads.xiph.org/releases/flac/flac-"
399fdcf7 243 version ".tar.xz"))
9ae7865e
AE
244 (sha256
245 (base32
b4fddeae 246 "0gymm2j3276kr9nz6vmgfwsdfrq6c449n40a0mzz8h6wc7nw7kwi"))))
9ae7865e
AE
247 (build-system gnu-build-system)
248 (arguments
9b1bf330 249 `(#:parallel-tests? #f))
9ae7865e 250 ;; FIXME: configure also looks for xmms, input could be added once it exists
d529b91b 251 (propagated-inputs `(("libogg" ,libogg))) ; required by flac.pc
35b9e423 252 (synopsis "Free lossless audio codec")
9ae7865e
AE
253 (description
254"FLAC stands for Free Lossless Audio Codec, an audio format that is lossless,
255meaning that audio is compressed in FLAC without any loss in quality.")
166191b3 256 (license (license:non-copyleft "file://COPYING"
dc2e4b0e 257 "See COPYING in the distribution.")) ; and LGPL and GPL
2e33e6b1 258 (home-page "https://xiph.org/flac/")))
9ae7865e 259
cfc8261c 260(define libkate
dc2e4b0e
AE
261 (package
262 (name "libkate")
263 (version "0.4.1")
264 (source (origin
265 (method url-fetch)
7acc2a3e
EF
266 (uri (string-append "http://downloads.xiph.org/releases/kate/"
267 "libkate-" version ".tar.gz"))
dc2e4b0e
AE
268 (sha256
269 (base32
270 "0s3vr2nxfxlf1k75iqpp4l78yf4gil3f0v778kvlngbchvaq23n4"))))
271 (build-system gnu-build-system)
707d3e24
AE
272 (native-inputs `(("doxygen" ,doxygen)
273 ("pkg-config" ,pkg-config)))
274 ;; FIXME: Add optional input liboggz
dc2e4b0e
AE
275 (inputs `(("bison" ,bison)
276 ("libogg" ,libogg)
277 ("libpng" ,libpng)
7acc2a3e 278 ("python" ,python-wrapper)
dc2e4b0e 279 ("zlib" ,zlib)))
35b9e423 280 (synopsis "Karaoke and text codec for embedding in ogg")
dc2e4b0e
AE
281 (description
282 "Kate is an overlay codec, originally designed for karaoke and text,
35b9e423
EB
283that can be multiplixed in Ogg. Text and images can be carried by a Kate
284stream, and animated. Most of the time, this would be multiplexed with
dc2e4b0e
AE
285audio/video to carry subtitles, song lyrics (with or without karaoke data),
286etc., but doesn't have to be.
287
288Series of curves (splines, segments, etc.) may be attached to various
289properties (text position, font size, etc.) to create animated overlays.
35b9e423 290This allows scrolling or fading text to be defined. This can even be used
dc2e4b0e
AE
291to draw arbitrary shapes, so hand drawing can also be represented by a
292Kate stream.")
293 (license license:bsd-3)
7acc2a3e 294 (home-page "https://wiki.xiph.org/OggKate")))
dc2e4b0e 295
cfc8261c 296(define vorbis-tools
6a06172b
AE
297 (package
298 (name "vorbis-tools")
299 (version "1.4.0")
300 (source (origin
301 (method url-fetch)
35b9e423
EB
302 (uri (string-append "http://downloads.xiph.org/releases/vorbis/"
303 "vorbis-tools-" version ".tar.gz"))
6a06172b
AE
304 (sha256
305 (base32
ef0f0d5f 306 "1g12bnh5ah08v529y72kfdz5lhvy75iaz7f9jskyby23m9dkk2d3"))
b3d20b82
EF
307 (patches (search-patches
308 "vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch"
309 "vorbis-tools-CVE-2014-9640.patch"
310 "vorbis-tools-CVE-2015-6749.patch"))))
6a06172b 311 (build-system gnu-build-system)
1f73d3b4
AE
312 (inputs `(("ao" ,ao)
313 ("curl" ,curl)
dc2e4b0e
AE
314 ("flac" ,flac)
315 ("libkate" ,libkate)
1f73d3b4 316 ("libogg" ,libogg)
1f5ec939
NK
317 ("libvorbis" ,libvorbis)
318 ("speex" ,speex)))
41eb1198 319 (native-inputs `(("pkg-config" ,pkg-config)))
35b9e423 320 (synopsis "Ogg vorbis tools")
6a06172b
AE
321 (description
322 "Ogg vorbis is a non-proprietary, patent-and-royalty-free,
323general-purpose compressed audio format.
324
325The package vorbis-tools contains
326ogg123, an ogg vorbis command line audio player;
327oggenc, the ogg vorbis encoder;
328oggdec, a simple, portable command line decoder (to wav and raw);
329ogginfo, to obtain information (tags, bitrate, length, etc.) about
330 an ogg vorbis file.")
dc2e4b0e 331 (license license:gpl2)
2e33e6b1 332 (home-page "https://xiph.org/vorbis/")))
a7f904fd
SHT
333
334(define opus
335 (package
336 (name "opus")
fce8285e 337 (version "1.2.1")
a7f904fd
SHT
338 (source (origin
339 (method url-fetch)
fce8285e
LF
340 (uri (string-append "https://archive.mozilla.org/pub/opus/opus-"
341 version ".tar.gz"))
a7f904fd
SHT
342 (sha256
343 (base32
fce8285e 344 "0ch7yzgg4bn1g36bpjsfrgs4n19c84d7wpdida6yzifrrhwx7byg"))))
a7f904fd 345 (build-system gnu-build-system)
35b9e423 346 (synopsis "Versatile audio codec")
a7f904fd 347 (description
35b9e423 348 "Opus is a totally open, royalty-free, highly versatile audio codec. Opus
a7f904fd 349is unmatched for interactive speech and music transmission over the Internet,
35b9e423 350but is also intended for storage and streaming applications. It is
a7f904fd
SHT
351standardized by the Internet Engineering Task Force (IETF) as RFC 6716 which
352incorporated technology from Skype's SILK codec and Xiph.Org's CELT codec.")
353 (license license:bsd-3)
a8bcc5ff 354 (home-page "https://www.opus-codec.org")))
a886404f
JD
355
356(define opus-tools
357 (package
358 (name "opus-tools")
99d8b079 359 (version "0.1.10")
a886404f
JD
360 (source (origin
361 (method url-fetch)
362 (uri (string-append
97a79b19 363 "http://downloads.xiph.org/releases/opus/opus-tools-"
a886404f
JD
364 version ".tar.gz"))
365 (sha256
e881752c 366 (base32
99d8b079 367 "135jfb9ny3xvd27idsxj7j5ns90lslbyrq70cq3bfwcls4r7add2"))))
a886404f
JD
368 (build-system gnu-build-system)
369 (arguments
370 ;; The package developers misuse pkg-config such that it doesn't work
e881752c 371 ;; when cross compiling. Therefore we avoid it completly and set the
a886404f
JD
372 ;; necessary flags ourselves.
373 `(#:configure-flags (list (string-append "CFLAGS=-I"
374 (assoc-ref %build-inputs "libogg")
375 "/include -I"
376 (assoc-ref %build-inputs "opus")
377 "/include/opus"))))
378 (inputs `(("libogg" ,libogg)
379 ("opus" ,opus)
380 ("flac" ,flac)))
e881752c
AK
381 (synopsis
382 "Command line utilities to encode, inspect, and decode .opus files")
a886404f
JD
383 (description "Opus is a royalty-free, highly versatile audio codec.
384Opus-tools provide command line utilities for creating, inspecting and
e881752c 385decoding .opus files.")
a886404f 386 (license license:bsd-3)
99d8b079 387 (home-page "https://www.opus-codec.org")))
6ef1c223 388
a7aa4e2a
PW
389(define opusfile
390 (package
391 (name "opusfile")
2b33c4d6 392 (version "0.10")
a7aa4e2a
PW
393 (source (origin
394 (method url-fetch)
395 (uri (string-append
396 "http://downloads.xiph.org/releases/opus/opusfile-" version
397 ".tar.gz"))
398 (sha256
399 (base32
2b33c4d6 400 "0bs1376sd131qdh7198jp64vv5d17az5wyy4y7srrvw7p8k3bq28"))))
a7aa4e2a
PW
401 (build-system gnu-build-system)
402 (propagated-inputs
403 `(("opus" ,opus)))
404 (native-inputs
405 `(("pkg-config" ,pkg-config)))
406 (inputs
407 `(("libogg" ,libogg)
408 ("openssl" ,openssl)))
409 (synopsis "Versatile audio codec")
410 (description
411 "The opusfile library provides seeking, decode, and playback of Opus
412streams in the Ogg container (.opus files) including over http(s) on posix and
413windows systems.")
414 (license license:bsd-3)
2e33e6b1 415 (home-page "https://www.opus-codec.org")))
a7aa4e2a 416
6ef1c223
DT
417(define-public icecast
418 (package
419 (name "icecast")
6139fed5 420 (version "2.4.3")
6ef1c223
DT
421 (source (origin
422 (method url-fetch)
423 (uri (string-append
424 "http://downloads.xiph.org/releases/icecast/icecast-"
425 version ".tar.gz"))
426 (sha256
427 (base32
6139fed5 428 "14n5vm2xnyn8y7kl46lnnlgv6v5fjykhc57ffdsh0qaxfs6a8p68"))))
6ef1c223
DT
429 (build-system gnu-build-system)
430 (native-inputs
431 `(("pkg-config" ,pkg-config)))
432 (inputs
433 `(("libxslt" ,libxslt)
434 ("libxml2" ,libxml2)
435 ("openssl" ,openssl)
436 ("curl" ,curl)
437 ("libogg" ,libogg)
438 ("libvorbis" ,libvorbis)
439 ("libtheora" ,libtheora)
440 ("speex" ,speex)))
441 (synopsis "Streaming media server")
442 (description "Icecast is a streaming media server which currently supports
443Ogg (Vorbis and Theora), Opus, WebM and MP3 audio streams. It can be used to
444create an Internet radio station or a privately running jukebox and many
445things in between.")
2e33e6b1 446 (home-page "https://icecast.org/")
6ef1c223 447 (license license:gpl2)))
9d44ab95
SB
448
449(define-public libshout
450 (package
451 (name "libshout")
0568dbab 452 (version "2.4.1")
9d44ab95
SB
453 (source (origin
454 (method url-fetch)
455 (uri (string-append
456 "http://downloads.xiph.org/releases/libshout/"
457 name "-" version ".tar.gz"))
458 (sha256
459 (base32
0568dbab 460 "0kgjpf8jkgyclw11nilxi8vyjk4s8878x23qyxnvybbgqbgbib7k"))))
9d44ab95
SB
461 (build-system gnu-build-system)
462 (native-inputs
463 `(("pkg-config" ,pkg-config)))
464 (propagated-inputs
465 ;; shout.pc refers to all these.
466 `(("libtheora" ,libtheora)
467 ("libvorbis" ,libvorbis)
468 ("speex" ,speex)))
469 (home-page "http://www.icecast.org/")
470 (synopsis "Audio streaming library for icecast encoders")
471 (description
472 "Libshout is a library for communicating with and sending data to an
473icecast server. It handles the socket connection, the timing of the data,
474and prevents bad data from getting to the icecast server.")
475 (license license:gpl2+)))