filter.c: Handle filter errors gracefully.
[paraslash.git] / README
1 README
2 ======
3
4 ----
5 Paraslash is an acronym for
6
7 _Play, archive, rate and stream large audio sets happily_
8
9 It contains the following programs:
10
11 -----------
12 para_server
13 -----------
14
15 para_server streams binary audio data (mp3/oggvorbis/m4a files)
16 over local and/or remote networks. It listens on a tcp port and
17 accepts commands such as play, stop, pause, next from authenticated
18 clients. However, there are many more commands.
19
20 It supports three built-in network streaming methods (senders): http, dccp,
21 or rtp.
22
23 * The http sender is recommended for public streams that can be played
24 by any player like mpg123, xmms, itunes, winamp...
25
26 * The dccp sender requires kernel support for the datagram congestion
27 control protocol.
28
29 * The ortp sender is recommended for multicast LAN streaming.
30
31 It is possible to activate more than one sender simultaneously.
32
33 The built-in audio file selector of paraslash is used to manage your
34 audio files. It maintains statistics on the usage of all available audio
35 files such as last played time, and the number of times each file was
36 selected.
37
38 Its features include
39
40 * attributes. Allow fine-grained audio file selection.
41
42 * image table. For storing e.g. album cover art.
43
44 * lyrics table. For storing lyrics.
45
46 * playlist table. Stores arbitrary many playlists for later use.
47
48 * mood mode. Audio file selection works by specifying mood
49 methods involving attributes, pattern matching for file names
50 and more. This allows rather sophisticated configurations
51 and is explained in more detail in
52 <<
53 <a href="README.afs.html"> README.afs </a>
54 >>
55
56 * rename detection. If files are moved or renamed, afs will
57 recognize them despite of this change.
58
59 Despite of all these features, paraslash is lightweight. The
60 stripped binary of para_server with all its features compiled in
61 mp3/ogg/aac support, http/dccp/ortp support) is about 160K on i386
62 under Linux. para_audiod (see below) is even smaller.
63
64 -----------
65 para_client
66 -----------
67
68 The client program to connect to para_server. paraslash commands
69 are sent to para_server and the response is dumped to stdout. This
70 can be used by any scripting language to produce user interfaces with
71 little programming effort.
72
73 All connections between para_server and para_client are encrypted by
74 default. For each user of paraslash you must create a public/secret
75 RSA key pair for authentication. The authenticated connection is
76 encrypted with a symmetric rc4 session key.
77
78 ---------
79 para_recv
80 ---------
81
82 A command line http/dccp/ortp stream grabber. The http mode of this
83 tool can be used to receive data from any http streaming source.
84
85 -----------
86 para_filter
87 -----------
88
89 A filter program that converts from stdin and writes to stdout.
90
91 para_filter combines several decoders (mp3, oggvorbis, aac) and a
92 volume normalizer. New filters can be added easily. It is possible
93 to "chain" any number of filters, like UNIX pipes.
94
95 para_filter does not depend on other parts of paraslash, so it can
96 be used as a stand-alone command line tool for audio decoding and
97 volume normalization.
98
99 --------
100 para_afh
101 --------
102
103 A small stand-alone program that prints tech info about the given
104 audio file to stdout. It can be instructed to print a "chunk table",
105 an array of offsets within the audio file or to write the content of
106 the audio file in complete chunks 'just in time'.
107
108 This allows third-party streaming software that is unaware of
109 the particular audio format to send complete frames in real
110 time. Currently, mp3, ogg vorbis and aac are supported.
111
112 ----------
113 para_write
114 ----------
115
116 A modular audio stream writer. It supports a simple file writer
117 output plug-in and optional wav/raw players for ALSA (Linux) and for
118 coreaudio (Mac OS). para_write can also be used as a stand-alone wav
119 or raw audio player.
120
121 -----------
122 para_audiod
123 -----------
124
125 The local daemon that collects information from para_server.
126
127 It runs on the client side and connects to para_server. As soon as
128 para_server announces the availability of an audio stream, para_audiod
129 starts an appropriate receiver, any number of filters and a paraslash
130 writer to play the stream. It is possible to capture the stream at
131 any position in the filter chain.
132
133 Moreover, para_audiod listens on a local socket and sends status
134 information about para_server and para_audiod to local clients on
135 request. Access via this local socket may be restricted by using Unix
136 socket credentials, if available.
137
138 -----------
139 para_audioc
140 -----------
141
142 The client program which talks to para_audiod. Used to control
143 para_audiod, to receive status info, or to grab the stream at any
144 point in the filter chain.
145
146 para_audioc (hence para_audiod) is needed by para_gui see below.
147
148 --------
149 para_gui
150 --------
151
152 Themable ncurses-based gui. It calls para_audioc and presents
153 the obtained information in an ncurses window. para_gui provides
154 key-bindings for the most common commands and new key-bindings can
155 be added easily.
156
157 ---------
158 para_fade
159 ---------
160
161 A (Linux-only) alarm clock and volume-fader.
162
163 ---------------
164 bash_completion
165 ---------------
166
167 A small bash script for inclusion in ~/.bashrc. It gives you command
168 line completion for some paraslash commands.
169
170 -------
171 LICENSE
172 -------
173
174 Distribution of paraslash is covered by the GNU GPL, version 2. See file
175 COPYING.
176
177 ----------
178 THE AUTHOR
179 ----------
180
181 Andre Noll <maan@systemlinux.org>
182 Comments and bug reports are welcome.