blob: 8c4a7a6f6aa046ce61a592876a06aee3041a470d [file]
<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of WebRTC histograms
along with a detailed description for each histogram.
For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md
Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
chromium-metrics-reviews@google.com.
-->
<histogram-configuration>
<histograms>
<variants name="IPProtocolType">
<variant name="_TCP" summary=""/>
<variant name="_UDP" summary=""/>
</variants>
<variants name="NatType">
<variant name=".NoNAT" summary=""/>
<variant name=".NonSymNAT" summary=""/>
<variant name=".SymNAT" summary=""/>
<variant name=".UnknownNAT" summary=""/>
</variants>
<variants name="ScreenshareLayerStats">
<variant name=".FrameRate"
summary="Frames per second sent, in fps. The value is reported when a
stream is removed and is calculated as the total number of
frames in this layer, divided by the duration of the call."/>
<variant name=".Qp"
summary="Average quantizer (qp) of frames sent. The value is reported
when a stream is removed and is calculated, for this layer, as
the sum of all qp values divided the number of frames."/>
<variant name=".TargetBitrate"
summary="Average target bitrate in kbps. The value is reported when a
stream is removed and is calculated as the sum of all target
bitrates for this layer (sampled after frame has been encoded)
divided by the total number of frames for this layer."/>
</variants>
<variants name="WebRTCEchoCancellerEstimate">
<variant name=".Max" summary="The maximum over the time interval"/>
<variant name=".Min" summary="The minimum over the time interval"/>
<variant name=".Value"
summary="The last estimated value of the time interval"/>
</variants>
<variants name="WebRTCMediaType">
<variant name=".Audio" summary="Audio"/>
<variant name=".Data" summary="Data"/>
<variant name=".Video" summary="Video"/>
</variants>
<variants name="WebRTCVideoExperimentGroupId">
<variant name=".ExperimentGroup0" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".ExperimentGroup1" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".ExperimentGroup2" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".ExperimentGroup3" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".ExperimentGroup4" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".S0" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".S1" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
<variant name=".S2" summary="">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
</variant>
</variants>
<histogram name="WebRTC.Audio.Agc.InputClippingRate" units="%"
expires_after="2023-12-31">
<owner>silen@chromium.org</owner>
<owner>alessiob@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Logs the input clipping rate in AGC1 and in AGC2. A log call is made every
30 seconds during an active WebRTC call using the input volume controller.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Agc2.DigitalGainApplied" units="dB"
expires_after="2023-12-31">
<owner>alessiob@chromium.org</owner>
<owner>silen@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Logs adaptive digital compression gain that is applied by
AdaptiveDigitalGainApplier in GainController2. A log call is made once per
second. The compression gain is applied to the microphone signal at the end
of the processing chain.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Agc2.EstimatedNoiseLevel" units="dBFS (negated)"
expires_after="2023-12-31">
<owner>alessiob@chromium.org</owner>
<owner>silen@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram reports the noise level estimation done in GainController2. A
value is reported every second. The unit is inverted dBFS. The scale goes
from 0 (very loud noise) to 100 (very faint noise). Warning: this histogram
was expired from 2021-12-31 to 2022-11-16; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Agc2.FixedDigitalGainCurveRegion.{Region}"
units="seconds" expires_after="2023-12-31">
<owner>alessiob@chromium.org</owner>
<owner>silen@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
How long the AGC2 limiter remained in the {Region} region. Logged during an
active WebRTC call whenever the limiter switches region and at the end of
the call.
</summary>
<token key="Region">
<variant name="Identity" summary="identity"/>
<variant name="Knee" summary="knee"/>
<variant name="Limiter" summary="limiter"/>
<variant name="Saturation" summary="saturation"/>
</token>
</histogram>
<histogram name="WebRTC.Audio.AgcClippingAdjustmentAllowed" enum="Boolean"
expires_after="2023-10-22">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The automatic gain control (AGC) in WebRTC tries to adjust the microphone
gain to maintain a strong audio level, but without clipping (saturation).
The histogram will log a value every time input clipping is detected. The
value is a boolean, with &quot;true&quot; meaning that the gain was in fact
adjusted in response to the detected clipping, and &quot;false&quot; meaning
that adjustment was not allowed due to limiting boundaries in the algorithm.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Apm.RecommendedInputVolume.OnChangeToMatchTarget"
units="volume" expires_after="2023-12-31">
<owner>silen@chromium.org</owner>
<owner>alessiob@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The recommended input volume when adjusted to match the target level - i.e.,
not adjusted to handle clipping input. A log call is made every time that
such a volume changes during an active WebRTC call.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Apm.{InputVolumeType}.OnChange" units="volume"
expires_after="2023-12-31">
<owner>silen@chromium.org</owner>
<owner>alessiob@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The {InputVolumeType} input volume. A log call is made every time that the
volume changes during an active WebRTC call.
</summary>
<token key="InputVolumeType">
<variant name="AppliedInputVolume" summary="applied"/>
<variant name="RecommendedInputVolume" summary="recommended"/>
</token>
</histogram>
<histogram name="WebRTC.Audio.Apm.{InputVolumeType}.{Metric}Average"
units="volume" expires_after="2023-12-31">
<owner>silen@chromium.org</owner>
<owner>alessiob@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The {InputVolumeType} input volume average {Metric} measured over 60 seconds
in AudioProcessingImpl. A log call is made every 60 seconds during an active
WebRTC call.
</summary>
<token key="InputVolumeType">
<variant name="AppliedInputVolume" summary="applied"/>
<variant name="RecommendedInputVolume" summary="recommended"/>
</token>
<token key="Metric">
<variant name="Decrease" summary="decrease"/>
<variant name="Increase" summary="increase"/>
<variant name="Update" summary="update"/>
</token>
</histogram>
<histogram name="WebRTC.Audio.Apm.{InputVolumeType}.{Metric}Rate"
units="changes/minute" expires_after="2023-12-31">
<owner>silen@chromium.org</owner>
<owner>alessiob@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The {InputVolumeType} input volume {Metric} rate measured over 60 seconds in
AudioProcessingImpl. A log call is made every 60 seconds during an active
WebRTC call.
</summary>
<token key="InputVolumeType">
<variant name="AppliedInputVolume" summary="applied"/>
<variant name="RecommendedInputVolume" summary="recommended"/>
</token>
<token key="Metric">
<variant name="Decrease" summary="decrease"/>
<variant name="Increase" summary="increase"/>
<variant name="Update" summary="update"/>
</token>
</histogram>
<histogram name="WebRTC.Audio.ApmCaptureInputLevelAverageRms"
units="dBFS (negated)" expires_after="2023-08-27">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram reports the average RMS of the signal coming in to WebRTC's
Audio Processing Module, prior to any WebRTC processing. A new value is
reported every 10 seconds, and the average is over the latest interval. The
metric is negated dBFS, meaning that 0 is a full-scale signal, while 127
corresponds to -127 dBFS (very faint).
</summary>
</histogram>
<histogram name="WebRTC.Audio.ApmCaptureInputLevelPeakRms"
units="dBFS (negated)" expires_after="2023-09-03">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram reports the peak RMS of the signal coming in to WebRTC's
Audio Processing Module, prior to any WebRTC processing. A new value is
reported every 10 seconds, and the peak is the RMS of the strongest 10 ms
block over the latest interval. The metric is negated dBFS, meaning that 0
is a full-scale signal, while 127 corresponds to -127 dBFS (very faint).
</summary>
</histogram>
<histogram name="WebRTC.Audio.ApmCaptureOutputLevelAverageRms"
units="dBFS (negated)" expires_after="2023-10-01">
<owner>peah@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram reports the average RMS of the signal in the output of
WebRTC's Audio Processing Module, after all audio WebRTC processing. A new
value is reported every 10 seconds, and the average is over the latest
interval. The metric is negated dBFS, meaning that 0 is a full-scale signal,
while 127 corresponds to -127 dBFS (very faint).
</summary>
</histogram>
<histogram name="WebRTC.Audio.ApmCaptureOutputLevelPeakRms"
units="dBFS (negated)" expires_after="2023-10-01">
<owner>peah@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram reports the peak RMS of the signal in the output of WebRTC's
Audio Processing Module, after all WebRTC audio processing. A new value is
reported every 10 seconds, and the peak is the RMS of the strongest 10 ms
block over the latest interval. The metric is negated dBFS, meaning that 0
is a full-scale signal, while 127 corresponds to -127 dBFS (very faint).
</summary>
</histogram>
<histogram name="WebRTC.Audio.AudioInterruptionMs" units="ms"
expires_after="2023-10-22">
<owner>hlundin@chromium.org</owner>
<owner>ivoc@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Measures the duration of each audio interruption event. An audio
interruption is defined as a loss concealment (a.k.a. expand) event that
lasts more than 150 milliseconds. The metric registers each of these events.
This gives an indication of the length and prevalence of severe network
events, which are likely to be detrimental to the audio quality.
</summary>
</histogram>
<histogram name="WebRTC.Audio.AudioMixer.NewHighestSourceCount" units="sources"
expires_after="2024-04-01">
<owner>fhernqvist@google.com</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Logs the AudioMixer source count whenever the mixer gets a new highest
source count. This allows us to differentiate the histogram to get the
number of mixers that have had a specific number of maximum sources. For
example, the number of AudioMixers that have had a maximum of 5 sources is
NewHighestSourceCount[5] - NewHighestSourceCount[6].
Note that this is not the same as logging the source count whenever a source
is added; logging only happens when the source count exceeds the previously
highest source count.
</summary>
</histogram>
<histogram name="WebRTC.Audio.AverageExcessBufferDelayMs" units="ms"
expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>gustaf@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Measures the average waiting time in the buffer for each packet. The waiting
time is the time elapsed from the packet arrives until it is decoded. The
metric is calculated as the average over one minute, and is logged at the
end of each such interval. A well tuned target buffer level should lead to a
low value.
</summary>
</histogram>
<histogram name="WebRTC.Audio.DelayedPacketOutageEventMs" units="ms"
expires_after="2023-10-08">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Measures the duration of each packet loss concealment (a.k.a. expand) event
that is not followed by a merge operation. The outage is measured in
milliseconds, with a range between 0 and 2000 ms. This gives an indication
of how well the jitter buffer's level adaptation is working. If the chosen
target level is too low, this value will increase.
</summary>
</histogram>
<histogram name="WebRTC.Audio.DelayedPacketOutageEventsPerMinute"
units="events/minute" expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Counts the number of delayed packet outage events per minute. The range is
between 0 and 100 (corresponds to more 1.6 events per second). See
WebRTC.Audio.DelayedPacketOutageEventMs for the definition of a delayed
packet outage event, and the interpretation of such events.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.BufferDelay" units="Blocks/2"
expires_after="2023-07-30">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs half the applied render buffer delay used in the WebRTC
echo canceller. The value 0 means that no delay could be estimated,
otherwise the logged delay corresponds to the actual delay + 1. A new value
is logged every 10 seconds and the logged value constitutes the current
buffer delay at the time when the value is logged.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.CaptureSaturation" enum="Boolean"
expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs a value every time the WebRTC echo canceller has
detected saturation in the capture signal. A new value is logged every 10
seconds and the logged value indicates whether the capture signal has been
saturated during the last 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.Clockdrift" enum="ClockdriftLevel"
expires_after="2023-10-08">
<owner>gustaf@chromium.org</owner>
<owner>peah@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs whether clockdrift is detected in the WebRTC echo
canceller. A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.DelayChanges"
enum="WebRTCEventFrequency" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the frequency of echo path delay changes that are
detected by the delay estimator in the WebRTC echo canceller. A new value is
logged every 10 seconds and the logged value indicates how frequent delay
changes have been during the last 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.EchoPathDelay" units="Blocks/2"
expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs half the estimated echo path delay in 64 sample blocks
as seen by the delay estimator in the WebRTC echo canceller. The value 0
means that no delay could be estimated, otherwise the logged delay
corresponds to the actual delay + 1. A new value is logged every 10 seconds
and the logged value is the estimate of the delay of the echo path at the
time when the value is logged.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.Erle{WebRTCEchoCancellerEstimate}"
units="dB" expires_after="2023-08-08">
<owner>gustaf@chromium.org</owner>
<owner>peah@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the echo return loss enhancement achieved by the WebRTC
echo canceller as described in ITU G.168. When the echo canceller is being
used, one value is logged every 10 seconds per ongoing WebRTC call.
{WebRTCEchoCancellerEstimate}
</summary>
<token key="WebRTCEchoCancellerEstimate"
variants="WebRTCEchoCancellerEstimate">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.Erl{WebRTCEchoCancellerEstimate}"
units="dB (shifted)" expires_after="2023-08-08">
<owner>gustaf@chromium.org</owner>
<owner>peah@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the echo return loss achieved by the WebRTC echo
canceller as described in ITU G.168. When the echo canceller is being used,
one value is logged every 10 seconds per ongoing WebRTC call.
{WebRTCEchoCancellerEstimate}
</summary>
<token key="WebRTCEchoCancellerEstimate"
variants="WebRTCEchoCancellerEstimate">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.FilterDelay" units="Blocks"
expires_after="2023-08-27">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the estimated echo path delay in 64 sample blocks as
seen by the linear filter delay in the WebRTC echo canceller. The value 0
means that no delay could be estimated from the linear filter, otherwise the
logged delay corresponds to the actual delay + 1. A new value is logged
every 10 seconds and the logged value is the estimate of the filter delay at
the time when the value is logged.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.MaxCaptureJitter"
units="frames (10 ms)" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>gustaf@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the observed maximum number of capture API calls in a
row in the unit of frames (10 ms). A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.MaxRenderJitter"
units="frames (10 ms)" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>gustaf@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the observed maximum number of render API calls in a row
in the unit of frames (10 ms). A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.MinCaptureJitter"
units="frames (10 ms)" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>gustaf@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the observed minimum number of capture API calls in a
row in the unit of frames (10 ms). A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.MinRenderJitter"
units="frames (10 ms)" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>gustaf@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the observed minimum number of render API calls in a row
in the unit of frames (10 ms). A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram
name="WebRTC.Audio.EchoCanceller.PersistentMultichannelContentEverDetected"
enum="Boolean" expires_after="2023-09-30">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs whether the WebRTC echo canceller has encountered
persistent multichannel playout reference content during its lifetime. The
value is logged at the end of the AEC lifetime if the AEC has processed at
least 5 seconds of audio.
</summary>
</histogram>
<histogram
name="WebRTC.Audio.EchoCanceller.ProcessingPersistentMultichannelContent"
enum="Boolean" expires_after="2023-10-22">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the frequency of persistent multichannel playout
reference content detected by the WebRTC echo canceller. `true` if a
majority of the last 10 seconds of audio was classified as persistent
multichannel. A new value is logged every 10 seconds.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.ReliableDelayEstimates"
enum="WebRTCAecDelayEstimateReliability" expires_after="2023-08-13">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the assessed reliability of the delay estimates produced
by the delay estimator in the WebRTC echo canceller. A new value is logged
every 10 seconds and the logged value is a meausure based on how often
during that period the delay estimate was reliable.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.RenderOverruns"
enum="WebRTCEventFrequency" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the frequency of overruns in the render buffer of the
WebRTC echo canceller. A new value is logged every 10 seconds and the logged
value is a meausure that indicates how often overruns occurred.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.RenderUnderruns"
enum="WebRTCEventFrequency" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs the frequency of underruns in the render buffer of the
WebRTC echo canceller. A new value is logged every 10 seconds and the logged
value is a meausure that indicates how often underruns occurred.
</summary>
</histogram>
<histogram name="WebRTC.Audio.EchoCanceller.UsableLinearEstimate"
enum="Boolean" expires_after="2023-10-08">
<owner>peah@chromium.org</owner>
<owner>saza@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
This histogram logs a value every time the WebRTC echo canceller deems that
the linear filter in the echo canceller is sufficiently well adapted to be
usable. A new value is logged every 10 seconds and the logged value is the
assessment of whether the filter is usable at the time when the value is
logged.
</summary>
</histogram>
<histogram name="WebRTC.Audio.Encoder.CodecType" enum="WebRtcAudioCodecs"
expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>jakobi@google.com</owner>
<owner>tomasl@google.com</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Histogram of audio codec usage. Every sample corresponds to 5 seconds of
encoding with that codec.
</summary>
</histogram>
<histogram name="WebRTC.Audio.ExpandRatePercent" units="%"
expires_after="2023-10-08">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Measures the expand rate for an incoming WebRTC audio stream. The expand
rate is the fraction of samples that are generated through loss-concealemnt
algorithms instead of being decoded from incoming media packets. The metric
is calculated as the percent over a 10 second internval, and is logged at
the end of each such interval.
</summary>
</histogram>
<histogram name="WebRTC.Audio.ReceiverDelayEstimateMs" units="ms"
expires_after="2023-10-08">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The sum of the jitter buffer delay and the sound card's buffering delay for
the receiving side. That is, the sum of the metrics
WebRTC.Audio.ReceiverDeviceDelayMs and
WebRTC.Audio.ReceiverJitterBufferDelayMs. Sampled once every 10 ms when
WebRTC audio is playing. Warning: this histogram was expired from 2020-07-06
to 2022-08-25; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.Audio.ReceiverDeviceDelayMs" units="ms"
expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The sound card's buffering delay for the receiving side. Sampled once every
10 ms when WebRTC audio is playing.
</summary>
</histogram>
<histogram name="WebRTC.Audio.ReceiverJitterBufferDelayMs" units="ms"
expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The jitter buffer delay for the receiving side. Sampled once every 10 ms
when WebRTC audio is playing.
</summary>
</histogram>
<histogram name="WebRTC.Audio.SpeechExpandRatePercent" units="%"
expires_after="2023-08-20">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Measures the audible expand rate for an incoming WebRTC audio stream. The
metric is very similar to WebRTC.Audio.ExpandRate, with the difference that
this metric only reports loss-concealement that generates audible samples.
The metric is calculated as the percent over a 10 second internval, and is
logged at the end of each such interval.
</summary>
</histogram>
<histogram name="WebRTC.Audio.TargetBitrateInKbps" units="kbps"
expires_after="2023-10-01">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The target bitrate in kbps that the audio codec should try to produce on
average. Sampled every time the rate is updated.
</summary>
</histogram>
<histogram name="WebRTC.Audio.TargetJitterBufferDelayMs" units="ms"
expires_after="2023-09-10">
<owner>hlundin@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
The target jitter buffer delay for the receiving side. Sampled once every 10
ms per WebRTC receive stream when WebRTC audio is playing.
</summary>
</histogram>
<histogram name="WebRTC.AudioInputChannelLayout" enum="ChannelLayout"
expires_after="2023-09-30">
<owner>saza@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Audio input channel layout in WebRTC. Warning: this histogram was expired
from 2020-11-01 to 2022-04-11; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.AudioInputSampleRate" enum="AudioSampleRate"
expires_after="2023-10-15">
<owner>saza@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Audio input sample rate for WebRTC (in Hz). Warning: this histogram was
expired from 2020-11-29 to 2022-04-11; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.AudioInputSampleRateUnexpected" units="Hz"
expires_after="2023-09-30">
<owner>saza@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Audio input sample rate for WebRTC (atypical values, in Hz). Warning: this
histogram was expired from 2021-04-30 to 2022-04-11; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.AudioOutputSampleRate" enum="AudioSampleRate"
expires_after="2023-08-27">
<owner>saza@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>Audio output sample rate for WebRTC (in Hz).</summary>
</histogram>
<histogram name="WebRTC.AudioOutputSampleRateUnexpected" units="Hz"
expires_after="2023-09-30">
<owner>saza@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-audio-uma@google.com</owner>
<summary>
Audio output sample rate for WebRTC (atypical values, in Hz). Warning: this
histogram was expired from 2021-04-30 to 2022-12-07; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.BWE.InitialBandwidthEstimate" units="kbps"
expires_after="2023-10-01">
<owner>holmer@chromium.org</owner>
<summary>The bandwidth estimate 2 seconds into a WebRTC call.</summary>
</histogram>
<histogram name="WebRTC.BWE.InitiallyLostPackets" units="packets"
expires_after="2023-09-10">
<owner>holmer@chromium.org</owner>
<summary>
The number of video packets lost durig the first 2 seconds in a WebRTC call.
</summary>
</histogram>
<histogram name="WebRTC.BWE.InitialRtt" units="ms" expires_after="2023-09-10">
<owner>holmer@chromium.org</owner>
<summary>
The round-trip time as measured 2 seconds into a WebRTC call.
</summary>
</histogram>
<histogram name="WebRTC.BWE.InitialVsConvergedDiff" units="kbps"
expires_after="2023-09-10">
<owner>holmer@chromium.org</owner>
<summary>
The difference between the bandwidth estimate at 2 seconds and 20 seconds
into a WebRTC call, with a min at 0, which is supposed to capture the how
much the initial bandwidth estimate overshot the actual bandwidth available.
</summary>
</histogram>
<histogram name="WebRTC.BWE.RampUpTimeTo1000kbpsInMs" units="ms"
expires_after="2023-02-26">
<owner>holmer@chromium.org</owner>
<summary>
The time it takes the estimated bandwidth to reach 1000 kbps from the first
RTCP packet received. Used to measure the bandwidth ramp-up time.
</summary>
</histogram>
<histogram name="WebRTC.BWE.RampUpTimeTo2000kbpsInMs" units="ms"
expires_after="2023-10-01">
<owner>holmer@chromium.org</owner>
<summary>
The time it takes the estimated bandwidth to reach 2000 kbps from the first
RTCP packet received. Used to measure the bandwidth ramp-up time.
</summary>
</histogram>
<histogram name="WebRTC.BWE.RampUpTimeTo500kbpsInMs" units="ms"
expires_after="2023-02-26">
<owner>holmer@chromium.org</owner>
<summary>
The time it takes the estimated bandwidth to reach 500 kbps from the first
RTCP packet received. Used to measure the bandwidth ramp-up time.
</summary>
</histogram>
<histogram name="WebRTC.BWE.Types" enum="WebRtcBweType"
expires_after="2023-10-11">
<owner>holmer@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The bandwidth estimation used in WebRTC calls. Records whether the BWE is
running on the sender or the receiver and what BWE related RTP header
extensions are in use.
Warning: This histogram was expired from 2022-10-11 to 2022-12-15. Data may
be missing.
</summary>
</histogram>
<histogram name="WebRTC.Call.AudioBitrateReceivedInKbps" units="kbps"
expires_after="2023-09-10">
<owner>holmer@chromium.org</owner>
<summary>
Average audio bitrate received during a call, counted from first packet
received until Call instance is destroyed. Only mesured for calls that are
at least 10 seconds long.
</summary>
</histogram>
<histogram name="WebRTC.Call.BitrateReceivedInKbps" units="kbps"
expires_after="2023-10-01">
<owner>holmer@chromium.org</owner>
<summary>
Average total bitrate received during a call (audio + video + RTCP), counted
from first packet received until Call instance is destroyed. Only mesured
for calls that are at least 10 seconds long.
</summary>
</histogram>
<histogram name="WebRTC.Call.EstimatedSendBitrateInKbps" units="kbps"
expires_after="2023-08-27">
<owner>holmer@chromium.org</owner>
<summary>
Average estimated send bitrate during a call, counted from first packet sent
until Call instance is destroyed. Only mesured for calls that are at least
10 seconds long.
</summary>
</histogram>
<histogram name="WebRTC.Call.LifetimeInSeconds" units="seconds"
expires_after="2023-09-10">
<owner>asapersson@chromium.org</owner>
<summary>
The lifetime of a call. Recorded when a Call instance is destroyed.
</summary>
</histogram>
<histogram name="WebRTC.Call.PacerBitrateInKbps" units="kbps"
expires_after="2023-10-01">
<owner>holmer@chromium.org</owner>
<summary>
Average pacer bitrate during a call, counted from first packet sent until
Call instance is destroyed. Only mesured for calls that are at least 10
seconds long.
</summary>
</histogram>
<histogram name="WebRTC.Call.RtcpBitrateReceivedInBps" units="bits/s"
expires_after="2023-09-10">
<owner>holmer@chromium.org</owner>
<summary>
Average RTCP bitrate received during a call, counted from first packet
received until Call instance is destroyed. Only mesured for calls that are
at least 10 seconds long.
</summary>
</histogram>
<histogram name="WebRTC.Call.TimeReceivingAudioRtpPacketsInSeconds" units="s"
expires_after="2023-08-27">
<owner>saza@chromium.org</owner>
<summary>
The amount of time between the arrival of the first and last audio RTP
packets to pass through a Call object. This is logged when the Call object
is destroyed. This is only logged if audio RTP packets are at some point in
time received, and is a way to omit temporary objects that do not send any
actual media.
</summary>
</histogram>
<histogram name="WebRTC.Call.TimeReceivingVideoRtpPacketsInSeconds" units="s"
expires_after="2023-09-03">
<owner>saza@chromium.org</owner>
<summary>
The amount of time between the arrival of the first and last video RTP
packets to pass through a Call object. This is logged when the Call object
is destroyed. This is only logged if video RTP packets are at some point in
time received, and is a way to omit temporary objects that do not send any
actual media.
</summary>
</histogram>
<histogram name="WebRTC.Call.VideoBitrateReceivedInKbps" units="kbps"
expires_after="2023-10-01">
<owner>holmer@chromium.org</owner>
<summary>
Average video bitrate received during a call, counted from first packet
received until Call instance is destroyed. Only mesured for calls that are
at least 10 seconds long.
</summary>
</histogram>
<histogram name="WebRTC.DataChannelAggregateType"
enum="DataChannelAggregateType" expires_after="2022-09-11">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Recorded when a data channel is created. Counts the combination of reliable
and ordered modes in a data channel.
</summary>
</histogram>
<histogram name="WebRTC.DataChannelCounters" enum="DataChannelCounters"
expires_after="2022-11-13">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Recorded when a data channel is created. Counts a few main attributes of
data channels. Expired in April 2020. Revived in M93.
</summary>
</histogram>
<histogram name="WebRTC.DataChannelMaxPacketLifeTime" units="ms"
expires_after="2022-06-30">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Recorded when a data channel is created. The length of the time window
during which transmissions and retransmissions may occur in unreliable mode.
It is set to the value used in the configuration when a RTCDataChannel is
created.
</summary>
</histogram>
<histogram name="WebRTC.DataChannelMaxRetransmits" units="units"
expires_after="2022-06-30">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Recorded when a data channel is created. The maximum number of
retransmissions that are attempted in unreliable mode. It is set to the
value used in the configuration when a RTCDataChannel is created. Expired in
M86. Revived in M93.
</summary>
</histogram>
<histogram name="WebRTC.DataChannelSctpErrorCode"
enum="DataChannelSctpErrorCode" expires_after="2022-11-13">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Recorded when a data channel is closed unexpectedly and the error event is
dispatched. Contains the SCTP error code signaled by the transport.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.FrameIsRefresh.{CapturerType}"
units="boolean" expires_after="2024-04-04">
<owner>henrika@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
A boolean is recorded to this histogram for each provided video frame where
the desktop media source is given by {CapturerType}. Sampled as true if the
provided frame is a results of a client/sink asking for a refresh frame
using the RequestRefreshFrame() API, and sampled as false when the captured
frame is newly captured frame not explicitly requested by the client/sink.
Very few frames are expected to be marked as refresh frames.
</summary>
<token key="CapturerType">
<variant name="Screen" summary="Screen capture type"/>
<variant name="Window" summary="Window capture type"/>
</token>
</histogram>
<histogram name="WebRTC.DesktopCapture.IsZeroHzActive.{CapturerType}"
enum="BooleanActive" expires_after="2024-02-03">
<owner>henrika@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
A boolean is recorded to this histogram for each captured video frame where
the desktop media source is given by {CapturerType}. Only recorded for
capturers that support detection of whether 0Hz is active or not which
requires that each captured frame must contain a representation of what
regions have been updated since the last frame. Windows WGC is an example of
a capturer which does not support this.
</summary>
<token key="CapturerType">
<variant name="Screen" summary="Screen capture type"/>
<variant name="Window" summary="Window capture type"/>
</token>
</histogram>
<histogram name="WebRTC.DesktopCapture.MaxCpuConsumptionIsDefault"
enum="BooleanActive" expires_after="2024-04-24">
<owner>henrika@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The maximum CPU time percentage of a single core that can be consumed for
desktop capturing is by default 50%. It is possible to modify it using the
--webrtc-max-cpu-consumption-percentage command-line switch. This boolean is
set to true when the default value is used and false if it has been
overrided using the switch. Recorded each time a desktop capture stream
starts.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.DesktopCapturerImpl"
enum="WebRtcDesktopCapturerImpl" expires_after="2023-10-22">
<owner>alcooper@chromium.org</owner>
<owner>auorion@microsoft.com</owner>
<owner>edgecapabilitiesdev@microsoft.com</owner>
<summary>
This measures the frequency of use for each desktop capturer implementation,
allowing us to measure the adoption of the WGC capturer.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.DirectXCapturerResult"
enum="WebRtcDirectXCapturerResult" expires_after="2024-02-02">
<owner>henrika@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
This records high level errors, or success, encountered across the entire
capture flow in the DirectX (DXGI) based capturer. Is recorded every time a
new video frame is captured using DXGI. Only recorded on Windows.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.DirectXCursorEmbedded"
enum="BooleanActive" expires_after="2024-03-21">
<owner>henrika@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
A boolean is recorded to this histogram for each captured video frame where
the desktop media source is the full screen and a change has been detected
in the mouse cursor position. The value is true when the cursor pointer is
embedded in the captured desktop image and false if not. It is expected that
most display adapters will report false. Only recorded when DirectX (DXGI)
is used on Windows.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.WgcCapturerResult"
enum="WebRtcWgcCapturerResult" expires_after="2023-10-22">
<owner>alcooper@chromium.org</owner>
<owner>auorion@microsoft.com</owner>
<owner>edgecapabilitiesdev@microsoft.com</owner>
<summary>
This records high level errors, or success, encountered across the entire
capture flow in the WGC based capturer.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.WgcCaptureSessionGetFrameResult"
enum="WebRtcWgcCaptureSessionGetFrameResult" expires_after="2023-09-03">
<owner>alcooper@chromium.org</owner>
<owner>auorion@microsoft.com</owner>
<owner>edgecapabilitiesdev@microsoft.com</owner>
<summary>
This records the result from retrieving a frame from the WGC based capturer.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.WgcCaptureSessionStartResult"
enum="WebRtcWgcCaptureSessionStartResult" expires_after="2023-10-22">
<owner>alcooper@chromium.org</owner>
<owner>auorion@microsoft.com</owner>
<owner>edgecapabilitiesdev@microsoft.com</owner>
<summary>
This records the result from starting up the WGC based capturer.
</summary>
</histogram>
<histogram name="WebRTC.DesktopCapture.Win.{Capturer}CapturerFrameTime"
units="ms" expires_after="2023-08-12">
<owner>alcooper@chromium.org</owner>
<owner>auorion@microsoft.com</owner>
<owner>edgecapabilitiesdev@microsoft.com</owner>
<summary>This measures the performance of the {Capturer} capturer.</summary>
<token key="Capturer">
<variant name="DirectX" summary="DirectX based"/>
<variant name="Magnifier" summary="Magnifier based"/>
<variant name="ScreenGdi" summary="GDI based screen"/>
<variant name="Wgc" summary="WGC based"/>
<variant name="WindowGdi" summary="GDI based window"/>
</token>
</histogram>
<histogram name="WebRTC.DesktopCaptureCounters" enum="DesktopCaptureCounters"
expires_after="2023-10-08">
<owner>toprice@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Counters on creation of DesktopCaptureDevice and the first capture call.
</summary>
</histogram>
<histogram name="WebRTC.EnumerateDevices.Latency" units="ms"
expires_after="2023-10-11">
<owner>toprice@chromium.org</owner>
<owner>agpalak@chromium.org</owner>
<summary>
Measures the time between a page calling enumerateDevices() and the returned
promise resolving (either successfully or with an error), intended for
monitoring for latency regressions in the wild. Note a call which never
resolves won't be counted in this metric.
</summary>
</histogram>
<histogram name="WebRTC.ICE.TcpSocketWriteErrorCode" enum="SocketErrorCode"
expires_after="M77">
<owner>zhihuang@chromium.org</owner>
<summary>
Counters on different types of TCP socket error code. Collected when we hit
the error code when writing.
</summary>
</histogram>
<histogram name="WebRTC.MediaStreamDevices.HasPanTiltZoomCamera"
enum="BooleanAvailable" expires_after="2022-04-24">
<obsolete>
Removed 03/2022.
</obsolete>
<owner>reillyg@chromium.org</owner>
<owner>device-dev@chromium.org</owner>
<summary>
Records whether a user would potentially see a permission prompt for moving
the camera. It is recorded when showing a camera permission prompt
regardless of whether or not the site requested camera movement.
</summary>
</histogram>
<histogram name="WebRTC.P2P.UDP.BatchingNumberOfReceivedPackets"
units="packets/batching" expires_after="2024-03-31">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
This histogram logs how many received UDP packets are batched in a single
P2PSocketClient IPC. This is recorded every time the batched received
packets transmit over IPC.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.AddIceCandidate"
enum="AddIceCandidateResult" expires_after="2023-09-05">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Outcomes of adding ICE candidates to a PeerConnection. Used to check the
theory that failures in candidate addition are ignored by applications.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.BundlePolicy"
enum="PeerConnectionBundlePolicy" expires_after="2023-09-03">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Determines whether BUNDLE is configured. Recorded during the first DTLS
connection establishment. Values are specified in
https://w3c.github.io/webrtc-pc/#dom-rtcbundlepolicy
Warning: This histogram was expired from 2022-08-28 to 2022-10-10. Data may
be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.BundleUsage"
enum="PeerConnectionBundleUsage" expires_after="2023-09-03">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Determines whether BUNDLE is used in remote offers or answers. Recorded
during setRemoteDescription calls. Distinguishes between simple, complex,
datachannel-only and legacy plan-b usage.
Warning: This histogram was expired from 2022-08-28 to 2022-10-10. Data may
be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.CandidatePairType{IPProtocolType}"
enum="IceCandidatePairTypes" expires_after="2020-04-05">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
Counters of various ICE Endpoint types. These values are logged for the
first selected candidate pair of a PeerConnection. {IPProtocolType}
</summary>
<token key="IPProtocolType" variants="IPProtocolType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.PeerConnection.CandidatePoolUsage.{BundlePolicy}"
units="components" expires_after="2022-07-01">
<obsolete>
This measurement showed that numbers higher than 1 are in frequent use for
all policies. Experiment is no longer needed.
</obsolete>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Measures the configured ice candidate poolsize for the {BundlePolicy}
bundlePolicy:
https://w3c.github.io/webrtc-pc/#dom-rtcconfiguration-icecandidatepoolsize
Recorded during the first DTLS connection establishment. See also
WebRTC.PeerConnection.BundlePolicy.
</summary>
<token key="BundlePolicy">
<variant name="Balanced"/>
<variant name="MaxBundle"/>
<variant name="MaxCompat"/>
</token>
</histogram>
<histogram name="WebRTC.PeerConnection.ConnectionState"
enum="IceConnectionStates" expires_after="2023-11-01">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Counters of ICE Connection states. These values are logged when the
PeerConnection gets into that state for the first time or after the ICE
restart.
Warning: This histogram was expired from 2022-08-21 to 2022-10-29. Data may
be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.DtlsHandshakeError"
enum="DtlsHandshakeError" expires_after="M81">
<owner>zhihuang@chromium.org</owner>
<summary>
Records the error whenever the Dtls handshake fails. There are only two
types of errors, incompatitable cipher suite and unknown error, for now.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Duration.Network" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Duration between the moment the WebRTC network thread's JingleThreadWrapper
begins running a task and the moment it ends executing it. It only measures
durations of tasks posted to rtc::Thread. Samples are acquired periodically
every several seconds by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Duration.Signaling" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Duration between the moment the WebRTC signaling thread's
JingleThreadWrapper begins running a task and the moment it ends executing
it. It only measures durations of tasks posted to rtc::Thread. Samples are
acquired periodically every several seconds by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|). solution.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Duration.Worker" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Duration between the moment the WebRTC worker thread's JingleThreadWrapper
begins running a task and the moment it ends executing it. It only measures
durations of tasks posted to rtc::Thread. Samples are acquired periodically
every several seconds by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.IceRegatheringReason"
enum="IceRegatheringReason" expires_after="M77">
<owner>honghaiz@chromium.org</owner>
<summary>Records the reasons for ICE re-gathering.</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.IceRestartState" enum="IceRestartState"
expires_after="M77">
<owner>honghaiz@chromium.org</owner>
<summary>
Records the transport channel states when ICE restart happens.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.IceServers.{MeasuredAt}" units="servers"
expires_after="2023-04-15">
<obsolete>
Removed 10/2022.
</obsolete>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Records the number of configured ICE servers when the peerconnection is
created or gets connected, depending on {MeasuredAt}.
</summary>
<token key="MeasuredAt">
<variant name="Configured"/>
<variant name="Connected"/>
</token>
</histogram>
<histogram name="WebRTC.PeerConnection.IPMetrics" enum="PeerConnectionCounters"
expires_after="M81">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
Counters on IPv4 and IPv6 usage in PeerConnection. These values are logged
once per PeerConnection.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.IPv4Interfaces" units="units"
expires_after="2023-11-01">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Number of IPv4 network interfaces discovered in a PeerConnection Session.
Warning: This histogram was expired from M81 to M110 Canary (2022-10-29).
Data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.IPv6Interfaces" units="units"
expires_after="2023-11-01">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Number of IPv6 network interfaces discovered in a PeerConnection Session.
Warning: This histogram was expired from M81 to M110 Canary (2022-10-29).
Data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.KeyProtocol"
enum="PeerConnectionKeyProtocol" expires_after="2022-10-30">
<obsolete>
The SDES protocol is no longer available in Chrome as of M98. DTLS is the
only possible value.
</obsolete>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
What key exchange protocol (DTLS or SDES) is used to establish the crypto
keys for a PeerConnection's RTP transport. Note: This histogram was expired
after M82, and resurrected in M89.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Latency.Network" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Latency defined as the duration between the moment a task is scheduled from
the WebRTC network thread's JingleThreadWrapper's task runner, and the
moment it begins running. Samples are acquired periodically every several
seconds by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Latency.Signaling" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Latency defined as the duration between the moment a task is scheduled from
the WebRTC signaling thread's JingleThreadWrapper's task runner, and the
moment it begins running. Samples are acquired periodically every several
seconds by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Latency.Worker" units="microseconds"
expires_after="2023-09-01">
<owner>handellm@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Latency defined as the duration between the moment a task is scheduled from
the WebRTC worker thread's JingleThreadWrapper's task runner, and the moment
it begins running. Samples are acquired periodically every several seconds
by JingleThreadWrapper.
Warning: This metric does not include reports from clients with
low-resolution clocks (i.e. on Windows, ref.
|TimeTicks::IsHighResolution()|).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Mid.Size" units="characters"
expires_after="2022-11-29">
<obsolete>
Removed 12/2022.
</obsolete>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Records the length of the SDP mid attribute in order to limit its length to
16 characters.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ProvisionalAnswer"
enum="PeerConnectionProvisionalAnswer" expires_after="2023-08-08">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Whether provisional answers are used. Recorded during the first DTLS
connection establishment.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.RtcpMux" enum="PeerConnectionRtcpMux"
expires_after="2023-10-15">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Whether RTCP-mux is used for the PeerConnection (both the local and remote
description enable RTCP-mux). Recorded after SetLocalDescription and
SetRemoteDescription are called, once per PeerConnection.
Warning: This histogram was expired from 2020-02-23 to 2022-10-10. Data may
be missing.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.RtcpMuxPolicy"
enum="PeerConnectionRtcpMux" expires_after="2023-06-11">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<owner>phancke@microsoft.com</owner>
<summary>
Which RTCPMuxPolicy was requested for the PeerConnection. Recorded during
the first DTLS connection establishment.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.CreateAnswer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of createAnswer(). Using complex SDP without explicitly
specifying the sdpSemantics is considered unsafe in this context because
such usage is sensitive to the rollout of a different default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.CreateOffer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of createOffer(). Using complex SDP without explicitly
specifying the sdpSemantics is considered unsafe in this context because
such usage is sensitive to the rollout of a different default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.SetLocalAnswer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of setLocalDescription(answer). Using complex SDP
without explicitly specifying the sdpSemantics is considered unsafe in this
context because such usage is sensitive to the rollout of a different
default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.SetLocalOffer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of setLocalDescription(offer). Using complex SDP
without explicitly specifying the sdpSemantics is considered unsafe in this
context because such usage is sensitive to the rollout of a different
default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.SetRemoteAnswer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of setRemoteDescription(answer). Using complex SDP
without explicitly specifying the sdpSemantics is considered unsafe in this
context because such usage is sensitive to the rollout of a different
default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpComplexUsage.SetRemoteOffer"
enum="PeerConnectionSdpUsageCategory" expires_after="2022-05-07">
<obsolete>
Removed 04/2022.
</obsolete>
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
The SDP usage category (&quot;safe&quot;, &quot;unsafe&quot; or
&quot;unknown&quot;) of setRemoteDescription(offer). Using complex SDP
without explicitly specifying the sdpSemantics is considered unsafe in this
context because such usage is sensitive to the rollout of a different
default SDP semantic.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpFormatReceived"
enum="PeerConnectionSdpFormatReceived" expires_after="2022-10-30">
<obsolete>
Removed 09/2022.
</obsolete>
<owner>steveanton@chromium.org</owner>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
What SDP format is received in the remote offer. The value &quot;no
tracks&quot; means that no audio or video tracks were received. The value
&quot;simple&quot; means that at most one audio and at most one video track
was received. The value &quot;complex&quot; means that more than one audio
or more than one video track was received, and how this was signaled is
indicated (&quot;Plan B&quot; meaning with a=ssrc lines within the same m=
section and &quot;Unified Plan&quot; meaning with a separate m= section).
This is recorded when calling setRemoteDescription with an SDP Offer.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpFormatReceivedAnswer"
enum="PeerConnectionSdpFormatReceived" expires_after="2022-11-13">
<obsolete>
Removed 09/2022.
</obsolete>
<owner>steveanton@chromium.org</owner>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
What SDP format is received in the remote answer. See
WebRTC.PeerConnection.SdpFormatReceived for the description of the values.
This is recorded when calling setRemoteDescription with an SDP Answer.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SdpSemanticNegotiated"
enum="PeerConnectionSdpSemanticNegotiated" expires_after="2023-01-15">
<obsolete>
Removed 09/2022.
</obsolete>
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
What SDP semantic (Unified Plan or Plan B) was detected when completing
negotiation of a PeerConnection. This is recorded when accepting an SDP
Answer. The value &quot;mixed&quot; means that the accepted answer included
both types of marker in the SDP. The value &quot;none&quot; will happen when
the answerer sends no media.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Simulcast.ApplyLocalDescription"
enum="SimulcastApiVersion" expires_after="2020-08-23">
<owner>amithi@chromium.org</owner>
<summary>
Was simulcast applied to the local description and with which API surface.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Simulcast.ApplyRemoteDescription"
enum="SimulcastApiVersion" expires_after="2020-08-30">
<owner>amithi@chromium.org</owner>
<summary>
Was simulcast applied to the remote description and with which API surface.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Simulcast.Disabled" units="units"
expires_after="M81">
<owner>amithi@chromium.org</owner>
<summary>
Simulcast was disabled because it is not supported by the remote party. This
is a counter that can take on only a single value (1).
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.Simulcast.NumberOfSendEncodings"
units="units" expires_after="2020-08-30">
<owner>amithi@chromium.org</owner>
<summary>
Counts the number of send encodings given to PeerConnection::AddTransceiver.
This histogram will be used to understand if and how the API is used.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SpeedLimit" units="%"
expires_after="2023-10-22">
<owner>handellm@google.com</owner>
<owner>hbos@chromium.org</owner>
<summary>
Measures computer speed limit state, sampled every 60s when a PeerConnection
is open. The value indicates the current operating point in percent of the
nominal capacity of the CPUs. The computer decreases the capacity during
thermal overload events.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SrtcpUnprotectError"
enum="SrtpErrorCode" expires_after="never">
<!-- expires-never: Needed for long-term tracking of the ecosystem. -->
<owner>steveanton@chromium.org</owner>
<summary>
What error code is reported by libsrtp when failing to unprotect an incoming
SRTCP (secured media control) packet.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SrtpCryptoSuite{WebRTCMediaType}"
enum="DTLS_SRTPCryptoSuite" expires_after="M81">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
Counters on the type of SRTP crypto suites used by WebRTC. This is collected
whenever the transport signals the OnCompleted event. {WebRTCMediaType}
</summary>
<token key="WebRTCMediaType" variants="WebRTCMediaType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.PeerConnection.SrtpUnprotectError" enum="SrtpErrorCode"
expires_after="never">
<!-- expires-never: Needed for long-term tracking of the ecosystem. -->
<owner>steveanton@chromium.org</owner>
<summary>
What error code is reported by libsrtp when failing to unprotect an incoming
SRTP (secured media) packet.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.SslCipherSuite{WebRTCMediaType}"
enum="SSLCipherSuite" expires_after="never">
<!-- expires-never: This is useful for deprecating old cipher suites; the
need for this can occur at long intervals. -->
<owner>hta@google.com</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Counters on the type of SSL cipher suites used by WebRTC. This is collected
whenever the transport signals the OnCompleted event. {WebRTCMediaType}
</summary>
<token key="WebRTCMediaType" variants="WebRTCMediaType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.PeerConnection.ThermalState" enum="ThermalState"
expires_after="2023-09-10">
<owner>eshr@google.com</owner>
<owner>hbos@chromium.org</owner>
<summary>
Measures computer thermal state, sampled every 60s when a PeerConnection is
open with a video sender. Most quick toggles between thermal states are thus
not sampled, but thermal states are generally stable so these toggles should
be rare.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ThermalThrottling" units="boolean"
expires_after="2023-10-22">
<owner>handellm@google.com</owner>
<owner>hbos@chromium.org</owner>
<summary>
Sampled every 60s when the peer connection is open. True when the computer's
speed limit is between 0 and 99 inclusively, false otherwise.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ThermalThrottlingEpisodes" units="count"
expires_after="2023-10-22">
<owner>handellm@google.com</owner>
<owner>hbos@chromium.org</owner>
<summary>
The number of thermal throttling episodes the peer connection encountered.
Reported when the peer connection is torn down if the peer connection had at
least one track.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.UsagePattern"
enum="WebRtcPeerConnectionUsagePattern" expires_after="2023-09-03">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Capsule history of a WebRTC PeerConnection, encoded as a sequence of bits
encapsulated in an integer. Only a few values will be deemed interesting,
but the interesting values may change over time.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ValidBundledExtensionIds"
units="boolean" expires_after="2023-07-01">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<owner>phancke@microsoft.com</owner>
<summary>
Measures whether the remote description contains a RTP header extension id
collision that is not allowed by the IETFs BUNDLE specification. Recorded
for every remote description.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ValidBundledPayloadTypes"
units="boolean" expires_after="2023-10-08">
<owner>hbos@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<owner>phancke@microsoft.com</owner>
<summary>
Measures whether the remote description contains a payload type collision
that is not allowed by the IETFs BUNDLE specification. Enforcing this would
allow simplifying the statistics collector. Recorded for every remote
description.
</summary>
</histogram>
<histogram name="WebRTC.PeerConnection.ValidIceChars" units="boolean"
expires_after="2023-10-01">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<owner>phancke@microsoft.com</owner>
<summary>
Measures whether the ice-ufrag/ice-pwd consists of characters allowed by the
specification. Currently some characters outside the range are allowed for
backward compability with deployed software. Recorded during the first DTLS
connection establishment.
</summary>
</histogram>
<histogram name="WebRTC.ReceivedAudioTrackDuration" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>handellm@chromium.org</owner>
<owner>hta@chromium.org</owner>
<summary>
Durations of audio tracks received over a PeerConnection. The stopwatch
starts when the track first becomes connected, and ends when it is
disconnected or very soon thereafter. Warning: this histogram was expired
between 2023-04-02 to 2023-04-19; data may be missing.
</summary>
</histogram>
<histogram name="WebRTC.ReceivedVideoTrackDuration" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>handellm@chromium.org</owner>
<owner>hta@chromium.org</owner>
<summary>
Durations of video tracks received over a PeerConnection. The stopwatch
starts when the track first becomes connected, and ends when it is
disconnected or very soon thereafter. Warning: this histogram was expired
from 2022-11-27 to 2022-12-10 and from 2023-04-02 to 2023-04-19; data may be
missing.
</summary>
</histogram>
<histogram name="WebRTC.ReliableDataChannelMessageSize" units="bytes"
expires_after="2022-10-23">
<owner>perkj@chromium.org</owner>
<summary>
Sizes of messages sent over reliable data channels. The size of an
individual message is added to the histogram as a sample immediately when a
message is sent.
</summary>
</histogram>
<histogram name="WebRTC.ScreenCaptureTime" units="ms"
expires_after="2020-10-18">
<owner>jiayl@chromium.org</owner>
<summary>Time for capturing one frame in screen capturing.</summary>
</histogram>
<histogram name="WebRTC.Screenshare.DesktopCapturerFullscreenDetector"
units="boolean" expires_after="2024-02-01">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Tracks the usage of the WebRTC Fullscreen Detector. The Fullscreen Detector
is used when capturing presentation applications such as PowerPoint. If the
editor window is captured and a slideshow is started in fullscreen mode, the
Fullscreen Detector will automatically change so that the fullscreen window
is captured. Once the slideshow stops, the editor will be captured again.
This is recorded the first time this feature is activated, but only once per
screensharing session.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.60MinPlusMaxMinusOne"
units="2D fps" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with min and
max frame rate constraint supplied. The value sampled is 60 * min + max - 1.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.Exists"
units="boolean" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled true every time a VideoStreamEncoder starts encoding frames with
frame rate constraints supplied in advance.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.Max.Exists"
units="boolean" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled true every time a VideoStreamEncoder starts encoding frames with a
max frame rate constraint supplied.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.Max.Value" units="fps"
expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with a max
frame rate constraint supplied.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.Min.Exists"
units="boolean" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled true every time a VideoStreamEncoder starts encoding frames with a
min frame rate constraint supplied.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.Min.Value" units="fps"
expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with a min
frame rate constraint supplied.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.MinLessThanMax.Max"
units="fps" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with a max
frame rate constraint supplied, which is greater than the min value.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.MinLessThanMax.Min"
units="fps" expires_after="2023-05-31">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with a min
frame rate constraint supplied, which is less than the max value.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.FrameRateConstraints.MinUnset.Max"
units="fps" expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
Sampled every time a VideoStreamEncoder starts encoding frames with a max
frame rate constraint supplied, and the min frame rate constraint is unset.
</summary>
</histogram>
<histogram name="WebRTC.Screenshare.ZeroHz.TimeUntilFirstFrameMs" units="ms"
expires_after="2023-10-01">
<owner>handellm@google.com</owner>
<owner>ilnik@chromium.org</owner>
<summary>
The number of milliseconds from the point a zero-Hz frame cadence adapter is
created until the first frame arrives from a connected source.
</summary>
</histogram>
<histogram name="WebRTC.SentAudioTrackDuration" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>handellm@chromium.org</owner>
<owner>hta@chromium.org</owner>
<summary>
Durations of audio tracks sent over a PeerConnection. The stopwatch starts
when the track first becomes connected, and ends when it is disconnected or
very soon thereafter.
</summary>
</histogram>
<histogram name="WebRTC.SentVideoTrackDuration" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>handellm@chromium.org</owner>
<owner>hta@chromium.org</owner>
<summary>
Durations of video tracks sent over a PeerConnection. The stopwatch starts
when the track first becomes connected, and ends when it is disconnected or
very soon thereafter.
</summary>
</histogram>
<histogram name="WebRTC.Stun.BatchSuccessPercent{NatType}" units="%"
expires_after="M85">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
For clients using a shared source port per STUN binding request toward the
specified servers, success rate for requests which received a response with
various intervals between requests. Only the first instance of renderers
will conduct the trial and log this result. The STUN binding requests are
grouped into multiple batches and the success rate is calculated for an
individual batch. {NatType}
</summary>
<token key="NatType" variants="NatType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Stun.Integrity.{StunPacketType}"
enum="WebRtcStunIntegrityOutcome" expires_after="2023-10-07">
<owner>hta@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Records outcome of integrity checks for STUN requests. This is used in
investigation of crbug.com/1177125, in order to figure out if it is safe to
turn on checking of these attributes.
</summary>
<token key="StunPacketType">
<variant name="ErrorResponse.BadRequest"/>
<variant name="ErrorResponse.ErrorOther"/>
<variant name="ErrorResponse.GlobalFailure"/>
<variant name="ErrorResponse.NoErrorAttribute"/>
<variant name="ErrorResponse.ServerError"/>
<variant name="ErrorResponse.StaleNonce"/>
<variant name="ErrorResponse.TryAlternate"/>
<variant name="ErrorResponse.Unauthorized"/>
<variant name="ErrorResponse.UnknownAttribute"/>
<variant name="Indication"/>
<variant name="Request"/>
<variant name="Response"/>
</token>
</histogram>
<histogram name="WebRTC.Stun.ResponseLatency{NatType}" units="ms"
expires_after="M85">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
For clients using a shared source port per STUN binding request, average RTT
for requests which received a response with various intervals between
requests. Only the first instance of renderers will conduct the trial and
log this result. {NatType}
</summary>
<token key="NatType" variants="NatType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Stun.SuccessPercent{NatType}" units="%"
expires_after="M85">
<owner>qingsi@google.com</owner>
<owner>jeroendb@google.com</owner>
<summary>
For clients using a shared source port per STUN binding request, success
rate for requests which received a response with various intervals between
requests. Only the first instance of renderers will conduct the trial and
log this result. {NatType}
</summary>
<token key="NatType" variants="NatType">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.UnreliableDataChannelMessageSize" units="bytes"
expires_after="2022-10-23">
<owner>perkj@chromium.org</owner>
<summary>
Sizes of messages sent over unreliable data channels. The size of an
individual message is added to the histogram as a sample immediately when a
message is sent.
</summary>
</histogram>
<histogram name="WebRTC.UserMediaRequest.NoResultState"
enum="MediaStreamRequestState" expires_after="2023-10-23">
<owner>andresp@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<owner>agpalak@chromium.org</owner>
<owner>benjaminwagner@google.com</owner>
<summary>
The state of a UserMediaRequest when it gets destroyed before having a
result. Warning: this histogram was expired from M77 to M108(excluded); data
may be missing.
Note: &quot;Explicitly Cancelled&quot; means
MediaStreamImpl::cancelUserMediaRequest was called and not necessarily that
the user cancelled. Those are likely tracked as UserMediaRequest with a
result of permission denied.
</summary>
</histogram>
<histogram name="WebRTC.UserMediaRequest.Result2"
enum="MediaStreamRequestResult2" expires_after="2023-10-15">
<owner>toprice@chromium.org</owner>
<owner>agpalak@chromium.org</owner>
<summary>
Counters for UserMediaRequests results such as failure reasons. The standard
specification error names are in parenthesis.
</summary>
</histogram>
<histogram name="WebRTC.Video.AdaptChangesPerMinute{VideoAdaptationReason}"
units="changes/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average number of adaptation changes per minute for a sent video stream.
Recorded when a stream is removed. {VideoAdaptationReason}
</summary>
<token key="VideoAdaptationReason">
<variant name=""/>
<variant name=".Cpu" summary="Adapt reason: CPU."/>
<variant name=".Quality" summary="Adapt reason: quality."/>
</token>
</histogram>
<histogram name="WebRTC.Video.AverageRoundTripTimeInMilliseconds" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>holmer@chromium.org</owner>
<summary>
The average round-trip time of a WebRTC call in milliseconds. Recorded when
a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.AVSyncOffsetInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The absolute value of the sync offset between a rendered video frame and the
latest played audio frame is measured per video frame. The average offset
per received video stream is recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.BandwidthLimitedResolutionInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of sent frames that are limited in resolution due to bandwidth
for a sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.BandwidthLimitedResolutionsDisabled"
units="disabled resolutions" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
For frames that are limited in resolution due to bandwidth, the average
number of disabled resolutions is recorded for a sent video stream. Recorded
when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.BitrateReceivedInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received bits per second for a received video stream. Recorded
when a stream is removed. The total number of bytes is divided by the time
the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.BitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent bits per second for a sent video stream. Recorded when a
stream is removed. The total number of bytes is divided by the time the
video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.CpuLimitedResolutionInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of frames that are limited in resolution due to CPU for a sent
video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.CurrentDelayInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Average current delay for a received video stream. This is the actual delay
imposed on frames (where the goal is to reach the target delay (see
WebRTC.Video.TargetDelayInMs)). Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Decoded.Vp8.Qp{WebRTCVideoExperimentGroupId}"
units="qp value" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average QP (quantizer value) per frame for a received VP8 video stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.DecodedFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of decoded frames per second for a received video stream.
Recorded when a stream is removed. The total number of frames is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.DecodeTimeInMs" units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average decode time per frame for a received video stream. Recorded when
a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DelayedFramesToRenderer" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of delayed frames to renderer for a received video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DelayedFramesToRenderer_AvgDelayInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average delay of delayed frames to renderer for a received video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DroppedFrames.Capturer" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by a capturer for a sent video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DroppedFrames.Encoder" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by an encoder's internal rate limiter for a
sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DroppedFrames.EncoderQueue" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped because encoder queue is full for a sent
video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DroppedFrames.Ratelimiter" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by a WebRTC rate limiter (in MediaOpt) for a
sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.DroppedFrames.Receiver" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by a WebRTC on the receive side because they
are incomplete or undecodable.
</summary>
</histogram>
<histogram name="WebRTC.Video.Encoded.Qp{VideoEncodedQpStats}" units="qp value"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average QP (quantizer value) per frame for a sent video stream. Recorded
when a stream is removed. {VideoEncodedQpStats}
</summary>
<token key="VideoEncodedQpStats">
<variant name=""/>
<variant name=".H264"
summary="Video codec: H264. QP range: 0-51. No spatial layers."/>
<variant name=".Vp8"
summary="Video codec: VP8. QP range: 0-127. Single stream sent."/>
<variant name=".Vp8.S0"
summary="Video codec: VP8. QP range: 0-127. Spatial index 0."/>
<variant name=".Vp8.S1"
summary="Video codec: VP8. QP range: 0-127. Spatial index 1."/>
<variant name=".Vp8.S2"
summary="Video codec: VP8. QP range: 0-127. Spatial index 2."/>
<variant name=".Vp9"
summary="Video codec: VP9. QP range: 0-255. No spatial layers."/>
<variant name=".Vp9.S0"
summary="Video codec: VP9. QP range: 0-255. Spatial layer 0."/>
<variant name=".Vp9.S1"
summary="Video codec: VP9. QP range: 0-255. Spatial layer 1."/>
<variant name=".Vp9.S2"
summary="Video codec: VP9. QP range: 0-255. Spatial layer 2."/>
</token>
</histogram>
<histogram name="WebRTC.Video.Encoder.CodecType" enum="WebRtcVideoCodecs"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Configured video codec for a sent video stream. Recorded when a
VideoSendStream is destroyed (for streams whose lifetime is longer than 10
seconds).
</summary>
</histogram>
<histogram name="WebRTC.Video.EncodeTimeInMs" units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average encode time per frame for a sent video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.EndToEndDelayInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average end-to-end delay per frame for a received video stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.EndToEndDelayMaxInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The maximum end-to-end delay per frame for a received video stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.FecBitrateReceivedInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received FEC bits per second for a received video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.FecBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent FEC bits per second for a sent video stream. Recorded
when a stream is removed. The total number of bytes is divided by the time
the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.FirPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received RTCP FIR packets per minute for a sent video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.FirPacketsSentPerMinute" units="packets/minute"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent RTCP FIR packets per minute for a received video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.H264DecoderImpl.Event"
enum="WebRtcH264DecoderImplEvent" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>hbos@chromium.org</owner>
<summary>
The number of |H264DecoderImpl| events, such as an initialization or
decoding error, that have occurred. At most one Init and one Error is
reported per |H264DecoderImpl| instance. This is to avoid the same event
from being reported multiple times (e.g. if there is an error you might
re-initialize or get a decode error every frame which would otherwise
pollute the data).
</summary>
</histogram>
<histogram name="WebRTC.Video.H264EncoderImpl.Event"
enum="WebRtcH264EncoderImplEvent" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>hbos@chromium.org</owner>
<summary>
The number of |H264EncoderImpl| events, such as an initialization or
encoding error, that have occurred. At most one Init and one Error is
reported per |H264EncoderImpl| instance. This is to avoid the same event
from being reported multiple times (e.g. if there is an error you might
re-initialize or get an encode error every frame which would otherwise
pollute the data).
</summary>
</histogram>
<histogram
name="WebRTC.Video.HardwareDecodedFramesBetweenSoftwareFallbacks{WebRtcCodecs}"
units="frames" expires_after="2024-02-01">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The number of hardware decoded frames between fallbacks to software decoder
for a received video stream. {WebRtcCodecs}
</summary>
<token key="WebRtcCodecs">
<variant name=".Av1" summary=""/>
<variant name=".Generic" summary=""/>
<variant name=".H264" summary=""/>
<variant name=".Multiplex" summary=""/>
<variant name=".Vp8" summary=""/>
<variant name=".Vp9" summary=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.InputFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of incoming frames per second for a sent video stream. Recorded
when a stream is removed. The total number of frames is divided by the time
the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.InputHeightInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average input height per frame (for incoming frames to video engine) for
a sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.InputWidthInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average input width per frame (for incoming frames to video engine) for
a sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.InterframeDelay95PercentileInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The 95th percentile of interframe delay for a received video stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.InterframeDelayInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average interframe delay for a received video stream. Recorded when a
stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.InterframeDelayMaxInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The maximum interframe delay for a received video stream. Recorded when a
stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.JitterBufferDelayInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Average jitter buffer delay for a received video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.KeyFramesReceivedInPermille{WebRTCVideoExperimentGroupId}"
units="permille" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Permille of frames that are key frames for a received video stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.KeyFramesSentInPermille" units="permille"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Permille of frames that are key frames for a sent video stream. Recorded
when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.MeanFreezeDurationMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average duration of a freeze in video playback. Recorded when a received
stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.MeanTimeBetweenFreezesMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average duration of a smooth video playback. Recorded when a received
stream is removed or content type changes.
</summary>
</histogram>
<histogram
name="WebRTC.Video.MediaBitrateReceivedInKbps{WebRTCVideoExperimentGroupId}"
units="kbps" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received media payload bits per second for a received video
stream. Recorded when a stream is removed. The total number of bytes is
divided by the time the video stream exists. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.MediaBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent media payload bits per second for a sent video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.NackPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received RTCP NACK packets per minute for a sent video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.NackPacketsSentPerMinute" units="packets/minute"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent RTCP NACK packets per minute for a received video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.NumberFreezesPerMinute" units="freezes/minute"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ssilkin@chromium.org</owner>
<summary>
The number of video freezes per minute for a received video stream. Recorded
when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.NumberOfPauseEvents" units="pause events"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of times a video stream has been paused/resumed during a call.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.NumberResolutionDownswitchesPerMinute"
units="switches/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average number of resolution down-switches per minute for a received
video stream. Recorded when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.OnewayDelayInMs" units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Average delay (network delay (rtt/2) + jitter delay + decode time + render
delay) for a received video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.PaddingBitrateReceivedInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received padding bits per second for a received video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.PaddingBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent padding bits per second for a sent video stream. Recorded
when a stream is removed. The total number of bytes is divided by the time
the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.PausedTimeInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of time that the video has been paused for a sent video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.PliPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received RTCP PLI packets per minute for a sent video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.PliPacketsSentPerMinute" units="packets/minute"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent RTCP PLI packets per minute for a received video stream.
Recorded when a stream is removed. The total number of packets is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.QualityLimitedResolutionDownscales"
units="downscales" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
For frames that are downscaled in resolution due to quality, the average
number of downscales is recorded for a sent video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.QualityLimitedResolutionInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of sent frames that are downscaled in resolution due to quality
for a sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.ReceivedFecPacketsInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of received FEC packets for a received video stream. Recorded
when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.ReceivedHeightInPixels{WebRTCVideoExperimentGroupId}"
units="pixels" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average received height per frame for a received video stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.ReceivedPacketsLostInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of received packets lost for a received video stream. Recorded
when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.ReceivedWidthInPixels{WebRTCVideoExperimentGroupId}"
units="pixels" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average received width per frame for a received video stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.ReceiveStreamLifetimeInSeconds" units="seconds"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The lifetime of a video receive stream. Recorded when a VideoReceiveStream
instance is destroyed.
</summary>
</histogram>
<histogram name="WebRTC.Video.RecoveredMediaPacketsInPercentOfFec" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of recovered media packets from FEC packets for a received video
stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.RenderFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent frames to the renderer per second for a received video
stream. Recorded when a stream is removed. The total number of frames is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.RenderSqrtPixelsPerSecond" units="pps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of pixels (sqrt(width*height)) of sent frames to the renderer per
second for a received video stream. Recorded when a stream is removed. The
total number of pixels is divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.RetransmittedBitrateReceivedInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of retransmitted bits per second for a received video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.RetransmittedBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of retransmitted bits per second for a sent video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.RtpToNtpFreqOffsetInKhz" units="kHz"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The absolute value of the difference between the estimated frequency during
RTP timestamp to NTP time conversion and the actual value (i.e. 90 kHz) is
measured per received video frame. The max offset during 40 second intervals
is stored. The average of these stored offsets per received video stream is
recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.RtxBitrateReceivedInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of received bits over RTX per second for a received video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.RtxBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent bits over RTX per second for a sent video stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.ScalabilityMode" enum="WebRtcScalabilityMode"
expires_after="M120">
<owner>orphis@chromium.org</owner>
<owner>toprice@chromium.org</owner>
<summary>
Counts usage of each scalability mode used to configure the video senders in
RTCRtpEncodingParameters from addTransceiver and setParameters APIs. This is
part of the WebRTC-SVC specification.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.BandwidthLimitedResolutionInPercent"
units="%" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Percentage of sent frames that are limited in resolution due to bandwidth
for a sent (screen content) video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.BandwidthLimitedResolutionsDisabled"
units="disabled resolutions" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
For frames that are limited in resolution due to bandwidth, the average
number of disabled resolutions is recorded for a sent (screen content) video
stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.BitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of sent bits per second for a sent screenshare stream. Recorded
when a stream is removed. The total number of bytes is divided by the time
the video stream exists.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.Decoded.Vp8.Qp{WebRTCVideoExperimentGroupId}"
units="qp value" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average QP (quantizer value) per frame for a received VP8 screenshare
stream. Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.DroppedFrames.Capturer"
units="frames" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by a capturer for a sent screenshare stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.DroppedFrames.Encoder" units="frames"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by an encoder's internal rate limiter for a
sent screenshare stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.DroppedFrames.EncoderQueue"
units="frames" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped because encoder queue is full for a sent
screenshare stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.DroppedFrames.Ratelimiter"
units="frames" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Total number of frames dropped by a WebRTC rate limiter (in MediaOpt) for a
sent screenshare stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.EncodeTimeInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average encode time per frame for a sent (screen content) video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.EndToEndDelayInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average end-to-end delay per frame for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.EndToEndDelayMaxInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The maximum end-to-end delay per frame for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.FecBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of sent FEC bits per second for a sent screenshare stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.FirPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of received RTCP FIR packets per minute for a sent screenshare
stream. Recorded when a stream is removed. The total number of packets is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.FramesPerDrop"
units="sent/dropped ratio" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Ratio of sent frames to dropped frames at the encoder. The value is reported
when a stream is removed and is calculated as the total number frames sent
divided by the number of dropped frames.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.FramesPerOvershoot"
units="sent/overshoot ratio" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Ratio of sent frames to number of re-encoded frames (due to target bitrate
overshoot). The value is reported when a stream is removed and is calculated
as the total number frames sent divided by the number of re-encoded frames.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.InputFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of incoming frames per second for a sent (screen content) video
stream. Recorded when a stream is removed. The total number of frames is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.InputHeightInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average input height per frame (for incoming frames to video engine) for
a sent (screen content) video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.InputWidthInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average input width per frame (for incoming frames to video engine) for
a sent (screen content) video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.InterframeDelay95PercentileInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The 95th percentile of interframe delay for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.InterframeDelayInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average interframe delay for a received screenshare stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.InterframeDelayMaxInMs{WebRTCVideoExperimentGroupId}"
units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The maximum interframe delay for a received screenshare stream. Recorded
when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.KeyFramesReceivedInPermille{WebRTCVideoExperimentGroupId}"
units="permille" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Permille of frames that are key frames for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.KeyFramesSentInPermille"
units="permille" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Permille of frames that are key frames for a sent (screen content) video
stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.Layer0{ScreenshareLayerStats}"
units="units" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Stats for the lower layer (TL0) of a screenshare stream in conference mode.
{ScreenshareLayerStats}
</summary>
<token key="ScreenshareLayerStats" variants="ScreenshareLayerStats">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.Layer1{ScreenshareLayerStats}"
units="units" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Stats for the higher layer (TL1) of a screenshare stream in conference mode.
{ScreenshareLayerStats}
</summary>
<token key="ScreenshareLayerStats" variants="ScreenshareLayerStats">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.MeanFreezeDurationMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average duration of a freeze in screenshare playback. Recorded then a
received stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.MeanTimeBetweenFreezesMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average duration of a smooth video playback for screenshare stream.
Recorded when a received stream is removed or content type changes.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.MediaBitrateReceivedInKbps{WebRTCVideoExperimentGroupId}"
units="kbps" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The number of received media payload bits per second for a received
screenshare stream. Recorded when a stream is removed. The total number of
bytes is divided by the time the video stream exists.
{WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.MediaBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of sent media payload bits per second for a sent screenshare
stream. Recorded when a stream is removed. The total number of bytes is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.NackPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of received RTCP NACK packets per minute for a sent screenshare
stream. Recorded when a stream is removed. The total number of packets is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.NumberResolutionDownswitchesPerMinute"
units="switches/minute" expires_after="M88">
<obsolete>
Removed 12/2022.
</obsolete>
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average number of resolution down-switches per minute for a receive
screenshare stream. Recorded when a stream is removed or content type
changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.PaddingBitrateSentInKbps"
units="kbps" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of sent padding bits per second for a sent screenshare stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.PliPacketsReceivedPerMinute"
units="packets/minute" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of received RTCP PLI packets per minute for a sent screenshare
stream. Recorded when a stream is removed. The total number of packets is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.QualityLimitedResolutionDownscales"
units="downscales" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
For frames that are downscaled in resolution due to quality, the average
number of downscales is recorded for a sent (screen content) video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.QualityLimitedResolutionInPercent"
units="%" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Percentage of sent frames that are downscaled in resolution due to quality
for a sent (screen content) video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.ReceivedHeightInPixels{WebRTCVideoExperimentGroupId}"
units="pixels" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average received height per frame for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.ReceivedPacketsLostInPercent"
units="%" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Percentage of received packets lost for a received screenshare stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram
name="WebRTC.Video.Screenshare.ReceivedWidthInPixels{WebRTCVideoExperimentGroupId}"
units="pixels" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The average received width per frame for a received screenshare stream.
Recorded when a stream is removed. {WebRTCVideoExperimentGroupId}
</summary>
<token key="WebRTCVideoExperimentGroupId"
variants="WebRTCVideoExperimentGroupId">
<variant name=""/>
</token>
</histogram>
<histogram name="WebRTC.Video.Screenshare.ReceiveStreamLifetimeInSeconds"
units="seconds" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The lifetime of a screenshare receive stream. Recorded when a
VideoReceiveStream instance is destroyed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.RetransmittedBitrateSentInKbps"
units="kbps" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of retransmitted bits per second for a sent screenshare stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.RtxBitrateSentInKbps" units="kbps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The number of sent bits over RTX per second for a sent screenshare stream.
Recorded when a stream is removed. The total number of bytes is divided by
the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SendSideDelayInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average delay (of average delays) of sent packets for a sent (screen
content) video stream. Recorded when a stream is removed. The delay is
measured from a frame is input to video engine until a packet is sent to the
network. For each sent packet, the average delay of all sent packets over
the last second is reported. The average of these reported delays is
recorded.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SendSideDelayMaxInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average delay (of max delays) of sent packets for a sent (screen
content) video stream. Recorded when a stream is removed. The delay is
measured from a frame is input to video engine until a packet is sent to the
network. For each sent packet, the maximum delay of all sent packets over
the last second is reported. The average of these reported delays is
recorded.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SentFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The number of sent frames per second for a sent (screen content) video
stream. Recorded when a stream is removed. The total number of frames is
divided by the time the video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SentHeightInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average sent height per frame for a sent (screen content) video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SentPacketsLostInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Percentage of sent packets lost for a sent screenshare stream. Recorded when
a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SentToInputFpsRatioPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Ratio between Screenshare.SentFramesPerSecond and
Screenshare.InputFramesPerSecond in percents. Recorded when a stream is
removed. The total number of sent frames is divided by the total number of
input frames and multiplied by 100.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.SentWidthInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
The average sent width per frame for a sent (screen content) video stream.
Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.TimeInBlockyVideoPercentage"
units="%" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Percentage of time the received screenshare stream playbacks low quality
blocky video. Recorded when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.TimeInHdPercentage" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Percentage of time the received screenshare stream playbacks HD resolution.
Recorded when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.Screenshare.UniqueNackRequestsReceivedInPercent"
units="%" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>sprang@chromium.org</owner>
<summary>
Percentage of unique RTCP NACK requests that are received in response to a
sent screenshare stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.SendDelayInMs" units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average send delay of sent packets for a sent video stream. Recorded
when a stream is removed. The delay is measured from a packet is sent to the
transport until leaving the socket.
</summary>
</histogram>
<histogram name="WebRTC.Video.SendSideDelayInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average delay (of average delays) of sent packets for a sent video
stream. Recorded when a stream is removed. The delay is measured from a
frame is input to video engine until a packet is sent to the network. For
each sent packet, the average delay of all sent packets over the last second
is reported. The average of these reported delays is recorded.
</summary>
</histogram>
<histogram name="WebRTC.Video.SendSideDelayMaxInMs" units="ms"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average delay (of max delays) of sent packets for a sent video stream.
Recorded when a stream is removed. The delay is measured from a frame is
input to video engine until a packet is sent to the network. For each sent
packet, the maximum delay of all sent packets over the last second is
reported. The average of these reported delays is recorded.
</summary>
</histogram>
<histogram name="WebRTC.Video.SendStreamLifetimeInSeconds" units="seconds"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The lifetime of a video send stream. Recorded when a VideoSendStream
instance is destroyed.
</summary>
</histogram>
<histogram name="WebRTC.Video.SentFramesPerSecond" units="fps"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The number of sent frames per second for a sent video stream. Recorded when
a stream is removed. The total number of frames is divided by the time the
video stream exists.
</summary>
</histogram>
<histogram name="WebRTC.Video.SentHeightInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average sent height per frame for a sent video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.SentPacketsLostInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of sent packets lost for a sent video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.SentToInputFpsRatioPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Ratio between SentFramesPerSecond and InputFramesPerSecond in percents.
Recorded when a stream is removed. The total number of sent frames is
divided by the total number of input frames and multiplied by 100.
</summary>
</histogram>
<histogram name="WebRTC.Video.SentWidthInPixels" units="pixels"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
The average sent width per frame for a sent video stream. Recorded when a
stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.TargetDelayInMs" units="ms" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Average target delay (jitter delay + decode time + render delay) for a
received video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.TimeInBlockyVideoPercentage" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Percentage of time the receive video stream playbacks low quality blocky
video. Recorded when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.TimeInHdPercentage" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>ilnik@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Percentage of time the receive video stream playbacks HD resolution.
Recorded when a stream is removed or content type changes.
</summary>
</histogram>
<histogram name="WebRTC.Video.UniqueNackRequestsReceivedInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of unique RTCP NACK requests that are received in response to a
sent video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.UniqueNackRequestsSentInPercent" units="%"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>asapersson@chromium.org</owner>
<summary>
Percentage of unique RTCP NACK requests that are sent in response to a
received video stream. Recorded when a stream is removed.
</summary>
</histogram>
<histogram name="WebRTC.Video.VP8DecoderImpl.TooManyPendingFrames"
units="counts" expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>perkj@chromium.org</owner>
<summary>
Counts occurences of if the VP8 software decoder runs out of buffers due to
that they are not returned to the buffer pool. See http://crbug/652923 and
http://crbug/542522.
</summary>
</histogram>
<histogram name="WebRTC.webkitApiCount" enum="RTCAPIName"
expires_after="2023-08-27">
<owner>toprice@chromium.org</owner>
<owner>hbos@chromium.org</owner>
<owner>mcasas@chromium.org</owner>
<owner>emircan@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>Counts number of calls to WebRTC APIs from JavaScript.</summary>
</histogram>
<histogram name="WebRTC.webkitApiCountPerSession" enum="RTCAPIName"
expires_after="2023-03-07">
<owner>toprice@chromium.org</owner>
<owner>hbos@chromium.org</owner>
<summary>
Counts the number of calls to WebRTC APIs from JavaScript once per session.
A session is a crude estimate since its implemented as the lifetime of the
render process that called the WebRTC API.
</summary>
</histogram>
<histogram name="WebRtcEventLogging.Api" enum="WebRtcEventLoggingApiEnum"
expires_after="2023-11-07">
<owner>eladalon@chromium.org</owner>
<owner>manj@google.com</owner>
<owner>dmitriyg@google.com</owner>
<summary>
The result of calls to the API for the collection and uploading of WebRTC
event logs.
</summary>
</histogram>
<histogram name="WebRtcEventLogging.NetError" units="units"
expires_after="2023-11-07">
<owner>eladalon@chromium.org</owner>
<owner>manj@google.com</owner>
<owner>dmitriyg@google.com</owner>
<summary>
NetError returned by the SimpleURLLoader object in charge of uploading a
WebRTC event log file.
</summary>
</histogram>
<histogram name="WebRtcEventLogging.Upload" enum="WebRtcEventLoggingUploadEnum"
expires_after="2023-11-07">
<owner>eladalon@chromium.org</owner>
<owner>manj@google.com</owner>
<owner>dmitriyg@google.com</owner>
<summary>
Tracks the uploading or discarding of WebRTC event logs that were previously
collected.
</summary>
</histogram>
<histogram name="WebRtcTextLogging.UploadFailureNetErrorCode"
enum="NetErrorCodes" expires_after="2024-05-01">
<owner>toprice@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Network error codes for WebRTC text log upload failures. Recorded when an
upload attempt fails. Note: The histogram was disabled between May 2022 and
M110, so has no data for that period.
</summary>
</histogram>
<histogram name="WebRtcTextLogging.UploadFailureReason"
enum="WebRtcLoggingUploadFailureReason" expires_after="2024-05-01">
<owner>toprice@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Counts upload failures for WebRTC text log. Error codes for network errors
are logged in WebRtcTextLogging.UploadFailureNetErrorCode. Recorded when an
upload attempt fails.
</summary>
</histogram>
<histogram name="WebRtcTextLogging{WebRtcLoggingEvent}"
enum="WebRtcLoggingWebAppIdHash" expires_after="2024-05-07">
<owner>toprice@chromium.org</owner>
<owner>olka@chromium.org</owner>
<owner>webrtc-dev@chromium.org</owner>
<summary>
Counts the number of WebRTC text log events per web application. Suffixed by
event. {WebRtcLoggingEvent}
</summary>
<token key="WebRtcLoggingEvent">
<variant name=".Discard" summary="Discard"/>
<variant name=".Start" summary="Start"/>
<variant name=".UploadFailed" summary="Upload failed"/>
<variant name=".UploadStarted" summary="Upload started"/>
<variant name=".UploadStoredStarted"
summary="Upload of a stored log started"/>
<variant name=".UploadSuccessful" summary="Upload successful"/>
</token>
</histogram>
</histograms>
</histogram-configuration>