This beta version introduces two major new features: heterogeneous stream types and clocks.
- Different sources can carry different types of content.
- Encoding formats have been introduced to help infer stream content types. This brings static checking for bounds in encoding parameters.
- Introduce conversions between stream contents (mono, stereo, drop audio, video, etc) and muxing.
- Allow explicit type annotations in scripts.
- Introduce clocks, cleanly allowing for the coexistence of different time flows, and avoiding inconsistencies that can result from it. Soundcard I/O and cross-based operators notably make use of it.
- Remove root.sync, replaced by attaching a source s to clock(sync=false,s).
- Enable dynamic source creation and source.shutdown().
- Extend and adapt MIDI and video operators.
- Introduce purely metadata streams (audio=video=midi=0 channels) and metadata stream decoder.
- Support WAV streams in input.http/harbor().
- Introduce static image decoder using SDL image.
- Remove bound of request identifies (RID).
- Experimental: source.dynamic() for advanced dangerous hacking.
- Make path relative to script in %include "PATH", and introduce %include <...> where path is relative to liquidsoap library directory.
- Add channels_matrix parameter to output.ao().
- Add on_(dis)connect hooks in input.harbor().
Cleanup and fixes:
- Lots of cleanup and fixes as with all major code rewriting.
- Optimize video and stabilize it a little bit... still not perfect.
- Rewrite stream and file decoding API, as well as file format detection.
- Enhance shutdown and error message reporting, notably for icecast and request-based sources.
- Avoid quasi-infinite loop in failed request resolving.