blob: 4b5c3dd88754cf3fe2bf66fba869849d13b0f484 [file] [log] [blame]
<!--
Copyright 2020 The Chromium Authors. All rights reserved.
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 send CLs to chromium-metrics-reviews@google.com rather than to specific
individuals. These CLs will be automatically reassigned to a reviewer within
about 5 minutes. This approach helps the metrics team to load-balance incoming
reviews. Googlers can read more about this at go/gwsq-gerrit.
-->
<histogram-configuration>
<histograms>
<histogram name="Media.AImageReaderGLOwner.AcquireImageResult"
enum="MediaStatus" expires_after="2018-11-25">
<owner>vikassoni@chromium.org</owner>
<summary>Error codes to handle AImage and AImageReader api calls.</summary>
</histogram>
<histogram name="Media.Android.BackgroundVideoTime" units="ms"
expires_after="2020-04-05">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Android-specific metric. The time between the moment the backgrounded video
playback is started (meaning the user just resumed the backgrounded video
allowing playback) and the moment it stops being background playback by the
current playing video either going foreground or being paused by the user.
Note: on Android, videos are suspended when backgrounded.
</summary>
</histogram>
<histogram name="Media.Android.MediaPlayerSuccess" enum="MediaPlayerExitStatus"
expires_after="2021-06-06">
<owner>tguilbert@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Android: Whether MediaPlayer exited without errors.</summary>
</histogram>
<histogram name="Media.Android.MediaPlayerWatchTime"
enum="MediaPlayerWatchTimeType" expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</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.CloseNewestToExitConcurrentPlayback"
enum="ExitConcurrentPlaybackContents" expires_after="2019-05-30">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records when an audible tab is closed and we now only have one audible tab
open.
</summary>
</histogram>
<histogram name="Media.Audible.ConcurrentTabsTime" units="ms"
expires_after="2020-09-05">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audible.ConcurrentTabsWhenStarting" units="units"
expires_after="2020-09-05">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records how many tabs were audible when a new tab started to be audible.
</summary>
</histogram>
<histogram name="Media.Audible.MaxConcurrentTabsInSession" units="units"
expires_after="2020-09-05">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.ActualInputBufferFrameSizeMac" units="units"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Size (in audio frames) of native I/O buffers that is set by the audio
manager when calling AUAudioInputStream::Open(). I.e., it is the actual
buffer size and it can differ from the one that the client requested. Only
sampled when Media.Audio.InputStartupSuccessMac reports 'Failure'.
</summary>
</histogram>
<histogram name="Media.Audio.AudioUnitRenderHasWorkedMac"
enum="BooleanEverWorked" expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Stored in combination with Media.Audio.RenderFailsWhenBufferSizeChangesMac.
It is set to true if calls to AudioUnitRender has ever worked, i.e., we did
not start to see kAudioUnitErr_CannotDoInCurrentContext error messages
directly from start but there has been at least on successful call to
AudioUnitRender.
</summary>
</histogram>
<histogram name="Media.Audio.Autoplay" enum="AutoplaySource"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Records the autoplay source of audios.</summary>
</histogram>
<histogram name="Media.Audio.Capture.DetectedMissingCallbacks"
enum="BooleanMissingCallbacks" expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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="2021-07-04">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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.Glitches" units="glitches"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The number of glitches that were detected at the OS level while an audio
stream was active. A glitch is detected if the OS has to skip providing a
set of frames. This value is logged when an audio input stream is closed.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.HighLatencyCallbackError"
enum="BooleanError" expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
A boolean that reflects whether or not an error was reported during audio
capture for a high latency stream.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.InputStreamDuration" units="ms"
expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.LargestGlitchMs" units="ms"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The length in milliseconds of the largest audio glitch that was detected at
the OS level. This value is logged when an audio input stream that has
suffered glitches is closed.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.LostFramesInMs" units="ms"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The combined length in milliseconds of audio glitches that was detected at
the OS level. This is useful to know in particular for audio processing such
as echo cancellation. This value is logged when an audio input stream that
has suffered glitches is closed.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.LowLatencyCallbackError"
enum="BooleanError" expires_after="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram
name="Media.Audio.Capture.Mac.MicSystemPermission.FixedTime.SinceLastFailure"
units="ms" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Mac.MicSystemPermission.Startup"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram
name="Media.Audio.Capture.Mac.MicSystemPermission.StartupAfterFailure"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Mac.MicSystemPermission.UserMedia"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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
&quot;not determined&quot; 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.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.StreamCallbackError2"
enum="AudioCaptureDeviceError" expires_after="2021-04-25">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.VirtualCallbackError" enum="BooleanError"
expires_after="M85">
<owner>maxmorin@chromium.org</owner>
<summary>
A boolean that reflects whether or not an error was reported during audio
capture for a virtual stream.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.InitError" enum="Hresult"
expires_after="2021-05-02">
<owner>tommi@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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="2021-05-02">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.Open" enum="AudioStreamOpenResult"
expires_after="2021-05-30">
<owner>gudiou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Success/error cases for opening an audio input stream on Windows.
</summary>
</histogram>
<histogram name="Media.Audio.Capture.Win.{AudioProcessingMode}EffectType"
enum="AudioEffectType" expires_after="2021-10-22">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Audio effect types detected on audio input streams using the
{AudioProcessingMode} audio processing mode. 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>
<token key="AudioProcessingMode">
<variant name="Default"/>
<variant name="Raw"/>
</token>
</histogram>
<histogram name="Media.Audio.CoreAudioDispatchOverrideInitResult"
enum="CoreAudioDispatchOverrideInitResult" expires_after="2021-04-01">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>
Tracks support and initialization success/failure of the CoreAudio dispatch
override hotfix. Logged during initialization of AudioManagerMac. The fix is
not supported on macOS earlier than version 10.10.
</summary>
</histogram>
<histogram name="Media.Audio.CoreAudioDispatchOverrideLookupEvent"
enum="CoreAudioDispatchOverrideLookupEvent" expires_after="2021-04-01">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>
Logged whenever the CoreAudio dispatch override hotfix needs to look up the
calling function using dladdr(). Once ResumeIO and PauseIO have been
identified, no more lookups should be performed during the session.
</summary>
</histogram>
<histogram name="Media.Audio.InputBufferSizeWasChangedMac"
enum="BooleanSuccess" expires_after="2020-04-05">
<owner>henrika@chromium.org</owner>
<summary>
Indicates if the size of the audio unit's IO buffer was changed when
starting an input audio stream. Only sampled when
Media.Audio.InputStartupSuccessMac reports 'Failure'.
</summary>
</histogram>
<histogram name="Media.Audio.InputStartupSuccessMac" enum="BooleanSuccess"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>webrtc-audio@google.com</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.InputVolumeStartsAtZeroWin"
enum="BooleanVolumeZero" expires_after="2020-10-15">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicates if the volume level of the audio session is set to zero when the
input audio session starts. Sampled once when the stream starts but only on
Windows platforms. See http://crbug.com/1014443.
</summary>
</histogram>
<histogram name="Media.Audio.LogicalProcessorsMac" units="units"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The number of logical processors/cores available on the Mac OSX device. Only
sampled when Media.Audio.InputStartupSuccessMac reports 'Failure'.
</summary>
</histogram>
<histogram name="Media.Audio.OutputDeviceAuthorizationTime" units="ms"
expires_after="2021-06-06">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.PhysicalProcessorsMac" units="units"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>webrtc-audio@google.com</owner>
<summary>
The number of physical processors/cores available on the Mac OSX device.
Only sampled when Media.Audio.InputStartupSuccessMac reports 'Failure'.
</summary>
</histogram>
<histogram name="Media.Audio.Processing.CaptureDelayMs" units="ms"
expires_after="2021-04-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-04-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-04-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-04-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-06-06">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-04-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</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="2021-09-30">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-06-27">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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.Glitches" units="glitches"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The number of glitches that were detected at the OS level while an audio
stream was active. A glitch is detected if the OS has to skip rendering a
set of frames. This value is logged when an audio output stream is stopped.
</summary>
</histogram>
<histogram name="Media.Audio.Render.LargestGlitchMs" units="ms"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The length in milliseconds of the largest glitch that was detected at the OS
level. This value is logged when an audio output stream that has suffered
glitches is stopped.
</summary>
</histogram>
<histogram name="Media.Audio.Render.LostFramesInMs" units="ms"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The combined length in milliseconds of audio glitches. This is useful to
know in particular for audio processing such as echo cancellation. This
value is logged when an audio output stream that has suffered glitches is
stopped.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTime" units="ms"
expires_after="2020-04-05">
<owner>maxmorin@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceAuthorizationTimedOut"
enum="BooleanTimedOut" expires_after="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether audio output device timed out waiting for authorization reply from
the browser side.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputDeviceStatus"
enum="OutputDeviceStatus" expires_after="2021-06-06">
<owner>armax@chromium.org</owner>
<owner>dalecurtis@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Device status received in response to device authorization request.
</summary>
</histogram>
<histogram name="Media.Audio.Render.OutputStreamDuration" units="ms"
expires_after="2020-04-05">
<owner>maxmorin@chromium.org</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.SinkCache.GetOutputDeviceInfoCacheUtilization"
enum="GetOutputDeviceInfoCacheHit" expires_after="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether a cached sink was used to get audio output device information, or a
new sink was created for that.
</summary>
</histogram>
<histogram name="Media.Audio.Render.SinkCache.InfoSinkReusedForOutput"
enum="BooleanReused" expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
When a new sink is created to get output device information, it is cached.
This metric shows if such a sink is later reused for audio output (can
happen no more than once) or deleted unused after timeout expires. Logged
when one of the abovementioned events takes place.
</summary>
</histogram>
<histogram name="Media.Audio.Render.SinkCache.UsedForSinkCreation"
enum="BooleanUsage" expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether a sink was created through the sink cache or directly.
</summary>
</histogram>
<histogram name="Media.Audio.Render.StreamCallbackError2"
enum="AudioRenderDeviceError" expires_after="2020-04-05">
<owner>maxmorin@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Audio.RenderFailsWhenBufferSizeChangesMac"
enum="BooleanChanged" expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
True if a call to AudioUnitRender failed with an error code of
kAudioUnitErr_CannotDoInCurrentContext (-10863) and the call was preceded
with a change in the native I/O buffer size. This value is logged while
input audio is active but it should be a very rare event.
</summary>
</histogram>
<histogram name="Media.Audio.RequestedInputBufferFrameSizeMac" units="units"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Size (in audio frames) the client has asked for when creating an
AUAudioInputStream object. It might not be able to fulfill this request. The
actual size is given by Media.Audio.ActualInputBufferFrameSizeMac. Only
sampled when Media.Audio.InputStartupSuccessMac reports 'Failure'.
</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>olka@chromium.org</owner>
<owner>maxmorin@chromium.org</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>olka@chromium.org</owner>
<owner>maxmorin@chromium.org</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>olka@chromium.org</owner>
<owner>maxmorin@chromium.org</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>olka@chromium.org</owner>
<owner>maxmorin@chromium.org</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.AudioBitsPerChannel" units="units" expires_after="M85">
<owner>dalecurtis@chromium.org</owner>
<summary>Bits per channel of HTML5 audio sample data.</summary>
</histogram>
<histogram name="Media.AudioCapturerAudioGlitches" enum="AudioGlitchResult"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.AudioCapturerDroppedData" units="%"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The percentage of input audio data that was dropped at the browser/renderer
boundary due to for example buffer overflow in the writer side buffer or in
the socket. Reported at the destruction of low-latency audio input stream.
</summary>
</histogram>
<histogram name="Media.AudioCapturerMissedReadDeadline" units="%"
expires_after="2021-06-01">
<owner>gudou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The percentage of 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.
Reported at the destruction of low-latency audio input stream.
</summary>
</histogram>
<histogram name="Media.AudioCodec" enum="AudioCodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>dalecurtis@chromium.org</owner>
<summary>Audio codec used in HTML5 media.</summary>
</histogram>
<histogram name="Media.AudioCodecProfile.AAC" enum="AudioCodecProfile"
expires_after="2021-05-23">
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Audio codec profile used in HTML5 media for AAC playback.</summary>
</histogram>
<histogram name="Media.AudioInputCbErrorMac" units="OSStatus"
expires_after="2021-06-20">
<owner>henrika@chromium.org</owner>
<owner>webrtc-audio@google.com</owner>
<summary>
Error codes that AudioUnitRender() returns in AUAudioInputStream on Mac.
</summary>
</histogram>
<histogram name="Media.AudioInputController" units="ms" expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Measures the time taken for AudioInputController::</summary>
</histogram>
<histogram name="Media.AudioInputControllerSessionSilenceReport"
enum="AudioInputSilenceReport" expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Every 15 seconds during the lifetime of an audio input stream, the sound
level is measured, see AudioInputController::CheckAudioPower(). If the level
is below a certain threshold, it's considered &quot;silence&quot;. Otherwise
it's considered &quot;audio&quot;. This metric shows whether there was only
silence, only audio, or both, during the lifetime of a stream. If logged
before the first measurement, i.e. if the lifetime is less than 15 seconds,
&quot;no measurement&quot; is reported. If there is no audio data provided
by the OS during the lifetime of the stream, for example because of a bug,
measurements will not be performed and &quot;no measurement&quot; is
reported.
</summary>
</histogram>
<histogram name="Media.AudioOutputController.CallbackError" enum="BooleanError"
expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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>olka@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>
Time interval from the output stream controller construction to its
destruction.
</summary>
</histogram>
<histogram name="Media.AudioOutputController.ProxyStreamCreationResult"
enum="AudioOutputStreamCreationResult" expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.ProxyStreamCreationResultForDeviceChange
histogram.
</summary>
</histogram>
<histogram
name="Media.AudioOutputController.ProxyStreamCreationResultForDeviceChange"
enum="AudioOutputStreamCreationResult" expires_after="2021-04-05">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether an AudioOutputController succeeded in creating and opening an output
stream proxy after receiving a default device change event.
</summary>
</histogram>
<histogram name="Media.AudioOutputControllerDataNotReady" units="ms"
expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether playback started successfully after stream startup was requested.
</summary>
</histogram>
<histogram name="Media.AudioOutputResampler.OpenLowLatencyStream"
enum="AudioOutputResamplerLowLatencyOpenStreamResult"
expires_after="2021-06-06">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.
</summary>
</histogram>
<histogram
name="Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateClientResult"
enum="Hresult" expires_after="2020-04-05">
<owner>marinaciocea@chromium.org</owner>
<summary>
This histogram is the 3nd potential failure step in
CoreAudioUtil::GetPreferredAudioParameters. The success% of this histogram
is input for
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetMixFormatResult
histogram.
</summary>
</histogram>
<histogram
name="Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateDeviceEnumeratorResult"
enum="Hresult" expires_after="M82">
<owner>marinaciocea@chromium.org</owner>
<summary>
This histogram is the 1st potential failure step in
CoreAudioUtil::GetPreferredAudioParameters. The success% of this histogram
is input for
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateDeviceResult
histogram.
</summary>
</histogram>
<histogram
name="Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateDeviceResult"
enum="Hresult" expires_after="M82">
<owner>marinaciocea@chromium.org</owner>
<summary>
This histogram is the 2nd potential failure step in
CoreAudioUtil::GetPreferredAudioParameters. The success% of this histogram
is input for
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateClientResult
histogram.
</summary>
</histogram>
<histogram
name="Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetDevicePeriodResult"
enum="Hresult" expires_after="M82">
<owner>marinaciocea@chromium.org</owner>
<summary>
This histogram is the last potential failure step in
CoreAudioUtil::GetPreferredAudioParameters.
</summary>
</histogram>
<histogram
name="Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetMixFormatResult"
enum="Hresult" expires_after="2020-04-05">
<owner>marinaciocea@chromium.org</owner>
<summary>
This histogram is the 4nd potential failure step in
CoreAudioUtil::GetPreferredAudioParameters. The success% of this histogram
is input for
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetDevicePeriodResult
histogram.
</summary>
</histogram>
<histogram name="Media.AudioOutputStreamProxy.StreamFormat"
enum="AudioOutputProxyStreamFormat" expires_after="2021-01-01">
<owner>olka@chromium.org</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.
On Windows, the failure reasons that can lead to fake stream creation are
tracked with the following histograms:
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateDeviceEnumeratorResult
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateDeviceResult
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.CreateClientResult
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetMixFormatResult
Media.AudioOutputStreamProxy.GetPreferredOutputStreamParametersWin.GetDevicePeriodResult
</summary>
</histogram>
<histogram name="Media.AudioRendererAudioGlitches" enum="AudioGlitchResult"
expires_after="2021-06-01">
<owner>henrika@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Captures if render-side audio glitches are detected or not. Sampled when a
low-latency output audio stream is destructed.
</summary>
</histogram>
<histogram name="Media.AudioRendererImpl.SinkStatus" enum="OutputDeviceStatus"
expires_after="2021-06-06">
<owner>armax@chromium.org</owner>
<owner>dalecurtis@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.AudioRendererMissedDeadline" units="%"
expires_after="2021-06-01">
<owner>dalecurtis@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Percentage of AudioSyncReader::Read() calls where the renderer missed its
realtime deadline.
</summary>
</histogram>
<histogram name="Media.AudioService.AudioManagerStartupTime" units="ms"
expires_after="2021-04-05">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.AudioService.HasConnectionsDuration" units="ms"
expires_after="M85">
<owner>marinaciocea@chromium.org</owner>
<owner>maxmorin@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The time interval when the audio service has connections, computed from the
moment the first bind request is received to the moment when the last
connection is closed.
</summary>
</histogram>
<histogram name="Media.AudioService.HasNoConnectionsDuration" units="ms"
expires_after="M85">
<owner>marinaciocea@chromium.org</owner>
<owner>maxmorin@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
The time interval when the audio service has no connections, computed from
the moment the last connection is closed until quit closure is called or a
new bind request is received.
</summary>
</histogram>
<histogram name="Media.AudioThreadStatus" enum="AudioThreadStatus"
expires_after="never">
<!-- expires-never: Audio pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
State of the audio thread. A value of &quot;started&quot; is emitted once
the hang monitor has been initialized. If the thread is detected as hung
later, a value of &quot;hung&quot; is emitted. If the hung thread later
recovers a value of &quot;recovered&quot; is emitted.
</summary>
</histogram>
<histogram name="Media.AVDA.FrameInformation" enum="AVDAFrameInformation"
expires_after="2020-09-05">
<owner>liberato@chromium.org</owner>
<owner>videostack-eng@chromium.org</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>liberato@chromium.org</owner>
<owner>videostack-eng@chromium.org</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.Capabilities.DecodingInfo.Time.Video" units="ms"
expires_after="2021-05-23">
<owner>chcunningham@chromium.org</owner>
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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="2021-06-06">
<owner>chcunningham@chromium.org</owner>
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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="2021-01-15">
<owner>chcunningham@chromium.org</owner>
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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.CodecImage.CodecBufferWaitCoordinator.FrameTimedOut"
enum="BooleanTimedOut" expires_after="M95">
<owner>vikassoni@chromium.org</owner>
<owner>liberato@chromium.org</owner>
<summary>
Whether we exceeded the timeout in CodecBufferWaitCoordinator::
WaitForFrameAvailable and will proceed without a frame ready.
</summary>
</histogram>
<histogram name="Media.CodecImage.CodecBufferWaitCoordinator.WaitTimeForFrame"
units="ms" expires_after="M95">
<owner>vikassoni@chromium.org</owner>
<owner>liberato@chromium.org</owner>
<summary>
Time spent waiting for a frame to become available in a Non Overlay
(TextureOwner mode) so that MediaCodec can render it. This time is recorded
before the frame is rendered.
</summary>
</histogram>
<histogram base="true" name="Media.ConfigChangeDecoderSelectionTime" units="ms"
expires_after="2021-06-25">
<owner>cassew@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Duration of decoder selection during config changes, measured from first
call to 'DecoderSelector::SelectDecoder' to
'DecoderSelector::FinalizeSelection'. The HW/SW suffix indicates the type of
the decoder that was ultimately selected.
</summary>
</histogram>
<histogram name="Media.Controls.CTR" enum="MediaControlsCTREvent"
expires_after="2020-04-05">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records events related to click through rate (CTR) calculation.
The CTR can be calculated by computing &quot;Interacted&quot; /
&quot;Displayed&quot;. &quot;Interacted&quot;, 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. &quot;Displayed&quot; 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,
&quot;Displayed&quot; is only computed when metadata are available unless
preloading was disabled on the element or the browser.
</summary>
</histogram>
<histogram name="Media.Controls.Show.Audio" enum="MediaControlsShowReason"
expires_after="2021-05-30">
<owner>mlamouri@chromium.org</owner>
<summary>
Record whether the default media controls of an audio element were shown and
why every time they could be shown. Note that audio elements that were not
insterted to the DOM and do not have a controls attribute are not taken into
account.
</summary>
</histogram>
<histogram name="Media.Controls.Show.Video" enum="MediaControlsShowReason"
expires_after="2021-05-30">
<owner>mlamouri@chromium.org</owner>
<summary>
Record whether the default media controls of a video element were shown and
why every time they could be shown.
</summary>
</histogram>
<histogram name="Media.CrosBeamformingDeviceState"
enum="CrosBeamformingDeviceState" expires_after="M85">
<owner>dalecurtis@chromium.org</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="2021-10-07">
<owner>jazzhsue@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Record each time user pins/unpins CrOS global media controls.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.QuickSettingUserAction"
enum="MediaSessionAction" expires_after="2021-10-07">
<owner>jazzhsue@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The action user clicked on the media controls in quick settings.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.RepeatUsageInQuickSetting"
enum="BooleanIsRepeat" expires_after="2021-10-07">
<owner>jazzhsue@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Record each time media controls' sub-menu in quick settings is opened. True
if it is a repeat usage.
</summary>
</histogram>
<histogram name="Media.CrosGlobalMediaControls.RepeatUsageOnShelf"
enum="BooleanIsRepeat" expires_after="2021-10-07">
<owner>jazzhsue@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Record each time global media controls on the shelf is opened. True if it is
a repeat usage.
</summary>
</histogram>
<histogram name="Media.D3D11.DecoderLifetimeProgression"
enum="D3D11LifetimeProgression" expires_after="2021-06-13">
<owner>liberato@chromium.org</owner>
<owner>tmathmeyer@chromium.org</owner>
<summary>
This enum allows us to count D3D11VideoDecoder specific crashes and
initialization failures. This is recorded whenever the decoder is
initialized or destroyed.
</summary>
</histogram>
<histogram name="Media.D3D11.WasVideoSupported"
enum="D3D11VideoNotSupportedReason" expires_after="2021-06-13">
<owner>liberato@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<owner>tmathmeyer@chromium.org</owner>
<summary>
This enum measures whether or not d3d11 is supported and if not, what the
reason is.
</summary>
</histogram>
<histogram name="Media.DetectedAudioCodecHash" enum="FFmpegCodecHashes"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Container used for HTML5 media. Views that include pre-M34 data will
categorize dash (38) and smooth streaming (39) in the &quot;Other&quot;
bucket.
</summary>
</histogram>
<histogram name="Media.DetectedContainer.Local" enum="MediaContainers"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Video codec used in HTML5 media for a local file playback.</summary>
</histogram>
<histogram name="Media.DroppedFrameCount" units="units" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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.DXVAVDA.PictureBufferMechanism"
enum="PictureBufferMechanism" expires_after="2020-10-11">
<owner>liberato@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
This enum measures how often each of the various DXVAVDA PictureBuffer
display mechanisms are used. Each count represents the mechanism selected at
the end of DXVA::Initialize; i.e., there is one count per decoder.
</summary>
</histogram>
<histogram name="Media.DXVAVDA.UseD3D11" enum="DXVADXVersion"
expires_after="2021-06-13">
<owner>liberato@chromium.org</owner>
<owner>tmathmeyer@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
Records how many times the DXVA VDA successfully initializes a D3D11 device
vs. D3D9 device.
</summary>
</histogram>
<histogram base="true" name="Media.EME" enum="CdmPromiseResult"
expires_after="2021-05-07">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>Result of EME promises that were handled by Chromium code.</summary>
</histogram>
<histogram name="Media.EME.CdmFileIO.FileSizeKBOnError" units="KB"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-07-11">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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 base="true" name="Media.EME.CdmFileIO.TimeTo" units="ms"
expires_after="2021-07-11">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The actual time spent by the CDM accessing a file. This is only recorded for
successful operations.
</summary>
</histogram>
<histogram name="Media.EME.CdmHostVerificationStatus"
enum="CdmHostVerificationStatus" expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-06-20">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>The result from an attempt to load a library CDM.</summary>
</histogram>
<histogram name="Media.EME.CdmLoadTime" units="ms" expires_after="2021-06-20">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>The time spent to load a library CDM.</summary>
</histogram>
<histogram base="true" name="Media.EME.CreateCdm" enum="BooleanSuccess"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the CDM instance is created successfully. Reported each time a CDM
instance creation is attempted, usually as a result of Javascript call of
createMediaKeys().
</summary>
</histogram>
<histogram base="true" name="Media.EME.CreateCdmTime" units="ms"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>The time it takes to create the CDM instance.</summary>
</histogram>
<histogram name="Media.EME.CrosCdmType" enum="CrosCdmType"
expires_after="2022-01-15">
<owner>jkardatzke@chromium.org</owner>
<owner>cros-gfx-video@google.com</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="2022-01-15">
<owner>jkardatzke@chromium.org</owner>
<owner>cros-gfx-video@google.com</owner>
<summary>
System code count in promise rejection for ChromeOS platform CDM.
</summary>
</histogram>
<histogram name="Media.EME.EncryptedEvent" enum="BooleanEncryptedEvent"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether EME encrypted event has been fired. Every time a WebMediaPlayerImpl
object is created a &quot;false&quot; value is reported to provide a
baseline. Every time an encrypted event is fired, a &quot;true&quot; 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="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-07">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-07">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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 base="true" name="Media.EME.KeyStatusSystemCode"
enum="CdmSystemCode" expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>System code count associated with key status.</summary>
</histogram>
<histogram base="true" name="Media.EME.LibraryCdmAvailable"
enum="BooleanAvailable" expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the CDM is available for the key system 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>
</histogram>
<histogram name="Media.EME.MaxCdmProcessCount" units="processes"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Reported at most once during browser process shutdown the max number of
concurrent CDM processes at any time during the lifetime of that browser
process. Will NOT be reported if no CDM process has ever been created.
</summary>
</histogram>
<histogram name="Media.EME.MediaCryptoAvailable" enum="BooleanAvailable"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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="M90">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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="M90">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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="M90">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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.MediaDrmBridge.KeySystemSupport"
enum="BooleanSupported" expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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.MojoCdm.ConnectionError"
enum="BooleanConnectionError" expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether connection error has happened for MojoCdm. Every time a MojoCdm
object is created a &quot;false&quot; value is reported to provide a
baseline. Every time a mojo connection error happened, a &quot;true&quot;
value will be reported, which typically means a remote CDM process crash.
</summary>
</histogram>
<histogram name="Media.EME.OutputProtection" enum="MediaOutputProtectionStatus"
expires_after="2021-07-11">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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>jkardatzke@chromium.org</owner>
<owner>cros-gfx-video@google.com</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"
enum="RequestMediaKeySystemAccessStatus" expires_after="2021-06-20">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Key system support query status and result, as reported by
RequestMediaKeySystemAccess. Each value will be reported at most once per
renderer process.
</summary>
</histogram>
<histogram base="true" name="Media.EME.SystemCode" enum="CdmSystemCode"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>System code count in promise rejection.</summary>
</histogram>
<histogram base="true" name="Media.EME.TimeTo" units="ms"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>The time it takes to resolve a EME promise.</summary>
</histogram>
<histogram name="Media.EME.UrlProvisionFetcher.ResponseCode"
enum="CombinedHttpResponseAndNetErrorCode" expires_after="M90">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</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.VideoCapability.HasEmptyRobustness"
enum="BooleanEmpty" expires_after="2021-06-20">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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.Engagement.PreloadedList.CheckResult"
enum="PreloadedListCheckResult" expires_after="M82">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when the Media Engagement Preloaded List is checked whether a
string is present on that list. If the check was successful then the result
of the check is recorded in this histogram. If the check was not successful
then the reason for the check failing is recorded.
</summary>
</histogram>
<histogram name="Media.Engagement.PreloadedList.LoadResult"
enum="PreloadedListLoadResult" expires_after="M82">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when data is loaded into the Media Engagement Preloaded List. If
the load is successful then &quot;loaded&quot; is recorded to this
histogram. If the load was not successful then the reason why is recorded to
this histogram.
</summary>
</histogram>
<histogram name="Media.Engagement.ScoreAtPlayback" units="%"
expires_after="M82">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The media engagement score recorded at the time of playback. It is converted
to a percentage so should be divided by 100 to get the actual score. It is
only recorded for playback that is either lacking an audio track or not
muted.
</summary>
</histogram>
<histogram
name="Media.Engagement.SignificantPlayers.PlayerNotAdded.AfterFirstTime"
enum="InsignificantPlaybackReason" expires_after="M82">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when the Media Engagement service doesn't determine a player to be
significant. If a player is not significant the reasons why will be
individually recorded to this histogram each time except for the first time
which is recorded to a different histogram.
The significant state of a player is reevaluated any time the state of the
player changes (e.g. muted, playing/paused). If the player was not
considered signficiant and still is not then we will record the reasons why
in this histogram.
</summary>
</histogram>
<histogram name="Media.Engagement.SignificantPlayers.PlayerNotAdded.FirstTime"
enum="InsignificantPlaybackReason" expires_after="M82">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when the Media Engagement service doesn't determine a player to be
significant. If a player is not significant the reasons why will be
individually recorded to this histogram the first time only.
The significant state of a player is reevaluated any time the state of the
player changes (e.g. muted, playing/paused). If the player was not
considered signficiant and still is not then we will record the reasons why
in this histogram.
</summary>
</histogram>
<histogram name="Media.Engagement.SignificantPlayers.PlayerRemoved"
enum="InsignificantPlaybackReason" expires_after="M77">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when the Media Engagement service no longer determines a player to
be significant. If a player is no longer significant, the reasons why will
be individually recorded to this histogram.
The significant state of a player is re-evaluted any time the state of the
player changes (e.g. muted, playing/paused). If the player was previously
considered significant and is no longer considered that we will record the
reasons why in this histogram.
</summary>
</histogram>
<histogram name="Media.FallbackToHighLatencyAudioPath"
enum="BooleanDidFallBack" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether Chrome had to fallback to the high latency audio path or not.
</summary>
</histogram>
<histogram name="Media.Feeds.AggregateWatchtime" units="ms"
expires_after="2021-06-07">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the aggregate watchtime for all Media Feeds on startup. The
aggregate watchtime is the total watchtime for a website recorded across
sessions. It is also cleared every 90 days.
</summary>
</histogram>
<histogram name="Media.Feeds.Feed.ReadResult" enum="MediaFeedReadResult"
expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when a Media Feed is loaded from the database. If there was an
error reading from the database then the result will include the reason.
</summary>
</histogram>
<histogram name="Media.Feeds.FeedItem.ReadResult"
enum="MediaFeedItemReadResult" expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when a Media Feed item is loaded from the database. If there was an
error reading from the database then the result will include the reason.
</summary>
</histogram>
<histogram name="Media.Feeds.Fetch.Size" units="KB" expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the size of the fetched feed when a Media Feed is periodically
fetched in the background.
</summary>
</histogram>
<histogram name="Media.Feeds.SafeSearch.Result"
enum="MediaFeedSafeSearchResult" expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when a Media Feed Item is checked against Safe Search. This happens
automatically when Chrome fetches the feed so long as the user has opted
into Safe Search checking.
</summary>
</histogram>
<histogram name="Media.GlobalMediaControls.DeviceSelectorAvailable"
enum="Boolean" expires_after="2021-09-08">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-09-08">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-06-20">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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.InteractionDelayAfterPause"
units="ms" expires_after="2021-06-27">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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.NumberOfAvailableAudioDevices"
units="devices" expires_after="2021-09-08">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-06-20">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-05-30">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</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.HasEverLostContext" enum="ContextProviderPhase"
expires_after="M77">
<owner>dcastagna@chromium.org</owner>
<summary>
Records when a context provider is acquired in media, and when it's released
because a context loss has been detected.
</summary>
</histogram>
<histogram name="Media.GpuArcVideoDecodeAccelerator.InitializeResult"
enum="ArcVideoDecodeAcceleratorResult" expires_after="2021-02-18">
<owner>acourbot@chromium.org</owner>
<owner>chromeos-video-eng@google.com</owner>
<summary>
Counts of status values returned from calls to
GpuArcVideoDecodeAccelerator::Initialize().
</summary>
</histogram>
<histogram name="Media.GpuMemoryBufferVideoFramePool.UnsupportedFormat"
enum="VideoPixelFormatUnion" expires_after="2022-01-06">
<owner>dcastagna@chromium.org</owner>
<owner>mcasas@chromium.org</owner>
<summary>
GpuMemoryBufferVideoFramePool is called with an unsupported VideoFrame pixel
format. Emitted on VideoFrame arrival.
</summary>
</histogram>
<histogram name="Media.GpuVideoFrameFactory.SharedContextStateResult"
enum="ContextResult" expires_after="2019-06-01">
<owner>vikassoni@chromium.org</owner>
<owner>liberato@chromium.org</owner>
<summary>
The error code returned when GetSharedContextState() fails or MakeCurrent()
on the SharedContextState fails.
</summary>
</histogram>
<histogram name="Media.HardwareAudioChannelCount" units="units"
expires_after="never">
<!-- expires-never: Media platform support planning metric. -->
<owner>dalecurtis@chromium.org</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>dalecurtis@chromium.org</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>dalecurtis@chromium.org</owner>
<summary>Samples per second of the hardware audio device.</summary>
</histogram>
<histogram name="Media.HardwareKeyPressed" enum="MediaHardwareKeyAction"
expires_after="2021-06-27">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records media key presses that are handled by the
HardwareKeyMediaController.
</summary>
</histogram>
<histogram name="Media.HasEverPlayed" enum="BooleanHasPlayed"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether a given WebMediaPlayer instance, after preload, started playback;
recorded once at time of player destruction.
</summary>
</histogram>
<histogram name="Media.HighLatencyAudioCaptureStartupSuccess"
enum="AudioCaptureStartupResult" expires_after="2021-05-30">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether capture started successfully after a high-latency input stream
startup was requested.
</summary>
</histogram>
<histogram name="Media.History.DatabaseSize" units="KB"
expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The size of the Media History database. Recorded once on startup.
</summary>
</histogram>
<histogram name="Media.History.Init.Result" enum="MediaHistoryInitResult"
expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when Media History is initialized when the browser is started. This
is not recorded in incognito mode or if &quot;save browsing history&quot; is
disabled.
</summary>
</histogram>
<histogram name="Media.History.Init.ResultAfterDelete"
enum="MediaHistoryInitResult" expires_after="2021-05-09">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when Media History is recreated when the browser is started and the
Media History database has been corrupted to the point where we need to
delete it and start again. This is not recorded in incognito mode or if
&quot;save browsing history&quot; is disabled.
</summary>
</histogram>
<histogram name="Media.History.Playback.WriteResult"
enum="MediaHistoryPlaybackWriteResult" expires_after="2021-03-07">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when Media History records a playback to the database. Playbacks
are recorded when the player is destroyed and are are recorded on a
per-player level and might be called multiple times on a single page.
Playbacks are not recorded in incognito mode or if &quot;save browsing
history&quot; is disabled.
</summary>
</histogram>
<histogram name="Media.History.Session.WriteResult"
enum="MediaHistorySessionWriteResult" expires_after="2021-03-07">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when Media History records a sessions to the database. Sessions are
recorded once per WebContents on navigation if there was playback on the
page. Playbacks are not recorded in incognito mode or if &quot;save browsing
history&quot; is disabled.
</summary>
</histogram>
<histogram base="true" name="Media.InitialDecoderSelectionTime" units="ms"
expires_after="2021-06-25">
<owner>cassew@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Duration of initial decoder selection. Measured from first call to
'DecoderSelector::SelectDecoder' to 'DecoderSelector::FinalizeSelection'.
The HW/SW suffix indicates the type of the decoder that was ultimately
selected.
</summary>
</histogram>
<histogram name="Media.InputErrorMac" units="OSStatus"
expires_after="2021-07-01">
<owner>tommi@chromium.org</owner>
<owner>webrtc-audio@google.com</owner>
<summary>
Error codes that we encounter while setting up an AUAudioInputStream on Mac.
</summary>
</histogram>
<histogram name="Media.InputStreamDuration" units="ms"
expires_after="2021-07-01">
<owner>henrika@chromium.org</owner>
<owner>webrtc-audio@google.com</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="2020-10-11">
<owner>maxmorin@chromium.org</owner>
<summary>
Duration in milliseconds of low-latency audio input streams which never got
any callbacks.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.DialogClosed"
enum="KaleidoscopeDialogClosedBoolean" expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time a user closes a dialog inside Kaleidoscope with whether
the user opened a watch action from that dialog.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.FirstRunProgress"
enum="KaleidoscopeFirstRunProgress" expires_after="2021-08-19">
<owner>steimel@chromium.org</owner>
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time the Kaleidoscope First Run Experience is shown when
either the tab is closed or the FRE is completed. Records how far into the
FRE the user got before exiting (or completing).
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.Navigation" enum="KaleidoscopeNavigation"
expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time a user selects a media recommendation inside Kaleidoscope
and this triggers a navigation to a media partner's site.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.NewTabPage.CacheHitWhenForced"
enum="KaleidoscopeCacheHit" expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time the Kaleidoscope module is loaded on the New Tab Page
with whether the data was loaded from the server or whether it hit the
cache.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.NewTabPage.ServerFetchTime" units="ms"
expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time the Kaleidoscope module is loaded on the New Tab Page
with the time it takes to fetch the data from the server.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.OpenedMediaRecommendation" enum="Boolean"
expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded each time that Kaleidoscope is closed with whether the user opened
a media recommendation from Kaleidoscope during that session.
</summary>
</histogram>
<histogram name="Media.Kaleidoscope.TimeTakenToStartWatch" units="ms"
expires_after="2021-08-19">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded the first time in a Kaleidoscope session a user selects a watch
action in Kaleidoscope with the time taken from loading the page to the user
clicking on the watch action.
</summary>
</histogram>
<histogram base="true" name="Media.Learning.BinaryThreshold.Aggregate"
enum="ConfusionMatrix" expires_after="2019-10-30">
<!-- Name completed by histogram_suffixes
name="Media.Learning.BinaryThreshold" -->
<owner>liberato@chromium.org</owner>
<owner>chcunningham@chromium.org</owner>
<summary>
Confusion matrix for UMA-reported regresssion tasks for media local learning
experiments. Each bucket is interpreted as follows:
TrueNegative - prediction was negative, observation was negative.
FalseNegative - prediction was negative, observation was positive.
FalsePositive - prediction was positive, observation was negative.
TruePositive - prediction was positive, observation was positive.
For those observations for which we could not make a prediction due to data
sparsity, the &quot;no-prediction&quot; buckets indicate whether the
observation was positive or negative.
</summary>
</histogram>
<histogram base="true" name="Media.Learning.BinaryThreshold.ByFeature"
enum="MegaConfusionMatrix" expires_after="2019-10-30">
<!-- Name completed by histogram_suffixes
name="Media.Learning.BinaryThreshold" -->
<owner>liberato@chromium.org</owner>
<owner>chcunningham@chromium.org</owner>
<summary>
Confusion matrices, split out by the feature index used to train the model.
Each confusion matrix has 6 entries:
TrueNegative - prediction was negative, observation was negative.
FalseNegative - prediction was negative, observation was positive.
FalsePositive - prediction was positive, observation was negative.
TruePositive - prediction was positive, observation was positive.
No-prediction Negative - no prediction made, observation was negative.
No-prediction Positive - no prediction made, observation was positive.
The confusion matrix entry will also be labelled with a bucket number, which
for this histogram represents the index of the feature that was used. The
feature index matches |LearningTask::feature_descriptions| for the
appropriate task.
</summary>
</histogram>
<histogram base="true" name="Media.Learning.BinaryThreshold.ByTrainingWeight"
enum="MegaConfusionMatrix" expires_after="2020-02-02">
<!-- Name completed by histogram_suffixes
name="Media.Learning.BinaryThreshold" -->
<owner>liberato@chromium.org</owner>
<owner>chcunningham@chromium.org</owner>
<summary>
Confusion matrices, split out by the total amount of training data used to
train the model. Each confusion matrix has 6 entries:
TrueNegative - prediction was negative, observation was negative.
FalseNegative - prediction was negative, observation was positive.
FalsePositive - prediction was positive, observation was negative.
TruePositive - prediction was positive, observation was positive.
No-prediction Negative - no prediction made, observation was negative.
No-prediction Positive - no prediction made, observation was positive.
The bucket number mentioned in the enum label indicates how much weight the
training set had. To convert from bucket number to an actual weight range,
one must know the particular settings in the corresponding LearningTask.
Please see |LearningTask::max_reporting_weight| and
|LearningTask::num_reporting_weight_buckets| for the the appropriate task.
</summary>
</histogram>
<histogram name="Media.LinuxAudioIO" enum="LinuxAudioIO"
expires_after="2021-06-20">
<owner>dalecurtis@chromium.org</owner>
<summary>
Audio IO layer used by the Linux OS, sampled once at startup of the browser.
</summary>
</histogram>
<histogram name="Media.LoadType" enum="MediaLoadType"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Load type of HTML5 media, such as URL, MediaSource and MediaStream.
</summary>
</histogram>
<histogram name="Media.LocalRendererSinkStates" enum="LocalRendererSinkStates"
expires_after="2018-08-30">
<owner>Please list the metric's owners. Add more owner tags as needed.</owner>
<summary>
State of the WebRtc local renderer, sampled once during the lifetime of a
local renderer.
</summary>
</histogram>
<histogram name="Media.LockScreenControls.Hidden"
enum="LockScreenMediaControlsHideReason" expires_after="2020-01-31">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The reason why the lock screen media controls were hidden if they were
previously shown. Recorded when the controls are destroyed by the lock
screen (e.g. unlock, switch user, shutdown).
</summary>
</histogram>
<histogram name="Media.LockScreenControls.Shown"
enum="LockScreenMediaControlsShown" expires_after="2020-01-31">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the lock screen media controls were shown and if they will not be
shown the reason why.
</summary>
</histogram>
<histogram name="Media.LockScreenControls.UserAction" enum="MediaSessionAction"
expires_after="2020-01-31">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The action (e.g. pause) that a user clicked on the lock screen media
controls.
</summary>
</histogram>
<histogram name="Media.LowLatencyAudioCaptureStartupSuccess"
enum="AudioCaptureStartupResult" expires_after="2021-05-30">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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>liberato@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<owner>tguilbert@chromium.org</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="2021-06-20">
<owner>dalecurtis@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.MediaElement.ContentTypeParseable"
enum="ContentTypeParseableResult" expires_after="2021-05-07">
<owner>jrummell@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the content type provided to HTMLMediaElement would parse with
ParsedContentType or not.
</summary>
</histogram>
<histogram name="Media.MediaElement.PlayPromiseReject"
enum="PlayPromiseRejectReason" expires_after="2021-04-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Recorded when an HTMLMediaElement play() promise is rejected (handled or
not) with the type of rejection.
</summary>
</histogram>
<histogram name="Media.MediaKeysListener.RegisterHotKeyResult"
enum="BooleanSuccess" expires_after="M82">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether or not the MediaKeysListener was able to successfully register a hot
key. Failure typically indicates that the hotkey was already registered by a
different application.
</summary>
</histogram>
<histogram name="Media.MediaRecorder.VEAError"
enum="VideoDecodeAcceleratorError" expires_after="M95">
<owner>mcasas@chromium.org</owner>
<owner>wtlee@chromium.org</owner>
<summary>The errors HW video encode encounters in MediaRecorder.</summary>
</histogram>
<histogram name="Media.MediaRecorder.VEAUsed" enum="MediaRecorderVEAUsed"
expires_after="M95">
<owner>mcasas@chromium.org</owner>
<owner>wtlee@chromium.org</owner>
<summary>Whether HW video encode is used in MediaRecorder.</summary>
</histogram>
<histogram name="Media.MicrophoneMuted" enum="MicrophoneMuteResult"
expires_after="2021-08-30">
<owner>henrika@chromium.org</owner>
<owner>webrtc-audio@google.com</owner>
<summary>
Heuristically detects if the user has muted the microphone or not. Measured
approximately four times per minute.
</summary>
</histogram>
<histogram name="Media.Midi.SendReceiveUsage" enum="MidiSendReceiveUsage"
expires_after="M85">
<owner>toyoshim@chromium.org</owner>
<owner>midi-dev@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Midi.SysExMessageSizeUpTo1MB" units="bytes"
expires_after="M85">
<owner>toyoshim@chromium.org</owner>
<owner>midi-dev@chromium.org</owner>
<summary>Reports sysex message size.</summary>
</histogram>
<histogram name="Media.Midi.Usage" enum="MidiUsage" expires_after="M85">
<owner>toyoshim@chromium.org</owner>
<owner>midi-dev@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.MojoVideoDecoder.ActiveInstances" units="units"
expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</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>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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-06-20">
<owner>eugene@chromium.org</owner>
<owner>liberato@chromium.org</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-06-20">
<owner>eugene@chromium.org</owner>
<owner>liberato@chromium.org</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.MSE.AudioCodec" enum="MSECodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</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 base="true" name="Media.MSE.CodecChangeTime" units="ms"
expires_after="2021-05-30">
<owner>wolenetz@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Duration of config changes that include codec changes, measured from before
decoder flush until after the first output frame is returned. The HW/SW
suffix indicates the type of the decoder that was ultimately selected.
</summary>
</histogram>
<histogram name="Media.MSE.DemuxerDestructionTime" units="ms"
expires_after="2020-10-11">
<owner>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Amount of time taken to destroy one ChunkDemuxer object, not including
initial background task scheduling delay.
</summary>
</histogram>
<histogram name="Media.MSE.DetectedShakaPackagerInMp4" enum="BooleanDetected"
expires_after="2021-06-20">
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Tracks if ShakaPackager metadata was detected in the MP4 'moov' atom during
MSE based media playback. Recorded for every 'moov' atom, which is expected
once per asset. Multiple assets may be played within the same MSE session.
</summary>
</histogram>
<histogram name="Media.MSE.ExecutionContext" enum="MediaSourceExecutionContext"
expires_after="2020-10-11">
<owner>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
For each MediaSource instance, records the type of thread that created the
instance.
</summary>
</histogram>
<histogram name="Media.MSE.Mp4ConsecutiveEmptySamples" units="samples"
expires_after="2021-05-30">
<owner>wolenetz@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
Reports the number of consecutive empty samples in a sequence within a track
run. There can be zero or more such sequences in a track run, and each
sequence is reported separately. This metric is expected to inform a
heuristic to realistically bound the parsing complexity of track runs that
may contain empty samples. See https://crbug.com/907268.
</summary>
</histogram>
<histogram name="Media.MSE.Mp4EmptySamplesInTRun" units="samples"
expires_after="2021-05-30">
<owner>wolenetz@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
Reports the number of empty samples within a track run. This metric is
expected to inform a heuristic to realistically bound the parsing complexity
of track runs that may contain empty samples. See https://crbug.com/907268.
</summary>
</histogram>
<histogram name="Media.MSE.Mp4SampleSize" units="bytes"
expires_after="2021-05-30">
<owner>wolenetz@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
Reports the size of each sample parsed. This metric is expected to inform a
heuristic to realistically bound the parsing complexity of track runs that
may contain empty or huge samples. See https://crbug.com/907268.
</summary>
</histogram>
<histogram name="Media.MSE.Mp4TrunSampleCount" units="samples"
expires_after="2021-05-30">
<owner>wolenetz@chromium.org</owner>
<owner>sandersd@chromium.org</owner>
<summary>
Reports the number of samples in each track run. This metric is expected to
inform a heuristic to realistically bound the parsing complexity of track
runs that may contain huge numbers of samples. See https://crbug.com/907268.
</summary>
</histogram>
<histogram name="Media.MSE.VideoCodec" enum="MSECodec" expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</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>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</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>wolenetz@chromium.org</owner>
<owner>media-dev@chromium.org</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.ArtworkPresent" enum="Boolean"
expires_after="2021-06-20">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the media notification (including ones for Cast sessions) is
displaying artwork. This is recorded when the artwork is updated by the
underlying media session.
</summary>
</histogram>
<histogram name="Media.Notification.Cast.ArtworkPresent" enum="Boolean"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the Cast media notification is displaying artwork. This is recorded
a few seconds after a notification is shown for the first time, which is
different from when Media.Notification.ArtworkPresent is recorded.
</summary>
</histogram>
<histogram name="Media.Notification.Cast.Count" units="count"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<owner>media-dev@chromium.org</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.MetadataPresent"
enum="MediaNotificationMetadata" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the Cast media notification is displaying certain types of metadata.
This is recorded a few seconds after a notification is shown for the first
time, which is different from when Media.Notification.MetadataPresent is
recorded.
</summary>
</histogram>
<histogram name="Media.Notification.Cast.UserAction" enum="MediaSessionAction"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The action (e.g. pause) that a user clicked on a Cast media notification
(including ones for Cast sessions).
</summary>
</histogram>
<histogram name="Media.Notification.Click" enum="MediaNotificationClickSource"
expires_after="2020-06-07">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The type of media notification the user clicked to go back to Chrome.
</summary>
</histogram>
<histogram name="Media.Notification.Count" units="count"
expires_after="2021-06-20">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</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.MetadataPresent"
enum="MediaNotificationMetadata" expires_after="2021-06-20">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether the media notification (including ones for Cast sessions) is
displaying certain types of metadata. This is recorded when the metadata is
updated by the underlying media session.
</summary>
</histogram>
<histogram name="Media.Notification.Source" enum="MediaNotificationSource"
expires_after="2021-07-04">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</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="2021-06-20">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The action (e.g. pause) that a user clicked on a media notification
(including ones for Cast sessions).
</summary>
</histogram>
<histogram name="Media.OutputStreamDuration" units="ms"
expires_after="2021-06-01">
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</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.PeakWebMediaPlayerCount" units="players"
expires_after="M95">
<owner>dalecurtis@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the peak number of WebMediaPlayer objects per RenderFrame upon
RenderFrame destruction (both cleanly and via render process termination).
</summary>
</histogram>
<histogram name="Media.Pepper.PlayedSound" enum="Boolean"
expires_after="2021-03-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether Pepper players have played sound through its lifetime.
</summary>
</histogram>
<histogram name="Media.PepperVideoDecoderError"
enum="VideoDecodeAcceleratorError" expires_after="M77">
<owner>ihf@chromium.org</owner>
<owner>posciak@chromium.org</owner>
<summary>Counts of video decode errors reported to plugin.</summary>
</histogram>
<histogram base="true" name="Media.PepperVideoDecoderOutputPictureCount"
enum="MediaVideoHeight" expires_after="2020-12-31">
<owner>sandersd@chromium.org</owner>
<owner>dalecurtis@chromium.org</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.PepperVideoDecoderPictureCount" units="units"
expires_after="M77">
<owner>ihf@chromium.org</owner>
<owner>posciak@chromium.org</owner>
<summary>
Number of PictureBuffers/textures requested per hardware decoder creation.
This value varies by platform and video. A user visible video may trigger
multiple decoder creations (sometimes every 5 seconds) but would normally
not hold more than 2 sets of buffers at any given time in memory.
</summary>
</histogram>
<histogram name="Media.PepperVideoDecoderPictureHeight" units="units"
expires_after="M77">
<owner>ihf@chromium.org</owner>
<owner>posciak@chromium.org</owner>
<summary>
Vertical video resolution rounded to the nearest bucket. (Corresponds
roughly to the number in 720p.)
</summary>
</histogram>
<histogram name="Media.PipelineStatus" enum="PipelineStatus"
expires_after="2021-06-20">
<owner>prabhur@chromium.org</owner>
<owner>dalecurtis@chromium.org</owner>
<summary>
Status of the media pipeline at the end of its lifecycle suffixed by stream
and video decoder type.
</summary>
</histogram>
<histogram name="Media.PipelineStatus.Start" enum="PipelineStatus"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</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.PlatformVideoDecoding.Decode" units="ms"
expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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.PlaybackPower.BatteryDelta"
enum="MediaPlaybackPowerTypes" expires_after="2020-07-31">
<owner>liberato@chromium.org</owner>
<owner>videostack-eng@chromium.org</owner>
<summary>
Total battery (0-100 percent) consumed by playback. When divided by
Media.PlaybackPower.ElapsedTime, this provides the average rate of battery
drain for that category of playback. Units are (total) percent. This is
recorded when an entire percent (or more) is consumed during playback. Since
devices have different battery sizes, methods of measuring battery, and
different power consumption rates, it's a good idea to filter by a specific
device type and OS version before trying to interpret these results. The
magnitude of these numbers, alone, is also likely hard to use, for this
reason. Instead, consider comparing A/B experiments to see if they get
larger or smaller. Playbacks under one msec are ignored.
</summary>
</histogram>
<histogram name="Media.PlaybackPower.ElapsedTime"
enum="MediaPlaybackPowerTypes" expires_after="2020-07-31">
<owner>liberato@chromium.org</owner>
<owner>videostack-eng@chromium.org</owner>
<summary>
Total time, in msec, elapsed while consuming the battery described by
Media.PlaybackPower.BatteryDelta. See that histogram for details. Recorded
when one or more percent of battery is consumed during playback.
</summary>
</histogram>
<histogram name="Media.RebuffersCount" units="rebuffers" expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicates the number of rebuffers a given watch time session had.
</summary>
</histogram>
<histogram name="Media.Remoting.AllowedByPage" enum="BooleanEnabled"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Tracks whether a web page allows content to be remoted.</summary>
</histogram>
<histogram name="Media.Remoting.AudioBitrate" units="kbps"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Measured audio content transfer bitrate while remoting content.
</summary>
</histogram>
<histogram name="Media.Remoting.AudioChannelLayout" enum="ChannelLayout"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Audio channel layout used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioCodec" enum="AudioCodec"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Audio codec used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioSamplesPerSecond" enum="AudioSampleRate"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Audio sampling rate while remoting audio content.</summary>
</histogram>
<histogram name="Media.Remoting.AudioSamplesPerSecondUnexpected" units="Hz"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Audio sampling rate while remoting audio content (atypical values, in Hz).
</summary>
</histogram>
<histogram name="Media.Remoting.Compatibility" enum="RemotingCompatibility"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.SessionDuration" units="ms"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Measures the duration of each remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.SessionStartTrigger"
enum="RemotingStartTrigger" expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Tracks the trigger for starting a remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.SessionStopTrigger" enum="RemotingStopTrigger"
expires_after="2021-07-01">
<!-- Name completed by histogram_suffixes name="RemotingSessionDuration" -->
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Tracks the trigger for stopping a remoting session.</summary>
</histogram>
<histogram name="Media.Remoting.ShortSessionDuration" units="ms"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Measures the duration of each remoting session shorter than 15 seconds.
</summary>
</histogram>
<histogram name="Media.Remoting.TimeUntilFirstPlayout" units="ms"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Tracks whether audio or video or both are remoted.</summary>
</histogram>
<histogram name="Media.Remoting.VideoAspectRatio" units="%"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Aspect ratio of video while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoBitrate" units="kbps"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Measured video content transfer bitrate while remoting content.
</summary>
</histogram>
<histogram name="Media.Remoting.VideoCodec" enum="VideoCodec"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Video codec used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoCodecProfile" enum="VideoCodecProfile"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Video codec profile used while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoNaturalWidth" units="pixels"
expires_after="2021-07-01">
<owner>miu@chromium.org</owner>
<owner>jophba@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Video width while remoting content.</summary>
</histogram>
<histogram name="Media.Remoting.VideoPixelRateSupport"
enum="RemotingVideoPixelRateSupport" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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.MaxSizeDropQueueCount"
units="count" expires_after="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="2021-05-31">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</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="VideoDecodeAcceleratorError"
expires_after="M82">
<owner>posciak@chromium.org</owner>
<summary>Counts of video decode errors reported to RTCVideoDecoder.</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderFallbackReason.{Codecs}"
enum="RTCVideoDecoderFallbackReason" expires_after="2021-06-01">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
The reason for fallback to software decoding for the codec {Codecs}.
</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.RTCVideoDecoderInitDecodeSuccess" enum="BooleanSuccess"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>mcasas@chromium.org</owner>
<owner>sprang@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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="2021-07-11">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Initialization latency of the hardware video decoder that is used in the RTC
pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderProfile" enum="VideoCodecProfile"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>mcasas@chromium.org</owner>
<owner>sprang@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</owner>
<summary>Video codec profile used in RTC video decoder.</summary>
</histogram>
<histogram name="Media.RTCVideoDecoderReinitializationLatencyMs" units="ms"
expires_after="2021-05-02">
<owner>kron@chromium.org</owner>
<owner>webrtc-video@google.com</owner>
<summary>
Reinitialization latency of the hardware video decoder that is used in the
RTC pipeline.
</summary>
</histogram>
<histogram name="Media.RTCVideoEncoderInitEncodeSuccess" enum="BooleanSuccess"
expires_after="never">
<!-- expires-never: WebRTC health metric. -->
<owner>mcasas@chromium.org</owner>
<owner>sprang@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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>mcasas@chromium.org</owner>
<owner>sprang@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</owner>
<summary>Video codec profile used in RTC video encoder.</summary>
</histogram>
<histogram name="Media.RTCVideoEncoderTimestampMatchSuccess"
enum="BooleanSuccess" expires_after="M77">
<owner>emircan@chromium.org</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.Session.ActiveTime" units="ms"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</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.Pause" enum="MediaSessionActionSource"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The number of times the user paused playback of a media session using other
means than the pause button on the page.
</summary>
</histogram>
<histogram name="Media.Session.Play" enum="MediaSessionActionSource"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</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.RequestAudioFocusResult" enum="BooleanSuccess"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicate whether the native requestAudioFocus() call was successful.
</summary>
</histogram>
<histogram name="Media.Session.Stop" enum="MediaSessionActionSource"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The number of times the user stopped a media session using other means than
the pause button on the page.
</summary>
</histogram>
<histogram name="Media.Session.Suspended" enum="MediaSessionSuspendedSource"
expires_after="2021-06-01">
<owner>mlamouri@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The number of times a media session is suspended and why it has been
suspended.
</summary>
</histogram>
<histogram name="Media.Session.UserAction" enum="MediaSessionUserAction"
expires_after="2020-02-02">
<owner>beccahughes@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The number of times user interacts with MediaSession sorted by action type.
</summary>
</histogram>
<histogram name="Media.Session.UserAction.Focus" enum="BooleanFocused"
expires_after="2020-02-02">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The focused state of the WebContents associated with the MediaSession that
the user is interacting with. Recorded when the user interacts with a
MediaSession (e.g. by pressing the play/pause key on their keyboard).
</summary>
</histogram>
<histogram name="Media.SRC.VideoCodec.MP4" enum="VideoCodec"
expires_after="never">
<!-- expires-never: Codec and container support planning metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Video codec used in plain src= (not MSE) HTML5 media if the media container
is WebM.
</summary>
</histogram>
<histogram base="true" name="Media.Timeline.DragGestureDuration" units="ms"
expires_after="2020-10-23">
<obsolete>
Deprecated as of 2020/10.
</obsolete>
<!-- Name completed by histogram_suffixes name="MediaTimelineWidths" -->
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The duration of the user gesture (how long their finger is down), recorded
at the end of each drag gesture. This histogram is split according to the
width of the slider track in CSS px - see histogram name suffix.
</summary>
</histogram>
<histogram base="true" name="Media.Timeline.DragPercent"
enum="MediaTimelinePercent" expires_after="2020-10-23">
<obsolete>
Deprecated as of 2020/10.
</obsolete>
<!-- Name completed by histogram_suffixes name="MediaTimelineWidths" -->
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The net distance the media scrubber moved, recorded at the end of each drag
gesture, as a percentage of the width of the slider track. This histogram is
split according to the width of the slider track in CSS px - see histogram
name suffix.
</summary>
</histogram>
<histogram base="true" name="Media.Timeline.DragSumAbsTimeDelta"
enum="MediaTimelineAbsTimeDelta" expires_after="2020-10-23">
<obsolete>
Deprecated as of 2020/10.
</obsolete>
<!-- Name completed by histogram_suffixes name="MediaTimelineWidths" -->
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The sum of absolute distances the media scrubber incrementally moved,
recorded at the end of each drag gesture, each measured as the change in
media current time. If the scrubber was dragged back and forth before being
released, this will be larger than the value recorded for
Media.Timeline.DragTimeDelta (and may even be larger than the media
duration), otherwise it will be the same as DragTimeDelta. This histogram is
split according to the width of the slider track in CSS px - see histogram
name suffix.
</summary>
</histogram>
<histogram base="true" name="Media.Timeline.DragTimeDelta"
enum="MediaTimelineTimeDelta" expires_after="2020-10-23">
<obsolete>
Deprecated as of 2020/10.
</obsolete>
<!-- Name completed by histogram_suffixes name="MediaTimelineWidths" -->
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The net distance the media scrubber moved, recorded at the end of each drag
gesture, measured as the change in media current time. This histogram is
split according to the width of the slider track in CSS px - see histogram
name suffix.
</summary>
</histogram>
<histogram base="true" name="Media.Timeline.SeekType"
enum="MediaTimelineSeekType" expires_after="2020-10-23">
<obsolete>
Deprecated as of 2020/10.
</obsolete>
<!-- Name completed by histogram_suffixes name="MediaTimelineWidths" -->
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The type of user gesture, recorded at the end of each input sequence. For
example holding down the right arrow key with the scrubber focused will only
be logged as a single event. This histogram is split according to the width
of the slider track in CSS px - see histogram name suffix.
</summary>
</histogram>
<histogram base="true" name="Media.TimeToFirstFrame" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Time in milliseconds from when WebMediaPlayerImpl starts loading until the
first video frame has been shown.
</summary>
</histogram>
<histogram base="true" name="Media.TimeToMetadata" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Time in milliseconds from when WebMediaPlayerImpl starts loading until
metadata is known.
</summary>
</histogram>
<histogram base="true" name="Media.TimeToPlayReady" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Time in milliseconds from when WebMediaPlayer starts loading until it has
buffered enough to start playback.
</summary>
</histogram>
<histogram name="Media.TotalMBytes" units="MB" expires_after="M85">
<owner>hajimehoshi@chromium.org</owner>
<owner>kouhei@chromium.org</owner>
<owner>scherkus@chromium.org</owner>
<summary>Size of HTML5 media (when known), in MB.</summary>
</histogram>
<histogram base="true" name="Media.UnderflowDuration2" units="ms"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<!-- Name completed by histogram_suffixes name="WebMediaPlayerImplTypes" -->
<owner>dalecurtis@chromium.org</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>
</histogram>
<histogram name="Media.URLScheme2" enum="URLSchemeForHistogram"
expires_after="never">
<!-- expires-never: Codec support planning metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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.VaapiVideoDecoder.DecodeError" enum="BooleanError"
expires_after="2021-08-05">
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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="2021-08-05">
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx-video@google.com</owner>
<summary>
Whether the creation of VaapiWrapper succeeded or not inside
VaapiVideoDecoder.
</summary>
</histogram>
<histogram name="Media.VaapiWrapper.VADisplayStateInitializeSuccess"
enum="BooleanSuccess" expires_after="2021-08-05">
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx-video@google.com</owner>
<summary>
Whether the call to VaapiWrapper's VADisplayState::Initialize() succeeded or
not.
</summary>
</histogram>
<histogram name="Media.VAJDA.ResponseToClient"
enum="MjpegDecodeAcceleratorErrorCode" expires_after="2022-01-07">
<owner>andrescj@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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.VAJEA.EncoderResult" enum="VAJEAEncoderResult"
expires_after="M95">
<owner>wtlee@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</owner>
<summary>
Result codes reported by jpeg encode using VA-API hardware jpeg encoder.
</summary>
</histogram>
<histogram name="Media.VAVDA.VaapiWrapperCreationSuccess" enum="BooleanSuccess"
expires_after="2021-08-05">
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx-video@google.com</owner>
<summary>
Whether the creation of VaapiWrapper succeeded or not inside VaVDA.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay" enum="AutoplaySource"
expires_after="2021-06-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the autoplay source of videos. This includes
Media.Video.Autoplay.Muted.
</summary>
</histogram>
<histogram name="Media.Video.Autoplay.Muted" enum="AutoplaySource"
expires_after="2021-06-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>Records the autoplay source of muted videos.</summary>
</histogram>
<histogram name="Media.Video.Autoplay.Muted.PlayMethod.BecomesVisible"
enum="Boolean" expires_after="2021-06-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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 &quot;play() method&quot; 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="2021-06-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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="2021-06-01">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</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="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram
name="Media.Video.Capture.Mac.CameraSystemPermission.FixedTime.SinceLastFailure"
units="ms" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Video.Capture.Mac.CameraSystemPermission.Startup"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram
name="Media.Video.Capture.Mac.CameraSystemPermission.StartupAfterFailure"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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.
</summary>
</histogram>
<histogram name="Media.Video.Capture.Mac.CameraSystemPermission.UserMedia"
enum="SystemMediaCapturePermission" expires_after="2020-03-01">
<owner>grunell@chromium.org</owner>
<owner>engedy@chromium.org</owner>
<owner>hkamila@chromium.org</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
&quot;not determined&quot; 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.
</summary>
</histogram>
<histogram name="Media.Video.Roughness" units="ms" expires_after="2021-07-11">
<owner>eugene@chromium.org</owner>
<owner>videostack-eng@chromium.org</owner>
<summary>
Video playback roughness for a 100s interval. Suffixed by the framerate.
</summary>
</histogram>
<histogram name="Media.VideoCapture.AspectRatio" units="%" expires_after="M82">
<owner>mcasas@chromium.org</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>mcasas@chromium.org</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.DelayUntilFirstFrame" units="ms"
expires_after="2021-06-06">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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.SupportedPixelFormat"
enum="VideoPixelFormatUnion" expires_after="M92">
<owner>eshr@google.com</owner>
<owner>handellm@google.com</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.)
</summary>
</histogram>
<histogram name="Media.VideoCapture.Device.SupportedResolution"
enum="VideoResolutionDesignation" expires_after="M92">
<owner>eshr@google.com</owner>
<owner>handellm@google.com</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.Error" enum="VideoCaptureError"
expires_after="2021-07-04">
<owner>mcasas@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>
Breaks down the events counted in Media.VideoCaptureManager.Event bucket
&quot;Stopping video capture due to error&quot; 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.FrameDrop"
enum="VideoCaptureFrameDropReason" expires_after="2021-07-04">
<owner>mcasas@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<summary>
An event for this histogram is emitted once for each time a video frame is
dropped on the way from a capture source, e.g. a webcam, to a corresponding
media::VideoCaptureController instance running in the Browser process. If
more than
|VideoCaptureController::max_consecutive_frame_drop_for_same_reason_count()|
frames are dropped consecutively for the same reason, no more events for the
same reason will be counted for that session until either a frame is
delivered successfully or the reason for the frame dropping changes.
</summary>
</histogram>
<histogram name="Media.VideoCapture.FrameRate" units="fps"
expires_after="2021-07-04">
<owner>mcasas@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</owner>
<owner>handellm@chromium.org</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.Height" units="pixels" expires_after="M99">
<owner>mcasas@chromium.org</owner>
<owner>handellm@chromium.org</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.MacBook.AttemptCountWhenNoCamera"
units="attempts" expires_after="2020-03-15">
<owner>chfremer@chromium.org</owner>
<summary>
Indicates how many times Chrome has asked AVFoundation to enumerate devices
since the process start when zero devices are returned. This event is only
emitted for the first time that zero devices are returned since the process
start. This is used in the context of investigating http://crbug.com/582931.
</summary>
</histogram>
<histogram name="Media.VideoCapture.MacBook.HardwareVersionWhenNoCamera"
enum="MacBookVersions" expires_after="M82">
<owner>perkj@chromium.org</owner>
<summary>
MacBook hardware version used when Chrome cannot enumerate a video device.
This is used for tracking http://crbug.com/582931.
</summary>
</histogram>
<histogram name="Media.VideoCapture.MacBook.NumberOfDevices" units="devices"
expires_after="M82">
<owner>perkj@chromium.org</owner>
<summary>
Number of video capture devices detected by Chrome during device
enumeration. Zero devices indicate a problem since all MacBooks should have
a built-in camera. This is used for tracking http://crbug.com/582931.
</summary>
</histogram>
<histogram name="Media.VideoCapture.MacBook.RetryGetDeviceInfosEvent"
enum="MacbookRetryGetDeviceInfosEvent" expires_after="2019-05-15">
<owner>chfremer@chromium.org</owner>
<summary>
Counts events that are emitted in the context of attempting to mitigate the
issue of no cameras being found on Macbooks by restarting the video capture
service and retrying to obtain device infos, see http://crbug.com/582931.
</summary>
</histogram>
<histogram name="Media.VideoCapture.MaxFrameDropExceeded"
enum="VideoCaptureFrameDropReason" expires_after="M77">
<owner>chfremer@chromium.org</owner>
<summary>
An event for this histogram is emitted when a video capture session drops
more than
|VideoCaptureController::max_consecutive_frame_drop_for_same_reason_count()|
consecutive video frames for the same reason. After this event is emitted
once, no additional events are emitted for consecutively dropped frames for
the same reason until the count is reset by either a frame being delivered
successfully or a frame being dropped for a different reason. See also
Media.VideoCapture.FrameDrop.
</summary>
</histogram>
<histogram name="Media.VideoCapture.NumberOfClients" units="units"
expires_after="M95">
<owner>fbeaufort@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<summary>
Number of times a video capture device is accessed simultaneously. Recorded
when video capturing starts.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Width" units="pixels" expires_after="M99">
<owner>mcasas@chromium.org</owner>
<owner>handellm@chromium.org</owner>
<summary>
Video Capture Device captured frame width in pixels. The collection is made
in the VideoCaptureController upon reception of the first frame.
</summary>
</histogram>
<histogram name="Media.VideoCapture.Windows.BackendUsed"
enum="VideoCaptureWinBackendUsed" expires_after="M77">
<owner>chfremer@chromium.org</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>chfremer@chromium.org</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>chfremer@chromium.org</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="2021-02-01">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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="2021-02-01">
<owner>guidou@chromium.org</owner>
<owner>armax@chromium.org</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.VideoCaptureGpuJpegDecoder.InitDecodeSuccess"
enum="BooleanSuccess" expires_after="M77">
<owner>henryhsu@chromium.org</owner>
<summary>
Indicates whether we were successful in initializing hardware jpeg decoder
for attempts to VideoCaptureGpuJpegDecoder::Initialize().
</summary>
</histogram>
<histogram name="Media.VideoCaptureManager" units="ms" expires_after="M85">
<owner>mcasas@chromium.org</owner>
<summary>Measures the time taken for VideoCaptureManager::</summary>
</histogram>
<histogram name="Media.VideoCaptureManager.Event" enum="VideoCaptureEvent"
expires_after="M82">
<owner>chfremer@chromium.org</owner>
<owner>mcasas@chromium.org</owner>
<summary>
Counts video capture event, such as start and stop capture. Note that the
ideal case is 50% start events and 50% normal stop events.
</summary>
</histogram>
<histogram
name="Media.VideoCaptureService.DurationFromLastConnectToClosingConnectionAfterCapture"
units="ms" expires_after="M78">
<owner>chfremer@chromium.org</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>chfremer@chromium.org</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>chfremer@chromium.org</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>chfremer@chromium.org</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>chfremer@chromium.org</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>chfremer@chromium.org</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>dalecurtis@chromium.org</owner>
<summary>Video codec used in HTML5 media.</summary>
</histogram>
<histogram name="Media.VideoDecoderFallback" enum="BooleanDidFallBack"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether Chrome had to fall back to a secondary video decoder after the
primary decoder failed reinitialization.
</summary>
</histogram>
<histogram base="true" name="Media.VideoDecodeStatsDB.OpSuccess"
enum="BooleanSuccess" expires_after="never">
<!-- expires-never: MediaCapabilities DB health metric. -->
<!-- Name completed by histogram_suffixes name="VideoDecodeStatsDBOperations" -->
<owner>chcunningham@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicates whether we were successful performing some database operation. See
suffix VideoDecodeStatsDBOperations.
</summary>
</histogram>
<histogram name="Media.VideoDecodeStatsDB.OpTiming" units="microseconds"
expires_after="never">
<!-- expires-never: MediaCapabilities DB health metric. -->
<!-- Name completed by histogram_suffixes name="VideoDecodeStatsDBOperations" -->
<owner>chcunningham@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicates duration of time performing some database operation.
</summary>
</histogram>
<histogram name="Media.VideoFrameSubmitter" units="ms" expires_after="never">
<!-- expires-never: used by ChromeOS test infrastructure -->
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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 base="true" name="Media.VideoHeight.Initial" units="pixels"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The height of the first video frame in an HTML5 video. Reported when the
first video frame is available.
</summary>
</histogram>
<histogram name="Media.VideoPersistence.AttemptResult"
enum="VideoPersistenceAttemptResult" expires_after="M93">
<owner>mlamouri@google.com</owner>
<owner>peconn@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Every time a video persistence session could be triggered, it records the
result of the attempt.
</summary>
</histogram>
<histogram name="Media.VideoPersistence.ControlsType"
enum="VideoPersistenceControlsType" expires_after="M93">
<owner>mlamouri@google.com</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Record the type of controls a persisted video is using. This is recorded
every time a video enters persistence mode
</summary>
</histogram>
<histogram name="Media.VideoPersistence.Duration" units="ms"
expires_after="M93">
<owner>mlamouri@google.com</owner>
<owner>peconn@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the length during which a video was in a persistent state. It is
recorded once per video persistence session.
</summary>
</histogram>
<histogram name="Media.VideoPersistence.EndReason"
enum="VideoPersistenceEndReason" expires_after="M93">
<owner>mlamouri@google.com</owner>
<owner>peconn@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Records the reason why a video persistence session has ended.
</summary>
</histogram>
<histogram name="Media.VideoRenderer.CadenceChanges" units="changes"
expires_after="never">
<!-- expires-never: Media pipeline health metric. -->
<owner>dalecurtis@chromium.org</owner>
<owner>media-dev@chromium.org</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.VideoRenderer.LowDelay" enum="Boolean"
expires_after="2021-05-07">
<owner>xhwang@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Indicates whether video is rendering in low delay mode. It's recorded when a
video starts playing.
</summary>
</histogram>
<histogram name="Media.VideoRotation" enum="VideoRotation" expires_after="M79">
<owner>dalecurtis@chromium.org</owner>
<summary>Metadata rotation in mp4 videos. Emitted during demuxing.</summary>
</histogram>
<histogram name="Media.VirtualAudioCaptureStartupSuccess"
enum="AudioCaptureStartupResult" expires_after="2020-10-01">
<owner>armax@chromium.org</owner>
<owner>guidou@chromium.org</owner>
<owner>olka@chromium.org</owner>
<summary>
Whether capture started successfully after a high-latency input stream
startup was requested.
</summary>
</histogram>
<histogram name="Media.VTVDA.HardwareAccelerated"
enum="BooleanHardwareAccelerated" expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Whether a VTDecompressionSession is internally using hardware accelerated
decoding.
</summary>
</histogram>
<histogram name="Media.VTVDA.InitializationFailureReason"
enum="VTVDAInitializationFailureType" expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Count of VideoToolbox initialization failure reasons. Successful
initializations are counted as a special failure type. The sum of successes
and failures gives a lower bound on the number of attempted initializations.
</summary>
</histogram>
<histogram name="Media.VTVDA.SessionFailureReason"
enum="VTVDASessionFailureType" expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Count of VTVDA session failure reasons. Successful initializations are
counted as a special failure type. Since only successfully initialized
session can fail, failures rates are computed as a simple ratio.
</summary>
</histogram>
<histogram name="Media.WatchTime" units="ms" expires_after="2021-06-20">
<owner>dalecurtis@chromium.org</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="2021-06-01">
<owner>sandersd@chromium.org</owner>
<owner>tguilbert@chromium.org</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="2021-06-01">
<owner>sandersd@chromium.org</owner>
<owner>tguilbert@chromium.org</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="2021-06-01">
<owner>sandersd@chromium.org</owner>
<owner>tguilbert@chromium.org</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.WatchTime"
enum="WebMediaPlayerWatchTimeType" expires_after="2021-08-01">
<owner>sandersd@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
Wall time of WebMediaPlayer playbacks. Each count represents one second of
media playback. Multiple WebMediaPlayer instances can together accumulate
watch time faster than real time.
</summary>
</histogram>
<histogram name="Media.YouTube.TimeToBufferAv" units="ms" expires_after="M85">
<owner>Please list the metric's owners. Add more owner tags as needed.</owner>
<summary>
Time needed to pre-buffer A/V data before the actual playback for the
YouTube application.
</summary>
</histogram>
<histogram name="Media.YouTube.TimeToBufferAvAfterUnderrun" units="ms"
expires_after="M85">
<owner>Please list the metric's owners. Add more owner tags as needed.</owner>
<summary>
Time needed to buffer A/V data after an underrun for the YouTube
application.
</summary>
</histogram>
<histogram name="Media.{VaapiClientName}.VAAPIError" enum="VaapiFunctions"
expires_after="2021-08-05">
<owner>mcasas@chromium.org</owner>
<owner>chromeos-gfx@chromium.org</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="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="MediaGalleries.ScanCancelTime" units="ms" expires_after="M85">
<owner>vandebo@chromium.org</owner>
<summary>If a media scan was cancelled, the duration (in ms) it ran.</summary>
</histogram>
<histogram name="MediaGalleries.ScanDirectoriesFound" units="units"
expires_after="M85">
<owner>vandebo@chromium.org</owner>
<summary>
The number of directories with media files found during a scan.
</summary>
</histogram>
<histogram name="MediaGalleries.ScanFinishedTime" units="ms"
expires_after="M85">
<owner>vandebo@chromium.org</owner>
<summary>
Duration in milliseconds taken to do a media scan that ran to completion.
</summary>
</histogram>
<histogram name="MediaGalleries.ScanGalleriesGranted" units="%"
expires_after="M85">
<owner>vandebo@chromium.org</owner>
<summary>
The percentage of galleries accepted (not deselected) from the scan result
dialog.
</summary>
</histogram>
<histogram name="MediaGalleries.ScanGalleriesPopulated" units="units"
expires_after="M85">
<owner>vandebo@chromium.org</owner>
<summary>
The number of galleries added or updated in preferences after a scan.
</summary>
</histogram>
<histogram name="MediaGalleries.Usage" enum="MediaGalleriesUsageType"
expires_after="M77">
<owner>vandebo@chromium.org</owner>
<summary>Various usage counts for media galleries.</summary>
</histogram>
<histogram name="MediaLauncherActivity.LaunchResult" enum="BooleanSuccess"
expires_after="2021-06-19">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
True if the MediaLauncherActivity was successfully able to open the file.
Recorded when the MediaLauncherActivity starts the CustomTabActivity.
</summary>
</histogram>
<histogram name="MediaLauncherActivity.MediaType"
enum="MediaLauncherActivityMediaType" expires_after="2021-03-28">
<owner>steimel@chromium.org</owner>
<owner>media-dev@chromium.org</owner>
<summary>
The type of media that a user is opening via the MediaLauncherActivity.
</summary>
</histogram>
<histogram base="true" name="MediaRouter.Cast.App.Availability" units="ms"
expires_after="2022-02-01">
<!-- Name completed by histogram_suffixes name="MediaRouterSuccess" -->
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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.Discovery.CachedSinksAvailableCount"
units="devices" expires_after="2021-07-01">
<owner>btolsch@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The number of Cast devices available from the device cache at the time of a
new network connection.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.Discovery.ConnectedDevicesCount"
units="devices" expires_after="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>btolsch@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>The source of discovery for a newly-created Cast sink.</summary>
</histogram>
<histogram name="MediaRouter.Cast.LaunchSessionRequest.SupportedAppTypes"
enum="ReceiverAppTypeSet" expires_after="2021-06-08">
<owner>muyaoxu@google.com</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The types of apps supported by the sender page. Recorded when requesting the
receiver to launch a new session.
</summary>
</histogram>
<histogram name="MediaRouter.Cast.LaunchSessionResponse.AppType"
enum="MediaRouterResponseReceiverAppType" expires_after="2021-06-08">
<owner>muyaoxu@google.com</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Duration in milliseconds taken to successfully open a cast channel. Recorded
when one opening channel attempt succeeds.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Audio.PlaybackOnReceiver"
enum="Boolean" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>muyaoxu@google.com</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Total time to launch a Cast Streaming mirror session.</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length" units="ms"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.File" units="ms"
expires_after="2021-07-01">
<owner>rwkeane@google.com</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Total length of a Cast Streaming File mirror session.</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.OffscreenTab"
units="ms" expires_after="2021-07-01">
<owner>rwkeane@google.com</owner>
<owner>openscreen-eng@google.com</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="2021-07-01">
<owner>rwkeane@google.com</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Total length of a Cast Streaming Screen mirror session.</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Session.Length.Tab" units="ms"
expires_after="2021-07-01">
<owner>rwkeane@google.com</owner>
<owner>openscreen-eng@google.com</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"
enum="MirrorFailureType" expires_after="2021-06-06">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Whenever a Cast Streaming session fails to start, record the error
associated with the event. This is recorded only for the extension Cast MRP.
See MediaRouter.CastStreaming.Start.Failure.Native for the native MRP.
</summary>
</histogram>
<histogram name="MediaRouter.CastStreaming.Start.Failure.Native"
enum="MirroringServiceErrorType" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.CastWebSenderExtensionLoaded"
enum="BooleanEnabled" expires_after="2021-04-04">
<owner>rwkeane@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Whenever a resource is loaded from the Media Router Component Extension,
this metric gets logged. The value for this metric is always true.
</summary>
</histogram>
<histogram name="MediaRouter.Cloud.PrefAtDialogOpen" enum="BooleanEnabled"
expires_after="2021-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The pref value to enable the cloud services. Recorded whenever the Cast
dialog is opened.
</summary>
</histogram>
<histogram name="MediaRouter.Cloud.PrefAtInit" enum="BooleanEnabled"
expires_after="2021-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The pref value to enable the cloud services. Recorded whenever the browser
is initialized for a regular (not incognito or guest) profile.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.AvailableDevicesCount" units="devices"
expires_after="2022-02-01">
<owner>mfoltz@chromium.org</owner>
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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.FetchAppInfo"
enum="MediaRouterDialFetchAppInfoResult" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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.Dial.ParseMessage"
enum="MediaRouterDialParseMessageResult" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The result of parsing a Cast SDK message in the DIAL media route provider.
Recorded when the DIAL media route prover finishes parsing a Cast SDK
message sent from a Cast-enabled webpage.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.ParsingError"
enum="MediaRouterDialParsingError" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Error encountered while parsing DIAL device description XML text. Recorded
when utility process returns an invalid DIAL device description object to
browser.
</summary>
</histogram>
<histogram name="MediaRouter.Dial.TerminateRoute"
enum="MediaRouterDialTerminateRouteResult" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The result of a DIAL TerminateRoute request. Recorded the user requests to
terminate a DIAL media route.
</summary>
</histogram>
<histogram name="MediaRouter.Icon.Click.Location"
enum="MediaRouterDialogOpenOrigin" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>Location the user clicked to open the Media Router dialog.</summary>
</histogram>
<histogram name="MediaRouter.MirroringService.SessionError"
enum="MirroringServiceErrorType" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.NetworkMonitor.ConnectionType"
enum="DiscoveryNetworkMonitorConnectionType" expires_after="2021-06-06">
<obsolete>
Unused after 2021-01-06.
</obsolete>
<owner>btolsch@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Network connection type reported by DiscoveryNetworkMonitor whenever it
detects a change in the set of networks connected to the host device which
may affect local discovery.
</summary>
</histogram>
<histogram name="MediaRouter.NetworkMonitor.NetworkChangeEventDelta" units="ms"
expires_after="2021-02-01">
<obsolete>
Unused after 2021-01-06.
</obsolete>
<owner>btolsch@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Time between network change events reported by DiscoveryNetworkMonitor.
</summary>
</histogram>
<histogram name="MediaRouter.PresentationRequest.AvailabilityUrlType"
enum="PresentationUrlType" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The type of Presentation URL used in a PresentationRequest by a web page.
</summary>
</histogram>
<histogram name="MediaRouter.PresentationRequest.UrlBySink"
enum="PresentationUrlBySink" expires_after="2021-07-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<!-- Name completed by histogram_suffixes name="MediaRouteProvider" -->
<owner>takumif@chromium.org</owner>
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</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.Provider.Version" enum="MediaRouteProviderVersion"
expires_after="2021-02-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Records how the major version of the Media Router component extension
compares to the major version of the browser.
</summary>
</histogram>
<histogram name="MediaRouter.Provider.WakeReason"
enum="MediaRouteProviderWakeReason" expires_after="2021-05-16">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Reason that the Media Router woke the Media Route Provider event page.
</summary>
</histogram>
<histogram name="MediaRouter.Provider.Wakeup" enum="MediaRouteProviderWakeup"
expires_after="2021-02-01">
<owner>mfoltz@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Records the outcome of waking the Media Router component's event page.
</summary>
</histogram>
<histogram name="MediaRouter.Route.CreationOutcome"
enum="MediaRouterCreateRouteOutcome" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The number of times a Media Router create route response succeeds or fails.
This breaks down the different failure types in to separate buckets.
</summary>
</histogram>
<histogram name="MediaRouter.Sink.SelectedType" enum="MediaSinkType"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.
</summary>
</histogram>
<histogram name="MediaRouter.Source.CastingSource"
enum="MediaRouterSourceTypes" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.Source.LocalFileFormat" enum="MediaContainers"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The file format of a local media Media Router session. This is recorded when
a casting session begins to keep track of what kind of media is being
streamed.
</summary>
</histogram>
<histogram name="MediaRouter.Source.LocalFileSize" units="MB"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The file size of a local media Media Router session. This is recorded when a
casting session begins to keep track of what kind of media is being
streamed, specifically, whether it is a clip or a song, or a full length
film or podcast.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Action.CloseLatency" units="ms"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Duration in milliseconds taken from the user opening the Media Router dialog
to the user closing the dialog. This is only recorded if closing the dialog
is the first action the user takes.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Action.StartLocal.Latency" units="ms"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Duration in milliseconds taken from the Media Router dialog showing the sink
list and being populated with at least one device to the user selecting a
device immediately after to create a new route.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Action.StartLocalPosition"
enum="MediaRouterSinkPositionLabel" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>The index of the sink that was selected in the sink list.</summary>
</histogram>
<histogram name="MediaRouter.Ui.Action.StartLocalSessionSuccessful"
enum="BooleanSuccess" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The number of times a session was successfully started versus failed.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Action.StopRoute" enum="MediaRouteType"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>The number of times a user stops different types of routes.</summary>
</histogram>
<histogram name="MediaRouter.Ui.Device.Count" units="units"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Counts the number of devices known and populated to the Media Router dialog
three seconds after the dialog loads. Always expected to be non-negative.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Dialog.ActivationLocationAndCastMode"
enum="MediaRouterDialogActivationLocationAndCastMode"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.Dialog.LoadedWithData" units="ms"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Duration in milliseconds taken from the user click to open the Media Router
dialog to initializing the dialog with data.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Dialog.Paint" units="ms"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
Duration in milliseconds taken from a user click to open the Media Router
dialog to the initial paint.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.FirstAction" enum="MediaRouterUserAction"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The first action taken by the user after opening the Media Router dialog.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.IconStateAtInit" enum="MediaRouterIconState"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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.
Recorded whenever the browser is initialized for a regular (not incognito or
guest) profile.
</summary>
</histogram>
<histogram name="MediaRouter.Ui.Navigate.SourceSelection"
enum="MediaRouterSourceTypes" expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</owner>
<summary>
The number of times the user selects a specific cast source type.
</summary>
</histogram>
<histogram name="MediaRouter.WiredDisplay.AvailableDevicesCount" units="units"
expires_after="2022-02-01">
<owner>takumif@chromium.org</owner>
<owner>openscreen-eng@google.com</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>