Closed Bug 1356046 Opened 5 years ago Closed 3 years ago

Remove expired media-related telemetry histograms and code

Categories

(Core :: Audio/Video: Playback, enhancement, P2)

69 Branch
enhancement

Tracking

()

RESOLVED FIXED
Future
Tracking Status
firefox55 --- wontfix
firefox70 --- fixed

People

(Reporter: gerald, Assigned: dminor)

References

Details

Attachments

(1 file)

Follow-up to bug 1354954, which extended a subset of histograms from 55 to 60.

The remaining histograms are set to expire after 55, and some are even older.
If we're confident we won't need them anymore, and once 56 becomes available, we should just remove the histograms and also their supporting code.

I would suggest that we first determine which ones can go for sure and which ones we may want to keep around just in case they may be needed.
Then we can work on removing them (in this, or sub-bugs, as appropriate).

Expiring in 55:
MEDIA_WMF_DECODE_ERROR
SANDBOX_MEDIA_ENABLED
VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG
VIDEO_DECODED_H264_SPS_LEVEL
VIDEO_DECODED_H264_SPS_PROFILE
VIDEO_DROPPED_FRAMES_PROPORTION
VIDEO_EME_REQUEST_FAILURE_LATENCY_MS
VIDEO_EME_REQUEST_SUCCESS_LATENCY_MS
VIDEO_H264_SPS_MAX_NUM_REF_FRAMES
WEBVTT_TRACK_KINDS
WEBVTT_USED_VTT_CUES

Expired in 53:
MEDIA_OGG_LOADED_IS_CHAINED
VIDEO_MFT_OUTPUT_NULL_SAMPLES
AUDIO_MFT_OUTPUT_NULL_SAMPLES

Data gathered from this spreadsheet:
https://docs.google.com/a/mozilla.com/spreadsheets/d/1olxtymhc1--2SwqLgMZvwKs-Z_6herO4qYZbIHFOR0A/edit?usp=sharing

I have an updated spreadsheet here that covers both media and webrtc probes: https://docs.google.com/spreadsheets/d/1Oh_MYGTGG0Vq5N8z8FAzX46P3SWMwDU3Rm-EFGu80yg/edit#gid=905776447

