gnu: openconnect: Update to 7.05.
[jackhill/guix/guix.git] / gnu / packages / pulseaudio.scm
CommitLineData
37bfb448 1;;; GNU Guix --- Functional package management for GNU
3246cc91 2;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
b0364911 3;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
37bfb448
LC
4;;;
5;;; This file is part of GNU Guix.
6;;;
7;;; GNU Guix is free software; you can redistribute it and/or modify it
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
12;;; GNU Guix is distributed in the hope that it will be useful, but
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20(define-module (gnu packages pulseaudio)
21 #:use-module (guix packages)
22 #:use-module (guix download)
b5b73a82 23 #:use-module ((guix licenses) #:prefix l:)
37bfb448 24 #:use-module (guix build-system gnu)
b645425f 25 #:use-module (gnu packages)
54ff0b7d 26 #:use-module (gnu packages algebra)
3246cc91 27 #:use-module ((gnu packages autotools) #:select (libltdl))
37bfb448 28 #:use-module (gnu packages avahi)
54ff0b7d
AE
29 #:use-module (gnu packages check)
30 #:use-module (gnu packages gdbm)
37bfb448 31 #:use-module (gnu packages glib)
66fb2d23
LC
32 #:use-module (gnu packages gtk)
33 #:use-module (gnu packages libcanberra)
f6ad09ae 34 #:use-module (gnu packages web)
54ff0b7d 35 #:use-module (gnu packages linux)
37bfb448 36 #:use-module (gnu packages m4)
54ff0b7d
AE
37 #:use-module (gnu packages pkg-config)
38 #:use-module (gnu packages xiph)
37bfb448
LC
39 #:export (libsndfile
40 libsamplerate
37bfb448
LC
41 pulseaudio))
42
43(define libsndfile
44 (package
45 (name "libsndfile")
46 (version "1.0.25")
47 (source (origin
48 (method url-fetch)
49 (uri (string-append "http://www.mega-nerd.com/libsndfile/files/libsndfile-"
50 version ".tar.gz"))
51 (sha256
52 (base32
53 "10j8mbb65xkyl0kfy0hpzpmrp0jkr12c7mfycqipxgka6ayns0ar"))))
54 (build-system gnu-build-system)
55 (inputs
56 `(("libvorbis" ,libvorbis)
57 ("libogg" ,libogg)
58 ("flac" ,flac)
59 ("pkg-config" ,pkg-config)))
60 (home-page "http://www.mega-nerd.com/libsndfile/")
61 (synopsis "Reading and writing files containing sampled sound")
62 (description
63 "Libsndfile is a C library for reading and writing files containing
64sampled sound (such as MS Windows WAV and the Apple/SGI AIFF format) through
65one standard library interface.
66
67It was designed to handle both little-endian (such as WAV) and
68big-endian (such as AIFF) data, and to compile and run correctly on
69little-endian (such as Intel and DEC/Compaq Alpha) processor systems as well
70as big-endian processor systems such as Motorola 68k, Power PC, MIPS and
71SPARC. Hopefully the design of the library will also make it easy to extend
72for reading and writing new sound file formats.")
73 (license l:gpl2+)))
74
75(define libsamplerate
76 (package
77 (name "libsamplerate") ; aka. Secret Rabbit Code (SRC)
78 (version "0.1.8")
79 (source (origin
80 (method url-fetch)
81 (uri (string-append "http://www.mega-nerd.com/SRC/libsamplerate-"
82 version ".tar.gz"))
83 (sha256
84 (base32
85 "01hw5xjbjavh412y63brcslj5hi9wdgkjd3h9csx5rnm8vglpdck"))))
86 (build-system gnu-build-system)
87 (inputs `(("pkg-config" ,pkg-config)))
88 (propagated-inputs
89 `(("libsndfile" ,libsndfile)
90 ("fftw" ,fftw)))
91 (home-page "http://www.mega-nerd.com/SRC/index.html")
92 (synopsis "Audio sample rate conversion library")
93 (description
94 "Secret Rabbit Code (aka. libsamplerate) is a Sample Rate Converter for
95audio. One example of where such a thing would be useful is converting audio
96from the CD sample rate of 44.1kHz to the 48kHz sample rate used by DAT
97players.
98
99SRC is capable of arbitrary and time varying conversions; from downsampling by
100a factor of 256 to upsampling by the same factor. Arbitrary in this case means
101that the ratio of input and output sample rates can be an irrational
102number. The conversion ratio can also vary with time for speeding up and
103slowing down effects.
104
105SRC provides a small set of converters to allow quality to be traded off
106against computation cost. The current best converter provides a
107signal-to-noise ratio of 145dB with -3dB passband extending from DC to 96% of
108the theoretical best bandwidth for a given pair of input and output sample
109rates. ")
110 (license l:gpl2+)))
111
37bfb448
LC
112(define pulseaudio
113 (package
114 (name "pulseaudio")
7c516af6 115 (version "5.0")
37bfb448
LC
116 (source (origin
117 (method url-fetch)
118 (uri (string-append
119 "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-"
120 version ".tar.xz"))
121 (sha256
122 (base32
3f9d63df
LC
123 "0fgrr8v7yfh0byhzdv4c87v9lkj8g7gpjm8r9xrbvpa92a5kmhcr"))
124 (modules '((guix build utils)))
125 (snippet
126 ;; Disable console-kit support by default since it's deprecated
127 ;; anyway.
128 '(substitute* "src/daemon/default.pa.in"
129 (("load-module module-console-kit" all)
1d1efa6c
MW
130 (string-append "#" all "\n"))))
131 (patches (list (search-patch "pulseaudio-fix-mult-test.patch")
132 (search-patch "pulseaudio-CVE-2014-3970.patch")))))
37bfb448
LC
133 (build-system gnu-build-system)
134 (arguments
c01f7678 135 `(#:configure-flags '("--localstatedir=/var" ;"--sysconfdir=/etc"
37bfb448
LC
136 "--disable-oss-output")
137 #:phases (alist-cons-before
138 'check 'pre-check
139 (lambda _
140 ;; 'tests/lock-autospawn-test.c' wants to create a file
141 ;; under ~/.config/pulse.
b0364911
MW
142 (setenv "HOME" (getcwd))
143 ;; 'thread-test' needs more time on hydra and on slower
144 ;; machines, so we set the default timeout to 120 seconds.
145 (setenv "CK_DEFAULT_TIMEOUT" "120"))
f5ac2352 146 %standard-phases)))
37bfb448
LC
147 (inputs
148 ;; TODO: Add optional inputs (GTK+?).
149 `(;; ("sbc" ,sbc)
150 ("alsa-lib" ,alsa-lib)
151 ("json-c" ,json-c)
152 ("speex" ,speex)
153 ("libsndfile" ,libsndfile)
154 ("libsamplerate" ,libsamplerate)
155 ("dbus" ,dbus)
156 ("glib" ,glib)
157 ("intltool" ,intltool)
158 ("pkg-config" ,pkg-config)
159 ("m4" ,m4)
3246cc91 160 ("libltdl" ,libltdl)
7569c5cb 161 ("fftwf" ,fftwf)
37bfb448
LC
162 ("avahi" ,avahi)
163 ("check" ,check)))
164 (propagated-inputs
165 ;; 'libpulse*.la' contain `-lgdbm' and `-lcap', so propagate them.
09767fb5 166 `(("libcap" ,libcap)
37bfb448
LC
167 ("gdbm" ,gdbm)))
168 (home-page "http://www.pulseaudio.org/")
169 (synopsis "Sound server")
170 (description
171 "PulseAudio is a sound server. It is basically a proxy for your sound applications.
172It allows you to do advanced operations on your sound data as it passes
173between your application and your hardware. Things like transferring the
174audio to a different machine, changing the sample format or channel count and
175mixing several sounds into one are easily achieved using a sound server. ")
176
177 ;; PulseAudio is LGPLv2+, but some of the optional dependencies (GNU dbm,
178 ;; FFTW, etc.) are GPL'd, so the result is effectively GPLv2+. See
179 ;; 'LICENSE' for details.
180 (license l:gpl2+)))
66fb2d23
LC
181
182(define-public pavucontrol
183 (package
184 (name "pavucontrol")
185 (version "2.0")
186 (source (origin
187 (method url-fetch)
188 (uri (string-append
189 "http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-"
190 version
191 ".tar.xz"))
192 (sha256
193 (base32
194 "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2"))))
195 (build-system gnu-build-system)
196 (inputs
c4c4cc05 197 `(("libcanberra" ,libcanberra)
66fb2d23 198 ("gtkmm" ,gtkmm)
c4c4cc05
JD
199 ("pulseaudio" ,pulseaudio)))
200 (native-inputs
201 `(("intltool" ,intltool)
66fb2d23
LC
202 ("pkg-config" ,pkg-config)))
203 (home-page "http://freedesktop.org/software/pulseaudio/pavucontrol/")
204 (synopsis "PulseAudio volume control")
205 (description
206 "PulseAudio Volume Control (pavucontrol) provides a GTK+
207graphical user interface to connect to a PulseAudio server and
208easily control the volume of all clients, sinks, etc.")
209 (license l:gpl2+)))