async filterManifest(manifest) {
    goog.asserts.assert(manifest, 'Manifest should exist!');
    await shaka.util.StreamUtils.filterManifest(this.drmEngine_, manifest,
        this.config_.drm.preferredKeySystems,
        this.config_.drm.keySystemsMapping);
    if (!this.config_.streaming.dontChooseCodecs) {
      shaka.util.StreamUtils.chooseCodecsAndFilterManifest(
          manifest,
          this.config_.preferredVideoCodecs,
          this.config_.preferredAudioCodecs,
          this.config_.preferredDecodingAttributes,
          this.config_.preferredTextFormats);
    }
    this.checkPlayableVariants_(manifest);
    return this.filterManifestWithRestrictions(manifest);
  }
Filters a manifest, removing unplayable streams/variants and  choosing
the codecs.

@param {?shaka.extern.Manifest} manifest
@return {!Promise<boolean>} tracksChanged