Bugs fixed:
- Fixed byte swapping function.
- Fixed unix server socket failure (#160).
- Fixed mp3 audio glitches when decoding
files with picture id3v2 tags using ocaml-mad (#162). - Fixed liquidsoap crash on weird telnet and harbor input (#164).
- Fixed request.queue() not considering initial queue on wake-up (#196).
- Fixed source leak in append().
- Fixed after_output propagation in the transitions of switches (#208).
- Fixed compilation for ocaml 3.11 (#216).
- Fixed (again) Vorbis mono output (#211).
- Avoid crashing on broken symlinks when parsing directories (#154).
- Use random temporary file in liGuidsoap.
- Fixed liGuidsoap to use the (not so) new metadata field initial_uri.
- Fix bugs in the life cycle (sleep/wake_up) of queued request sources,
which made say_metadata unfunctional. - Remove buggy unbuffered {input,output}.jack. (#231)
- Fixed audio information sent to icecast. (#226)
- Fixed global reset starting inactive sources. (#227)
- Fixed shoutcast source initial answer in harbor. (#254)
- Fixed frame and metadata duplication in cross operators. (#257)
- Fixed several sources (outputs, external streams) that were not going
to sleep correctly.
Changes:
- Warning: interactive_float() is now interactive.float().
New:
- Compatible with OCaml 3.09.
- Faster shutdown.
- Rewrote ogg decoding, for files and streams.
- Support for ogg skeletons, currently only used for theora.
- Cleanup icecast class hierarchy and restart mechanism, especially
with respect to the encoder. - Support for breaks and metadata in generators.
As a result, input.http() and input.harbor() now fully support them.
See new_track_on_metadata parameters there. - Switch operators (fallback,random and switch) can now replay the metadata
of a source that has been left in the middle of a track. - New force_mime parameter for input.http().
- New insert_missing parameter for append().
- Multi-line strings in liq scripts, with a caml-like syntax.
- Slight modification of the scripting syntax, handling unary minus.
- Added user_agent parameter for input.http and input.lastfm
- Added speex support for files and HTTP streams.
- Added EXPERIMENTAL support for AU, AIFF and NSV mp3 audio files
using ocaml-natty. - Added "prefix" parameter to the playlist operators. Allows to prefix
each uri in order to force resolution through a specific protocol,
like replaygain: for instance. (#166) - Support for external processes as audio encoder:
- Added output.icecast.lame to output to icecast using the lame binary.
- Added output.icecast.flac to output to icecast using the flac binary.
- Full generic support awaits some changes in libshout.
- Support for external processes as audio stream decoder:
- Added input.mplayer to stream data coming from mplayer.
- Support for external processes as audio file decoder:
- Added support for flac audio files using the flac binary.
- Added support for m4a files using the faad binary.
- Added optional support for mplayer, enabled with enable_mplayer().
- Support for external metadata decoders.
- Support for generic authentication function in harbor,
also available for ICY (shoutcast) clients. - Added optional support for the samplerate library,
and dynamic configuration of resampling routine. - Added lag() operator, which delays a stream by a constant time.
- Initial support for PulseAudio.
- Added experimental support for {input,output}.marshal, allowing
raw communication between various liquidsoap instances. - Added optional alternatives to store buffered audio data:
- raw: in memory, s16le format
- disk: on disk, several big files
- disk_manyfiles: on disk, a lot of small files
See documentation for more details.
- Added EXPERIMENTAL video support:
- Support for ogg/theora file input.
- Support for ogg/theora file and icecast output
- Support for SDL output.
- Optional support for ocaml-gavl as video converter.
- Support for video in some existing operators, including switches,
add(), metadata/track manipulations. - Added operators: video.fade.*, video.fill, video.greyscale, video.image,
video.invert, video.lomo, video.noise, video.opacity, video.opacity.blur,
video.rotate, video.scale, video.sepia, video.text, video.tile,
video.transparent, video.volume.