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