paraslash 0.4.5
[paraslash.git] / web / manual.m4
index f9b0fb51ebf6c30e83c3b7b5efdb50020fbaf9eb..946b9d0953621b23a3a6e30e62c211674d0c6ea5 100644 (file)
@@ -77,11 +77,11 @@ The paraslash executables
 
 *para_server*
 
-para_server streams binary audio data (MP3, OGG/Vorbis, M4A, WMA
-files) over local and/or remote networks. It listens on a TCP port and
-accepts commands such as play, stop, pause, next from authenticated
-clients. There are many more commands though, see the man page of
-para_server for a description of all commands.
+para_server streams binary audio data (MP3, OGG/Vorbis, OGG/Speex,
+M4A, WMA files) over local and/or remote networks. It listens on a
+TCP port and accepts commands such as play, stop, pause, next from
+authenticated clients. There are many more commands though, see the
+man page of para_server for a description of all commands.
 
 It supports three built-in network streaming protocols
 (senders/receivers): HTTP, DCCP, or UDP. This is explained in more
@@ -145,11 +145,11 @@ compatible with arbitrary HTTP streaming sources (e.g. icecast).
 *para_filter*
 
 A filter program that reads from STDIN and writes to STDOUT.
-Like para_recv, this is an atomic building block which can be used
-to assemble higher-level audio receiving facilities. It combines
-several different functionalities in one tool: decoders for multiple
-audio formats (MP3, OGG/Vorbis, AAC, WMA) and a number of processing
-filters, among these a normalizer for audio volume.
+Like para_recv, this is an atomic building block which can be used to
+assemble higher-level audio receiving facilities. It combines several
+different functionalities in one tool: decoders for multiple audio
+formats and a number of processing filters, among these a normalizer
+for audio volume.
 
 *para_afh*
 
@@ -244,6 +244,9 @@ Optional:
        - XREFERENCE(http://www.audiocoding.com/, libfaad).  For aac
        files (m4a) you'll need libfaad (libfaad-dev).
 
+       - XREFERENCE(http://www.speex.org/, speex). In order to stream
+       or decode speex files, libspeex (libspeex-dev) is required.
+
        - XREFERENCE(ftp://ftp.alsa-project.org/pub/lib/, alsa-lib). On
        Linux, you'll need to have ALSA's development package
        libasound2-dev installed.
@@ -255,10 +258,10 @@ First make sure all non-optional packages listed in the section on
 REFERENCE(Requirements, required software) are installed on your
 system.
 
-You don't need everything listed there. In particular, MP3, OGG/Vorbis
-and AAC support are all optional. The configure script will detect
-what is installed on your system and will only try to build those
-executables that can be built with your setup.
+You don't need everything listed there. In particular, MP3, OGG/Vorbis,
+OGG/Speex and AAC support are all optional. The configure script will
+detect what is installed on your system and will only try to build
+those executables that can be built with your setup.
 
 Note that no special decoder library (not even the MP3 decoding library
 libmad) is needed for para_server if you only want to stream MP3 or WMA
@@ -665,7 +668,7 @@ file. In particular the following data is stored for each audio file.
        - The lyrics id which describes the lyrics associated with
        this audio file.
 
-       - The audio format id (MP3, OGG, AAC, WMA).
+       - The audio format id (MP3, OGG, ...).
 
        - An amplification value that can be used by the amplification
        filter to pre-amplify the decoded audio stream.
@@ -1076,6 +1079,15 @@ chunks called OGG pages. A typical OGG page is about 4KB large. The
 Vorbis codec creates variable-bitrate (VBR) data, where the bitrate
 may vary considerably.
 
+*OGG/Speex*
+
+Speex is an open-source speech codec that is based on CELP (Code
+Excited Linear Prediction) coding. It is designed for voice
+over IP applications, has modest complexity and a small memory
+footprint. Wideband and narrowband (telephone quality) speech are
+supported. As for Vorbis audio, Speex bit-streams are often stored
+in OGG files.
+
 *AAC*
 
 Advanced Audio Coding (AAC) is a standardized, lossy compression
@@ -1122,11 +1134,11 @@ and stored in the audio file table.
 Chunks and chunk tables
 ~~~~~~~~~~~~~~~~~~~~~~~
 
-paraslash uses the word "chunk" as common term for the building
-blocks of an audio file. For MP3 files, a chunk is the same as an
-MP3 frame, while for OGG/Vorbis files, a chunk is an OGG page, etc.
-Therefore the chunk size varies considerably between audio formats,
-from a few hundred bytes (MP3) up to 8K (WMA).
+paraslash uses the word "chunk" as common term for the building blocks
+of an audio file. For MP3 files, a chunk is the same as an MP3 frame,
+while for OGG files a chunk is an OGG page, etc.  Therefore the chunk
+size varies considerably between audio formats, from a few hundred
+bytes (MP3) up to 8K (WMA).
 
 The chunk table contains the offsets within the audio file that
 correspond to the chunk boundaries of the file. Like the meta data,
@@ -1335,12 +1347,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
@@ -1536,11 +1548,10 @@ and compress quite expensive in terms of computing power.
 
 *amp*
 
-The amp filter which amplifies the audio stream by a fixed scaling
-factor that must be known in advance. For para_audiod this factor is
-derived from the amplification field of the audio file's entry in
-the audio file table while para_filter uses the value given at the
-command line.
+The amp filter amplifies the audio stream by a fixed scaling factor
+that must be known in advance. For para_audiod this factor is derived
+from the amplification field of the audio file's entry in the audio
+file table while para_filter uses the value given at the command line.
 
 The optimal scaling factor F for an audio file is the largest real
 number F >= 1 such that after multiplication with F all samples still
@@ -1620,12 +1631,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
@@ -1833,7 +1844,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
@@ -1855,6 +1866,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