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

Reply via email to