# AudioInputStats

URL: https://www.caprid.com/docs/reference/typescript/caprid/moq-media/interfaces/audioinputstats/

Defined in: [audio-player.ts:138](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L138)

An input's counters and jitter-buffer state. Counters are cumulative; durations are microseconds.

## Properties

### bufferedUs

```ts
bufferedUs: number;
```

Defined in: [audio-player.ts:161](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L161)

The audio held now.

***

### concealedUs

```ts
concealedUs: number;
```

Defined in: [audio-player.ts:167](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L167)

Silence played in place of frames that never came.

***

### cutHeardAtUs

```ts
cutHeardAtUs: number | null;
```

Defined in: [audio-player.ts:183](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L183)

When the latest `cut()` is heard: the time, on the clock's time source (`performance.now()` µs without a clock),
at which the first output rendered after the jitter buffer applied it reaches the speaker, so the cut audio has
stopped. `null` before any cut, and from each `cut()` until the buffer has applied it. How an interruption is
timed: from the talker's request to here is how long its old audio kept playing.

***

### cutUs

```ts
cutUs: number;
```

Defined in: [audio-player.ts:176](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L176)

Audio dropped by `cut()`.

***

### decoded

```ts
decoded: number;
```

Defined in: [audio-player.ts:140](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L140)

Frames handed to the decoder.

***

### decoderResets

```ts
decoderResets: number;
```

Defined in: [audio-player.ts:144](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L144)

Times the decoder was reset or replaced: at a discontinuity, a timestamp jump, or after an error.

***

### dryAtUs

```ts
dryAtUs: number | null;
```

Defined in: [audio-player.ts:159](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L159)

The timeline timestamp where the buffer last ran dry while playing, until playback starts again; `null` otherwise,
and after a flush or a cut that empties the buffer.

***

### errors

```ts
errors: number;
```

Defined in: [audio-player.ts:146](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L146)

Decoder errors.

***

### heldUntilUs

```ts
heldUntilUs: number | null;
```

Defined in: [audio-player.ts:154](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L154)

The timeline timestamp just past the newest audio held: the end of decoded audio. `null` when nothing is held.

***

### jitterTargetUs

```ts
jitterTargetUs: number;
```

Defined in: [audio-player.ts:163](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L163)

The jitter-buffer target now.

***

### late

```ts
late: number;
```

Defined in: [audio-player.ts:142](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L142)

Frames dropped on arrival: behind audio already decoded, or inside a cut.

***

### playing

```ts
playing: boolean;
```

Defined in: [audio-player.ts:150](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L150)

Whether the buffer is playing, rather than filling to its target.

***

### playStarts

```ts
playStarts: number;
```

Defined in: [audio-player.ts:152](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L152)

Times playback started: at the start, after running dry, and after a flush or a cut that emptied the buffer.

***

### recoveredUs

```ts
recoveredUs: number;
```

Defined in: [audio-player.ts:174](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L174)

Audio rebuilt for frames that never came from the next frame's in-band FEC; counted as `synthesizedUs` is.

***

### reports

```ts
reports: number;
```

Defined in: [audio-player.ts:185](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L185)

Clock reports made.

***

### synthesizedUs

```ts
synthesizedUs: number;
```

Defined in: [audio-player.ts:172](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L172)

Audio synthesized in place of frames that never came: libopus packet-loss concealment. Counted as it is decoded,
less, from the next report, what the jitter buffer dropped because it had run dry by the time it came.

***

### trimmedUs

```ts
trimmedUs: number;
```

Defined in: [audio-player.ts:165](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L165)

Audio dropped to shed latency: held past what the target needed, or past the hard bound.

***

### underruns

```ts
underruns: number;
```

Defined in: [audio-player.ts:148](https://github.com/caprids/relay-sdks/blob/main/ts/packages/moq-media/src/audio-player.ts#L148)

Times the buffer ran dry while playing and audio came back within the jitter-buffer ceiling.