Here is a list of expired probes that seem playback related:

  • AUDIOSTREAM_LATER_OPEN_MS 50 The length of time (in milliseconds) for the subsequent opens of AudioStream.
  • AUDIOSTREAM_FIRST_OPEN_MS 50 The length of time (in milliseconds) for the first open of AudioStream.
  • WEBVTT_TRACK_KINDS 55 Number of the use of the subtitles kind track.
  • MEDIA_WMF_DECODE_ERROR 55 WMF media decoder error or success (0) codes.
  • WEBVTT_USED_VTT_CUES 55 Number of the use of the vtt cues.
  • VFC_CLEARFUTUREFRAMES_LOCK_HOLD_MS 57 Time (ms) VideoFrameContainer::ClearFutureFrames spent holding a lock.
  • VFC_CLEARCURRENTFRAME_LOCK_HOLD_MS 57 Time (ms) VideoFrameContainer::ClearCurrentFrame spent holding a lock.
  • VFC_SETIMAGES_LOCK_HOLD_MS 57 Time (ms) VideoFrameContainer::SetCurrentFrames(nsTArray<ImageContainer::NonOwningImage>) spent holding a lock.
  • VFC_SETCURRENTFRAME_LOCK_HOLD_MS 57 Time (ms) VideoFrameContainer::SetCurrentFrame spent holding a lock.
  • MEDIACACHE_WATERMARK_KB 60 Maximum MediaCache buffer size reached, in KB. Recorded at every MediaCache destruction, i.e., whenever there is no more media data to be downloaded or kept for playback.
  • MEDIACACHESTREAM_NOTIFIED_LENGTH 60 MediaCacheStream stream notified length size in bytes, from the HTTP header. Recorded when each MediaCacheStream is first notified.
  • MEDIACACHE_BLOCKOWNERS_WATERMARK 60 Maximum number of owners for each MediaCache block. Recorded at every MediaCache destruction, i.e., whenever there is no more media data to be downloaded or kept for playback.
  • MEMORYBLOCKCACHE_ERRORS 60 Unexpected errors encountered during use of MemoryBlockCache.
  • MEDIACACHE_MEMORY_WATERMARK 60 Maximum memory-backed-MediaCache memory usage reached, in bytes. Recorded at every Firefox shutdown if memory-backed-MediaCache was used.
  • MEDIACACHESTREAM_LENGTH_KB 60 MediaCacheStream stream length size in KB; Either known size from the HTTP header if available, or otherwise the size actually downloaded. Recorded at every MediaCacheStream destruction.
  • AUDIO_MFT_OUTPUT_NULL_SAMPLES 63 How many times the audio MFT decoder returns success but output nothing.
  • VIDEO_DROPPED_FRAMES_PROPORTION 63 Percentage of frames decoded frames dropped in an HTMLVideoElement
  • VIDEO_HW_DECODER_CRASH_RECOVERY_TIME_SINCE_GPU_CRASHED_MS 63 Time in milliseconds to recover a video decoder from a HW video decoder crash, calculated since VideoDecoderChild::ActorDestroy() is called. The data is sent when video decoding is recovered from a GPU crash and the first frame is decoded.
  • VIDEO_VP9_BENCHMARK_FPS 63 720p VP9 decode benchmark measurement in frames per second
  • MEDIA_EME_REQUEST_DEPRECATED_WARNINGS 63 Counts types of deprecation warnings logged on every successful call to navigator.requestMediaKeySystemAccess().
  • VIDEO_FASTSEEK_USED 63 Uses of HTMLMediaElement.fastSeek
  • VIDEO_AS_CONTENT_SOURCE_IN_TREE_OR_NOT 63 Usage of an invisible {in tree / not in tree} video element as the source of {drawImage(), createPattern(), createImageBitmap() and captureStream()} APIs.
  • VIDEO_CANPLAYTYPE_H264_PROFILE 63 The H.264 profile number (profile_idc) as extracted from the codecs parameter passed to HTMLMediaElement.canPlayType.
  • VIDEO_PLAY_TIME_MS 63 Total time spent playing video in milliseconds. This reports the total play time for an HTML Media Element whenever it is suspended or resumed, such as when the page is unloaded, or when the mute status changes when the AudioChannelAPI pref is set.
  • VIDEO_INTER_KEYFRAME_MAX_MS 63 Maximum interval between video keyframes in played videos, in milliseconds; '0' means only 1 keyframe found. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,0<h<=240', 'AV,h>2160'; and 'All' will accumulate all percentages. This is reported whenever an HTML Media Element is suspended or resumed, such as when the page is unloaded.
  • VIDEO_HIDDEN_PLAY_TIME_MS 63 Total time spent playing video while element is hidden, in milliseconds. This reports the total hidden play time for an HTML Media Element whenever it is suspended or resumed, such as when the page is unloaded, or when the mute status changes when the AudioChannelAPI pref is set.
  • MEDIA_HLS_DECODER_SUCCESS 63 Reports whether a decoder for an HTTP Live Streaming media type was created when requested.
  • VIDEO_UNBLACKINGLISTING_DXVA_DRIVER_RUNTIME_STATUS 63 The runtime status, sent when a remote HW video decoder is shutdown, of previously-blacklisted driver: 0:remote HW-decoding and GPU process didn't crash, 1:remote HW-decoding and GPU process crashed. The histogram is keyed by the blacklisted driver name.
  • VIDEO_INFERRED_DECODE_SUSPEND_PERCENTAGE 63 Percentage of total time spent not fully decoding video while element is hidden (simulated, even when feature is not enabled). Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,0<h<=240', 'AV,h>2160'; and 'All' will accumulate all percentages. This is reported whenever an HTML Media Element is suspended or resumed, such as when the page is unloaded.
  • VIDEO_CANPLAYTYPE_H264_CONSTRAINT_SET_FLAG 63 The H.264 constraint set flag as extracted from the codecs parameter passed to HTMLMediaElement.canPlayType, with the addition of 0 for unknown values.
  • VIDEO_HW_DECODER_CRASH_RECOVERY_TIME_SINCE_MFR_NOTIFIED_MS 63 Time in milliseconds to recover a video decoder from a HW video decoder crash, calculated since MFR gets a NS_ERROR_DOM_MEDIA_NEED_NEW_DECODER error. The data is sent when video decoding is recovered from a GPU crash and the first frame is decoded.
  • VIDEO_H264_SPS_MAX_NUM_REF_FRAMES 63 SPS.max_num_ref_frames indicates how deep the H.264 queue is going to be, and as such the minimum memory usage by the decoder, from 0 to 16. 17 indicates an invalid value.
  • VIDEO_DECODED_H264_SPS_LEVEL 63 The H.264 level (level_idc) as extracted from the decoded SPS, from levels 1 (10) to 5.2 (51), with the addition of 0 for unknown values.
  • VIDEO_SUSPEND_RECOVERY_TIME_MS 63 Time taken for a video to resume after decoding was suspended, in milliseconds. Keyed by audio presence, hw acceleration, and by height ranges (boundaries: 240. 480, 720, 1080, 2160), e.g.: 'V,0-240', 'AV(hw),2160+'; and 'All' will accumulate all percentages.
  • VIDEO_MFT_OUTPUT_NULL_SAMPLES 63 Does the WMF video decoder return success but null output? 0 = playback successful, 1 = excessive null output but able to decode some frames, 2 = excessive null output and gave up, 3 = null output but recovered, 4 = non-excessive null output without being able to decode frames.
  • VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE 63 Percentage of total time spent playing video while element is hidden. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,0<h<=240', 'AV,h>2160'; and 'All' will accumulate all percentages. This is reported whenever an HTML Media Element is suspended or resumed, such as when the page is unloaded.
  • VIDEO_AS_CONTENT_SOURCE 63 Usage of a {visible / invisible} video element as the source of {drawImage(), createPattern(), createImageBitmap() and captureStream()} APIs. (0 = ALL_VISIBLE, 1 = ALL_INVISIBLE, 2 = drawImage_VISIBLE, 3 = drawImage_INVISIBLE, 4 = createPattern_VISIBLE, 5 = createPattern_INVISIBLE, 6 = createImageBitmap_VISIBLE, 7 = createImageBitmap_INVISIBLE, 8 = captureStream_VISIBLE, 9 = captureStream_INVISIBLE)
  • VIDEO_INTER_KEYFRAME_AVERAGE_MS 63 Average interval between video keyframes in played videos, in milliseconds. Keyed by audio presence and by height ranges (boundaries: 240. 480, 576, 720, 1080, 2160), e.g.: 'V,0<h<=240', 'AV,h>2160'; and 'All' will accumulate all percentages. This is reported whenever an HTML Media Element is suspended or resumed, such as when the page is unloaded.
  • VIDEO_UNLOAD_STATE 63 HTML Media Element state when unloading. ended = 0, paused = 1, stalled = 2, seeking = 3, other = 4
    MEDIA_HLS_CANPLAY_REQUESTED 63 Reports a true value when a page requests canPlayType for an HTTP Live Streaming media type (or generic m3u playlist).
  • VIDEO_CANPLAYTYPE_H264_LEVEL 63 The H.264 level (level_idc) as extracted from the codecs parameter passed to HTMLMediaElement.canPlayType, from levels 1 (10) to 5.2 (51), with the addition of 0 for unknown values.
  • VIDEO_DECODED_H264_SPS_PROFILE 63 The H.264 profile number (profile_idc) as extracted from the decoded SPS.
  • VIDEO_DECODED_H264_SPS_CONSTRAINT_SET_FLAG 63 A bit pattern to collect H.264 constraint set flag from the decoded SPS. Bits 0 through 5 represent constraint_set0_flag through constraint_set5_flag, respectively.
  • MEDIA_MKV_CANPLAY_REQUESTED 65 Reports a true value when a page requests canPlayType for a matroska media type.
  • AUDIOSTREAM_BACKEND_USED 65 The operating system audio back-end used when successfully opening an audio stream, or whether the failure occurred on the first try or not
  • VIDEO_CAN_CREATE_AAC_DECODER 68 Whether at startup we report we can playback MP4 (AAC) audio. This is single value is recorded at every startup.
  • MEDIA_AUTOPLAY_WOULD_BE_ALLOWED_COUNT 68 The number of HTMLMediaElement autoplays on audible HTMLMediaElements that would have been allowed (not blocked) by the autoplay policy if block autoplay was enabled.
  • MEDIA_ALLOWED_AUTOPLAY_NO_AUDIO_TRACK_COUNT 68 The number of HTMLMediaElement autoplays on HTMLMediaElements without an audio track which would be allowed to play.
  • MEDIA_AUTOPLAY_WOULD_NOT_BE_ALLOWED_COUNT 68 The number of HTMLMediaElement autoplays on audible HTMLMediaElements which would not be allowed to play if block autoplay was enabled; we'd either prompt for permission to play or block outright depending on user preferences.
  • MEDIA_BLOCKED_NO_METADATA_ENDUP_NO_AUDIO_TRACK 68 The number of HTMLMediaElements which were blocked because they hadn't loaded metadata yet, but ended up having no audio track.
  • MEDIA_BLOCKED_NO_METADATA 68 The number of HTMLMediaElements which we blocked because they hadn't loaded metadata yet.
  • VIDEO_CAN_CREATE_H264_DECODER 68 Whether at startup we report we can playback MP4 (H.264) video. This is single value is recorded at every startup.
  • AUDIO_TRACK_SILENCE_PROPORTION 68 In order to know how many silent audio track in the web comparing to other normal media, we record the silence proportion of audio track of media element. The range of value is from 0% - 100%.

