remove all docs from tarball since they are now available on pulseaudio.org

git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1059 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2006-07-07 16:05:20 +00:00
parent 9a778bddfe
commit e16cdb50bd
10 changed files with 3 additions and 1563 deletions

View file

@ -1,295 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PulseAudio: FAQ</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Frequently Asked Questions</h1>
<ol>
<li><p><b>How does PulseAudio compare with ESOUND/aRts/NAS?</b></p>
<p>PulseAudio is sound daemon similar to ESOUND and NAS, but much more
powerful. aRts is a realtime-synthesizer-cum-sound-server, i.e. it
does much more than PulseAudio. However, I believe that PulseAudio
does what it does much better than any other free sound server.</p>
</li>
<li><p><b>What about ESOUND compatibility?</b></p>
<p>PulseAudio is a drop in replacement for ESOUND. That means: you can
load a esound compatibility module which implements an ESOUND
compatible protocol which allows you to use most of the classic ESOUND
compatible programs (including the command line programs like
<tt>esdcat</tt>).</p>
</li>
<li><p><b>Is PulseAudio a GNOME program?</b></p>
<p>No, PulseAudio has no dependency on GNOME/GTK/GLIB. All it requires
is a UNIX-like operating system and very few dependency
libraries. However, the accompanying GUI tools are written with
gtkmm, i.e. require both GLIB and GTK.</p></li>
<li><p><b>Can I integrate PulseAudio in my GLIB/GTK/GNOME application?</b></p>
<p>Yes! PulseAudio comes with a GLIB main loop adapter. You can embed
both the client library and the daemon (!) into your GLIB based
application.</p></li>
<li><p><b>Can I integrate PulseAudio in my Qt/KDE application?</b></p>
<p>Yes! PulseAudio uses a main loop abstraction layer that allows you
to integrate PulseAudio in any program that supports main
loops. Unfortunately there is no adapter for Qt publicly available yet.</p></li>
<li><p><b>I want to write a new driver for PulseAudio, are there any docs?</b></p>
<p>Currently, only the client API is documented with doxygen. Read
the source and base your work on a simple module like
<tt>module-pipe-sink</tt>.</p></li>
<li><p><b>What about compatibility with NAS?</b></p>
<p>Is not available (yet?). It is doable, but noone has implemented it yet.</p></li>
<li><p><b>What about compatibility with aRts?</b></p>
<p>Is not available. Since aRts is as synthesizer application you'd have to
reimplement very much code for PulseAudio. It should be easy to
implement limited support for <tt>libartsc</tt> based
applications. Noone has done this yet. It is probably a better idea to
run <tt>arts</tt> on top of PulseAudio (through a PulseAudio driver
for aRts, which nobody has written yet). Another solution would be to
embed PulseAudio in the aRts process.</p></li>
<li><p><b>I often hear noises when playing back with PulseAudio, what can I do?</b></p>
<p>There are to possible solutions: run PulseAudio with argument
<tt>--high-priority=1</tt> and make yourself member of the group
<tt>realtime</tt>, or increase the fragment sizes of the audio
drivers. The former will allow PulseAudio to activate
<tt>SCHED_FIFO</tt> high priority scheduling (root rights are dropped
immediately after this). Keep in mind that this is a potential security hole!</p></li>
<li><p><b>The <tt>pulseaudio</tt> executable is installed SUID root by default. Why this? Isn't this a potential security hole?</b></p>
<p>PulseAudio activates <tt>SCHED_FIFO</tt> scheduling if the user
passes <tt>--high-priority=1</tt>. This will only succeed when
executed as root, therefore the binary is marked SUID root by
default. Yes, this is a potential security hole. However, PulseAudio
tries its best to minimize the security threat: immediately after
startup PulseAudio drops all capabilities except
<tt>CAP_SYS_NICE</tt> (At least on systems that support it, like Linux; see <tt>man 7
capabilities</tt> for more information). If the calling user is not a
member of the group <tt>realtime</tt> (which is required to have a GID
< 1000), root rights are dropped immediately. This means, you can
install <tt>pulseaudio</tt> SUID root, but only a subset of your users (the
members of the group <tt>realtime</tt>) may make use of realtime
scheduling. Keep in mind that these users might load their own binary
modules into the PulseAudio daemon which may freeze the machine. The
daemon has a minimal protection against CPU hogging (the daemon is
killed after hogging more than 70% CPU for 5 seconds), but this may
be circumvented easily by evildoers.</p></li>
<li><p><b>I want to run PulseAudio only when it is needed, how do I do this?</b></p>
<p>Set <tt>autospawn = yes</tt> in <tt>client.conf</tt>. That
configuration file may be found either in <tt>/etc/pulse/</tt> or
in <tt>~/.pulse/</tt>.</p></li>
<li><p><b>How do I list all PulseAudio modules installed?</b></p>
<p><tt>pulseaudio --dump-modules</tt></p>
<p>Add <tt>-v</tt> for terse usage instructions.</p>
<li><p><b>How do I use PulseAudio over the network?</b></p>
<p>Just set <tt>$PULSE_SERVER</tt> to the host name of the PulseAudio
server. For authentication you need the same auth cookies on all sides. For
that copy <tt>~./pulse-cookie</tt> to all clients that shall
be allowed to connect.</p>
<p>Alternatively the authorization cookies can be stored in the X11 server.</p></li>
<li><p><b>Is PulseAudio capable of providing synchronized audio playback over the network for movie players like <tt>mplayer</tt>?</b></p>
<p>Yes! Unless your network is congested in some way (i.e. transfer latencies vary strongly) it works perfectly. Drop me an email for experimental patches for MPlayer.</p>
<li><p><b>What environment variables does PulseAudio care about?</b></p>
<p>The client honors: <tt>PULSE_SINK</tt> (default sink to connect to), <tt>PULSE_SOURCE</tt> (default source to connect to), <tt>PULSE_SERVER</tt> (default server to connect to, like <tt>ESPEAKER</tt>), <tt>PULSE_BINARY</tt> (the binary to start when autospawning a daemon), <tt>PULSE_CLIENTCONFIG</tt> (path to the client configuration file).</p>
<p>The daemon honors: <tt>PULSE_SCRIPT</tt> (default CLI script file run after startup), <tt>PULSE_CONFIG</tt> (default daemon configuration file), <tt>PULSE_DLPATH</tt> (colon separated list of paths where to look for modules)</p></li>
<li><p><b>I saw that SIGUSR2 provokes loading of the module <tt>module-cli-protocol-unix</tt>. But how do I make use of that?</b></p>
<p>A brilliant guy named Lennart Poettering once wrote a nifty tool
for that purpose: <a
href="http://0pointer.de/lennart/projects/bidilink/">bidilink</a>. To
connect to a running PulseAudio daemon try using the following commands:</p>
<pre>killall -USR2 pulseaudio
bidilink unix-client:/tmp/pulse-$USER/cli</pre>
<p><i>BTW: Someone should package this great tool for Debian!</i></p>
<p><b>New:</b> There's now a tool <tt>pacmd</tt> that automates sending SIGUSR2 to the daemon and running a bidilink like tool for you.</p>
</li>
<li><p><b>How do the PulseAudio libraries decide where to connect to?</b></p>
<p>The following rule applies:</p>
<ol>
<li>If the the application using the library specifies a server to connect to it is used. If the connection fails, the library fails too.</li>
<li>If the environment variable <tt>PULSE_SERVER</tt> is defined the library connects to that server. If the connection fails, the library fails too.</li>
<li>If <tt>$DISPLAY</tt> is set, the library tries to connect to that server and looks for the root window property <tt>POYLP_SERVER</tt> for the host to connect to. If <tt>PULSE_COOKIE</tt> is set it is used as authentication cookie.</li>
<li>If the client configuration file (<tt>~/.pulse/client.conf</tt> or <tt>/etc/pulse/client.conf</tt>) sets the server address, the library connects to that server. If the connection fails, the library fails too.</li>
<li>The library tries to connect to the default local UNIX socket for PulseAudio servers. If the connection fails, it proceeds with the next item.</li>
<li>The library tries to connect to the default local TCP socket for PulseAudio servers. If the connection fails, it proceeds with the next item.</li>
<li>If <tt>$DISPLAY</tt> is set, the library tries to connect to the default TCP port of that host. If the connection fails, it proceeds with the next item.</li>
<li>The connection fails.</li>
</ol>
</li>
<li><p><b>Why the heck does libpulse link against libX11?</b></p>
<p>The PulseAudio client libraries look for some X11 root window
properties for the credentials of the PulseAudio server to access. You
may compile PulseAudio without X11 for disabling this feature.</p></li>
<li><p><b>How can I use PulseAudio as an RTP based N:N multicast
conferencing solution for the LAN?</b></p> <p>After loading all the
necessary audio drivers for recording and playback, just load the RTP
reciever and sender modules with default parameters:</p>
<pre>
load-module module-rtp-send
load-module module-rtp-recv
</pre>
<p>As long as the PulseAudio daemon runs, the microphone data will be
streamed to the network and the data from other hosts is played back
locally. Please note that this may cause quite a lot of traffic. Hence
consider passing <tt>rate=8000 format=ulaw channels=1</tt> to the
sender module to save bandwith while still maintaining good quality
for speech transmission.</p></li>
<li><p><b>What is this RTP/SDP/SAP thing all about?</b></p>
<p>RTP is the <i>Realtime Transfer Protocol</i>. It is a well-known
protocol for transferring audio and video data over IP. SDP is the <i>Session
Description Protocol</i> and can be used to describe RTP sessions. SAP
is the <i>Session Announcement Protocol</i> and can be used to
announce RTP sessions that are described with SDP. (Modern SIP based VoIP phones use RTP/SDP for their sessions, too)</p>
<p>All three protocols are defined in IETF RFCs (RFC3550, RFC3551,
RFC2327, RFC2327). They can be used in both multicast and unicast
fashions. PulseAudio exclusively uses multicast RTP/SDP/SAP containing audio data.</p>
<p>For more information about using these technologies with PulseAudio have a look on the <a href="modules.html#rtp">respective module's documentation</a>.
<li><p><b>How can I use PulseAudio to stream music from my main PC to my LAN with multiple PCs with speakers?</b></p>
<p>On the sender side create an RTP sink:</p>
<pre>
load-module module-null-sink sink_name=rtp
load-module module-rtp-send source=rtp_monitor
set-default-sink rtp
</pre>
<p>This will make <tt>rtp</tt> the default sink, i.e. all applications will write to this virtual RTP device by default.</p>
<p>On the client sides just load the reciever module:</p>
<pre>
load-module module-rtp-recv
</pre>
<p>Now you can play your favourite music on the sender side and all clients will output it simultaneously.</p>
<p>BTW: You can have more than one sender machine set up like this. The audio data will be mixed on the client side.</p></li>
<li><p><b>How can I use PulseAudio to share a single LINE-IN/MIC jack on the entire LAN?</b></p>
<p>On the sender side simply load the RTP sender module:</p>
<pre>
load-module module-rtp-send
</pre>
<p>On the reciever sides, create an RTP source:</p>
<pre>
load-module module-null-sink sink_name=rtp
load-module module-rtp-recv sink=rtp
set-default-source rtp_monitor
</pre>
<p>Now the audio data will be available from the default source <tt>rtp_monitor</tt>.</p></li>
<li><p><b>When sending multicast RTP traffic it is recieved on the entire LAN but not by the sender machine itself!</b></p>
<p>Pass <tt>loop=1</tt> to the sender module!</p></li>
<li><p><b>Can I have more than one multicast RTP group?</b></p>
<p>Yes! Simply use a new multicast group address. Use
the <tt>destination</tt>/<tt>sap_address</tt> arguments of the RTP
modules to select them. Choose your group addresses from the range
<tt>225.0.0.x</tt> to make sure the audio data never leaves the LAN.</p></li>
<li><p><b>Can I use PulseAudio to playback music on two sound cards simultaneously?</b></p>
<p>Yes! Use <a href="modules.html#module-combine"><tt>module-combine</tt></a> for that.</p>
<pre>
load-module module-oss-mmap device="/dev/dsp" sink_name=output0
load-module module-oss-mmap device="/dev/dsp1" sink_name=output1
load-module module-combine sink_name=combined master=output0 slaves=output1
set-sink-default combined
</pre>
<p>This will combine the two sinks <tt>output0</tt> and
<tt>output1</tt> into a new sink <tt>combined</tt>. Every sample
written to the latter will be forwarded to the former two. PulseAudio
will make sure to adjust the sample rate of the slave device in case
it deviates from the master device. You can have more than one slave
sink attached to the combined sink, and hence combine even three and
more sound cards.</p> </li>
<li><p><b>Can I use PulseAudio to combine two stereo soundcards into a virtual surround sound card?</b></p>
<p>Yes! You can use use <a href="modules.html#module-combine"><tt>module-combine</tt></a> for that.</p>
<pre>
load-module module-oss-mmap device="/dev/dsp" sink_name=output0 channel_map=left,right channels=2
load-module module-oss-mmap device="/dev/dsp1" sink_name=output1 channel_map=rear-left,rear-right channels=2
load-module module-combine sink_name=combined master=output0 slaves=output1 channel_map=left,right,rear-left,rear-right channels=4
</pre>
<p>This is mostly identical to the previous example. However, this
time we manually specify the channel mappings for the sinks to make
sure everything is routed correctly.</p>
<p>Please keep in mind that PulseAudio will constantly adjust the
sample rate to compensate for the deviating quartzes of the sound
devices. This is not perfect, however. Deviations in a range of
1/44100s (or 1/48000s depending on the sampling frequency) can not be
compensated. The human ear will decode these deviations as minor
movements (less than 1cm) of the positions of the sound sources
you hear. </p>
</li>
<li><p><b>Why did you rename Polypaudio to PulseAudio?</b></p>
<p>Please read this <a href="http://0pointer.de/blog/projects/pulse.html">blog story</a> for an explanation.</p>
</li>
</ol>
<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, April 2006</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>

