Re: [LAD] LV2 Atom Sequence timestamps

From: Jeremy Salwen <jeremysalwen@email-addr-hidden>
Date: Wed Jun 06 2012 - 00:54:36 EEST

On Tue, Jun 5, 2012 at 3:44 PM, David Robillard <d@email-addr-hidden> 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.

Jeremy

_______________________________________________
Linux-audio-dev mailing list
Linux-audio-dev@email-addr-hidden
http://lists.linuxaudio.org/listinfo/linux-audio-dev
Received on Wed Jun 6 04:15:02 2012

This archive was generated by hypermail 2.1.8 : Wed Jun 06 2012 - 04:15:02 EEST