OBSERVERTC / Client Monitor

Perceived quality detectors

Visible and audible degradation, including synchronization.

Pixelated VideoDetects heavy video compression associated with visible pixelation.

Class

PixelatedVideoDetector

What it collects

Normalized quantization measurements and codec/track eligibility.

What triggers it

normalized QP≥0.62 for 8000 ms

What resolves it

QP<0.52; no QP/unknown codec/pause/end/screenshare stand down; not bitPerPixel

Example

Normalized QP stays high long enough to indicate heavy video compression.

Inbound Video Flow StateDistinguishes moving, choppy and frozen incoming video.

Class

InboundVideoFlowStateDetector

What it collects

Continuous and repeated freezes across flow detection and recovery windows.

What triggers it

shared flow slice: continuous/longest freeze≥2000 ms => frozen; ≥2 freezes => choppy

What resolves it

frozen clears on moving picture; choppy needs freeze-free recovery slice; mutually exclusive payload state

Example

A long freeze marks video frozen; repeated short freezes can mark it choppy.

Invented SpeechDetects excessive synthesized speech used to conceal missing audio.

Class

InventedSpeechDetector

What it collects

Invented-speech ratio, elapsed time and an accumulated evidence bucket.

What triggers it

bucket clamp(bucket+(inventedRatio−0.05)×dtMs,0,400); full opens invented-speech

What resolves it

empty closes; pause/end discard; missing input marks unavailable

Example

Repeated audio concealment fills the evidence bucket and raises the issue.

Audio Playout SynthesisDetects excessive synthesized audio during playout.

Class

AudioPlayoutSynthesisDetector

What it collects

Synthesized audio duration relative to played duration.

What triggers it

synthesized duration / played duration>0.05 over track window

What resolves it

recovery ratio≤threshold; needs media-playout measurements; currently raises synthesized-audio

Example

Synthesized audio exceeds five percent of played duration over the track window.

Jitter Buffer StressDetects a jitter buffer compensating heavily for uneven delivery.

Class

JitterBufferStressDetector

What it collects

Jitter-buffer target delay and audio stretch share.

What triggers it

target delay>200 ms AND stretch share>0.02 for 2 ticks

What resolves it

conjunction clears, track stand-downs; severity scales against 1000 ms and 0.15

Example

High buffer delay and substantial time stretching occur together.

AV Desync PlayoutDetects a timing mismatch between paired audio and video.

Class

AVDesyncPlayoutDetector

What it collects

Playout timestamps of explicitly paired audio and video tracks.

What triggers it

explicitly paired audio/video playout timestamps; ahead≥90 ms or behind≥185 ms for 3000 ms

What resolves it

ahead<45 or behind<125; direction-aware hysteresis; missing pairing is unavailable

Example

Paired audio remains sufficiently ahead of video for three seconds.

Sources: client-monitor-js/src/detectors/PixelatedVideoDetector.ts, client-monitor-js/src/detectors/AudioPlayoutSynthesisDetector.ts, client-monitor-js/src/detectors/InventedSpeechDetector.ts.

Version coverage varies by reference. Source revisions · Markdown source