View file

@ -16,26 +16,5 @@
# along with PulseAudio; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
noinst_DATA = README.html cli.html modules.html daemon.html FAQ.html
EXTRA_DIST = $(noinst_DATA) style.css README.html.in cli.html.in modules.html.in daemon.html.in todo FAQ.html.in
MAINTAINERCLEANFILES = README.html cli.html modules.html daemon.html FAQ.html
CLEANFILES =
if USE_LYNX
README: README.html
lynx --dump $^ | sed 's,file://localhost/.*/doc/README.html,README,' > $@
noinst_DATA += README
CLEANFILES += README
endif
tidy: README.html cli.html modules.html daemon.html
tidy -qe < README.html ; true
tidy -qe < cli.html ; true
tidy -qe < daemon.html ; true
tidy -qe < modules.html ; true
tidy -qe < FAQ.html ; true
.PHONY: tidy
EXTRA_DIST = todo

View file

@ -1,356 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PulseAudio @PACKAGE_VERSION@</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1><a name="top">PulseAudio @PACKAGE_VERSION@</a></h1>
<p><i>Copyright 2004-2006 Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;</i> and Pierre Ossman</p>
<ul class="toc">
<li><a href="#license">License</a></li>
<li><a href="#news">News</a></li>
<li><a href="#overview">Overview</a></li>
<li><a href="#status">Current Status</a></li>
<li><a href="#documentation">Documentation</a></li>
<li><a href="#requirements">Requirements</a></li>
<li><a href="#installation">Installation</a></li>
<li><a href="#acks">Acknowledgements</a></li>
<li><a href="#download">Download</a></li>
<li><a href="#community">Community</a></li>
</ul>
<h2><a name="license">License</a></h2>
<p>This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.</p>
<p>This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</p>
<h2><a name="news">News</a></h2>
<div class="news-date">Fri Jul 7 2006: </div> <p class="news-text"><a
href="@PACKAGE_URL@pulseaudio-0.9.2.tar.gz">Version 0.9.2</a>
released; changes include: rename project to PulseAudio (see <a
href="http://0pointer.de/blog/projects/pulse.html">this blog
article</a> for an explanation); increase maximum number of concurrent
connections; fix latency interpolation; add support for reverse endian
sound cards; add support for recording in <tt>padsp</tt>; reenable CPU
load limiter; other bugfixes</p>
<div class="news-date">Fri Jun 2 2006: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.9.1.tar.gz">Version 0.9.1</a>
released; changes include: load modules even when libtool <tt>.la</tt>
files are missing; generate better ALSA device names from
<tt>module-detect</tt>; if an ALSA device doesn't support the
requested number of channels or the frequency, accept what ALSA
suggests instead; amd64 portability; drop <tt>.sh</tt> suffix of
<tt>esdcompat.sh</tt>; build system fixes; No API or ABI changes were made</p>
<div class="news-date">Fri May 26 2006: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.9.0.tar.gz">Version 0.9.0</a>
released; changes include: new module <tt>module-volume-restore</tt>;
new OSS API emulation tool <tt>padsp</tt>; require valid UTF8 strings
everywhere; properly support ALSA channel maps for surround sound;
increase maximum number of channels per stream to 32; add new threaded
main loop API for synchronous programs; introduce real shared object
versioning; a few API additions; many, many bugfixes</p>
<div class="news-date">Fri Apr 28 2006: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.8.1.tar.gz">Version 0.8.1</a>
released; changes include: support for specifying the channel map on
the command lines of <tt>paplay</tt> and <tt>pacat</tt> and as
arguments to the driver modules; ALSA hardware mixer compatibility;
fix linking; properly remove <tt>PF_UNIX</tt> sockets when unloading
protocol modules; fix sample cache; many other fixes</p>
<div class="news-date">Thu Apr 13 2006: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.8.tar.gz">Version 0.8</a> released;
changes include: too many to count - consider reading <a href="http://0pointer.de/blog/projects/polypaudio-0.8.html">this blog entry</a> for more information; many, many minor fixes.</p>
<div class="news-date">Sun Nov 21 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.7.tar.gz">Version 0.7</a> released;
changes include: IPv6 support; PID file support; publish credentials
in X11 root window (<tt>module-x11-publish</tt>; new tool <tt>pacmd</tt>; ESOUND backend; new command <tt>load-sample-dir-lazy</tt>; many, many minor fixes.</p>
<div class="news-date">Thu Oct 28 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.6.tar.gz">Version 0.6</a> released;
changes include: TCP wrappers support; don't load the complete sound
file into memory when playing back using <tt>pa_play_file()</tt>;
autoload API change; don't load all sound files as FLOAT32; shorten
default buffers; client-side latency interpolation; add new user
volume metrics; add <tt>module-tunnel</tt>, <tt>module-null-sink</tt>,
<tt>module-match</tt> and new tool <tt>paplay</tt>; new API version
macros; many client API improvements; correctly lock cookie file
generation; correctly lock daemon autospawning; print daemon layout to
STDERR on SIGHUP; new options for <tt>pacat</tt>: allow sample type specification.</p>
<div class="news-date">Mon Sep 24 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.5.1.tar.gz">Version 0.5.1</a> released;
changes include: improve esound protocol compatibility; fix
autospawning via <tt>libesd</tt>; make use of POSIX capabilities;
allow <tt>SCHED_FIFO</tt> scheduling only for users in group
<tt>realtime</tt>; minor build system fix.</p>
<div class="news-date">Mon Sep 20 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.5.tar.gz">Version 0.5</a> released;
changes include: extensive API improvements, new module
<tt>module-combine</tt> for combining multiple sound cards into one,
gcc 2.95 compatibility, configuration files, add "lazy" samples,
support for source and network latency measurements, add
<tt>module-pipe-source</tt>, many other fixes and improvements.</p>
<div class="news-date">Wed Sep 8 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.4.tar.gz">Version 0.4</a> released;
changes include: daemon auto spawning, support for <tt>SCHED_FIFO</tt> scheduling, three new modules, proper logging, CPU load watchdog, many fixes.</p>
<div class="news-date">Fri Aug 27 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.3.tar.gz">Version 0.3</a> released;
changes include: support for both glib 2.0 and glib 1.2, future cancellation, API updates, many fixes, relicense client library to LGPL.</p>
<div class="news-date">Fri Aug 20 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.2.tar.gz">Version 0.2</a> released;
changes include: added sample cache, introspection API, client API
documentation, module autoloading, glib support, a module for intercepting X11 bell events, and much more.</p>
<div class="news-date">Sat Jul 17 2004: </div> <p class="news-text"><a
href="@PACKAGE_URL@polypaudio-0.1.tar.gz">Version 0.1</a> released</p>
<h2><a name="overview">Overview</a></h2>
<p><a href="http://pulseaudio.org/">PulseAudio</a> is a networked sound server for Linux and other
Unix like operating systems and Microsoft Windows. It is intended to be an improved drop-in
replacement for the <a
href="http://www.tux.org/~ricdude/apps.html">Enlightened Sound
Daemon</a> (ESOUND). In addition to the features ESOUND provides
PulseAudio has:</p>
<ul>
<li>Extensible plugin architecture (by loading dynamic loadable modules with <tt>dlopen()</tt>)</li>
<li>Support for more than one sink/source</li>
<li>Better low latency behaviour</li>
<li>Embedabble into other software (the core is available as C library)</li>
<li>Completely asynchronous C API</li>
<li>Simple command line interface for reconfiguring the daemon while running</li>
<li>Flexible, implicit sample type conversion and resampling</li>
<li>"Zero-Copy" architecture</li>
<li>Module autoloading</li>
<li>Very accurate latency measurement for playback and recording.</li>
<li>May be used to combine multiple sound cards to one (with sample rate adjustment)</li>
<li>Client side latency interpolation</li>
<li>Ability to fully synchronize multiple playback streams</li>
</ul>
<p>Both the core and the client API are completely asynchronous making
use of a simple main loop abstraction layer. This allows easy
integration with asynchronous applications using the
<tt>glib</tt>/<tt>gtk</tt> mainloop. Since the asynchronous API
available through <tt>libpulse</tt> is quite difficult to use there is
a simplified synchronous API wrapper <tt>libpulse-simple</tt>
available. A simple main loop implementation is available as well.</p>
<p>The following modules are currently available:</p>
<ul>
<li><tt>module-oss</tt>: driver for <a href="http://www.opensound.com">Open Sound System</a> (OSS) audio sinks and sources.</li>
<li><tt>module-oss-mmap</tt>: same as above, but uses <tt>mmap()</tt> access to the audio buffer. Not as compatible bot more accurate in latency calculations</li>
<li><tt>module-alsa-sink</tt>, <tt>module-alsa-source</tt>: drivers for <a href="http://www.alsa-project.org/">Advanced Linux
Sound Architecture</a> (ALSA) sinks and sources</li>
<li><tt>module-solaris</tt>: drivers for Solaris audio sinks and sources</li>
<li><tt>module-waveout</tt>: drivers for Microsoft Windows audio sinks and sources</li>
<li><tt>module-pipe-sink</tt>, <tt>module-pipe-source</tt>: demonstration module providing UNIX FIFOs backed sinks/sources</li>
<li><tt>module-combine</tt>: combine multiple sinks into one, adjusting the sample rate if the their clocks deviate.</li>
<li><tt>module-sine</tt>: a sine generate sink input.</li>
<li><tt>module-x11-bell</tt>: play a sample from the sample cache on every X11 bell event.</li>
<li><tt>module-x11-publish</tt>: store PulseAudio credentials in the X11 root window.</li>
<li><tt>module-esound-protocol-tcp</tt>, <tt>module-esound-protocol-unix</tt>: <a href="http://www.tux.org/~ricdude/apps.html">ESOUND</a> compatibility modules (for TCP/IP resp. UNIX domain sockets)</li>
<li><tt>module-native-protocol-tcp</tt>, <tt>module-native-protocol-unix</tt>: Native PulseAudio protocol (for TCP/IP resp. UNIX domain sockets)</li>
<li><tt>module-simple-protocol-tcp</tt>, <tt>module-simple-protocol-unix</tt>: Simplistic protocol for playback/capture for usage with tools like <tt>netcat</tt> (for TCP/IP resp. UNIX domain sockets)</li>
<li><tt>module-cli-protocol-tcp</tt>, <tt>module-cli-protocol-unix</tt>, <tt>module-cli</tt>: Expose PulseAudio's internals whith a simple command line interface. (for TCP/IP resp. UNIX domain sockets resp. STDIN/STDOUT)</li>
<li><tt>module-http-protocol-tcp</tt>: Spawns a small HTTP server which can be used to introspect the PulseAudio server with a web browser.</li>
<li><tt>module-tunnel-sink</tt>, <tt>module-tunnel-source</tt>: make sinks/sources from other hosts available locally.</li>
<li><tt>module-match</tt>: adjust volume automatically for newly created playback streams based on a regular expression matching table.</li>
<li><tt>module-volume-restore</tt>: much like <tt>module-match</tt>, but create rules fully automatically based on the client name.</li>
<li><tt>module-null-sink</tt>: a clocked sink similar to <tt>/dev/null</tt>.</li>
<li><tt>module-esound-sink</tt>: a sink for forwarding audio data to an <a href="http://www.tux.org/~ricdude/apps.html">ESOUND</a> server.</li>
<li><tt>module-detect</tt>: a module which automatically detects what sound hardware is available locally and which loads the required driver modules.</li>
<li><tt>module-lirc</tt>: a module to control the volume of a sink with infrared remote controls supported by LIRC.</li>
<li><tt>module-mmkbd-evdev</tt>: a module to control the volume of a sink with the special volume keys of a multimeda keyboard.</li>
<li><tt>module-zeroconf-publish</tt>: a module to publish local sources/sinks using mDNS zeroconf.</li>
<li><tt>module-rtp-send</tt>, <tt>module-rtp-recv</tt>: modules to implement RTP/SAP/SDP based audio streaming.</li>
<li><tt>module-jack-sink</tt>, <tt>module-jack-source</tt>: connect to a <a href="http://jackit.sourceforge.net/">JACK Audio Connection Kit</a> server. (A sound server for professional audio production)</li>
</ul>
<p>A GTK GUI manager application for PulseAudio is the <a
href="http://0pointer.de/lennart/projects/paman/">PulseAudio
Manager</a>. Other GTK GUI tool for PulseAudio are the <a
href="http://0pointer.de/lennart/projects/pavumeter">PulseAudio Volume
Meter</a>, <a
href="http://0pointer.de/lennart/projects/padevchooser">PulseAudio Device Chooser</a> and the <a
href="http://0pointer.de/lennart/projects/pavucontrol">PulseAudio Volume
Control</a> .</p>
<p>There are output plugins for <a
href="http://0pointer.de/lennart/projects/xmms-pulse/">XMMS</a>, <a
href="http://0pointer.de/lennart/projects/libao-pulse/">libao</a>
(merged in <tt>libao</tt> SVN) and <a
href="http://0pointer.de/lennart/projects/gst-pulse/">gstreamer</a>
(merged in <tt>gstreamer-plugins</tt> CVS).</p>
<p>PulseAudio was formerly known as Polypaudio.</p>
<h2><a name="status">Current Status</a></h2>
<p>Version @PACKAGE_VERSION@ is quite usable. It matches and supersedes ESOUND's feature set in nearly all areas.</p>
<h2><a name="documentation">Documentation</a></h2>
<p>There is some preliminary documentation available: <a
href="modules.html"><tt>modules.html</tt></a>, <a
href="cli.html"><tt>cli.html</tt></a>, <a
href="daemon.html"><tt>daemon.html</tt></a> and <a href="FAQ.html"><tt>FAQ.html</tt></a>.</p>
<p>There is a <a href="http://www.edgewall.com/products/trac/">Trac</a> based <a href="http://0pointer.de/trac/pulseaudio/">Wiki for PulseAudio</a> available.</p>
<h3>First Steps</h3>
<p>Simply start the PulseAudio daemon with the argument <tt>-nC</tt></p>
<pre>pulseaudio -nC</pre>
<p>This will present you a screen like this:</p>
<pre>Welcome to PulseAudio! Use "help" for usage information.
&gt;&gt;&gt; </pre>
<p>Now you can issue CLI commands as described in <a
href="cli.html"><tt>cli.html</tt></a>. Another way to start
PulseAudio is by specifying a configuration script like that one included in the distribution on the
command line :</p>
<pre>pulseaudio -nF pulseaudio.pa</pre>
<p>This will load some drivers and protocols automatically.</p>
<p>The best idea is to configure your daemon in <tt>/etc/pulse/daemon.conf</tt> and <tt>/etc/pulse/default.pa</tt> and to run PulseAudio without any arguments.</p>
<p><b>Beware!</b> Unless you pass the option <tt>--sysconfdir=/etc</tt> to
<tt>configure</tt>, the directory <tt>/etc/pulse/</tt> is really
<tt>/usr/local/etc/pulse/</tt>.</p>
<h3>Developing PulseAudio Clients</h3>
<p>You may browse the <a href="http://www.doxygen.org/">Doxygen</a> generated <a
href="http://0pointer.de/lennart/projects/pulseaudio/doxygen/">programing
documentation</a> for the client API. (Run <tt>make doxygen</tt> to generate this documentation from the source tree)</p>
<h3>Developing PulseAudio Modules</h3>
<p>There are several reasons for writing loadable modules for PulseAudio:</p>
<ul>
<li>Extended device driver support</li>
<li>Protocol support beyond ESOUND's protocol and the native protocol. (such as NAS or a subset of aRts)</li>
<li>New programming interfaces such as XMLRPC or DBUS for controlling the daemon.</li>
<li>Hooking audio event sources directly into PulseAudio (similar to <tt>module-x11-bell</tt>)</li>
<li>For low latency applications such as VOIP: load the VOIP core directly into PulseAudio and have a slim GUI frontend to control it.</li>
</ul>
<p>There is currently no documentation how to write loadable modules
for PulseAudio. <i>Read the source, Luke!</i> If you are interested in
writing new modules feel free to contact the author in case you have any
questions.</p>
<h2><a name="requirements">Requirements</a></h2>
<p>Currently, PulseAudio> is tested on Linux, FreeBSD, Solaris and Microsoft Windows. It requires an OSS, ALSA, Win32 or Solaris compatible soundcard.</p>
<p>PulseAudio was developed and tested on Debian GNU/Linux
"testing" from November 2004, it should work on most other Linux
distributions (and maybe Unix versions) since it uses GNU autoconf and
GNU libtool for source code configuration and shared library
management.</p>
<p>Pulseaudio needs <a
href="http://www.mega-nerd.com/SRC/">Secret Rabbit Code (aka
<tt>libsamplerate</tt>)</a>, <a
href="http://www.mega-nerd.com/libsndfile"><tt>libsndfile</tt></a>, <a
href="http://liboil.freedesktop.org/wiki/"><tt>liboil</tt></a>.</p>
<p>Optionally it can make use of <tt>libwrap</tt>, <a
href="http://www.alsa-project.org/">alsa-lib</a>, <a
href="http://0pointer.de/lennart/projects/libasyncns/">libasyncns</a>,
<a href="http://www.lirc.org/">lirc</a>, <a href="http://www.porchdogsoft.com/products/howl/">HOWL</a> (or preferably the compatibility layer included in its superior replacement <a href="http://www.avahi.org/">Avahi</a>) and <a
href="http://www.gtk.org/">GLIB</a>. (The latter is required for
building the GLIB main loop integration module only.)</p>
<h2><a name="installation">Installation</a></h2>
<p>As this package is made with the GNU autotools you should run
<tt>./configure</tt> inside the distribution directory for configuring
the source tree. After that you should run <tt>make</tt> for
compilation and <tt>make install</tt> (as root) for installation of
PulseAudio.</p>
<h2><a name="acks">Acknowledgements</a></h2>
<p>Eric B. Mitchell for writing ESOUND</p>
<p>Jeff Waugh for creating Ubuntu packages (and hopefully soon Debian)</p>
<p>Miguel Freitas for writing a PulseAudio driver for Xine</p>
<p>Joe Marcus Clarke for porting PulseAudio to FreeBSD</p>
<p><a href="http://www.cendio.com">Cendio AB</a> for paying for Pierre's work on PulseAudio</p>
<p>Sebastien ESTIENNE for testing</p>
<p>Igor Zubkov for some portability patches</p>
<p>Jan Schmidt for some latency interpolation love</p>
<h2><a name="download">Download</a></h2>
<p>The newest release is always available from <a href="@PACKAGE_URL@">@PACKAGE_URL@</a></p>
<p>The current release is <a href="@PACKAGE_URL@pulseaudio-@PACKAGE_VERSION@.tar.gz">@PACKAGE_VERSION@</a></p>
<p>Get PulseAudio's development sources from the <a href="http://subversion.tigris.org/">Subversion</a> <a href="svn://0pointer.de/pulseaudio">repository</a> (<a href="http://0pointer.de/cgi-bin/viewcvs.cgi/?root=pulseaudio">ViewCVS</a>, <a href="http://pulseaudio.org/browser/trunk">Trac</a>): </p>
<pre>svn checkout svn://0pointer.de/pulseaudio/trunk pulseaudio</pre>
<h2><a name="community">Community</a></h2>
<p>If you want to be notified whenever I release a new version of this software use the subscription feature of <a href="http://freshmeat.net/projects/pulseaudio/">Freshmeat</a>.</p>
<p>There is a general discussion <a href="https://tango.0pointer.de/mailman/listinfo/pulseaudio-discuss">mailing list for PulseAudio</a> available. In addition, you can subscribe to <a href="https://tango.0pointer.de/mailman/listinfo/pulseaudio-commits">SVN changes</a> and <a href="https://tango.0pointer.de/mailman/listinfo/pulseaudio-tickets">Trac Tickets</a>.</p>
<p>PulseAudio is being tracked at <a href="http://cia.navi.cx/stats/project/polypaudio">CIA</a>.</p>
<p>There's a chance to meet the PulseAudio developers on our <a href="irc://irc.freenode.org/pulseaudio">IRC channel #pulseaudio on irc.freenode.org</a>.</p>
<p>The main project homepage is <a href="http://pulseaudio.org/">http://pulseaudio.org/</a>.</p>
<p><b>Please report bugs to <a href="http://pulseaudio.org/newticket">our Trac ticket system</a>.</b></p>
<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, July 2006</address>
<div class="grey"><i>$Id$</i></div>
</body>
</html>

View file

@ -1,220 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PulseAudio: Simple Command Line Language</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Simple Command Line Language</h1>
<p>PulseAudio provides a simple command line language used by
configuration scripts as well as the modules <tt>module-cli</tt>
and <tt>module-cli-protocol-{unix,tcp}</tt>. Empty lines and lines
beginning with a hashmark (<tt>#</tt>) are silently ignored. Several
commands are supported:</p>
<h2>Miscellaneous Commands</h2>
<h3><tt>help</tt></h3>
<p>Show a quick help on the commands available.</p>
<h3><tt>exit</tt></h3>
<p>Terminate the daemon. If you want to terminate a CLI connection
("log out") you might want to use <tt>C-d</tt>.</p>
<h2>Status Commands</h2>
<h3><tt>list-modules</tt></h3>
<p>Show all currently loaded modules with their arguments.</p>
<h3><tt>list-sinks/list-sources</tt></h3>
<p>Show all currently registered sinks (resp. sources).</p>
<h3><tt>list-clients</tt></h3>
<p>Show all currently active clients.</p>
<h3><tt>list-sink-inputs/list-sink-outputs</tt></h3>
<p>Show all currently active inputs to sinks (resp. outputs of sources).</p>
<h3><tt>stat</tt></h3>
<p>Show some simple statistics about the allocated memory blocks and
the space used by them.</p>
<h3><tt>info</tt></h3>
<p>A combination of all status commands described above. <tt>ls</tt>
and <tt>list</tt> are synonyms for <tt>info</tt>.</p>
<h2>Module Management</h2>
<h3><tt>load-module</tt></h3>
<p>Load a module specified by its name and arguments. For most modules
it is OK to be loaded more than once.</p>
<h3><tt>unload-module</tt></h3>
<p>Unload a module specified by its index in the module list as
returned by <tt>modules</tt>.</p>
<h2>Configuration Commands</h2>
<h3><tt>set-sink-volume</tt>/<tt>set-source-volume</tt></h3>
<p>Set the volume of the specified sink or source. You may specify the sink/source either
by its index in the sink/source list or by its name. The volume should be an
integer value greater or equal than 0 (= muted). Volume 65536
(<tt>0x10000</tt>) is normal volume, values greater than this amplify
the audio signal (with clipping).</p>
<h3><tt>set-sink-mute</tt>/<tt>set-source-mute</tt></h3>
<p>Mute or unmute the specified sink our source. You may specify the
sink/source either by its index or by its name. The mute value is
either 0 or 1.</p>
<h3><tt>set-sink-input-volume</tt></h3>
<p>Set the volume of a sink input specified by its index the the sink
input list. The same volume rules apply as with <tt>sink_volume</tt>.</p>
<h3><tt>set-default-sink</tt>/<tt>set-default-source</tt></h3>
<p>Make a sink (resp. source) the default. You may specify the sink
(resp. ssource) by its index in the sink (resp. source) list or by its
name.</p>
<h2>Sample Cache</h2>
<h3><tt>list-samples</tt></h3>
<p>Lists the contents of the sample cache.</p>
<h3><tt>play-sample</tt></h3>
<p>Play a sample cache entry to a sink. Expects the sample name and the sink name as arguments.</p>
<h3><tt>remove-sample</tt></h3>
<p>Remove an entry from the sample cache. Expects the sample name as argument.</p>
<h3><tt>load-sample</tt></h3>
<p>Load an audio file to the sample cache. Expects the file name to load and the desired sample name as arguments.</p>
<h3><tt>load-sample-lazy</tt></h3>
<p>Create a new entry in the sample cache, but don't load the sample
immediately. The sample is loaded only when it is first used. After a
certain idle time it is freed again. Expects the the desired sample
name and file name to load as arguments.</p>
<h3><tt>load-sample-dir-lazy</tt></h3>
<p>Load all entries in the specified directory into the sample cache
as lazy entries. A shell globbing expression (e.g. <tt>*.wav</tt>) may
be appended to the path of the directory to add.</p>
<h2>Module Autoloading</h2>
<h3><tt>list-autoload</tt></h3>
<p>Lists all currently defined autoloading entries.</p>
<h3><tt>add-autoload-sink/add-autoload-source</tt></h3>
<p>Adds an autoloading entry for a sink (resp. source). Expects the sink name (resp. source name), the module name and the module arguments as arguments.</p>
<h3><tt>remove-autoload-sink/remove-autoload-source</tt></h3>
<p>Remove an autoloading entry. Expects the sink name (resp. source name) as argument.</p>
<h2>Miscellaneous Commands</h2>
<h3><tt>play-file</tt></h3>
<p>Play an audio file to a sink. Expects the file name and the sink name as argumens.</p>
<h3><tt>dump</tt></h3>
<p>Dump the daemon's current configuration in CLI commands.</p>
<h2>Killing Clients/Streams</h2>
<h3><tt>kill-client</tt></h3>
<p>Remove a client forcibly from the server. There is no protection that
the client reconnects immediately.</p>
<h3><tt>kill-sink-input/kill-source-output</tt></h3>
<p>Remove a sink input (resp. source output) forcibly from the
server. This will not remove the owning client or any other streams
opened by the client from the server.</p>
<h2>Meta Commands</h2>
<p>In addition the the commands described above there a few meta
directives supported by the command line interpreter:</p>
<h3><tt>.include</tt></h3>
<p>Executes the commands from the specified script file.</p>
<h3><tt>.fail/.nofail</tt></h3>
<p>Enable (resp. disable) that following failing commands will cancel
the execution of the current script file. This is a ignored when used
on the interactive command line.</p>
<h3><tt>.verbose/.noverbose</tt></h3>
<p>Enable (resp. disable) extra verbosity.</p>
<h2>Example Configuration Script</h2>
<p>Mark the following script as executable (<tt>chmod +x</tt>) and run it for a sensible PulseAudio configuration.</p>
<pre>
#!/usr/bin/polaudio -nF
# Create autoload entries for the device drivers
add-autoload-sink output module-alsa-sink device=plughw:0,0 rate=48000 sink_name=output
add-autoload-sink output2 module-oss device=/dev/dsp1 record=0 sink_name=output2
add-autoload-sink combined module-combine master=output slaves=output2 sink_name=combined
add-autoload-source input module-alsa-source device=hw:1,0 source_name=input
# Load several protocols
load-module module-esound-protocol-unix
load-module module-simple-protocol-tcp
load-module module-native-protocol-unix
load-module module-cli-protocol-unix
# Make some devices default
set-default-sink combined
set-default-source input
# Don't fail if the audio files referred to below don't exist
.nofail
# Load an audio to the sample cache for usage with module-x11-bell
load-sample-lazy /usr/share/sounds/KDE_Notify.wav x11-bell
load-module module-x11-bell sample=x11-bell
# Play a welcome sound
play-file /usr/share/sounds/startup3.wav combined
</pre>
<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, June 2006</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>

View file

@ -1,88 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PulseAudio: Daemon</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Daemon</h1>
<h2>Command Line Arguments</h2>
The PulseAudio daemon accepts several command line arguments:
<pre>
COMMANDS:
-h, --help Show this help
--version Show version
--dump-conf Dump default configuration
--dump-modules Dump list of available modules
-k --kill Kill a running daemon
--check Check for a running daemon
OPTIONS:
-D, --daemonize[=BOOL] Daemonize after startup
--fail[=BOOL] Quit when startup fails
--verbose[=BOOL] Be slightly more verbose
--high-priority[=BOOL] Try to set high process priority
(only available as root)
--disallow-module-loading[=BOOL] Disallow module loading after startup
--exit-idle-time=SECS Terminate the daemon when idle and this
time passed
--module-idle-time=SECS Unload autoloaded modules when idle and
this time passed
--scache-idle-time=SECS Unload autoloaded samples when idle and
this time passed
--log-target={auto,syslog,stderr} Specify the log target
-p, --dl-search-path=PATH Set the search path for dynamic shared
objects (plugins)
--resample-method=[METHOD] Use the specified resampling method
(one of src-sinc-medium-quality,
src-sinc-best-quality,src-sinc-fastest
src-zero-order-hold,src-linear,trivial)
--use-pid-file[=BOOL] Create a PID file
STARTUP SCRIPT:
-L, --load="MODULE ARGUMENTS" Load the specified plugin module with
the specified argument
-F, --file=FILENAME Run the specified script
-C Open a command line on the running TTY
after startup
-n Don't load default script file
</pre>
<h3>Example</h3>
<p>It is a good idea to run the daemon like this:</p>
<pre>pulseaudio -D</pre>
<p>This will run <tt>/etc/pulse/default.pa</tt> after startup. This should be a script written in the CLI language described in <a href="cli.html">cli.html</a>. </p>
<h2>Signals</h2>
<p>The following signals are trapped specially:</p>
<h3>SIGINT</h3>
<p>The daemon is shut down cleanly.</p>
<h3>SIGUSR1</h3>
<p>The daemon tries to load the module <a href="modules.html#module-cli"><tt>module-cli</tt></a>, effectively providing a command line interface on the calling TTY.</p>
<h3>SIGUSR2</h3>
<p>The daemon tries to load the module <a href="modules.html#module-cli-protocol-unix"><tt>module-cli-protocol-unix</tt></a>, effectively providing a command line interface on a special UNIX domain socket.</p>
<h3>SIGHUP</h3>
<p>The daemon logs the current server layout.</p>
<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, June 2006</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>

View file

@ -1,510 +0,0 @@
<?xml version="1.0" encoding="iso-8859-1"?> <!-- -*-html-helper-*- -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>PulseAudio: Loadable Modules</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Loadable Modules</h1>
<p>The following loadable modules are provided with the PulseAudio distribution:</p>
<h2>Device Drivers</h2>
<p>All device driver modules support the following parameters:</p>
<table>
<tr><td><tt>format=</tt></td><td>The sample format (one of <tt>u8</tt>, <tt>s16</tt>, <tt>s16le</tt>, <tt>s16le</tt>, <tt>float32</tt>, <tt>float32be</tt>, <tt>float32le</tt>, <tt>alaw</tt>, <tt>ulaw</tt>) (defaults to <tt>s16</tt>)</td></tr>
<tr><td><tt>rate=</tt></td><td>The sample rate (defaults to 44100)</td></tr>
<tr><td><tt>channels=</tt></td><td>Audio channels (defaults to 2)</td></tr>
<tr><td><tt>sink_name=</tt>, <tt>source_name=</tt></td><td>Name for the sink (resp. source)</td></tr>
<tr><td><tt>channel_map=</tt></td><td>Channel map. A list of
comma-seperated channel names. The currently defined channel names
are: <tt>left</tt>, <tt>right</tt>, <tt>mono</tt>, <tt>center</tt>,
<tt>front-left</tt>, <tt>front-right</tt>, <tt>front-center</tt>,
<tt>rear-center</tt>, <tt>rear-left</tt>, <tt>rear-right</tt>,
<tt>lfe</tt>, <tt>subwoofer</tt>, <tt>front-left-of-center</tt>,
<tt>front-right-of-center</tt>, <tt>side-left</tt>,
<tt>side-right</tt>, <tt>aux0</tt>, <tt>aux1</tt> to <tt>aux15</tt>,
<tt>top-center</tt>, <tt>top-front-left</tt>,
<tt>top-front-right</tt>, <tt>top-front-center</tt>,
<tt>top-rear-left</tt>, <tt>top-rear-right</tt>,
<tt>top-rear-center</tt>, (Default depends on the number of channels
and the driver)</td></tr> </table>
<h3>module-pipe-sink</h3>
<p>Provides a simple test sink that writes the audio data to a FIFO
special file in the file system. The sink name defaults to <tt>pipe_output</tt>.</p>
<p>The following option is supported:</p>
<table>
<tr><td><tt>file=</tt></td><td>The name of the FIFO special file to use. (defaults to: <tt>/tmp/music.output</tt>)</td></tr>
</table>
<h3>module-pipe-source</h3>
<p>Provides a simple test source that reads the audio data from a FIFO
special file in the file system. The source name defaults to <tt>pipe_input</tt>.</p>
<p>The following option is supported:</p>
<table>
<tr><td><tt>file=</tt></td><td>The name of the FIFO special file to use. (defaults to: <tt>/tmp/music.input</tt>)</td></tr>
</table>
<h3>module-null-sink</h3>
<p>Provides a simple null sink. All data written to this sink is silently dropped. This sink is clocked using the system time.</p>
<p>This module doesn't support any special parameters</p>
<a name="module-alsa-sink"/>
<h3>module-alsa-sink</h3>
<p>Provides a playback sink for devices supported by the <a href="http://www.alsa-project.org/">Advanced Linux
Sound Architecture</a> (ALSA). The sink name defaults to <tt>alsa_output</tt>.</p>
<p>In addition to the general device driver options described above this module supports:</p>
<table>
<tr><td><tt>device=</tt></td><td>The ALSA device to use. (defaults to "plughw:0,0")</td></tr>
<tr><td><tt>fragments=</tt></td><td>The desired fragments when opening the device. (defaults to 12)</td></tr>
<tr><td><tt>fragment_size=</tt></td><td>The desired fragment size in bytes when opening the device (defaults to 1024)</td></tr>
</table>
<h3>module-alsa-source</h3>
<p>Provides a recording source for devices supported by the Advanced
Linux Sound Architecture (ALSA). The source name defaults to <tt>alsa_input</tt>.</p>
<p>This module supports <tt>device=</tt>, <tt>fragments=</tt> and <tt>fragment_size=</tt> arguments the same way as <a href="#module-alsa-sink"><tt>module-alsa-sink</tt></a>.</p>
<a name="module-oss"/>
<h3>module-oss</h3>
<p>Provides both a sink and a source for playback, resp. recording on
<a href="http://www.opensound.com">Open Sound System</a> (OSS) compatible devices.</p>
<p>This module supports <tt>device=</tt> (which defaults to <tt>/dev/dsp</tt>), <tt>fragments=</tt> and <tt>fragment_size=</tt> arguments the same way as <a href="#module-alsa-sink"><tt>module-alsa-sink</tt></a>.</p>
<p>In addition this module supports the following options:</p>
<table>
<tr><td><tt>record=</tt></td><td>Accepts a binary numerical value for enabling (resp. disabling) the recording on this device. (defaults: to 1)</td></tr>
<tr><td><tt>playback=</tt></td><td>Accepts a binary numerical value for enabling (resp. disabling) the playback on this device. (defaults: to 1)</td></tr>
</table>
<p>The sink name (resp. source name) defaults to <tt>oss_output</tt> (resp. <tt>oss_input</tt>).</p>
<h3>module-oss-mmap</h3>
<p>Similar to <tt>module-oss</tt> but uses memory mapped
(<tt>mmap()</tt>) access to the input/output buffers of the audio
device. This provides better latency behaviour but is not as
compatible as <tt>module-oss</tt>.</p>
<p>This module accepts exactly the same arguments as <a href="#module-oss"><tt>module-oss</tt></a>.</p>
<h3>module-solaris</h3>
<P>Provides a sink and source for the Solaris audio device.</p>
<p>In addition to the general device driver options described above this module supports:</p>
<table>
<tr><td><tt>record=</tt></td><td>Accepts a binary numerical value for enabling (resp. disabling) the recording on this device. (defaults: to 1)</td></tr>
<tr><td><tt>playback=</tt></td><td>Accepts a binary numerical value for enabling (resp. disabling) the playback on this device. (defaults: to 1)</td></tr>
<tr><td><tt>buffer_size=</tt></td><td>Record buffer size</td></tr>
</table>
<h3>module-waveout</h3>
<P>Provides a sink and source for the Win32 audio device.</p>
<p>This module supports all arguments thet <tt>module-oss</tt> supports except <tt>device=</tt>.</p>
<a name="module-combine"/>
<h3>module-combine</h3>
<p>This combines two or more sinks into one. A new virtual sink is
allocated. All data written to it is forwarded to all connected
sinks. In aequidistant intervals the sample rates of the output sinks
is recalculated: i.e. even when the sinks' crystals deviate (which is
normally the case) output appears synchronously to the human ear. The
resampling required for this may be very CPU intensive.</p>
<table>
<tr><td><tt>sink_name=</tt></td><td>The name for the combined sink. (defaults to <tt>combined</tt>)</td></tr>
<tr><td><tt>master=</tt></td><td>The name of the first sink to link into the combined think. The sample rate/type is taken from this sink.</td></tr>
<tr><td><tt>slaves=</tt></td><td>Name of additional sinks to link into the combined think, seperated by commas.</td></tr>
<tr><td><tt>adjust_time=</tt></td><td>Time in seconds when to readjust the sample rate of all sinks. (defaults to 20)</td></tr>
<tr><td><tt>resample_method=</tt></td><td>Resampling algorithm to
use. See <tt>libsamplerate</tt>'s documentation for more
information. Use one of <tt>sinc-best-quality</tt>,
<tt>sinc-medium-quality</tt>, <tt>sinc-fastest</tt>,
<tt>zero-order-hold</tt>, <tt>linear</tt>. If the default happens to
be to slow on your machine try using <tt>zero-order-hold</tt>. This
will decrease output quality however. (defaults to
<tt>sinc-fastest</tt>)</td></tr> </table>
<h3>module-tunnel-{sink,source}</h3>
<p>Tunnel a remote sink/source to a local "ghost"
sink/source. Requires a running PulseAudio daemon on the remote server
with <tt>module-native-protocol-tcp</tt> loaded. It's probably a
better idea to connect to the remote sink/source directly since some
buffer control is lost through this tunneling.</p>
<table>
<tr><td><tt>server=</tt></td><td>The server to connect to</td></tr>
<tr><td><tt>source=</tt></td><td>The source on the remote server. Only available for <tt>module-tunnel-source</tt>.</td></tr>
<tr><td><tt>sink=</tt></td><td>The sink on the remote server. Only available for <tt>module-tunnel-sink</tt>.</td></tr>
<tr><td><tt>cookie=</tt></td><td>The authentication cookie file to use.</td></tr>
</table>
<h3>module-esound-sink</h3>
<p>Create a playback sink using an <a href="http://www.tux.org/~ricdude/apps.html">ESOUND</a> server as backend. Whenever you can, try to omit this
module since it has many disadvantages including bad latency
and even worse latency measurement. </p>
<table>
<tr><td><tt>server=</tt></td><td>The server to connect to</td></tr>
<tr><td><tt>cookie=</tt></td><td>The authentication cookie file to use.</td></tr>
</table>
<h2>Protocols</h2>
<a name="module-cli"/>
<h3>module-cli</h3>
<p>Provides the user with a simple command line interface on the
controlling TTY of the daemon. This module may not be loaded more than
once.</p>
<p>For an explanation of the simple command line language used by this
module see <a href="cli.html"><tt>cli.html</tt></a>.
<table>
<tr><td><tt>exit_on_eof=</tt></td><td>Accepts a binary numerical argument specifying whether the daemon shuld exit after an EOF was recieved from STDIN (default: 0)</td></tr>
</table>
<a name="module-cli-protocol-unix"/>
<a name="module-cli-protocol-tcp"/>
<a name="module-cli-protocol"/>
<h3>module-cli-protocol-{unix,tcp}</h3>
<p>An implemenation of a simple command line based protocol for
controlling the PulseAudio daemon. If loaded, the user may
connect with tools like <tt>netcat</tt>, <tt>telnet</tt> or
<a href="http://0pointer.de/lennart/projects/bidilink/"><tt>bidilink</tt></a> to the listening sockets and execute commands the
same way as with <tt>module-cli</tt>.</p>
<p><b>Beware!</b> Users are not authenticated when connecting to this
service.</p>
<p>This module exists in two versions: with the suffix <tt>-unix</tt>
the service will listen on an UNIX domain socket in the local file
system. With the suffix <tt>-tcp</tt> it will listen on a network
transparent TCP/IP socket. (Both IPv6 and IPv4 - if available)</p>
<p>This module supports the following options:</p>
<table>
<tr><td><tt>port=</tt></td><td>(only for <tt>-tcp</tt>) The port number to listen on (defaults to 4712)</td></tr>
<tr><td><tt>loopback=</tt></td><td>(only for <tt>-tcp</tt>) Accepts
a numerical binary value. If 1 the socket is bound to the loopback
device, i.e. not publicly accessible. (defaults to 1)</td></tr>
<tr><td><tt>listen=</tt></td><td>(only for <tt>-tcp</tt>) The IP address to listen on. If specified, supersedes the value specified in <tt>loopback=</tt></td></tr>
<tr><td><tt>socket=</tt></td><td>(only for <tt>-unix</tt>) The UNIX socket name (defaults to <tt>/tmp/pulse/cli</tt>)</td></tr>
</table>
<h3>module-simple-protocol-{unix,tcp}</h3>
<p>An implementation of a simple protocol which allows playback by using
simple tools like <tt>netcat</tt>. Just connect to the listening
socket of this module and write the audio data to it, or read it from
it for playback, resp. recording.</p>
<p><b>Beware!</b> Users are not authenticated when connecting to this
service.</p>
<p>See <tt>module-cli-protocol-{unix,tcp}</tt> for more information
about the two possible suffixes of this module.</p>
<p>In addition to the options supported by <a href="module-cli-protocol"><tt>module-cli-protocol-*</tt></a>, this module supports:</p>
<table>
<tr><td><tt>rate=</tt>, <tt>format=</tt>, <tt>channels=</tt></td><td>Sample format for streams connecting to this service.</td></tr>
<tr><td><tt>playback=</tt>, <tt>record=</tt></td><td>Enable/disable playback/recording</td></tr>
<tr><td><tt>sink=</tt>, <tt>source=</tt></td><td>Specify the sink/source this service connects to</td></tr>
</table>
<h3>module-esound-protocol-{unix,tcp}</h3>
<p>An implemenation of a protocol compatible with the <a
href="http://www.tux.org/~ricdude/EsounD.html">Enlightened Sound
Daemon</a> (ESOUND, <tt>esd</tt>). When you load this module you may
access the PulseAudio daemon with tools like <tt>esdcat</tt>,
<tt>esdrec</tt> or even <tt>esdctl</tt>. Many applications, such as
XMMS, include support for this protocol.</p>
<p>See <tt>module-cli-protocol-{unix,tcp}</tt> for more information
about the two possible suffixes of this module.</p>
<p>In addition to the options supported by <a href="module-cli-protocol"><tt>module-cli-protocol-*</tt></a>, this module supports:</p>
<table>
<tr><td><tt>sink=</tt>, <tt>source=</tt></td><td>Specify the sink/source this service connects to</td></tr>
<tr><td><tt>auth-anonymous=</tt></td><td>If set to 1 no authentication is required to connect to the service</td></tr>
<tr><td><tt>cookie=</tt></td><td>Name of the cookie file for authentication purposes</td></tr>
</table>
<p>This implementation misses some features the original ESOUND has: e.g. there is no sample cache yet. However: XMMS works fine.</p>
<h3>module-native-protocol-{unix,tcp}</h3>
<p>The native protocol of PulseAudio.</p>
<p>See <tt>module-cli-protocol-{unix,tcp}</tt> for more information
about the two possible suffixes of this module.</p>
<p>In addition to the options supported by <a href="module-cli-protocol"><tt>module-cli-protocol-*</tt></a>, this module supports:</p>
<table>
<tr><td><tt>auth-anonymous=</tt></td><td>If set to 1 no authentication is required to connect to the service</td></tr>
<tr><td><tt>auth-group=</tt></td><td>(only for <tt>-unix</tt>): members of the specified unix group may access the server without further auhentication.</td></tr>
<tr><td><tt>cookie=</tt></td><td>Name of the cookie file for authentication purposes</td></tr>
</table>
<h3>module-native-protocol-fd</h3>
<p>This is used internally when auto spawning a new daemon. Don't use it directly.</p>
<h3>module-http-protocol-tcp</h3>
<p>A proof-of-concept HTTP module, which can be used to introspect
the current status of the PulseAudio daemon using HTTP. Just load this
module and point your browser to <a
href="http://localhost:4714/">http://localhost:4714/</a>. This module takes the same arguments
as <tt>module-cli-protocol-tcp</tt>.</p>
<h2>X Window System</h2>
<h3>module-x11-bell</h3>
<p>Intercepts X11 bell events and plays a sample from the sample cache on each occurence.</p>
<table>
<tr><td><tt>display=</tt></td><td>X11 display to connect to. If ommited defaults to the value of <tt>$DISPLAY</tt></td></tr>
<tr><td><tt>sample=</tt></td><td>The sample to play. If ommited defaults to <tt>x11-bell</tt>.</td></tr>
<tr><td><tt>sink=</tt></td><td>Name of the sink to play the sample on. If ommited defaults to the default sink.</td></tr>
</table>
<h3>module-x11-publish</h3>
<p>Publishes the access credentials to the PulseAudio server in the
X11 root window. The following properties are used:
<tt>PULSE_SERVER</tt>, <tt>POYLP_SINK</tt>, <tt>PULSE_SOURCE</tt>,
<tt>PULSE_COOKIE</tt>. This is very useful when using SSH or any other
remote login tool for logging into other machines and getting audio
playback to your local speakers. The PulseAudio client libraries make
use of this data automatically. Instead of using this module you may
use the tool <tt>pax11publish</tt> which may be used to access, modify
and import credential data from/to the X11 display.</p>
<table>
<tr><td><tt>display=</tt></td><td>X11 display to connect to. If ommited defaults to the value of <tt>$DISPLAY</tt></td></tr>
<tr><td><tt>sink=</tt></td><td>Name of the default sink. If ommited this property isn't stored in the X11 display.</td></tr>
<tr><td><tt>source=</tt></td><td>Name of the default source. If ommited this property isn't stored in the X11 display.</td></tr>
<tr><td><tt>cookie=</tt></td><td>Name of the cookie file of the
cookie to store in the X11 display. If ommited the cookie of an
already loaded protocol module is used.</td></tr> </table>
<h2>Volume Control</h2>
<h3>module-mmkbd-evdev</h3>
<p>Adjust the volume of a sink when the special multimedia buttons of modern keyboards are pressed.</p>
<table>
<tr><td><tt>device=</tt></td><td>Linux input device ("<tt>evdev</tt>", defaults to <tt>/dev/input/event0</tt>)</td></tr>
<tr><td><tt>sink=</tt></td><td>The sink to control</td></tr>
</table>
<h3>module-lirc</h3>
<p>Adjust the volume of a sink when the volume buttons of an infrared remote control are pressed (through LIRC).</p>
<table>
<tr><td><tt>config=</tt></td><td>The LIRC configuration file</td></tr>
<tr><td><tt>appname=</tt></td><td>The application name to pass to LIRC (defaults to <tt>pulseaudio</tt>)</td></tr>
<tr><td><tt>sink=</tt></td><td>The sink to control</td></tr>
</table>
<a name="rtp"/>
<h2>RTP/SDP/SAP Transport</h2>
<p>PulseAudio can stream audio data to an IP multicast group via the
standard protocols <a
href="http://en.wikipedia.org/wiki/Real-time_Transport_Protocol">RTP</a>,
<a
href="http://en.wikipedia.org/wiki/Session_Announcement_Protocol">SAP</a>
and <a
href="http://en.wikipedia.org/wiki/Session_Description_Protocol">SDP</a>
(RFC3550, RFC3551, RFC2327, RFC2327). This can be used for multiple
different purposes: for sharing a single microphone on multiple
computers on the local LAN, for streaming music from a single
controlling PC to multiple PCs with speakers or to implement a simple
"always-on" teleconferencing solution.</p>
<p>The current implementation is designed to be used exlusively in
local area networks, though Internet multicasting is theoretically
supported. Only uncompressed audio is supported, hence you won't be
able to multicast more than a few streams at the same time over a
standard LAN.</p>
<p>PulseAudio implements both a sender and a reciever for RTP
traffic. The sender announces itself via SAP/SDP on the same multicast
group as it sends the RTP data to. The reciever picks up the SAP/SDP
announcements and creates a playback stream for each
session. Alternatively you can use any RTP capable client to
recieve and play back the RTP data (such as <tt>mplayer</tt>).</p>
<h3>module-rtp-send</h3>
<p>This is the sender side of the RTP/SDP/SAP implementation. It reads
audio data from an existing source and forwards it to the network
encapsulated in RTP. In addition it sends SAP packets with an SDP
session description.</p>
<p>In combination with the monitor source of <tt>module-null-sink</tt>
you can use this module to create an RTP sink.</p>
<table>
<tr><td><tt>source=</tt></td><td>The source to read the audio data from. If ommited defaults to the default source.</td></tr>
<tr><td><tt>format=, rate=, channels=</tt></td><td>Sample format to use, defaults to the source's.</td></tr>
<tr><td><tt>destination=</tt></td><td>Destination multicast group for both RTP and SAP packets, defaults to <tt>224.0.0.56</tt></td></tr>
<tr><td><tt>port=</tt></td><td>Destination port number of the RTP
traffic. If ommited defaults to a randomly chosen even port
number. Please keep in mind that the RFC suggests to use only even
port numbers for RTP traffic.</td></tr>
<tr><td><tt>mtu=</tt></td><td>Maximum payload size for RTP packets. If ommited defaults to 1280</td></tr>
<tr><td><tt>loop=</tt></td><td>Takes a boolean value, specifying whether locally generated RTP traffic should be looped back to the local host. Disabled by default.</td></tr>
</table>
<h3>module-rtp-recv</h3>
<p>This is the reciever side of the RTP/SDP/SAP implementation. It
picks up SAP session announcements and creates an RTP playback stream
for each.</p>
<p>In combination with <tt>module-null-sink</tt> you can use this
module to create an RTP source.</p>
<table>
<tr><td><tt>sink=</tt></td><td>The sink to connect to. If ommited defaults to the default sink.</td></tr>
<tr><td><tt>sap_address=</tt></td><td>The multicast group to join for SAP announcements, defaults to <tt>224.0.0.56</tt>.</td></tr>
</table>
<h2>JACK Connectivity</h2>
<p>PulseAudio can be hooked up to a <a
href="http://jackit.sourceforge.net/">JACK Audio Connection Kit</a> server which is a specialized sound server used for professional audio production on Unix/Linux. Both a
PulseAudio sink and a source are available. For each channel a port is
created in the JACK server.</p>
<h3>module-jack-sink</h3>
<p>This module implements a PulseAudio sink that connects to JACK and registers as many output ports as requested.</p>
<table>
<tr><td><tt>sink_name=</tt></td><td>The name for the PulseAudio sink. If ommited defaults to <tt>jack_out</tt>.</td></tr>
<tr><td><tt>server_name=</tt></td><td>The JACK server to connect to. If ommited defaults to the default server.</td></tr>
<tr><td><tt>client_name=</tt></td><td>The client name to tell the JACK server. If ommited defaults to <tt>PulseAudio</tt>.</td></tr>
<tr><td><tt>channels=</tt></td><td>Number of channels to register. If ommited defaults to the number of physical playback ports of the JACK server.</td></tr>
<tr><td><tt>connect=</tt></td><td>Takes a boolean value. If enabled (the default) PulseAudio will try to connect its ports to the physicial playback ports of the JACK server</td></tr>
</table>
<h3>module-jack-source</h3>
<p>This module implements a PulseAudio source that connects to JACK
and registers as many input ports as requested. Takes the same
arguments as <tt>module-jack-sink</tt>, except for <tt>sink_name</tt>
which is replaced by <tt>source_name</tt> (with a default of <tt>jack_in</tt>) for obvious reasons.</p>
<h2>Miscellaneous</h2>
<h3>module-sine</h3>
<p>Creates a sink input and generates a sine waveform stream.</p>
<table>
<tr><td><tt>sink=</tt></td><td>The sink to connect to. If ommited defaults to the default sink.</td></tr>
<tr><td><tt>frequency=</tt></td><td>The frequency to generate in Hertz. Defaults to 440.</td></tr>
</table>
<h3>module-esound-compat-spawnfd</h3>
<p>This is a compatibility module for <tt>libesd</tt> based autospawning of PulseAudio. Don't use it directly.</p>
<h3>module-esound-compat-spawnpid</h3>
<p>This is a compatibility module for <tt>libesd</tt> based autospawning of PulseAudio. Don't use it directly.</p>
<h3>module-match</h3>
<p>Adjust the volume of a playback stream automatically based on its name.</p>
<table>
<tr><td><tt>table=</tt></td><td>The regular expression matching table file to use (defaults to <tt>~/.pulse/match.table</tt>)</td></tr>
</table>
<p>The table file should contain a regexp and volume on each line, seperated by spaces. An example:</p>
<pre>
^sample: 32000
</pre>
<p>The volumes of all streams with titles starting with <tt>sample:</tt> are automatically set to 32000. (FYI: All sample cache streams start with <tt>sample:</tt>)</p>
<h3>module-volume-restore</h3>
<p>Adjust the volume of a playback stream automatically based on its name.</p>
<table>
<tr><td><tt>table=</tt></td><td>The table file to use (defaults to <tt>~/.pulse/volume.table</tt>)</td></tr>
</table>
<p>In contrast to <tt>module-match</tt> this module needs no explicit
configuration. Instead the volumes are saved and restored in a fully
automatical fashion depending on the client name to identify
streams. The volume for a stream is automatically saved every time it is
changed and than restored when a new stream is created.</p>
<h3>module-detect</h3>
<p>Automatically detect the available sound hardware and load modules for it. Supports OSS, ALSA, Solaris and Win32 output drivers.
<table>
<tr><td><tt>just-one=</tt></td><td>If set to <tt>1</tt> the module will only try to load a single sink/source and than stop.</td></tr>
</table>
<h3>module-zeroconf-publish</h3>
<p>Publish all local sinks/sources using mDNS Zeroconf.</p>
<hr/>
<address class="grey">Lennart Poettering &lt;@PACKAGE_BUGREPORT@&gt;, April 2006</address>
<div class="grey"><i>$Id$</i></div>
</body> </html>

View file

@ -1,27 +0,0 @@
/* $Id$ */
/***
* This file is part of PulseAudio.
*
* PulseAudio is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* PulseAudio is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with PulseAudio; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
***/
body { color: black; background-color: white; }
a:link, a:visited { color: #900000; }
div.news-date { font-size: 80%; font-style: italic; }
pre { background-color: #f0f0f0; padding: 0.4cm; }
.grey { color: #8f8f8f; font-size: 80%; }
table { margin-left: 1cm; border:1px solid lightgrey; padding: 0.2cm; }
td { padding-left:10px; padding-right:10px; }