]> git.tuebingen.mpg.de Git - paraslash.git/blobdiff - web/manual.m4
Merge branch 't/osx_overhaul'
[paraslash.git] / web / manual.m4
index cd06cccd192a7ccf3791d7c9f8ae31fca23c8f09..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.
@@ -1347,12 +1348,12 @@ REFERENCE(Forward error correction, FEC) below.
 Streams with headers and headerless streams
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-For ogg vorbis and wma streams, not all information needed to decode
-the stream is contained in each data chunk but only in the audio
-file header of the container format. Therefore clients must be able
-to obtain this information in case streaming starts in the middle of
-the file or if para_audiod is started while para_server is already
-sending a stream.
+For OGG/Vorbis, OGG/Speex and wma streams, some of the information
+needed to decode the stream is only contained in the audio file
+header of the container format but not in each data chunk. Clients
+must be able to obtain this information in case streaming starts in
+the middle of the file or if para_audiod is started while para_server
+is already sending a stream.
 
 This is accomplished in different ways, depending on the streaming
 protocol. For connection-oriented streams (HTTP, DCCP) the audio file
@@ -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
@@ -1631,12 +1643,12 @@ A paraslash writer acts as a data sink that consumes but does not
 produce audio data. Paraslash writers operate on the client side and
 are contained in para_audiod and in the stand-alone tool para_write.
 
-The para_write program reads uncompressed 16 bit audio data from
-STDIN. If this data starts with a wav header, sample rate and channel
-count are read from the header. Otherwise CD audio (44.1KHz stereo)
-is assumed but this can be overridden by command line options.
-para_audiod, on the other hand, obtains the sample rate and the number
-of channels from the decoder.
+The para_write program reads uncompressed audio data from STDIN. If
+this data starts with a wav header, sample rate, sample format and
+channel count are read from the header. Otherwise CD audio (44.1KHz
+16 bit little endian, stereo) is assumed but this can be overridden
+by command line options. para_audiod, on the other hand, obtains
+the sample rate and the number of channels from the decoder.
 
 Like receivers and filters, each writer has an individual set of
 command line options, and for para_audiod writers can be configured
@@ -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
 ~~~~~~~~
 
@@ -1844,7 +1861,7 @@ New development does not usually happen on "master", however.
 Instead, a separate topic branch is forked from the tip of "master",
 and it first is tested in isolation; Usually there are a handful such
 topic branches that are running ahead of "master". The tip of these
-branches is not published in the public repository, to keep the number
+branches is not published in the public repository to keep the number
 of branches that downstream developers need to worry about low.
 
 The quality of topic branches varies widely. Some of them start out as
@@ -1866,6 +1883,11 @@ have been merged into "next" are usually not rebased, and you can find
 the tip of topic branches you are interested in from the output of
 "git log next"). You should be able to safely build on top of them.
 
+However, at times "next" will be rebuilt from the tip of "master" to
+get rid of merge commits that will never be in "master. The commit
+that replaces "next" will usually have the identical tree, but it
+will have different ancestry from the tip of "master".
+
 The "pu" (proposed updates) branch bundles the remainder of the
 topic branches.  The "pu" branch, and topic branches that are only in
 "pu", are subject to rebasing in general.  By the above definition
@@ -2023,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