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