source: multimedia/libdriv/pulseaudio.xml@ dc2615fa

10.0 10.1 11.0 9.0 9.1 ken/refactor-virt lazarus qt5new trunk upgradedb xry111/git-date xry111/git-date-for-trunk xry111/git-date-test
Last change on this file since dc2615fa was dc2615fa, checked in by Douglas R. Reno <renodr@…>, 3 years ago

Adapt PulseAudio to ALSA API changes.

With ALSA 1.1.9, it became fatal to include headers from /usr/include rather than /usr/include/alsa, and the headers in /usr/include added a warning regarding this. Pulseaudio also doesn't use pkg-config for a large majority of it's headers (reported upstream), so a modification had to be done to account for that as well.

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@21624 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 18.5 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY pulseaudio-download-http
8 "https://www.freedesktop.org/software/pulseaudio/releases/pulseaudio-&pulseaudio-version;.tar.xz">
9 <!ENTITY pulseaudio-download-ftp " ">
10 <!ENTITY pulseaudio-md5sum "c42f1f1465e8df9859d023dc184734bf">
11 <!ENTITY pulseaudio-size "1.6 MB">
12 <!ENTITY pulseaudio-buildsize "112 MB (add 2 MB for tests)">
13 <!ENTITY pulseaudio-time "1.2 SBU (add 0.7 SBU for tests)">
14]>
15
16<sect1 id="pulseaudio" xreflabel="PulseAudio-&pulseaudio-version;">
17 <?dbhtml filename="pulseaudio.html"?>
18
19 <sect1info>
20 <othername>$LastChangedBy$</othername>
21 <date>$Date$</date>
22 </sect1info>
23
24 <title>PulseAudio-&pulseaudio-version;</title>
25
26 <indexterm zone="pulseaudio">
27 <primary sortas="a-PulseAudio">PulseAudio</primary>
28 </indexterm>
29
30 <sect2 role="package">
31 <title>Introduction to PulseAudio</title>
32
33 <para>
34 <application>PulseAudio</application> is a sound system for POSIX OSes,
35 meaning that it is a proxy for sound applications. It allows you to do
36 advanced operations on your sound data as it passes between your
37 application and your hardware. Things like transferring the audio to a
38 different machine, changing the sample format or channel count and mixing
39 several sounds into one are easily achieved using a sound server.
40 </para>
41
42 &lfs84_checked;
43
44 <bridgehead renderas="sect3">Package Information</bridgehead>
45 <itemizedlist spacing="compact">
46 <listitem>
47 <para>
48 Download (HTTP): <ulink url="&pulseaudio-download-http;"/>
49 </para>
50 </listitem>
51 <listitem>
52 <para>
53 Download (FTP): <ulink url="&pulseaudio-download-ftp;"/>
54 </para>
55 </listitem>
56 <listitem>
57 <para>
58 Download MD5 sum: &pulseaudio-md5sum;
59 </para>
60 </listitem>
61 <listitem>
62 <para>
63 Download size: &pulseaudio-size;
64 </para>
65 </listitem>
66 <listitem>
67 <para>
68 Estimated disk space required: &pulseaudio-buildsize;
69 </para>
70 </listitem>
71 <listitem>
72 <para>
73 Estimated build time: &pulseaudio-time;
74 </para>
75 </listitem>
76 </itemizedlist>
77
78<!--<bridgehead renderas="sect3">Additional Downloads</bridgehead>
79 <itemizedlist spacing="compact">
80 <listitem>
81 <para>
82 Required patch if using glibc-2.27:
83 <ulink url="&patch-root;/pulseaudio-&pulseaudio-version;-glibc_2.27_fix-1.patch"/>
84 </para>
85 </listitem>
86 </itemizedlist>-->
87
88 <bridgehead renderas="sect3">PulseAudio Dependencies</bridgehead>
89
90 <bridgehead renderas="sect4">Required</bridgehead>
91 <para role="required">
92 <xref linkend="libsndfile"/>
93 </para>
94
95 <bridgehead renderas="sect4">Recommended</bridgehead>
96 <para role="recommended">
97 <xref linkend="alsa-lib"/>,
98 <xref linkend="dbus"/>,
99 <xref linkend="glib2"/>,
100 <xref linkend="libcap-pam"/>,
101 <xref linkend="speex"/> and
102 <xref linkend="xorg7-lib"/>
103 </para>
104
105 <bridgehead renderas="sect4">Optional</bridgehead>
106 <para role="optional">
107 <xref linkend="avahi"/>,
108 <xref linkend="bluez"/>,
109 <phrase revision="sysv">
110 <xref role="runtime" linkend="consolekit"/> (runtime),</phrase>
111 <xref linkend="fftw"/>,
112 <xref linkend="GConf"/>,
113 <xref linkend="gtk3"/>,
114 <xref linkend="libsamplerate"/>,
115 <xref linkend="sbc"/> (Bluetooth support),
116 <xref linkend="valgrind"/>,
117 <ulink url="http://www.jackaudio.org/">JACK</ulink>,
118 <ulink url="http://0pointer.de/lennart/projects/libasyncns/">libasyncns</ulink>,
119 <ulink url="http://www.lirc.org/">LIRC</ulink>,
120 <ulink url="http://gstreamer.freedesktop.org/src/orc/">ORC</ulink>,
121 <ulink url="https://sourceforge.net/projects/soxr/">soxr</ulink>,
122 <ulink url="http://tdb.samba.org/">TDB</ulink>,
123 <ulink url="http://freedesktop.org/software/pulseaudio/webrtc-audio-processing/">
124 WebRTC AudioProcessing</ulink> and
125 <ulink url="http://www.xenproject.org/">XEN</ulink>
126 </para>
127
128 <para condition="html" role="usernotes">User Notes:
129 <ulink url="&blfs-wiki;/pulseaudio"/>
130 </para>
131 </sect2>
132
133 <sect2 role="installation">
134 <title>Installation of PulseAudio</title>
135
136 <para>
137 Install <application>PulseAudio</application> by running the following
138 commands:
139 </para>
140
141 <para>
142 First, adapt Pulseaudio to upstream ALSA API changes:
143 </para>
144 <!-- This is due to it becoming FATAL to include ALSA headers from
145 /usr/include instead of /usr/include/alsa. Only one of these
146 files uses pkg-config to get it's headers, and as a result,
147 the hardcoded paths need to be updated. In this case, I developed
148 three seds and a call to ./bootstrap.sh to fix this. Other packages
149 may be affected by this upstream ALSA change as well. -->
150
151<screen><userinput>sed -i "s:asoundlib.h:alsa/asoundlib.h:" src/modules/alsa/*.{c,h} &amp;&amp;
152sed -i "s:use-case.h:alsa/use-case.h:" configure.ac &amp;&amp;
153sed -i "s:use-case.h:alsa/use-case.h:" src/modules/alsa/alsa-ucm.h</userinput></screen>
154
155<screen><userinput>NOCONFIGURE=1 ./bootstrap.sh &amp;&amp;
156./configure --prefix=/usr \
157 --sysconfdir=/etc \
158 --localstatedir=/var \
159 --disable-bluez4 \
160 --disable-bluez5 \
161 --disable-rpath &amp;&amp;
162make</userinput></screen>
163
164 <para>
165 To test the results, issue: <command>make check</command>.
166 The volume-test may fail for unknown reasons.
167 <!-- apparently, the max deviation is higher than expected, i.e. assertion
168 failed, result of 280 > 253 : but it seems to work -->
169 </para>
170
171 <para>
172 Now, as the <systemitem class="username">root</systemitem> user:
173 </para>
174
175<screen role="root"><userinput>make install</userinput></screen>
176
177 <!-- http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/ -->
178 <para>
179 While still as the <systemitem class="username">root</systemitem>
180 user, remove the <application>D-Bus</application> configuration file
181 for the system wide daemon to avoid creating unnecessary system
182 users and groups:
183 </para>
184
185<screen role="root"><userinput>rm -fv /etc/dbus-1/system.d/pulseaudio-system.conf</userinput></screen>
186
187 </sect2>
188
189 <sect2 role="commands">
190 <title>Command Explanations</title>
191 <!--
192 <para>
193 <command>AUTOPOINT='intltoolize ...</command>:
194 <command>autoreconf</command> needs to be run after applying the
195 patch. Running <command>intltoolize</command> instead of
196 <command>autopoint</command> prevents an error when running
197 <command>configure</command> afterwards.
198 </para>
199 -->
200
201 <para>
202 <parameter>--disable-bluez4</parameter>: This switch disables
203 support for <application>BlueZ</application> version 4 in favour
204 of <application>BlueZ</application> version 5 since the latter
205 also installs compatibility library for the earlier version.
206 </para>
207
208 <para>
209 <parameter>--disable-bluez5</parameter>: This switch prevents
210 a runtime error if <xref linkend="dbus"/> and <xref linkend="sbc"/>
211 are both installed but <xref linkend="bluez"/> is not installed.
212 Remove this if you have installed all three packages.
213 </para>
214
215 <para>
216 <parameter>--disable-rpath</parameter>: This switch prevents
217 linker from adding a hardcoded runtime path to the installed
218 programs and libraries.
219 </para>
220
221 </sect2>
222
223 <sect2 role="configuration">
224 <title>Configuring PulseAudio</title>
225
226 <sect3 id="pulseaudio-config">
227 <title>Config Files</title>
228 <para>
229 There are system wide configuration files:
230 <filename>/etc/pulse/daemon.conf</filename>,
231 <filename>/etc/pulse/client.conf</filename>,
232 <filename>/etc/pulse/default.pa</filename>, and user configuration
233 files with the same names in
234 <filename class="directory">~/.config/pulse</filename>. User
235 configuration files take precedence over system wide ones.
236 </para>
237
238 <indexterm zone="pulseaudio pulseaudio-config">
239 <primary sortas="e-AA.config-pulse">~/.config/pulse</primary>
240 </indexterm>
241
242 <indexterm zone="pulseaudio pulseaudio-config">
243 <primary
244 sortas="e-etc-pulse-daemon.conf">/etc/pulse/daemon.conf</primary>
245 </indexterm>
246
247 <indexterm zone="pulseaudio pulseaudio-config">
248 <primary
249 sortas="e-etc-pulse-client.conf">/etc/pulse/client.conf</primary>
250 </indexterm>
251
252 <indexterm zone="pulseaudio pulseaudio-config">
253 <primary
254 sortas="e-etc-pulse-default.pa">/etc/pulse/default.pa</primary>
255 </indexterm>
256 </sect3>
257
258 <sect3><title>Configuration Information</title>
259
260 <para>
261 The default configuration files allow setting up a working installation.
262 However, a reference to Console-Kit needs to be removed if it is
263 not installed. For example, issue the following command as the
264 <systemitem class="username">root</systemitem> user:
265 </para>
266
267<screen role="root"><userinput>sed -i '/load-module module-console-kit/s/^/#/' /etc/pulse/default.pa</userinput></screen>
268
269 <para>
270 You may also have to configure the audio system. You can start
271 <application>pulseaudio</application> in command line mode using
272 <command>pulseaudio -C</command> and then list various
273 information and change settings. See
274 <command>man pulse-cli-syntax</command>.
275 </para>
276
277 <para>
278 If <application>pulseaudio</application> was working but you no-longer
279 have sound, after checking for hardware issues (speakers or headphones
280 not connected, external amplifier not connected) you may need to fix it.
281 </para>
282
283 <para>
284 One suggestion is to close the application, such as
285 <application>firefox</application> where sound has stopped working, then
286 run: <command>pactl list short sinks</command> followed by:
287 <command>pacmd set-default-sink &lt;sink #&gt;</command> and then
288 restart the application.
289 </para>
290
291 <para>
292 If that does not work, a more drastic approach often works. After closing
293 the application, close pulseaudio, either using <command>pulseaudio
294 --kill</command> or, if that fails, <command>killall -KILL
295 pulseaudio</command> and then <command>rm -rf
296 ~/.config/pulse/*</command> (and perhaps also
297 <command>rm -rf ~/.pulse/*</command> if you have used a very old version
298 of pulse on this machine, then run <command>pulseaudio
299 --verbose</command> to restart it. If the daemon starts, restart the
300 application. See <command>man pulseaudio</command> for more options.
301 </para>
302
303 </sect3>
304 </sect2>
305
306 <sect2 role="content">
307 <title>Contents</title>
308
309 <segmentedlist>
310 <segtitle>Installed Programs</segtitle>
311 <segtitle>Installed Libraries</segtitle>
312 <segtitle>Installed Directories</segtitle>
313
314 <seglistitem>
315 <seg>
316 esdcompat, pacat, pacmd, pactl, padsp, pamon (symlink to pacat),
317 paplay (symlink to pacat), parec (symlink to pacat),
318 parecord (symlink to pacat), pasuspender,
319 pax11publish, pulseaudio, and
320 <!-- it looks like the equalizer needs FFTW: qpaeq, -->
321 start-pulseaudio-x11
322 </seg>
323 <seg>
324 libpulse.so
325 libpulse-mainloop-glib.so,
326 libpulse-simple.so,
327 libpulsecommon-&pulseaudio-major-version;.so,
328 libpulsecore-&pulseaudio-major-version;.so, and
329 libpulsedsp.so
330
331 </seg>
332 <seg>
333 /etc/pulse,
334 /usr/include/pulse,
335 /usr/lib/cmake/PulseAudio,
336 /usr/lib/{pulseaudio,pulse-&pulseaudio-major-version;},
337 /usr/libexec/pulse, and
338 /usr/share/pulseaudio
339 </seg>
340 </seglistitem>
341 </segmentedlist>
342
343 <variablelist>
344 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
345 <?dbfo list-presentation="list"?>
346 <?dbhtml list-presentation="table"?>
347
348 <varlistentry id="esdcompat">
349 <term><command>esdcompat</command></term>
350 <listitem>
351 <para>
352 is the <application>PulseAudio</application> ESD wrapper script.
353 </para>
354 <indexterm zone="pulseaudio esdcompat">
355 <primary sortas="b-esdcompat">esdcompat</primary>
356 </indexterm>
357 </listitem>
358 </varlistentry>
359
360 <varlistentry id="pacat">
361 <term><command>pacat</command></term>
362 <listitem>
363 <para>
364 plays back or records raw or encoded audio streams on a
365 <application>PulseAudio</application> sound server.
366 </para>
367 <indexterm zone="pulseaudio pacat">
368 <primary sortas="b-pacat">pacat</primary>
369 </indexterm>
370 </listitem>
371 </varlistentry>
372
373 <varlistentry id="pacmd">
374 <term><command>pacmd</command></term>
375 <listitem>
376 <para>
377 is a tool used to reconfigure a <application>PulseAudio</application>
378 sound server during runtime.
379 </para>
380 <indexterm zone="pulseaudio pacmd">
381 <primary sortas="b-pacmd">pacmd</primary>
382 </indexterm>
383 </listitem>
384 </varlistentry>
385
386 <varlistentry id="pactl">
387 <term><command>pactl</command></term>
388 <listitem>
389 <para>
390 is used to control a running <application>PulseAudio</application>
391 sound server.
392 </para>
393 <indexterm zone="pulseaudio pactl">
394 <primary sortas="b-pactl">pactl</primary>
395 </indexterm>
396 </listitem>
397 </varlistentry>
398
399 <varlistentry id="padsp">
400 <term><command>padsp</command></term>
401 <listitem>
402 <para>
403 is the <application>PulseAudio</application> OSS Wrapper.
404 </para>
405 <indexterm zone="pulseaudio padsp">
406 <primary sortas="b-padsp">padsp</primary>
407 </indexterm>
408 </listitem>
409 </varlistentry>
410
411 <varlistentry id="pamon">
412 <term><command>pamon</command></term>
413 <listitem>
414 <para>
415 is a symbolic link to <command>pacat</command>.
416 </para>
417 <indexterm zone="pulseaudio pamon">
418 <primary sortas="b-pamon">pamon</primary>
419 </indexterm>
420 </listitem>
421 </varlistentry>
422
423 <varlistentry id="paplay">
424 <term><command>paplay</command></term>
425 <listitem>
426 <para>
427 is used to play audio files on a
428 <application>PulseAudio</application> sound server.
429 </para>
430 <indexterm zone="pulseaudio paplay">
431 <primary sortas="b-paplay">paplay</primary>
432 </indexterm>
433 </listitem>
434 </varlistentry>
435
436 <varlistentry id="parec">
437 <term><command>parec</command></term>
438 <listitem>
439 <para>
440 is a symbolic link to <command>pacat</command>.
441 </para>
442 <indexterm zone="pulseaudio parec">
443 <primary sortas="b-parec">parec</primary>
444 </indexterm>
445 </listitem>
446 </varlistentry>
447
448 <varlistentry id="parecord">
449 <term><command>parecord</command></term>
450 <listitem>
451 <para>
452 is a symbolic link to <command>pacat</command>.
453 </para>
454 <indexterm zone="pulseaudio parecord">
455 <primary sortas="b-parecord">parecord</primary>
456 </indexterm>
457 </listitem>
458 </varlistentry>
459
460 <varlistentry id="pasuspender">
461 <term><command>pasuspender</command></term>
462 <listitem>
463 <para>
464 is a tool that can be used to tell a local
465 <application>PulseAudio</application> sound server to temporarily
466 suspend access to the audio devices, to allow other applications
467 to access them directly.
468 </para>
469 <indexterm zone="pulseaudio pasuspender">
470 <primary sortas="b-pasuspender">pasuspender</primary>
471 </indexterm>
472 </listitem>
473 </varlistentry>
474
475 <varlistentry id="pax11publish">
476 <term><command>pax11publish</command></term>
477 <listitem>
478 <para>
479 is the <application>PulseAudio</application>
480 X11 Credential Utility.
481 </para>
482 <indexterm zone="pulseaudio pax11publish">
483 <primary sortas="b-pax11publish">pax11publish</primary>
484 </indexterm>
485 </listitem>
486 </varlistentry>
487
488 <varlistentry id="pulseaudio-prog">
489 <term><command>pulseaudio</command></term>
490 <listitem>
491 <para>
492 is a networked low-latency sound server for Linux.
493 </para>
494 <indexterm zone="pulseaudio pulseaudio-prog">
495 <primary sortas="b-pulseaudio">pulseaudio</primary>
496 </indexterm>
497 </listitem>
498 </varlistentry>
499
500<!-- only installed if FFTW is present
501 <varlistentry id="qpaeq">
502 <term><command>qpaeq</command></term>
503 <listitem>
504 <para>
505 is an equalizer interface for
506 <application>PulseAudio</application> equalizer sinks.
507 </para>
508 <indexterm zone="pulseaudio qpaeq">
509 <primary sortas="b-qpaeq">qpaeq</primary>
510 </indexterm>
511 </listitem>
512 </varlistentry>
513-->
514<!-- Not found in PA 7.0
515 <varlistentry id="start-pulseaudio-kde">
516 <term><command>start-pulseaudio-kde</command></term>
517 <listitem>
518 <para>
519 Starts <application>PulseAudio</application> and loads
520 module-device-manager to use KDE routing policies.
521 </para>
522 <indexterm zone="pulseaudio start-pulseaudio-kde">
523 <primary sortas="b-start-pulseaudio-kde">start-pulseaudio-kde</primary>
524 </indexterm>
525 </listitem>
526 </varlistentry>
527-->
528 <varlistentry id="start-pulseaudio-x11">
529 <term><command>start-pulseaudio-x11</command></term>
530 <listitem>
531 <para>
532 starts <application>PulseAudio</application> and registers it to
533 the X11 session manager.
534 </para>
535 <indexterm zone="pulseaudio start-pulseaudio-x11">
536 <primary sortas="b-start-pulseaudio-x11">start-pulseaudio-x11</primary>
537 </indexterm>
538 </listitem>
539 </varlistentry>
540
541 </variablelist>
542
543 </sect2>
544
545</sect1>
Note: See TracBrowser for help on using the repository browser.