Home Reference Source

src/types/events.ts

  1. // eslint-disable-next-line import/no-duplicates
  2. import type { Fragment } from '../loader/fragment';
  3. // eslint-disable-next-line import/no-duplicates
  4. import type { Part } from '../loader/fragment';
  5. import type { LevelDetails } from '../loader/level-details';
  6. import type { HlsUrlParameters, Level, LevelParsed } from './level';
  7. import type { MediaPlaylist, MediaPlaylistType } from './media-playlist';
  8. import type {
  9. Loader,
  10. LoaderContext,
  11. LoaderResponse,
  12. LoaderStats,
  13. PlaylistLevelType,
  14. PlaylistLoaderContext,
  15. } from './loader';
  16. import type { Track, TrackSet } from './track';
  17. import type { SourceBufferName } from './buffer';
  18. import type { ChunkMetadata } from './transmuxer';
  19. import type { LoadStats } from '../loader/load-stats';
  20. import type { ErrorDetails, ErrorTypes } from '../errors';
  21. import type { MetadataSample, UserdataSample } from './demuxer';
  22. import type { AttrList } from '../utils/attr-list';
  23. import type { HlsListeners } from '../events';
  24.  
  25. export interface MediaAttachingData {
  26. media: HTMLMediaElement;
  27. }
  28.  
  29. export interface MediaAttachedData {
  30. media: HTMLMediaElement;
  31. }
  32.  
  33. export interface BufferCodecsData {
  34. video?: Track;
  35. audio?: Track;
  36. }
  37.  
  38. export interface BufferCreatedData {
  39. tracks: TrackSet;
  40. }
  41.  
  42. export interface BufferAppendingData {
  43. type: SourceBufferName;
  44. frag: Fragment;
  45. part: Part | null;
  46. chunkMeta: ChunkMetadata;
  47. parent: PlaylistLevelType;
  48. data: Uint8Array;
  49. }
  50.  
  51. export interface BufferAppendedData {
  52. type: SourceBufferName;
  53. frag: Fragment;
  54. part: Part | null;
  55. chunkMeta: ChunkMetadata;
  56. parent: PlaylistLevelType;
  57. timeRanges: Partial<Record<SourceBufferName, TimeRanges>>;
  58. }
  59.  
  60. export interface BufferEOSData {
  61. type?: SourceBufferName;
  62. }
  63.  
  64. export interface BufferFlushingData {
  65. startOffset: number;
  66. endOffset: number;
  67. type: SourceBufferName | null;
  68. }
  69.  
  70. export interface BufferFlushedData {
  71. type: SourceBufferName;
  72. }
  73.  
  74. export interface ManifestLoadingData {
  75. url: string;
  76. }
  77.  
  78. export interface ManifestLoadedData {
  79. audioTracks: MediaPlaylist[];
  80. captions?: MediaPlaylist[];
  81. levels: LevelParsed[];
  82. networkDetails: any;
  83. sessionData: Record<string, AttrList> | null;
  84. stats: LoaderStats;
  85. subtitles?: MediaPlaylist[];
  86. url: string;
  87. }
  88.  
  89. export interface ManifestParsedData {
  90. levels: Level[];
  91. audioTracks: MediaPlaylist[];
  92. subtitleTracks: MediaPlaylist[];
  93. firstLevel: number;
  94. stats: LoaderStats;
  95. audio: boolean;
  96. video: boolean;
  97. altAudio: boolean;
  98. }
  99.  
  100. export interface LevelSwitchingData extends Omit<Level, '_urlId'> {
  101. level: number;
  102. }
  103.  
  104. export interface LevelSwitchedData {
  105. level: number;
  106. }
  107.  
  108. export interface TrackLoadingData {
  109. id: number;
  110. groupId: string;
  111. url: string;
  112. deliveryDirectives: HlsUrlParameters | null;
  113. }
  114.  
  115. export interface LevelLoadingData {
  116. id: number;
  117. level: number;
  118. url: string;
  119. deliveryDirectives: HlsUrlParameters | null;
  120. }
  121.  
  122. export interface TrackLoadedData {
  123. details: LevelDetails;
  124. id: number;
  125. groupId: string;
  126. networkDetails: any;
  127. stats: LoaderStats;
  128. deliveryDirectives: HlsUrlParameters | null;
  129. }
  130.  
  131. export interface LevelLoadedData {
  132. details: LevelDetails;
  133. id: number;
  134. level: number;
  135. networkDetails: any;
  136. stats: LoaderStats;
  137. deliveryDirectives: HlsUrlParameters | null;
  138. }
  139.  
  140. export interface LevelUpdatedData {
  141. details: LevelDetails;
  142. level: number;
  143. }
  144.  
  145. export interface LevelPTSUpdatedData {
  146. details: LevelDetails;
  147. level: Level;
  148. drift: number;
  149. type: string;
  150. frag: Fragment;
  151. start: number;
  152. end: number;
  153. }
  154.  
  155. export interface AudioTrackSwitchingData {
  156. id: number;
  157. name: string;
  158. groupId: string;
  159. type: MediaPlaylistType | 'main';
  160. url: string;
  161. }
  162.  
  163. export interface AudioTrackSwitchedData {
  164. id: number;
  165. }
  166.  
  167. export interface AudioTrackLoadedData extends TrackLoadedData {}
  168.  
  169. export interface AudioTracksUpdatedData {
  170. audioTracks: MediaPlaylist[];
  171. }
  172.  
  173. export interface SubtitleTracksUpdatedData {
  174. subtitleTracks: MediaPlaylist[];
  175. }
  176.  
  177. export interface SubtitleTrackSwitchData {
  178. id: number;
  179. name?: string;
  180. groupId?: string;
  181. type?: MediaPlaylistType | 'main';
  182. url?: string;
  183. }
  184.  
  185. export interface SubtitleTrackLoadedData extends TrackLoadedData {}
  186.  
  187. export interface TrackSwitchedData {
  188. id: number;
  189. }
  190.  
  191. export interface SubtitleFragProcessed {
  192. success: boolean;
  193. frag: Fragment;
  194. }
  195.  
  196. export interface FragChangedData {
  197. frag: Fragment;
  198. }
  199.  
  200. export interface FPSDropData {
  201. currentDropped: number;
  202. currentDecoded: number;
  203. totalDroppedFrames: number;
  204. }
  205.  
  206. export interface FPSDropLevelCappingData {
  207. droppedLevel: number;
  208. level: number;
  209. }
  210.  
  211. export interface ErrorData {
  212. type: ErrorTypes;
  213. details: ErrorDetails;
  214. fatal: boolean;
  215. buffer?: number;
  216. bytes?: number;
  217. context?: PlaylistLoaderContext;
  218. error?: Error;
  219. event?: keyof HlsListeners | 'demuxerWorker';
  220. frag?: Fragment;
  221. level?: number | undefined;
  222. levelRetry?: boolean;
  223. loader?: Loader<LoaderContext>;
  224. networkDetails?: any;
  225. mimeType?: string;
  226. reason?: string;
  227. response?: LoaderResponse;
  228. url?: string;
  229. parent?: PlaylistLevelType;
  230. err?: {
  231. // comes from transmuxer interface
  232. message: string;
  233. };
  234. }
  235.  
  236. export interface SubtitleFragProcessedData {
  237. success: boolean;
  238. frag: Fragment;
  239. error?: Error;
  240. }
  241.  
  242. export interface CuesParsedData {
  243. type: 'captions' | 'subtitles';
  244. cues: any;
  245. track: string;
  246. }
  247.  
  248. export interface NonNativeTextTrack {
  249. _id?: string;
  250. label: any;
  251. kind: string;
  252. default: boolean;
  253. closedCaptions?: MediaPlaylist;
  254. subtitleTrack?: MediaPlaylist;
  255. }
  256.  
  257. export interface NonNativeTextTracksData {
  258. tracks: Array<NonNativeTextTrack>;
  259. }
  260.  
  261. export interface InitPTSFoundData {
  262. id: string;
  263. frag: Fragment;
  264. initPTS: number;
  265. timescale: number;
  266. }
  267.  
  268. export interface FragLoadingData {
  269. frag: Fragment;
  270. part?: Part;
  271. targetBufferTime: number | null;
  272. }
  273.  
  274. export interface FragLoadEmergencyAbortedData {
  275. frag: Fragment;
  276. part: Part | null;
  277. stats: LoaderStats;
  278. }
  279.  
  280. export interface FragLoadedData {
  281. frag: Fragment;
  282. part: Part | null;
  283. payload: ArrayBuffer;
  284. networkDetails: unknown;
  285. }
  286.  
  287. export interface PartsLoadedData {
  288. frag: Fragment;
  289. part: Part | null;
  290. partsLoaded?: FragLoadedData[];
  291. }
  292.  
  293. export interface FragDecryptedData {
  294. frag: Fragment;
  295. payload: ArrayBuffer;
  296. stats: {
  297. tstart: number;
  298. tdecrypt: number;
  299. };
  300. }
  301.  
  302. export interface FragParsingInitSegmentData {}
  303.  
  304. export interface FragParsingUserdataData {
  305. id: string;
  306. frag: Fragment;
  307. samples: UserdataSample[];
  308. }
  309.  
  310. export interface FragParsingMetadataData {
  311. id: string;
  312. frag: Fragment;
  313. samples: MetadataSample[];
  314. }
  315.  
  316. export interface FragParsedData {
  317. frag: Fragment;
  318. part: Part | null;
  319. }
  320.  
  321. export interface FragBufferedData {
  322. stats: LoadStats;
  323. frag: Fragment;
  324. part: Part | null;
  325. id: string;
  326. }
  327.  
  328. export interface LevelsUpdatedData {
  329. levels: Array<Level>;
  330. }
  331.  
  332. export interface KeyLoadingData {
  333. frag: Fragment;
  334. }
  335.  
  336. export interface KeyLoadedData {
  337. frag: Fragment;
  338. }
  339.  
  340. export interface BackBufferData {
  341. bufferEnd: number;
  342. }
  343.  
  344. /**
  345. * Deprecated; please use BackBufferData
  346. */
  347. export interface LiveBackBufferData extends BackBufferData {}