hls.js.d.ts 133 KB

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