[LAD] LV2 Atom Sequence timestamps

Jeremy Salwen jeremysalwen at gmail.com
Tue Jun 5 21:54:36 UTC 2012

On Tue, Jun 5, 2012 at 3:44 PM, David Robillard <d at drobilla.net> wrote:

> On Tue, 2012-06-05 at 06:34 -0400, Jeremy Salwen wrote:
> > Hi All,
> >
> > From what I can tell, it looks like the LV2 Atom Sequence
> > specification allows you to send events with arbitrary units for the
> > timestamp.
> >
> > I have a few questions about this:
> >
> > 1. How are we to know whether a particular unit uses the double field
> > in the timestamp union, or the uint64_t field in the timestamp union.
> Context.  When used as event ports in the run() callback, it is always
> frames, like everything else.
> I deliberately avoided complicating it with a bunch of stuff to handle
> beat-based time stamps in this context since this would almost certainly
> be unused (learned that lesson with the event extension).  It can be
> added later if need be.
> > 2. The specification says "The unit field is either a URID that
> > described an appropriate time stamp type, or may be 0 where a default
> > stamp type is known."  In what circumstances would the timestamp be
> > known?  When can I expect to see a zero in that field?
> See above.
> > 3. Are the timestamps absolute times?  Or relative to the previous
> > event?  Or relative to the start of the audio chunk? Does it depend on
> > the units used?
> Absolute from the start of the Sequence.
> > 4. Why does the documentation show |FRAMES |SUBFRMS| as the timestamp
> > field? From what I can tell, there is no unit which includes frames
> > and subframes subdivided that way, and the sampler example just uses
> > the full 64 bits as a frames field.  Is this just a relic from the old
> > event port documentation? (the diagram seems familiar).
> Oops, relic.  I will fix this.
> > 5. How are hosts/plugins supposed to deal with the multiplicity of
> > units?  For example, suppose I'm a plugin or host that wants to
> > receive MIDI data. How am I supposed to know what timestamp unit to
> > expect?  Is there a facility for converting between different units
> > automatically?  The only extra information required to convert between
> > any two time units would be the bpm and sample rate.  It would be
> > rather annoying to have to implement a bunch of unit conversion code
> > in every host/plugin you write in order to make sure it can handle any
> > unit which is tossed at it.
> Indeed it would be.  Hence why none of this is there, so the extension
> does not imply you are expected to have to deal with any of that.  I
> suppose the fact that it is audio frames in this context needs to be
> more clear.
> In short, when used as port buffers, it's always frames, don't worry
> about it.  The potential for other time stamp types is there for other
> cases, since it's possible to use Sequences in other non-port-buffer
> ways (e.g. you could send around events with entire sequences as their
> payloads)
> Cheers,
> -dr
> P.S. lv2-dev is a better place for this sort of thing
> Thanks David,

If the timestamps are absolute, are they reset on every call to activate()?

I thought lv2-dev was for developing the lv2 spec and extensions, but my
questions were more about implementation of plugins/hosts.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.linuxaudio.org/pipermail/linux-audio-dev/attachments/20120605/38f079d9/attachment.html>

More information about the Linux-audio-dev mailing list