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