<!--
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 Media 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
[email protected].
-->
<histogram-configuration>
<histograms>
<variants name="AudioAggregationDuration">
<variant name=".Intervals" summary="Whole intervals of 1000 callbacks"/>
<variant name=".Short" summary="Streams shorter than 1000 callbacks"/>
</variants>
<variants name="AudioLatencyTag">
<variant name="" summary="All latencies combined"/>
<variant name=".LatencyExactMs"/>
<variant name=".LatencyInteractive"/>
<variant name=".LatencyPlayback"/>
<variant name=".LatencyRtc"/>
<variant name=".LatencyUnknown"/>
</variants>
<variants name="CastStreamingSender">
<variant name="Audio"/>
<variant name="Remoting.Audio"/>
<variant name="Remoting.Video"/>
<variant name="Video"/>
</variants>
<variants name="CastStreamingSenderAudioVideo">
<variant name="Audio"/>
<variant name="Video"/>
</variants>
<variants name="DbOperation">
<variant name="Clear" summary="Remove all keys from the DB"/>
<variant name="Initialize" summary="Initialize the DB."/>
<variant name="Read" summary="Read an entry from the DB"/>
<variant name="Validate" summary="Check for DB entry corruption"/>
<variant name="Write" summary="Write an entry to the DB"/>
</variants>
<variants name="EmeApi">
<variant name="CloseSession"/>
<variant name="GenerateRequest"/>
<variant name="GetStatusForPolicy"/>
<variant name="LoadSession"/>
<variant name="RemoveSession"/>
<variant name="SetServerCertificate"/>
<variant name="UpdateSession"/>
</variants>
<variants name="FileOperation">
<variant name="DeleteFile"/>
<variant name="ReadFile"/>
<variant name="WriteFile"/>
</variants>
<variants name="IncognitoOrNormal">
<variant name="" summary="Normal or Incognito"/>
<variant name=".Incognito" summary="Incognito"/>
<variant name=".Normal" summary="Normal"/>
</variants>
<variants name="KeySystem">
<variant name="ClearKey" summary="Clear Key key system"/>
<variant name="Widevine" summary="Widevine key system"/>
</variants>
<variants name="KeySystemWithRobustness">
<variant name="ClearKey" summary="Clear Key key system"/>
<variant name="Widevine.HardwareSecure"
summary="Hardware secure Widevine key system"/>
<variant name="Widevine.SoftwareSecure"
summary="Software secure Widevine key system"/>
</variants>
<variants name="MF_MEDIA_ENGINE_ERR">
<variant name="MF_MEDIA_ENGINE_ERR_ABORTED"/>
<variant name="MF_MEDIA_ENGINE_ERR_DECODE"/>
<variant name="MF_MEDIA_ENGINE_ERR_ENCRYPTED"/>
<variant name="MF_MEDIA_ENGINE_ERR_NETWORK"/>
<variant name="MF_MEDIA_ENGINE_ERR_NOERROR"/>
<variant name="MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED"/>
</variants>
<variants name="RendererType">
<variant name="MediaFoundationRenderer"/>
<variant name="RendererImpl"/>
</variants>
<variants name="ResolveOrReject">
<variant name="" summary="resolve"/>
<variant name=".Reject" summary="reject"/>
</variants>
<!-- The names should match media::GetCodecNameForUMA(). -->
<variants name="VideoCodec">
<variant name="AV1"/>
<variant name="DolbyVision"/>
<variant name="H264"/>
<variant name="HEVC"/>
<variant name="MPEG2"/>
<variant name="MPEG4"/>
<variant name="Theora"/>
<variant name="VC1"/>
<variant name="VP8"/>
<variant name="VP9"/>
</variants>
<variants name="VideoEncoderImpl">
<variant name="HW"/>
<variant name="SW"/>
</variants>
<variants name="VideoEncoderUsage">
<variant name="CastMirroring"/>
<variant name="MediaRecorder"/>
<variant name="WebCodecs"/>
<variant name="WebRTC"/>
</variants>
<histogram name="CastStreaming.Sender.Audio.NegotiatedCodec" enum="AudioCodec"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records which audio codec was negotiated during a mirroring session.
</summary>
</histogram>
<histogram name="CastStreaming.Sender.Video.Bitrate" units="kbps"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the currently set video bit rate during a Cast Streaming mirroring
session. This metric is subsampled every 500 frames.
</summary>
</histogram>
<histogram name="CastStreaming.Sender.Video.NegotiatedCodec" enum="VideoCodec"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records which video codec was negotiated during a mirroring session.
</summary>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.AverageCaptureLatency"
units="ms" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the average {CastStreamingSenderAudioVideo} latency in milliseconds
for capturing frames. Histogram is recorded at the end of the mirroring
session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.AverageEncodeTime"
units="ms" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the average time required to encode {CastStreamingSenderAudioVideo}
frames, in milliseconds. Histogram is recorded at the end of the mirroring
session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.AverageEndToEndLatency"
units="ms" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the average {CastStreamingSenderAudioVideo} latency in milliseconds
end to end, from the beginning of capturing a frame to when the frame is
played out on the receiver. Histogram is recorded at the end of the
mirroring session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.AverageNetworkLatency"
units="ms" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the average {CastStreamingSenderAudioVideo} latency in milliseconds
from sender to receiver. Histogram is recorded at the end of the mirroring
session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.ExceededPlayoutDelayPacketsPercentage"
units="%" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records number of {CastStreamingSenderAudioVideo} packets that exceeded the
playout delay as a percentage of all packets. Histogram is recorded at the
end of the mirroring session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.LateFramesPercentage"
units="%" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of {CastStreamingSenderAudioVideo} frames that are
reported as late, and therefore dropped by the sender, during a cast
mirroring session. Recorded at the end of a cast mirroring session. Logged
on all desktop platforms.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.RetransmittedPacketsPercentage"
units="%" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records number of {CastStreamingSenderAudioVideo} packets that had to be
retransmitted as a percentage of number of packets sent. Histogram is
recorded at the end of the mirroring session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSenderAudioVideo}.TransmissionRate"
units="kbps" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the {CastStreamingSenderAudioVideo} packet transmission bitrate in
kbps during a Cast Streaming session. Histogram is recorded at the end of
the mirroring session.
</summary>
<token key="CastStreamingSenderAudioVideo"
variants="CastStreamingSenderAudioVideo"/>
</histogram>
<histogram name="CastStreaming.Sender.{CastStreamingSender}.FrameDropped"
enum="CastStreamingFrameDropReason" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the reason when an frame is dropped during a Cast Streaming session.
</summary>
<token key="CastStreamingSender" variants="CastStreamingSender"/>
</histogram>
<histogram
name="CastStreaming.Sender.{CastStreamingSender}.PercentDroppedFrames"
units="%" expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the total percentage of frames dropped for a given Cast Streaming
session.
</summary>
<token key="CastStreamingSender" variants="CastStreamingSender"/>
</histogram>
<histogram name="Media.AImageReaderGLOwner.AcquireImageResult"
enum="MediaStatus" expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes to handle AImage and AImageReader api calls. This is recorded
when AImageReader acquireNextImage or acquireLatestImage is called and the
returned code is other than AMEDIA_OK. This histogram was enabled in the
past and became absolete on 2018-11-25.
</summary>
</histogram>
<histogram name="Media.AImageReaderGLOwner.CodecType"
enum="TextureOwnerCodecType" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether we use MediaCodec or MediaPlayer (aka StreamTexture path). This
is recorded when AImageReader acquireNextImage or acquireLatestImage is
called.
</summary>
</histogram>
<histogram name="Media.AImageReaderGLOwner.HasFence" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether AImageReader provided an acquire fence in acquireNextImage or
acquireLatestImage. Logged once for each successfuly acquired frame.
</summary>
</histogram>
<histogram name="Media.Android.BecomingNoisy" enum="Boolean"
expires_after="2023-01-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android-specific metric. Occasionally, we cannot start a foreground service
when headphones are unplugged. This tracks how often that occurs, which is
one recorded boolean per "user unplugs headphones while media is
playing". See https://crbug.com/1245017 for more details.
</summary>
</histogram>
<histogram name="Media.Android.GetColorSpaceError" enum="BooleanError"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Android: Whether we successfuly got ColorSpace from MediaCodec or not.
Recorded each time output format changes from MediaCodec.
</summary>
</histogram>
<histogram name="Media.Android.MediaPlayerSuccess" enum="MediaPlayerExitStatus"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Android: Whether MediaPlayer exited without errors.</summary>
</histogram>
<histogram name="Media.Android.MediaPlayerWatchTime"
enum="MediaPlayerWatchTimeType" expires_after="2025-01-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Wall time of MediaPlayer playbacks. Each count represents one second of
media playback. Multiple MediaPlayer instances can together accumulate watch
time faster than real time.
</summary>
</histogram>
<histogram name="Media.Audible.ConcurrentTabsTime" units="ms"
expires_after="2024-09-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how long more than one tab is audible at the same time. The
concurrent tabs might change during this period. The time recorded starts
when the browser goes from one to two audbile tabs and stops when it is back
below two. Warning: this histogram was expired from 2020-09-05 to 4-18-22;
data may be missing.
</summary>
</histogram>
<histogram name="Media.Audible.ConcurrentTabsWhenStarting" units="units"
expires_after="2025-06-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how many tabs were audible when a new tab started to be audible.
Warning: this histogram was expired from 2020-09-05 to 4-18-22; data may be
missing.
</summary>
</histogram>
<histogram name="Media.Audible.MaxConcurrentTabsInSession" units="units"
expires_after="2025-06-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how many tabs are audible at the same time during the session. It is
recording the maximum audible tab count everytime it increases. In other
words, a session with N concurrent audible tabs will record entries from 1
through N exactly once. Warning: this histogram was expired from 2020-09-05
to 4-18-22; data may be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Autoplay" enum="AutoplaySource"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Records the autoplay source of audios.</summary>
</histogram>
<histogram name="Media.Audio.Capture.DetectedMissingCallbacks"
enum="BooleanMissingCallbacks" expires_after="2025-07-21">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether missing callbacks where detected during audio capture. Logged when
AudioInputDevice is stopped.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.FramesProvided" units="frames"
expires_after="2025-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of captured audio frames that is provided by the operating system
in each callback. Typically, Chrome will want to use a 10 ms buffer (e.g.
480 frames for a sample rate of 48 kHz), but the OS may decide to capture
e.g. 256 frames of audio at a time. If the desired frame size is used, the
emitted value is special-cased to be 0. This histogram then shows how
frequent it is that the desired number of frames is used and if not, the
number of frames used in practice. The number of frames per callback is
normally constant or very rarely changed throughout the lifetime of the
audio stream. The first value that differs from the desired value is stored
and logged when an audio input stream is closed. Any further differences
during the lifetime will be ignored.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.InputStreamDuration" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram measures the duration of every input stream, as seen from the
renderer. It counts from when it has been successfully started, until it is
stopped. Streams that fail to start are not logged.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.LowLatencyCallbackError"
enum="BooleanError" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A boolean that reflects whether or not an error was reported during audio
capture for a low latency stream.
</summary>
</histogram>
<histogram
name="Media.Audio.Capture.Mac.MicSystemPermission.FixedTime.SinceFirstFailure"
units="ms" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time from the first microphone access failure due to blocked system
permission before the last browser restart to startup after browser restart.
Logged once at browser startup if the system permission then is allowed.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram
name="Media.Audio.Capture.Mac.MicSystemPermission.FixedTime.SinceLastFailure"
units="ms" expires_after="2024-01-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time from the last microphone access failure due to blocked system
permission before the last browser restart to startup after browser restart.
Logged once at browser startup if the system permission then is allowed.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Mac.MicSystemPermission.Startup"
enum="SystemMediaCapturePermission" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for microphone. Logged once at browser
startup. For more information on the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram
name="Media.Audio.Capture.Mac.MicSystemPermission.StartupAfterFailure"
enum="SystemMediaCapturePermission" expires_after="2024-01-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for microphone. Logged once at browser
startup if there was a failure accessing the microphone due to blocked
system permission before the last browser restart. For more information on
the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Mac.MicSystemPermission.UserMedia"
enum="SystemMediaCapturePermission" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for microphone at the time of a user media
request. Logged when the system permission is checked. If the permission is
"not determined" this is logged, permission is requested, and the
resulting permission (from the user response) is also logged. For more
information on the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.ProcessingAudioFifo.MaxUsage"
units="buffers" expires_after="2025-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Maximum size (in buffers) of the unprocessed data queue, reached over a
sampling interval (1000 callbacks). Not logged for streams received less
than 1000 callbacks.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.ProcessingAudioFifo.Overruns"
units="count" expires_after="2025-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times over a sampling interval (1000 callbacks) a
ProcessingAudioFifo has overflowed and dropped buffers. Capped at 100 (1/10
of all callbacks). Not logged for streams received less than 1000 callbacks.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.SCK.ContentEnumerationTimedOut"
enum="Boolean" expires_after="2025-07-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates if SCShareableContent enumeration has timed out during a call to
SCKAudioInputStream::Open(). The timeout exists to prevent a deadlock if the
API is misbehaving. We do not expect any timeouts under normal conditions.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.SCK.ContentEnumerationTimeMs" units="ms"
expires_after="2025-07-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the time required for SCShareableContent enumeration (displays and
open applications/windows) when calling SCKAudioInputStream::Open(). The
duration can vary based on the amount of applications and windows open on
the system. This enumeration is a blocking operation, and as such should
complete as fast as possible. If metrics show long times, the operation
might have to be made asynchronous.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.SCK.StreamError" units="errorcode"
expires_after="2024-08-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes reported by ScreenCaptureKit in
SCKAudioInputStream::OnStreamError() during stream setup or while streaming
samples.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.StreamCallbackError2"
enum="AudioCaptureDeviceError" expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When AudioInputDevice is stopped, this stat is recorded with whether an
error callback was ever received over IPC, and in that case whether the
error occurred during or after stream creation.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.AbsTimestampDiffMs" units="ms"
expires_after="2025-05-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The absolute time difference in milliseconds between a default QPC-based
timstamp and a timestamp from TimeTicks::Now(). By default, the difference
will be small and correspond to the size of the audio capture buffer which
is about 10 milliseconds. It can however be very large on some devices, e.g.
when using RDP. If the diffeence is larger than 500 milliseconds, so-called
fake audio capture timestamps (based on TimeTicks::Now()) will be utilized.
This value is logged once per audio input stream session at the first audio
callback.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.FakeTimestamps" enum="Boolean"
expires_after="2025-05-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether audio capture timestamps on Windows are fake or not. By default
QPC-based timestamps provided by native audio APIs are utilized. In some
cases the QPC-based timestamps differ a lot compared with TimeTicks::Now()
timestamps and this can lead to issues (see http://crbug.com/1439283). If an
absolute difference larger than 500 msec between these two types of
timestamps is detected, we fall back to using TimeTicks::Now() and these
timestams are called fake timestamps. We expect that usage of fake
timestamps will be low. This value is logged once per audio input stream
session at the first audio callback.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.Glitches2" units="glitches"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of glitches that were detected at the OS level while an audio
input stream was active. A glitch in this case corresponds to a certain
error code from the IAudioCaptureClient::GetBuffer() API:
AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY. This value is logged every 1000 OS
callbacks on Windows.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.InitError" enum="Hresult"
expires_after="2025-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes from IAudioClient::Initialize() in
WASAPIAudioInputStream::InitializeAudioEngine on Windows.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.InitError.FormatRelated"
enum="AudioStreamFormatRelatedInitError" expires_after="2025-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors from IAudioClient::Initialize() in
WASAPIAudioInputStream::InitializeAudioEngine on Windows that are related to
the audio format. Each error is split by whether format conversion was used
or not. Warning: this histogram was expired from 2022-10-17 to 2022-10-18;
data may be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.Open" enum="AudioStreamOpenResult"
expires_after="2025-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Success/error cases for opening an audio input stream on Windows.
</summary>
</histogram>
<histogram name="Media.Audio.CrasInputStreamNotifyStreamError"
units="errorcode" expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes reported by the NotifyStreamError function in CrasInputStream.
</summary>
</histogram>
<histogram name="Media.Audio.CrasInputStreamOpenSuccess"
enum="CrasInputStreamOpenSuccess" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged at each call to CrasInputStream::Open to indicate any errors.
</summary>
</histogram>
<histogram name="Media.Audio.CrasInputStreamStartSuccess"
enum="CrasInputStreamStartSuccess" expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged at each call to CrasInputStream::Start to indicate any errors.
</summary>
</histogram>
<histogram name="Media.Audio.CrasUnifiedStreamNotifyStreamError"
units="errorcode" expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes reported by the NotifyStreamError function in CrasUnifiedStream.
</summary>
</histogram>
<histogram name="Media.Audio.CrasUnifiedStreamOpenSuccess"
enum="CrasUnifiedStreamOpenSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged at each call to CrasUnifiedStream::Open to indicate any errors.
</summary>
</histogram>
<histogram name="Media.Audio.CrasUnifiedStreamStartSuccess"
enum="CrasUnifiedStreamStartSuccess" expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged at each call to CrasUnifiedStream::Start to indicate any errors.
</summary>
</histogram>
<histogram name="Media.Audio.InputStartupSuccessMac" enum="BooleanSuccess"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates if audio capturing did start after stream startup was requested.
Sampled once, a few seconds after a stream has been asked to start.
</summary>
</histogram>
<histogram name="Media.Audio.Mac.AggregateDeviceCompositionPropertyIsNull"
enum="Boolean" expires_after="2025-03-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports the number of occurences of null output dictionary when
AudioObjectGetPropertyData for kAudioAggregateDevicePropertyComposition is
called. This is equivalent to the number of crashes that were reported in
crbug.com/1428619.
</summary>
</histogram>
<histogram name="Media.Audio.Mac.HardwareLatency.{Direction}.{Component}"
units="misses" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reported hardware latency, used to adjust timestamps for A/V sync.
Logged once per low-latency input stream creation (AUAudioInputStream only),
or once per output stream creation.
</summary>
<token key="Direction">
<variant name="Input" summary="Audio capture"/>
<variant name="Output" summary="Audio playback"/>
</token>
<token key="Component">
<variant name="AudioUnit" summary="Latency reported by AudioUnit"/>
<variant name="Device" summary="Latency reported by the HW device"/>
<variant name="Stream" summary="Latency reported by the stream"/>
<variant name="Total" summary="Total reported latency"/>
</token>
</histogram>
<histogram name="Media.Audio.MakeAudioInputStreamStatus"
enum="MakeAudioInputStreamStatus" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged at each call to AudioManagerBase::MakeAudioInputStream to indicate
any errors.
</summary>
</histogram>
<histogram name="Media.Audio.Output.Win.{AudioOutputMethod}Error"
enum="Hresult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors from various methods on WASAPIAudioOutputStream. Recorded upon a
failure being returned from a call into WASAPI.
</summary>
<token key="AudioOutputMethod">
<variant name="Open"/>
<variant name="Render"/>
<variant name="Run"/>
<variant name="Start"/>
<variant name="Stop"/>
</token>
</histogram>
<histogram name="Media.Audio.OutputDeviceAuthorizationTime" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time delta between the moment output device authorization request is
received by the browser and the moment its processessing is finished (and
reply is to be sent back to the renderer if IPC is not closed yet).
</summary>
</histogram>
<histogram name="Media.Audio.OutputDeviceMixer.MixedPlaybackStatus"
enum="AudioOutputDeviceMixerMixedPlaybackStatus" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Health status of the mixed playback. Recorded when mixed playback stopped or
failed to start.
</summary>
</histogram>
<histogram name="Media.Audio.OutputDeviceMixer.OvertimeCount" units="count"
expires_after="2025-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times over a sampling interval (1000 callbacks) when the mixing
callback took longer than the playback buffer duration to finish. Capped at
100 (1/10 of all callbacks). Not logged if the mixer was called less than
1000 times.
</summary>
</histogram>
<histogram name="Media.Audio.OutputDeviceMixer.StreamStatus"
enum="AudioOutputDeviceMixerStreamStatus" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Health status of each output stream managed by mixer. Recorded when the
stream is closed.
</summary>
</histogram>
<histogram name="Media.Audio.OutputDeviceMixerManager.StreamCreation"
enum="AudioOutputDeviceMixerManagerStreamCreation"
expires_after="2025-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A path OutputDeviceMixerManager uses to create an output stream.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.CaptureDelayMs" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time, in milliseconds, between when a block of audio is read from the
soundcard and when it's presented to the audio processor. Used in
calculating the total system delay for the audio processor.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.CaptureDelayVarianceMs"
units="ms squared" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The variance of the capture delay in milliseconds (see
Media.Audio.Processing.CaptureDelayMs). Logged once every second and
calculated over the past second of data.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.RenderDelayMs" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time, in milliseconds, between when a block of audio is presented to the
audio processor and the time it's played out on the soundcard. Used in
calculating the total system delay for the audio processor.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.RenderDelayVarianceMs"
units="ms squared" expires_after="2025-05-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The variance of the render delay in milliseconds (see
Media.Audio.Processing.RenderDelayMs). Logged once every second and
calculated over the past second of data.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.TotalDelayMs" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The estimated total audio system delay presented to the audio processor. The
sum of the individual capture and render delays at similar points in time.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.TotalDelayVarianceMs"
units="ms squared" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The variance of the total delay in milliseconds (see
Media.Audio.Processing.TotalDelayMs). Logged once every second and
calculated over the past second of data.
</summary>
</histogram>
<histogram name="Media.Audio.RawProcessingSupportedWin" enum="BooleanSupported"
expires_after="2025-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the capture device supports raw audio capture or not. Emitted when
the audio input stream is closed but only on Windows platforms. Only
uploaded for the case when analog AGC is enabled, i.e., for WebRTC-based
audio input streams.
</summary>
</histogram>
<histogram name="Media.Audio.Render.FramesRequested" units="frames"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of frames audio is actually rendered at if the number is
different from the desired number of frames. If the desired frame size is
used, this value will be 0. Typically, Chrome will want to use a 10ms buffer
(e.g. 480 frames for a sample rate of 48kHz), but we might have to render
audio 256 frames at a time. This histogram gives us an indication as to how
frequent that is and what buffer sizes are used in practice. This value is
logged when an audio output stream is stopped.
</summary>
</histogram>
<histogram name="Media.Audio.Render.GetSourceDataTime.WebRTC"
units="microseconds" expires_after="2025-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent to get audio data from the source. For WebRTC, it's the time
spent in WebRtcAudioRenderer::SourceCallback. Logged every function call,
which is every 10 ms.
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Media.Audio.Render.GetSourceDataTimeMax.WebRTC"
units="microseconds" expires_after="2025-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum time spent to get audio data from the source during a session.
For WebRTC, it's the time spent in WebRtcAudioRenderer::SourceCallback. A
session is between Start() and Stop() of WebRtcAudioRenderer.
Warning: This metric may include reports from clients with low-resolution
clocks (i.e. on Windows, ref. |TimeTicks::IsHighResolution()|). Such reports
will cause this metric to have an abnormal distribution. When considering
revising this histogram, see UMA_HISTOGRAM_CUSTOM_MICROSECONDS_TIMES for the
solution.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTime" units="ms"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Similar to Media.Audio.OutputDeviceAuthorizationTime, this histogram
measures the time required for device authorization, but it is measured on
the renderer side when AudioOutputDevice calls RequestDeviceAuthorization on
the IO thread until it receives OnDeviceAuthorized, also on the IO thread.
Note that an authorization timeout will cause OnDeviceAuthorized to be
called, so for platforms that use a timeout, very few times will be above
the timeout value. Warning: this histogram was expired from 2020-04-05 to
2021-06-04; data may be missing.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTimedOut"
enum="BooleanTimedOut" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether audio output device timed out waiting for authorization reply from
the browser side.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceStartTime2" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time delta from an AudioOutputDevice sending its first PlayStream
message to it getting its first data callback.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceStatus"
enum="OutputDeviceStatus" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Device status received in response to device authorization request.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputStreamDuration2" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram measures the duration of every output stream, as seen from
the renderer. It counts from when it has been successfully started, until it
is stopped. Streams that fail to start are not logged.
</summary>
</histogram>
<histogram name="Media.Audio.Render.StreamCallbackError2"
enum="AudioRenderDeviceError" expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When AudioOutputDevice is stopped, this stat is recorded with whether an
error callback was ever received over IPC, and in that case whether the
error occurred during or after stream creation. Expired in Apr 2020 and
re-enabled in May 2021.
</summary>
</histogram>
<histogram name="Media.Audio.Render.SystemDelay" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The delay between audio being delivered to the OS-specific implementation of
AudioOutputStream and the audio being played out by the speakers. Reported
every time the AudioOutputStream calls AudioSourceCallback::OnMoreData.
</summary>
</histogram>
<histogram name="Media.Audio.TabAudioMuted" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged when a user clicks on the audio indicator button in the tab strip.
Logs true if the click mutes the tab and false if the click unmutes the tab.
</summary>
</histogram>
<histogram name="Media.Audio.TrackAudioRenderer.DeviceStatus"
enum="OutputDeviceStatus" expires_after="never">
<!-- expires-never: used for audio output devices monitoring. -->
<!-- https://crbug.com/986492 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Device status received during TrackAudioRenderer initialization. This is a
specific case of Media.Audio.Render.OutputDeviceStatus histogram.
</summary>
</histogram>
<histogram name="Media.Audio.TrackAudioRenderer.SwitchDeviceStatus"
enum="OutputDeviceStatus" expires_after="never">
<!-- expires-never: used for audio output devices monitoring. -->
<!-- https://crbug.com/986492 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Device status received by TrackAudioRenderer when switching the output
device. This is a specific case of Media.Audio.Render.OutputDeviceStatus
histogram.
</summary>
</histogram>
<histogram name="Media.Audio.WebRTCAudioRenderer.DeviceStatus"
enum="OutputDeviceStatus" expires_after="never">
<!-- expires-never: used for WebRTC audio output devices monitoring. -->
<!-- https://crbug.com/986501 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Device status received during WebRTCAudioRenderer initialization. This is a
specific case of Media.Audio.Render.OutputDeviceStatus histogram.
</summary>
</histogram>
<histogram name="Media.Audio.WebRTCAudioRenderer.SwitchDeviceStatus"
enum="OutputDeviceStatus" expires_after="never">
<!-- expires-never: used for WebRTC audio output devices monitoring. -->
<!-- https://crbug.com/986501 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Device status received by WebRTCAudioRenderer when switching the output
device. This is a specific case of Media.Audio.Render.OutputDeviceStatus
histogram.
</summary>
</histogram>
<histogram name="Media.Audio.{Type}.EarlyGlitchDetected" enum="BooleanDetected"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a glitch in the capture/render audio at the OS level was detected
during the first 1000 OS callbacks of an active input/output stream. A
glitch is detected if the OS skips providing/requesting any frames of audio,
and is recorded when the stream ends, as long as the stream saw at least one
OS callback. Reported on Windows and Mac.
</summary>
<token key="Type">
<variant name="Capture"/>
<variant name="Render"/>
</token>
</histogram>
<histogram name="Media.Audio.{Type}.Glitches2" units="glitches"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of glitches that were detected at the OS level while an audio
input (Capture) or output (Render) stream was active. A glitch is detected
if the OS skips providing/requesting any frames of audio. This value is
aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer
size 10 ms) and is logged at the end of each collection interval. Not
recorded for streams shorter than 1000 callbacks. Reported on Windows, Mac
and ChromeOS.
</summary>
<token key="Type">
<variant name="Capture"/>
<variant name="Render"/>
</token>
</histogram>
<histogram name="Media.Audio.{Type}.LargestGlitchMs2" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The length in milliseconds of the largest glitch that was detected at the OS
level by an audio input (Capture) or output (Render) stream. This value is
aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer
size 10 ms) and is logged at the end of each collection interval if any
glitches were detected. Not recorded for streams shorter than 1000
callbacks. Reported on Windows and Mac.
</summary>
<token key="Type">
<variant name="Capture"/>
<variant name="Render"/>
</token>
</histogram>
<histogram name="Media.Audio.{Type}.LostFramesInMs2" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The combined length in milliseconds of input (Capture) or output (Render)
audio glitches detected at the OS level. This is useful to know in
particular for audio processing such as echo cancellation. This value is
aggregated over a period of 1000 OS callbacks (every 10 seconds for buffer
size 10 ms) and is logged at the end of each collection interval if any
glitches were detected. Not recorded for streams shorter than 1000
callbacks. Reported on Windows and Mac.
</summary>
<token key="Type">
<variant name="Capture"/>
<variant name="Render"/>
</token>
</histogram>
<histogram name="Media.Audio.{Type}.SystemGlitchDuration" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The duration of audio glitches occurring in the OS-specific implementation
of an audio stream (AudioInputStream for Capture and AudioOutputStream for
Render). Reported every time a glitch occurs.
</summary>
<token key="Type">
<variant name="Capture"/>
<variant name="Render"/>
</token>
</histogram>
<histogram name="Media.AudioBitsPerChannel" units="units" expires_after="M85">
<owner>[email protected]</owner>
<summary>Bits per channel of HTML5 audio sample data.</summary>
</histogram>
<histogram name="Media.AudioCapturerAudioGlitches" enum="AudioGlitchResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether there is input audio glitches due to dropped input audio data or
not. Sampled when a low-latency input audio stream is destructed.
</summary>
</histogram>
<histogram name="Media.AudioCapturerDroppedData10sIntervals" units="drops"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of input audio data blocks that were dropped at the
browser/renderer boundary due to for example buffer overflow in the writer
side buffer or in the socket. This value is aggregated over a period of 1000
input data pushes (every 10 seconds for buffer size 10 ms) and is logged at
the end of each collection interval. Not recorded for streams with less than
1000 input data pushes.
</summary>
</histogram>
<histogram name="Media.AudioCapturerDroppedDataBelow10s" units="drops"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of input audio data blocks that were dropped at the
browser/renderer boundary due to for example buffer overflow in the writer
side buffer or in the socket. This value is only logged for streams with
less than 1000 input data pushes (10 seconds for buffer size 10 ms).
</summary>
</histogram>
<histogram name="Media.AudioCapturerMissedReadDeadline10sIntervals"
units="misses" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times input audio data blocks that had to be buffered because
there was not room in the shared memory ring buffer on the browser/renderer
boundary. This happens if the reading side hasn't read data in time. This
value is aggregated over a period of 1000 input data pushes (every 10
seconds for buffer size 10 ms) and is logged at the end of each collection
interval. Not recorded for streams with less than 1000 input data pushes.
</summary>
</histogram>
<histogram name="Media.AudioCapturerMissedReadDeadlineBelow10s" units="misses"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times input audio data blocks that had to be buffered because
there was not room in the shared memory ring buffer on the browser/renderer
boundary. This happens if the reading side hasn't read data in time. This
value is only logged for streams with less than 1000 input data pushes (10
seconds for buffer size 10 ms).
</summary>
</histogram>
<histogram name="Media.AudioCodec" enum="AudioCodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<summary>Audio codec used in HTML5 media.</summary>
</histogram>
<histogram name="Media.AudioCodecProfile.AAC" enum="AudioCodecProfile"
expires_after="2025-02-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Audio codec profile used in HTML5 media for AAC playback.</summary>
</histogram>
<histogram name="Media.AudioDeviceConnectionStatus.{AudioDeviceType}"
enum="AudioDeviceConnectionStatus" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records connection status changes for {AudioDeviceType} audio devices,
emitted when a device is connected or disconnected. Disconnection of
Bluetooth devices may be reported more than fifteen seconds after the device
is actually disconnected. If using a 3.5mm-to-USB adapter, a 3.5mm device
may be reported as USB.
</summary>
<token key="AudioDeviceType">
<variant name="Bluetooth"/>
<variant name="USB"/>
<variant name="Wired"/>
</token>
</histogram>
<histogram name="Media.AudioInputController" units="ms" expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Measures the time taken for AudioInputController::</summary>
</histogram>
<histogram name="Media.AudioInputDevice.AudioServiceDelay" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The audio capture delay in the Audio Service, including the IPC and the OS.
Logged at every CaptureCallback::Capture() call at AudioInputDevice level.
</summary>
</histogram>
<histogram name="Media.AudioInputDevice.AudioServiceGlitchCount{Duration}"
units="glitches" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of events causing audio capture glitches in the Audio Service,
including the IPC and the OS. A glitch is when capture data is dropped due
to a buffer overflow. Logged at the end of each 1000-callback interval for
Intervals. Logged at the end of the stream for Short.
</summary>
<token key="Duration" variants="AudioAggregationDuration"/>
</histogram>
<histogram name="Media.AudioInputDevice.AudioServiceGlitchDuration{Duration}"
units="permille" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The proportion of the audio capture interval that was dropped due to buffer
overflows in the Audio Service, including the IPC and the OS. Logged at the
end of each 1000-callback interval for Intervals. Logged at the end of the
stream for Short.
</summary>
<token key="Duration" variants="AudioAggregationDuration"/>
</histogram>
<histogram name="Media.AudioOutputController.CallbackError" enum="BooleanError"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A boolean that reflects whether or not an error was reported during audio
rendering, reported after a stream has stopped, if it was started.
</summary>
</histogram>
<histogram name="Media.AudioOutputController.LifeTime" units="ms"
expires_after="never">
<!-- expires-never: used for audio output controller monitoring. -->
<!-- https://crbug.com/1036864 -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time interval from the output stream controller construction to its
destruction.
</summary>
</histogram>
<histogram name="Media.AudioOutputController.ProxyStreamCreationResult"
enum="AudioOutputStreamCreationResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether an AudioOutputController succeeded in creating and opening an output
stream proxy after receiving a default device change event. Note: in
September 2021 this histogram unintentionally swapped its meaning with
Media.AudioOutputController.ProxyStreamCreationResultForDeviceChange.
</summary>
</histogram>
<histogram
name="Media.AudioOutputController.ProxyStreamCreationResultForDeviceChange"
enum="AudioOutputStreamCreationResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether an AudioOutputController succeeded in creating and opening an output
stream proxy. Only logged for the initial creation, subsequent re-creations
due to device change events are logged in the
Media.AudioOutputController.ProxyStreamCreationResult histogram. Note: in
September 2021 this histogram unintentionally swapped its meaning with
Media.AudioOutputController.ProxyStreamCreationResult.
</summary>
</histogram>
<histogram name="Media.AudioOutputControllerDataNotReady" units="ms"
expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent waiting in AudioOutputController::WaitTillDataReady() if the data
was not initially available.
</summary>
</histogram>
<histogram name="Media.AudioOutputControllerPlaybackStartupSuccess"
enum="BooleanSuccess" expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether playback started successfully after stream startup was requested.
</summary>
</histogram>
<histogram name="Media.AudioOutputDevice.AudioServiceDelay{LatencyTag}"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The audio playout delay in the Audio Service, including the IPC and the OS.
Logged at every RenderCallback::Render() call at AudioPlayoutDevice level.
</summary>
<token key="LatencyTag" variants="AudioLatencyTag"/>
</histogram>
<histogram
name="Media.AudioOutputDevice.AudioServiceGlitchCount{Duration}{LatencyTag}"
units="glitches" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of events causing audio playout glitches in the Audio Service,
including the IPC and the OS. A glitch is an inserted silence due to an
underrun. Logged at the end of each 1000-callback interval for Intervals.
Logged at the end of the stream for Short.
</summary>
<token key="Duration" variants="AudioAggregationDuration"/>
<token key="LatencyTag" variants="AudioLatencyTag"/>
</histogram>
<histogram
name="Media.AudioOutputDevice.AudioServiceGlitchDuration{Duration}{LatencyTag}"
units="permille" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The proportion of the audio playout interval that was silent due to
underruns in the Audio Service, including the IPC and the OS. Logged at the
end of each 1000-callback interval for Intervals. Logged at the end of the
stream for Short.
</summary>
<token key="Duration" variants="AudioAggregationDuration"/>
<token key="LatencyTag" variants="AudioLatencyTag"/>
</histogram>
<histogram name="Media.AudioOutputResampler.OpenLowLatencyStream2"
enum="AudioOutputResamplerLowLatencyOpenStreamResult"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a low latency stream to be rendered through the resampler was opened
successfully or which type of fallback stream was used instead. In case a
fake fallback stream is used it means audio rendered through the resampler
will be muted. In case fallback fails entirely, renderer callback error will
be signalled. In case audio output stream is opened in offload mode, record
successful opening in offload mode explicitly to distinguish from
non-offload mode.
</summary>
</histogram>
<histogram name="Media.AudioOutputStreamProxy.StreamFormat"
enum="AudioOutputProxyStreamFormat" expires_after="2025-10-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records format used by AudioManager to create audio output stream proxy. If
a fake stream is created it results in muted audio playback.
</summary>
</histogram>
<histogram name="Media.AudioRendererAudioGlitches2.{LatencyTag}"
enum="AudioGlitchResult" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Captures if render-side audio glitches are detected or not. Sampled when a
low-latency output audio stream is destructed.
</summary>
<token key="LatencyTag">
<variant name="" summary="All latencies combined"/>
<variant name="LatencyExactMs"/>
<variant name="LatencyInteractive"/>
<variant name="LatencyPlayback"/>
<variant name="LatencyRtc"/>
<variant name="LatencyUnknown"/>
</token>
</histogram>
<histogram name="Media.AudioRendererImpl.SinkStatus" enum="OutputDeviceStatus"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Status of audio sink used by AudioRendererImpl. If not OK, a NullAudioSink
will be used for audio output instead. This is logged for every call to
AudioRendererImpl::Initialize, which generally occurs once per active audio
session (i.e., between a play and pause). If audio track changes are ever
enabled, it may additionally be called for every audio track change.
</summary>
</histogram>
<histogram
name="Media.AudioRendererMissedDeadline3{Mixing}{Duration}{LatencyTag}"
units="misses" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of SyncReader::Read() calls where the renderer missed its
realtime deadline. Logged at the end of each 1000-read interval for
Intervals. Logged at the end of the stream for Short.
</summary>
<token key="Mixing">
<variant name="" summary="Whole stream lifetime"/>
<variant name=".Mixing" summary="During mixing"/>
</token>
<token key="Duration">
<variant name=".Intervals" summary="Whole intervals of 1000 reads"/>
<variant name=".Short" summary="Streams shorter than 1000 reads"/>
</token>
<token key="LatencyTag">
<variant name="" summary="All latencies combined"/>
<variant name=".LatencyExactMs"/>
<variant name=".LatencyInteractive"/>
<variant name=".LatencyPlayback"/>
<variant name=".LatencyRtc"/>
<variant name=".LatencyUnknown"/>
</token>
</histogram>
<histogram name="Media.AudioService.AudioManagerStartupTime" units="ms"
expires_after="2025-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
How long it take for the audio manager instance to be created by the audio
service, in case the audio service owns the audio manager.
</summary>
</histogram>
<histogram name="Media.AudioSystem.GetDeviceDescription.Result"
enum="BooleanSuccess" expires_after="2024-03-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether AudioSystemToServiceAdapter::GetDeviceDescriptions calls to
the audio service returned successfully, or failed and retured an default
empty list due to an audio service crash.
</summary>
</histogram>
<histogram name="Media.AudioThreadStatus" enum="AudioThreadStatus"
expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
State of the audio thread. A value of "started" is emitted once
the hang monitor has been initialized. If the thread is detected as hung
later, a value of "hung" is emitted. If the hung thread later
recovers a value of "recovered" is emitted.
</summary>
</histogram>
<histogram name="Media.AutoPictureInPicture.PromptResultV2"
enum="MediaAutoPictureInPicturePromptResult" expires_after="2025-04-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the user either selects an option from the Automatic
picture-in-picture permission prompt, or when the user manually closes the
picture-in-picture window without responding to the prompt, or when we
decide to not show the prompt at all. When the prompt is shown, this records
their selection (or "Ignored" if they did not select an option).
When the prompt is not shown, records why it was not shown.
</summary>
</histogram>
<histogram name="Media.AVDA.FrameInformation" enum="AVDAFrameInformation"
expires_after="2020-09-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record a count for each frame sent to the client by AVDA, separated by what
type of frame it is: Non Overlay, secure overlay, etc.
</summary>
</histogram>
<histogram name="Media.AVDA.FrameSentAsOverlay" enum="BooleanFrameAsOverlay"
expires_after="M86">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record a count for each frame sent to the client by AVDA. True counts
indicate that the frame was an overlay (SurfaceView). False counts are for
Non Overlay frames. This will be deprecated in favor of
Media.AVDA.FrameInformation in M63.
</summary>
</histogram>
<histogram name="Media.BreakoutBox.Usage" enum="BreakoutBoxUsage"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Usage of various BreakoutBox features. Recorded when a stream is created or
transferred in MediaStreamTrackProcessor or MediaStreamTrackGenerator.
</summary>
</histogram>
<histogram name="Media.Capabilities.DecodingInfo.Time.Video" units="ms"
expires_after="never">
<!-- expires-never: performance monitoring. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent between receiving a decodingInfo() call and resolving it. It only
record successful calls and ignores audio-only.
</summary>
</histogram>
<histogram name="Media.Capabilities.DecodingInfo.Time.Video.Clear" units="ms"
expires_after="never">
<!-- expires-never: performance monitoring. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent between receiving a decodingInfo() call and resolving it. It only
record successful calls and ignores audio-only. This is a subset of
Media.Capabilities.DecodingInfo.RequestTime.Video that only takes into
account clear content.
</summary>
</histogram>
<histogram name="Media.Capabilities.DecodingInfo.Time.Video.Encrypted"
units="ms" expires_after="never">
<!-- expires-never: performance monitoring. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time spent between receiving a decodingInfo() call and resolving it. It only
record successful calls and ignores audio-only. This is a subset of
Media.Capabilities.DecodingInfo.RequestTime.Video that only takes into
account encrypted content.
</summary>
</histogram>
<histogram name="Media.ConditionalFocus.Decision"
enum="ConditionalFocusDecision" expires_after="2023-09-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records (1) explicit conditional-focus API invocations, (2) microtask-borne
decisions and (3) timer-triggered decisions.
</summary>
</histogram>
<histogram name="Media.ConditionalFocus.ExplicitLateCall" units="ms"
expires_after="2023-07-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the delay experienced by late explicit invocations of the focus()
API. By "late" we mean those calls which had no effect, on account
of arriving after the browser-side timer forced an implicit decision. (Note
that post-microtask explicit invocations are not recorded. They're simply an
application error.)
</summary>
</histogram>
<histogram name="Media.ConditionalFocus.ExplicitOnTimeCall" units="ms"
expires_after="2023-07-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the delay experienced by on-time explicit invocations of the focus()
API. By "on-time" we mean those calls which had an effect, on
account of arriving before either the microtask or the browser-side timer
forced an implicit decision.
</summary>
</histogram>
<histogram name="Media.ConditionalFocus.MicrotaskDelay" units="ms"
expires_after="2023-07-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Track the delay distribution of invocations of the microtask. Measure this
independently of whether an explicit API call was made, and independently of
whether the browser-side timer expired.
</summary>
</histogram>
<histogram name="Media.Controls.CTR" enum="MediaControlsCTREvent"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records events related to click through rate (CTR) calculation.
The CTR can be calculated by computing "Interacted" /
"Displayed". "Interacted", for buttons, means that they
were clicked. For sliders, it will reflect any change in the internal state
and includes other events in addition to clicks. "Displayed" means
that the control element was meant to be displayed in the controls. It does
not mean that the user have seen the element so is not to be confused with
visibility. Furthermore, because the controls UI changes while loading,
"Displayed" is only computed when metadata are available unless
preloading was disabled on the element or the browser.
Data is missing from 2020-04-05 to 2021-05-18.
</summary>
</histogram>
<histogram name="Media.Controls.OverlayCastButtonIsCovered" enum="Boolean"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how often the overlay cast button is hidden because it is covered by
another html element. Emitted when the overlay cast button is tried to be
shown.
</summary>
</histogram>
<histogram name="Media.Controls.PlaybackSpeed"
enum="MediaControlsPlaybackSpeed" expires_after="2023-11-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record the playback speed selected by the user in the list of playback
speeds on the media controls.
</summary>
</histogram>
<histogram name="Media.CrosBeamformingDeviceState"
enum="CrosBeamformingDeviceState" expires_after="M85">
<owner>[email protected]</owner>
<summary>
The state of the user selected virtual beamforming audio device on CrOS.
It's logged whenever the format of the audio input stream is queried, which
at least happens on stream startup, but could happen at other times as well.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.PinAction" enum="BooleanPinned"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record each time user pins/unpins CrOS global media controls. Warning: this
histogram was expired from 2022-04-24 to 2024-01-04; data may be missing.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.QuickSettingUserAction"
enum="MediaSessionAction" expires_after="2024-07-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The action user clicked on the media controls in quick settings. Warning:
this histogram was expired from 2022-04-24 to 2024-01-04; data may be
missing.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.RepeatUsageInQuickSetting"
enum="BooleanIsRepeat" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record each time media controls' sub-menu in quick settings is opened. True
if it is a repeat usage. Warning: this histogram was expired from 2022-05-01
to 2024-01-04; data may be missing.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.RepeatUsageOnShelf"
enum="BooleanIsRepeat" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record each time global media controls on the shelf is opened. True if it is
a repeat usage. Warning: this histogram was expired from 2022-04-24 to
2024-01-04; data may be missing.
</summary>
</histogram>
<histogram name="Media.D3D11.UnusedPictureBufferCount.MultiTexture"
units="instances" expires_after="2022-11-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram lets us count how many PictureBuffers we've overallocated
when we're allocating each texture separately. This case is relatively
simple to optimize compared to SingleTexture.
</summary>
</histogram>
<histogram name="Media.D3D11.UnusedPictureBufferCount.SingleTexture"
units="instances" expires_after="2022-11-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram lets us count how many PictureBuffers we've overallocated
when we're allocating in contiguous blocks. This case is harder to optimize
than the MultiTexture variant, but it is good to know the proportion of the
two of them to determine usage.
</summary>
</histogram>
<histogram name="Media.DetectedAudioCodecHash" enum="FFmpegCodecHashes"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Audio codec used in HTML5 media. Reporting corrected in M51 to include all
detected audio codecs, not just those up to and including the first one
supported.
</summary>
</histogram>
<histogram name="Media.DetectedAudioCodecHash.Local" enum="FFmpegCodecHashes"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Audio codec used in HTML5 media for a local file playback.</summary>
</histogram>
<histogram name="Media.DetectedContainer" enum="MediaContainers"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Container used for HTML5 media. Views that include pre-M34 data will
categorize dash (38) and smooth streaming (39) in the "Other"
bucket.
</summary>
</histogram>
<histogram name="Media.DetectedContainer.Local" enum="MediaContainers"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Container used for HTML5 media for a local file playback.</summary>
</histogram>
<histogram name="Media.DetectedVideoCodecHash" enum="FFmpegCodecHashes"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in HTML5 media. Reporting corrected in M51 to include all
detected video codecs, not just those up to and including the first one
supported.
</summary>
</histogram>
<histogram name="Media.DetectedVideoCodecHash.Local" enum="FFmpegCodecHashes"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video codec used in HTML5 media for a local file playback.</summary>
</histogram>
<histogram name="Media.DocumentPictureInPicture.CloseReason"
enum="DocumentPictureInPictureCloseReason" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the reason why a document picture-in-picture window is closed (e.g.
the user clicking on the Back to Tab button). Recorded on destruction of the
picture-in-picture window.
</summary>
</histogram>
<histogram name="Media.DocumentPictureInPicture.RequestedInitialHeight"
units="px" expires_after="2025-03-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the height that the website has requested for a document
picture-in-picture window. Recorded when calculating the initial bounds of a
newly-opened document picture-in-picture window.
</summary>
</histogram>
<histogram name="Media.DocumentPictureInPicture.RequestedInitialWidth"
units="px" expires_after="2025-03-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the width that the website has requested for a document
picture-in-picture window. Recorded when calculating the initial bounds of a
newly-opened document picture-in-picture window. If the website requests a
size larger than the area of the screen, it will be recorded as 100%. If a
website does not request a size or requests a size of zero, it is recorded
as 1%.
</summary>
</histogram>
<histogram name="Media.DocumentPictureInPicture.RequestedSizeToScreenRatio"
units="%" expires_after="2025-03-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the ratio of the total screen area that the website has requested
for the picture-in-picture window, specifically the requested width times
the requested height as a ratio of the screen's width times height. Recorded
when calculating the initial bounds of a newly-opened document
picture-in-picture window.
</summary>
</histogram>
<histogram name="Media.DroppedFrameCount" units="units" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of dropped frames between pipeline start and stop. Media pipeline
starts/stops when an HTML5 video is loaded/unloaded respectively in the
browser.
</summary>
</histogram>
<histogram name="Media.DroppedFrameCount2.{RendererType}.{ClearOrEncrypted}"
units="units" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Monitors the DroppedFrameCount that is originated from a {RendererType} and
the video playback is {ClearOrEncrypted}. It is the count of dropped video
frames when an HTML5 video is unloaded.
</summary>
<token key="RendererType" variants="RendererType"/>
<token key="ClearOrEncrypted">
<variant name="Clear"/>
<variant name="Encrypted"/>
</token>
</histogram>
<histogram name="Media.ElementCapture.ProduceTarget.Function.Result"
enum="ProduceTargetFunctionResult" expires_after="2024-08-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the result of calls to RestrictionTarget.fromElement(). Specifically,
this histogram tracks whether a new Promise was produced, and if not, why
not. Another histogram tracks the result of new Promises, i.e. whether they
were resolved or rejected.
</summary>
</histogram>
<histogram name="Media.ElementCapture.ProduceTarget.Promise.Result"
enum="ProduceTargetPromiseResult" expires_after="2024-08-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When RestrictionTarget.fromElement() is called for the first time on a given
Element, a new Promise is produced. This histogram tracks the result of this
Promise - whether it was resolved or rejected.
</summary>
</histogram>
<histogram name="Media.ElementCapture.RestrictTo.Latency" units="ms"
expires_after="2024-09-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds of the time it takes for a
BrowserCaptureMediaStreamTrack.restrictTo() call to resolve (either
successfully or with an error). Note a call which never resolves won't be
counted in this metric.
</summary>
</histogram>
<histogram name="Media.ElementCapture.RestrictTo.Result"
enum="ApplySubCaptureTargetResult" expires_after="2024-09-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the result of calls to BrowserCaptureMediaStreamTrack.restrictTo().
Recorded when resolving the promise produced by restrictTo().
</summary>
</histogram>
<histogram name="Media.EME.CdmFileIO.FileSizeKBOnError" units="KB"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Size in KB of the last file successfully read by the CDM through CDM FileIO
before a specific error happens. This is reported only when the error
happens, which should be rare.
</summary>
</histogram>
<histogram name="Media.EME.CdmFileIO.FileSizeKBOnFirstRead" units="KB"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Size in KB of the first file successfully read by the CDM through CDM
FileIO. This is recorded once per CDM instance.
</summary>
</histogram>
<histogram name="Media.EME.CdmFileIO.TimeTo.{FileOperation}{IncognitoOrNormal}"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The actual time spent by the CDM FileIO {FileOperation} operation under
{IncognitoOrNormal} mode. Only recorded for successful operations.
</summary>
<token key="FileOperation" variants="FileOperation"/>
<token key="IncognitoOrNormal" variants="IncognitoOrNormal"/>
</histogram>
<histogram name="Media.EME.CdmFileIO.WriteFile.DataSizeKB" units="KB"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Size in KB of a file written by the CDM through CDM FileIO. This is recorded
once per write through the CDM.
</summary>
</histogram>
<histogram name="Media.EME.CdmFileIO.{FileOperation}{IncognitoOrNormal}"
enum="BooleanSuccess" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a CDM FileIO {FileOperation} operation succeded or not under
{IncognitoOrNormal} mode.
</summary>
<token key="FileOperation" variants="FileOperation"/>
<token key="IncognitoOrNormal" variants="IncognitoOrNormal"/>
</histogram>
<histogram name="Media.EME.CdmFileIO::OpenFile" enum="CdmStorageStatus"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of file open received by MojoCdmFileIO. This is reported every
time the CDM tries to open a file for read or write.
</summary>
</histogram>
<histogram name="Media.EME.CdmHostVerificationStatus"
enum="CdmHostVerificationStatus" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of CDM host verification. This is reported per CDM load.
</summary>
</histogram>
<histogram name="Media.EME.CdmInterfaceVersion" enum="GenericEnum"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Chromium could support multiple versions of CDM interface. This metric
records the CDM interface version that the CDM created by Chromium uses.
This is recorded once per CDM instance.
</summary>
</histogram>
<histogram name="Media.EME.CdmLoadErrorCode" enum="WinGetLastError"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error code of a library CDM load failure. Only reported on Windows.
</summary>
</histogram>
<histogram name="Media.EME.CdmLoadResult" enum="CdmLoadResult"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The result from an attempt to load a library CDM.</summary>
</histogram>
<histogram name="Media.EME.CdmLoadTime" units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The time spent to load a library CDM.</summary>
</histogram>
<histogram name="Media.EME.CdmStorageDatabase.IncompatibleDatabaseDetected"
enum="Boolean" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records when the CdmStorageDatabase for a profile is incompatible.
This UMA is recorded on every OpenDatabase call that detects the database
with a version number of one, which means that it is operating under a
schema that does not include file_size and last_modified.
</summary>
</histogram>
<histogram name="Media.EME.CdmStorageDatabase.WriteFileForBigData"
enum="Boolean" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records when the data being written to the CdmStorageDatabase
exceeds 15 KB. This UMA is recorded on every write over 15KB that succeeds.
</summary>
</histogram>
<histogram name="Media.EME.CdmStorageDatabaseSQLiteError"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SQLite specific errors reported while using the Cdm Storage Database.
Recorded on any error from a database operation.
</summary>
</histogram>
<histogram
name="Media.EME.CdmStorageDatabaseSQLiteError.{CdmDatabaseOperation}"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when executing the
operation {CdmDatabaseOperation}. This UMA is recorded on every error for
this operation.
</summary>
<token key="CdmDatabaseOperation">
<variant name="AlterDatabaseForFileSize"/>
<variant name="AlterDatabaseForLastModified"/>
<variant name="ClearDatabase"/>
<variant name="DeleteFile"/>
<variant name="DeleteForStorageKey"/>
<variant name="DeleteForTimeFrame"/>
<variant name="DeleteIfEmptyDatabase"/>
<variant name="GetSizeForFile"/>
<variant name="GetSizeForStorageKey"/>
<variant name="GetSizeForTimeFrame"/>
<variant name="OpenDatabase"/>
<variant name="ReadFile"/>
<variant name="WriteFile"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageDatabaseSQLiteError.{CdmDatabaseOperation}.{SqliteError}.Errno"
units="errno" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records the errno that occur when executing the operation
{CdmDatabaseOperation} and getting a specific {SqliteError}. This UMA is
recorded every time this operation errors with the specific {SqliteError}.
</summary>
<token key="CdmDatabaseOperation">
<variant name="AlterDatabaseForFileSize"/>
<variant name="AlterDatabaseForLastModified"/>
<variant name="ClearDatabase"/>
<variant name="DeleteFile"/>
<variant name="DeleteForStorageKey"/>
<variant name="DeleteForTimeFrame"/>
<variant name="DeleteIfEmptyDatabase"/>
<variant name="GetSizeForFile"/>
<variant name="GetSizeForStorageKey"/>
<variant name="GetSizeForTimeFrame"/>
<variant name="OpenDatabase"/>
<variant name="ReadFile"/>
<variant name="WriteFile"/>
</token>
<token key="SqliteError">
<variant name="Busy"/>
<variant name="CantOpen"/>
<variant name="FullDisk"/>
<variant name="Generic"/>
<variant name="IoTruncate"/>
</token>
</histogram>
<histogram name="Media.EME.CdmStorageManager.DatabaseOpenError"
enum="CdmStorageOpenError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from opening the CdmStorageDatabase.
Recorded on every open.
</summary>
</histogram>
<histogram name="Media.EME.CdmStorageManager.DatabaseOpenError.{ProfileType}"
enum="CdmStorageOpenError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from opening the CdmStorageDatabase.
Recorded on every open from an {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DatabaseOpenError.{ProfileType}.Migration"
enum="CdmStorageOpenError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from opening the CdmStorageDatabase.
Recorded on every open from an {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Media.EME.CdmStorageManager.DeleteFileError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteFile function. Recorded
after every call of DeleteFile on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DeleteFileError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteFile function. Recorded
after every call of DeleteFile on {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DeleteForStorageKeyError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForStorageKey function.
Recorded after every call of DeleteForStorageKey on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DeleteForStorageKeyError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForStorageKey function.
Recorded after every call of DeleteForStorageKey on {ProfileType} profile
when 'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DeleteForTimeFrameError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForTimeFrame function.
Recorded after every call of DeleteForTimeFrame on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.DeleteForTimeFrameError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForTimeFrame function.
Recorded after every call of DeleteForTimeFrame on {ProfileType} profile
when 'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Media.EME.CdmStorageManager.GetSizeForFileError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForFile function. Recorded
after every call of GetSizeForFile on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.GetSizeForFileError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForFile function. Recorded
after every call of GetSizeForFile on {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.GetSizeForStorageKeyError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForStorageKey function.
Recorded after every call of GetSizeForStorageKey on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.GetSizeForStorageKeyError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForStorageKey function.
Recorded after every call of GetSizeForStorageKey on {ProfileType} profile
when 'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.GetSizeForTimeFrameError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForTimeFrame function.
Recorded after every call of GetSizeForTimeFrame on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.GetSizeForTimeFrameError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the GetSizeForTimeFrame function.
Recorded after every call of GetSizeForTimeFrame on {ProfileType} profile
when 'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.kDeleteForFilterError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForFilter function.
Recorded after every call of DeleteForFilter on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.kDeleteForFilterError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the DeleteForFilter function.
Recorded after every call of DeleteForFilter on {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Media.EME.CdmStorageManager.ReadFileError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the ReadFile function. Recorded after
every call of ReadFile on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.ReadFileError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the ReadFile function. Recorded after
every call of ReadFile on {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Media.EME.CdmStorageManager.WriteFileError.{ProfileType}"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the WriteFile function. Recorded
after every call of WriteFile on {ProfileType} profile.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram
name="Media.EME.CdmStorageManager.WriteFileError.{ProfileType}.Migration"
enum="BooleanError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA logs overall error rates from the WriteFile function. Recorded
after every call of WriteFile on {ProfileType} profile when
'kCdmStorageDatabaseMigration' is enabled.
</summary>
<token key="ProfileType">
<variant name="Incognito"/>
<variant name="NonIncognito"/>
</token>
</histogram>
<histogram name="Media.EME.CrosCdmType" enum="CrosCdmType"
expires_after="2024-05-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether we used the platform CDM on Chrome OS that includes HW secure
Widevine support, or fell back to the Chrome SW CDM.
</summary>
</histogram>
<histogram name="Media.EME.CrosPlatformCdm.SystemCode" enum="CdmSystemCode"
expires_after="2024-01-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>System code in promise rejection for ChromeOS platform CDM.</summary>
</histogram>
<histogram name="Media.EME.EncryptedEvent" enum="BooleanEncryptedEvent"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether EME encrypted event has been fired. Every time a WebMediaPlayerImpl
object is created a "false" value is reported to provide a
baseline. Every time an encrypted event is fired, a "true" value
will be reported. Note that it is possible to have multiple encrypted events
during the lifetime of a WebMediaPlayerImpl object.
</summary>
</histogram>
<histogram name="Media.EME.EncryptedMediaEnabled" enum="BooleanEnabled"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether encrypted media is enabled when requestMediaKeySystemAccess() is
called. User can enable and disable encrypted media in content settings.
Recorded when requestMediaKeySystemAccess() is called but will be reported
at most once per renderer process.
</summary>
</histogram>
<histogram name="Media.EME.EncryptionScheme.Initial.Audio"
enum="MediaEncryptionScheme" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The encryption scheme used by the audio stream in an HTML5 video. Reported
when metadata is available if the initial config is encrypted.
</summary>
</histogram>
<histogram name="Media.EME.EncryptionScheme.Initial.Video"
enum="MediaEncryptionScheme" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The encryption scheme used by the video stream in an HTML5 video. Reported
when metadata is available if the initial config is encrypted.
</summary>
</histogram>
<histogram name="Media.EME.IsIncognito" enum="BooleanIncognito"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a given WebMediaPlayer instance, with a CDM attached, is played in
an incognito window or in Chrome OS guest mode. Players that never started
playback are excluded. Recorded once at time of player destruction.
</summary>
</histogram>
<histogram name="Media.EME.MediaCryptoAvailable" enum="BooleanAvailable"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether MediaCrypto is available on a MediaDrm-based CDM. Reported once per
MediaDrmBridge creation. In normal cases it should always be available.
</summary>
</histogram>
<histogram name="Media.EME.MediaDrm.GetOriginIdResult" enum="GetOriginIdResult"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of every attempt to obtain a pre-provisioned origin ID to be used
by MediaDrm. This will only be reported for applications that use
MediaDrmOriginIdManager.
</summary>
</histogram>
<histogram
name="Media.EME.MediaDrm.PreprovisionedOriginId.NonPerAppProvisioningDevice"
units="units" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of pre-provisioned origin IDs available shortly after startup on
devices that do not support per-application provisioning.
</summary>
</histogram>
<histogram
name="Media.EME.MediaDrm.PreprovisionedOriginId.PerAppProvisioningDevice"
units="units" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of pre-provisioned origin IDs available shortly after startup on
devices that support per-application provisioning.
</summary>
</histogram>
<histogram name="Media.EME.MediaDrm.Provisioning"
enum="MediaDrmProvisioningResult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result of trying to provision an origin using MediaDrm. Called every time
provisioning is attempted, once per origin.
</summary>
</histogram>
<histogram name="Media.EME.MediaDrmBridge.KeySystemSupport"
enum="BooleanSupported" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether MediaDrmBridge supports the key system. Reported once per
MediaDrmBridge creation. In normal cases it should always be supported.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationCdm.ActivateCdmFactory"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULT of MediaFoundationCdmModule::ActivateCdmFactory(). This is only
reported when ActivateCdmFactory() fails.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationCdm.LoadErrorCode"
enum="WinGetLastError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The error code of a library CDM load failure. Only reported on Windows.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationCdm.LoadResult" enum="CdmLoadResult"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result from an attempt to load a library MediaFoundation CDM.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationCdm.LoadTime" units="ms"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The time spent to load a library MediaFoundation CDM.</summary>
</histogram>
<histogram
name="Media.EME.MediaFoundationCdm.Widevine.HardwareSecure.FirstInitialize"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULT of the first (and only the first) MediaFoundationCdm initialization
in a MeidaFoundationService process when using Widevine in hardware secure
mode. Reported on both successes and failures.
</summary>
</histogram>
<histogram
name="Media.EME.MediaFoundationCdm.Widevine.HardwareSecure.Initialize"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULT of MediaFoundationCdm initialization when using Widevine in hardware
secure mode. Only reported on failures.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationCdm.Widevine.HardwareSecure.{EmeApi}"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULT of MediaFoundationCdm and MediaFoundationCdmSession operations when
using Widevine in hardware secure mode.
</summary>
<token key="EmeApi" variants="EmeApi"/>
</histogram>
<histogram name="Media.EME.MediaFoundationService.Crash2"
enum="BooleanAfterPowerOrDisplayChange" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a MediaFoundationService process crash is within 5 seconds after
power or display change. Reported when the MediaFoundationService process
crashes.
</summary>
</histogram>
<histogram
name="Media.EME.MediaFoundationService.ErrorAfterPowerOrDisplayChange2"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULTs associated with errors happened in the MediaFoundationService
process within 5 seconds after power or display change.
</summary>
</histogram>
<histogram
name="Media.EME.MediaFoundationService.ErrorNotAfterPowerOrDisplayChange2"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
HRESULTs associated with errors happened in the MediaFoundationService
process NOT within 2 seconds after power or display change.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationService.HardwareContextReset"
enum="BooleanAfterPowerOrDisplayChange" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a HardwareContextReset event happened in the MediaFoundationService
process within 5 seconds after power or display change. Reported whenever
such an event happens.
</summary>
</histogram>
<histogram name="Media.EME.MediaFoundationService.IsKeySystemSupported"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time for MediaFoundationService.IsKeySystemSupported() to finish. Reported
once per browser session lifetime.
</summary>
</histogram>
<histogram
name="Media.EME.MediaFoundationService.Widevine.HardwareSecure.IsTypeSupported"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time for IMFContentDecryptionModuleFactory::IsTypeSupported() to finish in
MediaFoundationService when using Widevine in hardware secure mode, which
are called by MediaFoundationService.IsKeySystemSupported() (called once per
browser session lifetime). IsKeySystemSupported() calls IsTypeSupported()
multiple times, for different audio/video codecs and encryption schemes.
</summary>
</histogram>
<histogram
name="Media.EME.MediaLicenseDatabase.WriteFile.FullDiskDataSizeBytes"
units="bytes" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records the bytes of the data that fail to be written to the
MediaLicenseDatabase during a full disk error. This histogram is logged when
a write fails with a full disk error.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseCreateDirectoryError"
enum="PlatformFileError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Platform File specific errors reported while attempting to open the Media
License Database.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseOpenQuotaError"
enum="QuotaError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Quota errors reported while attempting to unsuccessfully open the Media
License Database.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseOpenSQLiteError"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SQLite specific errors reported while attempting to unsuccessfully open the
Media License Database.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SQLite specific errors reported while opening and using the Media License
Database.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError.DeleteFile"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when deleting a file from
the Media License Database. This UMA is recorded on every error for this
operation.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError.QueryPageCount"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when querying for
page_count from the Media License Database. This UMA is recorded on every
error for this operation.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError.QueryPageSize"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when querying for page
size from the Media License Database. This UMA is recorded on every error
for this operation.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError.ReadFile"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when reading a file from
the Media License Database. This UMA is recorded on every error for this
operation.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseDatabaseSQLiteError.WriteFile"
enum="SqliteLoggedResultCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records SQLite specific errors that occur when writing a file to
the Media License Database. This UMA is recorded on every error for this
operation.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseStorageHost.CurrentDatabaseUsageKB"
units="KB" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This UMA records the current MediaLicenseDatabase size in KB. This UMA is
recorded only once, on the first read, to retrieve usage levels of the
MediaLicenseDatabase.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseStorageHostOpenError.Incognito"
enum="MediaLicenseStorageHostOpenError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
General errors reported while attempting to open the MediaLicenseDatabase.
This UMA further breaks down the UMA above by only reporting errors if the
media license storage host error occurs during an incognito process.
</summary>
</histogram>
<histogram name="Media.EME.MediaLicenseStorageHostOpenError.NotIncognito"
enum="MediaLicenseStorageHostOpenError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
General errors reported while attempting to open the MediaLicenseDatabase.
This UMA further breaks down the UMA above by only reporting errors if the
media license storage host error occurs during a non incognito process.
</summary>
</histogram>
<histogram name="Media.EME.MojoCdm.ConnectionError"
enum="BooleanConnectionError" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether connection error has happened for MojoCdm. Every time a MojoCdm
object is created a "false" value is reported to provide a
baseline. Every time a mojo connection error happened, a "true"
value will be reported, which typically means a remote CDM process crash.
</summary>
</histogram>
<histogram name="Media.EME.OutputProtection" enum="MediaOutputProtectionStatus"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Output protection query status and result. One query and one positive (no
unprotected external links) result (if any) are reported per CDM instance.
</summary>
</histogram>
<histogram name="Media.EME.OutputProtection.PlatformCdm"
enum="MediaOutputProtectionStatus" expires_after="2022-01-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Output protection query status and result. One query and one positive (no
unprotected external links) result (if any) are reported per CDM instance.
</summary>
</histogram>
<histogram name="Media.EME.RequestMediaKeySystemAccess.{KeySystem}"
enum="RequestMediaKeySystemAccessStatus" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
{KeySystem} support query status and result, as reported by
RequestMediaKeySystemAccess. Each value will be reported at most once per
frame.
</summary>
<token key="KeySystem" variants="KeySystem"/>
</histogram>
<histogram
name="Media.EME.RequestMediaKeySystemAccess.{KeySystem}.TimeTo.Reject"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent to reject RequestMediaKeySystemAccess() for {KeySystem}. Each
time will be reported at most once per process. Only one of TimeTo.Resolve
or TimeTo.Reject will be reported at most once per process for a
{KeySystem}.
</summary>
<token key="KeySystem" variants="KeySystem"/>
</histogram>
<histogram
name="Media.EME.RequestMediaKeySystemAccess.{KeySystem}.TimeTo.Resolve"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time spent to resolve RequestMediaKeySystemAccess() for {KeySystem}.
Each time will be reported at most once per process. Only one of
TimeTo.Resolve or TimeTo.Reject will be reported at most once per process
for a {KeySystem}.
</summary>
<token key="KeySystem" variants="KeySystem"/>
</histogram>
<histogram name="Media.EME.UrlProvisionFetcher.ResponseCode"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The net error or HTTP response code of provisioning requests made by
UrlProvisionFetcher on Android and Cast devices.
</summary>
</histogram>
<histogram name="Media.EME.Widevine.HardwareSecure.CdmInfoStatus"
enum="CdmInfoStatus" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The CdmInfo::Status of Widevine hardware secure CDM capability. Reported at
most once per browser session when EME query is triggered by a website.
</summary>
</histogram>
<histogram
name="Media.EME.Widevine.HardwareSecure.ClearLeadSupport.{VideoCodec}"
enum="BooleanSupported" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record for whether clear lead content is supported by the platform for
hardware security. This is reported only on Windows devices, only when codec
is supported for hardware security, per codec, and once per browser session
lifetime.
</summary>
<token key="VideoCodec" variants="VideoCodec"/>
</histogram>
<histogram name="Media.EME.Widevine.HardwareSecure.Pref" enum="BooleanEnabled"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether Media Foundation Widevine CDM is enabled or disabled based on
previous disabled timestamps in "Local State" pref. This is
reported once per browsing session around browser startup time if Media
Foundation Widevine CDM is enabled and available.
</summary>
</histogram>
<histogram name="Media.EME.Widevine.HardwareSecure.Support"
enum="BooleanSupported" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When hardware secure decryption is enabled, whether Widevine hardware secure
decryption is actually supported by the platform (device). Reported at most
once per browser session when EME query is triggered by a website, and when
Widevine hardware secure CDM was registered.
</summary>
</histogram>
<histogram name="Media.EME.Widevine.HardwareSecure.Support.{VideoCodec}"
enum="BooleanSupported" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When hardware secure decryption is enabled and supported by Widevine,
whether {VideoCodec} video codec is supported by the platform (device).
Reported at most once per browser session when EME query is triggered by a
website, and when Widevine hardware secure CDM was registered.
</summary>
<token key="VideoCodec" variants="VideoCodec"/>
</histogram>
<histogram name="Media.EME.Widevine.LacrosBundledCdm"
enum="LacrosBundledWidevine" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports which Widevine CDM was used by Lacros. Only reported by the browser
process when registering available CDMs during startup.
</summary>
</histogram>
<histogram name="Media.EME.Widevine.SoftwareSecure.SystemCode"
enum="CdmSystemCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
System code in promise rejection when using Widevine key system in software
secure mode.
</summary>
</histogram>
<histogram name="Media.EME.Widevine.VideoCapability.HasEmptyRobustness"
enum="BooleanEmpty" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the robustness level of any video capability in the supported
configuration passed into requestMediaKeySystemAccess() is empty. This is
specific to the Widevine key system.
</summary>
</histogram>
<histogram name="Media.EME.{KeySystem}.CreateCdm" enum="BooleanSuccess"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the CDM instance is created successfully for {KeySystem}. Reported
each time a CDM instance creation is attempted, usually as a result of
Javascript call of createMediaKeys().
</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.CreateCdmStatus" enum="CreateCdmStatus"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status when creating a CDM instance for {KeySystem}. Reported each time
a CDM instance creation is attempted, usually as a result of Javascript call
of createMediaKeys().
</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.CreateCdmTime" units="ms"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Time took to create the CDM instance for {KeySystem}.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.CreateSession.SessionType"
enum="EmeSessionType" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>EME session type passed into CreateSession.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.GenerateRequest.MojoCdmTimeout"
enum="CallbackTimeoutStatus" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The timeout status of MojoCdm::CreateSessionAndGenerateRequest() call.
</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.InitialKeyStatusMix"
enum="CdmKeyStatusMix" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports a summary of key statuses associated with an EME CDM session.
Reported once per EME CDM session on the first key statuses update.
</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.KeyStatusSystemCode"
enum="CdmSystemCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>System code associated with key status for {KeySystem}.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.LibraryCdmAvailable"
enum="BooleanAvailable" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the CDM is available for {KeySystem} or not. In normal cases, this
is reported once per render process if the EME API is used. In rare cases it
could be reported more than once if the CDM is not available and then is
component updated.
</summary>
<token key="KeySystem" variants="KeySystem"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.TimeTo{ResolveOrReject}.{EmeApi}"
units="ms" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The time it takes to {ResolveOrReject} a EME promise.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
<token key="ResolveOrReject" variants="ResolveOrReject"/>
<token key="EmeApi" variants="EmeApi"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.WaitingForKey" enum="Boolean"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reports whether a playback with a CDM attached has been blocked waiting for
the CDM to be set or waiting for decryption key. Reported once per playback
when a CDM attached.
</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.{EmeApi}" enum="CdmPromiseResult"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Result of EME promises that were handled by Chromium code.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
<token key="EmeApi" variants="EmeApi"/>
</histogram>
<histogram name="Media.EME.{KeySystem}.{EmeApi}.SystemCode"
enum="CdmSystemCode" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>System code in promise rejection.</summary>
<token key="KeySystem" variants="KeySystemWithRobustness"/>
<token key="EmeApi" variants="EmeApi"/>
</histogram>
<histogram name="Media.FallbackToHighLatencyAudioPath2"
enum="BooleanDidFallBack" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether Chrome had to fallback to the high latency audio path or not. The
fallback might be from either low latency offload path, or from low latency
non-offload path.
</summary>
</histogram>
<histogram name="Media.FrameInfo.GuessedCodedSizeChangeSuccess"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates if the guessed coded size matched the real coded size. Recorded on
each resolution change where we had to guess a coded size.
</summary>
</histogram>
<histogram name="Media.FrameInfo.GuessedInitialCodedSizeSuccess"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates if the guessed coded size would have matched the real coded size.
Recorded on acquisition of real coded size for the first frame of playback.
</summary>
</histogram>
<histogram name="Media.FrameReadBackCount.{RendererType}" units="frames"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Monitors the number of video frames being read back from a {RendererType}.
It is the count of video frames being read back from an HTML5 video when it
is unloaded.
</summary>
<token key="RendererType" variants="RendererType"/>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.DisplaySurface"
enum="GetDisplayMediaConstraintsDisplaySurface" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the displaySurface
constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.MonitorTypeSurfaces"
enum="GetDisplayMediaIncludeExcludeConstraint" expires_after="2024-09-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the monitorTypeSurfaces
constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.SelfBrowserSurface"
enum="GetDisplayMediaIncludeExcludeConstraint" expires_after="2023-05-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the selfBrowserSurface
constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.SuppressLocalAudioPlayback"
enum="GetDisplayMediaBooleanConstraint" expires_after="2023-05-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the
suppressLocalAudioPlayback constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.SurfaceSwitching"
enum="GetDisplayMediaIncludeExcludeConstraint" expires_after="2023-05-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the surfaceSwitching
constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.Constraints.SystemAudio"
enum="GetDisplayMediaIncludeExcludeConstraint" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with the systemAudio constraint.
</summary>
</histogram>
<histogram name="Media.GetDisplayMedia.RequiresUserActivationResult"
enum="GetDisplayMediaTransientActivation" expires_after="2025-03-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether getDisplayMedia was called with a user gesture (transient
activation) or whether it wasn't required. The requirement is only enforced
once `blink::features::kGetDisplayMediaRequiresUserActivation` is enabled
and can be bypassed with the `ScreenCaptureWithoutGestureAllowedForOrigins`
policy.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.DeviceSelectorAvailable"
enum="Boolean" expires_after="2023-02-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if the Global Media Controls device selector was available. Recorded
once per notification either when the device selector was shown or when the
notification disappears.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.DeviceSelectorOpened" enum="Boolean"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if the Global Media Controls device selector was opened. Recorded
once per notification either when the device selector was opened or when the
notification disappears. This histogram is only recorded if the device
selector was available.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.DismissReason"
enum="GlobalMediaControlsDismissReason" expires_after="2023-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded each time a media session is dismissed or removed from the Global
Media Controls. Records the reason why it happened (e.g. user clicked the
dismiss button or playback stopped).
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.EntryPoint"
enum="GlobalMediaControlsEntryPoint" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the entry point whenever the user opens the Global Media Controls
UI.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.HasDefaultPresentationRequest"
enum="Boolean" expires_after="2022-11-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether a media session is from a WebContents with a default
PresentationReuqest. Recorded whenever a session is instantiated in the
global media controls, even if the user doesn't open the UI to view it.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.InteractionDelayAfterPause"
units="ms" expires_after="2022-07-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded each time a paused media session is interacted with (e.g. playing
the media or clicking on the notification to go back to the tab). Records
the time passed since it was last interacted with (or since when it was
paused if this is the first post-pause interaction).
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.MediaCastMode.{Action}"
enum="GlobalMediaControlsCastMode" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the type of Media Route that users {Action} from the Global Media
Controls dialog. Recorded when users click on a button and this histogram
doesn't represent the actual number of sessions {Action}ed from the GMC
dialog.
</summary>
<token key="Action">
<variant name="Start" summary="start"/>
<variant name="Stop" summary="stop"/>
</token>
</histogram>
<histogram name="Media.GlobalMediaControls.MediaItemUIUpdatedViewAction"
enum="MediaItemUIUpdatedViewAction" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when a user action is performed on the updated media item UI view
in the media dialog view on non-CrOS desktop platforms.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.NumberOfAvailableAudioDevices"
units="devices" expires_after="2022-12-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded each time the Global Media Controls Device picker dialog is opened
and is populated with devices. Records the number of device options
displayed, possibly including the default fallback device.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.RepeatUsage" enum="BooleanIsRepeat"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded each time the Global Media Controls dialog is opened. True if this
was repeat usage of the dialog (e.g. if it's not the first time the dialog
has been opened this session).
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.UserActionFocus"
enum="BooleanFocused" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The focused state of the WebContents associated with the MediaSession that
the user is interacting with via the Global Media Controls. Recorded when
the user presses an action on the Global Media Controls dialog (e.g. play).
</summary>
</histogram>
<histogram name="Media.GPU.OutputFormat" enum="OutputFormat"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the format used for creating video frames with GpuMemoryBuffers.
Result is an enum that represents OutputFormat in
GpuVideoAcceleratorFactoriesImpl. Recorded once per VideoFrame creation.
</summary>
</histogram>
<histogram name="Media.GPU.OutputFormatHardwareGmb" enum="OutputFormat"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the format used for creating video frames with hardware backed
GpuMemoryBuffers. Result is an enum that represents OutputFormat in
GpuMemoryBufferVideoFramePool. Recorded once per VideoFrame creation.
</summary>
</histogram>
<histogram name="Media.GPU.OutputFormatSoftwareGmb" enum="OutputFormat"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the format used for creating video frames with software backed
GpuMemoryBuffers. Result is an enum that represents OutputFormat in
GpuMemoryBufferVideoFramePool. Recorded once per VideoFrame creation.
</summary>
</histogram>
<histogram name="Media.GPU.VideoDecoderType" enum="VideoDecoderType"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the VideoDecoderType used for GPU based video decoding. Recorded
once per GPU mojo media client creation (~once per GPU process).
</summary>
</histogram>
<histogram name="Media.GpuArcVideoDecodeAccelerator.InitializeFailed"
enum="VideoCodecProfile" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the unsuccessful calls to GpuArcVideoDecodeAccelerator::Initialize()
per VideoCodecProfile.
</summary>
</histogram>
<histogram name="Media.GpuArcVideoDecodeAccelerator.InitializeSucceeded"
enum="VideoCodecProfile" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the successful calls to GpuArcVideoDecodeAccelerator::Initialize()
per VideoCodecProfile.
</summary>
</histogram>
<histogram name="Media.GpuArcVideoDecodeAccelerator.InstanceCount.All"
units="instances" expires_after="2024-06-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts how many GpuArcVideoDecodeAccelerator instances are alive at the time
a new GpuArcVideoDecodeAccelerator is created. Warning: this histogram was
expired from 2023-01-22 to 2023-06-21; data may be missing.
</summary>
</histogram>
<histogram name="Media.GpuArcVideoDecodeAccelerator.InstanceCount.Initialized"
units="instances" expires_after="2024-06-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts how many GpuArcVideoDecodeAccelerator instances that have gone
through initialization (i.e., have an underlying
media::VideoDecodeAccelerator) are alive at the time a
GpuArcVideoDecodeAccelerator goes through initialization and successfully
creates its underlying media::VideoDecodeAccelerator. Warning: this
histogram was expired from 2023-01-22 to 2023-06-21; data may be missing.
</summary>
</histogram>
<histogram name="Media.GpuMemoryBufferVideoFramePool.UnsupportedFormat"
enum="VideoPixelFormatUnion" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
GpuMemoryBufferVideoFramePool is called with an unsupported VideoFrame pixel
format. Emitted on VideoFrame arrival.
</summary>
</histogram>
<histogram name="Media.HardwareAudioChannelCount" units="units"
expires_after="never">
<!-- expires-never: Media platform support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Channel count of the hardware audio device.</summary>
</histogram>
<histogram name="Media.HardwareAudioChannelLayout" enum="ChannelLayout"
expires_after="never">
<!-- expires-never: Media platform support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Channel layout of the hardware audio device.</summary>
</histogram>
<histogram name="Media.HardwareAudioSamplesPerSecond" enum="AudioSampleRate"
expires_after="never">
<!-- expires-never: Media platform support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Samples per second of the hardware audio device.</summary>
</histogram>
<histogram name="Media.HardwareKeyPressed" enum="MediaHardwareKeyAction"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records media key presses that are handled by the
HardwareKeyMediaController.
Warning: this histogram was expired from 2021-08-29 to 2023-10-24; data may
be missing.
</summary>
</histogram>
<histogram name="Media.HasAcceleratedVideoDecode.{CodecType}"
enum="BooleanSupported" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks accelerated video decoding support for a given codec. Recorded once
per GPU process after an attempt to use accelerated video decoding.
</summary>
<token key="CodecType">
<variant name="AV1"/>
<variant name="H264"/>
<variant name="H265"/>
<variant name="VP9"/>
</token>
</histogram>
<histogram name="Media.HasEverPlayed" enum="BooleanHasPlayed"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether a given WebMediaPlayer instance, after preload, started playback;
recorded once at time of player destruction.
</summary>
</histogram>
<histogram name="Media.HLS.Adaptation" enum="AdaptationReason"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs what caused HLS stream adaptation. Recorded each time adaptation takes
place.
</summary>
</histogram>
<histogram name="Media.HLS.AdvancedFeatureTags" enum="AdvancedFeatureTagType"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs an enum representing the presence of specific HLS tags which are used
to trigger features of the demuxer, including gaps, discontinuities, and
encryption, among others. Recorded whenever MediaPlayer successfully plays
HLS media using one of the advanced features in the enum.
</summary>
</histogram>
<histogram name="Media.HLS.CrossOriginContent" enum="Boolean"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether HLS playback uses cross-origin content. Recorded once per
player.
</summary>
</histogram>
<histogram name="Media.HLS.EncryptionMode" enum="HLSEncryptionMode"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the encryption mode used if a playlist has the #EXT-X-KEY or
#EXT-X-SESSION-KEY tags present. Recorded whenever MediaPlayer successfully
plays encrypted HLS media.
</summary>
</histogram>
<histogram name="Media.HLS.InvalidRenditions" units="count"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether there are no selectable renditions in a multivariant playlist.
Recorded only when a multivariant playlist contains no valid selection.
Recorded whenever MediaPlayer successfully plays multivariant HLS media that
the built-in player would not be able to play.
</summary>
</histogram>
<histogram name="Media.HLS.LiveContent" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether HLS playback is for Live content, as opposed to video-on-demand
(VOD) content. Recorded once per player.
</summary>
</histogram>
<histogram name="Media.HLS.MultivariantPlaylist" enum="Boolean"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs whether HLS playback uses a multivariant (as opposed to plain media)
playlist. Recorded once per player.
</summary>
</histogram>
<histogram name="Media.HLS.PlaylistSegmentExtension" enum="PlaylistSegmentType"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the type of extension for segments in a top-level-media playlist. This
histogram is _not_ recorded when the top level manifest is a multivariant
playlist. Recorded whenever MediaPlayer successfully plays HLS media.
</summary>
</histogram>
<histogram name="Media.HLS.UnparsableManifest" units="sparse"
expires_after="2024-09-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logs the root cause failure reason for a playlist which cannot be parsed by
the built-in parser, but was successfully played by AndroidMediaPlayer.
Recorded whenever MediaPlayer successfully plays HLS media from a manifest
that the builtin parser would fail to parse.
</summary>
</histogram>
<histogram name="Media.InitializeRendererTimeout" enum="CallbackTimeoutStatus"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The timeout status of Renderer initialization.</summary>
</histogram>
<histogram name="Media.InputErrorMac" enum="OSStatus_Audio"
expires_after="never">
<!-- expires-never: essential indicator for audio input stability in Chrome -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes that we encounter while setting up an AUAudioInputStream on Mac.
</summary>
</histogram>
<histogram name="Media.InputStreamDuration" units="ms" expires_after="never">
<!-- expires-never: essential indicator for audio input stability in Chrome -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds of low-latency audio input streams. Sampled when
the stream is closed by the AudioInputController.
</summary>
</histogram>
<histogram name="Media.InputStreamDurationWithoutCallback" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds of low-latency audio input streams which never got
any callbacks. Warning: this histogram was expired from 2020-10-11 to
2021-06-04; data may be missing.
</summary>
</histogram>
<histogram name="Media.LoadType" enum="MediaLoadType"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Load type of HTML5 media, such as URL, MediaSource and MediaStream.
</summary>
</histogram>
<histogram name="Media.LowLatencyAudioCaptureStartupSuccess"
enum="AudioCaptureStartupResult" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether capture started successfully after a low-latency input stream
startup was requested.
</summary>
</histogram>
<histogram name="Media.MCVD.ForwardVideoFrameTiming" units="ms"
expires_after="2020-10-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time between MediaCodec::dequeueOutputBuffer() and the dispatch of the
corresponding VideoFrame from MediaCodecVideoDecoder.
</summary>
</histogram>
<histogram name="Media.MeanTimeBetweenRebuffers" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<summary>
The total watch time (see Media.WatchTime) of a given playback divided by
the number of rebuffering events that occured during that playback. Only
reported when rebuffering happened. Therefore, alway refer to other UMAs
like `Media.RebuffersCount` when checking this UMA.
</summary>
</histogram>
<histogram name="Media.MediaDevices.EnumerateDevices.Latency" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The latency of calls to the navigator.mediaDevices.enumerateDevices() API
which resolve, including both successes and failures. Note very long calls
which record a EnumerateDevices.Result of kTimedOut but do eventually
resolve will have their latency recorded.
</summary>
</histogram>
<histogram name="Media.MediaDevices.EnumerateDevices.Result"
enum="EnumerateDevicesResult" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The results of all calls to the navigator.mediaDevices.enumerateDevices()
API, including successful promise resolutions, error codes, or kTimedOut, if
the promise was still pending after 4 seconds.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetDisplayMedia.Latency" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The latency of calls to the navigator.mediaDevices.GetDisplayMedia() API
which resolve, including both successes and failures. Note very long calls
which record a GetDisplayMedia.Result of kTimedOut but do eventually resolve
will have their latency recorded.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetDisplayMedia.Result"
enum="UserMediaRequestResult" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The results of all calls to the navigator.mediaDevices.GetDisplayMedia()
API, including successful promise resolutions, error codes, or kTimedOut, if
the promise was still pending after 6 seconds.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetDisplayMediaSet.Latency" units="ms"
expires_after="2023-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The latency of calls to the navigator.mediaDevices.GetDisplayMediaSet() API
which resolve, including both successes and failures. Note very long calls
which record a GetDisplayMediaSet.Result of kTimedOut but do eventually
resolve will have their latency recorded.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetDisplayMediaSet.Result"
enum="UserMediaRequestResult" expires_after="2023-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The results of all calls to the navigator.mediaDevices.GetDisplayMediaSet()
API, including successful promise resolutions, error codes, or kTimedOut, if
the promise was still pending after 6 seconds.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetUserMedia.Latency" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The latency of calls to the navigator.mediaDevices.GetUserMedia() API which
resolve, including both successes and failures. Note very long calls which
record a GetUserMedia.Result of kTimedOut but do eventually resolve will
have their latency recorded.
</summary>
</histogram>
<histogram name="Media.MediaDevices.GetUserMedia.Result"
enum="UserMediaRequestResult" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The results of all calls to the navigator.mediaDevices.GetUserMedia() API,
including successful promise resolutions, error codes, or kTimedOut, if the
promise was still pending after 8 seconds.
</summary>
</histogram>
<histogram name="Media.MediaDevices.SaltDatabaseErrors"
enum="SqliteLoggedResultCode" expires_after="2025-07-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors reported by SQLite while initializing or using the media-device salt
database.
</summary>
</histogram>
<histogram name="Media.MediaDevicesManager.VideoDeviceEnumeration.Result"
enum="DeviceEnumerationResult" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The success or failure code of MediaDevicesManager requests to enumerate
video devices (ie cameras) with the camera capture service.
</summary>
</histogram>
<histogram name="Media.MediaDevicesManager.VideoDeviceEnumeration.Start"
enum="Boolean" expires_after="2024-10-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Count of MediaDevicesManager starting enumerating video devices (ie cameras)
with the camera capture service, including enumerations which never
finished.
</summary>
</histogram>
<histogram
name="Media.MediaFoundation.MediaEngineError.{MF_MEDIA_ENGINE_ERR}.Hresult"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Hresult corresponding to a {MF_MEDIA_ENGINE_ERR}. Recorded when the
MediaEngine hits an error from Event Notify.
</summary>
<token key="MF_MEDIA_ENGINE_ERR" variants="MF_MEDIA_ENGINE_ERR"/>
</histogram>
<histogram name="Media.MediaFoundationRenderer.CreateMediaEngineError"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MediaFoundationRenderer::CreateMediaEngine() fails.
</summary>
</histogram>
<histogram name="Media.MediaFoundationRenderer.D3D11CreateDeviceFailed"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MediaFoundationRenderer fails to execute
D3D11CreateDevice.
</summary>
</histogram>
<histogram name="Media.MediaFoundationRenderer.ErrorReason"
enum="MediaFoundationRendererErrorReason" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MediaFoundationRenderer or MediaFoundationRendererClient
hits an error.
</summary>
</histogram>
<histogram name="Media.MediaFoundationRenderer.FailedToSetDCompMode"
enum="Hresult" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MediaFoundationRenderer hits an error when trying to set
direct composition mode.
</summary>
</histogram>
<histogram
name="Media.MediaFoundationRenderer.InvalidHwdrmState.HasReportedPlaying"
enum="Boolean" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not playback has started when DRM_E_TEE_INVALID_HWDRM_STATE
happens in MediaFoundationRenderer.
</summary>
</histogram>
<histogram
name="Media.MediaFoundationRenderer.InvalidHwdrmState.VideoFrameDecoded"
units="frames" expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of video frames decoded when DRM_E_TEE_INVALID_HWDRM_STATE
happens in MediaFoundationRenderer.
</summary>
</histogram>
<histogram name="Media.MediaFoundationRenderer.PlaybackError" enum="Hresult"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the MediaFoundationRenderer hits a playback error. Some errors
are part of the normal user flow (e.g. sleep/resume) and are not a bug.
</summary>
</histogram>
<histogram name="Media.MediaHistory.DatabaseExists" enum="Boolean"
expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether or not the media history database exists. Called on the
initialization of the profile.
</summary>
</histogram>
<histogram name="Media.MediaRecorder.Codec" enum="MediaRecorderCodec"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The codec and hardware/software variant used by MediaRecorder, recorded once
when the VideoTrackRecorder initializes the encoder.
</summary>
</histogram>
<histogram name="Media.MediaRecorder.HasCorrectAV1CodecString"
enum="BooleanCorrect" expires_after="2024-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record the correctness of the AV1 codecs string configured in MediaRecorder
and queried in MediaCapabilities. It is recorded when Initialize() in
MediaRecorder API is called and the capability is queried in
MediaCapabilities API.
</summary>
</histogram>
<histogram name="Media.MediaStreamManager.DesktopVideoDeviceUpdate"
enum="MediaStreamRequestResult2" expires_after="2023-07-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records media stream request responses for desktop-video capture
media-device-update requests.
</summary>
</histogram>
<histogram name="Media.MediaStreamManager.DisplayVideoDeviceUpdate"
enum="MediaStreamRequestResult2" expires_after="2023-09-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records media stream request responses for display-video capture
media-device-update requests.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.ComputeOcclusion.ComputeOccludingArea.TotalDuration"
units="microseconds" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total duration in microseconds taken by the MediaVideoVisibilityTracker to
compute occluding area. The histogram is recorded every time an element
occluding a target HTMLVideoElement is found, during the ComputeOcclusion
operation.
Note that clients without high-resolution clocks will report 0 for very
short times.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.ComputeOcclusion.TotalDuration"
units="ms" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total duration in milliseconds taken by the MediaVideoVisibilityTracker to
compute occlusion. The histogram is recorded every time the
MediaVideoVisibilityTracker needs to compute if a tracked HTMLVideoElement
meets its specified visibility threshold.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.GetClientIdsSet.ItemsInSetCount.TotalCount"
units="count" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of entries in the MediaVideoVisibilityTracker ClientIdsSet.
Recorded every time the tracker requests the set.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.GetClientIdsSet.NotContentType.Percentage"
units="%" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of the total ClientIdsSet entries that are ignored
due to their DisplayItem::Type not being of "Content" type.
This metric only accounts for non "Content" type entries that are
present at the end of the DisplayItemList. The count stops at the first
DisplayItem::Type that is of "Content" type, when traversing the
DisplayItemList from tail to head.
Recorded every time the tracker requests the set.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.GetClientIdsSet.NotContentTypeCount.TotalCount"
units="count" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of entries not added to the MediaVideoVisibilityTracker
ClientIdsSet, because their DisplayItem::Type is not of "Content"
type.
This metric only accounts for elements that are present at the end of the
DisplayItemList. The count stops at the first DisplayItem::Type that is of
"Content" type, when traversing the DisplayItemList from tail to
head.
Recorded every time the tracker requests the set.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.GetClientIdsSet.SetConstruction.TotalDuration"
units="microseconds" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total duration, in microseconds, taken by the MediaVideoVisibilityTracker to
construct a ClientIdsSet. Recorded every time the tracker requests the set.
Note that clients without high-resolution clocks will report 0 for very
short times.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.OccludingRectsCount.{BucketSizeIncreases}Histogram.TotalCount"
units="rects" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total count of rects occluding a target HTMLVideoElement. The histogram is
recorded after the MediaVideoVisibilityTracker computes whether the
HTMLVideoElement meets the visibility threshold or not.
Count is recorded using a histogram with {BucketSizeIncreases} bucket size
increases.
Note that this does not represent all elements that could be considered
occluding, since MeetsVisibilityThreshold may return early depending on the
size of the occluded area and the visibility threshold.
</summary>
<token key="BucketSizeIncreases">
<variant name="Exponential"
summary="Histogram with exponential bucket size increases, for
understanding the overall distribution"/>
<variant name="Linear"
summary="Histogram with linear bucket size increases, for fine
grained detail"/>
</token>
</histogram>
<histogram name="Media.MediaVideoVisibilityTracker.UpdateTime.TotalDuration"
units="ms" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total duration in milliseconds taken by the MediaVideoVisibilityTracker to
update HTMLVideoElement s visibility. The histogram is recorded when the
MediaVideoVisibilityTracker executes DidFinishLifecycleUpdate.
</summary>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.{NodesCount}.{BucketSizeIncreases}Histogram.TotalCount"
units="nodes" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total {NodesCount}, hit tested by ComputeOcclusion. The histogram is
recorded after the MediaVideoVisibilityTracker computes whether the
HTMLVideoElement meets the visibility threshold or not.
Count is recorded using a histogram with {BucketSizeIncreases} bucket size
increases.
</summary>
<token key="NodesCount">
<variant name="HitTestedNodesContributingToOcclusionCount"
summary="Nodes that contribute to occlusion"/>
<variant name="HitTestedNodesCount" summary="All hit tested nodes"/>
<variant name="IgnoredNodesNotOpaqueCount"
summary="Nodes ignored due to not being opaque"/>
<variant name="IgnoredNodesUserAgentShadowRootCount"
summary="Nodes ignored due to being in the shadow root and of user
agent type"/>
</token>
<token key="BucketSizeIncreases">
<variant name="Exponential"
summary="Histogram with exponential bucket size increases, for
understanding the overall distribution"/>
<variant name="Linear"
summary="Histogram with linear bucket size increases, for fine
grained detail"/>
</token>
</histogram>
<histogram
name="Media.MediaVideoVisibilityTracker.{PercentageCategory}.Percentage"
units="%" expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of the total hit tested nodes that are
{PercentageCategory}. The histogram is recorded after the
MediaVideoVisibilityTracker computes whether the HTMLVideoElement meets the
visibility threshold or not.
</summary>
<token key="PercentageCategory">
<variant name="IgnoredNodesNotOpaque"
summary="Nodes that are ignored due to not being opaque"/>
<variant name="IgnoredNodesUserAgentShadowRoot"
summary="Nodes that are ignored due to being in the shadow root and
of user agent type"/>
<variant name="NodesContributingToOcclusion"
summary="Nodes that contribute to occlusion"/>
</token>
</histogram>
<histogram name="Media.MicrophoneMuted" enum="MicrophoneMuteResult"
expires_after="2025-06-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Heuristically detects if the user has muted the microphone or not. Measured
approximately four times per minute while an audio input stream is active.
</summary>
</histogram>
<histogram name="Media.Midi.SendReceiveUsage" enum="MidiSendReceiveUsage"
expires_after="2025-02-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/third_party/blink/renderer/modules/webaudio/OWNERS</owner>
<summary>
Reports whether any data was sent or received by a MidiManager. Recorded
once per MidiManager instantiation, upon destruction. MidiManager is
instantiated when the first Web MIDI client starts a session, and destroyed
when the last client ends the session.
Warning: this histogram was expired from M86 to M91; data may be missing.
</summary>
</histogram>
<histogram name="Media.Midi.SysExMessageSizeUpTo1MB" units="bytes"
expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/third_party/blink/renderer/modules/webaudio/OWNERS</owner>
<summary>
Reports sysex message size.
Warning: this histogram was expired from M86 to M91; data may be missing.
</summary>
</histogram>
<histogram name="Media.Midi.Usage" enum="MidiUsage" expires_after="2024-12-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>src/third_party/blink/renderer/modules/webaudio/OWNERS</owner>
<summary>
The MidiManager instance use count, but this is not intended to understand
the real API usage because this can be counted by feature scanning scripts
that are often used for footprinting. You may want to track SendReceiveUsage
to monitor only instances that actually send or receive MIDI messages.
Warning: this histogram was expired from M86 to M91; data may be missing.
</summary>
</histogram>
<histogram name="Media.MojoStableVideoDecoder.Decode" units="ms"
expires_after="2025-05-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is analogous to Media.MojoVideoDecoder.Decode but for the
MojoStableVideoDecoder. It's the delay between a DecoderBuffer (and encoded
chunk) input and a decoded frame being produced by the remote
StableVideoDecoder. Output once per successful decode.
</summary>
</histogram>
<histogram name="Media.MojoVideoDecoder.ActiveInstances" units="units"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of active MojoVideoDecoderService instances that are
alive each time an instance becomes active. An instance is active if
Decode() has been called at least once. This provides an estimate of the
concurrent hardware resource requirements.
</summary>
</histogram>
<histogram name="Media.MojoVideoDecoder.Decode" units="ms"
expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Delay between a DecodeBuffer (and encoded chunk) input and a decoded
VideoFrame being produced by the remote MojoVideoDecoder. Output once per
successful decode.
</summary>
</histogram>
<histogram name="Media.MojoVideoDecoder.InitialPlaybackErrorCodecCounter"
units="instances" expires_after="2021-10-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of instances of MojoVideoDecoder used by a page (i.e. render
frame) when an instance of MojoVideoDecoder encountered a decoding error or
a crash during the first 150 frames of a video stream.
</summary>
</histogram>
<histogram name="Media.MojoVideoDecoder.InitialPlaybackSuccessCodecCounter"
units="instances" expires_after="2021-10-25">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of instances of MojoVideoDecoder used by a page (i.e. render
frame) when an instance of MojoVideoDecoder successfuly decode the first 150
frames of a video stream.
</summary>
</histogram>
<histogram name="Media.MojoVideoEncodeAccelerator.InputStorageType"
enum="VideoFrameStorageType" expires_after="2024-05-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The storage type of media::VideoFrame passed to MojoVideoEncodeAccelerator
for encoding. The histogram is recorded every frame encode request.
</summary>
</histogram>
<histogram name="Media.MSE.AudioCodec" enum="MSECodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Audio codec used in Media Source Extensions playback. Set when MediaSource
addSourceBuffer() is successfully called during playback. Also set twice
during a successful SourceBuffer changeType() operation. See issue 535738
for reworking MSE codec histograms to record on each successfully parsed
initialization segment (possibly filtered to record only when actual new
codec configurations are parsed).
</summary>
</histogram>
<histogram name="Media.MSE.DemuxerDestructionTime" units="ms"
expires_after="2020-10-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Amount of time taken to destroy one ChunkDemuxer object, not including
initial background task scheduling delay.
</summary>
</histogram>
<histogram name="Media.MSE.ExecutionContext" enum="MediaSourceExecutionContext"
expires_after="2020-10-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
For each MediaSource instance, records the type of thread that created the
instance.
</summary>
</histogram>
<histogram name="Media.MSE.VideoCodec" enum="MSECodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in Media Source Extensions playback. Set when MediaSource
addSourceBuffer() is successfully called during playback. Also set twice
during a successful SourceBuffer changeType() operation. See issue 535738
for reworking MSE codec histograms to record on each successfully parsed
initialization segment (possibly filtered to record only when actual new
codec configurations are parsed).
</summary>
</histogram>
<histogram name="Media.MSE.VideoCodec.MP4" enum="MSECodec"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in Media Source Extensions playback if the media container
is MP4. Set when MediaSource addSourceBuffer() is successfully called during
playback. Also set twice during a successful SourceBuffer changeType()
operation. See issue 535738 for reworking MSE codec histograms to record on
each successfully parsed initialization segment (possibly filtered to record
only when actual new codec configurations are parsed).
</summary>
</histogram>
<histogram name="Media.MSE.VideoCodec.WebM" enum="MSECodec"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in Media Source Extensions playback if the media container
is WebM. Set when MediaSource addSourceBuffer() is successfully called
during playback. Also set twice during a successful SourceBuffer
changeType() operation. See issue 535738 for reworking MSE codec histograms
to record on each successfully parsed initialization segment (possibly
filtered to record only when actual new codec configurations are parsed).
</summary>
</histogram>
<histogram name="Media.Notification.Cast.Count" units="count"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of Cast media notifications that are currently being displayed.
This is recorded when a media notification starts being displayed.
</summary>
</histogram>
<histogram name="Media.Notification.Cast.UserAction" enum="MediaSessionAction"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the type of the action (e.g. pause) whenever the user makes an
action on a Cast media notification. Starting and stopping casting is
recorded in Media.GlobalMediaControls.MediaCastMode.Start and
Media.GlobalMediaControls.MediaCastMode.Stop.
</summary>
</histogram>
<histogram name="Media.Notification.Count" units="count"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of media notifications that are currently being displayed
(including ones for Cast sessions). This is recorded when a media
notification starts being displayed.
</summary>
</histogram>
<histogram name="Media.Notification.DisplayPage"
enum="MediaNotificationDisplayPage" expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The page where the media notification is displayed to users. This is
recorded when a media notification starts being displayed.
</summary>
</histogram>
<histogram name="Media.Notification.Source" enum="MediaNotificationSource"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The source of the underlying media session (e.g. ARC, web, Cast) that
displayed the media notification. This is recorded when a notification is
available to be shown.
</summary>
</histogram>
<histogram name="Media.Notification.UserAction" enum="MediaSessionAction"
expires_after="2025-01-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The media session action that a user clicked on a media notification
(including ones for Cast sessions).
</summary>
</histogram>
<histogram name="Media.OutputStreamDuration" units="ms"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration of an audio output stream. Measured in AudioOutputController from
when a stream is started until it is stopped. A stream is stopped when it is
paused, closed (i.e. destructed), or when a device change event causes it to
be restarted.
</summary>
</histogram>
<histogram name="Media.PepperVideoDecoder.HardwareAccelerationBehavior"
enum="PepperVideoDecoderHardwareAccelerationBehavior" expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The hardware/software decoding behavior used for a PPB_VideoDecoder API
instance. This UMA is recorded when the PepperVideoDecoderHost is destroyed.
</summary>
</histogram>
<histogram base="true" name="Media.PepperVideoDecoderOutputPictureCount"
enum="MediaVideoHeight" expires_after="2020-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts every output picture emitted to a PPAPI client, categorized by size
and decoder type. Flash will only use platform decoders, but NaCl clients
can use either decoder type.
</summary>
</histogram>
<histogram name="Media.PictureInPicture.FileDialogOpenState"
enum="FileDialogOpenState" expires_after="2024-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether or not a file dialog and picture-in-picture window are open
at the same time. Recorded when either a file dialog or picture-in-picture
window are opened.
</summary>
</histogram>
<histogram name="Media.PipelineStatus.AudioVideo.{VideoCodec}.{Pipeline}"
enum="PipelineStatus" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Status of the media pipeline at the end of its lifecycle for audio-video
streams with {VideoCodec} video codec using {Pipeline}.
</summary>
<token key="VideoCodec" variants="VideoCodec"/>
<token key="Pipeline">
<variant name="DDS.HW"
summary="RendererImpl with hardware decoder and
DecryptingDemuxerStream"/>
<variant name="DDS.SW"
summary="RendererImpl with software decoder and
DecryptingDemuxerStream"/>
<variant name="DVD" summary="RendererImpl with DecryptingVideoDecoder"/>
<variant name="HW" summary="RendererImpl with hardware decoder"/>
<variant name="MediaDrm.HardwareSecure"
summary="RendererImpl with requested hardware secure decryption and
MediaCodecVideoDecoder"/>
<variant name="MediaDrm.SoftwareSecure"
summary="RendererImpl with requested software secure decryption and
MediaCodecVideoDecoder"/>
<variant name="MediaFoundationRenderer"/>
<variant name="SW" summary="RendererImpl with software decoder"/>
<variant name="UnknownRenderer" summary="an unknown Renderer"/>
</token>
</histogram>
<histogram name="Media.PipelineStatus.Start" enum="PipelineStatus"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Status of the media pipeline starting process (including demuxer and
renderer initialization). If the media pipeline is destroyed during the
starting process nothing will be reported, but this should relatively rare.
</summary>
</histogram>
<histogram name="Media.PipelineStatus.{StreamType}" enum="PipelineStatus"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Status of the media pipeline at the end of its lifecycle for {StreamType}
streams.
</summary>
<token key="StreamType">
<variant name="AudioOnly" summary="audio-only"/>
<variant name="Unsupported" summary="unsupported"/>
<variant name="VideoOnly" summary="video-only"/>
</token>
</histogram>
<histogram name="Media.PlatformVideoDecoding.Decode" units="ms"
expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time for the platform-specific (set of) video decode acceleration command(s)
to be executed. Output once per decode request submit.
</summary>
</histogram>
<histogram name="Media.PlatformVideoDecoding.VideoCodecProfile"
enum="VideoCodecProfile" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
VideoCodecProfile used to Initialize() the platform VideoDecoder
implementation; this is emitted once per video (or per track, when using
MSE) initialization and after verifying that the codec profile is thought to
be supported.
</summary>
</histogram>
<histogram name="Media.RebuffersCount" units="rebuffers" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates the number of rebuffers a given watch time session had.
</summary>
</histogram>
<histogram name="Media.RegionCapture.CropTo.Latency" units="ms"
expires_after="2025-01-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds of the time it takes for a
BrowserCaptureMediaStreamTrack.cropTo() call to resolve (either successfully
or with an error). Note a call which never resolves won't be counted in this
metric.
</summary>
</histogram>
<histogram name="Media.RegionCapture.CropTo.Result2"
enum="ApplySubCaptureTargetResult" expires_after="2025-01-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the result of calls to BrowserCaptureMediaStreamTrack.cropTo().
Recorded when resolving the promise produced by cropTo().
</summary>
</histogram>
<histogram name="Media.RegionCapture.ProduceCropTarget.Function.Result"
enum="ProduceTargetFunctionResult" expires_after="2025-01-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the result of calls to CropTarget.fromElement(). Specifically, this
histogram tracks whether a new Promise was produced, and if not, why not.
Another histogram tracks the result of new Promises, i.e. whether they were
resolved or rejected.
</summary>
</histogram>
<histogram name="Media.RegionCapture.ProduceCropTarget.Promise.Result"
enum="ProduceTargetPromiseResult" expires_after="2025-01-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When CropTarget.fromElement() is called for the first time on a given
Element, a new Promise is produced. This histogram tracks the result of this
Promise - whether it was resolved or rejected.
</summary>
</histogram>
<histogram name="Media.Remoting.AudioBitrate" units="kbps"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measured audio content transfer bitrate while remoting content.
</summary>
</histogram>
<histogram name="Media.Remoting.AudioChannelLayout" enum="ChannelLayout"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Audio channel layout used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioCodec" enum="AudioCodec"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Audio codec used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioSamplesPerSecond" enum="AudioSampleRate"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Audio sampling rate while remoting audio content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioSamplesPerSecondUnexpected" units="Hz"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Audio sampling rate while remoting audio content (atypical values, in Hz).
</summary>
</histogram>
<histogram name="Media.Remoting.Compatibility" enum="RemotingCompatibility"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the given media is compatible with media remoting. Recorded whenever
the conditions are met to start remoting (e.g. the media element is the
dominant page content and is not paused).
</summary>
</histogram>
<histogram name="Media.Remoting.RemotePlaybackEnabledByPage"
enum="BooleanEnabled" expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks whether a web page allows content to be remoted. Recorded when the
media player finishes loading and when the site changes this attribute
afterwards.
</summary>
</histogram>
<histogram name="Media.Remoting.SessionDuration" units="ms"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Measures the duration of each remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.SessionStartFailedReason"
enum="RemotingStartFailReason" expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Tracks the reason that a session failed to start.</summary>
</histogram>
<histogram name="Media.Remoting.SessionStartTrigger"
enum="RemotingStartTrigger" expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Tracks the trigger for starting a remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.SessionStopTrigger" enum="RemotingStopTrigger"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Tracks the trigger for stopping a remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.ShortSessionDuration" units="ms"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures the duration of each remoting session shorter than 15 seconds.
</summary>
</histogram>
<histogram name="Media.Remoting.TimeUntilFirstPlayout" units="ms"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures how long, from the start of a remoting session, until content began
playing out on the remote device.
</summary>
</histogram>
<histogram name="Media.Remoting.TimeUntilRemoteInitialized" units="ms"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures how long, from the start of a remoting session, until a message was
received from the remote device indicating initialization succeeded.
</summary>
</histogram>
<histogram name="Media.Remoting.TrackConfiguration"
enum="RemotingTrackConfiguration" expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Tracks whether audio or video or both are remoted.</summary>
</histogram>
<histogram name="Media.Remoting.VideoAspectRatio" units="%"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Aspect ratio of video while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoBitrate" units="kbps"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measured video content transfer bitrate while remoting content.
</summary>
</histogram>
<histogram name="Media.Remoting.VideoCodec" enum="VideoCodec"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video codec used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoCodecProfile" enum="VideoCodecProfile"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video codec profile used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoNaturalWidth" units="pixels"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video width while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoPixelRateSupport"
enum="RemotingVideoPixelRateSupport" expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Pixels-per-second in a video and whether the receiver supports its playback.
Recorded whenever we are about to start media remoting a video.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.AverageQueueLengthX10"
units="frames" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
10 times the average queue length when Render() is called in the RTC
low-latency video renderer. Repeatedly measured with a period of 100 s for
as long as the stream is active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.DrainedFramesPermille"
units="permille" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Per mille of frames drained in the RTC low-latency video renderer.
Repeatedly measured with a period of 100 s for as long as the stream is
active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.DroppedFramesPermille"
units="permille" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Per mille of frames dropped in the RTC low-latency video renderer.
Repeatedly measured with a period of 100 s for as long as the stream is
active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.EnterDrainModeCount"
units="count" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times drain mode is entered. Repeatedly measured with a period of
100 s for as long as the stream is active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.MaxQueueLength"
units="frames" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The maximum queue length that is observed when Render() is called in the RTC
low-latency video renderer. Repeatedly measured with a period of 100 s for
as long as the stream is active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.MaxSizeDropQueueCount"
units="count" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times the maximum queue size is exceeded and the entire queue is
dropped. Repeatedly measured with a period of 100 s for as long as the
stream is active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.NoNewFrameToRenderPermille"
units="permille" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Per mille of render times where the queue is empty and there is no new frame
to render. Repeatedly measured with a period of 100 s for as long as the
stream is active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.ReduceSteadyStateCount"
units="count" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times the reduce steady state queue feature is activated.
Repeatedly measured with a period of 100 s for as long as the stream is
active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.TotalFrames" units="frames"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total number of frames enqueued to the RTC low-latency video renderer.
Repeatedly measured with a period of 100 s for as long as the stream is
active.
</summary>
</histogram>
<histogram name="Media.RtcLowLatencyVideoRenderer.TryToRenderFrameCount"
units="count" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Number of times we try to render a new frame. Repeatedly measured with a
period of 100 s for as long as the stream is active.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderError" enum="MediaStatusCode"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts of video decode errors reported to RTCVideoDecoder, recorded when an
error is reportd to RTCVideoDecoder. Also used for DecoderStream. Expired in
M83 and re-added in M92. Warning: this histogram was expired between
2023-04-16 to 2023-04-20; data may be missing.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderFallbackReason.{Codecs}"
enum="RTCVideoDecoderFallbackReason" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The reason for fallback to software decoding for the codec {Codecs}.
Reported when a fallback to software decoding occurs.
</summary>
<token key="Codecs">
<variant name="H264" summary=""/>
<variant name="Other" summary=""/>
<variant name="Vp8" summary=""/>
<variant name="Vp9" summary=""/>
</token>
</histogram>
<histogram name="Media.RTCVideoDecoderFirstFrameLatencyMs" units="ms"
expires_after="2022-06-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time from decoder creation until the first frame is decoded.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderInitDecodeSuccess" enum="BooleanSuccess"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates whether we were successful in initializing hardware video decoder
for use in the RTC pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderInitializationLatencyMs" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Initialization latency of the hardware video decoder that is used in the RTC
pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderMaxInFlightDecodes" units="frames"
expires_after="2024-04-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Max number of frames sent for video decode via the DecoderStream adapter,
that have not also returned a decoded video frame. The metric is emitted
once per RTCVideoDecoderStreamAdapter instance, as the max observed value
over that instance's lifetime. Warning: this histogram was expired between
2022-08-14 to 2023-04-20; data may be missing.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderProfile" enum="VideoCodecProfile"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video codec profile used in RTC video decoder.</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderReinitializationLatencyMs" units="ms"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Reinitialization latency of the hardware video decoder that is used in the
RTC pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderStream.Error.OnFrameReady"
enum="MediaStatusCode" expires_after="2021-08-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records the media::StatusCode from the RTCVideoDecoderStreamAdapter. It
is emitted when the adapter encounters an error during decoding.
</summary>
</histogram>
<histogram name="Media.RTCVideoEncoder.Initialize" units="ms"
expires_after="2024-09-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The duration of initializing a hardware encoder in WebRTC API. It is
recorded whenever RTCVideoEncoder::InitEncode() is called.
</summary>
</histogram>
<histogram name="Media.RTCVideoEncoderInitEncodeSuccess" enum="BooleanSuccess"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates whether we were successful in initializing hardware video encoder
for use in the RTC pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoEncoderProfile" enum="VideoCodecProfile"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Video codec profile used in RTC video encoder.</summary>
</histogram>
<histogram name="Media.RTCVideoEncoderStatus.{Codecs}" enum="EncoderStatus"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records if the {Codecs} encoder was torn down because the stream ended, or
if it was due to an encoder error. Recorded once when shutting down an
accelerated (or out of process) video encoder.
</summary>
<token key="Codecs">
<variant name="AV1" summary=""/>
<variant name="H264" summary=""/>
<variant name="Other" summary=""/>
<variant name="VP8" summary=""/>
<variant name="VP9" summary=""/>
</token>
</histogram>
<histogram name="Media.RTCVideoEncoderTimestampMatchSuccess"
enum="BooleanSuccess" expires_after="M77">
<owner>[email protected]</owner>
<summary>
Indicates whether we were successful in preserving timestamps in hardware
video encoder session. It is tracked during the session and logged after it
ends.
</summary>
</histogram>
<histogram name="Media.ScreenCaptureKit.FullscreenModuleMode"
enum="ScreenCaptureKitFullscreenModuleMode" expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the mode that is used in the ScreenCaptureKit Fullscreen module if
the selected window to capture belongs to a supported application. The mode
is reported once per captured window when the fullscreen module is created.
</summary>
</histogram>
<histogram name="Media.Session.ActiveTime" units="ms"
expires_after="2023-01-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time during which a media session has been active, in other words, the time
between an activation and deactivation, without counting time while it was
suspended. If a session is activated after being deactivated, there will be
two entries. For example, if a user plays a song but is interrupted by a
phone call, it will only account for the song playing time.
</summary>
</histogram>
<histogram name="Media.Session.EnterPictureInPicture"
enum="MediaSessionEnterPictureInPictureType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when EnterPictureInPicture or EnterAutoPictureInPicture is called
on a MediaSessionImpl. Records why picture-in-picture was triggered (whether
it was for the default handler or a website-provided one, and whether the
trigger was manual or automatic).
</summary>
</histogram>
<histogram name="Media.Session.Play" enum="MediaSessionActionSource"
expires_after="2024-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times the user started playback of a media session using other
means than the play button on the page.
</summary>
</histogram>
<histogram name="Media.Session.Suspended" enum="MediaSessionSuspendedSource"
expires_after="2022-02-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times a media session is suspended and why it has been
suspended.
</summary>
</histogram>
<histogram name="Media.SRC.VideoCodec.MP4" enum="VideoCodec"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in plain src= (not MSE) HTML5 media if the media container
is MP4.
</summary>
</histogram>
<histogram name="Media.SRC.VideoCodec.WebM" enum="VideoCodec"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec used in plain src= (not MSE) HTML5 media if the media container
is WebM.
</summary>
</histogram>
<histogram name="Media.ThumbnailCapturerMac.ShareableContentErrorPercentage"
units="%" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram tracks the percentage of callbacks where there was no
shareable content returned from the OS. This is recorded in the destructor
of ThumbnailCapturerMac. The metric is rounded upwards so that a single
error shows up as at least 1%.
</summary>
</histogram>
<histogram name="Media.TimeToFirstFrame.{PlaybackType}" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time in milliseconds from when WebMediaPlayerImpl starts loading until the
first video frame has been shown.
</summary>
<token key="PlaybackType">
<variant name="All" summary="all"/>
<variant name="EME"/>
<variant name="HLS"/>
<variant name="MSE"/>
<variant name="SRC"/>
</token>
</histogram>
<histogram name="Media.TimeToMetadata.{PlaybackType}" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time in milliseconds from when WebMediaPlayerImpl starts loading until
metadata is known.
</summary>
<token key="PlaybackType">
<variant name="All" summary="all"/>
<variant name="EME"/>
<variant name="HLS"/>
<variant name="MSE"/>
<variant name="SRC"/>
</token>
</histogram>
<histogram name="Media.TimeToPlayReady.{PlaybackType}" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time in milliseconds from when WebMediaPlayer starts loading until it has
buffered enough to start playback.
</summary>
<token key="PlaybackType">
<variant name="All" summary="all"/>
<variant name="EME"/>
<variant name="HLS"/>
<variant name="MSE"/>
<variant name="SRC"/>
</token>
</histogram>
<histogram name="Media.TotalMBytes" units="MB" expires_after="M85">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Size of HTML5 media (when known), in MB.</summary>
</histogram>
<histogram
name="Media.Ui.GetDisplayMedia.BasicFlow.HighlightedTabDiscardStatus"
enum="HighlightedTabDiscardStatus" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When getDisplayMedia() is called, the user is shown a list of tabs, windows
and screens they can choose to capture. If the user highlights a discarded
tab, no preview is shown - which is a problem. This histogram tracks how
often the user sees at least one missing preview due to highlighting a
discarded tab. (Contrast this with SelectedTabDiscardStatus.) The histogram
is recorded when the media-picker dialog is closed - either through the user
accepting or rejecting the dialog, or if the document that called
getDisplayMedia() is unloaded (e.g. if the tab is closed).
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.BasicFlow.SelectedTabDiscardStatus"
enum="SelectedTabDiscardStatus" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When getDisplayMedia() is called, the user is shown a list of tabs, windows
and screens they can choose to capture. If the user highlights a discarded
tab, no preview is shown - which is a problem. This histogram tracks how
often the user ends up choosing to share a discarded tab. (Contrast this
with HighlightedTabDiscardStatus.) The histogram is recorded when the
media-picker dialog is closed - either through the user accepting or
rejecting the dialog, or if the document that called getDisplayMedia() is
unloaded (e.g. if the tab is closed).
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.BasicFlow.SourceCount.{Type}"
units="count" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Record how many sources of type {Type} were available for the user to choose
from. Recorded when the dialog is closed (user selected a source, cancelled,
or closed the tab that owns the dialog).
</summary>
<token key="Type">
<variant name="Screens" summary=""/>
<variant name="Tabs" summary=""/>
<variant name="Windows" summary=""/>
</token>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.BasicFlow.UserInteraction"
enum="MediaUiGetDisplayMediaBasicFlowUserInteraction"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of the user's interaction with the media picker dialog
which is displayed following a call to getDisplayMedia that results in the
basic flow (preferCurrentTab either unspecified or is false).
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.DisplayCapturePolicyResult"
enum="DisplayCapturePolicyResult" expires_after="2024-03-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the display-capture permission policy allows/disallows this
call to getDisplayMedia.
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.HasScreenRecordingPermission"
enum="Boolean" expires_after="2025-05-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether the user has screen recording permission when the
DesktopMedia picker dialog is opened.
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.PreferCurrentTabFlow.UserInteraction"
enum="MediaUiGetDisplayMediaPreferCurrentTabFlowUserInteraction"
expires_after="2024-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the result of the user's interaction with the media picker dialog
which is displayed following a call to getDisplayMedia where
preferCurrentTab was specified.
</summary>
</histogram>
<histogram
name="Media.Ui.GetDisplayMedia.ScreenSharingPermissionInteractionMac"
enum="MediaUiGetDisplayMediaPermissionInteraction"
expires_after="2025-05-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how far the user has proceeded in the journey to open the
screen-recording settings when trying to share a screen without having the
permission to do so. This histogram is recorded each time the dialog is
closed.
</summary>
</histogram>
<histogram
name="Media.Ui.GetDisplayMedia.WindowSharingPermissionInteractionMac"
enum="MediaUiGetDisplayMediaPermissionInteraction"
expires_after="2025-05-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records how far the user has proceeded in the journey to open the
screen-recording settings when trying to share a window without having the
permission to do so. This histogram is recorded each time the dialog is
closed.
</summary>
</histogram>
<histogram name="Media.Ui.GetDisplayMedia.{Flow}.DialogDuration" units="ms"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time-duration the DesktopMediaPickerDialog is opened when
getDisplayMedia is called with the preferCurrentTab constraint either set to
true (PreferCurrentTabFlow) or unspecified/false (BasicFlow). The duration
is recorded each time the dialog is closed.
</summary>
<token key="Flow">
<variant name="BasicFlow"/>
<variant name="PreferCurrentTabFlow"/>
</token>
</histogram>
<histogram name="Media.UnderflowDuration2.{PlaybackType}" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The amount of time taken to leave the underflow state (i.e. resume playback)
for playbacks. This doesn't report initial zero samples, which was
previously used to compensate for playbacks that don't rebuffer.
</summary>
<token key="PlaybackType">
<variant name="All" summary="all"/>
<variant name="EME"/>
<variant name="HLS"/>
<variant name="MSE"/>
<variant name="SRC"/>
</token>
</histogram>
<histogram name="Media.URLScheme2" enum="URLSchemeForHistogram"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
URL scheme used with HTML5 media; only recorded for src=URL playbacks and
not for Media Source Extensions playbacks. Each URL provides one sample.
</summary>
</histogram>
<histogram name="Media.V4l2VideoDecoder.Error" enum="V4l2VideoDecoderFunctions"
expires_after="2024-05-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records errors during normal V4L2VideoDecoder operations. These can happen
during initialization, decode or other internal state changes. Multiple
errors can be recorded during the object lifetime.
</summary>
</histogram>
<histogram name="Media.V4l2VideoDecoder.MediaIoctlError"
enum="MediaIoctlRequests" expires_after="2024-07-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when errors happen with media controller API ioctl requests during
video decoding session using V4L2 API. Depending on a ioctl request, video
decoding session can proceed or stop immediately when an error happens. So
multiple errors can be recorded during the object lifetime.
</summary>
</histogram>
<histogram name="Media.V4l2VideoDecoder.VidiocIoctlError"
enum="VidiocIoctlRequests" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when errors happen with V4L2 API ioctl requests during video
decoding session using V4L2 API. Depending on a ioctl request, video
decoding session can proceed or stop immediately when an error happens. So
multiple errors can be recorded during the object lifetime.
</summary>
</histogram>
<histogram name="Media.VaapiLinux.SupportedVideoDecoder"
enum="VideoDecoderType" expires_after="2022-02-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the usage of VaapiVideoDecoder VaapiVideoDecodeAccelerator based on
vulkan support and Vaapi driver version on linux. This is recorded on GPU
process startup when hardware accelerated video decoding support is checked.
</summary>
</histogram>
<histogram name="Media.VaapiVideoDecoder.DecodeError" enum="BooleanError"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The codec-specific delegate in VaapiVideoDecoder has returned an error from
Decode(). This could be a parse error, or a VA error itself.
</summary>
</histogram>
<histogram name="Media.VaapiVideoDecoder.VaapiWrapperCreationSuccess"
enum="BooleanSuccess" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the creation of VaapiWrapper succeeded or not inside
VaapiVideoDecoder.
</summary>
</histogram>
<histogram name="Media.VaapiWrapper.VADisplayStateInitializeSuccess"
enum="BooleanSuccess" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the call to VaapiWrapper's VADisplayState::Initialize() succeeded or
not. Warning: this histogram was expired between 2023-02-12 to 2023-04-20;
data may be missing.
</summary>
</histogram>
<histogram name="Media.VAJDA.ResponseToClient"
enum="MjpegDecodeAcceleratorErrorCode" expires_after="2022-01-07">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The response given to the client by VaapiJpegDecodeAccelerator for a decode
request. This is recorded when the decode succeeds or fails. The recorded
value corresponds to a MjpegDecodeAccelerator::Error.
</summary>
</histogram>
<histogram name="Media.VAVDA.VaapiWrapperCreationSuccess" enum="BooleanSuccess"
expires_after="2023-02-12">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the creation of VaapiWrapper succeeded or not inside VaVDA.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay" enum="AutoplaySource"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the autoplay source of videos. This includes
Media.Video.Autoplay.Muted.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay.Muted.PlayMethod.BecomesVisible"
enum="Boolean" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records muted video started playing with play() become visible at some
point. The UMA for false is not complete since it is recorded in a
destructor which is garbage-collected. Please subtract
Media.Video.Autoplay.Muted "play() method" count with the true
count of this histogram to obtain the real false count.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay.Muted.PlayMethod.OffscreenDuration"
units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the offscreen playing duration of a muted video autoplaying from
play() method.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay.Muted.UnmuteAction" enum="BooleanSuccess"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Status of the unmute action on a video that autoplayed because it was muted.
</summary>
</histogram>
<histogram
name="Media.Video.Capture.Mac.CameraSystemPermission.FixedTime.SinceFirstFailure"
units="ms" expires_after="2023-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time from the first camera access failure due to blocked system
permission before the last browser restart to startup after browser restart.
Logged once at browser startup if the system permission then is allowed.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram
name="Media.Video.Capture.Mac.CameraSystemPermission.FixedTime.SinceLastFailure"
units="ms" expires_after="2023-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The time from the last camera access failure due to blocked system
permission before the last browser restart to startup after browser restart.
Logged once at browser startup if the system permission then is allowed.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Video.Capture.Mac.CameraSystemPermission.Startup"
enum="SystemMediaCapturePermission" expires_after="2024-02-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for camera. Logged once at browser startup.
For more information on the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram
name="Media.Video.Capture.Mac.CameraSystemPermission.StartupAfterFailure"
enum="SystemMediaCapturePermission" expires_after="2023-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for camera. Logged once at browser startup
if there was a failure accessing the camera due to blocked system permission
before the last browser restart. For more information on the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Video.Capture.Mac.CameraSystemPermission.UserMedia"
enum="SystemMediaCapturePermission" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for camera at the time of a user media
request. Logged when the system permission is checked. If the permission is
"not determined" this is logged, permission is requested, and the
resulting permission (from the user response) is also logged. For more
information on the values, see
https://developer.apple.com/documentation/avfoundation/avauthorizationstatus.
Warning: this histogram was expired from 2020-03-01 to 2022-03-09; data may
be missing.
</summary>
</histogram>
<histogram name="Media.Video.Capture.Mac.ScreenCaptureSystemPermission"
enum="BooleanAllowed" expires_after="2024-02-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Mac system permission state for screen capture. Logged once at browser
startup and when attempting to screen capture. Requires macOS 10.15+.
Samples will not be collected on earlier macOS versions.
</summary>
</histogram>
<histogram name="Media.Video.Roughness" units="ms" expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video playback roughness for a 100s interval. Suffixed by the framerate.
</summary>
</histogram>
<histogram name="Media.VideoCapture.AspectRatio" units="%"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video Capture Device captured aspect ratio, as a rounded integer multiplied
by 100. The collection is made in the VideoCaptureController upon reception
of the first frame.
</summary>
</histogram>
<histogram name="Media.VideoCapture.BlacklistedDevice"
enum="BlacklistedVideoCaptureDeviceNames" expires_after="M82">
<owner>[email protected]</owner>
<summary>
Counts appearances of Blacklisted Video Capture devices during enumeration.
This collection happens during first enumeration in the appropriate
platforms' VideoCaptureDeviceFactory.
</summary>
</histogram>
<histogram name="Media.VideoCapture.CreateDeviceSuccessLatency" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time during VideoSourceImpl startup taken to create a video_capture::Device
object. Only recorded if the creation was successful. Is a subset of
Media.VideoCapture.StartSourceSuccessLatency corresponding to Device
creation, rather than capture startup in the device.
</summary>
</histogram>
<histogram name="Media.VideoCapture.DelayUntilFirstFrame" units="ms"
expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Time it takes from the moment that a VideoCaptureController is requested to
start to the moment the first video frame arrives at
VideoCaptureController::OnFrameReadyInBuffer().
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.Effect2.{VideoEffect}"
enum="VideoEffectStatus" expires_after="2025-06-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records {VideoEffect} support and whether it is enabled for each video
capture device opened. Recorded in DeviceMediaToMojoAdapter::StartInternal
in the video capture service.
</summary>
<token key="VideoEffect">
<variant name="BackgroundBlur" summary="Background Blur"/>
<variant name="EyeGazeCorrection" summary="Eye Gaze Correction"/>
<variant name="FaceFraming" summary="Face Framing"/>
</token>
</histogram>
<histogram name="Media.VideoCapture.Device.Opened.ByModelId" units="usb_id"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records an unsigned interger value that corresponds to the USB
ID (vendor + device ID) of the webcam that is currently in use by the user.
The USB ID is originally a 32-bit hexadecimal number (formatted as
XXXX:XXXX) that then is converted to an unsigned integer for metrics
purposes. In case of a unknown/invalid USB ID, 0 is logged. This is done
when the CreateDevice method is called on the corresponding
VideoCaptureDeviceFactory class based on the operating system. For example,
on MacOS, this happens when VideoCaptureDeviceFactoryApple::CreateDevice is
called.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.Opened.PixelFormat"
enum="VideoPixelFormatUnion" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records the pixel format of the active camera video feed at
start, and everytime the pixel format changes.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.Opened.Resolution"
units="resolution" expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric records the resolution of the active camera video feed at start,
and everytime the resolution changes. The metric combines the width and
height into a single uint32_t value, with the width stored in the first 16
bits and the height stored in the last 16 bits.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.SupportedPixelFormat"
enum="VideoPixelFormatUnion" expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts each pixel format an enumerated video capture device supports. This
is recorded during the first device enumeration per Capture process launch.
(This is usually once per launch of Chrome unless the Capture process
crashes.) NOTE: This metric originally expired on 2023-03-19.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.SupportedResolution"
enum="VideoResolutionDesignation" expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts each resolution supported by an enumerated video capture device.
These are categorized by designation (eg. QVGA, HD, 4KUHD, etc) instead of
pixel count. This is recorded during the first device enumeration per
Capture process launch. (This is usually once per launch of Chrome unless
the Capture process crashes.)
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.TotalAvailable" units="count"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric counts the number of webcams that are accessible to the user at
the start of a video session.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Error" enum="VideoCaptureError"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Breaks down the events counted in Media.VideoCaptureManager.Event bucket
"Stopping video capture due to error" by the origin of the error.
This allows narrowing down what is causing errors. An event for this
histogram is emitted once for each time a client disconnects from a video
capture session because the session has reported an error.
</summary>
</histogram>
<histogram name="Media.VideoCapture.FrameRate" units="fps"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video Capture Device frame rate requested by VideoCaptureManager on
AllocateAndStart(). The collection is made in the VideoCaptureController
upon reception of the first frame.
</summary>
</histogram>
<histogram name="Media.VideoCapture.GetDeviceInfosResult"
enum="GetDeviceInfosResult" expires_after="M118">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Used to track the resolution of
ServiceVideoCaptureProvider::GetDeviceInfosAsync() and if a retry has been
used to get to the current result. See http://crbug.com/1379392.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Height" units="pixels"
expires_after="2023-12-31">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video Capture Device captured frame height in pixels. The collection is made
in the VideoCaptureController upon reception of the first frame.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Mac.Device.CapturedIOSurface"
enum="Boolean" expires_after="2023-03-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A count of how often the capture device delivers an IOSurface to the capture
pipeline. This is recorded once per opening of the camera, when the first
video frame is captured.
</summary>
</histogram>
<histogram
name="Media.VideoCapture.Mac.Device.CapturedWithRequestedPixelFormat"
enum="Boolean" expires_after="2023-03-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A boolean count of how often the requested pixel format is the one that was
actually captured. This is recorded once per opening of the camera, when the
first video frame is captured.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Mac.Device.CapturedWithRequestedResolution"
enum="ResolutionComparison" expires_after="2023-04-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
An enumeration count of whether or not the requested resolution equals the
captured resolution, detailing which dimensions differ in the enum. This is
recorded once per opening of the camera, when the first video frame is
captured.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Mac.Device.ReactionEffectsGesturesState"
enum="ReactionEffectsGesturesState" expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
An enumeration count of whether reaction effects are enabled and can be
triggered by gestures. This is recorded once per opening of the camera.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Mac.Device.RequestedPixelFormat"
enum="VideoPixelFormatUnion" expires_after="2023-03-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the pixel formats requested by the VideoCaptureDevice on Mac. This is
recorded when the first video frame is captured.
</summary>
</histogram>
<histogram name="Media.VideoCapture.ScaleOverride" units="units"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The scalar multiplier used for adjusting the content size during tab capture
to align with the requested capture size, multiplied by 100. Recorded when
capture of a web contents is started, the content size of the capture
changes, and when capture stops.
</summary>
</histogram>
<histogram name="Media.VideoCapture.ScaleOverrideChangeCount" units="units"
expires_after="2025-04-24">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of times the scale override changed in a single capture session.
Recorded when capture of a web contents is stopped.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Start" enum="Boolean"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the start attempts for video capture, to be compared with the
StartOutcome enum histogram.
</summary>
</histogram>
<histogram name="Media.VideoCapture.StartErrorCode" enum="VideoCaptureError"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts detailed outcomes of first starting video capture, as a breakdown of
Media.VideoCapture.StartOutcome based on the error codes which caused
failures, or kNone if we started successfully. Can also be viewed as the
subset of reports to Media.VideoCapture.Error which occur before
VideoCaptureImpl first transitions to STARTED.
</summary>
</histogram>
<histogram name="Media.VideoCapture.StartOutcome"
enum="VideoCaptureStartOutcome" expires_after="2025-01-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the times Starting video capture results in success or failure (due
to eg timeouts etc).
</summary>
</histogram>
<histogram name="Media.VideoCapture.StartSourceSuccessLatency" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total time for a VideoSourceImpl to start a device to serve the first push
subscription mojo connection. Only recorded if starting is successful.
</summary>
</histogram>
<histogram name="Media.VideoCapture.StreamShared" enum="Boolean"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when attempting to access a camera and the value represents whether
the camera is shared due to multiple camera access.
</summary>
</histogram>
<histogram name="Media.VideoCapture.StreamSharedSameOrigin" enum="Boolean"
expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records when attempting to share a camera and the value represents whether
the origin requesting to share the camera stream is the same origin
initiating the video capture device.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Track.FrameDrop.{StreamType}"
enum="VideoCaptureFrameDropReason" expires_after="2024-03-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
An event for this histogram is emitted once for each time a video frame is
dropped for a {StreamType} video source, but gets suppressed after
`MediaStreamVideoTrack::kMaxConsecutiveFrameDropForSameReasonCount`
consecutive drops. Logging resumes again if another frame is delivered or if
the frame drop reason changes. The frame drop is recorder on a per-track
basis (i.e. cloned tracks also log) and includes out-of-process frame drops
(e.g. a DeviceCapture webcam source dropping frames in the capture process).
</summary>
<token key="StreamType">
<variant name="DeviceCapture"/>
<variant name="DisplayCapture"/>
<variant name="DisplayCaptureCurrentTab"/>
<variant name="GumDesktopCapture"/>
<variant name="GumTabCapture"/>
</token>
</histogram>
<histogram name="Media.VideoCapture.Width" units="pixels"
expires_after="2025-05-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video Capture Device captured frame width in pixels. The collection is made
in the VideoCaptureController upon reception of the first frame.
Warning: this histogram was expired from 2024-05-05 to 2024-05-21; data may
be missing.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.D3DDeviceRemovedReason" enum="Hresult"
expires_after="2025-05-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes received by VideoCaptureDeviceMFWin when checking for D3D11
device removal reason.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.CaptureBeginTime.Interval"
units="ms" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the difference between consecutive capture begin times recieved from
MFSamples. Recorded on each received sample. Offset by +150ms to allow
recording of negative values.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.CaptureBeginTime.MFTimeOffset"
units="ms" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the difference between local chrome clock and MFTIME clock. Recorded
on each received sample. Offset by +150ms to allow recording of negative
values.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.CapturePixelFormat"
enum="VideoPixelFormatUnion" expires_after="2025-05-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the pixel formats produced by the VideoCaptureDevice on Windows. This
is recorded when the camera is opened.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.InternalPixelFormat"
enum="VideoPixelFormatUnion" expires_after="2025-06-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the pixel formats used internaly by Windows VideoCaptureEngine. This
is recorded when the camera is opened.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.IsSharedTexture" enum="Boolean"
expires_after="2025-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Determine what proportion of frames might actually benefit from zero-copy on
Windows. This is recorded when the camera is opened and we get the texture
from IMFCaptureEngine.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.Device.RequestedPixelFormat"
enum="VideoPixelFormatUnion" expires_after="2025-03-19">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the pixel formats requested by the consumer on Windows. This is
recorded when the camera is opened.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.DeviceFactory.CaptureApi"
enum="VideoCaptureApi" expires_after="2025-08-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The Capture API that is used on Windows. This is recorded when the camera is
opened.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Win.ErrorEvent" enum="Hresult"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes received by VideoCaptureDeviceMFWin on Windows which caused a
kWinMediaFoundationGetMediaEventStatusFailed error, ending video capture.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Windows.BackendUsed"
enum="VideoCaptureWinBackendUsed" expires_after="M77">
<owner>[email protected]</owner>
<summary>
Indicates which video capture backend is used on Windows. A count is
recorded each time a new VideoCaptureDeviceFactoryWin instance is created.
</summary>
</histogram>
<histogram base="true" name="Media.VideoCapture.Windows.ImageCaptureOutcome"
enum="ImageCaptureOutcome" expires_after="M85">
<owner>[email protected]</owner>
<summary>
Counts number of times taking a still image on Windows fails/succeeds.
</summary>
</histogram>
<histogram
name="Media.VideoCapture.Windows.NumberOfRetriesNeededForMFGetAvailableDeviceMediaType"
units="retries" expires_after="M85">
<owner>[email protected]</owner>
<summary>
Counts how many retries are needed for calls to MediaFoundation function
GetAvailableDeviceMediaType before getting a result different from
MF_E_INVALIDREQUEST or giving up.
</summary>
</histogram>
<histogram
name="Media.VideoCapture.Windows.NumberOfRetriesNeededForMFGetDeviceStreamCategory"
units="retries" expires_after="2023-03-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts how many retries are needed for calls to MediaFoundation function
GetDeviceStreamCategory before getting a result different from
MF_E_INVALIDREQUEST or giving up.
</summary>
</histogram>
<histogram
name="Media.VideoCapture.Windows.NumberOfRetriesNeededForMFGetDeviceStreamCount"
units="retries" expires_after="2022-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts how many retries are needed for calls to MediaFoundation function
GetDeviceStreamCount before getting a result different from
MF_E_INVALIDREQUEST or giving up.
</summary>
</histogram>
<histogram name="Media.VideoCaptureManager" units="ms" expires_after="M85">
<owner>[email protected]</owner>
<summary>Measures the time taken for VideoCaptureManager::</summary>
</histogram>
<histogram name="Media.VideoCaptureManager.DesktopCaptureImplementationAndType"
enum="DesktopCaptureImplementationAndType" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates which desktop capture implementation and DesktopID::Type was used
for a desktop capture session. Recorded on instantiation of the desktop
capturer.
</summary>
</histogram>
<histogram
name="Media.VideoCaptureService.DurationFromLastConnectToClosingConnectionAfterCapture"
units="ms" expires_after="M78">
<owner>[email protected]</owner>
<summary>
Measures the duration from the time the Browser connected to the video
capture service to the time it closed the connection. Entries are only
logged if the service was used for creating an actual capture session as
opposed to enumerating devices only.
</summary>
</histogram>
<histogram
name="Media.VideoCaptureService.DurationFromLastConnectToClosingConnectionAfterEnumerationOnly"
units="ms" expires_after="M78">
<owner>[email protected]</owner>
<summary>
Measures the duration from the time the Browser connected to the video
capture service to the time it closed the connection. Entries are only
logged if the service was used for enumerating devices only, but not for
creating an actual capture session.
</summary>
</histogram>
<histogram
name="Media.VideoCaptureService.DurationFromLastConnectToConnectionLost"
units="ms" expires_after="M78">
<owner>[email protected]</owner>
<summary>
Measures the duration from the time the Browser connected to the video
capture service to the time the connection was lost.
</summary>
</histogram>
<histogram name="Media.VideoCaptureService.DurationUntilReconnectAfterCapture"
units="ms" expires_after="M77">
<owner>[email protected]</owner>
<summary>
Measures the duration from the time the Browser last closed or lost
connection to the video capture service to the time it reconnects. This
duration only gets logged for reconnects after usage of the service for
capture (as opposed to enumeration-only usage).
</summary>
</histogram>
<histogram
name="Media.VideoCaptureService.DurationUntilReconnectAfterEnumerationOnly"
units="ms" expires_after="M78">
<owner>[email protected]</owner>
<summary>
Measures the duration from the time the Browser last closed or lost
connection to the video capture service to the time it reconnects. This
duration only gets logged for reconnects after enumeration-only usage of the
service.
</summary>
</histogram>
<histogram name="Media.VideoCaptureService.Event"
enum="VideoCaptureServiceEvent" expires_after="M82">
<owner>[email protected]</owner>
<summary>
Counts video capture service events, such as startup, shutdown, and
connection lost.
</summary>
</histogram>
<histogram name="Media.VideoCodec" enum="VideoCodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>[email protected]</owner>
<summary>Video codec used in HTML5 media.</summary>
</histogram>
<histogram name="Media.VideoDecoderFallback.{VideoCodec}"
enum="BooleanDidFallBack" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether Chrome had to fall back to a secondary video decoder with
{VideoCodec} video codec after the primary decoder failed reinitialization.
</summary>
<token key="VideoCodec" variants="VideoCodec"/>
</histogram>
<histogram name="Media.VideoDecodeStatsDB.OpSuccess.{DbOperation}"
enum="BooleanSuccess" expires_after="never">
<!-- expires-never: MediaCapabilities DB health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates whether we were successful performing the operation to
{DbOperation}. Recorded once the operation completes.
</summary>
<token key="DbOperation" variants="DbOperation"/>
</histogram>
<histogram name="Media.VideoDecodeStatsDB.OpTiming.{DbOperation}"
units="microseconds" expires_after="never">
<!-- expires-never: MediaCapabilities DB health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates duration of time performing the operation to {DbOperation}.
Recorded once the operation completes or times out. Reported for all users
regardless of clock resolution.
</summary>
<token key="DbOperation" variants="DbOperation"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Area" units="pixels"
expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The hundredth of a resolution area (i.e. width x height /100) configured in
a video encoder. Recorded when a video encoder is destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Frames" units="frames"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of successfully encoded frames. Recorded when a video encoder is
destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Height" units="pixels"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The height configured in a video encoder. Recorded when a video encoder is
destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Profile"
enum="VideoCodecProfile" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Video codec profile used in a video encoder. Recorded when a video encoder
is destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Status" enum="EncoderStatus"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The last encoder status in a video encoder. If an error occurs, then non kOk
value is recorded. Recorded when a video encoder is destroyed or
reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.SVC"
enum="SVCScalabilityMode" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
SVC Scalability mode configured in a video encoder. Recorded when a video
encoder is destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoEncoder.{Usage}.{Impl}.Width" units="pixels"
expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The width configured in a video encoder. Recorded when a video encoder is
destroyed or reconfigured.
</summary>
<token key="Usage" variants="VideoEncoderUsage"/>
<token key="Impl" variants="VideoEncoderImpl"/>
</histogram>
<histogram name="Media.VideoFrameSubmitter" units="ms" expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Delay between a VideoFrame being decoded and it being consumed by the OS
presentation API (on ChromeOS, this includes the display controller too).
</summary>
</histogram>
<histogram name="Media.VideoFrameSubmitter.PreSubmitBuffering" units="ms"
expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Delay between a VideoFrame being decoded and it being handed over to the
CompositorFrameSink, essentially capturing the buffering in the Renderer.
This value is strictly included in Media.VideoFrameSubmitter
</summary>
</histogram>
<histogram name="Media.VideoHeight.Initial.{PlaybackType}" units="pixels"
expires_after="2025-02-27">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The height of the first video frame in an HTML5 video for {PlaybackType}
playbacks. Reported when the first video frame is available.
</summary>
<token key="PlaybackType">
<variant name="All" summary="all"/>
<variant name="EME"/>
<variant name="HLS"/>
<variant name="MSE"/>
<variant name="SRC"/>
</token>
</histogram>
<histogram name="Media.VideoRenderer.CadenceChanges" units="changes"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates how many cadence changes have occurred during playback, a zero
value is emitted at the beginning of playback. Subsequent values are emitted
during video rendering for each cadence change (up to a maximum of 10).
</summary>
</histogram>
<histogram name="Media.WatchTime" units="ms" expires_after="2025-01-05">
<owner>[email protected]</owner>
<summary>
Watch time is defined as the amount of elapsed media time for audio+video
media aggregated per player instance. A minimum of 7 seconds of unmuted,
foreground media must be watched to start watch time monitoring. Watch time
is checked on a regular basis and reported to UMA upon one of the stop
events mentioned below or at player destruction if none occur prior.
Any one of paused, hidden, or muted is sufficient to stop watch time metric
reports. Each of these has a hysteresis where if the state change is undone
within some time, the watch time will be counted as uninterrupted.
Power events (on/off battery power) have a similar hysteresis, but unlike
the aforementioned properties, will not stop metric collection.
Each seek event will result in a new watch time metric being started and the
old metric finalized as accurately as possible.
</summary>
</histogram>
<histogram name="Media.WebMediaPlayerImpl.HLS.HasAccessControl" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When an HLS manifest is found during loading (on Android only), and the
response is CORS cross-origin, this histogram records whether the response
included an Access-Control-Allow-Origin header. Such requests are likely to
be supported by fetch() if the mode is correctly configured.
</summary>
</histogram>
<histogram name="Media.WebMediaPlayerImpl.HLS.IsCorsCrossOrigin" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When an HLS manifest is found during loading (on Android only), records
whether the request was CORS cross-origin. These are cases that could not be
implemented using fetch(). Note: subresources referenced by the manifest are
not considered; they may have different origins or CORS configurations.
</summary>
</histogram>
<histogram name="Media.WebMediaPlayerImpl.HLS.IsMixedContent" enum="Boolean"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When an HLS manifest is found during loading (on Android only), records
whether the request would be mixed content. These are cases that could not
be implemented using fetch(). Note: subresources referenced by the manifest
are not considered; they may have different origins.
</summary>
</histogram>
<histogram name="Media.WebMediaPlayerImpl.HLS{Variant}.MimeType"
enum="MimeTypeOfHlsManifest" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When an HLS manifest is found during loading (on Android only), {Variant}
then this histogram records the MIME type of the response.
This metric should help assess the web compatibility risk of strict MIME
type enforcement, as discussed in
https://github.com/annevk/orb/issues/29#issuecomment-967432934
</summary>
<token key="Variant">
<variant name="" summary=""/>
<variant name=".CorsCrossOrigin"
summary="and the response is cross-origin/opaque,"/>
</token>
</histogram>
<histogram
name="Media.WebmMuxer.DidAdjustTimestamp.{StreamTypesRecorded}.{Domain}"
enum="Boolean" expires_after="2024-04-28">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Boolean indicating if {Domain} stream timestamps had to be corrected during
a muxing session with {StreamTypesRecorded} present. Reported on muxer
destructor.
</summary>
<token key="StreamTypesRecorded">
<variant name="AudioOnly"/>
<variant name="AudioVideo"/>
<variant name="VideoOnly"/>
</token>
<token key="Domain">
<variant name="Audio"/>
<variant name="Muxer"/>
<variant name="Video"/>
</token>
</histogram>
<histogram name="Media.WebrtcVideoPerfHistory.GetPerfInfoCodecProfile"
enum="VideoCodecProfile" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The video codec profile that was used when calling GetPerfInfo. Recorded for
each call to GetPerfInfo if certain sanity checks pass.
</summary>
</histogram>
<histogram name="Media.WebrtcVideoPerfHistory.SavePerfRecordCodecProfile"
enum="VideoCodecProfile" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The video codec profile that was provided to SavePerfRecord. Recorded for
each call to SavePerfRecord if certain sanity checks pass.
</summary>
</histogram>
<histogram name="Media.WebrtcVideoPerfHistory.SmoothPrediction.{Operation}"
units="custom" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks how the smoothness prediction value was determined (smooth by
default, smooth from data, not smooth from data, implicitly smooth, smooth
override, or implicitly not smooth) multiplexed with the configuration
(codec, pixels, hardware_accelerated). See the code for details. This gives
a sparse histogram that is best interpreted using a script for
demultiplexing. The value is reported each time either encodingInfo() or
decodingInfo() are called and requests a smoothness prediction from
WebrtcVideoPerfHistory.
</summary>
<token key="Operation">
<variant name="Decode"/>
<variant name="Encode"/>
</token>
</histogram>
<histogram
name="Media.WebrtcVideoPerfHistory.SmoothVolatility.{Operation}.{Framerate}"
enum="SmoothVolatility" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Tracks the volatilty of the smoothness predictions after updates to the
database, that is, if the smoothness prediction changes or stays at the same
value. Recorded after each update to the WebRTC MediaCapabilities database
if there was an existing record for the corresponding configuration.
</summary>
<token key="Operation">
<variant name="Decode"/>
<variant name="Encode"/>
</token>
<token key="Framerate">
<variant name="30fps"/>
<variant name="60fps"/>
</token>
</histogram>
<histogram name="Media.WebrtcVideoStatsDB.OpSuccess.{DbOperation}"
enum="BooleanSuccess" expires_after="never">
<!-- expires-never: WebRTC MediaCapabilities DB health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates whether we were successful performing the operation to
{DbOperation}. Recorded once the operation completes.
</summary>
<token key="DbOperation" variants="DbOperation"/>
</histogram>
<histogram name="Media.WebrtcVideoStatsDB.OpTiming.{DbOperation}"
units="microseconds" expires_after="never">
<!-- expires-never: WebRTC MediaCapabilities DB health metric. -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Indicates duration of time performing the operation to {DbOperation}.
Recorded once the operation completes or times out. Reported for all users
regardless of clock resolution.
</summary>
<token key="DbOperation" variants="DbOperation"/>
</histogram>
<histogram name="Media.{VaapiClientName}.VAAPIError" enum="VaapiFunctions"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Error codes reported by libva (via VaapiWrapper) while being used from the
specified client name. {VaapiClientName}
</summary>
<token key="VaapiClientName">
<variant name="VaapiImageDecodeAcceleratorWorker" summary=""/>
<variant name="VaapiImageProcessorBackend" summary=""/>
<variant name="VaapiJpegEncodeAccelerator" summary=""/>
<variant name="VaapiJpegEncodeAccelerator.Vpp" summary=""/>
<variant name="VaapiMjpegDecodeAccelerator" summary=""/>
<variant name="VaapiMjpegDecodeAccelerator.Vpp" summary=""/>
<variant name="VaapiVideoDecodeAccelerator" summary=""/>
<variant name="VaapiVideoDecodeAccelerator.Vpp" summary=""/>
<variant name="VaapiVideoDecoder" summary=""/>
<variant name="VaapiVideoEncodeAccelerator" summary=""/>
<variant name="VaapiVideoEncodeAccelerator.Vpp" summary=""/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.DeviceSelection.PageInfo.Camera.NumDevices"
units="devices" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of camera devices available in the PageInfo combobox.
Note: There is a change for the zero device case starting from M128 where we
no longer record the zero case if the list of devices is not initialized
yet.
</summary>
</histogram>
<histogram name="MediaPreviews.UI.DeviceSelection.PageInfo.Mic.NumDevices"
units="devices" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of microphones (audio input) devices available in the
PageInfo combobox. Note: There is a change for the zero device case starting
from M128 where we no longer record the zero case if the list of devices is
not initialized yet.
</summary>
</histogram>
<histogram
name="MediaPreviews.UI.DeviceSelection.Permissions.Camera.NumDevices"
units="devices" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of camera devices available in the Permissions combobox.
Note: There is a change for the zero device case starting from M128 where we
no longer record the zero case if the list of devices is not initialized
yet.
</summary>
</histogram>
<histogram name="MediaPreviews.UI.DeviceSelection.Permissions.Mic.NumDevices"
units="devices" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of microphones (audio input) devices available in the
Permissions combobox. Note: There is a change for the zero device case
starting from M128 where we no longer record the zero case if the list of
devices is not initialized yet.
</summary>
</histogram>
<histogram name="MediaPreviews.UI.DeviceSelection.{UiLocation}.{Type}.Action"
enum="MediaPreviewDeviceSelectionUserAction" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the kind of user interaction with combobox shown in {UiLocation}
media preview. This is recorded during media preview destructor.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
<token key="Type">
<variant name="Camera"/>
<variant name="Mic"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.PageInfo.Camera.NumInUseDevices"
units="devices" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of previews shown for camera devices in use on PageInfo.
</summary>
</histogram>
<histogram name="MediaPreviews.UI.PageInfo.Camera.PixelHeight" units="pixels"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the height in pixels of the camera frames rendered in the PageInfo
preview (not the actual height of the preview itself).
</summary>
</histogram>
<histogram name="MediaPreviews.UI.PageInfo.Mic.NumInUseDevices" units="devices"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the number of previews shown for microphones (audio input) devices
in use on PageInfo.
</summary>
</histogram>
<histogram name="MediaPreviews.UI.Permissions.Camera.PixelHeight"
units="pixels" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the height in pixels of the camera frames rendered in the
Permissions preview (not the actual height of the preview itself).
</summary>
</histogram>
<histogram name="MediaPreviews.UI.Preview.{UiLocation}.Video.ActualFPS"
units="fps" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the actual FPS of the {UiLocation} camera preview for the time it's
on screen.
</summary>
<token key="UiLocation">
<variant name="PageInfo" summary="PageInfo video preview Actual FPS"/>
<variant name="Permissions" summary="Permissions video preview Actual FPS"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.Preview.{UiLocation}.Video.Delay" units="ms"
expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the duration in which the camera took till getting the first frame.
This would help measuring the delay of camera stream.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.Preview.{UiLocation}.Video.ExpectedFPS"
units="fps" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the actual FPS of the {UiLocation} camera preview for the time it's
on screen.
</summary>
<token key="UiLocation">
<variant name="PageInfo" summary="PageInfo video preview Expected FPS"/>
<variant name="Permissions"
summary="Permissions video preview Expected FPS"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.Preview.{UiLocation}.Video.RenderedPercent"
units="%" expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the percentage of frames that we got from the camera (ActualFPS)
that were actually rendered. Recorded when the {UiLocation} preview is
closed.
</summary>
<token key="UiLocation">
<variant name="PageInfo" summary="PageInfo video Rendered Percent"/>
<variant name="Permissions" summary="Permissions video Rendered Percent"/>
</token>
</histogram>
<histogram
name="MediaPreviews.UI.Preview.{UiLocation}.Video.TimeToActionWithoutPreview"
units="ms" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the duration till media preview dialog closes if there were no
frames received.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
</histogram>
<histogram
name="MediaPreviews.UI.Preview.{UiLocation}.Video.TotalVisibleDuration"
units="ms" expires_after="2025-07-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the duration in which media preview dialog is actually receiving
camera feed. If the user switched between multiple cameras, a sum of the
camera feeds durations is recorded. If the dialog closes in under 50 ms,
this is treated the same way as if we didn't receive any frames. This would
help verifying whether the preview was actually seen by the user or not.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.{UiLocation}.OriginTrialAllowed"
enum="Boolean" expires_after="2025-05-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
When Media Previews are requested, records whether the previews were allowed
or blocked by the site's membership in the MediaPreviewsOptOutPersistent
origin trial.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
</histogram>
<histogram name="MediaPreviews.UI.{UiLocation}.{Type}.Duration" units="s"
expires_after="2025-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the length of time the preview is on-screen. As a simplification, we
will just record the length of time where {UiLocation} is open. Recorded in
the destructor of {UiLocation}.
</summary>
<token key="UiLocation">
<variant name="PageInfo"/>
<variant name="Permissions"/>
</token>
<token key="Type">
<variant name="Camera"/>
<variant name="CameraAndMic"/>
<variant name="Mic"/>
</token>
</histogram>
<histogram base="true" name="MediaRouter.Cast.App.Availability" units="ms"
expires_after="2024-11-17">
<!-- Name completed by histogram_suffixes name="MediaRouterSuccess" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Round trip time for a Cast app availability request. Can be suffixed with
Success or Failure.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Channel.ConnectResult" enum="BooleanSuccess"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether opening Cast channel succeeds or not. Recorded when all opening
channel attempts (including retry attempts) finish.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Channel.Error"
enum="MediaRouterCastChannelError" expires_after="2025-02-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Errors encountered on a Cast channel. Recorded when a Cast channel fails to
open, or when an opened channel fails to respond to keepalive ping request
and times out.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.DeviceNameLength" units="characters"
expires_after="2022-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records the length of the friendly name of a Cast device when we succeed to
open a Cast channel to it.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Discovery.ConnectedDevicesCount"
units="devices" expires_after="2025-01-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of connected Cast devices. Recorded when browser finishes
discovering Cast devices. Recording happens roughly once per hour.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Discovery.KnownDevicesCount" units="devices"
expires_after="2025-01-11">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of known Cast devices. Recorded when browser finishes discovering
Cast devices. Recording happens roughly once per hour.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Discovery.SinkSource"
enum="MediaRouterCastSinkSource" expires_after="2024-10-09">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>The source of discovery for a newly-created Cast sink.</summary>
</histogram>
<histogram name="MediaRouter.Cast.Feedback.Event"
enum="MediaRouterCastFeedbackEvent" expires_after="2022-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Events related to the WebUI Cast feedback dialog.</summary>
</histogram>
<histogram name="MediaRouter.Cast.LaunchSessionResponse.AppType"
enum="MediaRouterResponseReceiverAppType" expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The type of app that the receiver device choose to launch. Recorded when
receiving a receiver status response to the launch request.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Mdns.Channel.Open_Failure" units="ms"
expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds taken to fail to open a cast channel. Recorded when
one opening channel attempt fails.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Mdns.Channel.Open_Success" units="ms"
expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds taken to successfully open a cast channel. Recorded
when one opening channel attempt succeeds.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.PendingUserAuthLatency" units="s"
expires_after="2025-08-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
In some scenarios casting doesn't start until the user approves it on the
receiver side. This histogram records the time it takes between requesting
to start casting and receiving a response from the receiver that it is now
waiting for user approval.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.UserPromptWhenLaunchingCast"
enum="MediaRouterUserPromptWhenLaunchingCast" expires_after="2025-08-20">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This histogram is recorded whenever the user attempts to start casting and a
receiver-side prompt is shown, and when the user disapproves it. The other
two cases, when the user approves it or when it times out, are not recorded.
As both these cases can be received without a prompt before it and this
should not be recorded.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Audio.PlaybackOnReceiver"
enum="Boolean" expires_after="2024-08-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records whether audio is played on the receiver device. If not, then on the
sender side. Recorded when a new site-initiated mirroring session is
started.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Launch" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Total time to launch a Cast Streaming mirror session.</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total length of a Cast Streaming mirror session of any type, including the
time spent in media remoting.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.AccessCode"
units="ms" expires_after="2024-09-18">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total length of a Cast Streaming mirror session of any type, when the cast
sink was discovered via access code.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.OffscreenTab"
units="ms" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total length of a Cast Streaming Offscreen Tab mirror session.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.Screen" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Total length of a Cast Streaming Screen mirror session.</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.Tab" units="ms"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Total length of a Cast Streaming mirror session of type Tab and NOT of types
offscreen tab or local file. This includes the time spent in media remoting.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Start.Failure.AccessCodeManualEntry"
enum="MirroringServiceErrorType" expires_after="2024-09-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session to a device discovered by access code
manual entry fails to start, record the error associated with the event.
</summary>
</histogram>
<histogram
name="MediaRouter.CastStreaming.Start.Failure.AccessCodeRememberedDevice"
enum="MirroringServiceErrorType" expires_after="2024-09-04">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session to a device discovered by access code and
remembered via caching fails to start, record the error associated with the
event.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Start.Failure.Native"
enum="MirroringServiceErrorType" expires_after="2024-07-14">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session fails to start, record the error
associated with the event. This is recorded only for the native Cast MRP.
See MediaRouter.CastStreaming.Start.Failure for the extension MRP.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Start.Success" enum="MirrorType"
expires_after="2024-09-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session is successfully started, record if it was
for a Tab or Desktop mirroring session.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Start.Success.AccessCodeManualEntry"
enum="MirrorType" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session is successfully started, when the device
was discovered by access code maual entry, record if it was for a Tab or
Desktop mirroring session.
</summary>
</histogram>
<histogram
name="MediaRouter.CastStreaming.Start.Success.AccessCodeRememberedDevice"
enum="MirrorType" expires_after="2024-11-03">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whenever a Cast Streaming session is successfully started, when the device
was discovered by access code remembered device caching, record if it was
for a Tab or Desktop mirroring session.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.AvailableDevicesCount" units="devices"
expires_after="2025-07-22">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of available DIAL devices. Recorded when browser finishes
discovering DIAL devices. Recording happens roughly once per hour.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.CreateRoute"
enum="MediaRouterDialCreateRouteResult" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of a DIAL CreateRoute request. Recorded when the user requests to
create a media route to a DIAL device.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.DeviceDescriptionParsingResult"
enum="MediaRouterDeviceDescriptionParsingResult" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result from parsing DIAL device description XML text. Recorded when utility
process returns a DIAL device description object to the DIAL Media Route
Provider.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.FetchAppInfo"
enum="MediaRouterDialFetchAppInfoResult" expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of a DIAL app info request. Recorded when an app info request is
issued to a DIAL device.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.KnownDevicesCount" units="devices"
expires_after="2025-02-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of known DIAL devices. Recorded when browser finishes discovering
DIAL devices. Recording happens roughly once per hour.
</summary>
</histogram>
<histogram name="MediaRouter.Discovery.LocalNetworkAccessPermissionGranted"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the local network access permission is granted when the local
discovery starts. Recorded once per browser session. Recorded on macOS 15 or
later.
</summary>
</histogram>
<histogram name="MediaRouter.Icon.Click.Location"
enum="MediaRouterDialogActivationLocation" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>Location the user clicked to open the Media Router dialog.</summary>
</histogram>
<histogram name="MediaRouter.MirroringService.SessionError"
enum="MirroringServiceErrorType" expires_after="2025-01-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Records errors encountered by the Mirroring Service. If an error occurs
while media remoting, the service attempts to revert to mirroring. Otherwise
mirroring is terminated.
</summary>
</histogram>
<histogram name="MediaRouter.PresentationRequest.AvailabilityUrlType"
enum="PresentationUrlType" expires_after="2025-04-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The type of Presentation URL used in a PresentationRequest by a web page.
</summary>
</histogram>
<histogram name="MediaRouter.PresentationRequest.UrlBySink2"
enum="PresentationUrlBySink" expires_after="2025-04-29">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Logged when the Media Router starts a presentation according to the type of
presentation URL and the type of media sink.
</summary>
</histogram>
<histogram name="MediaRouter.Provider.CreateRoute.Result"
enum="MediaRouteProviderResult" expires_after="2025-08-05">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result of a request to a MediaRouteProvider to create a route.
CreateRoute.Result (without a suffix) is recorded for the extension or an
unknown MRP.
</summary>
</histogram>
<histogram name="MediaRouter.Provider.JoinRoute.Result"
enum="MediaRouteProviderResult" expires_after="2025-08-05">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result of a request to a MediaRouteProvider to join a route.
JoinRoute.Result (without a suffix) is recorded for the extension or an
unknown MRP.
</summary>
</histogram>
<histogram name="MediaRouter.Provider.TerminateRoute.Result"
enum="MediaRouteProviderResult" expires_after="2025-08-05">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Result of a request to a MediaRouteProvider to terminate a route.
TerminateRoute.Result (without a suffix) is recorded for the extension or an
unknown MRP.
</summary>
</histogram>
<histogram name="MediaRouter.RemotePlayback.SessionLoadTime" units="ms"
expires_after="2025-01-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Measures how long, from the start of a streaming session, until it switches
to Remoting for Remote Playback sessions. The start time is measured when
the streaming session has started and the end time is measured when the
remoting starts. The metric is recorded when both the start time and end
time are measured and duration time is calculated.
</summary>
</histogram>
<histogram name="MediaRouter.RemotePlayback.SessionStartsBeforeTimeout"
enum="Boolean" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether Remoting starts before it timeouts for Remote Playback sessions.
Recorded when the timeout callback is fired and when Remoting starts.
</summary>
</histogram>
<histogram name="MediaRouter.Sink.SelectedType" enum="MediaSinkType"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The type of the Media Sink that media is being cast to. Recorded each time
the user selects a Media Sink to start casting. Recorded for all the UI
entry points.
</summary>
</histogram>
<histogram name="MediaRouter.Sink.SelectedType.{Ui}" enum="MediaSinkType"
expires_after="2024-11-17">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The type of the Media Sink that media is being cast to. Recorded each time
the user selects a Media Sink to start casting from {Ui}.
</summary>
<token key="Ui">
<variant name="CastHarmony"/>
<variant name="GlobalMediaControls"/>
</token>
</histogram>
<histogram name="MediaRouter.Source.CastingSource"
enum="MediaRouterSourceTypes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The source of a Media Router session. This is recorded to keep track of what
kind of media is being streamed.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Android.DialogAction"
enum="MediaRouterAndroidDialogAction" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A Mediarouter dialog can be two types: (1) A route controller dialog where
users can stop casting. (2) A device picker where users can select a device
and cast to it. This histogram records when users interact with the dialog
(start or stop casting).
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Android.DialogType"
enum="MediaRouterAndroidDialogType" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A MediaRouter dialog is opened when users click on the Cast buttons supplied
by the Cast SDK or the default HTML media player. This histogram records the
type of the dialog when the dialog is created.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Device.Count" units="units"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Counts the number of devices known and populated to the Media Router dialog
(or the Global Media Controls' device picker) three seconds after the dialog
loads. Always expected to be non-negative. This includes data recorded from
Clank, which uses Android's MediaRouter framework.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Dialog.ActivationLocationAndCastMode"
enum="MediaRouterDialogActivationLocationAndCastMode"
expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records how the Cast dialog was opened and what Cast mode was used
whenever a Cast session starts.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Dialog.IconStateAtOpen"
enum="MediaRouterIconState" expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether the Cast toolbar icon is in its ephemeral state (shown only when the
feature is active), or is pinned to the toolbar by user pref / admin policy.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.PermissionRejectedViewAction"
enum="MediaRouterUiPermissionRejectedViewEvents" expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Recorded when the permission rejected error is shown in the Cast/Gmc dialog
and when users click on the system settings link in the error message.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.{DialogType}Dialog.LoadedWithData" units="ms"
expires_after="2025-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Duration in milliseconds taken from the user click to open the {DialogType}
dialog to show available devices. Recorded only when there are discovered
devices shown in the dialog.
</summary>
<token key="DialogType">
<variant name="Cast" summary="Cast"/>
<variant name="GMC" summary="Global Media Controls"/>
</token>
</histogram>
<histogram name="MediaRouter.WiredDisplay.AvailableDevicesCount" units="units"
expires_after="2025-02-05">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of Media Sinks available for Casting a Presentation API URL to
local screens. Recorded at most once an hour, when the Wired Display Media
Route Provider reports an update on the sink count.
</summary>
</histogram>
</histograms>
</histogram-configuration>