getVariantTracks() {
    if (this.manifest_ && !this.isRemotePlayback()) {
      const currentVariant = this.streamingEngine_ ?
          this.streamingEngine_.getCurrentVariant() : null;

      const tracks = [];

      let activeTracks = 0;

      // Convert each variant to a track.
      for (const variant of this.manifest_.variants) {
        if (!shaka.util.StreamUtils.isPlayable(variant)) {
          continue;
        }

        const track = shaka.util.StreamUtils.variantToTrack(variant);
        track.active = variant == currentVariant;
        if (!track.active && activeTracks != 1 && currentVariant != null &&
          variant.video == currentVariant.video &&
          variant.audio == currentVariant.audio) {
          track.active = true;
        }

        if (track.active) {
          activeTracks++;
        }

        tracks.push(track);
      }

      goog.asserts.assert(activeTracks <= 1,
          'It should only have one active track');

      return tracks;
    } else if (this.video_ && this.video_.audioTracks) {
      const videoTrack = this.getActiveHtml5VideoTrack_();
      // Safari's native HLS always shows a single element in videoTracks.
      // You can't use that API to change resolutions.  But we can use
      // audioTracks to generate a variant list that is usable for changing
      // languages.
      const audioTracks = Array.from(this.video_.audioTracks);
      if (audioTracks.length) {
        return audioTracks.map((audio) =>
          shaka.util.StreamUtils.html5TrackToShakaTrack(audio, videoTrack));
      } else if (videoTrack) {
        return [
          shaka.util.StreamUtils.html5TrackToShakaTrack(null, videoTrack),
        ];
      } else {
        return [];
      }
    } else {
      return [];
    }
  }
Return a list of variant tracks that can be switched to.

<p>
If the player has not loaded content, this will return an empty list.

@return {!Array<shaka.extern.Track>}
@export