UNPKG

shaka-player

Version:
71 lines (62 loc) 2.03 kB
/*! @license * Shaka Player * Copyright 2016 Google LLC * SPDX-License-Identifier: Apache-2.0 */ goog.provide('shaka.util.ManifestFilter'); goog.require('shaka.media.MediaSourceEngine'); goog.require('shaka.util.StreamUtils'); goog.requireType('shaka.media.DrmEngine'); /** * This utility class contains all the functions used to filter manifests * before playback and before storage. */ shaka.util.ManifestFilter = class { /** * Filter the variants in |manifest| to only include the variants that meet * the given restrictions. * * @param {shaka.extern.Manifest} manifest * @param {shaka.extern.Restrictions} restrictions * @param {{width: number, height:number}} maxHwResolution */ static filterByRestrictions(manifest, restrictions, maxHwResolution) { manifest.variants = manifest.variants.filter((variant) => { return shaka.util.StreamUtils.meetsRestrictions( variant, restrictions, maxHwResolution); }); } /** * Filter the variants in the |manifest| to only include those that are * supported by media source. * * @param {shaka.extern.Manifest} manifest */ static filterByMediaSourceSupport(manifest) { const MediaSourceEngine = shaka.media.MediaSourceEngine; manifest.variants = manifest.variants.filter((variant) => { let supported = true; if (variant.audio) { supported = supported && MediaSourceEngine.isStreamSupported(variant.audio); } if (variant.video) { supported = supported && MediaSourceEngine.isStreamSupported(variant.video); } return supported; }); } /** * Filter the variants in |manifest| to only include those that are supported * by |drm|. * * @param {shaka.extern.Manifest} manifest * @param {!shaka.media.DrmEngine} drmEngine */ static filterByDrmSupport(manifest, drmEngine) { manifest.variants = manifest.variants.filter((variant) => { return drmEngine.supportsVariant(variant); }); } };