@playkit-js/playkit-js-hls 1.32.25 → 1.32.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/playkit-hls.js +1 -1
- package/dist/playkit-hls.js.map +1 -1
- package/package.json +1 -1
- package/src/hls-adapter.ts +4 -2
package/dist/playkit-hls.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("@playkit-js/playkit-js"),require("hls.js")):"function"==typeof define&&define.amd?define("playkit",["@playkit-js/playkit-js","hls.js"],r):"object"==typeof exports?exports.playkit=r(require("@playkit-js/playkit-js"),require("hls.js")):(e.playkit=e.playkit||{},e.playkit.hls=r(e.playkit.core,e.Hls))}(self,(function(e,r){return function(){"use strict";var t={230:function(r){r.exports=e},85:function(e){e.exports=r}},i={};function o(e){var r=i[e];if(void 0!==r)return r.exports;var a=i[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,{a:r}),r},o.d=function(e,r){for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return function(){o.r(a),o.d(a,{NAME:function(){return L},VERSION:function(){return O},default:function(){return C}});var e=o(230);function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}function t(e,t){if(e){if("string"==typeof e)return r(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?r(e,t):void 0}}function i(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,o,a,n,s=[],l=!0,c=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(i=a.call(t)).done)&&(s.push(i.value),s.length!==r);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=t.return&&(n=t.return(),Object(n)!==n))return}finally{if(c)throw o}}return s}}(e,r)||t(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(e){var r=function(e,r){if("object"!==s(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!==s(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===s(r)?r:String(r)}function c(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function u(e,r,t){return r&&c(e.prototype,r),t&&c(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function f(){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,r,t){var i=function(e,r){for(;!Object.prototype.hasOwnProperty.call(e,r)&&null!==(e=h(e)););return e}(e,r);if(i){var o=Object.getOwnPropertyDescriptor(i,r);return o.get?o.get.call(arguments.length<3?e:t):o.value}},f.apply(this,arguments)}function _(e,r){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e},_(e,r)}function E(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),r&&_(e,r)}function g(e,r){if(r&&("object"===s(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}function v(e,r,t){return(r=l(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var y,p=o(85),T=o.n(p),R=JSON.parse('{"recoverDecodingErrorDelay":3000,"recoverSwapAudioCodecDelay":3000,"abr":{"enabled":true,"restrictions":{}},"hlsConfig":{"fragLoadingMaxRetry":4,"maxMaxBufferLength":60,"stretchShortVideoTrack":true},"network":{}}'),m=(v(v(v(v(v(v(v(v(v(v(y={},T().ErrorDetails.MANIFEST_LOAD_ERROR,{category:e.Error.Category.MANIFEST,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.MANIFEST_LOAD_TIMEOUT,{category:e.Error.Category.MANIFEST,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.MANIFEST_PARSING_ERROR,{category:e.Error.Category.MANIFEST,code:e.Error.Code.HLSJS_CANNOT_PARSE}),T().ErrorDetails.LEVEL_LOAD_ERROR,{category:e.Error.Category.NETWORK,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.LEVEL_LOAD_TIMEOUT,{category:e.Error.Category.NETWORK,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.LEVEL_SWITCH_ERROR,{category:e.Error.Category.PLAYER,code:e.Error.Code.BITRATE_SWITCH_ISSUE}),T().ErrorDetails.FRAG_LOAD_ERROR,{category:e.Error.Category.NETWORK,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.FRAG_LOAD_TIMEOUT,{category:e.Error.Category.NETWORK,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.FRAG_PARSING_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_FRAG_PARSING_ERROR}),T().ErrorDetails.BUFFER_APPEND_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_APPEND_ISSUE}),v(v(y,T().ErrorDetails.BUFFER_APPENDING_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_APPENDING_ISSUE}),T().ErrorDetails.BUFFER_STALLED_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_STALLED_ERROR}));var b=function(e){E(o,e);var r,t,i=(r=o,t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,i=h(r);if(t){var o=h(this).constructor;e=Reflect.construct(i,arguments,o)}else e=i.apply(this,arguments);return g(this,e)});function o(e){var r;return n(this,o),r=i.call(this,e),e&&e.readystatechange&&(r.readystatechange=e.readystatechange),r}return u(o,[{key:"loadInternal",value:function(){var e,r=this,t=this.context;e=this.loader=new XMLHttpRequest;var i=this.stats;i.tfirst=0,i.loaded=0;var o,a=this.xhrSetup;try{if(a)try{o=a(e,t.url,t)}catch(r){e.open("GET",t.url,!0),o=a(e,t.url,t)}e.readyState||e.open("GET",t.url,!0)}catch(e){o=Promise.reject(e)}(o=o||Promise.resolve()).then((function(){t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=r.readystatechange.bind(r),e.onprogress=r.loadprogress.bind(r),e.responseType=t.responseType,r.requestTimeout=window.setTimeout(r.loadtimeout.bind(r),r.config.timeout),e.send()})).catch((function(i){r.callbacks.onError({code:e.status,text:i.message},t,e)}))}}]),o}(T().DefaultConfig.loader);var A,D=function(r){E(a,r);var t,i,o=(t=a,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=h(t);if(i){var o=h(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return g(this,e)});function a(r){var t;n(this,a);var i=(t=o.call(this,r)).load.bind(d(t)),s=a.redirectExternalStreamsHandler;return t.load=function(r,t,o){var n=r.url;"manifest"===r.type?e.Utils.Http.jsonp(n,s,{timeout:a.redirectExternalStreamsTimeout}).then((function(e){r.url=e,i(r,t,o)})).catch((function(){return i(r,t,o)})):i(r,t,o)},t}return u(a)}(b);function k(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}v(D,"redirectExternalStreamsHandler",(function(e,r){return r}));var S=function(o){E(c,o);var a,s,l=(a=c,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=h(a);if(s){var t=h(this).constructor;e=Reflect.construct(r,arguments,t)}else e=r.apply(this,arguments);return g(this,e)});function c(r,t,i){var o;return n(this,c),v(d(o=l.call(this,r,t,i)),"_hlsjsLib",T()),v(d(o),"_triedReloadWithRedirect",!1),v(d(o),"_playerTracks",[]),v(d(o),"_startTime",0),v(d(o),"_requestFilterError",!1),v(d(o),"_responseFilterError",!1),v(d(o),"_nativeTextTracksMap",{}),v(d(o),"_lastLoadedFragSN",-1),v(d(o),"_sameFragSNLoadedCount",0),v(d(o),"_waitForSubtitleLoad",!0),v(d(o),"_adapterEventsBindings",v(v(v(v(v(v(v(v(v({},T().Events.ERROR,(function(e,r){return o._onError(r)})),T().Events.MANIFEST_LOADED,(function(e,r){return o._onManifestLoaded(r)})),T().Events.LEVEL_SWITCHED,(function(e,r){return o._onLevelSwitched(e,r)})),T().Events.AUDIO_TRACK_SWITCHED,(function(e,r){return o._onAudioTrackSwitched(e,r)})),T().Events.FPS_DROP,(function(e,r){return o._onFpsDrop(r)})),T().Events.FRAG_PARSING_METADATA,(function(e,r){return o._onFragParsingMetadata(r)})),T().Events.FRAG_LOADED,(function(e,r){return o._onFragLoaded(r)})),T().Events.MEDIA_ATTACHED,(function(){return o._onMediaAttached()})),T().Events.LEVEL_LOADED,(function(e,r){return o._onLevelLoaded(e,r)}))),v(d(o),"_onLevelLoaded",(function(r,t){if(o.isLive()){var i=t.details.endSN;if(o._lastLoadedFragSN===i){if(o._sameFragSNLoadedCount++,c._logger.debug("Same frag SN. Count is: ".concat(o._sameFragSNLoadedCount,", Max is: ").concat(o._config.network.maxStaleLevelReloads)),o._sameFragSNLoadedCount>=o._config.network.maxStaleLevelReloads){c._logger.error("Same frag loading reached max count");var a=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.NETWORK,e.Error.Code.LIVE_MANIFEST_REFRESH_ERROR,{fragSN:i});return o._trigger(e.EventType.ERROR,a),o.destroy()}c._logger.debug("Last frag SN is: ".concat(i))}else o._sameFragSNLoadedCount=0;o._lastLoadedFragSN=i}})),c._logger.debug("Creating adapter. Hls version: "+T().version),o._config=e.Utils.Object.mergeDeep({},R,o._config),o._init(),o}return u(c,[{key:"_init",value:function(){this._config.forceRedirectExternalStreams&&(this._config.hlsConfig.pLoader=D),this._maybeSetFilters(),this._hls=new(T())(this._config.hlsConfig),this._capabilities.fpsControl=!0,this._hls.subtitleDisplay=this._config.subtitleDisplay,this._addBindings()}},{key:"_maybeSetFilters",value:function(){var i=this;if("function"==typeof e.Utils.Object.getPropertyPath(this._config,"network.requestFilter")&&(c._logger.debug("Register request filter"),e.Utils.Object.mergeDeep(this._config.hlsConfig,{loader:b,xhrSetup:function(o,a,n){var s,l={url:a,body:null,headers:{}};try{"manifest"===n.type&&(s=i._config.network.requestFilter(e.RequestType.MANIFEST,l)),n.frag&&"subtitle"!==n.frag.type&&(s=i._config.network.requestFilter(e.RequestType.SEGMENT,l))}catch(e){s=Promise.reject(e)}return(s=s||Promise.resolve(l)).then((function(e){n.url=e.url,o.open("GET",e.url,!0),Object.entries(e.headers).forEach((function(e){var i;o.setRequestHeader.apply(o,function(e){if(Array.isArray(e))return r(e)}(i=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||t(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})),"boolean"==typeof e.withCredentials&&(o.withCredentials=e.withCredentials)})).catch((function(e){throw i._requestFilterError=!0,e}))}})),"function"==typeof e.Utils.Object.getPropertyPath(this._config,"network.responseFilter")){var o=this;c._logger.debug("Register response filter"),e.Utils.Object.mergeDeep(this._config.hlsConfig,{loader:b,readystatechange:function(r){var t=this,i=r.currentTarget,a=i.readyState,n=this.stats,s=this.context,l=this.config;if(!n.aborted&&a>=2){window.clearTimeout(this.requestTimeout);var u=n.loading;if(0===u.first&&(u.first=Math.max(performance.now(),u.start)),4===a){var d=i.status;if(d>=200&&d<300){var h,f;u.end=Math.max(n.tfirst,performance.now()),f="arraybuffer"===s.responseType?(h=i.response).byteLength:(h=i.responseText).length,n.loaded=n.total=f;var _,E={url:i.responseURL,originalUrl:s.url,data:h,headers:e.Utils.Http.convertHeadersToDictionary(i.getAllResponseHeaders())};try{"manifest"===s.type&&(_=o._config.network.responseFilter(e.RequestType.MANIFEST,E)),s.frag&&"subtitle"!==s.frag.type&&(_=o._config.network.responseFilter(e.RequestType.SEGMENT,E))}catch(e){_=Promise.reject(e)}return(_=_||Promise.resolve(E)).then((function(e){t.callbacks.onSuccess(e,n,s,i)})).catch((function(e){o._responseFilterError=!0,t.callbacks.onError({code:d,text:e.message},s,i)}))}n.retry>=l.maxRetry||d>=400&&d<499?(c._logger.error("".concat(d," while loading ").concat(s.url)),this.callbacks.onError({code:d,text:i.statusText},s,i)):(c._logger.warn("".concat(d," while loading ").concat(s.url,", retrying in ").concat(this.retryDelay,"...")),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,l.maxRetryDelay),n.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),l.timeout)}}})}}},{key:"_addBindings",value:function(){var e=this;this._mediaAttachedPromise=new Promise((function(r){return e._onMediaAttached=r}));for(var r=0,t=Object.entries(this._adapterEventsBindings);r<t.length;r++){var o=i(t[r],2),a=o[0],n=o[1];this._hls.on(a,n)}this._onRecoveredCallback=function(){return e._onRecovered()},this._onAddTrack=this._onAddTrack.bind(this),this._eventManager.listen(this._videoElement,"addtrack",this._onAddTrack),this._videoElement.textTracks.onaddtrack=this._onAddTrack}},{key:"_onFpsDrop",value:function(r){this._trigger(e.EventType.FPS_DROP,r)}},{key:"_onFragParsingMetadata",value:function(r){var t;this._trigger("hlsFragParsingMetadata",r);var i=Array.from(null===(t=this._videoElement)||void 0===t?void 0:t.textTracks).find((function(e){return"id3"===e.label})),o=Array.from((null==i?void 0:i.cues)||[]),a=[];null==r||r.samples.forEach((function(r){var t=e.Utils.binarySearch(o,(function(e){return e.startTime-r.pts}));if(t){var i=(0,e.createTimedMetadata)(t);a.push(i)}})),a.length&&this._trigger(e.EventType.TIMED_METADATA_ADDED,{cues:a})}},{key:"_onAddTrack",value:function(r){if(!this._hls.subtitleTracks.length){var t=this._parseCEATextTrack(r.track);t&&(c._logger.debug("A CEA 608/708 caption has been found",t),this._playerTracks.push(t),this._trigger(e.EventType.TRACKS_CHANGED,{tracks:this._playerTracks}))}}},{key:"attachMediaSource",value:function(){this._hls||(this._videoElement&&this._videoElement.src&&(e.Utils.Dom.setAttribute(this._videoElement,"src",""),e.Utils.Dom.removeAttribute(this._videoElement,"src")),this._init())}},{key:"detachMediaSource",value:function(){var r;this._hls&&(0===Math.floor(this.duration-this.currentTime)?this._config.hlsConfig.startPosition=0:this.currentTime>0&&(this._config.hlsConfig.startPosition=this.currentTime),this._reset(),null===(r=this._loadPromiseHandlers)||void 0===r||r.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"media detached while loading")),this._loadPromiseHandlers=null,this._loadPromise=void 0,this._hls=null)}},{key:"handleMediaError",value:function(e){return e.code===e.MEDIA_ERR_DECODE&&(c._logger.debug("The video playback was aborted due to a corruption problem or because the video used features your browser did not support.",e.message),this._handleMediaError(T().ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR))}},{key:"load",value:function(e){var r=this;return this._loadPromise||(this._startTime=e,this._loadPromise=new Promise((function(e,t){r._loadPromiseHandlers={resolve:e,reject:t},r._loadInternal()}))),this._loadPromise}},{key:"_loadInternal",value:function(){var r;this._hls&&this._sourceObj&&this._sourceObj.url?(this._hls.loadSource(this._sourceObj.url),this._hls.attachMedia(this._videoElement),this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:this.isAdaptiveBitrateEnabled()?"auto":"manual"})):null===(r=this._loadPromiseHandlers)||void 0===r||r.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"no url provided"))}},{key:"_reloadWithDirectManifest",value:function(){this._triedReloadWithRedirect=!0,this._reset(),this._config.hlsConfig.pLoader=D,this._hls=new(T())(this._config.hlsConfig),this._addBindings(),this._loadInternal()}},{key:"destroy",value:function(){var r=this;return new Promise((function(t,i){f(h(c.prototype),"destroy",r).call(r).then((function(){var i;c._logger.debug("destroy"),r._playerTracks=[],r._nativeTextTracksMap={},r._sameFragSNLoadedCount=0,r._lastLoadedFragSN=-1,null===(i=r._loadPromiseHandlers)||void 0===i||i.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"The adapter has been destroyed while loading")),r._loadPromiseHandlers=null,r._loadPromise=void 0,r._reset(),t()}),(function(){return i()}))}))}},{key:"_reset",value:function(){this._removeBindings(),this._requestFilterError=!1,this._responseFilterError=!1,this._hls.detachMedia(),this._hls.destroy()}},{key:"_parseTracks",value:function(){var e=this._parseAudioTracks(this._hls.audioTracks||[]),r=this._parseVideoTracks(this._hls.levels||[]),t=this._parseTextTracks(this._hls.subtitleTracks||[]);return e.concat(r).concat(t)}},{key:"_extractFlavorId",value:function(e){if(!e)return"";var r=e.match(/flavorId\/([^/]+)/);return r?r[1]:""}},{key:"_parseAudioTracks",value:function(r){for(var t=[],i=0;i<r.length;i++){var o={id:r[i].id,active:this._hls.audioTrack===r[i].id,label:(0,e.getNativeLanguageName)(r[i].lang,r[i].name),language:r[i].lang,index:i,kind:r[i].characteristics?e.AudioTrackKind.DESCRIPTION:e.AudioTrackKind.MAIN,flavorId:this._extractFlavorId(r[i].url)};t.push(new e.AudioTrack(o))}return t}},{key:"_parseVideoTracks",value:function(r){for(var t=[],i=0;i<r.length;i++){var o={active:this._hls.startLevel===i,bandwidth:r[i].bitrate,width:r[i].width,height:r[i].height,language:"",index:i};t.push(new e.VideoTrack(o))}return t}},{key:"_parseTextTracks",value:function(r){var t,i=[],o=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return k(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?k(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,n=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return n=e.done,e},e:function(e){s=!0,a=e},f:function(){try{n||null==t.return||t.return()}finally{if(s)throw a}}}}(r);try{for(o.s();!(t=o.n()).done;){var a=t.value,n={id:a.id,active:!1,default:a.default,label:a.name,kind:this._captionsOrSubtitlesFromCharacteristics(a),language:a.lang};i.push(new e.TextTrack(n))}}catch(e){o.e(e)}finally{o.f()}return i}},{key:"_captionsOrSubtitlesFromCharacteristics",value:function(r){var t=r.characteristics;return t&&/transcribes-spoken-dialog/gi.test(t)&&/describes-music-and-sound/gi.test(t)?e.TextTrack.KIND.CAPTIONS:e.TextTrack.KIND.SUBTITLES}},{key:"_parseCEATextTrack",value:function(r){var t=null;if("captions"===r.kind){var i={id:r.id,active:"showing"===r.mode,label:r.label,kind:r.kind,language:r.language};t=new e.TextTrack(i),this._nativeTextTracksMap[t.index]=r}return t}},{key:"selectAudioTrack",value:function(r){r instanceof e.AudioTrack&&!r.active&&this._hls.audioTracks&&(this._hls.audioTrack=r.id)}},{key:"selectVideoTrack",value:function(r){r instanceof e.VideoTrack&&(!r.active||this.isAdaptiveBitrateEnabled())&&this._hls.levels&&(this.isAdaptiveBitrateEnabled()&&this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:"manual"}),this._hls.currentLevel=r.index)}},{key:"selectTextTrack",value:function(r){r instanceof e.TextTrack&&!r.active&&this._hls&&(this._hls.subtitleTracks.length?(this._hls.subtitleTrack=r.id,this._notifyTrackChanged(r)):this._selectNativeTextTrack(r))}},{key:"_selectNativeTextTrack",value:function(e){var r=this._nativeTextTracksMap[e.index];r&&(this.disableNativeTextTracks(),r.mode=this._config.subtitleDisplay?"showing":"hidden",this._notifyTrackChanged(e))}},{key:"_notifyTrackChanged",value:function(e){this._onTrackChanged(e)}},{key:"hideTextTrack",value:function(){this._hls&&!this._hls.subtitleTracks.length&&this.disableNativeTextTracks()}},{key:"enableAdaptiveBitrate",value:function(){this.isAdaptiveBitrateEnabled()||(this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:"auto"}),this._hls.nextLevel=-1)}},{key:"isAdaptiveBitrateEnabled",value:function(){return!!this._hls&&this._hls.autoLevelEnabled}},{key:"applyABRRestriction",value:function(r){e.Utils.Object.createPropertyPath(this._config,"abr.restrictions",r),this._hls.capLevelToPlayerSize||this._maybeApplyAbrRestrictions(r)}},{key:"_getLevelDetails",value:function(){var e=this._hls.levels[this._hls.currentLevel]||this._hls.levels[this._hls.nextLevel]||this._hls.levels[this._hls.nextAutoLevel]||this._hls.levels[this._hls.nextLoadLevel];return e&&e.details?e.details:{}}},{key:"_getLiveEdge",value:function(){try{var e;return(e=this._hls.liveSyncPosition?this._hls.liveSyncPosition:this._hls.config.liveSyncDuration?this._videoElement.duration-this._hls.config.liveSyncDuration:this._videoElement.duration-this._hls.config.liveSyncDurationCount*this._getLevelDetails().targetduration)>0?e:this._videoElement.duration}catch(e){return c._logger.debug("Live edge calculation failed, fall back to duration"),this._videoElement.duration}}},{key:"seekToLiveEdge",value:function(){try{this._videoElement.currentTime=this._getLiveEdge()}catch(e){return}}},{key:"getSegmentDuration",value:function(){var r=e.Utils.Object.getPropertyPath(this._hls,"streamController.fragCurrent");return r?r.duration:0}},{key:"liveDuration",get:function(){return this._getLiveEdge()+this.getSegmentDuration()}},{key:"isLive",value:function(){try{return!!this._getLevelDetails().live}catch(e){return!1}}},{key:"_onManifestLoaded",value:function(r){var t=this;c._logger.debug("The source has been loaded successfully"),this._hls.config.autoStartLoad||this._hls.startLoad(this._startTime),this._playerTracks=this._parseTracks(),this._config.abr.enabled||(this._hls.currentLevel=0),this._mediaAttachedPromise.then((function(){var e;null===(e=t._loadPromiseHandlers)||void 0===e||e.resolve({tracks:t._playerTracks}),t._loadPromiseHandlers=null}));var i=r.stats.loading,o=i.end-i.start;this._trigger(e.EventType.MANIFEST_LOADED,{miliSeconds:o})}},{key:"_maybeApplyAbrRestrictions",value:function(r){var t=this._playerTracks.filter((function(r){return r instanceof e.VideoTrack})),i=(0,e.filterTracksByRestriction)(t,r);if(i.length){var o=i[0],a=i.pop();this._hls.config.minAutoBitrate=o.bandwidth,this._hls.autoLevelCapping=a.index;var n=i.some((function(e){return e.active}));this.isAdaptiveBitrateEnabled()||n||this.selectVideoTrack(o)}else c._logger.warn("Invalid restrictions, there are not tracks within the restriction range")}},{key:"_onLevelSwitched",value:function(r,t){var i=this._playerTracks.find((function(r){return r instanceof e.VideoTrack&&r.index===t.level}));this._onTrackChanged(i)}},{key:"_onAudioTrackSwitched",value:function(r,t){var i=this._playerTracks.find((function(r){return r instanceof e.AudioTrack&&r.id===t.id}));this._onTrackChanged(i),this._handleWaitingUponAudioTrackSwitch()}},{key:"_handleWaitingUponAudioTrackSwitch",value:function(){var r=this;["IE","Edge"].includes(e.Env.browser.name)&&this._eventManager.listenOnce(this._videoElement,e.EventType.TIME_UPDATE,(function(){r._trigger(e.EventType.PLAYING)}))}},{key:"_getErrorDataObject",value:function(e){var r={};switch(r.name=e.details,r.name){case T().ErrorDetails.MANIFEST_LOAD_ERROR:case T().ErrorDetails.LEVEL_LOAD_ERROR:case T().ErrorDetails.AUDIO_TRACK_LOAD_ERROR:r.url=e.url,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.MANIFEST_LOAD_TIMEOUT:case T().ErrorDetails.LEVEL_LOAD_TIMEOUT:case T().ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:r.url=e.url;break;case T().ErrorDetails.MANIFEST_PARSING_ERROR:r.url=e.url,r.reason=e.reason;break;case T().ErrorDetails.LEVEL_SWITCH_ERROR:r.level=e.level,r.reason=e.reason;break;case T().ErrorDetails.FRAG_LOAD_ERROR:r.fragUrl=e.frag?e.frag.url:null,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.FRAG_LOAD_TIMEOUT:r.fragUrl=e.frag?e.frag.url:null;break;case T().ErrorDetails.FRAG_DECRYPT_ERROR:case T().ErrorDetails.FRAG_PARSING_ERROR:r.reason=e.reason;break;case T().ErrorDetails.KEY_LOAD_ERROR:r.fragDecryptedDataUri=e.frag&&e.frag.decryptdata?e.frag.decryptdata.uri:null,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.KEY_LOAD_TIMEOUT:r.fragDecryptedDataUri=e.frag&&e.frag.decryptdata?e.frag.decryptdata.uri:null;break;case T().ErrorDetails.BUFFER_ADD_CODEC_ERROR:r.mimeType=e.mimeType,r.errorMsg=e.err?e.err.message:null;break;case T().ErrorDetails.BUFFER_STALLED_ERROR:r.buffer=e.buffer}return(this._requestFilterError||this._responseFilterError)&&(r.reason=e.response.text),r}},{key:"_onError",value:function(r){var t=r.type,i=r.details,o=r.fatal,a=this._getErrorDataObject(r);if(o){var n,s;switch(t){case T().ErrorTypes.NETWORK_ERROR:var l;l=this._requestFilterError?e.Error.Code.REQUEST_FILTER_ERROR:this._responseFilterError?e.Error.Code.RESPONSE_FILTER_ERROR:e.Error.Code.HTTP_ERROR,![T().ErrorDetails.MANIFEST_LOAD_ERROR,T().ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(i)||this._triedReloadWithRedirect||this._config.forceRedirectExternalStreams||this._requestFilterError||this._responseFilterError?n=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.NETWORK,l,a):(n=new e.Error(e.Error.Severity.RECOVERABLE,e.Error.Category.NETWORK,l,a),this._reloadWithDirectManifest());break;case T().ErrorTypes.MEDIA_ERROR:n=this._handleMediaError(i)?new e.Error(e.Error.Severity.RECOVERABLE,e.Error.Category.MEDIA,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a):new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.MEDIA,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a);break;default:n=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a)}if(this._trigger(e.EventType.ERROR,n),n&&n.severity===e.Error.Severity.CRITICAL)this._loadPromiseHandlers&&(null===(s=this._loadPromiseHandlers)||void 0===s||s.reject(n),this._loadPromiseHandlers=null,this._loadPromise=void 0),this.destroy()}else{if(t===T().ErrorTypes.MEDIA_ERROR&&i===T().ErrorDetails.BUFFER_STALLED_ERROR&&this._videoElement&&this._handleBufferStalledErrorAtEnd())return;var u=this._requestFilterError||this._responseFilterError?{category:e.Error.Category.NETWORK,code:this._requestFilterError?e.Error.Code.REQUEST_FILTER_ERROR:e.Error.Code.RESPONSE_FILTER_ERROR}:m[i]||{category:0,code:0},d=u.category,h=u.code;c._logger.warn(new e.Error(e.Error.Severity.RECOVERABLE,d,h,a))}this._requestFilterError=!1,this._responseFilterError=!1}},{key:"_handleMediaError",value:function(r){c._logger.error("_handleMediaError mediaErrorName:",r);var t=performance.now(),i=!0;if(r===T().ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR)c._logger.error("recover aborted due to: MANIFEST_INCOMPATIBLE_CODECS_ERROR"),i=!1;else if(this._checkTimeDeltaHasPassed(t,this._recoverDecodingErrorDate,this._config.recoverDecodingErrorDelay)){if(r===T().ErrorDetails.FRAG_PARSING_ERROR)return c._logger.error("Manifest parsing error on "+this._videoElement.currentTime+". Try to recover"),i;this._eventManager.listen(this._videoElement,e.EventType.LOADED_METADATA,this._onRecoveredCallback),c._logger.debug("try to recover using: _recoverDecodingError()"),this._recoverDecodingError()}else this._checkTimeDeltaHasPassed(t,this._recoverSwapAudioCodecDate,this._config.recoverSwapAudioCodecDelay)?(this._eventManager.listen(this._videoElement,e.EventType.LOADED_METADATA,this._onRecoveredCallback),c._logger.debug("try to recover using: _recoverSwapAudioCodec()"),this._recoverSwapAudioCodec()):(c._logger.error("cannot recover, last media error recovery failed error: ",r),i=!1);return i}},{key:"_handleBufferStalledErrorAtEnd",value:function(){var r=this._videoElement.currentTime,t=this._videoElement.duration,i=!1;return t&&t-r<=.2&&(this._videoElement.currentTime=t,this._trigger(e.EventType.ENDED),c._logger.info("Video ended due to buffer stall near end."),i=!0),i}},{key:"_onRecovered",value:function(){this._trigger(e.EventType.MEDIA_RECOVERED),this._videoElement.removeEventListener(e.EventType.LOADED_METADATA,this._onRecoveredCallback)}},{key:"_checkTimeDeltaHasPassed",value:function(e,r,t){return!r||e-r>t}},{key:"_recoverDecodingError",value:function(){this._recoverDecodingErrorDate=performance.now(),c._logger.warn("try to recover media Error"),this._hls.recoverMediaError()}},{key:"_recoverSwapAudioCodec",value:function(){this._recoverSwapAudioCodecDate=performance.now(),c._logger.warn("try to swap Audio Codec and recover media Error"),this._hls.swapAudioCodec(),this._hls.recoverMediaError()}},{key:"_removeBindings",value:function(){for(var e=0,r=Object.entries(this._adapterEventsBindings);e<r.length;e++){var t=i(r[e],2),o=t[0],a=t[1];this._hls.off(o,a)}this._videoElement.textTracks.onaddtrack=null,this._onRecoveredCallback=null,this._eventManager&&this._eventManager.removeAll()}},{key:"getStartTimeOfDvrWindow",value:function(){if(!this.isLive())return 0;try{var e=this._hls.levels[this._hls.nextLoadLevel].details,r=e.fragments,t=r.length,i=r[0].start+r[0].duration,o=r[t-1].start+r[t-1].duration,a=void 0!==this._hls.config.liveMaxLatencyDuration?this._hls.config.liveMaxLatencyDuration:this._hls.config.liveMaxLatencyDurationCount*e.targetduration;return Math.max(i-this._hls.config.maxFragLookUpTolerance,o-a)}catch(e){return c._logger.debug("Unable obtain the start of DVR window"),0}}},{key:"_onFragLoaded",value:function(r){if(e.Utils.Object.hasPropertyPath(r,"frag.stats.loading")){var t=r.frag.stats,i=t.loading.end-t.loading.start;this._trigger(e.EventType.FRAG_LOADED,{miliSeconds:i,bytes:t.loaded,url:r.frag.url})}}},{key:"targetBuffer",get:function(){var e=NaN;return this._hls?(e=this.isLive()?this._getLiveTargetBuffer()-(this._videoElement.currentTime-this._getLiveEdge()):this._videoElement.duration-this._videoElement.currentTime,e=Math.min(e,this._hls.config.maxMaxBufferLength+this._getLevelDetails().targetduration)):NaN}},{key:"_getLiveTargetBuffer",value:function(){return this._hls.config.liveSyncDuration?this._hls.config.liveSyncDuration:this._hls.config.liveSyncDurationCount*this._getLevelDetails().targetduration}}],[{key:"createAdapter",value:function(r,t,i){var o=e.Utils.Object.copyDeep(R);if(e.Utils.Object.hasPropertyPath(i,"sources.options")){var a=i.sources.options;o.forceRedirectExternalStreams=a.forceRedirectExternalStreams,o.redirectExternalStreamsHandler=a.redirectExternalStreamsHandler,o.redirectExternalStreamsTimeout=a.redirectExternalStreamsTimeout,D.redirectExternalStreamsHandler=o.redirectExternalStreamsHandler,D.redirectExternalStreamsTimeout=o.redirectExternalStreamsTimeout}if(e.Utils.Object.hasPropertyPath(i,"sources.startTime")&&e.Utils.Object.getPropertyPath(i,"sources.startTime")>-1&&(o.hlsConfig.startPosition=i.sources.startTime),e.Utils.Object.hasPropertyPath(i,"text.useNativeTextTrack")&&(o.subtitleDisplay=e.Utils.Object.getPropertyPath(i,"text.useNativeTextTrack")),e.Utils.Object.hasPropertyPath(i,"abr.fpsDroppedFramesInterval")&&(o.hlsConfig.fpsDroppedFramesInterval=i.abr.fpsDroppedFramesInterval),e.Utils.Object.hasPropertyPath(i,"abr.fpsDroppedMonitoringThreshold")&&(o.hlsConfig.fpsDroppedMonitoringThreshold=i.abr.fpsDroppedMonitoringThreshold),e.Utils.Object.hasPropertyPath(i,"abr.capLevelOnFPSDrop")&&(c._logger.debug("capLevelOnFPSDrop = ",i.abr.capLevelOnFPSDrop),o.hlsConfig.capLevelOnFPSDrop=i.abr.capLevelOnFPSDrop),e.Utils.Object.hasPropertyPath(i,"text")&&(o.hlsConfig.enableCEA708Captions=i.text.enableCEA708Captions,o.hlsConfig.captionsTextTrack1Label=i.text.captionsTextTrack1Label,o.hlsConfig.captionsTextTrack1LanguageCode=i.text.captionsTextTrack1LanguageCode,o.hlsConfig.captionsTextTrack2Label=i.text.captionsTextTrack2Label,o.hlsConfig.captionsTextTrack2LanguageCode=i.text.captionsTextTrack2LanguageCode),e.Utils.Object.hasPropertyPath(i,"abr")){var n=i.abr;"boolean"==typeof n.enabled&&(o.abr.enabled=n.enabled),"boolean"==typeof n.capLevelToPlayerSize&&(o.hlsConfig.capLevelToPlayerSize=n.capLevelToPlayerSize),n.defaultBandwidthEstimate&&(o.hlsConfig.abrEwmaDefaultEstimate=n.defaultBandwidthEstimate),n.restrictions&&e.Utils.Object.createPropertyPath(o,"abr.restrictions",n.restrictions)}return e.Utils.Object.hasPropertyPath(i,"streaming.lowLatencyMode")&&(o.hlsConfig.lowLatencyMode=e.Utils.Object.getPropertyPath(i,"streaming.lowLatencyMode")),e.Utils.Object.hasPropertyPath(i,"playback.options.html5.hls")&&e.Utils.Object.mergeDeep(o.hlsConfig,i.playback.options.html5.hls),o.network=i.network,new this(r,t,o)}},{key:"canPlayType",value:function(e){var r="string"==typeof e&&c._hlsMimeTypes.includes(e.toLowerCase())&&c.isMSESupported();return c._logger.debug("canPlayType result for mimeType:"+e+" is "+r.toString()),r}},{key:"canPlayDrm",value:function(){return c._logger.warn("canPlayDrm result is false"),!1}},{key:"isSupported",value:function(){var e=T().isSupported();return c._logger.debug("isSupported:"+e),e}}]),c}(e.BaseMediaSourceAdapter);A=S,v(S,"id","HlsAdapter"),v(S,"_logger",e.BaseMediaSourceAdapter.getLogger(A.id)),v(S,"_hlsMimeTypes",["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/x-mpegurl","video/x-mpegurl","video/mpegurl","application/mpegurl"]);var O="1.32.25",L="@playkit-js/playkit-js-hls",C=S;S.isSupported()&&(0,e.registerMediaSourceAdapter)(S)}(),a}()}));
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r(require("@playkit-js/playkit-js"),require("hls.js")):"function"==typeof define&&define.amd?define("playkit",["@playkit-js/playkit-js","hls.js"],r):"object"==typeof exports?exports.playkit=r(require("@playkit-js/playkit-js"),require("hls.js")):(e.playkit=e.playkit||{},e.playkit.hls=r(e.playkit.core,e.Hls))}(self,(function(e,r){return function(){"use strict";var t={230:function(r){r.exports=e},85:function(e){e.exports=r}},i={};function o(e){var r=i[e];if(void 0!==r)return r.exports;var a=i[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(r,{a:r}),r},o.d=function(e,r){for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return function(){o.r(a),o.d(a,{NAME:function(){return L},VERSION:function(){return O},default:function(){return C}});var e=o(230);function r(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}function t(e,t){if(e){if("string"==typeof e)return r(e,t);var i=Object.prototype.toString.call(e).slice(8,-1);return"Object"===i&&e.constructor&&(i=e.constructor.name),"Map"===i||"Set"===i?Array.from(e):"Arguments"===i||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i)?r(e,t):void 0}}function i(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var i,o,a,n,s=[],l=!0,c=!1;try{if(a=(t=t.call(e)).next,0===r){if(Object(t)!==t)return;l=!1}else for(;!(l=(i=a.call(t)).done)&&(s.push(i.value),s.length!==r);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=t.return&&(n=t.return(),Object(n)!==n))return}finally{if(c)throw o}}return s}}(e,r)||t(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function s(e){return s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s(e)}function l(e){var r=function(e,r){if("object"!==s(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var i=t.call(e,"string");if("object"!==s(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===s(r)?r:String(r)}function c(e,r){for(var t=0;t<r.length;t++){var i=r[t];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,l(i.key),i)}}function u(e,r,t){return r&&c(e.prototype,r),t&&c(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function h(e){return h=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},h(e)}function f(){return f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,r,t){var i=function(e,r){for(;!Object.prototype.hasOwnProperty.call(e,r)&&null!==(e=h(e)););return e}(e,r);if(i){var o=Object.getOwnPropertyDescriptor(i,r);return o.get?o.get.call(arguments.length<3?e:t):o.value}},f.apply(this,arguments)}function _(e,r){return _=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,r){return e.__proto__=r,e},_(e,r)}function E(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),r&&_(e,r)}function g(e,r){if(r&&("object"===s(r)||"function"==typeof r))return r;if(void 0!==r)throw new TypeError("Derived constructors may only return object or undefined");return d(e)}function v(e,r,t){return(r=l(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var y,p=o(85),T=o.n(p),R=JSON.parse('{"recoverDecodingErrorDelay":3000,"recoverSwapAudioCodecDelay":3000,"abr":{"enabled":true,"restrictions":{}},"hlsConfig":{"fragLoadingMaxRetry":4,"maxMaxBufferLength":60,"stretchShortVideoTrack":true},"network":{}}'),m=(v(v(v(v(v(v(v(v(v(v(y={},T().ErrorDetails.MANIFEST_LOAD_ERROR,{category:e.Error.Category.MANIFEST,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.MANIFEST_LOAD_TIMEOUT,{category:e.Error.Category.MANIFEST,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.MANIFEST_PARSING_ERROR,{category:e.Error.Category.MANIFEST,code:e.Error.Code.HLSJS_CANNOT_PARSE}),T().ErrorDetails.LEVEL_LOAD_ERROR,{category:e.Error.Category.NETWORK,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.LEVEL_LOAD_TIMEOUT,{category:e.Error.Category.NETWORK,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.LEVEL_SWITCH_ERROR,{category:e.Error.Category.PLAYER,code:e.Error.Code.BITRATE_SWITCH_ISSUE}),T().ErrorDetails.FRAG_LOAD_ERROR,{category:e.Error.Category.NETWORK,code:e.Error.Code.HTTP_ERROR}),T().ErrorDetails.FRAG_LOAD_TIMEOUT,{category:e.Error.Category.NETWORK,code:e.Error.Code.TIMEOUT}),T().ErrorDetails.FRAG_PARSING_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_FRAG_PARSING_ERROR}),T().ErrorDetails.BUFFER_APPEND_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_APPEND_ISSUE}),v(v(y,T().ErrorDetails.BUFFER_APPENDING_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_APPENDING_ISSUE}),T().ErrorDetails.BUFFER_STALLED_ERROR,{category:e.Error.Category.MEDIA,code:e.Error.Code.HLS_BUFFER_STALLED_ERROR}));var b=function(e){E(o,e);var r,t,i=(r=o,t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,i=h(r);if(t){var o=h(this).constructor;e=Reflect.construct(i,arguments,o)}else e=i.apply(this,arguments);return g(this,e)});function o(e){var r;return n(this,o),r=i.call(this,e),e&&e.readystatechange&&(r.readystatechange=e.readystatechange),r}return u(o,[{key:"loadInternal",value:function(){var e,r=this,t=this.context;e=this.loader=new XMLHttpRequest;var i=this.stats;i.tfirst=0,i.loaded=0;var o,a=this.xhrSetup;try{if(a)try{o=a(e,t.url,t)}catch(r){e.open("GET",t.url,!0),o=a(e,t.url,t)}e.readyState||e.open("GET",t.url,!0)}catch(e){o=Promise.reject(e)}(o=o||Promise.resolve()).then((function(){t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=r.readystatechange.bind(r),e.onprogress=r.loadprogress.bind(r),e.responseType=t.responseType,r.requestTimeout=window.setTimeout(r.loadtimeout.bind(r),r.config.timeout),e.send()})).catch((function(i){r.callbacks.onError({code:e.status,text:i.message},t,e)}))}}]),o}(T().DefaultConfig.loader);var A,D=function(r){E(a,r);var t,i,o=(t=a,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=h(t);if(i){var o=h(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return g(this,e)});function a(r){var t;n(this,a);var i=(t=o.call(this,r)).load.bind(d(t)),s=a.redirectExternalStreamsHandler;return t.load=function(r,t,o){var n=r.url;"manifest"===r.type?e.Utils.Http.jsonp(n,s,{timeout:a.redirectExternalStreamsTimeout}).then((function(e){r.url=e,i(r,t,o)})).catch((function(){return i(r,t,o)})):i(r,t,o)},t}return u(a)}(b);function k(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,i=new Array(r);t<r;t++)i[t]=e[t];return i}v(D,"redirectExternalStreamsHandler",(function(e,r){return r}));var S=function(o){E(c,o);var a,s,l=(a=c,s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,r=h(a);if(s){var t=h(this).constructor;e=Reflect.construct(r,arguments,t)}else e=r.apply(this,arguments);return g(this,e)});function c(r,t,i){var o;return n(this,c),v(d(o=l.call(this,r,t,i)),"_hlsjsLib",T()),v(d(o),"_triedReloadWithRedirect",!1),v(d(o),"_playerTracks",[]),v(d(o),"_startTime",0),v(d(o),"_requestFilterError",!1),v(d(o),"_responseFilterError",!1),v(d(o),"_nativeTextTracksMap",{}),v(d(o),"_lastLoadedFragSN",-1),v(d(o),"_sameFragSNLoadedCount",0),v(d(o),"_waitForSubtitleLoad",!0),v(d(o),"_adapterEventsBindings",v(v(v(v(v(v(v(v(v({},T().Events.ERROR,(function(e,r){return o._onError(r)})),T().Events.MANIFEST_LOADED,(function(e,r){return o._onManifestLoaded(r)})),T().Events.LEVEL_SWITCHED,(function(e,r){return o._onLevelSwitched(e,r)})),T().Events.AUDIO_TRACK_SWITCHED,(function(e,r){return o._onAudioTrackSwitched(e,r)})),T().Events.FPS_DROP,(function(e,r){return o._onFpsDrop(r)})),T().Events.FRAG_PARSING_METADATA,(function(e,r){return o._onFragParsingMetadata(r)})),T().Events.FRAG_LOADED,(function(e,r){return o._onFragLoaded(r)})),T().Events.MEDIA_ATTACHED,(function(){return o._onMediaAttached()})),T().Events.LEVEL_LOADED,(function(e,r){return o._onLevelLoaded(e,r)}))),v(d(o),"_onLevelLoaded",(function(r,t){if(o.isLive()){var i=t.details.endSN;if(o._lastLoadedFragSN===i){if(o._sameFragSNLoadedCount++,c._logger.debug("Same frag SN. Count is: ".concat(o._sameFragSNLoadedCount,", Max is: ").concat(o._config.network.maxStaleLevelReloads)),o._sameFragSNLoadedCount>=o._config.network.maxStaleLevelReloads){c._logger.error("Same frag loading reached max count");var a=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.NETWORK,e.Error.Code.LIVE_MANIFEST_REFRESH_ERROR,{fragSN:i});return o._trigger(e.EventType.ERROR,a),o.destroy()}c._logger.debug("Last frag SN is: ".concat(i))}else o._sameFragSNLoadedCount=0;o._lastLoadedFragSN=i}})),c._logger.debug("Creating adapter. Hls version: "+T().version),o._config=e.Utils.Object.mergeDeep({},R,o._config),o._init(),o}return u(c,[{key:"_init",value:function(){this._config.forceRedirectExternalStreams&&(this._config.hlsConfig.pLoader=D),this._maybeSetFilters(),this._hls=new(T())(this._config.hlsConfig),this._capabilities.fpsControl=!0,this._hls.subtitleDisplay=this._config.subtitleDisplay,this._addBindings()}},{key:"_maybeSetFilters",value:function(){var i=this;if("function"==typeof e.Utils.Object.getPropertyPath(this._config,"network.requestFilter")&&(c._logger.debug("Register request filter"),e.Utils.Object.mergeDeep(this._config.hlsConfig,{loader:b,xhrSetup:function(o,a,n){var s,l={url:a,body:null,headers:{}};try{"manifest"===n.type&&(s=i._config.network.requestFilter(e.RequestType.MANIFEST,l)),n.frag&&"subtitle"!==n.frag.type&&(s=i._config.network.requestFilter(e.RequestType.SEGMENT,l))}catch(e){s=Promise.reject(e)}return(s=s||Promise.resolve(l)).then((function(e){n.url=e.url,o.open("GET",e.url,!0),Object.entries(e.headers).forEach((function(e){var i;o.setRequestHeader.apply(o,function(e){if(Array.isArray(e))return r(e)}(i=e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(i)||t(i)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())})),"boolean"==typeof e.withCredentials&&(o.withCredentials=e.withCredentials)})).catch((function(e){throw i._requestFilterError=!0,e}))}})),"function"==typeof e.Utils.Object.getPropertyPath(this._config,"network.responseFilter")){var o=this;c._logger.debug("Register response filter"),e.Utils.Object.mergeDeep(this._config.hlsConfig,{loader:b,readystatechange:function(r){var t=this,i=r.currentTarget,a=i.readyState,n=this.stats,s=this.context,l=this.config;if(!n.aborted&&a>=2){window.clearTimeout(this.requestTimeout);var u=n.loading;if(0===u.first&&(u.first=Math.max(performance.now(),u.start)),4===a){var d=i.status;if(d>=200&&d<300){var h,f;u.end=Math.max(n.tfirst,performance.now()),f="arraybuffer"===s.responseType?(h=i.response).byteLength:(h=i.responseText).length,n.loaded=n.total=f;var _,E={url:i.responseURL,originalUrl:s.url,data:h,headers:e.Utils.Http.convertHeadersToDictionary(i.getAllResponseHeaders())};try{"manifest"===s.type&&(_=o._config.network.responseFilter(e.RequestType.MANIFEST,E)),s.frag&&"subtitle"!==s.frag.type&&(_=o._config.network.responseFilter(e.RequestType.SEGMENT,E))}catch(e){_=Promise.reject(e)}return(_=_||Promise.resolve(E)).then((function(e){t.callbacks.onSuccess(e,n,s,i)})).catch((function(e){o._responseFilterError=!0,t.callbacks.onError({code:d,text:e.message},s,i)}))}n.retry>=l.maxRetry||d>=400&&d<499?(c._logger.error("".concat(d," while loading ").concat(s.url)),this.callbacks.onError({code:d,text:i.statusText},s,i)):(c._logger.warn("".concat(d," while loading ").concat(s.url,", retrying in ").concat(this.retryDelay,"...")),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,l.maxRetryDelay),n.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),l.timeout)}}})}}},{key:"_addBindings",value:function(){var e=this;this._mediaAttachedPromise=new Promise((function(r){return e._onMediaAttached=r}));for(var r=0,t=Object.entries(this._adapterEventsBindings);r<t.length;r++){var o=i(t[r],2),a=o[0],n=o[1];this._hls.on(a,n)}this._onRecoveredCallback=function(){return e._onRecovered()},this._onAddTrack=this._onAddTrack.bind(this),this._eventManager.listen(this._videoElement,"addtrack",this._onAddTrack),this._videoElement.textTracks.onaddtrack=this._onAddTrack}},{key:"_onFpsDrop",value:function(r){this._trigger(e.EventType.FPS_DROP,r)}},{key:"_onFragParsingMetadata",value:function(r){var t;this._trigger("hlsFragParsingMetadata",r);var i=Array.from(null===(t=this._videoElement)||void 0===t?void 0:t.textTracks).find((function(e){return"id3"===e.label})),o=Array.from((null==i?void 0:i.cues)||[]),a=[];null==r||r.samples.forEach((function(r){var t=e.Utils.binarySearch(o,(function(e){return e.startTime-r.pts}));if(t){var i=(0,e.createTimedMetadata)(t);a.push(i)}})),a.length&&this._trigger(e.EventType.TIMED_METADATA_ADDED,{cues:a})}},{key:"_onAddTrack",value:function(r){if(!this._hls.subtitleTracks.length){var t=this._parseCEATextTrack(r.track);t&&(c._logger.debug("A CEA 608/708 caption has been found",t),this._playerTracks.push(t),this._trigger(e.EventType.TRACKS_CHANGED,{tracks:this._playerTracks}))}}},{key:"attachMediaSource",value:function(){this._hls||(this._videoElement&&this._videoElement.src&&(e.Utils.Dom.setAttribute(this._videoElement,"src",""),e.Utils.Dom.removeAttribute(this._videoElement,"src")),this._init())}},{key:"detachMediaSource",value:function(){var r;this._hls&&(0===Math.floor(this.duration-this.currentTime)?this._config.hlsConfig.startPosition=0:this.currentTime>0&&(this._config.hlsConfig.startPosition=this.currentTime),this._reset(),null===(r=this._loadPromiseHandlers)||void 0===r||r.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"media detached while loading")),this._loadPromiseHandlers=null,this._loadPromise=void 0,this._hls=null)}},{key:"handleMediaError",value:function(e){return e.code===e.MEDIA_ERR_DECODE&&(c._logger.debug("The video playback was aborted due to a corruption problem or because the video used features your browser did not support.",e.message),this._handleMediaError(T().ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR))}},{key:"load",value:function(e){var r=this;return this._loadPromise||(this._startTime=e,this._loadPromise=new Promise((function(e,t){r._loadPromiseHandlers={resolve:e,reject:t},r._loadInternal()}))),this._loadPromise}},{key:"_loadInternal",value:function(){var r;this._hls&&this._sourceObj&&this._sourceObj.url?(this._hls.loadSource(this._sourceObj.url),this._hls.attachMedia(this._videoElement),this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:this.isAdaptiveBitrateEnabled()?"auto":"manual"})):null===(r=this._loadPromiseHandlers)||void 0===r||r.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"no url provided"))}},{key:"_reloadWithDirectManifest",value:function(){this._triedReloadWithRedirect=!0,this._reset(),this._config.hlsConfig.pLoader=D,this._hls=new(T())(this._config.hlsConfig),this._addBindings(),this._loadInternal()}},{key:"destroy",value:function(){var r=this;return new Promise((function(t,i){f(h(c.prototype),"destroy",r).call(r).then((function(){var i;c._logger.debug("destroy"),r._playerTracks=[],r._nativeTextTracksMap={},r._sameFragSNLoadedCount=0,r._lastLoadedFragSN=-1,null===(i=r._loadPromiseHandlers)||void 0===i||i.reject(new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,"The adapter has been destroyed while loading")),r._loadPromiseHandlers=null,r._loadPromise=void 0,r._reset(),t()}),(function(){return i()}))}))}},{key:"_reset",value:function(){this._removeBindings(),this._requestFilterError=!1,this._responseFilterError=!1,this._hls.detachMedia(),this._hls.destroy()}},{key:"_parseTracks",value:function(){var e=this._parseAudioTracks(this._hls.audioTracks||[]),r=this._parseVideoTracks(this._hls.levels||[]),t=this._parseTextTracks(this._hls.subtitleTracks||[]);return e.concat(r).concat(t)}},{key:"_extractFlavorId",value:function(e){if(!e)return"";var r=e.match(/flavorId\/([^/]+)/);return r?r[1]:""}},{key:"_parseAudioTracks",value:function(r){for(var t=[],i=0;i<r.length;i++){var o={id:r[i].id,active:this._hls.audioTrack===r[i].id,label:(0,e.getNativeLanguageName)(r[i].lang,r[i].name),language:r[i].lang,index:i,kind:r[i].characteristics?e.AudioTrackKind.DESCRIPTION:e.AudioTrackKind.MAIN,flavorId:this._extractFlavorId(r[i].url),manifestName:r[i].name||""};t.push(new e.AudioTrack(o))}return t}},{key:"_parseVideoTracks",value:function(r){for(var t=[],i=0;i<r.length;i++){var o={active:this._hls.startLevel===i,bandwidth:r[i].bitrate,width:r[i].width,height:r[i].height,language:"",index:i};t.push(new e.VideoTrack(o))}return t}},{key:"_parseTextTracks",value:function(r){var t,i=[],o=function(e,r){var t="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!t){if(Array.isArray(e)||(t=function(e,r){if(e){if("string"==typeof e)return k(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return"Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?k(e,r):void 0}}(e))||r&&e&&"number"==typeof e.length){t&&(e=t);var i=0,o=function(){};return{s:o,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,n=!0,s=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return n=e.done,e},e:function(e){s=!0,a=e},f:function(){try{n||null==t.return||t.return()}finally{if(s)throw a}}}}(r);try{for(o.s();!(t=o.n()).done;){var a=t.value,n={id:a.id,active:!1,default:a.default,label:a.name,kind:this._captionsOrSubtitlesFromCharacteristics(a),language:a.lang};i.push(new e.TextTrack(n))}}catch(e){o.e(e)}finally{o.f()}return i}},{key:"_captionsOrSubtitlesFromCharacteristics",value:function(r){var t=r.characteristics;return t&&/transcribes-spoken-dialog/gi.test(t)&&/describes-music-and-sound/gi.test(t)?e.TextTrack.KIND.CAPTIONS:e.TextTrack.KIND.SUBTITLES}},{key:"_parseCEATextTrack",value:function(r){var t=null;if("captions"===r.kind){var i={id:r.id,active:"showing"===r.mode,label:r.label,kind:r.kind,language:r.language};t=new e.TextTrack(i),this._nativeTextTracksMap[t.index]=r}return t}},{key:"selectAudioTrack",value:function(r){r instanceof e.AudioTrack&&!r.active&&this._hls.audioTracks&&(this._hls.audioTrack=r.id)}},{key:"selectVideoTrack",value:function(r){r instanceof e.VideoTrack&&(!r.active||this.isAdaptiveBitrateEnabled())&&this._hls.levels&&(this.isAdaptiveBitrateEnabled()&&this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:"manual"}),this._hls.currentLevel=r.index)}},{key:"selectTextTrack",value:function(r){r instanceof e.TextTrack&&!r.active&&this._hls&&(this._hls.subtitleTracks.length?(this._hls.subtitleTrack=r.id,this._notifyTrackChanged(r)):this._selectNativeTextTrack(r))}},{key:"_selectNativeTextTrack",value:function(e){var r=this._nativeTextTracksMap[e.index];r&&(this.disableNativeTextTracks(),r.mode=this._config.subtitleDisplay?"showing":"hidden",this._notifyTrackChanged(e))}},{key:"_notifyTrackChanged",value:function(e){this._onTrackChanged(e)}},{key:"hideTextTrack",value:function(){this._hls&&!this._hls.subtitleTracks.length&&this.disableNativeTextTracks()}},{key:"enableAdaptiveBitrate",value:function(){this.isAdaptiveBitrateEnabled()||(this._trigger(e.EventType.ABR_MODE_CHANGED,{mode:"auto"}),this._hls.nextLevel=-1)}},{key:"isAdaptiveBitrateEnabled",value:function(){return!!this._hls&&this._hls.autoLevelEnabled}},{key:"applyABRRestriction",value:function(r){e.Utils.Object.createPropertyPath(this._config,"abr.restrictions",r),this._hls.capLevelToPlayerSize||this._maybeApplyAbrRestrictions(r)}},{key:"_getLevelDetails",value:function(){var e=this._hls.levels[this._hls.currentLevel]||this._hls.levels[this._hls.nextLevel]||this._hls.levels[this._hls.nextAutoLevel]||this._hls.levels[this._hls.nextLoadLevel];return e&&e.details?e.details:{}}},{key:"_getLiveEdge",value:function(){try{var e;return(e=this._hls.liveSyncPosition?this._hls.liveSyncPosition:this._hls.config.liveSyncDuration?this._videoElement.duration-this._hls.config.liveSyncDuration:this._videoElement.duration-this._hls.config.liveSyncDurationCount*this._getLevelDetails().targetduration)>0?e:this._videoElement.duration}catch(e){return c._logger.debug("Live edge calculation failed, fall back to duration"),this._videoElement.duration}}},{key:"seekToLiveEdge",value:function(){try{this._videoElement.currentTime=this._getLiveEdge()}catch(e){return}}},{key:"getSegmentDuration",value:function(){var r=e.Utils.Object.getPropertyPath(this._hls,"streamController.fragCurrent");return r?r.duration:0}},{key:"liveDuration",get:function(){return this._getLiveEdge()+this.getSegmentDuration()}},{key:"isLive",value:function(){try{return!!this._getLevelDetails().live}catch(e){return!1}}},{key:"_onManifestLoaded",value:function(r){var t=this;c._logger.debug("The source has been loaded successfully"),this._hls.config.autoStartLoad||this._hls.startLoad(this._startTime),this._playerTracks=this._parseTracks(),this._config.abr.enabled||(this._hls.currentLevel=0),this._mediaAttachedPromise.then((function(){var e;null===(e=t._loadPromiseHandlers)||void 0===e||e.resolve({tracks:t._playerTracks}),t._loadPromiseHandlers=null}));var i=r.stats.loading,o=i.end-i.start;this._trigger(e.EventType.MANIFEST_LOADED,{miliSeconds:o})}},{key:"_maybeApplyAbrRestrictions",value:function(r){var t=this._playerTracks.filter((function(r){return r instanceof e.VideoTrack})),i=(0,e.filterTracksByRestriction)(t,r);if(i.length){var o=i[0],a=i.pop();this._hls.config.minAutoBitrate=o.bandwidth,this._hls.autoLevelCapping=a.index;var n=i.some((function(e){return e.active}));this.isAdaptiveBitrateEnabled()||n||this.selectVideoTrack(o)}else c._logger.warn("Invalid restrictions, there are not tracks within the restriction range")}},{key:"_onLevelSwitched",value:function(r,t){var i=this._playerTracks.find((function(r){return r instanceof e.VideoTrack&&r.index===t.level}));this._onTrackChanged(i)}},{key:"_onAudioTrackSwitched",value:function(r,t){var i=this._playerTracks.find((function(r){return r instanceof e.AudioTrack&&r.id===t.id}));this._onTrackChanged(i),this._handleWaitingUponAudioTrackSwitch()}},{key:"_handleWaitingUponAudioTrackSwitch",value:function(){var r=this;["IE","Edge"].includes(e.Env.browser.name)&&this._eventManager.listenOnce(this._videoElement,e.EventType.TIME_UPDATE,(function(){r._trigger(e.EventType.PLAYING)}))}},{key:"_getErrorDataObject",value:function(e){var r={};switch(r.name=e.details,r.name){case T().ErrorDetails.MANIFEST_LOAD_ERROR:case T().ErrorDetails.LEVEL_LOAD_ERROR:case T().ErrorDetails.AUDIO_TRACK_LOAD_ERROR:r.url=e.url,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.MANIFEST_LOAD_TIMEOUT:case T().ErrorDetails.LEVEL_LOAD_TIMEOUT:case T().ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:r.url=e.url;break;case T().ErrorDetails.MANIFEST_PARSING_ERROR:r.url=e.url,r.reason=e.reason;break;case T().ErrorDetails.LEVEL_SWITCH_ERROR:r.level=e.level,r.reason=e.reason;break;case T().ErrorDetails.FRAG_LOAD_ERROR:r.fragUrl=e.frag?e.frag.url:null,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.FRAG_LOAD_TIMEOUT:r.fragUrl=e.frag?e.frag.url:null;break;case T().ErrorDetails.FRAG_DECRYPT_ERROR:case T().ErrorDetails.FRAG_PARSING_ERROR:r.reason=e.reason;break;case T().ErrorDetails.KEY_LOAD_ERROR:r.fragDecryptedDataUri=e.frag&&e.frag.decryptdata?e.frag.decryptdata.uri:null,r.responseCode=e.response?e.response.code:null;break;case T().ErrorDetails.KEY_LOAD_TIMEOUT:r.fragDecryptedDataUri=e.frag&&e.frag.decryptdata?e.frag.decryptdata.uri:null;break;case T().ErrorDetails.BUFFER_ADD_CODEC_ERROR:r.mimeType=e.mimeType,r.errorMsg=e.err?e.err.message:null;break;case T().ErrorDetails.BUFFER_STALLED_ERROR:r.buffer=e.buffer}return(this._requestFilterError||this._responseFilterError)&&(r.reason=e.response.text),r}},{key:"_onError",value:function(r){var t=r.type,i=r.details,o=r.fatal,a=this._getErrorDataObject(r);if(o){var n,s;switch(t){case T().ErrorTypes.NETWORK_ERROR:var l;l=this._requestFilterError?e.Error.Code.REQUEST_FILTER_ERROR:this._responseFilterError?e.Error.Code.RESPONSE_FILTER_ERROR:e.Error.Code.HTTP_ERROR,![T().ErrorDetails.MANIFEST_LOAD_ERROR,T().ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(i)||this._triedReloadWithRedirect||this._config.forceRedirectExternalStreams||this._requestFilterError||this._responseFilterError?n=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.NETWORK,l,a):(n=new e.Error(e.Error.Severity.RECOVERABLE,e.Error.Category.NETWORK,l,a),this._reloadWithDirectManifest());break;case T().ErrorTypes.MEDIA_ERROR:n=this._handleMediaError(i)?new e.Error(e.Error.Severity.RECOVERABLE,e.Error.Category.MEDIA,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a):new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.MEDIA,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a);break;default:n=new e.Error(e.Error.Severity.CRITICAL,e.Error.Category.PLAYER,e.Error.Code.HLS_FATAL_MEDIA_ERROR,a)}if(this._trigger(e.EventType.ERROR,n),n&&n.severity===e.Error.Severity.CRITICAL)this._loadPromiseHandlers&&(null===(s=this._loadPromiseHandlers)||void 0===s||s.reject(n),this._loadPromiseHandlers=null,this._loadPromise=void 0),this.destroy()}else{if(t===T().ErrorTypes.MEDIA_ERROR&&i===T().ErrorDetails.BUFFER_STALLED_ERROR&&this._videoElement&&this._handleBufferStalledErrorAtEnd())return;var u=this._requestFilterError||this._responseFilterError?{category:e.Error.Category.NETWORK,code:this._requestFilterError?e.Error.Code.REQUEST_FILTER_ERROR:e.Error.Code.RESPONSE_FILTER_ERROR}:m[i]||{category:0,code:0},d=u.category,h=u.code;c._logger.warn(new e.Error(e.Error.Severity.RECOVERABLE,d,h,a))}this._requestFilterError=!1,this._responseFilterError=!1}},{key:"_handleMediaError",value:function(r){c._logger.error("_handleMediaError mediaErrorName:",r);var t=performance.now(),i=!0;if(r===T().ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR)c._logger.error("recover aborted due to: MANIFEST_INCOMPATIBLE_CODECS_ERROR"),i=!1;else if(this._checkTimeDeltaHasPassed(t,this._recoverDecodingErrorDate,this._config.recoverDecodingErrorDelay)){if(r===T().ErrorDetails.FRAG_PARSING_ERROR)return c._logger.error("Manifest parsing error on "+this._videoElement.currentTime+". Try to recover"),i;this._eventManager.listen(this._videoElement,e.EventType.LOADED_METADATA,this._onRecoveredCallback),c._logger.debug("try to recover using: _recoverDecodingError()"),this._recoverDecodingError()}else this._checkTimeDeltaHasPassed(t,this._recoverSwapAudioCodecDate,this._config.recoverSwapAudioCodecDelay)?(this._eventManager.listen(this._videoElement,e.EventType.LOADED_METADATA,this._onRecoveredCallback),c._logger.debug("try to recover using: _recoverSwapAudioCodec()"),this._recoverSwapAudioCodec()):(c._logger.error("cannot recover, last media error recovery failed error: ",r),i=!1);return i}},{key:"_handleBufferStalledErrorAtEnd",value:function(){var r=this._videoElement.currentTime,t=this._videoElement.duration,i=!1;return t&&t-r<=.2&&(this._videoElement.currentTime=t,this._trigger(e.EventType.ENDED),c._logger.info("Video ended due to buffer stall near end."),i=!0),i}},{key:"_onRecovered",value:function(){this._trigger(e.EventType.MEDIA_RECOVERED),this._videoElement.removeEventListener(e.EventType.LOADED_METADATA,this._onRecoveredCallback)}},{key:"_checkTimeDeltaHasPassed",value:function(e,r,t){return!r||e-r>t}},{key:"_recoverDecodingError",value:function(){this._recoverDecodingErrorDate=performance.now(),c._logger.warn("try to recover media Error"),this._hls.recoverMediaError()}},{key:"_recoverSwapAudioCodec",value:function(){this._recoverSwapAudioCodecDate=performance.now(),c._logger.warn("try to swap Audio Codec and recover media Error"),this._hls.swapAudioCodec(),this._hls.recoverMediaError()}},{key:"_removeBindings",value:function(){for(var e=0,r=Object.entries(this._adapterEventsBindings);e<r.length;e++){var t=i(r[e],2),o=t[0],a=t[1];this._hls.off(o,a)}this._videoElement.textTracks.onaddtrack=null,this._onRecoveredCallback=null,this._eventManager&&this._eventManager.removeAll()}},{key:"getStartTimeOfDvrWindow",value:function(){if(!this.isLive())return 0;try{var e=this._hls.levels[this._hls.nextLoadLevel].details,r=e.fragments,t=r.length,i=r[0].start+r[0].duration,o=r[t-1].start+r[t-1].duration,a=void 0!==this._hls.config.liveMaxLatencyDuration?this._hls.config.liveMaxLatencyDuration:this._hls.config.liveMaxLatencyDurationCount*e.targetduration;return Math.max(i-this._hls.config.maxFragLookUpTolerance,o-a)}catch(e){return c._logger.debug("Unable obtain the start of DVR window"),0}}},{key:"_onFragLoaded",value:function(r){if(e.Utils.Object.hasPropertyPath(r,"frag.stats.loading")){var t=r.frag.stats,i=t.loading.end-t.loading.start;this._trigger(e.EventType.FRAG_LOADED,{miliSeconds:i,bytes:t.loaded,url:r.frag.url})}}},{key:"targetBuffer",get:function(){var e=NaN;return this._hls?(e=this.isLive()?this._getLiveTargetBuffer()-(this._videoElement.currentTime-this._getLiveEdge()):this._videoElement.duration-this._videoElement.currentTime,e=Math.min(e,this._hls.config.maxMaxBufferLength+this._getLevelDetails().targetduration)):NaN}},{key:"_getLiveTargetBuffer",value:function(){return this._hls.config.liveSyncDuration?this._hls.config.liveSyncDuration:this._hls.config.liveSyncDurationCount*this._getLevelDetails().targetduration}}],[{key:"createAdapter",value:function(r,t,i){var o=e.Utils.Object.copyDeep(R);if(e.Utils.Object.hasPropertyPath(i,"sources.options")){var a=i.sources.options;o.forceRedirectExternalStreams=a.forceRedirectExternalStreams,o.redirectExternalStreamsHandler=a.redirectExternalStreamsHandler,o.redirectExternalStreamsTimeout=a.redirectExternalStreamsTimeout,D.redirectExternalStreamsHandler=o.redirectExternalStreamsHandler,D.redirectExternalStreamsTimeout=o.redirectExternalStreamsTimeout}if(e.Utils.Object.hasPropertyPath(i,"sources.startTime")&&e.Utils.Object.getPropertyPath(i,"sources.startTime")>-1&&(o.hlsConfig.startPosition=i.sources.startTime),e.Utils.Object.hasPropertyPath(i,"text.useNativeTextTrack")&&(o.subtitleDisplay=e.Utils.Object.getPropertyPath(i,"text.useNativeTextTrack")),e.Utils.Object.hasPropertyPath(i,"abr.fpsDroppedFramesInterval")&&(o.hlsConfig.fpsDroppedFramesInterval=i.abr.fpsDroppedFramesInterval),e.Utils.Object.hasPropertyPath(i,"abr.fpsDroppedMonitoringThreshold")&&(o.hlsConfig.fpsDroppedMonitoringThreshold=i.abr.fpsDroppedMonitoringThreshold),e.Utils.Object.hasPropertyPath(i,"abr.capLevelOnFPSDrop")&&(c._logger.debug("capLevelOnFPSDrop = ",i.abr.capLevelOnFPSDrop),o.hlsConfig.capLevelOnFPSDrop=i.abr.capLevelOnFPSDrop),e.Utils.Object.hasPropertyPath(i,"text")&&(o.hlsConfig.enableCEA708Captions=i.text.enableCEA708Captions,o.hlsConfig.captionsTextTrack1Label=i.text.captionsTextTrack1Label,o.hlsConfig.captionsTextTrack1LanguageCode=i.text.captionsTextTrack1LanguageCode,o.hlsConfig.captionsTextTrack2Label=i.text.captionsTextTrack2Label,o.hlsConfig.captionsTextTrack2LanguageCode=i.text.captionsTextTrack2LanguageCode),e.Utils.Object.hasPropertyPath(i,"abr")){var n=i.abr;"boolean"==typeof n.enabled&&(o.abr.enabled=n.enabled),"boolean"==typeof n.capLevelToPlayerSize&&(o.hlsConfig.capLevelToPlayerSize=n.capLevelToPlayerSize),n.defaultBandwidthEstimate&&(o.hlsConfig.abrEwmaDefaultEstimate=n.defaultBandwidthEstimate),n.restrictions&&e.Utils.Object.createPropertyPath(o,"abr.restrictions",n.restrictions)}return e.Utils.Object.hasPropertyPath(i,"streaming.lowLatencyMode")&&(o.hlsConfig.lowLatencyMode=e.Utils.Object.getPropertyPath(i,"streaming.lowLatencyMode")),e.Utils.Object.hasPropertyPath(i,"playback.options.html5.hls")&&e.Utils.Object.mergeDeep(o.hlsConfig,i.playback.options.html5.hls),o.network=i.network,new this(r,t,o)}},{key:"canPlayType",value:function(e){var r="string"==typeof e&&c._hlsMimeTypes.includes(e.toLowerCase())&&c.isMSESupported();return c._logger.debug("canPlayType result for mimeType:"+e+" is "+r.toString()),r}},{key:"canPlayDrm",value:function(){return c._logger.warn("canPlayDrm result is false"),!1}},{key:"isSupported",value:function(){var e=T().isSupported();return c._logger.debug("isSupported:"+e),e}}]),c}(e.BaseMediaSourceAdapter);A=S,v(S,"id","HlsAdapter"),v(S,"_logger",e.BaseMediaSourceAdapter.getLogger(A.id)),v(S,"_hlsMimeTypes",["application/x-mpegurl","application/vnd.apple.mpegurl","audio/mpegurl","audio/x-mpegurl","video/x-mpegurl","video/mpegurl","application/mpegurl"]);var O="1.32.26",L="@playkit-js/playkit-js-hls",C=S;S.isSupported()&&(0,e.registerMediaSourceAdapter)(S)}(),a}()}));
|
|
2
2
|
//# sourceMappingURL=playkit-hls.js.map
|
package/dist/playkit-hls.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playkit-hls.js","mappings":"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","sources":["webpack://playkit.hls/webpack/universalModuleDefinition","webpack://playkit.hls/external umd {\"commonjs\":\"@playkit-js/playkit-js\",\"commonjs2\":\"@playkit-js/playkit-js\",\"amd\":\"@playkit-js/playkit-js\",\"root\":[\"playkit\",\"core\"]}","webpack://playkit.hls/external umd {\"commonjs\":\"hls.js\",\"commonjs2\":\"hls.js\",\"amd\":\"hls.js\",\"root\":[\"Hls\"]}","webpack://playkit.hls/webpack/bootstrap","webpack://playkit.hls/webpack/runtime/compat get default export","webpack://playkit.hls/webpack/runtime/define property getters","webpack://playkit.hls/webpack/runtime/hasOwnProperty shorthand","webpack://playkit.hls/webpack/runtime/make namespace object","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://playkit.hls/./src/errors.ts","webpack://playkit.hls/./src/loader.ts","webpack://playkit.hls/./src/jsonp-ploader.ts","webpack://playkit.hls/./src/hls-adapter.ts","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://playkit.hls/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@playkit-js/playkit-js\"), require(\"hls.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"playkit\", [\"@playkit-js/playkit-js\", \"hls.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"playkit\"] = factory(require(\"@playkit-js/playkit-js\"), require(\"hls.js\"));\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"hls\"] = factory(root[\"playkit\"][\"core\"], root[\"Hls\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__230__, __WEBPACK_EXTERNAL_MODULE__85__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__230__;","module.exports = __WEBPACK_EXTERNAL_MODULE__85__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import Hlsjs from 'hls.js';\nimport {Error} from '@playkit-js/playkit-js';\n\ntype ErrorDetailsType = {category: number, code: number};\ntype HlsJsErrorMapType = {[name: string]: ErrorDetailsType};\n\nconst HlsJsErrorMap: HlsJsErrorMapType = {\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.MANIFEST_PARSING_ERROR]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.HLSJS_CANNOT_PARSE\n },\n [Hlsjs.ErrorDetails.LEVEL_LOAD_ERROR]: {\n category: Error.Category.NETWORK,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.LEVEL_LOAD_TIMEOUT]: {\n category: Error.Category.NETWORK,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.LEVEL_SWITCH_ERROR]: {\n category: Error.Category.PLAYER,\n code: Error.Code.BITRATE_SWITCH_ISSUE\n },\n [Hlsjs.ErrorDetails.FRAG_LOAD_ERROR]: {\n category: Error.Category.NETWORK,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.FRAG_LOAD_TIMEOUT]: {\n category: Error.Category.NETWORK,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.FRAG_PARSING_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_FRAG_PARSING_ERROR\n },\n [Hlsjs.ErrorDetails.BUFFER_APPEND_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_APPEND_ISSUE\n },\n [Hlsjs.ErrorDetails.BUFFER_APPENDING_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_APPENDING_ISSUE\n },\n [Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_STALLED_ERROR\n }\n};\n\nexport {HlsJsErrorMap};\nexport type {ErrorDetailsType};\n","/* eslint-disable */\n// @ts-nocheck\nimport Hlsjs from 'hls.js';\n\n/**\n * A custom override for the loader function in hls.js.\n * It passes the context for the xhrSetup config\n */\nexport default class loader extends Hlsjs.DefaultConfig.loader {\n constructor(config: any) {\n super(config);\n if (config && config.readystatechange) {\n this.readystatechange = config.readystatechange;\n }\n }\n\n loadInternal() {\n let xhr,\n context = this.context;\n xhr = this.loader = new XMLHttpRequest();\n\n const stats = this.stats;\n stats.tfirst = 0;\n stats.loaded = 0;\n const xhrSetup = this.xhrSetup;\n\n let xhrSetupPromise;\n try {\n if (xhrSetup) {\n try {\n xhrSetupPromise = xhrSetup(xhr, context.url, context);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetupPromise = xhrSetup(xhr, context.url, context);\n }\n }\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n xhrSetupPromise = Promise.reject(e);\n }\n xhrSetupPromise = xhrSetupPromise || Promise.resolve();\n xhrSetupPromise\n .then(() => {\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType;\n\n // setup timeout before we perform request\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout);\n xhr.send();\n })\n .catch(e => {\n this.callbacks.onError({code: xhr.status, text: e.message}, context, xhr);\n });\n }\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport {Utils} from '@playkit-js/playkit-js';\nimport loader from './loader';\n\n/**\n * A plugin override for the loader function in hls.js.\n * It checks if it should use jsonp for the manifest first, else - the regular\n * loader is called.\n */\nexport default class pLoader extends loader {\n /**\n * redirect external stream handler function\n * @param {Object} data - The json object that returns from the server.\n * @param {string} uri - the original uri\n * @returns {string} uri - the redirected URI\n * @static\n */\n public static redirectExternalStreamsHandler = (data, uri): string => uri;\n\n /**\n * @constructor\n * @param {Object} config - hlsjs config object. it also contains the jsonp callback function\n */\n constructor(config: any) {\n super(config);\n const loadOrig = this.load.bind(this);\n const callback = pLoader.redirectExternalStreamsHandler;\n this.load = (context, config, callbacks): void => {\n const url = context.url;\n if (context.type === 'manifest') {\n Utils.Http.jsonp(url, callback, {\n timeout: pLoader.redirectExternalStreamsTimeout\n })\n .then(uri => {\n context.url = uri;\n loadOrig(context, config, callbacks);\n })\n .catch(() => loadOrig(context, config, callbacks));\n } else {\n loadOrig(context, config, callbacks);\n }\n };\n }\n}\n","import Hls from 'hls.js';\nimport Hlsjs, {HlsListeners, Level, MediaPlaylist} from 'hls.js';\nimport DefaultConfig from './default-config.json';\nimport {ErrorDetailsType, HlsJsErrorMap} from './errors';\nimport {\n AudioTrack,\n BaseMediaSourceAdapter,\n createTimedMetadata,\n Env,\n Error as PKError,\n EventType,\n filterTracksByRestriction,\n getNativeLanguageName,\n IMediaSourceAdapter,\n PKABRRestrictionObject,\n PKMediaSourceObject,\n PKRequestObject,\n PKResponseObject,\n RequestType,\n TextTrack,\n TimedMetadata,\n Track,\n Utils,\n VideoTrack,\n AudioTrackKind\n} from '@playkit-js/playkit-js';\nimport pLoader from './jsonp-ploader';\nimport loader from './loader';\nimport {ILogger} from 'js-logger';\n\n/**\n * Adapter of hls.js lib for hls content.\n * @classdesc\n */\nexport default class HlsAdapter extends BaseMediaSourceAdapter {\n /**\n * The id of the adapter.\n * @member {string} id\n * @static\n * @private\n */\n public static id: string = 'HlsAdapter';\n /**\n * The adapter logger.\n * @member {any} _logger\n * @static\n * @private\n */\n protected static _logger: ILogger = BaseMediaSourceAdapter.getLogger(HlsAdapter.id);\n /**\n * The supported mime types by the hls adapter.\n * @member {Array<string>} _hlsMimeType\n * @static\n * @private\n */\n private static _hlsMimeTypes: Array<string> = [\n 'application/x-mpegurl',\n 'application/vnd.apple.mpegurl',\n 'audio/mpegurl',\n 'audio/x-mpegurl',\n 'video/x-mpegurl',\n 'video/mpegurl',\n 'application/mpegurl'\n ];\n\n /**\n * The Hls lib\n * @type {any}\n * @private\n */\n private _hlsjsLib: typeof Hlsjs = Hlsjs;\n /**\n * The hls player instance.\n * @member {any} _hls\n * @private\n */\n private _hls!: Hls;\n\n /**\n * Last recover date from decoding error\n * @type {number}\n * @private\n */\n private _recoverDecodingErrorDate!: number;\n\n /**\n * Last recover date from audio swap codec operation\n * @type {number}\n * @private\n */\n private _recoverSwapAudioCodecDate!: number;\n\n /**\n * Indicates if external redirect was performed\n * @type {boolean}\n * @private\n */\n private _triedReloadWithRedirect: boolean = false;\n\n /**\n * The _loadPromise handlers\n * @member {{resolve: (result: Promise<R> | R) => void, reject: (error: any) => void}} - _loadPromiseHandlers\n * @type {{resolve: (result: Promise<R> | R) => void, reject: (error: any) => void}}\n * @private\n */\n private _loadPromiseHandlers!: {resolve: (result: any) => void, reject: (error: any) => void} | null;\n\n /**\n * Reference to the player tracks.\n * @member {Array<Track>} - _playerTracks\n * @type {Array<Track>}\n * @private\n */\n private _playerTracks: Array<Track> = [];\n /**\n * Stream start time in seconds\n * @type {?number}\n * @private\n */\n private _startTime: number | undefined = 0;\n /**\n * Reference to _onRecoveredCallback function\n * @member {?Function} - _onRecoveredCallback\n * @type {?Function}\n * @private\n */\n private _onRecoveredCallback!: (() => void) | null;\n private _onMediaAttached!: () => void;\n private _mediaAttachedPromise!: Promise<void>;\n private _requestFilterError: boolean = false;\n private _responseFilterError: boolean = false;\n private _nativeTextTracksMap: any = {};\n private _lastLoadedFragSN: number = -1;\n private _sameFragSNLoadedCount: number = 0;\n private _waitForSubtitleLoad: boolean = true;\n /**\n * an object containing all the events we bind and unbind to.\n * @member {Object} - _adapterEventsBindings\n * @type {Object}\n * @private\n */\n private _adapterEventsBindings: Record<keyof HlsListeners, (...parms: any) => any> = {\n [Hlsjs.Events.ERROR]: (e, data) => this._onError(data),\n [Hlsjs.Events.MANIFEST_LOADED]: (e, data) => this._onManifestLoaded(data),\n [Hlsjs.Events.LEVEL_SWITCHED]: (e, data) => this._onLevelSwitched(e, data),\n [Hlsjs.Events.AUDIO_TRACK_SWITCHED]: (e, data) => this._onAudioTrackSwitched(e, data),\n [Hlsjs.Events.FPS_DROP]: (e, data) => this._onFpsDrop(data),\n [Hlsjs.Events.FRAG_PARSING_METADATA]: (e, data) => this._onFragParsingMetadata(data),\n [Hlsjs.Events.FRAG_LOADED]: (e, data) => this._onFragLoaded(data),\n [Hlsjs.Events.MEDIA_ATTACHED]: () => this._onMediaAttached(),\n [Hlsjs.Events.LEVEL_LOADED]: (e, data) => this._onLevelLoaded(e, data)\n } as Record<keyof HlsListeners, (...parms: any) => any>;\n\n /**\n * Factory method to create media source adapter.\n * @function createAdapter\n * @param {HTMLVideoElement} videoElement - The video element that the media source adapter work with.\n * @param {PKMediaSourceObject} source - The source Object.\n * @param {Object} config - The player configuration.\n * @returns {IMediaSourceAdapter} - New instance of the run time media source adapter.\n * @static\n */\n public static createAdapter(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config: any): IMediaSourceAdapter {\n const adapterConfig: any = Utils.Object.copyDeep(DefaultConfig);\n if (Utils.Object.hasPropertyPath(config, 'sources.options')) {\n const options = config.sources.options;\n adapterConfig.forceRedirectExternalStreams = options.forceRedirectExternalStreams;\n adapterConfig.redirectExternalStreamsHandler = options.redirectExternalStreamsHandler;\n adapterConfig.redirectExternalStreamsTimeout = options.redirectExternalStreamsTimeout;\n pLoader.redirectExternalStreamsHandler = adapterConfig.redirectExternalStreamsHandler;\n pLoader['redirectExternalStreamsTimeout'] = adapterConfig.redirectExternalStreamsTimeout;\n }\n if (Utils.Object.hasPropertyPath(config, 'sources.startTime')) {\n const startTime = Utils.Object.getPropertyPath(config, 'sources.startTime');\n if (startTime > -1) {\n adapterConfig.hlsConfig.startPosition = config.sources.startTime;\n }\n }\n if (Utils.Object.hasPropertyPath(config, 'text.useNativeTextTrack')) {\n adapterConfig.subtitleDisplay = Utils.Object.getPropertyPath(config, 'text.useNativeTextTrack');\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.fpsDroppedFramesInterval')) {\n adapterConfig.hlsConfig.fpsDroppedFramesInterval = config.abr.fpsDroppedFramesInterval;\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.fpsDroppedMonitoringThreshold')) {\n adapterConfig.hlsConfig.fpsDroppedMonitoringThreshold = config.abr.fpsDroppedMonitoringThreshold;\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.capLevelOnFPSDrop')) {\n HlsAdapter._logger.debug('capLevelOnFPSDrop = ', config.abr.capLevelOnFPSDrop);\n adapterConfig.hlsConfig.capLevelOnFPSDrop = config.abr.capLevelOnFPSDrop;\n }\n if (Utils.Object.hasPropertyPath(config, 'text')) {\n adapterConfig.hlsConfig.enableCEA708Captions = config.text.enableCEA708Captions;\n adapterConfig.hlsConfig.captionsTextTrack1Label = config.text.captionsTextTrack1Label;\n adapterConfig.hlsConfig.captionsTextTrack1LanguageCode = config.text.captionsTextTrack1LanguageCode;\n adapterConfig.hlsConfig.captionsTextTrack2Label = config.text.captionsTextTrack2Label;\n adapterConfig.hlsConfig.captionsTextTrack2LanguageCode = config.text.captionsTextTrack2LanguageCode;\n }\n\n if (Utils.Object.hasPropertyPath(config, 'abr')) {\n const abr = config.abr;\n if (typeof abr.enabled === 'boolean') {\n adapterConfig.abr.enabled = abr.enabled;\n }\n if (typeof abr.capLevelToPlayerSize === 'boolean') {\n adapterConfig.hlsConfig.capLevelToPlayerSize = abr.capLevelToPlayerSize;\n }\n if (abr.defaultBandwidthEstimate) {\n adapterConfig.hlsConfig.abrEwmaDefaultEstimate = abr.defaultBandwidthEstimate;\n }\n if (abr.restrictions) {\n Utils.Object.createPropertyPath(adapterConfig, 'abr.restrictions', abr.restrictions);\n }\n }\n if (Utils.Object.hasPropertyPath(config, 'streaming.lowLatencyMode')) {\n adapterConfig.hlsConfig.lowLatencyMode = Utils.Object.getPropertyPath(config, 'streaming.lowLatencyMode');\n }\n if (Utils.Object.hasPropertyPath(config, 'playback.options.html5.hls')) {\n Utils.Object.mergeDeep(adapterConfig.hlsConfig, config.playback.options.html5.hls);\n }\n adapterConfig.network = config.network;\n return new this(videoElement, source, adapterConfig);\n }\n\n /**\n * Checks if hls adapter can play a given mime type.\n * @function canPlayType\n * @param {string} mimeType - The mime type to check.\n * @returns {boolean} - Whether the hls adapter can play a specific mime type.\n * @static\n */\n public static canPlayType(mimeType: string): boolean {\n const canHlsPlayType =\n typeof mimeType === 'string' ? HlsAdapter._hlsMimeTypes.includes(mimeType.toLowerCase()) && HlsAdapter.isMSESupported() : false;\n HlsAdapter._logger.debug('canPlayType result for mimeType:' + mimeType + ' is ' + canHlsPlayType.toString());\n return canHlsPlayType;\n }\n\n /**\n * Checks if hls adapter can play a given drm data.\n * For hls.js it always returns false.\n * @returns {boolean} - Whether the hls adapter can play a specific drm data.\n * @static\n */\n public static canPlayDrm(): boolean {\n HlsAdapter._logger.warn('canPlayDrm result is false');\n return false;\n }\n\n /**\n * Checks if the hls adapter is supported.\n * @function isSupported\n * @returns {boolean} - Whether hls is supported.\n * @static\n */\n public static isSupported(): boolean {\n const isHlsSupported = Hlsjs.isSupported();\n HlsAdapter._logger.debug('isSupported:' + isHlsSupported);\n return isHlsSupported;\n }\n\n /**\n * @constructor\n * @param {HTMLVideoElement} videoElement - The video element which will bind to the hls adapter\n * @param {PKMediaSourceObject} source - The source object\n * @param {Object} config - The media source adapter configuration\n */\n constructor(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config: any) {\n super(videoElement, source, config);\n HlsAdapter._logger.debug('Creating adapter. Hls version: ' + Hlsjs.version);\n this._config = Utils.Object.mergeDeep({}, DefaultConfig, this._config);\n this._init();\n }\n\n /**\n * init the hls adapter\n * @function _init\n * @private\n * @returns {void}\n */\n private _init(): void {\n if (this._config.forceRedirectExternalStreams) {\n this._config.hlsConfig['pLoader'] = pLoader;\n }\n this._maybeSetFilters();\n this._hls = new Hlsjs(this._config.hlsConfig);\n this._capabilities.fpsControl = true;\n this._hls.subtitleDisplay = this._config.subtitleDisplay;\n this._addBindings();\n }\n\n private _maybeSetFilters(): void {\n if (typeof Utils.Object.getPropertyPath(this._config, 'network.requestFilter') === 'function') {\n HlsAdapter._logger.debug('Register request filter');\n Utils.Object.mergeDeep(this._config.hlsConfig, {\n loader,\n xhrSetup: (xhr, url, context) => {\n let requestFilterPromise;\n const pkRequest: PKRequestObject = {url, body: null, headers: {}};\n try {\n if (context.type === 'manifest') {\n requestFilterPromise = this._config.network.requestFilter(RequestType.MANIFEST, pkRequest);\n }\n if (context.frag && context.frag.type !== 'subtitle') {\n requestFilterPromise = this._config.network.requestFilter(RequestType.SEGMENT, pkRequest);\n }\n } catch (error) {\n requestFilterPromise = Promise.reject(error);\n }\n requestFilterPromise = requestFilterPromise || Promise.resolve(pkRequest);\n return requestFilterPromise\n .then(updatedRequest => {\n context.url = updatedRequest.url;\n xhr.open('GET', updatedRequest.url, true);\n Object.entries(updatedRequest.headers).forEach(entry => {\n xhr.setRequestHeader(...entry);\n });\n if (typeof updatedRequest.withCredentials === 'boolean') {\n xhr.withCredentials = updatedRequest.withCredentials;\n }\n })\n .catch(error => {\n this._requestFilterError = true;\n throw error;\n });\n }\n });\n }\n\n if (typeof Utils.Object.getPropertyPath(this._config, 'network.responseFilter') === 'function') {\n // eslint-disable-next-line\n const self = this;\n HlsAdapter._logger.debug('Register response filter');\n Utils.Object.mergeDeep(this._config.hlsConfig, {\n loader,\n readystatechange: function (event) {\n const xhr = event.currentTarget,\n readyState = xhr.readyState,\n stats = this.stats,\n context = this.context,\n config = this.config;\n\n // don't proceed if xhr has been aborted\n if (stats.aborted) {\n return;\n }\n\n // >= HEADERS_RECEIVED\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n window.clearTimeout(this.requestTimeout);\n const {loading} = stats;\n if (loading.first === 0) {\n loading.first = Math.max(performance.now(), loading.start);\n }\n\n if (readyState === 4) {\n const status = xhr.status;\n // http status between 200 to 299 are all successful\n if (status >= 200 && status < 300) {\n loading.end = Math.max(stats.tfirst, performance.now());\n let data, len;\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n stats.loaded = stats.total = len;\n\n const pkResponse: PKResponseObject = {\n url: xhr.responseURL,\n originalUrl: context.url,\n data,\n headers: Utils.Http.convertHeadersToDictionary(xhr.getAllResponseHeaders())\n };\n let responseFilterPromise;\n try {\n if (context.type === 'manifest') {\n responseFilterPromise = self._config.network.responseFilter(RequestType.MANIFEST, pkResponse);\n }\n if (context.frag && context.frag.type !== 'subtitle') {\n responseFilterPromise = self._config.network.responseFilter(RequestType.SEGMENT, pkResponse);\n }\n } catch (error) {\n responseFilterPromise = Promise.reject(error);\n }\n responseFilterPromise = responseFilterPromise || Promise.resolve(pkResponse);\n return responseFilterPromise\n .then(updatedResponse => {\n this.callbacks.onSuccess(updatedResponse, stats, context, xhr);\n })\n .catch(error => {\n self._responseFilterError = true;\n this.callbacks.onError({code: status, text: error.message}, context, xhr);\n });\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || (status >= 400 && status < 499)) {\n HlsAdapter._logger.error(`${status} while loading ${context.url}`);\n this.callbacks.onError({code: status, text: xhr.statusText}, context, xhr);\n } else {\n // retry\n HlsAdapter._logger.warn(`${status} while loading ${context.url}, retrying in ${this.retryDelay}...`);\n // aborts and resets internal state\n this.destroy();\n // schedule retry\n this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n // set exponential backoff\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n }\n });\n }\n }\n\n /**\n * Adds the required bindings locally and with hls.js.\n * @function _addBindings\n * @private\n * @returns {void}\n */\n private _addBindings(): void {\n this._mediaAttachedPromise = new Promise(resolve => (this._onMediaAttached = resolve));\n for (const [event, callback] of Object.entries<(...parms: any) => any>(this._adapterEventsBindings)) {\n this._hls.on(event as keyof HlsListeners, callback);\n }\n this._onRecoveredCallback = (): void => this._onRecovered();\n this._onAddTrack = this._onAddTrack.bind(this);\n this._eventManager.listen(this._videoElement, 'addtrack', this._onAddTrack);\n this._videoElement.textTracks.onaddtrack = this._onAddTrack;\n }\n\n private _onFpsDrop(data: any): void {\n this._trigger(EventType.FPS_DROP, data);\n }\n\n private _onFragParsingMetadata(data: any): void {\n this._trigger('hlsFragParsingMetadata', data);\n const id3Track = Array.from(this._videoElement?.textTracks).find(track => track.label === 'id3');\n const id3Cues = Array.from(id3Track?.cues || []);\n const newCues: TimedMetadata[] = [];\n data?.samples.forEach(sample => {\n const cue = Utils.binarySearch(id3Cues, cue => cue.startTime - sample.pts);\n if (cue) {\n const timedMetadata: TimedMetadata = createTimedMetadata(cue)!;\n newCues.push(timedMetadata);\n }\n });\n if (newCues.length) {\n this._trigger(EventType.TIMED_METADATA_ADDED, {cues: newCues});\n }\n }\n\n private _onAddTrack(event: any): void {\n if (!this._hls.subtitleTracks.length) {\n // parse CEA 608/708 captions that not exposed on hls.subtitleTracks API\n const CEATextTrack = this._parseCEATextTrack(event.track);\n if (CEATextTrack) {\n HlsAdapter._logger.debug('A CEA 608/708 caption has been found', CEATextTrack);\n this._playerTracks.push(CEATextTrack);\n this._trigger(EventType.TRACKS_CHANGED, {tracks: this._playerTracks});\n }\n }\n }\n\n /**\n * attach media - return the media source to handle the video tag\n * @public\n * @returns {void}\n */\n public attachMediaSource(): void {\n if (!this._hls) {\n if (this._videoElement && this._videoElement.src) {\n Utils.Dom.setAttribute(this._videoElement, 'src', '');\n Utils.Dom.removeAttribute(this._videoElement, 'src');\n }\n this._init();\n }\n }\n\n /**\n * detach media - will remove the media source from handling the video\n * @public\n * @returns {void}\n */\n public detachMediaSource(): void {\n if (this._hls) {\n // 1 second different between duration and current time will signal as end - will enable replay button\n if (Math.floor(this['duration'] - this['currentTime']) === 0) {\n this._config['hlsConfig'].startPosition = 0;\n } else if (this['currentTime'] > 0) {\n this._config['hlsConfig'].startPosition = this['currentTime'];\n }\n this._reset();\n\n this._loadPromiseHandlers?.reject(\n new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, 'media detached while loading')\n );\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n this._hls = null as unknown as Hls;\n }\n }\n\n /**\n * video error event handler.\n * @param {MediaError} error - the media error\n * @public\n * @returns {boolean} if hls-adapter will try to recover\n */\n public handleMediaError(error: MediaError): boolean {\n if (error.code === error.MEDIA_ERR_DECODE) {\n HlsAdapter._logger.debug(\n 'The video playback was aborted due to a corruption problem or because the video used features your browser did not support.',\n error.message\n );\n return this._handleMediaError(Hlsjs.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR);\n } else {\n return false;\n }\n }\n\n /**\n * Load the video source\n * @function load\n * @param {number} startTime - Optional time to start the video from.\n * @returns {Promise<Object>} - The loaded data\n * @override\n */\n public load(startTime?: number): Promise<any> {\n if (!this._loadPromise) {\n this._startTime = startTime;\n this._loadPromise = new Promise((resolve, reject) => {\n this._loadPromiseHandlers = {resolve, reject};\n this._loadInternal();\n });\n }\n return this._loadPromise;\n }\n\n /**\n * Load the video source\n * @function load\n * @returns {void}\n * @private\n */\n private _loadInternal(): void {\n if (this._hls && this._sourceObj && this._sourceObj.url) {\n this._hls.loadSource(this._sourceObj.url);\n this._hls.attachMedia(this._videoElement);\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: this.isAdaptiveBitrateEnabled() ? 'auto' : 'manual'});\n } else {\n this._loadPromiseHandlers?.reject(\n new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, 'no url provided')\n );\n }\n }\n\n /**\n * Load the video source with installed playlist loader\n * @function _reloadWithDirectManifest\n * @returns {void}\n * @private\n */\n private _reloadWithDirectManifest(): void {\n // Mark that we tried once to redirect\n this._triedReloadWithRedirect = true;\n // reset hls.js\n this._reset();\n // re-init hls.js with the external redirect playlist loader\n this._config.hlsConfig['pLoader'] = pLoader;\n this._hls = new Hlsjs(this._config.hlsConfig);\n this._addBindings();\n this._loadInternal();\n }\n\n /**\n * Destroys the hls adapter.\n * @function destroy\n * @override\n * @returns {Promise<*>} - The destroy promise.\n */\n public destroy(): Promise<void> {\n return new Promise((resolve, reject) => {\n super.destroy().then(\n () => {\n HlsAdapter._logger.debug('destroy');\n this._playerTracks = [];\n this._nativeTextTracksMap = {};\n this._sameFragSNLoadedCount = 0;\n this._lastLoadedFragSN = -1;\n this._loadPromiseHandlers?.reject(\n new PKError(\n PKError.Severity.CRITICAL,\n PKError.Category.PLAYER,\n PKError.Code.HLS_FATAL_MEDIA_ERROR,\n 'The adapter has been destroyed while loading'\n )\n );\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n this._reset();\n resolve();\n },\n () => reject()\n );\n });\n }\n\n /**\n * reset hls.js instance and its bindings\n * @private\n * @returns {void}\n */\n private _reset(): void {\n this._removeBindings();\n this._requestFilterError = false;\n this._responseFilterError = false;\n this._hls.detachMedia();\n this._hls.destroy();\n }\n\n /**\n * Parse the hls tracks into player tracks.\n * @returns {Array<Track>} - The parsed tracks.\n * @private\n */\n private _parseTracks(): Array<Track> {\n const audioTracks: Track[] = this._parseAudioTracks(this._hls.audioTracks || []);\n const videoTracks = this._parseVideoTracks(this._hls.levels || []);\n const textTracks = this._parseTextTracks(this._hls.subtitleTracks || []);\n return audioTracks.concat(videoTracks).concat(textTracks);\n }\n\n /**\n * Extract flavorId from URL.\n * @param {string} url - The URL to extract flavorId from.\n * @returns {string} - The extracted flavorId or empty string if not found.\n * @private\n */\n private _extractFlavorId(url?: string): string {\n if (!url) {\n return '';\n }\n const id = url.match(/flavorId\\/([^/]+)/);\n return id ? id[1] : '';\n }\n\n /**\n * Parse hls audio tracks into player audio tracks.\n * @param {Array<Object>} hlsAudioTracks - The hls audio tracks.\n * @returns {Array<AudioTrack>} - The parsed audio tracks.\n * @private\n */\n private _parseAudioTracks(hlsAudioTracks: Array<MediaPlaylist>): AudioTrack[] {\n const audioTracks: AudioTrack[] = [];\n for (let i = 0; i < hlsAudioTracks.length; i++) {\n // Create audio tracks\n const settings = {\n id: hlsAudioTracks[i].id,\n active: this._hls.audioTrack === hlsAudioTracks[i].id,\n label: getNativeLanguageName(hlsAudioTracks[i].lang, hlsAudioTracks[i].name),\n language: hlsAudioTracks[i].lang,\n index: i,\n kind: hlsAudioTracks[i].characteristics ? AudioTrackKind.DESCRIPTION : AudioTrackKind.MAIN,\n flavorId: this._extractFlavorId(hlsAudioTracks[i].url)\n };\n audioTracks.push(new AudioTrack(settings));\n }\n return audioTracks;\n }\n\n /**\n * Parse hls video tracks into player video tracks.\n * @param {Array<Object>} hlsVideoTracks - The hls video tracks.\n * @returns {Array<VideoTrack>} - The parsed video tracks.\n * @private\n */\n private _parseVideoTracks(hlsVideoTracks: Level[]): VideoTrack[] {\n const videoTracks: VideoTrack[] = [];\n for (let i = 0; i < hlsVideoTracks.length; i++) {\n // Create video tracks\n const settings = {\n active: this._hls.startLevel === i,\n bandwidth: hlsVideoTracks[i].bitrate,\n width: hlsVideoTracks[i].width,\n height: hlsVideoTracks[i].height,\n language: '',\n index: i\n };\n videoTracks.push(new VideoTrack(settings));\n }\n return videoTracks;\n }\n\n /**\n * Parse hls text tracks into player text tracks.\n * @param {Array<Object>} hlsTextTracks - The hls text tracks.\n * @returns {Array<TextTrack>} - The parsed text tracks.\n * @private\n */\n private _parseTextTracks(hlsTextTracks: Array<MediaPlaylist>): Array<TextTrack> {\n const textTracks: TextTrack[] = [];\n for (const hlsTextTrack of hlsTextTracks) {\n // Create text tracks\n const settings = {\n id: hlsTextTrack.id,\n active: false,\n default: hlsTextTrack.default,\n label: hlsTextTrack.name,\n kind: this._captionsOrSubtitlesFromCharacteristics(hlsTextTrack),\n language: hlsTextTrack.lang\n };\n textTracks.push(new TextTrack(settings));\n }\n return textTracks;\n }\n\n private _captionsOrSubtitlesFromCharacteristics(\n track: MediaPlaylist,\n ): TextTrackKind {\n const characteristics = track.characteristics;\n if (characteristics) {\n if (\n /transcribes-spoken-dialog/gi.test(characteristics) &&\n /describes-music-and-sound/gi.test(characteristics)\n ) {\n return TextTrack.KIND.CAPTIONS;\n }\n }\n\n return TextTrack.KIND.SUBTITLES;\n }\n\n /**\n * Parse a CEA 608/708 text track which not expose on hlsjs api into player text tracks.\n * @param {Object} CEATextTrack - A video element text track.\n * @returns {?TextTrack} - A parsed text track if the param is a CEA 608/708 caption.\n * @private\n */\n private _parseCEATextTrack(CEATextTrack: any): TextTrack | null {\n let textTrack:TextTrack | null = null;\n if (CEATextTrack.kind === 'captions') {\n const settings = {\n id: CEATextTrack.id,\n active: CEATextTrack.mode === 'showing',\n label: CEATextTrack.label,\n kind: CEATextTrack.kind,\n language: CEATextTrack.language\n };\n textTrack = new TextTrack(settings);\n this._nativeTextTracksMap[textTrack.index] = CEATextTrack;\n }\n return textTrack;\n }\n\n /**\n * Select an audio track.\n * @function selectAudioTrack\n * @param {AudioTrack} audioTrack - the audio track to select.\n * @returns {void}\n * @public\n */\n public selectAudioTrack(audioTrack: AudioTrack): void {\n if (audioTrack instanceof AudioTrack && !audioTrack.active && this._hls.audioTracks) {\n this._hls.audioTrack = audioTrack.id;\n }\n }\n\n /**\n * Select a video track.\n * @function selectVideoTrack\n * @param {VideoTrack} videoTrack - the track to select.\n * @returns {void}\n * @public\n */\n public selectVideoTrack(videoTrack: VideoTrack): void {\n if (videoTrack instanceof VideoTrack && (!videoTrack.active || this.isAdaptiveBitrateEnabled()) && this._hls.levels) {\n if (this.isAdaptiveBitrateEnabled()) {\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: 'manual'});\n }\n this._hls.currentLevel = videoTrack.index;\n }\n }\n\n /**\n * Select a text track.\n * @function selectTextTrack\n * @param {TextTrack} textTrack - the track to select.\n * @returns {void}\n * @public\n */\n public selectTextTrack(textTrack: TextTrack): void {\n if (textTrack instanceof TextTrack && !textTrack.active && this._hls) {\n if (this._hls.subtitleTracks.length) {\n this._hls.subtitleTrack = textTrack.id;\n this._notifyTrackChanged(textTrack);\n } else {\n this._selectNativeTextTrack(textTrack);\n }\n }\n }\n\n /**\n * Select a video element text track.\n * @function _selectNativeTextTrack\n * @param {TextTrack} textTrack - the track to select.\n * @returns {void}\n * @private\n */\n private _selectNativeTextTrack(textTrack: TextTrack): void {\n const selectedTrack = this._nativeTextTracksMap[textTrack.index];\n if (selectedTrack) {\n this.disableNativeTextTracks();\n selectedTrack.mode = this._config.subtitleDisplay ? 'showing' : 'hidden';\n this._notifyTrackChanged(textTrack);\n }\n }\n\n private _notifyTrackChanged(textTrack: TextTrack): void {\n this._onTrackChanged(textTrack);\n }\n\n /** Hide the text track\n * @function hideTextTrack\n * @returns {void}\n * @public\n */\n public hideTextTrack(): void {\n if (this._hls && !this._hls.subtitleTracks.length) {\n this.disableNativeTextTracks();\n }\n }\n\n /**\n * Enables adaptive bitrate switching according to hls.js logic.\n * @function enableAdaptiveBitrate\n * @returns {void}\n * @public\n */\n public enableAdaptiveBitrate(): void {\n if (!this.isAdaptiveBitrateEnabled()) {\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: 'auto'});\n this._hls.nextLevel = -1;\n }\n }\n\n /**\n * Checking if adaptive bitrate switching is enabled.\n * @function isAdaptiveBitrateEnabled\n * @returns {boolean} - Whether adaptive bitrate is enabled.\n * @public\n */\n public isAdaptiveBitrateEnabled(): boolean {\n if (this._hls) {\n return this._hls.autoLevelEnabled;\n } else {\n return false;\n }\n }\n\n /**\n * Apply ABR restriction.\n * @function applyABRRestriction\n * @param {PKABRRestrictionObject} restrictions - abr restrictions config\n * @returns {void}\n * @public\n */\n public applyABRRestriction(restrictions: PKABRRestrictionObject): void {\n Utils.Object.createPropertyPath(this._config, 'abr.restrictions', restrictions);\n if (!this._hls.capLevelToPlayerSize) {\n this._maybeApplyAbrRestrictions(restrictions);\n }\n }\n\n /**\n * Returns the details of hls level\n * @function _getLevelDetails\n * @returns {Object} - Level details\n * @private\n */\n private _getLevelDetails(): any {\n const level =\n this._hls.levels[this._hls.currentLevel] ||\n this._hls.levels[this._hls.nextLevel] ||\n this._hls.levels[this._hls.nextAutoLevel] ||\n this._hls.levels[this._hls.nextLoadLevel];\n return level && level.details ? level.details : {};\n }\n\n /**\n * Returns the live edge\n * @returns {number} - live edge\n * @private\n */\n protected _getLiveEdge(): number {\n try {\n let liveEdge;\n if (this._hls.liveSyncPosition) {\n liveEdge = this._hls.liveSyncPosition;\n } else if (this._hls.config.liveSyncDuration) {\n liveEdge = this._videoElement.duration - this._hls.config.liveSyncDuration;\n } else {\n liveEdge = this._videoElement.duration - this._hls.config.liveSyncDurationCount * this._getLevelDetails().targetduration;\n }\n return liveEdge > 0 ? liveEdge : this._videoElement.duration;\n } catch (e) {\n HlsAdapter._logger.debug('Live edge calculation failed, fall back to duration');\n return this._videoElement.duration;\n }\n }\n\n /**\n * Seeking to live edge, calculated according hls configuration - liveSyncDuration or liveSyncDurationCount.\n * @function seekToLiveEdge\n * @returns {void}\n * @public\n */\n public seekToLiveEdge(): void {\n try {\n this._videoElement.currentTime = this._getLiveEdge();\n } catch (e) {\n return;\n }\n }\n\n /**\n * Gets the segment duration of the stream\n * @return {number} - Segment duration in seconds\n */\n public getSegmentDuration(): number {\n const fragCurrent = Utils.Object.getPropertyPath(this._hls, 'streamController.fragCurrent');\n return fragCurrent ? fragCurrent.duration : 0;\n }\n\n /**\n * Gets the live duration\n * @return {number} - live duration\n */\n public get liveDuration(): number {\n return this._getLiveEdge() + this.getSegmentDuration();\n }\n\n /**\n * Checking if the current playback is live.\n * @function isLive\n * @returns {boolean} - Whether playback is live.\n * @public\n */\n public isLive(): boolean {\n try {\n return !!this._getLevelDetails().live;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Fired after manifest has been loaded.\n * @function _onManifestLoaded\n * @param {any} data - the data of the manifest load event\n * @private\n * @returns {void}\n */\n private _onManifestLoaded(data: any): void {\n HlsAdapter._logger.debug('The source has been loaded successfully');\n if (!this._hls.config.autoStartLoad) {\n this._hls.startLoad(this._startTime);\n }\n this._playerTracks = this._parseTracks();\n // set current level to disable the auto selection in hls\n if (!this._config.abr.enabled) {\n this._hls.currentLevel = 0;\n }\n this._mediaAttachedPromise.then(() => {\n this._loadPromiseHandlers?.resolve({tracks: this._playerTracks});\n this._loadPromiseHandlers = null;\n });\n const {loading} = data.stats;\n const manifestDownloadTime = loading.end - loading.start;\n this._trigger(EventType.MANIFEST_LOADED, {miliSeconds: manifestDownloadTime});\n }\n\n /**\n * apply ABR restrictions\n * @private\n * @param {PKABRRestrictionObject} restrictions - abt config object\n * @returns {void}\n */\n private _maybeApplyAbrRestrictions(restrictions: PKABRRestrictionObject): void {\n const videoTracks = this._playerTracks.filter(track => track instanceof VideoTrack) as VideoTrack[];\n const availableTracks = filterTracksByRestriction(videoTracks, restrictions);\n if (availableTracks.length) {\n const minLevel = availableTracks[0];\n const maxLevel = availableTracks.pop();\n this._hls.config.minAutoBitrate = minLevel.bandwidth;\n this._hls.autoLevelCapping = maxLevel!.index;\n\n const activeTrackInRange = availableTracks.some(track => track.active);\n if (!this.isAdaptiveBitrateEnabled() && !activeTrackInRange) {\n this.selectVideoTrack(minLevel);\n }\n } else {\n HlsAdapter._logger.warn('Invalid restrictions, there are not tracks within the restriction range');\n }\n }\n\n /**\n * Triggers on video track selection (auto or manually) the 'videotrackchanged' event forward.\n * @function _onLevelSwitched\n * @param {string} event - The event name.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onLevelSwitched(event: string, data: any): void {\n const videoTrack = this._playerTracks.find(track => {\n return track instanceof VideoTrack && track.index === data.level;\n })!;\n this._onTrackChanged(videoTrack as VideoTrack);\n }\n\n /**\n * Triggers on audio track selection (auto or manually) the 'audiotrackchanged' event forward.\n * @function _onAudioTrackSwitched\n * @param {string} event - The event name.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onAudioTrackSwitched(event: string, data: any): void {\n const audioTrack = this._playerTracks.find(track => {\n return track instanceof AudioTrack && track.id === data.id;\n })!;\n this._onTrackChanged(audioTrack as AudioTrack);\n this._handleWaitingUponAudioTrackSwitch();\n }\n\n /**\n * Trigger a playing event whenever an audio track is changed & time_update event is fired.\n * This align Edge and IE behaviour to other browsers. When an audio track changed in IE & Edge, they trigger\n * waiting event but not playing event.\n * @returns {void}\n * @private\n */\n private _handleWaitingUponAudioTrackSwitch(): void {\n const affectedBrowsers = ['IE', 'Edge'];\n if (affectedBrowsers.includes(Env.browser.name!)) {\n const timeUpdateListener = (): void => {\n this._trigger(EventType.PLAYING);\n };\n this._eventManager.listenOnce(this._videoElement, EventType.TIME_UPDATE, timeUpdateListener);\n }\n }\n\n /**\n * Creates a detailed Error Object according to the relevant error name\n * @param {any} data - The event data object.\n * @private\n * @returns {any} - the relevant error data object\n */\n private _getErrorDataObject(data: any): any {\n const errorDataObject: any = {};\n errorDataObject.name = data.details;\n switch (errorDataObject.name) {\n case Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR:\n case Hlsjs.ErrorDetails.LEVEL_LOAD_ERROR:\n case Hlsjs.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n errorDataObject.url = data.url;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n case Hlsjs.ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case Hlsjs.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n errorDataObject.url = data.url;\n break;\n case Hlsjs.ErrorDetails.MANIFEST_PARSING_ERROR:\n errorDataObject.url = data.url;\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.LEVEL_SWITCH_ERROR:\n errorDataObject.level = data.level;\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.FRAG_LOAD_ERROR:\n errorDataObject.fragUrl = data.frag ? data.frag.url : null;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.FRAG_LOAD_TIMEOUT:\n errorDataObject.fragUrl = data.frag ? data.frag.url : null;\n break;\n case Hlsjs.ErrorDetails.FRAG_DECRYPT_ERROR:\n case Hlsjs.ErrorDetails.FRAG_PARSING_ERROR:\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.KEY_LOAD_ERROR:\n errorDataObject.fragDecryptedDataUri = data.frag && data.frag.decryptdata ? data.frag.decryptdata.uri : null;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.KEY_LOAD_TIMEOUT:\n errorDataObject.fragDecryptedDataUri = data.frag && data.frag.decryptdata ? data.frag.decryptdata.uri : null;\n break;\n case Hlsjs.ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n errorDataObject.mimeType = data.mimeType;\n errorDataObject.errorMsg = data.err ? data.err.message : null;\n break;\n case Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR:\n errorDataObject.buffer = data.buffer;\n break;\n }\n if (this._requestFilterError || this._responseFilterError) {\n errorDataObject.reason = data.response.text;\n }\n return errorDataObject;\n }\n\n /**\n * Handles hls errors.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onError(data: any): void {\n const errorType = data.type;\n const errorName = data.details;\n const errorFatal = data.fatal;\n const errorDataObject: any = this._getErrorDataObject(data);\n if (errorFatal) {\n let error: PKError;\n switch (errorType) {\n case Hlsjs.ErrorTypes.NETWORK_ERROR:\n {\n let code;\n if (this._requestFilterError) {\n code = PKError.Code.REQUEST_FILTER_ERROR;\n } else if (this._responseFilterError) {\n code = PKError.Code.RESPONSE_FILTER_ERROR;\n } else {\n code = PKError.Code.HTTP_ERROR;\n }\n if (\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR, Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(errorName) &&\n !this._triedReloadWithRedirect &&\n !this._config.forceRedirectExternalStreams &&\n !this._requestFilterError &&\n !this._responseFilterError\n ) {\n error = new PKError(PKError.Severity.RECOVERABLE, PKError.Category.NETWORK, code, errorDataObject);\n this._reloadWithDirectManifest();\n } else {\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.NETWORK, code, errorDataObject);\n }\n }\n break;\n case Hlsjs.ErrorTypes.MEDIA_ERROR:\n if (this._handleMediaError(errorName)) {\n error = new PKError(PKError.Severity.RECOVERABLE, PKError.Category.MEDIA, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n } else {\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.MEDIA, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n }\n break;\n default:\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n break;\n }\n this._trigger(EventType.ERROR, error);\n if (error && error.severity === PKError.Severity.CRITICAL) {\n if (this._loadPromiseHandlers) {\n this._loadPromiseHandlers?.reject(error);\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n }\n this.destroy();\n }\n } else {\n if (errorType === Hlsjs.ErrorTypes.MEDIA_ERROR && errorName === Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR && this._videoElement) {\n const recovered = this._handleBufferStalledErrorAtEnd();\n if (recovered) {\n return;\n }\n }\n const {category, code}: ErrorDetailsType =\n this._requestFilterError || this._responseFilterError\n ? {\n category: PKError.Category.NETWORK,\n code: this._requestFilterError ? PKError.Code.REQUEST_FILTER_ERROR : PKError.Code.RESPONSE_FILTER_ERROR\n }\n : HlsJsErrorMap[errorName] || {category: 0, code: 0};\n HlsAdapter._logger.warn(new PKError(PKError.Severity.RECOVERABLE, category, code, errorDataObject));\n }\n this._requestFilterError = false;\n this._responseFilterError = false;\n }\n\n /**\n * Tries to handle media errors via hls.js error handlers\n * @param {string} mediaErrorName - Media Error Name\n * @returns {boolean} - if media error is handled or not\n * @private\n */\n private _handleMediaError(mediaErrorName: string): boolean {\n HlsAdapter._logger.error('_handleMediaError mediaErrorName:', mediaErrorName);\n const now: number = performance.now();\n let recover = true;\n if (mediaErrorName === Hlsjs.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR) {\n HlsAdapter._logger.error('recover aborted due to: MANIFEST_INCOMPATIBLE_CODECS_ERROR');\n recover = false;\n } else if (this._checkTimeDeltaHasPassed(now, this._recoverDecodingErrorDate, this._config.recoverDecodingErrorDelay)) {\n if (mediaErrorName === Hlsjs.ErrorDetails.FRAG_PARSING_ERROR) {\n HlsAdapter._logger.error('Manifest parsing error on ' + this._videoElement.currentTime + '. Try to recover');\n return recover;\n }\n this._eventManager.listen(this._videoElement, EventType.LOADED_METADATA, this._onRecoveredCallback!);\n HlsAdapter._logger.debug('try to recover using: _recoverDecodingError()');\n this._recoverDecodingError();\n } else {\n if (this._checkTimeDeltaHasPassed(now, this._recoverSwapAudioCodecDate, this._config.recoverSwapAudioCodecDelay)) {\n this._eventManager.listen(this._videoElement, EventType.LOADED_METADATA, this._onRecoveredCallback!);\n HlsAdapter._logger.debug('try to recover using: _recoverSwapAudioCodec()');\n this._recoverSwapAudioCodec();\n } else {\n HlsAdapter._logger.error('cannot recover, last media error recovery failed error: ', mediaErrorName);\n recover = false;\n }\n }\n return recover;\n }\n\n /**\n * if buffer stalled and video is close to end, end the video\n * @returns {boolean} - if error is handled or not\n * @private\n */\n private _handleBufferStalledErrorAtEnd() {\n const currentTime = this._videoElement.currentTime;\n const duration = this._videoElement.duration;\n let recovered = false;\n if (duration && duration - currentTime <= 0.2) {\n // End the video\n this._videoElement.currentTime = duration;\n this._trigger(EventType.ENDED);\n HlsAdapter._logger.info('Video ended due to buffer stall near end.');\n recovered = true;\n }\n return recovered;\n }\n\n /**\n * trigger mediarecovered event if metadata is loaded (means the recovery succeeded)\n * @returns {void}\n * @private\n */\n private _onRecovered(): void {\n this._trigger(EventType.MEDIA_RECOVERED);\n this._videoElement.removeEventListener(EventType.LOADED_METADATA, this._onRecoveredCallback!);\n }\n\n /**\n * Check if time has passed a certain delta\n * @param {number} now - current time\n * @param {number} then - previous time\n * @param {number} delay - time delta in ms\n * @returns {boolean} - if time delta has\n * @private\n */\n private _checkTimeDeltaHasPassed(now: number, then: number, delay: number): boolean {\n return !then || now - then > delay;\n }\n\n /**\n * handle recover from decoding error\n * @returns {void}\n * @private\n */\n private _recoverDecodingError(): void {\n this._recoverDecodingErrorDate = performance.now();\n HlsAdapter._logger.warn('try to recover media Error');\n this._hls.recoverMediaError();\n }\n\n /**\n * handle recover from decoding error by swaping audio codec\n * @returns {void}\n * @private\n */\n private _recoverSwapAudioCodec(): void {\n this._recoverSwapAudioCodecDate = performance.now();\n HlsAdapter._logger.warn('try to swap Audio Codec and recover media Error');\n this._hls.swapAudioCodec();\n this._hls.recoverMediaError();\n }\n\n /**\n * Removes hls.js bindings.\n * @returns {void}\n * @private\n */\n private _removeBindings(): void {\n for (const [event, callback] of Object.entries<(...parms: any) => any>(this._adapterEventsBindings)) {\n this._hls.off(event as keyof HlsListeners, callback);\n }\n this._videoElement.textTracks.onaddtrack = null;\n this._onRecoveredCallback = null;\n if (this._eventManager) {\n this._eventManager.removeAll();\n }\n }\n\n /**\n * Get the start time of DVR window in live playback in seconds.\n * @returns {Number} - start time of DVR window.\n * @public\n */\n public getStartTimeOfDvrWindow(): number {\n if (this.isLive()) {\n try {\n const nextLoadLevel = this._hls.levels[this._hls.nextLoadLevel],\n details = nextLoadLevel.details!,\n fragments = details.fragments,\n fragLength = fragments.length,\n start = fragments[0].start + fragments[0].duration,\n end = fragments[fragLength - 1].start + fragments[fragLength - 1].duration,\n maxLatency =\n this._hls.config.liveMaxLatencyDuration !== undefined\n ? this._hls.config.liveMaxLatencyDuration\n : this._hls.config.liveMaxLatencyDurationCount * details.targetduration,\n minPosToSeek = Math.max(start - this._hls.config.maxFragLookUpTolerance, end - maxLatency);\n return minPosToSeek;\n } catch (e) {\n HlsAdapter._logger.debug('Unable obtain the start of DVR window');\n return 0;\n }\n } else {\n return 0;\n }\n }\n\n /**\n * called when a level is loaded\n * @private\n * @param {any} e - the event object\n * @param {any} data - the event data\n * @returns {void}\n */\n private _onLevelLoaded = (e: any, data: any): Promise<void> | undefined => {\n if (this.isLive()) {\n const {\n details: {endSN}\n } = data;\n if (this._lastLoadedFragSN === endSN) {\n this._sameFragSNLoadedCount++;\n HlsAdapter._logger.debug(`Same frag SN. Count is: ${this._sameFragSNLoadedCount}, Max is: ${this._config.network.maxStaleLevelReloads}`);\n if (this._sameFragSNLoadedCount >= this._config.network.maxStaleLevelReloads) {\n HlsAdapter._logger.error('Same frag loading reached max count');\n const error = new PKError(PKError.Severity.CRITICAL, PKError.Category.NETWORK, PKError.Code.LIVE_MANIFEST_REFRESH_ERROR, {\n fragSN: endSN\n });\n this._trigger(EventType.ERROR, error);\n return this.destroy();\n }\n HlsAdapter._logger.debug(`Last frag SN is: ${endSN}`);\n } else {\n this._sameFragSNLoadedCount = 0;\n }\n this._lastLoadedFragSN = endSN;\n }\n };\n\n /**\n * called when a fragment is loaded\n * @private\n * @param {any} data - the event data of the loaded fragment\n * @returns {void}\n */\n private _onFragLoaded(data: any): void {\n if (Utils.Object.hasPropertyPath(data, 'frag.stats.loading')) {\n const {stats} = data.frag;\n const fragmentDownloadTime = stats.loading.end - stats.loading.start;\n this._trigger(EventType.FRAG_LOADED, {\n miliSeconds: fragmentDownloadTime,\n bytes: stats.loaded,\n url: data.frag.url\n });\n }\n }\n\n /**\n * returns value the player targets the buffer\n * @returns {number} buffer target length in seconds\n */\n public get targetBuffer(): number {\n let targetBufferVal = NaN;\n if (!this._hls) return NaN;\n //distance from playback duration is the relevant buffer\n if (this.isLive()) {\n targetBufferVal = this._getLiveTargetBuffer() - (this._videoElement.currentTime - this._getLiveEdge());\n } else {\n // consideration of the end of the playback in the target buffer calc\n targetBufferVal = this._videoElement.duration - this._videoElement.currentTime;\n }\n targetBufferVal = Math.min(targetBufferVal, this._hls.config.maxMaxBufferLength + this._getLevelDetails().targetduration);\n return targetBufferVal;\n }\n\n private _getLiveTargetBuffer(): number {\n // if defined in the configuration object, liveSyncDuration will take precedence over the default liveSyncDurationCount\n if (this._hls.config.liveSyncDuration) {\n return this._hls.config.liveSyncDuration;\n } else {\n return this._hls.config.liveSyncDurationCount * this._getLevelDetails().targetduration;\n }\n }\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import {registerMediaSourceAdapter} from '@playkit-js/playkit-js';\nimport HlsAdapter from './hls-adapter';\n\nconst VERSION = __VERSION__;\nconst NAME = __NAME__;\n\nexport default HlsAdapter;\nexport {VERSION, NAME};\n\n// Register hls adapter to the media source adapter provider.\nif (HlsAdapter.isSupported()) {\n registerMediaSourceAdapter(HlsAdapter);\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__230__","__WEBPACK_EXTERNAL_MODULE__85__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","_arrayLikeToArray","arr","len","length","i","arr2","Array","_unsupportedIterableToArray","minLen","toString","slice","constructor","name","from","test","_slicedToArray","isArray","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","err","TypeError","_classCallCheck","instance","Constructor","_typeof","_toPropertyKey","arg","input","hint","prim","toPrimitive","res","String","_defineProperties","target","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_assertThisInitialized","ReferenceError","_getPrototypeOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_get","Reflect","property","receiver","base","object","desc","getOwnPropertyDescriptor","arguments","apply","this","_setPrototypeOf","p","_inherits","subClass","superClass","create","_possibleConstructorReturn","_defineProperty","HlsJsErrorMap","_HlsJsErrorMap","Hlsjs","MANIFEST_LOAD_ERROR","category","Error","Category","MANIFEST","code","Code","HTTP_ERROR","MANIFEST_LOAD_TIMEOUT","TIMEOUT","MANIFEST_PARSING_ERROR","HLSJS_CANNOT_PARSE","LEVEL_LOAD_ERROR","NETWORK","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","PLAYER","BITRATE_SWITCH_ISSUE","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","FRAG_PARSING_ERROR","MEDIA","HLS_FRAG_PARSING_ERROR","BUFFER_APPEND_ERROR","HLS_BUFFER_APPEND_ISSUE","BUFFER_APPENDING_ERROR","HLS_BUFFER_APPENDING_ISSUE","BUFFER_STALLED_ERROR","HLS_BUFFER_STALLED_ERROR","loader","_Hlsjs$DefaultConfig$","_super","config","_this","readystatechange","xhr","_this2","context","XMLHttpRequest","stats","tfirst","loaded","xhrSetupPromise","xhrSetup","url","e","open","readyState","Promise","reject","resolve","then","rangeEnd","setRequestHeader","rangeStart","onreadystatechange","onprogress","loadprogress","responseType","requestTimeout","window","setTimeout","loadtimeout","timeout","send","catch","callbacks","onError","status","text","message","pLoader","_loader","loadOrig","load","callback","redirectExternalStreamsHandler","type","Utils","Http","jsonp","redirectExternalStreamsTimeout","uri","data","HlsAdapter","_BaseMediaSourceAdapt","videoElement","source","ERROR","_onError","MANIFEST_LOADED","_onManifestLoaded","LEVEL_SWITCHED","_onLevelSwitched","AUDIO_TRACK_SWITCHED","_onAudioTrackSwitched","FPS_DROP","_onFpsDrop","FRAG_PARSING_METADATA","_onFragParsingMetadata","FRAG_LOADED","_onFragLoaded","MEDIA_ATTACHED","_onMediaAttached","LEVEL_LOADED","_onLevelLoaded","isLive","endSN","details","_lastLoadedFragSN","_sameFragSNLoadedCount","_logger","debug","concat","_config","network","maxStaleLevelReloads","error","PKError","Severity","CRITICAL","LIVE_MANIFEST_REFRESH_ERROR","fragSN","_trigger","EventType","destroy","mergeDeep","DefaultConfig","_init","forceRedirectExternalStreams","hlsConfig","_maybeSetFilters","_hls","_capabilities","fpsControl","subtitleDisplay","_addBindings","getPropertyPath","requestFilterPromise","pkRequest","body","headers","requestFilter","RequestType","frag","SEGMENT","updatedRequest","entries","forEach","entry","iter","withCredentials","_requestFilterError","event","_this3","currentTarget","aborted","clearTimeout","loading","first","Math","max","performance","now","start","end","response","byteLength","responseText","total","responseFilterPromise","pkResponse","responseURL","originalUrl","convertHeadersToDictionary","getAllResponseHeaders","responseFilter","updatedResponse","onSuccess","_responseFilterError","retry","maxRetry","statusText","warn","retryDelay","retryTimeout","loadInternal","min","maxRetryDelay","_this4","_mediaAttachedPromise","_Object$entries","_adapterEventsBindings","_Object$entries$_i","on","_onRecoveredCallback","_onRecovered","_onAddTrack","_eventManager","listen","_videoElement","textTracks","onaddtrack","_this$_videoElement","id3Track","find","track","label","id3Cues","cues","newCues","samples","sample","cue","binarySearch","startTime","pts","timedMetadata","createTimedMetadata","TIMED_METADATA_ADDED","subtitleTracks","CEATextTrack","_parseCEATextTrack","_playerTracks","TRACKS_CHANGED","tracks","src","Dom","setAttribute","removeAttribute","_this$_loadPromiseHan","floor","startPosition","_reset","_loadPromiseHandlers","HLS_FATAL_MEDIA_ERROR","_loadPromise","MEDIA_ERR_DECODE","_handleMediaError","MANIFEST_INCOMPATIBLE_CODECS_ERROR","_this5","_startTime","_loadInternal","_this$_loadPromiseHan2","_sourceObj","loadSource","attachMedia","ABR_MODE_CHANGED","mode","isAdaptiveBitrateEnabled","_triedReloadWithRedirect","_this6","_this6$_loadPromiseHa","_nativeTextTracksMap","_removeBindings","detachMedia","audioTracks","_parseAudioTracks","videoTracks","_parseVideoTracks","levels","_parseTextTracks","id","match","hlsAudioTracks","settings","active","audioTrack","getNativeLanguageName","lang","language","index","kind","characteristics","AudioTrackKind","DESCRIPTION","MAIN","flavorId","_extractFlavorId","AudioTrack","hlsVideoTracks","startLevel","bandwidth","bitrate","width","height","VideoTrack","hlsTextTracks","_step","_iterator","_createForOfIteratorHelper","s","hlsTextTrack","default","_captionsOrSubtitlesFromCharacteristics","TextTrack","f","KIND","CAPTIONS","SUBTITLES","textTrack","videoTrack","currentLevel","subtitleTrack","_notifyTrackChanged","_selectNativeTextTrack","selectedTrack","disableNativeTextTracks","_onTrackChanged","nextLevel","autoLevelEnabled","restrictions","createPropertyPath","capLevelToPlayerSize","_maybeApplyAbrRestrictions","level","nextAutoLevel","nextLoadLevel","liveEdge","liveSyncPosition","liveSyncDuration","duration","liveSyncDurationCount","_getLevelDetails","targetduration","currentTime","_getLiveEdge","fragCurrent","getSegmentDuration","live","_this7","autoStartLoad","startLoad","_parseTracks","abr","enabled","_this7$_loadPromiseHa","manifestDownloadTime","miliSeconds","filter","availableTracks","filterTracksByRestriction","minLevel","maxLevel","pop","minAutoBitrate","autoLevelCapping","activeTrackInRange","some","selectVideoTrack","_handleWaitingUponAudioTrackSwitch","_this8","includes","Env","browser","listenOnce","TIME_UPDATE","PLAYING","errorDataObject","AUDIO_TRACK_LOAD_ERROR","responseCode","AUDIO_TRACK_LOAD_TIMEOUT","reason","fragUrl","FRAG_DECRYPT_ERROR","KEY_LOAD_ERROR","fragDecryptedDataUri","decryptdata","KEY_LOAD_TIMEOUT","BUFFER_ADD_CODEC_ERROR","mimeType","errorMsg","buffer","errorType","errorName","errorFatal","fatal","_getErrorDataObject","_this$_loadPromiseHan3","NETWORK_ERROR","REQUEST_FILTER_ERROR","RESPONSE_FILTER_ERROR","RECOVERABLE","_reloadWithDirectManifest","MEDIA_ERROR","severity","_handleBufferStalledErrorAtEnd","_ref","mediaErrorName","recover","_checkTimeDeltaHasPassed","_recoverDecodingErrorDate","recoverDecodingErrorDelay","LOADED_METADATA","_recoverDecodingError","_recoverSwapAudioCodecDate","recoverSwapAudioCodecDelay","_recoverSwapAudioCodec","recovered","ENDED","info","MEDIA_RECOVERED","removeEventListener","delay","recoverMediaError","swapAudioCodec","_i2","_Object$entries2","_Object$entries2$_i","off","removeAll","fragments","fragLength","maxLatency","liveMaxLatencyDuration","liveMaxLatencyDurationCount","maxFragLookUpTolerance","hasPropertyPath","fragmentDownloadTime","bytes","targetBufferVal","NaN","_getLiveTargetBuffer","maxMaxBufferLength","adapterConfig","copyDeep","options","sources","fpsDroppedFramesInterval","fpsDroppedMonitoringThreshold","capLevelOnFPSDrop","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","defaultBandwidthEstimate","abrEwmaDefaultEstimate","lowLatencyMode","playback","html5","hls","canHlsPlayType","_hlsMimeTypes","toLowerCase","isMSESupported","isHlsSupported","BaseMediaSourceAdapter","_class","getLogger","VERSION","__VERSION__","NAME","__NAME__","isSupported","registerMediaSourceAdapter"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"playkit-hls.js","mappings":"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","sources":["webpack://playkit.hls/webpack/universalModuleDefinition","webpack://playkit.hls/external umd {\"commonjs\":\"@playkit-js/playkit-js\",\"commonjs2\":\"@playkit-js/playkit-js\",\"amd\":\"@playkit-js/playkit-js\",\"root\":[\"playkit\",\"core\"]}","webpack://playkit.hls/external umd {\"commonjs\":\"hls.js\",\"commonjs2\":\"hls.js\",\"amd\":\"hls.js\",\"root\":[\"Hls\"]}","webpack://playkit.hls/webpack/bootstrap","webpack://playkit.hls/webpack/runtime/compat get default export","webpack://playkit.hls/webpack/runtime/define property getters","webpack://playkit.hls/webpack/runtime/hasOwnProperty shorthand","webpack://playkit.hls/webpack/runtime/make namespace object","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://playkit.hls/./src/errors.ts","webpack://playkit.hls/./src/loader.ts","webpack://playkit.hls/./src/jsonp-ploader.ts","webpack://playkit.hls/./src/hls-adapter.ts","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://playkit.hls/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://playkit.hls/./src/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"@playkit-js/playkit-js\"), require(\"hls.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"playkit\", [\"@playkit-js/playkit-js\", \"hls.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"playkit\"] = factory(require(\"@playkit-js/playkit-js\"), require(\"hls.js\"));\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"hls\"] = factory(root[\"playkit\"][\"core\"], root[\"Hls\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__230__, __WEBPACK_EXTERNAL_MODULE__85__) {\nreturn ","module.exports = __WEBPACK_EXTERNAL_MODULE__230__;","module.exports = __WEBPACK_EXTERNAL_MODULE__85__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import Hlsjs from 'hls.js';\nimport {Error} from '@playkit-js/playkit-js';\n\ntype ErrorDetailsType = {category: number, code: number};\ntype HlsJsErrorMapType = {[name: string]: ErrorDetailsType};\n\nconst HlsJsErrorMap: HlsJsErrorMapType = {\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.MANIFEST_PARSING_ERROR]: {\n category: Error.Category.MANIFEST,\n code: Error.Code.HLSJS_CANNOT_PARSE\n },\n [Hlsjs.ErrorDetails.LEVEL_LOAD_ERROR]: {\n category: Error.Category.NETWORK,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.LEVEL_LOAD_TIMEOUT]: {\n category: Error.Category.NETWORK,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.LEVEL_SWITCH_ERROR]: {\n category: Error.Category.PLAYER,\n code: Error.Code.BITRATE_SWITCH_ISSUE\n },\n [Hlsjs.ErrorDetails.FRAG_LOAD_ERROR]: {\n category: Error.Category.NETWORK,\n code: Error.Code.HTTP_ERROR\n },\n [Hlsjs.ErrorDetails.FRAG_LOAD_TIMEOUT]: {\n category: Error.Category.NETWORK,\n code: Error.Code.TIMEOUT\n },\n [Hlsjs.ErrorDetails.FRAG_PARSING_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_FRAG_PARSING_ERROR\n },\n [Hlsjs.ErrorDetails.BUFFER_APPEND_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_APPEND_ISSUE\n },\n [Hlsjs.ErrorDetails.BUFFER_APPENDING_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_APPENDING_ISSUE\n },\n [Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR]: {\n category: Error.Category.MEDIA,\n code: Error.Code.HLS_BUFFER_STALLED_ERROR\n }\n};\n\nexport {HlsJsErrorMap};\nexport type {ErrorDetailsType};\n","/* eslint-disable */\n// @ts-nocheck\nimport Hlsjs from 'hls.js';\n\n/**\n * A custom override for the loader function in hls.js.\n * It passes the context for the xhrSetup config\n */\nexport default class loader extends Hlsjs.DefaultConfig.loader {\n constructor(config: any) {\n super(config);\n if (config && config.readystatechange) {\n this.readystatechange = config.readystatechange;\n }\n }\n\n loadInternal() {\n let xhr,\n context = this.context;\n xhr = this.loader = new XMLHttpRequest();\n\n const stats = this.stats;\n stats.tfirst = 0;\n stats.loaded = 0;\n const xhrSetup = this.xhrSetup;\n\n let xhrSetupPromise;\n try {\n if (xhrSetup) {\n try {\n xhrSetupPromise = xhrSetup(xhr, context.url, context);\n } catch (e) {\n // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader(\"Content-Language\", \"test\");}\n // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN\n xhr.open('GET', context.url, true);\n xhrSetupPromise = xhrSetup(xhr, context.url, context);\n }\n }\n if (!xhr.readyState) {\n xhr.open('GET', context.url, true);\n }\n } catch (e) {\n // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS\n xhrSetupPromise = Promise.reject(e);\n }\n xhrSetupPromise = xhrSetupPromise || Promise.resolve();\n xhrSetupPromise\n .then(() => {\n if (context.rangeEnd) {\n xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1));\n }\n\n xhr.onreadystatechange = this.readystatechange.bind(this);\n xhr.onprogress = this.loadprogress.bind(this);\n xhr.responseType = context.responseType;\n\n // setup timeout before we perform request\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout);\n xhr.send();\n })\n .catch(e => {\n this.callbacks.onError({code: xhr.status, text: e.message}, context, xhr);\n });\n }\n}\n","// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport {Utils} from '@playkit-js/playkit-js';\nimport loader from './loader';\n\n/**\n * A plugin override for the loader function in hls.js.\n * It checks if it should use jsonp for the manifest first, else - the regular\n * loader is called.\n */\nexport default class pLoader extends loader {\n /**\n * redirect external stream handler function\n * @param {Object} data - The json object that returns from the server.\n * @param {string} uri - the original uri\n * @returns {string} uri - the redirected URI\n * @static\n */\n public static redirectExternalStreamsHandler = (data, uri): string => uri;\n\n /**\n * @constructor\n * @param {Object} config - hlsjs config object. it also contains the jsonp callback function\n */\n constructor(config: any) {\n super(config);\n const loadOrig = this.load.bind(this);\n const callback = pLoader.redirectExternalStreamsHandler;\n this.load = (context, config, callbacks): void => {\n const url = context.url;\n if (context.type === 'manifest') {\n Utils.Http.jsonp(url, callback, {\n timeout: pLoader.redirectExternalStreamsTimeout\n })\n .then(uri => {\n context.url = uri;\n loadOrig(context, config, callbacks);\n })\n .catch(() => loadOrig(context, config, callbacks));\n } else {\n loadOrig(context, config, callbacks);\n }\n };\n }\n}\n","import Hls from 'hls.js';\nimport Hlsjs, {HlsListeners, Level, MediaPlaylist} from 'hls.js';\nimport DefaultConfig from './default-config.json';\nimport {ErrorDetailsType, HlsJsErrorMap} from './errors';\nimport {\n AudioTrack,\n BaseMediaSourceAdapter,\n createTimedMetadata,\n Env,\n Error as PKError,\n EventType,\n filterTracksByRestriction,\n getNativeLanguageName,\n IMediaSourceAdapter,\n PKABRRestrictionObject,\n PKMediaSourceObject,\n PKRequestObject,\n PKResponseObject,\n RequestType,\n TextTrack,\n TimedMetadata,\n Track,\n Utils,\n VideoTrack,\n AudioTrackKind\n} from '@playkit-js/playkit-js';\nimport pLoader from './jsonp-ploader';\nimport loader from './loader';\nimport {ILogger} from 'js-logger';\n\n/**\n * Adapter of hls.js lib for hls content.\n * @classdesc\n */\nexport default class HlsAdapter extends BaseMediaSourceAdapter {\n /**\n * The id of the adapter.\n * @member {string} id\n * @static\n * @private\n */\n public static id: string = 'HlsAdapter';\n /**\n * The adapter logger.\n * @member {any} _logger\n * @static\n * @private\n */\n protected static _logger: ILogger = BaseMediaSourceAdapter.getLogger(HlsAdapter.id);\n /**\n * The supported mime types by the hls adapter.\n * @member {Array<string>} _hlsMimeType\n * @static\n * @private\n */\n private static _hlsMimeTypes: Array<string> = [\n 'application/x-mpegurl',\n 'application/vnd.apple.mpegurl',\n 'audio/mpegurl',\n 'audio/x-mpegurl',\n 'video/x-mpegurl',\n 'video/mpegurl',\n 'application/mpegurl'\n ];\n\n /**\n * The Hls lib\n * @type {any}\n * @private\n */\n private _hlsjsLib: typeof Hlsjs = Hlsjs;\n /**\n * The hls player instance.\n * @member {any} _hls\n * @private\n */\n private _hls!: Hls;\n\n /**\n * Last recover date from decoding error\n * @type {number}\n * @private\n */\n private _recoverDecodingErrorDate!: number;\n\n /**\n * Last recover date from audio swap codec operation\n * @type {number}\n * @private\n */\n private _recoverSwapAudioCodecDate!: number;\n\n /**\n * Indicates if external redirect was performed\n * @type {boolean}\n * @private\n */\n private _triedReloadWithRedirect: boolean = false;\n\n /**\n * The _loadPromise handlers\n * @member {{resolve: (result: Promise<R> | R) => void, reject: (error: any) => void}} - _loadPromiseHandlers\n * @type {{resolve: (result: Promise<R> | R) => void, reject: (error: any) => void}}\n * @private\n */\n private _loadPromiseHandlers!: {resolve: (result: any) => void, reject: (error: any) => void} | null;\n\n /**\n * Reference to the player tracks.\n * @member {Array<Track>} - _playerTracks\n * @type {Array<Track>}\n * @private\n */\n private _playerTracks: Array<Track> = [];\n /**\n * Stream start time in seconds\n * @type {?number}\n * @private\n */\n private _startTime: number | undefined = 0;\n /**\n * Reference to _onRecoveredCallback function\n * @member {?Function} - _onRecoveredCallback\n * @type {?Function}\n * @private\n */\n private _onRecoveredCallback!: (() => void) | null;\n private _onMediaAttached!: () => void;\n private _mediaAttachedPromise!: Promise<void>;\n private _requestFilterError: boolean = false;\n private _responseFilterError: boolean = false;\n private _nativeTextTracksMap: any = {};\n private _lastLoadedFragSN: number = -1;\n private _sameFragSNLoadedCount: number = 0;\n private _waitForSubtitleLoad: boolean = true;\n /**\n * an object containing all the events we bind and unbind to.\n * @member {Object} - _adapterEventsBindings\n * @type {Object}\n * @private\n */\n private _adapterEventsBindings: Record<keyof HlsListeners, (...parms: any) => any> = {\n [Hlsjs.Events.ERROR]: (e, data) => this._onError(data),\n [Hlsjs.Events.MANIFEST_LOADED]: (e, data) => this._onManifestLoaded(data),\n [Hlsjs.Events.LEVEL_SWITCHED]: (e, data) => this._onLevelSwitched(e, data),\n [Hlsjs.Events.AUDIO_TRACK_SWITCHED]: (e, data) => this._onAudioTrackSwitched(e, data),\n [Hlsjs.Events.FPS_DROP]: (e, data) => this._onFpsDrop(data),\n [Hlsjs.Events.FRAG_PARSING_METADATA]: (e, data) => this._onFragParsingMetadata(data),\n [Hlsjs.Events.FRAG_LOADED]: (e, data) => this._onFragLoaded(data),\n [Hlsjs.Events.MEDIA_ATTACHED]: () => this._onMediaAttached(),\n [Hlsjs.Events.LEVEL_LOADED]: (e, data) => this._onLevelLoaded(e, data)\n } as Record<keyof HlsListeners, (...parms: any) => any>;\n\n /**\n * Factory method to create media source adapter.\n * @function createAdapter\n * @param {HTMLVideoElement} videoElement - The video element that the media source adapter work with.\n * @param {PKMediaSourceObject} source - The source Object.\n * @param {Object} config - The player configuration.\n * @returns {IMediaSourceAdapter} - New instance of the run time media source adapter.\n * @static\n */\n public static createAdapter(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config: any): IMediaSourceAdapter {\n const adapterConfig: any = Utils.Object.copyDeep(DefaultConfig);\n if (Utils.Object.hasPropertyPath(config, 'sources.options')) {\n const options = config.sources.options;\n adapterConfig.forceRedirectExternalStreams = options.forceRedirectExternalStreams;\n adapterConfig.redirectExternalStreamsHandler = options.redirectExternalStreamsHandler;\n adapterConfig.redirectExternalStreamsTimeout = options.redirectExternalStreamsTimeout;\n pLoader.redirectExternalStreamsHandler = adapterConfig.redirectExternalStreamsHandler;\n pLoader['redirectExternalStreamsTimeout'] = adapterConfig.redirectExternalStreamsTimeout;\n }\n if (Utils.Object.hasPropertyPath(config, 'sources.startTime')) {\n const startTime = Utils.Object.getPropertyPath(config, 'sources.startTime');\n if (startTime > -1) {\n adapterConfig.hlsConfig.startPosition = config.sources.startTime;\n }\n }\n if (Utils.Object.hasPropertyPath(config, 'text.useNativeTextTrack')) {\n adapterConfig.subtitleDisplay = Utils.Object.getPropertyPath(config, 'text.useNativeTextTrack');\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.fpsDroppedFramesInterval')) {\n adapterConfig.hlsConfig.fpsDroppedFramesInterval = config.abr.fpsDroppedFramesInterval;\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.fpsDroppedMonitoringThreshold')) {\n adapterConfig.hlsConfig.fpsDroppedMonitoringThreshold = config.abr.fpsDroppedMonitoringThreshold;\n }\n if (Utils.Object.hasPropertyPath(config, 'abr.capLevelOnFPSDrop')) {\n HlsAdapter._logger.debug('capLevelOnFPSDrop = ', config.abr.capLevelOnFPSDrop);\n adapterConfig.hlsConfig.capLevelOnFPSDrop = config.abr.capLevelOnFPSDrop;\n }\n if (Utils.Object.hasPropertyPath(config, 'text')) {\n adapterConfig.hlsConfig.enableCEA708Captions = config.text.enableCEA708Captions;\n adapterConfig.hlsConfig.captionsTextTrack1Label = config.text.captionsTextTrack1Label;\n adapterConfig.hlsConfig.captionsTextTrack1LanguageCode = config.text.captionsTextTrack1LanguageCode;\n adapterConfig.hlsConfig.captionsTextTrack2Label = config.text.captionsTextTrack2Label;\n adapterConfig.hlsConfig.captionsTextTrack2LanguageCode = config.text.captionsTextTrack2LanguageCode;\n }\n\n if (Utils.Object.hasPropertyPath(config, 'abr')) {\n const abr = config.abr;\n if (typeof abr.enabled === 'boolean') {\n adapterConfig.abr.enabled = abr.enabled;\n }\n if (typeof abr.capLevelToPlayerSize === 'boolean') {\n adapterConfig.hlsConfig.capLevelToPlayerSize = abr.capLevelToPlayerSize;\n }\n if (abr.defaultBandwidthEstimate) {\n adapterConfig.hlsConfig.abrEwmaDefaultEstimate = abr.defaultBandwidthEstimate;\n }\n if (abr.restrictions) {\n Utils.Object.createPropertyPath(adapterConfig, 'abr.restrictions', abr.restrictions);\n }\n }\n if (Utils.Object.hasPropertyPath(config, 'streaming.lowLatencyMode')) {\n adapterConfig.hlsConfig.lowLatencyMode = Utils.Object.getPropertyPath(config, 'streaming.lowLatencyMode');\n }\n if (Utils.Object.hasPropertyPath(config, 'playback.options.html5.hls')) {\n Utils.Object.mergeDeep(adapterConfig.hlsConfig, config.playback.options.html5.hls);\n }\n adapterConfig.network = config.network;\n return new this(videoElement, source, adapterConfig);\n }\n\n /**\n * Checks if hls adapter can play a given mime type.\n * @function canPlayType\n * @param {string} mimeType - The mime type to check.\n * @returns {boolean} - Whether the hls adapter can play a specific mime type.\n * @static\n */\n public static canPlayType(mimeType: string): boolean {\n const canHlsPlayType =\n typeof mimeType === 'string' ? HlsAdapter._hlsMimeTypes.includes(mimeType.toLowerCase()) && HlsAdapter.isMSESupported() : false;\n HlsAdapter._logger.debug('canPlayType result for mimeType:' + mimeType + ' is ' + canHlsPlayType.toString());\n return canHlsPlayType;\n }\n\n /**\n * Checks if hls adapter can play a given drm data.\n * For hls.js it always returns false.\n * @returns {boolean} - Whether the hls adapter can play a specific drm data.\n * @static\n */\n public static canPlayDrm(): boolean {\n HlsAdapter._logger.warn('canPlayDrm result is false');\n return false;\n }\n\n /**\n * Checks if the hls adapter is supported.\n * @function isSupported\n * @returns {boolean} - Whether hls is supported.\n * @static\n */\n public static isSupported(): boolean {\n const isHlsSupported = Hlsjs.isSupported();\n HlsAdapter._logger.debug('isSupported:' + isHlsSupported);\n return isHlsSupported;\n }\n\n /**\n * @constructor\n * @param {HTMLVideoElement} videoElement - The video element which will bind to the hls adapter\n * @param {PKMediaSourceObject} source - The source object\n * @param {Object} config - The media source adapter configuration\n */\n constructor(videoElement: HTMLVideoElement, source: PKMediaSourceObject, config: any) {\n super(videoElement, source, config);\n HlsAdapter._logger.debug('Creating adapter. Hls version: ' + Hlsjs.version);\n this._config = Utils.Object.mergeDeep({}, DefaultConfig, this._config);\n this._init();\n }\n\n /**\n * init the hls adapter\n * @function _init\n * @private\n * @returns {void}\n */\n private _init(): void {\n if (this._config.forceRedirectExternalStreams) {\n this._config.hlsConfig['pLoader'] = pLoader;\n }\n this._maybeSetFilters();\n this._hls = new Hlsjs(this._config.hlsConfig);\n this._capabilities.fpsControl = true;\n this._hls.subtitleDisplay = this._config.subtitleDisplay;\n this._addBindings();\n }\n\n private _maybeSetFilters(): void {\n if (typeof Utils.Object.getPropertyPath(this._config, 'network.requestFilter') === 'function') {\n HlsAdapter._logger.debug('Register request filter');\n Utils.Object.mergeDeep(this._config.hlsConfig, {\n loader,\n xhrSetup: (xhr, url, context) => {\n let requestFilterPromise;\n const pkRequest: PKRequestObject = {url, body: null, headers: {}};\n try {\n if (context.type === 'manifest') {\n requestFilterPromise = this._config.network.requestFilter(RequestType.MANIFEST, pkRequest);\n }\n if (context.frag && context.frag.type !== 'subtitle') {\n requestFilterPromise = this._config.network.requestFilter(RequestType.SEGMENT, pkRequest);\n }\n } catch (error) {\n requestFilterPromise = Promise.reject(error);\n }\n requestFilterPromise = requestFilterPromise || Promise.resolve(pkRequest);\n return requestFilterPromise\n .then(updatedRequest => {\n context.url = updatedRequest.url;\n xhr.open('GET', updatedRequest.url, true);\n Object.entries(updatedRequest.headers).forEach(entry => {\n xhr.setRequestHeader(...entry);\n });\n if (typeof updatedRequest.withCredentials === 'boolean') {\n xhr.withCredentials = updatedRequest.withCredentials;\n }\n })\n .catch(error => {\n this._requestFilterError = true;\n throw error;\n });\n }\n });\n }\n\n if (typeof Utils.Object.getPropertyPath(this._config, 'network.responseFilter') === 'function') {\n // eslint-disable-next-line\n const self = this;\n HlsAdapter._logger.debug('Register response filter');\n Utils.Object.mergeDeep(this._config.hlsConfig, {\n loader,\n readystatechange: function (event) {\n const xhr = event.currentTarget,\n readyState = xhr.readyState,\n stats = this.stats,\n context = this.context,\n config = this.config;\n\n // don't proceed if xhr has been aborted\n if (stats.aborted) {\n return;\n }\n\n // >= HEADERS_RECEIVED\n if (readyState >= 2) {\n // clear xhr timeout and rearm it if readyState less than 4\n window.clearTimeout(this.requestTimeout);\n const {loading} = stats;\n if (loading.first === 0) {\n loading.first = Math.max(performance.now(), loading.start);\n }\n\n if (readyState === 4) {\n const status = xhr.status;\n // http status between 200 to 299 are all successful\n if (status >= 200 && status < 300) {\n loading.end = Math.max(stats.tfirst, performance.now());\n let data, len;\n if (context.responseType === 'arraybuffer') {\n data = xhr.response;\n len = data.byteLength;\n } else {\n data = xhr.responseText;\n len = data.length;\n }\n stats.loaded = stats.total = len;\n\n const pkResponse: PKResponseObject = {\n url: xhr.responseURL,\n originalUrl: context.url,\n data,\n headers: Utils.Http.convertHeadersToDictionary(xhr.getAllResponseHeaders())\n };\n let responseFilterPromise;\n try {\n if (context.type === 'manifest') {\n responseFilterPromise = self._config.network.responseFilter(RequestType.MANIFEST, pkResponse);\n }\n if (context.frag && context.frag.type !== 'subtitle') {\n responseFilterPromise = self._config.network.responseFilter(RequestType.SEGMENT, pkResponse);\n }\n } catch (error) {\n responseFilterPromise = Promise.reject(error);\n }\n responseFilterPromise = responseFilterPromise || Promise.resolve(pkResponse);\n return responseFilterPromise\n .then(updatedResponse => {\n this.callbacks.onSuccess(updatedResponse, stats, context, xhr);\n })\n .catch(error => {\n self._responseFilterError = true;\n this.callbacks.onError({code: status, text: error.message}, context, xhr);\n });\n } else {\n // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error\n if (stats.retry >= config.maxRetry || (status >= 400 && status < 499)) {\n HlsAdapter._logger.error(`${status} while loading ${context.url}`);\n this.callbacks.onError({code: status, text: xhr.statusText}, context, xhr);\n } else {\n // retry\n HlsAdapter._logger.warn(`${status} while loading ${context.url}, retrying in ${this.retryDelay}...`);\n // aborts and resets internal state\n this.destroy();\n // schedule retry\n this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay);\n // set exponential backoff\n this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay);\n stats.retry++;\n }\n }\n } else {\n // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet\n this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), config.timeout);\n }\n }\n }\n });\n }\n }\n\n /**\n * Adds the required bindings locally and with hls.js.\n * @function _addBindings\n * @private\n * @returns {void}\n */\n private _addBindings(): void {\n this._mediaAttachedPromise = new Promise(resolve => (this._onMediaAttached = resolve));\n for (const [event, callback] of Object.entries<(...parms: any) => any>(this._adapterEventsBindings)) {\n this._hls.on(event as keyof HlsListeners, callback);\n }\n this._onRecoveredCallback = (): void => this._onRecovered();\n this._onAddTrack = this._onAddTrack.bind(this);\n this._eventManager.listen(this._videoElement, 'addtrack', this._onAddTrack);\n this._videoElement.textTracks.onaddtrack = this._onAddTrack;\n }\n\n private _onFpsDrop(data: any): void {\n this._trigger(EventType.FPS_DROP, data);\n }\n\n private _onFragParsingMetadata(data: any): void {\n this._trigger('hlsFragParsingMetadata', data);\n const id3Track = Array.from(this._videoElement?.textTracks).find(track => track.label === 'id3');\n const id3Cues = Array.from(id3Track?.cues || []);\n const newCues: TimedMetadata[] = [];\n data?.samples.forEach(sample => {\n const cue = Utils.binarySearch(id3Cues, cue => cue.startTime - sample.pts);\n if (cue) {\n const timedMetadata: TimedMetadata = createTimedMetadata(cue)!;\n newCues.push(timedMetadata);\n }\n });\n if (newCues.length) {\n this._trigger(EventType.TIMED_METADATA_ADDED, {cues: newCues});\n }\n }\n\n private _onAddTrack(event: any): void {\n if (!this._hls.subtitleTracks.length) {\n // parse CEA 608/708 captions that not exposed on hls.subtitleTracks API\n const CEATextTrack = this._parseCEATextTrack(event.track);\n if (CEATextTrack) {\n HlsAdapter._logger.debug('A CEA 608/708 caption has been found', CEATextTrack);\n this._playerTracks.push(CEATextTrack);\n this._trigger(EventType.TRACKS_CHANGED, {tracks: this._playerTracks});\n }\n }\n }\n\n /**\n * attach media - return the media source to handle the video tag\n * @public\n * @returns {void}\n */\n public attachMediaSource(): void {\n if (!this._hls) {\n if (this._videoElement && this._videoElement.src) {\n Utils.Dom.setAttribute(this._videoElement, 'src', '');\n Utils.Dom.removeAttribute(this._videoElement, 'src');\n }\n this._init();\n }\n }\n\n /**\n * detach media - will remove the media source from handling the video\n * @public\n * @returns {void}\n */\n public detachMediaSource(): void {\n if (this._hls) {\n // 1 second different between duration and current time will signal as end - will enable replay button\n if (Math.floor(this['duration'] - this['currentTime']) === 0) {\n this._config['hlsConfig'].startPosition = 0;\n } else if (this['currentTime'] > 0) {\n this._config['hlsConfig'].startPosition = this['currentTime'];\n }\n this._reset();\n\n this._loadPromiseHandlers?.reject(\n new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, 'media detached while loading')\n );\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n this._hls = null as unknown as Hls;\n }\n }\n\n /**\n * video error event handler.\n * @param {MediaError} error - the media error\n * @public\n * @returns {boolean} if hls-adapter will try to recover\n */\n public handleMediaError(error: MediaError): boolean {\n if (error.code === error.MEDIA_ERR_DECODE) {\n HlsAdapter._logger.debug(\n 'The video playback was aborted due to a corruption problem or because the video used features your browser did not support.',\n error.message\n );\n return this._handleMediaError(Hlsjs.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR);\n } else {\n return false;\n }\n }\n\n /**\n * Load the video source\n * @function load\n * @param {number} startTime - Optional time to start the video from.\n * @returns {Promise<Object>} - The loaded data\n * @override\n */\n public load(startTime?: number): Promise<any> {\n if (!this._loadPromise) {\n this._startTime = startTime;\n this._loadPromise = new Promise((resolve, reject) => {\n this._loadPromiseHandlers = {resolve, reject};\n this._loadInternal();\n });\n }\n return this._loadPromise;\n }\n\n /**\n * Load the video source\n * @function load\n * @returns {void}\n * @private\n */\n private _loadInternal(): void {\n if (this._hls && this._sourceObj && this._sourceObj.url) {\n this._hls.loadSource(this._sourceObj.url);\n this._hls.attachMedia(this._videoElement);\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: this.isAdaptiveBitrateEnabled() ? 'auto' : 'manual'});\n } else {\n this._loadPromiseHandlers?.reject(\n new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, 'no url provided')\n );\n }\n }\n\n /**\n * Load the video source with installed playlist loader\n * @function _reloadWithDirectManifest\n * @returns {void}\n * @private\n */\n private _reloadWithDirectManifest(): void {\n // Mark that we tried once to redirect\n this._triedReloadWithRedirect = true;\n // reset hls.js\n this._reset();\n // re-init hls.js with the external redirect playlist loader\n this._config.hlsConfig['pLoader'] = pLoader;\n this._hls = new Hlsjs(this._config.hlsConfig);\n this._addBindings();\n this._loadInternal();\n }\n\n /**\n * Destroys the hls adapter.\n * @function destroy\n * @override\n * @returns {Promise<*>} - The destroy promise.\n */\n public destroy(): Promise<void> {\n return new Promise((resolve, reject) => {\n super.destroy().then(\n () => {\n HlsAdapter._logger.debug('destroy');\n this._playerTracks = [];\n this._nativeTextTracksMap = {};\n this._sameFragSNLoadedCount = 0;\n this._lastLoadedFragSN = -1;\n this._loadPromiseHandlers?.reject(\n new PKError(\n PKError.Severity.CRITICAL,\n PKError.Category.PLAYER,\n PKError.Code.HLS_FATAL_MEDIA_ERROR,\n 'The adapter has been destroyed while loading'\n )\n );\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n this._reset();\n resolve();\n },\n () => reject()\n );\n });\n }\n\n /**\n * reset hls.js instance and its bindings\n * @private\n * @returns {void}\n */\n private _reset(): void {\n this._removeBindings();\n this._requestFilterError = false;\n this._responseFilterError = false;\n this._hls.detachMedia();\n this._hls.destroy();\n }\n\n /**\n * Parse the hls tracks into player tracks.\n * @returns {Array<Track>} - The parsed tracks.\n * @private\n */\n private _parseTracks(): Array<Track> {\n const audioTracks: Track[] = this._parseAudioTracks(this._hls.audioTracks || []);\n const videoTracks = this._parseVideoTracks(this._hls.levels || []);\n const textTracks = this._parseTextTracks(this._hls.subtitleTracks || []);\n return audioTracks.concat(videoTracks).concat(textTracks);\n }\n\n /**\n * Extract flavorId from URL.\n * @param {string} url - The URL to extract flavorId from.\n * @returns {string} - The extracted flavorId or empty string if not found.\n * @private\n */\n private _extractFlavorId(url?: string): string {\n if (!url) {\n return '';\n }\n const id = url.match(/flavorId\\/([^/]+)/);\n return id ? id[1] : '';\n }\n\n /**\n * Parse hls audio tracks into player audio tracks.\n * @param {Array<Object>} hlsAudioTracks - The hls audio tracks.\n * @returns {Array<AudioTrack>} - The parsed audio tracks.\n * @private\n */\n private _parseAudioTracks(hlsAudioTracks: Array<MediaPlaylist>): AudioTrack[] {\n const audioTracks: AudioTrack[] = [];\n for (let i = 0; i < hlsAudioTracks.length; i++) {\n const settings = {\n id: hlsAudioTracks[i].id,\n active: this._hls.audioTrack === hlsAudioTracks[i].id,\n label: getNativeLanguageName(hlsAudioTracks[i].lang, hlsAudioTracks[i].name),\n language: hlsAudioTracks[i].lang,\n index: i,\n kind: hlsAudioTracks[i].characteristics ? AudioTrackKind.DESCRIPTION : AudioTrackKind.MAIN,\n flavorId: this._extractFlavorId(hlsAudioTracks[i].url),\n // Raw manifest NAME — used downstream to deduplicate labels when two tracks share the\n // same ISO language code (e.g. English + English Audio Description, both lang=\"en\").\n manifestName: hlsAudioTracks[i].name || ''\n };\n audioTracks.push(new AudioTrack(settings));\n }\n return audioTracks;\n }\n\n /**\n * Parse hls video tracks into player video tracks.\n * @param {Array<Object>} hlsVideoTracks - The hls video tracks.\n * @returns {Array<VideoTrack>} - The parsed video tracks.\n * @private\n */\n private _parseVideoTracks(hlsVideoTracks: Level[]): VideoTrack[] {\n const videoTracks: VideoTrack[] = [];\n for (let i = 0; i < hlsVideoTracks.length; i++) {\n // Create video tracks\n const settings = {\n active: this._hls.startLevel === i,\n bandwidth: hlsVideoTracks[i].bitrate,\n width: hlsVideoTracks[i].width,\n height: hlsVideoTracks[i].height,\n language: '',\n index: i\n };\n videoTracks.push(new VideoTrack(settings));\n }\n return videoTracks;\n }\n\n /**\n * Parse hls text tracks into player text tracks.\n * @param {Array<Object>} hlsTextTracks - The hls text tracks.\n * @returns {Array<TextTrack>} - The parsed text tracks.\n * @private\n */\n private _parseTextTracks(hlsTextTracks: Array<MediaPlaylist>): Array<TextTrack> {\n const textTracks: TextTrack[] = [];\n for (const hlsTextTrack of hlsTextTracks) {\n // Create text tracks\n const settings = {\n id: hlsTextTrack.id,\n active: false,\n default: hlsTextTrack.default,\n label: hlsTextTrack.name,\n kind: this._captionsOrSubtitlesFromCharacteristics(hlsTextTrack),\n language: hlsTextTrack.lang\n };\n textTracks.push(new TextTrack(settings));\n }\n return textTracks;\n }\n\n private _captionsOrSubtitlesFromCharacteristics(\n track: MediaPlaylist,\n ): TextTrackKind {\n const characteristics = track.characteristics;\n if (characteristics) {\n if (\n /transcribes-spoken-dialog/gi.test(characteristics) &&\n /describes-music-and-sound/gi.test(characteristics)\n ) {\n return TextTrack.KIND.CAPTIONS;\n }\n }\n\n return TextTrack.KIND.SUBTITLES;\n }\n\n /**\n * Parse a CEA 608/708 text track which not expose on hlsjs api into player text tracks.\n * @param {Object} CEATextTrack - A video element text track.\n * @returns {?TextTrack} - A parsed text track if the param is a CEA 608/708 caption.\n * @private\n */\n private _parseCEATextTrack(CEATextTrack: any): TextTrack | null {\n let textTrack:TextTrack | null = null;\n if (CEATextTrack.kind === 'captions') {\n const settings = {\n id: CEATextTrack.id,\n active: CEATextTrack.mode === 'showing',\n label: CEATextTrack.label,\n kind: CEATextTrack.kind,\n language: CEATextTrack.language\n };\n textTrack = new TextTrack(settings);\n this._nativeTextTracksMap[textTrack.index] = CEATextTrack;\n }\n return textTrack;\n }\n\n /**\n * Select an audio track.\n * @function selectAudioTrack\n * @param {AudioTrack} audioTrack - the audio track to select.\n * @returns {void}\n * @public\n */\n public selectAudioTrack(audioTrack: AudioTrack): void {\n if (audioTrack instanceof AudioTrack && !audioTrack.active && this._hls.audioTracks) {\n this._hls.audioTrack = audioTrack.id;\n }\n }\n\n /**\n * Select a video track.\n * @function selectVideoTrack\n * @param {VideoTrack} videoTrack - the track to select.\n * @returns {void}\n * @public\n */\n public selectVideoTrack(videoTrack: VideoTrack): void {\n if (videoTrack instanceof VideoTrack && (!videoTrack.active || this.isAdaptiveBitrateEnabled()) && this._hls.levels) {\n if (this.isAdaptiveBitrateEnabled()) {\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: 'manual'});\n }\n this._hls.currentLevel = videoTrack.index;\n }\n }\n\n /**\n * Select a text track.\n * @function selectTextTrack\n * @param {TextTrack} textTrack - the track to select.\n * @returns {void}\n * @public\n */\n public selectTextTrack(textTrack: TextTrack): void {\n if (textTrack instanceof TextTrack && !textTrack.active && this._hls) {\n if (this._hls.subtitleTracks.length) {\n this._hls.subtitleTrack = textTrack.id;\n this._notifyTrackChanged(textTrack);\n } else {\n this._selectNativeTextTrack(textTrack);\n }\n }\n }\n\n /**\n * Select a video element text track.\n * @function _selectNativeTextTrack\n * @param {TextTrack} textTrack - the track to select.\n * @returns {void}\n * @private\n */\n private _selectNativeTextTrack(textTrack: TextTrack): void {\n const selectedTrack = this._nativeTextTracksMap[textTrack.index];\n if (selectedTrack) {\n this.disableNativeTextTracks();\n selectedTrack.mode = this._config.subtitleDisplay ? 'showing' : 'hidden';\n this._notifyTrackChanged(textTrack);\n }\n }\n\n private _notifyTrackChanged(textTrack: TextTrack): void {\n this._onTrackChanged(textTrack);\n }\n\n /** Hide the text track\n * @function hideTextTrack\n * @returns {void}\n * @public\n */\n public hideTextTrack(): void {\n if (this._hls && !this._hls.subtitleTracks.length) {\n this.disableNativeTextTracks();\n }\n }\n\n /**\n * Enables adaptive bitrate switching according to hls.js logic.\n * @function enableAdaptiveBitrate\n * @returns {void}\n * @public\n */\n public enableAdaptiveBitrate(): void {\n if (!this.isAdaptiveBitrateEnabled()) {\n this._trigger(EventType.ABR_MODE_CHANGED, {mode: 'auto'});\n this._hls.nextLevel = -1;\n }\n }\n\n /**\n * Checking if adaptive bitrate switching is enabled.\n * @function isAdaptiveBitrateEnabled\n * @returns {boolean} - Whether adaptive bitrate is enabled.\n * @public\n */\n public isAdaptiveBitrateEnabled(): boolean {\n if (this._hls) {\n return this._hls.autoLevelEnabled;\n } else {\n return false;\n }\n }\n\n /**\n * Apply ABR restriction.\n * @function applyABRRestriction\n * @param {PKABRRestrictionObject} restrictions - abr restrictions config\n * @returns {void}\n * @public\n */\n public applyABRRestriction(restrictions: PKABRRestrictionObject): void {\n Utils.Object.createPropertyPath(this._config, 'abr.restrictions', restrictions);\n if (!this._hls.capLevelToPlayerSize) {\n this._maybeApplyAbrRestrictions(restrictions);\n }\n }\n\n /**\n * Returns the details of hls level\n * @function _getLevelDetails\n * @returns {Object} - Level details\n * @private\n */\n private _getLevelDetails(): any {\n const level =\n this._hls.levels[this._hls.currentLevel] ||\n this._hls.levels[this._hls.nextLevel] ||\n this._hls.levels[this._hls.nextAutoLevel] ||\n this._hls.levels[this._hls.nextLoadLevel];\n return level && level.details ? level.details : {};\n }\n\n /**\n * Returns the live edge\n * @returns {number} - live edge\n * @private\n */\n protected _getLiveEdge(): number {\n try {\n let liveEdge;\n if (this._hls.liveSyncPosition) {\n liveEdge = this._hls.liveSyncPosition;\n } else if (this._hls.config.liveSyncDuration) {\n liveEdge = this._videoElement.duration - this._hls.config.liveSyncDuration;\n } else {\n liveEdge = this._videoElement.duration - this._hls.config.liveSyncDurationCount * this._getLevelDetails().targetduration;\n }\n return liveEdge > 0 ? liveEdge : this._videoElement.duration;\n } catch (e) {\n HlsAdapter._logger.debug('Live edge calculation failed, fall back to duration');\n return this._videoElement.duration;\n }\n }\n\n /**\n * Seeking to live edge, calculated according hls configuration - liveSyncDuration or liveSyncDurationCount.\n * @function seekToLiveEdge\n * @returns {void}\n * @public\n */\n public seekToLiveEdge(): void {\n try {\n this._videoElement.currentTime = this._getLiveEdge();\n } catch (e) {\n return;\n }\n }\n\n /**\n * Gets the segment duration of the stream\n * @return {number} - Segment duration in seconds\n */\n public getSegmentDuration(): number {\n const fragCurrent = Utils.Object.getPropertyPath(this._hls, 'streamController.fragCurrent');\n return fragCurrent ? fragCurrent.duration : 0;\n }\n\n /**\n * Gets the live duration\n * @return {number} - live duration\n */\n public get liveDuration(): number {\n return this._getLiveEdge() + this.getSegmentDuration();\n }\n\n /**\n * Checking if the current playback is live.\n * @function isLive\n * @returns {boolean} - Whether playback is live.\n * @public\n */\n public isLive(): boolean {\n try {\n return !!this._getLevelDetails().live;\n } catch (e) {\n return false;\n }\n }\n\n /**\n * Fired after manifest has been loaded.\n * @function _onManifestLoaded\n * @param {any} data - the data of the manifest load event\n * @private\n * @returns {void}\n */\n private _onManifestLoaded(data: any): void {\n HlsAdapter._logger.debug('The source has been loaded successfully');\n if (!this._hls.config.autoStartLoad) {\n this._hls.startLoad(this._startTime);\n }\n this._playerTracks = this._parseTracks();\n // set current level to disable the auto selection in hls\n if (!this._config.abr.enabled) {\n this._hls.currentLevel = 0;\n }\n this._mediaAttachedPromise.then(() => {\n this._loadPromiseHandlers?.resolve({tracks: this._playerTracks});\n this._loadPromiseHandlers = null;\n });\n const {loading} = data.stats;\n const manifestDownloadTime = loading.end - loading.start;\n this._trigger(EventType.MANIFEST_LOADED, {miliSeconds: manifestDownloadTime});\n }\n\n /**\n * apply ABR restrictions\n * @private\n * @param {PKABRRestrictionObject} restrictions - abt config object\n * @returns {void}\n */\n private _maybeApplyAbrRestrictions(restrictions: PKABRRestrictionObject): void {\n const videoTracks = this._playerTracks.filter(track => track instanceof VideoTrack) as VideoTrack[];\n const availableTracks = filterTracksByRestriction(videoTracks, restrictions);\n if (availableTracks.length) {\n const minLevel = availableTracks[0];\n const maxLevel = availableTracks.pop();\n this._hls.config.minAutoBitrate = minLevel.bandwidth;\n this._hls.autoLevelCapping = maxLevel!.index;\n\n const activeTrackInRange = availableTracks.some(track => track.active);\n if (!this.isAdaptiveBitrateEnabled() && !activeTrackInRange) {\n this.selectVideoTrack(minLevel);\n }\n } else {\n HlsAdapter._logger.warn('Invalid restrictions, there are not tracks within the restriction range');\n }\n }\n\n /**\n * Triggers on video track selection (auto or manually) the 'videotrackchanged' event forward.\n * @function _onLevelSwitched\n * @param {string} event - The event name.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onLevelSwitched(event: string, data: any): void {\n const videoTrack = this._playerTracks.find(track => {\n return track instanceof VideoTrack && track.index === data.level;\n })!;\n this._onTrackChanged(videoTrack as VideoTrack);\n }\n\n /**\n * Triggers on audio track selection (auto or manually) the 'audiotrackchanged' event forward.\n * @function _onAudioTrackSwitched\n * @param {string} event - The event name.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onAudioTrackSwitched(event: string, data: any): void {\n const audioTrack = this._playerTracks.find(track => {\n return track instanceof AudioTrack && track.id === data.id;\n })!;\n this._onTrackChanged(audioTrack as AudioTrack);\n this._handleWaitingUponAudioTrackSwitch();\n }\n\n /**\n * Trigger a playing event whenever an audio track is changed & time_update event is fired.\n * This align Edge and IE behaviour to other browsers. When an audio track changed in IE & Edge, they trigger\n * waiting event but not playing event.\n * @returns {void}\n * @private\n */\n private _handleWaitingUponAudioTrackSwitch(): void {\n const affectedBrowsers = ['IE', 'Edge'];\n if (affectedBrowsers.includes(Env.browser.name!)) {\n const timeUpdateListener = (): void => {\n this._trigger(EventType.PLAYING);\n };\n this._eventManager.listenOnce(this._videoElement, EventType.TIME_UPDATE, timeUpdateListener);\n }\n }\n\n /**\n * Creates a detailed Error Object according to the relevant error name\n * @param {any} data - The event data object.\n * @private\n * @returns {any} - the relevant error data object\n */\n private _getErrorDataObject(data: any): any {\n const errorDataObject: any = {};\n errorDataObject.name = data.details;\n switch (errorDataObject.name) {\n case Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR:\n case Hlsjs.ErrorDetails.LEVEL_LOAD_ERROR:\n case Hlsjs.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:\n errorDataObject.url = data.url;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT:\n case Hlsjs.ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case Hlsjs.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:\n errorDataObject.url = data.url;\n break;\n case Hlsjs.ErrorDetails.MANIFEST_PARSING_ERROR:\n errorDataObject.url = data.url;\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.LEVEL_SWITCH_ERROR:\n errorDataObject.level = data.level;\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.FRAG_LOAD_ERROR:\n errorDataObject.fragUrl = data.frag ? data.frag.url : null;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.FRAG_LOAD_TIMEOUT:\n errorDataObject.fragUrl = data.frag ? data.frag.url : null;\n break;\n case Hlsjs.ErrorDetails.FRAG_DECRYPT_ERROR:\n case Hlsjs.ErrorDetails.FRAG_PARSING_ERROR:\n errorDataObject.reason = data.reason;\n break;\n case Hlsjs.ErrorDetails.KEY_LOAD_ERROR:\n errorDataObject.fragDecryptedDataUri = data.frag && data.frag.decryptdata ? data.frag.decryptdata.uri : null;\n errorDataObject.responseCode = data.response ? data.response.code : null;\n break;\n case Hlsjs.ErrorDetails.KEY_LOAD_TIMEOUT:\n errorDataObject.fragDecryptedDataUri = data.frag && data.frag.decryptdata ? data.frag.decryptdata.uri : null;\n break;\n case Hlsjs.ErrorDetails.BUFFER_ADD_CODEC_ERROR:\n errorDataObject.mimeType = data.mimeType;\n errorDataObject.errorMsg = data.err ? data.err.message : null;\n break;\n case Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR:\n errorDataObject.buffer = data.buffer;\n break;\n }\n if (this._requestFilterError || this._responseFilterError) {\n errorDataObject.reason = data.response.text;\n }\n return errorDataObject;\n }\n\n /**\n * Handles hls errors.\n * @param {any} data - The event data object.\n * @private\n * @returns {void}\n */\n private _onError(data: any): void {\n const errorType = data.type;\n const errorName = data.details;\n const errorFatal = data.fatal;\n const errorDataObject: any = this._getErrorDataObject(data);\n if (errorFatal) {\n let error: PKError;\n switch (errorType) {\n case Hlsjs.ErrorTypes.NETWORK_ERROR:\n {\n let code;\n if (this._requestFilterError) {\n code = PKError.Code.REQUEST_FILTER_ERROR;\n } else if (this._responseFilterError) {\n code = PKError.Code.RESPONSE_FILTER_ERROR;\n } else {\n code = PKError.Code.HTTP_ERROR;\n }\n if (\n [Hlsjs.ErrorDetails.MANIFEST_LOAD_ERROR, Hlsjs.ErrorDetails.MANIFEST_LOAD_TIMEOUT].includes(errorName) &&\n !this._triedReloadWithRedirect &&\n !this._config.forceRedirectExternalStreams &&\n !this._requestFilterError &&\n !this._responseFilterError\n ) {\n error = new PKError(PKError.Severity.RECOVERABLE, PKError.Category.NETWORK, code, errorDataObject);\n this._reloadWithDirectManifest();\n } else {\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.NETWORK, code, errorDataObject);\n }\n }\n break;\n case Hlsjs.ErrorTypes.MEDIA_ERROR:\n if (this._handleMediaError(errorName)) {\n error = new PKError(PKError.Severity.RECOVERABLE, PKError.Category.MEDIA, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n } else {\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.MEDIA, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n }\n break;\n default:\n error = new PKError(PKError.Severity.CRITICAL, PKError.Category.PLAYER, PKError.Code.HLS_FATAL_MEDIA_ERROR, errorDataObject);\n break;\n }\n this._trigger(EventType.ERROR, error);\n if (error && error.severity === PKError.Severity.CRITICAL) {\n if (this._loadPromiseHandlers) {\n this._loadPromiseHandlers?.reject(error);\n this._loadPromiseHandlers = null;\n this._loadPromise = undefined;\n }\n this.destroy();\n }\n } else {\n if (errorType === Hlsjs.ErrorTypes.MEDIA_ERROR && errorName === Hlsjs.ErrorDetails.BUFFER_STALLED_ERROR && this._videoElement) {\n const recovered = this._handleBufferStalledErrorAtEnd();\n if (recovered) {\n return;\n }\n }\n const {category, code}: ErrorDetailsType =\n this._requestFilterError || this._responseFilterError\n ? {\n category: PKError.Category.NETWORK,\n code: this._requestFilterError ? PKError.Code.REQUEST_FILTER_ERROR : PKError.Code.RESPONSE_FILTER_ERROR\n }\n : HlsJsErrorMap[errorName] || {category: 0, code: 0};\n HlsAdapter._logger.warn(new PKError(PKError.Severity.RECOVERABLE, category, code, errorDataObject));\n }\n this._requestFilterError = false;\n this._responseFilterError = false;\n }\n\n /**\n * Tries to handle media errors via hls.js error handlers\n * @param {string} mediaErrorName - Media Error Name\n * @returns {boolean} - if media error is handled or not\n * @private\n */\n private _handleMediaError(mediaErrorName: string): boolean {\n HlsAdapter._logger.error('_handleMediaError mediaErrorName:', mediaErrorName);\n const now: number = performance.now();\n let recover = true;\n if (mediaErrorName === Hlsjs.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR) {\n HlsAdapter._logger.error('recover aborted due to: MANIFEST_INCOMPATIBLE_CODECS_ERROR');\n recover = false;\n } else if (this._checkTimeDeltaHasPassed(now, this._recoverDecodingErrorDate, this._config.recoverDecodingErrorDelay)) {\n if (mediaErrorName === Hlsjs.ErrorDetails.FRAG_PARSING_ERROR) {\n HlsAdapter._logger.error('Manifest parsing error on ' + this._videoElement.currentTime + '. Try to recover');\n return recover;\n }\n this._eventManager.listen(this._videoElement, EventType.LOADED_METADATA, this._onRecoveredCallback!);\n HlsAdapter._logger.debug('try to recover using: _recoverDecodingError()');\n this._recoverDecodingError();\n } else {\n if (this._checkTimeDeltaHasPassed(now, this._recoverSwapAudioCodecDate, this._config.recoverSwapAudioCodecDelay)) {\n this._eventManager.listen(this._videoElement, EventType.LOADED_METADATA, this._onRecoveredCallback!);\n HlsAdapter._logger.debug('try to recover using: _recoverSwapAudioCodec()');\n this._recoverSwapAudioCodec();\n } else {\n HlsAdapter._logger.error('cannot recover, last media error recovery failed error: ', mediaErrorName);\n recover = false;\n }\n }\n return recover;\n }\n\n /**\n * if buffer stalled and video is close to end, end the video\n * @returns {boolean} - if error is handled or not\n * @private\n */\n private _handleBufferStalledErrorAtEnd() {\n const currentTime = this._videoElement.currentTime;\n const duration = this._videoElement.duration;\n let recovered = false;\n if (duration && duration - currentTime <= 0.2) {\n // End the video\n this._videoElement.currentTime = duration;\n this._trigger(EventType.ENDED);\n HlsAdapter._logger.info('Video ended due to buffer stall near end.');\n recovered = true;\n }\n return recovered;\n }\n\n /**\n * trigger mediarecovered event if metadata is loaded (means the recovery succeeded)\n * @returns {void}\n * @private\n */\n private _onRecovered(): void {\n this._trigger(EventType.MEDIA_RECOVERED);\n this._videoElement.removeEventListener(EventType.LOADED_METADATA, this._onRecoveredCallback!);\n }\n\n /**\n * Check if time has passed a certain delta\n * @param {number} now - current time\n * @param {number} then - previous time\n * @param {number} delay - time delta in ms\n * @returns {boolean} - if time delta has\n * @private\n */\n private _checkTimeDeltaHasPassed(now: number, then: number, delay: number): boolean {\n return !then || now - then > delay;\n }\n\n /**\n * handle recover from decoding error\n * @returns {void}\n * @private\n */\n private _recoverDecodingError(): void {\n this._recoverDecodingErrorDate = performance.now();\n HlsAdapter._logger.warn('try to recover media Error');\n this._hls.recoverMediaError();\n }\n\n /**\n * handle recover from decoding error by swaping audio codec\n * @returns {void}\n * @private\n */\n private _recoverSwapAudioCodec(): void {\n this._recoverSwapAudioCodecDate = performance.now();\n HlsAdapter._logger.warn('try to swap Audio Codec and recover media Error');\n this._hls.swapAudioCodec();\n this._hls.recoverMediaError();\n }\n\n /**\n * Removes hls.js bindings.\n * @returns {void}\n * @private\n */\n private _removeBindings(): void {\n for (const [event, callback] of Object.entries<(...parms: any) => any>(this._adapterEventsBindings)) {\n this._hls.off(event as keyof HlsListeners, callback);\n }\n this._videoElement.textTracks.onaddtrack = null;\n this._onRecoveredCallback = null;\n if (this._eventManager) {\n this._eventManager.removeAll();\n }\n }\n\n /**\n * Get the start time of DVR window in live playback in seconds.\n * @returns {Number} - start time of DVR window.\n * @public\n */\n public getStartTimeOfDvrWindow(): number {\n if (this.isLive()) {\n try {\n const nextLoadLevel = this._hls.levels[this._hls.nextLoadLevel],\n details = nextLoadLevel.details!,\n fragments = details.fragments,\n fragLength = fragments.length,\n start = fragments[0].start + fragments[0].duration,\n end = fragments[fragLength - 1].start + fragments[fragLength - 1].duration,\n maxLatency =\n this._hls.config.liveMaxLatencyDuration !== undefined\n ? this._hls.config.liveMaxLatencyDuration\n : this._hls.config.liveMaxLatencyDurationCount * details.targetduration,\n minPosToSeek = Math.max(start - this._hls.config.maxFragLookUpTolerance, end - maxLatency);\n return minPosToSeek;\n } catch (e) {\n HlsAdapter._logger.debug('Unable obtain the start of DVR window');\n return 0;\n }\n } else {\n return 0;\n }\n }\n\n /**\n * called when a level is loaded\n * @private\n * @param {any} e - the event object\n * @param {any} data - the event data\n * @returns {void}\n */\n private _onLevelLoaded = (e: any, data: any): Promise<void> | undefined => {\n if (this.isLive()) {\n const {\n details: {endSN}\n } = data;\n if (this._lastLoadedFragSN === endSN) {\n this._sameFragSNLoadedCount++;\n HlsAdapter._logger.debug(`Same frag SN. Count is: ${this._sameFragSNLoadedCount}, Max is: ${this._config.network.maxStaleLevelReloads}`);\n if (this._sameFragSNLoadedCount >= this._config.network.maxStaleLevelReloads) {\n HlsAdapter._logger.error('Same frag loading reached max count');\n const error = new PKError(PKError.Severity.CRITICAL, PKError.Category.NETWORK, PKError.Code.LIVE_MANIFEST_REFRESH_ERROR, {\n fragSN: endSN\n });\n this._trigger(EventType.ERROR, error);\n return this.destroy();\n }\n HlsAdapter._logger.debug(`Last frag SN is: ${endSN}`);\n } else {\n this._sameFragSNLoadedCount = 0;\n }\n this._lastLoadedFragSN = endSN;\n }\n };\n\n /**\n * called when a fragment is loaded\n * @private\n * @param {any} data - the event data of the loaded fragment\n * @returns {void}\n */\n private _onFragLoaded(data: any): void {\n if (Utils.Object.hasPropertyPath(data, 'frag.stats.loading')) {\n const {stats} = data.frag;\n const fragmentDownloadTime = stats.loading.end - stats.loading.start;\n this._trigger(EventType.FRAG_LOADED, {\n miliSeconds: fragmentDownloadTime,\n bytes: stats.loaded,\n url: data.frag.url\n });\n }\n }\n\n /**\n * returns value the player targets the buffer\n * @returns {number} buffer target length in seconds\n */\n public get targetBuffer(): number {\n let targetBufferVal = NaN;\n if (!this._hls) return NaN;\n //distance from playback duration is the relevant buffer\n if (this.isLive()) {\n targetBufferVal = this._getLiveTargetBuffer() - (this._videoElement.currentTime - this._getLiveEdge());\n } else {\n // consideration of the end of the playback in the target buffer calc\n targetBufferVal = this._videoElement.duration - this._videoElement.currentTime;\n }\n targetBufferVal = Math.min(targetBufferVal, this._hls.config.maxMaxBufferLength + this._getLevelDetails().targetduration);\n return targetBufferVal;\n }\n\n private _getLiveTargetBuffer(): number {\n // if defined in the configuration object, liveSyncDuration will take precedence over the default liveSyncDurationCount\n if (this._hls.config.liveSyncDuration) {\n return this._hls.config.liveSyncDuration;\n } else {\n return this._hls.config.liveSyncDurationCount * this._getLevelDetails().targetduration;\n }\n }\n}\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import {registerMediaSourceAdapter} from '@playkit-js/playkit-js';\nimport HlsAdapter from './hls-adapter';\n\nconst VERSION = __VERSION__;\nconst NAME = __NAME__;\n\nexport default HlsAdapter;\nexport {VERSION, NAME};\n\n// Register hls adapter to the media source adapter provider.\nif (HlsAdapter.isSupported()) {\n registerMediaSourceAdapter(HlsAdapter);\n}\n"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__230__","__WEBPACK_EXTERNAL_MODULE__85__","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","_arrayLikeToArray","arr","len","length","i","arr2","Array","_unsupportedIterableToArray","minLen","toString","slice","constructor","name","from","test","_slicedToArray","isArray","_i","iterator","_s","_e","_x","_r","_arr","_n","_d","next","done","push","err","TypeError","_classCallCheck","instance","Constructor","_typeof","_toPropertyKey","arg","input","hint","prim","toPrimitive","res","String","_defineProperties","target","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_assertThisInitialized","ReferenceError","_getPrototypeOf","setPrototypeOf","getPrototypeOf","bind","__proto__","_get","Reflect","property","receiver","base","object","desc","getOwnPropertyDescriptor","arguments","apply","this","_setPrototypeOf","p","_inherits","subClass","superClass","create","_possibleConstructorReturn","_defineProperty","HlsJsErrorMap","_HlsJsErrorMap","Hlsjs","MANIFEST_LOAD_ERROR","category","Error","Category","MANIFEST","code","Code","HTTP_ERROR","MANIFEST_LOAD_TIMEOUT","TIMEOUT","MANIFEST_PARSING_ERROR","HLSJS_CANNOT_PARSE","LEVEL_LOAD_ERROR","NETWORK","LEVEL_LOAD_TIMEOUT","LEVEL_SWITCH_ERROR","PLAYER","BITRATE_SWITCH_ISSUE","FRAG_LOAD_ERROR","FRAG_LOAD_TIMEOUT","FRAG_PARSING_ERROR","MEDIA","HLS_FRAG_PARSING_ERROR","BUFFER_APPEND_ERROR","HLS_BUFFER_APPEND_ISSUE","BUFFER_APPENDING_ERROR","HLS_BUFFER_APPENDING_ISSUE","BUFFER_STALLED_ERROR","HLS_BUFFER_STALLED_ERROR","loader","_Hlsjs$DefaultConfig$","_super","config","_this","readystatechange","xhr","_this2","context","XMLHttpRequest","stats","tfirst","loaded","xhrSetupPromise","xhrSetup","url","e","open","readyState","Promise","reject","resolve","then","rangeEnd","setRequestHeader","rangeStart","onreadystatechange","onprogress","loadprogress","responseType","requestTimeout","window","setTimeout","loadtimeout","timeout","send","catch","callbacks","onError","status","text","message","pLoader","_loader","loadOrig","load","callback","redirectExternalStreamsHandler","type","Utils","Http","jsonp","redirectExternalStreamsTimeout","uri","data","HlsAdapter","_BaseMediaSourceAdapt","videoElement","source","ERROR","_onError","MANIFEST_LOADED","_onManifestLoaded","LEVEL_SWITCHED","_onLevelSwitched","AUDIO_TRACK_SWITCHED","_onAudioTrackSwitched","FPS_DROP","_onFpsDrop","FRAG_PARSING_METADATA","_onFragParsingMetadata","FRAG_LOADED","_onFragLoaded","MEDIA_ATTACHED","_onMediaAttached","LEVEL_LOADED","_onLevelLoaded","isLive","endSN","details","_lastLoadedFragSN","_sameFragSNLoadedCount","_logger","debug","concat","_config","network","maxStaleLevelReloads","error","PKError","Severity","CRITICAL","LIVE_MANIFEST_REFRESH_ERROR","fragSN","_trigger","EventType","destroy","mergeDeep","DefaultConfig","_init","forceRedirectExternalStreams","hlsConfig","_maybeSetFilters","_hls","_capabilities","fpsControl","subtitleDisplay","_addBindings","getPropertyPath","requestFilterPromise","pkRequest","body","headers","requestFilter","RequestType","frag","SEGMENT","updatedRequest","entries","forEach","entry","iter","withCredentials","_requestFilterError","event","_this3","currentTarget","aborted","clearTimeout","loading","first","Math","max","performance","now","start","end","response","byteLength","responseText","total","responseFilterPromise","pkResponse","responseURL","originalUrl","convertHeadersToDictionary","getAllResponseHeaders","responseFilter","updatedResponse","onSuccess","_responseFilterError","retry","maxRetry","statusText","warn","retryDelay","retryTimeout","loadInternal","min","maxRetryDelay","_this4","_mediaAttachedPromise","_Object$entries","_adapterEventsBindings","_Object$entries$_i","on","_onRecoveredCallback","_onRecovered","_onAddTrack","_eventManager","listen","_videoElement","textTracks","onaddtrack","_this$_videoElement","id3Track","find","track","label","id3Cues","cues","newCues","samples","sample","cue","binarySearch","startTime","pts","timedMetadata","createTimedMetadata","TIMED_METADATA_ADDED","subtitleTracks","CEATextTrack","_parseCEATextTrack","_playerTracks","TRACKS_CHANGED","tracks","src","Dom","setAttribute","removeAttribute","_this$_loadPromiseHan","floor","startPosition","_reset","_loadPromiseHandlers","HLS_FATAL_MEDIA_ERROR","_loadPromise","MEDIA_ERR_DECODE","_handleMediaError","MANIFEST_INCOMPATIBLE_CODECS_ERROR","_this5","_startTime","_loadInternal","_this$_loadPromiseHan2","_sourceObj","loadSource","attachMedia","ABR_MODE_CHANGED","mode","isAdaptiveBitrateEnabled","_triedReloadWithRedirect","_this6","_this6$_loadPromiseHa","_nativeTextTracksMap","_removeBindings","detachMedia","audioTracks","_parseAudioTracks","videoTracks","_parseVideoTracks","levels","_parseTextTracks","id","match","hlsAudioTracks","settings","active","audioTrack","getNativeLanguageName","lang","language","index","kind","characteristics","AudioTrackKind","DESCRIPTION","MAIN","flavorId","_extractFlavorId","manifestName","AudioTrack","hlsVideoTracks","startLevel","bandwidth","bitrate","width","height","VideoTrack","hlsTextTracks","_step","_iterator","_createForOfIteratorHelper","s","hlsTextTrack","default","_captionsOrSubtitlesFromCharacteristics","TextTrack","f","KIND","CAPTIONS","SUBTITLES","textTrack","videoTrack","currentLevel","subtitleTrack","_notifyTrackChanged","_selectNativeTextTrack","selectedTrack","disableNativeTextTracks","_onTrackChanged","nextLevel","autoLevelEnabled","restrictions","createPropertyPath","capLevelToPlayerSize","_maybeApplyAbrRestrictions","level","nextAutoLevel","nextLoadLevel","liveEdge","liveSyncPosition","liveSyncDuration","duration","liveSyncDurationCount","_getLevelDetails","targetduration","currentTime","_getLiveEdge","fragCurrent","getSegmentDuration","live","_this7","autoStartLoad","startLoad","_parseTracks","abr","enabled","_this7$_loadPromiseHa","manifestDownloadTime","miliSeconds","filter","availableTracks","filterTracksByRestriction","minLevel","maxLevel","pop","minAutoBitrate","autoLevelCapping","activeTrackInRange","some","selectVideoTrack","_handleWaitingUponAudioTrackSwitch","_this8","includes","Env","browser","listenOnce","TIME_UPDATE","PLAYING","errorDataObject","AUDIO_TRACK_LOAD_ERROR","responseCode","AUDIO_TRACK_LOAD_TIMEOUT","reason","fragUrl","FRAG_DECRYPT_ERROR","KEY_LOAD_ERROR","fragDecryptedDataUri","decryptdata","KEY_LOAD_TIMEOUT","BUFFER_ADD_CODEC_ERROR","mimeType","errorMsg","buffer","errorType","errorName","errorFatal","fatal","_getErrorDataObject","_this$_loadPromiseHan3","NETWORK_ERROR","REQUEST_FILTER_ERROR","RESPONSE_FILTER_ERROR","RECOVERABLE","_reloadWithDirectManifest","MEDIA_ERROR","severity","_handleBufferStalledErrorAtEnd","_ref","mediaErrorName","recover","_checkTimeDeltaHasPassed","_recoverDecodingErrorDate","recoverDecodingErrorDelay","LOADED_METADATA","_recoverDecodingError","_recoverSwapAudioCodecDate","recoverSwapAudioCodecDelay","_recoverSwapAudioCodec","recovered","ENDED","info","MEDIA_RECOVERED","removeEventListener","delay","recoverMediaError","swapAudioCodec","_i2","_Object$entries2","_Object$entries2$_i","off","removeAll","fragments","fragLength","maxLatency","liveMaxLatencyDuration","liveMaxLatencyDurationCount","maxFragLookUpTolerance","hasPropertyPath","fragmentDownloadTime","bytes","targetBufferVal","NaN","_getLiveTargetBuffer","maxMaxBufferLength","adapterConfig","copyDeep","options","sources","fpsDroppedFramesInterval","fpsDroppedMonitoringThreshold","capLevelOnFPSDrop","enableCEA708Captions","captionsTextTrack1Label","captionsTextTrack1LanguageCode","captionsTextTrack2Label","captionsTextTrack2LanguageCode","defaultBandwidthEstimate","abrEwmaDefaultEstimate","lowLatencyMode","playback","html5","hls","canHlsPlayType","_hlsMimeTypes","toLowerCase","isMSESupported","isHlsSupported","BaseMediaSourceAdapter","_class","getLogger","VERSION","__VERSION__","NAME","__NAME__","isSupported","registerMediaSourceAdapter"],"sourceRoot":""}
|
package/package.json
CHANGED
package/src/hls-adapter.ts
CHANGED
|
@@ -664,7 +664,6 @@ export default class HlsAdapter extends BaseMediaSourceAdapter {
|
|
|
664
664
|
private _parseAudioTracks(hlsAudioTracks: Array<MediaPlaylist>): AudioTrack[] {
|
|
665
665
|
const audioTracks: AudioTrack[] = [];
|
|
666
666
|
for (let i = 0; i < hlsAudioTracks.length; i++) {
|
|
667
|
-
// Create audio tracks
|
|
668
667
|
const settings = {
|
|
669
668
|
id: hlsAudioTracks[i].id,
|
|
670
669
|
active: this._hls.audioTrack === hlsAudioTracks[i].id,
|
|
@@ -672,7 +671,10 @@ export default class HlsAdapter extends BaseMediaSourceAdapter {
|
|
|
672
671
|
language: hlsAudioTracks[i].lang,
|
|
673
672
|
index: i,
|
|
674
673
|
kind: hlsAudioTracks[i].characteristics ? AudioTrackKind.DESCRIPTION : AudioTrackKind.MAIN,
|
|
675
|
-
flavorId: this._extractFlavorId(hlsAudioTracks[i].url)
|
|
674
|
+
flavorId: this._extractFlavorId(hlsAudioTracks[i].url),
|
|
675
|
+
// Raw manifest NAME — used downstream to deduplicate labels when two tracks share the
|
|
676
|
+
// same ISO language code (e.g. English + English Audio Description, both lang="en").
|
|
677
|
+
manifestName: hlsAudioTracks[i].name || ''
|
|
676
678
|
};
|
|
677
679
|
audioTracks.push(new AudioTrack(settings));
|
|
678
680
|
}
|