# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

# Adding a new metric? We have docs for that!
# https://firefox-source-docs.mozilla.org/toolkit/components/glean/user/new_definitions_file.html

---
$schema: moz://mozilla.org/schemas/glean/metrics/2-0-0
$tags:
  - 'Core :: Audio/Video'

gmp:
  update_xml_fetch_result:
    type: labeled_counter
    labels:
      - cert_pin_success
      - cert_pin_net_request_error
      - cert_pin_net_timeout
      - cert_pin_abort
      - cert_pin_missing_data
      - cert_pin_failed
      - cert_pin_invalid
      - cert_pin_xml_parse_error
      - cert_pin_unknown_error
      - content_sig_success
      - content_sig_net_request_error
      - content_sig_net_timeout
      - content_sig_abort
      - content_sig_missing_data
      - content_sig_failed
      - content_sig_invalid
      - content_sig_xml_parse_error
      - content_sig_unknown_error
    description: >
      The result of Gecko fetching an update.xml from Balrog.
      This captures 3 different data points: success or failure of the request,
      if cert pinning or content signatures were used to verify the result, and
      the reason for failure, if the request failed.
    metadata:
      tags:
        - 'Core :: Audio/Video: GMP'
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1739664
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1739664
    data_sensitivity:
      - technical
    notification_emails:
      - media-alerts@mozilla.com
    expires: never

media.audio:
  init_failure:
    type: labeled_counter
    labels:
      - first
      - other
    description: >
      Failure occurs when initializing the audio stream.
      (Migrated from the geckoview metric of the same name).
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1671714
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1879192
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1671714#c10
    notification_emails:
      - media-alerts@mozilla.com
    expires: never

  backend:
    type: labeled_counter
    labels:
      - unknown
      - audiounit
      - audiounit-rust
      - aaudio
      - opensl
      - wasapi
      - winmm
      - alsa
      - jack
      - oss
      - pulse
      - pulse-rust
      - sndio
      - sunaudio
    description: >
      The operating system audio backend
      (Migrated from the geckoview metric of the same name).
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1671714
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1879192
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1671714#c10
    notification_emails:
      - media-alerts@mozilla.com
    expires: never

media.playback:
  first_frame_loaded:
    type: event
    description:
      The time that the media pipeline takes to load the first video frame.
    metadata:
      tags:
        - 'Core :: Audio/Video: Playback'
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1882205
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1882205
    data_sensitivity:
      - technical
    notification_emails:
      - media-alerts@mozilla.com
    extra_keys:
      first_frame_loaded_time:
        description:
          How long (in milliseconds) does the our media pipeline take to load
          the first video frame from "the creation of MDSM" to "the first frame
          loaded".
        type: quantity
      metadata_loaded_time:
        description:
          How long (in milliseconds) does the our media pipeline take to load
          the metadata, which happens before finishing loading the first frame.
        type: quantity
      total_waiting_data_time:
        description:
          How long (in milliseconds) does the our media pipeline has been in a
          state of waiting video data due to lacking of data before the first
          frame is loaded.
        type: quantity
      buffering_time:
        description:
          How long (in milliseconds) does the our media pipeline has been spent
          on the buffering state before the first frame is loaded.
        type: quantity
      playback_type:
        description:
          The type of the playback. The value could be one of following
          (1) Non-MSE playback
          (2) MSE playback
          (3) EME playback
          // Following are Windows-only
          (4) Non-MSE media-engine playback
          (5) MSE media-engine playback
          (6) EME media-engine playback
        type: string
      video_codec:
        description: The video codec used for playback
        type: string
      resolution:
        description: The video resolution used for playback
        type: string
      key_system:
        description: The key system used for the EME playback if exists
        type: string
      hls_decoder:
        description:
          This value will only be set on Android. It tells that whether playback
          is performed by the HLS decoder, which utilizes the external player to
          play video.
        type: boolean
      is_hardware_decoding:
        description: True if the first frame is decoded by a hardware decoder.
        type: boolean
    expires: never
  device_hardware_decoder_support:
    type: labeled_boolean
    description:
      The results of hardware decoder support for different video codecs. True
      means that codec can be decoded by hardware on user's device.
    metadata:
      tags:
        - 'Core :: Audio/Video: Playback'
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1892516
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1892516#c4
    data_sensitivity:
      - technical
    notification_emails:
      - media-alerts@mozilla.com
    expires: never
    labels:
      - h264
      - vp8
      - vp9
      - av1
      - hevc
    telemetry_mirror: MEDIA_DEVICE_HARDWARE_DECODING_SUPPORT
  not_supported_video_per_mime_type:
    type: labeled_counter
    description:
      Count the amount of times where video playback is failed to start due to the mime type is not supported by Firefox. The result is accumulated per mime type, eg. video/hevc.
    bugs:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1893523
    data_reviews:
      - https://bugzilla.mozilla.org/show_bug.cgi?id=1893523#c9
    notification_emails:
      - media-alerts@mozilla.com
    expires: never
