root/tags/liquidsoap/0.9.2/CHANGES

Revision 6881, 20.8 kB (checked in by dbaelde, 5 months ago)

Releasing 0.9.2: update version numbers and copyright years.
One little fix in doc/Makefile to get everything in the tarball.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
10.9.2 (29-10-2009)
2==================
3This release is a SNAPSHOT of upcoming features. It also contains several
4important bugfixes. As a snapshot, it contains experimental or unpolished
5features, and also breaks compatibility with previous versions.
6You should in particular notice the two "New" items below:
7 - random(strict=true) is now called rotate();
8 - request sources (playlists, request.*) have a new queuing behavior,
9   check the doc (request-sources.html) or revert to conservative=true.
10==================
11Bugs fixed:
12 - Ogg encoder now muxes pages according to their ending time.
13 - Support "ogg/audio" and "ogg/video" mime types for HTTP ogg streams.
14 - Changed external encoder's "restart_encoder" to the more relevant
15   "restart_on_new_track". Added optional "restart_after_delay"
16   to restart the encoder after some delay. Also completely rewrite
17   stop mechanism. Stop operation now waits for the encoding process
18   to finish, allowing proper restart_on_new_track like for ogg encoded
19   data.
20 - Factorized buffered I/O code. Also added a blocking API, which avoids
21   "no available frame" and "reader not ready" messages and audio glitches.
22   It enforces that "root.sync" be deactivated for these sources, such that
23   synchronisation is done by the source. (#203)
24 - Factorized file decoding code.
25 - Fixed reversed order when parsing playlists using playlist.parse().
26 - Avoid bad crashes when resources lack, e.g. no more memory.
27 - Tighten and enforce the inter-source protocol.
28 - All outputs: fix the autostart server command. With the former code,
29   a modification of the autostart parameter was only taken into account
30   one start/stop cycle later.
31 - on_blank(): fix a bug that prevented the first call to on_noise.
32 - Fixed estimated remaining samples on ogg files, fixes issues with
33   operators relying on this value, in particular crossfade() and
34   request-based sources when operating in non-conservative mode.
35 - Fixed socket descriptor leak in input.http. (#318)
36 - Fixed deadlock at init when an exception was raised at wake_up
37   phase. (#319)
38 - Fix delay() which could sometimes incorrectly declare itself ready,
39   and thus try to get some data from its unavailable input source.
40 - Bug in queue duration estimation led to infinite feeding of the queue,
41   until all request IDs are taken.
42 - Several fixes enforcing clean (non-deadlocking) sleep/shutdown.
43New:
44 - The operator rotate() replaces random(strict=true), and random()
45   does not have a strict parameter anymore.
46 - Switch to new behaviour in request-based sources.
47   Use conservative=true to get to the old behaviour.
48 - on_blank(): provide an on_noise handler.
49 - playlist*(): add server commands for reloading the playlist and changing
50   its URI.
51 - Fallible outputs: all outputs now have a fallible mode, in which
52   they accept fallible sources, and automatically start/stop when the child
53   fails to stream.
54 - EXPERIMENTAL ogg/dirac encoding support.
55 - output.*.aacplus(): native outputs encoding in AAC+ using ocaml-aacplus.
56 - Switched to a custom implementation of the various shout protocols.
57   It notably allows arbitrary content-type settings which enables
58   AAC+ streaming. Enabled wrappers for external encoders for AAC+ format
59   aacplusenc (#220 and #136). Also added custom IRC, AIM and ICQ headers
60   to shoutcast wrappers (#192).
61 - Harbor now supports Shoutcast/ICY headers properly. This allows in
62   particular the use of any supported data format for the source client.
63 - Harbor sources now also consider "song" field when updating metadata.
64 - Added built-in support for m4a audio files and metadata.
65   Made external support optional through enable_faad.
66 - Added optional resampling for output.external operators (#273).
67 - Added optional host and port parameters for audioscrobbling
68   submissions. Allows to use alternate systems, such as libre.fm
69   of jamendo's compatibility API. Added nowplaying submission,
70   and various wrappers, including a full submission process
71   (now playing at beginning, submit some times before the end).
72 - New variables in the script language: liquidsoap.version and
73   configure.{libdir,pidfile,logdir}.
74 - Added built-in support for replay_gain, through the replay_gain protocol
75   (enabled by default) and the replay gain metadata resolver (to be enabled
76   using enable_replaygain_metadata()). (#103 & #317)
77 - Reverse DNS operations can be disabled using settings keys
78   "server.telnet.reverse_dns" and "harbor.reverse_dns".
79Experimental:
80 - MIDI: file decoding, synthesis, virtual keyboard.
81Removed:
82 - RTP input and output.
83 - Removed decoders using ocaml-natty. Slow, unmaintained and superseded
84   by the mplayer decoder.
85
860.9.1 (18-06-2009)
87Bugs fixed:
88 - Fixed request task not ending properly for request-driven sources (playlist,
89   request.queue, request.equeue). Fixes a problem reported when reloading
90   an empty playlist multiple times. (#269)
91 - Fixed math.h usage in rgb_c.c.
92 - Fixed append operator. (#284)
93 - Fixed OSS compilation for non-linux systems.
94 - Disconnect idle harbor sources after timeout has expired.
95   Thanks to Roman Savrulin for reporting and fixing !
96 - Taglib metadata resolver is only used on files decoded
97   by the MP3 decoder.
98New:
99 - Get a node's striping status when stripping
100   blank with strip_blank (#260).
101 - on_connect function for input.harbor now receives the
102   list of headers given by the connected source (#266).
103 - Added on_end operator, to execute a handler when a track ends.
104 - Added estimated remaining time in the queue length for request-driven
105   sources (request.{equeue,queue}, playlist). This allows these sources
106   to prepare less files in advance. In particular, primary queue may
107   only contain the file currently played. Default behaviour has been
108   set to the old behaviour, and a conservative option has
109   been added to switch to the new behaviour. New behavivour
110   will be the default for the next release.
111   fixes #169, references #146
112
1130.9.0 (01-03-2009)
114Bugs fixed:
115 - Fixed byte swapping function.
116 - Fixed unix server socket failure (#160).
117 - Fixed mp3 audio glitches when decoding
118   files with picture id3v2 tags using ocaml-mad (#162).
119 - Fixed liquidsoap crash on weird telnet and harbor input (#164).
120 - Fixed request.queue() not considering initial queue on wake-up (#196).
121 - Fixed source leak in append().
122 - Fixed after_output propagation in the transitions of switches (#208).
123 - Fixed compilation for ocaml 3.11 (#216).
124 - Fixed (again) Vorbis mono output (#211).
125 - Avoid crashing on broken symlinks when parsing directories (#154).
126 - Use random temporary file in liGuidsoap.
127 - Fixed liGuidsoap to use the (not so) new metadata field initial_uri.
128 - Fix bugs in the life cycle (sleep/wake_up) of queued request sources,
129   which made say_metadata unfunctional.
130 - Remove buggy unbuffered {input,output}.jack. (#231)
131 - Fixed audio information sent to icecast. (#226)
132 - Fixed global reset starting inactive sources. (#227)
133 - Fixed shoutcast source initial answer in harbor. (#254)
134 - Fixed frame and metadata duplication in cross operators. (#257)
135 - Fixed several sources (outputs, external streams) that were not going
136   to sleep correctly.
137Changes:
138 - Warning: interactive_float() is now interactive.float().
139New:
140 - Compatible with OCaml 3.09.
141 - Faster shutdown.
142 - Rewrote ogg decoding, for files and streams.
143 - Support for ogg skeletons, currently only used for theora.
144 - Cleanup icecast class hierarchy and restart mechanism, especially
145   with respect to the encoder.
146 - Support for breaks and metadata in generators.
147   As a result, input.http() and input.harbor() now fully support them.
148   See new_track_on_metadata parameters there.
149 - Switch operators (fallback,random and switch) can now replay the metadata
150   of a source that has been left in the middle of a track.
151 - New force_mime parameter for input.http().
152 - New insert_missing parameter for append().
153 - Multi-line strings in liq scripts, with a caml-like syntax.
154 - Slight modification of the scripting syntax, handling unary minus.
155 - Added user_agent parameter for input.http and input.lastfm
156 - Added speex support for files and HTTP streams.
157 - Added EXPERIMENTAL support for AU, AIFF and NSV mp3 audio files
158   using ocaml-natty.
159 - Added "prefix" parameter to the playlist operators. Allows to prefix
160   each uri in order to force resolution through a specific protocol,
161   like replaygain: for instance. (#166)
162 - Support for external processes as audio encoder:
163   * Added output.icecast.lame to output to icecast using the lame binary.
164   * Added output.icecast.flac to output to icecast using the flac binary.
165   * Full generic support awaits some changes in libshout.
166 - Support for external processes as audio stream decoder:
167   * Added input.mplayer to stream data coming from mplayer.
168 - Support for external processes as audio file decoder:
169   * Added support for flac audio files using the flac binary.
170   * Added support for m4a files using the faad binary.
171   * Added optional support for mplayer, enabled with enable_mplayer().
172 - Support for external metadata decoders.
173 - Support for generic authentication function in harbor,
174   also available for ICY (shoutcast) clients.
175 - Added optional support for the samplerate library,
176   and dynamic configuration of resampling routine.
177 - Added lag() operator, which delays a stream by a constant time.
178 - Initial support for PulseAudio.
179 - Added experimental support for {input,output}.marshal, allowing
180   raw communication between various liquidsoap instances.
181 - Added optional alternatives to store buffered audio data:
182    * raw: in memory, s16le format
183    * disk: on disk, several big files
184    * disk_manyfiles: on disk, a lot of small files
185   See documentation for more details.
186 - Added EXPERIMENTAL video support:
187    * Support for ogg/theora file input.
188    * Support for ogg/theora file and icecast output
189    * Support for SDL output.
190    * Optional support for ocaml-gavl as video converter.
191    * Support for video in _some_ existing operators, including switches,
192      add(), metadata/track manipulations.
193    * Added operators: video.fade.*, video.fill, video.greyscale, video.image,
194      video.invert, video.lomo, video.noise, video.opacity, video.opacity.blur,
195      video.rotate, video.scale, video.sepia, video.text, video.tile,
196      video.transparent, video.volume.
197
1980.3.8.1 (11-08-2008)
199 - Fixed metadata propagation during default transition
200   in smart_crossfade
201 - Changed transition evaluation order in smart_crossfade
202 - Fixed transition function in smart_crossfade
203
2040.3.8 (30-07-2008)
205Bugs fixed:
206 - Vorbis mono output is now working
207 - Fixed parameter parameter description
208   in the documentation
209 - Propagate new delay in add_timeout
210 - Fixed inter-thread mutex lock/unlock in playlist.ml
211 - Fixed "next" playlist command
212 - Fixed race conditions in request_source.ml feeding task
213 - cross/smartcross: raise the default for inhibition as
214   setting it to exactly duration is not enough
215 - Don't fail when $HOME is not set
216 - Fixed metadata update in input.harbor with icecast2 source protocol
217 - Fixed shutdown function. Fixes #153
218 - Fixed input.oss. Liquidsoap now works with OSS4 ! Fixes #158
219New:
220 - Added a hook to execute a function when playlist.once ends
221 - Enhanced smart_crossfade
222 - Added string.case and string.capitalize
223 - New "exec_at" operator, to execute a function depending on a given predicate
224 - Added script example in the documentation to listen to radio Nova and get
225   the metadata from a web page.
226 - Changed parameters name in fallback.skip to reflect who are the fallback
227   and input source.
228 - Added a dump file parameter to input.harbor, for debugging purpose.
229 - Added an auth function parameter to input.harbor for custom
230   authentifications. Fixes #157
231 - Added "primary_queue" and "secondary_queue" commands to request.queue and
232   request.equeue sources. Also set the metadata "queue" to either "primary"
233   or "secondary" for each request in the queue. Documented it too.
234 - Insert latest metadata for a node of a switch source when switching
235   back to it in a middle of a track.
236 - Added a 'conservative' parameter to cross, smilar to the one in smartcross.
237Internal:
238 - Enhanced liqi documentation parser to build the website.
239
2400.3.7 (03-06-2008)
241Bugs fixed:
242 - Now works on FreeBSD and hopefully other unices that are stricter than
243   Linux about Mutex usage.
244 - input.http() now has a bind_address parameter.
245 - Harbor socket now has a timeout for lost connections.
246 - smartcross() is now more compliant with the inter-sources protocol,
247   fixes several "get frame didn't change the buffer" bugs.
248 - Ogg packeting bugs.
249 - Buffering policy in input.http/harbor().
250 - No "." in IDs and labels.
251 - Resources: FD leaks, useless threads (threads leaks?) in input.http().
252 - fade.out() used to run into infinite loops when the delay was 0.
253New:
254 - New documentation system and website.
255 - Self-documenting server with a more helpful "help" command.
256 - Moved to duppy: less threads, lighter load, and an configurable scheduler.
257 - Moved to Taglib for more reliable access to MP3 metadata.
258 - MIME types, notably for playlists and MP3 files.
259 - New Jack support. The old one has been renamed to in/output.jack.legacy().
260 - Harbor: per-mount passwords and the stop command to kick a source client.
261 - Official Last.FM client.
262 - Metadata is no more punctual but interval-based, which suppresses some
263   surprising behaviours.
264 - Perfected daemon behaviour.
265 - All output.file.*() now have the features that used to be only in
266   output.file.vorbis(), notable re-opening. Added %w to the strftime-like
267   format codes allowed in their filename parameter.
268 - Add clear_metadata() and map_metadata(). Now, rewrite_metadata() is a simple
269   specialization of map_metadata(), written in utils.liq.
270 - Dynamic amplification factor in amplify(), e.g. useful for replay gain.
271 - Lots of new functions in the scripting API: for lists, requests, system
272   interaction, shutdown, command-line parsing, scripted server commands, etc.
273As always:
274 - code cleanup, style, etc.
275
2760.3.6 (17-12-2007)
277Bugfix release:
278 - Close Http socket
279 - Add http socket timeout
280 - Close playlist file after reading its content
281 - Fix http redirect support for lastfm files
282 - Fix file open leak in camomile support
283 - Fix playlist uri ending with "/"
284
2850.3.5 (08-11-2007)
286Bugfix release:
287  - Fixed #57: scpls and mpegurl playlist parsing
288  - Fixed #46: Late cross-scripts bindings
289
2900.3.4 (25-09-2007)
291Notation: "-" stands for a change, "+" for an addition.
292* Language
293  - Support for polymorphism, subtyping and basic ad-hoc polymorphism,
294    which allows a much simpler API, notably for maths and serialization.
295  + Added interactive_*() for mutable values.
296  - The right syntax for settings is now set("var", value) and can be used
297    anywhere in the scripts.
298  - The volume parameters of most operators are now in dB.
299  - Many builtin functions added.
300  - Nicer type error messages.
301* Sources
302  + Added input.lastfm() to relay last.fm streams.
303  + Added input.harbor() to received Icecast2 source streams.
304  + Added noise() to generate white noise
305  - Reimplemented playlist support, added various xml and text formats.
306  - Added mpd protocol to find files using mpd.
307* Operators
308  + New effects: compress(), flanger(), pan().
309  + New filters: filter.fir.*(), filter.iir.*(), filter.biquad.*(), comb().
310  + Added support for LADSPA effects.
311  + Added eat_blank() to remove blanks.
312* Outputs
313  - Added non-default restart option for output.icecast.*().
314  - Added the possibility to tweak some settings at runtime.
315  - Split output.icecast.vorbis() into output.icecast.vorbis.*() to distinguish
316    between encoding modes -- and similarly for output.file.vorbis and mp3.
317  - Better handling of Icecast disconnections.
318* IO
319  + Added portaudio support.
320  - Jack support is now somewhat working.
321* As usual, lots of bug fixes, careful polishing & much more...
322
3230.3.3 (06-06-2007)
324* Major cleanup of the core stream representation; moved to float arrays,
325  removing several back-and-forth conversions and enhancing the perfs a lot;
326  reviewed all sources and operators, made many minor enhancements btw.
327* Lots of sound processing operators: compand, compress, normalize,
328  pitch, bpm, soundtouch, saw, square, etc. Add more shapes to fade.*().
329* New track processing operators: insert_metadata, on_track.
330* Smart cross: allows to select a transition based on the volumes around the
331  end-of-track.
332* Support for AAC encoding/decoding.
333* Several fixes to output.icecast.mp3 in order to support shoutcast servers.
334* Automatic format recognition for input.http(), support for playlists.
335* OSS I/O.
336* Unbuffered ALSA I/O for low latency.
337* Server interface via UNIX domain sockets.
338* Better output.file.vorbis with support for re-opening the file, appending,
339  interpolate strftime format codes, etc.
340* Add pre-processing and math primitives to the language, new _[_] notation for
341  assoc(), ruby-style anti-quotation ("..#{..}.."), add_timeout(), execute(),
342  log()...
343* Ability to tweak the internal PCM stream format.
344* Classify sources and operators in categories for more structured doc.
345* Started a few visualization operators, text and graphics based.
346* Several bug fixes: request leaks, sine frequency, switch, etc.
347
3480.3.2 (16-03-2007)
349* New portable output to speakers using libao().
350* Updated liGuidsoap to use it until ALSA gets enhanced.
351* Implemented a decent estimation of the remaining time in a track.
352* Added the cross() operator allowing cross-fading.
353* Generalized say_metadata() into append() and prepend().
354* Per-track settings for cross(), fade.*(), prepend() and append()
355  using requests' metadatas.
356* Implemented input.http.mp3(), including support for icy metadata.
357* New pipe() operator which allows one to filter the raw audio through an
358  external program. However, sox and other common tools aren't suitable for that
359  because they don't flush their output often enough.
360* New on_blank() operator for calling a callback on excessive blanks.
361* Restart outputs on insane latencies.
362* Type checkings for settings.
363* Setting for not starting the internal telnet server.
364* Now handles old and new versions of Camomile correctly.
365* Internal fixes and polishing (switches' cached selection, empty tracks..)
366
3670.3.1 (17-11-2006)
368* More standards-compliant tarball
369* Generate doc with locally built liquidsoap
370* Try to cope with ill-formed mp3
371* Updated for newer versions of Camomile
372* So-called "strict" random-mode
373
3740.3.0 (27-08-2006)
375* Many minor and major fixes at every level!
376* Conversion of metadata to UTF8.
377* Got rid of too many threads by scheduling all download tasks
378  in a single thread, and handling all of the server's clients
379  in another single thread.
380* Simplified the time interval syntax and integrated it to the script language.
381* New protocol: Wget for FTP, HTTP and HTTPS.
382* Ability to define a new protocol from the script,
383  typically using an external app/script for resolution, such as bubble.
384* Ability to use an external app/script for dynamically creating requests.
385* New on_metadata operator for performing arbitrary actions (typically
386  a call to an external script) when metadata packets occur in a stream.
387* MP3 encoding, to file or shout.
388* API renamings and simplification.
389* Supports transition, as functions of type (source,source) -> source
390  in all switching operators: schedule, random, fallback.
391* Restart icecast2 outputs on failures.
392* Major changes to the scripting language which is more uniform and flexible,
393  has functions, a helpful (?) type inference, and a simple Ruby-like syntax.
394* Timing constraints and synchronization are managed by Root
395  in a centralized way, no more by the many outputs which need it.
396* Audio decoding is no more based on file extensions,
397  but on the existence of a valid decoder.
398* Added the equeue operators which allows interactive building of playlists,
399  supporting insertion and moving of queued requests -- queue only allows
400  you to push requests and cancel queued requests.
401* A Python-Gtk GUI for controlling operators, or more specifically as a console
402  for creating your live show -- to be updated, still unstable.
403* Alsa input and output.
404* Blank detection, automatically skips on too long blanks, or strip them.
405* Http ogg/vorbis relay, the way to relay live shows.
406* Interactive mixer.
407* The request system was mostly rewritten to really fulfill its specification.
408* The server is no more associated to the queue operator but is now something
409  external, in which all operators can plug commands. This much more logical
410  design lead to many more interactive controls. The syntax of command outputs
411  was also simplified for easier automated processing.
412* Dynamic loading of plugins.
413* Outputs are now operators. It makes it possible to output different streams
414  in a single instance of Liquidsoap, which RadioPi needed. As a consequence
415  we removed the restriction that one source must have at most one father,
416  without any extra burden for the user.
417
4180.2.0 (20-04-2005)
419* Proper initial release.
420
4210.1.0 (2004)
422* Release for academic demonstration, not functionnal.
Note: See TracBrowser for help on using the browser.