Since many of these have been expired for a long time, I think the easiest way ahead is for me to prepare a patch to remove all of the expired probes and then we can flag any that we want to renew rather than remove during code review.

Assignee: nobody → dminor
Priority: P3 → P2
Target Milestone: mozilla56 → Future
Version: 55 Branch → 69 Branch
Duplicate of this bug: 1412764

This removes all telemetry which expired in Firefox 69 or earlier, with the
exception of VIDEO_PLAY_TIME, VIDEO_HIDDEN_PLAY_TIME and
VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE, which we plan to renew.

Status: NEW → ASSIGNED
See Also: → 1567604

Jean-Yves, could you please have another look at this? There are a few questions from Bryce to you in the issues.

Flags: needinfo?(jyavenard)
Flags: needinfo?(jyavenard)

Hey dminor,

Do you think it's in the cards that this work will be ready to go before the next uplift for 70? I'm hoping to use the VIDEO_PLAY_TIME probe in bug 1567604.

Flags: needinfo?(dminor)

(In reply to Mike Conley (:mconley) (:⚙️) from comment #6)

Hey dminor,

Do you think it's in the cards that this work will be ready to go before the next uplift for 70? I'm hoping to use the VIDEO_PLAY_TIME probe in bug 1567604.

That is the plan, but this isn't my top priority at the moment. There's also been some discussion about changing how we measure how much time is spent watching video. If VIDEO_PLAY_TIME is useful to you for picture-in-picture, I think it might make sense for you to request renewal for it (and maybe VIDEO_HIDDEN_PLAY_TIME?) rather than wait on me to get all of the ducks in a row here.

Flags: needinfo?(dminor)

Mike, I just noticed jya's comment on Bug 1567604 that VIDEO_PLAY_TIME should be sufficient. Based on that, I think it does make sense for me to the changes here rather than for you to renew just VIDEO_PLAY_TIME. Sorry!

Attachment #9076627 - Attachment description: Bug 1356046 - Remove expired media telemetry; r=jya! → Bug 1356046 - Remove expired media telemetry; r=alwu!,r=bryce!,r=jya!
Attachment #9076627 - Attachment description: Bug 1356046 - Remove expired media telemetry; r=alwu!,r=bryce!,r=jya! → Bug 1356046 - Remove expired media telemetry; r=alwu!,bryce!,jya!
Pushed by dminor@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/b8661a3b5dc2
Remove expired media telemetry; r=jya,alwu,bryce

Sorry! I wish warnings-as-errors was the default for local builds.

Flags: needinfo?(dminor)
Pushed by dminor@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/0928c6245907
Remove expired media telemetry; r=jya,alwu,bryce
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Blocks: 1567302
Regressions: 1650281
Depends on: 1666805
Regressions: 1731986
You need to log in before you can comment on or make changes to this bug.