hls.js
Version:
JavaScript HLS client using MediaSourceExtension
38 lines (34 loc) • 1.15 kB
text/typescript
import type { BaseTrackSet } from '../types/buffer';
export function getMediaSource(
preferManagedMediaSource = true,
): typeof MediaSource | undefined {
if (typeof self === 'undefined') return undefined;
const mms =
(preferManagedMediaSource || !self.MediaSource) &&
((self as any).ManagedMediaSource as undefined | typeof MediaSource);
return (
mms ||
self.MediaSource ||
((self as any).WebKitMediaSource as typeof MediaSource)
);
}
export function isManagedMediaSource(source: typeof MediaSource | undefined) {
return (
typeof self !== 'undefined' && source === (self as any).ManagedMediaSource
);
}
export function isCompatibleTrackChange(
currentTracks: BaseTrackSet,
requiredTracks: BaseTrackSet,
): boolean {
const trackNames = Object.keys(currentTracks);
const requiredTrackNames = Object.keys(requiredTracks);
const trackCount = trackNames.length;
const requiredTrackCount = requiredTrackNames.length;
return (
!trackCount ||
!requiredTrackCount ||
(trackCount === requiredTrackCount &&
!trackNames.some((name) => requiredTrackNames.indexOf(name) === -1))
);
}