src/types/events.ts
// eslint-disable-next-line import/no-duplicates
import type Fragment from '../loader/fragment';
// eslint-disable-next-line import/no-duplicates
import type { Part } from '../loader/fragment';
import type LevelDetails from '../loader/level-details';
import type { HlsUrlParameters, Level, LevelParsed } from './level';
import type { MediaPlaylist, MediaPlaylistType } from './media-playlist';
import type { Loader, LoaderContext, LoaderResponse, LoaderStats, PlaylistLevelType, PlaylistLoaderContext } from './loader';
import type { Track, TrackSet } from './track';
import type { SourceBufferName } from './buffer';
import type { ChunkMetadata } from './transmuxer';
import type LoadStats from '../loader/load-stats';
import type { ErrorDetails, ErrorTypes } from '../errors';
import type { MetadataSample, UserdataSample } from './demuxer';
import type AttrList from '../utils/attr-list';
import type { HlsListeners } from '../events';
export interface MediaAttachingData {
media: HTMLMediaElement
}
export interface MediaAttachedData {
media: HTMLMediaElement;
}
export interface BufferCodecsData {
video?: Track
audio?: Track
}
export interface BufferCreatedData {
tracks: TrackSet
}
export interface BufferAppendingData {
type: SourceBufferName
data: Uint8Array
frag: Fragment
part: Part | null
chunkMeta: ChunkMetadata
}
export interface BufferAppendedData {
chunkMeta: ChunkMetadata
frag: Fragment
part: Part | null
parent: PlaylistLevelType
timeRanges: {
audio?: TimeRanges
video?: TimeRanges
audiovideo?: TimeRanges
}
}
export interface BufferEOSData {
type: SourceBufferName
}
export interface BufferFlushingData {
startOffset: number
endOffset: number
type: SourceBufferName | null
}
export interface BufferFlushedData {
type: SourceBufferName
}
export interface ManifestLoadingData {
url: string
}
export interface ManifestLoadedData {
audioTracks: MediaPlaylist[]
captions?: MediaPlaylist[]
levels: LevelParsed[]
networkDetails: any
sessionData: Record<string, AttrList> | null
stats: LoaderStats
subtitles?: MediaPlaylist[]
url: string
}
export interface ManifestParsedData {
levels: Level[]
audioTracks: MediaPlaylist[]
subtitleTracks: MediaPlaylist[]
firstLevel: number
stats: LoaderStats
audio: boolean
video: boolean
altAudio: boolean
}
export interface LevelSwitchingData extends Omit<Level, '_urlId'> {
level: number;
}
export interface LevelSwitchedData {
level: number
}
export interface TrackLoadingData {
id: number
groupId: string
url: string
deliveryDirectives: HlsUrlParameters | null
}
export interface LevelLoadingData {
id: number
level: number
url: string
deliveryDirectives: HlsUrlParameters | null
}
export interface TrackLoadedData {
details: LevelDetails
id: number
groupId: string
networkDetails: any
stats: LoaderStats
deliveryDirectives: HlsUrlParameters | null
}
export interface LevelLoadedData {
details: LevelDetails
id: number
level: number
networkDetails: any
stats: LoaderStats
deliveryDirectives: HlsUrlParameters | null
}
export interface LevelUpdatedData {
details: LevelDetails
level: number
}
export interface LevelPTSUpdatedData {
details: LevelDetails,
level: Level,
drift: number,
type: string,
start: number,
end: number
}
export interface AudioTrackSwitchingData {
url: string
type: MediaPlaylistType | 'main'
id: number
}
export interface AudioTrackSwitchedData {
id: number
}
export interface AudioTrackLoadedData extends TrackLoadedData {}
export interface AudioTracksUpdatedData {
audioTracks: MediaPlaylist[]
}
export interface SubtitleTracksUpdatedData {
subtitleTracks: MediaPlaylist[]
}
export interface SubtitleTrackSwitchData {
url?: string
type?: MediaPlaylistType | 'main'
id: number
}
export interface SubtitleTrackLoadedData extends TrackLoadedData {}
export interface TrackSwitchedData {
id: number
}
export interface SubtitleFragProcessed {
success: boolean,
frag: Fragment
}
export interface FragChangedData {
frag: Fragment;
}
export interface FPSDropData {
currentDropped: number
currentDecoded: number
totalDroppedFrames: number
}
export interface FPSDropLevelCappingData {
droppedLevel: number
level: number
}
export interface ErrorData {
type: ErrorTypes
details: ErrorDetails
fatal: boolean
buffer?: number
bytes?: number
context?: PlaylistLoaderContext
error?: Error
event?: keyof HlsListeners | 'demuxerWorker'
frag?: Fragment
level?: number | undefined
levelRetry?: boolean
loader?: Loader<LoaderContext>
networkDetails?: any
mimeType?: string
reason?: string
response?: LoaderResponse
url?: string
parent?: PlaylistLevelType
err?: { // comes from transmuxer interface
message: string;
}
}
export interface SubtitleFragProcessedData {
success: boolean
frag: Fragment
error?: Error
}
export interface CuesParsedData {
type: 'captions' | 'subtitles',
cues: any,
track: string
}
interface NonNativeTextTrack {
_id?: string
label: any
kind: string
default: boolean
closedCaptions?: MediaPlaylist
subtitleTrack?: MediaPlaylist
}
export interface NonNativeTextTracksData {
tracks: Array<NonNativeTextTrack>
}
export interface InitPTSFoundData {
id: string
frag: Fragment
initPTS: number
timescale: number
}
export interface FragLoadingData {
frag: Fragment
part?: Part
targetBufferTime: number | null
}
export interface FragLoadEmergencyAbortedData {
frag: Fragment
part: Part | null
stats: LoaderStats
}
export interface FragLoadedData {
frag: Fragment
part: Part | null
payload: ArrayBuffer
networkDetails: unknown
}
export interface PartsLoadedData {
frag: Fragment
part: Part | null
partsLoaded?: FragLoadedData[]
}
export interface FragDecryptedData {
frag: Fragment
payload: ArrayBuffer
stats: {
tstart: number
tdecrypt: number
}
}
export interface FragParsingInitSegmentData {
}
export interface FragParsingUserdataData {
id: string,
frag: Fragment,
samples: UserdataSample[]
}
export interface FragParsingMetadataData {
id: string,
frag: Fragment,
samples: MetadataSample[]
}
export interface FragParsedData {
frag: Fragment,
part: Part | null
}
export interface FragBufferedData {
stats: LoadStats
frag: Fragment,
part: Part | null
id: string
}
export interface LevelsUpdatedData {
levels: Array<Level>
}
export interface KeyLoadingData {
frag: Fragment
}
export interface KeyLoadedData {
frag: Fragment
}
export interface LiveBackBufferData {
bufferEnd: number
}