Dear users, I am proud to announce two new releases of liquidsoap.
First, 0.9.3 will be the last 0.9.x release: it is a bugfix of the snapshot release 0.9.2. It is meant to help people who put 0.9.2 in production, and give a last chance to avoid the transition to 1.0.0. Of course, snapshots are not meant to have bugfix releases, but it turns out that many people didn't notice that 0.9.2 wasn't meant for production. This is mostly our fault, we have learned our lesson and will have better version numbers in the future. Second, and most exciting, the 1.0.0 beta is finally out after almost a year of deep changes. We have all the features that we want to see in liquidsoap 1.0.0, and we hope that many people will try this beta version to help us find bugs, optimize it, document it and straighten out a few details. The two releases are available as usual on our sourceforge page http://sf.net/projects/savonet, and the changelogs for each release can be found by the end of this message. MIGRATING FROM 0.9.x Moving from earlier releases to the beta version involves a few simple changes. I described it earlier on savonet-users [1]: essentially, you just need to adapt encoded outputs (icecast, file,etc) by using encoding formats: http://savonet.sourceforge.net/doc-svn/encoding_formats.html In some rare cases you might have to understand a little bit about heterogeneous stream contents and clocks: http://savonet.sourceforge.net/doc-svn/stream_content.html http://savonet.sourceforge.net/doc-svn/clocks.html HELP US I'll say it one last time, the beta shouldn't be too risky. I expect most bugs to be fixed quickly, at least concerning old features. By switching to the beta version, you'll help us reach a solid, polished 1.0 version that we can start supporting for production use. Here are a few things where we're particularly looking for improvement, and where feedback could help. *** Enhance the documentation, build a better website, promote external projects Ideas and contributions to our documentation are welcome. As the community builds up, I'm starting to dream of external documentation initiatives. An easy start (hint!) would be to enhance the wikipedia page for liquidsoap -- and it would really make more sense that we don't do it ourselves. Beyond documentation, we plan to give front page visibility to all projects liquidsoap-related. *** Blocking input/output, buffers and clocks As can be read on (http://savonet.sourceforge.net/doc-svn/clocks.html) most blocking I/O operators now force their own clock by default. The idea is that it tells you what is in sync with what: ALSA is in sync with ALSA, not necessarily with Jack. When two I/O operators are not in the same clock, an explicit buffer operator should be used... At least, that's the ideal picture I have in mind, but I'm not sure yet how well it'll work. Currently, blocking I/O operators still have a bufferized mode, which doesn't fit that picture, and I even left it to true for safety. Please try your script with bufferize=false, possibly by compensating with a separate buffer() operator, and tell us how it works for you. This could help us simplify our code, making it much more maintainable. Also note that output.icecast, which is slightly blocking especially on problematic network connections, doesn't put any constraints on clocks. If you encounter such problematic cases, you'll have to do it by hand. If it happens to often, we'll have to do change the default. *** Stream content conversions (mono from/to stereo, drop audio, mux video, etc) By default you'll find your single(), playlist() and related sources decode only stereo audio. To change that, wrap them in audio_to_stereo(): they'll decode any kind of audio as before, and the wrapper will convert everything to stereo. Currently, there is a slight inefficiency in doing that by default, so I didn't do it. Plus, I rarely need it. *** Find reasonable and fun uses of video and midi, thereby finalizing and optimizing the corresponding API Generally, tell us what kind of fun or useful stuff you can do involving various stream contents, what needs to be optimized quickly, and what you'd like to do. *** Finalize the clock API For those of you who'll hack seriously with the clocks, you may be able to help us design a more intuitive and complete API. This is it. We hope you'll enjoy it! -- David for the Savonet team [1] http://www.mail-archive.com/[email protected]/msg01814.html Changelog: 1.0.0 beta1 (06-09-2010) ======================== This beta version introduces two major new features: heterogeneous stream types and clocks. New: - 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. 0.9.3 (04-09-2010) ================== This release is a bugfix of the latest snapshot (0.9.2). It will be the last bugfix before 1.0. Bugs fixed: - Add "audio/mpegurl" to the list of mime-type for basic playlist parsing. - Decode arguments passed to input.harbor. - Use Camomile framework to try to recode arguments and user/password passed to input.harbor. - Support Theora 1.1 API via ocaml-theora 0.2.0. - Fixed input.lastfm. - Fixed SDL output. - Allow magic file type detection to follow symlinks. ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ Savonet-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/savonet-users
