| 1 | 0.9.2 (29-10-2009) |
|---|
| 2 | ================== |
|---|
| 3 | This release is a SNAPSHOT of upcoming features. It also contains several |
|---|
| 4 | important bugfixes. As a snapshot, it contains experimental or unpolished |
|---|
| 5 | features, and also breaks compatibility with previous versions. |
|---|
| 6 | You 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 | ================== |
|---|
| 11 | Bugs 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. |
|---|
| 43 | New: |
|---|
| 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". |
|---|
| 79 | Experimental: |
|---|
| 80 | - MIDI: file decoding, synthesis, virtual keyboard. |
|---|
| 81 | Removed: |
|---|
| 82 | - RTP input and output. |
|---|
| 83 | - Removed decoders using ocaml-natty. Slow, unmaintained and superseded |
|---|
| 84 | by the mplayer decoder. |
|---|
| 85 | |
|---|
| 86 | 0.9.1 (18-06-2009) |
|---|
| 87 | Bugs 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. |
|---|
| 98 | New: |
|---|
| 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 | |
|---|
| 113 | 0.9.0 (01-03-2009) |
|---|
| 114 | Bugs 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. |
|---|
| 137 | Changes: |
|---|
| 138 | - Warning: interactive_float() is now interactive.float(). |
|---|
| 139 | New: |
|---|
| 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 | |
|---|
| 198 | 0.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 | |
|---|
| 204 | 0.3.8 (30-07-2008) |
|---|
| 205 | Bugs 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 |
|---|
| 219 | New: |
|---|
| 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. |
|---|
| 237 | Internal: |
|---|
| 238 | - Enhanced liqi documentation parser to build the website. |
|---|
| 239 | |
|---|
| 240 | 0.3.7 (03-06-2008) |
|---|
| 241 | Bugs 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. |
|---|
| 253 | New: |
|---|
| 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. |
|---|
| 273 | As always: |
|---|
| 274 | - code cleanup, style, etc. |
|---|
| 275 | |
|---|
| 276 | 0.3.6 (17-12-2007) |
|---|
| 277 | Bugfix 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 | |
|---|
| 285 | 0.3.5 (08-11-2007) |
|---|
| 286 | Bugfix release: |
|---|
| 287 | - Fixed #57: scpls and mpegurl playlist parsing |
|---|
| 288 | - Fixed #46: Late cross-scripts bindings |
|---|
| 289 | |
|---|
| 290 | 0.3.4 (25-09-2007) |
|---|
| 291 | Notation: "-" 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 | |
|---|
| 323 | 0.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 | |
|---|
| 348 | 0.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 | |
|---|
| 367 | 0.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 | |
|---|
| 374 | 0.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 | |
|---|
| 418 | 0.2.0 (20-04-2005) |
|---|
| 419 | * Proper initial release. |
|---|
| 420 | |
|---|
| 421 | 0.1.0 (2004) |
|---|
| 422 | * Release for academic demonstration, not functionnal. |
|---|