Streaming data types ​
Fields below are declared serialized members. Base types contribute their own fields; related types link the payload graph. ? means nullable, and required marks a required C# initializer. These are schematic C# contract shapes, not compilable declarations or a separate JSON schema. Constructor members are repeated in the field list for easy scanning. Serialization attributes and implementation helpers are omitted; use the linked source for exact wire aliases and formatters.
PlaybackQualityInfo ​
Aggregate playback health + per-stream details accompanying a playback quality push. Drives capacity estimation and per-stream priority decisions on the server's safety-cap step. Source
public sealed partial record PlaybackQualityInfo(
long EstimatedCapacityBytesPerSec,
double AggregateHealth,
PlaybackQualityReason Reason,
bool IsColdStart,
ApiMap<string, PlaybackStreamInfo> Streams,
string StallNote = ""
)
{
long EstimatedCapacityBytesPerSec;
double AggregateHealth;
PlaybackQualityReason Reason;
bool IsColdStart;
ApiMap<string, PlaybackStreamInfo> Streams;
string StallNote;
}Related types: PlaybackQualityReason, PlaybackStreamInfo.
PlaybackQualityReason ​
Allowed values for playback quality reason. Source
public enum PlaybackQualityReason
{
Stable = 0,
Climb,
Backoff,
FloorReached,
ActiveSetChanged,
ReconnectPush,
ColdStartTick,
Stalled,
}PlaybackStreamInfo ​
Per-stream playback sample plus the controller's classification. Pruned to what the server-side allocator and telemetry consume. Source
public sealed partial record PlaybackStreamInfo(
long IncomingByteRate,
double BufferDurationMsEma,
PlaybackStreamPriority Priority,
int Verdict
)
{
long IncomingByteRate;
double BufferDurationMsEma;
PlaybackStreamPriority Priority;
int Verdict;
}Related types: PlaybackStreamPriority.
PlaybackStreamPriority ​
Allowed values for playback stream priority. Source
public enum PlaybackStreamPriority
{
Secondary = 0,
Primary = 1,
}ReceiveQuality ​
Per-stream client request for the SVC layer cap the server should forward. LayerId is the inclusive max kept spatial layer id; IsThumbnail is the display role — true only for a true thumbnail tile, false = "large or unknown" (old clients never set it). Source
public sealed partial record ReceiveQuality
{
int LayerId;
bool IsThumbnail;
}RecordingQualityInfo ​
Wire payload accompanying a recording quality decision. Slim: only what the server-side telemetry uses (VideoSendDropRatio, VideoSendAckAgeMs). Source
public sealed partial record RecordingQualityInfo(
RecordingQualityReason Reason,
double SenderFrameDropRatioEma,
double LastAckAgeMs,
ThermalLevel ThermalLevel = default,
bool IsHardwareAccelerated = false
)
{
RecordingQualityReason Reason;
double SenderFrameDropRatioEma;
double LastAckAgeMs;
ThermalLevel ThermalLevel;
bool IsHardwareAccelerated;
}Related types: RecordingQualityReason, ThermalLevel.
RecordingQualityReason ​
Allowed values for recording quality reason. Source
public enum RecordingQualityReason
{
Stable = 0,
Climb,
Backoff,
StuckAtFloor,
ColdStartTick,
ReconnectPush,
}RecordingQualityState ​
Recorder controller's intended layer count and the count actually applied to the encoder. Sent to the server purely as a metric. Source
public sealed partial record RecordingQualityState(
int TargetLayerCount,
int EffectiveLayerCount
)
{
int TargetLayerCount;
int EffectiveLayerCount;
}StreamDemandInfo ​
The viewer-demand aggregate for one stream, as seen by the stream's owning node. Functional decision inputs only — provenance counters live in StreamDemandStats (pull-only, so their churn can't drive invalidations). Source
public sealed partial record StreamDemandInfo(int Mask, bool ThumbnailViewersOnly)
{
int Mask;
bool ThumbnailViewersOnly;
}StreamDemandStats ​
Demand provenance for diagnostics: who is reporting demand for a stream. Served by a plain (non-compute) method and polled by the diagnostics UI — deliberately NOT part of StreamDemandInfo, since the counters change on every viewer join/leave/pause and would invalidate the demand computes far more often than the decision inputs actually change. Source
public sealed partial record StreamDemandStats(int ViewerCount, int PausedCount)
{
int ViewerCount;
int PausedCount;
}