diff --git a/dashboard-ui/bower_components/hls.js/.bower.json b/dashboard-ui/bower_components/hls.js/.bower.json index 1b50124225..b3bac44149 100644 --- a/dashboard-ui/bower_components/hls.js/.bower.json +++ b/dashboard-ui/bower_components/hls.js/.bower.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.5.29", + "version": "0.5.30", "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", @@ -16,11 +16,11 @@ "test", "tests" ], - "_release": "0.5.29", + "_release": "0.5.30", "_resolution": { "type": "version", - "tag": "v0.5.29", - "commit": "d787e32fed3a72930f4f94f08dce8692dcec0755" + "tag": "v0.5.30", + "commit": "c8eab206bbd77040cbe9f35f64303775c2065608" }, "_source": "git://github.com/dailymotion/hls.js.git", "_target": "~0.5.7", diff --git a/dashboard-ui/bower_components/hls.js/bower.json b/dashboard-ui/bower_components/hls.js/bower.json index 761157f009..b6f1928b8b 100644 --- a/dashboard-ui/bower_components/hls.js/bower.json +++ b/dashboard-ui/bower_components/hls.js/bower.json @@ -1,6 +1,6 @@ { "name": "hls.js", - "version": "0.5.29", + "version": "0.5.30", "license": "Apache-2.0", "description": "Media Source Extension - HLS library, by/for Dailymotion", "homepage": "https://github.com/dailymotion/hls.js", diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.js b/dashboard-ui/bower_components/hls.js/dist/hls.js index 1b0ff6d9a0..666231d876 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js @@ -693,9 +693,14 @@ var BufferController = function (_EventHandler) { ms.removeEventListener('sourceopen', this.onmso); ms.removeEventListener('sourceended', this.onmse); ms.removeEventListener('sourceclose', this.onmsc); - // unlink MediaSource from video tag - this.media.src = ''; - this.media.removeAttribute('src'); + + try { + // unlink MediaSource from video tag + this.media.src = ''; + this.media.removeAttribute('src'); + } catch (err) { + _logger.logger.warn('onMediaDetaching:' + err.message + ' while unlinking video.src'); + } this.mediaSource = null; this.media = null; this.pendingTracks = null; @@ -1191,7 +1196,7 @@ var LevelController = function (_EventHandler) { key: 'destroy', value: function destroy() { if (this.timer) { - clearInterval(this.timer); + clearTimeout(this.timer); this.timer = null; } this._manualLevel = -1; @@ -1291,17 +1296,18 @@ var LevelController = function (_EventHandler) { }, { key: 'setLevelInternal', value: function setLevelInternal(newLevel) { + var levels = this._levels; // check if level idx is valid - if (newLevel >= 0 && newLevel < this._levels.length) { + if (newLevel >= 0 && newLevel < levels.length) { // stopping live reloading timer if any if (this.timer) { - clearInterval(this.timer); + clearTimeout(this.timer); this.timer = null; } this._level = newLevel; _logger.logger.log('switching to level ' + newLevel); this.hls.trigger(_events2.default.LEVEL_SWITCH, { level: newLevel }); - var level = this._levels[newLevel]; + var level = levels[newLevel]; // check if we need to load playlist for this level if (level.details === undefined || level.details.live === true) { // level not retrieved yet, or live playlist we need to (re)load it @@ -1366,7 +1372,7 @@ var LevelController = function (_EventHandler) { this._level = undefined; // stopping live reloading timer if any if (this.timer) { - clearInterval(this.timer); + clearTimeout(this.timer); this.timer = null; } // redispatch same error but with fatal set to true @@ -1379,16 +1385,30 @@ var LevelController = function (_EventHandler) { }, { key: 'onLevelLoaded', value: function onLevelLoaded(data) { - // check if current playlist is a live playlist - if (data.details.live && !this.timer) { - // if live playlist we will have to reload it periodically - // set reload period to playlist target duration - this.timer = setInterval(this.ontick, 1000 * data.details.targetduration); - } - if (!data.details.live && this.timer) { - // playlist is not live and timer is armed : stopping it - clearInterval(this.timer); - this.timer = null; + // only process level loaded events matching with expected level + if (data.level === this._level) { + var newDetails = data.details; + // if current playlist is a live playlist, arm a timer to reload it + if (newDetails.live) { + var reloadInterval = 1000 * newDetails.targetduration, + curLevel = this._levels[data.level], + curDetails = curLevel.details; + if (curDetails && newDetails.endSN === curDetails.endSN) { + // follow HLS Spec, If the client reloads a Playlist file and finds that it has not + // changed then it MUST wait for a period of one-half the target + // duration before retrying. + reloadInterval /= 2; + _logger.logger.log('same live playlist, reload twice faster'); + } + // decrement reloadInterval with level loading delay + reloadInterval -= performance.now() - data.stats.trequest; + // in any case, don't reload more than every second + reloadInterval = Math.max(1000, Math.round(reloadInterval)); + _logger.logger.log('live playlist, reload in ' + reloadInterval + ' ms'); + this.timer = setTimeout(this.ontick, reloadInterval); + } else { + this.timer = null; + } } } }, { @@ -1412,8 +1432,11 @@ var LevelController = function (_EventHandler) { return this._level; }, set: function set(newLevel) { - if (this._levels && this._levels.length > newLevel && (this._level !== newLevel || this._levels[newLevel].details === undefined)) { - this.setLevelInternal(newLevel); + var levels = this._levels; + if (levels && levels.length > newLevel) { + if (this._level !== newLevel || levels[newLevel].details === undefined) { + this.setLevelInternal(newLevel); + } } } }, { @@ -1423,6 +1446,9 @@ var LevelController = function (_EventHandler) { }, set: function set(newLevel) { this._manualLevel = newLevel; + if (this._startLevel === undefined) { + this._startLevel = newLevel; + } if (newLevel !== -1) { this.level = newLevel; } @@ -5460,12 +5486,6 @@ var BufferHelper = function () { buffered2.push(buffered[i]); } } - - // in case current position is located before buffered time ranges, report area as not buffered - if (buffered2.length && pos < buffered2[0].start) { - return { len: 0, start: pos, end: pos, nextStart: buffered2[0].start }; - } - for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) { var start = buffered2[i].start, end = buffered2[i].end; diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.js.map b/dashboard-ui/bower_components/hls.js/dist/hls.js.map index 1a7a0b1a8b..69f2a9614e 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.js.map +++ b/dashboard-ui/bower_components/hls.js/dist/hls.js.map @@ -42,7 +42,7 @@ "src/utils/xhr-loader.js" ], "names": [], - "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AC3DA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;;;;;IAEM,a;;;AAEJ,yBAAY,GAAZ,EAAiB;AAAA;;AAAA,iGACT,GADS,EACJ,iBAAM,YADF,EAEJ,iBAAM,kBAFF,EAGJ,iBAAM,WAHF,EAIJ,iBAAM,KAJF;;AAKf,UAAK,mBAAL,GAA2B,CAA3B;AACA,UAAK,iBAAL,GAAyB,CAAC,CAA1B;AACA,UAAK,cAAL,GAAsB,CAAC,CAAvB;AACA,UAAK,GAAL,GAAW,GAAX;AACA,UAAK,OAAL,GAAe,MAAK,iBAAL,CAAuB,IAAvB,OAAf;AATe;AAUhB;;;;8BAES;AACR,WAAK,UAAL;AACA,6BAAa,SAAb,CAAuB,OAAvB,CAA+B,IAA/B,CAAoC,IAApC;AACD;;;kCAEa,I,EAAM;AAClB,UAAI,CAAC,KAAK,KAAV,EAAiB;AACf,aAAK,KAAL,GAAa,YAAY,KAAK,OAAjB,EAA0B,GAA1B,CAAb;AACD;AACD,WAAK,WAAL,GAAmB,KAAK,IA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", + "mappings": "AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;AC3DA;;;;AACA;;;;AACA;;;;AACA;;AACA;;;;;;;;;;;;;;IAEM,a;;;AAEJ,yBAAY,GAAZ,EAAiB;AAAA;;AAAA,iGACT,GADS,EACJ,iBAAM,YADF,EAEJ,iBAAM,kBAFF,EAGJ,iBAAM,WAHF,EAIJ,iBAAM,KAJF;;AAKf,UAAK,mBAAL,GAA2B,CAA3B;AACA,UAAK,iBAAL,GAAyB,CAAC,CAA1B;AACA,UAAK,cAAL,GAAsB,CAAC,CAAvB;AACA,UAAK,GAAL,GAAW,GAAX;AACA,UAAK,OAAL,GAAe,MAAK,iBAAL,CAAuB,IAAvB,OAAf;AATe;AAUhB;;;;8BAES;AACR,WAAK,UAAL;AACA,6BAAa,SAAb,CAAuB,OAAvB,CAA+B,IAA/B,CAAoC,IAApC;AACD;;;kCAEa,I,EAAM;AAClB,UAAI,CAAC,KAAK,KAAV,EAAiB;AACf,aAAK,KAAL,GAAa,YAAY,KAAK,OAAjB,EAA0B,GAA1B,CAAb;AACD;AACD,WAAK,WAAL,GAAmB,KAAK,IA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", "file": "generated.js", "sourceRoot": "", "sourcesContent": [ @@ -50,9 +50,9 @@ "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n }\n throw TypeError('Uncaught, unspecified \"error\" event.');\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n", "var bundleFn = arguments[3];\nvar sources = arguments[4];\nvar cache = arguments[5];\n\nvar stringify = JSON.stringify;\n\nmodule.exports = function (fn) {\n var keys = [];\n var wkey;\n var cacheKeys = Object.keys(cache);\n\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n var exp = cache[key].exports;\n // Using babel as a transpiler to use esmodule, the export will always\n // be an object with the default export as a property of it. To ensure\n // the existing api and babel esmodule exports are both supported we\n // check for both\n if (exp === fn || exp.default === fn) {\n wkey = key;\n break;\n }\n }\n\n if (!wkey) {\n wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n var wcache = {};\n for (var i = 0, l = cacheKeys.length; i < l; i++) {\n var key = cacheKeys[i];\n wcache[key] = key;\n }\n sources[wkey] = [\n Function(['require','module','exports'], '(' + fn + ')(self)'),\n wcache\n ];\n }\n var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16);\n\n var scache = {}; scache[wkey] = wkey;\n sources[skey] = [\n Function(['require'], (\n // try to call default if defined to also support babel esmodule\n // exports\n 'var f = require(' + stringify(wkey) + ');' +\n '(f.default ? f.default : f)(self);'\n )),\n scache\n ];\n\n var src = '(' + bundleFn + ')({'\n + Object.keys(sources).map(function (key) {\n return stringify(key) + ':['\n + sources[key][0]\n + ',' + stringify(sources[key][1]) + ']'\n ;\n }).join(',')\n + '},{},[' + stringify(skey) + '])'\n ;\n\n var URL = window.URL || window.webkitURL || window.mozURL || window.msURL;\n\n return new Worker(URL.createObjectURL(\n new Blob([src], { type: 'text/javascript' })\n ));\n};\n", "/*\n * simple ABR Controller\n * - compute next level based on last fragment bw heuristics\n * - implement an abandon rules triggered if we have less than 2 frag buffered and if computed bw shows that we risk buffer stalling\n */\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport BufferHelper from '../helper/buffer-helper';\nimport {ErrorDetails} from '../errors';\nimport {logger} from '../utils/logger';\n\nclass AbrController extends EventHandler {\n\n constructor(hls) {\n super(hls, Event.FRAG_LOADING,\n Event.FRAG_LOAD_PROGRESS,\n Event.FRAG_LOADED,\n Event.ERROR);\n this.lastLoadedFragLevel = 0;\n this._autoLevelCapping = -1;\n this._nextAutoLevel = -1;\n this.hls = hls;\n this.onCheck = this.abandonRulesCheck.bind(this);\n }\n\n destroy() {\n this.clearTimer();\n EventHandler.prototype.destroy.call(this);\n }\n\n onFragLoading(data) {\n if (!this.timer) {\n this.timer = setInterval(this.onCheck, 100);\n }\n this.fragCurrent = data.frag;\n }\n\n onFragLoadProgress(data) {\n var stats = data.stats;\n // only update stats if first frag loading\n // if same frag is loaded multiple times, it might be in browser cache, and loaded quickly\n // and leading to wrong bw estimation\n if (stats.aborted === undefined && data.frag.loadCounter === 1) {\n this.lastfetchduration = (performance.now() - stats.trequest) / 1000;\n this.lastbw = (stats.loaded * 8) / this.lastfetchduration;\n //console.log(`fetchDuration:${this.lastfetchduration},bw:${(this.lastbw/1000).toFixed(0)}/${stats.aborted}`);\n }\n }\n\n abandonRulesCheck() {\n /*\n monitor fragment retrieval time...\n we compute expected time of arrival of the complete fragment.\n we compare it to expected time of buffer starvation\n */\n let hls = this.hls, v = hls.media,frag = this.fragCurrent;\n\n // if loader has been destroyed or loading has been aborted, stop timer and return\n if(!frag.loader || ( frag.loader.stats && frag.loader.stats.aborted)) {\n logger.warn(`frag loader destroy or aborted, disarm abandonRulesCheck`);\n this.clearTimer();\n return;\n }\n /* only monitor frag retrieval time if\n (video not paused OR first fragment being loaded(ready state === HAVE_NOTHING = 0)) AND autoswitching enabled AND not lowest level (=> means that we have several levels) */\n if (v && (!v.paused || !v.readyState) && frag.autoLevel && frag.level) {\n let requestDelay = performance.now() - frag.trequest;\n // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate\n if (requestDelay > (500 * frag.duration)) {\n let loadRate = Math.max(1,frag.loaded * 1000 / requestDelay); // byte/s; at least 1 byte/s to avoid division by zero\n if (frag.expectedLen < frag.loaded) {\n frag.expectedLen = frag.loaded;\n }\n let pos = v.currentTime;\n let fragLoadedDelay = (frag.expectedLen - frag.loaded) / loadRate;\n let bufferStarvationDelay = BufferHelper.bufferInfo(v,pos,hls.config.maxBufferHole).end - pos;\n // consider emergency switch down only if we have less than 2 frag buffered AND\n // time to finish loading current fragment is bigger than buffer starvation delay\n // ie if we risk buffer starvation if bw does not increase quickly\n if (bufferStarvationDelay < 2*frag.duration && fragLoadedDelay > bufferStarvationDelay) {\n let fragLevelNextLoadedDelay, nextLoadLevel;\n // lets iterate through lower level and try to find the biggest one that could avoid rebuffering\n // we start from current level - 1 and we step down , until we find a matching level\n for (nextLoadLevel = frag.level - 1 ; nextLoadLevel >=0 ; nextLoadLevel--) {\n // compute time to load next fragment at lower level\n // 0.8 : consider only 80% of current bw to be conservative\n // 8 = bits per byte (bps/Bps)\n fragLevelNextLoadedDelay = frag.duration * hls.levels[nextLoadLevel].bitrate / (8 * 0.8 * loadRate);\n logger.log(`fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay[${nextLoadLevel}] :${fragLoadedDelay.toFixed(1)}/${bufferStarvationDelay.toFixed(1)}/${fragLevelNextLoadedDelay.toFixed(1)}`);\n if (fragLevelNextLoadedDelay < bufferStarvationDelay) {\n // we found a lower level that be rebuffering free with current estimated bw !\n break;\n }\n }\n // only emergency switch down if it takes less time to load new fragment at lowest level instead\n // of finishing loading current one ...\n if (fragLevelNextLoadedDelay < fragLoadedDelay) {\n // ensure nextLoadLevel is not negative\n nextLoadLevel = Math.max(0,nextLoadLevel);\n // force next load level in auto mode\n hls.nextLoadLevel = nextLoadLevel;\n // abort fragment loading ...\n logger.warn(`loading too slow, abort fragment loading and switch to level ${nextLoadLevel}`);\n //abort fragment loading\n frag.loader.abort();\n this.clearTimer();\n hls.trigger(Event.FRAG_LOAD_EMERGENCY_ABORTED, {frag: frag});\n }\n }\n }\n }\n }\n\n onFragLoaded(data) {\n // stop monitoring bw once frag loaded\n this.clearTimer();\n // store level id after successful fragment load\n this.lastLoadedFragLevel = data.frag.level;\n // reset forced auto level value so that next level will be selected\n this._nextAutoLevel = -1;\n }\n\n onError(data) {\n // stop timer in case of frag loading error\n switch(data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n this.clearTimer();\n break;\n default:\n break;\n }\n }\n\n clearTimer() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n\n /** Return the capping/max level value that could be used by automatic level selection algorithm **/\n get autoLevelCapping() {\n return this._autoLevelCapping;\n }\n\n /** set the capping/max level value that could be used by automatic level selection algorithm **/\n set autoLevelCapping(newLevel) {\n this._autoLevelCapping = newLevel;\n }\n\n get nextAutoLevel() {\n var lastbw = this.lastbw, hls = this.hls,adjustedbw, i, maxAutoLevel;\n if (this._autoLevelCapping === -1 && hls.levels && hls.levels.length) {\n maxAutoLevel = hls.levels.length - 1;\n } else {\n maxAutoLevel = this._autoLevelCapping;\n }\n\n // in case next auto level has been forced, return it straight-away (but capped)\n if (this._nextAutoLevel !== -1) {\n return Math.min(this._nextAutoLevel,maxAutoLevel);\n }\n\n // follow algorithm captured from stagefright :\n // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp\n // Pick the highest bandwidth stream below or equal to estimated bandwidth.\n for (i = 0; i <= maxAutoLevel; i++) {\n // consider only 80% of the available bandwidth, but if we are switching up,\n // be even more conservative (70%) to avoid overestimating and immediately\n // switching back.\n if (i <= this.lastLoadedFragLevel) {\n adjustedbw = 0.8 * lastbw;\n } else {\n adjustedbw = 0.7 * lastbw;\n }\n if (adjustedbw < hls.levels[i].bitrate) {\n return Math.max(0, i - 1);\n }\n }\n return i - 1;\n }\n\n set nextAutoLevel(nextLevel) {\n this._nextAutoLevel = nextLevel;\n }\n}\n\nexport default AbrController;\n\n", - "/*\n * Buffer Controller\n*/\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\n\nclass BufferController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MEDIA_ATTACHING,\n Event.MEDIA_DETACHING,\n Event.BUFFER_RESET,\n Event.BUFFER_APPENDING,\n Event.BUFFER_CODECS,\n Event.BUFFER_EOS,\n Event.BUFFER_FLUSHING);\n\n // Source Buffer listeners\n this.onsbue = this.onSBUpdateEnd.bind(this);\n this.onsbe = this.onSBUpdateError.bind(this);\n }\n\n destroy() {\n EventHandler.prototype.destroy.call(this);\n }\n\n onMediaAttaching(data) {\n let media = this.media = data.media;\n if (media) {\n // setup the media source\n var ms = this.mediaSource = new MediaSource();\n //Media Source listeners\n this.onmso = this.onMediaSourceOpen.bind(this);\n this.onmse = this.onMediaSourceEnded.bind(this);\n this.onmsc = this.onMediaSourceClose.bind(this);\n ms.addEventListener('sourceopen', this.onmso);\n ms.addEventListener('sourceended', this.onmse);\n ms.addEventListener('sourceclose', this.onmsc);\n // link video and media Source\n media.src = URL.createObjectURL(ms);\n }\n }\n\n onMediaDetaching() {\n var ms = this.mediaSource;\n if (ms) {\n if (ms.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n ms.endOfStream();\n } catch(err) {\n logger.warn(`onMediaDetaching:${err.message} while calling endOfStream`);\n }\n }\n ms.removeEventListener('sourceopen', this.onmso);\n ms.removeEventListener('sourceended', this.onmse);\n ms.removeEventListener('sourceclose', this.onmsc);\n // unlink MediaSource from video tag\n this.media.src = '';\n this.media.removeAttribute('src');\n this.mediaSource = null;\n this.media = null;\n this.pendingTracks = null;\n this.sourceBuffer = null;\n }\n this.onmso = this.onmse = this.onmsc = null;\n this.hls.trigger(Event.MEDIA_DETACHED);\n }\n\n onMediaSourceOpen() {\n logger.log('media source opened');\n this.hls.trigger(Event.MEDIA_ATTACHED, { media : this.media });\n // once received, don't listen anymore to sourceopen event\n this.mediaSource.removeEventListener('sourceopen', this.onmso);\n // if any buffer codecs pending, treat it here.\n var pendingTracks = this.pendingTracks;\n if (pendingTracks) {\n this.onBufferCodecs(pendingTracks);\n this.pendingTracks = null;\n this.doAppending();\n }\n }\n\n onMediaSourceClose() {\n logger.log('media source closed');\n }\n\n onMediaSourceEnded() {\n logger.log('media source ended');\n }\n\n\n onSBUpdateEnd() {\n\n if (this._needsFlush) {\n this.doFlush();\n }\n\n if (this._needsEos) {\n this.onBufferEos();\n }\n\n this.hls.trigger(Event.BUFFER_APPENDED);\n\n this.doAppending();\n }\n\n onSBUpdateError(event) {\n logger.error(`sourceBuffer error:${event}`);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false});\n // we don't need to do more than that, as accordin to the spec, updateend will be fired just after\n }\n\n onBufferReset() {\n var sourceBuffer = this.sourceBuffer;\n if (sourceBuffer) {\n for(var type in sourceBuffer) {\n var sb = sourceBuffer[type];\n try {\n this.mediaSource.removeSourceBuffer(sb);\n sb.removeEventListener('updateend', this.onsbue);\n sb.removeEventListener('error', this.onsbe);\n } catch(err) {\n }\n }\n this.sourceBuffer = null;\n }\n this.flushRange = [];\n this.appended = 0;\n }\n\n onBufferCodecs(tracks) {\n let mediaSource = this.mediaSource;\n\n // delay sourcebuffer creation if media source not opened yet\n if(!mediaSource || mediaSource.readyState !== 'open') {\n this.pendingTracks = tracks;\n return;\n }\n\n if (!this.sourceBuffer) {\n let sourceBuffer = {};\n for (let trackName in tracks) {\n let track = tracks[trackName];\n // use levelCodec as first priority\n let codec = track.levelCodec || track.codec;\n let mimeType = `${track.container};codecs=${codec}`;\n logger.log(`creating sourceBuffer with mimeType:${mimeType}`);\n let sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n this.sourceBuffer = sourceBuffer;\n }\n }\n\n onBufferAppending(data) {\n if (!this.segments) {\n this.segments = [ data ];\n } else {\n this.segments.push(data);\n }\n this.doAppending();\n }\n\n onBufferAppendFail(data) {\n logger.error(`sourceBuffer error:${data.event}`);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false, frag: this.fragCurrent});\n }\n\n onBufferEos() {\n var sb = this.sourceBuffer, mediaSource = this.mediaSource;\n if (!mediaSource || mediaSource.readyState !== 'open') {\n return;\n }\n if (!((sb.audio && sb.audio.updating) || (sb.video && sb.video.updating))) {\n logger.log('all media data available, signal endOfStream() to MediaSource and stop loading fragment');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n this._needsEos = false;\n } else {\n this._needsEos = true;\n }\n }\n\n onBufferFlushing(data) {\n this.flushRange.push({start: data.startOffset, end: data.endOffset});\n // attempt flush immediatly\n this.flushBufferCounter = 0;\n this.doFlush();\n }\n\n doFlush() {\n // loop through all buffer ranges to flush\n while(this.flushRange.length) {\n var range = this.flushRange[0];\n // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer\n if (this.flushBuffer(range.start, range.end)) {\n // range flushed, remove from flush array\n this.flushRange.shift();\n this.flushBufferCounter = 0;\n } else {\n this._needsFlush = true;\n // avoid looping, wait for SB update end to retrigger a flush\n return;\n }\n }\n if (this.flushRange.length === 0) {\n // everything flushed\n this._needsFlush = false;\n\n // let's recompute this.appended, which is used to avoid flush looping\n var appended = 0;\n var sourceBuffer = this.sourceBuffer;\n if (sourceBuffer) {\n for (var type in sourceBuffer) {\n appended += sourceBuffer[type].buffered.length;\n }\n }\n this.appended = appended;\n this.hls.trigger(Event.BUFFER_FLUSHED);\n }\n }\n\n doAppending() {\n var hls = this.hls, sourceBuffer = this.sourceBuffer, segments = this.segments;\n if (sourceBuffer) {\n if (this.media.error) {\n segments = [];\n logger.error('trying to append although a media error occured, flush segment and abort');\n return;\n }\n for (var type in sourceBuffer) {\n if (sourceBuffer[type].updating) {\n //logger.log('sb update in progress');\n return;\n }\n }\n if (segments.length) {\n var segment = segments.shift();\n try {\n //logger.log(`appending ${segment.type} SB, size:${segment.data.length});\n sourceBuffer[segment.type].appendBuffer(segment.data);\n this.appendError = 0;\n this.appended++;\n } catch(err) {\n // in case any error occured while appending, put back segment in segments table\n logger.error(`error while trying to append buffer:${err.message}`);\n segments.unshift(segment);\n var event = {type: ErrorTypes.MEDIA_ERROR};\n if(err.code !== 22) {\n if (this.appendError) {\n this.appendError++;\n } else {\n this.appendError = 1;\n }\n event.details = ErrorDetails.BUFFER_APPEND_ERROR;\n event.frag = this.fragCurrent;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. retrying help recovering this\n */\n if (this.appendError > hls.config.appendErrorMaxRetry) {\n logger.log(`fail ${hls.config.appendErrorMaxRetry} times to append segment in sourceBuffer`);\n segments = [];\n event.fatal = true;\n hls.trigger(Event.ERROR, event);\n return;\n } else {\n event.fatal = false;\n hls.trigger(Event.ERROR, event);\n }\n } else {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n segments = [];\n event.details = ErrorDetails.BUFFER_FULL_ERROR;\n hls.trigger(Event.ERROR,event);\n }\n }\n }\n }\n }\n\n /*\n flush specified buffered range,\n return true once range has been flushed.\n as sourceBuffer.remove() is asynchronous, flushBuffer will be retriggered on sourceBuffer update end\n */\n flushBuffer(startOffset, endOffset) {\n var sb, i, bufStart, bufEnd, flushStart, flushEnd;\n //logger.log('flushBuffer,pos/start/end: ' + this.media.currentTime + '/' + startOffset + '/' + endOffset);\n // safeguard to avoid infinite looping : don't try to flush more than the nb of appended segments\n if (this.flushBufferCounter < this.appended && this.sourceBuffer) {\n for (var type in this.sourceBuffer) {\n sb = this.sourceBuffer[type];\n if (!sb.updating) {\n for (i = 0; i < sb.buffered.length; i++) {\n bufStart = sb.buffered.start(i);\n bufEnd = sb.buffered.end(i);\n // workaround firefox not able to properly flush multiple buffered range.\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) {\n flushStart = startOffset;\n flushEnd = endOffset;\n } else {\n flushStart = Math.max(bufStart, startOffset);\n flushEnd = Math.min(bufEnd, endOffset);\n }\n /* sometimes sourcebuffer.remove() does not flush\n the exact expected time range.\n to avoid rounding issues/infinite loop,\n only flush buffer range of length greater than 500ms.\n */\n if (Math.min(flushEnd,bufEnd) - flushStart > 0.5 ) {\n this.flushBufferCounter++;\n logger.log(`flush ${type} [${flushStart},${flushEnd}], of [${bufStart},${bufEnd}], pos:${this.media.currentTime}`);\n sb.remove(flushStart, flushEnd);\n return false;\n }\n }\n } else {\n //logger.log('abort ' + type + ' append in progress');\n // this will abort any appending in progress\n //sb.abort();\n logger.warn('cannot flush, sb updating in progress');\n return false;\n }\n }\n } else {\n logger.warn('abort flushing too many retries');\n }\n logger.log('buffer flushed');\n // everything flushed !\n return true;\n }\n}\n\nexport default BufferController;\n", + "/*\n * Buffer Controller\n*/\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\n\nclass BufferController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MEDIA_ATTACHING,\n Event.MEDIA_DETACHING,\n Event.BUFFER_RESET,\n Event.BUFFER_APPENDING,\n Event.BUFFER_CODECS,\n Event.BUFFER_EOS,\n Event.BUFFER_FLUSHING);\n\n // Source Buffer listeners\n this.onsbue = this.onSBUpdateEnd.bind(this);\n this.onsbe = this.onSBUpdateError.bind(this);\n }\n\n destroy() {\n EventHandler.prototype.destroy.call(this);\n }\n\n onMediaAttaching(data) {\n let media = this.media = data.media;\n if (media) {\n // setup the media source\n var ms = this.mediaSource = new MediaSource();\n //Media Source listeners\n this.onmso = this.onMediaSourceOpen.bind(this);\n this.onmse = this.onMediaSourceEnded.bind(this);\n this.onmsc = this.onMediaSourceClose.bind(this);\n ms.addEventListener('sourceopen', this.onmso);\n ms.addEventListener('sourceended', this.onmse);\n ms.addEventListener('sourceclose', this.onmsc);\n // link video and media Source\n media.src = URL.createObjectURL(ms);\n }\n }\n\n onMediaDetaching() {\n var ms = this.mediaSource;\n if (ms) {\n if (ms.readyState === 'open') {\n try {\n // endOfStream could trigger exception if any sourcebuffer is in updating state\n // we don't really care about checking sourcebuffer state here,\n // as we are anyway detaching the MediaSource\n // let's just avoid this exception to propagate\n ms.endOfStream();\n } catch(err) {\n logger.warn(`onMediaDetaching:${err.message} while calling endOfStream`);\n }\n }\n ms.removeEventListener('sourceopen', this.onmso);\n ms.removeEventListener('sourceended', this.onmse);\n ms.removeEventListener('sourceclose', this.onmsc);\n\n try {\n // unlink MediaSource from video tag\n this.media.src = '';\n this.media.removeAttribute('src');\n } catch(err) {\n logger.warn(`onMediaDetaching:${err.message} while unlinking video.src`);\n }\n this.mediaSource = null;\n this.media = null;\n this.pendingTracks = null;\n this.sourceBuffer = null;\n }\n this.onmso = this.onmse = this.onmsc = null;\n this.hls.trigger(Event.MEDIA_DETACHED);\n }\n\n onMediaSourceOpen() {\n logger.log('media source opened');\n this.hls.trigger(Event.MEDIA_ATTACHED, { media : this.media });\n // once received, don't listen anymore to sourceopen event\n this.mediaSource.removeEventListener('sourceopen', this.onmso);\n // if any buffer codecs pending, treat it here.\n var pendingTracks = this.pendingTracks;\n if (pendingTracks) {\n this.onBufferCodecs(pendingTracks);\n this.pendingTracks = null;\n this.doAppending();\n }\n }\n\n onMediaSourceClose() {\n logger.log('media source closed');\n }\n\n onMediaSourceEnded() {\n logger.log('media source ended');\n }\n\n\n onSBUpdateEnd() {\n\n if (this._needsFlush) {\n this.doFlush();\n }\n\n if (this._needsEos) {\n this.onBufferEos();\n }\n\n this.hls.trigger(Event.BUFFER_APPENDED);\n\n this.doAppending();\n }\n\n onSBUpdateError(event) {\n logger.error(`sourceBuffer error:${event}`);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false});\n // we don't need to do more than that, as accordin to the spec, updateend will be fired just after\n }\n\n onBufferReset() {\n var sourceBuffer = this.sourceBuffer;\n if (sourceBuffer) {\n for(var type in sourceBuffer) {\n var sb = sourceBuffer[type];\n try {\n this.mediaSource.removeSourceBuffer(sb);\n sb.removeEventListener('updateend', this.onsbue);\n sb.removeEventListener('error', this.onsbe);\n } catch(err) {\n }\n }\n this.sourceBuffer = null;\n }\n this.flushRange = [];\n this.appended = 0;\n }\n\n onBufferCodecs(tracks) {\n let mediaSource = this.mediaSource;\n\n // delay sourcebuffer creation if media source not opened yet\n if(!mediaSource || mediaSource.readyState !== 'open') {\n this.pendingTracks = tracks;\n return;\n }\n\n if (!this.sourceBuffer) {\n let sourceBuffer = {};\n for (let trackName in tracks) {\n let track = tracks[trackName];\n // use levelCodec as first priority\n let codec = track.levelCodec || track.codec;\n let mimeType = `${track.container};codecs=${codec}`;\n logger.log(`creating sourceBuffer with mimeType:${mimeType}`);\n let sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType);\n sb.addEventListener('updateend', this.onsbue);\n sb.addEventListener('error', this.onsbe);\n }\n this.sourceBuffer = sourceBuffer;\n }\n }\n\n onBufferAppending(data) {\n if (!this.segments) {\n this.segments = [ data ];\n } else {\n this.segments.push(data);\n }\n this.doAppending();\n }\n\n onBufferAppendFail(data) {\n logger.error(`sourceBuffer error:${data.event}`);\n // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error\n // this error might not always be fatal (it is fatal if decode error is set, in that case\n // it will be followed by a mediaElement error ...)\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false, frag: this.fragCurrent});\n }\n\n onBufferEos() {\n var sb = this.sourceBuffer, mediaSource = this.mediaSource;\n if (!mediaSource || mediaSource.readyState !== 'open') {\n return;\n }\n if (!((sb.audio && sb.audio.updating) || (sb.video && sb.video.updating))) {\n logger.log('all media data available, signal endOfStream() to MediaSource and stop loading fragment');\n //Notify the media element that it now has all of the media data\n mediaSource.endOfStream();\n this._needsEos = false;\n } else {\n this._needsEos = true;\n }\n }\n\n onBufferFlushing(data) {\n this.flushRange.push({start: data.startOffset, end: data.endOffset});\n // attempt flush immediatly\n this.flushBufferCounter = 0;\n this.doFlush();\n }\n\n doFlush() {\n // loop through all buffer ranges to flush\n while(this.flushRange.length) {\n var range = this.flushRange[0];\n // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer\n if (this.flushBuffer(range.start, range.end)) {\n // range flushed, remove from flush array\n this.flushRange.shift();\n this.flushBufferCounter = 0;\n } else {\n this._needsFlush = true;\n // avoid looping, wait for SB update end to retrigger a flush\n return;\n }\n }\n if (this.flushRange.length === 0) {\n // everything flushed\n this._needsFlush = false;\n\n // let's recompute this.appended, which is used to avoid flush looping\n var appended = 0;\n var sourceBuffer = this.sourceBuffer;\n if (sourceBuffer) {\n for (var type in sourceBuffer) {\n appended += sourceBuffer[type].buffered.length;\n }\n }\n this.appended = appended;\n this.hls.trigger(Event.BUFFER_FLUSHED);\n }\n }\n\n doAppending() {\n var hls = this.hls, sourceBuffer = this.sourceBuffer, segments = this.segments;\n if (sourceBuffer) {\n if (this.media.error) {\n segments = [];\n logger.error('trying to append although a media error occured, flush segment and abort');\n return;\n }\n for (var type in sourceBuffer) {\n if (sourceBuffer[type].updating) {\n //logger.log('sb update in progress');\n return;\n }\n }\n if (segments.length) {\n var segment = segments.shift();\n try {\n //logger.log(`appending ${segment.type} SB, size:${segment.data.length});\n sourceBuffer[segment.type].appendBuffer(segment.data);\n this.appendError = 0;\n this.appended++;\n } catch(err) {\n // in case any error occured while appending, put back segment in segments table\n logger.error(`error while trying to append buffer:${err.message}`);\n segments.unshift(segment);\n var event = {type: ErrorTypes.MEDIA_ERROR};\n if(err.code !== 22) {\n if (this.appendError) {\n this.appendError++;\n } else {\n this.appendError = 1;\n }\n event.details = ErrorDetails.BUFFER_APPEND_ERROR;\n event.frag = this.fragCurrent;\n /* with UHD content, we could get loop of quota exceeded error until\n browser is able to evict some data from sourcebuffer. retrying help recovering this\n */\n if (this.appendError > hls.config.appendErrorMaxRetry) {\n logger.log(`fail ${hls.config.appendErrorMaxRetry} times to append segment in sourceBuffer`);\n segments = [];\n event.fatal = true;\n hls.trigger(Event.ERROR, event);\n return;\n } else {\n event.fatal = false;\n hls.trigger(Event.ERROR, event);\n }\n } else {\n // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror\n // let's stop appending any segments, and report BUFFER_FULL_ERROR error\n segments = [];\n event.details = ErrorDetails.BUFFER_FULL_ERROR;\n hls.trigger(Event.ERROR,event);\n }\n }\n }\n }\n }\n\n /*\n flush specified buffered range,\n return true once range has been flushed.\n as sourceBuffer.remove() is asynchronous, flushBuffer will be retriggered on sourceBuffer update end\n */\n flushBuffer(startOffset, endOffset) {\n var sb, i, bufStart, bufEnd, flushStart, flushEnd;\n //logger.log('flushBuffer,pos/start/end: ' + this.media.currentTime + '/' + startOffset + '/' + endOffset);\n // safeguard to avoid infinite looping : don't try to flush more than the nb of appended segments\n if (this.flushBufferCounter < this.appended && this.sourceBuffer) {\n for (var type in this.sourceBuffer) {\n sb = this.sourceBuffer[type];\n if (!sb.updating) {\n for (i = 0; i < sb.buffered.length; i++) {\n bufStart = sb.buffered.start(i);\n bufEnd = sb.buffered.end(i);\n // workaround firefox not able to properly flush multiple buffered range.\n if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) {\n flushStart = startOffset;\n flushEnd = endOffset;\n } else {\n flushStart = Math.max(bufStart, startOffset);\n flushEnd = Math.min(bufEnd, endOffset);\n }\n /* sometimes sourcebuffer.remove() does not flush\n the exact expected time range.\n to avoid rounding issues/infinite loop,\n only flush buffer range of length greater than 500ms.\n */\n if (Math.min(flushEnd,bufEnd) - flushStart > 0.5 ) {\n this.flushBufferCounter++;\n logger.log(`flush ${type} [${flushStart},${flushEnd}], of [${bufStart},${bufEnd}], pos:${this.media.currentTime}`);\n sb.remove(flushStart, flushEnd);\n return false;\n }\n }\n } else {\n //logger.log('abort ' + type + ' append in progress');\n // this will abort any appending in progress\n //sb.abort();\n logger.warn('cannot flush, sb updating in progress');\n return false;\n }\n }\n } else {\n logger.warn('abort flushing too many retries');\n }\n logger.log('buffer flushed');\n // everything flushed !\n return true;\n }\n}\n\nexport default BufferController;\n", "/*\n * cap stream level to media size dimension controller\n*/\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\n\nclass CapLevelController extends EventHandler {\n\tconstructor(hls) {\n super(hls,\n Event.MEDIA_ATTACHING,\n Event.MANIFEST_PARSED); \n\t}\n\t\n\tdestroy() {\n if (this.hls.config.capLevelToPlayerSize) {\n this.media = null;\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n if (this.timer) {\n this.timer = clearInterval(this.timer);\n }\n }\n }\n\t \n\tonMediaAttaching(data) {\n this.media = data.media instanceof HTMLVideoElement ? data.media : null; \n }\n\n onManifestParsed(data) {\n if (this.hls.config.capLevelToPlayerSize) {\n this.autoLevelCapping = Number.POSITIVE_INFINITY;\n this.levels = data.levels;\n this.hls.firstLevel = this.getMaxLevel(data.firstLevel);\n clearInterval(this.timer);\n this.timer = setInterval(this.detectPlayerSize.bind(this), 1000);\n this.detectPlayerSize();\n }\n }\n \n detectPlayerSize() {\n if (this.media) {\n let levelsLength = this.levels ? this.levels.length : 0;\n if (levelsLength) {\n this.hls.autoLevelCapping = this.getMaxLevel(levelsLength - 1);\n if (this.hls.autoLevelCapping > this.autoLevelCapping) {\n // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch\n // usually happen when the user go to the fullscreen mode.\n this.hls.streamController.nextLevelSwitch();\n }\n this.autoLevelCapping = this.hls.autoLevelCapping; \n } \n }\n }\n \n /*\n * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled)\n */\n getMaxLevel(capLevelIndex) {\n let result,\n i,\n level,\n mWidth = this.mediaWidth,\n mHeight = this.mediaHeight,\n lWidth = 0,\n lHeight = 0;\n \n for (i = 0; i <= capLevelIndex; i++) {\n level = this.levels[i];\n result = i;\n lWidth = level.width;\n lHeight = level.height;\n if (mWidth <= lWidth || mHeight <= lHeight) {\n break;\n }\n } \n return result;\n }\n \n get contentScaleFactor() {\n let pixelRatio = 1;\n try {\n pixelRatio = window.devicePixelRatio;\n } catch(e) {}\n return pixelRatio;\n }\n \n get mediaWidth() {\n let width;\n if (this.media) {\n width = this.media.width || this.media.clientWidth || this.media.offsetWidth;\n width *= this.contentScaleFactor;\n }\n return width;\n }\n \n get mediaHeight() {\n let height;\n if (this.media) {\n height = this.media.height || this.media.clientHeight || this.media.offsetHeight;\n height *= this.contentScaleFactor; \n }\n return height;\n }\n}\n\nexport default CapLevelController;", - "/*\n * Level Controller\n*/\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass LevelController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MANIFEST_LOADED,\n Event.LEVEL_LOADED,\n Event.ERROR);\n this.ontick = this.tick.bind(this);\n this._manualLevel = this._autoLevelCapping = -1;\n }\n\n destroy() {\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this._manualLevel = -1;\n }\n\n startLoad() {\n this.canload = true;\n // speed up live playlist refresh if timer exists\n if (this.timer) {\n this.tick();\n }\n }\n\n stopLoad() {\n this.canload = false;\n }\n\n onManifestLoaded(data) {\n var levels0 = [], levels = [], bitrateStart, i, bitrateSet = {}, videoCodecFound = false, audioCodecFound = false, hls = this.hls;\n\n // regroup redundant level together\n data.levels.forEach(level => {\n if(level.videoCodec) {\n videoCodecFound = true;\n }\n if(level.audioCodec) {\n audioCodecFound = true;\n }\n var redundantLevelId = bitrateSet[level.bitrate];\n if (redundantLevelId === undefined) {\n bitrateSet[level.bitrate] = levels0.length;\n level.url = [level.url];\n level.urlId = 0;\n levels0.push(level);\n } else {\n levels0[redundantLevelId].url.push(level.url);\n }\n });\n\n // remove audio-only level if we also have levels with audio+video codecs signalled\n if(videoCodecFound && audioCodecFound) {\n levels0.forEach(level => {\n if(level.videoCodec) {\n levels.push(level);\n }\n });\n } else {\n levels = levels0;\n }\n\n // only keep level with supported audio/video codecs\n levels = levels.filter(function(level) {\n var checkSupportedAudio = function(codec) { return MediaSource.isTypeSupported(`audio/mp4;codecs=${codec}`);};\n var checkSupportedVideo = function(codec) { return MediaSource.isTypeSupported(`video/mp4;codecs=${codec}`);};\n var audioCodec = level.audioCodec, videoCodec = level.videoCodec;\n\n return (!audioCodec || checkSupportedAudio(audioCodec)) &&\n (!videoCodec || checkSupportedVideo(videoCodec));\n });\n\n if(levels.length) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate;\n // sort level on bitrate\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels;\n // find index of first level in sorted levels\n for (i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n logger.log(`manifest loaded,${levels.length} level(s) found, first bitrate:${bitrateStart}`);\n break;\n }\n }\n hls.trigger(Event.MANIFEST_PARSED, {levels: this._levels, firstLevel: this._firstLevel, stats: data.stats});\n } else {\n hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, fatal: true, url: hls.url, reason: 'no level with compatible codecs found in manifest'});\n }\n return;\n }\n\n get levels() {\n return this._levels;\n }\n\n get level() {\n return this._level;\n }\n\n set level(newLevel) {\n if (this._levels && this._levels.length > newLevel &&\n (this._level !== newLevel || this._levels[newLevel].details === undefined)) {\n this.setLevelInternal(newLevel);\n }\n }\n\n setLevelInternal(newLevel) {\n // check if level idx is valid\n if (newLevel >= 0 && newLevel < this._levels.length) {\n // stopping live reloading timer if any\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n this._level = newLevel;\n logger.log(`switching to level ${newLevel}`);\n this.hls.trigger(Event.LEVEL_SWITCH, {level: newLevel});\n var level = this._levels[newLevel];\n // check if we need to load playlist for this level\n if (level.details === undefined || level.details.live === true) {\n // level not retrieved yet, or live playlist we need to (re)load it\n logger.log(`(re)loading playlist for level ${newLevel}`);\n var urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: newLevel, id: urlId});\n }\n } else {\n // invalid level id given, trigger error\n this.hls.trigger(Event.ERROR, {type : ErrorTypes.OTHER_ERROR, details: ErrorDetails.LEVEL_SWITCH_ERROR, level: newLevel, fatal: false, reason: 'invalid level idx'});\n }\n }\n\n get manualLevel() {\n return this._manualLevel;\n }\n\n set manualLevel(newLevel) {\n this._manualLevel = newLevel;\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n\n get firstLevel() {\n return this._firstLevel;\n }\n\n set firstLevel(newLevel) {\n this._firstLevel = newLevel;\n }\n\n get startLevel() {\n if (this._startLevel === undefined) {\n return this._firstLevel;\n } else {\n return this._startLevel;\n }\n }\n\n set startLevel(newLevel) {\n this._startLevel = newLevel;\n }\n\n onError(data) {\n if(data.fatal) {\n return;\n }\n\n var details = data.details, hls = this.hls, levelId, level;\n // try to recover not fatal errors\n switch(details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n levelId = data.frag.level;\n break;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n levelId = data.level;\n break;\n default:\n break;\n }\n /* try to switch to a redundant stream if any available.\n * if no redundant stream available, emergency switch down (if in auto mode and current level not 0)\n * otherwise, we cannot recover this network error ...\n * don't raise FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT as fatal, as it is handled by mediaController\n */\n if (levelId !== undefined) {\n level = this._levels[levelId];\n if (level.urlId < (level.url.length - 1)) {\n level.urlId++;\n level.details = undefined;\n logger.warn(`level controller,${details} for level ${levelId}: switching to redundant stream id ${level.urlId}`);\n } else {\n // we could try to recover if in auto mode and current level not lowest level (0)\n let recoverable = ((this._manualLevel === -1) && levelId);\n if (recoverable) {\n logger.warn(`level controller,${details}: emergency switch-down for next fragment`);\n hls.abrController.nextAutoLevel = 0;\n } else if(level && level.details && level.details.live) {\n logger.warn(`level controller,${details} on live stream, discard`);\n // FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT are handled by mediaController\n } else if (details !== ErrorDetails.FRAG_LOAD_ERROR && details !== ErrorDetails.FRAG_LOAD_TIMEOUT) {\n logger.error(`cannot recover ${details} error`);\n this._level = undefined;\n // stopping live reloading timer if any\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n // redispatch same error but with fatal set to true\n data.fatal = true;\n hls.trigger(Event.ERROR, data);\n }\n }\n }\n }\n\n onLevelLoaded(data) {\n // check if current playlist is a live playlist\n if (data.details.live && !this.timer) {\n // if live playlist we will have to reload it periodically\n // set reload period to playlist target duration\n this.timer = setInterval(this.ontick, 1000 * data.details.targetduration);\n }\n if (!data.details.live && this.timer) {\n // playlist is not live and timer is armed : stopping it\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n\n tick() {\n var levelId = this._level;\n if (levelId !== undefined && this.canload) {\n var level = this._levels[levelId], urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: levelId, id: urlId});\n }\n }\n\n get nextLoadLevel() {\n if (this._manualLevel !== -1) {\n return this._manualLevel;\n } else {\n return this.hls.abrController.nextAutoLevel;\n }\n }\n\n set nextLoadLevel(nextLevel) {\n this.level = nextLevel;\n if (this._manualLevel === -1) {\n this.hls.abrController.nextAutoLevel = nextLevel;\n }\n }\n}\n\nexport default LevelController;\n\n", + "/*\n * Level Controller\n*/\n\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nclass LevelController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MANIFEST_LOADED,\n Event.LEVEL_LOADED,\n Event.ERROR);\n this.ontick = this.tick.bind(this);\n this._manualLevel = this._autoLevelCapping = -1;\n }\n\n destroy() {\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this._manualLevel = -1;\n }\n\n startLoad() {\n this.canload = true;\n // speed up live playlist refresh if timer exists\n if (this.timer) {\n this.tick();\n }\n }\n\n stopLoad() {\n this.canload = false;\n }\n\n onManifestLoaded(data) {\n var levels0 = [], levels = [], bitrateStart, i, bitrateSet = {}, videoCodecFound = false, audioCodecFound = false, hls = this.hls;\n\n // regroup redundant level together\n data.levels.forEach(level => {\n if(level.videoCodec) {\n videoCodecFound = true;\n }\n if(level.audioCodec) {\n audioCodecFound = true;\n }\n var redundantLevelId = bitrateSet[level.bitrate];\n if (redundantLevelId === undefined) {\n bitrateSet[level.bitrate] = levels0.length;\n level.url = [level.url];\n level.urlId = 0;\n levels0.push(level);\n } else {\n levels0[redundantLevelId].url.push(level.url);\n }\n });\n\n // remove audio-only level if we also have levels with audio+video codecs signalled\n if(videoCodecFound && audioCodecFound) {\n levels0.forEach(level => {\n if(level.videoCodec) {\n levels.push(level);\n }\n });\n } else {\n levels = levels0;\n }\n\n // only keep level with supported audio/video codecs\n levels = levels.filter(function(level) {\n var checkSupportedAudio = function(codec) { return MediaSource.isTypeSupported(`audio/mp4;codecs=${codec}`);};\n var checkSupportedVideo = function(codec) { return MediaSource.isTypeSupported(`video/mp4;codecs=${codec}`);};\n var audioCodec = level.audioCodec, videoCodec = level.videoCodec;\n\n return (!audioCodec || checkSupportedAudio(audioCodec)) &&\n (!videoCodec || checkSupportedVideo(videoCodec));\n });\n\n if(levels.length) {\n // start bitrate is the first bitrate of the manifest\n bitrateStart = levels[0].bitrate;\n // sort level on bitrate\n levels.sort(function (a, b) {\n return a.bitrate - b.bitrate;\n });\n this._levels = levels;\n // find index of first level in sorted levels\n for (i = 0; i < levels.length; i++) {\n if (levels[i].bitrate === bitrateStart) {\n this._firstLevel = i;\n logger.log(`manifest loaded,${levels.length} level(s) found, first bitrate:${bitrateStart}`);\n break;\n }\n }\n hls.trigger(Event.MANIFEST_PARSED, {levels: this._levels, firstLevel: this._firstLevel, stats: data.stats});\n } else {\n hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, fatal: true, url: hls.url, reason: 'no level with compatible codecs found in manifest'});\n }\n return;\n }\n\n get levels() {\n return this._levels;\n }\n\n get level() {\n return this._level;\n }\n\n set level(newLevel) {\n let levels = this._levels;\n if (levels && levels.length > newLevel) {\n if (this._level !== newLevel || levels[newLevel].details === undefined) {\n this.setLevelInternal(newLevel);\n }\n }\n }\n\n setLevelInternal(newLevel) {\n let levels = this._levels;\n // check if level idx is valid\n if (newLevel >= 0 && newLevel < levels.length) {\n // stopping live reloading timer if any\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n this._level = newLevel;\n logger.log(`switching to level ${newLevel}`);\n this.hls.trigger(Event.LEVEL_SWITCH, {level: newLevel});\n var level = levels[newLevel];\n // check if we need to load playlist for this level\n if (level.details === undefined || level.details.live === true) {\n // level not retrieved yet, or live playlist we need to (re)load it\n logger.log(`(re)loading playlist for level ${newLevel}`);\n var urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: newLevel, id: urlId});\n }\n } else {\n // invalid level id given, trigger error\n this.hls.trigger(Event.ERROR, {type : ErrorTypes.OTHER_ERROR, details: ErrorDetails.LEVEL_SWITCH_ERROR, level: newLevel, fatal: false, reason: 'invalid level idx'});\n }\n }\n\n get manualLevel() {\n return this._manualLevel;\n }\n\n set manualLevel(newLevel) {\n this._manualLevel = newLevel;\n if (this._startLevel === undefined) {\n this._startLevel = newLevel;\n }\n if (newLevel !== -1) {\n this.level = newLevel;\n }\n }\n\n get firstLevel() {\n return this._firstLevel;\n }\n\n set firstLevel(newLevel) {\n this._firstLevel = newLevel;\n }\n\n get startLevel() {\n if (this._startLevel === undefined) {\n return this._firstLevel;\n } else {\n return this._startLevel;\n }\n }\n\n set startLevel(newLevel) {\n this._startLevel = newLevel;\n }\n\n onError(data) {\n if(data.fatal) {\n return;\n }\n\n var details = data.details, hls = this.hls, levelId, level;\n // try to recover not fatal errors\n switch(details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n levelId = data.frag.level;\n break;\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n levelId = data.level;\n break;\n default:\n break;\n }\n /* try to switch to a redundant stream if any available.\n * if no redundant stream available, emergency switch down (if in auto mode and current level not 0)\n * otherwise, we cannot recover this network error ...\n * don't raise FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT as fatal, as it is handled by mediaController\n */\n if (levelId !== undefined) {\n level = this._levels[levelId];\n if (level.urlId < (level.url.length - 1)) {\n level.urlId++;\n level.details = undefined;\n logger.warn(`level controller,${details} for level ${levelId}: switching to redundant stream id ${level.urlId}`);\n } else {\n // we could try to recover if in auto mode and current level not lowest level (0)\n let recoverable = ((this._manualLevel === -1) && levelId);\n if (recoverable) {\n logger.warn(`level controller,${details}: emergency switch-down for next fragment`);\n hls.abrController.nextAutoLevel = 0;\n } else if(level && level.details && level.details.live) {\n logger.warn(`level controller,${details} on live stream, discard`);\n // FRAG_LOAD_ERROR and FRAG_LOAD_TIMEOUT are handled by mediaController\n } else if (details !== ErrorDetails.FRAG_LOAD_ERROR && details !== ErrorDetails.FRAG_LOAD_TIMEOUT) {\n logger.error(`cannot recover ${details} error`);\n this._level = undefined;\n // stopping live reloading timer if any\n if (this.timer) {\n clearTimeout(this.timer);\n this.timer = null;\n }\n // redispatch same error but with fatal set to true\n data.fatal = true;\n hls.trigger(Event.ERROR, data);\n }\n }\n }\n }\n\n onLevelLoaded(data) {\n // only process level loaded events matching with expected level\n if (data.level === this._level) {\n let newDetails = data.details;\n // if current playlist is a live playlist, arm a timer to reload it\n if (newDetails.live) {\n let reloadInterval = 1000*newDetails.targetduration,\n curLevel = this._levels[data.level],\n curDetails = curLevel.details;\n if (curDetails && newDetails.endSN === curDetails.endSN) {\n // follow HLS Spec, If the client reloads a Playlist file and finds that it has not\n // changed then it MUST wait for a period of one-half the target\n // duration before retrying.\n reloadInterval /=2;\n logger.log(`same live playlist, reload twice faster`);\n }\n // decrement reloadInterval with level loading delay\n reloadInterval -= performance.now() - data.stats.trequest;\n // in any case, don't reload more than every second\n reloadInterval = Math.max(1000,Math.round(reloadInterval));\n logger.log(`live playlist, reload in ${reloadInterval} ms`);\n this.timer = setTimeout(this.ontick,reloadInterval);\n } else {\n this.timer = null;\n }\n }\n }\n\n tick() {\n var levelId = this._level;\n if (levelId !== undefined && this.canload) {\n var level = this._levels[levelId], urlId = level.urlId;\n this.hls.trigger(Event.LEVEL_LOADING, {url: level.url[urlId], level: levelId, id: urlId});\n }\n }\n\n get nextLoadLevel() {\n if (this._manualLevel !== -1) {\n return this._manualLevel;\n } else {\n return this.hls.abrController.nextAutoLevel;\n }\n }\n\n set nextLoadLevel(nextLevel) {\n this.level = nextLevel;\n if (this._manualLevel === -1) {\n this.hls.abrController.nextAutoLevel = nextLevel;\n }\n }\n}\n\nexport default LevelController;\n\n", "/*\n * Stream Controller\n*/\n\nimport Demuxer from '../demux/demuxer';\nimport Event from '../events';\nimport EventHandler from '../event-handler';\nimport {logger} from '../utils/logger';\nimport BinarySearch from '../utils/binary-search';\nimport BufferHelper from '../helper/buffer-helper';\nimport LevelHelper from '../helper/level-helper';\nimport {ErrorTypes, ErrorDetails} from '../errors';\n\nconst State = {\n STOPPED : 'STOPPED',\n STARTING : 'STARTING',\n IDLE : 'IDLE',\n PAUSED : 'PAUSED',\n KEY_LOADING : 'KEY_LOADING',\n FRAG_LOADING : 'FRAG_LOADING',\n FRAG_LOADING_WAITING_RETRY : 'FRAG_LOADING_WAITING_RETRY',\n WAITING_LEVEL : 'WAITING_LEVEL',\n PARSING : 'PARSING',\n PARSED : 'PARSED',\n ENDED : 'ENDED',\n ERROR : 'ERROR'\n};\n\nclass StreamController extends EventHandler {\n\n constructor(hls) {\n super(hls,\n Event.MEDIA_ATTACHED,\n Event.MEDIA_DETACHING,\n Event.MANIFEST_LOADING,\n Event.MANIFEST_PARSED,\n Event.LEVEL_LOADED,\n Event.KEY_LOADED,\n Event.FRAG_LOADED,\n Event.FRAG_LOAD_EMERGENCY_ABORTED,\n Event.FRAG_PARSING_INIT_SEGMENT,\n Event.FRAG_PARSING_DATA,\n Event.FRAG_PARSED,\n Event.ERROR,\n Event.BUFFER_APPENDED,\n Event.BUFFER_FLUSHED);\n\n this.config = hls.config;\n this.audioCodecSwap = false;\n this.ticks = 0;\n this.ontick = this.tick.bind(this);\n }\n\n destroy() {\n this.stopLoad();\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n EventHandler.prototype.destroy.call(this);\n this.state = State.STOPPED;\n }\n\n startLoad(startPosition=0) {\n if (this.levels) {\n var media = this.media, lastCurrentTime = this.lastCurrentTime;\n this.stopLoad();\n this.demuxer = new Demuxer(this.hls);\n if (!this.timer) {\n this.timer = setInterval(this.ontick, 100);\n }\n this.level = -1;\n this.fragLoadError = 0;\n if (media && lastCurrentTime) {\n logger.log(`configure startPosition @${lastCurrentTime}`);\n if (!this.lastPaused) {\n logger.log('resuming video');\n media.play();\n }\n this.state = State.IDLE;\n } else {\n this.lastCurrentTime = this.startPosition ? this.startPosition : startPosition;\n this.state = State.STARTING;\n }\n this.nextLoadPosition = this.startPosition = this.lastCurrentTime;\n this.tick();\n } else {\n logger.warn('cannot start loading as manifest not parsed yet');\n this.state = State.STOPPED;\n }\n }\n\n stopLoad() {\n var frag = this.fragCurrent;\n if (frag) {\n if (frag.loader) {\n frag.loader.abort();\n }\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n if (this.demuxer) {\n this.demuxer.destroy();\n this.demuxer = null;\n }\n this.state = State.STOPPED;\n }\n\n tick() {\n this.ticks++;\n if (this.ticks === 1) {\n this.doTick();\n if (this.ticks > 1) {\n setTimeout(this.tick, 1);\n }\n this.ticks = 0;\n }\n }\n\n doTick() {\n var pos, level, levelDetails, hls = this.hls, config = hls.config;\n //logger.log(this.state);\n switch(this.state) {\n case State.ERROR:\n //don't do anything in error state to avoid breaking further ...\n case State.PAUSED:\n //don't do anything in paused state either ...\n break;\n case State.STARTING:\n // determine load level\n this.startLevel = hls.startLevel;\n if (this.startLevel === -1) {\n // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level\n this.startLevel = 0;\n this.fragBitrateTest = true;\n }\n // set new level to playlist loader : this will trigger start level load\n this.level = hls.nextLoadLevel = this.startLevel;\n this.state = State.WAITING_LEVEL;\n this.loadedmetadata = false;\n break;\n case State.IDLE:\n // if video not attached AND\n // start fragment already requested OR start frag prefetch disable\n // exit loop\n // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop\n if (!this.media &&\n (this.startFragRequested || !config.startFragPrefetch)) {\n break;\n }\n // determine next candidate fragment to be loaded, based on current position and\n // end of buffer position\n // ensure 60s of buffer upfront\n // if we have not yet loaded any fragment, start loading from start position\n if (this.loadedmetadata) {\n pos = this.media.currentTime;\n } else {\n pos = this.nextLoadPosition;\n }\n // determine next load level\n if (this.startFragRequested === false) {\n level = this.startLevel;\n } else {\n // we are not at playback start, get next load level from level Controller\n level = hls.nextLoadLevel;\n }\n var bufferInfo = BufferHelper.bufferInfo(this.media,pos,config.maxBufferHole),\n bufferLen = bufferInfo.len,\n bufferEnd = bufferInfo.end,\n fragPrevious = this.fragPrevious,\n maxBufLen;\n // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s\n if ((this.levels[level]).hasOwnProperty('bitrate')) {\n maxBufLen = Math.max(8 * config.maxBufferSize / this.levels[level].bitrate, config.maxBufferLength);\n maxBufLen = Math.min(maxBufLen, config.maxMaxBufferLength);\n } else {\n maxBufLen = config.maxBufferLength;\n }\n // if buffer length is less than maxBufLen try to load a new fragment\n if (bufferLen < maxBufLen) {\n // set next load level : this will trigger a playlist load if needed\n hls.nextLoadLevel = level;\n this.level = level;\n levelDetails = this.levels[level].details;\n // if level info not retrieved yet, switch state and wait for level retrieval\n // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load\n // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist)\n if (typeof levelDetails === 'undefined' || levelDetails.live && this.levelLastLoaded !== level) {\n this.state = State.WAITING_LEVEL;\n break;\n }\n // find fragment index, contiguous with end of buffer position\n let fragments = levelDetails.fragments,\n fragLen = fragments.length,\n start = fragments[0].start,\n end = fragments[fragLen-1].start + fragments[fragLen-1].duration,\n frag;\n\n // in case of live playlist we need to ensure that requested position is not located before playlist start\n if (levelDetails.live) {\n // check if requested position is within seekable boundaries :\n //logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`);\n let maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount*levelDetails.targetduration;\n\n if (bufferEnd < Math.max(start, end - maxLatency)) {\n let targetLatency = config.liveSyncDuration !== undefined ? config.liveSyncDuration : config.liveSyncDurationCount * levelDetails.targetduration;\n this.seekAfterBuffered = start + Math.max(0, levelDetails.totalduration - targetLatency);\n logger.log(`buffer end: ${bufferEnd} is located too far from the end of live sliding playlist, media position will be reseted to: ${this.seekAfterBuffered.toFixed(3)}`);\n bufferEnd = this.seekAfterBuffered;\n }\n\n // if end of buffer greater than live edge, don't load any fragment\n // this could happen if live playlist intermittently slides in the past.\n // level 1 loaded [182580161,182580167]\n // level 1 loaded [182580162,182580169]\n // Loading 182580168 of [182580162 ,182580169],level 1 ..\n // Loading 182580169 of [182580162 ,182580169],level 1 ..\n // level 1 loaded [182580162,182580168] <============= here we should have bufferEnd > end. in that case break to avoid reloading 182580168\n // level 1 loaded [182580164,182580171]\n //\n if (levelDetails.PTSKnown && bufferEnd > end) {\n break;\n }\n\n if (this.startFragRequested && !levelDetails.PTSKnown) {\n /* we are switching level on live playlist, but we don't have any PTS info for that quality level ...\n try to load frag matching with next SN.\n even if SN are not synchronized between playlists, loading this frag will help us\n compute playlist sliding and find the right one after in case it was not the right consecutive one */\n if (fragPrevious) {\n var targetSN = fragPrevious.sn + 1;\n if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) {\n frag = fragments[targetSN - levelDetails.startSN];\n logger.log(`live playlist, switching playlist, load frag with next SN: ${frag.sn}`);\n }\n }\n if (!frag) {\n /* we have no idea about which fragment should be loaded.\n so let's load mid fragment. it will help computing playlist sliding and find the right one\n */\n frag = fragments[Math.min(fragLen - 1, Math.round(fragLen / 2))];\n logger.log(`live playlist, switching playlist, unknown, load middle frag : ${frag.sn}`);\n }\n }\n } else {\n // VoD playlist: if bufferEnd before start of playlist, load first fragment\n if (bufferEnd < start) {\n frag = fragments[0];\n }\n }\n if (!frag) {\n let foundFrag;\n let maxFragLookUpTolerance = config.maxFragLookUpTolerance;\n if (bufferEnd < end) {\n if (bufferEnd > end - maxFragLookUpTolerance) {\n maxFragLookUpTolerance = 0;\n }\n foundFrag = BinarySearch.search(fragments, (candidate) => {\n // offset should be within fragment boundary - config.maxFragLookUpTolerance\n // this is to cope with situations like\n // bufferEnd = 9.991\n // frag[Ø] : [0,10]\n // frag[1] : [10,20]\n // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here\n // frag start frag start+duration\n // |-----------------------------|\n // <---> <--->\n // ...--------><-----------------------------><---------....\n // previous frag matching fragment next frag\n // return -1 return 0 return 1\n //logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`);\n if ((candidate.start + candidate.duration - maxFragLookUpTolerance) <= bufferEnd) {\n return 1;\n }\n else if (candidate.start - maxFragLookUpTolerance > bufferEnd) {\n return -1;\n }\n return 0;\n });\n } else {\n // reach end of playlist\n foundFrag = fragments[fragLen-1];\n }\n if (foundFrag) {\n frag = foundFrag;\n start = foundFrag.start;\n //logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn);\n if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) {\n if (frag.sn < levelDetails.endSN) {\n frag = fragments[frag.sn + 1 - levelDetails.startSN];\n logger.log(`SN just loaded, load next one: ${frag.sn}`);\n } else {\n // have we reached end of VOD playlist ?\n if (!levelDetails.live) {\n this.hls.trigger(Event.BUFFER_EOS);\n this.state = State.ENDED;\n }\n frag = null;\n }\n }\n }\n }\n if(frag) {\n //logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3));\n if ((frag.decryptdata.uri != null) && (frag.decryptdata.key == null)) {\n logger.log(`Loading key for ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}`);\n this.state = State.KEY_LOADING;\n hls.trigger(Event.KEY_LOADING, {frag: frag});\n } else {\n logger.log(`Loading ${frag.sn} of [${levelDetails.startSN} ,${levelDetails.endSN}],level ${level}, currentTime:${pos},bufferEnd:${bufferEnd.toFixed(3)}`);\n frag.autoLevel = hls.autoLevelEnabled;\n if (this.levels.length > 1) {\n frag.expectedLen = Math.round(frag.duration * this.levels[level].bitrate / 8);\n frag.trequest = performance.now();\n }\n // ensure that we are not reloading the same fragments in loop ...\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx++;\n } else {\n this.fragLoadIdx = 0;\n }\n if (frag.loadCounter) {\n frag.loadCounter++;\n let maxThreshold = config.fragLoadingLoopThreshold;\n // if this frag has already been loaded 3 times, and if it has been reloaded recently\n if (frag.loadCounter > maxThreshold && (Math.abs(this.fragLoadIdx - frag.loadIdx) < maxThreshold)) {\n hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal: false, frag: frag});\n return;\n }\n } else {\n frag.loadCounter = 1;\n }\n frag.loadIdx = this.fragLoadIdx;\n this.fragCurrent = frag;\n this.startFragRequested = true;\n hls.trigger(Event.FRAG_LOADING, {frag: frag});\n this.state = State.FRAG_LOADING;\n }\n }\n }\n break;\n case State.WAITING_LEVEL:\n level = this.levels[this.level];\n // check if playlist is already loaded\n if (level && level.details) {\n this.state = State.IDLE;\n }\n break;\n case State.FRAG_LOADING_WAITING_RETRY:\n var now = performance.now();\n var retryDate = this.retryDate;\n var media = this.media;\n var isSeeking = media && media.seeking;\n // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading\n if(!retryDate || (now >= retryDate) || isSeeking) {\n logger.log(`mediaController: retryDate reached, switch back to IDLE state`);\n this.state = State.IDLE;\n }\n break;\n case State.STOPPED:\n case State.FRAG_LOADING:\n case State.PARSING:\n case State.PARSED:\n case State.ENDED:\n break;\n default:\n break;\n }\n // check buffer\n this._checkBuffer();\n // check/update current fragment\n this._checkFragmentChanged();\n }\n\n\n\n\n getBufferRange(position) {\n var i, range,\n bufferRange = this.bufferRange;\n if (bufferRange) {\n for (i = bufferRange.length - 1; i >=0; i--) {\n range = bufferRange[i];\n if (position >= range.start && position <= range.end) {\n return range;\n }\n }\n }\n return null;\n }\n\n get currentLevel() {\n if (this.media) {\n var range = this.getBufferRange(this.media.currentTime);\n if (range) {\n return range.frag.level;\n }\n }\n return -1;\n }\n\n get nextBufferRange() {\n if (this.media) {\n // first get end range of current fragment\n return this.followingBufferRange(this.getBufferRange(this.media.currentTime));\n } else {\n return null;\n }\n }\n\n followingBufferRange(range) {\n if (range) {\n // try to get range of next fragment (500ms after this range)\n return this.getBufferRange(range.end + 0.5);\n }\n return null;\n }\n\n get nextLevel() {\n var range = this.nextBufferRange;\n if (range) {\n return range.frag.level;\n } else {\n return -1;\n }\n }\n\n isBuffered(position) {\n let media = this.media;\n if (media) {\n let buffered = media.buffered;\n for (let i = 0; i < buffered.length; i++) {\n if (position >= buffered.start(i) && position <= buffered.end(i)) {\n return true;\n }\n }\n }\n return false;\n }\n\n _checkFragmentChanged() {\n var rangeCurrent, currentTime, video = this.media;\n if (video && video.seeking === false) {\n currentTime = video.currentTime;\n /* if video element is in seeked state, currentTime can only increase.\n (assuming that playback rate is positive ...)\n As sometimes currentTime jumps back to zero after a\n media decode error, check this, to avoid seeking back to\n wrong position after a media decode error\n */\n if(currentTime > video.playbackRate*this.lastCurrentTime) {\n this.lastCurrentTime = currentTime;\n }\n if (this.isBuffered(currentTime)) {\n rangeCurrent = this.getBufferRange(currentTime);\n } else if (this.isBuffered(currentTime + 0.1)) {\n /* ensure that FRAG_CHANGED event is triggered at startup,\n when first video frame is displayed and playback is paused.\n add a tolerance of 100ms, in case current position is not buffered,\n check if current pos+100ms is buffered and use that buffer range\n for FRAG_CHANGED event reporting */\n rangeCurrent = this.getBufferRange(currentTime + 0.1);\n }\n if (rangeCurrent) {\n var fragPlaying = rangeCurrent.frag;\n if (fragPlaying !== this.fragPlaying) {\n this.fragPlaying = fragPlaying;\n this.hls.trigger(Event.FRAG_CHANGED, {frag: fragPlaying});\n }\n }\n }\n }\n\n /*\n on immediate level switch :\n - pause playback if playing\n - cancel any pending load request\n - and trigger a buffer flush\n */\n immediateLevelSwitch() {\n logger.log('immediateLevelSwitch');\n if (!this.immediateSwitch) {\n this.immediateSwitch = true;\n this.previouslyPaused = this.media.paused;\n this.media.pause();\n }\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n this.state = State.PAUSED;\n // flush everything\n this.hls.trigger(Event.BUFFER_FLUSHING, {startOffset: 0, endOffset: Number.POSITIVE_INFINITY});\n }\n\n /*\n on immediate level switch end, after new fragment has been buffered :\n - nudge video decoder by slightly adjusting video currentTime\n - resume the playback if needed\n */\n immediateLevelSwitchEnd() {\n this.immediateSwitch = false;\n let media = this.media;\n if (media && media.readyState) {\n media.currentTime -= 0.0001;\n if (!this.previouslyPaused) {\n media.play();\n }\n }\n }\n\n nextLevelSwitch() {\n /* try to switch ASAP without breaking video playback :\n in order to ensure smooth but quick level switching,\n we need to find the next flushable buffer range\n we should take into account new segment fetch time\n */\n let media = this.media;\n // ensure that media is defined and that metadata are available (to retrieve currentTime)\n if (media && media.readyState) {\n let fetchdelay, currentRange, nextRange;\n // increase fragment load Index to avoid frag loop loading error after buffer flush\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n currentRange = this.getBufferRange(media.currentTime);\n if (currentRange && currentRange.start > 1) {\n // flush buffer preceding current fragment (flush until current fragment start offset)\n // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ...\n this.state = State.PAUSED;\n this.hls.trigger(Event.BUFFER_FLUSHING, {startOffset: 0, endOffset: currentRange.start - 1});\n }\n if (!media.paused) {\n // add a safety delay of 1s\n var nextLevelId = this.hls.nextLoadLevel,nextLevel = this.levels[nextLevelId], fragLastKbps = this.fragLastKbps;\n if (fragLastKbps && this.fragCurrent) {\n fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1;\n } else {\n fetchdelay = 0;\n }\n } else {\n fetchdelay = 0;\n }\n //logger.log('fetchdelay:'+fetchdelay);\n // find buffer range that will be reached once new fragment will be fetched\n nextRange = this.getBufferRange(media.currentTime + fetchdelay);\n if (nextRange) {\n // we can flush buffer range following this one without stalling playback\n nextRange = this.followingBufferRange(nextRange);\n if (nextRange) {\n // if we are here, we can also cancel any loading/demuxing in progress, as they are useless\n var fragCurrent = this.fragCurrent;\n if (fragCurrent && fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n // flush position is the start position of this new buffer\n this.state = State.PAUSED;\n this.hls.trigger(Event.BUFFER_FLUSHING, {startOffset: nextRange.start, endOffset: Number.POSITIVE_INFINITY});\n }\n }\n }\n }\n\n onMediaAttached(data) {\n var media = this.media = data.media;\n this.onvseeking = this.onMediaSeeking.bind(this);\n this.onvseeked = this.onMediaSeeked.bind(this);\n this.onvended = this.onMediaEnded.bind(this);\n media.addEventListener('seeking', this.onvseeking);\n media.addEventListener('seeked', this.onvseeked);\n media.addEventListener('ended', this.onvended);\n if(this.levels && this.config.autoStartLoad) {\n this.hls.startLoad();\n }\n }\n\n onMediaDetaching() {\n var media = this.media;\n if (media && media.ended) {\n logger.log('MSE detaching and video ended, reset startPosition');\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n // reset fragment loading counter on MSE detaching to avoid reporting FRAG_LOOP_LOADING_ERROR after error recovery\n var levels = this.levels;\n if (levels) {\n // reset fragment load counter\n levels.forEach(level => {\n if(level.details) {\n level.details.fragments.forEach(fragment => {\n fragment.loadCounter = undefined;\n });\n }\n });\n }\n // remove video listeners\n if (media) {\n media.removeEventListener('seeking', this.onvseeking);\n media.removeEventListener('seeked', this.onvseeked);\n media.removeEventListener('ended', this.onvended);\n this.onvseeking = this.onvseeked = this.onvended = null;\n }\n this.media = null;\n this.loadedmetadata = false;\n this.stopLoad();\n }\n\n onMediaSeeking() {\n if (this.state === State.FRAG_LOADING) {\n // check if currently loaded fragment is inside buffer.\n //if outside, cancel fragment loading, otherwise do nothing\n if (BufferHelper.bufferInfo(this.media,this.media.currentTime,this.config.maxBufferHole).len === 0) {\n logger.log('seeking outside of buffer while fragment load in progress, cancel fragment load');\n var fragCurrent = this.fragCurrent;\n if (fragCurrent) {\n if (fragCurrent.loader) {\n fragCurrent.loader.abort();\n }\n this.fragCurrent = null;\n }\n this.fragPrevious = null;\n // switch to IDLE state to load new fragment\n this.state = State.IDLE;\n }\n } else if (this.state === State.ENDED) {\n // switch to IDLE state to check for potential new fragment\n this.state = State.IDLE;\n }\n if (this.media) {\n this.lastCurrentTime = this.media.currentTime;\n }\n // avoid reporting fragment loop loading error in case user is seeking several times on same position\n if (this.fragLoadIdx !== undefined) {\n this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold;\n }\n // tick to speed up processing\n this.tick();\n }\n\n onMediaSeeked() {\n // tick to speed up FRAGMENT_PLAYING triggering\n this.tick();\n }\n\n onMediaEnded() {\n logger.log('media ended');\n // reset startPosition and lastCurrentTime to restart playback @ stream beginning\n this.startPosition = this.lastCurrentTime = 0;\n }\n\n\n onManifestLoading() {\n // reset buffer on manifest loading\n logger.log('trigger BUFFER_RESET');\n this.hls.trigger(Event.BUFFER_RESET);\n this.bufferRange = [];\n this.stalled = false;\n }\n\n onManifestParsed(data) {\n var aac = false, heaac = false, codec;\n data.levels.forEach(level => {\n // detect if we have different kind of audio codecs used amongst playlists\n codec = level.audioCodec;\n if (codec) {\n if (codec.indexOf('mp4a.40.2') !== -1) {\n aac = true;\n }\n if (codec.indexOf('mp4a.40.5') !== -1) {\n heaac = true;\n }\n }\n });\n this.audioCodecSwitch = (aac && heaac);\n if (this.audioCodecSwitch) {\n logger.log('both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC');\n }\n this.levels = data.levels;\n this.startLevelLoaded = false;\n this.startFragRequested = false;\n if (this.config.autoStartLoad) {\n this.hls.startLoad();\n }\n }\n\n onLevelLoaded(data) {\n var newDetails = data.details,\n newLevelId = data.level,\n curLevel = this.levels[newLevelId],\n duration = newDetails.totalduration,\n sliding = 0;\n\n logger.log(`level ${newLevelId} loaded [${newDetails.startSN},${newDetails.endSN}],duration:${duration}`);\n this.levelLastLoaded = newLevelId;\n\n if (newDetails.live) {\n var curDetails = curLevel.details;\n if (curDetails) {\n // we already have details for that level, merge them\n LevelHelper.mergeDetails(curDetails,newDetails);\n sliding = newDetails.fragments[0].start;\n if (newDetails.PTSKnown) {\n logger.log(`live playlist sliding:${sliding.toFixed(3)}`);\n } else {\n logger.log('live playlist - outdated PTS, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n logger.log('live playlist - first load, unknown sliding');\n }\n } else {\n newDetails.PTSKnown = false;\n }\n // override level info\n curLevel.details = newDetails;\n this.hls.trigger(Event.LEVEL_UPDATED, { details: newDetails, level: newLevelId });\n\n // compute start position\n if (this.startFragRequested === false) {\n // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3)\n if (newDetails.live) {\n let targetLatency = this.config.liveSyncDuration !== undefined ? this.config.liveSyncDuration : this.config.liveSyncDurationCount * newDetails.targetduration;\n this.startPosition = Math.max(0, sliding + duration - targetLatency);\n }\n this.nextLoadPosition = this.startPosition;\n }\n // only switch batck to IDLE state if we were waiting for level to start downloading a new fragment\n if (this.state === State.WAITING_LEVEL) {\n this.state = State.IDLE;\n }\n //trigger handler right now\n this.tick();\n }\n\n onKeyLoaded() {\n if (this.state === State.KEY_LOADING) {\n this.state = State.IDLE;\n this.tick();\n }\n }\n\n onFragLoaded(data) {\n var fragCurrent = this.fragCurrent;\n if (this.state === State.FRAG_LOADING &&\n fragCurrent &&\n data.frag.level === fragCurrent.level &&\n data.frag.sn === fragCurrent.sn) {\n if (this.fragBitrateTest === true) {\n // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo\n this.state = State.IDLE;\n this.fragBitrateTest = false;\n data.stats.tparsed = data.stats.tbuffered = performance.now();\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: data.stats, frag: fragCurrent});\n } else {\n this.state = State.PARSING;\n // transmux the MPEG-TS data to ISO-BMFF segments\n this.stats = data.stats;\n var currentLevel = this.levels[this.level],\n details = currentLevel.details,\n duration = details.totalduration,\n start = fragCurrent.start,\n level = fragCurrent.level,\n sn = fragCurrent.sn,\n audioCodec = currentLevel.audioCodec || this.config.defaultAudioCodec;\n if(this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec === undefined) {\n audioCodec = this.lastAudioCodec;\n }\n if(audioCodec) {\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n }\n this.pendingAppending = 0;\n logger.log(`Demuxing ${sn} of [${details.startSN} ,${details.endSN}],level ${level}`);\n let demuxer = this.demuxer;\n if (demuxer) {\n demuxer.push(data.payload, audioCodec, currentLevel.videoCodec, start, fragCurrent.cc, level, sn, duration, fragCurrent.decryptdata);\n }\n }\n }\n this.fragLoadError = 0;\n }\n\n onFragParsingInitSegment(data) {\n if (this.state === State.PARSING) {\n var tracks = data.tracks, trackName, track;\n\n // include levelCodec in audio and video tracks\n track = tracks.audio;\n if(track) {\n var audioCodec = this.levels[this.level].audioCodec,\n ua = navigator.userAgent.toLowerCase();\n if(audioCodec && this.audioCodecSwap) {\n logger.log('swapping playlist audio codec');\n if(audioCodec.indexOf('mp4a.40.5') !==-1) {\n audioCodec = 'mp4a.40.2';\n } else {\n audioCodec = 'mp4a.40.5';\n }\n }\n // in case AAC and HE-AAC audio codecs are signalled in manifest\n // force HE-AAC , as it seems that most browsers prefers that way,\n // except for mono streams OR on FF\n // these conditions might need to be reviewed ...\n if (this.audioCodecSwitch) {\n // don't force HE-AAC if mono stream\n if(track.metadata.channelCount !== 1 &&\n // don't force HE-AAC if firefox\n ua.indexOf('firefox') === -1) {\n audioCodec = 'mp4a.40.5';\n }\n }\n // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise\n if(ua.indexOf('android') !== -1) {\n audioCodec = 'mp4a.40.2';\n logger.log(`Android: force audio codec to` + audioCodec);\n }\n track.levelCodec = audioCodec;\n }\n track = tracks.video;\n if(track) {\n track.levelCodec = this.levels[this.level].videoCodec;\n }\n\n // if remuxer specify that a unique track needs to generated,\n // let's merge all tracks together\n if (data.unique) {\n var mergedTrack = {\n codec : '',\n levelCodec : ''\n };\n for (trackName in data.tracks) {\n track = tracks[trackName];\n mergedTrack.container = track.container;\n if (mergedTrack.codec) {\n mergedTrack.codec += ',';\n mergedTrack.levelCodec += ',';\n }\n if(track.codec) {\n mergedTrack.codec += track.codec;\n }\n if (track.levelCodec) {\n mergedTrack.levelCodec += track.levelCodec;\n }\n }\n tracks = { audiovideo : mergedTrack };\n }\n this.hls.trigger(Event.BUFFER_CODECS,tracks);\n // loop through tracks that are going to be provided to bufferController\n for (trackName in tracks) {\n track = tracks[trackName];\n logger.log(`track:${trackName},container:${track.container},codecs[level/parsed]=[${track.levelCodec}/${track.codec}]`);\n var initSegment = track.initSegment;\n if (initSegment) {\n this.pendingAppending++;\n this.hls.trigger(Event.BUFFER_APPENDING, {type: trackName, data: initSegment});\n }\n }\n //trigger handler right now\n this.tick();\n }\n }\n\n onFragParsingData(data) {\n if (this.state === State.PARSING) {\n this.tparse2 = Date.now();\n var level = this.levels[this.level],\n frag = this.fragCurrent;\n\n logger.log(`parsed ${data.type},PTS:[${data.startPTS.toFixed(3)},${data.endPTS.toFixed(3)}],DTS:[${data.startDTS.toFixed(3)}/${data.endDTS.toFixed(3)}],nb:${data.nb}`);\n\n var drift = LevelHelper.updateFragPTS(level.details,frag.sn,data.startPTS,data.endPTS),\n hls = this.hls;\n hls.trigger(Event.LEVEL_PTS_UPDATED, {details: level.details, level: this.level, drift: drift});\n\n [data.data1, data.data2].forEach(buffer => {\n if (buffer) {\n this.pendingAppending++;\n hls.trigger(Event.BUFFER_APPENDING, {type: data.type, data: buffer});\n }\n });\n\n this.nextLoadPosition = data.endPTS;\n this.bufferRange.push({type: data.type, start: data.startPTS, end: data.endPTS, frag: frag});\n\n //trigger handler right now\n this.tick();\n } else {\n logger.warn(`not in PARSING state but ${this.state}, ignoring FRAG_PARSING_DATA event`);\n }\n }\n\n onFragParsed() {\n if (this.state === State.PARSING) {\n this.stats.tparsed = performance.now();\n this.state = State.PARSED;\n this._checkAppendedParsed();\n }\n }\n\n onBufferAppended() {\n switch (this.state) {\n case State.PARSING:\n case State.PARSED:\n this.pendingAppending--;\n this._checkAppendedParsed();\n break;\n default:\n break;\n }\n }\n\n _checkAppendedParsed() {\n //trigger handler right now\n if (this.state === State.PARSED && this.pendingAppending === 0) {\n var frag = this.fragCurrent, stats = this.stats;\n if (frag) {\n this.fragPrevious = frag;\n stats.tbuffered = performance.now();\n this.fragLastKbps = Math.round(8 * stats.length / (stats.tbuffered - stats.tfirst));\n this.hls.trigger(Event.FRAG_BUFFERED, {stats: stats, frag: frag});\n logger.log(`media buffered : ${this.timeRangesToString(this.media.buffered)}`);\n this.state = State.IDLE;\n }\n this.tick();\n }\n }\n\n onError(data) {\n switch(data.details) {\n case ErrorDetails.FRAG_LOAD_ERROR:\n case ErrorDetails.FRAG_LOAD_TIMEOUT:\n if(!data.fatal) {\n var loadError = this.fragLoadError;\n if(loadError) {\n loadError++;\n } else {\n loadError=1;\n }\n if (loadError <= this.config.fragLoadingMaxRetry) {\n this.fragLoadError = loadError;\n // reset load counter to avoid frag loop loading error\n data.frag.loadCounter = 0;\n // exponential backoff capped to 64s\n var delay = Math.min(Math.pow(2,loadError-1)*this.config.fragLoadingRetryDelay,64000);\n logger.warn(`mediaController: frag loading failed, retry in ${delay} ms`);\n this.retryDate = performance.now() + delay;\n // retry loading state\n this.state = State.FRAG_LOADING_WAITING_RETRY;\n } else {\n logger.error(`mediaController: ${data.details} reaches max retry, redispatch as fatal ...`);\n // redispatch same error but with fatal set to true\n data.fatal = true;\n this.hls.trigger(Event.ERROR, data);\n this.state = State.ERROR;\n }\n }\n break;\n case ErrorDetails.FRAG_LOOP_LOADING_ERROR:\n case ErrorDetails.LEVEL_LOAD_ERROR:\n case ErrorDetails.LEVEL_LOAD_TIMEOUT:\n case ErrorDetails.KEY_LOAD_ERROR:\n case ErrorDetails.KEY_LOAD_TIMEOUT:\n // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received\n if(this.state !== State.ERROR) {\n // if fatal error, stop processing, otherwise move to IDLE to retry loading\n this.state = data.fatal ? State.ERROR : State.IDLE;\n logger.warn(`mediaController: ${data.details} while loading frag,switch to ${this.state} state ...`);\n }\n break;\n case ErrorDetails.BUFFER_FULL_ERROR:\n // trigger a smooth level switch to empty buffers\n // also reduce max buffer length as it might be too high. we do this to avoid loop flushing ...\n this.config.maxMaxBufferLength/=2;\n logger.warn(`reduce max buffer length to ${this.config.maxMaxBufferLength}s and trigger a nextLevelSwitch to flush old buffer and fix QuotaExceededError`);\n this.nextLevelSwitch();\n break;\n default:\n break;\n }\n }\n\n_checkBuffer() {\n var media = this.media;\n if(media) {\n // compare readyState\n var readyState = media.readyState;\n // if ready state different from HAVE_NOTHING (numeric value 0), we are allowed to seek\n if(readyState) {\n var targetSeekPosition, currentTime;\n // if seek after buffered defined, let's seek if within acceptable range\n var seekAfterBuffered = this.seekAfterBuffered;\n if(seekAfterBuffered) {\n if(media.duration >= seekAfterBuffered) {\n targetSeekPosition = seekAfterBuffered;\n this.seekAfterBuffered = undefined;\n }\n } else {\n currentTime = media.currentTime;\n var loadedmetadata = this.loadedmetadata;\n\n // adjust currentTime to start position on loaded metadata\n if(!loadedmetadata && media.buffered.length) {\n this.loadedmetadata = true;\n // only adjust currentTime if not equal to 0\n if (!currentTime && currentTime !== this.startPosition) {\n targetSeekPosition = this.startPosition;\n }\n }\n }\n if (targetSeekPosition) {\n currentTime = targetSeekPosition;\n logger.log(`target seek position:${targetSeekPosition}`);\n }\n var bufferInfo = BufferHelper.bufferInfo(media,currentTime,0),\n expectedPlaying = !(media.paused || media.ended || media.seeking || readyState < 2),\n jumpThreshold = 0.4, // tolerance needed as some browsers stalls playback before reaching buffered range end\n playheadMoving = currentTime > media.playbackRate*this.lastCurrentTime;\n\n if (this.stalled && playheadMoving) {\n this.stalled = false;\n logger.log(`playback not stuck anymore @${currentTime}`);\n }\n // check buffer upfront\n // if less than jumpThreshold second is buffered, and media is expected to play but playhead is not moving,\n // and we have a new buffer range available upfront, let's seek to that one\n if(expectedPlaying && bufferInfo.len <= jumpThreshold) {\n if(playheadMoving) {\n // playhead moving\n jumpThreshold = 0;\n this.seekHoleNudgeDuration = 0;\n } else {\n // playhead not moving AND media expected to play\n if(!this.stalled) {\n this.seekHoleNudgeDuration = 0;\n logger.log(`playback seems stuck @${currentTime}`);\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_STALLED_ERROR, fatal: false});\n this.stalled = true;\n } else {\n this.seekHoleNudgeDuration += this.config.seekHoleNudgeDuration;\n }\n }\n // if we are below threshold, try to jump if next buffer range is close\n if(bufferInfo.len <= jumpThreshold) {\n // no buffer available @ currentTime, check if next buffer is close (within a config.maxSeekHole second range)\n var nextBufferStart = bufferInfo.nextStart, delta = nextBufferStart-currentTime;\n if(nextBufferStart &&\n (delta < this.config.maxSeekHole) &&\n (delta > 0) &&\n !media.seeking) {\n // next buffer is close ! adjust currentTime to nextBufferStart\n // this will ensure effective video decoding\n logger.log(`adjust currentTime from ${media.currentTime} to next buffered @ ${nextBufferStart} + nudge ${this.seekHoleNudgeDuration}`);\n let hole = nextBufferStart + this.seekHoleNudgeDuration - media.currentTime;\n media.currentTime = nextBufferStart + this.seekHoleNudgeDuration;\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.MEDIA_ERROR, details: ErrorDetails.BUFFER_SEEK_OVER_HOLE, fatal: false, hole : hole});\n }\n }\n } else {\n if (targetSeekPosition && media.currentTime !== targetSeekPosition) {\n logger.log(`adjust currentTime from ${media.currentTime} to ${targetSeekPosition}`);\n media.currentTime = targetSeekPosition;\n }\n }\n }\n }\n }\n\n onFragLoadEmergencyAborted() {\n this.state = State.IDLE;\n this.tick();\n }\n\n onBufferFlushed() {\n /* after successful buffer flushing, rebuild buffer Range array\n loop through existing buffer range and check if\n corresponding range is still buffered. only push to new array already buffered range\n */\n var newRange = [],range,i;\n for (i = 0; i < this.bufferRange.length; i++) {\n range = this.bufferRange[i];\n if (this.isBuffered((range.start + range.end) / 2)) {\n newRange.push(range);\n }\n }\n this.bufferRange = newRange;\n\n // handle end of immediate switching if needed\n if (this.immediateSwitch) {\n this.immediateLevelSwitchEnd();\n }\n // move to IDLE once flush complete. this should trigger new fragment loading\n this.state = State.IDLE;\n // reset reference to frag\n this.fragPrevious = null;\n }\n\n swapAudioCodec() {\n this.audioCodecSwap = !this.audioCodecSwap;\n }\n\n timeRangesToString(r) {\n var log = '', len = r.length;\n for (var i=0; i OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\n * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,\n * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation\n * are those of the authors and should not be interpreted as representing\n * official policies, either expressed or implied, of the authors.\n */\nclass AES {\n\n /**\n * Schedule out an AES key for both encryption and decryption. This\n * is a low-level class. Use a cipher mode to do bulk encryption.\n *\n * @constructor\n * @param key {Array} The key as an array of 4, 6 or 8 words.\n */\n constructor(key) {\n /**\n * The expanded S-box and inverse S-box tables. These will be computed\n * on the client so that we don't have to send them down the wire.\n *\n * There are two tables, _tables[0] is for encryption and\n * _tables[1] is for decryption.\n *\n * The first 4 sub-tables are the expanded S-box with MixColumns. The\n * last (_tables[01][4]) is the S-box itself.\n *\n * @private\n */\n this._tables = [[[],[],[],[],[]],[[],[],[],[],[]]];\n\n this._precompute();\n\n var i, j, tmp,\n encKey, decKey,\n sbox = this._tables[0][4], decTable = this._tables[1],\n keyLen = key.length, rcon = 1;\n\n if (keyLen !== 4 && keyLen !== 6 && keyLen !== 8) {\n throw new Error('Invalid aes key size=' + keyLen);\n }\n\n encKey = key.slice(0);\n decKey = [];\n this._key = [encKey, decKey];\n\n // schedule encryption keys\n for (i = keyLen; i < 4 * keyLen + 28; i++) {\n tmp = encKey[i-1];\n\n // apply sbox\n if (i%keyLen === 0 || (keyLen === 8 && i%keyLen === 4)) {\n tmp = sbox[tmp>>>24]<<24 ^ sbox[tmp>>16&255]<<16 ^ sbox[tmp>>8&255]<<8 ^ sbox[tmp&255];\n\n // shift rows and add rcon\n if (i%keyLen === 0) {\n tmp = tmp<<8 ^ tmp>>>24 ^ rcon<<24;\n rcon = rcon<<1 ^ (rcon>>7)*283;\n }\n }\n\n encKey[i] = encKey[i-keyLen] ^ tmp;\n }\n\n // schedule decryption keys\n for (j = 0; i; j++, i--) {\n tmp = encKey[j&3 ? i : i - 4];\n if (i<=4 || j<4) {\n decKey[j] = tmp;\n } else {\n decKey[j] = decTable[0][sbox[tmp>>>24 ]] ^\n decTable[1][sbox[tmp>>16 & 255]] ^\n decTable[2][sbox[tmp>>8 & 255]] ^\n decTable[3][sbox[tmp & 255]];\n }\n }\n }\n\n /**\n * Expand the S-box tables.\n *\n * @private\n */\n _precompute() {\n var encTable = this._tables[0], decTable = this._tables[1],\n sbox = encTable[4], sboxInv = decTable[4],\n i, x, xInv, d=[], th=[], x2, x4, x8, s, tEnc, tDec;\n\n // Compute double and third tables\n for (i = 0; i < 256; i++) {\n th[( d[i] = i<<1 ^ (i>>7)*283 )^i]=i;\n }\n\n for (x = xInv = 0; !sbox[x]; x ^= x2 || 1, xInv = th[xInv] || 1) {\n // Compute sbox\n s = xInv ^ xInv<<1 ^ xInv<<2 ^ xInv<<3 ^ xInv<<4;\n s = s>>8 ^ s&255 ^ 99;\n sbox[x] = s;\n sboxInv[s] = x;\n\n // Compute MixColumns\n x8 = d[x4 = d[x2 = d[x]]];\n tDec = x8*0x1010101 ^ x4*0x10001 ^ x2*0x101 ^ x*0x1010100;\n tEnc = d[s]*0x101 ^ s*0x1010100;\n\n for (i = 0; i < 4; i++) {\n encTable[i][x] = tEnc = tEnc<<24 ^ tEnc>>>8;\n decTable[i][s] = tDec = tDec<<24 ^ tDec>>>8;\n }\n }\n\n // Compactify. Considerable speedup on Firefox.\n for (i = 0; i < 5; i++) {\n encTable[i] = encTable[i].slice(0);\n decTable[i] = decTable[i].slice(0);\n }\n }\n\n /**\n * Decrypt 16 bytes, specified as four 32-bit words.\n * @param encrypted0 {number} the first word to decrypt\n * @param encrypted1 {number} the second word to decrypt\n * @param encrypted2 {number} the third word to decrypt\n * @param encrypted3 {number} the fourth word to decrypt\n * @param out {Int32Array} the array to write the decrypted words\n * into\n * @param offset {number} the offset into the output array to start\n * writing results\n * @return {Array} The plaintext.\n */\n decrypt(encrypted0, encrypted1, encrypted2, encrypted3, out, offset) {\n var key = this._key[1],\n // state variables a,b,c,d are loaded with pre-whitened data\n a = encrypted0 ^ key[0],\n b = encrypted3 ^ key[1],\n c = encrypted2 ^ key[2],\n d = encrypted1 ^ key[3],\n a2, b2, c2,\n\n nInnerRounds = key.length / 4 - 2, // key.length === 2 ?\n i,\n kIndex = 4,\n table = this._tables[1],\n\n // load up the tables\n table0 = table[0],\n table1 = table[1],\n table2 = table[2],\n table3 = table[3],\n sbox = table[4];\n\n // Inner rounds. Cribbed from OpenSSL.\n for (i = 0; i < nInnerRounds; i++) {\n a2 = table0[a>>>24] ^ table1[b>>16 & 255] ^ table2[c>>8 & 255] ^ table3[d & 255] ^ key[kIndex];\n b2 = table0[b>>>24] ^ table1[c>>16 & 255] ^ table2[d>>8 & 255] ^ table3[a & 255] ^ key[kIndex + 1];\n c2 = table0[c>>>24] ^ table1[d>>16 & 255] ^ table2[a>>8 & 255] ^ table3[b & 255] ^ key[kIndex + 2];\n d = table0[d>>>24] ^ table1[a>>16 & 255] ^ table2[b>>8 & 255] ^ table3[c & 255] ^ key[kIndex + 3];\n kIndex += 4;\n a=a2; b=b2; c=c2;\n }\n\n // Last round.\n for (i = 0; i < 4; i++) {\n out[(3 & -i) + offset] =\n sbox[a>>>24 ]<<24 ^\n sbox[b>>16 & 255]<<16 ^\n sbox[c>>8 & 255]<<8 ^\n sbox[d & 255] ^\n key[kIndex++];\n a2=a; a=b; b=c; c=d; d=a2;\n }\n }\n}\n\nexport default AES;\n", @@ -69,7 +69,7 @@ "export const ErrorTypes = {\n // Identifier for a network error (loading error / timeout ...)\n NETWORK_ERROR: 'networkError',\n // Identifier for a media Error (video/parsing/mediasource error)\n MEDIA_ERROR: 'mediaError',\n // Identifier for all other errors\n OTHER_ERROR: 'otherError'\n};\n\nexport const ErrorDetails = {\n // Identifier for a manifest load error - data: { url : faulty URL, response : XHR response}\n MANIFEST_LOAD_ERROR: 'manifestLoadError',\n // Identifier for a manifest load timeout - data: { url : faulty URL, response : XHR response}\n MANIFEST_LOAD_TIMEOUT: 'manifestLoadTimeOut',\n // Identifier for a manifest parsing error - data: { url : faulty URL, reason : error reason}\n MANIFEST_PARSING_ERROR: 'manifestParsingError',\n // Identifier for a manifest with only incompatible codecs error - data: { url : faulty URL, reason : error reason}\n MANIFEST_INCOMPATIBLE_CODECS_ERROR: 'manifestIncompatibleCodecsError',\n // Identifier for playlist load error - data: { url : faulty URL, response : XHR response}\n LEVEL_LOAD_ERROR: 'levelLoadError',\n // Identifier for playlist load timeout - data: { url : faulty URL, response : XHR response}\n LEVEL_LOAD_TIMEOUT: 'levelLoadTimeOut',\n // Identifier for a level switch error - data: { level : faulty level Id, event : error description}\n LEVEL_SWITCH_ERROR: 'levelSwitchError',\n // Identifier for fragment load error - data: { frag : fragment object, response : XHR response}\n FRAG_LOAD_ERROR: 'fragLoadError',\n // Identifier for fragment loop loading error - data: { frag : fragment object}\n FRAG_LOOP_LOADING_ERROR: 'fragLoopLoadingError',\n // Identifier for fragment load timeout error - data: { frag : fragment object}\n FRAG_LOAD_TIMEOUT: 'fragLoadTimeOut',\n // Identifier for a fragment decryption error event - data: parsing error description\n FRAG_DECRYPT_ERROR: 'fragDecryptError',\n // Identifier for a fragment parsing error event - data: parsing error description\n FRAG_PARSING_ERROR: 'fragParsingError',\n // Identifier for decrypt key load error - data: { frag : fragment object, response : XHR response}\n KEY_LOAD_ERROR: 'keyLoadError',\n // Identifier for decrypt key load timeout error - data: { frag : fragment object}\n KEY_LOAD_TIMEOUT: 'keyLoadTimeOut',\n // Identifier for a buffer append error - data: append error description\n BUFFER_APPEND_ERROR: 'bufferAppendError',\n // Identifier for a buffer appending error event - data: appending error description\n BUFFER_APPENDING_ERROR: 'bufferAppendingError',\n // Identifier for a buffer stalled error event\n BUFFER_STALLED_ERROR: 'bufferStalledError',\n // Identifier for a buffer full event\n BUFFER_FULL_ERROR: 'bufferFullError',\n // Identifier for a buffer seek over hole event\n BUFFER_SEEK_OVER_HOLE: 'bufferSeekOverHole',\n // Identifier for an internal exception happening inside hls.js while handling an event\n INTERNAL_EXCEPTION: 'internalException'\n};\n", "/*\n*\n* All objects in the event handling chain should inherit from this class\n*\n*/\n\nimport {logger} from './utils/logger';\nimport {ErrorTypes, ErrorDetails} from './errors';\nimport Event from './events';\n\nclass EventHandler {\n\n constructor(hls, ...events) {\n this.hls = hls;\n this.onEvent = this.onEvent.bind(this);\n this.handledEvents = events;\n this.useGenericHandler = true;\n\n this.registerListeners();\n }\n\n destroy() {\n this.unregisterListeners();\n }\n\n isEventHandler() {\n return typeof this.handledEvents === 'object' && this.handledEvents.length && typeof this.onEvent === 'function';\n }\n\n registerListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function(event) {\n if (event === 'hlsEventGeneric') {\n throw new Error('Forbidden event name: ' + event);\n }\n this.hls.on(event, this.onEvent);\n }.bind(this));\n }\n }\n\n unregisterListeners() {\n if (this.isEventHandler()) {\n this.handledEvents.forEach(function(event) {\n this.hls.off(event, this.onEvent);\n }.bind(this));\n }\n }\n\n /*\n * arguments: event (string), data (any)\n */\n onEvent(event, data) {\n this.onEventGeneric(event, data);\n }\n\n onEventGeneric(event, data) {\n var eventToFunction = function(event, data) {\n var funcName = 'on' + event.replace('hls', '');\n if (typeof this[funcName] !== 'function') {\n throw new Error(`Event ${event} has no generic handler in this ${this.constructor.name} class (tried ${funcName})`);\n }\n return this[funcName].bind(this, data);\n };\n try {\n eventToFunction.call(this, event, data).call();\n } catch (err) {\n logger.error(`internal error happened while processing ${event}:${err.message}`);\n this.hls.trigger(Event.ERROR, {type: ErrorTypes.OTHER_ERROR, details: ErrorDetails.INTERNAL_EXCEPTION, fatal: false, event : event, err : err});\n }\n }\n}\n\nexport default EventHandler;\n", "module.exports = {\n // fired before MediaSource is attaching to media element - data: { media }\n MEDIA_ATTACHING: 'hlsMediaAttaching',\n // fired when MediaSource has been succesfully attached to media element - data: { }\n MEDIA_ATTACHED: 'hlsMediaAttached',\n // fired before detaching MediaSource from media element - data: { }\n MEDIA_DETACHING: 'hlsMediaDetaching',\n // fired when MediaSource has been detached from media element - data: { }\n MEDIA_DETACHED: 'hlsMediaDetached',\n // fired when we buffer is going to be resetted\n BUFFER_RESET: 'hlsBufferReset',\n // fired when we know about the codecs that we need buffers for to push into - data: {tracks : { container, codec, levelCodec, initSegment, metadata }}\n BUFFER_CODECS: 'hlsBufferCodecs',\n // fired when we append a segment to the buffer - data: { segment: segment object }\n BUFFER_APPENDING: 'hlsBufferAppending',\n // fired when we are done with appending a media segment to the buffer\n BUFFER_APPENDED: 'hlsBufferAppended',\n // fired when the stream is finished and we want to notify the media buffer that there will be no more data\n BUFFER_EOS: 'hlsBufferEos',\n // fired when the media buffer should be flushed - data {startOffset, endOffset}\n BUFFER_FLUSHING: 'hlsBufferFlushing',\n // fired when the media has been flushed\n BUFFER_FLUSHED: 'hlsBufferFlushed',\n // fired to signal that a manifest loading starts - data: { url : manifestURL}\n MANIFEST_LOADING: 'hlsManifestLoading',\n // fired after manifest has been loaded - data: { levels : [available quality levels] , url : manifestURL, stats : { trequest, tfirst, tload, mtime}}\n MANIFEST_LOADED: 'hlsManifestLoaded',\n // fired after manifest has been parsed - data: { levels : [available quality levels] , firstLevel : index of first quality level appearing in Manifest}\n MANIFEST_PARSED: 'hlsManifestParsed',\n // fired when a level playlist loading starts - data: { url : level URL level : id of level being loaded}\n LEVEL_LOADING: 'hlsLevelLoading',\n // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : { trequest, tfirst, tload, mtime} }\n LEVEL_LOADED: 'hlsLevelLoaded',\n // fired when a level's details have been updated based on previous details, after it has been loaded. - data: { details : levelDetails object, level : id of updated level }\n LEVEL_UPDATED: 'hlsLevelUpdated',\n // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment }\n LEVEL_PTS_UPDATED: 'hlsLevelPtsUpdated',\n // fired when a level switch is requested - data: { level : id of new level }\n LEVEL_SWITCH: 'hlsLevelSwitch',\n // fired when a fragment loading starts - data: { frag : fragment object}\n FRAG_LOADING: 'hlsFragLoading',\n // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded}}\n FRAG_LOAD_PROGRESS: 'hlsFragLoadProgress',\n // Identifier for fragment load aborting for emergency switch down - data: {frag : fragment object}\n FRAG_LOAD_EMERGENCY_ABORTED: 'hlsFragLoadEmergencyAborted',\n // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length}}\n FRAG_LOADED: 'hlsFragLoaded',\n // fired when Init Segment has been extracted from fragment - data: { moov : moov MP4 box, codecs : codecs found while parsing fragment}\n FRAG_PARSING_INIT_SEGMENT: 'hlsFragParsingInitSegment',\n // fired when parsing sei text is completed - data: { samples : [ sei samples pes ] }\n FRAG_PARSING_USERDATA: 'hlsFragParsingUserdata',\n // fired when parsing id3 is completed - data: { samples : [ id3 samples pes ] }\n FRAG_PARSING_METADATA: 'hlsFragParsingMetadata',\n // fired when data have been extracted from fragment - data: { data1 : moof MP4 box or TS fragments, data2 : mdat MP4 box or null}\n FRAG_PARSING_DATA: 'hlsFragParsingData',\n // fired when fragment parsing is completed - data: undefined\n FRAG_PARSED: 'hlsFragParsed',\n // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length} }\n FRAG_BUFFERED: 'hlsFragBuffered',\n // fired when fragment matching with current media position is changing - data : { frag : fragment object }\n FRAG_CHANGED: 'hlsFragChanged',\n // Identifier for a FPS drop event - data: {curentDropped, currentDecoded, totalDroppedFrames}\n FPS_DROP: 'hlsFpsDrop',\n // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data}\n ERROR: 'hlsError',\n // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example\n DESTROYING: 'hlsDestroying',\n // fired when a decrypt key loading starts - data: { frag : fragment object}\n KEY_LOADING: 'hlsKeyLoading',\n // fired when a decrypt key loading is completed - data: { frag : fragment object, payload : key payload, stats : { trequest, tfirst, tload, length}}\n KEY_LOADED: 'hlsKeyLoaded',\n};\n", - "/**\n * Buffer Helper class, providing methods dealing buffer length retrieval\n*/\n\n\nclass BufferHelper {\n\n static bufferInfo(media, pos,maxHoleDuration) {\n if (media) {\n var vbuffered = media.buffered, buffered = [],i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({start: vbuffered.start(i), end: vbuffered.end(i)});\n }\n return this.bufferedInfo(buffered,pos,maxHoleDuration);\n } else {\n return {len: 0, start: 0, end: 0, nextStart : undefined} ;\n }\n }\n\n static bufferedInfo(buffered,pos,maxHoleDuration) {\n var buffered2 = [],\n // bufferStart and bufferEnd are buffer boundaries around current video position\n bufferLen,bufferStart, bufferEnd,bufferStartNext,i;\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if(buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if((buffered[i].start - buf2end) < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if(buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n\n // in case current position is located before buffered time ranges, report area as not buffered\n if (buffered2.length && pos < buffered2[0].start) {\n return {len: 0, start: pos, end: pos, nextStart : buffered2[0].start};\n }\n\n for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) {\n var start = buffered2[i].start,\n end = buffered2[i].end;\n //logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if ((pos + maxHoleDuration) >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if ((pos + maxHoleDuration) < start) {\n bufferStartNext = start;\n break;\n }\n }\n return {len: bufferLen, start: bufferStart, end: bufferEnd, nextStart : bufferStartNext};\n }\n\n}\n\nexport default BufferHelper;\n", + "/**\n * Buffer Helper class, providing methods dealing buffer length retrieval\n*/\n\n\nclass BufferHelper {\n\n static bufferInfo(media, pos,maxHoleDuration) {\n if (media) {\n var vbuffered = media.buffered, buffered = [],i;\n for (i = 0; i < vbuffered.length; i++) {\n buffered.push({start: vbuffered.start(i), end: vbuffered.end(i)});\n }\n return this.bufferedInfo(buffered,pos,maxHoleDuration);\n } else {\n return {len: 0, start: 0, end: 0, nextStart : undefined} ;\n }\n }\n\n static bufferedInfo(buffered,pos,maxHoleDuration) {\n var buffered2 = [],\n // bufferStart and bufferEnd are buffer boundaries around current video position\n bufferLen,bufferStart, bufferEnd,bufferStartNext,i;\n // sort on buffer.start/smaller end (IE does not always return sorted buffered range)\n buffered.sort(function (a, b) {\n var diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n // there might be some small holes between buffer time range\n // consider that holes smaller than maxHoleDuration are irrelevant and build another\n // buffer time range representations that discards those holes\n for (i = 0; i < buffered.length; i++) {\n var buf2len = buffered2.length;\n if(buf2len) {\n var buf2end = buffered2[buf2len - 1].end;\n // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative)\n if((buffered[i].start - buf2end) < maxHoleDuration) {\n // merge overlapping time ranges\n // update lastRange.end only if smaller than item.end\n // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end)\n // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15])\n if(buffered[i].end > buf2end) {\n buffered2[buf2len - 1].end = buffered[i].end;\n }\n } else {\n // big hole\n buffered2.push(buffered[i]);\n }\n } else {\n // first value\n buffered2.push(buffered[i]);\n }\n }\n for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) {\n var start = buffered2[i].start,\n end = buffered2[i].end;\n //logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i));\n if ((pos + maxHoleDuration) >= start && pos < end) {\n // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length\n bufferStart = start;\n bufferEnd = end;\n bufferLen = bufferEnd - pos;\n } else if ((pos + maxHoleDuration) < start) {\n bufferStartNext = start;\n break;\n }\n }\n return {len: bufferLen, start: bufferStart, end: bufferEnd, nextStart : bufferStartNext};\n }\n\n}\n\nexport default BufferHelper;\n", "/**\n * Level Helper class, providing methods dealing with playlist sliding and drift\n*/\n\nimport {logger} from '../utils/logger';\n\nclass LevelHelper {\n\n static mergeDetails(oldDetails,newDetails) {\n var start = Math.max(oldDetails.startSN,newDetails.startSN)-newDetails.startSN,\n end = Math.min(oldDetails.endSN,newDetails.endSN)-newDetails.startSN,\n delta = newDetails.startSN - oldDetails.startSN,\n oldfragments = oldDetails.fragments,\n newfragments = newDetails.fragments,\n ccOffset =0,\n PTSFrag;\n\n // check if old/new playlists have fragments in common\n if ( end < start) {\n newDetails.PTSKnown = false;\n return;\n }\n // loop through overlapping SN and update startPTS , cc, and duration if any found\n for(var i = start ; i <= end ; i++) {\n var oldFrag = oldfragments[delta+i],\n newFrag = newfragments[i];\n ccOffset = oldFrag.cc - newFrag.cc;\n if (!isNaN(oldFrag.startPTS)) {\n newFrag.start = newFrag.startPTS = oldFrag.startPTS;\n newFrag.endPTS = oldFrag.endPTS;\n newFrag.duration = oldFrag.duration;\n PTSFrag = newFrag;\n }\n }\n\n if(ccOffset) {\n logger.log(`discontinuity sliding from playlist, take drift into account`);\n for(i = 0 ; i < newfragments.length ; i++) {\n newfragments[i].cc += ccOffset;\n }\n }\n\n // if at least one fragment contains PTS info, recompute PTS information for all fragments\n if(PTSFrag) {\n LevelHelper.updateFragPTS(newDetails,PTSFrag.sn,PTSFrag.startPTS,PTSFrag.endPTS);\n } else {\n // ensure that delta is within oldfragments range\n // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61])\n // in that case we also need to adjust start offset of all fragments\n if (delta >= 0 && delta < oldfragments.length) {\n // adjust start by sliding offset\n var sliding = oldfragments[delta].start;\n for(i = 0 ; i < newfragments.length ; i++) {\n newfragments[i].start += sliding;\n }\n }\n }\n // if we are here, it means we have fragments overlapping between\n // old and new level. reliable PTS info is thus relying on old level\n newDetails.PTSKnown = oldDetails.PTSKnown;\n return;\n }\n\n static updateFragPTS(details,sn,startPTS,endPTS) {\n var fragIdx, fragments, frag, i;\n // exit if sn out of range\n if (sn < details.startSN || sn > details.endSN) {\n return 0;\n }\n fragIdx = sn - details.startSN;\n fragments = details.fragments;\n frag = fragments[fragIdx];\n if(!isNaN(frag.startPTS)) {\n startPTS = Math.min(startPTS,frag.startPTS);\n endPTS = Math.max(endPTS, frag.endPTS);\n }\n\n var drift = startPTS - frag.start;\n\n frag.start = frag.startPTS = startPTS;\n frag.endPTS = endPTS;\n frag.duration = endPTS - startPTS;\n // adjust fragment PTS/duration from seqnum-1 to frag 0\n for(i = fragIdx ; i > 0 ; i--) {\n LevelHelper.updatePTS(fragments,i,i-1);\n }\n\n // adjust fragment PTS/duration from seqnum to last frag\n for(i = fragIdx ; i < fragments.length - 1 ; i++) {\n LevelHelper.updatePTS(fragments,i,i+1);\n }\n details.PTSKnown = true;\n //logger.log(` frag start/end:${startPTS.toFixed(3)}/${endPTS.toFixed(3)}`);\n\n return drift;\n }\n\n static updatePTS(fragments,fromIdx, toIdx) {\n var fragFrom = fragments[fromIdx],fragTo = fragments[toIdx], fragToPTS = fragTo.startPTS;\n // if we know startPTS[toIdx]\n if(!isNaN(fragToPTS)) {\n // update fragment duration.\n // it helps to fix drifts between playlist reported duration and fragment real duration\n if (toIdx > fromIdx) {\n fragFrom.duration = fragToPTS-fragFrom.start;\n if(fragFrom.duration < 0) {\n logger.error(`negative duration computed for frag ${fragFrom.sn},level ${fragFrom.level}, there should be some duration drift between playlist and fragment!`);\n }\n } else {\n fragTo.duration = fragFrom.start - fragToPTS;\n if(fragTo.duration < 0) {\n logger.error(`negative duration computed for frag ${fragTo.sn},level ${fragTo.level}, there should be some duration drift between playlist and fragment!`);\n }\n }\n } else {\n // we dont know startPTS[toIdx]\n if (toIdx > fromIdx) {\n fragTo.start = fragFrom.start + fragFrom.duration;\n } else {\n fragTo.start = fragFrom.start - fragTo.duration;\n }\n }\n }\n}\n\nexport default LevelHelper;\n", "/**\n * HLS interface\n */\n'use strict';\n\nimport Event from './events';\nimport {ErrorTypes, ErrorDetails} from './errors';\nimport PlaylistLoader from './loader/playlist-loader';\nimport FragmentLoader from './loader/fragment-loader';\nimport AbrController from './controller/abr-controller';\nimport BufferController from './controller/buffer-controller';\nimport CapLevelController from './controller/cap-level-controller';\nimport StreamController from './controller/stream-controller';\nimport LevelController from './controller/level-controller';\nimport TimelineController from './controller/timeline-controller';\n//import FPSController from './controller/fps-controller';\nimport {logger, enableLogs} from './utils/logger';\nimport XhrLoader from './utils/xhr-loader';\nimport EventEmitter from 'events';\nimport KeyLoader from './loader/key-loader';\n\nclass Hls {\n\n static isSupported() {\n return (window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs=\"avc1.42E01E,mp4a.40.2\"'));\n }\n\n static get Events() {\n return Event;\n }\n\n static get ErrorTypes() {\n return ErrorTypes;\n }\n\n static get ErrorDetails() {\n return ErrorDetails;\n }\n\n static get DefaultConfig() {\n if(!Hls.defaultConfig) {\n Hls.defaultConfig = {\n autoStartLoad: true,\n debug: false,\n capLevelToPlayerSize: false,\n maxBufferLength: 30,\n maxBufferSize: 60 * 1000 * 1000,\n maxBufferHole: 0.5,\n maxSeekHole: 2,\n seekHoleNudgeDuration : 0.01,\n stalledInBufferedNudgeThreshold: 10,\n maxFragLookUpTolerance : 0.2,\n liveSyncDurationCount:3,\n liveMaxLatencyDurationCount: Infinity,\n liveSyncDuration: undefined,\n liveMaxLatencyDuration: undefined,\n maxMaxBufferLength: 600,\n enableWorker: true,\n enableSoftwareAES: true,\n manifestLoadingTimeOut: 10000,\n manifestLoadingMaxRetry: 1,\n manifestLoadingRetryDelay: 1000,\n levelLoadingTimeOut: 10000,\n levelLoadingMaxRetry: 4,\n levelLoadingRetryDelay: 1000,\n fragLoadingTimeOut: 20000,\n fragLoadingMaxRetry: 6,\n fragLoadingRetryDelay: 1000,\n fragLoadingLoopThreshold: 3,\n startFragPrefetch : false,\n // fpsDroppedMonitoringPeriod: 5000,\n // fpsDroppedMonitoringThreshold: 0.2,\n appendErrorMaxRetry: 3,\n loader: XhrLoader,\n fLoader: undefined,\n pLoader: undefined,\n abrController : AbrController,\n bufferController : BufferController,\n capLevelController : CapLevelController,\n streamController: StreamController,\n timelineController: TimelineController,\n enableCEA708Captions: true,\n enableMP2TPassThrough : false\n };\n }\n return Hls.defaultConfig;\n }\n\n static set DefaultConfig(defaultConfig) {\n Hls.defaultConfig = defaultConfig;\n }\n\n constructor(config = {}) {\n var defaultConfig = Hls.DefaultConfig;\n\n if ((config.liveSyncDurationCount || config.liveMaxLatencyDurationCount) && (config.liveSyncDuration || config.liveMaxLatencyDuration)) {\n throw new Error('Illegal hls.js config: don\\'t mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration');\n }\n\n for (var prop in defaultConfig) {\n if (prop in config) { continue; }\n config[prop] = defaultConfig[prop];\n }\n\n if (config.liveMaxLatencyDurationCount !== undefined && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDurationCount\" must be gt \"liveSyncDurationCount\"');\n }\n\n if (config.liveMaxLatencyDuration !== undefined && (config.liveMaxLatencyDuration <= config.liveSyncDuration || config.liveSyncDuration === undefined)) {\n throw new Error('Illegal hls.js config: \"liveMaxLatencyDuration\" must be gt \"liveSyncDuration\"');\n }\n\n enableLogs(config.debug);\n this.config = config;\n // observer setup\n var observer = this.observer = new EventEmitter();\n observer.trigger = function trigger (event, ...data) {\n observer.emit(event, event, ...data);\n };\n\n observer.off = function off (event, ...data) {\n observer.removeListener(event, ...data);\n };\n this.on = observer.on.bind(observer);\n this.off = observer.off.bind(observer);\n this.trigger = observer.trigger.bind(observer);\n this.playlistLoader = new PlaylistLoader(this);\n this.fragmentLoader = new FragmentLoader(this);\n this.levelController = new LevelController(this);\n this.abrController = new config.abrController(this);\n this.bufferController = new config.bufferController(this);\n this.capLevelController = new config.capLevelController(this);\n this.streamController = new config.streamController(this);\n this.timelineController = new config.timelineController(this);\n this.keyLoader = new KeyLoader(this);\n //this.fpsController = new FPSController(this);\n }\n\n destroy() {\n logger.log('destroy');\n this.trigger(Event.DESTROYING);\n this.detachMedia();\n this.playlistLoader.destroy();\n this.fragmentLoader.destroy();\n this.levelController.destroy();\n this.abrController.destroy();\n this.bufferController.destroy();\n this.capLevelController.destroy();\n this.streamController.destroy();\n this.timelineController.destroy();\n this.keyLoader.destroy();\n //this.fpsController.destroy();\n this.url = null;\n this.observer.removeAllListeners();\n }\n\n attachMedia(media) {\n logger.log('attachMedia');\n this.media = media;\n this.trigger(Event.MEDIA_ATTACHING, {media: media});\n }\n\n detachMedia() {\n logger.log('detachMedia');\n this.trigger(Event.MEDIA_DETACHING);\n this.media = null;\n }\n\n loadSource(url) {\n logger.log(`loadSource:${url}`);\n this.url = url;\n // when attaching to a source URL, trigger a playlist load\n this.trigger(Event.MANIFEST_LOADING, {url: url});\n }\n\n startLoad(startPosition=0) {\n logger.log('startLoad');\n this.levelController.startLoad();\n this.streamController.startLoad(startPosition);\n }\n\n stopLoad() {\n logger.log('stopLoad');\n this.levelController.stopLoad();\n this.streamController.stopLoad();\n }\n\n swapAudioCodec() {\n logger.log('swapAudioCodec');\n this.streamController.swapAudioCodec();\n }\n\n recoverMediaError() {\n logger.log('recoverMediaError');\n var media = this.media;\n this.detachMedia();\n this.attachMedia(media);\n }\n\n /** Return all quality levels **/\n get levels() {\n return this.levelController.levels;\n }\n\n /** Return current playback quality level **/\n get currentLevel() {\n return this.streamController.currentLevel;\n }\n\n /* set quality level immediately (-1 for automatic level selection) */\n set currentLevel(newLevel) {\n logger.log(`set currentLevel:${newLevel}`);\n this.loadLevel = newLevel;\n this.streamController.immediateLevelSwitch();\n }\n\n /** Return next playback quality level (quality level of next fragment) **/\n get nextLevel() {\n return this.streamController.nextLevel;\n }\n\n /* set quality level for next fragment (-1 for automatic level selection) */\n set nextLevel(newLevel) {\n logger.log(`set nextLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n this.streamController.nextLevelSwitch();\n }\n\n /** Return the quality level of current/last loaded fragment **/\n get loadLevel() {\n return this.levelController.level;\n }\n\n /* set quality level for current/next loaded fragment (-1 for automatic level selection) */\n set loadLevel(newLevel) {\n logger.log(`set loadLevel:${newLevel}`);\n this.levelController.manualLevel = newLevel;\n }\n\n /** Return the quality level of next loaded fragment **/\n get nextLoadLevel() {\n return this.levelController.nextLoadLevel;\n }\n\n /** set quality level of next loaded fragment **/\n set nextLoadLevel(level) {\n this.levelController.nextLoadLevel = level;\n }\n\n /** Return first level (index of first level referenced in manifest)\n **/\n get firstLevel() {\n return this.levelController.firstLevel;\n }\n\n /** set first level (index of first level referenced in manifest)\n **/\n set firstLevel(newLevel) {\n logger.log(`set firstLevel:${newLevel}`);\n this.levelController.firstLevel = newLevel;\n }\n\n /** Return start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n get startLevel() {\n return this.levelController.startLevel;\n }\n\n /** set start level (level of first fragment that will be played back)\n if not overrided by user, first level appearing in manifest will be used as start level\n if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment)\n **/\n set startLevel(newLevel) {\n logger.log(`set startLevel:${newLevel}`);\n this.levelController.startLevel = newLevel;\n }\n\n /** Return the capping/max level value that could be used by automatic level selection algorithm **/\n get autoLevelCapping() {\n return this.abrController.autoLevelCapping;\n }\n\n /** set the capping/max level value that could be used by automatic level selection algorithm **/\n set autoLevelCapping(newLevel) {\n logger.log(`set autoLevelCapping:${newLevel}`);\n this.abrController.autoLevelCapping = newLevel;\n }\n\n /* check if we are in automatic level selection mode */\n get autoLevelEnabled() {\n return (this.levelController.manualLevel === -1);\n }\n\n /* return manual level */\n get manualLevel() {\n return this.levelController.manualLevel;\n }\n}\n\nexport default Hls;\n", "// This is mostly for support of the es6 module export\n// syntax with the babel compiler, it looks like it doesnt support\n// function exports like we are used to in node/commonjs\nmodule.exports = require('./hls.js').default;\n", diff --git a/dashboard-ui/bower_components/hls.js/dist/hls.min.js b/dashboard-ui/bower_components/hls.js/dist/hls.min.js index 1d6d0754c1..86d3798e0c 100644 --- a/dashboard-ui/bower_components/hls.js/dist/hls.min.js +++ b/dashboard-ui/bower_components/hls.js/dist/hls.min.js @@ -1,4 +1,4 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Hls=e()}}(function(){return function s(e,t,r){function i(n,d){if(!t[n]){if(!e[n]){var l="function"==typeof require&&require;if(!d&&l)return l(n,!0);if(a)return a(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var o=t[n]={exports:{}};e[n][0].call(o.exports,function(t){var r=e[n][1][t];return i(r?r:t)},o,o.exports,s,e,t,r)}return t[n].exports}for(var a="function"==typeof require&&require,n=0;ne||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(l){var s,e,u,n,a,o;if(this._events||(this._events={}),"error"===l&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if(s=arguments[1],s instanceof Error)throw s;throw TypeError('Uncaught, unspecified "error" event.')}if(e=this._events[l],i(e))return!1;if(t(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:n=Array.prototype.slice.call(arguments,1),e.apply(this,n)}else if(r(e))for(n=Array.prototype.slice.call(arguments,1),o=e.slice(),u=o.length,a=0;u>a;a++)o[a].apply(this,n);return!0},e.prototype.addListener=function(n,a){var s;if(!t(a))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",n,t(a.listener)?a.listener:a),this._events[n]?r(this._events[n])?this._events[n].push(a):this._events[n]=[this._events[n],a]:this._events[n]=a,r(this._events[n])&&!this._events[n].warned&&(s=i(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,s&&s>0&&this._events[n].length>s&&(this._events[n].warned=!0,"function"==typeof console.trace)),this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(i,e){function r(){this.removeListener(i,r),n||(n=!0,e.apply(this,arguments))}if(!t(e))throw TypeError("listener must be a function");var n=!1;return r.listener=e,this.on(i,r),this},e.prototype.removeListener=function(n,i){var e,s,o,a;if(!t(i))throw TypeError("listener must be a function");if(!this._events||!this._events[n])return this;if(e=this._events[n],o=e.length,s=-1,e===i||t(e.listener)&&e.listener===i)delete this._events[n],this._events.removeListener&&this.emit("removeListener",n,i);else if(r(e)){for(a=o;a-- >0;)if(e[a]===i||e[a].listener&&e[a].listener===i){s=a;break}if(0>s)return this;1===e.length?(e.length=0,delete this._events[n]):e.splice(s,1),this._events.removeListener&&this.emit("removeListener",n,i)}return this},e.prototype.removeAllListeners=function(r){var i,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[r]&&delete this._events[r],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[r],t(e))this.removeListener(r,e);else if(e)for(;e.length;)this.removeListener(r,e[e.length-1]);return delete this._events[r],this},e.prototype.listeners=function(e){var r;return r=this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.prototype.listenerCount=function(r){if(this._events){var e=this._events[r];if(t(e))return 1;if(e)return e.length}return 0},e.listenerCount=function(e,t){return e.listenerCount(t)}},{}],2:[function(a,i,s){var n=arguments[3],e=arguments[4],r=arguments[5],t=JSON.stringify;i.exports=function(l){for(var i,s=Object.keys(r),a=0,d=s.length;d>a;a++){var o=s[a],u=r[o].exports;if(u===l||u.default===l){i=o;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},a=0,d=s.length;d>a;a++){var o=s[a];f[o]=o}e[i]=[Function(["require","module","exports"],"("+l+")(self)"),f]}var h=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[i]=i,e[h]=[Function(["require"],"var f = require("+t(i)+");(f.default ? f.default : f)(self);"),c];var v="("+n+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(h)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([v],{type:"text/javascript"})))}},{}],3:[function(e,p,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t500*e.duration){var d=Math.max(1,1e3*e.loaded/u);e.expectedLens){var o=void 0,r=void 0;for(r=e.level-1;r>=0&&(o=e.duration*n.levels[r].bitrate/(6.4*d),i.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay["+r+"] :"+l.toFixed(1)+"/"+s.toFixed(1)+"/"+o.toFixed(1)),!(s>o));r--);l>o&&(r=Math.max(0,r),n.nextLoadLevel=r,i.logger.warn("loading too slow, abort fragment loading and switch to level "+r),e.loader.abort(),this.clearTimer(),n.trigger(t.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e}))}}}}},{key:"onFragLoaded",value:function(e){this.clearTimer(),this.lastLoadedFragLevel=e.frag.level,this._nextAutoLevel=-1}},{key:"onError",value:function(e){switch(e.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}}},{key:"clearTimer",value:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping=e}},{key:"nextAutoLevel",get:function(){var i,e,r,n=this.lastbw,t=this.hls;if(r=-1===this._autoLevelCapping&&t.levels&&t.levels.length?t.levels.length-1:this._autoLevelCapping,-1!==this._nextAutoLevel)return Math.min(this._nextAutoLevel,r);for(e=0;r>=e;e++)if(i=e<=this.lastLoadedFragLevel?.8*n:.7*n,ia.config.appendErrorMaxRetry)return t.logger.log("fail "+a.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),n=[],i.fatal=!0,void a.trigger(e.default.ERROR,i);i.fatal=!1,a.trigger(e.default.ERROR,i)}else n=[],i.details=r.ErrorDetails.BUFFER_FULL_ERROR,a.trigger(e.default.ERROR,i)}}}}},{key:"flushBuffer",value:function(l,s){var e,r,o,a,i,n;if(this.flushBufferCounter.5)return this.flushBufferCounter++,t.logger.log("flush "+u+" ["+i+","+n+"], of ["+o+","+a+"], pos:"+this.media.currentTime),e.remove(i,n),!1}else t.logger.warn("abort flushing too many retries");return t.logger.log("buffer flushed"),!0}}]),i}(s.default);n.default=o},{"../errors":20,"../event-handler":21,"../events":22,"../utils/logger":36}],5:[function(e,h,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;tthis.autoLevelCapping&&this.hls.streamController.nextLevelSwitch(),this.autoLevelCapping=this.hls.autoLevelCapping)}}},{key:"getMaxLevel",value:function(a){var r=void 0,e=void 0,t=void 0,s=this.mediaWidth,o=this.mediaHeight,i=0,n=0;for(e=0;a>=e&&(t=this.levels[e],r=e,i=t.width,n=t.height,!(i>=s||n>=o));e++);return r}},{key:"contentScaleFactor",get:function(){var e=1;try{e=window.devicePixelRatio}catch(e){}return e}},{key:"mediaWidth",get:function(){var e=void 0;return this.media&&(e=this.media.width||this.media.clientWidth||this.media.offsetWidth,e*=this.contentScaleFactor),e}},{key:"mediaHeight",get:function(){var e=void 0;return this.media&&(e=this.media.height||this.media.clientHeight||this.media.offsetHeight,e*=this.contentScaleFactor),e}}]),e}(s.default);t.default=u},{"../event-handler":21,"../events":22}],6:[function(i,v,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(n,"__esModule",{value:!0});var c=function(){function e(i,r){for(var t=0;t=0&&ie&&(this._level!==e||void 0===this._levels[e].details)&&this.setLevelInternal(e)}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(e){this._manualLevel=e,-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){return void 0===this._startLevel?this._firstLevel:this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this._manualLevel?this._manualLevel:this.hls.abrController.nextAutoLevel},set:function(e){this.level=e,-1===this._manualLevel&&(this.hls.abrController.nextAutoLevel=e)}}]),i}(f.default);n.default=o},{"../errors":20,"../event-handler":21,"../events":22,"../utils/logger":36}],7:[function(n,A,o){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(o,"__esModule",{value:!0});var m=function(){function e(i,r){for(var t=0;t1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var m,l,a,_=this,f=this.hls,o=f.config;switch(this.state){case e.ERROR:case e.PAUSED:break;case e.STARTING:this.startLevel=f.startLevel,-1===this.startLevel&&(this.startLevel=0,this.fragBitrateTest=!0),this.level=f.nextLoadLevel=this.startLevel,this.state=e.WAITING_LEVEL,this.loadedmetadata=!1;break;case e.IDLE:if(!this.media&&(this.startFragRequested||!o.startFragPrefetch))break;m=this.loadedmetadata?this.media.currentTime:this.nextLoadPosition,l=this.startFragRequested===!1?this.startLevel:f.nextLoadLevel;var c,b=s.default.bufferInfo(this.media,m,o.maxBufferHole),k=b.len,u=b.end,v=this.fragPrevious;if(this.levels[l].hasOwnProperty("bitrate")?(c=Math.max(8*o.maxBufferSize/this.levels[l].bitrate,o.maxBufferLength),c=Math.min(c,o.maxMaxBufferLength)):c=o.maxBufferLength,c>k){if(f.nextLoadLevel=l,this.level=l,a=this.levels[l].details,"undefined"==typeof a||a.live&&this.levelLastLoaded!==l){this.state=e.WAITING_LEVEL;break}var d=a.fragments,h=d.length,g=d[0].start,y=d[h-1].start+d[h-1].duration,n=void 0;if(a.live){var T=void 0!==o.liveMaxLatencyDuration?o.liveMaxLatencyDuration:o.liveMaxLatencyDurationCount*a.targetduration;if(uy)break;if(this.startFragRequested&&!a.PTSKnown){if(v){var E=v.sn+1;E>=a.startSN&&E<=a.endSN&&(n=d[E-a.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+n.sn))}n||(n=d[Math.min(h-1,Math.round(h/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+n.sn))}}else g>u&&(n=d[0]);if(n||!function(){var i=void 0,s=o.maxFragLookUpTolerance;y>u?(u>y-s&&(s=0),i=p.default.search(d,function(e){return e.start+e.duration-s<=u?1:e.start-s>u?-1:0})):i=d[h-1],i&&(n=i,g=i.start,v&&n.level===v.level&&n.sn===v.sn&&(n.sn1&&(n.expectedLen=Math.round(n.duration*this.levels[l].bitrate/8),n.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,n.loadCounter){n.loadCounter++;var R=o.fragLoadingLoopThreshold;if(n.loadCounter>R&&Math.abs(this.fragLoadIdx-n.loadIdx)=A||O)&&(t.logger.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=e.IDLE);break;case e.STOPPED:case e.FRAG_LOADING:case e.PARSING:case e.PARSED:case e.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{key:"getBufferRange",value:function(i){var e,t,r=this.bufferRange;if(r)for(e=r.length-1;e>=0;e--)if(t=r[e],i>=t.start&&i<=t.end)return t;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(r){var i=this.media;if(i)for(var t=i.buffered,e=0;e=t.start(e)&&r<=t.end(e))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var t,e,i=this.media;if(i&&i.seeking===!1&&(e=i.currentTime,e>i.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),this.isBuffered(e)?t=this.getBufferRange(e):this.isBuffered(e+.1)&&(t=this.getBufferRange(e+.1)),t)){var n=t.frag;n!==this.fragPlaying&&(this.fragPlaying=n,this.hls.trigger(r.default.FRAG_CHANGED,{frag:n}))}}},{key:"immediateLevelSwitch",value:function(){t.logger.log("immediateLevelSwitch"),this.immediateSwitch||(this.immediateSwitch=!0,this.previouslyPaused=this.media.paused,this.media.pause());var i=this.fragCurrent;i&&i.loader&&i.loader.abort(), -this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY})}},{key:"immediateLevelSwitchEnd",value:function(){this.immediateSwitch=!1;var e=this.media;e&&e.readyState&&(e.currentTime-=1e-4,this.previouslyPaused||e.play())}},{key:"nextLevelSwitch",value:function(){var t=this.media;if(t&&t.readyState){var a=void 0,n=void 0,i=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,n=this.getBufferRange(t.currentTime),n&&n.start>1&&(this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:n.start-1})),t.paused)a=0;else{var l=this.hls.nextLoadLevel,u=this.levels[l],o=this.fragLastKbps;a=o&&this.fragCurrent?this.fragCurrent.duration*u.bitrate/(1e3*o)+1:0}if(i=this.getBufferRange(t.currentTime+a),i&&(i=this.followingBufferRange(i))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:i.start,endOffset:Number.POSITIVE_INFINITY})}}}},{key:"onMediaAttached",value:function(t){var e=this.media=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended),this.levels&&this.config.autoStartLoad&&this.hls.startLoad()}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(t.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var r=this.levels;r&&r.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("seeked",this.onvseeked),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){if(this.state===e.FRAG_LOADING){if(0===s.default.bufferInfo(this.media,this.media.currentTime,this.config.maxBufferHole).len){t.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load");var r=this.fragCurrent;r&&(r.loader&&r.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.state=e.IDLE}}else this.state===e.ENDED&&(this.state=e.IDLE);this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()}},{key:"onMediaSeeked",value:function(){this.tick()}},{key:"onMediaEnded",value:function(){t.logger.log("media ended"),this.startPosition=this.lastCurrentTime=0}},{key:"onManifestLoading",value:function(){t.logger.log("trigger BUFFER_RESET"),this.hls.trigger(r.default.BUFFER_RESET),this.bufferRange=[],this.stalled=!1}},{key:"onManifestParsed",value:function(r){var e,i=!1,n=!1;r.levels.forEach(function(t){e=t.audioCodec,e&&(-1!==e.indexOf("mp4a.40.2")&&(i=!0),-1!==e.indexOf("mp4a.40.5")&&(n=!0))}),this.audioCodecSwitch=i&&n,this.audioCodecSwitch&&t.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=r.levels,this.startLevelLoaded=!1,this.startFragRequested=!1,this.config.autoStartLoad&&this.hls.startLoad()}},{key:"onLevelLoaded",value:function(s){var i=s.details,n=s.level,o=this.levels[n],l=i.totalduration,a=0;if(t.logger.log("level "+n+" loaded ["+i.startSN+","+i.endSN+"],duration:"+l),this.levelLastLoaded=n,i.live){var d=o.details;d?(u.default.mergeDetails(d,i),a=i.fragments[0].start,i.PTSKnown?t.logger.log("live playlist sliding:"+a.toFixed(3)):t.logger.log("live playlist - outdated PTS, unknown sliding")):(i.PTSKnown=!1,t.logger.log("live playlist - first load, unknown sliding"))}else i.PTSKnown=!1;if(o.details=i,this.hls.trigger(r.default.LEVEL_UPDATED,{details:i,level:n}),this.startFragRequested===!1){if(i.live){var f=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*i.targetduration;this.startPosition=Math.max(0,a+l-f)}this.nextLoadPosition=this.startPosition}this.state===e.WAITING_LEVEL&&(this.state=e.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===e.KEY_LOADING&&(this.state=e.IDLE,this.tick())}},{key:"onFragLoaded",value:function(n){var i=this.fragCurrent;if(this.state===e.FRAG_LOADING&&i&&n.frag.level===i.level&&n.frag.sn===i.sn)if(this.fragBitrateTest===!0)this.state=e.IDLE,this.fragBitrateTest=!1,n.stats.tparsed=n.stats.tbuffered=performance.now(),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:n.stats,frag:i});else{this.state=e.PARSING,this.stats=n.stats;var s=this.levels[this.level],o=s.details,f=o.totalduration,h=i.start,l=i.level,u=i.sn,a=s.audioCodec||this.config.defaultAudioCodec;this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),void 0===a&&(a=this.lastAudioCodec),a&&(a=-1!==a.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingAppending=0,t.logger.log("Demuxing "+u+" of ["+o.startSN+" ,"+o.endSN+"],level "+l);var d=this.demuxer;d&&d.push(n.payload,a,s.videoCodec,h,i.cc,l,u,f,i.decryptdata)}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(l){if(this.state===e.PARSING){var o,i,n=l.tracks;if(i=n.audio){var a=this.levels[this.level].audioCodec,u=navigator.userAgent.toLowerCase();a&&this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),a=-1!==a.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==i.metadata.channelCount&&-1===u.indexOf("firefox")&&(a="mp4a.40.5"),-1!==u.indexOf("android")&&(a="mp4a.40.2",t.logger.log("Android: force audio codec to"+a)),i.levelCodec=a}if(i=n.video,i&&(i.levelCodec=this.levels[this.level].videoCodec),l.unique){var s={codec:"",levelCodec:""};for(o in l.tracks)i=n[o],s.container=i.container,s.codec&&(s.codec+=",",s.levelCodec+=","),i.codec&&(s.codec+=i.codec),i.levelCodec&&(s.levelCodec+=i.levelCodec);n={audiovideo:s}}this.hls.trigger(r.default.BUFFER_CODECS,n);for(o in n){i=n[o],t.logger.log("track:"+o+",container:"+i.container+",codecs[level/parsed]=["+i.levelCodec+"/"+i.codec+"]");var d=i.initSegment;d&&(this.pendingAppending++,this.hls.trigger(r.default.BUFFER_APPENDING,{type:o,data:d}))}this.tick()}}},{key:"onFragParsingData",value:function(i){var o=this;if(this.state===e.PARSING){this.tparse2=Date.now();var n=this.levels[this.level],a=this.fragCurrent;t.logger.log("parsed "+i.type+",PTS:["+i.startPTS.toFixed(3)+","+i.endPTS.toFixed(3)+"],DTS:["+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"],nb:"+i.nb);var l=u.default.updateFragPTS(n.details,a.sn,i.startPTS,i.endPTS),s=this.hls;s.trigger(r.default.LEVEL_PTS_UPDATED,{details:n.details,level:this.level,drift:l}),[i.data1,i.data2].forEach(function(e){e&&(o.pendingAppending++,s.trigger(r.default.BUFFER_APPENDING,{type:i.type,data:e}))}),this.nextLoadPosition=i.endPTS,this.bufferRange.push({type:i.type,start:i.startPTS,end:i.endPTS,frag:a}),this.tick()}else t.logger.warn("not in PARSING state but "+this.state+", ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.stats.tparsed=performance.now(),this.state=e.PARSED,this._checkAppendedParsed())}},{key:"onBufferAppended",value:function(){switch(this.state){case e.PARSING:case e.PARSED:this.pendingAppending--,this._checkAppendedParsed()}}},{key:"_checkAppendedParsed",value:function(){if(this.state===e.PARSED&&0===this.pendingAppending){var n=this.fragCurrent,i=this.stats;n&&(this.fragPrevious=n,i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.length/(i.tbuffered-i.tfirst)),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:i,frag:n}),t.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=e.IDLE),this.tick()}}},{key:"onError",value:function(n){switch(n.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!n.fatal){var a=this.fragLoadError;if(a?a++:a=1,a<=this.config.fragLoadingMaxRetry){this.fragLoadError=a,n.frag.loadCounter=0;var s=Math.min(Math.pow(2,a-1)*this.config.fragLoadingRetryDelay,64e3);t.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.state=e.FRAG_LOADING_WAITING_RETRY}else t.logger.error("mediaController: "+n.details+" reaches max retry, redispatch as fatal ..."),n.fatal=!0,this.hls.trigger(r.default.ERROR,n),this.state=e.ERROR}break;case i.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:this.state!==e.ERROR&&(this.state=n.fatal?e.ERROR:e.IDLE,t.logger.warn("mediaController: "+n.details+" while loading frag,switch to "+this.state+" state ..."));break;case i.ErrorDetails.BUFFER_FULL_ERROR:this.config.maxMaxBufferLength/=2,t.logger.warn("reduce max buffer length to "+this.config.maxMaxBufferLength+"s and trigger a nextLevelSwitch to flush old buffer and fix QuotaExceededError"),this.nextLevelSwitch()}}},{key:"_checkBuffer",value:function(){var e=this.media;if(e){var f=e.readyState;if(f){var n,a,l=this.seekAfterBuffered;if(l)e.duration>=l&&(n=l,this.seekAfterBuffered=void 0);else{a=e.currentTime;var g=this.loadedmetadata;!g&&e.buffered.length&&(this.loadedmetadata=!0,a||a===this.startPosition||(n=this.startPosition))}n&&(a=n,t.logger.log("target seek position:"+n));var u=s.default.bufferInfo(e,a,0),v=!(e.paused||e.ended||e.seeking||2>f),d=.4,h=a>e.playbackRate*this.lastCurrentTime;if(this.stalled&&h&&(this.stalled=!1,t.logger.log("playback not stuck anymore @"+a)),v&&u.len<=d){if(h?(d=0,this.seekHoleNudgeDuration=0):this.stalled?this.seekHoleNudgeDuration+=this.config.seekHoleNudgeDuration:(this.seekHoleNudgeDuration=0,t.logger.log("playback seems stuck @"+a),this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0),u.len<=d){var o=u.nextStart,c=o-a;if(o&&c0&&!e.seeking){t.logger.log("adjust currentTime from "+e.currentTime+" to next buffered @ "+o+" + nudge "+this.seekHoleNudgeDuration);var p=o+this.seekHoleNudgeDuration-e.currentTime;e.currentTime=o+this.seekHoleNudgeDuration,this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:p})}}}else n&&e.currentTime!==n&&(t.logger.log("adjust currentTime from "+e.currentTime+" to "+n),e.currentTime=n)}}}},{key:"onFragLoadEmergencyAborted",value:function(){this.state=e.IDLE,this.tick()}},{key:"onBufferFlushed",value:function(){var t,r,i=[];for(r=0;re;e++)r+="["+t.start(e)+","+t.end(e)+"]";return r}},{key:"currentLevel",get:function(){if(this.media){var e=this.getBufferRange(this.media.currentTime);if(e)return e.frag.level}return-1}},{key:"nextBufferRange",get:function(){return this.media?this.followingBufferRange(this.getBufferRange(this.media.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferRange;return e?e.frag.level:-1}}]),n}(l.default);o.default=f},{"../demux/demuxer":16,"../errors":20,"../event-handler":21,"../events":22,"../helper/buffer-helper":23,"../helper/level-helper":24,"../utils/binary-search":34,"../utils/logger":36}],8:[function(t,v,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function e(i,r){for(var t=0;te;e++)c[(n[e]=e<<1^283*(e>>7))^e]=e;for(i=r=0;!h[i];i^=u||1,r=c[r]||1)for(t=r^r<<1^r<<2^r<<3^r<<4,t=t>>8^255&t^99,h[i]=t,v[t]=i,d=n[f=n[u=n[i]]],l=16843009*d^65537*f^257*u^16843008*i,s=257*n[t]^16843008*t,e=0;4>e;e++)a[e][i]=s=s<<24^s>>>8,o[e][t]=l=l<<24^l>>>8;for(e=0;5>e;e++)a[e]=a[e].slice(0),o[e]=o[e].slice(0)}},{key:"decrypt",value:function(R,p,_,b,E,m){var h,g,v,a,e=this._key[1],t=R^e[0],i=b^e[1],n=_^e[2],r=p^e[3],y=e.length/4-2,s=4,o=this._tables[1],f=o[0],d=o[1],u=o[2],l=o[3],c=o[4];for(a=0;y>a;a++)h=f[t>>>24]^d[i>>16&255]^u[n>>8&255]^l[255&r]^e[s],g=f[i>>>24]^d[n>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],v=f[n>>>24]^d[r>>16&255]^u[t>>8&255]^l[255&i]^e[s+2],r=f[r>>>24]^d[t>>16&255]^u[i>>8&255]^l[255&n]^e[s+3],s+=4,t=h,i=g,n=v;for(a=0;4>a;a++)E[(3&-a)+m]=c[t>>>24]<<24^c[i>>16&255]<<16^c[n>>8&255]<<8^c[255&r]^e[s++],h=t,t=i,i=n,n=r,r=h}}]),e}();e.default=i},{}],10:[function(t,l,e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>8|e>>>24}},{key:"doDecrypt",value:function(i,g,n){var u,h,o,f,l,c,d,a,e,r=new Int32Array(i.buffer,i.byteOffset,i.byteLength>>2),p=new s.default(Array.prototype.slice.call(g)),v=new Uint8Array(i.byteLength),t=new Int32Array(v.buffer);for(u=~~n[0],h=~~n[1],o=~~n[2],f=~~n[3],e=0;ee&&(255!==t[e]||240!==(240&t[e+1]));e++);for(r.audiosamplerate||(n=o.default.getAudioConfig(this.observer,t,e,p),r.config=n.config,r.audiosamplerate=n.samplerate,r.channelCount=n.channelCount,r.codec=n.codec,r.duration=y,l.logger.log("parsed codec:"+r.codec+",rate:"+n.samplerate+",nb channel:"+n.channelCount)),c=0,g=9216e4/r.audiosamplerate;u>e+5&&(s=1&t[e+1]?7:9,a=(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5,a-=s,a>0&&u>=e+s+a);)for(f=h+c*g,v={unit:t.subarray(e+s,e+s+a),pts:f,dts:f},r.samples.push(v),r.len+=a,e+=a+s,c++;u-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:h,dts:h,unit:d.payload}]},{samples:[]},m)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){var e,r,n=new i.default(t);if(n.hasTimeStamp)for(e=n.length,r=t.length;r-1>e;e++)if(255===t[e]&&240===(240&t[e+1]))return!0;return!1}}]),e}();t.default=s},{"../demux/id3":18,"../utils/logger":36,"./adts":13}],13:[function(e,o,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>>6)+1,e=(60&u[l+2])>>>2,e>d.length-1?void h.trigger(Event.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&u[l+2])<<2,o|=(192&u[l+3])>>>6,a.logger.log("manifest codec:"+n+",ADTS data:type:"+i+",sampleingIndex:"+e+"["+d[e]+"Hz],channelConfig:"+o),-1!==f.indexOf("firefox")?e>=6?(i=5,t=new Array(4),s=e-3):(i=2,t=new Array(2),s=e):-1!==f.indexOf("android")?(i=2,t=new Array(2),s=e):(i=5,t=new Array(4),n&&(-1!==n.indexOf("mp4a.40.29")||-1!==n.indexOf("mp4a.40.5"))||!n&&e>=6?s=e-3:((n&&-1!==n.indexOf("mp4a.40.2")&&e>=6&&1===o||!n&&1===o)&&(i=2,t=new Array(2)),s=e)),t[0]=i<<3,t[0]|=(14&e)>>1,t[1]|=(1&e)<<7,t[1]|=o<<3,5===i&&(t[1]|=(14&s)>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),{config:t,samplerate:d[e],channelCount:o,codec:"mp4a.40."+i})}}]),e}();t.default=s},{"../errors":20,"../utils/logger":36}],14:[function(e,y,i){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t1?r-1:0),e=1;r>e;e++)n[e-1]=arguments[e];t.emit.apply(t,[i,i].concat(n))},t.off=function(n){for(var r=arguments.length,i=Array(r>1?r-1:0),e=1;r>e;e++)i[e-1]=arguments[e];t.removeListener.apply(t,[n].concat(i))},r.addEventListener("message",function(i){var e=i.data;switch(e.cmd){case"init":r.demuxer=new u.default(t,e.typeSupported);break;case"demux":r.demuxer.push(new Uint8Array(e.data),e.audioCodec,e.videoCodec,e.timeOffset,e.cc,e.level,e.sn,e.duration)}}),t.on(e.default.FRAG_PARSING_INIT_SEGMENT,function(t,e){r.postMessage({event:t,tracks:e.tracks,unique:e.unique})}),t.on(e.default.FRAG_PARSING_DATA,function(i,e){var t={event:i,type:e.type,startPTS:e.startPTS,endPTS:e.endPTS,startDTS:e.startDTS,endDTS:e.endDTS,data1:e.data1.buffer,data2:e.data2.buffer,nb:e.nb};r.postMessage(t,[t.data1,t.data2])}),t.on(e.default.FRAG_PARSED,function(e){r.postMessage({event:e})}),t.on(e.default.ERROR,function(e,t){r.postMessage({event:e,data:t})}),t.on(e.default.FRAG_PARSING_METADATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)}),t.on(e.default.FRAG_PARSING_USERDATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o},{"../demux/demuxer-inline":14,"../events":22,events:1}],16:[function(t,g,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t0&&null!=e&&null!=e.key&&"AES-128"===e.method){null==this.decrypter&&(this.decrypter=new l.default(this.hls));var d=this;this.decrypter.decrypt(t,e.key,e.iv,function(e){d.pushDecrypted(e,r,i,n,a,s,o,u)})}else this.pushDecrypted(t,r,i,n,a,s,o,u)}},{key:"onWorkerMessage",value:function(i){var t=i.data;switch(t.event){case e.default.FRAG_PARSING_INIT_SEGMENT:var r={};r.tracks=t.tracks,r.unique=t.unique,this.hls.trigger(e.default.FRAG_PARSING_INIT_SEGMENT,r);break;case e.default.FRAG_PARSING_DATA:this.hls.trigger(e.default.FRAG_PARSING_DATA,{data1:new Uint8Array(t.data1),data2:new Uint8Array(t.data2),startPTS:t.startPTS,endPTS:t.endPTS,startDTS:t.startDTS,endDTS:t.endDTS,type:t.type,nb:t.nb});break;case e.default.FRAG_PARSING_METADATA:this.hls.trigger(e.default.FRAG_PARSING_METADATA,{samples:t.samples});break;case e.default.FRAG_PARSING_USERDATA:this.hls.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.samples});break;default:this.hls.trigger(t.event,t.data)}}}]),r}();i.default=o},{"../crypt/decrypter":11,"../demux/demuxer-inline":14,"../demux/demuxer-worker":15,"../events":22,"../utils/logger":36,webworkify:2}],17:[function(t,s,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;te?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{key:"skipScalingList",value:function(n){var t,i,r=8,e=8;for(t=0;n>t;t++)0!==e&&(i=this.readEG(),e=(r+i+256)%256),r=0===e?r:e}},{key:"readSPS",value:function(){var t,g,p,l,n,a,i,o,r,s=0,d=0,f=0,h=0,c=1;if(this.readUByte(),t=this.readUByte(),g=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var v=this.readUEG();if(3===v&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==v?8:12,r=0;o>r;r++)this.readBoolean()&&(6>r?this.skipScalingList(16):this.skipScalingList(64))}this.skipUEG();var u=this.readUEG();if(0===u)this.readUEG();else if(1===u)for(this.skipBits(1),this.skipEG(),this.skipEG(),l=this.readUEG(),r=0;l>r;r++)this.skipEG();if(this.skipUEG(),this.skipBits(1),n=this.readUEG(),a=this.readUEG(),i=this.readBits(1),0===i&&this.skipBits(1),this.skipBits(1),this.readBoolean()&&(s=this.readUEG(), -d=this.readUEG(),f=this.readUEG(),h=this.readUEG()),this.readBoolean()&&this.readBoolean()){var e=void 0,y=this.readUByte();switch(y){case 1:e=[1,1];break;case 2:e=[12,11];break;case 3:e=[10,11];break;case 4:e=[16,11];break;case 5:e=[40,33];break;case 6:e=[24,11];break;case 7:e=[20,11];break;case 8:e=[32,11];break;case 9:e=[80,33];break;case 10:e=[18,11];break;case 11:e=[15,11];break;case 12:e=[64,33];break;case 13:e=[160,99];break;case 14:e=[4,3];break;case 15:e=[3,2];break;case 16:e=[2,1];break;case 255:e=[this.readUByte()<<8|this.readUByte(),this.readUByte()<<8|this.readUByte()]}e&&(c=e[0]/e[1])}return{width:Math.ceil((16*(n+1)-2*s-2*d)*c),height:(2-i)*(a+1)*16-(i?2:4)*(f+h)}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();e.default=a},{"../utils/logger":36}],18:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;tr);return t}},{key:"_parseID3Frames",value:function(r,t,a){for(var n,s,o,l,i;a>=t+8;)switch(n=this.readUTF(r,t,4),t+=4,s=r[t++]<<24+r[t++]<<16+r[t++]<<8+r[t++],l=r[t++]<<8+r[t++],o=t,n){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(r,t,44)){t+=44,t+=4;var u=1&r[t++];this._hasTimeStamp=!0,i=((r[t++]<<23)+(r[t++]<<15)+(r[t++]<<7)+r[t++])/45,u&&(i+=47721858.84),i=Math.round(i),e.logger.trace("ID3 timestamp found: "+i),this._timeStamp=i}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),t}();t.default=a},{"../utils/logger":36}],19:[function(t,v,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;tt;t+=188)if(71===i[t]){if(d=!!(64&i[t+1]),u=((31&i[t+1])<<8)+i[t+2],y=(48&i[t+3])>>4,y>1){if(n=t+5+i[t+4],n===t+188)continue}else n=t+4;if(g)if(u===h){if(d){if(s&&(this._parseAVCPES(this._parsePES(s)),b&&this._avcTrack.codec&&(-1===f||this._aacTrack.codec)))return void this.remux(i);s={data:[],size:0}}s&&(s.data.push(i.subarray(n,t+188)),s.size+=t+188-n)}else if(u===f){if(d){if(o&&(this._parseAACPES(this._parsePES(o)),b&&this._aacTrack.codec&&(-1===h||this._avcTrack.codec)))return void this.remux(i);o={data:[],size:0}}o&&(o.data.push(i.subarray(n,t+188)),o.size+=t+188-n)}else u===v&&(d&&(l&&this._parseID3PES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(n,t+188)),l.size+=t+188-n));else d&&(n+=i[n]+1),0===u?this._parsePAT(i,n):u===this._pmtId&&(this._parsePMT(i,n),g=this.pmtParsed=!0,h=this._avcTrack.id,f=this._aacTrack.id,v=this._id3Track.id)}else this.observer.trigger(a.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});s&&this._parseAVCPES(this._parsePES(s)),o&&this._parseAACPES(this._parsePES(o)),l&&this._parseID3PES(this._parsePES(l)),this.remux(null)}},{key:"remux",value:function(e){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this._txtTrack,this.timeOffset,this.contiguous,e)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(r,t){var n,a,s,i;for(n=(15&r[t+1])<<8|r[t+2],a=t+3+n-4,s=(15&r[t+10])<<8|r[t+11],t+=12+s;a>t;){switch(i=(31&r[t+1])<<8|r[t+2],r[t]){case 15:this._aacTrack.id=i;break;case 21:this._id3Track.id=i;break;case 27:this._avcTrack.id=i;break;default:e.logger.log("unkown stream type:"+r[t])}t+=((15&r[t+3])<<8|r[t+4])+5}}},{key:"_parsePES",value:function(o){var e,a,h,d,u,l,i,r,t,f=0,s=o.data;if(e=s[0],h=(e[0]<<16)+(e[1]<<8)+e[2],1===h){for(d=(e[4]<<8)+e[5],a=e[7],192&a&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,i>4294967295&&(i-=8589934592),64&a?(r=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r>4294967295&&(r-=8589934592)):r=i),u=e[8],t=u+9,o.size-=t,l=new Uint8Array(o.size);s.length;){e=s.shift();var n=e.byteLength;if(t){if(t>n){t-=n;continue}e=e.subarray(t),n-=t,t=0}l.set(e,f),f+=n}return{data:l,pts:i,dts:r,len:d}}return null}},{key:"_parseAVCPES",value:function(i){var t,p,a,l,y=this,r=this._avcTrack,u=r.samples,m=this._parseAVCNALu(i.data),d=[],o=!1,h=!1,c=0;if(0===m.length&&u.length>0){var v=u[u.length-1],f=v.units.units[v.units.units.length-1],g=new Uint8Array(f.data.byteLength+i.data.byteLength);g.set(f.data,0),g.set(i.data,f.data.byteLength),f.data=g,v.units.length+=i.data.byteLength,r.len+=i.data.byteLength}i.data=null;var n="";m.forEach(function(e){switch(e.type){case 1:a=!0,o&&(n+="NDR ");break;case 5:a=!0,o&&(n+="IDR "),h=!0;break;case 6:a=!0,o&&(n+="SEI "),t=new s.default(e.data),t.readUByte();var E=t.readUByte();if(4===E){var g=0;do g=t.readUByte();while(255===g);var R=t.readUByte();if(181===R){var _=t.readUShort();if(49===_){var A=t.readUInt();if(1195456820===A){var k=t.readUByte();if(3===k){var v=t.readUByte(),b=t.readUByte(),T=31&v,f=[v,b];for(l=0;T>l;l++)f.push(t.readUByte()),f.push(t.readUByte()),f.push(t.readUByte());y._txtTrack.samples.push({type:3,pts:i.pts,bytes:f})}}}}}break;case 7:if(a=!0,o&&(n+="SPS "),!r.sps){t=new s.default(e.data);var p=t.readSPS();r.width=p.width,r.height=p.height,r.sps=[e.data],r.duration=y._duration;var L=e.data.subarray(1,4),m="avc1.";for(l=0;3>l;l++){var u=L[l].toString(16);u.length<2&&(u="0"+u),m+=u}r.codec=m}break;case 8:a=!0,o&&(n+="PPS "),r.pps||(r.pps=[e.data]);break;case 9:a=!1,o&&(n+="AUD ");break;default:a=!1,n+="unknown NAL "+e.type+" "}a&&(d.push(e),c+=e.data.byteLength)}),(o||n.length)&&e.logger.log(n),d.length&&(h===!0||r.sps)&&(p={units:{units:d,length:c},pts:i.pts,dts:i.dts,key:h},u.push(p),r.len+=c,r.nbNalu+=d.length)}},{key:"_parseAVCNALu",value:function(r){for(var a,i,s,p,n,l,t=0,h=r.byteLength,e=0,d=[];h>t;)switch(a=r[t++],e){case 0:0===a&&(e=1);break;case 1:e=0===a?2:0;break;case 2:case 3:if(0===a)e=3;else if(1===a&&h>t){if(p=31&r[t],n)s={data:r.subarray(n,t-e-1),type:l},d.push(s);else if(i=t-e-1){var c=this._avcTrack,f=c.samples;if(f.length){var v=f[f.length-1],g=v.units.units,o=g[g.length-1],u=new Uint8Array(o.data.byteLength+i);u.set(o.data,0),u.set(r.subarray(0,i),o.data.byteLength),o.data=u,v.units.length+=i,c.len+=i}}n=t,l=p,e=0}else e=0}return n&&(s={data:r.subarray(n,h),type:l},d.push(s)),d}},{key:"_parseAACPES",value:function(R){var l,o,p,E,t,d,f,s,_,n=this._aacTrack,i=R.data,v=R.pts,k=0,L=this._duration,A=this.audioCodec,u=this.aacOverFlow,b=this.lastAacPTS;if(u){var m=new Uint8Array(u.byteLength+i.byteLength);m.set(u,0),m.set(i,u.byteLength),i=m}for(t=k,s=i.length;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);if(t){var y,h;if(s-1>t?(y="AAC PES did not start with ADTS header,offset:"+t,h=!1):(y="no ADTS header found in AAC PES",h=!0),this.observer.trigger(a.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:h,reason:y}),h)return}if(n.audiosamplerate||(l=c.default.getAudioConfig(this.observer,i,t,A),n.config=l.config,n.audiosamplerate=l.samplerate,n.channelCount=l.channelCount,n.codec=l.codec,n.duration=L,e.logger.log("parsed codec:"+n.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),E=0,p=9216e4/n.audiosamplerate,u&&b){var g=b+p;Math.abs(g-v)>1&&(e.logger.log("AAC: align PTS for overlapping frames by "+Math.round((g-v)/90)),v=g)}for(;s>t+5&&(d=1&i[t+1]?7:9,o=(3&i[t+3])<<11|i[t+4]<<3|(224&i[t+5])>>>5,o-=d,o>0&&s>=t+d+o);)for(f=v+E*p,_={unit:i.subarray(t+d,t+d+o),pts:f,dts:f},n.samples.push(_),n.len+=o,t+=o+d,E++;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);u=s>t?i.subarray(t,s):null,this.aacOverFlow=u,this.lastAacPTS=f}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]}}]),t}();n.default=o},{"../errors":20,"../events":22,"../utils/logger":36,"./adts":13,"./exp-golomb":17}],20:[function(t,r,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.ErrorTypes={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",OTHER_ERROR:"otherError"},e.ErrorDetails={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",INTERNAL_EXCEPTION:"internalException"}},{}],21:[function(e,f,t){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},d=function(){function e(i,r){for(var t=0;t1?r-1:0),t=1;r>t;t++)i[t-1]=arguments[t];this.handledEvents=i,this.useGenericHandler=!0,this.registerListeners()}return d(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"===a(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var i=function(t,r){var e="on"+t.replace("hls","");if("function"!=typeof this[e])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+e+")");return this[e].bind(this,r)};try{i.call(this,e,t).call()}catch(t){o.logger.error("internal error happened while processing "+e+":"+t.message),this.hls.trigger(s.default.ERROR,{type:r.ErrorTypes.OTHER_ERROR,details:r.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,err:t})}}}]),e}();t.default=l},{"./errors":20,"./events":22,"./utils/logger":36}],22:[function(t,e,r){"use strict";e.exports={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",LEVEL_SWITCH:"hlsLevelSwitch",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded"}},{}],23:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;td&&(t[u-1].end=i[e].end):t.push(i[e])}else t.push(i[e])}if(t.length&&r=a&&f>r)l=a,n=f,o=n-r;else if(a>r+s){h=a;break}}return{len:o,start:l,end:n,nextStart:h}}}]),e}();e.default=i},{}],24:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;th)return void(i.PTSKnown=!1);for(var r=c;h>=r;r++){var o=f[u+r],n=l[r];d=o.cc-n.cc,isNaN(o.startPTS)||(n.start=n.startPTS=o.startPTS,n.endPTS=o.endPTS,n.duration=o.duration,s=n)}if(d)for(e.logger.log("discontinuity sliding from playlist, take drift into account"),r=0;r=0&&ui.endSN)return 0;o=l-i.startSN,a=i.fragments,r=a[o],isNaN(r.startPTS)||(n=Math.min(n,r.startPTS),s=Math.max(s,r.endPTS));var u=n-r.start;for(r.start=r.startPTS=n,r.endPTS=s,r.duration=s-n,e=o;e>0;e--)t.updatePTS(a,e,e-1);for(e=o;ei?r.start=t.start+t.duration:r.start=t.start-r.duration:n>i?(t.duration=a-t.start,t.duration<0&&e.logger.error("negative duration computed for frag "+t.sn+",level "+t.level+", there should be some duration drift between playlist and fragment!")):(r.duration=t.start-a,r.duration<0&&e.logger.error("negative duration computed for frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}}]),t}();t.default=a},{"../utils/logger":36}],25:[function(t,I,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;t1?t-1:0),e=1;t>e;e++)n[e-1]=arguments[e];i.emit.apply(i,[r,r].concat(n))},i.off=function(n){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;t>e;e++)r[e-1]=arguments[e];i.removeListener.apply(i,[n].concat(r))},this.on=i.on.bind(i),this.off=i.off.bind(i),this.trigger=i.trigger.bind(i),this.playlistLoader=new d.default(this),this.fragmentLoader=new h.default(this),this.levelController=new R.default(this),this.abrController=new r.abrController(this),this.bufferController=new r.bufferController(this),this.capLevelController=new r.capLevelController(this),this.streamController=new r.streamController(this),this.timelineController=new r.timelineController(this),this.keyLoader=new p.default(this)}return a(t,null,[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"Events",get:function(){return i.default}},{key:"ErrorTypes",get:function(){return s.ErrorTypes}},{key:"ErrorDetails",get:function(){return s.ErrorDetails}},{key:"DefaultConfig",get:function(){return t.defaultConfig||(t.defaultConfig={autoStartLoad:!0,debug:!1,capLevelToPlayerSize:!1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,seekHoleNudgeDuration:.01,stalledInBufferedNudgeThreshold:10,maxFragLookUpTolerance:.2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,appendErrorMaxRetry:3,loader:S.default,fLoader:void 0,pLoader:void 0,abrController:v.default,bufferController:P.default,capLevelController:m.default,streamController:b.default,timelineController:L.default,enableCEA708Captions:!0,enableMP2TPassThrough:!1}),t.defaultConfig},set:function(e){t.defaultConfig=e}}]),a(t,[{key:"destroy",value:function(){e.logger.log("destroy"),this.trigger(i.default.DESTROYING),this.detachMedia(),this.playlistLoader.destroy(),this.fragmentLoader.destroy(),this.levelController.destroy(),this.abrController.destroy(),this.bufferController.destroy(),this.capLevelController.destroy(),this.streamController.destroy(),this.timelineController.destroy(),this.keyLoader.destroy(),this.url=null,this.observer.removeAllListeners()}},{key:"attachMedia",value:function(t){e.logger.log("attachMedia"),this.media=t,this.trigger(i.default.MEDIA_ATTACHING,{media:t})}},{key:"detachMedia",value:function(){e.logger.log("detachMedia"),this.trigger(i.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(t){e.logger.log("loadSource:"+t),this.url=t,this.trigger(i.default.MANIFEST_LOADING,{url:t})}},{key:"startLoad",value:function(){var t=arguments.length<=0||void 0===arguments[0]?0:arguments[0];e.logger.log("startLoad"),this.levelController.startLoad(),this.streamController.startLoad(t)}},{key:"stopLoad",value:function(){e.logger.log("stopLoad"),this.levelController.stopLoad(),this.streamController.stopLoad()}},{key:"swapAudioCodec",value:function(){e.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){e.logger.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){e.logger.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){e.logger.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){e.logger.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return this.levelController.firstLevel},set:function(t){e.logger.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){e.logger.log("set startLevel:"+t),this.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this.abrController.autoLevelCapping},set:function(t){e.logger.log("set autoLevelCapping:"+t),this.abrController.autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}}]),t}();n.default=l},{"./controller/abr-controller":3,"./controller/buffer-controller":4,"./controller/cap-level-controller":5,"./controller/level-controller":6,"./controller/stream-controller":7,"./controller/timeline-controller":8,"./errors":20,"./events":22,"./loader/fragment-loader":27,"./loader/key-loader":28,"./loader/playlist-loader":29,"./utils/logger":36,"./utils/xhr-loader":38,events:1}],26:[function(e,t,r){"use strict";t.exports=e("./hls.js").default},{"./hls.js":25}],27:[function(r,c,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(L,l,A){var e,b,s,a,g=0,o=0,i={url:l,fragments:[],live:!0,startSN:0},r={method:null,key:null,iv:null,uri:null},E=0,f=null,t=null;for(b=/(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.*))|(?:#EXT(INF):([\d\.]+)[^\r\n]*([\r\n]+[^#|\r\n]+)?)|(?:#EXT-X-(BYTERANGE):([\d]+[@[\d]*)]*[\r\n]+([^#|\r\n]+)?|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.*))/g;null!==(e=b.exec(L));)switch(e.shift(),e=e.filter(function(e){return void 0!==e}),e[0]){case"MEDIA-SEQUENCE":g=i.startSN=parseInt(e[1]);break;case"TARGETDURATION":i.targetduration=parseFloat(e[1]);break;case"ENDLIST":i.live=!1;break;case"DIS":E++;break;case"BYTERANGE":var c=e[1].split("@");a=1===c.length?s:parseInt(c[1]),s=parseInt(c[0])+a,t&&!t.url&&(t.byteRangeStartOffset=a,t.byteRangeEndOffset=s,t.url=this.resolve(e[2],l));break;case"INF":var v=parseFloat(e[1]);if(!isNaN(v)){var u,m=g++;if(r.method&&r.uri&&!r.iv){u=this.cloneObj(r);for(var y=new Uint8Array(16),d=12;16>d;d++)y[d]=m>>8*(15-d)&255;u.iv=y}else u=r;var k=e[2]?this.resolve(e[2],l):null;t={url:k,duration:v,start:o,sn:m,level:A,cc:E,byteRangeStartOffset:a,byteRangeEndOffset:s,decryptdata:u,programDateTime:f},i.fragments.push(t),o+=v,a=null,f=null}break;case"KEY":var R=e[1],p=new n.default(R),h=p.enumeratedString("METHOD"),_=p.URI,T=p.hexadecimalInteger("IV");h&&(r={method:null,key:null,iv:null,uri:null},_&&"AES-128"===h&&(r.method=h,r.uri=this.resolve(_,l),r.key=null,r.iv=T));break;case"PROGRAM-DATE-TIME":f=new Date(Date.parse(e[1]))}return t&&!t.url&&(i.fragments.pop(),o-=t.duration),i.totalduration=o,i.endSN=g-1,i}},{key:"loadsuccess",value:function(u,i){var s,o=u.currentTarget,a=o.responseText,r=o.responseURL,l=this.id,d=this.id2,n=this.hls;if(this.loading=!1,void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(o.getResponseHeader("Last-Modified")),0===a.indexOf("#EXTM3U"))if(a.indexOf("#EXTINF:")>0)if(null===this.id)n.trigger(t.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var f=this.parseLevelPlaylist(a,r,l);i.tparsed=performance.now(),n.trigger(t.default.LEVEL_LOADED,{details:f,level:l,id:d,stats:i})}else s=this.parseMasterPlaylist(a,r),s.length?n.trigger(t.default.MANIFEST_LOADED,{levels:s,url:r,stats:i}):n.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else n.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(n){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,response:n.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}(a.default);s.default=u},{"../errors":20,"../event-handler":21,"../events":22,"../utils/attr-list":33,"../utils/url":37}],30:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;t>24&255,t[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t.set(n,4),r=0,e=8;a>r;r++)t.set(i[r],e),e+=i[r].byteLength;return t}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}},{key:"mdhd",value:function(t,r){return r*=t,e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))}},{key:"moov",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))}},{key:"mvex",value:function(r){for(var t=r.length,i=[];t--;)i[t]=e.trex(r[t]);return e.box.apply(null,[e.types.mvex].concat(i))}},{key:"mvhd",value:function(t,r){r*=t;var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,i)}},{key:"sdtp",value:function(a){var r,t,i=a.samples||[],n=new Uint8Array(4+i.length);for(t=0;t>>8&255),i.push(255&a),i=i.concat(Array.prototype.slice.call(n));for(r=0;r>>8&255),s.push(255&a),s=s.concat(Array.prototype.slice.call(n));var u=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(s))),o=t.width,l=t.height;return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),u,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.audiosamplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,i=t.duration*t.timescale,n=t.width,a=t.height;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,a>>8&255,255&a,0,0]))}},{key:"traf",value:function(i,t){var n=e.sdtp(i),r=i.id;return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t])),e.trun(i,n.length+16+16+8+16+8+8),n)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(r){var t=r.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(h,o){var i,n,a,s,t,l,d=h.samples||[],r=d.length,f=12+16*r,u=new Uint8Array(f);for(o+=8+f,u.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),i=0;r>i;i++)n=d[i],a=n.duration,s=n.size,t=n.flags,l=n.cts,u.set([a>>>24&255,a>>>16&255,a>>>8&255,255&a,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t.isLeading<<2|t.dependsOn,t.isDependedOn<<6|t.hasRedundancy<<4|t.paddingValue<<1|t.isNonSync,61440&t.degradPrio,15&t.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return e.box(e.types.trun,u)}},{key:"initSegment",value:function(i){e.types||e.init();var t,r=e.moov(i);return t=new Uint8Array(e.FTYP.byteLength+r.byteLength),t.set(e.FTYP),t.set(r,e.FTYP.byteLength),t}}]),e}();e.default=i},{}],31:[function(i,h,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var l=function(){function e(i,r){for(var t=0;tMath.pow(2,32)&&!function(){var e=function r(t,e){return e?r(e,t%e):t};i.timescale=i.audiosamplerate/e(i.audiosamplerate,1024)}(),e.logger.log("audio mp4 timescale :"+i.timescale),l.audio={container:"audio/mp4",codec:i.codec,initSegment:r.default.initSegment([i]),metadata:{channelCount:i.channelCount}},u&&(a=o=v[0].pts-f*h)),n.sps&&n.pps&&d.length&&(n.timescale=this.MP4_TIMESCALE,l.video={container:"video/mp4",codec:n.codec,initSegment:r.default.initSegment([n]),metadata:{width:n.width,height:n.height}},u&&(a=Math.min(a,d[0].pts-f*h),o=Math.min(o,d[0].dts-f*h))),Object.keys(l).length?(c.trigger(t.default.FRAG_PARSING_INIT_SEGMENT,g),this.ISGenerated=!0,u&&(this._initPTS=a,this._initDTS=o)):c.trigger(t.default.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})}},{key:"remuxVideo",value:function(n,w,S){var L,s,p,A,f,d,T,k,R,v,_,g,o,i,a,E=8,c=this.PES_TIMESCALE,h=this.PES2MP4SCALEFACTOR,u=[];for(d=new Uint8Array(n.len+4*n.nbNalu+8),L=new DataView(d.buffer),L.setUint32(0,d.byteLength),d.set(r.default.types.mdat,4);n.samples.length;){for(s=n.samples.shift(),A=0;s.units.units.length;)f=s.units.units.shift(),L.setUint32(E,f.data.byteLength),E+=4,d.set(f.data,E),E+=f.data.byteLength,A+=4+f.data.byteLength;if(_=s.pts-this._initDTS,g=s.dts-this._initDTS,g=Math.min(_,g),void 0!==v){o=this._PTSNormalize(_,v),i=this._PTSNormalize(g,v);var m=(i-v)/h;0>=m&&(e.logger.log("invalid sample duration at PTS/DTS: "+s.pts+"/"+s.dts+":"+m),m=1),p.duration=m}else{var y=void 0,l=void 0;y=S?this.nextAvcDts:w*c,o=this._PTSNormalize(_,y),i=this._PTSNormalize(g,y),l=Math.round((i-y)/90),S&&l&&(l>1?e.logger.log("AVC:"+l+" ms hole between fragments detected,filling it"):-1>l&&e.logger.log("AVC:"+-l+" ms overlapping between fragments detected"),i=y,o=Math.max(o-l,i),e.logger.log("Video/PTS/DTS adjusted: "+o+"/"+i+",delta:"+l)),k=Math.max(0,o),R=Math.max(0,i)}p={size:A,duration:0,cts:(o-i)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},a=p.flags,s.key===!0?(a.dependsOn=2,a.isNonSync=0):(a.dependsOn=1,a.isNonSync=1),u.push(p),v=i}var b=0;u.length>=2&&(b=u[u.length-2].duration,p.duration=b),this.nextAvcDts=i+b*h,n.len=0,n.nbNalu=0,u.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(a=u[0].flags,a.dependsOn=2,a.isNonSync=0),n.samples=u,T=r.default.moof(n.sequenceNumber++,R/h,n),n.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:T,data2:d,startPTS:k/c,endPTS:(o+h*b)/c,startDTS:R/c,endDTS:this.nextAvcDts/c,type:"video",nb:u.length})}},{key:"remuxAudio",value:function(i,O,S){var T,p,a,h,o,k,L,b,u,g,R,d,n,A=8,s=this.PES_TIMESCALE,w=i.timescale,f=s/w,E=1024*i.timescale/i.audiosamplerate,m=[],_=[];for(i.samples.sort(function(e,t){return e.pts-t.pts}),_=i.samples;_.length;){if(p=_.shift(),h=p.unit,g=p.pts-this._initDTS,R=p.dts-this._initDTS,void 0!==u)d=this._PTSNormalize(g,u),n=this._PTSNormalize(R,u),a.duration=(n-u)/f,Math.abs(a.duration-E)>E/10&&e.logger.log("invalid AAC sample duration at PTS "+Math.round(g/90)+",should be 1024,found :"+Math.round(a.duration*i.audiosamplerate/i.timescale)),a.duration=E,n=E*f+u;else{var c=void 0,l=void 0;if(c=S?this.nextAacPts:O*s,d=this._PTSNormalize(g,c),n=this._PTSNormalize(R,c),l=Math.round(1e3*(d-c)/s),S&&l){if(l>0)e.logger.log(l+" ms hole between AAC samples detected,filling it");else if(-12>l){e.logger.log(-l+" ms overlapping between AAC samples detected, drop frame"),i.len-=h.byteLength;continue}d=n=c}if(L=Math.max(0,d),b=Math.max(0,n),!(i.len>0))return;o=new Uint8Array(i.len+8),T=new DataView(o.buffer),T.setUint32(0,o.byteLength),o.set(r.default.types.mdat,4)}o.set(h,A),A+=h.byteLength,a={size:h.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},m.push(a),u=n}var y=0,v=m.length;v>=2&&(y=m[v-2].duration,a.duration=y),v&&(this.nextAacPts=d+f*y,i.len=0,i.samples=m,k=r.default.moof(i.sequenceNumber++,b/f,i),i.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:k,data2:o,startPTS:L/s,endPTS:this.nextAacPts/s,startDTS:b/s,endDTS:(n+f*y)/s,type:"audio",nb:v}))}},{key:"remuxID3",value:function(r,n){var e,a=r.samples.length;if(a){for(var i=0;a>i;i++)e=r.samples[i],e.pts=(e.pts-this._initPTS)/this.PES_TIMESCALE,e.dts=(e.dts-this._initDTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_METADATA,{samples:r.samples})}r.samples=[],n=n}},{key:"remuxText",value:function(e,n){e.samples.sort(function(e,t){return e.pts-t.pts});var r,a=e.samples.length;if(a){for(var i=0;a>i;i++)r=e.samples[i],r.pts=(r.pts-this._initPTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_USERDATA,{samples:e.samples})}e.samples=[],n=n}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=e>t?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}},{key:"passthrough",get:function(){return!1}}]),i}();n.default=d},{"../errors":20,"../events":22,"../remux/mp4-generator":30,"../utils/logger":36}],32:[function(r,l,e){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"hexadecimalInteger",value:function(r){if(this[r]){var e=(this[r]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var i=new Uint8Array(e.length/2),t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(t){var e=/^(\d+)x(\d+)$/.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}}],[{key:"parseAttrList",value:function(n){for(var t,a=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,r={};null!==(t=a.exec(n));){var e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}]),e}();e.default=i},{}],34:[function(r,e,i){"use strict";var t={search:function(n,s){for(var t=0,r=n.length-1,e=null,i=null;r>=t;){e=(t+r)/2|0,i=n[e];var a=s(i);if(a>0)t=e+1;else{if(!(0>a))return i;r=e-1}}return null}};e.exports=t},{}],35:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;t0;)e.removeCue(e.cues[0])}},{key:"push",value:function(r,i){this.cue||this._createCue();for(var n,t,e,s,o,u=31&i[0],a=2,l=0;u>l;l++)if(n=i[a++],t=127&i[a++],e=127&i[a++],s=0!==(4&n),o=3&n,(0!==t||0!==e)&&s&&0===o){if(32&t||64&t)this.cue.text+=this._fromCharCode(t)+this._fromCharCode(e);else if((17===t||25===t)&&e>=48&&63>=e)switch(e){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===t||25===t)&&e>=32&&47>=e)switch(e){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===t||28===t)&&e>=32&&47>=e)switch(e){case 32:this._clearActiveCues(r);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(r);break;case 42:break;case 43:break;case 44:this._clearActiveCues(r);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(r)}if((23===t||31===t)&&e>=33&&35>=e)switch(e){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(s){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);var e=!0,i=!1,n=void 0;try{for(var a,t=this.memory[Symbol.iterator]();!(e=(a=t.next()).done);e=!0){var r=a.value;r.startTime=s,this._textTrack.addCue(r),this.display.push(r)}}catch(e){i=!0,n=e}finally{try{!e&&t.return&&t.return()}finally{if(i)throw n}}this.memory=[],this.cue=null}},{key:"_clearActiveCues",value:function(a){var e=!0,r=!1,i=void 0;try{for(var n,t=this.display[Symbol.iterator]();!(e=(n=t.next()).done);e=!0){var s=n.value;s.endTime=a}}catch(e){r=!0,i=e}finally{try{!e&&t.return&&t.return()}finally{if(r)throw i}}this.display=[]}},{key:"_clearBufferedCues",value:function(){}}]),e}();e.default=i},{}],36:[function(l,u,r){"use strict";function e(){}function n(t,e){return e="["+t+"] > "+e}function a(t){var r=window.console[t];return r?function(){for(var a=arguments.length,e=Array(a),i=0;a>i;i++)e[i]=arguments[i];e[0]&&(e[0]=n(t,e[0])),r.apply(window.console,e)}:e}function s(r){for(var i=arguments.length,n=Array(i>1?i-1:0),e=1;i>e;e++)n[e-1]=arguments[e];n.forEach(function(e){t[e]=r[e]?r[e].bind(r):a(e)})}Object.defineProperty(r,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},i={trace:e,debug:e,log:e,warn:e,info:e,error:e},t=i;r.enableLogs=function(e){if(e===!0||"object"===("undefined"==typeof e?"undefined":o(e))){s(e,"debug","log","info","warn","error");try{t.log()}catch(e){t=i}}else t=i},r.logger=t},{}],37:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(r,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var o=null,n=null,a=/^([^#]*)(.*)$/.exec(t);a&&(n=a[2],t=a[1]);var s=/^([^\?]*)(.*)$/.exec(t);s&&(o=s[2],t=s[1]);var f=/^([^#]*)(.*)$/.exec(r);f&&(r=f[1]);var u=/^([^\?]*)(.*)$/.exec(r);u&&(r=u[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.\-_~]+(:[0-9]+)?\/)(.*)$/i.exec(r),h=l[3],d=l[1],c=l[5],i=null;return i=/^\/\//.test(t)?h+"://"+e.buildAbsolutePath("",t.substring(2)):/^\//.test(t)?d+e.buildAbsolutePath("",t.substring(1)):e.buildAbsolutePath(d+c,t),o&&(i+=o),n&&(i+=n),i},buildAbsolutePath:function(a,s){for(var i,e,o=s,n="",t=a.replace(/[^\/]*$/,o.replace(/(\/|^)(?:\.?\/+)+/g,"$1")),r=0;e=t.indexOf("/../",r),e>-1;r=e+i)i=/^\/(?:\.\.\/)*/.exec(t.slice(e))[0].length,n=(n+t.substring(r,e)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(i-1)/3+"}$"),"/");return n+t.substr(r)}};t.exports=e},{}],38:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t=200&&300>r?(window.clearTimeout(this.timeoutHandle),t.tload=performance.now(),this.onSuccess(i,t)):t.retrye||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},e.prototype.emit=function(l){var s,e,u,n,a,o;if(this._events||(this._events={}),"error"===l&&(!this._events.error||r(this._events.error)&&!this._events.error.length)){if(s=arguments[1],s instanceof Error)throw s;throw TypeError('Uncaught, unspecified "error" event.')}if(e=this._events[l],i(e))return!1;if(t(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:n=Array.prototype.slice.call(arguments,1),e.apply(this,n)}else if(r(e))for(n=Array.prototype.slice.call(arguments,1),o=e.slice(),u=o.length,a=0;u>a;a++)o[a].apply(this,n);return!0},e.prototype.addListener=function(n,a){var s;if(!t(a))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",n,t(a.listener)?a.listener:a),this._events[n]?r(this._events[n])?this._events[n].push(a):this._events[n]=[this._events[n],a]:this._events[n]=a,r(this._events[n])&&!this._events[n].warned&&(s=i(this._maxListeners)?e.defaultMaxListeners:this._maxListeners,s&&s>0&&this._events[n].length>s&&(this._events[n].warned=!0,"function"==typeof console.trace)),this},e.prototype.on=e.prototype.addListener,e.prototype.once=function(i,e){function r(){this.removeListener(i,r),n||(n=!0,e.apply(this,arguments))}if(!t(e))throw TypeError("listener must be a function");var n=!1;return r.listener=e,this.on(i,r),this},e.prototype.removeListener=function(n,i){var e,s,o,a;if(!t(i))throw TypeError("listener must be a function");if(!this._events||!this._events[n])return this;if(e=this._events[n],o=e.length,s=-1,e===i||t(e.listener)&&e.listener===i)delete this._events[n],this._events.removeListener&&this.emit("removeListener",n,i);else if(r(e)){for(a=o;a-- >0;)if(e[a]===i||e[a].listener&&e[a].listener===i){s=a;break}if(0>s)return this;1===e.length?(e.length=0,delete this._events[n]):e.splice(s,1),this._events.removeListener&&this.emit("removeListener",n,i)}return this},e.prototype.removeAllListeners=function(r){var i,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[r]&&delete this._events[r],this;if(0===arguments.length){for(i in this._events)"removeListener"!==i&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events={},this}if(e=this._events[r],t(e))this.removeListener(r,e);else if(e)for(;e.length;)this.removeListener(r,e[e.length-1]);return delete this._events[r],this},e.prototype.listeners=function(e){var r;return r=this._events&&this._events[e]?t(this._events[e])?[this._events[e]]:this._events[e].slice():[]},e.prototype.listenerCount=function(r){if(this._events){var e=this._events[r];if(t(e))return 1;if(e)return e.length}return 0},e.listenerCount=function(e,t){return e.listenerCount(t)}},{}],2:[function(a,i,s){var n=arguments[3],e=arguments[4],r=arguments[5],t=JSON.stringify;i.exports=function(l){for(var i,s=Object.keys(r),a=0,d=s.length;d>a;a++){var o=s[a],u=r[o].exports;if(u===l||u.default===l){i=o;break}}if(!i){i=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var f={},a=0,d=s.length;d>a;a++){var o=s[a];f[o]=o}e[i]=[Function(["require","module","exports"],"("+l+")(self)"),f]}var h=Math.floor(Math.pow(16,8)*Math.random()).toString(16),c={};c[i]=i,e[h]=[Function(["require"],"var f = require("+t(i)+");(f.default ? f.default : f)(self);"),c];var v="("+n+")({"+Object.keys(e).map(function(r){return t(r)+":["+e[r][0]+","+t(e[r][1])+"]"}).join(",")+"},{},["+t(h)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL;return new Worker(g.createObjectURL(new Blob([v],{type:"text/javascript"})))}},{}],3:[function(e,p,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;t500*e.duration){var d=Math.max(1,1e3*e.loaded/u);e.expectedLens){var o=void 0,r=void 0;for(r=e.level-1;r>=0&&(o=e.duration*n.levels[r].bitrate/(6.4*d),i.logger.log("fragLoadedDelay/bufferStarvationDelay/fragLevelNextLoadedDelay["+r+"] :"+l.toFixed(1)+"/"+s.toFixed(1)+"/"+o.toFixed(1)),!(s>o));r--);l>o&&(r=Math.max(0,r),n.nextLoadLevel=r,i.logger.warn("loading too slow, abort fragment loading and switch to level "+r),e.loader.abort(),this.clearTimer(),n.trigger(t.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:e}))}}}}},{key:"onFragLoaded",value:function(e){this.clearTimer(),this.lastLoadedFragLevel=e.frag.level,this._nextAutoLevel=-1}},{key:"onError",value:function(e){switch(e.details){case s.ErrorDetails.FRAG_LOAD_ERROR:case s.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}}},{key:"clearTimer",value:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){this._autoLevelCapping=e}},{key:"nextAutoLevel",get:function(){var i,e,r,n=this.lastbw,t=this.hls;if(r=-1===this._autoLevelCapping&&t.levels&&t.levels.length?t.levels.length-1:this._autoLevelCapping,-1!==this._nextAutoLevel)return Math.min(this._nextAutoLevel,r);for(e=0;r>=e;e++)if(i=e<=this.lastLoadedFragLevel?.8*n:.7*n,ia.config.appendErrorMaxRetry)return t.logger.log("fail "+a.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),n=[],i.fatal=!0,void a.trigger(e.default.ERROR,i);i.fatal=!1,a.trigger(e.default.ERROR,i)}else n=[],i.details=r.ErrorDetails.BUFFER_FULL_ERROR,a.trigger(e.default.ERROR,i)}}}}},{key:"flushBuffer",value:function(l,s){var e,r,o,a,i,n;if(this.flushBufferCounter.5)return this.flushBufferCounter++,t.logger.log("flush "+u+" ["+i+","+n+"], of ["+o+","+a+"], pos:"+this.media.currentTime),e.remove(i,n),!1}else t.logger.warn("abort flushing too many retries");return t.logger.log("buffer flushed"),!0}}]),i}(s.default);n.default=o},{"../errors":20,"../event-handler":21,"../events":22,"../utils/logger":36}],5:[function(e,h,t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(t,"__esModule",{value:!0});var o=function(){function e(i,r){for(var t=0;tthis.autoLevelCapping&&this.hls.streamController.nextLevelSwitch(),this.autoLevelCapping=this.hls.autoLevelCapping)}}},{key:"getMaxLevel",value:function(a){var r=void 0,e=void 0,t=void 0,s=this.mediaWidth,o=this.mediaHeight,i=0,n=0;for(e=0;a>=e&&(t=this.levels[e],r=e,i=t.width,n=t.height,!(i>=s||n>=o));e++);return r}},{key:"contentScaleFactor",get:function(){var e=1;try{e=window.devicePixelRatio}catch(e){}return e}},{key:"mediaWidth",get:function(){var e=void 0;return this.media&&(e=this.media.width||this.media.clientWidth||this.media.offsetWidth,e*=this.contentScaleFactor),e}},{key:"mediaHeight",get:function(){var e=void 0;return this.media&&(e=this.media.height||this.media.clientHeight||this.media.offsetHeight,e*=this.contentScaleFactor),e}}]),e}(s.default);t.default=u},{"../event-handler":21,"../events":22}],6:[function(i,v,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(n,"__esModule",{value:!0});var c=function(){function e(i,r){for(var t=0;t=0&&ie&&(this._level===e&&void 0!==t[e].details||this.setLevelInternal(e))}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(e){this._manualLevel=e,void 0===this._startLevel&&(this._startLevel=e),-1!==e&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){return void 0===this._startLevel?this._firstLevel:this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return-1!==this._manualLevel?this._manualLevel:this.hls.abrController.nextAutoLevel},set:function(e){this.level=e,-1===this._manualLevel&&(this.hls.abrController.nextAutoLevel=e)}}]),i}(f.default);n.default=o},{"../errors":20,"../event-handler":21,"../events":22,"../utils/logger":36}],7:[function(n,A,o){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(o,"__esModule",{value:!0});var m=function(){function e(i,r){for(var t=0;t1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var m,l,a,_=this,f=this.hls,o=f.config;switch(this.state){case e.ERROR:case e.PAUSED:break;case e.STARTING:this.startLevel=f.startLevel,-1===this.startLevel&&(this.startLevel=0,this.fragBitrateTest=!0),this.level=f.nextLoadLevel=this.startLevel,this.state=e.WAITING_LEVEL,this.loadedmetadata=!1;break;case e.IDLE:if(!this.media&&(this.startFragRequested||!o.startFragPrefetch))break;m=this.loadedmetadata?this.media.currentTime:this.nextLoadPosition,l=this.startFragRequested===!1?this.startLevel:f.nextLoadLevel;var c,b=s.default.bufferInfo(this.media,m,o.maxBufferHole),k=b.len,u=b.end,v=this.fragPrevious;if(this.levels[l].hasOwnProperty("bitrate")?(c=Math.max(8*o.maxBufferSize/this.levels[l].bitrate,o.maxBufferLength),c=Math.min(c,o.maxMaxBufferLength)):c=o.maxBufferLength,c>k){if(f.nextLoadLevel=l,this.level=l,a=this.levels[l].details,"undefined"==typeof a||a.live&&this.levelLastLoaded!==l){this.state=e.WAITING_LEVEL;break}var d=a.fragments,h=d.length,g=d[0].start,y=d[h-1].start+d[h-1].duration,n=void 0;if(a.live){var T=void 0!==o.liveMaxLatencyDuration?o.liveMaxLatencyDuration:o.liveMaxLatencyDurationCount*a.targetduration;if(uy)break;if(this.startFragRequested&&!a.PTSKnown){if(v){var E=v.sn+1;E>=a.startSN&&E<=a.endSN&&(n=d[E-a.startSN],t.logger.log("live playlist, switching playlist, load frag with next SN: "+n.sn))}n||(n=d[Math.min(h-1,Math.round(h/2))],t.logger.log("live playlist, switching playlist, unknown, load middle frag : "+n.sn))}}else g>u&&(n=d[0]);if(n||!function(){var i=void 0,s=o.maxFragLookUpTolerance;y>u?(u>y-s&&(s=0),i=p.default.search(d,function(e){return e.start+e.duration-s<=u?1:e.start-s>u?-1:0})):i=d[h-1],i&&(n=i,g=i.start,v&&n.level===v.level&&n.sn===v.sn&&(n.sn1&&(n.expectedLen=Math.round(n.duration*this.levels[l].bitrate/8),n.trequest=performance.now()),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,n.loadCounter){n.loadCounter++;var R=o.fragLoadingLoopThreshold;if(n.loadCounter>R&&Math.abs(this.fragLoadIdx-n.loadIdx)=A||O)&&(t.logger.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=e.IDLE);break;case e.STOPPED:case e.FRAG_LOADING:case e.PARSING:case e.PARSED:case e.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{key:"getBufferRange",value:function(i){var e,t,r=this.bufferRange;if(r)for(e=r.length-1;e>=0;e--)if(t=r[e],i>=t.start&&i<=t.end)return t;return null}},{key:"followingBufferRange",value:function(e){return e?this.getBufferRange(e.end+.5):null}},{key:"isBuffered",value:function(r){var i=this.media;if(i)for(var t=i.buffered,e=0;e=t.start(e)&&r<=t.end(e))return!0;return!1}},{key:"_checkFragmentChanged",value:function(){var t,e,i=this.media;if(i&&i.seeking===!1&&(e=i.currentTime,e>i.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=e),this.isBuffered(e)?t=this.getBufferRange(e):this.isBuffered(e+.1)&&(t=this.getBufferRange(e+.1)),t)){var n=t.frag; +n!==this.fragPlaying&&(this.fragPlaying=n,this.hls.trigger(r.default.FRAG_CHANGED,{frag:n}))}}},{key:"immediateLevelSwitch",value:function(){t.logger.log("immediateLevelSwitch"),this.immediateSwitch||(this.immediateSwitch=!0,this.previouslyPaused=this.media.paused,this.media.pause());var i=this.fragCurrent;i&&i.loader&&i.loader.abort(),this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY})}},{key:"immediateLevelSwitchEnd",value:function(){this.immediateSwitch=!1;var e=this.media;e&&e.readyState&&(e.currentTime-=1e-4,this.previouslyPaused||e.play())}},{key:"nextLevelSwitch",value:function(){var t=this.media;if(t&&t.readyState){var a=void 0,n=void 0,i=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,n=this.getBufferRange(t.currentTime),n&&n.start>1&&(this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:0,endOffset:n.start-1})),t.paused)a=0;else{var l=this.hls.nextLoadLevel,u=this.levels[l],o=this.fragLastKbps;a=o&&this.fragCurrent?this.fragCurrent.duration*u.bitrate/(1e3*o)+1:0}if(i=this.getBufferRange(t.currentTime+a),i&&(i=this.followingBufferRange(i))){var s=this.fragCurrent;s&&s.loader&&s.loader.abort(),this.fragCurrent=null,this.state=e.PAUSED,this.hls.trigger(r.default.BUFFER_FLUSHING,{startOffset:i.start,endOffset:Number.POSITIVE_INFINITY})}}}},{key:"onMediaAttached",value:function(t){var e=this.media=t.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),e.addEventListener("seeking",this.onvseeking),e.addEventListener("seeked",this.onvseeked),e.addEventListener("ended",this.onvended),this.levels&&this.config.autoStartLoad&&this.hls.startLoad()}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(t.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var r=this.levels;r&&r.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("seeked",this.onvseeked),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){if(this.state===e.FRAG_LOADING){if(0===s.default.bufferInfo(this.media,this.media.currentTime,this.config.maxBufferHole).len){t.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load");var r=this.fragCurrent;r&&(r.loader&&r.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.state=e.IDLE}}else this.state===e.ENDED&&(this.state=e.IDLE);this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()}},{key:"onMediaSeeked",value:function(){this.tick()}},{key:"onMediaEnded",value:function(){t.logger.log("media ended"),this.startPosition=this.lastCurrentTime=0}},{key:"onManifestLoading",value:function(){t.logger.log("trigger BUFFER_RESET"),this.hls.trigger(r.default.BUFFER_RESET),this.bufferRange=[],this.stalled=!1}},{key:"onManifestParsed",value:function(r){var e,i=!1,n=!1;r.levels.forEach(function(t){e=t.audioCodec,e&&(-1!==e.indexOf("mp4a.40.2")&&(i=!0),-1!==e.indexOf("mp4a.40.5")&&(n=!0))}),this.audioCodecSwitch=i&&n,this.audioCodecSwitch&&t.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=r.levels,this.startLevelLoaded=!1,this.startFragRequested=!1,this.config.autoStartLoad&&this.hls.startLoad()}},{key:"onLevelLoaded",value:function(s){var i=s.details,n=s.level,o=this.levels[n],l=i.totalduration,a=0;if(t.logger.log("level "+n+" loaded ["+i.startSN+","+i.endSN+"],duration:"+l),this.levelLastLoaded=n,i.live){var d=o.details;d?(u.default.mergeDetails(d,i),a=i.fragments[0].start,i.PTSKnown?t.logger.log("live playlist sliding:"+a.toFixed(3)):t.logger.log("live playlist - outdated PTS, unknown sliding")):(i.PTSKnown=!1,t.logger.log("live playlist - first load, unknown sliding"))}else i.PTSKnown=!1;if(o.details=i,this.hls.trigger(r.default.LEVEL_UPDATED,{details:i,level:n}),this.startFragRequested===!1){if(i.live){var f=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*i.targetduration;this.startPosition=Math.max(0,a+l-f)}this.nextLoadPosition=this.startPosition}this.state===e.WAITING_LEVEL&&(this.state=e.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===e.KEY_LOADING&&(this.state=e.IDLE,this.tick())}},{key:"onFragLoaded",value:function(n){var i=this.fragCurrent;if(this.state===e.FRAG_LOADING&&i&&n.frag.level===i.level&&n.frag.sn===i.sn)if(this.fragBitrateTest===!0)this.state=e.IDLE,this.fragBitrateTest=!1,n.stats.tparsed=n.stats.tbuffered=performance.now(),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:n.stats,frag:i});else{this.state=e.PARSING,this.stats=n.stats;var s=this.levels[this.level],o=s.details,f=o.totalduration,h=i.start,l=i.level,u=i.sn,a=s.audioCodec||this.config.defaultAudioCodec;this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),void 0===a&&(a=this.lastAudioCodec),a&&(a=-1!==a.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5")),this.pendingAppending=0,t.logger.log("Demuxing "+u+" of ["+o.startSN+" ,"+o.endSN+"],level "+l);var d=this.demuxer;d&&d.push(n.payload,a,s.videoCodec,h,i.cc,l,u,f,i.decryptdata)}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(l){if(this.state===e.PARSING){var o,i,n=l.tracks;if(i=n.audio){var a=this.levels[this.level].audioCodec,u=navigator.userAgent.toLowerCase();a&&this.audioCodecSwap&&(t.logger.log("swapping playlist audio codec"),a=-1!==a.indexOf("mp4a.40.5")?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==i.metadata.channelCount&&-1===u.indexOf("firefox")&&(a="mp4a.40.5"),-1!==u.indexOf("android")&&(a="mp4a.40.2",t.logger.log("Android: force audio codec to"+a)),i.levelCodec=a}if(i=n.video,i&&(i.levelCodec=this.levels[this.level].videoCodec),l.unique){var s={codec:"",levelCodec:""};for(o in l.tracks)i=n[o],s.container=i.container,s.codec&&(s.codec+=",",s.levelCodec+=","),i.codec&&(s.codec+=i.codec),i.levelCodec&&(s.levelCodec+=i.levelCodec);n={audiovideo:s}}this.hls.trigger(r.default.BUFFER_CODECS,n);for(o in n){i=n[o],t.logger.log("track:"+o+",container:"+i.container+",codecs[level/parsed]=["+i.levelCodec+"/"+i.codec+"]");var d=i.initSegment;d&&(this.pendingAppending++,this.hls.trigger(r.default.BUFFER_APPENDING,{type:o,data:d}))}this.tick()}}},{key:"onFragParsingData",value:function(i){var o=this;if(this.state===e.PARSING){this.tparse2=Date.now();var n=this.levels[this.level],a=this.fragCurrent;t.logger.log("parsed "+i.type+",PTS:["+i.startPTS.toFixed(3)+","+i.endPTS.toFixed(3)+"],DTS:["+i.startDTS.toFixed(3)+"/"+i.endDTS.toFixed(3)+"],nb:"+i.nb);var l=u.default.updateFragPTS(n.details,a.sn,i.startPTS,i.endPTS),s=this.hls;s.trigger(r.default.LEVEL_PTS_UPDATED,{details:n.details,level:this.level,drift:l}),[i.data1,i.data2].forEach(function(e){e&&(o.pendingAppending++,s.trigger(r.default.BUFFER_APPENDING,{type:i.type,data:e}))}),this.nextLoadPosition=i.endPTS,this.bufferRange.push({type:i.type,start:i.startPTS,end:i.endPTS,frag:a}),this.tick()}else t.logger.warn("not in PARSING state but "+this.state+", ignoring FRAG_PARSING_DATA event")}},{key:"onFragParsed",value:function(){this.state===e.PARSING&&(this.stats.tparsed=performance.now(),this.state=e.PARSED,this._checkAppendedParsed())}},{key:"onBufferAppended",value:function(){switch(this.state){case e.PARSING:case e.PARSED:this.pendingAppending--,this._checkAppendedParsed()}}},{key:"_checkAppendedParsed",value:function(){if(this.state===e.PARSED&&0===this.pendingAppending){var n=this.fragCurrent,i=this.stats;n&&(this.fragPrevious=n,i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.length/(i.tbuffered-i.tfirst)),this.hls.trigger(r.default.FRAG_BUFFERED,{stats:i,frag:n}),t.logger.log("media buffered : "+this.timeRangesToString(this.media.buffered)),this.state=e.IDLE),this.tick()}}},{key:"onError",value:function(n){switch(n.details){case i.ErrorDetails.FRAG_LOAD_ERROR:case i.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!n.fatal){var a=this.fragLoadError;if(a?a++:a=1,a<=this.config.fragLoadingMaxRetry){this.fragLoadError=a,n.frag.loadCounter=0;var s=Math.min(Math.pow(2,a-1)*this.config.fragLoadingRetryDelay,64e3);t.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.state=e.FRAG_LOADING_WAITING_RETRY}else t.logger.error("mediaController: "+n.details+" reaches max retry, redispatch as fatal ..."),n.fatal=!0,this.hls.trigger(r.default.ERROR,n),this.state=e.ERROR}break;case i.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case i.ErrorDetails.LEVEL_LOAD_ERROR:case i.ErrorDetails.LEVEL_LOAD_TIMEOUT:case i.ErrorDetails.KEY_LOAD_ERROR:case i.ErrorDetails.KEY_LOAD_TIMEOUT:this.state!==e.ERROR&&(this.state=n.fatal?e.ERROR:e.IDLE,t.logger.warn("mediaController: "+n.details+" while loading frag,switch to "+this.state+" state ..."));break;case i.ErrorDetails.BUFFER_FULL_ERROR:this.config.maxMaxBufferLength/=2,t.logger.warn("reduce max buffer length to "+this.config.maxMaxBufferLength+"s and trigger a nextLevelSwitch to flush old buffer and fix QuotaExceededError"),this.nextLevelSwitch()}}},{key:"_checkBuffer",value:function(){var e=this.media;if(e){var f=e.readyState;if(f){var n,a,l=this.seekAfterBuffered;if(l)e.duration>=l&&(n=l,this.seekAfterBuffered=void 0);else{a=e.currentTime;var g=this.loadedmetadata;!g&&e.buffered.length&&(this.loadedmetadata=!0,a||a===this.startPosition||(n=this.startPosition))}n&&(a=n,t.logger.log("target seek position:"+n));var u=s.default.bufferInfo(e,a,0),v=!(e.paused||e.ended||e.seeking||2>f),d=.4,h=a>e.playbackRate*this.lastCurrentTime;if(this.stalled&&h&&(this.stalled=!1,t.logger.log("playback not stuck anymore @"+a)),v&&u.len<=d){if(h?(d=0,this.seekHoleNudgeDuration=0):this.stalled?this.seekHoleNudgeDuration+=this.config.seekHoleNudgeDuration:(this.seekHoleNudgeDuration=0,t.logger.log("playback seems stuck @"+a),this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1}),this.stalled=!0),u.len<=d){var o=u.nextStart,c=o-a;if(o&&c0&&!e.seeking){t.logger.log("adjust currentTime from "+e.currentTime+" to next buffered @ "+o+" + nudge "+this.seekHoleNudgeDuration);var p=o+this.seekHoleNudgeDuration-e.currentTime;e.currentTime=o+this.seekHoleNudgeDuration,this.hls.trigger(r.default.ERROR,{type:i.ErrorTypes.MEDIA_ERROR,details:i.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:p})}}}else n&&e.currentTime!==n&&(t.logger.log("adjust currentTime from "+e.currentTime+" to "+n),e.currentTime=n)}}}},{key:"onFragLoadEmergencyAborted",value:function(){this.state=e.IDLE,this.tick()}},{key:"onBufferFlushed",value:function(){var t,r,i=[];for(r=0;re;e++)r+="["+t.start(e)+","+t.end(e)+"]";return r}},{key:"currentLevel",get:function(){if(this.media){var e=this.getBufferRange(this.media.currentTime);if(e)return e.frag.level}return-1}},{key:"nextBufferRange",get:function(){return this.media?this.followingBufferRange(this.getBufferRange(this.media.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferRange;return e?e.frag.level:-1}}]),n}(l.default);o.default=f},{"../demux/demuxer":16,"../errors":20,"../event-handler":21,"../events":22,"../helper/buffer-helper":23,"../helper/level-helper":24,"../utils/binary-search":34,"../utils/logger":36}],8:[function(t,v,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var c=function(){function e(i,r){for(var t=0;te;e++)c[(n[e]=e<<1^283*(e>>7))^e]=e;for(i=r=0;!h[i];i^=u||1,r=c[r]||1)for(t=r^r<<1^r<<2^r<<3^r<<4,t=t>>8^255&t^99,h[i]=t,v[t]=i,d=n[f=n[u=n[i]]],l=16843009*d^65537*f^257*u^16843008*i,s=257*n[t]^16843008*t,e=0;4>e;e++)a[e][i]=s=s<<24^s>>>8,o[e][t]=l=l<<24^l>>>8;for(e=0;5>e;e++)a[e]=a[e].slice(0),o[e]=o[e].slice(0)}},{key:"decrypt",value:function(R,p,_,b,E,m){var h,g,v,a,e=this._key[1],t=R^e[0],i=b^e[1],n=_^e[2],r=p^e[3],y=e.length/4-2,s=4,o=this._tables[1],f=o[0],d=o[1],u=o[2],l=o[3],c=o[4];for(a=0;y>a;a++)h=f[t>>>24]^d[i>>16&255]^u[n>>8&255]^l[255&r]^e[s],g=f[i>>>24]^d[n>>16&255]^u[r>>8&255]^l[255&t]^e[s+1],v=f[n>>>24]^d[r>>16&255]^u[t>>8&255]^l[255&i]^e[s+2],r=f[r>>>24]^d[t>>16&255]^u[i>>8&255]^l[255&n]^e[s+3],s+=4,t=h,i=g,n=v;for(a=0;4>a;a++)E[(3&-a)+m]=c[t>>>24]<<24^c[i>>16&255]<<16^c[n>>8&255]<<8^c[255&r]^e[s++],h=t,t=i,i=n,n=r,r=h}}]),e}();e.default=i},{}],10:[function(t,l,e){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>8|e>>>24}},{key:"doDecrypt",value:function(i,g,n){var u,h,o,f,l,c,d,a,e,r=new Int32Array(i.buffer,i.byteOffset,i.byteLength>>2),p=new s.default(Array.prototype.slice.call(g)),v=new Uint8Array(i.byteLength),t=new Int32Array(v.buffer);for(u=~~n[0],h=~~n[1],o=~~n[2],f=~~n[3],e=0;ee&&(255!==t[e]||240!==(240&t[e+1]));e++);for(r.audiosamplerate||(n=o.default.getAudioConfig(this.observer,t,e,p),r.config=n.config,r.audiosamplerate=n.samplerate,r.channelCount=n.channelCount,r.codec=n.codec,r.duration=y,l.logger.log("parsed codec:"+r.codec+",rate:"+n.samplerate+",nb channel:"+n.channelCount)),c=0,g=9216e4/r.audiosamplerate;u>e+5&&(s=1&t[e+1]?7:9,a=(3&t[e+3])<<11|t[e+4]<<3|(224&t[e+5])>>>5,a-=s,a>0&&u>=e+s+a);)for(f=h+c*g,v={unit:t.subarray(e+s,e+s+a),pts:f,dts:f},r.samples.push(v),r.len+=a,e+=a+s,c++;u-1>e&&(255!==t[e]||240!==(240&t[e+1]));e++);this.remuxer.remux(this._aacTrack,{samples:[]},{samples:[{pts:h,dts:h,unit:d.payload}]},{samples:[]},m)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){var e,r,n=new i.default(t);if(n.hasTimeStamp)for(e=n.length,r=t.length;r-1>e;e++)if(255===t[e]&&240===(240&t[e+1]))return!0;return!1}}]),e}();t.default=s},{"../demux/id3":18,"../utils/logger":36,"./adts":13}],13:[function(e,o,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t>>6)+1,e=(60&u[l+2])>>>2,e>d.length-1?void h.trigger(Event.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+e}):(o=(1&u[l+2])<<2,o|=(192&u[l+3])>>>6,a.logger.log("manifest codec:"+n+",ADTS data:type:"+i+",sampleingIndex:"+e+"["+d[e]+"Hz],channelConfig:"+o),-1!==f.indexOf("firefox")?e>=6?(i=5,t=new Array(4),s=e-3):(i=2,t=new Array(2),s=e):-1!==f.indexOf("android")?(i=2,t=new Array(2),s=e):(i=5,t=new Array(4),n&&(-1!==n.indexOf("mp4a.40.29")||-1!==n.indexOf("mp4a.40.5"))||!n&&e>=6?s=e-3:((n&&-1!==n.indexOf("mp4a.40.2")&&e>=6&&1===o||!n&&1===o)&&(i=2,t=new Array(2)),s=e)),t[0]=i<<3,t[0]|=(14&e)>>1,t[1]|=(1&e)<<7,t[1]|=o<<3,5===i&&(t[1]|=(14&s)>>1,t[2]=(1&s)<<7,t[2]|=8,t[3]=0),{config:t,samplerate:d[e],channelCount:o,codec:"mp4a.40."+i})}}]),e}();t.default=s},{"../errors":20,"../utils/logger":36}],14:[function(e,y,i){"use strict";function t(e){return e&&e.__esModule?e:{default:e}}function d(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t1?r-1:0),e=1;r>e;e++)n[e-1]=arguments[e];t.emit.apply(t,[i,i].concat(n))},t.off=function(n){for(var r=arguments.length,i=Array(r>1?r-1:0),e=1;r>e;e++)i[e-1]=arguments[e];t.removeListener.apply(t,[n].concat(i))},r.addEventListener("message",function(i){var e=i.data;switch(e.cmd){case"init":r.demuxer=new u.default(t,e.typeSupported);break;case"demux":r.demuxer.push(new Uint8Array(e.data),e.audioCodec,e.videoCodec,e.timeOffset,e.cc,e.level,e.sn,e.duration)}}),t.on(e.default.FRAG_PARSING_INIT_SEGMENT,function(t,e){r.postMessage({event:t,tracks:e.tracks,unique:e.unique})}),t.on(e.default.FRAG_PARSING_DATA,function(i,e){var t={event:i,type:e.type,startPTS:e.startPTS,endPTS:e.endPTS,startDTS:e.startDTS,endDTS:e.endDTS,data1:e.data1.buffer,data2:e.data2.buffer,nb:e.nb};r.postMessage(t,[t.data1,t.data2])}),t.on(e.default.FRAG_PARSED,function(e){r.postMessage({event:e})}),t.on(e.default.ERROR,function(e,t){r.postMessage({event:e,data:t})}),t.on(e.default.FRAG_PARSING_METADATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)}),t.on(e.default.FRAG_PARSING_USERDATA,function(e,t){var i={event:e,samples:t.samples};r.postMessage(i)})};i.default=o},{"../demux/demuxer-inline":14,"../events":22,events:1}],16:[function(t,g,i){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t0&&null!=e&&null!=e.key&&"AES-128"===e.method){null==this.decrypter&&(this.decrypter=new l.default(this.hls));var d=this;this.decrypter.decrypt(t,e.key,e.iv,function(e){d.pushDecrypted(e,r,i,n,a,s,o,u)})}else this.pushDecrypted(t,r,i,n,a,s,o,u)}},{key:"onWorkerMessage",value:function(i){var t=i.data;switch(t.event){case e.default.FRAG_PARSING_INIT_SEGMENT:var r={};r.tracks=t.tracks,r.unique=t.unique,this.hls.trigger(e.default.FRAG_PARSING_INIT_SEGMENT,r);break;case e.default.FRAG_PARSING_DATA:this.hls.trigger(e.default.FRAG_PARSING_DATA,{data1:new Uint8Array(t.data1),data2:new Uint8Array(t.data2),startPTS:t.startPTS,endPTS:t.endPTS,startDTS:t.startDTS,endDTS:t.endDTS,type:t.type,nb:t.nb});break;case e.default.FRAG_PARSING_METADATA:this.hls.trigger(e.default.FRAG_PARSING_METADATA,{samples:t.samples});break;case e.default.FRAG_PARSING_USERDATA:this.hls.trigger(e.default.FRAG_PARSING_USERDATA,{samples:t.samples});break;default:this.hls.trigger(t.event,t.data)}}}]),r}();i.default=o},{"../crypt/decrypter":11,"../demux/demuxer-inline":14,"../demux/demuxer-worker":15,"../events":22,"../utils/logger":36,webworkify:2}],17:[function(t,s,e){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var i=function(){function e(i,r){for(var t=0;te?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(t){var e=Math.min(this.bitsAvailable,t),r=this.word>>>32-e;return t>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=e,this.bitsAvailable>0?this.word<<=e:this.bytesAvailable>0&&this.loadWord(),e=t-e,e>0?r<>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{key:"skipScalingList",value:function(n){var t,i,r=8,e=8;for(t=0;n>t;t++)0!==e&&(i=this.readEG(),e=(r+i+256)%256),r=0===e?r:e}},{key:"readSPS",value:function(){var t,g,p,l,n,a,i,o,r,s=0,d=0,f=0,h=0,c=1;if(this.readUByte(),t=this.readUByte(),g=this.readBits(5),this.skipBits(3),p=this.readUByte(),this.skipUEG(),100===t||110===t||122===t||244===t||44===t||83===t||86===t||118===t||128===t){var v=this.readUEG();if(3===v&&this.skipBits(1),this.skipUEG(),this.skipUEG(),this.skipBits(1),this.readBoolean())for(o=3!==v?8:12,r=0;o>r;r++)this.readBoolean()&&(6>r?this.skipScalingList(16):this.skipScalingList(64)); +}this.skipUEG();var u=this.readUEG();if(0===u)this.readUEG();else if(1===u)for(this.skipBits(1),this.skipEG(),this.skipEG(),l=this.readUEG(),r=0;l>r;r++)this.skipEG();if(this.skipUEG(),this.skipBits(1),n=this.readUEG(),a=this.readUEG(),i=this.readBits(1),0===i&&this.skipBits(1),this.skipBits(1),this.readBoolean()&&(s=this.readUEG(),d=this.readUEG(),f=this.readUEG(),h=this.readUEG()),this.readBoolean()&&this.readBoolean()){var e=void 0,y=this.readUByte();switch(y){case 1:e=[1,1];break;case 2:e=[12,11];break;case 3:e=[10,11];break;case 4:e=[16,11];break;case 5:e=[40,33];break;case 6:e=[24,11];break;case 7:e=[20,11];break;case 8:e=[32,11];break;case 9:e=[80,33];break;case 10:e=[18,11];break;case 11:e=[15,11];break;case 12:e=[64,33];break;case 13:e=[160,99];break;case 14:e=[4,3];break;case 15:e=[3,2];break;case 16:e=[2,1];break;case 255:e=[this.readUByte()<<8|this.readUByte(),this.readUByte()<<8|this.readUByte()]}e&&(c=e[0]/e[1])}return{width:Math.ceil((16*(n+1)-2*s-2*d)*c),height:(2-i)*(a+1)*16-(i?2:4)*(f+h)}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();e.default=a},{"../utils/logger":36}],18:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;tr);return t}},{key:"_parseID3Frames",value:function(r,t,a){for(var n,s,o,l,i;a>=t+8;)switch(n=this.readUTF(r,t,4),t+=4,s=r[t++]<<24+r[t++]<<16+r[t++]<<8+r[t++],l=r[t++]<<8+r[t++],o=t,n){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(r,t,44)){t+=44,t+=4;var u=1&r[t++];this._hasTimeStamp=!0,i=((r[t++]<<23)+(r[t++]<<15)+(r[t++]<<7)+r[t++])/45,u&&(i+=47721858.84),i=Math.round(i),e.logger.trace("ID3 timestamp found: "+i),this._timeStamp=i}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),t}();t.default=a},{"../utils/logger":36}],19:[function(t,v,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var f=function(){function e(i,r){for(var t=0;tt;t+=188)if(71===i[t]){if(d=!!(64&i[t+1]),u=((31&i[t+1])<<8)+i[t+2],y=(48&i[t+3])>>4,y>1){if(n=t+5+i[t+4],n===t+188)continue}else n=t+4;if(g)if(u===h){if(d){if(s&&(this._parseAVCPES(this._parsePES(s)),b&&this._avcTrack.codec&&(-1===f||this._aacTrack.codec)))return void this.remux(i);s={data:[],size:0}}s&&(s.data.push(i.subarray(n,t+188)),s.size+=t+188-n)}else if(u===f){if(d){if(o&&(this._parseAACPES(this._parsePES(o)),b&&this._aacTrack.codec&&(-1===h||this._avcTrack.codec)))return void this.remux(i);o={data:[],size:0}}o&&(o.data.push(i.subarray(n,t+188)),o.size+=t+188-n)}else u===v&&(d&&(l&&this._parseID3PES(this._parsePES(l)),l={data:[],size:0}),l&&(l.data.push(i.subarray(n,t+188)),l.size+=t+188-n));else d&&(n+=i[n]+1),0===u?this._parsePAT(i,n):u===this._pmtId&&(this._parsePMT(i,n),g=this.pmtParsed=!0,h=this._avcTrack.id,f=this._aacTrack.id,v=this._id3Track.id)}else this.observer.trigger(a.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});s&&this._parseAVCPES(this._parsePES(s)),o&&this._parseAACPES(this._parsePES(o)),l&&this._parseID3PES(this._parsePES(l)),this.remux(null)}},{key:"remux",value:function(e){this.remuxer.remux(this._aacTrack,this._avcTrack,this._id3Track,this._txtTrack,this.timeOffset,this.contiguous,e)}},{key:"destroy",value:function(){this.switchLevel(),this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){this._pmtId=(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(r,t){var n,a,s,i;for(n=(15&r[t+1])<<8|r[t+2],a=t+3+n-4,s=(15&r[t+10])<<8|r[t+11],t+=12+s;a>t;){switch(i=(31&r[t+1])<<8|r[t+2],r[t]){case 15:this._aacTrack.id=i;break;case 21:this._id3Track.id=i;break;case 27:this._avcTrack.id=i;break;default:e.logger.log("unkown stream type:"+r[t])}t+=((15&r[t+3])<<8|r[t+4])+5}}},{key:"_parsePES",value:function(o){var e,a,h,d,u,l,i,r,t,f=0,s=o.data;if(e=s[0],h=(e[0]<<16)+(e[1]<<8)+e[2],1===h){for(d=(e[4]<<8)+e[5],a=e[7],192&a&&(i=536870912*(14&e[9])+4194304*(255&e[10])+16384*(254&e[11])+128*(255&e[12])+(254&e[13])/2,i>4294967295&&(i-=8589934592),64&a?(r=536870912*(14&e[14])+4194304*(255&e[15])+16384*(254&e[16])+128*(255&e[17])+(254&e[18])/2,r>4294967295&&(r-=8589934592)):r=i),u=e[8],t=u+9,o.size-=t,l=new Uint8Array(o.size);s.length;){e=s.shift();var n=e.byteLength;if(t){if(t>n){t-=n;continue}e=e.subarray(t),n-=t,t=0}l.set(e,f),f+=n}return{data:l,pts:i,dts:r,len:d}}return null}},{key:"_parseAVCPES",value:function(i){var t,p,a,l,y=this,r=this._avcTrack,u=r.samples,m=this._parseAVCNALu(i.data),d=[],o=!1,h=!1,c=0;if(0===m.length&&u.length>0){var v=u[u.length-1],f=v.units.units[v.units.units.length-1],g=new Uint8Array(f.data.byteLength+i.data.byteLength);g.set(f.data,0),g.set(i.data,f.data.byteLength),f.data=g,v.units.length+=i.data.byteLength,r.len+=i.data.byteLength}i.data=null;var n="";m.forEach(function(e){switch(e.type){case 1:a=!0,o&&(n+="NDR ");break;case 5:a=!0,o&&(n+="IDR "),h=!0;break;case 6:a=!0,o&&(n+="SEI "),t=new s.default(e.data),t.readUByte();var E=t.readUByte();if(4===E){var g=0;do g=t.readUByte();while(255===g);var R=t.readUByte();if(181===R){var _=t.readUShort();if(49===_){var A=t.readUInt();if(1195456820===A){var k=t.readUByte();if(3===k){var v=t.readUByte(),b=t.readUByte(),T=31&v,f=[v,b];for(l=0;T>l;l++)f.push(t.readUByte()),f.push(t.readUByte()),f.push(t.readUByte());y._txtTrack.samples.push({type:3,pts:i.pts,bytes:f})}}}}}break;case 7:if(a=!0,o&&(n+="SPS "),!r.sps){t=new s.default(e.data);var p=t.readSPS();r.width=p.width,r.height=p.height,r.sps=[e.data],r.duration=y._duration;var L=e.data.subarray(1,4),m="avc1.";for(l=0;3>l;l++){var u=L[l].toString(16);u.length<2&&(u="0"+u),m+=u}r.codec=m}break;case 8:a=!0,o&&(n+="PPS "),r.pps||(r.pps=[e.data]);break;case 9:a=!1,o&&(n+="AUD ");break;default:a=!1,n+="unknown NAL "+e.type+" "}a&&(d.push(e),c+=e.data.byteLength)}),(o||n.length)&&e.logger.log(n),d.length&&(h===!0||r.sps)&&(p={units:{units:d,length:c},pts:i.pts,dts:i.dts,key:h},u.push(p),r.len+=c,r.nbNalu+=d.length)}},{key:"_parseAVCNALu",value:function(r){for(var a,i,s,p,n,l,t=0,h=r.byteLength,e=0,d=[];h>t;)switch(a=r[t++],e){case 0:0===a&&(e=1);break;case 1:e=0===a?2:0;break;case 2:case 3:if(0===a)e=3;else if(1===a&&h>t){if(p=31&r[t],n)s={data:r.subarray(n,t-e-1),type:l},d.push(s);else if(i=t-e-1){var c=this._avcTrack,f=c.samples;if(f.length){var v=f[f.length-1],g=v.units.units,o=g[g.length-1],u=new Uint8Array(o.data.byteLength+i);u.set(o.data,0),u.set(r.subarray(0,i),o.data.byteLength),o.data=u,v.units.length+=i,c.len+=i}}n=t,l=p,e=0}else e=0}return n&&(s={data:r.subarray(n,h),type:l},d.push(s)),d}},{key:"_parseAACPES",value:function(R){var l,o,p,E,t,d,f,s,_,n=this._aacTrack,i=R.data,v=R.pts,k=0,L=this._duration,A=this.audioCodec,u=this.aacOverFlow,b=this.lastAacPTS;if(u){var m=new Uint8Array(u.byteLength+i.byteLength);m.set(u,0),m.set(i,u.byteLength),i=m}for(t=k,s=i.length;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);if(t){var y,h;if(s-1>t?(y="AAC PES did not start with ADTS header,offset:"+t,h=!1):(y="no ADTS header found in AAC PES",h=!0),this.observer.trigger(a.default.ERROR,{type:r.ErrorTypes.MEDIA_ERROR,details:r.ErrorDetails.FRAG_PARSING_ERROR,fatal:h,reason:y}),h)return}if(n.audiosamplerate||(l=c.default.getAudioConfig(this.observer,i,t,A),n.config=l.config,n.audiosamplerate=l.samplerate,n.channelCount=l.channelCount,n.codec=l.codec,n.duration=L,e.logger.log("parsed codec:"+n.codec+",rate:"+l.samplerate+",nb channel:"+l.channelCount)),E=0,p=9216e4/n.audiosamplerate,u&&b){var g=b+p;Math.abs(g-v)>1&&(e.logger.log("AAC: align PTS for overlapping frames by "+Math.round((g-v)/90)),v=g)}for(;s>t+5&&(d=1&i[t+1]?7:9,o=(3&i[t+3])<<11|i[t+4]<<3|(224&i[t+5])>>>5,o-=d,o>0&&s>=t+d+o);)for(f=v+E*p,_={unit:i.subarray(t+d,t+d+o),pts:f,dts:f},n.samples.push(_),n.len+=o,t+=o+d,E++;s-1>t&&(255!==i[t]||240!==(240&i[t+1]));t++);u=s>t?i.subarray(t,s):null,this.aacOverFlow=u,this.lastAacPTS=f}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]}}]),t}();n.default=o},{"../errors":20,"../events":22,"../utils/logger":36,"./adts":13,"./exp-golomb":17}],20:[function(t,r,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.ErrorTypes={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",OTHER_ERROR:"otherError"},e.ErrorDetails={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",INTERNAL_EXCEPTION:"internalException"}},{}],21:[function(e,f,t){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},d=function(){function e(i,r){for(var t=0;t1?r-1:0),t=1;r>t;t++)i[t-1]=arguments[t];this.handledEvents=i,this.useGenericHandler=!0,this.registerListeners()}return d(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"===a(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var i=function(t,r){var e="on"+t.replace("hls","");if("function"!=typeof this[e])throw new Error("Event "+t+" has no generic handler in this "+this.constructor.name+" class (tried "+e+")");return this[e].bind(this,r)};try{i.call(this,e,t).call()}catch(t){o.logger.error("internal error happened while processing "+e+":"+t.message),this.hls.trigger(s.default.ERROR,{type:r.ErrorTypes.OTHER_ERROR,details:r.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,err:t})}}}]),e}();t.default=l},{"./errors":20,"./events":22,"./utils/logger":36}],22:[function(t,e,r){"use strict";e.exports={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",LEVEL_SWITCH:"hlsLevelSwitch",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded"}},{}],23:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;td&&(t[u-1].end=r[e].end):t.push(r[e])}else t.push(r[e])}for(e=0,o=0,l=n=i;e=a&&f>i)l=a,n=f,o=n-i;else if(a>i+s){h=a;break}}return{len:o,start:l,end:n,nextStart:h}}}]),e}();e.default=i},{}],24:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;th)return void(i.PTSKnown=!1);for(var r=c;h>=r;r++){var o=f[u+r],n=l[r];d=o.cc-n.cc,isNaN(o.startPTS)||(n.start=n.startPTS=o.startPTS,n.endPTS=o.endPTS,n.duration=o.duration,s=n)}if(d)for(e.logger.log("discontinuity sliding from playlist, take drift into account"),r=0;r=0&&ui.endSN)return 0;o=l-i.startSN,a=i.fragments,r=a[o],isNaN(r.startPTS)||(n=Math.min(n,r.startPTS),s=Math.max(s,r.endPTS));var u=n-r.start;for(r.start=r.startPTS=n,r.endPTS=s,r.duration=s-n,e=o;e>0;e--)t.updatePTS(a,e,e-1);for(e=o;ei?r.start=t.start+t.duration:r.start=t.start-r.duration:n>i?(t.duration=a-t.start,t.duration<0&&e.logger.error("negative duration computed for frag "+t.sn+",level "+t.level+", there should be some duration drift between playlist and fragment!")):(r.duration=t.start-a,r.duration<0&&e.logger.error("negative duration computed for frag "+r.sn+",level "+r.level+", there should be some duration drift between playlist and fragment!"))}}]),t}();t.default=a},{"../utils/logger":36}],25:[function(t,I,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;t1?t-1:0),e=1;t>e;e++)n[e-1]=arguments[e];i.emit.apply(i,[r,r].concat(n))},i.off=function(n){for(var t=arguments.length,r=Array(t>1?t-1:0),e=1;t>e;e++)r[e-1]=arguments[e];i.removeListener.apply(i,[n].concat(r))},this.on=i.on.bind(i),this.off=i.off.bind(i),this.trigger=i.trigger.bind(i),this.playlistLoader=new d.default(this),this.fragmentLoader=new h.default(this),this.levelController=new R.default(this),this.abrController=new r.abrController(this),this.bufferController=new r.bufferController(this),this.capLevelController=new r.capLevelController(this),this.streamController=new r.streamController(this),this.timelineController=new r.timelineController(this),this.keyLoader=new p.default(this)}return a(t,null,[{key:"isSupported",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"Events",get:function(){return i.default}},{key:"ErrorTypes",get:function(){return s.ErrorTypes}},{key:"ErrorDetails",get:function(){return s.ErrorDetails}},{key:"DefaultConfig",get:function(){return t.defaultConfig||(t.defaultConfig={autoStartLoad:!0,debug:!1,capLevelToPlayerSize:!1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,seekHoleNudgeDuration:.01,stalledInBufferedNudgeThreshold:10,maxFragLookUpTolerance:.2,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,appendErrorMaxRetry:3,loader:S.default,fLoader:void 0,pLoader:void 0,abrController:v.default,bufferController:P.default,capLevelController:m.default,streamController:b.default,timelineController:L.default,enableCEA708Captions:!0,enableMP2TPassThrough:!1}),t.defaultConfig},set:function(e){t.defaultConfig=e}}]),a(t,[{key:"destroy",value:function(){e.logger.log("destroy"),this.trigger(i.default.DESTROYING),this.detachMedia(),this.playlistLoader.destroy(),this.fragmentLoader.destroy(),this.levelController.destroy(),this.abrController.destroy(),this.bufferController.destroy(),this.capLevelController.destroy(),this.streamController.destroy(),this.timelineController.destroy(),this.keyLoader.destroy(),this.url=null,this.observer.removeAllListeners()}},{key:"attachMedia",value:function(t){e.logger.log("attachMedia"),this.media=t,this.trigger(i.default.MEDIA_ATTACHING,{media:t})}},{key:"detachMedia",value:function(){e.logger.log("detachMedia"),this.trigger(i.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(t){e.logger.log("loadSource:"+t),this.url=t,this.trigger(i.default.MANIFEST_LOADING,{url:t})}},{key:"startLoad",value:function(){var t=arguments.length<=0||void 0===arguments[0]?0:arguments[0];e.logger.log("startLoad"),this.levelController.startLoad(),this.streamController.startLoad(t)}},{key:"stopLoad",value:function(){e.logger.log("stopLoad"),this.levelController.stopLoad(),this.streamController.stopLoad()}},{key:"swapAudioCodec",value:function(){e.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){e.logger.log("recoverMediaError");var t=this.media;this.detachMedia(),this.attachMedia(t)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(t){e.logger.log("set currentLevel:"+t),this.loadLevel=t,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(t){e.logger.log("set nextLevel:"+t),this.levelController.manualLevel=t,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(t){e.logger.log("set loadLevel:"+t),this.levelController.manualLevel=t}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return this.levelController.firstLevel},set:function(t){e.logger.log("set firstLevel:"+t),this.levelController.firstLevel=t}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(t){e.logger.log("set startLevel:"+t),this.levelController.startLevel=t}},{key:"autoLevelCapping",get:function(){return this.abrController.autoLevelCapping},set:function(t){e.logger.log("set autoLevelCapping:"+t),this.abrController.autoLevelCapping=t}},{key:"autoLevelEnabled",get:function(){return-1===this.levelController.manualLevel}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}}]),t}();n.default=l},{"./controller/abr-controller":3,"./controller/buffer-controller":4,"./controller/cap-level-controller":5,"./controller/level-controller":6,"./controller/stream-controller":7,"./controller/timeline-controller":8,"./errors":20,"./events":22,"./loader/fragment-loader":27,"./loader/key-loader":28,"./loader/playlist-loader":29,"./utils/logger":36,"./utils/xhr-loader":38,events:1}],26:[function(e,t,r){"use strict";t.exports=e("./hls.js").default},{"./hls.js":25}],27:[function(r,c,i){"use strict";function n(e){return e&&e.__esModule?e:{default:e}}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function f(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}function s(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(i,"__esModule",{value:!0});var h=function(){function e(i,r){for(var t=0;t2?(e=t.shift()+".",e+=parseInt(t.shift()).toString(16),e+=("000"+parseInt(t.shift()).toString(16)).substr(-4)):e=r,e}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"parseLevelPlaylist",value:function(L,l,A){var e,b,s,a,g=0,o=0,i={url:l,fragments:[],live:!0,startSN:0},r={method:null,key:null,iv:null,uri:null},E=0,f=null,t=null;for(b=/(?:#EXT-X-(MEDIA-SEQUENCE):(\d+))|(?:#EXT-X-(TARGETDURATION):(\d+))|(?:#EXT-X-(KEY):(.*))|(?:#EXT(INF):([\d\.]+)[^\r\n]*([\r\n]+[^#|\r\n]+)?)|(?:#EXT-X-(BYTERANGE):([\d]+[@[\d]*)]*[\r\n]+([^#|\r\n]+)?|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(PROGRAM-DATE-TIME):(.*))/g;null!==(e=b.exec(L));)switch(e.shift(),e=e.filter(function(e){return void 0!==e}),e[0]){case"MEDIA-SEQUENCE":g=i.startSN=parseInt(e[1]);break;case"TARGETDURATION":i.targetduration=parseFloat(e[1]);break;case"ENDLIST":i.live=!1;break;case"DIS":E++;break;case"BYTERANGE":var c=e[1].split("@");a=1===c.length?s:parseInt(c[1]),s=parseInt(c[0])+a,t&&!t.url&&(t.byteRangeStartOffset=a,t.byteRangeEndOffset=s,t.url=this.resolve(e[2],l));break;case"INF":var v=parseFloat(e[1]);if(!isNaN(v)){var u,m=g++;if(r.method&&r.uri&&!r.iv){u=this.cloneObj(r);for(var y=new Uint8Array(16),d=12;16>d;d++)y[d]=m>>8*(15-d)&255;u.iv=y}else u=r;var k=e[2]?this.resolve(e[2],l):null;t={url:k,duration:v,start:o,sn:m,level:A,cc:E,byteRangeStartOffset:a,byteRangeEndOffset:s,decryptdata:u,programDateTime:f},i.fragments.push(t),o+=v,a=null,f=null}break;case"KEY":var R=e[1],p=new n.default(R),h=p.enumeratedString("METHOD"),_=p.URI,T=p.hexadecimalInteger("IV");h&&(r={method:null,key:null,iv:null,uri:null},_&&"AES-128"===h&&(r.method=h,r.uri=this.resolve(_,l),r.key=null,r.iv=T));break;case"PROGRAM-DATE-TIME":f=new Date(Date.parse(e[1]))}return t&&!t.url&&(i.fragments.pop(),o-=t.duration),i.totalduration=o,i.endSN=g-1,i}},{key:"loadsuccess",value:function(u,i){var s,o=u.currentTarget,a=o.responseText,r=o.responseURL,l=this.id,d=this.id2,n=this.hls;if(this.loading=!1,void 0===r&&(r=this.url),i.tload=performance.now(),i.mtime=new Date(o.getResponseHeader("Last-Modified")),0===a.indexOf("#EXTM3U"))if(a.indexOf("#EXTINF:")>0)if(null===this.id)n.trigger(t.default.MANIFEST_LOADED,{levels:[{url:r}],url:r,stats:i});else{var f=this.parseLevelPlaylist(a,r,l);i.tparsed=performance.now(),n.trigger(t.default.LEVEL_LOADED,{details:f,level:l,id:d,stats:i})}else s=this.parseMasterPlaylist(a,r),s.length?n.trigger(t.default.MANIFEST_LOADED,{levels:s,url:r,stats:i}):n.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no level found in manifest"});else n.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:e.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:r,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(n){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_ERROR,i=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,response:n.currentTarget,level:this.id,id:this.id2})}},{key:"loadtimeout",value:function(){var r,i;null===this.id?(r=e.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0):(r=e.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1),this.loader&&this.loader.abort(),this.loading=!1,this.hls.trigger(t.default.ERROR,{type:e.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:this.url,loader:this.loader,level:this.id,id:this.id2})}}]),r}(a.default);s.default=u},{"../errors":20,"../event-handler":21,"../events":22,"../utils/attr-list":33,"../utils/url":37}],30:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;t>24&255,t[1]=e>>16&255,t[2]=e>>8&255,t[3]=255&e,t.set(n,4),r=0,e=8;a>r;r++)t.set(i[r],e),e+=i[r].byteLength;return t}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}},{key:"mdhd",value:function(t,r){return r*=t,e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,2,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))}},{key:"moov",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))}},{key:"mvex",value:function(r){for(var t=r.length,i=[];t--;)i[t]=e.trex(r[t]);return e.box.apply(null,[e.types.mvex].concat(i))}},{key:"mvhd",value:function(t,r){r*=t;var i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,2,t>>24&255,t>>16&255,t>>8&255,255&t,r>>24&255,r>>16&255,r>>8&255,255&r,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,i)}},{key:"sdtp",value:function(a){var r,t,i=a.samples||[],n=new Uint8Array(4+i.length);for(t=0;t>>8&255),i.push(255&a),i=i.concat(Array.prototype.slice.call(n));for(r=0;r>>8&255),s.push(255&a),s=s.concat(Array.prototype.slice.call(n));var u=e.box(e.types.avcC,new Uint8Array([1,i[3],i[4],i[5],255,224|t.sps.length].concat(i).concat([t.pps.length]).concat(s))),o=t.width,l=t.height;return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,o>>8&255,255&o,l>>8&255,255&l,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),u,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])))}},{key:"esds",value:function(t){var e=t.config.length;return new Uint8Array([0,0,0,0,3,23+e,0,1,0,4,15+e,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([e]).concat(t.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.audiosamplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"stsd",value:function(t){return"audio"===t.type?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,i=t.duration*t.timescale,n=t.width,a=t.height;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,a>>8&255,255&a,0,0]))}},{key:"traf",value:function(i,t){var n=e.sdtp(i),r=i.id;return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r])),e.box(e.types.tfdt,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t])),e.trun(i,n.length+16+16+8+16+8+8),n)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(r){var t=r.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(h,o){var i,n,a,s,t,l,d=h.samples||[],r=d.length,f=12+16*r,u=new Uint8Array(f);for(o+=8+f,u.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,o>>>24&255,o>>>16&255,o>>>8&255,255&o],0),i=0;r>i;i++)n=d[i],a=n.duration,s=n.size,t=n.flags,l=n.cts,u.set([a>>>24&255,a>>>16&255,a>>>8&255,255&a,s>>>24&255,s>>>16&255,s>>>8&255,255&s,t.isLeading<<2|t.dependsOn,t.isDependedOn<<6|t.hasRedundancy<<4|t.paddingValue<<1|t.isNonSync,61440&t.degradPrio,15&t.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return e.box(e.types.trun,u)}},{key:"initSegment",value:function(i){e.types||e.init();var t,r=e.moov(i);return t=new Uint8Array(e.FTYP.byteLength+r.byteLength),t.set(e.FTYP),t.set(r,e.FTYP.byteLength),t}}]),e}();e.default=i},{}],31:[function(i,h,n){"use strict";function a(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var l=function(){function e(i,r){for(var t=0;tMath.pow(2,32)&&!function(){var e=function r(t,e){return e?r(e,t%e):t};i.timescale=i.audiosamplerate/e(i.audiosamplerate,1024)}(),e.logger.log("audio mp4 timescale :"+i.timescale),l.audio={container:"audio/mp4",codec:i.codec,initSegment:r.default.initSegment([i]),metadata:{channelCount:i.channelCount}},u&&(a=o=v[0].pts-f*h)),n.sps&&n.pps&&d.length&&(n.timescale=this.MP4_TIMESCALE,l.video={container:"video/mp4",codec:n.codec,initSegment:r.default.initSegment([n]),metadata:{width:n.width,height:n.height}},u&&(a=Math.min(a,d[0].pts-f*h),o=Math.min(o,d[0].dts-f*h))),Object.keys(l).length?(c.trigger(t.default.FRAG_PARSING_INIT_SEGMENT,g),this.ISGenerated=!0,u&&(this._initPTS=a,this._initDTS=o)):c.trigger(t.default.ERROR,{type:s.ErrorTypes.MEDIA_ERROR,details:s.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})}},{key:"remuxVideo",value:function(n,w,S){var L,s,p,A,f,d,T,k,R,v,_,g,o,i,a,E=8,c=this.PES_TIMESCALE,h=this.PES2MP4SCALEFACTOR,u=[];for(d=new Uint8Array(n.len+4*n.nbNalu+8),L=new DataView(d.buffer),L.setUint32(0,d.byteLength),d.set(r.default.types.mdat,4);n.samples.length;){for(s=n.samples.shift(),A=0;s.units.units.length;)f=s.units.units.shift(),L.setUint32(E,f.data.byteLength),E+=4,d.set(f.data,E),E+=f.data.byteLength,A+=4+f.data.byteLength;if(_=s.pts-this._initDTS,g=s.dts-this._initDTS,g=Math.min(_,g),void 0!==v){o=this._PTSNormalize(_,v),i=this._PTSNormalize(g,v);var m=(i-v)/h;0>=m&&(e.logger.log("invalid sample duration at PTS/DTS: "+s.pts+"/"+s.dts+":"+m),m=1),p.duration=m}else{var y=void 0,l=void 0;y=S?this.nextAvcDts:w*c,o=this._PTSNormalize(_,y),i=this._PTSNormalize(g,y),l=Math.round((i-y)/90),S&&l&&(l>1?e.logger.log("AVC:"+l+" ms hole between fragments detected,filling it"):-1>l&&e.logger.log("AVC:"+-l+" ms overlapping between fragments detected"),i=y,o=Math.max(o-l,i),e.logger.log("Video/PTS/DTS adjusted: "+o+"/"+i+",delta:"+l)),k=Math.max(0,o),R=Math.max(0,i)}p={size:A,duration:0,cts:(o-i)/h,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0}},a=p.flags,s.key===!0?(a.dependsOn=2,a.isNonSync=0):(a.dependsOn=1,a.isNonSync=1),u.push(p),v=i}var b=0;u.length>=2&&(b=u[u.length-2].duration,p.duration=b),this.nextAvcDts=i+b*h,n.len=0,n.nbNalu=0,u.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1&&(a=u[0].flags,a.dependsOn=2,a.isNonSync=0),n.samples=u,T=r.default.moof(n.sequenceNumber++,R/h,n),n.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:T,data2:d,startPTS:k/c,endPTS:(o+h*b)/c,startDTS:R/c,endDTS:this.nextAvcDts/c,type:"video",nb:u.length})}},{key:"remuxAudio",value:function(i,O,S){var T,p,a,h,o,k,L,b,u,g,R,d,n,A=8,s=this.PES_TIMESCALE,w=i.timescale,f=s/w,E=1024*i.timescale/i.audiosamplerate,m=[],_=[];for(i.samples.sort(function(e,t){return e.pts-t.pts}),_=i.samples;_.length;){if(p=_.shift(),h=p.unit,g=p.pts-this._initDTS,R=p.dts-this._initDTS,void 0!==u)d=this._PTSNormalize(g,u),n=this._PTSNormalize(R,u),a.duration=(n-u)/f,Math.abs(a.duration-E)>E/10&&e.logger.log("invalid AAC sample duration at PTS "+Math.round(g/90)+",should be 1024,found :"+Math.round(a.duration*i.audiosamplerate/i.timescale)),a.duration=E,n=E*f+u;else{var c=void 0,l=void 0;if(c=S?this.nextAacPts:O*s,d=this._PTSNormalize(g,c),n=this._PTSNormalize(R,c),l=Math.round(1e3*(d-c)/s),S&&l){if(l>0)e.logger.log(l+" ms hole between AAC samples detected,filling it");else if(-12>l){e.logger.log(-l+" ms overlapping between AAC samples detected, drop frame"),i.len-=h.byteLength;continue}d=n=c}if(L=Math.max(0,d),b=Math.max(0,n),!(i.len>0))return;o=new Uint8Array(i.len+8),T=new DataView(o.buffer),T.setUint32(0,o.byteLength),o.set(r.default.types.mdat,4)}o.set(h,A),A+=h.byteLength,a={size:h.byteLength,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},m.push(a),u=n}var y=0,v=m.length;v>=2&&(y=m[v-2].duration,a.duration=y),v&&(this.nextAacPts=d+f*y,i.len=0,i.samples=m,k=r.default.moof(i.sequenceNumber++,b/f,i),i.samples=[],this.observer.trigger(t.default.FRAG_PARSING_DATA,{data1:k,data2:o,startPTS:L/s,endPTS:this.nextAacPts/s,startDTS:b/s,endDTS:(n+f*y)/s,type:"audio",nb:v}))}},{key:"remuxID3",value:function(r,n){var e,a=r.samples.length;if(a){for(var i=0;a>i;i++)e=r.samples[i],e.pts=(e.pts-this._initPTS)/this.PES_TIMESCALE,e.dts=(e.dts-this._initDTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_METADATA,{samples:r.samples})}r.samples=[],n=n}},{key:"remuxText",value:function(e,n){e.samples.sort(function(e,t){return e.pts-t.pts});var r,a=e.samples.length;if(a){for(var i=0;a>i;i++)r=e.samples[i],r.pts=(r.pts-this._initPTS)/this.PES_TIMESCALE;this.observer.trigger(t.default.FRAG_PARSING_USERDATA,{samples:e.samples})}e.samples=[],n=n}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=e>t?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}},{key:"passthrough",get:function(){return!1}}]),i}();n.default=d},{"../errors":20,"../events":22,"../remux/mp4-generator":30,"../utils/logger":36}],32:[function(r,l,e){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var a=function(){function e(i,r){for(var t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"hexadecimalInteger",value:function(r){if(this[r]){var e=(this[r]||"0x").slice(2);e=(1&e.length?"0":"")+e;for(var i=new Uint8Array(e.length/2),t=0;tNumber.MAX_SAFE_INTEGER?1/0:e}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(t){var e=/^(\d+)x(\d+)$/.exec(this[t]);if(null!==e)return{width:parseInt(e[1],10),height:parseInt(e[2],10)}}}],[{key:"parseAttrList",value:function(n){for(var t,a=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,r={};null!==(t=a.exec(n));){var e=t[2],i='"';0===e.indexOf(i)&&e.lastIndexOf(i)===e.length-1&&(e=e.slice(1,-1)),r[t[1]]=e}return r}}]),e}();e.default=i},{}],34:[function(r,e,i){"use strict";var t={search:function(n,s){for(var t=0,r=n.length-1,e=null,i=null;r>=t;){e=(t+r)/2|0,i=n[e];var a=s(i);if(a>0)t=e+1;else{if(!(0>a))return i;r=e-1}}return null}};e.exports=t},{}],35:[function(n,a,e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function e(i,r){for(var t=0;t0;)e.removeCue(e.cues[0])}},{key:"push",value:function(r,i){this.cue||this._createCue();for(var n,t,e,s,o,u=31&i[0],a=2,l=0;u>l;l++)if(n=i[a++],t=127&i[a++],e=127&i[a++],s=0!==(4&n),o=3&n,(0!==t||0!==e)&&s&&0===o){if(32&t||64&t)this.cue.text+=this._fromCharCode(t)+this._fromCharCode(e);else if((17===t||25===t)&&e>=48&&63>=e)switch(e){case 48:this.cue.text+="®";break;case 49:this.cue.text+="°";break;case 50:this.cue.text+="½";break;case 51:this.cue.text+="¿";break;case 52:this.cue.text+="™";break;case 53:this.cue.text+="¢";break;case 54:this.cue.text+="";break;case 55:this.cue.text+="£";break;case 56:this.cue.text+="♪";break;case 57:this.cue.text+=" ";break;case 58:this.cue.text+="è";break;case 59:this.cue.text+="â";break;case 60:this.cue.text+="ê";break;case 61:this.cue.text+="î";break;case 62:this.cue.text+="ô";break;case 63:this.cue.text+="û"}if((17===t||25===t)&&e>=32&&47>=e)switch(e){case 32:break;case 33:break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:break;case 42:break;case 43:break;case 44:break;case 45:break;case 46:break;case 47:}if((20===t||28===t)&&e>=32&&47>=e)switch(e){case 32:this._clearActiveCues(r);break;case 33:this.cue.text=this.cue.text.substr(0,this.cue.text.length-1);break;case 34:break;case 35:break;case 36:break;case 37:break;case 38:break;case 39:break;case 40:break;case 41:this._clearActiveCues(r);break;case 42:break;case 43:break;case 44:this._clearActiveCues(r);break;case 45:break;case 46:this._text="";break;case 47:this._flipMemory(r)}if((23===t||31===t)&&e>=33&&35>=e)switch(e){case 33:break;case 34:break;case 35:}}}},{key:"_fromCharCode",value:function(e){switch(e){case 42:return"á";case 2:return"á";case 2:return"é";case 4:return"í";case 5:return"ó";case 6:return"ú";case 3:return"ç";case 4:return"÷";case 5:return"Ñ";case 6:return"ñ";case 7:return"█";default:return String.fromCharCode(e)}}},{key:"_flipMemory",value:function(e){this._clearActiveCues(e),this._flushCaptions(e)}},{key:"_flushCaptions",value:function(s){this._has708||(this._textTrack=this.media.addTextTrack("captions","English","en"),this._has708=!0);var e=!0,i=!1,n=void 0;try{for(var a,t=this.memory[Symbol.iterator]();!(e=(a=t.next()).done);e=!0){var r=a.value;r.startTime=s,this._textTrack.addCue(r),this.display.push(r)}}catch(e){i=!0,n=e}finally{try{!e&&t.return&&t.return()}finally{if(i)throw n}}this.memory=[],this.cue=null}},{key:"_clearActiveCues",value:function(a){var e=!0,r=!1,i=void 0;try{for(var n,t=this.display[Symbol.iterator]();!(e=(n=t.next()).done);e=!0){var s=n.value;s.endTime=a}}catch(e){r=!0,i=e}finally{try{!e&&t.return&&t.return()}finally{if(r)throw i}}this.display=[]}},{key:"_clearBufferedCues",value:function(){}}]),e}();e.default=i},{}],36:[function(l,u,r){"use strict";function e(){}function n(t,e){return e="["+t+"] > "+e}function a(t){var r=window.console[t];return r?function(){for(var a=arguments.length,e=Array(a),i=0;a>i;i++)e[i]=arguments[i];e[0]&&(e[0]=n(t,e[0])),r.apply(window.console,e)}:e}function s(r){for(var i=arguments.length,n=Array(i>1?i-1:0),e=1;i>e;e++)n[e-1]=arguments[e];n.forEach(function(e){t[e]=r[e]?r[e].bind(r):a(e)})}Object.defineProperty(r,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol?"symbol":typeof e},i={trace:e,debug:e,log:e,warn:e,info:e,error:e},t=i;r.enableLogs=function(e){if(e===!0||"object"===("undefined"==typeof e?"undefined":o(e))){s(e,"debug","log","info","warn","error");try{t.log()}catch(e){t=i}}else t=i},r.logger=t},{}],37:[function(r,t,i){"use strict";var e={buildAbsoluteURL:function(r,t){if(t=t.trim(),/^[a-z]+:/i.test(t))return t;var o=null,n=null,a=/^([^#]*)(.*)$/.exec(t);a&&(n=a[2],t=a[1]);var s=/^([^\?]*)(.*)$/.exec(t);s&&(o=s[2],t=s[1]);var f=/^([^#]*)(.*)$/.exec(r);f&&(r=f[1]);var u=/^([^\?]*)(.*)$/.exec(r);u&&(r=u[1]);var l=/^((([a-z]+):)?\/\/[a-z0-9\.\-_~]+(:[0-9]+)?\/)(.*)$/i.exec(r),h=l[3],d=l[1],c=l[5],i=null;return i=/^\/\//.test(t)?h+"://"+e.buildAbsolutePath("",t.substring(2)):/^\//.test(t)?d+e.buildAbsolutePath("",t.substring(1)):e.buildAbsolutePath(d+c,t),o&&(i+=o),n&&(i+=n),i},buildAbsolutePath:function(a,s){for(var i,e,o=s,n="",t=a.replace(/[^\/]*$/,o.replace(/(\/|^)(?:\.?\/+)+/g,"$1")),r=0;e=t.indexOf("/../",r),e>-1;r=e+i)i=/^\/(?:\.\.\/)*/.exec(t.slice(e))[0].length,n=(n+t.substring(r,e)).replace(new RegExp("(?:\\/+[^\\/]*){0,"+(i-1)/3+"}$"),"/");return n+t.substr(r)}};t.exports=e},{}],38:[function(r,s,t){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(i,r){for(var t=0;t=200&&300>r?(window.clearTimeout(this.timeoutHandle),t.tload=performance.now(),this.onSuccess(i,t)):t.retry newLevel && - (this._level !== newLevel || this._levels[newLevel].details === undefined)) { - this.setLevelInternal(newLevel); + let levels = this._levels; + if (levels && levels.length > newLevel) { + if (this._level !== newLevel || levels[newLevel].details === undefined) { + this.setLevelInternal(newLevel); + } } } setLevelInternal(newLevel) { + let levels = this._levels; // check if level idx is valid - if (newLevel >= 0 && newLevel < this._levels.length) { + if (newLevel >= 0 && newLevel < levels.length) { // stopping live reloading timer if any if (this.timer) { - clearInterval(this.timer); + clearTimeout(this.timer); this.timer = null; } this._level = newLevel; logger.log(`switching to level ${newLevel}`); this.hls.trigger(Event.LEVEL_SWITCH, {level: newLevel}); - var level = this._levels[newLevel]; + var level = levels[newLevel]; // check if we need to load playlist for this level if (level.details === undefined || level.details.live === true) { // level not retrieved yet, or live playlist we need to (re)load it @@ -150,6 +153,9 @@ class LevelController extends EventHandler { set manualLevel(newLevel) { this._manualLevel = newLevel; + if (this._startLevel === undefined) { + this._startLevel = newLevel; + } if (newLevel !== -1) { this.level = newLevel; } @@ -222,7 +228,7 @@ class LevelController extends EventHandler { this._level = undefined; // stopping live reloading timer if any if (this.timer) { - clearInterval(this.timer); + clearTimeout(this.timer); this.timer = null; } // redispatch same error but with fatal set to true @@ -234,16 +240,30 @@ class LevelController extends EventHandler { } onLevelLoaded(data) { - // check if current playlist is a live playlist - if (data.details.live && !this.timer) { - // if live playlist we will have to reload it periodically - // set reload period to playlist target duration - this.timer = setInterval(this.ontick, 1000 * data.details.targetduration); - } - if (!data.details.live && this.timer) { - // playlist is not live and timer is armed : stopping it - clearInterval(this.timer); - this.timer = null; + // only process level loaded events matching with expected level + if (data.level === this._level) { + let newDetails = data.details; + // if current playlist is a live playlist, arm a timer to reload it + if (newDetails.live) { + let reloadInterval = 1000*newDetails.targetduration, + curLevel = this._levels[data.level], + curDetails = curLevel.details; + if (curDetails && newDetails.endSN === curDetails.endSN) { + // follow HLS Spec, If the client reloads a Playlist file and finds that it has not + // changed then it MUST wait for a period of one-half the target + // duration before retrying. + reloadInterval /=2; + logger.log(`same live playlist, reload twice faster`); + } + // decrement reloadInterval with level loading delay + reloadInterval -= performance.now() - data.stats.trequest; + // in any case, don't reload more than every second + reloadInterval = Math.max(1000,Math.round(reloadInterval)); + logger.log(`live playlist, reload in ${reloadInterval} ms`); + this.timer = setTimeout(this.ontick,reloadInterval); + } else { + this.timer = null; + } } } diff --git a/dashboard-ui/bower_components/hls.js/src/helper/buffer-helper.js b/dashboard-ui/bower_components/hls.js/src/helper/buffer-helper.js index 720a1e8360..3257978e12 100644 --- a/dashboard-ui/bower_components/hls.js/src/helper/buffer-helper.js +++ b/dashboard-ui/bower_components/hls.js/src/helper/buffer-helper.js @@ -55,12 +55,6 @@ class BufferHelper { buffered2.push(buffered[i]); } } - - // in case current position is located before buffered time ranges, report area as not buffered - if (buffered2.length && pos < buffered2[0].start) { - return {len: 0, start: pos, end: pos, nextStart : buffered2[0].start}; - } - for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) { var start = buffered2[i].start, end = buffered2[i].end; diff --git a/dashboard-ui/scripts/autoorganizelog.js b/dashboard-ui/scripts/autoorganizelog.js index e701e51a63..24906f2573 100644 --- a/dashboard-ui/scripts/autoorganizelog.js +++ b/dashboard-ui/scripts/autoorganizelog.js @@ -193,7 +193,7 @@ if (item.Status != 'Success') { html += ''; - html += ''; + html += ''; } html += ''; diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 57445a3678..2f7276afdd 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -2920,7 +2920,7 @@ var AppInfo = {}; defineRoute({ path: '/tv.html', - dependencies: ['paper-checkbox', 'paper-button', 'paper-icon-button-light', 'material-design-lite'], + dependencies: ['paper-checkbox', 'paper-button', 'paper-icon-button-light', 'paper-tabs'], autoFocus: false, controller: 'scripts/tvrecommended' });