Skip to content

FrameSequencerOptions

Defined in: sequencer.ts:52

Options for createFrameSequencer.

catchUpAfterUs?: number;

Defined in: sequencer.ts:86

Signal a catch-up when frames keep arriving late with none delivered: from the first frame dropped as late to the latest is at least this long, in microseconds of the clock’s local time. Late means past the late-drop limit (frame grouping) or the target latency (keyframe grouping), as when a relay holds a growing backlog for this subscriber. The poll after that frame returns catchUp: true, once, until a frame is delivered again; whoever owns the subscription then replaces it at the live edge (a supervised subscriber’s catchUp(key)), which drops the relay’s backlog, and restarts the sequencer. Set it below the clock’s target latency, or a resync re-anchors on the late frames first. Default: never. Positive and finite.


clock: PlayoutClock;

Defined in: sequencer.ts:54

The broadcast’s playout clock. It holds the target latency and is where lateness is measured.


grouping?: "keyframe" | "frame";

Defined in: sequencer.ts:59

'keyframe' (default): a keyframe opens each group and later objects depend on it, as video. 'frame': every group is independently decodable, as audio.


lateDropUs?: number;

Defined in: sequencer.ts:67

Frame grouping only: how far behind the clock’s position a frame may still be delivered, in microseconds. Default: the clock’s lateDropUs, which every track on the clock shares. A listener set to drop late audio sets it near its playout target; a reader that wants every frame, such as speech-to-text, sets Infinity. Not negative.


reorderWindowUs?: number;

Defined in: sequencer.ts:76

Frame grouping only: how long, in microseconds of the clock’s local time, a frame waits for an earlier group that has not arrived, counted from when the frame arrived. Default 0: frames go out at once and an earlier group that arrives after a later one is dropped as behind. A frame that turns late while it waits is dropped as late. For a reader that wants every frame of a talker, set it to at least the publisher’s delivery timeout: a group the publisher’s transport is still resending can arrive that long after the group that follows it. Finite, not negative.


timestampPlayout?:
| boolean
| TimestampPlayoutOptions;

Defined in: sequencer.ts:99

Frame grouping only: hold frames that arrive early and release each at its timestamp, for a talker that sends faster than real time, such as a text-to-speech agent handing over a reply in bursts. Without it, a frame more than the clock’s target latency ahead of the position makes the sequencer resync forward, as after a stall, which drops what the player holds and re-anchors on the newest frame. With it, a frame is held until its timestamp is within leadUs of the position, and only a frame more than horizonUs ahead resyncs forward. While the clock has no position, the first frame anchors one of the sequencer’s own on the clock’s local time, which gives way to the clock’s once the player reports. Late drop, resyncs and catch-up are unchanged, so a live talker’s frames, which are never early, play as without it. Delay that underruns added (the clock fell behind local time while a queue built) is given back: held frames go out early by it, less 40 ms, so the jitter buffer trims it, as without this option. true takes the defaults of TimestampPlayoutOptions. Default off.


trackProperties?: readonly KeyValuePair[];

Defined in: sequencer.ts:61

The track properties from SUBSCRIBE_OK, which may declare the Timescale.