TODO(hbos): Fill in.

This is an unofficial proposal.

Introduction

See ReSpec's user guide for how to get started!

RTCOutboundRtpStreamStats dictionary non-standardized members

partial dictionary RTCOutboundRtpStreamStats {
      DOMString  contentType;
};
contentType of type DOMString

This metric exposes the video-content-type of the last key frame sent. This value is updated every time the last packet of a key frame is sent, and it is updated as follows: if this packet contained the video-content-type RTP header extension value 0x00, contentType is "unspecified", if it is 0x01, contentType is "screenshare". In all other cases, such as if the header extension is missing, its value is invalid or no last packet of a key frame has been sent yet, contentType is missing.

RTCInboundRtpStreamStats dictionary non-standardized members

partial dictionary RTCInboundRtpStreamStats {
      DOMString  contentType;
};
contentType of type DOMString

This metric exposes the video-content-type of the last key frame received. This value is updated every time the last packet of a key frame is received, and it is updated as follows: if this packet contained the video-content-type RTP header extension value 0x00, contentType is "unspecified", if it is 0x01, contentType is "screenshare". In all other cases, such as if the header extension is missing, its value is invalid or no last packet of a key frame has been received yet, contentType is missing.

RTCAudioReceiverStats dictionary non-standardized members

partial dictionary RTCAudioReceiverStats {
      unsigned long long jitterBufferFlushes;
};
jitterBufferFlushes of type unsigned long long

Experimental stat which is available under origin trial in Chromium starting from M72 version. Counts the total number of times the jitter buffer reaches its maximum capacity and gets flushed.

RTCVideoReceiverStats dictionary non-standardized members

partial dictionary RTCVideoReceiverStats {
      unsigned long freezeCount;
      unsigned long pauseCount;
      double totalFreezesDuration;
      double totalPausesDuration;
      double totalFramesDuration;
      double sumOfSquaredFramesDuration;
};
freezeCount of type unsigned long

Count the total number of video freezes experienced by this receiver. It is a freeze if frame duration, which is time interval between two consecutively rendered frames, is equal or exceeds Max(3 * avg_frame_duration_ms, avg_frame_duration_ms + 150), where avg_frame_duration_ms is linear average of durations of last 30 rendered frames.

pauseCount of type unsigned long

Count the total number of video pauses experienced by this receiver. Video is considered to be paused if time passed since last received packet exceeds 5 seconds.

totalFreezesDuration of type double

Total duration of rendered frames which are considered as frozen (for definition of freeze see freezeCount), in seconds. This value is updated when a frame is rendered.

totalPausesDuration of type double

Total duration of pauses (for definition of pause see pauseCount), in seconds. This value is updated when a frame is rendered.

totalFramesDuration of type double

Total duration of all rendered video frames, in seconds. This value is updated when a frame is rendered.

sumOfSquaredFramesDuration of type double

Sum of squared duration of all rendered frames. It can be used to calculate harmonic frame rate:

{{ RTCVideoReceiverStats/totalFramesDuration}} / sumOfSquaredFrameDurations

This value is updated when a frame is rendered.

RTCIceServerStats dictionary non-standardized members

partial dictionary RTCIceServerStats {
       RTCNetworkType networkType;
};
networkType of type RTCNetworkType
This member is included in this document for historical reasons. Additional work is needed to reach consensus on the privacy model.

Represents the type of network interface used.

RTCIceCandidateStats dictionary non-standardized members

partial dictionary RTCIceCandidateStats {
       RTCNetworkType networkType;
};
networkType of type RTCNetworkType
This member is included in this document for historical reasons. Additional work is needed to reach consensus on the privacy model.

Represents the type of network interface used by the base of a local candidate (the address the ICE agent sends from). Only present for local candidates; it's not possible to know what type of network interface a remote candidate is using.

This stat only tells you about the network interface used by the first "hop"; it's possible that a connection will be bottlenecked by another type of network. For example, when using Wi-Fi tethering, the networkType of the relevant candidate would be "wifi", even when the next hop is over a cellular connection.

This reveals information that would otherwise not be available to web pages, which increases the fingerprint surface.

RTCNetworkType enum

This enum is included in this document for historical reasons. Additional work is needed to reach consensus on the privacy model.
enum RTCNetworkType {
    "bluetooth",
    "cellular",
    "ethernet",
    "wifi",
    "wimax",
    "vpn",
    "unknown"
};
Enumeration description
bluetooth

A Bluetooth connection.

cellular

A cellular connection (e.g., EDGE, HSPA, LTE, etc.).

ethernet

An Ethernet connection.

wifi

A Wi-Fi connection.

wimax

A WiMAX connection.

vpn

The connection runs over a VPN. The underlying network type is not available.

unknown

The user agent is unable or unwilling to identify the underlying connection technology.