TamsPosition

One end of a play range.

Absolute timestamps are awkward for the commonest live request — "start near the live edge" — because the caller has to fetch the flow, read its timerange, subtract, and format TAI, and the edge moves while they do it. The relative forms are resolved against the flow’s own timerange, once, when the input starts: on a live flow its end IS the live edge, and on a static flow "10s before the end" is an ordinary VOD request.

Field

Type

Repeated

Description

position

oneOf

⮑at

string

A timestamp on the TAMS timeline, "{sign?}{seconds}:{nanoseconds}".

⮑after_start_ms

uint64

Offset forward from the start of the flow’s timerange.

⮑before_end_ms

uint64

Offset back from the end of the flow’s timerange.

NOTE 0 means the live edge exactly, which is legal but rarely wanted: playback is realtime-paced, so it waits for the next segment to be written and appears stalled until then. Allow a few segments of headroom.

Member of

Message

Description

TamsEndPosition

Where a play range ends: everything a TamsPosition can say, plus a length measured from wherever the range actually starts. The latter is only expressible for an end, which is why this is a separate message rather than an arm of TamsPosition that would be meaningless on from.

TamsPlayRange