github savonet/liquidsoap 0.9.2
Liquidsoap 0.9.2

latest releases: v2.2.5, rolling-release-v2.2.x, v2.2.4...
pre-release8 years ago

This release is a snapshot of upcoming features. It also contains several important bugfixes. As a snapshot, it contains experimental or unpolished features, and also breaks compatibility with previous versions. You should in particular notice the two "New" items below:

  • random(strict=true) is now called rotate();
  • request sources (playlists, request.*) have a new queuing behavior,
    check the doc (request-sources.html) or revert to conservative=true.

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.

Don't miss a new liquidsoap release

NewReleases is sending notifications on new releases.