hls.js.d.ts 129 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874
  1. export declare interface AbrComponentAPI extends ComponentAPI {
  2. firstAutoLevel: number;
  3. forcedAutoLevel: number;
  4. nextAutoLevel: number;
  5. readonly bwEstimator?: EwmaBandWidthEstimator;
  6. resetEstimator(abrEwmaDefaultEstimate: number): any;
  7. }
  8. export declare class AbrController extends Logger implements AbrComponentAPI {
  9. protected hls: Hls;
  10. private lastLevelLoadSec;
  11. private lastLoadedFragLevel;
  12. private firstSelection;
  13. private _nextAutoLevel;
  14. private nextAutoLevelKey;
  15. private audioTracksByGroup;
  16. private codecTiers;
  17. private timer;
  18. private fragCurrent;
  19. private partCurrent;
  20. private bitrateTestDelay;
  21. private rebufferNotice;
  22. bwEstimator: EwmaBandWidthEstimator;
  23. constructor(hls: Hls);
  24. resetEstimator(abrEwmaDefaultEstimate?: number): void;
  25. private initEstimator;
  26. protected registerListeners(): void;
  27. protected unregisterListeners(): void;
  28. destroy(): void;
  29. protected onManifestLoading(event: Events.MANIFEST_LOADING, data: ManifestLoadingData): void;
  30. private onLevelsUpdated;
  31. private onMaxAutoLevelUpdated;
  32. protected onFragLoading(event: Events.FRAG_LOADING, data: FragLoadingData): void;
  33. protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;
  34. protected onError(event: Events.ERROR, data: ErrorData): void;
  35. private getTimeToLoadFrag;
  36. protected onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;
  37. private _abandonRulesCheck;
  38. protected onFragLoaded(event: Events.FRAG_LOADED, { frag, part }: FragLoadedData): void;
  39. protected onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;
  40. private ignoreFragment;
  41. clearTimer(): void;
  42. get firstAutoLevel(): number;
  43. get forcedAutoLevel(): number;
  44. get nextAutoLevel(): number;
  45. private getAutoLevelKey;
  46. private getNextABRAutoLevel;
  47. private getStarvationDelay;
  48. private getBwEstimate;
  49. private findBestLevel;
  50. set nextAutoLevel(nextLevel: number);
  51. protected deriveNextAutoLevel(nextLevel: number): number;
  52. }
  53. export declare type ABRControllerConfig = {
  54. abrEwmaFastLive: number;
  55. abrEwmaSlowLive: number;
  56. abrEwmaFastVoD: number;
  57. abrEwmaSlowVoD: number;
  58. /**
  59. * Default bandwidth estimate in bits/s prior to collecting fragment bandwidth samples
  60. */
  61. abrEwmaDefaultEstimate: number;
  62. abrEwmaDefaultEstimateMax: number;
  63. abrBandWidthFactor: number;
  64. abrBandWidthUpFactor: number;
  65. abrMaxWithRealBitrate: boolean;
  66. maxStarvationDelay: number;
  67. maxLoadingDelay: number;
  68. };
  69. export declare type AssetListJSON = {
  70. ASSETS: Array<{
  71. URI: string;
  72. DURATION: string;
  73. }>;
  74. };
  75. export declare interface AssetListLoadedData {
  76. event: InterstitialEventWithAssetList;
  77. assetListResponse: AssetListJSON;
  78. networkDetails: any;
  79. }
  80. export declare interface AssetListLoadingData {
  81. event: InterstitialEventWithAssetList;
  82. }
  83. export declare type AttachMediaSourceData = {
  84. media: HTMLMediaElement;
  85. mediaSource: MediaSource | null;
  86. tracks: SourceBufferTrackSet;
  87. };
  88. export declare class AttrList {
  89. [key: string]: any;
  90. constructor(attrs: string | Record<string, any>, parsed?: Pick<ParsedMultivariantPlaylist | LevelDetails, 'variableList' | 'hasVariableRefs' | 'playlistParsingError'>);
  91. get clientAttrs(): string[];
  92. decimalInteger(attrName: string): number;
  93. hexadecimalInteger(attrName: string): Uint8Array<ArrayBuffer> | null;
  94. hexadecimalIntegerAsNumber(attrName: string): number;
  95. decimalFloatingPoint(attrName: string): number;
  96. optionalFloat(attrName: string, defaultValue: number): number;
  97. enumeratedString(attrName: string): string | undefined;
  98. enumeratedStringList<T extends {
  99. [key: string]: boolean;
  100. }>(attrName: string, dict: T): {
  101. [key in keyof T]: boolean;
  102. };
  103. bool(attrName: string): boolean;
  104. decimalResolution(attrName: string): {
  105. width: number;
  106. height: number;
  107. } | undefined;
  108. static parseAttrList(input: string, parsed?: Pick<ParsedMultivariantPlaylist | LevelDetails, 'variableList' | 'hasVariableRefs' | 'playlistParsingError'>): Record<string, string>;
  109. }
  110. export declare type AudioPlaylistType = 'AUDIO';
  111. export declare type AudioSelectionOption = {
  112. lang?: string;
  113. assocLang?: string;
  114. characteristics?: string;
  115. channels?: string;
  116. name?: string;
  117. audioCodec?: string;
  118. groupId?: string;
  119. default?: boolean;
  120. };
  121. export declare class AudioStreamController extends BaseStreamController implements NetworkComponentAPI {
  122. private mainAnchor;
  123. private mainFragLoading;
  124. private audioOnly;
  125. private bufferedTrack;
  126. private switchingTrack;
  127. private trackId;
  128. private waitingData;
  129. private mainDetails;
  130. private flushing;
  131. private bufferFlushed;
  132. private cachedTrackLoadedData;
  133. constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
  134. protected onHandlerDestroying(): void;
  135. private resetItem;
  136. protected registerListeners(): void;
  137. protected unregisterListeners(): void;
  138. onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale }: InitPTSFoundData): void;
  139. private findSyncFrag;
  140. startLoad(startPosition: number, skipSeekToStartPosition?: boolean): void;
  141. doTick(): void;
  142. clearWaitingFragment(): void;
  143. protected resetLoadingState(): void;
  144. protected onTickEnd(): void;
  145. private doTickIdle;
  146. protected onMediaDetaching(event: Events.MEDIA_DETACHING, data: MediaDetachingData): void;
  147. private onAudioTracksUpdated;
  148. private onAudioTrackSwitching;
  149. protected onManifestLoading(): void;
  150. private onLevelLoaded;
  151. private onAudioTrackLoaded;
  152. _handleFragmentLoadProgress(data: FragLoadedData): void;
  153. protected _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
  154. private onBufferReset;
  155. private onBufferCreated;
  156. private onFragLoading;
  157. private onFragBuffered;
  158. protected onError(event: Events.ERROR, data: ErrorData): void;
  159. private onBufferFlushing;
  160. private onBufferFlushed;
  161. private _handleTransmuxComplete;
  162. private _bufferInitSegment;
  163. protected loadFragment(frag: Fragment, track: Level, targetBufferTime: number): void;
  164. private flushAudioIfNeeded;
  165. private completeAudioSwitch;
  166. }
  167. export declare class AudioTrackController extends BasePlaylistController {
  168. private tracks;
  169. private groupIds;
  170. private tracksInGroup;
  171. private trackId;
  172. private currentTrack;
  173. private selectDefaultTrack;
  174. constructor(hls: Hls);
  175. private registerListeners;
  176. private unregisterListeners;
  177. destroy(): void;
  178. protected onManifestLoading(): void;
  179. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  180. protected onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData): void;
  181. protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;
  182. protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;
  183. private switchLevel;
  184. protected onError(event: Events.ERROR, data: ErrorData): void;
  185. get allAudioTracks(): MediaPlaylist[];
  186. get audioTracks(): MediaPlaylist[];
  187. get audioTrack(): number;
  188. set audioTrack(newId: number);
  189. setAudioOption(audioOption: MediaPlaylist | AudioSelectionOption | undefined): MediaPlaylist | null;
  190. private setAudioTrack;
  191. private findTrackId;
  192. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  193. protected loadingPlaylist(audioTrack: MediaPlaylist, hlsUrlParameters: HlsUrlParameters | undefined): void;
  194. }
  195. export declare interface AudioTrackLoadedData extends TrackLoadedData {
  196. }
  197. export declare interface AudioTracksUpdatedData {
  198. audioTracks: MediaPlaylist[];
  199. }
  200. export declare interface AudioTrackSwitchedData extends MediaPlaylist {
  201. }
  202. export declare interface AudioTrackSwitchingData extends MediaPlaylist {
  203. }
  204. export declare interface AudioTrackUpdatedData {
  205. details: LevelDetails;
  206. id: number;
  207. groupId: string;
  208. }
  209. export declare interface BackBufferData {
  210. bufferEnd: number;
  211. }
  212. declare type Base = {
  213. url: string;
  214. };
  215. export declare type BaseData = {
  216. url: string;
  217. };
  218. export declare class BasePlaylistController extends Logger implements NetworkComponentAPI {
  219. protected hls: Hls;
  220. protected canLoad: boolean;
  221. private timer;
  222. constructor(hls: Hls, logPrefix: string);
  223. destroy(): void;
  224. private clearTimer;
  225. startLoad(): void;
  226. stopLoad(): void;
  227. protected switchParams(playlistUri: string, previous: LevelDetails | undefined, current: LevelDetails | undefined): HlsUrlParameters | undefined;
  228. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  229. protected loadingPlaylist(playlist: Level | MediaPlaylist, hlsUrlParameters?: HlsUrlParameters): void;
  230. protected shouldLoadPlaylist(playlist: Level | MediaPlaylist | null | undefined): playlist is Level | MediaPlaylist;
  231. protected getUrlWithDirectives(uri: string, hlsUrlParameters: HlsUrlParameters | undefined): string;
  232. protected playlistLoaded(index: number, data: LevelLoadedData | AudioTrackLoadedData | TrackLoadedData, previousDetails?: LevelDetails): void;
  233. protected scheduleLoading(levelOrTrack: Level | MediaPlaylist, deliveryDirectives?: HlsUrlParameters, updatedDetails?: LevelDetails): void;
  234. private getDeliveryDirectives;
  235. protected checkRetry(errorEvent: ErrorData): boolean;
  236. }
  237. export declare class BaseSegment {
  238. private _byteRange;
  239. private _url;
  240. private _stats;
  241. private _streams;
  242. readonly base: Base;
  243. relurl?: string;
  244. constructor(base: Base | string);
  245. setByteRange(value: string, previous?: BaseSegment): void;
  246. get baseurl(): string;
  247. get byteRange(): [number, number] | [];
  248. get byteRangeStartOffset(): number | undefined;
  249. get byteRangeEndOffset(): number | undefined;
  250. get elementaryStreams(): ElementaryStreams;
  251. set elementaryStreams(value: ElementaryStreams);
  252. get hasStats(): boolean;
  253. get hasStreams(): boolean;
  254. get stats(): LoadStats;
  255. set stats(value: LoadStats);
  256. get url(): string;
  257. set url(value: string);
  258. clearElementaryStreamInfo(): void;
  259. }
  260. export declare class BaseStreamController extends TaskLoop implements NetworkComponentAPI {
  261. protected hls: Hls;
  262. protected fragPrevious: MediaFragment | null;
  263. protected fragCurrent: Fragment | null;
  264. protected fragmentTracker: FragmentTracker;
  265. protected transmuxer: TransmuxerInterface | null;
  266. protected _state: (typeof State)[keyof typeof State];
  267. protected playlistType: PlaylistLevelType;
  268. protected media: HTMLMediaElement | null;
  269. protected mediaBuffer: Bufferable | null;
  270. protected config: HlsConfig;
  271. protected bitrateTest: boolean;
  272. protected lastCurrentTime: number;
  273. protected nextLoadPosition: number;
  274. protected startPosition: number;
  275. protected startTimeOffset: number | null;
  276. protected retryDate: number;
  277. protected levels: Array<Level> | null;
  278. protected fragmentLoader: FragmentLoader;
  279. protected keyLoader: KeyLoader;
  280. protected levelLastLoaded: Level | null;
  281. protected startFragRequested: boolean;
  282. protected decrypter: Decrypter;
  283. protected initPTS: RationalTimestamp[];
  284. protected buffering: boolean;
  285. protected loadingParts: boolean;
  286. private loopSn?;
  287. constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);
  288. protected registerListeners(): void;
  289. protected unregisterListeners(): void;
  290. protected doTick(): void;
  291. protected onTickEnd(): void;
  292. startLoad(startPosition: number): void;
  293. stopLoad(): void;
  294. get startPositionValue(): number;
  295. get bufferingEnabled(): boolean;
  296. pauseBuffering(): void;
  297. resumeBuffering(): void;
  298. get inFlightFrag(): InFlightData;
  299. protected _streamEnded(bufferInfo: BufferInfo, levelDetails: LevelDetails): boolean;
  300. getLevelDetails(): LevelDetails | undefined;
  301. protected get timelineOffset(): number;
  302. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  303. protected onMediaDetaching(event: Events.MEDIA_DETACHING, data: MediaDetachingData): void;
  304. protected onManifestLoading(): void;
  305. protected onError(event: Events.ERROR, data: ErrorData): void;
  306. protected onMediaSeeking: () => void;
  307. protected onMediaEnded: () => void;
  308. protected onManifestLoaded(event: Events.MANIFEST_LOADED, data: ManifestLoadedData): void;
  309. protected onHandlerDestroying(): void;
  310. protected onHandlerDestroyed(): void;
  311. protected loadFragment(frag: MediaFragment, level: Level, targetBufferTime: number): void;
  312. private _loadFragForPlayback;
  313. protected clearTrackerIfNeeded(frag: Fragment): void;
  314. protected checkLiveUpdate(details: LevelDetails): void;
  315. protected waitForLive(levelInfo: Level): boolean | undefined;
  316. protected flushMainBuffer(startOffset: number, endOffset: number, type?: SourceBufferName | null): void;
  317. protected _loadInitSegment(fragment: Fragment, level: Level): void;
  318. private completeInitSegmentLoad;
  319. protected fragContextChanged(frag: Fragment | null): boolean;
  320. protected fragBufferedComplete(frag: Fragment, part: Part | null): void;
  321. protected _handleFragmentLoadComplete(fragLoadedEndData: PartsLoadedData): void;
  322. protected _handleFragmentLoadProgress(frag: PartsLoadedData | FragLoadedData): void;
  323. protected _doFragLoad(frag: Fragment, level: Level, targetBufferTime?: number | null, progressCallback?: FragmentLoadProgressCallback): Promise<PartsLoadedData | FragLoadedData | null>;
  324. private doFragPartsLoad;
  325. private handleFragLoadError;
  326. protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;
  327. private shouldLoadParts;
  328. protected getCurrentContext(chunkMeta: ChunkMetadata): {
  329. frag: MediaFragment;
  330. part: Part | null;
  331. level: Level;
  332. } | null;
  333. protected bufferFragmentData(data: RemuxedTrack, frag: Fragment, part: Part | null, chunkMeta: ChunkMetadata, noBacktracking?: boolean): void;
  334. protected flushBufferGap(frag: Fragment): void;
  335. protected getFwdBufferInfo(bufferable: Bufferable | null, type: PlaylistLevelType): BufferInfo | null;
  336. protected getFwdBufferInfoAtPos(bufferable: Bufferable | null, pos: number, type: PlaylistLevelType, maxBufferHole: number): BufferInfo | null;
  337. protected getMaxBufferLength(levelBitrate?: number): number;
  338. protected reduceMaxBufferLength(threshold: number, fragDuration: number): boolean;
  339. protected getAppendedFrag(position: number, playlistType?: PlaylistLevelType): Fragment | null;
  340. protected getNextFragment(pos: number, levelDetails: LevelDetails): Fragment | null;
  341. protected isLoopLoading(frag: Fragment, targetBufferTime: number): boolean;
  342. protected getNextFragmentLoopLoading(frag: Fragment, levelDetails: LevelDetails, bufferInfo: BufferInfo, playlistType: PlaylistLevelType, maxBufLen: number): Fragment | null;
  343. protected get primaryPrefetch(): boolean;
  344. protected filterReplacedPrimary(frag: MediaFragment | null, details: LevelDetails | undefined): MediaFragment | null;
  345. mapToInitFragWhenRequired(frag: Fragment | null): typeof frag;
  346. getNextPart(partList: Part[], frag: Fragment, targetBufferTime: number): number;
  347. private loadedEndOfParts;
  348. protected getInitialLiveFragment(levelDetails: LevelDetails, fragments: MediaFragment[]): MediaFragment | null;
  349. protected getFragmentAtPosition(bufferEnd: number, end: number, levelDetails: LevelDetails): MediaFragment | null;
  350. protected alignPlaylists(details: LevelDetails, previousDetails: LevelDetails | undefined, switchDetails: LevelDetails | undefined): number;
  351. protected waitForCdnTuneIn(details: LevelDetails): boolean | 0;
  352. protected setStartPosition(details: LevelDetails, sliding: number): void;
  353. protected getLoadPosition(): number;
  354. private handleFragLoadAborted;
  355. protected resetFragmentLoading(frag: Fragment): void;
  356. protected onFragmentOrKeyLoadError(filterType: PlaylistLevelType, data: ErrorData): void;
  357. protected reduceLengthAndFlushBuffer(data: ErrorData): boolean;
  358. protected resetFragmentErrors(filterType: PlaylistLevelType): void;
  359. protected afterBufferFlushed(media: Bufferable, bufferType: SourceBufferName, playlistType: PlaylistLevelType): void;
  360. protected resetLoadingState(): void;
  361. protected resetStartWhenNotLoaded(level: Level | null): void;
  362. protected resetWhenMissingContext(chunkMeta: ChunkMetadata | Fragment): void;
  363. protected removeUnbufferedFrags(start?: number): void;
  364. private updateLevelTiming;
  365. private playlistLabel;
  366. private fragInfo;
  367. private treatAsGap;
  368. protected resetTransmuxer(): void;
  369. protected recoverWorkerError(data: ErrorData): void;
  370. set state(nextState: (typeof State)[keyof typeof State]);
  371. get state(): (typeof State)[keyof typeof State];
  372. }
  373. export declare interface BaseTrack {
  374. id: 'audio' | 'main';
  375. container: string;
  376. codec?: string;
  377. supplemental?: string;
  378. levelCodec?: string;
  379. pendingCodec?: string;
  380. metadata?: {
  381. channelCount?: number;
  382. width?: number;
  383. height?: number;
  384. };
  385. }
  386. export declare type BaseTrackSet = Partial<Record<SourceBufferName, BaseTrack>>;
  387. export declare type Bufferable = {
  388. buffered: TimeRanges;
  389. };
  390. export declare interface BufferAppendedData {
  391. type: SourceBufferName;
  392. frag: Fragment;
  393. part: Part | null;
  394. chunkMeta: ChunkMetadata;
  395. parent: PlaylistLevelType;
  396. timeRanges: Partial<Record<SourceBufferName, TimeRanges>>;
  397. }
  398. export declare interface BufferAppendingData {
  399. type: SourceBufferName;
  400. frag: Fragment;
  401. part: Part | null;
  402. chunkMeta: ChunkMetadata;
  403. parent: PlaylistLevelType;
  404. data: Uint8Array;
  405. }
  406. export declare interface BufferCodecsData {
  407. video?: ParsedTrack;
  408. audio?: ParsedTrack;
  409. audiovideo?: ParsedTrack;
  410. tracks?: BaseTrackSet;
  411. }
  412. export declare class BufferController extends Logger implements ComponentAPI {
  413. private hls;
  414. private fragmentTracker;
  415. private details;
  416. private _objectUrl;
  417. private operationQueue;
  418. private bufferCodecEventsTotal;
  419. private media;
  420. private mediaSource;
  421. private lastMpegAudioChunk;
  422. private blockedAudioAppend;
  423. private lastVideoAppendEnd;
  424. private appendSource;
  425. private transferData?;
  426. private overrides?;
  427. private appendErrors;
  428. private tracks;
  429. private sourceBuffers;
  430. constructor(hls: Hls, fragmentTracker: FragmentTracker);
  431. hasSourceTypes(): boolean;
  432. destroy(): void;
  433. private registerListeners;
  434. private unregisterListeners;
  435. transferMedia(): AttachMediaSourceData | null;
  436. private initTracks;
  437. private onManifestLoading;
  438. private onManifestParsed;
  439. private onMediaAttaching;
  440. private assignMediaSource;
  441. private attachTransferred;
  442. private get mediaSourceOpenOrEnded();
  443. private _onEndStreaming;
  444. private _onStartStreaming;
  445. private onMediaDetaching;
  446. private onBufferReset;
  447. private resetBuffer;
  448. private removeBuffer;
  449. private resetQueue;
  450. private onBufferCodecs;
  451. get sourceBufferTracks(): BaseTrackSet;
  452. private appendChangeType;
  453. private blockAudio;
  454. private unblockAudio;
  455. private onBufferAppending;
  456. private getFlushOp;
  457. private onBufferFlushing;
  458. private onFragParsed;
  459. private onFragChanged;
  460. get bufferedToEnd(): boolean;
  461. private onBufferEos;
  462. private tracksEnded;
  463. private onLevelUpdated;
  464. private updateDuration;
  465. private onError;
  466. private resetAppendErrors;
  467. private trimBuffers;
  468. private flushBackBuffer;
  469. private flushFrontBuffer;
  470. /**
  471. * Update Media Source duration to current level duration or override to Infinity if configuration parameter
  472. * 'liveDurationInfinity` is set to `true`
  473. * More details: https://github.com/video-dev/hls.js/issues/355
  474. */
  475. private getDurationAndRange;
  476. private updateMediaSource;
  477. private get tracksReady();
  478. private checkPendingTracks;
  479. private bufferCreated;
  480. private createSourceBuffers;
  481. private getTrackCodec;
  482. private trackSourceBuffer;
  483. private _onMediaSourceOpen;
  484. private _onMediaSourceClose;
  485. private _onMediaSourceEnded;
  486. private _onMediaEmptied;
  487. private get mediaSrc();
  488. private onSBUpdateStart;
  489. private onSBUpdateEnd;
  490. private onSBUpdateError;
  491. private removeExecutor;
  492. private appendExecutor;
  493. private blockUntilOpen;
  494. private isUpdating;
  495. private isQueued;
  496. private isPending;
  497. private blockBuffers;
  498. private stepOperationQueue;
  499. private append;
  500. private appendBlocker;
  501. private currentOp;
  502. private executeNext;
  503. private shiftAndExecuteNext;
  504. private get pendingTrackCount();
  505. private get sourceBufferCount();
  506. private get sourceBufferTypes();
  507. private addBufferListener;
  508. private removeBufferListeners;
  509. }
  510. export declare type BufferControllerConfig = {
  511. appendErrorMaxRetry: number;
  512. backBufferLength: number;
  513. frontBufferFlushThreshold: number;
  514. liveDurationInfinity: boolean;
  515. /**
  516. * @deprecated use backBufferLength
  517. */
  518. liveBackBufferLength: number | null;
  519. };
  520. export declare interface BufferCreatedData {
  521. tracks: BufferCreatedTrackSet;
  522. }
  523. export declare interface BufferCreatedTrack extends BaseTrack {
  524. buffer: ExtendedSourceBuffer;
  525. }
  526. export declare type BufferCreatedTrackSet = Partial<Record<SourceBufferName, BufferCreatedTrack>>;
  527. export declare interface BufferEOSData {
  528. type?: SourceBufferName;
  529. }
  530. export declare interface BufferFlushedData {
  531. type: SourceBufferName;
  532. }
  533. export declare interface BufferFlushingData {
  534. startOffset: number;
  535. endOffset: number;
  536. endOffsetSubtitles?: number;
  537. type: SourceBufferName | null;
  538. }
  539. export declare type BufferInfo = {
  540. len: number;
  541. start: number;
  542. end: number;
  543. nextStart?: number;
  544. buffered?: BufferTimeRange[];
  545. bufferedIndex: number;
  546. };
  547. /**
  548. * Provides methods dealing with buffer length retrieval for example.
  549. *
  550. * In general, a helper around HTML5 MediaElement TimeRanges gathered from `buffered` property.
  551. *
  552. * Also @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/buffered
  553. */
  554. export declare type BufferTimeRange = {
  555. start: number;
  556. end: number;
  557. };
  558. export declare class CapLevelController implements ComponentAPI {
  559. private hls;
  560. private autoLevelCapping;
  561. private firstLevel;
  562. private media;
  563. private restrictedLevels;
  564. private timer;
  565. private clientRect;
  566. private streamController?;
  567. constructor(hls: Hls);
  568. setStreamController(streamController: StreamController): void;
  569. destroy(): void;
  570. protected registerListeners(): void;
  571. protected unregisterListener(): void;
  572. protected onFpsDropLevelCapping(event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData): void;
  573. protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;
  574. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  575. private onLevelsUpdated;
  576. protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;
  577. protected onMediaDetaching(): void;
  578. detectPlayerSize(): void;
  579. getMaxLevel(capLevelIndex: number): number;
  580. startCapping(): void;
  581. stopCapping(): void;
  582. getDimensions(): {
  583. width: number;
  584. height: number;
  585. };
  586. get mediaWidth(): number;
  587. get mediaHeight(): number;
  588. get contentScaleFactor(): number;
  589. private isLevelAllowed;
  590. static getMaxLevelByMediaSize(levels: Array<Level>, width: number, height: number): number;
  591. }
  592. export declare type CapLevelControllerConfig = {
  593. capLevelToPlayerSize: boolean;
  594. };
  595. /**
  596. * Keep a CEA-608 screen of 32x15 styled characters
  597. * @constructor
  598. */
  599. export declare class CaptionScreen {
  600. rows: Row[];
  601. currRow: number;
  602. nrRollUpRows: number | null;
  603. lastOutputScreen: CaptionScreen | null;
  604. logger: CaptionsLogger;
  605. constructor(logger: CaptionsLogger);
  606. reset(): void;
  607. equals(other: CaptionScreen): boolean;
  608. copy(other: CaptionScreen): void;
  609. isEmpty(): boolean;
  610. backSpace(): void;
  611. clearToEndOfRow(): void;
  612. /**
  613. * Insert a character (without styling) in the current row.
  614. */
  615. insertChar(char: number): void;
  616. setPen(styles: Partial<PenStyles>): void;
  617. moveCursor(relPos: number): void;
  618. setCursor(absPos: number): void;
  619. setPAC(pacData: PACData): void;
  620. /**
  621. * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).
  622. */
  623. setBkgData(bkgData: Partial<PenStyles>): void;
  624. setRollUpRows(nrRows: number | null): void;
  625. rollUp(): void;
  626. /**
  627. * Get all non-empty rows with as unicode text.
  628. */
  629. getDisplayText(asOneRow?: boolean): string;
  630. getTextAndFormat(): Row[];
  631. }
  632. declare class CaptionsLogger {
  633. time: number | null;
  634. verboseLevel: VerboseLevel;
  635. log(severity: VerboseLevel, msg: string | (() => string)): void;
  636. }
  637. export declare class ChunkMetadata {
  638. readonly level: number;
  639. readonly sn: number;
  640. readonly part: number;
  641. readonly id: number;
  642. readonly size: number;
  643. readonly partial: boolean;
  644. readonly transmuxing: HlsChunkPerformanceTiming;
  645. readonly buffering: {
  646. [key in SourceBufferName]: HlsChunkPerformanceTiming;
  647. };
  648. constructor(level: number, sn: number, id: number, size?: number, part?: number, partial?: boolean);
  649. }
  650. /**
  651. * Controller to deal with Common Media Client Data (CMCD)
  652. * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf
  653. */
  654. export declare class CMCDController implements ComponentAPI {
  655. private hls;
  656. private config;
  657. private media?;
  658. private sid?;
  659. private cid?;
  660. private useHeaders;
  661. private includeKeys?;
  662. private initialized;
  663. private starved;
  664. private buffering;
  665. private audioBuffer?;
  666. private videoBuffer?;
  667. constructor(hls: Hls);
  668. private registerListeners;
  669. private unregisterListeners;
  670. destroy(): void;
  671. private onMediaAttached;
  672. private onMediaDetached;
  673. private onBufferCreated;
  674. private onWaiting;
  675. private onPlaying;
  676. /**
  677. * Create baseline CMCD data
  678. */
  679. private createData;
  680. /**
  681. * Apply CMCD data to a request.
  682. */
  683. private apply;
  684. /**
  685. * Apply CMCD data to a manifest request.
  686. */
  687. private applyPlaylistData;
  688. /**
  689. * Apply CMCD data to a segment request
  690. */
  691. private applyFragmentData;
  692. private getNextFrag;
  693. private getNextPart;
  694. /**
  695. * The CMCD object type.
  696. */
  697. private getObjectType;
  698. /**
  699. * Get the highest bitrate.
  700. */
  701. private getTopBandwidth;
  702. /**
  703. * Get the buffer length for a media type in milliseconds
  704. */
  705. private getBufferLength;
  706. /**
  707. * Create a playlist loader
  708. */
  709. private createPlaylistLoader;
  710. /**
  711. * Create a playlist loader
  712. */
  713. private createFragmentLoader;
  714. }
  715. export declare type CMCDControllerConfig = {
  716. sessionId?: string;
  717. contentId?: string;
  718. useHeaders?: boolean;
  719. includeKeys?: string[];
  720. };
  721. export declare interface CodecsParsed {
  722. audioCodec?: string;
  723. videoCodec?: string;
  724. textCodec?: string;
  725. unknownCodecs?: string[];
  726. }
  727. export declare interface ComponentAPI {
  728. destroy(): void;
  729. }
  730. export declare class ContentSteeringController extends Logger implements NetworkComponentAPI {
  731. private readonly hls;
  732. private loader;
  733. private uri;
  734. private pathwayId;
  735. private _pathwayPriority;
  736. private timeToLoad;
  737. private reloadTimer;
  738. private updated;
  739. private started;
  740. private enabled;
  741. private levels;
  742. private audioTracks;
  743. private subtitleTracks;
  744. private penalizedPathways;
  745. constructor(hls: Hls);
  746. private registerListeners;
  747. private unregisterListeners;
  748. pathways(): string[];
  749. get pathwayPriority(): string[] | null;
  750. set pathwayPriority(pathwayPriority: string[]);
  751. startLoad(): void;
  752. stopLoad(): void;
  753. clearTimeout(): void;
  754. destroy(): void;
  755. removeLevel(levelToRemove: Level): void;
  756. private onManifestLoading;
  757. private onManifestLoaded;
  758. private onManifestParsed;
  759. private onError;
  760. filterParsedLevels(levels: Level[]): Level[];
  761. private getLevelsForPathway;
  762. private updatePathwayPriority;
  763. private getPathwayForGroupId;
  764. private clonePathways;
  765. private loadSteeringManifest;
  766. private scheduleRefresh;
  767. }
  768. export declare type ContentSteeringOptions = {
  769. uri: string;
  770. pathwayId: string;
  771. };
  772. export declare interface CuesInterface {
  773. newCue(track: TextTrack | null, startTime: number, endTime: number, captionScreen: CaptionScreen): VTTCue[];
  774. }
  775. export declare interface CuesParsedData {
  776. type: 'captions' | 'subtitles';
  777. cues: any;
  778. track: string;
  779. }
  780. export declare class DateRange {
  781. attr: AttrList;
  782. tagAnchor: MediaFragmentRef | null;
  783. tagOrder: number;
  784. private _startDate;
  785. private _endDate?;
  786. private _dateAtEnd?;
  787. private _cue?;
  788. private _badValueForSameId?;
  789. constructor(dateRangeAttr: AttrList, dateRangeWithSameId?: DateRange | undefined, tagCount?: number);
  790. get id(): string;
  791. get class(): string;
  792. get cue(): DateRangeCue;
  793. get startTime(): number;
  794. get startDate(): Date;
  795. get endDate(): Date | null;
  796. get duration(): number | null;
  797. get plannedDuration(): number | null;
  798. get endOnNext(): boolean;
  799. get isInterstitial(): boolean;
  800. get isValid(): boolean;
  801. }
  802. export declare type DateRangeCue = {
  803. pre: boolean;
  804. post: boolean;
  805. once: boolean;
  806. };
  807. export declare interface DecryptData {
  808. uri: string;
  809. method: string;
  810. keyFormat: string;
  811. keyFormatVersions: number[];
  812. iv: Uint8Array<ArrayBuffer> | null;
  813. key: Uint8Array<ArrayBuffer> | null;
  814. keyId: Uint8Array<ArrayBuffer> | null;
  815. pssh: Uint8Array<ArrayBuffer> | null;
  816. encrypted: boolean;
  817. isCommonEncryption: boolean;
  818. }
  819. export declare class Decrypter {
  820. private logEnabled;
  821. private removePKCS7Padding;
  822. private subtle;
  823. private softwareDecrypter;
  824. private key;
  825. private fastAesKey;
  826. private remainderData;
  827. private currentIV;
  828. private currentResult;
  829. private useSoftware;
  830. private enableSoftwareAES;
  831. constructor(config: HlsConfig, { removePKCS7Padding }?: {
  832. removePKCS7Padding?: boolean | undefined;
  833. });
  834. destroy(): void;
  835. isSync(): boolean;
  836. flush(): Uint8Array<ArrayBuffer> | null;
  837. reset(): void;
  838. decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
  839. softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): ArrayBuffer | null;
  840. webCryptoDecrypt(data: Uint8Array<ArrayBuffer>, key: ArrayBuffer, iv: ArrayBuffer, aesMode: DecrypterAesMode): Promise<ArrayBuffer>;
  841. private onWebCryptoError;
  842. private getValidChunk;
  843. private logOnce;
  844. }
  845. export declare const enum DecrypterAesMode {
  846. cbc = 0,
  847. ctr = 1
  848. }
  849. export declare type DRMSystemConfiguration = {
  850. licenseUrl: string;
  851. serverCertificateUrl?: string;
  852. generateRequest?: (this: Hls, initDataType: string, initData: ArrayBuffer | null, keyContext: MediaKeySessionContext) => {
  853. initDataType: string;
  854. initData: ArrayBuffer | null;
  855. } | undefined | never;
  856. };
  857. export declare type DRMSystemOptions = {
  858. audioRobustness?: string;
  859. videoRobustness?: string;
  860. audioEncryptionScheme?: string | null;
  861. videoEncryptionScheme?: string | null;
  862. persistentState?: MediaKeysRequirement;
  863. distinctiveIdentifier?: MediaKeysRequirement;
  864. sessionTypes?: string[];
  865. sessionType?: string;
  866. };
  867. export declare type DRMSystemsConfiguration = Partial<Record<KeySystems, DRMSystemConfiguration>>;
  868. export declare interface ElementaryStreamInfo {
  869. startPTS: number;
  870. endPTS: number;
  871. startDTS: number;
  872. endDTS: number;
  873. partial?: boolean;
  874. }
  875. export declare type ElementaryStreams = Record<ElementaryStreamTypes, ElementaryStreamInfo | null>;
  876. export declare const enum ElementaryStreamTypes {
  877. AUDIO = "audio",
  878. VIDEO = "video",
  879. AUDIOVIDEO = "audiovideo"
  880. }
  881. /**
  882. * Controller to deal with encrypted media extensions (EME)
  883. * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API
  884. *
  885. * @class
  886. * @constructor
  887. */
  888. export declare class EMEController extends Logger implements ComponentAPI {
  889. static CDMCleanupPromise: Promise<void> | void;
  890. private readonly hls;
  891. private readonly config;
  892. private media;
  893. private keyFormatPromise;
  894. private keySystemAccessPromises;
  895. private _requestLicenseFailureCount;
  896. private mediaKeySessions;
  897. private keyIdToKeySessionPromise;
  898. private setMediaKeysQueue;
  899. constructor(hls: Hls);
  900. destroy(): void;
  901. private registerListeners;
  902. private unregisterListeners;
  903. private getLicenseServerUrl;
  904. private getLicenseServerUrlOrThrow;
  905. private getServerCertificateUrl;
  906. private attemptKeySystemAccess;
  907. private requestMediaKeySystemAccess;
  908. private getMediaKeysPromise;
  909. private createMediaKeySessionContext;
  910. private renewKeySession;
  911. private getKeyIdString;
  912. private updateKeySession;
  913. selectKeySystemFormat(frag: Fragment): Promise<KeySystemFormats>;
  914. private getKeyFormatPromise;
  915. loadKey(data: KeyLoadedData): Promise<MediaKeySessionContext>;
  916. private throwIfDestroyed;
  917. private handleError;
  918. private getKeySystemForKeyPromise;
  919. private getKeySystemSelectionPromise;
  920. private onMediaEncrypted;
  921. private onWaitingForKey;
  922. private attemptSetMediaKeys;
  923. private generateRequestWithPreferredKeySession;
  924. private onKeyStatusChange;
  925. private fetchServerCertificate;
  926. private setMediaKeysServerCertificate;
  927. private renewLicense;
  928. private unpackPlayReadyKeyMessage;
  929. private setupLicenseXHR;
  930. private requestLicense;
  931. private onMediaAttached;
  932. private onMediaDetached;
  933. private _clear;
  934. private onManifestLoading;
  935. private onManifestLoaded;
  936. private removeSession;
  937. }
  938. export declare type EMEControllerConfig = {
  939. licenseXhrSetup?: (this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext, licenseChallenge: Uint8Array) => void | Uint8Array | Promise<Uint8Array | void>;
  940. licenseResponseCallback?: (this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext) => ArrayBuffer;
  941. emeEnabled: boolean;
  942. widevineLicenseUrl?: string;
  943. drmSystems: DRMSystemsConfiguration;
  944. drmSystemOptions: DRMSystemOptions;
  945. requestMediaKeySystemAccessFunc: MediaKeyFunc | null;
  946. };
  947. export declare const enum ErrorActionFlags {
  948. None = 0,
  949. MoveAllAlternatesMatchingHost = 1,
  950. MoveAllAlternatesMatchingHDCP = 2,
  951. SwitchToSDR = 4
  952. }
  953. export declare class ErrorController extends Logger implements NetworkComponentAPI {
  954. private readonly hls;
  955. private playlistError;
  956. private penalizedRenditions;
  957. constructor(hls: Hls);
  958. private registerListeners;
  959. private unregisterListeners;
  960. destroy(): void;
  961. startLoad(startPosition: number): void;
  962. stopLoad(): void;
  963. private getVariantLevelIndex;
  964. private onManifestLoading;
  965. private onLevelUpdated;
  966. private onError;
  967. private keySystemError;
  968. private getPlaylistRetryOrSwitchAction;
  969. private getFragRetryOrSwitchAction;
  970. private getLevelSwitchAction;
  971. onErrorOut(event: Events.ERROR, data: ErrorData): void;
  972. private sendAlternateToPenaltyBox;
  973. private switchLevel;
  974. }
  975. export declare interface ErrorData {
  976. type: ErrorTypes;
  977. details: ErrorDetails;
  978. error: Error;
  979. fatal: boolean;
  980. errorAction?: IErrorAction;
  981. buffer?: number;
  982. bufferInfo?: BufferInfo;
  983. bytes?: number;
  984. chunkMeta?: ChunkMetadata;
  985. context?: PlaylistLoaderContext;
  986. event?: keyof HlsListeners | 'demuxerWorker';
  987. frag?: Fragment;
  988. part?: Part | null;
  989. level?: number | undefined;
  990. levelRetry?: boolean;
  991. loader?: Loader<LoaderContext>;
  992. networkDetails?: any;
  993. stalled?: {
  994. start: number;
  995. };
  996. stats?: LoaderStats;
  997. mimeType?: string;
  998. reason?: string;
  999. response?: LoaderResponse;
  1000. url?: string;
  1001. parent?: PlaylistLevelType;
  1002. sourceBufferName?: SourceBufferName;
  1003. interstitial?: InterstitialEvent;
  1004. /**
  1005. * @deprecated Use ErrorData.error
  1006. */
  1007. err?: {
  1008. message: string;
  1009. };
  1010. }
  1011. export declare enum ErrorDetails {
  1012. KEY_SYSTEM_NO_KEYS = "keySystemNoKeys",
  1013. KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess",
  1014. KEY_SYSTEM_NO_SESSION = "keySystemNoSession",
  1015. KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense",
  1016. KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed",
  1017. KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed",
  1018. KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed",
  1019. KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed",
  1020. KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted",
  1021. KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError",
  1022. KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR = "keySystemDestroyMediaKeysError",
  1023. KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR = "keySystemDestroyCloseSessionError",
  1024. KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR = "keySystemDestroyRemoveSessionError",
  1025. MANIFEST_LOAD_ERROR = "manifestLoadError",
  1026. MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut",
  1027. MANIFEST_PARSING_ERROR = "manifestParsingError",
  1028. MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError",
  1029. LEVEL_EMPTY_ERROR = "levelEmptyError",
  1030. LEVEL_LOAD_ERROR = "levelLoadError",
  1031. LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut",
  1032. LEVEL_PARSING_ERROR = "levelParsingError",
  1033. LEVEL_SWITCH_ERROR = "levelSwitchError",
  1034. AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError",
  1035. AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut",
  1036. SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError",
  1037. SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut",
  1038. FRAG_LOAD_ERROR = "fragLoadError",
  1039. FRAG_LOAD_TIMEOUT = "fragLoadTimeOut",
  1040. FRAG_DECRYPT_ERROR = "fragDecryptError",
  1041. FRAG_PARSING_ERROR = "fragParsingError",
  1042. FRAG_GAP = "fragGap",
  1043. REMUX_ALLOC_ERROR = "remuxAllocError",
  1044. KEY_LOAD_ERROR = "keyLoadError",
  1045. KEY_LOAD_TIMEOUT = "keyLoadTimeOut",
  1046. BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError",
  1047. BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError",
  1048. BUFFER_APPEND_ERROR = "bufferAppendError",
  1049. BUFFER_APPENDING_ERROR = "bufferAppendingError",
  1050. BUFFER_STALLED_ERROR = "bufferStalledError",
  1051. BUFFER_FULL_ERROR = "bufferFullError",
  1052. BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole",
  1053. BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall",
  1054. ASSET_LIST_LOAD_ERROR = "assetListLoadError",
  1055. ASSET_LIST_LOAD_TIMEOUT = "assetListLoadTimeout",
  1056. ASSET_LIST_PARSING_ERROR = "assetListParsingError",
  1057. INTERSTITIAL_ASSET_ITEM_ERROR = "interstitialAssetItemError",
  1058. INTERNAL_EXCEPTION = "internalException",
  1059. INTERNAL_ABORTED = "aborted",
  1060. ATTACH_MEDIA_ERROR = "attachMediaError",
  1061. UNKNOWN = "unknown"
  1062. }
  1063. export declare enum ErrorTypes {
  1064. NETWORK_ERROR = "networkError",
  1065. MEDIA_ERROR = "mediaError",
  1066. KEY_SYSTEM_ERROR = "keySystemError",
  1067. MUX_ERROR = "muxError",
  1068. OTHER_ERROR = "otherError"
  1069. }
  1070. export declare enum Events {
  1071. MEDIA_ATTACHING = "hlsMediaAttaching",
  1072. MEDIA_ATTACHED = "hlsMediaAttached",
  1073. MEDIA_DETACHING = "hlsMediaDetaching",
  1074. MEDIA_DETACHED = "hlsMediaDetached",
  1075. MEDIA_ENDED = "hlsMediaEnded",
  1076. STALL_RESOLVED = "hlsStallResolved",
  1077. BUFFER_RESET = "hlsBufferReset",
  1078. BUFFER_CODECS = "hlsBufferCodecs",
  1079. BUFFER_CREATED = "hlsBufferCreated",
  1080. BUFFER_APPENDING = "hlsBufferAppending",
  1081. BUFFER_APPENDED = "hlsBufferAppended",
  1082. BUFFER_EOS = "hlsBufferEos",
  1083. BUFFERED_TO_END = "hlsBufferedToEnd",
  1084. BUFFER_FLUSHING = "hlsBufferFlushing",
  1085. BUFFER_FLUSHED = "hlsBufferFlushed",
  1086. MANIFEST_LOADING = "hlsManifestLoading",
  1087. MANIFEST_LOADED = "hlsManifestLoaded",
  1088. MANIFEST_PARSED = "hlsManifestParsed",
  1089. LEVEL_SWITCHING = "hlsLevelSwitching",
  1090. LEVEL_SWITCHED = "hlsLevelSwitched",
  1091. LEVEL_LOADING = "hlsLevelLoading",
  1092. LEVEL_LOADED = "hlsLevelLoaded",
  1093. LEVEL_UPDATED = "hlsLevelUpdated",
  1094. LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated",
  1095. LEVELS_UPDATED = "hlsLevelsUpdated",
  1096. AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated",
  1097. AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching",
  1098. AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched",
  1099. AUDIO_TRACK_LOADING = "hlsAudioTrackLoading",
  1100. AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded",
  1101. AUDIO_TRACK_UPDATED = "hlsAudioTrackUpdated",
  1102. SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated",
  1103. SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared",
  1104. SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch",
  1105. SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading",
  1106. SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded",
  1107. SUBTITLE_TRACK_UPDATED = "hlsSubtitleTrackUpdated",
  1108. SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed",
  1109. CUES_PARSED = "hlsCuesParsed",
  1110. NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound",
  1111. INIT_PTS_FOUND = "hlsInitPtsFound",
  1112. FRAG_LOADING = "hlsFragLoading",
  1113. FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted",
  1114. FRAG_LOADED = "hlsFragLoaded",
  1115. FRAG_DECRYPTED = "hlsFragDecrypted",
  1116. FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment",
  1117. FRAG_PARSING_USERDATA = "hlsFragParsingUserdata",
  1118. FRAG_PARSING_METADATA = "hlsFragParsingMetadata",
  1119. FRAG_PARSED = "hlsFragParsed",
  1120. FRAG_BUFFERED = "hlsFragBuffered",
  1121. FRAG_CHANGED = "hlsFragChanged",
  1122. FPS_DROP = "hlsFpsDrop",
  1123. FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping",
  1124. MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated",
  1125. ERROR = "hlsError",
  1126. DESTROYING = "hlsDestroying",
  1127. KEY_LOADING = "hlsKeyLoading",
  1128. KEY_LOADED = "hlsKeyLoaded",
  1129. LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached",
  1130. BACK_BUFFER_REACHED = "hlsBackBufferReached",
  1131. STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded",
  1132. ASSET_LIST_LOADING = "hlsAssetListLoading",
  1133. ASSET_LIST_LOADED = "hlsAssetListLoaded",
  1134. INTERSTITIALS_UPDATED = "hlsInterstitialsUpdated",
  1135. INTERSTITIALS_BUFFERED_TO_BOUNDARY = "hlsInterstitialsBufferedToBoundary",
  1136. INTERSTITIAL_ASSET_PLAYER_CREATED = "hlsInterstitialAssetPlayerCreated",
  1137. INTERSTITIAL_STARTED = "hlsInterstitialStarted",
  1138. INTERSTITIAL_ASSET_STARTED = "hlsInterstitialAssetStarted",
  1139. INTERSTITIAL_ASSET_ENDED = "hlsInterstitialAssetEnded",
  1140. INTERSTITIAL_ASSET_ERROR = "hlsInterstitialAssetError",
  1141. INTERSTITIAL_ENDED = "hlsInterstitialEnded",
  1142. INTERSTITIALS_PRIMARY_RESUMED = "hlsInterstitialsPrimaryResumed",
  1143. PLAYOUT_LIMIT_REACHED = "hlsPlayoutLimitReached",
  1144. EVENT_CUE_ENTER = "hlsEventCueEnter"
  1145. }
  1146. export declare class EwmaBandWidthEstimator {
  1147. private defaultEstimate_;
  1148. private minWeight_;
  1149. private minDelayMs_;
  1150. private slow_;
  1151. private fast_;
  1152. private defaultTTFB_;
  1153. private ttfb_;
  1154. constructor(slow: number, fast: number, defaultEstimate: number, defaultTTFB?: number);
  1155. update(slow: number, fast: number): void;
  1156. sample(durationMs: number, numBytes: number): void;
  1157. sampleTTFB(ttfb: number): void;
  1158. canEstimate(): boolean;
  1159. getEstimate(): number;
  1160. getEstimateTTFB(): number;
  1161. get defaultEstimate(): number;
  1162. destroy(): void;
  1163. }
  1164. export declare type ExtendedSourceBuffer = SourceBuffer & {
  1165. onbufferedchange?: ((this: SourceBuffer, ev: Event) => any) | null;
  1166. };
  1167. export declare class FPSController implements ComponentAPI {
  1168. private hls;
  1169. private isVideoPlaybackQualityAvailable;
  1170. private timer?;
  1171. private media;
  1172. private lastTime;
  1173. private lastDroppedFrames;
  1174. private lastDecodedFrames;
  1175. private streamController;
  1176. constructor(hls: Hls);
  1177. setStreamController(streamController: StreamController): void;
  1178. protected registerListeners(): void;
  1179. protected unregisterListeners(): void;
  1180. destroy(): void;
  1181. protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;
  1182. private onMediaDetaching;
  1183. checkFPS(video: HTMLVideoElement, decodedFrames: number, droppedFrames: number): void;
  1184. checkFPSInterval(): void;
  1185. }
  1186. export declare type FPSControllerConfig = {
  1187. capLevelOnFPSDrop: boolean;
  1188. fpsDroppedMonitoringPeriod: number;
  1189. fpsDroppedMonitoringThreshold: number;
  1190. };
  1191. export declare interface FPSDropData {
  1192. currentDropped: number;
  1193. currentDecoded: number;
  1194. totalDroppedFrames: number;
  1195. }
  1196. export declare interface FPSDropLevelCappingData {
  1197. droppedLevel: number;
  1198. level: number;
  1199. }
  1200. export declare interface FragBufferedData {
  1201. stats: LoadStats;
  1202. frag: Fragment;
  1203. part: Part | null;
  1204. id: string;
  1205. }
  1206. export declare interface FragChangedData {
  1207. frag: Fragment;
  1208. }
  1209. export declare interface FragDecryptedData {
  1210. frag: Fragment;
  1211. payload: ArrayBuffer;
  1212. stats: {
  1213. tstart: number;
  1214. tdecrypt: number;
  1215. };
  1216. }
  1217. export declare interface FragLoadedData {
  1218. frag: Fragment;
  1219. part: Part | null;
  1220. payload: ArrayBuffer;
  1221. networkDetails: unknown;
  1222. }
  1223. export declare interface FragLoadEmergencyAbortedData {
  1224. frag: Fragment;
  1225. part: Part | null;
  1226. stats: LoaderStats;
  1227. }
  1228. export declare interface FragLoadFailResult extends ErrorData {
  1229. frag: Fragment;
  1230. part?: Part;
  1231. response?: {
  1232. data: any;
  1233. code: number;
  1234. text: string;
  1235. url: string;
  1236. };
  1237. networkDetails: any;
  1238. }
  1239. export declare interface FragLoadingData {
  1240. frag: Fragment;
  1241. part?: Part;
  1242. targetBufferTime: number | null;
  1243. }
  1244. /**
  1245. * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}.
  1246. */
  1247. export declare class Fragment extends BaseSegment {
  1248. private _decryptdata;
  1249. private _programDateTime;
  1250. private _ref;
  1251. private _bitrate?;
  1252. rawProgramDateTime: string | null;
  1253. tagList: Array<string[]>;
  1254. duration: number;
  1255. sn: number | 'initSegment';
  1256. levelkeys?: {
  1257. [key: string]: LevelKey;
  1258. };
  1259. readonly type: PlaylistLevelType;
  1260. loader: Loader<FragmentLoaderContext> | null;
  1261. keyLoader: Loader<KeyLoaderContext> | null;
  1262. level: number;
  1263. cc: number;
  1264. startPTS?: number;
  1265. endPTS?: number;
  1266. startDTS?: number;
  1267. endDTS?: number;
  1268. start: number;
  1269. playlistOffset: number;
  1270. deltaPTS?: number;
  1271. maxStartPTS?: number;
  1272. minEndPTS?: number;
  1273. data?: Uint8Array;
  1274. bitrateTest: boolean;
  1275. title: string | null;
  1276. initSegment: Fragment | null;
  1277. endList?: boolean;
  1278. gap?: boolean;
  1279. urlId: number;
  1280. constructor(type: PlaylistLevelType, base: Base | string);
  1281. get byteLength(): number | null;
  1282. get bitrate(): number | null;
  1283. set bitrate(value: number);
  1284. get decryptdata(): LevelKey | null;
  1285. get end(): number;
  1286. get endProgramDateTime(): number | null;
  1287. get encrypted(): boolean;
  1288. get programDateTime(): number | null;
  1289. set programDateTime(value: number | null);
  1290. get ref(): MediaFragmentRef | null;
  1291. addStart(value: number): void;
  1292. setStart(value: number): void;
  1293. setDuration(value: number): void;
  1294. setKeyFormat(keyFormat: KeySystemFormats): void;
  1295. abortRequests(): void;
  1296. setElementaryStreamInfo(type: ElementaryStreamTypes, startPTS: number, endPTS: number, startDTS: number, endDTS: number, partial?: boolean): void;
  1297. }
  1298. export declare class FragmentLoader {
  1299. private readonly config;
  1300. private loader;
  1301. private partLoadTimeout;
  1302. constructor(config: HlsConfig);
  1303. destroy(): void;
  1304. abort(): void;
  1305. load(frag: Fragment, onProgress?: FragmentLoadProgressCallback): Promise<FragLoadedData>;
  1306. loadPart(frag: Fragment, part: Part, onProgress: FragmentLoadProgressCallback): Promise<FragLoadedData>;
  1307. private updateStatsFromPart;
  1308. private resetLoader;
  1309. }
  1310. /**
  1311. * @deprecated use fragLoadPolicy.default
  1312. */
  1313. export declare type FragmentLoaderConfig = {
  1314. fragLoadingTimeOut: number;
  1315. fragLoadingMaxRetry: number;
  1316. fragLoadingRetryDelay: number;
  1317. fragLoadingMaxRetryTimeout: number;
  1318. };
  1319. export declare interface FragmentLoaderConstructor {
  1320. new (confg: HlsConfig): Loader<FragmentLoaderContext>;
  1321. }
  1322. export declare interface FragmentLoaderContext extends LoaderContext {
  1323. frag: Fragment;
  1324. part: Part | null;
  1325. resetIV?: boolean;
  1326. }
  1327. export declare type FragmentLoadProgressCallback = (result: FragLoadedData | PartsLoadedData) => void;
  1328. export declare const enum FragmentState {
  1329. NOT_LOADED = "NOT_LOADED",
  1330. APPENDING = "APPENDING",
  1331. PARTIAL = "PARTIAL",
  1332. OK = "OK"
  1333. }
  1334. export declare class FragmentTracker implements ComponentAPI {
  1335. private activePartLists;
  1336. private endListFragments;
  1337. private fragments;
  1338. private timeRanges;
  1339. private bufferPadding;
  1340. private hls;
  1341. private hasGaps;
  1342. constructor(hls: Hls);
  1343. private _registerListeners;
  1344. private _unregisterListeners;
  1345. destroy(): void;
  1346. /**
  1347. * Return a Fragment or Part with an appended range that matches the position and levelType
  1348. * Otherwise, return null
  1349. */
  1350. getAppendedFrag(position: number, levelType: PlaylistLevelType): Fragment | Part | null;
  1351. /**
  1352. * Return a buffered Fragment that matches the position and levelType.
  1353. * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted).
  1354. * If not found any Fragment, return null
  1355. */
  1356. getBufferedFrag(position: number, levelType: PlaylistLevelType): MediaFragment | null;
  1357. getFragAtPos(position: number, levelType: PlaylistLevelType, buffered?: boolean): MediaFragment | null;
  1358. /**
  1359. * Partial fragments effected by coded frame eviction will be removed
  1360. * The browser will unload parts of the buffer to free up memory for new buffer data
  1361. * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)
  1362. */
  1363. detectEvictedFragments(elementaryStream: SourceBufferName, timeRange: TimeRanges, playlistType: PlaylistLevelType, appendedPart?: Part | null, removeAppending?: boolean): void;
  1364. /**
  1365. * Checks if the fragment passed in is loaded in the buffer properly
  1366. * Partially loaded fragments will be registered as a partial fragment
  1367. */
  1368. detectPartialFragments(data: FragBufferedData): void;
  1369. private removeParts;
  1370. fragBuffered(frag: MediaFragment, force?: true): void;
  1371. private getBufferedTimes;
  1372. /**
  1373. * Gets the partial fragment for a certain time
  1374. */
  1375. getPartialFragment(time: number): MediaFragment | null;
  1376. isEndListAppended(type: PlaylistLevelType): boolean;
  1377. getState(fragment: Fragment): FragmentState;
  1378. private isTimeBuffered;
  1379. private onManifestLoading;
  1380. private onFragLoaded;
  1381. private onBufferAppended;
  1382. private onFragBuffered;
  1383. private hasFragment;
  1384. hasFragments(type?: PlaylistLevelType): boolean;
  1385. hasParts(type: PlaylistLevelType): boolean;
  1386. removeFragmentsInRange(start: number, end: number, playlistType: PlaylistLevelType, withGapOnly?: boolean, unbufferedOnly?: boolean): void;
  1387. removeFragment(fragment: Fragment): void;
  1388. removeAllFragments(): void;
  1389. }
  1390. export declare interface FragParsedData {
  1391. frag: Fragment;
  1392. part: Part | null;
  1393. }
  1394. export declare interface FragParsingInitSegmentData {
  1395. }
  1396. export declare interface FragParsingMetadataData {
  1397. id: string;
  1398. frag: Fragment;
  1399. details: LevelDetails;
  1400. samples: MetadataSample[];
  1401. }
  1402. export declare interface FragParsingUserdataData {
  1403. id: string;
  1404. frag: Fragment;
  1405. details: LevelDetails;
  1406. samples: UserdataSample[];
  1407. }
  1408. export declare type GapControllerConfig = {
  1409. detectStallWithCurrentTimeMs: number;
  1410. highBufferWatchdogPeriod: number;
  1411. nudgeOffset: number;
  1412. nudgeMaxRetry: number;
  1413. nudgeOnVideoHole: boolean;
  1414. };
  1415. export declare type HdcpLevel = (typeof HdcpLevels)[number];
  1416. export declare const HdcpLevels: readonly ["NONE", "TYPE-0", "TYPE-1", null];
  1417. /**
  1418. * The `Hls` class is the core of the HLS.js library used to instantiate player instances.
  1419. * @public
  1420. */
  1421. declare class Hls implements HlsEventEmitter {
  1422. private static defaultConfig;
  1423. /**
  1424. * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`.
  1425. */
  1426. readonly config: HlsConfig;
  1427. /**
  1428. * The configuration object provided on player instantiation.
  1429. */
  1430. readonly userConfig: Partial<HlsConfig>;
  1431. /**
  1432. * The logger functions used by this player instance, configured on player instantiation.
  1433. */
  1434. readonly logger: ILogger;
  1435. private coreComponents;
  1436. private networkControllers;
  1437. private _emitter;
  1438. private _autoLevelCapping;
  1439. private _maxHdcpLevel;
  1440. private abrController;
  1441. private bufferController;
  1442. private capLevelController;
  1443. private latencyController;
  1444. private levelController;
  1445. private streamController;
  1446. private audioStreamController?;
  1447. private subtititleStreamController?;
  1448. private audioTrackController?;
  1449. private subtitleTrackController?;
  1450. private interstitialsController?;
  1451. private gapController;
  1452. private emeController?;
  1453. private cmcdController?;
  1454. private _media;
  1455. private _url;
  1456. private _sessionId?;
  1457. private triggeringException?;
  1458. private started;
  1459. /**
  1460. * Get the video-dev/hls.js package version.
  1461. */
  1462. static get version(): string;
  1463. /**
  1464. * Check if the required MediaSource Extensions are available.
  1465. */
  1466. static isMSESupported(): boolean;
  1467. /**
  1468. * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.
  1469. */
  1470. static isSupported(): boolean;
  1471. /**
  1472. * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).
  1473. */
  1474. static getMediaSource(): typeof MediaSource | undefined;
  1475. static get Events(): typeof Events;
  1476. static get MetadataSchema(): typeof MetadataSchema;
  1477. static get ErrorTypes(): typeof ErrorTypes;
  1478. static get ErrorDetails(): typeof ErrorDetails;
  1479. /**
  1480. * Get the default configuration applied to new instances.
  1481. */
  1482. static get DefaultConfig(): HlsConfig;
  1483. /**
  1484. * Replace the default configuration applied to new instances.
  1485. */
  1486. static set DefaultConfig(defaultConfig: HlsConfig);
  1487. /**
  1488. * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
  1489. * @param userConfig - Configuration options applied over `Hls.DefaultConfig`
  1490. */
  1491. constructor(userConfig?: Partial<HlsConfig>);
  1492. createController(ControllerClass: any, components: any): any;
  1493. on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1494. once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1495. removeAllListeners<E extends keyof HlsListeners>(event?: E | undefined): void;
  1496. off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E] | undefined, context?: Context, once?: boolean | undefined): void;
  1497. listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];
  1498. emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1499. trigger<E extends keyof HlsListeners>(event: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1500. listenerCount<E extends keyof HlsListeners>(event: E): number;
  1501. /**
  1502. * Dispose of the instance
  1503. */
  1504. destroy(): void;
  1505. /**
  1506. * Attaches Hls.js to a media element
  1507. */
  1508. attachMedia(data: HTMLMediaElement | MediaAttachingData): void;
  1509. /**
  1510. * Detach Hls.js from the media
  1511. */
  1512. detachMedia(): void;
  1513. /**
  1514. * Detach HTMLMediaElement, MediaSource, and SourceBuffers without reset, for attaching to another instance
  1515. */
  1516. transferMedia(): AttachMediaSourceData | null;
  1517. /**
  1518. * Set the source URL. Can be relative or absolute.
  1519. */
  1520. loadSource(url: string): void;
  1521. /**
  1522. * Gets the currently loaded URL
  1523. */
  1524. get url(): string | null;
  1525. /**
  1526. * Whether or not enough has been buffered to seek to start position or use `media.currentTime` to determine next load position
  1527. */
  1528. get hasEnoughToStart(): boolean;
  1529. /**
  1530. * Get the startPosition set on startLoad(position) or on autostart with config.startPosition
  1531. */
  1532. get startPosition(): number;
  1533. /**
  1534. * Start loading data from the stream source.
  1535. * Depending on default config, client starts loading automatically when a source is set.
  1536. *
  1537. * @param startPosition - Set the start position to stream from.
  1538. * Defaults to -1 (None: starts from earliest point)
  1539. */
  1540. startLoad(startPosition?: number, skipSeekToStartPosition?: boolean): void;
  1541. /**
  1542. * Stop loading of any stream data.
  1543. */
  1544. stopLoad(): void;
  1545. /**
  1546. * Returns whether loading, toggled with `startLoad()` and `stopLoad()`, is active or not`.
  1547. */
  1548. get loadingEnabled(): boolean;
  1549. /**
  1550. * Returns state of fragment loading toggled by calling `pauseBuffering()` and `resumeBuffering()`.
  1551. */
  1552. get bufferingEnabled(): boolean;
  1553. /**
  1554. * Resumes stream controller segment loading after `pauseBuffering` has been called.
  1555. */
  1556. resumeBuffering(): void;
  1557. /**
  1558. * Prevents stream controller from loading new segments until `resumeBuffering` is called.
  1559. * This allows for media buffering to be paused without interupting playlist loading.
  1560. */
  1561. pauseBuffering(): void;
  1562. get inFlightFragments(): InFlightFragments;
  1563. /**
  1564. * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)
  1565. */
  1566. swapAudioCodec(): void;
  1567. /**
  1568. * When the media-element fails, this allows to detach and then re-attach it
  1569. * as one call (convenience method).
  1570. *
  1571. * Automatic recovery of media-errors by this process is configurable.
  1572. */
  1573. recoverMediaError(): void;
  1574. removeLevel(levelIndex: number): void;
  1575. /**
  1576. * @returns a UUID for this player instance
  1577. */
  1578. get sessionId(): string;
  1579. /**
  1580. * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH
  1581. */
  1582. get levels(): Level[];
  1583. /**
  1584. * @returns LevelDetails of last loaded level (variant) or `null` prior to loading a media playlist.
  1585. */
  1586. get latestLevelDetails(): LevelDetails | null;
  1587. /**
  1588. * @returns Level object of selected level (variant) or `null` prior to selecting a level or once the level is removed.
  1589. */
  1590. get loadLevelObj(): Level | null;
  1591. /**
  1592. * Index of quality level (variant) currently played
  1593. */
  1594. get currentLevel(): number;
  1595. /**
  1596. * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.
  1597. */
  1598. set currentLevel(newLevel: number);
  1599. /**
  1600. * Index of next quality level loaded as scheduled by stream controller.
  1601. */
  1602. get nextLevel(): number;
  1603. /**
  1604. * Set quality level index for next loaded data.
  1605. * This will switch the video quality asap, without interrupting playback.
  1606. * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).
  1607. * @param newLevel - Pass -1 for automatic level selection
  1608. */
  1609. set nextLevel(newLevel: number);
  1610. /**
  1611. * Return the quality level of the currently or last (of none is loaded currently) segment
  1612. */
  1613. get loadLevel(): number;
  1614. /**
  1615. * Set quality level index for next loaded data in a conservative way.
  1616. * This will switch the quality without flushing, but interrupt current loading.
  1617. * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.
  1618. * @param newLevel - Pass -1 for automatic level selection
  1619. */
  1620. set loadLevel(newLevel: number);
  1621. /**
  1622. * get next quality level loaded
  1623. */
  1624. get nextLoadLevel(): number;
  1625. /**
  1626. * Set quality level of next loaded segment in a fully "non-destructive" way.
  1627. * Same as `loadLevel` but will wait for next switch (until current loading is done).
  1628. */
  1629. set nextLoadLevel(level: number);
  1630. /**
  1631. * Return "first level": like a default level, if not set,
  1632. * falls back to index of first level referenced in manifest
  1633. */
  1634. get firstLevel(): number;
  1635. /**
  1636. * Sets "first-level", see getter.
  1637. */
  1638. set firstLevel(newLevel: number);
  1639. /**
  1640. * Return the desired start level for the first fragment that will be loaded.
  1641. * The default value of -1 indicates automatic start level selection.
  1642. * Setting hls.nextAutoLevel without setting a startLevel will result in
  1643. * the nextAutoLevel value being used for one fragment load.
  1644. */
  1645. get startLevel(): number;
  1646. /**
  1647. * set start level (level of first fragment that will be played back)
  1648. * if not overrided by user, first level appearing in manifest will be used as start level
  1649. * if -1 : automatic start level selection, playback will start from level matching download bandwidth
  1650. * (determined from download of first segment)
  1651. */
  1652. set startLevel(newLevel: number);
  1653. /**
  1654. * Whether level capping is enabled.
  1655. * Default value is set via `config.capLevelToPlayerSize`.
  1656. */
  1657. get capLevelToPlayerSize(): boolean;
  1658. /**
  1659. * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.
  1660. */
  1661. set capLevelToPlayerSize(shouldStartCapping: boolean);
  1662. /**
  1663. * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
  1664. */
  1665. get autoLevelCapping(): number;
  1666. /**
  1667. * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.
  1668. */
  1669. get bandwidthEstimate(): number;
  1670. set bandwidthEstimate(abrEwmaDefaultEstimate: number);
  1671. get abrEwmaDefaultEstimate(): number;
  1672. /**
  1673. * get time to first byte estimate
  1674. * @type {number}
  1675. */
  1676. get ttfbEstimate(): number;
  1677. /**
  1678. * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)
  1679. */
  1680. set autoLevelCapping(newLevel: number);
  1681. get maxHdcpLevel(): HdcpLevel;
  1682. set maxHdcpLevel(value: HdcpLevel);
  1683. /**
  1684. * True when automatic level selection enabled
  1685. */
  1686. get autoLevelEnabled(): boolean;
  1687. /**
  1688. * Level set manually (if any)
  1689. */
  1690. get manualLevel(): number;
  1691. /**
  1692. * min level selectable in auto mode according to config.minAutoBitrate
  1693. */
  1694. get minAutoLevel(): number;
  1695. /**
  1696. * max level selectable in auto mode according to autoLevelCapping
  1697. */
  1698. get maxAutoLevel(): number;
  1699. get firstAutoLevel(): number;
  1700. /**
  1701. * next automatically selected quality level
  1702. */
  1703. get nextAutoLevel(): number;
  1704. /**
  1705. * this setter is used to force next auto level.
  1706. * this is useful to force a switch down in auto mode:
  1707. * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)
  1708. * forced value is valid for one fragment. upon successful frag loading at forced level,
  1709. * this value will be resetted to -1 by ABR controller.
  1710. */
  1711. set nextAutoLevel(nextLevel: number);
  1712. /**
  1713. * get the datetime value relative to media.currentTime for the active level Program Date Time if present
  1714. */
  1715. get playingDate(): Date | null;
  1716. get mainForwardBufferInfo(): BufferInfo | null;
  1717. get maxBufferLength(): number;
  1718. /**
  1719. * Find and select the best matching audio track, making a level switch when a Group change is necessary.
  1720. * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.
  1721. */
  1722. setAudioOption(audioOption: MediaPlaylist | AudioSelectionOption | undefined): MediaPlaylist | null;
  1723. /**
  1724. * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.
  1725. * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.
  1726. */
  1727. setSubtitleOption(subtitleOption: MediaPlaylist | SubtitleSelectionOption | undefined): MediaPlaylist | null;
  1728. /**
  1729. * Get the complete list of audio tracks across all media groups
  1730. */
  1731. get allAudioTracks(): MediaPlaylist[];
  1732. /**
  1733. * Get the list of selectable audio tracks
  1734. */
  1735. get audioTracks(): MediaPlaylist[];
  1736. /**
  1737. * index of the selected audio track (index in audio track lists)
  1738. */
  1739. get audioTrack(): number;
  1740. /**
  1741. * selects an audio track, based on its index in audio track lists
  1742. */
  1743. set audioTrack(audioTrackId: number);
  1744. /**
  1745. * get the complete list of subtitle tracks across all media groups
  1746. */
  1747. get allSubtitleTracks(): MediaPlaylist[];
  1748. /**
  1749. * get alternate subtitle tracks list from playlist
  1750. */
  1751. get subtitleTracks(): MediaPlaylist[];
  1752. /**
  1753. * index of the selected subtitle track (index in subtitle track lists)
  1754. */
  1755. get subtitleTrack(): number;
  1756. get media(): HTMLMediaElement | null;
  1757. /**
  1758. * select an subtitle track, based on its index in subtitle track lists
  1759. */
  1760. set subtitleTrack(subtitleTrackId: number);
  1761. /**
  1762. * Whether subtitle display is enabled or not
  1763. */
  1764. get subtitleDisplay(): boolean;
  1765. /**
  1766. * Enable/disable subtitle display rendering
  1767. */
  1768. set subtitleDisplay(value: boolean);
  1769. /**
  1770. * get mode for Low-Latency HLS loading
  1771. */
  1772. get lowLatencyMode(): boolean;
  1773. /**
  1774. * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.
  1775. */
  1776. set lowLatencyMode(mode: boolean);
  1777. /**
  1778. * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)
  1779. * @returns null prior to loading live Playlist
  1780. */
  1781. get liveSyncPosition(): number | null;
  1782. /**
  1783. * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)
  1784. * @returns 0 before first playlist is loaded
  1785. */
  1786. get latency(): number;
  1787. /**
  1788. * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```
  1789. * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```
  1790. * @returns 0 before first playlist is loaded
  1791. */
  1792. get maxLatency(): number;
  1793. /**
  1794. * target distance from the edge as calculated by the latency controller
  1795. */
  1796. get targetLatency(): number | null;
  1797. set targetLatency(latency: number);
  1798. /**
  1799. * the rate at which the edge of the current live playlist is advancing or 1 if there is none
  1800. */
  1801. get drift(): number | null;
  1802. /**
  1803. * set to true when startLoad is called before MANIFEST_PARSED event
  1804. */
  1805. get forceStartLoad(): boolean;
  1806. /**
  1807. * ContentSteering pathways getter
  1808. */
  1809. get pathways(): string[];
  1810. /**
  1811. * ContentSteering pathwayPriority getter/setter
  1812. */
  1813. get pathwayPriority(): string[] | null;
  1814. set pathwayPriority(pathwayPriority: string[]);
  1815. /**
  1816. * returns true when all SourceBuffers are buffered to the end
  1817. */
  1818. get bufferedToEnd(): boolean;
  1819. /**
  1820. * returns Interstitials Program Manager
  1821. */
  1822. get interstitialsManager(): InterstitialsManager | null;
  1823. /**
  1824. * returns mediaCapabilities.decodingInfo for a variant/rendition
  1825. */
  1826. getMediaDecodingInfo(level: Level, audioTracks?: MediaPlaylist[]): Promise<MediaDecodingInfo>;
  1827. }
  1828. export default Hls;
  1829. export declare class HlsAssetPlayer {
  1830. readonly hls: Hls;
  1831. readonly interstitial: InterstitialEvent;
  1832. readonly assetItem: InterstitialAssetItem;
  1833. tracks: Partial<BufferCodecsData> | null;
  1834. private hasDetails;
  1835. private mediaAttached;
  1836. private _currentTime?;
  1837. private _bufferedEosTime?;
  1838. constructor(HlsPlayerClass: typeof Hls, userConfig: Partial<HlsConfig>, interstitial: InterstitialEvent, assetItem: InterstitialAssetItem);
  1839. bufferedInPlaceToEnd(media?: HTMLMediaElement | null): boolean;
  1840. private checkPlayout;
  1841. get destroyed(): boolean;
  1842. get assetId(): InterstitialAssetId;
  1843. get interstitialId(): InterstitialId;
  1844. get media(): HTMLMediaElement | null;
  1845. get bufferedEnd(): number;
  1846. get currentTime(): number;
  1847. get duration(): number;
  1848. get remaining(): number;
  1849. get startOffset(): number;
  1850. get timelineOffset(): number;
  1851. set timelineOffset(value: number);
  1852. private getAssetTime;
  1853. private removeMediaListeners;
  1854. private bufferSnapShot;
  1855. destroy(): void;
  1856. attachMedia(data: HTMLMediaElement | MediaAttachingData): void;
  1857. detachMedia(): void;
  1858. resumeBuffering(): void;
  1859. pauseBuffering(): void;
  1860. transferMedia(): AttachMediaSourceData | null;
  1861. on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1862. once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1863. off<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1864. toString(): string;
  1865. }
  1866. export declare interface HlsChunkPerformanceTiming extends HlsPerformanceTiming {
  1867. executeStart: number;
  1868. executeEnd: number;
  1869. }
  1870. export declare type HlsConfig = {
  1871. debug: boolean | ILogger;
  1872. enableWorker: boolean;
  1873. workerPath: null | string;
  1874. enableSoftwareAES: boolean;
  1875. minAutoBitrate: number;
  1876. ignoreDevicePixelRatio: boolean;
  1877. maxDevicePixelRatio: number;
  1878. preferManagedMediaSource: boolean;
  1879. timelineOffset?: number;
  1880. ignorePlaylistParsingErrors: boolean;
  1881. loader: {
  1882. new (confg: HlsConfig): Loader<LoaderContext>;
  1883. };
  1884. fLoader?: FragmentLoaderConstructor;
  1885. pLoader?: PlaylistLoaderConstructor;
  1886. fetchSetup?: (context: LoaderContext, initParams: any) => Promise<Request> | Request;
  1887. xhrSetup?: (xhr: XMLHttpRequest, url: string) => Promise<void> | void;
  1888. audioStreamController?: typeof AudioStreamController;
  1889. audioTrackController?: typeof AudioTrackController;
  1890. subtitleStreamController?: typeof SubtitleStreamController;
  1891. subtitleTrackController?: typeof SubtitleTrackController;
  1892. timelineController?: typeof TimelineController;
  1893. emeController?: typeof EMEController;
  1894. cmcd?: CMCDControllerConfig;
  1895. cmcdController?: typeof CMCDController;
  1896. contentSteeringController?: typeof ContentSteeringController;
  1897. interstitialsController?: typeof InterstitialsController;
  1898. enableInterstitialPlayback: boolean;
  1899. interstitialAppendInPlace: boolean;
  1900. interstitialLiveLookAhead: number;
  1901. assetPlayerId?: string;
  1902. useMediaCapabilities: boolean;
  1903. abrController: typeof AbrController;
  1904. bufferController: typeof BufferController;
  1905. capLevelController: typeof CapLevelController;
  1906. errorController: typeof ErrorController;
  1907. fpsController: typeof FPSController;
  1908. progressive: boolean;
  1909. lowLatencyMode: boolean;
  1910. primarySessionId?: string;
  1911. } & ABRControllerConfig & BufferControllerConfig & CapLevelControllerConfig & EMEControllerConfig & FPSControllerConfig & GapControllerConfig & LevelControllerConfig & MP4RemuxerConfig & StreamControllerConfig & SelectionPreferences & LatencyControllerConfig & MetadataControllerConfig & TimelineControllerConfig & TSDemuxerConfig & HlsLoadPolicies & FragmentLoaderConfig & PlaylistLoaderConfig;
  1912. export declare interface HlsEventEmitter {
  1913. on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1914. once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;
  1915. removeAllListeners<E extends keyof HlsListeners>(event?: E): void;
  1916. off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E], context?: Context, once?: boolean): void;
  1917. listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];
  1918. emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;
  1919. listenerCount<E extends keyof HlsListeners>(event: E): number;
  1920. }
  1921. /**
  1922. * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API.
  1923. */
  1924. export declare interface HlsListeners {
  1925. [Events.MEDIA_ATTACHING]: (event: Events.MEDIA_ATTACHING, data: MediaAttachingData) => void;
  1926. [Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;
  1927. [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING, data: MediaDetachingData) => void;
  1928. [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED, data: MediaDetachedData) => void;
  1929. [Events.MEDIA_ENDED]: (event: Events.MEDIA_ENDED, data: MediaEndedData) => void;
  1930. [Events.STALL_RESOLVED]: (event: Events.STALL_RESOLVED, data: {}) => void;
  1931. [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;
  1932. [Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;
  1933. [Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;
  1934. [Events.BUFFER_APPENDING]: (event: Events.BUFFER_APPENDING, data: BufferAppendingData) => void;
  1935. [Events.BUFFER_APPENDED]: (event: Events.BUFFER_APPENDED, data: BufferAppendedData) => void;
  1936. [Events.BUFFER_EOS]: (event: Events.BUFFER_EOS, data: BufferEOSData) => void;
  1937. [Events.BUFFERED_TO_END]: (event: Events.BUFFERED_TO_END) => void;
  1938. [Events.BUFFER_FLUSHING]: (event: Events.BUFFER_FLUSHING, data: BufferFlushingData) => void;
  1939. [Events.BUFFER_FLUSHED]: (event: Events.BUFFER_FLUSHED, data: BufferFlushedData) => void;
  1940. [Events.MANIFEST_LOADING]: (event: Events.MANIFEST_LOADING, data: ManifestLoadingData) => void;
  1941. [Events.MANIFEST_LOADED]: (event: Events.MANIFEST_LOADED, data: ManifestLoadedData) => void;
  1942. [Events.MANIFEST_PARSED]: (event: Events.MANIFEST_PARSED, data: ManifestParsedData) => void;
  1943. [Events.LEVEL_SWITCHING]: (event: Events.LEVEL_SWITCHING, data: LevelSwitchingData) => void;
  1944. [Events.LEVEL_SWITCHED]: (event: Events.LEVEL_SWITCHED, data: LevelSwitchedData) => void;
  1945. [Events.LEVEL_LOADING]: (event: Events.LEVEL_LOADING, data: LevelLoadingData) => void;
  1946. [Events.LEVEL_LOADED]: (event: Events.LEVEL_LOADED, data: LevelLoadedData) => void;
  1947. [Events.LEVEL_UPDATED]: (event: Events.LEVEL_UPDATED, data: LevelUpdatedData) => void;
  1948. [Events.LEVEL_PTS_UPDATED]: (event: Events.LEVEL_PTS_UPDATED, data: LevelPTSUpdatedData) => void;
  1949. [Events.LEVELS_UPDATED]: (event: Events.LEVELS_UPDATED, data: LevelsUpdatedData) => void;
  1950. [Events.AUDIO_TRACKS_UPDATED]: (event: Events.AUDIO_TRACKS_UPDATED, data: AudioTracksUpdatedData) => void;
  1951. [Events.AUDIO_TRACK_SWITCHING]: (event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData) => void;
  1952. [Events.AUDIO_TRACK_SWITCHED]: (event: Events.AUDIO_TRACK_SWITCHED, data: AudioTrackSwitchedData) => void;
  1953. [Events.AUDIO_TRACK_LOADING]: (event: Events.AUDIO_TRACK_LOADING, data: TrackLoadingData) => void;
  1954. [Events.AUDIO_TRACK_LOADED]: (event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData) => void;
  1955. [Events.AUDIO_TRACK_UPDATED]: (event: Events.AUDIO_TRACK_UPDATED, data: AudioTrackUpdatedData) => void;
  1956. [Events.SUBTITLE_TRACKS_UPDATED]: (event: Events.SUBTITLE_TRACKS_UPDATED, data: SubtitleTracksUpdatedData) => void;
  1957. [Events.SUBTITLE_TRACKS_CLEARED]: (event: Events.SUBTITLE_TRACKS_CLEARED) => void;
  1958. [Events.SUBTITLE_TRACK_SWITCH]: (event: Events.SUBTITLE_TRACK_SWITCH, data: SubtitleTrackSwitchData) => void;
  1959. [Events.SUBTITLE_TRACK_LOADING]: (event: Events.SUBTITLE_TRACK_LOADING, data: TrackLoadingData) => void;
  1960. [Events.SUBTITLE_TRACK_LOADED]: (event: Events.SUBTITLE_TRACK_LOADED, data: SubtitleTrackLoadedData) => void;
  1961. [Events.SUBTITLE_TRACK_UPDATED]: (event: Events.SUBTITLE_TRACK_UPDATED, data: SubtitleTrackUpdatedData) => void;
  1962. [Events.SUBTITLE_FRAG_PROCESSED]: (event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessedData) => void;
  1963. [Events.CUES_PARSED]: (event: Events.CUES_PARSED, data: CuesParsedData) => void;
  1964. [Events.NON_NATIVE_TEXT_TRACKS_FOUND]: (event: Events.NON_NATIVE_TEXT_TRACKS_FOUND, data: NonNativeTextTracksData) => void;
  1965. [Events.INIT_PTS_FOUND]: (event: Events.INIT_PTS_FOUND, data: InitPTSFoundData) => void;
  1966. [Events.FRAG_LOADING]: (event: Events.FRAG_LOADING, data: FragLoadingData) => void;
  1967. [Events.FRAG_LOAD_EMERGENCY_ABORTED]: (event: Events.FRAG_LOAD_EMERGENCY_ABORTED, data: FragLoadEmergencyAbortedData) => void;
  1968. [Events.FRAG_LOADED]: (event: Events.FRAG_LOADED, data: FragLoadedData) => void;
  1969. [Events.FRAG_DECRYPTED]: (event: Events.FRAG_DECRYPTED, data: FragDecryptedData) => void;
  1970. [Events.FRAG_PARSING_INIT_SEGMENT]: (event: Events.FRAG_PARSING_INIT_SEGMENT, data: FragParsingInitSegmentData) => void;
  1971. [Events.FRAG_PARSING_USERDATA]: (event: Events.FRAG_PARSING_USERDATA, data: FragParsingUserdataData) => void;
  1972. [Events.FRAG_PARSING_METADATA]: (event: Events.FRAG_PARSING_METADATA, data: FragParsingMetadataData) => void;
  1973. [Events.FRAG_PARSED]: (event: Events.FRAG_PARSED, data: FragParsedData) => void;
  1974. [Events.FRAG_BUFFERED]: (event: Events.FRAG_BUFFERED, data: FragBufferedData) => void;
  1975. [Events.FRAG_CHANGED]: (event: Events.FRAG_CHANGED, data: FragChangedData) => void;
  1976. [Events.FPS_DROP]: (event: Events.FPS_DROP, data: FPSDropData) => void;
  1977. [Events.FPS_DROP_LEVEL_CAPPING]: (event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData) => void;
  1978. [Events.MAX_AUTO_LEVEL_UPDATED]: (event: Events.MAX_AUTO_LEVEL_UPDATED, data: MaxAutoLevelUpdatedData) => void;
  1979. [Events.ERROR]: (event: Events.ERROR, data: ErrorData) => void;
  1980. [Events.DESTROYING]: (event: Events.DESTROYING) => void;
  1981. [Events.KEY_LOADING]: (event: Events.KEY_LOADING, data: KeyLoadingData) => void;
  1982. [Events.KEY_LOADED]: (event: Events.KEY_LOADED, data: KeyLoadedData) => void;
  1983. [Events.LIVE_BACK_BUFFER_REACHED]: (event: Events.LIVE_BACK_BUFFER_REACHED, data: LiveBackBufferData) => void;
  1984. [Events.BACK_BUFFER_REACHED]: (event: Events.BACK_BUFFER_REACHED, data: BackBufferData) => void;
  1985. [Events.STEERING_MANIFEST_LOADED]: (event: Events.STEERING_MANIFEST_LOADED, data: SteeringManifestLoadedData) => void;
  1986. [Events.ASSET_LIST_LOADING]: (event: Events.ASSET_LIST_LOADING, data: AssetListLoadingData) => void;
  1987. [Events.ASSET_LIST_LOADED]: (event: Events.ASSET_LIST_LOADED, data: AssetListLoadedData) => void;
  1988. [Events.INTERSTITIALS_UPDATED]: (event: Events.INTERSTITIALS_UPDATED, data: InterstitialsUpdatedData) => void;
  1989. [Events.INTERSTITIALS_BUFFERED_TO_BOUNDARY]: (event: Events.INTERSTITIALS_BUFFERED_TO_BOUNDARY, data: InterstitialsBufferedToBoundaryData) => void;
  1990. [Events.INTERSTITIAL_ASSET_PLAYER_CREATED]: (event: Events.INTERSTITIAL_ASSET_PLAYER_CREATED, data: InterstitialAssetPlayerCreatedData) => void;
  1991. [Events.INTERSTITIAL_STARTED]: (event: Events.INTERSTITIAL_STARTED, data: InterstitialStartedData) => void;
  1992. [Events.INTERSTITIAL_ASSET_STARTED]: (event: Events.INTERSTITIAL_ASSET_STARTED, data: InterstitialAssetStartedData) => void;
  1993. [Events.INTERSTITIAL_ASSET_ENDED]: (event: Events.INTERSTITIAL_ASSET_ENDED, data: InterstitialAssetEndedData) => void;
  1994. [Events.INTERSTITIAL_ASSET_ERROR]: (event: Events.INTERSTITIAL_ASSET_ERROR, data: InterstitialAssetErrorData) => void;
  1995. [Events.INTERSTITIAL_ENDED]: (event: Events.INTERSTITIAL_ENDED, data: InterstitialEndedData) => void;
  1996. [Events.INTERSTITIALS_PRIMARY_RESUMED]: (event: Events.INTERSTITIALS_PRIMARY_RESUMED, data: InterstitialsPrimaryResumed) => void;
  1997. [Events.PLAYOUT_LIMIT_REACHED]: (event: Events.PLAYOUT_LIMIT_REACHED, data: {}) => void;
  1998. [Events.EVENT_CUE_ENTER]: (event: Events.EVENT_CUE_ENTER, data: {}) => void;
  1999. }
  2000. export declare type HlsLoadPolicies = {
  2001. fragLoadPolicy: LoadPolicy;
  2002. keyLoadPolicy: LoadPolicy;
  2003. certLoadPolicy: LoadPolicy;
  2004. playlistLoadPolicy: LoadPolicy;
  2005. manifestLoadPolicy: LoadPolicy;
  2006. steeringManifestLoadPolicy: LoadPolicy;
  2007. interstitialAssetListLoadPolicy: LoadPolicy;
  2008. };
  2009. export declare interface HlsPerformanceTiming {
  2010. start: number;
  2011. end: number;
  2012. }
  2013. export declare interface HlsProgressivePerformanceTiming extends HlsPerformanceTiming {
  2014. first: number;
  2015. }
  2016. export declare const enum HlsSkip {
  2017. No = "",
  2018. Yes = "YES",
  2019. v2 = "v2"
  2020. }
  2021. export declare class HlsUrlParameters {
  2022. msn?: number;
  2023. part?: number;
  2024. skip?: HlsSkip;
  2025. constructor(msn?: number, part?: number, skip?: HlsSkip);
  2026. addDirectives(uri: string): string | never;
  2027. }
  2028. export declare type IErrorAction = {
  2029. action: NetworkErrorAction;
  2030. flags: ErrorActionFlags;
  2031. retryCount?: number;
  2032. retryConfig?: RetryConfig;
  2033. hdcpLevel?: HdcpLevel;
  2034. nextAutoLevel?: number;
  2035. resolved?: boolean;
  2036. };
  2037. export declare interface ILogFunction {
  2038. (message?: any, ...optionalParams: any[]): void;
  2039. }
  2040. export declare interface ILogger {
  2041. trace: ILogFunction;
  2042. debug: ILogFunction;
  2043. log: ILogFunction;
  2044. warn: ILogFunction;
  2045. info: ILogFunction;
  2046. error: ILogFunction;
  2047. }
  2048. export declare type InFlightData = {
  2049. frag: Fragment | null;
  2050. state: (typeof State)[keyof typeof State];
  2051. };
  2052. export declare type InFlightFragments = {
  2053. [PlaylistLevelType.MAIN]: InFlightData;
  2054. [PlaylistLevelType.AUDIO]?: InFlightData;
  2055. [PlaylistLevelType.SUBTITLE]?: InFlightData;
  2056. };
  2057. export declare interface InitPTSFoundData {
  2058. id: PlaylistLevelType;
  2059. frag: MediaFragment;
  2060. initPTS: number;
  2061. timescale: number;
  2062. }
  2063. export declare interface InitSegmentData {
  2064. tracks?: TrackSet;
  2065. initPTS: number | undefined;
  2066. timescale: number | undefined;
  2067. }
  2068. export declare interface InterstitialAssetEndedData {
  2069. asset: InterstitialAssetItem;
  2070. assetListIndex: number;
  2071. event: InterstitialEvent;
  2072. schedule: InterstitialScheduleItem[];
  2073. scheduleIndex: number;
  2074. player: HlsAssetPlayer;
  2075. }
  2076. export declare type InterstitialAssetErrorData = {
  2077. asset: InterstitialAssetItem | null;
  2078. assetListIndex: number;
  2079. event: InterstitialEvent | null;
  2080. schedule: InterstitialScheduleItem[] | null;
  2081. scheduleIndex: number;
  2082. player: HlsAssetPlayer | null;
  2083. } & ErrorData;
  2084. export declare type InterstitialAssetId = string;
  2085. export declare type InterstitialAssetItem = {
  2086. parentIdentifier: InterstitialId;
  2087. identifier: InterstitialAssetId;
  2088. duration: number | null;
  2089. startOffset: number;
  2090. timelineStart: number;
  2091. uri: string;
  2092. error?: Error;
  2093. };
  2094. export declare interface InterstitialAssetPlayerCreatedData {
  2095. asset: InterstitialAssetItem;
  2096. assetListIndex: number;
  2097. assetListResponse?: AssetListJSON;
  2098. event: InterstitialEvent;
  2099. player: HlsAssetPlayer;
  2100. }
  2101. export declare interface InterstitialAssetStartedData {
  2102. asset: InterstitialAssetItem;
  2103. assetListIndex: number;
  2104. event: InterstitialEvent;
  2105. schedule: InterstitialScheduleItem[];
  2106. scheduleIndex: number;
  2107. player: HlsAssetPlayer;
  2108. }
  2109. export declare interface InterstitialEndedData {
  2110. event: InterstitialEvent;
  2111. schedule: InterstitialScheduleItem[];
  2112. scheduleIndex: number;
  2113. }
  2114. export declare class InterstitialEvent {
  2115. private base;
  2116. private _duration;
  2117. private _timelineStart;
  2118. private appendInPlaceDisabled?;
  2119. appendInPlaceStarted?: boolean;
  2120. dateRange: DateRange;
  2121. hasPlayed: boolean;
  2122. cumulativeDuration: number;
  2123. resumeOffset: number;
  2124. playoutLimit: number;
  2125. restrictions: PlaybackRestrictions;
  2126. snapOptions: SnapOptions;
  2127. assetList: InterstitialAssetItem[];
  2128. assetListLoader?: Loader<LoaderContext>;
  2129. assetListResponse: AssetListJSON | null;
  2130. resumeAnchor?: MediaFragmentRef;
  2131. error?: Error;
  2132. resetOnResume?: boolean;
  2133. constructor(dateRange: DateRange, base: BaseData);
  2134. setDateRange(dateRange: DateRange): void;
  2135. reset(): void;
  2136. isAssetPastPlayoutLimit(assetIndex: number): boolean;
  2137. findAssetIndex(asset: InterstitialAssetItem): number;
  2138. get identifier(): InterstitialId;
  2139. get startDate(): Date;
  2140. get startTime(): number;
  2141. get startOffset(): number;
  2142. get startIsAligned(): boolean;
  2143. get resumptionOffset(): number;
  2144. get resumeTime(): number;
  2145. get appendInPlace(): boolean;
  2146. set appendInPlace(value: boolean);
  2147. get timelineStart(): number;
  2148. set timelineStart(value: number);
  2149. get duration(): number;
  2150. set duration(value: number);
  2151. get cue(): DateRangeCue;
  2152. get timelineOccupancy(): TimelineOccupancy;
  2153. get supplementsPrimary(): boolean;
  2154. get contentMayVary(): boolean;
  2155. get assetUrl(): string | undefined;
  2156. get assetListUrl(): string | undefined;
  2157. get baseUrl(): string;
  2158. get assetListLoaded(): boolean;
  2159. toString(): string;
  2160. }
  2161. export declare interface InterstitialEventWithAssetList extends InterstitialEvent {
  2162. assetListUrl: string;
  2163. }
  2164. export declare type InterstitialId = string;
  2165. export declare interface InterstitialPlayer {
  2166. currentTime: number;
  2167. duration: number;
  2168. assetPlayers: (HlsAssetPlayer | null)[];
  2169. playingIndex: number;
  2170. scheduleItem: InterstitialScheduleEventItem | null;
  2171. }
  2172. export declare interface InterstitialsBufferedToBoundaryData {
  2173. events: InterstitialEvent[];
  2174. schedule: InterstitialScheduleItem[];
  2175. bufferingIndex: number;
  2176. playingIndex: number;
  2177. }
  2178. export declare type InterstitialScheduleDurations = {
  2179. primary: number;
  2180. playout: number;
  2181. integrated: number;
  2182. };
  2183. export declare type InterstitialScheduleEventItem = {
  2184. event: InterstitialEvent;
  2185. start: number;
  2186. end: number;
  2187. playout: {
  2188. start: number;
  2189. end: number;
  2190. };
  2191. integrated: {
  2192. start: number;
  2193. end: number;
  2194. };
  2195. };
  2196. export declare type InterstitialScheduleItem = InterstitialScheduleEventItem | InterstitialSchedulePrimaryItem;
  2197. export declare type InterstitialSchedulePrimaryItem = {
  2198. nextEvent: InterstitialEvent | null;
  2199. previousEvent: InterstitialEvent | null;
  2200. event?: undefined;
  2201. start: number;
  2202. end: number;
  2203. playout: {
  2204. start: number;
  2205. end: number;
  2206. };
  2207. integrated: {
  2208. start: number;
  2209. end: number;
  2210. };
  2211. };
  2212. export declare class InterstitialsController extends Logger implements NetworkComponentAPI {
  2213. private readonly HlsPlayerClass;
  2214. private readonly hls;
  2215. private readonly assetListLoader;
  2216. private mediaSelection;
  2217. private altSelection;
  2218. private media;
  2219. private detachedData;
  2220. private requiredTracks;
  2221. private manager;
  2222. private playerQueue;
  2223. private bufferedPos;
  2224. private timelinePos;
  2225. private schedule;
  2226. private playingItem;
  2227. private bufferingItem;
  2228. private waitingItem;
  2229. private endedItem;
  2230. private playingAsset;
  2231. private endedAsset;
  2232. private bufferingAsset;
  2233. private shouldPlay;
  2234. constructor(hls: Hls, HlsPlayerClass: typeof Hls);
  2235. private registerListeners;
  2236. private unregisterListeners;
  2237. startLoad(): void;
  2238. stopLoad(): void;
  2239. resumeBuffering(): void;
  2240. pauseBuffering(): void;
  2241. destroy(): void;
  2242. private onDestroying;
  2243. private removeMediaListeners;
  2244. private onMediaAttaching;
  2245. private onMediaAttached;
  2246. private clearScheduleState;
  2247. private onMediaDetaching;
  2248. get interstitialsManager(): InterstitialsManager | null;
  2249. private get effectivePlayingItem();
  2250. private get effectivePlayingAsset();
  2251. private get playingLastItem();
  2252. private get playbackStarted();
  2253. private get currentTime();
  2254. private get primaryMedia();
  2255. private isInterstitial;
  2256. private retreiveMediaSource;
  2257. private transferMediaFromPlayer;
  2258. private transferMediaTo;
  2259. private onPlay;
  2260. private onPause;
  2261. private onSeeking;
  2262. private onInterstitialCueEnter;
  2263. private onTimeupdate;
  2264. private checkStart;
  2265. private advanceAfterAssetEnded;
  2266. private setScheduleToAssetAtTime;
  2267. private setSchedulePosition;
  2268. private advanceSchedule;
  2269. private get playbackDisabled();
  2270. private get primaryDetails();
  2271. private get primaryLive();
  2272. private resumePrimary;
  2273. private getPrimaryResumption;
  2274. private isAssetBuffered;
  2275. private attachPrimary;
  2276. private startLoadingPrimaryAt;
  2277. private onManifestLoading;
  2278. private onLevelUpdated;
  2279. private onAudioTrackUpdated;
  2280. private onSubtitleTrackUpdated;
  2281. private onAudioTrackSwitching;
  2282. private onSubtitleTrackSwitch;
  2283. private onBufferCodecs;
  2284. private onBufferAppended;
  2285. private onBufferFlushed;
  2286. private onBufferedToEnd;
  2287. private onMediaEnded;
  2288. private onScheduleUpdate;
  2289. private updateItem;
  2290. private itemsMatch;
  2291. private eventItemsMatch;
  2292. private findItemIndex;
  2293. private updateSchedule;
  2294. private checkBuffer;
  2295. private updateBufferedPos;
  2296. private assetsBuffered;
  2297. private setBufferingItem;
  2298. private bufferedToItem;
  2299. private preloadPrimary;
  2300. private bufferedToEvent;
  2301. private preloadAssets;
  2302. private flushFrontBuffer;
  2303. private getAssetPlayerQueueIndex;
  2304. private getAssetPlayer;
  2305. private getBufferingPlayer;
  2306. private createAsset;
  2307. private createAssetPlayer;
  2308. private clearInterstitial;
  2309. private clearAssetPlayer;
  2310. private emptyPlayerQueue;
  2311. private startAssetPlayer;
  2312. private bufferAssetPlayer;
  2313. private handleAssetItemError;
  2314. private primaryFallback;
  2315. private onAssetListLoaded;
  2316. private onError;
  2317. }
  2318. export declare interface InterstitialsManager {
  2319. events: InterstitialEvent[];
  2320. schedule: InterstitialScheduleItem[];
  2321. interstitialPlayer: InterstitialPlayer | null;
  2322. playerQueue: HlsAssetPlayer[];
  2323. bufferingAsset: InterstitialAssetItem | null;
  2324. bufferingItem: InterstitialScheduleItem | null;
  2325. bufferingIndex: number;
  2326. playingAsset: InterstitialAssetItem | null;
  2327. playingItem: InterstitialScheduleItem | null;
  2328. playingIndex: number;
  2329. primary: PlayheadTimes;
  2330. integrated: PlayheadTimes;
  2331. skip: () => void;
  2332. }
  2333. export declare interface InterstitialsPrimaryResumed {
  2334. schedule: InterstitialScheduleItem[];
  2335. scheduleIndex: number;
  2336. }
  2337. export declare interface InterstitialStartedData {
  2338. event: InterstitialEvent;
  2339. schedule: InterstitialScheduleItem[];
  2340. scheduleIndex: number;
  2341. }
  2342. export declare interface InterstitialsUpdatedData {
  2343. events: InterstitialEvent[];
  2344. schedule: InterstitialScheduleItem[];
  2345. durations: InterstitialScheduleDurations;
  2346. removedIds: string[];
  2347. }
  2348. export declare interface KeyLoadedData {
  2349. frag: Fragment;
  2350. keyInfo: KeyLoaderInfo;
  2351. }
  2352. export declare class KeyLoader implements ComponentAPI {
  2353. private readonly config;
  2354. keyUriToKeyInfo: {
  2355. [keyuri: string]: KeyLoaderInfo;
  2356. };
  2357. emeController: EMEController | null;
  2358. constructor(config: HlsConfig);
  2359. abort(type?: PlaylistLevelType): void;
  2360. detach(): void;
  2361. destroy(): void;
  2362. createKeyLoadError(frag: Fragment, details: ErrorDetails | undefined, error: Error, networkDetails?: any, response?: {
  2363. url: string;
  2364. data: undefined;
  2365. code: number;
  2366. text: string;
  2367. }): LoadError;
  2368. loadClear(loadingFrag: Fragment, encryptedFragments: Fragment[]): void | Promise<void>;
  2369. load(frag: Fragment): Promise<KeyLoadedData>;
  2370. loadInternal(frag: Fragment, keySystemFormat?: KeySystemFormats): Promise<KeyLoadedData>;
  2371. loadKeyEME(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData>;
  2372. loadKeyHTTP(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData>;
  2373. private resetLoader;
  2374. }
  2375. export declare interface KeyLoaderContext extends LoaderContext {
  2376. keyInfo: KeyLoaderInfo;
  2377. frag: Fragment;
  2378. }
  2379. export declare interface KeyLoaderInfo {
  2380. decryptdata: LevelKey;
  2381. keyLoadPromise: Promise<KeyLoadedData> | null;
  2382. loader: Loader<KeyLoaderContext> | null;
  2383. mediaKeySessionContext: MediaKeySessionContext | null;
  2384. }
  2385. export declare interface KeyLoadingData {
  2386. frag: Fragment;
  2387. }
  2388. export declare const enum KeySystemFormats {
  2389. CLEARKEY = "org.w3.clearkey",
  2390. FAIRPLAY = "com.apple.streamingkeydelivery",
  2391. PLAYREADY = "com.microsoft.playready",
  2392. WIDEVINE = "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
  2393. }
  2394. /**
  2395. * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess
  2396. */
  2397. export declare const enum KeySystems {
  2398. CLEARKEY = "org.w3.clearkey",
  2399. FAIRPLAY = "com.apple.fps",
  2400. PLAYREADY = "com.microsoft.playready",
  2401. WIDEVINE = "com.widevine.alpha"
  2402. }
  2403. export declare type LatencyControllerConfig = {
  2404. liveSyncDurationCount: number;
  2405. liveMaxLatencyDurationCount: number;
  2406. liveSyncDuration?: number;
  2407. liveMaxLatencyDuration?: number;
  2408. maxLiveSyncPlaybackRate: number;
  2409. liveSyncOnStallIncrease: number;
  2410. };
  2411. export declare class Level {
  2412. readonly _attrs: LevelAttributes[];
  2413. readonly audioCodec: string | undefined;
  2414. readonly bitrate: number;
  2415. readonly codecSet: string;
  2416. readonly url: string[];
  2417. readonly frameRate: number;
  2418. readonly height: number;
  2419. readonly id: number;
  2420. readonly name: string;
  2421. readonly supplemental: CodecsParsed | undefined;
  2422. readonly videoCodec: string | undefined;
  2423. readonly width: number;
  2424. details?: LevelDetails;
  2425. fragmentError: number;
  2426. loadError: number;
  2427. loaded?: {
  2428. bytes: number;
  2429. duration: number;
  2430. };
  2431. realBitrate: number;
  2432. supportedPromise?: Promise<MediaDecodingInfo>;
  2433. supportedResult?: MediaDecodingInfo;
  2434. private _avgBitrate;
  2435. private _audioGroups?;
  2436. private _subtitleGroups?;
  2437. private readonly _urlId;
  2438. constructor(data: LevelParsed | MediaPlaylist);
  2439. get maxBitrate(): number;
  2440. get averageBitrate(): number;
  2441. get attrs(): LevelAttributes;
  2442. get codecs(): string;
  2443. get pathwayId(): string;
  2444. get videoRange(): VideoRange;
  2445. get score(): number;
  2446. get uri(): string;
  2447. hasAudioGroup(groupId: string | undefined): boolean;
  2448. hasSubtitleGroup(groupId: string | undefined): boolean;
  2449. get audioGroups(): (string | undefined)[] | undefined;
  2450. get subtitleGroups(): (string | undefined)[] | undefined;
  2451. addGroupId(type: string, groupId: string | undefined): void;
  2452. get urlId(): number;
  2453. set urlId(value: number);
  2454. get audioGroupIds(): (string | undefined)[] | undefined;
  2455. get textGroupIds(): (string | undefined)[] | undefined;
  2456. get audioGroupId(): string | undefined;
  2457. get textGroupId(): string | undefined;
  2458. addFallback(): void;
  2459. }
  2460. export declare interface LevelAttributes extends AttrList {
  2461. 'ALLOWED-CPC'?: string;
  2462. AUDIO?: string;
  2463. 'AVERAGE-BANDWIDTH'?: string;
  2464. BANDWIDTH?: string;
  2465. 'CLOSED-CAPTIONS'?: string;
  2466. CODECS?: string;
  2467. 'FRAME-RATE'?: string;
  2468. 'HDCP-LEVEL'?: 'TYPE-0' | 'TYPE-1' | 'NONE';
  2469. 'PATHWAY-ID'?: string;
  2470. RESOLUTION?: string;
  2471. SCORE?: string;
  2472. 'STABLE-VARIANT-ID'?: string;
  2473. SUBTITLES?: string;
  2474. 'SUPPLEMENTAL-CODECS'?: string;
  2475. VIDEO?: string;
  2476. 'VIDEO-RANGE'?: VideoRange;
  2477. }
  2478. export declare type LevelControllerConfig = {
  2479. startLevel?: number;
  2480. };
  2481. /**
  2482. * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}.
  2483. */
  2484. export declare class LevelDetails {
  2485. PTSKnown: boolean;
  2486. alignedSliding: boolean;
  2487. averagetargetduration?: number;
  2488. endCC: number;
  2489. endSN: number;
  2490. fragments: MediaFragment[];
  2491. fragmentHint?: MediaFragment;
  2492. partList: Part[] | null;
  2493. dateRanges: Record<string, DateRange>;
  2494. dateRangeTagCount: number;
  2495. live: boolean;
  2496. requestScheduled: number;
  2497. ageHeader: number;
  2498. advancedDateTime?: number;
  2499. updated: boolean;
  2500. advanced: boolean;
  2501. misses: number;
  2502. startCC: number;
  2503. startSN: number;
  2504. startTimeOffset: number | null;
  2505. targetduration: number;
  2506. totalduration: number;
  2507. type: string | null;
  2508. url: string;
  2509. m3u8: string;
  2510. version: number | null;
  2511. canBlockReload: boolean;
  2512. canSkipUntil: number;
  2513. canSkipDateRanges: boolean;
  2514. skippedSegments: number;
  2515. recentlyRemovedDateranges?: string[];
  2516. partHoldBack: number;
  2517. holdBack: number;
  2518. partTarget: number;
  2519. preloadHint?: AttrList;
  2520. renditionReports?: AttrList[];
  2521. tuneInGoal: number;
  2522. deltaUpdateFailed?: boolean;
  2523. driftStartTime: number;
  2524. driftEndTime: number;
  2525. driftStart: number;
  2526. driftEnd: number;
  2527. encryptedFragments: Fragment[];
  2528. playlistParsingError: Error | null;
  2529. variableList: VariableMap | null;
  2530. hasVariableRefs: boolean;
  2531. appliedTimelineOffset?: number;
  2532. constructor(baseUrl: string);
  2533. reloaded(previous: LevelDetails | undefined): void;
  2534. get hasProgramDateTime(): boolean;
  2535. get levelTargetDuration(): number;
  2536. get drift(): number;
  2537. get edge(): number;
  2538. get partEnd(): number;
  2539. get fragmentEnd(): number;
  2540. get fragmentStart(): number;
  2541. get age(): number;
  2542. get lastPartIndex(): number;
  2543. get maxPartIndex(): number;
  2544. get lastPartSn(): number;
  2545. get expired(): boolean;
  2546. }
  2547. export declare class LevelKey implements DecryptData {
  2548. readonly uri: string;
  2549. readonly method: string;
  2550. readonly keyFormat: string;
  2551. readonly keyFormatVersions: number[];
  2552. readonly encrypted: boolean;
  2553. readonly isCommonEncryption: boolean;
  2554. iv: Uint8Array<ArrayBuffer> | null;
  2555. key: Uint8Array<ArrayBuffer> | null;
  2556. keyId: Uint8Array<ArrayBuffer> | null;
  2557. pssh: Uint8Array<ArrayBuffer> | null;
  2558. static clearKeyUriToKeyIdMap(): void;
  2559. constructor(method: string, uri: string, format: string, formatversions?: number[], iv?: Uint8Array<ArrayBuffer> | null);
  2560. isSupported(): boolean;
  2561. getDecryptData(sn: number | 'initSegment'): LevelKey | null;
  2562. }
  2563. export declare interface LevelLoadedData {
  2564. details: LevelDetails;
  2565. id: number;
  2566. level: number;
  2567. levelInfo: Level;
  2568. networkDetails: any;
  2569. stats: LoaderStats;
  2570. deliveryDirectives: HlsUrlParameters | null;
  2571. withoutMultiVariant?: boolean;
  2572. }
  2573. export declare interface LevelLoadingData {
  2574. id: number;
  2575. level: number;
  2576. levelInfo: Level;
  2577. pathwayId: string | undefined;
  2578. url: string;
  2579. deliveryDirectives: HlsUrlParameters | null;
  2580. }
  2581. export declare interface LevelParsed extends CodecsParsed {
  2582. attrs: LevelAttributes;
  2583. bitrate: number;
  2584. details?: LevelDetails;
  2585. height?: number;
  2586. id?: number;
  2587. name: string;
  2588. supplemental?: CodecsParsed;
  2589. url: string;
  2590. width?: number;
  2591. }
  2592. export declare interface LevelPTSUpdatedData {
  2593. details: LevelDetails;
  2594. level: Level;
  2595. drift: number;
  2596. type: string;
  2597. frag: Fragment;
  2598. start: number;
  2599. end: number;
  2600. }
  2601. export declare interface LevelsUpdatedData {
  2602. levels: Array<Level>;
  2603. }
  2604. export declare interface LevelSwitchedData {
  2605. level: number;
  2606. }
  2607. export declare interface LevelSwitchingData {
  2608. level: number;
  2609. attrs: LevelAttributes;
  2610. details: LevelDetails | undefined;
  2611. bitrate: number;
  2612. averageBitrate: number;
  2613. maxBitrate: number;
  2614. realBitrate: number;
  2615. width: number;
  2616. height: number;
  2617. codecSet: string;
  2618. audioCodec: string | undefined;
  2619. videoCodec: string | undefined;
  2620. audioGroups: (string | undefined)[] | undefined;
  2621. subtitleGroups: (string | undefined)[] | undefined;
  2622. loaded: {
  2623. bytes: number;
  2624. duration: number;
  2625. } | undefined;
  2626. loadError: number;
  2627. fragmentError: number;
  2628. name: string | undefined;
  2629. id: number;
  2630. uri: string;
  2631. url: string[];
  2632. urlId: 0;
  2633. audioGroupIds: (string | undefined)[] | undefined;
  2634. textGroupIds: (string | undefined)[] | undefined;
  2635. }
  2636. export declare interface LevelUpdatedData {
  2637. details: LevelDetails;
  2638. level: number;
  2639. }
  2640. /**
  2641. * @deprecated Use BackBufferData
  2642. */
  2643. export declare interface LiveBackBufferData extends BackBufferData {
  2644. }
  2645. export declare interface Loader<T extends LoaderContext> {
  2646. destroy(): void;
  2647. abort(): void;
  2648. load(context: T, config: LoaderConfiguration, callbacks: LoaderCallbacks<T>): void;
  2649. /**
  2650. * `getCacheAge()` is called by hls.js to get the duration that a given object
  2651. * has been sitting in a cache proxy when playing live. If implemented,
  2652. * this should return a value in seconds.
  2653. *
  2654. * For HTTP based loaders, this should return the contents of the "age" header.
  2655. *
  2656. * @returns time object being lodaded
  2657. */
  2658. getCacheAge?: () => number | null;
  2659. getResponseHeader?: (name: string) => string | null;
  2660. context: T | null;
  2661. stats: LoaderStats;
  2662. }
  2663. export declare interface LoaderCallbacks<T extends LoaderContext> {
  2664. onSuccess: LoaderOnSuccess<T>;
  2665. onError: LoaderOnError<T>;
  2666. onTimeout: LoaderOnTimeout<T>;
  2667. onAbort?: LoaderOnAbort<T>;
  2668. onProgress?: LoaderOnProgress<T>;
  2669. }
  2670. export declare type LoaderConfig = {
  2671. maxTimeToFirstByteMs: number;
  2672. maxLoadTimeMs: number;
  2673. timeoutRetry: RetryConfig | null;
  2674. errorRetry: RetryConfig | null;
  2675. };
  2676. export declare interface LoaderConfiguration {
  2677. loadPolicy: LoaderConfig;
  2678. /**
  2679. * @deprecated use LoaderConfig timeoutRetry and errorRetry maxNumRetry
  2680. */
  2681. maxRetry: number;
  2682. /**
  2683. * @deprecated use LoaderConfig maxTimeToFirstByteMs and maxLoadTimeMs
  2684. */
  2685. timeout: number;
  2686. /**
  2687. * @deprecated use LoaderConfig timeoutRetry and errorRetry retryDelayMs
  2688. */
  2689. retryDelay: number;
  2690. /**
  2691. * @deprecated use LoaderConfig timeoutRetry and errorRetry maxRetryDelayMs
  2692. */
  2693. maxRetryDelay: number;
  2694. highWaterMark?: number;
  2695. }
  2696. export declare interface LoaderContext {
  2697. url: string;
  2698. responseType: string;
  2699. headers?: Record<string, string>;
  2700. rangeStart?: number;
  2701. rangeEnd?: number;
  2702. progressData?: boolean;
  2703. }
  2704. export declare type LoaderOnAbort<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;
  2705. export declare type LoaderOnError<T extends LoaderContext> = (error: {
  2706. code: number;
  2707. text: string;
  2708. }, context: T, networkDetails: any, stats: LoaderStats) => void;
  2709. export declare type LoaderOnProgress<T extends LoaderContext> = (stats: LoaderStats, context: T, data: string | ArrayBuffer, networkDetails: any) => void;
  2710. export declare type LoaderOnSuccess<T extends LoaderContext> = (response: LoaderResponse, stats: LoaderStats, context: T, networkDetails: any) => void;
  2711. export declare type LoaderOnTimeout<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;
  2712. export declare interface LoaderResponse {
  2713. url: string;
  2714. data?: string | ArrayBuffer | Object;
  2715. code?: number;
  2716. text?: string;
  2717. }
  2718. export declare class LoadError extends Error {
  2719. readonly data: FragLoadFailResult;
  2720. constructor(data: FragLoadFailResult);
  2721. }
  2722. export declare interface LoaderStats {
  2723. aborted: boolean;
  2724. loaded: number;
  2725. retry: number;
  2726. total: number;
  2727. chunkCount: number;
  2728. bwEstimate: number;
  2729. loading: HlsProgressivePerformanceTiming;
  2730. parsing: HlsPerformanceTiming;
  2731. buffering: HlsProgressivePerformanceTiming;
  2732. }
  2733. export declare type LoadPolicy = {
  2734. default: LoaderConfig;
  2735. };
  2736. export declare class LoadStats implements LoaderStats {
  2737. aborted: boolean;
  2738. loaded: number;
  2739. retry: number;
  2740. total: number;
  2741. chunkCount: number;
  2742. bwEstimate: number;
  2743. loading: HlsProgressivePerformanceTiming;
  2744. parsing: HlsPerformanceTiming;
  2745. buffering: HlsProgressivePerformanceTiming;
  2746. }
  2747. export declare class Logger implements ILogger {
  2748. trace: ILogFunction;
  2749. debug: ILogFunction;
  2750. log: ILogFunction;
  2751. warn: ILogFunction;
  2752. info: ILogFunction;
  2753. error: ILogFunction;
  2754. constructor(label: string, logger: ILogger);
  2755. }
  2756. export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';
  2757. export declare interface ManifestLoadedData {
  2758. audioTracks: MediaPlaylist[];
  2759. captions?: MediaPlaylist[];
  2760. contentSteering: ContentSteeringOptions | null;
  2761. levels: LevelParsed[];
  2762. networkDetails: any;
  2763. sessionData: Record<string, AttrList> | null;
  2764. sessionKeys: LevelKey[] | null;
  2765. startTimeOffset: number | null;
  2766. stats: LoaderStats;
  2767. subtitles?: MediaPlaylist[];
  2768. url: string;
  2769. variableList: VariableMap | null;
  2770. }
  2771. export declare interface ManifestLoadingData {
  2772. url: string;
  2773. }
  2774. export declare interface ManifestParsedData {
  2775. levels: Level[];
  2776. audioTracks: MediaPlaylist[];
  2777. subtitleTracks: MediaPlaylist[];
  2778. sessionData: Record<string, AttrList> | null;
  2779. sessionKeys: LevelKey[] | null;
  2780. firstLevel: number;
  2781. stats: LoaderStats;
  2782. audio: boolean;
  2783. video: boolean;
  2784. altAudio: boolean;
  2785. }
  2786. export declare interface MaxAutoLevelUpdatedData {
  2787. autoLevelCapping: number;
  2788. levels: Level[] | null;
  2789. maxAutoLevel: number;
  2790. minAutoLevel: number;
  2791. maxHdcpLevel: HdcpLevel;
  2792. }
  2793. export declare interface MediaAttachedData {
  2794. media: HTMLMediaElement;
  2795. mediaSource?: MediaSource;
  2796. }
  2797. export declare interface MediaAttachingData {
  2798. media: HTMLMediaElement;
  2799. mediaSource?: MediaSource | null;
  2800. tracks?: SourceBufferTrackSet;
  2801. overrides?: MediaOverrides;
  2802. }
  2803. export declare interface MediaAttributes extends AttrList {
  2804. 'ASSOC-LANGUAGE'?: string;
  2805. AUTOSELECT?: 'YES' | 'NO';
  2806. CHANNELS?: string;
  2807. CHARACTERISTICS?: string;
  2808. DEFAULT?: 'YES' | 'NO';
  2809. FORCED?: 'YES' | 'NO';
  2810. 'GROUP-ID': string;
  2811. 'INSTREAM-ID'?: string;
  2812. LANGUAGE?: string;
  2813. NAME: string;
  2814. 'PATHWAY-ID'?: string;
  2815. 'STABLE-RENDITION-ID'?: string;
  2816. TYPE?: 'AUDIO' | 'VIDEO' | 'SUBTITLES' | 'CLOSED-CAPTIONS';
  2817. URI?: string;
  2818. }
  2819. export declare type MediaDecodingInfo = {
  2820. supported: boolean;
  2821. configurations: readonly MediaDecodingConfiguration[];
  2822. decodingInfoResults: readonly MediaCapabilitiesDecodingInfo[];
  2823. error?: Error;
  2824. };
  2825. export declare interface MediaDetachedData {
  2826. transferMedia?: AttachMediaSourceData | null;
  2827. }
  2828. export declare interface MediaDetachingData {
  2829. transferMedia?: AttachMediaSourceData | null;
  2830. }
  2831. export declare interface MediaEndedData {
  2832. stalled: boolean;
  2833. }
  2834. export declare interface MediaFragment extends Fragment {
  2835. sn: number;
  2836. ref: MediaFragmentRef;
  2837. }
  2838. declare type MediaFragmentRef = {
  2839. base: Base;
  2840. start: number;
  2841. duration: number;
  2842. sn: number;
  2843. programDateTime: number | null;
  2844. };
  2845. export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;
  2846. export declare interface MediaKeySessionContext {
  2847. keySystem: KeySystems;
  2848. mediaKeys: MediaKeys;
  2849. decryptdata: LevelKey;
  2850. mediaKeysSession: MediaKeySession;
  2851. keyStatus: MediaKeyStatus;
  2852. licenseXhr?: XMLHttpRequest;
  2853. _onmessage?: (this: MediaKeySession, ev: MediaKeyMessageEvent) => any;
  2854. _onkeystatuseschange?: (this: MediaKeySession, ev: Event) => any;
  2855. }
  2856. export declare type MediaOverrides = {
  2857. duration?: number;
  2858. endOfStream?: boolean;
  2859. cueRemoval?: boolean;
  2860. };
  2861. export declare interface MediaPlaylist {
  2862. attrs: MediaAttributes;
  2863. audioCodec?: string;
  2864. autoselect: boolean;
  2865. bitrate: number;
  2866. channels?: string;
  2867. characteristics?: string;
  2868. details?: LevelDetails;
  2869. height?: number;
  2870. default: boolean;
  2871. forced: boolean;
  2872. groupId: string;
  2873. id: number;
  2874. instreamId?: string;
  2875. lang?: string;
  2876. assocLang?: string;
  2877. name: string;
  2878. textCodec?: string;
  2879. unknownCodecs?: string[];
  2880. type: MediaPlaylistType | 'main';
  2881. url: string;
  2882. videoCodec?: string;
  2883. width?: number;
  2884. }
  2885. export declare type MediaPlaylistType = MainPlaylistType | SubtitlePlaylistType;
  2886. export declare type MetadataControllerConfig = {
  2887. enableDateRangeMetadataCues: boolean;
  2888. enableEmsgMetadataCues: boolean;
  2889. enableEmsgKLVMetadata: boolean;
  2890. enableID3MetadataCues: boolean;
  2891. };
  2892. export declare interface MetadataSample {
  2893. pts: number;
  2894. dts: number;
  2895. duration: number;
  2896. len?: number;
  2897. data: Uint8Array;
  2898. type: MetadataSchema;
  2899. }
  2900. export declare enum MetadataSchema {
  2901. audioId3 = "org.id3",
  2902. dateRange = "com.apple.quicktime.HLS",
  2903. emsg = "https://aomedia.org/emsg/ID3",
  2904. misbklv = "urn:misb:KLV:bin:1910.1"
  2905. }
  2906. export declare type MP4RemuxerConfig = {
  2907. stretchShortVideoTrack: boolean;
  2908. maxAudioFramesDrift: number;
  2909. };
  2910. export declare interface NetworkComponentAPI extends ComponentAPI {
  2911. startLoad(startPosition: number, skipSeekToStartPosition?: boolean): void;
  2912. stopLoad(): void;
  2913. pauseBuffering?(): void;
  2914. resumeBuffering?(): void;
  2915. }
  2916. export declare const enum NetworkErrorAction {
  2917. DoNothing = 0,
  2918. SendEndCallback = 1,// Reserved for future use
  2919. SendAlternateToPenaltyBox = 2,
  2920. RemoveAlternatePermanently = 3,// Reserved for future use
  2921. InsertDiscontinuity = 4,// Reserved for future use
  2922. RetryRequest = 5
  2923. }
  2924. export declare interface NonNativeTextTrack {
  2925. _id?: string;
  2926. label: any;
  2927. kind: string;
  2928. default: boolean;
  2929. closedCaptions?: MediaPlaylist;
  2930. subtitleTrack?: MediaPlaylist;
  2931. }
  2932. export declare interface NonNativeTextTracksData {
  2933. tracks: Array<NonNativeTextTrack>;
  2934. }
  2935. declare interface PACData {
  2936. row: number;
  2937. indent: number | null;
  2938. color: string | null;
  2939. underline: boolean;
  2940. italics: boolean;
  2941. }
  2942. export declare type ParsedMultivariantPlaylist = {
  2943. contentSteering: ContentSteeringOptions | null;
  2944. levels: LevelParsed[];
  2945. playlistParsingError: Error | null;
  2946. sessionData: Record<string, AttrList> | null;
  2947. sessionKeys: LevelKey[] | null;
  2948. startTimeOffset: number | null;
  2949. variableList: VariableMap | null;
  2950. hasVariableRefs: boolean;
  2951. };
  2952. export declare interface ParsedTrack extends BaseTrack {
  2953. initSegment?: Uint8Array;
  2954. }
  2955. /**
  2956. * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}.
  2957. */
  2958. export declare class Part extends BaseSegment {
  2959. readonly fragOffset: number;
  2960. readonly duration: number;
  2961. readonly gap: boolean;
  2962. readonly independent: boolean;
  2963. readonly relurl: string;
  2964. readonly fragment: MediaFragment;
  2965. readonly index: number;
  2966. constructor(partAttrs: AttrList, frag: MediaFragment, base: Base | string, index: number, previous?: Part);
  2967. get start(): number;
  2968. get end(): number;
  2969. get loaded(): boolean;
  2970. }
  2971. export declare interface PartsLoadedData {
  2972. frag: Fragment;
  2973. part: Part | null;
  2974. partsLoaded?: FragLoadedData[];
  2975. }
  2976. export declare type PathwayClone = {
  2977. 'BASE-ID': string;
  2978. ID: string;
  2979. 'URI-REPLACEMENT': UriReplacement;
  2980. };
  2981. declare class PenState {
  2982. foreground: string;
  2983. underline: boolean;
  2984. italics: boolean;
  2985. background: string;
  2986. flash: boolean;
  2987. reset(): void;
  2988. setStyles(styles: Partial<PenStyles>): void;
  2989. isDefault(): boolean;
  2990. equals(other: PenState): boolean;
  2991. copy(newPenState: PenState): void;
  2992. toString(): string;
  2993. }
  2994. declare type PenStyles = {
  2995. foreground: string | null;
  2996. underline: boolean;
  2997. italics: boolean;
  2998. background: string;
  2999. flash: boolean;
  3000. };
  3001. export declare type PlaybackRestrictions = {
  3002. skip: boolean;
  3003. jump: boolean;
  3004. };
  3005. export declare type PlayheadTimes = {
  3006. bufferedEnd: number;
  3007. currentTime: number;
  3008. duration: number;
  3009. seekableStart: number;
  3010. };
  3011. export declare const enum PlaylistContextType {
  3012. MANIFEST = "manifest",
  3013. LEVEL = "level",
  3014. AUDIO_TRACK = "audioTrack",
  3015. SUBTITLE_TRACK = "subtitleTrack"
  3016. }
  3017. export declare const enum PlaylistLevelType {
  3018. MAIN = "main",
  3019. AUDIO = "audio",
  3020. SUBTITLE = "subtitle"
  3021. }
  3022. /**
  3023. * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default
  3024. */
  3025. export declare type PlaylistLoaderConfig = {
  3026. manifestLoadingTimeOut: number;
  3027. manifestLoadingMaxRetry: number;
  3028. manifestLoadingRetryDelay: number;
  3029. manifestLoadingMaxRetryTimeout: number;
  3030. levelLoadingTimeOut: number;
  3031. levelLoadingMaxRetry: number;
  3032. levelLoadingRetryDelay: number;
  3033. levelLoadingMaxRetryTimeout: number;
  3034. };
  3035. export declare interface PlaylistLoaderConstructor {
  3036. new (confg: HlsConfig): Loader<PlaylistLoaderContext>;
  3037. }
  3038. export declare interface PlaylistLoaderContext extends LoaderContext {
  3039. type: PlaylistContextType;
  3040. level: number | null;
  3041. id: number | null;
  3042. groupId?: string;
  3043. pathwayId?: string;
  3044. levelDetails?: LevelDetails;
  3045. deliveryDirectives: HlsUrlParameters | null;
  3046. levelOrTrack: Level | MediaPlaylist | null;
  3047. }
  3048. export declare type RationalTimestamp = {
  3049. baseTime: number;
  3050. timescale: number;
  3051. };
  3052. export declare interface RemuxedMetadata {
  3053. samples: MetadataSample[];
  3054. }
  3055. export declare interface RemuxedTrack {
  3056. data1: Uint8Array;
  3057. data2?: Uint8Array;
  3058. startPTS: number;
  3059. endPTS: number;
  3060. startDTS: number;
  3061. endDTS: number;
  3062. type: SourceBufferName;
  3063. hasAudio: boolean;
  3064. hasVideo: boolean;
  3065. independent?: boolean;
  3066. firstKeyFrame?: number;
  3067. firstKeyFramePTS?: number;
  3068. nb: number;
  3069. transferredData1?: ArrayBuffer;
  3070. transferredData2?: ArrayBuffer;
  3071. dropped?: number;
  3072. }
  3073. export declare interface RemuxedUserdata {
  3074. samples: UserdataSample[];
  3075. }
  3076. export declare interface RemuxerResult {
  3077. audio?: RemuxedTrack;
  3078. video?: RemuxedTrack;
  3079. text?: RemuxedUserdata;
  3080. id3?: RemuxedMetadata;
  3081. initSegment?: InitSegmentData;
  3082. independent?: boolean;
  3083. }
  3084. export declare type RetryConfig = {
  3085. maxNumRetry: number;
  3086. retryDelayMs: number;
  3087. maxRetryDelayMs: number;
  3088. backoff?: 'exponential' | 'linear';
  3089. shouldRetry?: (retryConfig: RetryConfig | null | undefined, retryCount: number, isTimeout: boolean, loaderResponse: LoaderResponse | undefined, retry: boolean) => boolean;
  3090. };
  3091. /**
  3092. * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar.
  3093. * @constructor
  3094. */
  3095. declare class Row {
  3096. chars: StyledUnicodeChar[];
  3097. pos: number;
  3098. currPenState: PenState;
  3099. cueStartTime: number | null;
  3100. private logger;
  3101. constructor(logger: CaptionsLogger);
  3102. equals(other: Row): boolean;
  3103. copy(other: Row): void;
  3104. isEmpty(): boolean;
  3105. /**
  3106. * Set the cursor to a valid column.
  3107. */
  3108. setCursor(absPos: number): void;
  3109. /**
  3110. * Move the cursor relative to current position.
  3111. */
  3112. moveCursor(relPos: number): void;
  3113. /**
  3114. * Backspace, move one step back and clear character.
  3115. */
  3116. backSpace(): void;
  3117. insertChar(byte: number): void;
  3118. clearFromPos(startPos: number): void;
  3119. clear(): void;
  3120. clearToEndOfRow(): void;
  3121. getTextString(): string;
  3122. setPenStyles(styles: Partial<PenStyles>): void;
  3123. }
  3124. export declare type SelectionPreferences = {
  3125. videoPreference?: VideoSelectionOption;
  3126. audioPreference?: AudioSelectionOption;
  3127. subtitlePreference?: SubtitleSelectionOption;
  3128. };
  3129. export declare type SnapOptions = {
  3130. out: boolean;
  3131. in: boolean;
  3132. };
  3133. export declare interface SourceBufferListener {
  3134. event: string;
  3135. listener: EventListener;
  3136. }
  3137. export declare type SourceBufferName = 'video' | 'audio' | 'audiovideo';
  3138. export declare interface SourceBufferTrack extends BaseTrack {
  3139. buffer?: ExtendedSourceBuffer;
  3140. listeners: SourceBufferListener[];
  3141. ending?: boolean;
  3142. ended?: boolean;
  3143. }
  3144. export declare type SourceBufferTrackSet = Partial<Record<SourceBufferName, SourceBufferTrack>>;
  3145. export declare const State: {
  3146. STOPPED: string;
  3147. IDLE: string;
  3148. KEY_LOADING: string;
  3149. FRAG_LOADING: string;
  3150. FRAG_LOADING_WAITING_RETRY: string;
  3151. WAITING_TRACK: string;
  3152. PARSING: string;
  3153. PARSED: string;
  3154. ENDED: string;
  3155. ERROR: string;
  3156. WAITING_INIT_PTS: string;
  3157. WAITING_LEVEL: string;
  3158. };
  3159. export declare type SteeringManifest = {
  3160. VERSION: 1;
  3161. TTL: number;
  3162. 'RELOAD-URI'?: string;
  3163. 'PATHWAY-PRIORITY': string[];
  3164. 'PATHWAY-CLONES'?: PathwayClone[];
  3165. };
  3166. export declare interface SteeringManifestLoadedData {
  3167. steeringManifest: SteeringManifest;
  3168. url: string;
  3169. }
  3170. export declare class StreamController extends BaseStreamController implements NetworkComponentAPI {
  3171. private audioCodecSwap;
  3172. private level;
  3173. private _forceStartLoad;
  3174. private _hasEnoughToStart;
  3175. private altAudio;
  3176. private audioOnly;
  3177. private fragPlaying;
  3178. private fragLastKbps;
  3179. private couldBacktrack;
  3180. private backtrackFragment;
  3181. private audioCodecSwitch;
  3182. private videoBuffer;
  3183. constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
  3184. protected registerListeners(): void;
  3185. protected unregisterListeners(): void;
  3186. protected onHandlerDestroying(): void;
  3187. startLoad(startPosition: number, skipSeekToStartPosition?: boolean): void;
  3188. stopLoad(): void;
  3189. protected doTick(): void;
  3190. protected onTickEnd(): void;
  3191. private doTickIdle;
  3192. protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;
  3193. private getBufferedFrag;
  3194. private followingBufferedFrag;
  3195. immediateLevelSwitch(): void;
  3196. /**
  3197. * try to switch ASAP without breaking video playback:
  3198. * in order to ensure smooth but quick level switching,
  3199. * we need to find the next flushable buffer range
  3200. * we should take into account new segment fetch time
  3201. */
  3202. nextLevelSwitch(): void;
  3203. private abortCurrentFrag;
  3204. protected flushMainBuffer(startOffset: number, endOffset: number): void;
  3205. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  3206. protected onMediaDetaching(event: Events.MEDIA_DETACHING, data: MediaDetachingData): void;
  3207. private onMediaPlaying;
  3208. private onMediaSeeked;
  3209. protected onManifestLoading(): void;
  3210. private onManifestParsed;
  3211. private onLevelLoading;
  3212. private onLevelLoaded;
  3213. private synchronizeToLiveEdge;
  3214. protected _handleFragmentLoadProgress(data: FragLoadedData): void;
  3215. private onAudioTrackSwitching;
  3216. private onAudioTrackSwitched;
  3217. private onBufferCreated;
  3218. private onFragBuffered;
  3219. get hasEnoughToStart(): boolean;
  3220. protected onError(event: Events.ERROR, data: ErrorData): void;
  3221. private onFragLoadEmergencyAborted;
  3222. private onBufferFlushed;
  3223. private onLevelsUpdated;
  3224. swapAudioCodec(): void;
  3225. /**
  3226. * Seeks to the set startPosition if not equal to the mediaElement's current time.
  3227. */
  3228. protected seekToStartPos(): void;
  3229. private _getAudioCodec;
  3230. private _loadBitrateTestFrag;
  3231. private _handleTransmuxComplete;
  3232. private logMuxedErr;
  3233. private _bufferInitSegment;
  3234. getMainFwdBufferInfo(): BufferInfo | null;
  3235. get maxBufferLength(): number;
  3236. private backtrack;
  3237. private checkFragmentChanged;
  3238. get nextLevel(): number;
  3239. get currentFrag(): Fragment | null;
  3240. get currentProgramDateTime(): Date | null;
  3241. get currentLevel(): number;
  3242. get nextBufferedFrag(): MediaFragment | null;
  3243. get forceStartLoad(): boolean;
  3244. }
  3245. export declare type StreamControllerConfig = {
  3246. autoStartLoad: boolean;
  3247. startPosition: number;
  3248. defaultAudioCodec?: string;
  3249. initialLiveManifestSize: number;
  3250. maxBufferLength: number;
  3251. maxBufferSize: number;
  3252. maxBufferHole: number;
  3253. maxFragLookUpTolerance: number;
  3254. maxMaxBufferLength: number;
  3255. startFragPrefetch: boolean;
  3256. testBandwidth: boolean;
  3257. };
  3258. /**
  3259. * Unicode character with styling and background.
  3260. * @constructor
  3261. */
  3262. declare class StyledUnicodeChar {
  3263. uchar: string;
  3264. penState: PenState;
  3265. reset(): void;
  3266. setChar(uchar: string, newPenState: PenState): void;
  3267. setPenState(newPenState: PenState): void;
  3268. equals(other: StyledUnicodeChar): boolean;
  3269. copy(newChar: StyledUnicodeChar): void;
  3270. isEmpty(): boolean;
  3271. }
  3272. export declare interface SubtitleFragProcessedData {
  3273. success: boolean;
  3274. frag: Fragment;
  3275. error?: Error;
  3276. }
  3277. export declare type SubtitlePlaylistType = 'SUBTITLES' | 'CLOSED-CAPTIONS';
  3278. export declare type SubtitleSelectionOption = {
  3279. id?: number;
  3280. lang?: string;
  3281. assocLang?: string;
  3282. characteristics?: string;
  3283. name?: string;
  3284. groupId?: string;
  3285. default?: boolean;
  3286. forced?: boolean;
  3287. };
  3288. export declare class SubtitleStreamController extends BaseStreamController implements NetworkComponentAPI {
  3289. private currentTrackId;
  3290. private tracksBuffered;
  3291. private mainDetails;
  3292. constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);
  3293. protected onHandlerDestroying(): void;
  3294. protected registerListeners(): void;
  3295. protected unregisterListeners(): void;
  3296. startLoad(startPosition: number, skipSeekToStartPosition?: boolean): void;
  3297. protected onManifestLoading(): void;
  3298. protected onMediaDetaching(event: Events.MEDIA_DETACHING, data: MediaDetachingData): void;
  3299. private onLevelLoaded;
  3300. private onSubtitleFragProcessed;
  3301. private onBufferFlushing;
  3302. protected onError(event: Events.ERROR, data: ErrorData): void;
  3303. private onSubtitleTracksUpdated;
  3304. private onSubtitleTrackSwitch;
  3305. private onSubtitleTrackLoaded;
  3306. _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;
  3307. doTick(): void;
  3308. protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;
  3309. get mediaBufferTimeRanges(): Bufferable;
  3310. }
  3311. export declare class SubtitleTrackController extends BasePlaylistController {
  3312. private media;
  3313. private tracks;
  3314. private groupIds;
  3315. private tracksInGroup;
  3316. private trackId;
  3317. private currentTrack;
  3318. private selectDefaultTrack;
  3319. private queuedDefaultTrack;
  3320. private useTextTrackPolling;
  3321. private subtitlePollingInterval;
  3322. private _subtitleDisplay;
  3323. private asyncPollTrackChange;
  3324. constructor(hls: Hls);
  3325. destroy(): void;
  3326. get subtitleDisplay(): boolean;
  3327. set subtitleDisplay(value: boolean);
  3328. private registerListeners;
  3329. private unregisterListeners;
  3330. protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;
  3331. private pollTrackChange;
  3332. protected onMediaDetaching(event: Events.MEDIA_DETACHING, data: MediaDetachingData): void;
  3333. protected onManifestLoading(): void;
  3334. protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;
  3335. protected onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;
  3336. protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;
  3337. protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;
  3338. private switchLevel;
  3339. private findTrackId;
  3340. private findTrackForTextTrack;
  3341. protected onError(event: Events.ERROR, data: ErrorData): void;
  3342. get allSubtitleTracks(): MediaPlaylist[];
  3343. /** get alternate subtitle tracks list from playlist **/
  3344. get subtitleTracks(): MediaPlaylist[];
  3345. /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/
  3346. get subtitleTrack(): number;
  3347. set subtitleTrack(newId: number);
  3348. setSubtitleOption(subtitleOption: MediaPlaylist | SubtitleSelectionOption | undefined): MediaPlaylist | null;
  3349. protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;
  3350. protected loadingPlaylist(currentTrack: MediaPlaylist, hlsUrlParameters: HlsUrlParameters | undefined): void;
  3351. /**
  3352. * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.
  3353. * This operates on the DOM textTracks.
  3354. * A value of -1 will disable all subtitle tracks.
  3355. */
  3356. private toggleTrackModes;
  3357. /**
  3358. * This method is responsible for validating the subtitle index and periodically reloading if live.
  3359. * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.
  3360. */
  3361. private setSubtitleTrack;
  3362. private onTextTracksChanged;
  3363. }
  3364. export declare interface SubtitleTrackLoadedData extends TrackLoadedData {
  3365. }
  3366. export declare interface SubtitleTracksUpdatedData {
  3367. subtitleTracks: MediaPlaylist[];
  3368. }
  3369. export declare interface SubtitleTrackSwitchData {
  3370. id: number;
  3371. name?: string;
  3372. groupId?: string;
  3373. type?: MediaPlaylistType | 'main';
  3374. url?: string;
  3375. }
  3376. export declare interface SubtitleTrackUpdatedData {
  3377. details: LevelDetails;
  3378. id: number;
  3379. groupId: string;
  3380. }
  3381. /**
  3382. * @ignore
  3383. * Sub-class specialization of EventHandler base class.
  3384. *
  3385. * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop,
  3386. * scheduled asynchroneously, avoiding recursive calls in the same tick.
  3387. *
  3388. * The task itself is implemented in `doTick`. It can be requested and called for single execution
  3389. * using the `tick` method.
  3390. *
  3391. * It will be assured that the task execution method (`tick`) only gets called once per main loop "tick",
  3392. * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly.
  3393. *
  3394. * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`,
  3395. * and cancelled with `clearNextTick`.
  3396. *
  3397. * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`).
  3398. *
  3399. * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine.
  3400. *
  3401. * Further explanations:
  3402. *
  3403. * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously
  3404. * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks.
  3405. *
  3406. * When the task execution (`tick` method) is called in re-entrant way this is detected and
  3407. * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further
  3408. * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo).
  3409. */
  3410. export declare class TaskLoop extends Logger {
  3411. private readonly _boundTick;
  3412. private _tickTimer;
  3413. private _tickInterval;
  3414. private _tickCallCount;
  3415. constructor(label: string, logger: ILogger);
  3416. destroy(): void;
  3417. protected onHandlerDestroying(): void;
  3418. protected onHandlerDestroyed(): void;
  3419. hasInterval(): boolean;
  3420. hasNextTick(): boolean;
  3421. /**
  3422. * @param millis - Interval time (ms)
  3423. * @eturns True when interval has been scheduled, false when already scheduled (no effect)
  3424. */
  3425. setInterval(millis: number): boolean;
  3426. /**
  3427. * @returns True when interval was cleared, false when none was set (no effect)
  3428. */
  3429. clearInterval(): boolean;
  3430. /**
  3431. * @returns True when timeout was cleared, false when none was set (no effect)
  3432. */
  3433. clearNextTick(): boolean;
  3434. /**
  3435. * Will call the subclass doTick implementation in this main loop tick
  3436. * or in the next one (via setTimeout(,0)) in case it has already been called
  3437. * in this tick (in case this is a re-entrant call).
  3438. */
  3439. tick(): void;
  3440. tickImmediate(): void;
  3441. /**
  3442. * For subclass to implement task logic
  3443. * @abstract
  3444. */
  3445. protected doTick(): void;
  3446. }
  3447. export declare class TimelineController implements ComponentAPI {
  3448. private hls;
  3449. private media;
  3450. private config;
  3451. private enabled;
  3452. private Cues;
  3453. private textTracks;
  3454. private tracks;
  3455. private initPTS;
  3456. private unparsedVttFrags;
  3457. private captionsTracks;
  3458. private nonNativeCaptionsTracks;
  3459. private cea608Parser1?;
  3460. private cea608Parser2?;
  3461. private lastCc;
  3462. private lastSn;
  3463. private lastPartIndex;
  3464. private prevCC;
  3465. private vttCCs;
  3466. private captionsProperties;
  3467. constructor(hls: Hls);
  3468. destroy(): void;
  3469. private initCea608Parsers;
  3470. addCues(trackName: string, startTime: number, endTime: number, screen: CaptionScreen, cueRanges: Array<[number, number]>): void;
  3471. private onInitPtsFound;
  3472. private getExistingTrack;
  3473. createCaptionsTrack(trackName: string): void;
  3474. private createNativeTrack;
  3475. private createNonNativeTrack;
  3476. private createTextTrack;
  3477. private onMediaAttaching;
  3478. private onMediaDetaching;
  3479. private onManifestLoading;
  3480. private _cleanTracks;
  3481. private onSubtitleTracksUpdated;
  3482. private onManifestLoaded;
  3483. private closedCaptionsForLevel;
  3484. private onFragLoading;
  3485. private onFragLoaded;
  3486. private _parseIMSC1;
  3487. private _parseVTTs;
  3488. private _fallbackToIMSC1;
  3489. private _appendCues;
  3490. private onFragDecrypted;
  3491. private onSubtitleTracksCleared;
  3492. private onFragParsingUserdata;
  3493. onBufferFlushing(event: Events.BUFFER_FLUSHING, { startOffset, endOffset, endOffsetSubtitles, type }: BufferFlushingData): void;
  3494. private extractCea608Data;
  3495. }
  3496. export declare type TimelineControllerConfig = {
  3497. cueHandler: CuesInterface;
  3498. enableWebVTT: boolean;
  3499. enableIMSC1: boolean;
  3500. enableCEA708Captions: boolean;
  3501. captionsTextTrack1Label: string;
  3502. captionsTextTrack1LanguageCode: string;
  3503. captionsTextTrack2Label: string;
  3504. captionsTextTrack2LanguageCode: string;
  3505. captionsTextTrack3Label: string;
  3506. captionsTextTrack3LanguageCode: string;
  3507. captionsTextTrack4Label: string;
  3508. captionsTextTrack4LanguageCode: string;
  3509. renderTextTracksNatively: boolean;
  3510. };
  3511. export declare enum TimelineOccupancy {
  3512. Point = 0,
  3513. Range = 1
  3514. }
  3515. export declare interface Track extends BaseTrack {
  3516. buffer?: SourceBuffer;
  3517. initSegment?: Uint8Array;
  3518. }
  3519. export declare interface TrackLoadedData {
  3520. details: LevelDetails;
  3521. id: number;
  3522. groupId: string;
  3523. networkDetails: any;
  3524. stats: LoaderStats;
  3525. deliveryDirectives: HlsUrlParameters | null;
  3526. track: MediaPlaylist;
  3527. }
  3528. export declare interface TrackLoadingData {
  3529. id: number;
  3530. groupId: string;
  3531. track: MediaPlaylist;
  3532. url: string;
  3533. deliveryDirectives: HlsUrlParameters | null;
  3534. }
  3535. export declare interface TrackSet {
  3536. audio?: Track;
  3537. video?: Track;
  3538. audiovideo?: Track;
  3539. }
  3540. export declare class TransmuxerInterface {
  3541. error: Error | null;
  3542. private hls;
  3543. private id;
  3544. private instanceNo;
  3545. private observer;
  3546. private frag;
  3547. private part;
  3548. private useWorker;
  3549. private workerContext;
  3550. private transmuxer;
  3551. private onTransmuxComplete;
  3552. private onFlush;
  3553. constructor(hls: Hls, id: PlaylistLevelType, onTransmuxComplete: (transmuxResult: TransmuxerResult) => void, onFlush: (chunkMeta: ChunkMetadata) => void);
  3554. reset(): void;
  3555. private terminateWorker;
  3556. destroy(): void;
  3557. push(data: ArrayBuffer, initSegmentData: Uint8Array | undefined, audioCodec: string | undefined, videoCodec: string | undefined, frag: MediaFragment, part: Part | null, duration: number, accurateTimeOffset: boolean, chunkMeta: ChunkMetadata, defaultInitPTS?: RationalTimestamp): void;
  3558. flush(chunkMeta: ChunkMetadata): void;
  3559. private transmuxerError;
  3560. private handleFlushResult;
  3561. private onWorkerMessage;
  3562. private onWorkerError;
  3563. private configureTransmuxer;
  3564. private handleTransmuxComplete;
  3565. }
  3566. export declare interface TransmuxerResult {
  3567. remuxResult: RemuxerResult;
  3568. chunkMeta: ChunkMetadata;
  3569. }
  3570. export declare type TSDemuxerConfig = {
  3571. forceKeyFrameOnDiscontinuity: boolean;
  3572. };
  3573. export declare type UriReplacement = {
  3574. HOST?: string;
  3575. PARAMS?: {
  3576. [queryParameter: string]: string;
  3577. };
  3578. 'PER-VARIANT-URIS'?: {
  3579. [stableVariantId: string]: string;
  3580. };
  3581. 'PER-RENDITION-URIS'?: {
  3582. [stableRenditionId: string]: string;
  3583. };
  3584. };
  3585. export declare interface UserdataSample {
  3586. pts: number;
  3587. bytes?: Uint8Array;
  3588. type?: number;
  3589. payloadType?: number;
  3590. uuid?: string;
  3591. userData?: string;
  3592. userDataBytes?: Uint8Array;
  3593. }
  3594. export declare type VariableMap = Record<string, string>;
  3595. declare const enum VerboseLevel {
  3596. ERROR = 0,
  3597. TEXT = 1,
  3598. WARNING = 2,
  3599. INFO = 2,
  3600. DEBUG = 3,
  3601. DATA = 3
  3602. }
  3603. export declare type VideoRange = (typeof VideoRangeValues)[number];
  3604. export declare const VideoRangeValues: readonly ["SDR", "PQ", "HLG"];
  3605. export declare type VideoSelectionOption = {
  3606. preferHDR?: boolean;
  3607. allowedVideoRanges?: Array<VideoRange>;
  3608. videoCodec?: string;
  3609. };
  3610. export { }