processTimedMetadataSrcEquals_(track) {
    if (track.kind != 'metadata') {
      return;
    }

    // Hidden mode is required for the cuechange event to launch correctly
    track.mode = 'hidden';
    this.loadEventManager_.listen(track, 'cuechange', () => {
      if (track.activeCues) {
        for (const cue of track.activeCues) {
          this.addMetadataToRegionTimeline_(cue.startTime, cue.endTime,
              cue.type, cue.value);

          if (this.adManager_) {
            this.adManager_.onCueMetadataChange(cue.value);
          }
        }
      }
      if (track.cues) {
        /** @type {!Array<shaka.extern.HLSInterstitial>} */
        const interstitials = [];

        for (const cue of track.cues) {
          if (cue.type == 'com.apple.quicktime.HLS' && cue.startTime != null) {
            let interstitial = interstitials.find((i) => {
              return i.startTime == cue.startTime && i.endTime == cue.endTime;
            });
            if (!interstitial) {
              interstitial = /** @type {shaka.extern.HLSInterstitial} */ ({
                startTime: cue.startTime,
                endTime: cue.endTime,
                values: [],
              });
              interstitials.push(interstitial);
            }
            interstitial.values.push(cue.value);
          }
        }
        for (const interstitial of interstitials) {
          const isValidInterstitial = interstitial.values.some((value) => {
            return value.key == 'X-ASSET-URI' || value.key == 'X-ASSET-LIST';
          });
          if (!isValidInterstitial) {
            continue;
          }
          if (this.adManager_) {
            const isPreRoll = interstitial.startTime == 0 && !this.isLive();
            // It seems that CUE is natively omitted, by default we use CUE=ONCE
            // to avoid repeating them.
            interstitial.values.push({
              key: 'CUE',
              description: '',
              data: isPreRoll ? 'ONCE,PRE' : 'ONCE',
              mimeType: null,
              pictureType: null,
            });
            goog.asserts.assert(this.video_, 'Must have video');
            this.adManager_.onHLSInterstitialMetadata(
                this, this.video_, interstitial);
          }
        }
      }
    });

    // In Safari the initial assignment does not always work, so we schedule
    // this process to be repeated several times to ensure that it has been put
    // in the correct mode.
    const timer = new shaka.util.Timer(() => {
      const textTracks = this.getMetadataTracks_();
      for (const textTrack of textTracks) {
        textTrack.mode = 'hidden';
      }
    }).tickNow().tickAfter(0.5);

    this.cleanupOnUnload_.push(() => {
      timer.stop();
    });
  }
We're looking for metadata tracks to process id3 tags. One of the uses is
for ad info on LIVE streams

@param {!TextTrack} track
@private