Skip to content
Browse files

Releasing 1.0.0 beta1, updating versions, copyrights, and doc.

extra : convert_revision : svn%3Aaec24677-d710-0410-a355-ac75e2bdf181/trunk%407569
  • Loading branch information...
1 parent 464e98c commit 4630c5a6fdb8111fb54cd087f23eab5abdc95843 dbaelde@aec24677-d710-0410-a355-ac75e2bdf181 committed Sep 7, 2010
Showing with 98 additions and 38 deletions.
  1. +38 −1 CHANGES
  2. +3 −3 INSTALL
  3. +3 −3
  4. +11 −0 doc/content/clocks.txt
  5. +42 −30 doc/liquidsoap.1
  6. +1 −1 src/
@@ -1,5 +1,42 @@
+1.0.0 beta1 (06-09-2010)
+This beta version introduces two major new features: heterogeneous stream
+types and clocks.
+ - Different sources can carry different types of content.
+ - Encoding formats have been introduced to help infer stream content types.
+ This brings static checking for bounds in encoding parameters.
+ - Introduce conversions between stream contents (mono, stereo, drop
+ audio, video, etc) and muxing.
+ - Allow explicit type annotations in scripts.
+ - Introduce clocks, cleanly allowing for the coexistence of different
+ time flows, and avoiding inconsistencies that can result from it.
+ Soundcard I/O and cross-based operators notably make use of it.
+ - Remove root.sync, replaced by attaching a source s to clock(sync=false,s).
+ - Enable dynamic source creation and source.shutdown().
+ - Extend and adapt MIDI and video operators.
+ - Introduce purely metadata streams (audio=video=midi=0 channels) and
+ metadata stream decoder.
+ - Support WAV streams in input.http/harbor().
+ - Introduce static image decoder using SDL image.
+ - Remove bound of request identifies (RID).
+ - Experimental: source.dynamic() for advanced dangerous hacking.
+ - Make path relative to script in %include "PATH", and introduce
+ %include <...> where path is relative to liquidsoap library directory.
+ - Add channels_matrix parameter to
+ - Add on_(dis)connect hooks in input.harbor().
+Cleanup and fixes:
+ - Lots of cleanup and fixes as with all major code rewriting.
+ - Optimize video and stabilize it a little bit... still not perfect.
+ - Rewrite stream and file decoding API, as well as file format detection.
+ - Enhance shutdown and error message reporting, notably for icecast
+ and request-based sources.
+ - Avoid quasi-infinite loop in failed request resolving.
0.9.3 (04-09-2010)
This release is a bugfix of the latest snapshot (0.9.2).
It will be the last bugfix before 1.0.
Bugs fixed:
@@ -1,6 +1,6 @@
- Liquidsoap 0.9.3
- ----------------
+ Liquidsoap 1.0.0 beta
+ ---------------------
Mandatory dependencies :
@@ -10,7 +10,7 @@
Optional dependencies :
- ocaml-cry>=0.1.3 for sending to Shoutcast & Icecast
+ ocaml-cry>=0.1.5 for sending to Shoutcast & Icecast
ocaml-ogg>=0.4.1 for Ogg data
ocaml-vorbis>=0.5.1 for Ogg/Vorbis data
ocaml-theora>=0.2.0 for Ogg/Theora data
@@ -7,9 +7,9 @@ dnl $libdir/liquidsoap/$libs_dir_version
# Remove +svn and set svn_snapshot to false
# before releasing
if test $svn_snapshot != "false"; then
11 doc/content/clocks.txt
@@ -174,6 +174,17 @@ itself. The new clock will follow (the computer's idea of) real time,
unless <code>sync=false</code> is passed, in which case it will run
as fast as possible.
+The old (pre-1.0.0) setting <code>root.sync</code> is superseeded
+by <code>clock</code>.
+If you want to run an output as fast as your CPU allows,
+just attach it to a new clock without synchronization:
+This will automatically attach the appropriate sources to that clock.
+However, you may need to do it for other operators if they are totally
+unrelated to the first one.
The <code>buffer()</code> operator can be used to communicate between
any two clocks: it takes a source in one clock and builds a source
in another. The trick is that it uses a buffer: if one clock
72 doc/liquidsoap.1
@@ -1,45 +1,43 @@
.\" Hey, EMACS: -*- nroff -*-
-.TH LIQUIDSOAP 1 "May 27, 2007" "Liquidsoap 0.9.2"
+.TH LIQUIDSOAP 1 "September 06, 2010" "Liquidsoap 1.0.0 beta1"
-liquidsoap \- programmable audio stream generator
+liquidsoap \- a multimedia streaming language
.B liquidsoap
.RI [ option ... ]
-.RI [ script.liq | expression | audiofile ]
+.RI [ script | expression ]
-.B liquidsoap
-is an extensible and flexible audio stream generator, mainly used for
-streaming to a shoutcast/icecast server. It is also possible to output in a
-file, to speakers or as raw PCM stream.
-.BR liquidsoap
-can perform any audio processing, mixing streams together, applying filters,
-generating sound procedurally, there is no limit but your imagination.
-Input files can be accessed through the network, using samba, ftp or speech
-Recognized formats are MP3, Ogg/Vorbis, AAC and WAV.
-Liquidsoap also inputs HTTP streams, or from a soundcard.
-The system features lots of programming operators, including user requests,
-time-based selection, sum.
-Many of these features are optional, so it is possible that they are
-not enabled in your installation.
+.B Liquidsoap
+is a programming language for describing multimedia streaming systems.
+It is very flexible, making simple things simple but giving a lot
+of control for advanced uses.
+.B Liquidsoap
+supports audio, video and MIDI streams,
+and a wide range of input/output operators
+including Icecast and various soundcard APIs.
+It can perform a broad range of signal processing,
+combine streams in various ways, support custom transitions,
+generate sound procedurally...
+and all this can be assembled as you wish.
+Input files can be accessed remotely, or even be synthesized on the fly
+using external scripts such as speech synthesis.
+Finally, interaction with a running liquidsoap instance is possible
+via telnet or socket.
-.I script.liq
-is a
-.B liquidsoap
-script containing the settings and the source definitions.
-The script will be read from standard input if
-.B \-\-
+Liquidsoap scripts passed on the command line will be evaluated:
+they shall be used to define the streaming system to be ran.
+It is possible to pass multiple scripts; they will all be ran successively,
+and definitions from one script can be used in subsequent ones.
+A script will be read from standard input if
+.B \-
is given as script filename.
Information about scripting liquidsoap is available on our website:
-If the parameter is an audio file then liquidsoap will attempt to decode it and
-will display the obtained metadata.
If the parameter is not a file it will be treated as an expression which will
be executed. It is a convenient way to test simple one-line scripts. In that
case, the default is to have log messages on standard output and to disable the
@@ -48,8 +46,10 @@ telnet server.
-.B \-h
-Print the description of a plugin: format, protocol, operator, etc.
+.BI \-h " NAME"
+Print the description of plugins of the given name
+(operators from the scripting API,
+ but also protocols, stream, file and metadata formats).
.B \-c, \-\-check
Only check the syntax of the script.
@@ -68,6 +68,10 @@ Print debugging log messages.
.B \-d, \-\-daemon
Run in daemon mode, i.e. detach and write a PID file.
+.B \-\-interactive
+Launch an interactive read-eval-print loop for executing scripting
.B \-t, \-\-enable-telnet
Enable the telnet server interface.
@@ -80,9 +84,13 @@ Enable the UNIX socket server interface.
.B \-U, \-\-disable-unix-socket
Disable the UNIX socket server interface.
-.B \-\-
+.B \-
Read script on standard input.
+.BI \-r " FILENAME"
+Process a request: resolve it, attempt to decode it, display its metadata
+and duration. This is useful to test how liquidsoap sees your files.
.B \-\-list\-plugins
Human-readable List of all protocols, operators formats, metadata resolvers, outputs.
@@ -103,6 +111,10 @@ Display a described table of the configuration keys.
.B \-\-conf\-dump
Dump the configuration state
+.B \-p, \-\-parse-only
+Parse scripts but do not type-check and run them.
Our website
2 src/
@@ -376,7 +376,7 @@ let options =
Arg.Unit (fun () ->
"Liquidsoap %s%s.\n\
- Copyright (c) 2003-2009 Savonet team\n\
+ Copyright (c) 2003-2010 Savonet team\n\
Liquidsoap is open-source software, \
released under GNU General Public License.\n\
See <> for more information.\n"

0 comments on commit 4630c5a

Please sign in to comment.
Something went wrong with that request. Please try again.