mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-10-29 05:40:23 -04:00 
			
		
		
		
	 405fac5ea7
			
		
	
	
		405fac5ea7
		
	
	
	
	
		
			
			git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@239 fefdeb5f-60dc-0310-8127-8f9354f1896f
		
			
				
	
	
		
			138 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
	
		
			6.7 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
| <?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>polypaudio: FAQ</title>
 | |
| <link rel="stylesheet" type="text/css" href="style.css" />
 | |
| </head>
 | |
| 
 | |
| <body>
 | |
| 
 | |
| 
 | |
| <h1>Frequently Asked Questions</h1>
 | |
| 
 | |
| <ol>
 | |
|   <li><p><b>How does Polypaudio compare with ESOUND/aRts/NAS?</b></p>
 | |
| 
 | |
|   <p>Polypaudio 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 Polypaudio. However, I believe that Polypaudio
 | |
|   does what it does much better than any other free sound server.</p>
 | |
|   </li>
 | |
| 
 | |
|   <li><p><b>What about ESOUND compatibility?</b></p>
 | |
|   <p>Polypaudio 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 Polypaudio a GNOME program?</b></p>
 | |
|   <p>No, Polypaudio 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 writen with
 | |
|   gtkmm, i.e. require both GLIB and GTK.</p></li>
 | |
| 
 | |
|   <li><p><b>Can I integrate Polypaudio in my GLIB/GTK/GNOME application?</b></p>
 | |
|   <p>Yes! Polypaudio 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 Polypaudio in my Qt/KDE application?</b></p>
 | |
|   <p>Yes! Polypaudio uses a main loop abstraction layer that allows you
 | |
|   to integrate Polypaudio 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 Polypaudio, 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 Polypaudio. 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 Polypaudio (through a polypaudio driver
 | |
|   for aRts, which nobody has written yet). Another solution would be to
 | |
|   embed Polypaudio in the aRts process.</p></li>
 | |
| 
 | |
|   <li><p><b>I often hear noises when playing back with Polypaudio, what can I do?</b></p>
 | |
|   <p>There are to possible solutions: run polypaudio 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 Polypaudio 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>polypaudio</tt>  executable is installed SUID root by default. Why this? Isn't this a potential security hole?</b></p>
 | |
| 
 | |
|   <p>Polypaudio 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, polypaudio
 | |
| tries its best to minimize the security threat: immediately after
 | |
| startup polypaudio 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 polypaudio 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 polypaudio 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 polypaudio 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/polypaudio/</tt> or
 | |
| in <tt>~/.polypaudio/</tt>.</p></li>
 | |
| 
 | |
|   <li><p><b>How do I list all polypaudio modules installed?</b></p>
 | |
| 
 | |
|    <p><tt>polypaudio --dump-modules</tt></p>
 | |
| 
 | |
|    <p>Add <tt>-v</tt> for terse usage instructions.</p>
 | |
| 
 | |
| <li><p><b>How do I use polypaudio over the network?</b></p>
 | |
| 
 | |
| <p>Just set <tt>$POLYP_SERVER</tt> to the host name of the polypaudio server.</p>
 | |
| 
 | |
| <li><p><b>Is polypaudio 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 polypaudio care about?</b></p>
 | |
| 
 | |
| <p>The client honors: <tt>POLYP_SINK</tt> (default sink to connect to), <tt>POLYP_SOURCE</tt> (default source to connect to), <tt>POLYP_SERVER</tt> (default server to connect to, like <tt>ESPEAKER</tt>), <tt>POLYP_BINARY</tt> (the binary to start when autospawning a daemon), <tt>POLYP_CLIENTCONFIG</tt> (path to the client configuration file).</p>
 | |
| 
 | |
| <p>The daemon honors: <tt>POLYP_SCRIPT</tt> (default CLI script file run after startup), <tt>POLYP_CONFIG</tt> (default daemon configuration file), <tt>POLYP_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 polypaudio daemon try using the following commands:</p>
 | |
| 
 | |
| <pre>killall -USR2 polypaudio
 | |
| bidilink unix-client:/tmp/polypaudio/cli</pre>
 | |
| 
 | |
| <p><i>BTW: Someone should package that great tool for Debian!</i></p>
 | |
| 
 | |
| </li>
 | |
| 
 | |
| </ol>
 | |
| 
 | |
| <hr/>
 | |
| <address class="grey">Lennart Poettering <@PACKAGE_BUGREPORT@>, September 2004</address>
 | |
| <div class="grey"><i>$Id$</i></div>
 | |
| </body> </html>
 |