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

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Savonet-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/savonet-users

Reply via email to