import { CommonMediaRequest, CommonMediaResponse, RequestInterceptor, ResponseInterceptor } from '@svta/common-media-library/request' export = dashjs; export as namespace dashjs; declare namespace dashjs { /** * Core - Errors */ class Errors extends ErrorsBase { /** * Error code returned when a manifest parsing error occurs */ MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE: 10; /** * Error code returned when a manifest loading error occurs */ MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE: 11; /** * Error code returned when a xlink loading error occurs */ XLINK_LOADER_LOADING_FAILURE_ERROR_CODE: 12; /** * Error code returned when no segment ranges could be determined from the sidx box */ SEGMENT_BASE_LOADER_ERROR_CODE: 15; /** * Error code returned when the time synchronization failed */ TIME_SYNC_FAILED_ERROR_CODE: 16; /** * Error code returned when loading a fragment failed */ FRAGMENT_LOADER_LOADING_FAILURE_ERROR_CODE: 17; /** * Error code returned when the FragmentLoader did not receive a request object */ FRAGMENT_LOADER_NULL_REQUEST_ERROR_CODE: 18; /** * Error code returned when the BaseUrl resolution failed */ URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE: 19; /** * Error code returned when the append operation in the SourceBuffer failed */ APPEND_ERROR_CODE: 20; /** * Error code returned when the remove operation in the SourceBuffer failed */ REMOVE_ERROR_CODE: 21; /** * Error code returned when updating the internal objects after loading an MPD failed */ DATA_UPDATE_FAILED_ERROR_CODE: 22; /** * Error code returned when MediaSource is not supported by the browser */ CAPABILITY_MEDIASOURCE_ERROR_CODE: 23; /** * Error code returned when Protected contents are not supported */ CAPABILITY_MEDIAKEYS_ERROR_CODE: 24; /** * Error code returned when loading the manifest failed */ DOWNLOAD_ERROR_ID_MANIFEST_CODE: 25; /** * Error code returned when loading the sidx failed */ DOWNLOAD_ERROR_ID_SIDX_CODE: 26; /** * Error code returned when loading the media content failed */ DOWNLOAD_ERROR_ID_CONTENT_CODE: 27; /** * Error code returned when loading the init segment failed */ DOWNLOAD_ERROR_ID_INITIALIZATION_CODE: 28; /** * Error code returned when loading the XLink content failed */ DOWNLOAD_ERROR_ID_XLINK_CODE: 29; /** * Error code returned when parsing the MPD resulted in a logical error */ MANIFEST_ERROR_ID_PARSE_CODE: 31; /** * Error code returned when no stream (period) has been detected in the manifest */ MANIFEST_ERROR_ID_NOSTREAMS_CODE: 32; /** * Error code returned when something wrong has happened during parsing and appending subtitles (TTML or VTT) */ TIMED_TEXT_ERROR_ID_PARSE_CODE: 33; /** * Error code returned when a 'muxed' media type has been detected in the manifest. This type is not supported */ MANIFEST_ERROR_ID_MULTIPLEXED_CODE: 34; /** * Error code returned when a media source type is not supported */ MEDIASOURCE_TYPE_UNSUPPORTED_CODE: 35; /** * Error code returned when the available Adaptation Sets can not be selected because the corresponding key ids have an invalid key status * @type {number} */ NO_SUPPORTED_KEY_IDS: 36; MANIFEST_LOADER_PARSING_FAILURE_ERROR_MESSAGE: 'parsing failed for '; MANIFEST_LOADER_LOADING_FAILURE_ERROR_MESSAGE: 'Failed loading manifest: '; XLINK_LOADER_LOADING_FAILURE_ERROR_MESSAGE: 'Failed loading Xlink element: '; SEGMENTS_UPDATE_FAILED_ERROR_MESSAGE: 'Segments update failed'; SEGMENTS_UNAVAILABLE_ERROR_MESSAGE: 'no segments are available yet'; SEGMENT_BASE_LOADER_ERROR_MESSAGE: 'error loading segment ranges from sidx'; TIME_SYNC_FAILED_ERROR_MESSAGE: 'Failed to synchronize client and server time'; FRAGMENT_LOADER_NULL_REQUEST_ERROR_MESSAGE: 'request is null'; URL_RESOLUTION_FAILED_GENERIC_ERROR_MESSAGE: 'Failed to resolve a valid URL'; APPEND_ERROR_MESSAGE: 'chunk is not defined'; REMOVE_ERROR_MESSAGE: 'Removing data from the SourceBuffer'; DATA_UPDATE_FAILED_ERROR_MESSAGE: 'Data update failed'; CAPABILITY_MEDIASOURCE_ERROR_MESSAGE: 'mediasource is not supported'; CAPABILITY_MEDIAKEYS_ERROR_MESSAGE: 'mediakeys is not supported'; TIMED_TEXT_ERROR_MESSAGE_PARSE: 'parsing error :'; MEDIASOURCE_TYPE_UNSUPPORTED_MESSAGE: 'Error creating source buffer of type : '; NO_SUPPORTED_KEY_IDS_MESSAGE: 'All possible Adaptation Sets have an invalid key status'; } class ErrorsBase { extend(errors: any, config: any): void; } /** * Core - Events */ class CoreEvents extends EventsBase { ATTEMPT_BACKGROUND_SYNC: 'attemptBackgroundSync'; BUFFERING_COMPLETED: 'bufferingCompleted'; BUFFER_CLEARED: 'bufferCleared'; BYTES_APPENDED_END_FRAGMENT: 'bytesAppendedEndFragment'; BUFFER_REPLACEMENT_STARTED: 'bufferReplacementStarted'; CHECK_FOR_EXISTENCE_COMPLETED: 'checkForExistenceCompleted'; CMSD_STATIC_HEADER: 'cmsdStaticHeader'; CURRENT_TRACK_CHANGED: 'currentTrackChanged'; DATA_UPDATE_COMPLETED: 'dataUpdateCompleted'; INBAND_EVENTS: 'inbandEvents'; INITIAL_STREAM_SWITCH: 'initialStreamSwitch'; INIT_FRAGMENT_LOADED: 'initFragmentLoaded'; INIT_FRAGMENT_NEEDED: 'initFragmentNeeded'; INTERNAL_MANIFEST_LOADED: 'internalManifestLoaded'; ORIGINAL_MANIFEST_LOADED: 'originalManifestLoaded'; LOADING_COMPLETED: 'loadingCompleted'; LOADING_PROGRESS: 'loadingProgress'; LOADING_DATA_PROGRESS: 'loadingDataProgress'; LOADING_ABANDONED: 'loadingAborted'; MANIFEST_UPDATED: 'manifestUpdated'; MEDIA_FRAGMENT_LOADED: 'mediaFragmentLoaded'; MEDIA_FRAGMENT_NEEDED: 'mediaFragmentNeeded'; MEDIAINFO_UPDATED: 'mediaInfoUpdated'; QUOTA_EXCEEDED: 'quotaExceeded'; SEGMENT_LOCATION_BLACKLIST_ADD: 'segmentLocationBlacklistAdd'; SEGMENT_LOCATION_BLACKLIST_CHANGED: 'segmentLocationBlacklistChanged'; SERVICE_LOCATION_BASE_URL_BLACKLIST_ADD: 'serviceLocationBlacklistAdd'; SERVICE_LOCATION_BASE_URL_BLACKLIST_CHANGED: 'serviceLocationBlacklistChanged'; SERVICE_LOCATION_LOCATION_BLACKLIST_ADD: 'serviceLocationLocationBlacklistAdd'; SERVICE_LOCATION_LOCATION_BLACKLIST_CHANGED: 'serviceLocationLocationBlacklistChanged'; SET_FRAGMENTED_TEXT_AFTER_DISABLED: 'setFragmentedTextAfterDisabled'; SET_NON_FRAGMENTED_TEXT: 'setNonFragmentedText'; SOURCE_BUFFER_ERROR: 'sourceBufferError'; STREAMS_COMPOSED: 'streamsComposed'; STREAM_BUFFERING_COMPLETED: 'streamBufferingCompleted'; STREAM_REQUESTING_COMPLETED: 'streamRequestingCompleted'; TEXT_TRACKS_QUEUE_INITIALIZED: 'textTracksQueueInitialized'; TIME_SYNCHRONIZATION_COMPLETED: 'timeSynchronizationComplete'; UPDATE_TIME_SYNC_OFFSET: 'updateTimeSyncOffset'; URL_RESOLUTION_FAILED: 'urlResolutionFailed'; VIDEO_CHUNK_RECEIVED: 'videoChunkReceived'; WALLCLOCK_TIME_UPDATED: 'wallclockTimeUpdated'; XLINK_ELEMENT_LOADED: 'xlinkElementLoaded'; XLINK_READY: 'xlinkReady'; SEEK_TARGET: 'seekTarget'; SETTING_UPDATED_LIVE_DELAY: 'settingUpdatedLiveDelay'; SETTING_UPDATED_LIVE_DELAY_FRAGMENT_COUNT: 'settingUpdatedLiveDelayFragmentCount'; SETTING_UPDATED_CATCHUP_ENABLED: 'settingUpdatedCatchupEnabled'; SETTING_UPDATED_PLAYBACK_RATE_MIN: 'settingUpdatedPlaybackRateMin'; SETTING_UPDATED_PLAYBACK_RATE_MAX: 'settingUpdatedPlaybackRateMax'; SETTING_UPDATED_ABR_ACTIVE_RULES: 'settingUpdatedAbrActiveRules'; SETTING_UPDATED_MAX_BITRATE: 'settingUpdatedMaxBitrate'; SETTING_UPDATED_MIN_BITRATE: 'settingUpdatedMinBitrate'; } class Events extends CoreEvents { } class EventsBase { extend(events: any, config: any): void; } /** * Core */ interface Debug { getLogger(): Logger; setLogTimestampVisible(flag: boolean): void; setCalleeNameVisible(flag: boolean): void; } namespace Debug { const LOG_LEVEL_NONE = 0; const LOG_LEVEL_FATAL = 1; const LOG_LEVEL_ERROR = 2; const LOG_LEVEL_WARNING = 3; const LOG_LEVEL_INFO = 4; const LOG_LEVEL_DEBUG = 5; } interface EventBus { on(type: string, listener: any, scope: any, options?: object): void; off(type: string, listener: any, scope: any): void; trigger(type: string, payload?: object, filters?: object): void; reset(): void; } export interface FactoryMaker { extend(name: string, childInstance: object, override: boolean, context: object): void; getSingletonInstance(context: object, className: string): any, setSingletonInstance(context: object, className: string, instance: object): void; deleteSingletonInstances(context: object): void; getFactoryByName(name: string, factoriesArray: Factory[]): Factory; updateFactory(name: string, factoriesArray: Factory[]): void; getSingletonFactory(classConstructor: ClassConstructor): SingletonFactory, getSingletonFactoryByName(name: string): SingletonFactory; updateSingletonFactory(name: string, factory: SingletonFactory): void; getClassFactory(classConstructor: ClassConstructor): Factory; getClassFactoryByName(name: string): Factory; updateClassFactory(name: string, factory: Factory): void; } interface Logger { debug(...params: any[]): void; info(...params: any[]): void; warn(...params: any[]): void; error(...params: any[]): void; fatal(...params: any[]): void; } export function Version(): string; const enum LogLevel { LOG_LEVEL_NONE = 0, LOG_LEVEL_FATAL = 1, LOG_LEVEL_ERROR = 2, LOG_LEVEL_WARNING = 3, LOG_LEVEL_INFO = 4, LOG_LEVEL_DEBUG = 5 } /** * Dash - Controllers **/ export interface ContentSteeringController { reset(): void; setConfig(config: object): void; loadSteeringData(): Promise<any>; getCurrentSteeringResponseData(): ContentSteeringResponse; shouldQueryBeforeStart(): boolean; getSteeringDataFromManifest(): ContentSteering[]; stopSteeringRequestTimer(): void; getSynthesizedBaseUrlElements(referenceElements: BaseURL[]): BaseURL[]; getSynthesizedLocationElements(referenceElements: MpdLocation[]): MpdLocation; initialize(): void } export interface RepresentationController { getStreamId(): string; getType(): string; getDate(): AdaptationSet; isUpdating(): boolean; updateData(newRealAdaptation: object, availableRepresentations: object[], type: string, isFragmented: boolean, quality: number): any; getCurrentRepresentation(): object; getCurrentRepresentation(): Representation; getRepresentationForQuality(quality: number): object | null; prepareQualityChange(newRep: Representation): void; reset(): void; } export interface SegmentBaseController { initialize(): void; getSegmentBaseInitSegment(data: any): Promise<any>; getSegmentList(e: object): Promise<any>; reset(): void; } export interface SegmentsController { initialize(isDynamic: boolean): void; updateInitData(voRepresentation: Representation, hasInitialization: boolean): Promise<any>; updateSegmentData(voRepresentation: Representation, hasSegments: boolean): Promise<any>; getSegmentByIndex(representation: Representation, index: number, lastSegmentTime: number): any; getSegmentByTime(representation: Representation, time: number): any; getMediaFinishedInformation(representation: Representation): any; } /** * Dash - Models **/ export interface DashManifestModel { getAccessibilityForAdaptation(adaptation: object): DescriptorType[]; getAdaptationForId(id: string, manifest: object, periodIndex: number): any; getAdaptationForIndex(index: number, manifest: object, periodIndex: number): any; getAdaptationsForPeriod(voPeriod: Period): AdaptationSet[]; getAdaptationsForType(manifest: object, periodIndex: number, type: string): any[]; getAudioChannelConfigurationForAdaptation(adaptation: object): DescriptorType[]; getAudioChannelConfigurationForRepresentation(adaptation: object): DescriptorType[]; getAvailabilityStartTime(mpd: Mpd): any; getBandwidth(representation: object): number; getBaseURLsFromElement(node: object): BaseURL[]; getBitrateListForAdaptation(realAdaptation: object): { bandwidth: number, width: number, height: number, scanType: string | null, id: string | null }; getCodec(adaptation: object, representationIndex: number, addResolutionInfo: boolean): string; getContentProtectionByAdaptation(adaptation: object): any; getContentProtectionByManifest(manifest: object): any[]; getContentProtectionByPeriod(period: Period): any; getContentSteering(manifest: object): ContentSteering | undefined; getDuration(manifest: object): number; getEndTimeForLastPeriod(voPeriod: Period): number; getEssentialPropertiesForRepresentation(realRepresentation: object): { schemeIdUri: string, value: string } getEventStreamForAdaptationSet(manifest: object, adaptation: object): EventStream[]; getEventStreamForRepresentation(manifest: object, representation: Representation): EventStream[]; getEventStreams(inbandStreams: EventStream[], representation: Representation): EventStream[]; getEventsForPeriod(period: Period): any[]; getFramerate(representation: object): number; getId(manifest: object): string; getIndexForAdaptation(realAdaptation: object, manifest: object, periodIndex: number): number; getIsAudio(adaptation: object): boolean; getIsDynamic(manifest: object): boolean; getIsFragmented(adaptation: object): boolean; getIsImage(adaptation: object): boolean; getIsMuxed(adaptation: object): boolean; getIsText(adaptation: object): boolean; getIsTypeOf(adaptation: object, type: string): boolean; getIsVideo(adaptation: object): boolean; getKID(adaptation: object): any; getLabelsForAdaptation(adaptation: object): any[]; getLanguageForAdaptation(adaptation: object): string; getLoction(manifest: object): MpdLocation | []; getManifestUpdatePeriod(manifest: object, latencyOfLastUpdate?: number): number; getMimeType(adaptation: object): object; getMpd(manifest: object): Mpd; getPeriodId(realPeriod: Period, i: number): string; getProducerReferenceTimesForAdaptation(adaptation: object): any[]; getPublishTime(manifest: object): Date | null; getRealAdaptationFor(voAdaptation: object): object; getRealAdaptations(manifest: object, periodIndex: number): any[]; getRealPeriodForIndex(index: number, manifest: object): any; getRealPeriods(manifest: object): any[]; getRegularPeriods(mpd: Mpd): Period[]; getRepresentationCount(adaptation: object): number; getRepresentationFor(index: number, adaptation: object): object; getRepresentationSortFunction(): (a: object, b: object) => number; getRepresentationsForAdaptation(voAdaptation: object): object[]; getRolesForAdaptation(adaptation: object): DescriptorType[]; getSegmentAlignment(adaptation: object): boolean; getSelectionPriority(realAdaptation: object): number; getServiceDescriptions(manifest: object): serviceDescriptions; getSubSegmentAlignment(adaptation: object): boolean; getSuggestedPresentationDelay(mpd: Mpd): any; getSupplementalPropertiesForAdaptation(adaptation: object): DescriptorType | []; getSupplementalPropertiesForRepresentation(representation: Representation): DescriptorType | []; getUTCTimingSources(manifest: object): any[]; getViewpointForAdaptation(adaptation: object): DescriptorType[]; hasProfile(manifest: object, profile: object): boolean; isPeriodEncrypted(period: any): boolean; processAdaptation(realAdaptation: object): object; setConfig(config: any): void; } export interface PatchManifestModel { getIsPatch(patch: object): boolean; getPublishTime(patch: object): number | null; getOriginalPublishTime(patch: object): number | null; getMpdId(patch: object): string | null; getPatchOperations(patch: object): PatchOperation | []; } /** * Dash - Parser - Maps **/ export class CommonProperty { constructor(name: string); } export class MapNode { constructor(name: string, properties: object, children: object); } export class RepresentationBaseValuesMap extends MapNode { } export class SegmentsValuesMap extends MapNode { } /** * Dash - Parser - Matchers **/ export class BaseMatcher { constructor(test: any, covnerter: any); } export class DateTimeMatcher extends BaseMatcher { } export class DurationMatcher extends BaseMatcher { } export class LangMatcher extends BaseMatcher { } export class NumericMatcher extends BaseMatcher { } /** * Dash - Parser **/ export interface DashParser { getIron(): any; parse(data: any): any; parseXml(data: any): any; } export interface objectiron { run(source: string): void; } /** * Dash - Utils **/ export interface ListSegmentsGetter { getMediaFinishedInformation(representation: Representation): MediaFinishedInformation; getSegmentByIndex(representation: Representation, index: number): any; getSegmentByTime(representation: Representation, requestedTime: number): any; } export interface Round10 { round10(value: number, exp: number): number; } export interface SegmentBaseGetter { getMediaFinishedInformation(representation: Representation): MediaFinishedInformation; getSegmentByIndex(representation: Representation, index: number): any; getSegmentByTime(representation: Representation, requestedTime: number): any; } export interface TemplateSegmentsGetter { getMediaFinishedInformation(representation: Representation): MediaFinishedInformation; getSegmentByIndex(representation: Representation, index: number): any; getSegmentByTime(representation: Representation, requestedTime: number): any; } export interface TimelineConverter { initialize(): void; getClientTimeOffset(): number; setClientTimeOffset(): number; getClientReferenceTime(): number; calcAvailabilityStartTimeFromPresentationTime(presentationEndTime: number, representation: Representation, isDynamic: boolean): number; calcAvailabilityEndTimeFromPresentationTime(presentationEndTime: number, representation: Representation, isDynamic: boolean, trueBool?: boolean): number; calcPresentationTimeFromWallTime(wallTime: number, period: Period): number; calcPresentationTimeFromMediaTime(mediaTime: number, representation: Representation): number; calcMediaTimeFromPresentationTime(presentationTime: number, representation: Representation): number; calcWallTimeForSegment(segment: any, isDynamic: boolean): number; calcTimeShiftBufferWindow(streams: any[], isDynamic: boolean): object; calcPeriodRelativeTimeFromMpdRelativeTime(representation: Representation, mpdRelativeTime: number): number; reset(): void; } export interface TimelineSegmentsGetter { getSegmentByIndex(representation: Representation, index: number, lastSegmentTime: number): Segment | null; getSegmentByTime(representation: Representation, requestedTime: number): Segment | null; getMediaFinishedInformation(representation: Representation): number | object; } /** * Dash - Vo **/ export class AdaptationSet { period: Period | null; index: number; type: string | null; } export interface ThroughputDictEntry { downloadTimeInMs: number; downloadedBytes: number; latencyInMs: number; serviceLocation: string; value: number; } export interface ThroughputEwmaDictEntry { fastEstimate: number; slowEstimate: number; totalWeight: number; } export interface BaseURL { availabilityTimeComplete: boolean; availabilityTimeOffset: number; dvbPriority: number; dvbWeight: number; queryParams: object; serviceLocation: string; url: string; } export interface ClientDataReporting { adaptationSets: AdaptationSet; adaptationSetsArray: Array<AdaptationSet>; cmcdParameters: CMCDParameters; serviceLocations: any; serviceLocationsArray: Array<any>; } export class CMCDParameters extends DescriptorType { contentID: string; keys: Array<string>; mode: string; schemeIdUri: string; sessionID: string; version: number; } export class ContentProtection extends DescriptorType { cencDefaultKid: any; keyId: any; laUrl: string; pro: any; pssh: any; ref: any; refId: any; robustness: any; init(data: any): void; mergeAttributesFromReference(reference: any): any; } export class ContentSteering { clientRequirement: boolean; defaultServiceLocation: string; defaultServiceLocationArray: string[]; queryBeforeStart: boolean; serverUrl: string; } export class ContentSteeringRequest { constructor(url: any); url: string; } export class ContentSteeringResponse { pathwayClones: object[]; pathwayPriority: string[]; reloadUri: string; ttl: number; version: number; } export class DescriptorType { dvbFontFamily?: string; dvbMimeType?: string; dvbUrl?: string; id?: string; schemeIdUri: string; value?: string; } export interface Event { duration: number; eventStream: EventStream; id: number; messageData: string; parsedMessageData: any; presentationTime: number; presentationTimeDelta: number; type: string; } export interface EventStream { adaptationSet: AdaptationSet | null; period: Period | null; presentationTimeOffset: number; representation: Representation | null; schemeIdUri: string; timescale: number; value: string; } export interface IManifestInfo { availableFrom: Date; duration: number; dvrWindowSize: number; isDynamic: boolean; loadedTime: Date; maxFragmentDuration: number; minBufferTime: number; protocol?: string; serviceDescriptions: serviceDescriptions[] } export interface IAdaptation { ContentProtection: IContentProtection | IContentProtection[]; Role: IRole | IRole[]; SegmentTemplate: ISegmentTemplate | ISegmentTemplate[]; Representation: Representation | Representation[]; id: string; group: number; contentType: string; lang: string; par: string; minBandwidth: number; maxBandwidth: number; maxWidth: number; maxHeight: number; SegmentAlignment: boolean; sar: string; frameRate: number; mimeType: string; startWithSAP: number; } export interface IRole { // same content as UTCTiming ? schemeIdUri: string; value: string; } export interface ISegmentTemplate { SegmentTimeline: ISegmentTimeline | ISegmentTimeline[]; timescale: number; initialization: string; media: string; } export interface ISegmentTimeline { S: ISegmentTimelineProperty | ISegmentTimelineProperty[]; } export interface ISegmentTimelineProperty { d?: number; r?: number; t?: number; } export interface IRepresentation { id: string; bandwidth: number; width: number; height: number; codecs: string; scanType: string; SegmentTemplate: ISegmentTemplate; sar: string; frameRate: number; mimeType: string, startWithSAP: number; ContentProtection: IContentProtection[]; } export interface IContentProtection { keyId: string; schemeIdUri: string; "cenc:default_KID"?: string; value?: string; pssh?: IPssh | IPssh[]; } export interface IPssh { __prefix: string; __text: string; } export class MediaInfo { KID: any | null; accessibility: DescriptorType[] | null; audioChannelConfiguration: DescriptorType[] | null; bitrateList: Bitrate[]; codec: string | null; contentProtection: any | null; essentialProperties: object; id: string | null; index: number | null; isEmbedded: any | null; isFragmented: any | null; isText: boolean; labels: { text: string, lang?: string }[]; lang: string | null; mimeType: string | null; representationCount: number; roles: DescriptorType[] | null; segmentAlignment: boolean; selectionPriority: number; streamInfo: StreamInfo | null; subSegmentAlignment: boolean; supplementalProperties: object; type: MediaType | null; viewpoint: DescriptorType[] | null; } export interface Mpd { availabilityEndTime: number; availabilityStartTime: number | null; manifest: object; maxSegmentDuration: number; mediaPresentationDuration: number; minimumUpdatePeriod: number; publishTime: number | null; suggestedPresentationDelay: number; timeShiftBufferDepth: number; } export class MpdLocation { constructor(url: string, serviceLocation: string | null); url: string; serviceLocation: string | null; queryParams: object; } export class PatchLocation { constructor(url: string, serviceLocation: string, ttl: number); url: string; serviceLocation: string; ttl: number; queryParams: object; } export class PatchOperation { constructor(action: any, xpath: any, value: string); action: any; xpath: any; value: string; position: any | null; getMpdTarget(root: any): any; } export interface Period { duration: number; id: string | null; index: number; isEncrypted: boolean; mpd: Mpd; nextPeriodId: string | null; start: number; } export interface ProducerReferenceTime { UTCTiming: any; applicationSchme: any; id: any; inband: boolean; presentationTime: number; type: 'encoder'; wallClockTime: any; } export interface Representation { absoluteIndex: number; adaptation: AdaptationSet | null; availabilityTimeComplete: boolean; availabilityTimeOffset: number; availableSegmentsNumber: number; bandwidth: number; bitrateInKbit: number; bitsPerPixel: number; codecPrivateData: string | null; codecs: string | null; fragmentDuration: number | null; frameRate: number; height: number; id: string; index: number; indexRange: string | null; initialization: object | null; maxPlayoutRate: number; mediaFinishedInformation: MediaFinishedInformation; mediaInfo: MediaInfo | null; mimeType: string | null; mseTimeOffset: number; pixelsPerSecond: number; presentationTimeOffset: number; qualityRanking: number; range: Range | null; scanType: string; segments: any[]; segmentDuration: number; segmentInfoType: string | null; supplementalProperties: Array<any>; startNumber: number; timescale: number; width: number; endNumber: number | null; } export interface Segment { availabilityEndTime: number; availabilityStartTime: number; duration: number; index: number | null; indexRange: any; media: any; mediaRange: any; mediaStartTime: number; presentationStartTime: number; replacementNumber: number; replacementTime: number; representation: Representation | null; wallStartTime: number; } export class SimpleXPath { constructor(selector: any); } export class StreamInfo { duration: number; id: string; index: number; isEncrypted: boolean; isLast: boolean; manifestInfo: IManifestInfo; start: number; } export class UTCTiming { schemeIdUri: string; value: string; } export interface ThroughputDictValue { downloadTimeInMs: number, downloadedBytes: number, latencyInMs: number serviceLocation: string, value: number, } /** * Dash **/ export interface DashAdapter { applyPatchToManifest(manifest: object, patch: object): void; areMediaInfosEqual(mInfoOne: MediaInfo, mInfoTwo: MediaInfo): boolean; getMainAdaptationForType(periodIndex: number, type: MediaType, streamInfo: object): IAdaptation | null; getAllMediaInfoForType(streamInfo: object, type: MediaType, externalManifest?: object | null): any[]; getAvailabilityStartTime(externalManifest?: object): number; getBandwidthForRepresentation(representationId: string, periodIdx: number): number; getBaseURLsFromElement(node: object): BaseURL[]; getCodec(adaptation: object, representationIndex: number, addResolutionInfo: boolean): string; getContentSteering(manifest: object): object; getDuration(externalManifest?: object): number; getEssentialPropertiesAdaptationSet(adaptationSet: AdaptationSet): object | []; getEssentialPropertiesForRepresentation(representation: Representation): any[]; getEvent(eventBox: object, eventStreams: object, mediaStartTime: number, voRepresentation: object): null | Event; getEventsFor(info: object, voRepresentation: object): Array<Event>; getFramerate(representation: object): number; getIndexForRepresentation(representationId: string, periodIdx: number): number; getIsDVB(manifest: object): boolean; getIsDynamic(externalManifest?: object): boolean; getIsMain(adaptation: object): boolean; getIsPatch(manifest: object): boolean; getIsTextTrack(adaptation: object): boolean; getIsTypeOf(adaptation: object, type: string): boolean; getLocation(manifest: object): MpdLocation[]; getManifestUpdatePeriod(manifest: object, latencyOfLastUpdate?: number): number; getMediaInfoForType(streamInfo: object, type: MediaType): MediaInfo | null; getMpd(externalManifest?: object): Mpd; getPatchLocation(manifest: object): PatchLocation[]; getPeriodById(id: string): Period | null; getProducerReferenceTime(streamInfo: StreamInfo, mediaInfo: MediaInfo): object | []; getPublishTime(manifest: object): number | null; getRealAdaptation(streamInfo: StreamInfo, mediaInfo: MediaInfo): object; getRealPeriodByIndex(index: number): object; getRegularPeriods(externalManifest?: object): any[]; getRepresentationSortFunction(): (a: object, b: object) => number; getStreamsInfo(externalManifest: object, maxStreamsInfo: number): Array<any>; getSuggestedPresentationDelay(): string; getSupplementalCodex(representation: Representation): Array<any>; getUTCTimingSources(): any[]; getVoRepresentation(mediaInfo: MediaInfo): Representation[]; isPatchValid(manifest: object, patch: object): boolean; reset(): void; } export interface DashHandler { getCurrentIndex(): number; getInitRequest(mediaInfo: MediaInfo, representation: Representation): FragmentRequest | null; getNextSegmentRequest(mediaInfo: MediaInfo, representation: Representation): FragmentRequest | null; getNextSegmentRequestIdempotent(mediaInfo: MediaInfo, representation: Representation): FragmentRequest | null; getSegmentRequestForTime(mediaInfo: MediaInfo, representation: Representation, time: number): FragmentRequest | null; getStreamId(): string; getStreamInfo(): StreamInfo; getType(): string; getValidTimeAheadOfTargetTime(time: number, mediaInfo: MediaInfo, representation: Representation, targetThreshold: number): number; initialize(isDynamic: boolean): void; isLastSegmentRequested(representation: Representation, bufferingTime: number): boolean; repeatSegmentRequest(mediaInfo: MediaInfo, representation: Representation): FragmentRequest | null; reset(): void; } export interface DashMetrics { addBufferLevel(mediaType: MediaType, t: number, level: number): void; addBufferState(mediaType: MediaType, state: string, target: number): void; addDVBErrors(errors: object): void; addDVRInfo(mediaType: MediaType, currentTime: Date, mpd: Mpd, range: Range): void; addDroppedFrames(quality: number): void; addHttpRequest(request: HTTPRequest, responseURL: string, responseStatus: number, responseHeaders: object, traces: object): void; addManifestUpdate(request: ManifestUpdate): void; addManifestUpdateRepresentationInfo(representation: Representation, mediaType: MediaType): void; addManifestUpdateStreamInfo(streamInfo: StreamInfo): void; addPlayList(): void; addRepresentationSwitch(mediaType: MediaType, t: Date, mt: Date, to: string, lto: string): void; addRequestsQueue(mediaType: MediaType, loadingRequests: any[], executedRequests: any[]): void; addSchedulingInfo(request: SchedulingInfo, state: string): void; clearAllCurrentMetrics(): void; createPlaylistMetrics(mediaStartTime: number, startReason: string): void; createPlaylistTraceMetrics(representationId: number, mediaStartTime: number, speed: number): void; getCurrent(metrics: MetricsList, metricName: string): DroppedFrames; getCurrentBufferLevel(type: MediaType): number; getCurrentBufferState(type: MediaType): IBufferState; getCurrentDVRInfo(type?: MediaType): DVRInfo; getCurrentDroppedFrames(): DroppedFrames; getCurrentHttpRequest(type: MediaType): object; getCurrentManifestUpdate(): any; getCurrentRepresentationSwitch(type: MediaType): ICurrentRepresentationSwitch; getCurrentSchedulingInfo(type: MediaType): object; getHttpRequests(type: MediaType): object[]; getLatestFragmentRequestHeaderValueByID(id: string): string; getLatestMPDRequestHeaderValueByID(type: MediaType, id: string): string; pushPlaylistTraceMetrics(endTime: number, reason: string): void; updateManifestUpdateInfo(updateFields: any[]): void; updatePlayListTraceMetrics(traceToUpdate: object): void; } export interface SegmentBaseLoader { initialize(): void; loadInitialization(representation: Representation, mediaType: MediaType): Promise<any>; loadSegments(representation: Representation, mediaType: MediaType, range: Range): Promise<any>; reset(): any; setConfig(config: object): void; } export interface WebSegmentBaseLoader { initialize(): void; loadInitialization(representation: Representation, mediaType: MediaType): Promise<any>; loadSegments(representation: Representation, mediaType: MediaType, range: Range): Promise<any>; reset(): any; setConfig(config: object): void; } /** * MSS - Errors **/ export interface MssError extends ErrorsBase { MSS_NO_TFRF_CODE: 200; MSS_NO_TFRF_MESSAGE: 'Missing tfrf in live media segment'; MSS_UNSUPPORTED_CODEC_CODE: 201; MSS_UNSUPPORTED_CODEC_MESSAGE: 'Unsupported codec'; } /** * MSS - Parser **/ export interface MssParser { getIron(): null; parse(data: any): object; reset(): void; setup(): void; } /** * MSS **/ export interface MssFragmentInfoController { controllerType: 'MssFragmentInfoController'; fragmentInfoLoaded(e: object): void; getType(): string; initialize(): void; reset(): void; start(): void; } export interface MssFragmentMoofProcessor { convertFragment(e: object, streamProcessor: any): void; getType(): string; updateSegmentList(e: object, streamProcessor: any): void; } export interface MssFragmentMoovProcessor { generateMoov(rep: Representation): ArrayBuffer; } export interface MssFragmentProcessor { generateMoov(rep: Representation): ArrayBuffer; processFragment(e: object, streamProcessor: any): void; } export interface MssHandler { createMssFragmentProcessor(): void; createMssParser(): void; registerEvents(): void; reset(): void; } /** * Offline - Constants **/ class OfflineConstants { OFFLINE_SCHEME: 'offline_indexeddb'; OFFLINE_STATUS_CREATED: 'created'; OFFLINE_STATUS_ERROR: 'error'; OFFLINE_STATUS_FINISHED: 'finished'; OFFLINE_STATUS_STARTED: 'started'; OFFLINE_STATUS_STOPPED: 'stopped'; OFFLINE_URL_REGEX: RegExp; } /** * Offline - Controllers */ export interface OfflineRecord { id: string; originalUrl: string; progress: number; status: string; url: string; } interface OfflineController { createRecord(manifestURL: string): Promise<string>; deleteRecord(id: string): void; getAllRecords(): OfflineRecord[]; getRecordProgression(id: string): number; loadRecordsFromStorage(): Promise<void>; reset(): void; resetRecords(): void; resumeRecord(id: string): void; startRecord(id: string, mediaInfos: MediaInfo[]): void; stopRecord(id: string): void; } interface OfflineStoreController { createFragmentStore(manifestId: number | string, storeName: string): void; createOfflineManifest(manifest: object): object; deleteDownloadById(manifestId: number | string): object; getAllManifests(): object; getCurrentHigherManifestId(): object; getManifestById(manifestId: number | string): object; getRepresentationCurrentState(manifestId: number | string, representationId: number | string): object; saveSelectedRepresentations(manifestId: number | string, selected: Representation): object; setDownloadingStatus(manifestId: number | string, status: any): object; setRepresentationCurrentState(manifestId: number | string, representationId: number | string, state: any): object; storeFragment(manifestId: number | string, fragmentId: number | string, fragmentData: any): object; updateOfflineManifest(manifest: object): object; } /** * Offline - Errors */ export class OfflineErrors extends ErrorsBase { /** * Error code returned when an error occurs in offline module */ OFFLINE_ERROR: 11000; // Based upon https://developer.mozilla.org/fr/docs/Web/API/DOMException INDEXEDDB_QUOTA_EXCEED_ERROR: 11001; INDEXEDDB_INVALID_STATE_ERROR: 11002; INDEXEDDB_NOT_READABLE_ERROR: 11003; INDEXEDDB_NOT_FOUND_ERROR: 11004; INDEXEDDB_NETWORK_ERROR: 11005; INDEXEDDB_DATA_ERROR: 11006; INDEXEDDB_TRANSACTION_INACTIVE_ERROR: 11007; INDEXEDDB_NOT_ALLOWED_ERROR: 11008; INDEXEDDB_NOT_SUPPORTED_ERROR: 11009; INDEXEDDB_VERSION_ERROR: 11010; INDEXEDDB_TIMEOUT_ERROR: 11011; INDEXEDDB_ABORT_ERROR: 11012; INDEXEDDB_UNKNOWN_ERROR: 11013; } export class OfflineEvents extends EventsBase { /** * Triggered when all mediaInfo has been loaded * @event OfflineEvents#OFFLINE_RECORD_LOADEDMETADATA */ OFFLINE_RECORD_LOADEDMETADATA: 'public_offlineRecordLoadedmetadata'; /** * Triggered when a record is initialized and download is started * @event OfflineEvents#OFFLINE_RECORD_STARTED */ OFFLINE_RECORD_STARTED: 'public_offlineRecordStarted'; /** * Triggered when the user stop downloading a record * @event OfflineEvents#OFFLINE_RECORD_STOPPED */ OFFLINE_RECORD_STOPPED: 'public_offlineRecordStopped'; /** * Triggered when all record has been downloaded * @event OfflineEvents#OFFLINE_RECORD_FINISHED */ OFFLINE_RECORD_FINISHED: 'public_offlineRecordFinished'; } /** * Offline - Net */ export class IndexDBOfflineLoader { abort(): void; config: object | {}; load(config: object | {}): void; } /** * Offline - Storage */ export class IndexDBStore { createFragmentStore(storeName: string): void; deleteDownloadById(manifestId: number): Promise<string | any>; dropAll(): Promise<any>; dropFragmentStore(storeName: string): void; getAllManifests(): Promise<Object[] | String | Error>; getCurrentHigherManifestId(): Promise<number>; getFragmentByKey(manifestId: number, key: number): Promise<any>; getManifestById(id: number): Promise<Object[] | String | Error>; getRepresentationCurrentState(manifestId: number, state: number): Promise<number | Error>; saveSelectedRepresentation(manifest: object, selected: object): Promise<string | Error>; setDownloadingStatus(manifestId: number, newStatus: number): Promise<string | Error>; setRepresentationCurrentState(manifestId: number, representationId: string, state: number): Promise<string | Error>; storeFragment(manifestI: number, fragmentId: string, fragmentData: object): Promise<string | Error>; storeManifest(manifest: object): Object[]; updateManifest(manifest: object): Promise<Object[] | Error>; } /** * Offline - Parser */ export class OfflineIndexDBManifestParser { config: object; parse(XMLDoc: string, representation: object): Promise<any>; } export class OfflineUrlUtils { getRegex(): RegExp | undefined; isRelative(): boolean; removeHostName(url: string): string; resolve(url: string, baseUrl: string): string; } /** * Offline - Vo */ export class OfflineDownload { id: object; originalUrl: object; progress: object; status: object; url: object; } /** * Offline */ export interface OfflineDownload { config: object | {}; deleteDownload(): void; downloadFromUrl(url: string): object; getDownloadProgression(): number; getId(): number; getManifestUrl(): string; getMediaInfos(): void; getStatus(): number; initDownload(): void; isDownloading(): boolean; reset(): void; resetDownload(): void; resumeDownload(): void; setInitialState(state: object): void; startDownload(mediaInfos: MediaInfo[]): any; stopDownload(): void; } export class OfflineStream { getMediaInfos(): MediaInfo[]; getStreamId(): string; getStreamInfo(): StreamInfo; initialize(initStreamInfo: StreamInfo): void; initializeAllMediaInfoList(mediaInfoList: object): void; reset(): void; startOfflineStreamProcessors(): void; stopOfflineStreamProcessors(): void; } export class OfflineStreamProcessor { config: object | void; getAvailableSegmentsNumber(): number; getMediaInfo(): MediaInfo; getRepresentationController(): RepresentationController; getRepresentationId(): number | string; getType(): any; initialize(_mediaInfo: MediaInfo): void; isUpdating(): boolean; removeExecutedRequestsBeforeTime(time: any): void; reset(): void; start(): void; stop(): void; } export interface Bitrate { bandwidth?: number; height?: number; id?: string; scanType?: string; width?: number; } export type MediaType = 'video' | 'audio' | 'text' | 'image'; export type ThroughputCalculationModes = 'throughputCalculationModeEwma' | 'throughputCalculationModeZlema' | 'throughputCalculationModeArithmeticMean' | 'throughputCalculationModeByteSizeWeightedArithmeticMean' | 'throughputCalculationModeDateWeightedArithmeticMean' | 'throughputCalculationModeHarmonicMean' | 'throughputCalculationModeByteSizeWeightedHarmonicMean' | 'throughputCalculationModeDateWeightedHarmonicMean' ; export type LowLatencyDownloadTimeCalculationModes = 'lowLatencyDownloadTimeCalculationModeMoofParsing' | 'lowLatencyDownloadTimeCalculationModeDownloadedData' | 'lowLatencyDownloadTimeCalculationModeAast'; export class ProtectionMediaInfo { codec: string | null; contentProtection: any | null; } export class MediaPlayerSettingClass { debug?: { logLevel?: LogLevel; dispatchEvent?: boolean; }; streaming?: { abandonLoadTimeout?: number, wallclockTimeUpdateInterval?: number, manifestUpdateRetryInterval?: number, liveUpdateTimeThresholdInMilliseconds?: number, cacheInitSegments?: boolean, applyServiceDescription?: boolean, applyProducerReferenceTime?: boolean, applyContentSteering?: boolean, enableManifestDurationMismatchFix?: boolean, parseInbandPrft?: boolean, enableManifestTimescaleMismatchFix?: boolean, capabilities?: { filterUnsupportedEssentialProperties?: boolean, supportedEssentialProperties?: [ { schemeIdUri?: string, value?: RegExp } ], useMediaCapabilitiesApi?: boolean, filterHDRMetadataFormatEssentialProperties?: boolean, filterVideoColorimetryEssentialProperties?: boolean }, events?: { eventControllerRefreshDelay?: number, deleteEventMessageDataTimeout?: number } timeShiftBuffer?: { calcFromSegmentTimeline?: boolean fallbackToSegmentTimeline?: boolean }, metrics?: { maxListDepth?: number }, delay?: { liveDelayFragmentCount?: number, liveDelay?: number, useSuggestedPresentationDelay?: boolean }, protection?: { keepProtectionMediaKeys?: boolean, ignoreEmeEncryptedEvent?: boolean, detectPlayreadyMessageFormat?: boolean, ignoreKeyStatuses?: boolean, }, buffer?: { enableSeekDecorrelationFix?: boolean, fastSwitchEnabled?: boolean, flushBufferAtTrackSwitch?: boolean, reuseExistingSourceBuffers?: boolean, bufferPruningInterval?: number, bufferToKeep?: number, bufferTimeAtTopQuality?: number, bufferTimeAtTopQualityLongForm?: number, initialBufferLevel?: number, bufferTimeDefault?: number, longFormContentDurationThreshold?: number, stallThreshold?: number, lowLatencyStallThreshold?: number, useAppendWindow?: boolean, setStallState?: boolean avoidCurrentTimeRangePruning?: boolean useChangeType?: boolean mediaSourceDurationInfinity?: boolean resetSourceBuffersForTrackSwitch?: boolean syntheticStallEvents?: { enabled?: boolean ignoreReadyState?: boolean } }, gaps?: { jumpGaps?: boolean, jumpLargeGaps?: boolean, smallGapLimit?: number, threshold?: number, enableSeekFix?: boolean, enableStallFix?: boolean, stallSeek?: number }, utcSynchronization?: { enabled?: boolean, useManifestDateHeaderTimeSource?: boolean, backgroundAttempts?: number, timeBetweenSyncAttempts?: number, maximumTimeBetweenSyncAttempts?: number, minimumTimeBetweenSyncAttempts?: number, timeBetweenSyncAttemptsAdjustmentFactor?: number, maximumAllowedDrift?: number, enableBackgroundSyncAfterSegmentDownloadError?: boolean, defaultTimingSource?: { scheme?: string, value?: string } }, scheduling?: { defaultTimeout?: number, lowLatencyTimeout?: number, scheduleWhilePaused?: boolean }, text?: { defaultEnabled?: boolean, dispatchForManualRendering?: boolean, extendSegmentedCues?: boolean, imsc?: { displayForcedOnlyMode?: boolean, enableRollUp?: boolean }, webvtt?: { customRenderingEnabled?: number } }, liveCatchup?: { maxDrift?: number; playbackRate?: { min?: number, max?: number }, playbackBufferMin?: number, enabled?: boolean mode?: string } lastBitrateCachingInfo?: { enabled?: boolean; ttl?: number; }; lastMediaSettingsCachingInfo?: { enabled?: boolean; ttl?: number; }; saveLastMediaSettingsForCurrentStreamingSession?: boolean; cacheLoadThresholds?: { video?: number; audio?: number; }; trackSwitchMode?: { video?: TrackSwitchMode; audio?: TrackSwitchMode; }; ignoreSelectionPriority?: boolean; prioritizeRoleMain?: boolean; assumeDefaultRoleAsMain?: boolean; selectionModeForInitialTrack?: TrackSelectionMode; fragmentRequestTimeout?: number; fragmentRequestProgressTimeout?: number; manifestRequestTimeout?: number; retryIntervals?: { 'MPD'?: number; 'XLinkExpansion'?: number; 'MediaSegment'?: number; 'InitializationSegment'?: number; 'BitstreamSwitchingSegment'?: number; 'IndexSegment'?: number; 'FragmentInfoSegment'?: number; 'license'?: number; 'other'?: number; 'lowLatencyReductionFactor'?: number; }; retryAttempts?: { 'MPD'?: number; 'XLinkExpansion'?: number; 'MediaSegment'?: number; 'InitializationSegment'?: number; 'BitstreamSwitchingSegment'?: number; 'IndexSegment'?: number; 'FragmentInfoSegment'?: number; 'license'?: number; 'other'?: number; 'lowLatencyMultiplyFactor'?: number; }; abr?: { limitBitrateByPortal?: boolean; usePixelRatioInLimitBitrateByPortal?: boolean; enableSupplementalPropertyAdaptationSetSwitching?: boolean, rules?: { throughputRule?: { active?: boolean }, bolaRule?: { active?: boolean }, insufficientBufferRule?: { active?: boolean, parameters?: { throughputSafetyFactor?: number, segmentIgnoreCount?: number } }, switchHistoryRule?: { active?: boolean, parameters?: { sampleSize?: number, switchPercentageThreshold?: number } }, droppedFramesRule?: { active?: boolean, parameters?: { minimumSampleSize?: number, droppedFramesPercentageThreshold?: number } }, abandonRequestsRule?: { active?: boolean, parameters?: { abandonDurationMultiplier?: number, minSegmentDownloadTimeThresholdInMs?: number, minThroughputSamplesThreshold?: number } } l2ARule?: { active?: boolean } loLPRule?: { active?: boolean } }, throughput?: { averageCalculationMode?: ThroughputCalculationModes, lowLatencyDownloadTimeCalculationMode?: LowLatencyDownloadTimeCalculationModes, useResourceTimingApi?: boolean, useNetworkInformationApi?: { xhr?: boolean, fetch?: boolean }, useDeadTimeLatency?: boolean, bandwidthSafetyFactor?: number, sampleSettings: { live?: number, vod?: number, enableSampleSizeAdjustment?: boolean, decreaseScale?: number, increaseScale?: number, maxMeasurementsToKeep?: number, averageLatencySampleAmount?: number, }, ewma: { throughputSlowHalfLifeSeconds?: number, throughputFastHalfLifeSeconds?: number, latencySlowHalfLifeCount?: number, latencyFastHalfLifeCount?: number, weightDownloadTmeMultiplicationFactor?: number } } maxBitrate?: { audio?: number; video?: number; }; minBitrate?: { audio?: number; video?: number; }; initialBitrate?: { audio?: number; video?: number; }; autoSwitchBitrate?: { audio?: boolean; video?: boolean; } }, cmcd?: { applyParametersFromMpd?: boolean, enabled?: boolean, sid?: string | null, cid?: string | null, rtp?: number | null, rtpSafetyFactor?: number, mode?: 'query' | 'header', enabledKeys?: Array<string>, includeInRequests?: Array<string>, version?: number }, cmsd?: { enabled?: boolean, abr?: { applyMb: boolean, etpWeightRatio?: number } }, defaultSchemeIdUri?: { viewpoint?: string, audioChannelConfiguration?: string, role?: string, accessibility?: string } }; errors?: { recoverAttempts?: { mediaErrorDecode?: number } } } export interface MediaFinishedInformation { mediaTimeOfLastSignaledSegment: number numberOfSegments: number, } export type TrackSelectionFunction = (tracks: MediaInfo[]) => MediaInfo[]; export interface DvrWindow { end: number; endAsUtc: number; size: number; start: number; startAsUtc: number; } export interface MediaPlayerClass { setConfig(config: object): void; initialize(view?: HTMLMediaElement, source?: string, AutoPlay?: boolean, startTime?: number | string): void; on(type: AstInFutureEvent['type'], listener: (e: AstInFutureEvent) => void, scope?: object): void; on(type: BufferEvent['type'], listener: (e: BufferEvent) => void, scope?: object): void; on(type: CaptionRenderedEvent['type'], listener: (e: CaptionRenderedEvent) => void, scope?: object): void; on(type: CaptionContainerResizeEvent['type'], listener: (e: CaptionContainerResizeEvent) => void, scope?: object): void; on(type: DynamicToStaticEvent['type'], listener: (e: DynamicToStaticEvent) => void, scope?: object): void; on(type: ErrorEvent['type'], listener: (e: ErrorEvent) => void, scope?: object): void; on(type: FragmentLoadingCompletedEvent['type'], listener: (e: FragmentLoadingCompletedEvent) => void, scope?: object): void; on(type: FragmentLoadingAbandonedEvent['type'], listener: (e: FragmentLoadingAbandonedEvent) => void, scope?: object): void; on(type: InbandPrftReceivedEvent['type'], listener: (e: InbandPrftReceivedEvent) => void, scope?: object): void; on(type: KeyErrorEvent['type'], listener: (e: KeyErrorEvent) => void, scope?: object): void; on(type: KeyMessageEvent['type'], listener: (e: KeyMessageEvent) => void, scope?: object): void; on(type: KeySessionClosedEvent['type'], listener: (e: KeySessionClosedEvent) => void, scope?: object): void; on(type: KeySessionEvent['type'], listener: (e: KeySessionEvent) => void, scope?: object): void; on(type: KeyStatusesChangedEvent['type'], listener: (e: KeyStatusesChangedEvent) => void, scope?: object): void; on(type: KeySystemSelectedEvent['type'], listener: (e: KeySystemSelectedEvent) => void, scope?: object): void; on(type: LicenseRequestCompleteEvent['type'], listener: (e: LicenseRequestCompleteEvent) => void, scope?: object): void; on(type: LogEvent['type'], listener: (e: LogEvent) => void, scope?: object): void; on(type: ManifestLoadedEvent['type'], listener: (e: ManifestLoadedEvent) => void, scope?: object): void; on(type: MetricEvent['type'], listener: (e: MetricEvent) => void, scope?: object): void; on(type: MetricChangedEvent['type'], listener: (e: MetricChangedEvent) => void, scope?: object): void; on(type: OfflineRecordEvent['type'], listener: (e: OfflineRecordEvent) => void, scope?: object): void; on(type: OfflineRecordLoadedmetadataEvent['type'], listener: (e: OfflineRecordLoadedmetadataEvent) => void, scope?: object): void; on(type: PeriodSwitchEvent['type'], listener: (e: PeriodSwitchEvent) => void, scope?: object): void; on(type: PlaybackErrorEvent['type'], listener: (e: PlaybackErrorEvent) => void, scope?: object): void; on(type: PlaybackPausedEvent['type'], listener: (e: PlaybackPausedEvent) => void, scope?: object): void; on(type: PlaybackPlayingEvent['type'], listener: (e: PlaybackPlayingEvent) => void, scope?: object): void; on(type: PlaybackRateChangedEvent['type'], listener: (e: PlaybackRateChangedEvent) => void, scope?: object): void; on(type: PlaybackSeekingEvent['type'], listener: (e: PlaybackSeekingEvent) => void, scope?: object): void; on(type: PlaybackStartedEvent['type'], listener: (e: PlaybackStartedEvent) => void, scope?: object): void; on(type: PlaybackTimeUpdatedEvent['type'], listener: (e: PlaybackTimeUpdatedEvent) => void, scope?: object): void; on(type: ProtectionCreatedEvent['type'], listener: (e: ProtectionCreatedEvent) => void, scope?: object): void; on(type: ProtectionDestroyedEvent['type'], listener: (e: ProtectionDestroyedEvent) => void, scope?: object): void; on(type: QualityChangeRenderedEvent['type'], listener: (e: QualityChangeRenderedEvent) => void, scope?: object): void; on(type: QualityChangeRequestedEvent['type'], listener: (e: QualityChangeRequestedEvent) => void, scope?: object): void; on(type: StreamInitializedEvent['type'], listener: (e: StreamInitializedEvent) => void, scope?: object): void; on(type: TextTracksAddedEvent['type'], listener: (e: TextTracksAddedEvent) => void, scope?: object): void; on(type: TtmlParsedEvent['type'], listener: (e: TtmlParsedEvent) => void, scope?: object): void; on(type: TtmlToParseEvent['type'], listener: (e: TtmlToParseEvent) => void, scope?: object): void; on(type: AdaptationSetRemovedNoCapabilitiesEvent['type'], listener: (e: AdaptationSetRemovedNoCapabilitiesEvent) => void, scope?: object): void; on(type: string, listener: (e: MediaPlayerEvent) => void, scope?: object, options?: object): void; off(type: string, listener: (e: any) => void, scope?: object): void; addABRCustomRule(type: string, rulename: string, rule: object): void; addRequestInterceptor(interceptor: RequestInterceptor): void; addResponseInterceptor(interceptor: ResponseInterceptor): void; addUTCTimingSource(schemeIdUri: string, value: string): void; attachProtectionController(value: ProtectionController): void; attachSource(urlOrManifest: string | object, startTime?: number | string): void; attachTTMLRenderingDiv(div: HTMLDivElement): void; attachView(element: HTMLMediaElement): void; clearDefaultUTCTimingSources(): void; convertToTimeCode(value: number): string; destroy(): void; duration(): number; enableForcedTextStreaming(enable: boolean): boolean; enableText(enable: boolean): boolean; extend(parentNameString: string, childInstance: object, override: boolean): void; formatUTC(time: number, locales: string, hour12: boolean, withDate?: boolean): string; getABRCustomRules(): any[]; getActiveStream(): Stream | null; getAutoPlay(): boolean; getAvailableBaseUrls(): BaseURL[]; getAvailableLocations(): MpdLocation[]; getAverageLatency(type: MediaType, calculationMode?: string | null, sampleSize?: number): number; getAverageThroughput(type: MediaType, calculationMode?: string | null, sampleSize?: number): number; getBufferLength(type: MediaType): number; getCurrentLiveLatency(): number; getCurrentRepresentationForType(type: MediaType): Representation | null; getCurrentSteeringResponseData(): object; getCurrentTextTrackIndex(): number; getCurrentTrackFor(type: MediaType): MediaInfo | null; getDashAdapter(): DashAdapter; getDashMetrics(): DashMetrics; getDebug(): Debug; getDvrSeekOffset(value: number): number; getDvrWindow(): DvrWindow; getInitialMediaSettingsFor(type: MediaType): MediaSettings; getLowLatencyModeEnabled(): boolean; getManifest(): object; getOfflineController(): OfflineController; getPlaybackRate(): number; getProtectionController(): ProtectionController; getRawThroughputData(type: MediaType): ThroughputDictValue[]; getRepresentationsByType(type: MediaType, streamId?: string | null): Representation[]; getSafeAverageThroughput(type: MediaType, calculationMode?: string | null, sampleSize?: number): number; getSettings(): MediaPlayerSettingClass; getSource(): string | object; getStreamsFromManifest(manifest: object): StreamInfo[]; getTTMLRenderingDiv(): HTMLDivElement | null; getTargetLiveDelay(): number; getTracksFor(type: MediaType): MediaInfo[]; getTracksForTypeFromManifest(type: MediaType, manifest: object, streamInfo: StreamInfo): MediaInfo[]; getVersion(): string; getVideoElement(): HTMLVideoElement; getVolume(): number; getXHRWithCredentialsForType(type: string): boolean; initialize(view: HTMLVideoElement, source: string, autoPlay: boolean, startTime: number | string): void; isDynamic(): boolean; isMuted(): boolean; isPaused(): boolean; isReady(): boolean; isSeeking(): boolean; isTextEnabled(): boolean; off(type: string, listener: (e: any) => void, scope?: object): void; on(type: string, listener: (e: any) => void, scope?: object, options?: object): void; pause(): void; play(): void; preload(): void; provideThumbnail(time: number, callback: (thumbnail: Thumbnail | null) => void): void; refreshManifest(callback: (manifest: object | null, error: unknown) => void): void; registerCustomCapabilitiesFilter(filter: CapabilitiesFilterFunction): void; registerLicenseRequestFilter(filter: RequestFilter): void; registerLicenseResponseFilter(filter: ResponseFilter): void; removeABRCustomRule(rulename: string): void; removeAllABRCustomRule(): void; removeRequestInterceptor(interceptor: RequestInterceptor): void; removeResponseInterceptor(interceptor: ResponseInterceptor): void; removeUTCTimingSource(schemeIdUri: string, value: string): void; reset(): void; resetCustomInitialTrackSelectionFunction(fn: TrackSelectionFunction): void; resetSettings(): void; restoreDefaultUTCTimingSources(): void; retrieveManifest(url: string, callback: (manifest: object | null, error: any) => void): void; seek(value: number): void; seekToOriginalLive(): void; seekToPresentationTime(value: number): void; setAutoPlay(value: boolean): void; setConfig(config: object): void; setCurrentTrack(track: MediaInfo, noSettingsSave?: boolean): void; setCustomInitialTrackSelectionFunction(fn: TrackSelectionFunction): void; setInitialMediaSettingsFor(type: MediaType, value: MediaSettings): void; setMute(value: boolean): void; setPlaybackRate(value: number): void; setProtectionData(value: ProtectionDataSet): void; setRepresentationForTypeById(type: MediaType, id: number, forceReplace?: boolean): void; setRepresentationForTypeByIndex(type: MediaType, index: number, forceReplace?: boolean): void; setTextTrack(idx: number): void; setVolume(value: number): void; setXHRWithCredentialsForType(type: string, value: boolean): void; time(periodId?: string): number; timeAsUTC(): number; timeInDvrWindow(): number; trigger(type: MediaPlayerEvent, payload: object, filters: object): void; triggerSteeringRequest(): Promise<any>; unregisterCustomCapabilitiesFilter(filter: CapabilitiesFilterFunction): void; unregisterLicenseRequestFilter(filter: RequestFilter): void; unregisterLicenseResponseFilter(filter: ResponseFilter): void; updateSettings(settings: MediaPlayerSettingClass): void; updateSource(urlOrManifest: string | object): void; } interface MediaPlayerErrors { APPEND_ERROR_CODE: 20; CAPABILITY_MEDIAKEYS_ERROR_CODE: 24; CAPABILITY_MEDIASOURCE_ERROR_CODE: 23; DATA_UPDATE_FAILED_ERROR_CODE: 22; DOWNLOAD_ERROR_ID_CONTENT_CODE: 27; DOWNLOAD_ERROR_ID_INITIALIZATION_CODE: 28; DOWNLOAD_ERROR_ID_MANIFEST_CODE: 25; DOWNLOAD_ERROR_ID_SIDX_CODE: 26; DOWNLOAD_ERROR_ID_XLINK_CODE: 29; FRAGMENT_LOADER_LOADING_FAILURE_ERROR_CODE: 17; FRAGMENT_LOADER_NULL_REQUEST_ERROR_CODE: 18; INDEXEDDB_ABORT_ERROR: 11012; INDEXEDDB_DATA_ERROR: 11006; INDEXEDDB_INVALID_STATE_ERROR: 11002; INDEXEDDB_NETWORK_ERROR: 11005; INDEXEDDB_NOT_ALLOWED_ERROR: 11008; INDEXEDDB_NOT_FOUND_ERROR: 11004; INDEXEDDB_NOT_READABLE_ERROR: 11003; INDEXEDDB_NOT_SUPPORTED_ERROR: 11009; INDEXEDDB_QUOTA_EXCEED_ERROR: 11001; INDEXEDDB_TIMEOUT_ERROR: 11011; INDEXEDDB_TRANSACTION_INACTIVE_ERROR: 11007; INDEXEDDB_UNKNOWN_ERROR: 11013; INDEXEDDB_VERSION_ERROR: 11010; KEY_SESSION_CREATED_ERROR_CODE: 113; KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE: 110; KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE: 112; MANIFEST_ERROR_ID_MULTIPLEXED_CODE: 34; MANIFEST_ERROR_ID_NOSTREAMS_CODE: 32; MANIFEST_ERROR_ID_PARSE_CODE: 31; MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE: 11; MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE: 10; MEDIASOURCE_TYPE_UNSUPPORTED_CODE: 35; MEDIA_KEYERR_CLIENT_CODE: 102; MEDIA_KEYERR_CODE: 100; MEDIA_KEYERR_DOMAIN_CODE: 106; MEDIA_KEYERR_HARDWARECHANGE_CODE: 105; MEDIA_KEYERR_OUTPUT_CODE: 104; MEDIA_KEYERR_SERVICE_CODE: 103; MEDIA_KEYERR_UNKNOWN_CODE: 101; MEDIA_KEY_MESSAGE_ERROR_CODE: 107; MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE: 114; MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE: 108; MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE: 111; MSS_NO_TFRF_CODE: 200; MSS_UNSUPPORTED_CODEC_CODE: 201; OFFLINE_ERROR: 11000; REMOVE_ERROR_CODE: 21; SEGMENT_BASE_LOADER_ERROR_CODE: 15; SERVER_CERTIFICATE_UPDATED_ERROR_CODE: 109; TIMED_TEXT_ERROR_ID_PARSE_CODE: 33; TIME_SYNC_FAILED_ERROR_CODE: 16; URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE: 19; XLINK_LOADER_LOADING_FAILURE_ERROR_CODE: 12; } interface MediaPlayerEvents { AST_IN_FUTURE: 'astInFuture'; BASE_URLS_UPDATED: 'baseUrlsUpdated'; BUFFER_EMPTY: 'bufferStalled'; BUFFER_LOADED: 'bufferLoaded'; BUFFER_LEVEL_STATE_CHANGED: 'bufferStateChanged'; BUFFER_LEVEL_UPDATED: 'bufferLevelUpdated'; CAN_PLAY: 'canPlay'; CAN_PLAY_THROUGH: 'canPlayThrough'; CAPTION_RENDERED: 'captionRendered'; CAPTION_CONTAINER_RESIZE: 'captionContainerResize'; CONFORMANCE_VIOLATION: 'conformanceViolation'; CUE_ENTER: 'cueEnter'; CUE_EXIT: 'cueExit'; DVB_FONT_DOWNLOAD_ADDED: 'dvbFontDownloadAdded'; DVB_FONT_DOWNLOAD_COMPLETE: 'dvbFontDownloadComplete'; DVB_FONT_DOWNLOAD_FAILED: 'dvbFontDownloadFailed'; DYNAMIC_TO_STATIC: 'dynamicToStatic'; ERROR: 'error'; EVENT_MODE_ON_RECEIVE: 'eventModeOnReceive'; EVENT_MODE_ON_START: 'eventModeOnStart'; FRAGMENT_LOADING_COMPLETED: 'fragmentLoadingCompleted'; FRAGMENT_LOADING_PROGRESS: 'fragmentLoadingProgress'; FRAGMENT_LOADING_STARTED: 'fragmentLoadingStarted'; FRAGMENT_LOADING_ABANDONED: 'fragmentLoadingAbandoned'; INBAND_PRFT_RECEIVED: 'inbandPrft'; KEY_ADDED: 'public_keyAdded'; KEY_ERROR: 'public_keyError'; KEY_MESSAGE: 'public_keyMessage'; KEY_SESSION_CLOSED: 'public_keySessionClosed'; KEY_SESSION_CREATED: 'public_keySessionCreated'; KEY_SESSION_REMOVED: 'public_keySessionRemoved'; KEY_STATUSES_CHANGED: 'public_keyStatusesChanged'; KEY_SYSTEM_SELECTED: 'public_keySystemSelected'; KEY_SYSTEM_ACCESS_COMPLETE: 'public_keySystemAccessComplete'; KEY_SESSION_UPDATED: 'public_keySessionUpdated'; LICENSE_REQUEST_COMPLETE: 'public_licenseRequestComplete'; LICENSE_REQUEST_SENDING: 'public_licenseRequestSending'; LOG: 'log'; MANIFEST_LOADED: 'manifestLoaded'; MANIFEST_LOADING_STARTED: 'manifestLoadingStarted'; MANIFEST_LOADING_FINISHED: 'manifestLoadingFinished'; MANIFEST_VALIDITY_CHANGED: 'manifestValidityChanged'; METRICS_CHANGED: 'metricsChanged'; METRIC_ADDED: 'metricAdded'; METRIC_CHANGED: 'metricChanged'; METRIC_UPDATED: 'metricUpdated'; OFFLINE_RECORD_FINISHED: 'public_offlineRecordFinished'; OFFLINE_RECORD_LOADEDMETADATA: 'public_offlineRecordLoadedmetadata'; OFFLINE_RECORD_STARTED: 'public_offlineRecordStarted'; OFFLINE_RECORD_STOPPED: 'public_offlineRecordStopped'; PERIOD_SWITCH_STARTED: 'periodSwitchStarted'; PERIOD_SWITCH_COMPLETED: 'periodSwitchCompleted'; ADAPTATION_SET_REMOVED_NO_CAPABILITIES: 'adaptationSetRemovedNoCapabilities'; PLAYBACK_ENDED: 'playbackEnded'; PLAYBACK_ERROR: 'playbackError'; PLAYBACK_LOADED_DATA: 'playbackLoadedData'; PLAYBACK_METADATA_LOADED: 'playbackMetaDataLoaded'; PLAYBACK_NOT_ALLOWED: 'playbackNotAllowed'; PLAYBACK_PAUSED: 'playbackPaused'; PLAYBACK_PLAYING: 'playbackPlaying'; PLAYBACK_PROGRESS: 'playbackProgress'; PLAYBACK_RATE_CHANGED: 'playbackRateChanged'; PLAYBACK_SEEKED: 'playbackSeeked'; PLAYBACK_SEEKING: 'playbackSeeking'; PLAYBACK_STALLED: 'playbackStalled'; PLAYBACK_STARTED: 'playbackStarted'; PLAYBACK_TIME_UPDATED: 'playbackTimeUpdated'; PLAYBACK_VOLUME_CHANGED: 'playbackVolumeChanged'; PLAYBACK_WAITING: 'playbackWaiting'; PROTECTION_CREATED: 'public_protectioncreated'; PROTECTION_DESTROYED: 'public_protectiondestroyed'; REPRESENTATION_SWITCH: 'representationSwitch'; TRACK_CHANGE_RENDERED: 'trackChangeRendered'; QUALITY_CHANGE_RENDERED: 'qualityChangeRendered'; QUALITY_CHANGE_REQUESTED: 'qualityChangeRequested'; STREAM_ACTIVATED: 'streamActivated' STREAM_DEACTIVATED: 'streamDeactivated'; STREAM_INITIALIZED: 'streamInitialized'; STREAM_INITIALIZING: 'streamInitializing'; STREAM_TEARDOWN_COMPLETE: 'streamTeardownComplete'; STREAM_UPDATED: 'streamUpdated'; TEXT_TRACKS_ADDED: 'allTextTracksAdded'; TEXT_TRACK_ADDED: 'textTrackAdded'; THROUGHPUT_MEASUREMENT_STORED: 'throughputMeasurementStored'; TTML_PARSED: 'ttmlParsed'; TTML_TO_PARSE: 'ttmlToParse'; } export interface MediaPlayerEvent { type: string } export interface AstInFutureEvent extends MediaPlayerEvent { delay: number; type: MediaPlayerEvents['AST_IN_FUTURE']; } export interface BufferEvent extends MediaPlayerEvent { mediaType: MediaType; type: MediaPlayerEvents['BUFFER_EMPTY' | 'BUFFER_LOADED']; } export interface BufferStateChangedEvent extends MediaPlayerEvent { mediaType: MediaType; sender: object; state: 'bufferStalled' | 'bufferLoaded'; streamInfo: StreamInfo; type: MediaPlayerEvents['BUFFER_LEVEL_STATE_CHANGED']; } export interface GenericErrorEvent extends MediaPlayerEvent { error: 'capability' | 'mediasource' | 'key_session' | 'key_message'; event: string; type: MediaPlayerEvents['ERROR']; } export interface DownloadErrorEvent extends MediaPlayerEvent { error: 'download'; event: { id: string; url: string; request: XMLHttpRequest; }; type: MediaPlayerEvents['ERROR']; } export interface ManifestErrorEvent extends MediaPlayerEvent { error: 'manifestError'; event: { id: string; message: string; manifest?: object; event?: string; }; type: MediaPlayerEvents['ERROR']; } export interface TimedTextErrorEvent extends MediaPlayerEvent { error: 'cc'; event: { id: string; message: string; cc: string; }; type: MediaPlayerEvents['ERROR']; } export interface MediaPlayerErrorEvent extends MediaPlayerEvent { error: { code: MediaPlayerErrors['MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE'] | MediaPlayerErrors['MANIFEST_LOADER_LOADING_FAILURE_ERROR_CODE'] | MediaPlayerErrors['XLINK_LOADER_LOADING_FAILURE_ERROR_CODE'] | MediaPlayerErrors['SEGMENT_BASE_LOADER_ERROR_CODE'] | MediaPlayerErrors['TIME_SYNC_FAILED_ERROR_CODE'] | MediaPlayerErrors['FRAGMENT_LOADER_LOADING_FAILURE_ERROR_CODE'] | MediaPlayerErrors['FRAGMENT_LOADER_NULL_REQUEST_ERROR_CODE'] | MediaPlayerErrors['URL_RESOLUTION_FAILED_GENERIC_ERROR_CODE'] | MediaPlayerErrors['APPEND_ERROR_CODE'] | MediaPlayerErrors['REMOVE_ERROR_CODE'] | MediaPlayerErrors['DATA_UPDATE_FAILED_ERROR_CODE'] | MediaPlayerErrors['CAPABILITY_MEDIASOURCE_ERROR_CODE'] | MediaPlayerErrors['CAPABILITY_MEDIAKEYS_ERROR_CODE'] | MediaPlayerErrors['DOWNLOAD_ERROR_ID_MANIFEST_CODE'] | MediaPlayerErrors['DOWNLOAD_ERROR_ID_CONTENT_CODE'] | MediaPlayerErrors['DOWNLOAD_ERROR_ID_INITIALIZATION_CODE'] | MediaPlayerErrors['DOWNLOAD_ERROR_ID_XLINK_CODE'] | MediaPlayerErrors['MANIFEST_ERROR_ID_PARSE_CODE'] | MediaPlayerErrors['MANIFEST_ERROR_ID_NOSTREAMS_CODE'] | MediaPlayerErrors['TIMED_TEXT_ERROR_ID_PARSE_CODE'] | MediaPlayerErrors['MANIFEST_ERROR_ID_MULTIPLEXED_CODE'] | MediaPlayerErrors['MEDIASOURCE_TYPE_UNSUPPORTED_CODE'] | // Protection errors MediaPlayerErrors['MEDIA_KEYERR_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_UNKNOWN_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_CLIENT_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_SERVICE_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_OUTPUT_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_HARDWARECHANGE_CODE'] | MediaPlayerErrors['MEDIA_KEYERR_DOMAIN_CODE'] | MediaPlayerErrors['MEDIA_KEY_MESSAGE_ERROR_CODE'] | MediaPlayerErrors['MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE'] | MediaPlayerErrors['SERVER_CERTIFICATE_UPDATED_ERROR_CODE'] | MediaPlayerErrors['KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE'] | MediaPlayerErrors['MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE'] | MediaPlayerErrors['KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE'] | MediaPlayerErrors['KEY_SESSION_CREATED_ERROR_CODE'] | MediaPlayerErrors['MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE'] | // Offline errors MediaPlayerErrors['OFFLINE_ERROR'] | MediaPlayerErrors['INDEXEDDB_QUOTA_EXCEED_ERROR'] | MediaPlayerErrors['INDEXEDDB_INVALID_STATE_ERROR'] | MediaPlayerErrors['INDEXEDDB_NOT_READABLE_ERROR'] | MediaPlayerErrors['INDEXEDDB_NOT_FOUND_ERROR'] | MediaPlayerErrors['INDEXEDDB_NETWORK_ERROR'] | MediaPlayerErrors['INDEXEDDB_DATA_ERROR'] | MediaPlayerErrors['INDEXEDDB_TRANSACTION_INACTIVE_ERROR'] | MediaPlayerErrors['INDEXEDDB_NOT_ALLOWED_ERROR'] | MediaPlayerErrors['INDEXEDDB_NOT_SUPPORTED_ERROR'] | MediaPlayerErrors['INDEXEDDB_VERSION_ERROR'] | MediaPlayerErrors['INDEXEDDB_TIMEOUT_ERROR'] | MediaPlayerErrors['INDEXEDDB_ABORT_ERROR'] | MediaPlayerErrors['INDEXEDDB_UNKNOWN_ERROR'] | // MSS errors MediaPlayerErrors['MSS_NO_TFRF_CODE'] | MediaPlayerErrors['MSS_UNSUPPORTED_CODEC_CODE'], message: string, data: object, } type: MediaPlayerEvents['ERROR']; } export type ErrorEvent = GenericErrorEvent | DownloadErrorEvent | ManifestErrorEvent | TimedTextErrorEvent | MediaPlayerErrorEvent; export interface CaptionRenderedEvent extends MediaPlayerEvent { captionDiv: HTMLDivElement; currentTrackIdx: number; type: MediaPlayerEvents['CAPTION_RENDERED']; } export interface CaptionContainerResizeEvent extends MediaPlayerEvent { type: MediaPlayerEvents['CAPTION_CONTAINER_RESIZE']; } export interface dvbFontDownloadAdded extends MediaPlayerEvent { font: FontInfo; type: MediaPlayerEvents['DVB_FONT_DOWNLOAD_ADDED']; } export interface dvbFontDownloadComplete extends MediaPlayerEvent { font: FontInfo; type: MediaPlayerEvents['DVB_FONT_DOWNLOAD_COMPLETE']; } export interface dvbFontDownloadFailed extends MediaPlayerEvent { font: FontInfo; type: MediaPlayerEvents['DVB_FONT_DOWNLOAD_FAILED']; } export interface DynamicToStaticEvent extends MediaPlayerEvent { type: MediaPlayerEvents['DYNAMIC_TO_STATIC']; } export interface FragmentLoadingCompletedEvent extends MediaPlayerEvent { request: FragmentRequest; response: ArrayBuffer; sender: object; type: MediaPlayerEvents['FRAGMENT_LOADING_COMPLETED']; } export interface FragmentLoadingAbandonedEvent extends MediaPlayerEvent { mediaType: MediaType; request: object; streamProcessor: object; type: MediaPlayerEvents['FRAGMENT_LOADING_ABANDONED']; } export interface InbandPrftReceivedEvent extends MediaPlayerEvent { data: object mediaType: MediaType; streamInfo: StreamInfo; type: MediaPlayerEvents['INBAND_PRFT_RECEIVED']; } export interface KeyErrorEvent extends MediaPlayerEvent { error: DashJSError; type: MediaPlayerEvents['KEY_ERROR']; } export interface KeyMessageEvent extends MediaPlayerEvent { data: KeyMessage; type: MediaPlayerEvents['KEY_MESSAGE']; } export interface KeySessionClosedEvent extends MediaPlayerEvent { data: string | null; error?: string; type: MediaPlayerEvents['KEY_SESSION_CLOSED' | 'KEY_SESSION_REMOVED']; } export interface KeySessionEvent extends MediaPlayerEvent { data: SessionToken | null; error?: DashJSError; type: MediaPlayerEvents['KEY_SESSION_CREATED']; } export interface KeyStatusesChangedEvent extends MediaPlayerEvent { data: SessionToken; error?: DashJSError; type: MediaPlayerEvents['KEY_STATUSES_CHANGED']; } export interface KeySystemSelectedEvent extends MediaPlayerEvent { type: MediaPlayerEvents['KEY_SYSTEM_SELECTED']; data: object | null; error?: DashJSError; } export interface LicenseRequestCompleteEvent extends MediaPlayerEvent { data: { sessionToken: SessionToken; messageType: string; }; error?: DashJSError; type: MediaPlayerEvents['LICENSE_REQUEST_COMPLETE']; } export interface LogEvent extends MediaPlayerEvent { message: string; type: MediaPlayerEvents['LOG']; } export interface ManifestLoadedEvent extends MediaPlayerEvent { data: object; type: MediaPlayerEvents['MANIFEST_LOADED']; } export interface MetricEvent extends MediaPlayerEvent { mediaType: MediaType; metric: MetricType; type: MediaPlayerEvents['METRIC_ADDED' | 'METRIC_UPDATED']; value: object; } export interface MetricChangedEvent extends MediaPlayerEvent { mediaType: MediaType; type: MediaPlayerEvents['METRIC_CHANGED']; } export interface OfflineRecordEvent extends MediaPlayerEvent { id: string; type: MediaPlayerEvents['OFFLINE_RECORD_FINISHED' | 'OFFLINE_RECORD_STARTED' | 'OFFLINE_RECORD_STOPPED']; } export interface OfflineRecordLoadedmetadataEvent extends MediaPlayerEvent { mediaInfos: MediaInfo[]; type: MediaPlayerEvents['OFFLINE_RECORD_LOADEDMETADATA']; } export interface PeriodSwitchEvent extends MediaPlayerEvent { fromStreamInfo?: StreamInfo | null; toStreamInfo: StreamInfo | null; type: MediaPlayerEvents['PERIOD_SWITCH_COMPLETED' | 'PERIOD_SWITCH_STARTED']; } export interface PlaybackErrorEvent extends MediaPlayerEvent { error: MediaError; type: MediaPlayerEvents['PLAYBACK_ERROR']; } export interface PlaybackPausedEvent extends MediaPlayerEvent { ended: boolean | null; type: MediaPlayerEvents['PLAYBACK_PAUSED']; } export interface PlaybackPlayingEvent extends MediaPlayerEvent { playingTime: number | null; type: MediaPlayerEvents['PLAYBACK_PLAYING']; } export interface PlaybackRateChangedEvent extends MediaPlayerEvent { playbackRate: number | null; type: MediaPlayerEvents['PLAYBACK_RATE_CHANGED']; } export interface PlaybackSeekingEvent extends MediaPlayerEvent { seekTime: number | null; type: MediaPlayerEvents['PLAYBACK_SEEKING']; } export interface PlaybackStartedEvent extends MediaPlayerEvent { startTime: number | null; type: MediaPlayerEvents['PLAYBACK_STARTED']; } export interface PlaybackTimeUpdatedEvent extends MediaPlayerEvent { time: number | null; timeToEnd: number; type: MediaPlayerEvents['PLAYBACK_TIME_UPDATED']; } export interface PlaybackWaitingEvent extends MediaPlayerEvent { playingTime: number | null; type: MediaPlayerEvents['PLAYBACK_WAITING']; } export interface ProtectionCreatedEvent extends MediaPlayerEvent { controller: object; type: MediaPlayerEvents['PROTECTION_CREATED']; } export interface ProtectionDestroyedEvent extends MediaPlayerEvent { data: string; type: MediaPlayerEvents['PROTECTION_DESTROYED']; } export interface TrackChangeRenderedEvent extends MediaPlayerEvent { mediaType: MediaType; newMediaInfo: MediaInfo; oldMediaInfo: MediaInfo; type: MediaPlayerEvents['TRACK_CHANGE_RENDERED']; } export interface QualityChangeRenderedEvent extends MediaPlayerEvent { mediaType: MediaType; newRepresentation: Representation; oldRepresentation: Representation; streamId: string; type: MediaPlayerEvents['QUALITY_CHANGE_RENDERED']; } export interface QualityChangeRequestedEvent extends MediaPlayerEvent { mediaType: MediaType; newRepresentation: Representation; oldRepresentation: Representation; reason: { name?: string; droppedFrames?: number; } | null; streamInfo: StreamInfo | null; isAdaptationSetSwitch: boolean; type: MediaPlayerEvents['QUALITY_CHANGE_REQUESTED']; } export interface StreamInitializedEvent extends MediaPlayerEvent { error: Error | null; streamInfo: StreamInfo; type: MediaPlayerEvents['STREAM_INITIALIZED']; } export interface TextTracksAddedEvent extends MediaPlayerEvent { enabled: boolean; index: number; tracks: TextTrackInfo[]; type: MediaPlayerEvents['TEXT_TRACKS_ADDED']; } export interface TtmlParsedEvent extends MediaPlayerEvent { ttmlDoc: object; ttmlString: string; type: MediaPlayerEvents['TTML_PARSED']; } export interface TtmlToParseEvent extends MediaPlayerEvent { content: object; type: MediaPlayerEvents['TTML_TO_PARSE']; } export interface CueEnterEvent extends MediaPlayerEvent { end: number id: string, start: number, text: string, type: MediaPlayerEvents['CUE_ENTER']; } export interface CueExitEvent extends MediaPlayerEvent { id: string, type: MediaPlayerEvents['CUE_EXIT']; } export interface AdaptationSetRemovedNoCapabilitiesEvent extends MediaPlayerEvent { adaptationSet: object; type: MediaPlayerEvents['ADAPTATION_SET_REMOVED_NO_CAPABILITIES']; } export interface MediaSettings { accessibility?: DescriptorType | string; audioChannelConfiguration?: DescriptorType | string; lang?: RegExp | string; role?: DescriptorType | string; viewpoint?: DescriptorType | string; } export class serviceDescriptions { contentSteering: ContentSteering | null; id: number; latency: number | null; playbackrate: number; schemeIdUri: string; } export interface ICurrentRepresentationSwitch { mt: number; t: Date; to: string; lto: string; } export interface IBufferState { state: string; target: number; } /** * Streaming - Constants **/ export interface conformanceViolationConstants { LEVELS: { SUGGESTION: 'Suggestion', WARNING: 'Warning', ERROR: 'Error' }, EVENTS: { NO_UTC_TIMING_ELEMENT: { key: 'NO_UTC_TIMING_ELEMENT', message: 'No UTCTiming element is present in the manifest. You may experience playback failures. For a detailed validation use https://conformance.dashif.org/' }, NON_COMPLIANT_SMPTE_IMAGE_ATTRIBUTE: { key: 'NON_COMPLIANT_SMPTE_IMAGE_ATTRIBUTE', message: 'SMPTE 2052-1:2013 defines the attribute name as "imageType" and does not define "imagetype"' }, INVALID_DVR_WINDOW: { key: 'INVALID_DVR_WINDOW', message: 'No valid segment found when applying a specification compliant DVR window calculation. Using SegmentTimeline entries as a fallback.' } } } export interface Constants { STREAM: 'stream', VIDEO: 'video', AUDIO: 'audio', TEXT: 'text', MUXED: 'muxed', IMAGE: 'image', STPP: 'stpp', TTML: 'ttml', VTT: 'vtt', WVTT: 'wvtt', CONTENT_STEERING: 'contentSteering', LIVE_CATCHUP_MODE_DEFAULT: 'liveCatchupModeDefault', LIVE_CATCHUP_MODE_LOLP: 'liveCatchupModeLoLP', MOVING_AVERAGE_SLIDING_WINDOW: 'slidingWindow', MOVING_AVERAGE_EWMA: 'ewma', BAD_ARGUMENT_ERROR: 'Invalid Arguments', MISSING_CONFIG_ERROR: 'Missing config parameter(s)', TRACK_SWITCH_MODE_ALWAYS_REPLACE: 'alwaysReplace', TRACK_SWITCH_MODE_NEVER_REPLACE: 'neverReplace', TRACK_SELECTION_MODE_FIRST_TRACK: 'firstTrack', TRACK_SELECTION_MODE_HIGHEST_BITRATE: 'highestBitrate', TRACK_SELECTION_MODE_HIGHEST_EFFICIENCY: 'highestEfficiency', TRACK_SELECTION_MODE_WIDEST_RANGE: 'widestRange', CMCD_MODE_QUERY: 'query', CMCD_MODE_HEADER: 'header', CMCD_AVAILABLE_KEYS: ['br', 'd', 'ot', 'tb', 'bl', 'dl', 'mtp', 'nor', 'nrr', 'su', 'bs', 'rtp', 'cid', 'pr', 'sf', 'sid', 'st', 'v'], CMCD_V2_AVAILABLE_KEYS: ['msd', 'ltc'], CMCD_AVAILABLE_REQUESTS: ['segment', 'mpd', 'xlink', 'steering', 'other'], INITIALIZE: 'initialize', TEXT_SHOWING: 'showing', TEXT_HIDDEN: 'hidden', TEXT_DISABLED: 'disabled', ACCESSIBILITY_CEA608_SCHEME: 'urn:scte:dash:cc:cea-608:2015', CC1: 'CC1', CC3: 'CC3', UTF8: 'utf-8', SCHEME_ID_URI: 'schemeIdUri', START_TIME: 'starttime', SERVICE_DESCRIPTION_DVB_LL_SCHEME: 'urn:dvb:dash:lowlatency:scope:2019', SUPPLEMENTAL_PROPERTY_DVB_LL_SCHEME: 'urn:dvb:dash:lowlatency:critical:2019', CTA_5004_2023_SCHEME: 'urn:mpeg:dash:cta-5004:2023', THUMBNAILS_SCHEME_ID_URIS: ['http://dashif.org/thumbnail_tile', 'http://dashif.org/guidelines/thumbnail_tile'], FONT_DOWNLOAD_DVB_SCHEME: 'urn:dvb:dash:fontdownload:2014', COLOUR_PRIMARIES_SCHEME_ID_URI: 'urn:mpeg:mpegB:cicp:ColourPrimaries', URL_QUERY_INFO_SCHEME: 'urn:mpeg:dash:urlparam:2014', EXT_URL_QUERY_INFO_SCHEME: 'urn:mpeg:dash:urlparam:2016', MATRIX_COEFFICIENTS_SCHEME_ID_URI: 'urn:mpeg:mpegB:cicp:MatrixCoefficients', TRANSFER_CHARACTERISTICS_SCHEME_ID_URI: 'urn:mpeg:mpegB:cicp:TransferCharacteristics', HDR_METADATA_FORMAT_SCHEME_ID_URI: 'urn:dvb:dash:hdr-dmi', HDR_METADATA_FORMAT_VALUES: { ST2094_10: 'ST2094-10', SL_HDR2: 'SL-HDR2', ST2094_40: 'ST2094-40' }, MEDIA_CAPABILITIES_API: { COLORGAMUT: { SRGB: 'srgb', P3: 'p3', REC2020: 'rec2020' }, TRANSFERFUNCTION: { SRGB: 'srgb', PQ: 'pq', HLG: 'hlg' }, HDR_METADATATYPE: { SMPTE_ST_2094_10: 'smpteSt2094-10', SLHDR2: 'slhdr2', SMPTE_ST_2094_40: 'smpteSt2094-40' } }, XML: 'XML', ARRAY_BUFFER: 'ArrayBuffer', DVB_REPORTING_URL: 'dvb:reportingUrl', DVB_PROBABILITY: 'dvb:probability', OFF_MIMETYPE: 'application/font-sfnt', WOFF_MIMETYPE: 'application/font-woff', VIDEO_ELEMENT_READY_STATES: { HAVE_NOTHING: 0, HAVE_METADATA: 1, HAVE_CURRENT_DATA: 2, HAVE_FUTURE_DATA: 3, HAVE_ENOUGH_DATA: 4 }, FILE_LOADER_TYPES: { FETCH: 'fetch_loader', XHR: 'xhr_loader' }, THROUGHPUT_TYPES: { LATENCY: 'throughput_type_latency', BANDWIDTH: 'throughput_type_bandwidth' }, THROUGHPUT_CALCULATION_MODES: { EWMA: 'throughputCalculationModeEwma', ZLEMA: 'throughputCalculationModeZlema', ARITHMETIC_MEAN: 'throughputCalculationModeArithmeticMean', BYTE_SIZE_WEIGHTED_ARITHMETIC_MEAN: 'throughputCalculationModeByteSizeWeightedArithmeticMean', DATE_WEIGHTED_ARITHMETIC_MEAN: 'throughputCalculationModeDateWeightedArithmeticMean', HARMONIC_MEAN: 'throughputCalculationModeHarmonicMean', BYTE_SIZE_WEIGHTED_HARMONIC_MEAN: 'throughputCalculationModeByteSizeWeightedHarmonicMean', DATE_WEIGHTED_HARMONIC_MEAN: 'throughputCalculationModeDateWeightedHarmonicMean', }, LOW_LATENCY_DOWNLOAD_TIME_CALCULATION_MODE: { MOOF_PARSING: 'lowLatencyDownloadTimeCalculationModeMoofParsing', DOWNLOADED_DATA: 'lowLatencyDownloadTimeCalculationModeDownloadedData', AAST: 'lowLatencyDownloadTimeCalculationModeAast', }, RULES_TYPES: { QUALITY_SWITCH_RULES: 'qualitySwitchRules', ABANDON_FRAGMENT_RULES: 'abandonFragmentRules' }, QUALITY_SWITCH_RULES: { BOLA_RULE: 'BolaRule', THROUGHPUT_RULE: 'ThroughputRule', INSUFFICIENT_BUFFER_RULE: 'InsufficientBufferRule', SWITCH_HISTORY_RULE: 'SwitchHistoryRule', DROPPED_FRAMES_RULE: 'DroppedFramesRule', LEARN_TO_ADAPT_RULE: 'L2ARule', LOL_PLUS_RULE: 'LoLPRule' }, ABANDON_FRAGMENT_RULES: { ABANDON_REQUEST_RULE: 'AbandonRequestsRule' }, /** * @constant {string} ID3_SCHEME_ID_URI specifies scheme ID URI for ID3 timed metadata * @memberof Constants# * @static */ ID3_SCHEME_ID_URI: 'https://aomedia.org/emsg/ID3', COMMON_ACCESS_TOKEN_HEADER: 'common-access-token', DASH_ROLE_SCHEME_ID: 'urn:mpeg:dash:role:2011', CODEC_FAMILIES: { MP3: 'mp3', AAC: 'aac', AC3: 'ac3', EC3: 'ec3', DTSX: 'dtsx', DTSC: 'dtsc', AVC: 'avc', HEVC: 'hevc' } } export interface MetricsConstants { TCP_CONNECTION: 'TcpList', HTTP_REQUEST: 'HttpList', TRACK_SWITCH: 'RepSwitchList', BUFFER_LEVEL: 'BufferLevel', BUFFER_LOADED: 'bufferLoaded', ABANDON_LOAD: 'abandonload', ALLOW_LOAD: 'allowload', BUFFER_EMPTY: 'bufferStalled', BUFFER_STATE: 'BufferState', DVR_INFO: 'DVRInfo', DROPPED_FRAMES: 'DroppedFrames', SCHEDULING_INFO: 'SchedulingInfo', REQUESTS_QUEUE: 'RequestsQueue', MANIFEST_UPDATE: 'ManifestUpdate', MANIFEST_UPDATE_STREAM_INFO: 'ManifestUpdatePeriodInfo', MANIFEST_UPDATE_TRACK_INFO: 'ManifestUpdateRepresentationInfo', PLAY_LIST: 'PlayList', DVB_ERRORS: 'DVBErrors', HTTP_REQUEST_DVB_REPORTING_TYPE: 'DVBReporting', } export interface ProtectionConstants { CLEARKEY_KEYSTEM_STRING: 'org.w3.clearkey', WIDEVINE_KEYSTEM_STRING: 'com.widevine.alpha', PLAYREADY_KEYSTEM_STRING: 'com.microsoft.playready', PLAYREADY_RECOMMENDATION_KEYSTEM_STRING: 'com.microsoft.playready.recommendation', WIDEVINE_UUID: 'edef8ba9-79d6-4ace-a3c8-27dcd51d21ed', PLAYREADY_UUID: '9a04f079-9840-4286-ab92-e65be0885f95', CLEARKEY_UUID: 'e2719d58-a985-b3c9-781a-b030af78d30e', W3C_CLEARKEY_UUID: '1077efec-c0b2-4d02-ace3-3c1e52e2fb4b', INITIALIZATION_DATA_TYPE_CENC: 'cenc', INITIALIZATION_DATA_TYPE_KEYIDS: 'keyids', INITIALIZATION_DATA_TYPE_WEBM: 'webm', ENCRYPTION_SCHEME_CENC: 'cenc', ENCRYPTION_SCHEME_CBCS: 'cbcs', MEDIA_KEY_MESSAGE_TYPES: { LICENSE_REQUEST: 'license-request', LICENSE_RENEWAL: 'license-renewal', LICENSE_RELEASE: 'license-release', INDIVIDUALIZATION_REQUEST: 'individualization-request', }, ROBUSTNESS_STRINGS: { WIDEVINE: { SW_SECURE_CRYPTO: 'SW_SECURE_CRYPTO', SW_SECURE_DECODE: 'SW_SECURE_DECODE', HW_SECURE_CRYPTO: 'HW_SECURE_CRYPTO', HW_SECURE_DECODE: 'HW_SECURE_DECODE', HW_SECURE_ALL: 'HW_SECURE_ALL' } }, MEDIA_KEY_STATUSES: { USABLE: 'usable', EXPIRED: 'expired', RELEASED: 'released', OUTPUT_RESTRICTED: 'output-restricted', OUTPUT_DOWNSCALED: 'output-downscaled', STATUS_PENDING: 'status-pending', INTERNAL_ERROR: 'internal-error', } } /** * Streaming - Controllers **/ export interface AbrController { checkPlaybackQuality(type: string, streamId: string | number): boolean; clearDataForStream(streamId: string): void; getAbandonmentStateFor(streamId: string, type: string): any | null; getInitialBitrateFor(type: string): number; getOptimalRepresentationForBitrate(mediaInfo: MediaInfo, bitrateInKbit: number, includeCompatibleMediaInfos: boolean): Representation | null; getPossibleVoRepresentations(mediaInfo: MediaInfo, includeCompatibleMediaInfos: boolean): Representation[] | null; getPossibleVoRepresentationsFilteredBySettings(mediaInfo: MediaInfo, includeCompatibleMediaInfos: boolean): Representation[] | null; getRepresentationByAbsoluteIndex(absoluteIndex: number, mediaInfo: MediaInfo, includeCompatibleMediaInfos: boolean): Representation | null; handleNewMediaInfo(mediaInfo: MediaInfo): void; initialize(): void; isPlayingAtLowestQuality(representation: Representation): boolean; isPlayingAtTopQuality(representation: Representation): boolean; registerStreamType(type: object, streamProcessor: object): void; reset(): void; setConfig(config: object): void; setPlaybackQuality(type: string, streamInfo: StreamInfo, representation: Representation, reason: object): void; setWindowResizeEventCalled(value: any): void; unRegisterStreamType(streamId: string, type: string): void; } export interface BaseURLController { setConfig(config: object): void; update(manifest: object): void; resolve(path: any): BaseURL; reset(): void; getBaseUrls(manifest: any): BaseURL[]; initialize(data: any): void; } export interface BlacklistController { contains(query: any): boolean; add(entry: any): void; remove(entry: any): void; reset(): void; } export interface BufferController { appendInitSegmentFromCache(representationId: string): boolean; clearBuffers(ranges: Range[]): Promise<any>; createBufferSink(mediaInfo: MediaInfo, oldBufferSinks?: any[]): Promise<any>; dischargePreBuffer(): void; getAllRangesWithSafetyFactor(seekTime: number): { start: number, end: number }[]; getBuffer(): SourceBufferSink; getBufferControllerType(): string; getBufferLevel(): number; getContinuousBufferTimeForTargetTime(targetTime: number): number; getIsBufferingCompleted(): boolean; getIsPruningInProgress(): boolean; getMediaSource(): MediaSource; getRangeAt(time: number, tolerance: number): Range | null; getStreamId(): string; getType(): string; hasBufferAtTime(time: number): boolean; initialize(mediaSource: MediaSource): void; prepareForFastQualitySwitch(newRepresentation: Representation, oldRepresentation: Representation): Promise<any>; prepareForForceReplacementQualitySwitch(voRepresentation: Representation): Promise<any>; prepareForNonReplacementTrackSwitch(codec: string): Promise<any>; prepareForPlaybackSeek(): any; prepareForReplacementTrackSwitch(codec: string): Promise<any>; prepareForabandonQualitySwitch(newRepresentation: Representation, oldRepresentation: Representation): Promise<any>; pruneAllSafely(): Promise<any>; pruneBuffer(): void; reset(errored: any, keepBuffers: boolean): void; segmentRequestingCompleted(segmentIndex: number): void; setIsBufferingCopleted(value: object): void; setMediaSource(value: object, mediaInfo: MediaInfo | null): void; setSeekTarget(value: object): void; updateAppendWindow(): Promise<any>; updateBufferTimestampOffset(voRepresentation: Representation): Promise<any>; } export interface CatchupController { initialize(): void; reset(): void; setConfig(config: any): void; } export interface ClientDataReportingController { isAdaptationsIncluded(adaptationSet: AdaptationSet): boolean; isServiceLocationIncluded(requestType: string, serviceLocation: any): boolean; setConfig(config: any): void; } export interface CommonAccessTokenController { getCommonAccessTokenForUrl(url: URL): any; processResponseHeaders(httpResponse: object): void; reset(): void; } export interface EventController { addInbandEvents(values: object[], periodId: string | number): void; addInlineEvents(values: object[], periodId: string | number): void; getInbandEvents(): object; getInlineEvents(): object; reset(): void; setConfig(config: object): void; start(): void; } export interface ExtUrlQueryInfoController { createFinalQueryStrings(manifest: object): void; getFinalQueryString(request: HTTPRequest): any; } export interface FragmentController { getModel(type: string): any; getStreamId(): string; reset(): void; } export interface GapController { initialize(): void; reset(): void; setConfig(config: object): void; } export interface MediaController { addTrack(track: MediaInfo): void; areTracksEqual(t1: MediaInfo, t2: MediaInfo): boolean; clearDataForStream(streamId: string): void; getCurrentTrackFor(type: string, streamId: string): MediaInfo; getInitialSettings(type: string): object | null; getTracksFor(type: string, streamId: string): MediaInfo[]; getTracksWithHighestBitrate(trackArr: MediaInfo[]): MediaInfo[]; getTracksWithHighestEfficiency(trackArr: MediaInfo[]): MediaInfo[]; getTracksWithHighestSelectionPriority(trackArr: MediaInfo[]): MediaInfo[]; getTracksWithWidestRange(trackArr: MediaInfo[]): MediaInfo[]; initialize(): void; isCurrentTrack(track: MediaInfo): boolean; matchSettings(settings: object, track: MediaInfo, isTrackActive?: boolean): any; matchSettingsAccessibility(settings: object, track: MediaInfo): any; matchSettingsAudioChannelConfig(settings: object, track: MediaInfo): any; matchSettingsCodec(settings: object, track: MediaInfo): any; matchSettingsIndex(settings: object, track: MediaInfo): any; matchSettingsLang(settings: object, track: MediaInfo): any; matchSettingsRole(settings: object, track: MediaInfo): any; matchSettingsViewPoint(settings: object, track: MediaInfo): any; reset(): void; saveTextSettingsDisabled(): void; selectInitialTrack(type: string, tracks: MediaInfo[]): MediaInfo; setConfig(config: object): void; setInitialMediaSettingsForType(type: string, streamInfo: StreamInfo): void; setInitialSettings(type: string, value: object): void; setTrack(track: MediaInfo, options: object): void; } export interface MediaSourceController { attachMediaSource(videoModel: object): string; createMediaSource(): MediaSource; detachMediaSource(videoModel: object): void; setDuration(value: object): void; setSeekable(start: number, end: number): void; signalEndOfStream(source: any): void; } export interface PlaybackController { computeAndSetLiveDelay(fragmentDuration: number, manifestInfo: IManifestInfo): number; getAvailabilityStartTime(): number; getBufferLevel(filterList?: any[]): number | null; getCurrentLiveLatency(): number; getEnded(): boolean | null; getInitialCatchupModeActivated(): boolean; getIsDynamic(): boolean; getIsManifestUpdateInProgress(): boolean; getLiveDelay(): number; getLowLatencyModeEnabled(): boolean; getOriginalLiveDelay(): number; getPlaybackRate(): number | null; getPlaybackStalled(): boolean; getPlayedRanges(): TimeRanges | null; getStreamController(): object; getStreamEndTime(sInfo: StreamInfo): number; getTime(): number | null; getTimeToStreamEnd(sInfo?: StreamInfo): number; initialize(sInfo: StreamInfo, periodSwitch: boolean): void; isPaused(): boolean | null; isProgressing(): Promise<any>; isSeeking(): boolean | null; isStalled(): boolean | null; pause(): void; play(): void; reset(): void; seek(time: number, stickToBuffered: boolean, internal: boolean): void; seekToCurrentLive(stickToBuffered?: boolean, internal?: boolean, adjustLiveDelay?: boolean): void; seekToOriginalLive(stickToBuffered?: boolean, internal?: boolean, adjustLiveDelay?: boolean): void; setConfig(config: object): void; updateCurrentTime(mediaType?: MediaType): void; } export interface ScheduleController { clearScheduleTimer(): void; getBufferTarget(): number; getStreamId(): string; getSwitchTrack(): any; getTimeToLoadDelay(): number; getType(): string; initialize(_hasVideoTrack: boolean): void; reset(): void; setCheckPlaybackQuality(value: object): void; setInitSegmentRequired(value: object): void; setLastInitializedRepresentationId(value: number): void; setSwitchTrack(value: object): void; setTimeToLoadDelay(value: object): void; startScheduleTimer(value: object): void; } export interface StreamController { addDVRMetric(): void; getActiveStream(): object; getActiveStreamInfo(): StreamInfo | null; getActiveStreamProcessors(): any[]; getAutoPlay(): boolean; getHasMediaOrInitialisationError(): boolean; getInitialPlayback(): any; getIsStreamSwitchInProgress(): boolean; getStreamById(id: string): object | null; getStreamForTime(time: number): object | null; getStreams(): any[]; getTimeRelativeToStreamId(time: number, id: string): number | null; hasAudioTrack(): void; hasVideoTrack(): void; initialize(autoPl: any, protData: object): void; load(url: string, startTime?: number): void; loadWithManifest(manifest: object): void; refreshManifest(): void; reset(): void; setConfig(config: object): void; setProtectionData(protData: object): void; switchToVideoElement(seekTime: number): void; } export interface ThroughputController { getArithmeticMean(dict: ThroughputDictEntry[], sampleSize: number): number getAverageLatency(mediaType: MediaType, calculationMode: string, sampleSize: number): number getAverageThroughput(mediaType: MediaType, calculationMode: string, sampleSize: number): number getByteSizeWeightedArithmeticMean(dict: ThroughputDictEntry[], sampleSize: number): number getByteSizeWeightedHarmonicMean(dict: ThroughputDictEntry[], sampleSize: number): number getDateWeightedArithmeticMean(dict: ThroughputDictEntry[], sampleSize: number): number getDateWeightedHarmonicMean(dict: ThroughputDictEntry[], sampleSize: number): number getEwma(dict: ThroughputEwmaDictEntry[], halfLife: object, useMin: boolean): number getHarmonicMean(dict: ThroughputDictEntry[], sampleSize: number): number getRawThroughputData(mediaType: MediaType): number getSafeAverageThroughput(mediaType: MediaType, calculationMode: string, sampleSize: number): number getZlema(dict: ThroughputDictEntry[], sampleSize: number): number initialize(): void; reset(): void; setConfig(config: object): void; } export interface TimeSyncController { attemptSync(tSources: number[], isDynamic: boolean): void; initialize(): void; setConfig(config: object): void; reset(): void; } export interface XlinkController { reset(): void; resolveManifestOnLoad(mpd: Mpd): void; setParser(value: object): void; } /** * Streaming - Metrics - Controllers **/ export interface MetricsCollectionController { reset(): void; } export interface MetricsController { initialize(metricsEntry: object): void; reset(): void; } export interface MetricsHandlersController { initialize(metrics: object[], reportingController: ReportingController): void; reset(): void; } export interface RangeController { initialize(rs: object[]): void; isEnabled(): boolean; reset(): void; } export interface ReportingController { initialize(rangeController: RangeController): void; report(type: string, vos: any[]): void; reset(): void; } /** * Streaming - Metrics - Metrics - Handlers **/ export interface BufferLevelHandler { initialize(basename: string, rc: RangeController, n_ms: string): void; handleNewMetric(metric: any, vo: any, type: string): void; reset(): void; } export interface DVBErrorsHandler { initialize(unused: any, rc: RangeController): void; //unused does nothing handleNewMetric(metric: any, vo: any): void; reset(): void; } export interface GenericMetricHandler { initialize(name: string, rc: RangeController): void; handleNewMetric(metric: any, vo: any): void; reset(): void; } export interface HttpListHandler { initialize(basename: string, rc: RangeController, n_ms: string, requestType: string): void; handleNewMetric(metric: any, vo: any): void; reset(): void; } /** * Streaming - Metrics - Metrics **/ export interface MetricsHandlerFactory { create(listType: string, reportingController: ReportingController): void; register(key: string, handler: object): void; unregister(key: string): void; } /** * Streaming - Metrics - Reporting - Reporters **/ export interface DVBReporting { initialize(entry: object, rc: RangeController): void; report(type: string, vos: any[]): void; reset(): void; } /** * Streaming - Metrics - Reporting **/ export interface ReportingFactory { create(entry: object, reportingController: ReportingController): void; register(schemeIdUri: string, moduleName: string): void; unregister(schemeIdUri: string): void; } /** * Streaming - Metrics - utils **/ export interface DVBErrorsTranslator { initialize(): void; reset(): void; } export interface HandlerHelpers { // Exports nothing } export interface ManifestParsing { getMetrics(manifest: object): object[]; } export interface MetricSerialiser { serialise(metric: object): string; } export interface RNG { random(min: number, max: number): number; } /** * Streaming - Metrics - Vo **/ export class DVBErrors { errorcode: string | null; ipaddress: string | null; mpdurl: string | null; servicelocation: string | null; terror: Date | null; url: string | null; BASE_URL_CHANGED: 'F00'; BECAME_REPORTER: 'S00'; CONNECTION_ERROR: 'C03'; CONNECTION_REFUSED: 'C02'; CORRUPT_MEDIA_ISOBMFF: 'M00'; CORRUPT_MEDIA_OTHER: 'M01'; DNS_RESOLUTION_FAILED: 'C00'; HOST_UNREACHABLE: 'C01'; SSL_CONNECTION_FAILED_PREFIX: 'SSL'; } export interface Metrics { metrics: string; Range: any[]; Reporting: any[]; } export interface Range { _useWallClockTime: boolean; duration: number; starttime: number; } export interface Reporting { DEFAULT_DVB_PROBABILITY: 1000; dvbProbability: number; dvbReportingUrl: string; schemeIdUri: string; value: string; } /** * Streaming - Metrics **/ export interface MetricsReporting { createMetricsReporting(config: object): void; getMetricsHandlerFactory(): MetricsHandlerFactory; getReportingFactory(): ReportingFactory; } export class MetricsReportingEvents extends EventsBase { BECAME_REPORTING_PLAYER: 'internal_becameReportingPlayer'; CMCD_DATA_GENERATED: 'cmcdDataGenerated'; METRICS_INITIALISATION_COMPLETE: 'internal_metricsReportingInitialized'; } /** * Streaming - Models **/ export interface AastLowLatencyThroughputModel { addMeasurement(request: HTTPRequest, chunkMeasurements: any[], requestTimeMs: number, throughputCapacityDelayMS: number): void; getEstimatedDownloadDurationMS(request: HTTPRequest): number; getThroughputCapacityDelayMS(request: HTTPRequest, currentBufferLevelMS: number): number; setup(): void; } export interface BaseURLTreeModel { getBaseUrls(root: any): BaseURL[]; getForPath(path: any): any; invalidateSelectedIndexes(serviceLocation: string): void; reset(): void; setConfig(config: object): void; update(manifest: object): void; } export interface CmcdModel { getCmcdData(request: HTTPRequest): object; getCmcdParametersFromManifest(): CMCDParameters; getHeaderParameters(request: HTTPRequest): object | null; getQueryParameter(request: HTTPRequest): { key: string, finalPayloadString: string } | null; initialize(): void; isCmcdEnabled(): boolean; reset(): void; setConfig(config: object): void; } export interface CmsdModel { getEstimatedThroughput(type: string): number; getMaxBitrate(type: string): number; getResponseDelay(type: string): number; getRoundTripTime(type: string): number; initialize(): void; // NOT IMPLEMENTED! parseResponseHeader(responseHeaders: object, mediaType: MediaType): void; reset(): void; setConfig(): void; // NOT IMPLEMENTED! } export interface CustomParametersModel { addAbrCustomRule(type: string, rulename: string, rule: object): void; addRequestInterceptor(interceptor: Function): void; addResponseInterceptor(interceptor: Function): void; addUTCTimingSource(schemeIdUri: string, value: string): void; clearDefaultUTCTimingSources(): void; getAbrCustomRules(): Array<object>; getCustomCapabilitiesFilters(): Array<CapabilitiesFilterFunction>; getCustomInitialTrackSelectionFunction(): Function; getLicenseRequestFilters(): Array<Function>; getLicenseResponseFilters(): Array<Function>; getRequestInterceptors(): void; getResponseInterceptors(): void; getUTCTimingSources(): Array<object>; getXHRWithCredentialsForType(type: string): any; registerCustomCapabilitiesFilter(filter: CapabilitiesFilterFunction): void; registerLicenseRequestFilter(filter: Function): void; registerLicenseResponseFilter(filter: Function): void; removeAbrCustomRule(ruleName: string): void; removeAllAbrCustomRule(): void; removeRequestInterceptor(interceptor: Function): void; removeResponseInterceptor(interceptor: Function): void; removeUTCTimingSource(schemeIdUri: string, value: string): void; reset(): void; resetCustomInitialTrackSelectionFunction(): void; restoreDefaultUTCTimingSources(): void; setConfig(): void; // NOT IMPLEMENTED setCustomInitialTrackSelectionFunction(customFunc: Function): void; setXHRWithCredentialsForType(type: string, value: string): void; unregisterCustomCapabilitiesFilter(filter: CapabilitiesFilterFunction): void; unregisterLicenseRequestFilter(filter: Function): void; unregisterLicenseResponseFilter(filter: Function): void } export interface FragmentModel { abortRequests(): void; executeRequest(request: HTTPRequest): void; getRequests(filter: any): HTTPRequest[]; getStreamId(): string; getType(): string; isFragmentLoaded(request: HTTPRequest): boolean; isFragmentLoadedOrPending(request: HTTPRequest): boolean; removeExecutedRequestAfterTime(time: number): boolean; removeExecutedRequestsBeforeTime(time: number): boolean; reset(): void; resetInitialSettings(): void; syncExecutedRequestsWithBufferedRange(bufferedRanges: Range[], streamDuration: number): void; } export interface ManifestModel { getValue(): object; setValue(value: object): void; } export interface MediaPlayerModel { getAbrBitrateParameter(field: string, mediaType: string): object | -1; getBufferTimeDefault(): number; getCatchupMaxDrift(): number; getCatchupModeEnabled(): boolean; getCatchupPlaybackRates(log: any): number; getFastSwitchEnabled(): boolean; getInitialBufferLevel(): number; getRetryAttemptsForType(type: string): number; getRetryIntervalsForType(type: string): any; reset(): void; setConfig(config: object): void; } export interface MetricsModel { config: object; addBufferLevel(mediaType: MediaType, t: Date, level: number): void; addBufferState(mediaType: MediaType, state: string, target: number): void; addDVBErrors(vo: any): void; addDVRInfo(mediaType: MediaType, currentTime: number, mpd: Mpd, range: Range): void; addDroppedFrames(mediaType: MediaType, quality: number): void; addHttpRequest(request: HTTPRequest, response: object, traces: object, cmsd: object): void; addManifestUpdate(mediaType: MediaType, type: string, requestTime: number, fetchTime: number): void; addManifestUpdateRepresentationInfo(manifestUpdate: ManifestUpdate, representation: Representation, mediaType: MediaType): void; addManifestUpdateStreamInfo(manifestUpdate: ManifestUpdate, id: string, index: number, start: number, duration: number): void; addPlayList(vo: any): void; addRepresentationSwitch(mediaType: MediaType, t: Date, mt: Date, to: string, lto: string): void; addRequestsQueue(mediaType: MediaType, loadingRequests: any[], executedRequests: any[]): void; addSchedulingInfo(mediaType: MediaType, t: number, startTime: number, availabilityStartTime: number, duration: number, quality: number, range: Range, state: string): void; clearAllCurrentMetrics(): void; clearCurrentMetricsForType(type: string): void; getMetricsFor(type: string, readOnly: boolean): object; updateManifestUpdateInfo(manifestUpdate: ManifestUpdate, updatedFields: any[]): void; } export interface ThroughputModel { addEntry(mediaType: MediaType, httpRequest: HTTPRequest): void; getThroughputDict(mediaType: MediaType): ThroughputDictEntry; getEwmaThroughputDict(mediaType: MediaType): ThroughputEwmaDictEntry; getEwmaLatencyDict(mediaType: MediaType): ThroughputEwmaDictEntry; getEwmaHalfLife(mediaType: MediaType): object; getLatencyDict(mediaType: MediaType): ThroughputDictEntry; reset(): void; } export interface URIFragmentModel { getURIFragmentData(): URIFragmentData; initialize(uri: string): void; } interface VideoModel { addEventListener(): void; addTextTrack(kind: TextTrackType, label: string | number | undefined, isTTML: boolean, isEmbedded: boolean): TextTrackInfo; appendChild(childElement: any): void; getBufferRange(): TimeRanges | null; getClientHeight(): number; getClientWidth(): number; getElement(): HTMLVideoElement | HTMLAudioElement; getEnded(): boolean | null; getPlaybackQuality(): number; getPlaybackRate(): number | null; getPlayedRanges(): TimeRanges | null; getReadyState(): number; getSource(): string | null; getTTMLRenderingDiv(): HTMLDivElement | null; getTextTrack(kind: TextTrackType, label: string | number | undefined, isTTML: boolean, isEmbedded: boolean): TextTrackInfo | null; getTextTracks(): TextTrackList[]; getTime(): number | null; getVideoHeight(): number; getVideoRelativeOffsetLeft(): number; getVideoRelativeOffsetTop(): number; getVideoWidth(): number; getVttRenderingDiv(): HTMLDivElement | null; initialize(): void; isPaused(): void; isSeeking(): void; isStalled(): boolean; onPlaying(): void; pause(): void; play(): void; removeChild(childElement: any): void; removeEventListener(): void; reset(): void; setDisableRemotePlayback(value: boolean): void; setElement(value: HTMLVideoElement | HTMLAudioElement): void; setPlaybackRate(value: number, ignoreReadyState?: boolean): void; setSource(source: string): void; setStallState(type: MediaType, state: boolean): void; setTTMLRenderingDiv(div: HTMLDivElement): void; setVttRenderingDiv(div: HTMLDivElement): void; setcurrentTime(currentTime: number, stickToBuffered: boolean): void; stallStream(type: MediaType, isStalled: boolean): void; waitForReadyState(targetReadyState: number, callback: () => any): void; } /** * Streaming - Net **/ export interface FetchLoader { abort(): void; calculateDownloadedTime(downloadedData: any, bytesReceived: any): number | null; load(httpRequest: HTTPRequest, httpResponse: object): void; reset(): void; setup(cfg: object): void; } export interface HTTPLoader { cfg: object; abort(): void; load(config: object): void; reset(): void; resetInitialSettings(): void; setConfig(config: object): void; } export interface SchemeLoaderFactory { getLoader(url: string): HTTPLoader; registerLoader(scheme: string, loader: any): void; reset(): void; unregisterAllLoader(): void; unregisterLoader(scheme: string): void; } export interface URLLoader { abort(): void; load(config: object): any; reset(): void; resetInitialSettings(): void; } export interface XHRLoader { abort(request: HTTPRequest): void; getXhr(httpRequest: CommonMediaRequest, httpResponse: CommonMediaResponse): boolean; load(httpRequest: HTTPRequest): HTTPRequest; reset(): void; resetInitialSettings(): void; } /** * Streaming - Protection - Controllers **/ interface ProtectionController { areKeyIdsExpired(normalizedKeyIds: Array<string | number>): boolean; areKeyIdsUsable(normalizedKeyIds: Array<string | number>): boolean; clearMediaInfoArray(): void; closeKeySession(sessionToken: SessionToken): void; createKeySession(keySystemInfo: KeySystemInfo): void; getKeySystems(): any[]; getSupportedKeySystemMetadataFromContentProtection(cps: object[]): object[]; handleKeySystemFromManifest(): void; initializeForMedia(mediaInfo: MediaInfo): void; loadKeySession(keySystemInfo: KeySystemInfo): void; removeKeySession(sessionToken: SessionToken): void; reset(): void; setKeySystems(keySystems: KeySystem[]): void; setMediaElement(element: HTMLMediaElement): void; setProtectionData(data: object): void; setRobustnessLevel(level: string): void; setServerCertificate(serverCertificate: ArrayBuffer): void; setSessionType(value: string): void; stop(): void; updateKeyStatusesMap(e: object): void; } export interface ProtectionKeyController { getKeySystemBySystemString(systemString: string): KeySystem | null; getKeySystems(): KeySystem[]; getLicenseServerModelInstance(keySystem: KeySystem, protData: ProtectionData, messageType: string): any | null; getSupportedKeySystemMetadataFromContentProtection(cps: object[], protDataSet: ProtectionDataSet, sessionType: string): object[]; getSupportedKeySystemMetadataFromSegmentPssh(initData: ArrayBuffer, protDataSet: ProtectionDataSet, sessionType: string): object[]; initDataEquals(initData1: ArrayBuffer, initData2: ArrayBuffer): boolean; initialize(): void; isClearKey(keySystem: KeySystem): boolean; processClearKeyLicenseRequest(clearKeySystem: KeySystem, ProtectionData: ProtectionData, message: ArrayBuffer): ClearKeyKeySet | null; setConfig(config: object): void; setKeySystems(newKeySystems: KeySystem[]): void; setProtectionData(protectionDataSet: ProtectionDataSet): ProtectionData; } /** * Streaming - Protection - Drm **/ export interface KeySystem { schemeIdURI: string; systemString: string; uuid: string; getCDMData(cdmData: string | null): ArrayBuffer | null; getInitData(cp: object, cencContentProtection: object | null): ArrayBuffer | null; getLicenseRequestFromMessage(message: ArrayBuffer): Uint8Array | null; getLicenseServerURLFromInitData(initData: ArrayBuffer): string | null; getRequestHeadersFromMessage(message: ArrayBuffer): object | null; getSessionId(): string | null; } export interface KeySystemClearKey { uuid: string; schemeIdURI: string; systemString: string; getCDMData(): null; getClearKeysFromProtectionData(protectionData: ProtectionData, message: ArrayBuffer): ClearKeyKeySet; getInitData(cp: object, cencContentProtection: object | null): ArrayBuffer | null; getLicenseRequestFromMessage(message: ArrayBuffer): Uint8Array | null; getLicenseServerURLFromInitData(): null; getRequestHeadersFromMessage(): object; } export interface KeySystemPlayReady { uuid: string; schemeIdURI: string; systemString: string; getCDMData(cdmData: string | null): ArrayBuffer | null; getInitData(cpData: object): ArrayBuffer; getLicenseRequestFromMessage(message: ArrayBuffer): Uint8Array | null; getLicenseServerURLFromInitData(initData: ArrayBuffer): string | null; getRequestHeadersFromMessage(message: ArrayBuffer): object; setPlayReadyMessageFormat(format: string): void; } export interface KeySystemW3CClearKey { uuid: string; systemString: string; schemeIdURI: string; getCDMData(): null; getClearKeysFromProtectionData(protectionData: ProtectionData, message: ArrayBuffer): ClearKeyKeySet; getInitData(cp: object): ArrayBuffer | null; getLicenseRequestFromMessage(message: ArrayBuffer): Uint8Array | null; getLicenseServerURLFromInitData(): null; getRequestHeadersFromMessage(): null; } export interface KeySystemWidevine { uuid: string; schemeIdURI: string; systemString: string; getCDMData(): null; getInitData(cp: object): ArrayBuffer | null; getLicenseRequestFromMessage(message: ArrayBuffer): Uint8Array | null; getLicenseServerURLFromInitData(): null; getRequestHeadersFromMessage(): null; } /** * Streaming - Protection - Errors **/ interface ProtectionErrors { KEY_SESSION_CREATED_ERROR_CODE: 113; KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE: 110; KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE: 112; MEDIA_KEYERR_CLIENT_CODE: 102; MEDIA_KEYERR_CODE: 100; MEDIA_KEYERR_DOMAIN_CODE: 106; MEDIA_KEYERR_HARDWARECHANGE_CODE: 105; MEDIA_KEYERR_OUTPUT_CODE: 104; MEDIA_KEYERR_SERVICE_CODE: 103; MEDIA_KEYERR_UNKNOWN_CODE: 101; MEDIA_KEY_MESSAGE_ERROR_CODE: 107; MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE: 114; MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE: 108; MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE: 111; SERVER_CERTIFICATE_UPDATED_ERROR_CODE: 109; KEY_SESSION_CREATED_ERROR_MESSAGE: 'DRM: unable to create session! --'; KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE: 'DRM: KeyStatusChange error! -- License has expired'; KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE: 'DRM: KeySystem Access Denied! -- '; MEDIA_KEYERR_CLIENT_MESSAGE: 'The Key System could not be installed or updated.'; MEDIA_KEYERR_DOMAIN_MESSAGE: 'An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.'; MEDIA_KEYERR_HARDWARECHANGE_MESSAGE: 'A hardware configuration change caused a content protection error.'; MEDIA_KEYERR_OUTPUT_MESSAGE: 'There is no available output device with the required characteristics for the content protection system.'; MEDIA_KEYERR_SERVICE_MESSAGE: 'The message passed into update indicated an error from the license service.'; MEDIA_KEYERR_UNKNOWN_MESSAGE: 'An unspecified error occurred. This value is used for errors that don\'t match any of the other codes.'; MEDIA_KEY_MESSAGE_ERROR_MESSAGE: 'Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!'; MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE: 'DRM: licenser error! --'; MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE: 'DRM: Empty key message from CDM'; MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE: 'DRM: No license server URL specified!'; SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE: 'Error updating server certificate -- '; } /** * Streaming - Protection - Models **/ export interface DefaultProtectionModel { closeKeySession(sessionToken: SessionToken): void; createKeySession(ksInfo: KeySystemInfo): any; getAllInitData(): ArrayBuffer[]; getSessionTokens(): any[]; loadKeySession(ksInfo: KeySystemInfo): void; removeKeySession(sessionToken: SessionToken): void; requestKeySystemAccess(ksConfigurations: object[]): Promise<any>; reset(): void; selectKeySystem(keySystemAccess: KeySystemAccess): Promise<any>; setMediaElement(mediaElement: HTMLMediaElement): void; setServerCertificate(serverCertificate: ArrayBuffer): void; stop(): void; updateKeySession(sessionToken: SessionToken, message: ArrayBuffer): void; } export interface ProtectionModel_01b { closeKeySession(sessionToken: SessionToken): void; createKeySession(ksInfo: KeySystemInfo): any; getAllInitData(): ArrayBuffer[]; getSessionTokens(): any[]; loadKeySession(): void; removeKeySession(): void; requestKeySystemAccess(ksConfigurations: object[]): Promise<any>; reset(): void; selectKeySystem(keySystemAccess: any): Promise<any>; setMediaElement(mediaElement: HTMLMediaElement): void; setServerCertificate(): void; stop(): void; updateKeySession(sessionToken: SessionToken, message: ArrayBuffer): void; } export interface ProtectionModel_3Fe2014 { closeKeySession(sessionToken: SessionToken): void; createKeySession(ksInfo: KeySystemInfo): any; getAllInitData(): ArrayBuffer[]; getSessionTokens(): any[]; loadKeySession(): void; removeKeySession(): void; requestKeySystemAccess(ksConfigurations: object[]): Promise<any>; reset(): void; selectKeySystem(keySystemAccess: any): Promise<any>; setMediaElement(mediaElement: HTMLMediaElement): void; setServerCertificate(): void; stop(): void; updateKeySession(sessionToken: SessionToken, message: ArrayBuffer): void; } export interface ProtectionModel { closeKeySession(sessionToken: SessionToken): void; createKeySession(initData: ArrayBuffer, protData: ProtectionData, sessionType: string): void; getAllInitData(): ArrayBuffer[]; loadKeySession(sessionId: string, initData: ArrayBuffer): void; removeKeySession(sessionToken: SessionToken): void; requestKeySystemAccess(ksConfigurations: object[]): Promise<any>; reset(): void; selectKeySystem(keySystemAccess: KeySystemAccess): Promise<any>; setMediaElement(mediaElement: HTMLMediaElement): void; setServerCertificate(serverCertificate: ArrayBuffer): void; stop(): void; updateKeySession(sessionToken: SessionToken, message: ArrayBuffer): void; } /** * Streaming - Protection - Server **/ export interface ClearKey { getErrorResponse(serverResponse: object): string; getHTTPMethod(): 'POST'; getLicenseMessage(serverResponse: object): ClearKeyKeySet; getResponseType(): 'json'; getServerURLFromMessage(url: string): string; } export interface DRMToday { getErrorResponse(serverResponse: object): string; getHTTPMethod(): 'POST'; getLicenseMessage(serverResponse: object, keySystemStr: string): any; getResponseType(keySystemStr: string): string; getServerURLFromMessage(url: string): string; } export interface LicenseServer { getErrorResponse(serverResponse: object): string; getHTTPMethod(messageType: string): string; getLicenseMessage(serverResponse: object, keySystemStr: string): ArrayBuffer | null; getResponseType(keySystemStr: string, messageType: string): string; getServerURLFromMessage(url: string, message: ArrayBuffer, messageType: string): string; } export interface PlayReady { getErrorResponse(serverResponse: object): string; getHTTPMethod(): 'POST'; getLicenseMessage(serverResponse: object): any; getResponseType(): 'arraybuffer'; getServerURLFromMessage(url: string): string; } export interface Widevine { getErrorResponse(serverResponse: object): string; getHTTPMethod(): 'POST'; getLicenseMessage(serverResponse: object): object; getResponseType(): 'arraybuffer'; getServerURLFromMessage(url: string): string; } /** * Streaming - Protection - Vo **/ export interface ClearKeyKeySet { keyPairs: KeyPair[]; type: string; } export class KeyMessage { constructor(sessionToken: SessionToken, message: ArrayBuffer, defaultURL: string, messageType?: string); defaultURL: string; message: ArrayBuffer; messageType: string; sessionToken: SessionToken; } export class KeyPair { constructor(keyId: string, key: string) keyId: string; key: string; } export class KeySystemAccess { constructor(keySystem: KeySystem, ksConfiguration: KeySystemConfiguration) keySystem: KeySystem; ksConfiguration: KeySystemConfiguration; nativeMediaKeySystemAccessObject: object | null; selectedSystemString: string | null; } export class KeySystemConfiguration { constructor(audioCapabilities: MediaCapability[], videoCapabilities: MediaCapability[], distinctiveIdentifier: string, persistentState: string, sessionTypes: string[]) audioCapabilities: MediaCapability[]; distinctiveIdentifier: string; persistentState: string; sessionTypes: string[]; videoCapabilities: MediaCapability[]; } export class KeySystemMetadata { constructor(config: object); config: object; } export class LicenseRequest { constructor(url: string, method: string, responseType: string, headers: { [key: string]: string }, withCredentials: boolean, messageType: string, sessionId: string, data: ArrayBuffer) data: ArrayBuffer; headers: { [key: string]: string }; messageType: string; method: string; responseType: string; sessionId: string; url: string; withCredentials: boolean; } export class LicenseRequestComplete { constructor(message: Uint8Array, sessionToken: SessionToken, messageType: string) message: Uint8Array; messageType: string; sessionToken: SessionToken; } export class LicenseResponse { constructor(url: string, headers: object, data: ArrayBuffer) data: ArrayBuffer; headers: object; url: string; } export class MediaCapability { constructor(contentType: string, robustness: string) contentType: string; robustness: string; } export class NeedKey { constructor(initData: ArrayBuffer, initDataType: string) initData: ArrayBuffer; initDataType: string; } export interface ProtectionDataSet { [keySystemName: string]: ProtectionData; } export interface ProtectionData { /** * A license server URL to use with this key system. * When specified as a string, a single URL will be used regardless of message type. * When specified as an object, the object will have property names for each message * type with the corresponding property value being the URL to use for * messages of that type */ serverURL?: string | { [P in MediaKeyMessageType]: string }; /** HTTP headers to add to the license request */ httpRequestHeaders?: object; /** Wether license request is made using credentials */ withCredentials?: Boolean; /** Timeout (in ms) for the license requests */ httpTimeout?: number; /** The licenser server certificate as a BASE64 string representation of the binary stream (see https://www.w3.org/TR/encrypted-media/#dom-mediakeys-setservercertificate) */ serverCertificate?: string; /** The audio robustness level (see https://www.w3.org/TR/encrypted-media/#dom-mediakeysystemmediacapability-robustness) */ audioRobustness?: string; /** The video robustness level (see https://www.w3.org/TR/encrypted-media/#dom-mediakeysystemmediacapability-robustness) */ videoRobustness?: string; /** Distinctive identifier (see https://www.w3.org/TR/encrypted-media/#dom-mediakeysystemconfiguration-distinctiveidentifier) */ distinctiveIdentifier?: string; /** The session type (see https://www.w3.org/TR/encrypted-media/#dom-mediakeysessiontype) */ sessionType?: string; /** The session id (see https://www.w3.org/TR/encrypted-media/#session-id) */ sessionId?: string; /** * Defines a set of clear keys that are available to the key system. * Object properties are base64-encoded keyIDs (with no padding). * Corresponding property values are keys, base64-encoded (no padding). */ clearkeys?: { [key: string]: string }; /** Priority level of the key system to be selected (0 is the highest prority, -1 for undefined priority) */ priority?: number; } export interface SessionToken { session: MediaKeySession; initData: any; getExpirationTime(): number; getKeyStatuses(): MediaKeyStatusMap; getSessionId(): string; getSessionType(): string; } /** * Streaming - Protection **/ export interface ProtectionEvents extends EventsBase { KEY_ADDED: 'public_keyAdded'; KEY_ERROR: 'public_keyError'; KEY_MESSAGE: 'public_keyMessage'; KEY_SESSION_CLOSED: 'public_keySessionClosed'; KEY_SESSION_CREATED: 'public_keySessionCreated'; KEY_SESSION_REMOVED: 'public_keySessionRemoved'; KEY_SESSION_UPDATED: 'public_keySessionUpdated'; KEY_STATUSES_CHANGED: 'public_keyStatusesChanged'; KEY_SYSTEM_ACCESS_COMPLETE: 'public_keySystemAccessComplete'; KEY_SYSTEM_SELECTED: 'public_keySystemSelected'; LICENSE_REQUEST_COMPLETE: 'public_licenseRequestComplete'; LICENSE_REQUEST_SENDING: 'public_licenseRequestSending'; NEED_KEY: 'needkey'; PROTECTION_CREATED: 'public_protectioncreated'; PROTECTION_DESTROYED: 'public_protectiondestroyed'; SERVER_CERTIFICATE_UPDATED: 'serverCertificateUpdated'; TEARDOWN_COMPLETE: 'protectionTeardownComplete'; VIDEO_ELEMENT_SELECTED: 'videoElementSelected'; } export interface CommonEncryption { // Does not export anything } export interface Protection { createProtectionSystem(config: object): void; } export namespace Protection { export const events: ProtectionEvents; export const errors: ProtectionErrors; } /** * Streaming - Rules - ABR - LolP */ export interface LearningAbrController { getNextQuality(mediaInfo: MediaInfo, throughput: number, latency: number, bufferSize: number, playbackRate: number, currentQualityIndex: number, dynamicWeightSelector: object): any | null; reset(): void; } export interface LoLpQoEEvaluator { calculateSingleUseQoe(segmentBitrate: number, segmentRebufferTime: number, currentLatency: number, currentPlaybackSpeed: number): number; getPerSegmentQoe(): QoeInfo; logSegmentMetrics(segmentBitrate: number, segmentRebufferTime: number, currentLatency: number, currentPlaybackSpeed: number): void; reset(): void; setupPerSegmentQoe(sDuration: number, maxBrKbps: number, minBrKbs: number): void; } export interface LoLpRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; reset(): void; } export interface LoLpWeightSelector { findWeightVector(neurons: any[], currentLatency: number, currentBuffer: number, currentRebuffer: number, currentThroughput: number, playbackRate: number): number | null; getMinBuffer(): number; getNextBuffer(currentBuffer: number, downloadTime: number): number; getNextBufferWithBitrate(bitrateToDownload: number, currentBuffer: number, currentThroughput: number): number; getSegmentDuration(): number; } export class QoeInfo { bitrateSwitchSum: number; bitrateWSum: number; lastBitrate: number | null; latencyWSum: number; playbackSpeedWSum: number; rebufferWSum: number; totalQoe: number; type: string | null; weights: { bitrateReward: number | null, bitrateSwitchPenalty: number | null, rebufferPenalty: number | null, latencyPenalty: number | null, playbackSpeedPenalty: number | null }; } /** * Streaming - Rules -Abr **/ export interface AbandonRequestsRule { shouldAbandon(rulesContext: RulesContext): SwitchRequest; reset(): void; } export interface ABRRulesCollection { clearDataForStream(streamId: string | number): void; getAbandonFragmentRules(): object; getBestPossibleSwitchRequest(rulesContext: RulesContext): SwitchRequest; getBolaState(mediaType: MediaType): string; getMinSwitchRequest(srArray: any[]): SwitchRequest; getQualitySwitchRules(): any[]; initialize(): void; reset(): void; setBolaState(mediaType: MediaType, value: string): void; shouldAbandonFragment(rulesContext: RulesContext, streamId: string): SwitchRequest; } export interface BolaRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; reset(): void; } export interface DroppedFramesRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; } export interface InsufficientBufferRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; reset(): void; } export interface L2ARule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; reset(): void; } export interface SwitchHistoryRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; } export interface ThroughputRule { getSwitchRequest(rulesContext: RulesContext): SwitchRequest; reset(): void; } /** * Streaming - Rules **/ export interface DroppedFramesHistory { clearDataForStream(streamId: string): void; getFrameHistory(streamId: string): object; push(streamId: string, index: number, playbackQuality: number): void; reset(): void; } export interface RulesContext { getAbrController(): AbrController; getCurrentRequest(): SwitchRequest; getDroppedFramesHistory(): DroppedFramesHistory; getMediaInfo(): MediaInfo; getMediaType(): string; getRepresentation(): Representation; getScheduleController(): ScheduleController; getStreamInfo(): StreamInfo; getSwitchHistory(): SwitchRequestHistory; getThroughputController(): ThroughputController; getVideoModel(): VideoModel; } export interface SwitchRequest { priority: number | null; reason: string | null; representation: Representation; rule: any } export interface SwitchRequestHistory { clearForStream(streamId: string | number): object; getSwitchRequests(): SwitchRequest[]; push(switchRequest: SwitchRequest): void; reset(): void; } /** * Streaming - Text **/ export type TextTrackType = 'subtitles' | 'caption' | 'descriptions' | 'chapters' | 'metadata'; export type FontDownloadStatus = 'unloaded' | 'loaded' | 'error'; export interface FontInfo { fontFace: FontFace; fontFamily: string; isEssential: boolean; mimeType: string; status: FontDownloadStatus; streamId: string; trackId: number; url: string; } export interface DVBFonts { addFontsFromTracks(tracks: TextTrackInfo, streamId: string): void; downloadFonts(): void; getFonts(): FontInfo[]; getFontsForTrackId(trackId: number): FontInfo[]; reset(): void; } export interface EmbeddedTextHtmlRender { createHTMLCaptionsFromScreen(videoElement: HTMLVideoElement, startTime: number, endTime: number, captionScreen: any): any[]; } export interface NotFragmentTextBufferController { appendInitSegmentFromCache(representationId: string): void; clearBuffers(): Promise<any>; createBufferSink(mediaInfo: MediaInfo): void; dischargePreBuffer(): void; getAllRangesWithSafetyFactor(): []; getBuffer(): SourceBufferSink; getBufferControllerType(): string; getBufferLevel(): 0; getContinuousBufferTimeForTargetTime(): number; getIsBufferingCompleted(): boolean; getIsPruningInProgress(): false; getMediaSource(): MediaSource; getRangeAt(): null; getStreamId(): string; getType(): string; hasBufferAtTime(): boolean; initialize(source: MediaSource): void; prepareForPlaybackSeek(): Promise<any>; prepareForReplacementTrackSwitch(): Promise<any>; pruneAllSafely(): Promise<any>; pruneBuffer(): void; reset(): void; segmentRequestingCompleted(): void setIsBufferingCompleted(value: boolean): void; setMediaSource(value: MediaSource): void; setSeekTarget(): void; updateAppendWindow(): Promise<any>; updateBufferTimestampOffset(): Promise<any>; } export interface TextController { addEmbeddedTrack(streamInfo: StreamInfo, mediaInfo: MediaInfo): void; addMediaInfosToBuffer(streamInfo: StreamInfo, mInfos: MediaInfo[], mimeType: string | null, fragmentModel?: FragmentModel): void; createTracks(streamInfo: StreamInfo): void; deactivateStream(streamInfo: StreamInfo): void; enableForcedTextStreaming(enable: boolean): void; enableText(streamId: string, enable: boolean): void; getAllTracksAreDisabled(): boolean; getCurrentTrackIdx(streamId: string): number; getTextSourceBuffer(streamInfo: StreamInfo): TextSourceBuffer; initialize(): void; initializeForStream(streamInfo: StreamInfo): void; isTextEnabled(): boolean; reset(): void; setTextTrack(streamId: string, idx: number): void; } export interface TextSourceBuffer { abort(): void; addEmbeddedTrack(mediaInfo: MediaInfo): void; addMediaInfos(type: string, mInfos: MediaInfo[], fModel: FragmentModel): void; append(bytes: number[], chunk: DataChunk): void; getConfig(): object; getStreamId(): string; initialize(): void; remove(start?: number, end?: number): void; reset(): void; resetEmbedded(): void; resetMediaInfos(): void; setCurrentFragmentedTrackIdx(idx: number): void; } export interface TextTracks { addCaptions(trackIdx: number, timeOffset: number, captionData: object): void; addTextTrack(textTrackInfoVO: TextTrackInfo): void; createTracks(): void; deleteAllTextTracks(): void; deleteCuesFromTrackIdx(trackIdx: number, start: number, end: number): void; disableManualTracks(): void; getCurrentTrackIdx(): number; getCurrentTrackInfo(): TextTrackInfo; getStreamId(): string; getTrackByIdx(idx: number): object; getTrackIdxForId(trackId: string): number; initialize(): void; manualProcessing(time: number): void; setCurrentTrackIdx(idx: number): void; setModeForTrackIdx(idx: number, mode: string): void; } /** * Streaming - Thumbnail **/ export interface ThumbnailController { getCurrentTrack(): object; getCurrentTrackIndex(): number; getPossibleVoRepresentations(): Representation[]; getStreamId(): string; initialize(): void; provide(time: number, callback: Function): void; reset(): void; setTrackById(id: number): void; setTrackByIndex(index: number): void; } export interface ThumbnailTracks { addTracks(): void; getCurrentTrack(): any | null; getCurrentTrackIndex(): number; getRepresentations(): Representation[]; getThumbnailRequestForTime(time: number): Request; getTracks(): any[]; reset(): void; setTrackById(id: number): void; setTrackByIndex(index: number): void; } /** * Streaming - Utils - baseUrlResolution **/ export interface BasicSelector { select(baseURLs: BaseURL[]): BaseURL; } export interface ContentSteeringSelector { setConfig(config: object): void; selectBaseUrlIndex(data: any): number; reset(): void; } export interface DVBSelector { select(baseURLs: BaseURL[]): BaseURL[]; } /** * Streaming - Utils **/ export interface BaseURLSelector { chooseSelector(isDVB: boolean): void; reset(): void; select(data: ArrayBuffer): void; setConfig(config: object): void; } export interface BoxParser { findInitRange(data: ArrayBuffer): Range; findLastTopIsoBoxCompleted(types: string[], buffer: ArrayBuffer | Uint8Array, offset: number): IsoBoxSearchInfo; getMediaTimescaleFromMoov(ab: ArrayBuffer): number; getSamplesInfo(ab: ArrayBuffer): object; parse(data: ArrayBuffer): IsoFile | null; parsePayload(types: string[], buffer: ArrayBuffer, offset: number): IsoBoxSearchInfo; } export interface Capabilities { areKeyIdsExpired(mediaInfo: MediaInfo): boolean; areKeyIdsUsable(mediaInfo: MediaInfo): boolean; codecRootCompatibleWithCodec(codec1: string, codec2: string): boolean; isCodecSupportedBasedOnTestedConfigurations(basicConfiguration: object, type: string): boolean; isProtectionCompatible(previousStreamInfo: StreamInfo, newStreamInfo: StreamInfo): boolean; runCodecSupportCheck(basicConfiguration: object, type: string): Promise<void>; setConfig(config: object): void; setEncryptedMediaSupported(value: boolean): void; setProtectionController(data: any): void; supportsChangeType(): boolean; supportsEncryptedMedia(): boolean; supportsEssentialProperty(ep: object): boolean; supportsMediaSource(): boolean; } export type CapabilitiesFilterFunction = (representation: Representation) => boolean; export interface CapabilitiesFilter { filterUnsupportedFeatures(manifest: object): Promise<any>; setConfig(config: object): void; } export interface CustomTimeRanges { customTimeRangeArray: any[]; length: number; add(start: number, end: number): void; clear(): void; end(index: number): number; mergeRanges(rangeIndex1: number, rangeIndex2: number): boolean; remove(start: number, end: number): void; start(index: number): number; } export interface DefaultURLUtils { isHTTPS(url: string): boolean; isHTTPURL(url: string): boolean; isPathAbsolute(url: string): boolean; isRelative(url: string): boolean; isSchemeRelative(url: string): boolean; parseBaseUrl(url: string): string; parseOrigin(url: string): string; parseScheme(url: string): string; removeHostname(url: string): string; resolve(url: string, baseUrl: BaseURL): string; } export interface DOMStorage { getSavedBitrateSettings(type: string): number; getSavedMediaSettings(type: string): object; setSavedBitrateSettings(type: string, bitrate: number): void; setSavedMediaSettings(type: string, value: any): void; } export interface EBMLParser { consumeTag(tag: object, test: boolean): boolean; consumeTagAndSize(tag: object, test: boolean): boolean; getMatroskaCodedNum(retainMSB: boolean): number; getMatroskaFloat(size: number): number; getMatroskaUint(size: number): number; getPos(): number; moreData(): boolean; parseTag(tag: object): boolean; setPos(value: number): void; skipOverElement(tag: object, test: boolean): boolean; } export interface ErrorHandler { error(err: any): void; } export interface InitCache { extract(streamId: string, representationId: string): any | null; save(chunk: DataChunk): void; reset(): void; } export interface IsoFile { getBox(type: string): IsoBox; getBoxes(type: string): IsoBox[]; getLastBox(): IsoBox | null; setData(value: string): void; } export interface LocationSelector { // DOUBLED UP? selectBaseUrlIndex(data: any): number; setConfig(config: object): void; } export interface LocationSelector { reset(): void; select(mpdLocations: MpdLocation[]): MpdLocation | null; setConfig(config: object): void; } export interface ObjectUtils { areEqual(obj1: object, obj2: object): boolean; } export interface SupervisorTools { // BASE FILE DIFFERENT LAYOUT FROM ALL OTHERS checkInteger(parameter: any): void; checkIsVideoOrAudioType(type: string): void; checkParameterType(parameter: any, type: string): void; checkRange(parameter: any, min: number, max: number): void; } export interface TimeUtils { ntpToUTC(ntpTimeStamp: number): number; } export interface TTMLParser { parse(data: string, offsetTime: number, startTimeSegment: number, endTimeSegment: number, images: any[]): { start: number, end: number, type: string, cueID: string, isd: any, images: any[], embeddedImages: any[] }[]; } export interface URLUtils { isHTTPS(url: string): boolean; isHTTPURL(url: string): boolean; isPathAbsolute(url: string): boolean; isRelative(url: string): boolean; isSchemeRelative(url: string): boolean; parseBaseUrl(url: string): string; parseOrigin(url: string): string; parseScheme(url: string): string; registerUrlRegex(regex: RegExp, utils: object): void; removeHostname(url: string): string; resolve(url: string, baseUrl: BaseURL): string; } export interface VttCsutomRenderingParser { parse(data: any): any[]; } export interface VTTParser { getCaptionStyles(arr: Array<any>): object; parse(data: ArrayBuffer): { start: number, end: number, data: string, styles: any }; } /** * Streaming - Vo - Metrics **/ export interface BufferLevel { level: number; t: Date; } export interface BufferState { state: string; target: number; } export interface DroppedFrames { droppedFrames: number; time: Date; } export interface DVRInfo { manifestInfo: IManifestInfo; range: Range; time: number; } export interface HTTPRequest { _fileLoaderType: string; _mediaduration: number | null; _quality: number | null; _resourceTimingValues: object; _responseHeaders: any[] | null; _serviceLocation: string | null; _stream: MediaType; _tfinish: Date | null; actualurl: string | null; cmsd: object; interval: number | null; range: any[]; responsecode: number | null; tcpid: string | null; trace: any[]; trequest: Date | null; tresponse: Date | null; type?: string | null; url: string | null; } export interface ManifestUpdate { availabilityStartTime: number | null; buffered: object | null; clientTimeOffset: number; currentTime: number | null; fetchTime: number | null; latency: number; mediaType: MediaType | null; presentationStartTime: number; representationInfo: ManifestUpdateRepresentationInfo[]; requestTime: number | null; streamInfo: StreamInfo[]; type: string | null; } export interface ManifestUpdateRepresentationInfo { id: string | null; index: number | null; mediaType: MediaType | null; presentationTimeOffset: number | null; startNumber: number | null; } export interface PlayList { mstart: number | null; start: number | null; starttype: string | null; trace: any[]; } export interface RepresentationSwitch { lto: number | null; mt: number | null; t: number | null; to: number | null; } export interface PlayListTrace { duration: number | null; mstart: number | null; playbackspeed: number | null; representationid: string | null; start: number | null; stopreason: string | null; subreplevel: number | null; } export interface RequestSwitch { lto: string | null; mt: number | null; t: number | null; to: string | null; } export class RequestsQueue { /** * Array of all of the requests that have begun to load. * This request may not make it into the executed queue if it is abandon due to ABR rules for example. */ loadingRequests: any[]; /** * Array of the the requests that have completed */ executedRequests: any[]; } //eg. duration initialized with null; should be NaN? export interface SchedulingInfo { availabilityStartTime: number | null; duration: number | null; mediaType: MediaType | null; quality: number | null; range: Range | null; startTime: number | null; state: string | null; t: number | null; type: string | null; } export interface TCPConnection { dest: string | null; tclose: number | null; tconnect: number | null tcpid: string | null; topen: number | null; } /** * Streaming - Vo */ export class BitrateInfo { bitrate: number; height: number; mediaType: MediaType; qualityIndex: number; scanType: string; width: number; } interface DashJSError { code: number | null; data: unknown | null; message: string | null; } export interface DataChunk { bytes: number[] | null; duration: number; end: number; endFragment: object | null; index: number; mediaInfo: MediaInfo | null; quality: number; representationId: string | null; segmentType: string | null; start: number; streamId: string | null; } export class FragmentRequest { constructor(url: string); action: string; availabilityEndTime: number; availabilityStartTime: number; bytesLoaded: number; bytesTotal: number; delayLoadingTime: number; duration: number; firstByteDate: Date; index: number; mediaInfo: MediaInfo; mediaStartTime: number; mediaType: MediaType; quality: number; representationId: string; requestEndDate: Date | null; responseType: string; serviceLocation: string; startDate: Date; startTime: number; timescale: number; type: 'InitializationSegment' | 'MediaSegment' | null; url: string | null; wallStartTime: number | null; } export class HeadRequest extends FragmentRequest { constructor(url: string); checkforExistenceOnly: boolean; } export class HttpLoaderRequest { headers: object; loader: object; method: string; onerror: Function; onload: Function; onloadend: Function; ontimeout: Function; progress: Function; reader: object; request: FragmentRequest; response: object; timeout: number; url: string; withCredentials: boolean; } export class IsoBox { constructor(boxData: object); } export class IsoBoxSearchInfo { constructor(found: boolean, sizeOfLastCompletedBox: number, sizeOfLastFoundTargetBox: number, startOffsetOfLastCompletedBox: number, startOffsetOfLastFoundTargetBox: number, typeOfLastCompletedBox: string, typeOfLastTargetBox: string); found: boolean; sizeOfLastCompletedBox: number; sizeOfLastFoundTargetBox: number; startOffsetOfLastCompletedBox: number; startOffsetOfLastFoundTargetBox: number; typeOfLastCompletedBox: string | null; typeOfLastTargetBox: string | null; } export class MetricsList { BufferLevel: BufferLevel[]; BufferState: BufferState[]; DVBErrors: DVBErrors[]; DVRInfo: DVRInfo[]; DroppedFrames: DroppedFrames[]; HttpList: any[]; ManifestUpdate: ManifestUpdate[]; PlayList: PlayList[]; RepSwitchList: RequestSwitch[]; RequestsQueue: RequestsQueue | null; SchedulingInfo: SchedulingInfo; TcpList: TCPConnection[]; } export class MediaInfoSelectionInput { newMediaInfo: MediaInfo; newRepresentation: Representation | null previouslySelectedRepresentation: Representation | null; } export class TextRequest extends FragmentRequest { constructor(url: string, type: string); mediaType: MediaType; responseType: string; type: 'InitializationSegment' | 'MediaSegment' | null; url: string | null; } export class TextTrackInfo extends MediaInfo { captionData: CaptionData[] | null; defaultTrack: boolean; isEmbedded: boolean; isFragmented: boolean; isTTML: boolean; kind: string; label: string | null; } export interface Thumbnail { height: number; url: string; width: number; x: number; y: number; } export interface ThumbnailTrackInfo { bitrate: number; height: number; heightPerTile: number; id: string; segmentDuration: number; startNumber: number; templateUrl: string; tilesHor: number; tilesVert: number; timescale: number; width: number; widthPerTile: number; } export interface URIFragmentData { id: string | null; r: any | null; s: any | null; t: number | null; track: any | null; xywh: any | null; } /** * Streaming **/ export interface FragmentLoader { abort(): void; checkForExistence(request: Request): void; load(request: Request): void; reset(): void; resetInitialSettings(): void; } export interface FragmentSink { abort(): void; append(chunk: DataChunk): void; getAllBufferRanges(): any[]; remove(start?: number, end?: number): void; reset(): void; } export interface ManifestLoader { load(url: string, serviceLocation: string | null, queryParams: object | null): void; reset(): void; } export interface ManifestUpdater { getIsUpdating(): boolean; initialize(): void; refreshManifest(ignorePatch?: boolean): void; reset(): void; setConfig(config: object): void; setManifest(manifest: object): void; } export namespace MediaPlayer { export const events: MediaPlayerEvents; export const errors: MediaPlayerErrors; } export interface MediaPlayerFactory { create(): MediaPlayerClass; } export function MediaPlayer(): MediaPlayerFactory; export interface PreBufferSink { abort(): void; append(chunk: DataChunk): void; discharge(start?: number, end?: number): void; getAllBufferRanges(): TimeRanges; getBuffer(): PreBufferSink; remove(start: number, end: number): void; reset(): void; updateTimestampOffset(): void; waitForUpdateEnd(callback: Function): void; } export interface SourceBufferSink { abort(): Promise<any>; append(chunk: DataChunk, request?: Request): Promise<any>; changeType(codec: string): Promise<any>; getAllBufferRanges(): object; getBuffer(): Buffer; getSessionType(): string; getType(): string; getUsable(): boolean; initializeForFirstUse(streamInfo: StreamInfo, mInfo: MediaInfo, selectedRepresentation: Representation): void; initializeForStreamSwitch(mInfo: MediaInfo, selectedRepresentation: Representation, oldSourceBufferSink: SourceBufferSink): Promise<any>; remove(range: Range): Promise<any>; reset(): void; updateAppendWindow(sInfo: StreamInfo): void; updateTimestampOffset(mseTimeOffset: number): void; } export interface Stream { activate(mediaSource: MediaSource, previousBufferSinks: any[]): void; checkAndHandleCompletedBuffering(): void; deactivate(keepBuffers: boolean): void; getAdapter(): DashAdapter getDuration(): number; getHasAudioTrack(): boolean; getHasFinishedBuffering(): boolean getHasVideoTrack(): boolean; getId(): string; getIsActive(): boolean; getIsEndedEventSignaled(): boolean getPreloaded(): boolean getStartTime(): number; getStreamId(): string; getStreamInfo(): StreamInfo | null; getStreamProcessors(): any[]; getThumbnailController(): object; initialize(streamInfo: StreamInfo, protectionController: ProtectionController): void; isMediaCodecCompatible(newStream: Stream, previousStream: Stream | null): boolean; isProtectionCompatible(newStream: Stream): boolean prepareQualityChange(e: object): void prepareTrackChange(e: object): void reset(): void; setIsEndedEventSignaled(value: boolean): void setMediaSource(mediaSource: MediaSource): void; startPreloading(mediaSource: MediaSource, previousBuffers: any[], representationsFromPreviousPeriod: Representation[]): void; startScheduleControllers(): void updateData(updatedStreamInfo: StreamInfo): void; } export interface StreamProcessor { addMediaInfo(newMediaInfo: MediaInfo): void; checkAndHandleCompletedBuffering(): void; clearMediaInfoArray(): void; createBufferSinks(previousBufferSinks: any[]): Promise<any>; finalisePlayList(time: number, reason: string): void; getBuffer(): Buffer; getBufferController(): BufferController; getBufferLevel(): number; getFragmentModel(): FragmentModel; getMediaInfo(): MediaInfo; getMediaSource(): MediaSource; getRepresentationController(): RepresentationController; getScheduleController(): ScheduleController; getStreamId(): string; getStreamInfo(): StreamInfo; getType(): string; getVoRepresentation(quality: number): Representation; handleNewMediaInfo(mediaInfo: MediaInfo): void; initialize(mediaSource: MediaSource, hasVideoTrack: boolean, isFragmented: boolean): void; isBufferingCompleted(): boolean; isUpdating(): boolean; prepareInnerPeriodPlaybackSeeking(e: object): Promise<any>; prepareOuterPeriodPlaybackSeeking(): Promise<unknown>; prepareQualityChange(e: object): void; prepareTrackSwitch(previousBufferSinks: any[]): Promise<any>; probeNextRequest(): Request; reset(errored: boolean, keepBuffers: boolean): void; selectMediaInfo(selectionInput: object): Promise<any>; setExplicitBufferingTime(value: number): void; setMediaSource(mediaSource: MediaSource): void; updateStreamInfo(newStreamInfo: StreamInfo): Promise<any>; } export interface XlinkLoader { load(url: string, element: any, resolveObject: object): void; reset(): void; } export interface CaptionData { cueID?: string; data?: string; embeddedImages?: { [id: string]: string }; end: number; images?: string[]; isd?: object; start: number; styles?: { align?: string; line?: string; position?: string; size?: string; }; type?: string; } export type MetricType = 'ManifestUpdate' | 'RequestsQueue'; export type TrackSwitchMode = 'alwaysReplace' | 'neverReplace'; export type TrackSelectionMode = 'highestSelectionPriority' | 'highestBitrate' | 'firstTrack' | 'highestEfficiency' | 'widestRange'; export function supportsMediaSource(): boolean; export interface ClassConstructor { __dashjs_factory_name: string } export type Factory = (context: object) => { create: () => any } export type SingletonFactory = (context: object) => { getInstance: () => any } export interface Range { start: number; end: number; } export interface KeySystemInfo { cdmData?: ArrayBuffer; initData?: ArrayBuffer; keyId?: string, ks: KeySystem; protData?: ProtectionData sessionId?: string, sessionType?: string, } export type RequestFilter = (request: LicenseRequest) => Promise<any>; export type ResponseFilter = (response: LicenseResponse) => Promise<any>; }