# FrameReaderSequencer

URL: https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereadersequencer/

Defined in: [relay-sdks/ts/src/frame-reader.ts:8](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L8)

What a [FrameReader](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereader/) drives: `@caprid/moq-media`'s `FrameSequencer` qualifies. The reader feeds it a
subscription's events and polls it; the sequencer owns the ordering, the deadlines and the LOC format.

## Type Parameters

| Type Parameter |
| ------ |
| <a id="type-parameter-f"></a> `F` |

## Properties

### trackProperties

```ts
trackProperties: readonly KeyValuePair[];
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:10](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L10)

Set from each SUBSCRIBE_OK.

## Methods

### groupEnded()

```ts
groupEnded(groupId): void;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:14](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L14)

A group's stream ended cleanly.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `groupId` | `number` |

#### Returns

`void`

***

### groupReset()

```ts
groupReset(groupId): void;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:16](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L16)

A group's stream was reset.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `groupId` | `number` |

#### Returns

`void`

***

### object()

```ts
object(object): void;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:12](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L12)

An object arrived.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `object` | [`MoqtObject`](https://www.caprid.com/docs/reference/typescript/caprid/relay/index/interfaces/moqtobject/) |

#### Returns

`void`

***

### poll()

```ts
poll(): object;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:20](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L20)

Take the frames ready now, and when to poll again.

#### Returns

##### catchUp?

```ts
catchUp?: boolean;
```

The sequencer asks for the subscription to be replaced at the live edge: see `onCatchUp`.

##### frames

```ts
frames: F[];
```

The frames ready now, in decode order.

##### waitUs

```ts
waitUs: number | undefined;
```

Poll again after this many microseconds, 0 at once; `undefined` when only new events can change it.

***

### restart()

```ts
restart(): void;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:18](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L18)

The subscription was replaced: forget everything.

#### Returns

`void`
