Merge branch 't/osx_overhaul'
[paraslash.git] / web / manual.m4
index 946b9d0953621b23a3a6e30e62c211674d0c6ea5..3d5bc2ee6327f754b2da031c928c091d8fa049d3 100644 (file)
@@ -202,9 +202,10 @@ In any case you'll need
 
        git clone git://git.tuebingen.mpg.de/osl
 
-       - XREFERENCE(ftp://ftp.gnu.org/pub/gnu/gcc, gcc). The
-       EMPH(gnu compiler collection) is usually shipped with the
-       distro. gcc-3.3 or newer is required.
+       - XREFERENCE(ftp://ftp.gnu.org/pub/gnu/gcc, gcc) or
+       XREFERENCE(http://clang.llvm.org, clang). All gcc versions
+       >= 3.3 are currently supported. Clang version 1.1 or newer
+       should work as well.
 
        - XREFERENCE(ftp://ftp.gnu.org/pub/gnu/make, gnu make) is
        also shipped with the disto. On BSD systems the gnu make
@@ -251,6 +252,10 @@ Optional:
        Linux, you'll need to have ALSA's development package
        libasound2-dev installed.
 
+       - XREFERENCE(http://downloads.xiph.org/releases/ao/,
+       libao). Needed to build the ao writer (ESD, PulseAudio,...).
+       Debian package: libao-dev.
+
 Installation
 ~~~~~~~~~~~~
 
@@ -280,7 +285,11 @@ might need to tell the configure script where to find them. Try
        ./configure --help
 
 to see a list of options. If the paraslash package was compiled
-successfully, execute as root,
+successfully, execute (optionally)
+
+       make test
+
+to run the paraslash test suite. If all tests pass, execute as root
 
        make install
 
@@ -307,7 +316,7 @@ following commands:
 
        user=bar
        target=~/.paraslash/server.users
-       key=~/.paraslash/key.pub.$user
+       key=~/.paraslash/id_rsa.pub.$user
        perms=AFS_READ,AFS_WRITE,VSS_READ,VSS_WRITE
        mkdir -p ~/.paraslash
        echo "user $user $key $perms" >> $target
@@ -315,20 +324,25 @@ following commands:
 Next, change to the "bar" account on client_host and generate the
 key pair with the commands
 
-       key=~/.paraslash/key.$LOGNAME
-       mkdir -p ~/.paraslash
-       (umask 077 && openssl genrsa -out $key 2048)
+       ssh-keygen -t rsa -b 2048
+       # hit enter twice to create a key with no passphrase
 
-para_server only needs to know the public key of the key pair just
-created. It can be extracted with
+This generates the two files id_rsa and id_rsa.pub in ~/.ssh. Note
+that paraslash can also read keys generated by the "openssl genrsa"
+command. However, since keys created with ssh-keygen can also be used
+for ssh, this method is recommended.
 
-       pubkey=~/.paraslash/key.pub.$LOGNAME
-       openssl rsa -in $key -pubout -out $pubkey
+Note that para_server refuses to use a key if it is shorter than 2048
+bits. In particular, the RSA keys of paraslash 0.3.x will not work
+with version 0.4.x. Moreover, para_client refuses to use a (private)
+key which is world-readable.
 
-Copy the public key just created to server_host (you may skip this step
-for a single-user setup, i.e. if foo=bar and server_host=client_host):
+para_server only needs to know the public key of the key pair just
+created. Copy this public key to server_host:
 
-       scp $pubkey foo@server_host:.paraslash/
+       src=~/.ssh/id_rsa.pub
+       dest=.paraslash/id_rsa.pub.$LOGNAME
+       scp $src foo@server_host:$dest
 
 Finally, tell para_client to connect to server_host:
 
@@ -402,9 +416,9 @@ as bar@client_host
 
 
 We will also have to tell para_audiod that it should receive the
-audio stream from server_host:
+audio stream from server_host via http:
 
-       para_audiod -l info -r 'mp3:http -i server_host'
+       para_audiod -l info -r '.:http -i server_host'
 
 You should now be able to listen to the audio stream once para_server
 starts streaming. To activate streaming, execute
@@ -560,19 +574,6 @@ execute. The output of
 contains in the third column the permissions needed to execute the
 command.
 
-A new RSA key can be created with
-
-       openssl genrsa -out <private_key> 2048
-
-and the public part may be extracted with
-
-       openssl rsa -in <private_key> -pubout -out <public_key>
-
-Note that para_server refuses to use a key if it is shorter than 2048
-bits. In particular, the RSA keys of paraslash 0.3.x will not work
-with version 0.4.x. Moreover, para_client refuses to use a (private)
-key which is world-readable.
-
 It is possible to make para_server reread the user_list file by
 executing the paraslash "hup" command or by sending SIGHUP to the
 PID of para_server.
@@ -1431,8 +1432,7 @@ from being interpreted by para_recv.
 -> Create a minimal config for para_audiod for HTTP streams:
 
        c=$HOME/.paraslash/audiod.conf.min; s=server.foo.com
-       formats="mp3 ogg aac wma" # remove what you do not have
-       for f in $formats; do echo receiver \"$f:http -i $s\"; done > $c
+       echo receiver \".:http -i $s\" > $c
        para_audiod --config $c
 
 -------
@@ -1470,11 +1470,23 @@ the driving application (para_audiod or para_filter). Example:
        para_filter -f 'mp3dec --ignore-crc' -f 'compress --damp 1'
 
 For para_audiod, each audio format has its own set of filters. The
-name of the audio format for which the filter should be applied is
-used as the prefix for the filter option. Example:
+name of the audio format for which the filter should be applied can
+be used as the prefix for the filter option. Example:
 
        para_audiod -f 'mp3:prebuffer --duration 300'
 
+The "mp3" prefix above is actually interpreted as a POSIX extended
+regular expression. Therefore
+
+       para_audiod -f '.:prebuffer --duration 300'
+
+activates the prebuffer filter for all supported audio formats (because
+"." matches all audio formats) while
+
+       para_audiod -f 'wma|ogg:prebuffer --duration 300'
+
+activates it only for wma and ogg streams.
+
 Decoders
 ~~~~~~~~
 
@@ -1500,9 +1512,9 @@ Forward error correction
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
 As already mentioned REFERENCE(Streaming protocols, earlier),
-paraslash uses forward error correction (FEC) for the unreliable
-UDP transport. FEC is a technique which was invented already in
-1960 by Reed and Solomon and which is widely used for the parity
+paraslash uses forward error correction (FEC) for the unreliable UDP
+and DCCP transports. FEC is a technique which was invented already
+in 1960 by Reed and Solomon and which is widely used for the parity
 calculations of storage devices (RAID arrays). It is based on the
 algebraic concept of finite fields, today called Galois fields, in
 honour of the mathematician Galois (1811-1832). The FEC implementation
@@ -1529,7 +1541,7 @@ From these observations it is clear that there are three different
 FEC parameters: The slice size, the number of data slices k, and the
 total number of slices n. It is crucial to choose the slice size
 such that no fragmentation of network packets takes place because
-FEC only guards against losses and reodering but fails if slices are
+FEC only guards against losses and reordering but fails if slices are
 received partially.
 
 FEC decoding in paralash is performed through the fecdec filter which
@@ -1674,6 +1686,11 @@ write the PCM data to a file on the file system rather than playing
 it through a sound device. It is supported on all platforms and is
 always compiled in.
 
+*AO*. _Libao_ is a cross-platform audio library which supports a wide
+variety of platforms including PulseAudio (gnome), ESD (Enlightened
+Sound Daemon), AIX, Solaris and IRIX.  The ao writer plays audio
+through an output plugin of libao.
+
 Examples
 ~~~~~~~~
 
@@ -2028,7 +2045,7 @@ detection of duplicate or reordered packets. Being a connectionless
 protocol, only minimal internal state about the connection is
 maintained, which means that there is no protection against packet
 loss or network congestion. Error checking and correction (if at all)
-are performed in the application.'
+are performed in the application.
 
 *DCCP*. The _Datagram Congestion Control Protocol_ combines the
 connection-oriented state maintenance known from TCP with the