From: David B. <dav...@gm...> - 2009-10-30 14:20:37
|
Dear users, The savonet team is proud to announce the release of liquidsoap 0.9.2. This release is a snapshot of upcoming features, but it also brings several important bugfixes. As a snapshot, it contains experimental and unpolished features, and also slightly breaks compatibility with previous 0.9.x versions. In particular, please note the following two changes: (1) random(strict=true) is now called rotate(). (2) Request sources (playlists, request.*) have a new queuing behavior, check the doc (request-sources.html) or revert to conservative=true. Upgrading will silently and significantly change the behavior of your scripts. This may be welcomed, or unwanted. This release is a milestone on our way to liquidsoap 1.0.0. Major changes are going to be merged into the main development branch now. We keep getting closer! For those of you who are running the SVN version of liquidsoap, the current revision (6882) should of course be 100% safe, but you should avoid the next ones as it may become only partly functional for a while. Let me conclude, as usual, with the full changelog. Bugs fixed: - Ogg encoder now muxes pages according to their ending time. - Support "ogg/audio" and "ogg/video" mime types for HTTP ogg streams. - Changed external encoder's "restart_encoder" to the more relevant "restart_on_new_track". Added optional "restart_after_delay" to restart the encoder after some delay. Also completely rewrite stop mechanism. Stop operation now waits for the encoding process to finish, allowing proper restart_on_new_track like for ogg encoded data. - Factorized buffered I/O code. Also added a blocking API, which avoids "no available frame" and "reader not ready" messages and audio glitches. It enforces that "root.sync" be deactivated for these sources, such that synchronisation is done by the source. (#203) - Factorized file decoding code. - Fixed reversed order when parsing playlists using playlist.parse(). - Avoid bad crashes when resources lack, e.g. no more memory. - Tighten and enforce the inter-source protocol. - All outputs: fix the autostart server command. With the former code, a modification of the autostart parameter was only taken into account one start/stop cycle later. - on_blank(): fix a bug that prevented the first call to on_noise. - Fixed estimated remaining samples on ogg files, fixes issues with operators relying on this value, in particular crossfade() and request-based sources when operating in non-conservative mode. - Fixed socket descriptor leak in input.http. (#318) - Fixed deadlock at init when an exception was raised at wake_up phase. (#319) - Fix delay() which could sometimes incorrectly declare itself ready, and thus try to get some data from its unavailable input source. - Bug in queue duration estimation led to infinite feeding of the queue, until all request IDs are taken. - Several fixes enforcing clean (non-deadlocking) sleep/shutdown. New: - The operator rotate() replaces random(strict=true), and random() does not have a strict parameter anymore. - Switch to new behaviour in request-based sources. Use conservative=true to get to the old behaviour. - on_blank(): provide an on_noise handler. - playlist*(): add server commands for reloading the playlist and changing its URI. - Fallible outputs: all outputs now have a fallible mode, in which they accept fallible sources, and automatically start/stop when the child fails to stream. - EXPERIMENTAL ogg/dirac encoding support. - output.*.aacplus(): native outputs encoding in AAC+ using ocaml-aacplus. - Switched to a custom implementation of the various shout protocols. It notably allows arbitrary content-type settings which enables AAC+ streaming. Enabled wrappers for external encoders for AAC+ format aacplusenc (#220 and #136). Also added custom IRC, AIM and ICQ headers to shoutcast wrappers (#192). - Harbor now supports Shoutcast/ICY headers properly. This allows in particular the use of any supported data format for the source client. - Harbor sources now also consider "song" field when updating metadata. - Added built-in support for m4a audio files and metadata. Made external support optional through enable_faad. - Added optional resampling for output.external operators (#273). - Added optional host and port parameters for audioscrobbling submissions. Allows to use alternate systems, such as libre.fm of jamendo's compatibility API. Added nowplaying submission, and various wrappers, including a full submission process (now playing at beginning, submit some times before the end). - New variables in the script language: liquidsoap.version and configure.{libdir,pidfile,logdir}. - Added built-in support for replay_gain, through the replay_gain protocol (enabled by default) and the replay gain metadata resolver (to be enabled using enable_replaygain_metadata()). (#103 & #317) - Reverse DNS operations can be disabled using settings keys "server.telnet.reverse_dns" and "harbor.reverse_dns". Experimental: - MIDI: file decoding, synthesis, virtual keyboard. Removed: - RTP input and output. - Removed decoders using ocaml-natty. Slow, unmaintained and superseded by the mplayer decoder. We hope you'll enjoy it! -- David for the savonet team |