osx_write.c: Add doxygen description for struct private_osx_write_data
[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 (obligatory)
13 -----------------------
14
15 This server supports audio streaming of mp3, ogg vorbis and aac files.
16 It listens on a tcp port and accepts commands such as play, stop,
17 pause, next from authenticated clients.
18
19 The audio stream may be sent over the network by three different
20 senders:
21
22 The http sender is recommended for public streams that can be played
23 by any player like mpg123, xmms, winamp...
24
25 The dccp sender is experimental and requires kernel support for the
26 rather new datagram congestion control protocol.
27
28 The ortp sender is recommended for LAN streaming and for private
29 streams that require authentication.
30
31 It is possible to activate more than one sender simultaneously.
32
33 para_server needs an "audio file selector" to work, mainly to determine
34 which song to stream next. There are three selectors available:
35 random, playlist and mysql. The former chooses audio files randomly
36 and playlist can handle, well, playlists. Both are always supported.
37
38 The optional mysql selector connects to a mysql server which holds
39 information on your audio files. It has several unusual features,
40 see README.mysql for details.
41
42 ------------------------
43 para_client (obligatory)
44 -----------------------
45
46 The client program to connect to para_server.
47
48 -------------------
49 para_recv (optional)
50 -------------------
51
52 A command line http/dccp/rtp stream grabber.
53
54 ---------------------
55 para_filter (optional)
56 ---------------------
57
58 A filter program that converts from stdin and writes to stdout. This
59 one is independent from the rest of paraslash, so it might be useful
60 also for different purposes.
61
62 para_filter combines several decoders (mp3, oggvorbis, aac) and a
63 volume normalzer. New filters can be added easily due to the modular
64 design. If more than one filter is specified, the given filters
65 are 'piped' together in-memory, i.e. without calling any of the
66 read(2)/write(2)/select(2) etc. functions.
67
68 ----------------------
69 para_write (obligatory)
70 ----------------------
71
72 A modular audio stream writer. It supports a simple file writer output plugin
73 and optional wav/raw players for alsa (linux-only, Debian package:
74 libasound2-dev) and Mac OS.
75
76 ---------------------------------------
77 para_audiod (optional, but recommended)
78 ---------------------------------------
79
80 The local daemon that collects information from para_server. It
81 starts an appropriate receiver, filter and player as soon as
82 para_server announces the availability (and the type) of an audio
83 stream. para_audiod listens on a local socket and sends status
84 information about para_server and para_audiod to local clients
85 on request.
86
87 --------------------------------------
88 para_audioc (optional, but recommended)
89 --------------------------------------
90
91 The client program which talks with para_audiod. Used to control
92 para_audiod, to receive status info, or to grab the stream at any
93 point in the filter chain.
94
95 para_audioc (hence para_audiod) is needed by para_gui, para_sdl_gui
96 and para_krell, see below.
97
98 -------------------
99 para_gui (optional)
100 -------------------
101
102 Themable ncurses-based gui. It calls para_audioc and presents
103 the obtained information in an ncurses window. para_gui provides
104 key-bindings for the most common commands and new key-bindings can
105 be added easily.
106
107 -----------------------
108 para_sdl_gui (optional)
109 -----------------------
110
111 SDL-based gui. Similar to para_gui but presents its output in an X
112 window (fullscreen mode is also available) and can display jpg images
113 on a per song basis. para_sdl_gui provides an input prompt to enter
114 arbitrary commands. However, it can also be used non-interactively
115 (e.g. as a screen saver) via the -i switch.
116
117 -------------------------------------------------------------------------
118 para_krell (optional, only useful in conjunction with the mysql selector)
119 -------------------------------------------------------------------------
120
121 A plugin for gkrellm which shows small pictures of the current song. It
122 allows you to launch 27 different commands by clicking in different
123 areas of its picture (9 small squares x 3 mouse buttons).
124
125 --------------------
126 para_fade (optional)
127 --------------------
128
129 A (Linux-only) alarm clock and volume-fader.
130
131 -------------------------------------------------------------------------
132 para_dbadm (optional, only useful in conjunction with the mysql selector)
133 -------------------------------------------------------------------------
134
135 Very simple curses-based frontend which uses libmenu. Useful for
136 quickly changing the attributes of the current song (e.g. from para_gui
137 as an external command).
138
139 --------------------------------------------------------------------------
140 para_slider (optional, only useful in conjunction with the mysql selector)
141 --------------------------------------------------------------------------
142
143 A small X application which shows a scrollbar for each attribute
144 defined in the mysql database. It creates a stream definition from
145 the values of the scrollbars. This allows to smoothly change the mood
146 of the given stream without any file editing.
147
148 --------------------------
149 bash_completion (optional)
150 --------------------------
151
152 A small bash script for inclusion in ~/.bashrc. It gives you command
153 line completion for some paraslash commands.
154
155 ------------
156 Requirements
157 ------------
158
159 In any case you need
160
161 - gcc, the gnu compiler collection (shipped with distro): gcc-3.3
162 or newer is required.
163 - openssl (needed by server, client): usually shipped with
164 distro, but you might have to install the "development package"
165 (called libssl-dev on debian systems) as well:
166 http://www.openssl.org/
167 - software mixing, e.g. ALSA and the direct mixing plugin (dmix)
168
169 If you want to use the mysql-based audio file selector, you also need
170
171 - mysql-server
172 - mysql-client
173 - libmysqlclient
174
175 These are usually shipped with the distro but probably not installed
176 by default.
177
178 The mp3 decoder of para_filter is based on libmad: If you prefer to
179 use the libmad package provided by your distributor, make sure to
180 install the corresponding development package as well. Otherwise,
181 just download libmad from http://www.underbit.com/products/mad/
182
183 For ogg vorbis streams you'll need libogg, libvorbis, libvorbisfile,
184 The corresponding Debian packages are called libogg-dev libvorbis-dev,
185 other distributors chose similar names. All of these are also
186 available at http://www.xiph.org/downloads/
187
188 For aac files (m4a) you'll need libfaad. Get it at
189 http://www.audiocoding.com/modules/wiki/?page=AAC
190
191 If you intend to use the optional ortp streamer, you'll need libortp:
192 http://www.linphone.org/ortp/
193
194 For the optional SDL-based gui, the following packages must be installed:
195
196 - X (usually shipped with distro): http://www.x.org/
197 - libSDL (usually shipped with distro): http://www.libsdl.org/index.php
198 - SDL_image: http://www.libsdl.org/projects/SDL_image/
199
200 For para_slider, the zero memory widget library is neccessary:
201 http://www710.univ-lyon1.fr/~exco/ZMW/
202
203 Finally, para_krell needs
204
205 - gtk2: http://www.gtk.org/
206 - gkrellm2: http://members.dslextreme.com/users/billw/gkrellm/gkrellm.html
207
208 -------
209 LICENSE
210 -------
211
212 Distribution of paraslash is covered by the GNU GPL. See file COPYING.
213
214 ----------
215 THE AUTHOR
216 ----------
217
218 Andre Noll <maan@systemlinux.org>
219 Comments and bug reports are welcome.