Good morning,

Xavier Cazin wrote:
It would seem more natural to me to use a "pick" operator that would
pick one (by default) or more tracks in the scheduled source:

schedule([("0m",pick(clock))]);

The problem here is that pick doesn't know what's going on on top of
him, thus cannot distinguish between
* the situation where schedule just entered the "0m" period and asks for data
* the situation where schedule is still in "0m" and asks for (more) data

Actually pick is the once() operator I had defined in the previous
mail, and has the same problems: it would need to be reinitialized at
some point.

Moreover, in the current implementation, your schedule node in that
example would declare itself as not being ready to stream as soon as
"0m" is false, which could cause the interruption of the clock
streaming. That's a minor problem, I can change the default behaviour,
or add a parameter for modifying it.

The architecture of liquidsoap is a strength, but imposes some
constraints on the design of operators: everything has to be local,
the same protocol is used everywhere between sources, etc.
--
David

Reply via email to