mux

test

当前为 2019-06-15 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/386194/709145/mux.js

  1. "undefined" != typeof window && function(e, t) {
  2. "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.Hls = t() : e.Hls = t()
  3. }(this, function() {
  4. return function(e) {
  5. var t = {};
  6.  
  7. function r(i) {
  8. if (t[i]) return t[i].exports;
  9. var a = t[i] = {
  10. i: i,
  11. l: !1,
  12. exports: {}
  13. };
  14. return e[i].call(a.exports, a, a.exports, r), a.l = !0, a.exports
  15. }
  16. return r.m = e, r.c = t, r.d = function(e, t, i) {
  17. r.o(e, t) || Object.defineProperty(e, t, {
  18. enumerable: !0,
  19. get: i
  20. })
  21. }, r.r = function(e) {
  22. "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
  23. value: "Module"
  24. }), Object.defineProperty(e, "__esModule", {
  25. value: !0
  26. })
  27. }, r.t = function(e, t) {
  28. if (1 & t && (e = r(e)), 8 & t) return e;
  29. if (4 & t && "object" == typeof e && e && e.__esModule) return e;
  30. var i = Object.create(null);
  31. if (r.r(i), Object.defineProperty(i, "default", {
  32. enumerable: !0,
  33. value: e
  34. }), 2 & t && "string" != typeof e)
  35. for (var a in e) r.d(i, a, function(t) {
  36. return e[t]
  37. }.bind(null, a));
  38. return i
  39. }, r.n = function(e) {
  40. var t = e && e.__esModule ? function() {
  41. return e.default
  42. } : function() {
  43. return e
  44. };
  45. return r.d(t, "a", t), t
  46. }, r.o = function(e, t) {
  47. return Object.prototype.hasOwnProperty.call(e, t)
  48. }, r.p = "/dist/", r(r.s = 31)
  49. }([function(e, t, r) {
  50. "use strict";
  51. Object.defineProperty(t, "__esModule", {
  52. value: !0
  53. });
  54. var i = r(6);
  55.  
  56. function a() {}
  57. var n = {
  58. trace: a,
  59. debug: a,
  60. log: a,
  61. warn: a,
  62. info: a,
  63. error: a
  64. },
  65. o = n;
  66. var s = i.getSelfScope();
  67.  
  68. function l(e) {
  69. for (var t = [], r = 1; r < arguments.length; r++) t[r - 1] = arguments[r];
  70. t.forEach(function(t) {
  71. o[t] = e[t] ? e[t].bind(e) : function(e) {
  72. var t = s.console[e];
  73. return t ? function() {
  74. for (var r = [], i = 0; i < arguments.length; i++) r[i] = arguments[i];
  75. r[0] && (r[0] = function(e, t) {
  76. return t = "[" + e + "] > " + t
  77. }(e, r[0])), t.apply(s.console, r)
  78. } : a
  79. }(t)
  80. })
  81. }
  82. t.enableLogs = function(e) {
  83. if (!0 === e || "object" == typeof e) {
  84. l(e, "debug", "log", "info", "warn", "error");
  85. try {
  86. o.log()
  87. } catch (e) {
  88. o = n
  89. }
  90. } else o = n
  91. }, t.logger = o
  92. }, function(e, t, r) {
  93. "use strict";
  94. Object.defineProperty(t, "__esModule", {
  95. value: !0
  96. });
  97. t.default = {
  98. MEDIA_ATTACHING: "hlsMediaAttaching",
  99. MEDIA_ATTACHED: "hlsMediaAttached",
  100. MEDIA_DETACHING: "hlsMediaDetaching",
  101. MEDIA_DETACHED: "hlsMediaDetached",
  102. BUFFER_RESET: "hlsBufferReset",
  103. BUFFER_CODECS: "hlsBufferCodecs",
  104. BUFFER_CREATED: "hlsBufferCreated",
  105. BUFFER_APPENDING: "hlsBufferAppending",
  106. BUFFER_APPENDED: "hlsBufferAppended",
  107. BUFFER_EOS: "hlsBufferEos",
  108. BUFFER_FLUSHING: "hlsBufferFlushing",
  109. BUFFER_FLUSHED: "hlsBufferFlushed",
  110. MANIFEST_LOADING: "hlsManifestLoading",
  111. MANIFEST_LOADED: "hlsManifestLoaded",
  112. MANIFEST_PARSED: "hlsManifestParsed",
  113. LEVEL_SWITCHING: "hlsLevelSwitching",
  114. LEVEL_SWITCHED: "hlsLevelSwitched",
  115. LEVEL_LOADING: "hlsLevelLoading",
  116. LEVEL_LOADED: "hlsLevelLoaded",
  117. LEVEL_UPDATED: "hlsLevelUpdated",
  118. LEVEL_PTS_UPDATED: "hlsLevelPtsUpdated",
  119. AUDIO_TRACKS_UPDATED: "hlsAudioTracksUpdated",
  120. AUDIO_TRACK_SWITCHING: "hlsAudioTrackSwitching",
  121. AUDIO_TRACK_SWITCHED: "hlsAudioTrackSwitched",
  122. AUDIO_TRACK_LOADING: "hlsAudioTrackLoading",
  123. AUDIO_TRACK_LOADED: "hlsAudioTrackLoaded",
  124. SUBTITLE_TRACKS_UPDATED: "hlsSubtitleTracksUpdated",
  125. SUBTITLE_TRACK_SWITCH: "hlsSubtitleTrackSwitch",
  126. SUBTITLE_TRACK_LOADING: "hlsSubtitleTrackLoading",
  127. SUBTITLE_TRACK_LOADED: "hlsSubtitleTrackLoaded",
  128. SUBTITLE_FRAG_PROCESSED: "hlsSubtitleFragProcessed",
  129. INIT_PTS_FOUND: "hlsInitPtsFound",
  130. FRAG_LOADING: "hlsFragLoading",
  131. FRAG_LOAD_PROGRESS: "hlsFragLoadProgress",
  132. FRAG_LOAD_EMERGENCY_ABORTED: "hlsFragLoadEmergencyAborted",
  133. FRAG_LOADED: "hlsFragLoaded",
  134. FRAG_DECRYPTED: "hlsFragDecrypted",
  135. FRAG_PARSING_INIT_SEGMENT: "hlsFragParsingInitSegment",
  136. FRAG_PARSING_USERDATA: "hlsFragParsingUserdata",
  137. FRAG_PARSING_METADATA: "hlsFragParsingMetadata",
  138. FRAG_PARSING_DATA: "hlsFragParsingData",
  139. FRAG_PARSED: "hlsFragParsed",
  140. FRAG_BUFFERED: "hlsFragBuffered",
  141. FRAG_CHANGED: "hlsFragChanged",
  142. FPS_DROP: "hlsFpsDrop",
  143. FPS_DROP_LEVEL_CAPPING: "hlsFpsDropLevelCapping",
  144. ERROR: "hlsError",
  145. DESTROYING: "hlsDestroying",
  146. KEY_LOADING: "hlsKeyLoading",
  147. KEY_LOADED: "hlsKeyLoaded",
  148. STREAM_STATE_TRANSITION: "hlsStreamStateTransition"
  149. }
  150. }, function(e, t, r) {
  151. "use strict";
  152. Object.defineProperty(t, "__esModule", {
  153. value: !0
  154. });
  155. var i = r(6).getSelfScope().Number;
  156. t.Number = i, i.isFinite = i.isFinite || function(e) {
  157. return "number" == typeof e && isFinite(e)
  158. }
  159. }, function(e, t, r) {
  160. "use strict";
  161. Object.defineProperty(t, "__esModule", {
  162. value: !0
  163. }), t.ErrorTypes = {
  164. NETWORK_ERROR: "networkError",
  165. MEDIA_ERROR: "mediaError",
  166. KEY_SYSTEM_ERROR: "keySystemError",
  167. MUX_ERROR: "muxError",
  168. OTHER_ERROR: "otherError"
  169. }, t.ErrorDetails = {
  170. KEY_SYSTEM_NO_KEYS: "keySystemNoKeys",
  171. KEY_SYSTEM_NO_ACCESS: "keySystemNoAccess",
  172. KEY_SYSTEM_NO_SESSION: "keySystemNoSession",
  173. KEY_SYSTEM_LICENSE_REQUEST_FAILED: "keySystemLicenseRequestFailed",
  174. MANIFEST_LOAD_ERROR: "manifestLoadError",
  175. MANIFEST_LOAD_TIMEOUT: "manifestLoadTimeOut",
  176. MANIFEST_PARSING_ERROR: "manifestParsingError",
  177. MANIFEST_INCOMPATIBLE_CODECS_ERROR: "manifestIncompatibleCodecsError",
  178. LEVEL_LOAD_ERROR: "levelLoadError",
  179. LEVEL_LOAD_TIMEOUT: "levelLoadTimeOut",
  180. LEVEL_SWITCH_ERROR: "levelSwitchError",
  181. AUDIO_TRACK_LOAD_ERROR: "audioTrackLoadError",
  182. AUDIO_TRACK_LOAD_TIMEOUT: "audioTrackLoadTimeOut",
  183. FRAG_LOAD_ERROR: "fragLoadError",
  184. FRAG_LOAD_TIMEOUT: "fragLoadTimeOut",
  185. FRAG_DECRYPT_ERROR: "fragDecryptError",
  186. FRAG_PARSING_ERROR: "fragParsingError",
  187. REMUX_ALLOC_ERROR: "remuxAllocError",
  188. KEY_LOAD_ERROR: "keyLoadError",
  189. KEY_LOAD_TIMEOUT: "keyLoadTimeOut",
  190. BUFFER_ADD_CODEC_ERROR: "bufferAddCodecError",
  191. BUFFER_APPEND_ERROR: "bufferAppendError",
  192. BUFFER_APPENDING_ERROR: "bufferAppendingError",
  193. BUFFER_STALLED_ERROR: "bufferStalledError",
  194. BUFFER_FULL_ERROR: "bufferFullError",
  195. BUFFER_SEEK_OVER_HOLE: "bufferSeekOverHole",
  196. BUFFER_NUDGE_ON_STALL: "bufferNudgeOnStall",
  197. INTERNAL_EXCEPTION: "internalException"
  198. }
  199. }, function(e, t, r) {
  200. "use strict";
  201. Object.defineProperty(t, "__esModule", {
  202. value: !0
  203. });
  204. var i = r(0),
  205. a = r(3),
  206. n = r(1),
  207. o = {
  208. hlsEventGeneric: !0,
  209. hlsHandlerDestroying: !0,
  210. hlsHandlerDestroyed: !0
  211. },
  212. s = function() {
  213. function e(e) {
  214. for (var t = [], r = 1; r < arguments.length; r++) t[r - 1] = arguments[r];
  215. this.hls = e, this.onEvent = this.onEvent.bind(this), this.handledEvents = t, this.useGenericHandler = !0, this.registerListeners()
  216. }
  217. return e.prototype.destroy = function() {
  218. this.onHandlerDestroying(), this.unregisterListeners(), this.onHandlerDestroyed()
  219. }, e.prototype.onHandlerDestroying = function() {}, e.prototype.onHandlerDestroyed = function() {}, e.prototype.isEventHandler = function() {
  220. return "object" == typeof this.handledEvents && this.handledEvents.length && "function" == typeof this.onEvent
  221. }, e.prototype.registerListeners = function() {
  222. this.isEventHandler() && this.handledEvents.forEach(function(e) {
  223. if (o[e]) throw new Error("Forbidden event-name: " + e);
  224. this.hls.on(e, this.onEvent)
  225. }, this)
  226. }, e.prototype.unregisterListeners = function() {
  227. this.isEventHandler() && this.handledEvents.forEach(function(e) {
  228. this.hls.off(e, this.onEvent)
  229. }, this)
  230. }, e.prototype.onEvent = function(e, t) {
  231. this.onEventGeneric(e, t)
  232. }, e.prototype.onEventGeneric = function(e, t) {
  233. try {
  234. (function(e, t) {
  235. var r = "on" + e.replace("hls", "");
  236. if ("function" != typeof this[r]) throw new Error("Event " + e + " has no generic handler in this " + this.constructor.name + " class (tried " + r + ")");
  237. return this[r].bind(this, t)
  238. }).call(this, e, t).call()
  239. } catch (t) {
  240. i.logger.error("An internal error happened while handling event " + e + '. Error message: "' + t.message + '". Here is a stacktrace:', t), this.hls.trigger(n.default.ERROR, {
  241. type: a.ErrorTypes.OTHER_ERROR,
  242. details: a.ErrorDetails.INTERNAL_EXCEPTION,
  243. fatal: !1,
  244. event: e,
  245. err: t
  246. })
  247. }
  248. }, e
  249. }();
  250. t.default = s
  251. }, function(e, t, r) {
  252. "use strict";
  253. Object.defineProperty(t, "__esModule", {
  254. value: !0
  255. });
  256. var i = function() {
  257. function e() {}
  258. return e.isBuffered = function(e, t) {
  259. try {
  260. if (e)
  261. for (var r = e.buffered, i = 0; i < r.length; i++)
  262. if (t >= r.start(i) && t <= r.end(i)) return !0
  263. } catch (e) {}
  264. return !1
  265. }, e.bufferInfo = function(e, t, r) {
  266. try {
  267. if (e) {
  268. var i = e.buffered,
  269. a = [],
  270. n = void 0;
  271. for (n = 0; n < i.length; n++) a.push({
  272. start: i.start(n),
  273. end: i.end(n)
  274. });
  275. return this.bufferedInfo(a, t, r)
  276. }
  277. } catch (e) {}
  278. return {
  279. len: 0,
  280. start: t,
  281. end: t,
  282. nextStart: void 0
  283. }
  284. }, e.bufferedInfo = function(e, t, r) {
  285. var i, a, n, o, s, l = [];
  286. for (e.sort(function(e, t) {
  287. var r = e.start - t.start;
  288. return r || t.end - e.end
  289. }), s = 0; s < e.length; s++) {
  290. var u = l.length;
  291. if (u) {
  292. var d = l[u - 1].end;
  293. e[s].start - d < r ? e[s].end > d && (l[u - 1].end = e[s].end) : l.push(e[s])
  294. } else l.push(e[s])
  295. }
  296. for (s = 0, i = 0, a = n = t; s < l.length; s++) {
  297. var f = l[s].start,
  298. c = l[s].end;
  299. if (t + r >= f && t < c) a = f, i = (n = c) - t;
  300. else if (t + r < f) {
  301. o = f;
  302. break
  303. }
  304. }
  305. return {
  306. len: i,
  307. start: a,
  308. end: n,
  309. nextStart: o
  310. }
  311. }, e
  312. }();
  313. t.BufferHelper = i
  314. }, function(e, t, r) {
  315. "use strict";
  316. Object.defineProperty(t, "__esModule", {
  317. value: !0
  318. }), t.getSelfScope = function() {
  319. return "undefined" == typeof window ? self : window
  320. }
  321. }, function(e, t, r) {
  322. "use strict";
  323. (function(e) {
  324. var i = this && this.__extends || function() {
  325. var e = Object.setPrototypeOf || {
  326. __proto__: []
  327. }
  328. instanceof Array && function(e, t) {
  329. e.__proto__ = t
  330. } || function(e, t) {
  331. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  332. };
  333. return function(t, r) {
  334. function i() {
  335. this.constructor = t
  336. }
  337. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  338. }
  339. }();
  340. Object.defineProperty(t, "__esModule", {
  341. value: !0
  342. });
  343. var a = r(4),
  344. n = r(1);
  345. t.FragmentState = {
  346. NOT_LOADED: "NOT_LOADED",
  347. APPENDING: "APPENDING",
  348. PARTIAL: "PARTIAL",
  349. OK: "OK"
  350. };
  351. var o = function(r) {
  352. function o(e) {
  353. var t = r.call(this, e, n.default.BUFFER_APPENDED, n.default.FRAG_BUFFERED, n.default.FRAG_LOADED) || this;
  354. return t.bufferPadding = .2, t.fragments = Object.create(null), t.timeRanges = Object.create(null), t.config = e.config, t
  355. }
  356. return i(o, r), o.prototype.destroy = function() {
  357. this.fragments = Object.create(null), this.timeRanges = Object.create(null), this.config = null, a.default.prototype.destroy.call(this), r.prototype.destroy.call(this)
  358. }, o.prototype.getBufferedFrag = function(e, t) {
  359. var r = this.fragments,
  360. i = Object.keys(r).filter(function(i) {
  361. var a = r[i];
  362. if (a.body.type !== t) return !1;
  363. if (!a.buffered) return !1;
  364. var n = a.body;
  365. return n.startPTS <= e && e <= n.endPTS
  366. });
  367. if (0 === i.length) return null;
  368. var a = i.pop();
  369. return r[a].body
  370. }, o.prototype.detectEvictedFragments = function(e, t) {
  371. var r, i, a = this;
  372. Object.keys(this.fragments).forEach(function(n) {
  373. var o = a.fragments[n];
  374. if (!0 === o.buffered) {
  375. var s = o.range[e];
  376. if (s) {
  377. r = s.time;
  378. for (var l = 0; l < r.length; l++)
  379. if (i = r[l], !1 === a.isTimeBuffered(i.startPTS, i.endPTS, t)) {
  380. a.removeFragment(o.body);
  381. break
  382. }
  383. }
  384. }
  385. })
  386. }, o.prototype.detectPartialFragments = function(e) {
  387. var t = this,
  388. r = this.getFragmentKey(e),
  389. i = this.fragments[r];
  390. i && (i.buffered = !0, Object.keys(this.timeRanges).forEach(function(r) {
  391. if (e.hasElementaryStream(r)) {
  392. var a = t.timeRanges[r];
  393. i.range[r] = t.getBufferedTimes(e.startPTS, e.endPTS, a)
  394. }
  395. }))
  396. }, o.prototype.getBufferedTimes = function(e, t, r) {
  397. for (var i, a, n = [], o = !1, s = 0; s < r.length; s++) {
  398. if (i = r.start(s) - this.bufferPadding, a = r.end(s) + this.bufferPadding, e >= i && t <= a) {
  399. n.push({
  400. startPTS: Math.max(e, r.start(s)),
  401. endPTS: Math.min(t, r.end(s))
  402. });
  403. break
  404. }
  405. if (e < a && t > i) n.push({
  406. startPTS: Math.max(e, r.start(s)),
  407. endPTS: Math.min(t, r.end(s))
  408. }), o = !0;
  409. else if (t <= i) break
  410. }
  411. return {
  412. time: n,
  413. partial: o
  414. }
  415. }, o.prototype.getFragmentKey = function(e) {
  416. return e.type + "_" + e.level + "_" + e.urlId + "_" + e.sn
  417. }, o.prototype.getPartialFragment = function(e) {
  418. var t, r, i, a = this,
  419. n = null,
  420. o = 0;
  421. return Object.keys(this.fragments).forEach(function(s) {
  422. var l = a.fragments[s];
  423. a.isPartial(l) && (r = l.body.startPTS - a.bufferPadding, i = l.body.endPTS + a.bufferPadding, e >= r && e <= i && (t = Math.min(e - r, i - e), o <= t && (n = l.body, o = t)))
  424. }), n
  425. }, o.prototype.getState = function(e) {
  426. var r = this.getFragmentKey(e),
  427. i = this.fragments[r],
  428. a = t.FragmentState.NOT_LOADED;
  429. return void 0 !== i && (a = i.buffered ? !0 === this.isPartial(i) ? t.FragmentState.PARTIAL : t.FragmentState.OK : t.FragmentState.APPENDING), a
  430. }, o.prototype.isPartial = function(e) {
  431. return !0 === e.buffered && (void 0 !== e.range.video && !0 === e.range.video.partial || void 0 !== e.range.audio && !0 === e.range.audio.partial)
  432. }, o.prototype.isTimeBuffered = function(e, t, r) {
  433. for (var i, a, n = 0; n < r.length; n++) {
  434. if (i = r.start(n) - this.bufferPadding, a = r.end(n) + this.bufferPadding, e >= i && t <= a) return !0;
  435. if (t <= i) return !1
  436. }
  437. return !1
  438. }, o.prototype.onFragLoaded = function(t) {
  439. var r = t.frag;
  440. e.isFinite(r.sn) && !r.bitrateTest && (this.fragments[this.getFragmentKey(r)] = {
  441. body: r,
  442. range: Object.create(null),
  443. buffered: !1
  444. })
  445. }, o.prototype.onBufferAppended = function(e) {
  446. var t = this;
  447. this.timeRanges = e.timeRanges, Object.keys(this.timeRanges).forEach(function(e) {
  448. var r = t.timeRanges[e];
  449. t.detectEvictedFragments(e, r)
  450. })
  451. }, o.prototype.onFragBuffered = function(e) {
  452. this.detectPartialFragments(e.frag)
  453. }, o.prototype.hasFragment = function(e) {
  454. var t = this.getFragmentKey(e);
  455. return void 0 !== this.fragments[t]
  456. }, o.prototype.removeFragment = function(e) {
  457. var t = this.getFragmentKey(e);
  458. delete this.fragments[t]
  459. }, o.prototype.removeAllFragments = function() {
  460. this.fragments = Object.create(null)
  461. }, o
  462. }(a.default);
  463. t.FragmentTracker = o
  464. }).call(this, r(2).Number)
  465. }, function(e, t, r) {
  466. "use strict";
  467. (function(e) {
  468. Object.defineProperty(t, "__esModule", {
  469. value: !0
  470. });
  471. var i = r(0);
  472.  
  473. function a(t, r, a) {
  474. var n = t[r],
  475. o = t[a],
  476. s = o.startPTS;
  477. e.isFinite(s) ? a > r ? (n.duration = s - n.start, n.duration < 0 && i.logger.warn("negative duration computed for frag " + n.sn + ",level " + n.level + ", there should be some duration drift between playlist and fragment!")) : (o.duration = n.start - s, o.duration < 0 && i.logger.warn("negative duration computed for frag " + o.sn + ",level " + o.level + ", there should be some duration drift between playlist and fragment!")) : o.start = a > r ? n.start + n.duration : Math.max(n.start - o.duration, 0)
  478. }
  479.  
  480. function n(t, r, i, n, o, s) {
  481. var l = i;
  482. if (e.isFinite(r.startPTS)) {
  483. var u = Math.abs(r.startPTS - i);
  484. e.isFinite(r.deltaPTS) ? r.deltaPTS = Math.max(u, r.deltaPTS) : r.deltaPTS = u, l = Math.max(i, r.startPTS), i = Math.min(i, r.startPTS), n = Math.max(n, r.endPTS), o = Math.min(o, r.startDTS), s = Math.max(s, r.endDTS)
  485. }
  486. var d = i - r.start;
  487. r.start = r.startPTS = i, r.maxStartPTS = l, r.endPTS = n, r.startDTS = o, r.endDTS = s, r.duration = n - i;
  488. var f, c, h, p = r.sn;
  489. if (!t || p < t.startSN || p > t.endSN) return 0;
  490. for (f = p - t.startSN, (c = t.fragments)[f] = r, h = f; h > 0; h--) a(c, h, h - 1);
  491. for (h = f; h < c.length - 1; h++) a(c, h, h + 1);
  492. return t.PTSKnown = !0, d
  493. }
  494.  
  495. function o(e, t, r) {
  496. if (e && t)
  497. for (var i = Math.max(e.startSN, t.startSN) - t.startSN, a = Math.min(e.endSN, t.endSN) - t.startSN, n = t.startSN - e.startSN, o = i; o <= a; o++) {
  498. var s = e.fragments[n + o],
  499. l = t.fragments[o];
  500. if (!s || !l) break;
  501. r(s, l, o)
  502. }
  503. }
  504.  
  505. function s(e, t) {
  506. var r = t.startSN - e.startSN,
  507. i = e.fragments,
  508. a = t.fragments;
  509. if (!(r < 0 || r > i.length))
  510. for (var n = 0; n < a.length; n++) a[n].start += i[r].start
  511. }
  512. t.addGroupId = function(e, t, r) {
  513. switch (t) {
  514. case "audio":
  515. e.audioGroupIds || (e.audioGroupIds = []), e.audioGroupIds.push(r);
  516. break;
  517. case "text":
  518. e.textGroupIds || (e.textGroupIds = []), e.textGroupIds.push(r)
  519. }
  520. }, t.updatePTS = a, t.updateFragPTSDTS = n, t.mergeDetails = function(t, r) {
  521. r.initSegment && t.initSegment && (r.initSegment = t.initSegment);
  522. var a, l = 0;
  523. if (o(t, r, function(t, i) {
  524. l = t.cc - i.cc, e.isFinite(t.startPTS) && (i.start = i.startPTS = t.startPTS, i.endPTS = t.endPTS, i.duration = t.duration, i.backtracked = t.backtracked, i.dropped = t.dropped, a = i), r.PTSKnown = !0
  525. }), r.PTSKnown) {
  526. if (l) {
  527. i.logger.log("discontinuity sliding from playlist, take drift into account");
  528. for (var u = r.fragments, d = 0; d < u.length; d++) u[d].cc += l
  529. }
  530. a ? n(r, a, a.startPTS, a.endPTS, a.startDTS, a.endDTS) : s(t, r), r.PTSKnown = t.PTSKnown
  531. }
  532. }, t.mergeSubtitlePlaylists = function(e, t, r) {
  533. void 0 === r && (r = 0);
  534. var i = -1;
  535. o(e, t, function(e, t, r) {
  536. t.start = e.start, i = r
  537. });
  538. var a = t.fragments;
  539. if (i < 0) a.forEach(function(e) {
  540. e.start += r
  541. });
  542. else
  543. for (var n = i + 1; n < a.length; n++) a[n].start = a[n - 1].start + a[n - 1].duration
  544. }, t.mapFragmentIntersection = o, t.adjustSliding = s, t.computeReloadInterval = function(e, t, r) {
  545. var i = 1e3 * (t.averagetargetduration ? t.averagetargetduration : t.targetduration),
  546. a = i / 2;
  547. return e && t.endSN === e.endSN && (i = a), r && (i = Math.max(a, i - (window.performance.now() - r))), Math.round(i)
  548. }
  549. }).call(this, r(2).Number)
  550. }, function(e, t, r) {
  551. ! function(t) {
  552. var r = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,
  553. i = /^([^\/?#]*)(.*)$/,
  554. a = /(?:\/|^)\.(?=\/)/g,
  555. n = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,
  556. o = {
  557. buildAbsoluteURL: function(e, t, r) {
  558. if (r = r || {}, e = e.trim(), !(t = t.trim())) {
  559. if (!r.alwaysNormalize) return e;
  560. var a = o.parseURL(e);
  561. if (!a) throw new Error("Error trying to parse base URL.");
  562. return a.path = o.normalizePath(a.path), o.buildURLFromParts(a)
  563. }
  564. var n = o.parseURL(t);
  565. if (!n) throw new Error("Error trying to parse relative URL.");
  566. if (n.scheme) return r.alwaysNormalize ? (n.path = o.normalizePath(n.path), o.buildURLFromParts(n)) : t;
  567. var s = o.parseURL(e);
  568. if (!s) throw new Error("Error trying to parse base URL.");
  569. if (!s.netLoc && s.path && "/" !== s.path[0]) {
  570. var l = i.exec(s.path);
  571. s.netLoc = l[1], s.path = l[2]
  572. }
  573. s.netLoc && !s.path && (s.path = "/");
  574. var u = {
  575. scheme: s.scheme,
  576. netLoc: n.netLoc,
  577. path: null,
  578. params: n.params,
  579. query: n.query,
  580. fragment: n.fragment
  581. };
  582. if (!n.netLoc && (u.netLoc = s.netLoc, "/" !== n.path[0]))
  583. if (n.path) {
  584. var d = s.path,
  585. f = d.substring(0, d.lastIndexOf("/") + 1) + n.path;
  586. u.path = o.normalizePath(f)
  587. } else u.path = s.path, n.params || (u.params = s.params, n.query || (u.query = s.query));
  588. return null === u.path && (u.path = r.alwaysNormalize ? o.normalizePath(n.path) : n.path), o.buildURLFromParts(u)
  589. },
  590. parseURL: function(e) {
  591. var t = r.exec(e);
  592. return t ? {
  593. scheme: t[1] || "",
  594. netLoc: t[2] || "",
  595. path: t[3] || "",
  596. params: t[4] || "",
  597. query: t[5] || "",
  598. fragment: t[6] || ""
  599. } : null
  600. },
  601. normalizePath: function(e) {
  602. for (e = e.split("").reverse().join("").replace(a, ""); e.length !== (e = e.replace(n, "")).length;);
  603. return e.split("").reverse().join("")
  604. },
  605. buildURLFromParts: function(e) {
  606. return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
  607. }
  608. };
  609. e.exports = o
  610. }()
  611. }, function(e, t, r) {
  612. "use strict";
  613. Object.defineProperty(t, "__esModule", {
  614. value: !0
  615. });
  616. t.default = {
  617. search: function(e, t) {
  618. for (var r = 0, i = e.length - 1, a = null, n = null; r <= i;) {
  619. var o = t(n = e[a = (r + i) / 2 | 0]);
  620. if (o > 0) r = a + 1;
  621. else {
  622. if (!(o < 0)) return n;
  623. i = a - 1
  624. }
  625. }
  626. return null
  627. }
  628. }
  629. }, function(e, t, r) {
  630. "use strict";
  631. Object.defineProperty(t, "__esModule", {
  632. value: !0
  633. });
  634. var i = function() {
  635. function e() {}
  636. return e.isHeader = function(e, t) {
  637. return t + 10 <= e.length && 73 === e[t] && 68 === e[t + 1] && 51 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
  638. }, e.isFooter = function(e, t) {
  639. return t + 10 <= e.length && 51 === e[t] && 68 === e[t + 1] && 73 === e[t + 2] && e[t + 3] < 255 && e[t + 4] < 255 && e[t + 6] < 128 && e[t + 7] < 128 && e[t + 8] < 128 && e[t + 9] < 128
  640. }, e.getID3Data = function(t, r) {
  641. for (var i = r, a = 0; e.isHeader(t, r);) {
  642. a += 10, a += e._readSize(t, r + 6), e.isFooter(t, r + 10) && (a += 10), r += a
  643. }
  644. if (a > 0) return t.subarray(i, i + a)
  645. }, e._readSize = function(e, t) {
  646. var r = 0;
  647. return r = (127 & e[t]) << 21, r |= (127 & e[t + 1]) << 14, r |= (127 & e[t + 2]) << 7, r |= 127 & e[t + 3]
  648. }, e.getTimeStamp = function(t) {
  649. for (var r = e.getID3Frames(t), i = 0; i < r.length; i++) {
  650. var a = r[i];
  651. if (e.isTimeStampFrame(a)) return e._readTimeStamp(a)
  652. }
  653. }, e.isTimeStampFrame = function(e) {
  654. return e && "PRIV" === e.key && "com.apple.streaming.transportStreamTimestamp" === e.info
  655. }, e._getFrameData = function(t) {
  656. var r = String.fromCharCode(t[0], t[1], t[2], t[3]),
  657. i = e._readSize(t, 4);
  658. return {
  659. type: r,
  660. size: i,
  661. data: t.subarray(10, 10 + i)
  662. }
  663. }, e.getID3Frames = function(t) {
  664. for (var r = 0, i = []; e.isHeader(t, r);) {
  665. for (var a = e._readSize(t, r + 6), n = (r += 10) + a; r + 8 < n;) {
  666. var o = e._getFrameData(t.subarray(r)),
  667. s = e._decodeFrame(o);
  668. s && i.push(s), r += o.size + 10
  669. }
  670. e.isFooter(t, r) && (r += 10)
  671. }
  672. return i
  673. }, e._decodeFrame = function(t) {
  674. return "PRIV" === t.type ? e._decodePrivFrame(t) : "T" === t.type[0] ? e._decodeTextFrame(t) : "W" === t.type[0] ? e._decodeURLFrame(t) : void 0
  675. }, e._readTimeStamp = function(e) {
  676. if (8 === e.data.byteLength) {
  677. var t = new Uint8Array(e.data),
  678. r = 1 & t[3],
  679. i = (t[4] << 23) + (t[5] << 15) + (t[6] << 7) + t[7];
  680. return i /= 45, r && (i += 47721858.84), Math.round(i)
  681. }
  682. }, e._decodePrivFrame = function(t) {
  683. if (!(t.size < 2)) {
  684. var r = e._utf8ArrayToStr(t.data, !0),
  685. i = new Uint8Array(t.data.subarray(r.length + 1));
  686. return {
  687. key: t.type,
  688. info: r,
  689. data: i.buffer
  690. }
  691. }
  692. }, e._decodeTextFrame = function(t) {
  693. if (!(t.size < 2)) {
  694. if ("TXXX" === t.type) {
  695. var r = 1,
  696. i = e._utf8ArrayToStr(t.data.subarray(r));
  697. r += i.length + 1;
  698. var a = e._utf8ArrayToStr(t.data.subarray(r));
  699. return {
  700. key: t.type,
  701. info: i,
  702. data: a
  703. }
  704. }
  705. var n = e._utf8ArrayToStr(t.data.subarray(1));
  706. return {
  707. key: t.type,
  708. data: n
  709. }
  710. }
  711. }, e._decodeURLFrame = function(t) {
  712. if ("WXXX" === t.type) {
  713. if (t.size < 2) return;
  714. var r = 1,
  715. i = e._utf8ArrayToStr(t.data.subarray(r));
  716. r += i.length + 1;
  717. var a = e._utf8ArrayToStr(t.data.subarray(r));
  718. return {
  719. key: t.type,
  720. info: i,
  721. data: a
  722. }
  723. }
  724. var n = e._utf8ArrayToStr(t.data);
  725. return {
  726. key: t.type,
  727. data: n
  728. }
  729. }, e._utf8ArrayToStr = function(e, t) {
  730. void 0 === t && (t = !1);
  731. for (var r, i, a, n = e.length, o = "", s = 0; s < n;) {
  732. if (0 === (r = e[s++]) && t) return o;
  733. if (0 !== r && 3 !== r) switch (r >> 4) {
  734. case 0:
  735. case 1:
  736. case 2:
  737. case 3:
  738. case 4:
  739. case 5:
  740. case 6:
  741. case 7:
  742. o += String.fromCharCode(r);
  743. break;
  744. case 12:
  745. case 13:
  746. i = e[s++], o += String.fromCharCode((31 & r) << 6 | 63 & i);
  747. break;
  748. case 14:
  749. i = e[s++], a = e[s++], o += String.fromCharCode((15 & r) << 12 | (63 & i) << 6 | (63 & a) << 0)
  750. }
  751. }
  752. return o
  753. }, e
  754. }(),
  755. a = i._utf8ArrayToStr;
  756. t.utf8ArrayToStr = a, t.default = i
  757. }, function(e, t, r) {
  758. "use strict";
  759. (function(e) {
  760. Object.defineProperty(t, "__esModule", {
  761. value: !0
  762. });
  763. var i = r(9),
  764. a = r(18),
  765. n = function() {
  766. function t() {
  767. var e;
  768. this._url = null, this._byteRange = null, this._decryptdata = null, this.tagList = [], this.programDateTime = null, this.rawProgramDateTime = null, this._elementaryStreams = ((e = {})[t.ElementaryStreamTypes.AUDIO] = !1, e[t.ElementaryStreamTypes.VIDEO] = !1, e)
  769. }
  770. return Object.defineProperty(t, "ElementaryStreamTypes", {
  771. get: function() {
  772. return {
  773. AUDIO: "audio",
  774. VIDEO: "video"
  775. }
  776. },
  777. enumerable: !0,
  778. configurable: !0
  779. }), Object.defineProperty(t.prototype, "url", {
  780. get: function() {
  781. return !this._url && this.relurl && (this._url = i.buildAbsoluteURL(this.baseurl, this.relurl, {
  782. alwaysNormalize: !0
  783. })), this._url
  784. },
  785. set: function(e) {
  786. this._url = e
  787. },
  788. enumerable: !0,
  789. configurable: !0
  790. }), Object.defineProperty(t.prototype, "byteRange", {
  791. get: function() {
  792. if (!this._byteRange && !this.rawByteRange) return [];
  793. if (this._byteRange) return this._byteRange;
  794. var e = [];
  795. if (this.rawByteRange) {
  796. var t = this.rawByteRange.split("@", 2);
  797. if (1 === t.length) {
  798. var r = this.lastByteRangeEndOffset;
  799. e[0] = r || 0
  800. } else e[0] = parseInt(t[1]);
  801. e[1] = parseInt(t[0]) + e[0], this._byteRange = e
  802. }
  803. return e
  804. },
  805. enumerable: !0,
  806. configurable: !0
  807. }), Object.defineProperty(t.prototype, "byteRangeStartOffset", {
  808. get: function() {
  809. return this.byteRange[0]
  810. },
  811. enumerable: !0,
  812. configurable: !0
  813. }), Object.defineProperty(t.prototype, "byteRangeEndOffset", {
  814. get: function() {
  815. return this.byteRange[1]
  816. },
  817. enumerable: !0,
  818. configurable: !0
  819. }), Object.defineProperty(t.prototype, "decryptdata", {
  820. get: function() {
  821. return this._decryptdata || (this._decryptdata = this.fragmentDecryptdataFromLevelkey(this.levelkey, this.sn)), this._decryptdata
  822. },
  823. enumerable: !0,
  824. configurable: !0
  825. }), Object.defineProperty(t.prototype, "endProgramDateTime", {
  826. get: function() {
  827. if (!e.isFinite(this.programDateTime)) return null;
  828. var t = e.isFinite(this.duration) ? this.duration : 0;
  829. return this.programDateTime + 1e3 * t
  830. },
  831. enumerable: !0,
  832. configurable: !0
  833. }), Object.defineProperty(t.prototype, "encrypted", {
  834. get: function() {
  835. return !(!this.decryptdata || null === this.decryptdata.uri || null !== this.decryptdata.key)
  836. },
  837. enumerable: !0,
  838. configurable: !0
  839. }), t.prototype.addElementaryStream = function(e) {
  840. this._elementaryStreams[e] = !0
  841. }, t.prototype.hasElementaryStream = function(e) {
  842. return !0 === this._elementaryStreams[e]
  843. }, t.prototype.createInitializationVector = function(e) {
  844. for (var t = new Uint8Array(16), r = 12; r < 16; r++) t[r] = e >> 8 * (15 - r) & 255;
  845. return t
  846. }, t.prototype.fragmentDecryptdataFromLevelkey = function(e, t) {
  847. var r = e;
  848. return e && e.method && e.uri && !e.iv && ((r = new a.default).method = e.method, r.baseuri = e.baseuri, r.reluri = e.reluri, r.iv = this.createInitializationVector(t)), r
  849. }, t
  850. }();
  851. t.default = n
  852. }).call(this, r(2).Number)
  853. }, function(e, t, r) {
  854. "use strict";
  855. Object.defineProperty(t, "__esModule", {
  856. value: !0
  857. });
  858. var i = r(39),
  859. a = r(40),
  860. n = r(41),
  861. o = r(3),
  862. s = r(0),
  863. l = r(1),
  864. u = r(6).getSelfScope(),
  865. d = function() {
  866. function e(e, t, r) {
  867. var i = (void 0 === r ? {} : r).removePKCS7Padding,
  868. a = void 0 === i || i;
  869. if (this.logEnabled = !0, this.observer = e, this.config = t, this.removePKCS7Padding = a, a) try {
  870. var n = u.crypto;
  871. n && (this.subtle = n.subtle || n.webkitSubtle)
  872. } catch (e) {}
  873. this.disableWebCrypto = !this.subtle
  874. }
  875. return e.prototype.isSync = function() {
  876. return this.disableWebCrypto && this.config.enableSoftwareAES
  877. }, e.prototype.decrypt = function(e, t, r, o) {
  878. var l = this;
  879. if (this.disableWebCrypto && this.config.enableSoftwareAES) {
  880. this.logEnabled && (s.logger.log("JS AES decrypt"), this.logEnabled = !1);
  881. var u = this.decryptor;
  882. u || (this.decryptor = u = new n.default), u.expandKey(t), o(u.decrypt(e, 0, r, this.removePKCS7Padding))
  883. } else {
  884. this.logEnabled && (s.logger.log("WebCrypto AES decrypt"), this.logEnabled = !1);
  885. var d = this.subtle;
  886. this.key !== t && (this.key = t, this.fastAesKey = new a.default(d, t)), this.fastAesKey.expandKey().then(function(a) {
  887. new i.default(d, r).decrypt(e, a).catch(function(i) {
  888. l.onWebCryptoError(i, e, t, r, o)
  889. }).then(function(e) {
  890. o(e)
  891. })
  892. }).catch(function(i) {
  893. l.onWebCryptoError(i, e, t, r, o)
  894. })
  895. }
  896. }, e.prototype.onWebCryptoError = function(e, t, r, i, a) {
  897. this.config.enableSoftwareAES ? (s.logger.log("WebCrypto Error, disable WebCrypto API"), this.disableWebCrypto = !0, this.logEnabled = !0, this.decrypt(t, r, i, a)) : (s.logger.error("decrypting error : " + e.message), this.observer.trigger(l.default.ERROR, {
  898. type: o.ErrorTypes.MEDIA_ERROR,
  899. details: o.ErrorDetails.FRAG_DECRYPT_ERROR,
  900. fatal: !0,
  901. reason: e.message
  902. }))
  903. }, e.prototype.destroy = function() {
  904. var e = this.decryptor;
  905. e && (e.destroy(), this.decryptor = void 0)
  906. }, e
  907. }();
  908. t.default = d
  909. }, function(e, t, r) {
  910. "use strict";
  911. Object.defineProperty(t, "__esModule", {
  912. value: !0
  913. }), t.getMediaSource = function() {
  914. if ("undefined" != typeof window) return window.MediaSource || window.WebKitMediaSource
  915. }
  916. }, function(e, t, r) {
  917. "use strict";
  918. (function(e) {
  919. var i = this && this.__extends || function() {
  920. var e = Object.setPrototypeOf || {
  921. __proto__: []
  922. }
  923. instanceof Array && function(e, t) {
  924. e.__proto__ = t
  925. } || function(e, t) {
  926. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  927. };
  928. return function(t, r) {
  929. function i() {
  930. this.constructor = t
  931. }
  932. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  933. }
  934. }();
  935. Object.defineProperty(t, "__esModule", {
  936. value: !0
  937. });
  938. var a = r(28),
  939. n = r(7),
  940. o = r(5),
  941. s = r(0);
  942. t.State = {
  943. STOPPED: "STOPPED",
  944. STARTING: "STARTING",
  945. IDLE: "IDLE",
  946. PAUSED: "PAUSED",
  947. KEY_LOADING: "KEY_LOADING",
  948. FRAG_LOADING: "FRAG_LOADING",
  949. FRAG_LOADING_WAITING_RETRY: "FRAG_LOADING_WAITING_RETRY",
  950. WAITING_TRACK: "WAITING_TRACK",
  951. PARSING: "PARSING",
  952. PARSED: "PARSED",
  953. BUFFER_FLUSHING: "BUFFER_FLUSHING",
  954. ENDED: "ENDED",
  955. ERROR: "ERROR",
  956. WAITING_INIT_PTS: "WAITING_INIT_PTS",
  957. WAITING_LEVEL: "WAITING_LEVEL"
  958. };
  959. var l = function(r) {
  960. function a() {
  961. return null !== r && r.apply(this, arguments) || this
  962. }
  963. return i(a, r), a.prototype.doTick = function() {}, a.prototype.startLoad = function() {}, a.prototype.stopLoad = function() {
  964. var e = this.fragCurrent;
  965. e && (e.loader && e.loader.abort(), this.fragmentTracker.removeFragment(e)), this.demuxer && (this.demuxer.destroy(), this.demuxer = null), this.fragCurrent = null, this.fragPrevious = null, this.clearInterval(), this.clearNextTick(), this.state = t.State.STOPPED
  966. }, a.prototype._streamEnded = function(e, t) {
  967. var r = this.fragCurrent,
  968. i = this.fragmentTracker;
  969. if (!t.live && r && !r.backtracked && r.sn === t.endSN && !e.nextStart) {
  970. var a = i.getState(r);
  971. return a === n.FragmentState.PARTIAL || a === n.FragmentState.OK
  972. }
  973. return !1
  974. }, a.prototype.onMediaSeeking = function() {
  975. var r = this.config,
  976. i = this.media,
  977. a = this.mediaBuffer,
  978. n = this.state,
  979. l = i ? i.currentTime : null,
  980. u = o.BufferHelper.bufferInfo(a || i, l, this.config.maxBufferHole);
  981. if (e.isFinite(l) && s.logger.log("media seeking to " + l.toFixed(3)), n === t.State.FRAG_LOADING) {
  982. var d = this.fragCurrent;
  983. if (0 === u.len && d) {
  984. var f = r.maxFragLookUpTolerance,
  985. c = d.start - f,
  986. h = d.start + d.duration + f;
  987. l < c || l > h ? (d.loader && (s.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load"), d.loader.abort()), this.fragCurrent = null, this.fragPrevious = null, this.state = t.State.IDLE) : s.logger.log("seeking outside of buffer but within currently loaded fragment range")
  988. }
  989. } else n === t.State.ENDED && (0 === u.len && (this.fragPrevious = null, this.fragCurrent = null), this.state = t.State.IDLE);
  990. i && (this.lastCurrentTime = l), this.loadedmetadata || (this.nextLoadPosition = this.startPosition = l), this.tick()
  991. }, a.prototype.onMediaEnded = function() {
  992. this.startPosition = this.lastCurrentTime = 0
  993. }, a.prototype.onHandlerDestroying = function() {
  994. this.stopLoad(), r.prototype.onHandlerDestroying.call(this)
  995. }, a.prototype.onHandlerDestroyed = function() {
  996. this.state = t.State.STOPPED, this.fragmentTracker = null
  997. }, a
  998. }(a.default);
  999. t.default = l
  1000. }).call(this, r(2).Number)
  1001. }, function(e, t, r) {
  1002. "use strict";
  1003. (function(e) {
  1004. var i = this && this.__extends || function() {
  1005. var e = Object.setPrototypeOf || {
  1006. __proto__: []
  1007. }
  1008. instanceof Array && function(e, t) {
  1009. e.__proto__ = t
  1010. } || function(e, t) {
  1011. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  1012. };
  1013. return function(t, r) {
  1014. function i() {
  1015. this.constructor = t
  1016. }
  1017. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  1018. }
  1019. }();
  1020. Object.defineProperty(t, "__esModule", {
  1021. value: !0
  1022. });
  1023. var a = r(1),
  1024. n = r(4),
  1025. o = r(3),
  1026. s = r(0),
  1027. l = r(17),
  1028. u = r(32),
  1029. d = window.performance,
  1030. f = {
  1031. MANIFEST: "manifest",
  1032. LEVEL: "level",
  1033. AUDIO_TRACK: "audioTrack",
  1034. SUBTITLE_TRACK: "subtitleTrack"
  1035. },
  1036. c = {
  1037. MAIN: "main",
  1038. AUDIO: "audio",
  1039. SUBTITLE: "subtitle"
  1040. },
  1041. h = function(t) {
  1042. function r(e) {
  1043. var r = t.call(this, e, a.default.MANIFEST_LOADING, a.default.LEVEL_LOADING, a.default.AUDIO_TRACK_LOADING, a.default.SUBTITLE_TRACK_LOADING) || this;
  1044. return r.loaders = {}, r
  1045. }
  1046. return i(r, t), Object.defineProperty(r, "ContextType", {
  1047. get: function() {
  1048. return f
  1049. },
  1050. enumerable: !0,
  1051. configurable: !0
  1052. }), Object.defineProperty(r, "LevelType", {
  1053. get: function() {
  1054. return c
  1055. },
  1056. enumerable: !0,
  1057. configurable: !0
  1058. }), r.canHaveQualityLevels = function(e) {
  1059. return e !== f.AUDIO_TRACK && e !== f.SUBTITLE_TRACK
  1060. }, r.mapContextToLevelType = function(e) {
  1061. switch (e.type) {
  1062. case f.AUDIO_TRACK:
  1063. return c.AUDIO;
  1064. case f.SUBTITLE_TRACK:
  1065. return c.SUBTITLE;
  1066. default:
  1067. return c.MAIN
  1068. }
  1069. }, r.getResponseUrl = function(e, t) {
  1070. var r = e.url;
  1071. return void 0 !== r && 0 !== r.indexOf("data:") || (r = t.url), r
  1072. }, r.prototype.createInternalLoader = function(e) {
  1073. var t = this.hls.config,
  1074. r = t.pLoader,
  1075. i = t.loader,
  1076. a = new(r || i)(t);
  1077. return e.loader = a, this.loaders[e.type] = a, a
  1078. }, r.prototype.getInternalLoader = function(e) {
  1079. return this.loaders[e.type]
  1080. }, r.prototype.resetInternalLoader = function(e) {
  1081. this.loaders[e] && delete this.loaders[e]
  1082. }, r.prototype.destroyInternalLoaders = function() {
  1083. for (var e in this.loaders) {
  1084. var t = this.loaders[e];
  1085. t && t.destroy(), this.resetInternalLoader(e)
  1086. }
  1087. }, r.prototype.destroy = function() {
  1088. this.destroyInternalLoaders(), t.prototype.destroy.call(this)
  1089. }, r.prototype.onManifestLoading = function(e) {
  1090. this.load(e.url, {
  1091. type: f.MANIFEST,
  1092. level: 0,
  1093. id: null
  1094. })
  1095. }, r.prototype.onLevelLoading = function(e) {
  1096. this.load(e.url, {
  1097. type: f.LEVEL,
  1098. level: e.level,
  1099. id: e.id
  1100. })
  1101. }, r.prototype.onAudioTrackLoading = function(e) {
  1102. this.load(e.url, {
  1103. type: f.AUDIO_TRACK,
  1104. level: null,
  1105. id: e.id
  1106. })
  1107. }, r.prototype.onSubtitleTrackLoading = function(e) {
  1108. this.load(e.url, {
  1109. type: f.SUBTITLE_TRACK,
  1110. level: null,
  1111. id: e.id
  1112. })
  1113. }, r.prototype.load = function(e, t) {
  1114. var r = this.hls.config;
  1115. s.logger.debug("Loading playlist of type " + t.type + ", level: " + t.level + ", id: " + t.id);
  1116. var i, a, n, o, l = this.getInternalLoader(t);
  1117. if (l) {
  1118. var u = l.context;
  1119. if (u && u.url === e) return s.logger.trace("playlist request ongoing"), !1;
  1120. s.logger.warn("aborting previous loader for type: " + t.type), l.abort()
  1121. }
  1122. switch (t.type) {
  1123. case f.MANIFEST:
  1124. i = r.manifestLoadingMaxRetry, a = r.manifestLoadingTimeOut, n = r.manifestLoadingRetryDelay, o = r.manifestLoadingMaxRetryTimeout;
  1125. break;
  1126. case f.LEVEL:
  1127. i = 0, a = r.levelLoadingTimeOut;
  1128. break;
  1129. default:
  1130. i = r.levelLoadingMaxRetry, a = r.levelLoadingTimeOut, n = r.levelLoadingRetryDelay, o = r.levelLoadingMaxRetryTimeout
  1131. }
  1132. l = this.createInternalLoader(t), t.url = e, t.responseType = t.responseType || "";
  1133. var d = {
  1134. timeout: a,
  1135. maxRetry: i,
  1136. retryDelay: n,
  1137. maxRetryDelay: o
  1138. },
  1139. c = {
  1140. onSuccess: this.loadsuccess.bind(this),
  1141. onError: this.loaderror.bind(this),
  1142. onTimeout: this.loadtimeout.bind(this)
  1143. };
  1144. return s.logger.debug("Calling internal loader delegate for URL: " + e), l.load(t, d, c), !0
  1145. }, r.prototype.loadsuccess = function(e, t, r, i) {
  1146. if (void 0 === i && (i = null), r.isSidxRequest) return this._handleSidxRequest(e, r), void this._handlePlaylistLoaded(e, t, r, i);
  1147. this.resetInternalLoader(r.type);
  1148. var a = e.data;
  1149. t.tload = d.now(), 0 === a.indexOf("#EXTM3U") ? a.indexOf("#EXTINF:") > 0 || a.indexOf("#EXT-X-TARGETDURATION:") > 0 ? this._handleTrackOrLevelPlaylist(e, t, r, i) : this._handleMasterPlaylist(e, t, r, i) : this._handleManifestParsingError(e, r, "no EXTM3U delimiter", i)
  1150. }, r.prototype.loaderror = function(e, t, r) {
  1151. void 0 === r && (r = null), this._handleNetworkError(t, r, !1, e)
  1152. }, r.prototype.loadtimeout = function(e, t, r) {
  1153. void 0 === r && (r = null), this._handleNetworkError(t, r, !0)
  1154. }, r.prototype._handleMasterPlaylist = function(e, t, i, n) {
  1155. var o = this.hls,
  1156. l = e.data,
  1157. d = r.getResponseUrl(e, i),
  1158. f = u.default.parseMasterPlaylist(l, d);
  1159. if (f.length) {
  1160. var c = f.map(function(e) {
  1161. return {
  1162. id: e.attrs.AUDIO,
  1163. codec: e.audioCodec
  1164. }
  1165. }),
  1166. h = u.default.parseMasterPlaylistMedia(l, d, "AUDIO", c),
  1167. p = u.default.parseMasterPlaylistMedia(l, d, "SUBTITLES");
  1168. if (h.length) {
  1169. var g = !1;
  1170. h.forEach(function(e) {
  1171. e.url || (g = !0)
  1172. }), !1 === g && f[0].audioCodec && !f[0].attrs.AUDIO && (s.logger.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"), h.unshift({
  1173. type: "main",
  1174. name: "main"
  1175. }))
  1176. }
  1177. o.trigger(a.default.MANIFEST_LOADED, {
  1178. levels: f,
  1179. audioTracks: h,
  1180. subtitles: p,
  1181. url: d,
  1182. stats: t,
  1183. networkDetails: n
  1184. })
  1185. } else this._handleManifestParsingError(e, i, "no level found in manifest", n)
  1186. }, r.prototype._handleTrackOrLevelPlaylist = function(t, i, n, o) {
  1187. var s = this.hls,
  1188. l = n.id,
  1189. c = n.level,
  1190. h = n.type,
  1191. p = r.getResponseUrl(t, n),
  1192. g = e.isFinite(l) ? l : 0,
  1193. v = e.isFinite(c) ? c : g,
  1194. y = r.mapContextToLevelType(n),
  1195. m = u.default.parseLevelPlaylist(t.data, p, v, y, g);
  1196. if (m.tload = i.tload, h === f.MANIFEST) {
  1197. var E = {
  1198. url: p,
  1199. details: m
  1200. };
  1201. s.trigger(a.default.MANIFEST_LOADED, {
  1202. levels: [E],
  1203. audioTracks: [],
  1204. url: p,
  1205. stats: i,
  1206. networkDetails: o
  1207. })
  1208. }
  1209. if (i.tparsed = d.now(), m.needSidxRanges) {
  1210. var _ = m.initSegment.url;
  1211. this.load(_, {
  1212. isSidxRequest: !0,
  1213. type: h,
  1214. level: c,
  1215. levelDetails: m,
  1216. id: l,
  1217. rangeStart: 0,
  1218. rangeEnd: 2048,
  1219. responseType: "arraybuffer"
  1220. })
  1221. } else n.levelDetails = m, this._handlePlaylistLoaded(t, i, n, o)
  1222. }, r.prototype._handleSidxRequest = function(e, t) {
  1223. var r = l.default.parseSegmentIndex(new Uint8Array(e.data));
  1224. if (r) {
  1225. var i = r.references,
  1226. a = t.levelDetails;
  1227. i.forEach(function(e, t) {
  1228. var r = e.info,
  1229. i = a.fragments[t];
  1230. 0 === i.byteRange.length && (i.rawByteRange = String(1 + r.end - r.start) + "@" + String(r.start))
  1231. }), a.initSegment.rawByteRange = String(r.moovEndOffset) + "@0"
  1232. }
  1233. }, r.prototype._handleManifestParsingError = function(e, t, r, i) {
  1234. this.hls.trigger(a.default.ERROR, {
  1235. type: o.ErrorTypes.NETWORK_ERROR,
  1236. details: o.ErrorDetails.MANIFEST_PARSING_ERROR,
  1237. fatal: !0,
  1238. url: e.url,
  1239. reason: r,
  1240. networkDetails: i
  1241. })
  1242. }, r.prototype._handleNetworkError = function(e, t, r, i) {
  1243. var n, l;
  1244. void 0 === r && (r = !1), void 0 === i && (i = null), s.logger.info("A network error occured while loading a " + e.type + "-type playlist");
  1245. var u = this.getInternalLoader(e);
  1246. switch (e.type) {
  1247. case f.MANIFEST:
  1248. n = r ? o.ErrorDetails.MANIFEST_LOAD_TIMEOUT : o.ErrorDetails.MANIFEST_LOAD_ERROR, l = !0;
  1249. break;
  1250. case f.LEVEL:
  1251. n = r ? o.ErrorDetails.LEVEL_LOAD_TIMEOUT : o.ErrorDetails.LEVEL_LOAD_ERROR, l = !1;
  1252. break;
  1253. case f.AUDIO_TRACK:
  1254. n = r ? o.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT : o.ErrorDetails.AUDIO_TRACK_LOAD_ERROR, l = !1;
  1255. break;
  1256. default:
  1257. l = !1
  1258. }
  1259. u && (u.abort(), this.resetInternalLoader(e.type));
  1260. var d = {
  1261. type: o.ErrorTypes.NETWORK_ERROR,
  1262. details: n,
  1263. fatal: l,
  1264. url: u.url,
  1265. loader: u,
  1266. context: e,
  1267. networkDetails: t
  1268. };
  1269. i && (d.response = i), this.hls.trigger(a.default.ERROR, d)
  1270. }, r.prototype._handlePlaylistLoaded = function(e, t, i, n) {
  1271. var o = i.type,
  1272. s = i.level,
  1273. l = i.id,
  1274. u = i.levelDetails;
  1275. if (u.targetduration)
  1276. if (r.canHaveQualityLevels(i.type)) this.hls.trigger(a.default.LEVEL_LOADED, {
  1277. details: u,
  1278. level: s || 0,
  1279. id: l || 0,
  1280. stats: t,
  1281. networkDetails: n
  1282. });
  1283. else switch (o) {
  1284. case f.AUDIO_TRACK:
  1285. this.hls.trigger(a.default.AUDIO_TRACK_LOADED, {
  1286. details: u,
  1287. id: l,
  1288. stats: t,
  1289. networkDetails: n
  1290. });
  1291. break;
  1292. case f.SUBTITLE_TRACK:
  1293. this.hls.trigger(a.default.SUBTITLE_TRACK_LOADED, {
  1294. details: u,
  1295. id: l,
  1296. stats: t,
  1297. networkDetails: n
  1298. })
  1299. } else this._handleManifestParsingError(e, i, "invalid target duration", n)
  1300. }, r
  1301. }(n.default);
  1302. t.default = h
  1303. }).call(this, r(2).Number)
  1304. }, function(e, t, r) {
  1305. "use strict";
  1306. Object.defineProperty(t, "__esModule", {
  1307. value: !0
  1308. });
  1309. var i = r(0),
  1310. a = r(1),
  1311. n = Math.pow(2, 32) - 1,
  1312. o = function() {
  1313. function e(e, t) {
  1314. this.observer = e, this.remuxer = t
  1315. }
  1316. return e.prototype.resetTimeStamp = function(e) {
  1317. this.initPTS = e
  1318. }, e.prototype.resetInitSegment = function(t, r, i, n) {
  1319. if (t && t.byteLength) {
  1320. var o = this.initData = e.parseInitSegment(t);
  1321. null == r && (r = "mp4a.40.5"), null == i && (i = "avc1.42e01e");
  1322. var s = {};
  1323. o.audio && o.video ? s.audiovideo = {
  1324. container: "video/mp4",
  1325. codec: r + "," + i,
  1326. initSegment: n ? t : null
  1327. } : (o.audio && (s.audio = {
  1328. container: "audio/mp4",
  1329. codec: r,
  1330. initSegment: n ? t : null
  1331. }), o.video && (s.video = {
  1332. container: "video/mp4",
  1333. codec: i,
  1334. initSegment: n ? t : null
  1335. })), this.observer.trigger(a.default.FRAG_PARSING_INIT_SEGMENT, {
  1336. tracks: s
  1337. })
  1338. } else r && (this.audioCodec = r), i && (this.videoCodec = i)
  1339. }, e.probe = function(t) {
  1340. return e.findBox({
  1341. data: t,
  1342. start: 0,
  1343. end: Math.min(t.length, 16384)
  1344. }, ["moof"]).length > 0
  1345. }, e.bin2str = function(e) {
  1346. return String.fromCharCode.apply(null, e)
  1347. }, e.readUint16 = function(e, t) {
  1348. e.data && (t += e.start, e = e.data);
  1349. var r = e[t] << 8 | e[t + 1];
  1350. return r < 0 ? 65536 + r : r
  1351. }, e.readUint32 = function(e, t) {
  1352. e.data && (t += e.start, e = e.data);
  1353. var r = e[t] << 24 | e[t + 1] << 16 | e[t + 2] << 8 | e[t + 3];
  1354. return r < 0 ? 4294967296 + r : r
  1355. }, e.writeUint32 = function(e, t, r) {
  1356. e.data && (t += e.start, e = e.data), e[t] = r >> 24, e[t + 1] = r >> 16 & 255, e[t + 2] = r >> 8 & 255, e[t + 3] = 255 & r
  1357. }, e.findBox = function(t, r) {
  1358. var i, a, n, o, s, l, u, d = [];
  1359. if (t.data ? (l = t.start, o = t.end, t = t.data) : (l = 0, o = t.byteLength), !r.length) return null;
  1360. for (i = l; i < o;) a = e.readUint32(t, i), n = e.bin2str(t.subarray(i + 4, i + 8)), u = a > 1 ? i + a : o, n === r[0] && (1 === r.length ? d.push({
  1361. data: t,
  1362. start: i + 8,
  1363. end: u
  1364. }) : (s = e.findBox({
  1365. data: t,
  1366. start: i + 8,
  1367. end: u
  1368. }, r.slice(1))).length && (d = d.concat(s))), i = u;
  1369. return d
  1370. }, e.parseSegmentIndex = function(t) {
  1371. var r, i = e.findBox(t, ["moov"])[0],
  1372. a = i ? i.end : null,
  1373. n = 0,
  1374. o = e.findBox(t, ["sidx"]);
  1375. if (!o || !o[0]) return null;
  1376. r = [];
  1377. var s = (o = o[0]).data[0];
  1378. n = 0 === s ? 8 : 16;
  1379. var l = e.readUint32(o, n);
  1380. n += 4;
  1381. n += 0 === s ? 8 : 16, n += 2;
  1382. var u = o.end + 0,
  1383. d = e.readUint16(o, n);
  1384. n += 2;
  1385. for (var f = 0; f < d; f++) {
  1386. var c = n,
  1387. h = e.readUint32(o, c);
  1388. c += 4;
  1389. var p = 2147483647 & h;
  1390. if (1 === (2147483648 & h) >>> 31) return void console.warn("SIDX has hierarchical references (not supported)");
  1391. var g = e.readUint32(o, c);
  1392. c += 4, r.push({
  1393. referenceSize: p,
  1394. subsegmentDuration: g,
  1395. info: {
  1396. duration: g / l,
  1397. start: u,
  1398. end: u + p - 1
  1399. }
  1400. }), u += p, n = c += 4
  1401. }
  1402. return {
  1403. earliestPresentationTime: 0,
  1404. timescale: l,
  1405. version: s,
  1406. referencesCount: d,
  1407. references: r,
  1408. moovEndOffset: a
  1409. }
  1410. }, e.parseInitSegment = function(t) {
  1411. var r = [];
  1412. return e.findBox(t, ["moov", "trak"]).forEach(function(t) {
  1413. var a = e.findBox(t, ["tkhd"])[0];
  1414. if (a) {
  1415. var n = a.data[a.start],
  1416. o = 0 === n ? 12 : 20,
  1417. s = e.readUint32(a, o),
  1418. l = e.findBox(t, ["mdia", "mdhd"])[0];
  1419. if (l) {
  1420. o = 0 === (n = l.data[l.start]) ? 12 : 20;
  1421. var u = e.readUint32(l, o),
  1422. d = e.findBox(t, ["mdia", "hdlr"])[0];
  1423. if (d) {
  1424. var f = {
  1425. soun: "audio",
  1426. vide: "video"
  1427. } [e.bin2str(d.data.subarray(d.start + 8, d.start + 12))];
  1428. if (f) {
  1429. var c = e.findBox(t, ["mdia", "minf", "stbl", "stsd"]);
  1430. if (c.length) {
  1431. c = c[0];
  1432. var h = e.bin2str(c.data.subarray(c.start + 12, c.start + 16));
  1433. i.logger.log("MP4Demuxer:" + f + ":" + h + " found")
  1434. }
  1435. r[s] = {
  1436. timescale: u,
  1437. type: f
  1438. }, r[f] = {
  1439. timescale: u,
  1440. id: s
  1441. }
  1442. }
  1443. }
  1444. }
  1445. }
  1446. }), r
  1447. }, e.getStartDTS = function(t, r) {
  1448. var i, a, n;
  1449. return i = e.findBox(r, ["moof", "traf"]), a = [].concat.apply([], i.map(function(r) {
  1450. return e.findBox(r, ["tfhd"]).map(function(i) {
  1451. var a, n;
  1452. return a = e.readUint32(i, 4), n = t[a].timescale || 9e4, e.findBox(r, ["tfdt"]).map(function(t) {
  1453. var r, i;
  1454. return r = t.data[t.start], i = e.readUint32(t, 4), 1 === r && (i *= Math.pow(2, 32), i += e.readUint32(t, 8)), i
  1455. })[0] / n
  1456. })
  1457. })), n = Math.min.apply(null, a), isFinite(n) ? n : 0
  1458. }, e.offsetStartDTS = function(t, r, i) {
  1459. e.findBox(r, ["moof", "traf"]).map(function(r) {
  1460. return e.findBox(r, ["tfhd"]).map(function(a) {
  1461. var o = e.readUint32(a, 4),
  1462. s = t[o].timescale || 9e4;
  1463. e.findBox(r, ["tfdt"]).map(function(t) {
  1464. var r = t.data[t.start],
  1465. a = e.readUint32(t, 4);
  1466. if (0 === r) e.writeUint32(t, 4, a - i * s);
  1467. else {
  1468. a *= Math.pow(2, 32), a += e.readUint32(t, 8), a -= i * s, a = Math.max(a, 0);
  1469. var o = Math.floor(a / (n + 1)),
  1470. l = Math.floor(a % (n + 1));
  1471. e.writeUint32(t, 4, o), e.writeUint32(t, 8, l)
  1472. }
  1473. })
  1474. })
  1475. })
  1476. }, e.prototype.append = function(t, r, i, n) {
  1477. var o = this.initData;
  1478. o || (this.resetInitSegment(t, this.audioCodec, this.videoCodec, !1), o = this.initData);
  1479. var s, l = this.initPTS;
  1480. if (void 0 === l) {
  1481. var u = e.getStartDTS(o, t);
  1482. this.initPTS = l = u - r, this.observer.trigger(a.default.INIT_PTS_FOUND, {
  1483. initPTS: l
  1484. })
  1485. }
  1486. e.offsetStartDTS(o, t, l), s = e.getStartDTS(o, t), this.remuxer.remux(o.audio, o.video, null, null, s, i, n, t)
  1487. }, e.prototype.destroy = function() {}, e
  1488. }();
  1489. t.default = o
  1490. }, function(e, t, r) {
  1491. "use strict";
  1492. Object.defineProperty(t, "__esModule", {
  1493. value: !0
  1494. });
  1495. var i = r(9),
  1496. a = function() {
  1497. function e() {
  1498. this.method = null, this.key = null, this.iv = null, this._uri = null
  1499. }
  1500. return Object.defineProperty(e.prototype, "uri", {
  1501. get: function() {
  1502. return !this._uri && this.reluri && (this._uri = i.buildAbsoluteURL(this.baseuri, this.reluri, {
  1503. alwaysNormalize: !0
  1504. })), this._uri
  1505. },
  1506. enumerable: !0,
  1507. configurable: !0
  1508. }), e
  1509. }();
  1510. t.default = a
  1511. }, function(e, t, r) {
  1512. "use strict";
  1513. Object.defineProperty(t, "__esModule", {
  1514. value: !0
  1515. });
  1516. var i = {
  1517. audio: {
  1518. a3ds: !0,
  1519. "ac-3": !0,
  1520. "ac-4": !0,
  1521. alac: !0,
  1522. alaw: !0,
  1523. dra1: !0,
  1524. "dts+": !0,
  1525. "dts-": !0,
  1526. dtsc: !0,
  1527. dtse: !0,
  1528. dtsh: !0,
  1529. "ec-3": !0,
  1530. enca: !0,
  1531. g719: !0,
  1532. g726: !0,
  1533. m4ae: !0,
  1534. mha1: !0,
  1535. mha2: !0,
  1536. mhm1: !0,
  1537. mhm2: !0,
  1538. mlpa: !0,
  1539. mp4a: !0,
  1540. "raw ": !0,
  1541. Opus: !0,
  1542. samr: !0,
  1543. sawb: !0,
  1544. sawp: !0,
  1545. sevc: !0,
  1546. sqcp: !0,
  1547. ssmv: !0,
  1548. twos: !0,
  1549. ulaw: !0
  1550. },
  1551. video: {
  1552. avc1: !0,
  1553. avc2: !0,
  1554. avc3: !0,
  1555. avc4: !0,
  1556. avcp: !0,
  1557. drac: !0,
  1558. dvav: !0,
  1559. dvhe: !0,
  1560. encv: !0,
  1561. hev1: !0,
  1562. hvc1: !0,
  1563. mjp2: !0,
  1564. mp4v: !0,
  1565. mvc1: !0,
  1566. mvc2: !0,
  1567. mvc3: !0,
  1568. mvc4: !0,
  1569. resv: !0,
  1570. rv60: !0,
  1571. s263: !0,
  1572. svc1: !0,
  1573. svc2: !0,
  1574. "vc-1": !0,
  1575. vp08: !0,
  1576. vp09: !0
  1577. }
  1578. };
  1579. t.isCodecType = function(e, t) {
  1580. var r = i[t];
  1581. return !!r && !0 === r[e.slice(0, 4)]
  1582. }, t.isCodecSupportedInMp4 = function(e, t) {
  1583. return window.MediaSource.isTypeSupported((t || "video") + '/mp4;codecs="' + e + '"')
  1584. }
  1585. }, function(e, t, r) {
  1586. "use strict";
  1587. (function(e) {
  1588. Object.defineProperty(t, "__esModule", {
  1589. value: !0
  1590. });
  1591. var i = r(38),
  1592. a = r(1),
  1593. n = r(21),
  1594. o = r(0),
  1595. s = r(3),
  1596. l = r(14),
  1597. u = r(6),
  1598. d = r(24),
  1599. f = u.getSelfScope(),
  1600. c = l.getMediaSource(),
  1601. h = function() {
  1602. function t(e, t) {
  1603. var r = this;
  1604. this.hls = e, this.id = t;
  1605. var l = this.observer = new d.Observer,
  1606. u = e.config,
  1607. h = function(t, i) {
  1608. (i = i || {}).frag = r.frag, i.id = r.id, e.trigger(t, i)
  1609. };
  1610. l.on(a.default.FRAG_DECRYPTED, h), l.on(a.default.FRAG_PARSING_INIT_SEGMENT, h), l.on(a.default.FRAG_PARSING_DATA, h), l.on(a.default.FRAG_PARSED, h), l.on(a.default.ERROR, h), l.on(a.default.FRAG_PARSING_METADATA, h), l.on(a.default.FRAG_PARSING_USERDATA, h), l.on(a.default.INIT_PTS_FOUND, h);
  1611. var p = {
  1612. mp4: c.isTypeSupported("video/mp4"),
  1613. mpeg: c.isTypeSupported("audio/mpeg"),
  1614. mp3: c.isTypeSupported('audio/mp4; codecs="mp3"')
  1615. },
  1616. g = navigator.vendor;
  1617. if (u.enableWorker && "undefined" != typeof Worker) {
  1618. o.logger.log("demuxing in webworker");
  1619. var v = void 0;
  1620. try {
  1621. v = this.w = i(52), this.onwmsg = this.onWorkerMessage.bind(this), v.addEventListener("message", this.onwmsg), v.onerror = function(t) {
  1622. e.trigger(a.default.ERROR, {
  1623. type: s.ErrorTypes.OTHER_ERROR,
  1624. details: s.ErrorDetails.INTERNAL_EXCEPTION,
  1625. fatal: !0,
  1626. event: "demuxerWorker",
  1627. err: {
  1628. message: t.message + " (" + t.filename + ":" + t.lineno + ")"
  1629. }
  1630. })
  1631. }, v.postMessage({
  1632. cmd: "init",
  1633. typeSupported: p,
  1634. vendor: g,
  1635. id: t,
  1636. config: JSON.stringify(u)
  1637. })
  1638. } catch (e) {
  1639. o.logger.warn("Error in worker:", e), o.logger.error("Error while initializing DemuxerWorker, fallback on DemuxerInline"), v && f.URL.revokeObjectURL(v.objectURL), this.demuxer = new n.default(l, p, u, g), this.w = void 0
  1640. }
  1641. } else this.demuxer = new n.default(l, p, u, g)
  1642. }
  1643. return t.prototype.destroy = function() {
  1644. var e = this.w;
  1645. if (e) e.removeEventListener("message", this.onwmsg), e.terminate(), this.w = null;
  1646. else {
  1647. var t = this.demuxer;
  1648. t && (t.destroy(), this.demuxer = null)
  1649. }
  1650. var r = this.observer;
  1651. r && (r.removeAllListeners(), this.observer = null)
  1652. }, t.prototype.push = function(t, r, i, a, n, s, l, u) {
  1653. var d = this.w,
  1654. f = e.isFinite(n.startPTS) ? n.startPTS : n.start,
  1655. c = n.decryptdata,
  1656. h = this.frag,
  1657. p = !(h && n.cc === h.cc),
  1658. g = !(h && n.level === h.level),
  1659. v = h && n.sn === h.sn + 1,
  1660. y = !g && v;
  1661. if (p && o.logger.log(this.id + ":discontinuity detected"), g && o.logger.log(this.id + ":switch detected"), this.frag = n, d) d.postMessage({
  1662. cmd: "demux",
  1663. data: t,
  1664. decryptdata: c,
  1665. initSegment: r,
  1666. audioCodec: i,
  1667. videoCodec: a,
  1668. timeOffset: f,
  1669. discontinuity: p,
  1670. trackSwitch: g,
  1671. contiguous: y,
  1672. duration: s,
  1673. accurateTimeOffset: l,
  1674. defaultInitPTS: u
  1675. }, t instanceof ArrayBuffer ? [t] : []);
  1676. else {
  1677. var m = this.demuxer;
  1678. m && m.push(t, c, r, i, a, f, p, g, y, s, l, u)
  1679. }
  1680. }, t.prototype.onWorkerMessage = function(e) {
  1681. var t = e.data,
  1682. r = this.hls;
  1683. switch (t.event) {
  1684. case "init":
  1685. f.URL.revokeObjectURL(this.w.objectURL);
  1686. break;
  1687. case a.default.FRAG_PARSING_DATA:
  1688. t.data.data1 = new Uint8Array(t.data1), t.data2 && (t.data.data2 = new Uint8Array(t.data2));
  1689. default:
  1690. t.data = t.data || {}, t.data.frag = this.frag, t.data.id = this.id, r.trigger(t.event, t.data)
  1691. }
  1692. }, t
  1693. }();
  1694. t.default = h
  1695. }).call(this, r(2).Number)
  1696. }, function(e, t, r) {
  1697. "use strict";
  1698. Object.defineProperty(t, "__esModule", {
  1699. value: !0
  1700. });
  1701. var i, a = r(1),
  1702. n = r(3),
  1703. o = r(13),
  1704. s = r(42),
  1705. l = r(17),
  1706. u = r(43),
  1707. d = r(46),
  1708. f = r(47),
  1709. c = r(50),
  1710. h = r(6),
  1711. p = r(0),
  1712. g = h.getSelfScope();
  1713. try {
  1714. i = g.performance.now.bind(g.performance)
  1715. } catch (e) {
  1716. p.logger.debug("Unable to use Performance API on this environment"), i = g.Date.now
  1717. }
  1718. var v = function() {
  1719. function e(e, t, r, i) {
  1720. this.observer = e, this.typeSupported = t, this.config = r, this.vendor = i
  1721. }
  1722. return e.prototype.destroy = function() {
  1723. var e = this.demuxer;
  1724. e && e.destroy()
  1725. }, e.prototype.push = function(e, t, r, n, s, l, u, d, f, c, h, p) {
  1726. var g = this;
  1727. if (e.byteLength > 0 && null != t && null != t.key && "AES-128" === t.method) {
  1728. var v = this.decrypter;
  1729. null == v && (v = this.decrypter = new o.default(this.observer, this.config));
  1730. var y = i();
  1731. v.decrypt(e, t.key.buffer, t.iv.buffer, function(e) {
  1732. var o = i();
  1733. g.observer.trigger(a.default.FRAG_DECRYPTED, {
  1734. stats: {
  1735. tstart: y,
  1736. tdecrypt: o
  1737. }
  1738. }), g.pushDecrypted(new Uint8Array(e), t, new Uint8Array(r), n, s, l, u, d, f, c, h, p)
  1739. })
  1740. } else this.pushDecrypted(new Uint8Array(e), t, new Uint8Array(r), n, s, l, u, d, f, c, h, p)
  1741. }, e.prototype.pushDecrypted = function(e, t, r, i, o, h, p, g, v, y, m, E) {
  1742. var _ = this.demuxer;
  1743. if (!_ || (p || g) && !this.probe(e)) {
  1744. for (var T = this.observer, S = this.typeSupported, b = this.config, A = [{
  1745. demux: u.default,
  1746. remux: f.default
  1747. }, {
  1748. demux: l.default,
  1749. remux: c.default
  1750. }, {
  1751. demux: s.default,
  1752. remux: f.default
  1753. }, {
  1754. demux: d.default,
  1755. remux: f.default
  1756. }], R = 0, D = A.length; R < D; R++) {
  1757. var L = A[R],
  1758. w = L.demux.probe;
  1759. if (w(e)) {
  1760. var O = this.remuxer = new L.remux(T, b, S, this.vendor);
  1761. _ = new L.demux(T, O, b, S), this.probe = w;
  1762. break
  1763. }
  1764. }
  1765. if (!_) return void T.trigger(a.default.ERROR, {
  1766. type: n.ErrorTypes.MEDIA_ERROR,
  1767. details: n.ErrorDetails.FRAG_PARSING_ERROR,
  1768. fatal: !0,
  1769. reason: "no demux matching with content found"
  1770. });
  1771. this.demuxer = _
  1772. }
  1773. var I = this.remuxer;
  1774. (p || g) && (_.resetInitSegment(r, i, o, y), I.resetInitSegment()), p && (_.resetTimeStamp(E), I.resetTimeStamp(E)), "function" == typeof _.setDecryptData && _.setDecryptData(t), _.append(e, h, v, m)
  1775. }, e
  1776. }();
  1777. t.default = v
  1778. }, function(e, t, r) {
  1779. "use strict";
  1780. Object.defineProperty(t, "__esModule", {
  1781. value: !0
  1782. });
  1783. var i = r(0),
  1784. a = r(3),
  1785. n = r(1);
  1786.  
  1787. function o(e, t, r, o) {
  1788. var s, l, u, d, f, c = navigator.userAgent.toLowerCase(),
  1789. h = o,
  1790. p = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
  1791. if (s = 1 + ((192 & t[r + 2]) >>> 6), !((l = (60 & t[r + 2]) >>> 2) > p.length - 1)) return d = (1 & t[r + 2]) << 2, d |= (192 & t[r + 3]) >>> 6, i.logger.log("manifest codec:" + o + ",ADTS data:type:" + s + ",sampleingIndex:" + l + "[" + p[l] + "Hz],channelConfig:" + d), /firefox/i.test(c) ? l >= 6 ? (s = 5, f = new Array(4), u = l - 3) : (s = 2, f = new Array(2), u = l) : -1 !== c.indexOf("android") ? (s = 2, f = new Array(2), u = l) : (s = 5, f = new Array(4), o && (-1 !== o.indexOf("mp4a.40.29") || -1 !== o.indexOf("mp4a.40.5")) || !o && l >= 6 ? u = l - 3 : ((o && -1 !== o.indexOf("mp4a.40.2") && (l >= 6 && 1 === d || /vivaldi/i.test(c)) || !o && 1 === d) && (s = 2, f = new Array(2)), u = l)), f[0] = s << 3, f[0] |= (14 & l) >> 1, f[1] |= (1 & l) << 7, f[1] |= d << 3, 5 === s && (f[1] |= (14 & u) >> 1, f[2] = (1 & u) << 7, f[2] |= 8, f[3] = 0), {
  1792. config: f,
  1793. samplerate: p[l],
  1794. channelCount: d,
  1795. codec: "mp4a.40." + s,
  1796. manifestCodec: h
  1797. };
  1798. e.trigger(n.default.ERROR, {
  1799. type: a.ErrorTypes.MEDIA_ERROR,
  1800. details: a.ErrorDetails.FRAG_PARSING_ERROR,
  1801. fatal: !0,
  1802. reason: "invalid ADTS sampling index:" + l
  1803. })
  1804. }
  1805.  
  1806. function s(e, t) {
  1807. return 255 === e[t] && 240 == (246 & e[t + 1])
  1808. }
  1809.  
  1810. function l(e, t) {
  1811. return 1 & e[t + 1] ? 7 : 9
  1812. }
  1813.  
  1814. function u(e, t) {
  1815. return (3 & e[t + 3]) << 11 | e[t + 4] << 3 | (224 & e[t + 5]) >>> 5
  1816. }
  1817.  
  1818. function d(e) {
  1819. return 9216e4 / e
  1820. }
  1821.  
  1822. function f(e, t, r, i, a) {
  1823. var n, o, s = e.length;
  1824. if (n = l(e, t), o = u(e, t), (o -= n) > 0 && t + n + o <= s) return {
  1825. headerLength: n,
  1826. frameLength: o,
  1827. stamp: r + i * a
  1828. }
  1829. }
  1830. t.getAudioConfig = o, t.isHeaderPattern = s, t.getHeaderLength = l, t.getFullFrameLength = u, t.isHeader = function(e, t) {
  1831. return !!(t + 1 < e.length && s(e, t))
  1832. }, t.probe = function(e, t) {
  1833. if (t + 1 < e.length && s(e, t)) {
  1834. var r = l(e, t);
  1835. t + 5 < e.length && (r = u(e, t));
  1836. var i = t + r;
  1837. if (i === e.length || i + 1 < e.length && s(e, i)) return !0
  1838. }
  1839. return !1
  1840. }, t.initTrackConfig = function(e, t, r, a, n) {
  1841. if (!e.samplerate) {
  1842. var s = o(t, r, a, n);
  1843. e.config = s.config, e.samplerate = s.samplerate, e.channelCount = s.channelCount, e.codec = s.codec, e.manifestCodec = s.manifestCodec, i.logger.log("parsed codec:" + e.codec + ",rate:" + s.samplerate + ",nb channel:" + s.channelCount)
  1844. }
  1845. }, t.getFrameDuration = d, t.parseFrameHeader = f, t.appendFrame = function(e, t, r, i, a) {
  1846. var n = f(t, r, i, a, d(e.samplerate));
  1847. if (n) {
  1848. var o = n.stamp,
  1849. s = n.headerLength,
  1850. l = n.frameLength,
  1851. u = {
  1852. unit: t.subarray(r + s, r + s + l),
  1853. pts: o,
  1854. dts: o
  1855. };
  1856. return e.samples.push(u), e.len += l, {
  1857. sample: u,
  1858. length: l + s
  1859. }
  1860. }
  1861. }
  1862. }, function(e, t, r) {
  1863. "use strict";
  1864. Object.defineProperty(t, "__esModule", {
  1865. value: !0
  1866. });
  1867. var i = {
  1868. BitratesMap: [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
  1869. SamplingRateMap: [44100, 48e3, 32e3, 22050, 24e3, 16e3, 11025, 12e3, 8e3],
  1870. SamplesCoefficients: [
  1871. [0, 72, 144, 12],
  1872. [0, 0, 0, 0],
  1873. [0, 72, 144, 12],
  1874. [0, 144, 144, 12]
  1875. ],
  1876. BytesInSlot: [0, 1, 1, 4],
  1877. appendFrame: function(e, t, r, i, a) {
  1878. if (!(r + 24 > t.length)) {
  1879. var n = this.parseHeader(t, r);
  1880. if (n && r + n.frameLength <= t.length) {
  1881. var o = i + a * (9e4 * n.samplesPerFrame / n.sampleRate),
  1882. s = {
  1883. unit: t.subarray(r, r + n.frameLength),
  1884. pts: o,
  1885. dts: o
  1886. };
  1887. return e.config = [], e.channelCount = n.channelCount, e.samplerate = n.sampleRate, e.samples.push(s), e.len += n.frameLength, {
  1888. sample: s,
  1889. length: n.frameLength
  1890. }
  1891. }
  1892. }
  1893. },
  1894. parseHeader: function(e, t) {
  1895. var r = e[t + 1] >> 3 & 3,
  1896. a = e[t + 1] >> 1 & 3,
  1897. n = e[t + 2] >> 4 & 15,
  1898. o = e[t + 2] >> 2 & 3,
  1899. s = e[t + 2] >> 1 & 1;
  1900. if (1 !== r && 0 !== n && 15 !== n && 3 !== o) {
  1901. var l = 3 === r ? 3 - a : 3 === a ? 3 : 4,
  1902. u = 1e3 * i.BitratesMap[14 * l + n - 1],
  1903. d = 3 === r ? 0 : 2 === r ? 1 : 2,
  1904. f = i.SamplingRateMap[3 * d + o],
  1905. c = e[t + 3] >> 6 == 3 ? 1 : 2,
  1906. h = i.SamplesCoefficients[r][a],
  1907. p = i.BytesInSlot[a],
  1908. g = 8 * h * p;
  1909. return {
  1910. sampleRate: f,
  1911. channelCount: c,
  1912. frameLength: parseInt(h * u / f + s, 10) * p,
  1913. samplesPerFrame: g
  1914. }
  1915. }
  1916. },
  1917. isHeaderPattern: function(e, t) {
  1918. return 255 === e[t] && 224 == (224 & e[t + 1]) && 0 != (6 & e[t + 1])
  1919. },
  1920. isHeader: function(e, t) {
  1921. return !!(t + 1 < e.length && this.isHeaderPattern(e, t))
  1922. },
  1923. probe: function(e, t) {
  1924. if (t + 1 < e.length && this.isHeaderPattern(e, t)) {
  1925. var r = this.parseHeader(e, t),
  1926. i = 4;
  1927. r && r.frameLength && (i = r.frameLength);
  1928. var a = t + i;
  1929. if (a === e.length || a + 1 < e.length && this.isHeaderPattern(e, a)) return !0
  1930. }
  1931. return !1
  1932. }
  1933. };
  1934. t.default = i
  1935. }, function(e, t, r) {
  1936. "use strict";
  1937. var i = this && this.__extends || function() {
  1938. var e = Object.setPrototypeOf || {
  1939. __proto__: []
  1940. }
  1941. instanceof Array && function(e, t) {
  1942. e.__proto__ = t
  1943. } || function(e, t) {
  1944. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  1945. };
  1946. return function(t, r) {
  1947. function i() {
  1948. this.constructor = t
  1949. }
  1950. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  1951. }
  1952. }();
  1953. Object.defineProperty(t, "__esModule", {
  1954. value: !0
  1955. });
  1956. var a = function(e) {
  1957. function t() {
  1958. return null !== e && e.apply(this, arguments) || this
  1959. }
  1960. return i(t, e), t.prototype.trigger = function(e) {
  1961. for (var t = [], r = 1; r < arguments.length; r++) t[r - 1] = arguments[r];
  1962. this.emit.apply(this, [e, e].concat(t))
  1963. }, t
  1964. }(r(51).EventEmitter);
  1965. t.Observer = a
  1966. }, function(e, t, r) {
  1967. "use strict";
  1968. Object.defineProperty(t, "__esModule", {
  1969. value: !0
  1970. });
  1971. t.default = {
  1972. toString: function(e) {
  1973. for (var t = "", r = e.length, i = 0; i < r; i++) t += "[" + e.start(i).toFixed(3) + "," + e.end(i).toFixed(3) + "]";
  1974. return t
  1975. }
  1976. }
  1977. }, function(e, t, r) {
  1978. "use strict";
  1979. (function(e) {
  1980. Object.defineProperty(t, "__esModule", {
  1981. value: !0
  1982. });
  1983. var i = r(10),
  1984. a = r(0);
  1985.  
  1986. function n(e, t) {
  1987. for (var r = null, i = 0; i < e.length; i += 1) {
  1988. var a = e[i];
  1989. if (a && a.cc === t) {
  1990. r = a;
  1991. break
  1992. }
  1993. }
  1994. return r
  1995. }
  1996.  
  1997. function o(e, t, r) {
  1998. var i = !1;
  1999. return t && t.details && r && (r.endCC > r.startCC || e && e.cc < r.startCC) && (i = !0), i
  2000. }
  2001.  
  2002. function s(e, t) {
  2003. var r = e.fragments,
  2004. i = t.fragments;
  2005. if (i.length && r.length) {
  2006. var o = n(r, i[0].cc);
  2007. if (o && (!o || o.startPTS)) return o;
  2008. a.logger.log("No frag in previous level to align on")
  2009. } else a.logger.log("No fragments to align")
  2010. }
  2011.  
  2012. function l(e, t) {
  2013. t.fragments.forEach(function(t) {
  2014. if (t) {
  2015. var r = t.start + e;
  2016. t.start = t.startPTS = r, t.endPTS = r + t.duration
  2017. }
  2018. }), t.PTSKnown = !0
  2019. }
  2020.  
  2021. function u(e, t, r) {
  2022. if (o(e, r, t)) {
  2023. var i = s(r.details, t);
  2024. i && (a.logger.log("Adjusting PTS using last level due to CC increase within current level"), l(i.start, t))
  2025. }
  2026. }
  2027.  
  2028. function d(t, r) {
  2029. if (r && r.fragments.length) {
  2030. if (!t.hasProgramDateTime || !r.hasProgramDateTime) return;
  2031. var i = r.fragments[0].programDateTime,
  2032. n = (t.fragments[0].programDateTime - i) / 1e3 + r.fragments[0].start;
  2033. e.isFinite(n) && (a.logger.log("adjusting PTS using programDateTime delta, sliding:" + n.toFixed(3)), l(n, t))
  2034. }
  2035. }
  2036. t.findFirstFragWithCC = n, t.findFragWithCC = function(e, t) {
  2037. return i.default.search(e, function(e) {
  2038. return e.cc < t ? 1 : e.cc > t ? -1 : 0
  2039. })
  2040. }, t.shouldAlignOnDiscontinuities = o, t.findDiscontinuousReferenceFrag = s, t.adjustPts = l, t.alignStream = function(e, t, r) {
  2041. u(e, r, t), !r.PTSKnown && t && d(r, t.details)
  2042. }, t.alignDiscontinuities = u, t.alignPDT = d
  2043. }).call(this, r(2).Number)
  2044. }, function(e, t, r) {
  2045. "use strict";
  2046. (function(e) {
  2047. Object.defineProperty(t, "__esModule", {
  2048. value: !0
  2049. });
  2050. var i = r(10);
  2051.  
  2052. function a(e, t, r) {
  2053. void 0 === e && (e = 0), void 0 === t && (t = 0);
  2054. var i = Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
  2055. return r.start + r.duration - i <= e ? 1 : r.start - i > e && r.start ? -1 : 0
  2056. }
  2057.  
  2058. function n(e, t, r) {
  2059. var i = 1e3 * Math.min(t, r.duration + (r.deltaPTS ? r.deltaPTS : 0));
  2060. return r.endProgramDateTime - i > e
  2061. }
  2062. t.findFragmentByPDT = function(t, r, i) {
  2063. if (!Array.isArray(t) || !t.length || !e.isFinite(r)) return null;
  2064. if (r < t[0].programDateTime) return null;
  2065. if (r >= t[t.length - 1].endProgramDateTime) return null;
  2066. i = i || 0;
  2067. for (var a = 0; a < t.length; ++a) {
  2068. var o = t[a];
  2069. if (n(r, i, o)) return o
  2070. }
  2071. return null
  2072. }, t.findFragmentByPTS = function(e, t, r, n) {
  2073. void 0 === r && (r = 0), void 0 === n && (n = 0);
  2074. var o = e ? t[e.sn - t[0].sn + 1] : null;
  2075. return o && !a(r, n, o) ? o : i.default.search(t, a.bind(null, r, n))
  2076. }, t.fragmentWithinToleranceTest = a, t.pdtWithinToleranceTest = n
  2077. }).call(this, r(2).Number)
  2078. }, function(e, t, r) {
  2079. "use strict";
  2080. var i = this && this.__extends || function() {
  2081. var e = Object.setPrototypeOf || {
  2082. __proto__: []
  2083. }
  2084. instanceof Array && function(e, t) {
  2085. e.__proto__ = t
  2086. } || function(e, t) {
  2087. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  2088. };
  2089. return function(t, r) {
  2090. function i() {
  2091. this.constructor = t
  2092. }
  2093. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  2094. }
  2095. }();
  2096. Object.defineProperty(t, "__esModule", {
  2097. value: !0
  2098. });
  2099. var a = function(e) {
  2100. function t(t) {
  2101. for (var r = [], i = 1; i < arguments.length; i++) r[i - 1] = arguments[i];
  2102. var a = e.apply(this, [t].concat(r)) || this;
  2103. return a._tickInterval = null, a._tickTimer = null, a._tickCallCount = 0, a._boundTick = a.tick.bind(a), a
  2104. }
  2105. return i(t, e), t.prototype.onHandlerDestroying = function() {
  2106. this.clearNextTick(), this.clearInterval()
  2107. }, t.prototype.hasInterval = function() {
  2108. return !!this._tickInterval
  2109. }, t.prototype.hasNextTick = function() {
  2110. return !!this._tickTimer
  2111. }, t.prototype.setInterval = function(e) {
  2112. return !this._tickInterval && (this._tickInterval = setInterval(this._boundTick, e), !0)
  2113. }, t.prototype.clearInterval = function() {
  2114. return !!this._tickInterval && (clearInterval(this._tickInterval), this._tickInterval = null, !0)
  2115. }, t.prototype.clearNextTick = function() {
  2116. return !!this._tickTimer && (clearTimeout(this._tickTimer), this._tickTimer = null, !0)
  2117. }, t.prototype.tick = function() {
  2118. this._tickCallCount++, 1 === this._tickCallCount && (this.doTick(), this._tickCallCount > 1 && (this.clearNextTick(), this._tickTimer = setTimeout(this._boundTick, 0)), this._tickCallCount = 0)
  2119. }, t.prototype.doTick = function() {}, t
  2120. }(r(4).default);
  2121. t.default = a
  2122. }, function(e, t, r) {
  2123. "use strict";
  2124. Object.defineProperty(t, "__esModule", {
  2125. value: !0
  2126. }), t.sendAddTrackEvent = function(e, t) {
  2127. var r = null;
  2128. try {
  2129. r = new window.Event("addtrack")
  2130. } catch (e) {
  2131. (r = document.createEvent("Event")).initEvent("addtrack", !1, !1)
  2132. }
  2133. r.track = e, t.dispatchEvent(r)
  2134. }, t.clearCurrentCues = function(e) {
  2135. if (e && e.cues)
  2136. for (; e.cues.length > 0;) e.removeCue(e.cues[0])
  2137. }
  2138. }, function(e, t, r) {
  2139. "use strict";
  2140. Object.defineProperty(t, "__esModule", {
  2141. value: !0
  2142. });
  2143. var i = r(69),
  2144. a = function() {
  2145. return {
  2146. decode: function(e) {
  2147. if (!e) return "";
  2148. if ("string" != typeof e) throw new Error("Error - expected string data.");
  2149. return decodeURIComponent(encodeURIComponent(e))
  2150. }
  2151. }
  2152. };
  2153.  
  2154. function n() {
  2155. this.window = window, this.state = "INITIAL", this.buffer = "", this.decoder = new a, this.regionList = []
  2156. }
  2157.  
  2158. function o() {
  2159. this.values = Object.create(null)
  2160. }
  2161.  
  2162. function s(e, t, r, i) {
  2163. var a = i ? e.split(i) : [e];
  2164. for (var n in a)
  2165. if ("string" == typeof a[n]) {
  2166. var o = a[n].split(r);
  2167. if (2 === o.length) t(o[0], o[1])
  2168. }
  2169. }
  2170. o.prototype = {
  2171. set: function(e, t) {
  2172. this.get(e) || "" === t || (this.values[e] = t)
  2173. },
  2174. get: function(e, t, r) {
  2175. return r ? this.has(e) ? this.values[e] : t[r] : this.has(e) ? this.values[e] : t
  2176. },
  2177. has: function(e) {
  2178. return e in this.values
  2179. },
  2180. alt: function(e, t, r) {
  2181. for (var i = 0; i < r.length; ++i)
  2182. if (t === r[i]) {
  2183. this.set(e, t);
  2184. break
  2185. }
  2186. },
  2187. integer: function(e, t) {
  2188. /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10))
  2189. },
  2190. percent: function(e, t) {
  2191. return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && (t = parseFloat(t)) >= 0 && t <= 100) && (this.set(e, t), !0)
  2192. }
  2193. };
  2194. var l = new i.default(0, 0, 0),
  2195. u = "middle" === l.align ? "middle" : "center";
  2196.  
  2197. function d(e, t, r) {
  2198. var i = e;
  2199.  
  2200. function a() {
  2201. var t = function(e) {
  2202. function t(e, t, r, i) {
  2203. return 3600 * (0 | e) + 60 * (0 | t) + (0 | r) + (0 | i) / 1e3
  2204. }
  2205. var r = e.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);
  2206. return r ? r[3] ? t(r[1], r[2], r[3].replace(":", ""), r[4]) : r[1] > 59 ? t(r[1], r[2], 0, r[4]) : t(0, r[1], r[2], r[4]) : null
  2207. }(e);
  2208. if (null === t) throw new Error("Malformed timestamp: " + i);
  2209. return e = e.replace(/^[^\sa-zA-Z-]+/, ""), t
  2210. }
  2211.  
  2212. function n() {
  2213. e = e.replace(/^\s+/, "")
  2214. }
  2215. if (n(), t.startTime = a(), n(), "--\x3e" !== e.substr(0, 3)) throw new Error("Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
  2216. e = e.substr(3), n(), t.endTime = a(), n(),
  2217. function(e, t) {
  2218. var i = new o;
  2219. s(e, function(e, t) {
  2220. switch (e) {
  2221. case "region":
  2222. for (var a = r.length - 1; a >= 0; a--)
  2223. if (r[a].id === t) {
  2224. i.set(e, r[a].region);
  2225. break
  2226. } break;
  2227. case "vertical":
  2228. i.alt(e, t, ["rl", "lr"]);
  2229. break;
  2230. case "line":
  2231. var n = t.split(","),
  2232. o = n[0];
  2233. i.integer(e, o), i.percent(e, o) && i.set("snapToLines", !1), i.alt(e, o, ["auto"]), 2 === n.length && i.alt("lineAlign", n[1], ["start", u, "end"]);
  2234. break;
  2235. case "position":
  2236. n = t.split(","), i.percent(e, n[0]), 2 === n.length && i.alt("positionAlign", n[1], ["start", u, "end", "line-left", "line-right", "auto"]);
  2237. break;
  2238. case "size":
  2239. i.percent(e, t);
  2240. break;
  2241. case "align":
  2242. i.alt(e, t, ["start", u, "end", "left", "right"])
  2243. }
  2244. }, /:/, /\s/), t.region = i.get("region", null), t.vertical = i.get("vertical", "");
  2245. var a = i.get("line", "auto");
  2246. "auto" === a && -1 === l.line && (a = -1), t.line = a, t.lineAlign = i.get("lineAlign", "start"), t.snapToLines = i.get("snapToLines", !0), t.size = i.get("size", 100), t.align = i.get("align", u);
  2247. var n = i.get("position", "auto");
  2248. "auto" === n && 50 === l.position && (n = "start" === t.align || "left" === t.align ? 0 : "end" === t.align || "right" === t.align ? 100 : 50), t.position = n
  2249. }(e, t)
  2250. }
  2251.  
  2252. function f(e) {
  2253. return e.replace(/<br(?: \/)?>/gi, "\n")
  2254. }
  2255. t.fixLineBreaks = f, n.prototype = {
  2256. parse: function(e) {
  2257. var t = this;
  2258.  
  2259. function r() {
  2260. var e = t.buffer,
  2261. r = 0;
  2262. for (e = f(e); r < e.length && "\r" !== e[r] && "\n" !== e[r];) ++r;
  2263. var i = e.substr(0, r);
  2264. return "\r" === e[r] && ++r, "\n" === e[r] && ++r, t.buffer = e.substr(r), i
  2265. }
  2266.  
  2267. function a(e) {
  2268. s(e, function(e, t) {
  2269. e
  2270. }, /:/)
  2271. }
  2272. e && (t.buffer += t.decoder.decode(e, {
  2273. stream: !0
  2274. }));
  2275. try {
  2276. var n = void 0;
  2277. if ("INITIAL" === t.state) {
  2278. if (!/\r\n|\n/.test(t.buffer)) return this;
  2279. var o = (n = r()).match(/^()?WEBVTT([ \t].*)?$/);
  2280. if (!o || !o[0]) throw new Error("Malformed WebVTT signature.");
  2281. t.state = "HEADER"
  2282. }
  2283. for (var l = !1; t.buffer;) {
  2284. if (!/\r\n|\n/.test(t.buffer)) return this;
  2285. switch (l ? l = !1 : n = r(), t.state) {
  2286. case "HEADER":
  2287. /:/.test(n) ? a(n) : n || (t.state = "ID");
  2288. continue;
  2289. case "NOTE":
  2290. n || (t.state = "ID");
  2291. continue;
  2292. case "ID":
  2293. if (/^NOTE($|[ \t])/.test(n)) {
  2294. t.state = "NOTE";
  2295. break
  2296. }
  2297. if (!n) continue;
  2298. if (t.cue = new i.default(0, 0, ""), t.state = "CUE", -1 === n.indexOf("--\x3e")) {
  2299. t.cue.id = n;
  2300. continue
  2301. }
  2302. case "CUE":
  2303. try {
  2304. d(n, t.cue, t.regionList)
  2305. } catch (e) {
  2306. t.cue = null, t.state = "BADCUE";
  2307. continue
  2308. }
  2309. t.state = "CUETEXT";
  2310. continue;
  2311. case "CUETEXT":
  2312. var u = -1 !== n.indexOf("--\x3e");
  2313. if (!n || u && (l = !0)) {
  2314. t.oncue && t.oncue(t.cue), t.cue = null, t.state = "ID";
  2315. continue
  2316. }
  2317. t.cue.text && (t.cue.text += "\n"), t.cue.text += n;
  2318. continue;
  2319. case "BADCUE":
  2320. n || (t.state = "ID");
  2321. continue
  2322. }
  2323. }
  2324. } catch (e) {
  2325. "CUETEXT" === t.state && t.cue && t.oncue && t.oncue(t.cue), t.cue = null, t.state = "INITIAL" === t.state ? "BADWEBVTT" : "BADCUE"
  2326. }
  2327. return this
  2328. },
  2329. flush: function() {
  2330. try {
  2331. if (this.buffer += this.decoder.decode(), (this.cue || "HEADER" === this.state) && (this.buffer += "\n\n", this.parse()), "INITIAL" === this.state) throw new Error("Malformed WebVTT signature.")
  2332. } catch (e) {
  2333. throw e
  2334. }
  2335. return this.onflush && this.onflush(), this
  2336. }
  2337. }, t.default = n
  2338. }, function(e, t, r) {
  2339. "use strict";
  2340. var i = this && this.__extends || function() {
  2341. var e = Object.setPrototypeOf || {
  2342. __proto__: []
  2343. }
  2344. instanceof Array && function(e, t) {
  2345. e.__proto__ = t
  2346. } || function(e, t) {
  2347. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  2348. };
  2349. return function(t, r) {
  2350. function i() {
  2351. this.constructor = t
  2352. }
  2353. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  2354. }
  2355. }();
  2356. Object.defineProperty(t, "__esModule", {
  2357. value: !0
  2358. });
  2359. var a = r(9),
  2360. n = r(3),
  2361. o = r(16),
  2362. s = r(35),
  2363. l = r(36),
  2364. u = r(7),
  2365. d = r(37),
  2366. f = r(55),
  2367. c = r(56),
  2368. h = r(57),
  2369. p = r(0),
  2370. g = r(58),
  2371. v = r(1),
  2372. y = function(e) {
  2373. function t(r) {
  2374. void 0 === r && (r = {});
  2375. var i = e.call(this) || this,
  2376. a = t.DefaultConfig;
  2377. if ((r.liveSyncDurationCount || r.liveMaxLatencyDurationCount) && (r.liveSyncDuration || r.liveMaxLatencyDuration)) throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");
  2378. for (var n in a) n in r || (r[n] = a[n]);
  2379. if (void 0 !== r.liveMaxLatencyDurationCount && r.liveMaxLatencyDurationCount <= r.liveSyncDurationCount) throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');
  2380. if (void 0 !== r.liveMaxLatencyDuration && (r.liveMaxLatencyDuration <= r.liveSyncDuration || void 0 === r.liveSyncDuration)) throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');
  2381. p.enableLogs(r.debug), i.config = r, i._autoLevelCapping = -1;
  2382. var h = i.abrController = new r.abrController(i),
  2383. g = new r.bufferController(i),
  2384. v = new r.capLevelController(i),
  2385. y = new r.fpsController(i),
  2386. m = new o.default(i),
  2387. E = new s.default(i),
  2388. _ = new l.default(i),
  2389. T = new c.default(i),
  2390. S = i.levelController = new f.default(i),
  2391. b = new u.FragmentTracker(i),
  2392. A = [S, i.streamController = new d.default(i, b)],
  2393. R = r.audioStreamController;
  2394. R && A.push(new R(i, b)), i.networkControllers = A;
  2395. var D = [m, E, _, h, g, v, y, T, b];
  2396. if (R = r.audioTrackController) {
  2397. var L = new R(i);
  2398. i.audioTrackController = L, D.push(L)
  2399. }
  2400. if (R = r.subtitleTrackController) {
  2401. var w = new R(i);
  2402. i.subtitleTrackController = w, A.push(w)
  2403. }
  2404. if (R = r.emeController) {
  2405. var O = new R(i);
  2406. i.emeController = O, D.push(O)
  2407. }
  2408. return (R = r.subtitleStreamController) && A.push(new R(i, b)), (R = r.timelineController) && D.push(new R(i)), i.coreComponents = D, i
  2409. }
  2410. return i(t, e), Object.defineProperty(t, "version", {
  2411. get: function() {
  2412. return "0.12.4"
  2413. },
  2414. enumerable: !0,
  2415. configurable: !0
  2416. }), t.isSupported = function() {
  2417. return h.isSupported()
  2418. }, Object.defineProperty(t, "Events", {
  2419. get: function() {
  2420. return v.default
  2421. },
  2422. enumerable: !0,
  2423. configurable: !0
  2424. }), Object.defineProperty(t, "ErrorTypes", {
  2425. get: function() {
  2426. return n.ErrorTypes
  2427. },
  2428. enumerable: !0,
  2429. configurable: !0
  2430. }), Object.defineProperty(t, "ErrorDetails", {
  2431. get: function() {
  2432. return n.ErrorDetails
  2433. },
  2434. enumerable: !0,
  2435. configurable: !0
  2436. }), Object.defineProperty(t, "DefaultConfig", {
  2437. get: function() {
  2438. return t.defaultConfig ? t.defaultConfig : g.hlsDefaultConfig
  2439. },
  2440. set: function(e) {
  2441. t.defaultConfig = e
  2442. },
  2443. enumerable: !0,
  2444. configurable: !0
  2445. }), t.prototype.destroy = function() {
  2446. p.logger.log("destroy"), this.trigger(v.default.DESTROYING), this.detachMedia(), this.coreComponents.concat(this.networkControllers).forEach(function(e) {
  2447. e.destroy()
  2448. }), this.url = null, this.removeAllListeners(), this._autoLevelCapping = -1
  2449. }, t.prototype.attachMedia = function(e) {
  2450. p.logger.log("attachMedia"), this.media = e, this.trigger(v.default.MEDIA_ATTACHING, {
  2451. media: e
  2452. })
  2453. }, t.prototype.detachMedia = function() {
  2454. p.logger.log("detachMedia"), this.trigger(v.default.MEDIA_DETACHING), this.media = null
  2455. }, t.prototype.loadSource = function(e) {
  2456. e = a.buildAbsoluteURL(window.location.href, e, {
  2457. alwaysNormalize: !0
  2458. }), p.logger.log("loadSource:" + e), this.url = e, this.trigger(v.default.MANIFEST_LOADING, {
  2459. url: e
  2460. })
  2461. }, t.prototype.startLoad = function(e) {
  2462. void 0 === e && (e = -1), p.logger.log("startLoad(" + e + ")"), this.networkControllers.forEach(function(t) {
  2463. t.startLoad(e)
  2464. })
  2465. }, t.prototype.stopLoad = function() {
  2466. p.logger.log("stopLoad"), this.networkControllers.forEach(function(e) {
  2467. e.stopLoad()
  2468. })
  2469. }, t.prototype.swapAudioCodec = function() {
  2470. p.logger.log("swapAudioCodec"), this.streamController.swapAudioCodec()
  2471. }, t.prototype.recoverMediaError = function() {
  2472. p.logger.log("recoverMediaError");
  2473. var e = this.media;
  2474. this.detachMedia(), this.attachMedia(e)
  2475. }, Object.defineProperty(t.prototype, "levels", {
  2476. get: function() {
  2477. return this.levelController.levels
  2478. },
  2479. enumerable: !0,
  2480. configurable: !0
  2481. }), Object.defineProperty(t.prototype, "currentLevel", {
  2482. get: function() {
  2483. return this.streamController.currentLevel
  2484. },
  2485. set: function(e) {
  2486. p.logger.log("set currentLevel:" + e), this.loadLevel = e, this.streamController.immediateLevelSwitch()
  2487. },
  2488. enumerable: !0,
  2489. configurable: !0
  2490. }), Object.defineProperty(t.prototype, "nextLevel", {
  2491. get: function() {
  2492. return this.streamController.nextLevel
  2493. },
  2494. set: function(e) {
  2495. p.logger.log("set nextLevel:" + e), this.levelController.manualLevel = e, this.streamController.nextLevelSwitch()
  2496. },
  2497. enumerable: !0,
  2498. configurable: !0
  2499. }), Object.defineProperty(t.prototype, "loadLevel", {
  2500. get: function() {
  2501. return this.levelController.level
  2502. },
  2503. set: function(e) {
  2504. p.logger.log("set loadLevel:" + e), this.levelController.manualLevel = e
  2505. },
  2506. enumerable: !0,
  2507. configurable: !0
  2508. }), Object.defineProperty(t.prototype, "nextLoadLevel", {
  2509. get: function() {
  2510. return this.levelController.nextLoadLevel
  2511. },
  2512. set: function(e) {
  2513. this.levelController.nextLoadLevel = e
  2514. },
  2515. enumerable: !0,
  2516. configurable: !0
  2517. }), Object.defineProperty(t.prototype, "firstLevel", {
  2518. get: function() {
  2519. return Math.max(this.levelController.firstLevel, this.minAutoLevel)
  2520. },
  2521. set: function(e) {
  2522. p.logger.log("set firstLevel:" + e), this.levelController.firstLevel = e
  2523. },
  2524. enumerable: !0,
  2525. configurable: !0
  2526. }), Object.defineProperty(t.prototype, "startLevel", {
  2527. get: function() {
  2528. return this.levelController.startLevel
  2529. },
  2530. set: function(e) {
  2531. p.logger.log("set startLevel:" + e); - 1 !== e && (e = Math.max(e, this.minAutoLevel)), this.levelController.startLevel = e
  2532. },
  2533. enumerable: !0,
  2534. configurable: !0
  2535. }), Object.defineProperty(t.prototype, "autoLevelCapping", {
  2536. get: function() {
  2537. return this._autoLevelCapping
  2538. },
  2539. set: function(e) {
  2540. p.logger.log("set autoLevelCapping:" + e), this._autoLevelCapping = e
  2541. },
  2542. enumerable: !0,
  2543. configurable: !0
  2544. }), Object.defineProperty(t.prototype, "autoLevelEnabled", {
  2545. get: function() {
  2546. return -1 === this.levelController.manualLevel
  2547. },
  2548. enumerable: !0,
  2549. configurable: !0
  2550. }), Object.defineProperty(t.prototype, "manualLevel", {
  2551. get: function() {
  2552. return this.levelController.manualLevel
  2553. },
  2554. enumerable: !0,
  2555. configurable: !0
  2556. }), Object.defineProperty(t.prototype, "minAutoLevel", {
  2557. get: function() {
  2558. for (var e = this.levels, t = this.config.minAutoBitrate, r = e ? e.length : 0, i = 0; i < r; i++) {
  2559. if ((e[i].realBitrate ? Math.max(e[i].realBitrate, e[i].bitrate) : e[i].bitrate) > t) return i
  2560. }
  2561. return 0
  2562. },
  2563. enumerable: !0,
  2564. configurable: !0
  2565. }), Object.defineProperty(t.prototype, "maxAutoLevel", {
  2566. get: function() {
  2567. var e = this.levels,
  2568. t = this.autoLevelCapping;
  2569. return -1 === t && e && e.length ? e.length - 1 : t
  2570. },
  2571. enumerable: !0,
  2572. configurable: !0
  2573. }), Object.defineProperty(t.prototype, "nextAutoLevel", {
  2574. get: function() {
  2575. return Math.min(Math.max(this.abrController.nextAutoLevel, this.minAutoLevel), this.maxAutoLevel)
  2576. },
  2577. set: function(e) {
  2578. this.abrController.nextAutoLevel = Math.max(this.minAutoLevel, e)
  2579. },
  2580. enumerable: !0,
  2581. configurable: !0
  2582. }), Object.defineProperty(t.prototype, "audioTracks", {
  2583. get: function() {
  2584. var e = this.audioTrackController;
  2585. return e ? e.audioTracks : []
  2586. },
  2587. enumerable: !0,
  2588. configurable: !0
  2589. }), Object.defineProperty(t.prototype, "audioTrack", {
  2590. get: function() {
  2591. var e = this.audioTrackController;
  2592. return e ? e.audioTrack : -1
  2593. },
  2594. set: function(e) {
  2595. var t = this.audioTrackController;
  2596. t && (t.audioTrack = e)
  2597. },
  2598. enumerable: !0,
  2599. configurable: !0
  2600. }), Object.defineProperty(t.prototype, "liveSyncPosition", {
  2601. get: function() {
  2602. return this.streamController.liveSyncPosition
  2603. },
  2604. enumerable: !0,
  2605. configurable: !0
  2606. }), Object.defineProperty(t.prototype, "subtitleTracks", {
  2607. get: function() {
  2608. var e = this.subtitleTrackController;
  2609. return e ? e.subtitleTracks : []
  2610. },
  2611. enumerable: !0,
  2612. configurable: !0
  2613. }), Object.defineProperty(t.prototype, "subtitleTrack", {
  2614. get: function() {
  2615. var e = this.subtitleTrackController;
  2616. return e ? e.subtitleTrack : -1
  2617. },
  2618. set: function(e) {
  2619. var t = this.subtitleTrackController;
  2620. t && (t.subtitleTrack = e)
  2621. },
  2622. enumerable: !0,
  2623. configurable: !0
  2624. }), Object.defineProperty(t.prototype, "subtitleDisplay", {
  2625. get: function() {
  2626. var e = this.subtitleTrackController;
  2627. return !!e && e.subtitleDisplay
  2628. },
  2629. set: function(e) {
  2630. var t = this.subtitleTrackController;
  2631. t && (t.subtitleDisplay = e)
  2632. },
  2633. enumerable: !0,
  2634. configurable: !0
  2635. }), t
  2636. }(r(24).Observer);
  2637. t.default = y
  2638. }, function(e, t, r) {
  2639. "use strict";
  2640. (function(e) {
  2641. Object.defineProperty(t, "__esModule", {
  2642. value: !0
  2643. });
  2644. var i = r(9),
  2645. a = r(12),
  2646. n = r(33),
  2647. o = r(18),
  2648. s = r(34),
  2649. l = r(0),
  2650. u = r(19),
  2651. d = /#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,
  2652. f = /#EXT-X-MEDIA:(.*)/g,
  2653. c = new RegExp([/#EXTINF:\s*(\d*(?:\.\d+)?)(?:,(.*)\s+)?/.source, /|(?!#)([\S+ ?]+)/.source, /|#EXT-X-BYTERANGE:*(.+)/.source, /|#EXT-X-PROGRAM-DATE-TIME:(.+)/.source, /|#.*/.source].join(""), "g"),
  2654. h = /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)([^:]*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/,
  2655. p = /\.(mp4|m4s|m4v|m4a)$/i,
  2656. g = function() {
  2657. function t() {}
  2658. return t.findGroup = function(e, t) {
  2659. if (!e) return null;
  2660. for (var r = null, i = 0; i < e.length; i++) {
  2661. var a = e[i];
  2662. a.id === t && (r = a)
  2663. }
  2664. return r
  2665. }, t.convertAVC1ToAVCOTI = function(e) {
  2666. var t, r = e.split(".");
  2667. return r.length > 2 ? (t = r.shift() + ".", t += parseInt(r.shift()).toString(16), t += ("000" + parseInt(r.shift()).toString(16)).substr(-4)) : t = e, t
  2668. }, t.resolve = function(e, t) {
  2669. return i.buildAbsoluteURL(t, e, {
  2670. alwaysNormalize: !0
  2671. })
  2672. }, t.parseMasterPlaylist = function(e, r) {
  2673. var i, a = [];
  2674.  
  2675. function n(e, t) {
  2676. ["video", "audio"].forEach(function(r) {
  2677. var i = e.filter(function(e) {
  2678. return u.isCodecType(e, r)
  2679. });
  2680. if (i.length) {
  2681. var a = i.filter(function(e) {
  2682. return 0 === e.lastIndexOf("avc1", 0) || 0 === e.lastIndexOf("mp4a", 0)
  2683. });
  2684. t[r + "Codec"] = a.length > 0 ? a[0] : i[0], e = e.filter(function(e) {
  2685. return -1 === i.indexOf(e)
  2686. })
  2687. }
  2688. }), t.unknownCodecs = e
  2689. }
  2690. for (d.lastIndex = 0; null != (i = d.exec(e));) {
  2691. var o = {},
  2692. l = o.attrs = new s.default(i[1]);
  2693. o.url = t.resolve(i[2], r);
  2694. var f = l.decimalResolution("RESOLUTION");
  2695. f && (o.width = f.width, o.height = f.height), o.bitrate = l.decimalInteger("AVERAGE-BANDWIDTH") || l.decimalInteger("BANDWIDTH"), o.name = l.NAME, n([].concat((l.CODECS || "").split(/[ ,]+/)), o), o.videoCodec && -1 !== o.videoCodec.indexOf("avc1") && (o.videoCodec = t.convertAVC1ToAVCOTI(o.videoCodec)), a.push(o)
  2696. }
  2697. return a
  2698. }, t.parseMasterPlaylistMedia = function(e, r, i, a) {
  2699. var n;
  2700. void 0 === a && (a = []);
  2701. var o = [],
  2702. l = 0;
  2703. for (f.lastIndex = 0; null !== (n = f.exec(e));) {
  2704. var u = {},
  2705. d = new s.default(n[1]);
  2706. if (d.TYPE === i) {
  2707. if (u.groupId = d["GROUP-ID"], u.name = d.NAME, u.type = i, u.default = "YES" === d.DEFAULT, u.autoselect = "YES" === d.AUTOSELECT, u.forced = "YES" === d.FORCED, d.URI && (u.url = t.resolve(d.URI, r)), u.lang = d.LANGUAGE, u.name || (u.name = u.lang), a.length) {
  2708. var c = t.findGroup(a, u.groupId);
  2709. u.audioCodec = c ? c.codec : a[0].codec
  2710. }
  2711. u.id = l++, o.push(u)
  2712. }
  2713. }
  2714. return o
  2715. }, t.parseLevelPlaylist = function(t, r, i, u, d) {
  2716. var f, g, y = 0,
  2717. m = 0,
  2718. E = new n.default(r),
  2719. _ = new o.default,
  2720. T = 0,
  2721. S = null,
  2722. b = new a.default,
  2723. A = null;
  2724. for (c.lastIndex = 0; null !== (f = c.exec(t));) {
  2725. var R = f[1];
  2726. if (R) {
  2727. b.duration = parseFloat(R);
  2728. var D = (" " + f[2]).slice(1);
  2729. b.title = D || null, b.tagList.push(D ? ["INF", R, D] : ["INF", R])
  2730. } else if (f[3]) {
  2731. if (e.isFinite(b.duration)) {
  2732. var L = y++;
  2733. b.type = u, b.start = m, b.levelkey = _, b.sn = L, b.level = i, b.cc = T, b.urlId = d, b.baseurl = r, b.relurl = (" " + f[3]).slice(1), v(b, S), E.fragments.push(b), S = b, m += b.duration, b = new a.default
  2734. }
  2735. } else if (f[4]) {
  2736. if (b.rawByteRange = (" " + f[4]).slice(1), S) {
  2737. var w = S.byteRangeEndOffset;
  2738. w && (b.lastByteRangeEndOffset = w)
  2739. }
  2740. } else if (f[5]) b.rawProgramDateTime = (" " + f[5]).slice(1), b.tagList.push(["PROGRAM-DATE-TIME", b.rawProgramDateTime]), null === A && (A = E.fragments.length);
  2741. else {
  2742. for (f = f[0].match(h), g = 1; g < f.length && void 0 === f[g]; g++);
  2743. var O = (" " + f[g + 1]).slice(1),
  2744. I = (" " + f[g + 2]).slice(1);
  2745. switch (f[g]) {
  2746. case "#":
  2747. b.tagList.push(I ? [O, I] : [O]);
  2748. break;
  2749. case "PLAYLIST-TYPE":
  2750. E.type = O.toUpperCase();
  2751. break;
  2752. case "MEDIA-SEQUENCE":
  2753. y = E.startSN = parseInt(O);
  2754. break;
  2755. case "TARGETDURATION":
  2756. E.targetduration = parseFloat(O);
  2757. break;
  2758. case "VERSION":
  2759. E.version = parseInt(O);
  2760. break;
  2761. case "EXTM3U":
  2762. break;
  2763. case "ENDLIST":
  2764. E.live = !1;
  2765. break;
  2766. case "DIS":
  2767. T++, b.tagList.push(["DIS"]);
  2768. break;
  2769. case "DISCONTINUITY-SEQ":
  2770. T = parseInt(O);
  2771. break;
  2772. case "KEY":
  2773. var P = O,
  2774. k = new s.default(P),
  2775. C = k.enumeratedString("METHOD"),
  2776. F = k.URI,
  2777. x = k.hexadecimalInteger("IV");
  2778. C && (_ = new o.default, F && ["AES-128", "SAMPLE-AES", "SAMPLE-AES-CENC"].indexOf(C) >= 0 && (_.method = C, _.baseuri = r, _.reluri = F, _.key = null, _.iv = x));
  2779. break;
  2780. case "START":
  2781. var M = O,
  2782. N = new s.default(M).decimalFloatingPoint("TIME-OFFSET");
  2783. e.isFinite(N) && (E.startTimeOffset = N);
  2784. break;
  2785. case "MAP":
  2786. var U = new s.default(O);
  2787. b.relurl = U.URI, b.rawByteRange = U.BYTERANGE, b.baseurl = r, b.level = i, b.type = u, b.sn = "initSegment", E.initSegment = b, (b = new a.default).rawProgramDateTime = E.initSegment.rawProgramDateTime;
  2788. break;
  2789. default:
  2790. l.logger.warn("line parsed but not handled: " + f)
  2791. }
  2792. }
  2793. }
  2794. return (b = S) && !b.relurl && (E.fragments.pop(), m -= b.duration), E.totalduration = m, E.averagetargetduration = m / E.fragments.length, E.endSN = y - 1, E.startCC = E.fragments[0] ? E.fragments[0].cc : 0, E.endCC = T, !E.initSegment && E.fragments.length && E.fragments.every(function(e) {
  2795. return p.test(e.relurl)
  2796. }) && (l.logger.warn("MP4 fragments found but no init segment (probably no MAP, incomplete M3U8), trying to fetch SIDX"), (b = new a.default).relurl = E.fragments[0].relurl, b.baseurl = r, b.level = i, b.type = u, b.sn = "initSegment", E.initSegment = b, E.needSidxRanges = !0), A && function(e, t) {
  2797. for (var r = e[t], i = t - 1; i >= 0; i--) {
  2798. var a = e[i];
  2799. a.programDateTime = r.programDateTime - 1e3 * a.duration, r = a
  2800. }
  2801. }(E.fragments, A), E
  2802. }, t
  2803. }();
  2804.  
  2805. function v(t, r) {
  2806. t.rawProgramDateTime ? t.programDateTime = Date.parse(t.rawProgramDateTime) : r && r.programDateTime && (t.programDateTime = r.endProgramDateTime), e.isFinite(t.programDateTime) || (t.programDateTime = null, t.rawProgramDateTime = null)
  2807. }
  2808. t.default = g
  2809. }).call(this, r(2).Number)
  2810. }, function(e, t, r) {
  2811. "use strict";
  2812. (function(e) {
  2813. Object.defineProperty(t, "__esModule", {
  2814. value: !0
  2815. });
  2816. var r = function() {
  2817. function t(e) {
  2818. this.endCC = 0, this.endSN = 0, this.fragments = [], this.initSegment = null, this.live = !0, this.needSidxRanges = !1, this.startCC = 0, this.startSN = 0, this.startTimeOffset = null, this.targetduration = 0, this.totalduration = 0, this.type = null, this.url = e, this.version = null
  2819. }
  2820. return Object.defineProperty(t.prototype, "hasProgramDateTime", {
  2821. get: function() {
  2822. return !(!this.fragments[0] || !e.isFinite(this.fragments[0].programDateTime))
  2823. },
  2824. enumerable: !0,
  2825. configurable: !0
  2826. }), t
  2827. }();
  2828. t.default = r
  2829. }).call(this, r(2).Number)
  2830. }, function(e, t, r) {
  2831. "use strict";
  2832. (function(e) {
  2833. Object.defineProperty(t, "__esModule", {
  2834. value: !0
  2835. });
  2836. var r = /^(\d+)x(\d+)$/,
  2837. i = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,
  2838. a = function() {
  2839. function t(e) {
  2840. for (var r in "string" == typeof e && (e = t.parseAttrList(e)), e) e.hasOwnProperty(r) && (this[r] = e[r])
  2841. }
  2842. return t.prototype.decimalInteger = function(t) {
  2843. var r = parseInt(this[t], 10);
  2844. return r > e.MAX_SAFE_INTEGER ? 1 / 0 : r
  2845. }, t.prototype.hexadecimalInteger = function(e) {
  2846. if (this[e]) {
  2847. var t = (this[e] || "0x").slice(2);
  2848. t = (1 & t.length ? "0" : "") + t;
  2849. for (var r = new Uint8Array(t.length / 2), i = 0; i < t.length / 2; i++) r[i] = parseInt(t.slice(2 * i, 2 * i + 2), 16);
  2850. return r
  2851. }
  2852. return null
  2853. }, t.prototype.hexadecimalIntegerAsNumber = function(t) {
  2854. var r = parseInt(this[t], 16);
  2855. return r > e.MAX_SAFE_INTEGER ? 1 / 0 : r
  2856. }, t.prototype.decimalFloatingPoint = function(e) {
  2857. return parseFloat(this[e])
  2858. }, t.prototype.enumeratedString = function(e) {
  2859. return this[e]
  2860. }, t.prototype.decimalResolution = function(e) {
  2861. var t = r.exec(this[e]);
  2862. if (null !== t) return {
  2863. width: parseInt(t[1], 10),
  2864. height: parseInt(t[2], 10)
  2865. }
  2866. }, t.parseAttrList = function(e) {
  2867. var t, r = {};
  2868. for (i.lastIndex = 0; null !== (t = i.exec(e));) {
  2869. var a = t[2];
  2870. 0 === a.indexOf('"') && a.lastIndexOf('"') === a.length - 1 && (a = a.slice(1, -1)), r[t[1]] = a
  2871. }
  2872. return r
  2873. }, t
  2874. }();
  2875. t.default = a
  2876. }).call(this, r(2).Number)
  2877. }, function(e, t, r) {
  2878. "use strict";
  2879. (function(e) {
  2880. var i = this && this.__extends || function() {
  2881. var e = Object.setPrototypeOf || {
  2882. __proto__: []
  2883. }
  2884. instanceof Array && function(e, t) {
  2885. e.__proto__ = t
  2886. } || function(e, t) {
  2887. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  2888. };
  2889. return function(t, r) {
  2890. function i() {
  2891. this.constructor = t
  2892. }
  2893. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  2894. }
  2895. }();
  2896. Object.defineProperty(t, "__esModule", {
  2897. value: !0
  2898. });
  2899. var a = r(1),
  2900. n = r(4),
  2901. o = r(3),
  2902. s = r(0),
  2903. l = function(t) {
  2904. function r(e) {
  2905. var r = t.call(this, e, a.default.FRAG_LOADING) || this;
  2906. return r.loaders = {}, r
  2907. }
  2908. return i(r, t), r.prototype.destroy = function() {
  2909. var e = this.loaders;
  2910. for (var r in e) {
  2911. var i = e[r];
  2912. i && i.destroy()
  2913. }
  2914. this.loaders = {}, t.prototype.destroy.call(this)
  2915. }, r.prototype.onFragLoading = function(t) {
  2916. var r = t.frag,
  2917. i = r.type,
  2918. a = this.loaders,
  2919. n = this.hls.config,
  2920. o = n.fLoader,
  2921. l = n.loader;
  2922. r.loaded = 0;
  2923. var u, d, f, c = a[i];
  2924. c && (s.logger.warn("abort previous fragment loader for type: " + i), c.abort()), c = a[i] = r.loader = n.fLoader ? new o(n) : new l(n), u = {
  2925. url: r.url,
  2926. frag: r,
  2927. responseType: "arraybuffer",
  2928. progressData: !1
  2929. };
  2930. var h = r.byteRangeStartOffset,
  2931. p = r.byteRangeEndOffset;
  2932. e.isFinite(h) && e.isFinite(p) && (u.rangeStart = h, u.rangeEnd = p), d = {
  2933. timeout: n.fragLoadingTimeOut,
  2934. maxRetry: 0,
  2935. retryDelay: 0,
  2936. maxRetryDelay: n.fragLoadingMaxRetryTimeout
  2937. }, f = {
  2938. onSuccess: this.loadsuccess.bind(this),
  2939. onError: this.loaderror.bind(this),
  2940. onTimeout: this.loadtimeout.bind(this),
  2941. onProgress: this.loadprogress.bind(this)
  2942. }, c.load(u, d, f)
  2943. }, r.prototype.loadsuccess = function(e, t, r, i) {
  2944. void 0 === i && (i = null);
  2945. var n = e.data,
  2946. o = r.frag;
  2947. o.loader = void 0, this.loaders[o.type] = void 0, this.hls.trigger(a.default.FRAG_LOADED, {
  2948. payload: n,
  2949. frag: o,
  2950. stats: t,
  2951. networkDetails: i
  2952. })
  2953. }, r.prototype.loaderror = function(e, t, r) {
  2954. void 0 === r && (r = null);
  2955. var i = t.frag,
  2956. n = i.loader;
  2957. n && n.abort(), this.loaders[i.type] = void 0, this.hls.trigger(a.default.ERROR, {
  2958. type: o.ErrorTypes.NETWORK_ERROR,
  2959. details: o.ErrorDetails.FRAG_LOAD_ERROR,
  2960. fatal: !1,
  2961. frag: t.frag,
  2962. response: e,
  2963. networkDetails: r
  2964. })
  2965. }, r.prototype.loadtimeout = function(e, t, r) {
  2966. void 0 === r && (r = null);
  2967. var i = t.frag,
  2968. n = i.loader;
  2969. n && n.abort(), this.loaders[i.type] = void 0, this.hls.trigger(a.default.ERROR, {
  2970. type: o.ErrorTypes.NETWORK_ERROR,
  2971. details: o.ErrorDetails.FRAG_LOAD_TIMEOUT,
  2972. fatal: !1,
  2973. frag: t.frag,
  2974. networkDetails: r
  2975. })
  2976. }, r.prototype.loadprogress = function(e, t, r, i) {
  2977. void 0 === i && (i = null);
  2978. var n = t.frag;
  2979. n.loaded = e.loaded, this.hls.trigger(a.default.FRAG_LOAD_PROGRESS, {
  2980. frag: n,
  2981. stats: e,
  2982. networkDetails: i
  2983. })
  2984. }, r
  2985. }(n.default);
  2986. t.default = l
  2987. }).call(this, r(2).Number)
  2988. }, function(e, t, r) {
  2989. "use strict";
  2990. var i = this && this.__extends || function() {
  2991. var e = Object.setPrototypeOf || {
  2992. __proto__: []
  2993. }
  2994. instanceof Array && function(e, t) {
  2995. e.__proto__ = t
  2996. } || function(e, t) {
  2997. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  2998. };
  2999. return function(t, r) {
  3000. function i() {
  3001. this.constructor = t
  3002. }
  3003. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  3004. }
  3005. }();
  3006. Object.defineProperty(t, "__esModule", {
  3007. value: !0
  3008. });
  3009. var a = r(1),
  3010. n = r(4),
  3011. o = r(3),
  3012. s = r(0),
  3013. l = function(e) {
  3014. function t(t) {
  3015. var r = e.call(this, t, a.default.KEY_LOADING) || this;
  3016. return r.loaders = {}, r.decryptkey = null, r.decrypturl = null, r
  3017. }
  3018. return i(t, e), t.prototype.destroy = function() {
  3019. for (var e in this.loaders) {
  3020. var t = this.loaders[e];
  3021. t && t.destroy()
  3022. }
  3023. this.loaders = {}, n.default.prototype.destroy.call(this)
  3024. }, t.prototype.onKeyLoading = function(e) {
  3025. var t = e.frag,
  3026. r = t.type,
  3027. i = this.loaders[r],
  3028. n = t.decryptdata,
  3029. o = n.uri;
  3030. if (o !== this.decrypturl || null === this.decryptkey) {
  3031. var l = this.hls.config;
  3032. i && (s.logger.warn("abort previous key loader for type:" + r), i.abort()), t.loader = this.loaders[r] = new l.loader(l), this.decrypturl = o, this.decryptkey = null;
  3033. var u, d, f;
  3034. u = {
  3035. url: o,
  3036. frag: t,
  3037. responseType: "arraybuffer"
  3038. }, d = {
  3039. timeout: l.fragLoadingTimeOut,
  3040. maxRetry: 0,
  3041. retryDelay: l.fragLoadingRetryDelay,
  3042. maxRetryDelay: l.fragLoadingMaxRetryTimeout
  3043. }, f = {
  3044. onSuccess: this.loadsuccess.bind(this),
  3045. onError: this.loaderror.bind(this),
  3046. onTimeout: this.loadtimeout.bind(this)
  3047. }, t.loader.load(u, d, f)
  3048. } else this.decryptkey && (n.key = this.decryptkey, this.hls.trigger(a.default.KEY_LOADED, {
  3049. frag: t
  3050. }))
  3051. }, t.prototype.loadsuccess = function(e, t, r) {
  3052. var i = r.frag;
  3053. this.decryptkey = i.decryptdata.key = new Uint8Array(e.data), i.loader = void 0, this.loaders[i.type] = void 0, this.hls.trigger(a.default.KEY_LOADED, {
  3054. frag: i
  3055. })
  3056. }, t.prototype.loaderror = function(e, t) {
  3057. var r = t.frag,
  3058. i = r.loader;
  3059. i && i.abort(), this.loaders[t.type] = void 0, this.hls.trigger(a.default.ERROR, {
  3060. type: o.ErrorTypes.NETWORK_ERROR,
  3061. details: o.ErrorDetails.KEY_LOAD_ERROR,
  3062. fatal: !1,
  3063. frag: r,
  3064. response: e
  3065. })
  3066. }, t.prototype.loadtimeout = function(e, t) {
  3067. var r = t.frag,
  3068. i = r.loader;
  3069. i && i.abort(), this.loaders[t.type] = void 0, this.hls.trigger(a.default.ERROR, {
  3070. type: o.ErrorTypes.NETWORK_ERROR,
  3071. details: o.ErrorDetails.KEY_LOAD_TIMEOUT,
  3072. fatal: !1,
  3073. frag: r
  3074. })
  3075. }, t
  3076. }(n.default);
  3077. t.default = l
  3078. }, function(e, t, r) {
  3079. "use strict";
  3080. (function(e) {
  3081. var i = this && this.__extends || function() {
  3082. var e = Object.setPrototypeOf || {
  3083. __proto__: []
  3084. }
  3085. instanceof Array && function(e, t) {
  3086. e.__proto__ = t
  3087. } || function(e, t) {
  3088. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  3089. };
  3090. return function(t, r) {
  3091. function i() {
  3092. this.constructor = t
  3093. }
  3094. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  3095. }
  3096. }();
  3097. Object.defineProperty(t, "__esModule", {
  3098. value: !0
  3099. });
  3100. var a = r(10),
  3101. n = r(5),
  3102. o = r(20),
  3103. s = r(1),
  3104. l = r(7),
  3105. u = r(12),
  3106. d = r(16),
  3107. f = r(8),
  3108. c = r(25),
  3109. h = r(3),
  3110. p = r(0),
  3111. g = r(26),
  3112. v = r(27),
  3113. y = r(54),
  3114. m = r(15),
  3115. E = function(t) {
  3116. function r(e, r) {
  3117. var i = t.call(this, e, s.default.MEDIA_ATTACHED, s.default.MEDIA_DETACHING, s.default.MANIFEST_LOADING, s.default.MANIFEST_PARSED, s.default.LEVEL_LOADED, s.default.KEY_LOADED, s.default.FRAG_LOADED, s.default.FRAG_LOAD_EMERGENCY_ABORTED, s.default.FRAG_PARSING_INIT_SEGMENT, s.default.FRAG_PARSING_DATA, s.default.FRAG_PARSED, s.default.ERROR, s.default.AUDIO_TRACK_SWITCHING, s.default.AUDIO_TRACK_SWITCHED, s.default.BUFFER_CREATED, s.default.BUFFER_APPENDED, s.default.BUFFER_FLUSHED) || this;
  3118. return i.fragmentTracker = r, i.config = e.config, i.audioCodecSwap = !1, i._state = m.State.STOPPED, i.stallReported = !1, i.gapController = null, i
  3119. }
  3120. return i(r, t), r.prototype.startLoad = function(e) {
  3121. if (this.levels) {
  3122. var t = this.lastCurrentTime,
  3123. r = this.hls;
  3124. if (this.stopLoad(), this.setInterval(100), this.level = -1, this.fragLoadError = 0, !this.startFragRequested) {
  3125. var i = r.startLevel; - 1 === i && (i = 0, this.bitrateTest = !0), this.level = r.nextLoadLevel = i, this.loadedmetadata = !1
  3126. }
  3127. t > 0 && -1 === e && (p.logger.log("override startPosition with lastCurrentTime @" + t.toFixed(3)), e = t), this.state = m.State.IDLE, this.nextLoadPosition = this.startPosition = this.lastCurrentTime = e, this.tick()
  3128. } else this.forceStartLoad = !0, this.state = m.State.STOPPED
  3129. }, r.prototype.stopLoad = function() {
  3130. this.forceStartLoad = !1, t.prototype.stopLoad.call(this)
  3131. }, r.prototype.doTick = function() {
  3132. switch (this.state) {
  3133. case m.State.BUFFER_FLUSHING:
  3134. this.fragLoadError = 0;
  3135. break;
  3136. case m.State.IDLE:
  3137. this._doTickIdle();
  3138. break;
  3139. case m.State.WAITING_LEVEL:
  3140. var e = this.levels[this.level];
  3141. e && e.details && (this.state = m.State.IDLE);
  3142. break;
  3143. case m.State.FRAG_LOADING_WAITING_RETRY:
  3144. var t = window.performance.now(),
  3145. r = this.retryDate;
  3146. (!r || t >= r || this.media && this.media.seeking) && (p.logger.log("mediaController: retryDate reached, switch back to IDLE state"), this.state = m.State.IDLE);
  3147. break;
  3148. case m.State.ERROR:
  3149. case m.State.STOPPED:
  3150. case m.State.FRAG_LOADING:
  3151. case m.State.PARSING:
  3152. case m.State.PARSED:
  3153. case m.State.ENDED:
  3154. }
  3155. this._checkBuffer(), this._checkFragmentChanged()
  3156. }, r.prototype._doTickIdle = function() {
  3157. var e = this.hls,
  3158. t = e.config,
  3159. r = this.media;
  3160. if (void 0 !== this.levelLastLoaded && (r || !this.startFragRequested && t.startFragPrefetch)) {
  3161. var i;
  3162. i = this.loadedmetadata ? r.currentTime : this.nextLoadPosition;
  3163. var a = e.nextLoadLevel,
  3164. o = this.levels[a];
  3165. if (o) {
  3166. var l, u = o.bitrate;
  3167. l = u ? Math.max(8 * t.maxBufferSize / u, t.maxBufferLength) : t.maxBufferLength, l = Math.min(l, t.maxMaxBufferLength);
  3168. var d = n.BufferHelper.bufferInfo(this.mediaBuffer ? this.mediaBuffer : r, i, t.maxBufferHole),
  3169. f = d.len;
  3170. if (!(f >= l)) {
  3171. p.logger.trace("buffer length of " + f.toFixed(3) + " is below max of " + l.toFixed(3) + ". checking for more payload ..."), this.level = e.nextLoadLevel = a;
  3172. var c = o.details;
  3173. if (!c || c.live && this.levelLastLoaded !== a) this.state = m.State.WAITING_LEVEL;
  3174. else {
  3175. if (this._streamEnded(d, c)) {
  3176. var h = {};
  3177. return this.altAudio && (h.type = "video"), this.hls.trigger(s.default.BUFFER_EOS, h), void(this.state = m.State.ENDED)
  3178. }
  3179. this._fetchPayloadOrEos(i, d, c)
  3180. }
  3181. }
  3182. }
  3183. }
  3184. }, r.prototype._fetchPayloadOrEos = function(e, t, r) {
  3185. var i = this.fragPrevious,
  3186. a = this.level,
  3187. n = r.fragments,
  3188. o = n.length;
  3189. if (0 !== o) {
  3190. var s, l = n[0].start,
  3191. u = n[o - 1].start + n[o - 1].duration,
  3192. d = t.end;
  3193. if (r.initSegment && !r.initSegment.data) s = r.initSegment;
  3194. else if (r.live) {
  3195. var f = this.config.initialLiveManifestSize;
  3196. if (o < f) return void p.logger.warn("Can not start playback of a level, reason: not enough fragments " + o + " < " + f);
  3197. if (null === (s = this._ensureFragmentAtLivePoint(r, d, l, u, i, n, o))) return
  3198. } else d < l && (s = n[0]);
  3199. s || (s = this._findFragment(l, i, o, n, d, u, r)), s && (s.encrypted ? (p.logger.log("Loading key for " + s.sn + " of [" + r.startSN + " ," + r.endSN + "],level " + a), this._loadKey(s)) : (p.logger.log("Loading " + s.sn + " of [" + r.startSN + " ," + r.endSN + "],level " + a + ", currentTime:" + e.toFixed(3) + ",bufferEnd:" + d.toFixed(3)), this._loadFragment(s)))
  3200. }
  3201. }, r.prototype._ensureFragmentAtLivePoint = function(e, t, r, i, n, o, s) {
  3202. var l, u = this.hls.config,
  3203. d = this.media,
  3204. f = void 0 !== u.liveMaxLatencyDuration ? u.liveMaxLatencyDuration : u.liveMaxLatencyDurationCount * e.targetduration;
  3205. if (t < Math.max(r - u.maxFragLookUpTolerance, i - f)) {
  3206. var c = this.liveSyncPosition = this.computeLivePosition(r, e);
  3207. p.logger.log("buffer end: " + t.toFixed(3) + " is located too far from the end of live sliding playlist, reset currentTime to : " + c.toFixed(3)), t = c, d && d.readyState && d.duration > c && (d.currentTime = c), this.nextLoadPosition = c
  3208. }
  3209. if (e.PTSKnown && t > i && d && d.readyState) return null;
  3210. if (this.startFragRequested && !e.PTSKnown) {
  3211. if (n)
  3212. if (e.hasProgramDateTime) p.logger.log("live playlist, switching playlist, load frag with same PDT: " + n.programDateTime), l = v.findFragmentByPDT(o, n.endProgramDateTime, u.maxFragLookUpTolerance);
  3213. else {
  3214. var h = n.sn + 1;
  3215. if (h >= e.startSN && h <= e.endSN) {
  3216. var g = o[h - e.startSN];
  3217. n.cc === g.cc && (l = g, p.logger.log("live playlist, switching playlist, load frag with next SN: " + l.sn))
  3218. }
  3219. l || (l = a.default.search(o, function(e) {
  3220. return n.cc - e.cc
  3221. })) && p.logger.log("live playlist, switching playlist, load frag with same CC: " + l.sn)
  3222. } l || (l = o[Math.min(s - 1, Math.round(s / 2))], p.logger.log("live playlist, switching playlist, unknown, load middle frag : " + l.sn))
  3223. }
  3224. return l
  3225. }, r.prototype._findFragment = function(e, t, r, i, a, n, o) {
  3226. var s, l = this.hls.config;
  3227. if (a < n) {
  3228. var u = a > n - l.maxFragLookUpTolerance ? 0 : l.maxFragLookUpTolerance;
  3229. s = v.findFragmentByPTS(t, i, a, u)
  3230. } else s = i[r - 1];
  3231. if (s) {
  3232. var d = s.sn - o.startSN,
  3233. f = t && s.level === t.level,
  3234. c = i[d - 1],
  3235. h = i[d + 1];
  3236. if (t && s.sn === t.sn)
  3237. if (f && !s.backtracked)
  3238. if (s.sn < o.endSN) {
  3239. var g = t.deltaPTS;
  3240. g && g > l.maxBufferHole && t.dropped && d ? (s = c, p.logger.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this")) : (s = h, p.logger.log("SN just loaded, load next one: " + s.sn, s))
  3241. } else s = null;
  3242. else s.backtracked && (h && h.backtracked ? (p.logger.warn("Already backtracked from fragment " + h.sn + ", will not backtrack to fragment " + s.sn + ". Loading fragment " + h.sn), s = h) : (p.logger.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"), s.dropped = 0, c ? (s = c).backtracked = !0 : d && (s = null)))
  3243. }
  3244. return s
  3245. }, r.prototype._loadKey = function(e) {
  3246. this.state = m.State.KEY_LOADING, this.hls.trigger(s.default.KEY_LOADING, {
  3247. frag: e
  3248. })
  3249. }, r.prototype._loadFragment = function(t) {
  3250. var r = this.fragmentTracker.getState(t);
  3251. this.fragCurrent = t, this.startFragRequested = !0, e.isFinite(t.sn) && !t.bitrateTest && (this.nextLoadPosition = t.start + t.duration), t.backtracked || r === l.FragmentState.NOT_LOADED || r === l.FragmentState.PARTIAL ? (t.autoLevel = this.hls.autoLevelEnabled, t.bitrateTest = this.bitrateTest, this.hls.trigger(s.default.FRAG_LOADING, {
  3252. frag: t
  3253. }), this.demuxer || (this.demuxer = new o.default(this.hls, "main")), this.state = m.State.FRAG_LOADING) : r === l.FragmentState.APPENDING && this._reduceMaxBufferLength(t.duration) && this.fragmentTracker.removeFragment(t)
  3254. }, Object.defineProperty(r.prototype, "state", {
  3255. get: function() {
  3256. return this._state
  3257. },
  3258. set: function(e) {
  3259. if (this.state !== e) {
  3260. var t = this.state;
  3261. this._state = e, p.logger.log("main stream:" + t + "->" + e), this.hls.trigger(s.default.STREAM_STATE_TRANSITION, {
  3262. previousState: t,
  3263. nextState: e
  3264. })
  3265. }
  3266. },
  3267. enumerable: !0,
  3268. configurable: !0
  3269. }), r.prototype.getBufferedFrag = function(e) {
  3270. return this.fragmentTracker.getBufferedFrag(e, d.default.LevelType.MAIN)
  3271. }, Object.defineProperty(r.prototype, "currentLevel", {
  3272. get: function() {
  3273. var e = this.media;
  3274. if (e) {
  3275. var t = this.getBufferedFrag(e.currentTime);
  3276. if (t) return t.level
  3277. }
  3278. return -1
  3279. },
  3280. enumerable: !0,
  3281. configurable: !0
  3282. }), Object.defineProperty(r.prototype, "nextBufferedFrag", {
  3283. get: function() {
  3284. var e = this.media;
  3285. return e ? this.followingBufferedFrag(this.getBufferedFrag(e.currentTime)) : null
  3286. },
  3287. enumerable: !0,
  3288. configurable: !0
  3289. }), r.prototype.followingBufferedFrag = function(e) {
  3290. return e ? this.getBufferedFrag(e.endPTS + .5) : null
  3291. }, Object.defineProperty(r.prototype, "nextLevel", {
  3292. get: function() {
  3293. var e = this.nextBufferedFrag;
  3294. return e ? e.level : -1
  3295. },
  3296. enumerable: !0,
  3297. configurable: !0
  3298. }), r.prototype._checkFragmentChanged = function() {
  3299. var e, t, r = this.media;
  3300. if (r && r.readyState && !1 === r.seeking && ((t = r.currentTime) > this.lastCurrentTime && (this.lastCurrentTime = t), n.BufferHelper.isBuffered(r, t) ? e = this.getBufferedFrag(t) : n.BufferHelper.isBuffered(r, t + .1) && (e = this.getBufferedFrag(t + .1)), e)) {
  3301. var i = e;
  3302. if (i !== this.fragPlaying) {
  3303. this.hls.trigger(s.default.FRAG_CHANGED, {
  3304. frag: i
  3305. });
  3306. var a = i.level;
  3307. this.fragPlaying && this.fragPlaying.level === a || this.hls.trigger(s.default.LEVEL_SWITCHED, {
  3308. level: a
  3309. }), this.fragPlaying = i
  3310. }
  3311. }
  3312. }, r.prototype.immediateLevelSwitch = function() {
  3313. if (p.logger.log("immediateLevelSwitch"), !this.immediateSwitch) {
  3314. this.immediateSwitch = !0;
  3315. var t = this.media,
  3316. r = void 0;
  3317. t ? (r = t.paused, t.pause()) : r = !0, this.previouslyPaused = r
  3318. }
  3319. var i = this.fragCurrent;
  3320. i && i.loader && i.loader.abort(), this.fragCurrent = null, this.flushMainBuffer(0, e.POSITIVE_INFINITY)
  3321. }, r.prototype.immediateLevelSwitchEnd = function() {
  3322. var e = this.media;
  3323. e && e.buffered.length && (this.immediateSwitch = !1, n.BufferHelper.isBuffered(e, e.currentTime) && (e.currentTime -= 1e-4), this.previouslyPaused || e.play())
  3324. }, r.prototype.nextLevelSwitch = function() {
  3325. var t = this.media;
  3326. if (t && t.readyState) {
  3327. var r, i = void 0,
  3328. a = void 0;
  3329. if ((r = this.getBufferedFrag(t.currentTime)) && r.startPTS > 1 && this.flushMainBuffer(0, r.startPTS - 1), t.paused) i = 0;
  3330. else {
  3331. var n = this.hls.nextLoadLevel,
  3332. o = this.levels[n],
  3333. s = this.fragLastKbps;
  3334. i = s && this.fragCurrent ? this.fragCurrent.duration * o.bitrate / (1e3 * s) + 1 : 0
  3335. }
  3336. if ((a = this.getBufferedFrag(t.currentTime + i)) && (a = this.followingBufferedFrag(a))) {
  3337. var l = this.fragCurrent;
  3338. l && l.loader && l.loader.abort(), this.fragCurrent = null, this.flushMainBuffer(a.maxStartPTS, e.POSITIVE_INFINITY)
  3339. }
  3340. }
  3341. }, r.prototype.flushMainBuffer = function(e, t) {
  3342. this.state = m.State.BUFFER_FLUSHING;
  3343. var r = {
  3344. startOffset: e,
  3345. endOffset: t
  3346. };
  3347. this.altAudio && (r.type = "video"), this.hls.trigger(s.default.BUFFER_FLUSHING, r)
  3348. }, r.prototype.onMediaAttached = function(e) {
  3349. var t = this.media = this.mediaBuffer = e.media;
  3350. this.onvseeking = this.onMediaSeeking.bind(this), this.onvseeked = this.onMediaSeeked.bind(this), this.onvended = this.onMediaEnded.bind(this), t.addEventListener("seeking", this.onvseeking), t.addEventListener("seeked", this.onvseeked), t.addEventListener("ended", this.onvended);
  3351. var r = this.config;
  3352. this.levels && r.autoStartLoad && this.hls.startLoad(r.startPosition), this.gapController = new y.default(r, t, this.fragmentTracker, this.hls)
  3353. }, r.prototype.onMediaDetaching = function() {
  3354. var e = this.media;
  3355. e && e.ended && (p.logger.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0);
  3356. var t = this.levels;
  3357. t && t.forEach(function(e) {
  3358. e.details && e.details.fragments.forEach(function(e) {
  3359. e.backtracked = void 0
  3360. })
  3361. }), 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 = this.mediaBuffer = null, this.loadedmetadata = !1, this.stopLoad()
  3362. }, r.prototype.onMediaSeeked = function() {
  3363. var t = this.media,
  3364. r = t ? t.currentTime : void 0;
  3365. e.isFinite(r) && p.logger.log("media seeked to " + r.toFixed(3)), this.tick()
  3366. }, r.prototype.onManifestLoading = function() {
  3367. p.logger.log("trigger BUFFER_RESET"), this.hls.trigger(s.default.BUFFER_RESET), this.fragmentTracker.removeAllFragments(), this.stalled = !1, this.startPosition = this.lastCurrentTime = 0
  3368. }, r.prototype.onManifestParsed = function(e) {
  3369. var t, r = !1,
  3370. i = !1;
  3371. e.levels.forEach(function(e) {
  3372. (t = e.audioCodec) && (-1 !== t.indexOf("mp4a.40.2") && (r = !0), -1 !== t.indexOf("mp4a.40.5") && (i = !0))
  3373. }), this.audioCodecSwitch = r && i, this.audioCodecSwitch && p.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"), this.levels = e.levels, this.startFragRequested = !1;
  3374. var a = this.config;
  3375. (a.autoStartLoad || this.forceStartLoad) && this.hls.startLoad(a.startPosition)
  3376. }, r.prototype.onLevelLoaded = function(t) {
  3377. var r = t.details,
  3378. i = t.level,
  3379. a = this.levels[this.levelLastLoaded],
  3380. n = this.levels[i],
  3381. o = r.totalduration,
  3382. l = 0;
  3383. if (p.logger.log("level " + i + " loaded [" + r.startSN + "," + r.endSN + "],duration:" + o), r.live) {
  3384. var u = n.details;
  3385. u && r.fragments.length > 0 ? (f.mergeDetails(u, r), l = r.fragments[0].start, this.liveSyncPosition = this.computeLivePosition(l, u), r.PTSKnown && e.isFinite(l) ? p.logger.log("live playlist sliding:" + l.toFixed(3)) : (p.logger.log("live playlist - outdated PTS, unknown sliding"), g.alignStream(this.fragPrevious, a, r))) : (p.logger.log("live playlist - first load, unknown sliding"), r.PTSKnown = !1, g.alignStream(this.fragPrevious, a, r))
  3386. } else r.PTSKnown = !1;
  3387. if (n.details = r, this.levelLastLoaded = i, this.hls.trigger(s.default.LEVEL_UPDATED, {
  3388. details: r,
  3389. level: i
  3390. }), !1 === this.startFragRequested) {
  3391. if (-1 === this.startPosition || -1 === this.lastCurrentTime) {
  3392. var d = r.startTimeOffset;
  3393. e.isFinite(d) ? (d < 0 && (p.logger.log("negative start time offset " + d + ", count from end of last fragment"), d = l + o + d), p.logger.log("start time offset found in playlist, adjust startPosition to " + d), this.startPosition = d) : r.live ? (this.startPosition = this.computeLivePosition(l, r), p.logger.log("configure startPosition to " + this.startPosition)) : this.startPosition = 0, this.lastCurrentTime = this.startPosition
  3394. }
  3395. this.nextLoadPosition = this.startPosition
  3396. }
  3397. this.state === m.State.WAITING_LEVEL && (this.state = m.State.IDLE), this.tick()
  3398. }, r.prototype.onKeyLoaded = function() {
  3399. this.state === m.State.KEY_LOADING && (this.state = m.State.IDLE, this.tick())
  3400. }, r.prototype.onFragLoaded = function(e) {
  3401. var t = this.fragCurrent,
  3402. r = this.hls,
  3403. i = this.levels,
  3404. a = this.media,
  3405. n = e.frag;
  3406. if (this.state === m.State.FRAG_LOADING && t && "main" === n.type && n.level === t.level && n.sn === t.sn) {
  3407. var l = e.stats,
  3408. u = i[t.level],
  3409. d = u.details;
  3410. if (this.bitrateTest = !1, this.stats = l, p.logger.log("Loaded " + t.sn + " of [" + d.startSN + " ," + d.endSN + "],level " + t.level), n.bitrateTest && r.nextLoadLevel) this.state = m.State.IDLE, this.startFragRequested = !1, l.tparsed = l.tbuffered = window.performance.now(), r.trigger(s.default.FRAG_BUFFERED, {
  3411. stats: l,
  3412. frag: t,
  3413. id: "main"
  3414. }), this.tick();
  3415. else if ("initSegment" === n.sn) this.state = m.State.IDLE, l.tparsed = l.tbuffered = window.performance.now(), d.initSegment.data = e.payload, r.trigger(s.default.FRAG_BUFFERED, {
  3416. stats: l,
  3417. frag: t,
  3418. id: "main"
  3419. }), this.tick();
  3420. else {
  3421. p.logger.log("Parsing " + t.sn + " of [" + d.startSN + " ," + d.endSN + "],level " + t.level + ", cc " + t.cc), this.state = m.State.PARSING, this.pendingBuffering = !0, this.appended = !1, n.bitrateTest && (n.bitrateTest = !1, this.fragmentTracker.onFragLoaded({
  3422. frag: n
  3423. }));
  3424. var f = !(a && a.seeking) && (d.PTSKnown || !d.live),
  3425. c = d.initSegment ? d.initSegment.data : [],
  3426. h = this._getAudioCodec(u);
  3427. (this.demuxer = this.demuxer || new o.default(this.hls, "main")).push(e.payload, c, h, u.videoCodec, t, d.totalduration, f)
  3428. }
  3429. }
  3430. this.fragLoadError = 0
  3431. }, r.prototype.onFragParsingInitSegment = function(e) {
  3432. var t = this.fragCurrent,
  3433. r = e.frag;
  3434. if (t && "main" === e.id && r.sn === t.sn && r.level === t.level && this.state === m.State.PARSING) {
  3435. var i = e.tracks,
  3436. a = void 0,
  3437. n = void 0;
  3438. if (i.audio && this.altAudio && delete i.audio, n = i.audio) {
  3439. var o = this.levels[this.level].audioCodec,
  3440. l = navigator.userAgent.toLowerCase();
  3441. o && this.audioCodecSwap && (p.logger.log("swapping playlist audio codec"), o = -1 !== o.indexOf("mp4a.40.5") ? "mp4a.40.2" : "mp4a.40.5"), this.audioCodecSwitch && 1 !== n.metadata.channelCount && -1 === l.indexOf("firefox") && (o = "mp4a.40.5"), -1 !== l.indexOf("android") && "audio/mpeg" !== n.container && (o = "mp4a.40.2", p.logger.log("Android: force audio codec to " + o)), n.levelCodec = o, n.id = e.id
  3442. }
  3443. for (a in (n = i.video) && (n.levelCodec = this.levels[this.level].videoCodec, n.id = e.id), this.hls.trigger(s.default.BUFFER_CODECS, i), i) {
  3444. n = i[a], p.logger.log("main track:" + a + ",container:" + n.container + ",codecs[level/parsed]=[" + n.levelCodec + "/" + n.codec + "]");
  3445. var u = n.initSegment;
  3446. u && (this.appended = !0, this.pendingBuffering = !0, this.hls.trigger(s.default.BUFFER_APPENDING, {
  3447. type: a,
  3448. data: u,
  3449. parent: "main",
  3450. content: "initSegment"
  3451. }))
  3452. }
  3453. this.tick()
  3454. }
  3455. }, r.prototype.onFragParsingData = function(t) {
  3456. var r = this,
  3457. i = this.fragCurrent,
  3458. a = t.frag;
  3459. if (i && "main" === t.id && a.sn === i.sn && a.level === i.level && ("audio" !== t.type || !this.altAudio) && this.state === m.State.PARSING) {
  3460. var n = this.levels[this.level],
  3461. o = i;
  3462. if (e.isFinite(t.endPTS) || (t.endPTS = t.startPTS + i.duration, t.endDTS = t.startDTS + i.duration), !0 === t.hasAudio && o.addElementaryStream(u.default.ElementaryStreamTypes.AUDIO), !0 === t.hasVideo && o.addElementaryStream(u.default.ElementaryStreamTypes.VIDEO), p.logger.log("Parsed " + t.type + ",PTS:[" + t.startPTS.toFixed(3) + "," + t.endPTS.toFixed(3) + "],DTS:[" + t.startDTS.toFixed(3) + "/" + t.endDTS.toFixed(3) + "],nb:" + t.nb + ",dropped:" + (t.dropped || 0)), "video" === t.type)
  3463. if (o.dropped = t.dropped, o.dropped)
  3464. if (o.backtracked) p.logger.warn("Already backtracked on this fragment, appending with the gap", o.sn);
  3465. else {
  3466. var l = n.details;
  3467. if (!l || o.sn !== l.startSN) return p.logger.warn("missing video frame(s), backtracking fragment", o.sn), this.fragmentTracker.removeFragment(o), o.backtracked = !0, this.nextLoadPosition = t.startPTS, this.state = m.State.IDLE, this.fragPrevious = o, void this.tick();
  3468. p.logger.warn("missing video frame(s) on first frag, appending with gap", o.sn)
  3469. }
  3470. else o.backtracked = !1;
  3471. var d = f.updateFragPTSDTS(n.details, o, t.startPTS, t.endPTS, t.startDTS, t.endDTS),
  3472. c = this.hls;
  3473. c.trigger(s.default.LEVEL_PTS_UPDATED, {
  3474. details: n.details,
  3475. level: this.level,
  3476. drift: d,
  3477. type: t.type,
  3478. start: t.startPTS,
  3479. end: t.endPTS
  3480. }), [t.data1, t.data2].forEach(function(e) {
  3481. e && e.length && r.state === m.State.PARSING && (r.appended = !0, r.pendingBuffering = !0, c.trigger(s.default.BUFFER_APPENDING, {
  3482. type: t.type,
  3483. data: e,
  3484. parent: "main",
  3485. content: "data"
  3486. }))
  3487. }), this.tick()
  3488. }
  3489. }, r.prototype.onFragParsed = function(e) {
  3490. var t = this.fragCurrent,
  3491. r = e.frag;
  3492. t && "main" === e.id && r.sn === t.sn && r.level === t.level && this.state === m.State.PARSING && (this.stats.tparsed = window.performance.now(), this.state = m.State.PARSED, this._checkAppendedParsed())
  3493. }, r.prototype.onAudioTrackSwitching = function(t) {
  3494. var r = !!t.url,
  3495. i = t.id;
  3496. if (!r) {
  3497. if (this.mediaBuffer !== this.media) {
  3498. p.logger.log("switching on main audio, use media.buffered to schedule main fragment loading"), this.mediaBuffer = this.media;
  3499. var a = this.fragCurrent;
  3500. a.loader && (p.logger.log("switching to main audio track, cancel main fragment load"), a.loader.abort()), this.fragCurrent = null, this.fragPrevious = null, this.demuxer && (this.demuxer.destroy(), this.demuxer = null), this.state = m.State.IDLE
  3501. }
  3502. var n = this.hls;
  3503. n.trigger(s.default.BUFFER_FLUSHING, {
  3504. startOffset: 0,
  3505. endOffset: e.POSITIVE_INFINITY,
  3506. type: "audio"
  3507. }), n.trigger(s.default.AUDIO_TRACK_SWITCHED, {
  3508. id: i
  3509. }), this.altAudio = !1
  3510. }
  3511. }, r.prototype.onAudioTrackSwitched = function(e) {
  3512. var t = e.id,
  3513. r = !!this.hls.audioTracks[t].url;
  3514. if (r) {
  3515. var i = this.videoBuffer;
  3516. i && this.mediaBuffer !== i && (p.logger.log("switching on alternate audio, use video.buffered to schedule main fragment loading"), this.mediaBuffer = i)
  3517. }
  3518. this.altAudio = r, this.tick()
  3519. }, r.prototype.onBufferCreated = function(e) {
  3520. var t, r, i = e.tracks,
  3521. a = !1;
  3522. for (var n in i) {
  3523. var o = i[n];
  3524. "main" === o.id ? (r = n, t = o, "video" === n && (this.videoBuffer = i[n].buffer)) : a = !0
  3525. }
  3526. a && t ? (p.logger.log("alternate track found, use " + r + ".buffered to schedule main fragment loading"), this.mediaBuffer = t.buffer) : this.mediaBuffer = this.media
  3527. }, r.prototype.onBufferAppended = function(e) {
  3528. if ("main" === e.parent) {
  3529. var t = this.state;
  3530. t !== m.State.PARSING && t !== m.State.PARSED || (this.pendingBuffering = e.pending > 0, this._checkAppendedParsed())
  3531. }
  3532. }, r.prototype._checkAppendedParsed = function() {
  3533. if (!(this.state !== m.State.PARSED || this.appended && this.pendingBuffering)) {
  3534. var e = this.fragCurrent;
  3535. if (e) {
  3536. var t = this.mediaBuffer ? this.mediaBuffer : this.media;
  3537. p.logger.log("main buffered : " + c.default.toString(t.buffered)), this.fragPrevious = e;
  3538. var r = this.stats;
  3539. r.tbuffered = window.performance.now(), this.fragLastKbps = Math.round(8 * r.total / (r.tbuffered - r.tfirst)), this.hls.trigger(s.default.FRAG_BUFFERED, {
  3540. stats: r,
  3541. frag: e,
  3542. id: "main"
  3543. }), this.state = m.State.IDLE
  3544. }
  3545. this.tick()
  3546. }
  3547. }, r.prototype.onError = function(t) {
  3548. var r = t.frag || this.fragCurrent;
  3549. if (!r || "main" === r.type) {
  3550. var i = !!this.media && n.BufferHelper.isBuffered(this.media, this.media.currentTime) && n.BufferHelper.isBuffered(this.media, this.media.currentTime + .5);
  3551. switch (t.details) {
  3552. case h.ErrorDetails.FRAG_LOAD_ERROR:
  3553. case h.ErrorDetails.FRAG_LOAD_TIMEOUT:
  3554. case h.ErrorDetails.KEY_LOAD_ERROR:
  3555. case h.ErrorDetails.KEY_LOAD_TIMEOUT:
  3556. if (!t.fatal)
  3557. if (this.fragLoadError + 1 <= this.config.fragLoadingMaxRetry) {
  3558. var a = Math.min(Math.pow(2, this.fragLoadError) * this.config.fragLoadingRetryDelay, this.config.fragLoadingMaxRetryTimeout);
  3559. p.logger.warn("mediaController: frag loading failed, retry in " + a + " ms"), this.retryDate = window.performance.now() + a, this.loadedmetadata || (this.startFragRequested = !1, this.nextLoadPosition = this.startPosition), this.fragLoadError++, this.state = m.State.FRAG_LOADING_WAITING_RETRY
  3560. } else p.logger.error("mediaController: " + t.details + " reaches max retry, redispatch as fatal ..."), t.fatal = !0, this.state = m.State.ERROR;
  3561. break;
  3562. case h.ErrorDetails.LEVEL_LOAD_ERROR:
  3563. case h.ErrorDetails.LEVEL_LOAD_TIMEOUT:
  3564. this.state !== m.State.ERROR && (t.fatal ? (this.state = m.State.ERROR, p.logger.warn("streamController: " + t.details + ",switch to " + this.state + " state ...")) : t.levelRetry || this.state !== m.State.WAITING_LEVEL || (this.state = m.State.IDLE));
  3565. break;
  3566. case h.ErrorDetails.BUFFER_FULL_ERROR:
  3567. "main" !== t.parent || this.state !== m.State.PARSING && this.state !== m.State.PARSED || (i ? (this._reduceMaxBufferLength(this.config.maxBufferLength), this.state = m.State.IDLE) : (p.logger.warn("buffer full error also media.currentTime is not buffered, flush everything"), this.fragCurrent = null, this.flushMainBuffer(0, e.POSITIVE_INFINITY)))
  3568. }
  3569. }
  3570. }, r.prototype._reduceMaxBufferLength = function(e) {
  3571. var t = this.config;
  3572. return t.maxMaxBufferLength >= e && (t.maxMaxBufferLength /= 2, p.logger.warn("main:reduce max buffer length to " + t.maxMaxBufferLength + "s"), !0)
  3573. }, r.prototype._checkBuffer = function() {
  3574. var e = this.media;
  3575. if (e && 0 !== e.readyState) {
  3576. var t = (this.mediaBuffer ? this.mediaBuffer : e).buffered;
  3577. !this.loadedmetadata && t.length ? (this.loadedmetadata = !0, this._seekToStartPos()) : this.immediateSwitch ? this.immediateLevelSwitchEnd() : this.gapController.poll(this.lastCurrentTime, t)
  3578. }
  3579. }, r.prototype.onFragLoadEmergencyAborted = function() {
  3580. this.state = m.State.IDLE, this.loadedmetadata || (this.startFragRequested = !1, this.nextLoadPosition = this.startPosition), this.tick()
  3581. }, r.prototype.onBufferFlushed = function() {
  3582. var e = this.mediaBuffer ? this.mediaBuffer : this.media;
  3583. e && this.fragmentTracker.detectEvictedFragments(u.default.ElementaryStreamTypes.VIDEO, e.buffered), this.state = m.State.IDLE, this.fragPrevious = null
  3584. }, r.prototype.swapAudioCodec = function() {
  3585. this.audioCodecSwap = !this.audioCodecSwap
  3586. }, r.prototype.computeLivePosition = function(e, t) {
  3587. var r = void 0 !== this.config.liveSyncDuration ? this.config.liveSyncDuration : this.config.liveSyncDurationCount * t.targetduration;
  3588. return e + Math.max(0, t.totalduration - r)
  3589. }, r.prototype._seekToStartPos = function() {
  3590. var e = this.media,
  3591. t = e.currentTime,
  3592. r = e.seeking ? t : this.startPosition;
  3593. t !== r && (p.logger.log("target start position not buffered, seek to buffered.start(0) " + r + " from current time " + t + " "), e.currentTime = r)
  3594. }, r.prototype._getAudioCodec = function(e) {
  3595. var t = this.config.defaultAudioCodec || e.audioCodec;
  3596. return this.audioCodecSwap && (p.logger.log("swapping playlist audio codec"), t && (t = -1 !== t.indexOf("mp4a.40.5") ? "mp4a.40.2" : "mp4a.40.5")), t
  3597. }, Object.defineProperty(r.prototype, "liveSyncPosition", {
  3598. get: function() {
  3599. return this._liveSyncPosition
  3600. },
  3601. set: function(e) {
  3602. this._liveSyncPosition = e
  3603. },
  3604. enumerable: !0,
  3605. configurable: !0
  3606. }), r
  3607. }(m.default);
  3608. t.default = E
  3609. }).call(this, r(2).Number)
  3610. }, function(e, t, r) {
  3611. function i(e) {
  3612. var t = {};
  3613.  
  3614. function r(i) {
  3615. if (t[i]) return t[i].exports;
  3616. var a = t[i] = {
  3617. i: i,
  3618. l: !1,
  3619. exports: {}
  3620. };
  3621. return e[i].call(a.exports, a, a.exports, r), a.l = !0, a.exports
  3622. }
  3623. r.m = e, r.c = t, r.i = function(e) {
  3624. return e
  3625. }, r.d = function(e, t, i) {
  3626. r.o(e, t) || Object.defineProperty(e, t, {
  3627. configurable: !1,
  3628. enumerable: !0,
  3629. get: i
  3630. })
  3631. }, r.r = function(e) {
  3632. Object.defineProperty(e, "__esModule", {
  3633. value: !0
  3634. })
  3635. }, r.n = function(e) {
  3636. var t = e && e.__esModule ? function() {
  3637. return e.default
  3638. } : function() {
  3639. return e
  3640. };
  3641. return r.d(t, "a", t), t
  3642. }, r.o = function(e, t) {
  3643. return Object.prototype.hasOwnProperty.call(e, t)
  3644. }, r.p = "/", r.oe = function(e) {
  3645. throw console.error(e), e
  3646. };
  3647. var i = r(r.s = ENTRY_MODULE);
  3648. return i.default || i
  3649. }
  3650. var a = "[\\.|\\-|\\+|\\w|/|@]+",
  3651. n = "\\((/\\*.*?\\*/)?s?.*?(" + a + ").*?\\)";
  3652.  
  3653. function o(e) {
  3654. return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
  3655. }
  3656.  
  3657. function s(e) {
  3658. return !isNaN(1 * e)
  3659. }
  3660.  
  3661. function l(e, t, i) {
  3662. var l = {};
  3663. l[i] = [];
  3664. var u = t.toString(),
  3665. d = u.match(/^function\s?\(\w+,\s*\w+,\s*(\w+)\)/);
  3666. if (!d) return l;
  3667. for (var f, c = d[1], h = new RegExp("(\\\\n|\\W)" + o(c) + n, "g"); f = h.exec(u);) "dll-reference" !== f[3] && l[i].push(f[3]);
  3668. for (h = new RegExp("\\(" + o(c) + '\\("(dll-reference\\s(' + a + '))"\\)\\)' + n, "g"); f = h.exec(u);) e[f[2]] || (l[i].push(f[1]), e[f[2]] = r(f[1]).m), l[f[2]] = l[f[2]] || [], l[f[2]].push(f[4]);
  3669. for (var p = Object.keys(l), g = 0; g < p.length; g++)
  3670. for (var v = 0; v < l[p[g]].length; v++) s(l[p[g]][v]) && (l[p[g]][v] = 1 * l[p[g]][v]);
  3671. return l
  3672. }
  3673.  
  3674. function u(e) {
  3675. return Object.keys(e).reduce(function(t, r) {
  3676. return t || e[r].length > 0
  3677. }, !1)
  3678. }
  3679. e.exports = function(e, t) {
  3680. t = t || {};
  3681. var a = {
  3682. main: r.m
  3683. },
  3684. n = t.all ? {
  3685. main: Object.keys(a.main)
  3686. } : function(e, t) {
  3687. for (var r = {
  3688. main: [t]
  3689. }, i = {
  3690. main: []
  3691. }, a = {
  3692. main: {}
  3693. }; u(r);)
  3694. for (var n = Object.keys(r), o = 0; o < n.length; o++) {
  3695. var s = n[o],
  3696. d = r[s].pop();
  3697. if (a[s] = a[s] || {}, !a[s][d] && e[s][d]) {
  3698. a[s][d] = !0, i[s] = i[s] || [], i[s].push(d);
  3699. for (var f = l(e, e[s][d], s), c = Object.keys(f), h = 0; h < c.length; h++) r[c[h]] = r[c[h]] || [], r[c[h]] = r[c[h]].concat(f[c[h]])
  3700. }
  3701. }
  3702. return i
  3703. }(a, e),
  3704. o = "";
  3705. Object.keys(n).filter(function(e) {
  3706. return "main" !== e
  3707. }).forEach(function(e) {
  3708. for (var t = 0; n[e][t];) t++;
  3709. n[e].push(t), a[e][t] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })", o = o + "var " + e + " = (" + i.toString().replace("ENTRY_MODULE", JSON.stringify(t)) + ")({" + n[e].map(function(t) {
  3710. return JSON.stringify(t) + ": " + a[e][t].toString()
  3711. }).join(",") + "});\n"
  3712. }), o = o + "new ((" + i.toString().replace("ENTRY_MODULE", JSON.stringify(e)) + ")({" + n.main.map(function(e) {
  3713. return JSON.stringify(e) + ": " + a.main[e].toString()
  3714. }).join(",") + "}))(self);";
  3715. var s = new window.Blob([o], {
  3716. type: "text/javascript"
  3717. });
  3718. if (t.bare) return s;
  3719. var d = (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(s),
  3720. f = new window.Worker(d);
  3721. return f.objectURL = d, f
  3722. }
  3723. }, function(e, t, r) {
  3724. "use strict";
  3725. Object.defineProperty(t, "__esModule", {
  3726. value: !0
  3727. });
  3728. var i = function() {
  3729. function e(e, t) {
  3730. this.subtle = e, this.aesIV = t
  3731. }
  3732. return e.prototype.decrypt = function(e, t) {
  3733. return this.subtle.decrypt({
  3734. name: "AES-CBC",
  3735. iv: this.aesIV
  3736. }, t, e)
  3737. }, e
  3738. }();
  3739. t.default = i
  3740. }, function(e, t, r) {
  3741. "use strict";
  3742. Object.defineProperty(t, "__esModule", {
  3743. value: !0
  3744. });
  3745. var i = function() {
  3746. function e(e, t) {
  3747. this.subtle = e, this.key = t
  3748. }
  3749. return e.prototype.expandKey = function() {
  3750. return this.subtle.importKey("raw", this.key, {
  3751. name: "AES-CBC"
  3752. }, !1, ["encrypt", "decrypt"])
  3753. }, e
  3754. }();
  3755. t.default = i
  3756. }, function(e, t, r) {
  3757. "use strict";
  3758.  
  3759. function i(e) {
  3760. var t = e.byteLength,
  3761. r = t && new DataView(e).getUint8(t - 1);
  3762. return r ? e.slice(0, t - r) : e
  3763. }
  3764. Object.defineProperty(t, "__esModule", {
  3765. value: !0
  3766. }), t.removePadding = i;
  3767. var a = function() {
  3768. function e() {
  3769. this.rcon = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)], this.sBox = new Uint32Array(256), this.invSBox = new Uint32Array(256), this.key = new Uint32Array(0), this.initTable()
  3770. }
  3771. return e.prototype.uint8ArrayToUint32Array_ = function(e) {
  3772. for (var t = new DataView(e), r = new Uint32Array(4), i = 0; i < 4; i++) r[i] = t.getUint32(4 * i);
  3773. return r
  3774. }, e.prototype.initTable = function() {
  3775. var e = this.sBox,
  3776. t = this.invSBox,
  3777. r = this.subMix,
  3778. i = r[0],
  3779. a = r[1],
  3780. n = r[2],
  3781. o = r[3],
  3782. s = this.invSubMix,
  3783. l = s[0],
  3784. u = s[1],
  3785. d = s[2],
  3786. f = s[3],
  3787. c = new Uint32Array(256),
  3788. h = 0,
  3789. p = 0,
  3790. g = 0;
  3791. for (g = 0; g < 256; g++) c[g] = g < 128 ? g << 1 : g << 1 ^ 283;
  3792. for (g = 0; g < 256; g++) {
  3793. var v = p ^ p << 1 ^ p << 2 ^ p << 3 ^ p << 4;
  3794. v = v >>> 8 ^ 255 & v ^ 99, e[h] = v, t[v] = h;
  3795. var y = c[h],
  3796. m = c[y],
  3797. E = c[m],
  3798. _ = 257 * c[v] ^ 16843008 * v;
  3799. i[h] = _ << 24 | _ >>> 8, a[h] = _ << 16 | _ >>> 16, n[h] = _ << 8 | _ >>> 24, o[h] = _, _ = 16843009 * E ^ 65537 * m ^ 257 * y ^ 16843008 * h, l[v] = _ << 24 | _ >>> 8, u[v] = _ << 16 | _ >>> 16, d[v] = _ << 8 | _ >>> 24, f[v] = _, h ? (h = y ^ c[c[c[E ^ y]]], p ^= c[c[p]]) : h = p = 1
  3800. }
  3801. }, e.prototype.expandKey = function(e) {
  3802. for (var t = this.uint8ArrayToUint32Array_(e), r = !0, i = 0; i < t.length && r;) r = t[i] === this.key[i], i++;
  3803. if (!r) {
  3804. this.key = t;
  3805. var a = this.keySize = t.length;
  3806. if (4 !== a && 6 !== a && 8 !== a) throw new Error("Invalid aes key size=" + a);
  3807. var n, o, s, l, u = this.ksRows = 4 * (a + 6 + 1),
  3808. d = this.keySchedule = new Uint32Array(u),
  3809. f = this.invKeySchedule = new Uint32Array(u),
  3810. c = this.sBox,
  3811. h = this.rcon,
  3812. p = this.invSubMix,
  3813. g = p[0],
  3814. v = p[1],
  3815. y = p[2],
  3816. m = p[3];
  3817. for (n = 0; n < u; n++) n < a ? s = d[n] = t[n] : (l = s, n % a == 0 ? (l = c[(l = l << 8 | l >>> 24) >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & l], l ^= h[n / a | 0] << 24) : a > 6 && n % a == 4 && (l = c[l >>> 24] << 24 | c[l >>> 16 & 255] << 16 | c[l >>> 8 & 255] << 8 | c[255 & l]), d[n] = s = (d[n - a] ^ l) >>> 0);
  3818. for (o = 0; o < u; o++) n = u - o, l = 3 & o ? d[n] : d[n - 4], f[o] = o < 4 || n <= 4 ? l : g[c[l >>> 24]] ^ v[c[l >>> 16 & 255]] ^ y[c[l >>> 8 & 255]] ^ m[c[255 & l]], f[o] = f[o] >>> 0
  3819. }
  3820. }, e.prototype.networkToHostOrderSwap = function(e) {
  3821. return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24
  3822. }, e.prototype.decrypt = function(e, t, r, a) {
  3823. for (var n, o, s, l, u, d, f, c, h, p, g, v, y, m, E = this.keySize + 6, _ = this.invKeySchedule, T = this.invSBox, S = this.invSubMix, b = S[0], A = S[1], R = S[2], D = S[3], L = this.uint8ArrayToUint32Array_(r), w = L[0], O = L[1], I = L[2], P = L[3], k = new Int32Array(e), C = new Int32Array(k.length), F = this.networkToHostOrderSwap; t < k.length;) {
  3824. for (h = F(k[t]), p = F(k[t + 1]), g = F(k[t + 2]), v = F(k[t + 3]), u = h ^ _[0], d = v ^ _[1], f = g ^ _[2], c = p ^ _[3], y = 4, m = 1; m < E; m++) n = b[u >>> 24] ^ A[d >> 16 & 255] ^ R[f >> 8 & 255] ^ D[255 & c] ^ _[y], o = b[d >>> 24] ^ A[f >> 16 & 255] ^ R[c >> 8 & 255] ^ D[255 & u] ^ _[y + 1], s = b[f >>> 24] ^ A[c >> 16 & 255] ^ R[u >> 8 & 255] ^ D[255 & d] ^ _[y + 2], l = b[c >>> 24] ^ A[u >> 16 & 255] ^ R[d >> 8 & 255] ^ D[255 & f] ^ _[y + 3], u = n, d = o, f = s, c = l, y += 4;
  3825. n = T[u >>> 24] << 24 ^ T[d >> 16 & 255] << 16 ^ T[f >> 8 & 255] << 8 ^ T[255 & c] ^ _[y], o = T[d >>> 24] << 24 ^ T[f >> 16 & 255] << 16 ^ T[c >> 8 & 255] << 8 ^ T[255 & u] ^ _[y + 1], s = T[f >>> 24] << 24 ^ T[c >> 16 & 255] << 16 ^ T[u >> 8 & 255] << 8 ^ T[255 & d] ^ _[y + 2], l = T[c >>> 24] << 24 ^ T[u >> 16 & 255] << 16 ^ T[d >> 8 & 255] << 8 ^ T[255 & f] ^ _[y + 3], y += 3, C[t] = F(n ^ w), C[t + 1] = F(l ^ O), C[t + 2] = F(s ^ I), C[t + 3] = F(o ^ P), w = h, O = p, I = g, P = v, t += 4
  3826. }
  3827. return a ? i(C.buffer) : C.buffer
  3828. }, e.prototype.destroy = function() {
  3829. this.key = void 0, this.keySize = void 0, this.ksRows = void 0, this.sBox = void 0, this.invSBox = void 0, this.subMix = void 0, this.invSubMix = void 0, this.keySchedule = void 0, this.invKeySchedule = void 0, this.rcon = void 0
  3830. }, e
  3831. }();
  3832. t.default = a
  3833. }, function(e, t, r) {
  3834. "use strict";
  3835. (function(e) {
  3836. Object.defineProperty(t, "__esModule", {
  3837. value: !0
  3838. });
  3839. var i = r(22),
  3840. a = r(0),
  3841. n = r(11),
  3842. o = function() {
  3843. function t(e, t, r) {
  3844. this.observer = e, this.config = r, this.remuxer = t
  3845. }
  3846. return t.prototype.resetInitSegment = function(e, t, r, i) {
  3847. this._audioTrack = {
  3848. container: "audio/adts",
  3849. type: "audio",
  3850. id: 0,
  3851. sequenceNumber: 0,
  3852. isAAC: !0,
  3853. samples: [],
  3854. len: 0,
  3855. manifestCodec: t,
  3856. duration: i,
  3857. inputTimeScale: 9e4
  3858. }
  3859. }, t.prototype.resetTimeStamp = function() {}, t.probe = function(e) {
  3860. if (!e) return !1;
  3861. for (var t = (n.default.getID3Data(e, 0) || []).length, r = e.length; t < r; t++)
  3862. if (i.probe(e, t)) return a.logger.log("ADTS sync word found !"), !0;
  3863. return !1
  3864. }, t.prototype.append = function(t, r, o, s) {
  3865. for (var l = this._audioTrack, u = n.default.getID3Data(t, 0) || [], d = n.default.getTimeStamp(u), f = e.isFinite(d) ? 90 * d : 9e4 * r, c = 0, h = f, p = t.length, g = u.length, v = [{
  3866. pts: h,
  3867. dts: h,
  3868. data: u
  3869. }]; g < p - 1;)
  3870. if (i.isHeader(t, g) && g + 5 < p) {
  3871. i.initTrackConfig(l, this.observer, t, g, l.manifestCodec);
  3872. var y = i.appendFrame(l, t, g, f, c);
  3873. if (!y) {
  3874. a.logger.log("Unable to parse AAC frame");
  3875. break
  3876. }
  3877. g += y.length, h = y.sample.pts, c++
  3878. } else n.default.isHeader(t, g) ? (u = n.default.getID3Data(t, g), v.push({
  3879. pts: h,
  3880. dts: h,
  3881. data: u
  3882. }), g += u.length) : g++;
  3883. this.remuxer.remux(l, {
  3884. samples: []
  3885. }, {
  3886. samples: v,
  3887. inputTimeScale: 9e4
  3888. }, {
  3889. samples: []
  3890. }, r, o, s)
  3891. }, t.prototype.destroy = function() {}, t
  3892. }();
  3893. t.default = o
  3894. }).call(this, r(2).Number)
  3895. }, function(e, t, r) {
  3896. "use strict";
  3897. Object.defineProperty(t, "__esModule", {
  3898. value: !0
  3899. });
  3900. var i = r(22),
  3901. a = r(23),
  3902. n = r(1),
  3903. o = r(44),
  3904. s = r(45),
  3905. l = r(0),
  3906. u = r(3),
  3907. d = {
  3908. video: 1,
  3909. audio: 2,
  3910. id3: 3,
  3911. text: 4
  3912. },
  3913. f = function() {
  3914. function e(e, t, r, i) {
  3915. this.observer = e, this.config = r, this.typeSupported = i, this.remuxer = t, this.sampleAes = null
  3916. }
  3917. return e.prototype.setDecryptData = function(e) {
  3918. null != e && null != e.key && "SAMPLE-AES" === e.method ? this.sampleAes = new s.default(this.observer, this.config, e, this.discardEPB) : this.sampleAes = null
  3919. }, e.probe = function(t) {
  3920. var r = e._syncOffset(t);
  3921. return !(r < 0) && (r && l.logger.warn("MPEG2-TS detected but first sync word found @ offset " + r + ", junk ahead ?"), !0)
  3922. }, e._syncOffset = function(e) {
  3923. for (var t = Math.min(1e3, e.length - 564), r = 0; r < t;) {
  3924. if (71 === e[r] && 71 === e[r + 188] && 71 === e[r + 376]) return r;
  3925. r++
  3926. }
  3927. return -1
  3928. }, e.createTrack = function(e, t) {
  3929. return {
  3930. container: "video" === e || "audio" === e ? "video/mp2t" : void 0,
  3931. type: e,
  3932. id: d[e],
  3933. pid: -1,
  3934. inputTimeScale: 9e4,
  3935. sequenceNumber: 0,
  3936. samples: [],
  3937. len: 0,
  3938. dropped: "video" === e ? 0 : void 0,
  3939. isAAC: "audio" === e || void 0,
  3940. duration: "audio" === e ? t : void 0
  3941. }
  3942. }, e.prototype.resetInitSegment = function(t, r, i, a) {
  3943. this.pmtParsed = !1, this._pmtId = -1, this._avcTrack = e.createTrack("video", a), this._audioTrack = e.createTrack("audio", a), this._id3Track = e.createTrack("id3", a), this._txtTrack = e.createTrack("text", a), this.aacOverFlow = null, this.aacLastPTS = null, this.avcSample = null, this.audioCodec = r, this.videoCodec = i, this._duration = a
  3944. }, e.prototype.resetTimeStamp = function() {}, e.prototype.append = function(t, r, i, a) {
  3945. var o, s, d, f, c, h = t.length,
  3946. p = !1;
  3947. this.contiguous = i;
  3948. var g = this.pmtParsed,
  3949. v = this._avcTrack,
  3950. y = this._audioTrack,
  3951. m = this._id3Track,
  3952. E = v.pid,
  3953. _ = y.pid,
  3954. T = m.pid,
  3955. S = this._pmtId,
  3956. b = v.pesData,
  3957. A = y.pesData,
  3958. R = m.pesData,
  3959. D = this._parsePAT,
  3960. L = this._parsePMT,
  3961. w = this._parsePES,
  3962. O = this._parseAVCPES.bind(this),
  3963. I = this._parseAACPES.bind(this),
  3964. P = this._parseMPEGPES.bind(this),
  3965. k = this._parseID3PES.bind(this),
  3966. C = e._syncOffset(t);
  3967. for (h -= (h + C) % 188, o = C; o < h; o += 188)
  3968. if (71 === t[o]) {
  3969. if (s = !!(64 & t[o + 1]), d = ((31 & t[o + 1]) << 8) + t[o + 2], (48 & t[o + 3]) >> 4 > 1) {
  3970. if ((f = o + 5 + t[o + 4]) === o + 188) continue
  3971. } else f = o + 4;
  3972. switch (d) {
  3973. case E:
  3974. s && (b && (c = w(b)) && void 0 !== c.pts && O(c, !1), b = {
  3975. data: [],
  3976. size: 0
  3977. }), b && (b.data.push(t.subarray(f, o + 188)), b.size += o + 188 - f);
  3978. break;
  3979. case _:
  3980. s && (A && (c = w(A)) && void 0 !== c.pts && (y.isAAC ? I(c) : P(c)), A = {
  3981. data: [],
  3982. size: 0
  3983. }), A && (A.data.push(t.subarray(f, o + 188)), A.size += o + 188 - f);
  3984. break;
  3985. case T:
  3986. s && (R && (c = w(R)) && void 0 !== c.pts && k(c), R = {
  3987. data: [],
  3988. size: 0
  3989. }), R && (R.data.push(t.subarray(f, o + 188)), R.size += o + 188 - f);
  3990. break;
  3991. case 0:
  3992. s && (f += t[f] + 1), S = this._pmtId = D(t, f);
  3993. break;
  3994. case S:
  3995. s && (f += t[f] + 1);
  3996. var F = L(t, f, !0 === this.typeSupported.mpeg || !0 === this.typeSupported.mp3, null != this.sampleAes);
  3997. (E = F.avc) > 0 && (v.pid = E), (_ = F.audio) > 0 && (y.pid = _, y.isAAC = F.isAAC), (T = F.id3) > 0 && (m.pid = T), p && !g && (l.logger.log("reparse from beginning"), p = !1, o = C - 188), g = this.pmtParsed = !0;
  3998. break;
  3999. case 17:
  4000. case 8191:
  4001. break;
  4002. default:
  4003. p = !0
  4004. }
  4005. } else this.observer.trigger(n.default.ERROR, {
  4006. type: u.ErrorTypes.MEDIA_ERROR,
  4007. details: u.ErrorDetails.FRAG_PARSING_ERROR,
  4008. fatal: !1,
  4009. reason: "TS packet did not start with 0x47"
  4010. });
  4011. b && (c = w(b)) && void 0 !== c.pts ? (O(c, !0), v.pesData = null) : v.pesData = b, A && (c = w(A)) && void 0 !== c.pts ? (y.isAAC ? I(c) : P(c), y.pesData = null) : (A && A.size && l.logger.log("last AAC PES packet truncated,might overlap between fragments"), y.pesData = A), R && (c = w(R)) && void 0 !== c.pts ? (k(c), m.pesData = null) : m.pesData = R, null == this.sampleAes ? this.remuxer.remux(y, v, m, this._txtTrack, r, i, a) : this.decryptAndRemux(y, v, m, this._txtTrack, r, i, a)
  4012. }, e.prototype.decryptAndRemux = function(e, t, r, i, a, n, o) {
  4013. if (e.samples && e.isAAC) {
  4014. var s = this;
  4015. this.sampleAes.decryptAacSamples(e.samples, 0, function() {
  4016. s.decryptAndRemuxAvc(e, t, r, i, a, n, o)
  4017. })
  4018. } else this.decryptAndRemuxAvc(e, t, r, i, a, n, o)
  4019. }, e.prototype.decryptAndRemuxAvc = function(e, t, r, i, a, n, o) {
  4020. if (t.samples) {
  4021. var s = this;
  4022. this.sampleAes.decryptAvcSamples(t.samples, 0, 0, function() {
  4023. s.remuxer.remux(e, t, r, i, a, n, o)
  4024. })
  4025. } else this.remuxer.remux(e, t, r, i, a, n, o)
  4026. }, e.prototype.destroy = function() {
  4027. this._initPTS = this._initDTS = void 0, this._duration = 0
  4028. }, e.prototype._parsePAT = function(e, t) {
  4029. return (31 & e[t + 10]) << 8 | e[t + 11]
  4030. }, e.prototype._parsePMT = function(e, t, r, i) {
  4031. var a, n, o = {
  4032. audio: -1,
  4033. avc: -1,
  4034. id3: -1,
  4035. isAAC: !0
  4036. };
  4037. for (a = t + 3 + ((15 & e[t + 1]) << 8 | e[t + 2]) - 4, t += 12 + ((15 & e[t + 10]) << 8 | e[t + 11]); t < a;) {
  4038. switch (n = (31 & e[t + 1]) << 8 | e[t + 2], e[t]) {
  4039. case 207:
  4040. if (!i) {
  4041. l.logger.log("unkown stream type:" + e[t]);
  4042. break
  4043. }
  4044. case 15:
  4045. -1 === o.audio && (o.audio = n);
  4046. break;
  4047. case 21:
  4048. -1 === o.id3 && (o.id3 = n);
  4049. break;
  4050. case 219:
  4051. if (!i) {
  4052. l.logger.log("unkown stream type:" + e[t]);
  4053. break
  4054. }
  4055. case 27:
  4056. -1 === o.avc && (o.avc = n);
  4057. break;
  4058. case 3:
  4059. case 4:
  4060. r ? -1 === o.audio && (o.audio = n, o.isAAC = !1) : l.logger.log("MPEG audio found, not supported in this browser for now");
  4061. break;
  4062. case 36:
  4063. l.logger.warn("HEVC stream type found, not supported for now");
  4064. break;
  4065. default:
  4066. l.logger.log("unkown stream type:" + e[t])
  4067. }
  4068. t += 5 + ((15 & e[t + 3]) << 8 | e[t + 4])
  4069. }
  4070. return o
  4071. }, e.prototype._parsePES = function(e) {
  4072. var t, r, i, a, n, o, s, u, d = 0,
  4073. f = e.data;
  4074. if (!e || 0 === e.size) return null;
  4075. for (; f[0].length < 19 && f.length > 1;) {
  4076. var c = new Uint8Array(f[0].length + f[1].length);
  4077. c.set(f[0]), c.set(f[1], f[0].length), f[0] = c, f.splice(1, 1)
  4078. }
  4079. if (1 === ((t = f[0])[0] << 16) + (t[1] << 8) + t[2]) {
  4080. if ((i = (t[4] << 8) + t[5]) && i > e.size - 6) return null;
  4081. 192 & (r = t[7]) && ((o = 536870912 * (14 & t[9]) + 4194304 * (255 & t[10]) + 16384 * (254 & t[11]) + 128 * (255 & t[12]) + (254 & t[13]) / 2) > 4294967295 && (o -= 8589934592), 64 & r ? ((s = 536870912 * (14 & t[14]) + 4194304 * (255 & t[15]) + 16384 * (254 & t[16]) + 128 * (255 & t[17]) + (254 & t[18]) / 2) > 4294967295 && (s -= 8589934592), o - s > 54e5 && (l.logger.warn(Math.round((o - s) / 9e4) + "s delta between PTS and DTS, align them"), o = s)) : s = o), u = (a = t[8]) + 9, e.size -= u, n = new Uint8Array(e.size);
  4082. for (var h = 0, p = f.length; h < p; h++) {
  4083. var g = (t = f[h]).byteLength;
  4084. if (u) {
  4085. if (u > g) {
  4086. u -= g;
  4087. continue
  4088. }
  4089. t = t.subarray(u), g -= u, u = 0
  4090. }
  4091. n.set(t, d), d += g
  4092. }
  4093. return i && (i -= a + 3), {
  4094. data: n,
  4095. pts: o,
  4096. dts: s,
  4097. len: i
  4098. }
  4099. }
  4100. return null
  4101. }, e.prototype.pushAccesUnit = function(e, t) {
  4102. if (e.units.length && e.frame) {
  4103. var r = t.samples,
  4104. i = r.length;
  4105. !this.config.forceKeyFrameOnDiscontinuity || !0 === e.key || t.sps && (i || this.contiguous) ? (e.id = i, r.push(e)) : t.dropped++
  4106. }
  4107. e.debug.length && l.logger.log(e.pts + "/" + e.dts + ":" + e.debug)
  4108. }, e.prototype._parseAVCPES = function(e, t) {
  4109. var r, i, a, n = this,
  4110. s = this._avcTrack,
  4111. l = this._parseAVCNALu(e.data),
  4112. u = this.avcSample,
  4113. d = !1,
  4114. f = this.pushAccesUnit.bind(this),
  4115. c = function(e, t, r, i) {
  4116. return {
  4117. key: e,
  4118. pts: t,
  4119. dts: r,
  4120. units: [],
  4121. debug: i
  4122. }
  4123. };
  4124. e.data = null, u && l.length && !s.audFound && (f(u, s), u = this.avcSample = c(!1, e.pts, e.dts, "")), l.forEach(function(t) {
  4125. switch (t.type) {
  4126. case 1:
  4127. i = !0, u || (u = n.avcSample = c(!0, e.pts, e.dts, "")), u.frame = !0;
  4128. var l = t.data;
  4129. if (d && l.length > 4) {
  4130. var h = new o.default(l).readSliceType();
  4131. 2 !== h && 4 !== h && 7 !== h && 9 !== h || (u.key = !0)
  4132. }
  4133. break;
  4134. case 5:
  4135. i = !0, u || (u = n.avcSample = c(!0, e.pts, e.dts, "")), u.key = !0, u.frame = !0;
  4136. break;
  4137. case 6:
  4138. i = !0, (r = new o.default(n.discardEPB(t.data))).readUByte();
  4139. for (var p = 0, g = 0, v = !1, y = 0; !v && r.bytesAvailable > 1;) {
  4140. p = 0;
  4141. do {
  4142. p += y = r.readUByte()
  4143. } while (255 === y);
  4144. g = 0;
  4145. do {
  4146. g += y = r.readUByte()
  4147. } while (255 === y);
  4148. if (4 === p && 0 !== r.bytesAvailable) {
  4149. if (v = !0, 181 === r.readUByte())
  4150. if (49 === r.readUShort())
  4151. if (1195456820 === r.readUInt())
  4152. if (3 === r.readUByte()) {
  4153. var m = r.readUByte(),
  4154. E = 31 & m,
  4155. _ = [m, r.readUByte()];
  4156. for (a = 0; a < E; a++) _.push(r.readUByte()), _.push(r.readUByte()), _.push(r.readUByte());
  4157. n._insertSampleInOrder(n._txtTrack.samples, {
  4158. type: 3,
  4159. pts: e.pts,
  4160. bytes: _
  4161. })
  4162. }
  4163. } else if (g < r.bytesAvailable)
  4164. for (a = 0; a < g; a++) r.readUByte()
  4165. }
  4166. break;
  4167. case 7:
  4168. if (i = !0, d = !0, !s.sps) {
  4169. var T = (r = new o.default(t.data)).readSPS();
  4170. s.width = T.width, s.height = T.height, s.pixelRatio = T.pixelRatio, s.sps = [t.data], s.duration = n._duration;
  4171. var S = t.data.subarray(1, 4),
  4172. b = "avc1.";
  4173. for (a = 0; a < 3; a++) {
  4174. var A = S[a].toString(16);
  4175. A.length < 2 && (A = "0" + A), b += A
  4176. }
  4177. s.codec = b
  4178. }
  4179. break;
  4180. case 8:
  4181. i = !0, s.pps || (s.pps = [t.data]);
  4182. break;
  4183. case 9:
  4184. i = !1, s.audFound = !0, u && f(u, s), u = n.avcSample = c(!1, e.pts, e.dts, "");
  4185. break;
  4186. case 12:
  4187. i = !1;
  4188. break;
  4189. default:
  4190. i = !1, u && (u.debug += "unknown NAL " + t.type + " ")
  4191. }
  4192. u && i && u.units.push(t)
  4193. }), t && u && (f(u, s), this.avcSample = null)
  4194. }, e.prototype._insertSampleInOrder = function(e, t) {
  4195. var r = e.length;
  4196. if (r > 0) {
  4197. if (t.pts >= e[r - 1].pts) e.push(t);
  4198. else
  4199. for (var i = r - 1; i >= 0; i--)
  4200. if (t.pts < e[i].pts) {
  4201. e.splice(i, 0, t);
  4202. break
  4203. }
  4204. } else e.push(t)
  4205. }, e.prototype._getLastNalUnit = function() {
  4206. var e, t = this.avcSample;
  4207. if (!t || 0 === t.units.length) {
  4208. var r = this._avcTrack.samples;
  4209. t = r[r.length - 1]
  4210. }
  4211. if (t) {
  4212. var i = t.units;
  4213. e = i[i.length - 1]
  4214. }
  4215. return e
  4216. }, e.prototype._parseAVCNALu = function(e) {
  4217. var t, r, i, a, n = 0,
  4218. o = e.byteLength,
  4219. s = this._avcTrack,
  4220. l = s.naluState || 0,
  4221. u = l,
  4222. d = [],
  4223. f = -1;
  4224. for (-1 === l && (f = 0, a = 31 & e[0], l = 0, n = 1); n < o;)
  4225. if (t = e[n++], l)
  4226. if (1 !== l)
  4227. if (t)
  4228. if (1 === t) {
  4229. var c, h;
  4230. if (f >= 0) i = {
  4231. data: e.subarray(f, n - l - 1),
  4232. type: a
  4233. }, d.push(i);
  4234. else if (c = this._getLastNalUnit())
  4235. if (u && n <= 4 - u && c.state && (c.data = c.data.subarray(0, c.data.byteLength - u)), (r = n - l - 1) > 0)(h = new Uint8Array(c.data.byteLength + r)).set(c.data, 0), h.set(e.subarray(0, r), c.data.byteLength), c.data = h;
  4236. n < o ? (f = n, a = 31 & e[n], l = 0) : l = -1
  4237. } else l = 0;
  4238. else l = 3;
  4239. else l = t ? 0 : 2;
  4240. else l = t ? 0 : 1;
  4241. (f >= 0 && l >= 0 && (i = {
  4242. data: e.subarray(f, o),
  4243. type: a,
  4244. state: l
  4245. }, d.push(i)), 0 === d.length) && ((c = this._getLastNalUnit()) && ((h = new Uint8Array(c.data.byteLength + e.byteLength)).set(c.data, 0), h.set(e, c.data.byteLength), c.data = h));
  4246. return s.naluState = l, d
  4247. }, e.prototype.discardEPB = function(e) {
  4248. for (var t, r, i = e.byteLength, a = [], n = 1; n < i - 2;) 0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2] ? (a.push(n + 2), n += 2) : n++;
  4249. if (0 === a.length) return e;
  4250. t = i - a.length, r = new Uint8Array(t);
  4251. var o = 0;
  4252. for (n = 0; n < t; o++, n++) o === a[0] && (o++, a.shift()), r[n] = e[o];
  4253. return r
  4254. }, e.prototype._parseAACPES = function(e) {
  4255. var t, r, a, o, s, d = this._audioTrack,
  4256. f = e.data,
  4257. c = e.pts,
  4258. h = this.aacOverFlow,
  4259. p = this.aacLastPTS;
  4260. if (h) {
  4261. var g = new Uint8Array(h.byteLength + f.byteLength);
  4262. g.set(h, 0), g.set(f, h.byteLength), f = g
  4263. }
  4264. for (a = 0, s = f.length; a < s - 1 && !i.isHeader(f, a); a++);
  4265. if (a) {
  4266. var v = void 0,
  4267. y = void 0;
  4268. if (a < s - 1 ? (v = "AAC PES did not start with ADTS header,offset:" + a, y = !1) : (v = "no ADTS header found in AAC PES", y = !0), l.logger.warn("parsing error:" + v), this.observer.trigger(n.default.ERROR, {
  4269. type: u.ErrorTypes.MEDIA_ERROR,
  4270. details: u.ErrorDetails.FRAG_PARSING_ERROR,
  4271. fatal: y,
  4272. reason: v
  4273. }), y) return
  4274. }
  4275. if (i.initTrackConfig(d, this.observer, f, a, this.audioCodec), r = 0, t = i.getFrameDuration(d.samplerate), h && p) {
  4276. var m = p + t;
  4277. Math.abs(m - c) > 1 && (l.logger.log("AAC: align PTS for overlapping frames by " + Math.round((m - c) / 90)), c = m)
  4278. }
  4279. for (; a < s;)
  4280. if (i.isHeader(f, a) && a + 5 < s) {
  4281. var E = i.appendFrame(d, f, a, c, r);
  4282. if (!E) break;
  4283. a += E.length, o = E.sample.pts, r++
  4284. } else a++;
  4285. h = a < s ? f.subarray(a, s) : null, this.aacOverFlow = h, this.aacLastPTS = o
  4286. }, e.prototype._parseMPEGPES = function(e) {
  4287. for (var t = e.data, r = t.length, i = 0, n = 0, o = e.pts; n < r;)
  4288. if (a.default.isHeader(t, n)) {
  4289. var s = a.default.appendFrame(this._audioTrack, t, n, o, i);
  4290. if (!s) break;
  4291. n += s.length, i++
  4292. } else n++
  4293. }, e.prototype._parseID3PES = function(e) {
  4294. this._id3Track.samples.push(e)
  4295. }, e
  4296. }();
  4297. t.default = f
  4298. }, function(e, t, r) {
  4299. "use strict";
  4300. Object.defineProperty(t, "__esModule", {
  4301. value: !0
  4302. });
  4303. var i = r(0),
  4304. a = function() {
  4305. function e(e) {
  4306. this.data = e, this.bytesAvailable = e.byteLength, this.word = 0, this.bitsAvailable = 0
  4307. }
  4308. return e.prototype.loadWord = function() {
  4309. var e = this.data,
  4310. t = this.bytesAvailable,
  4311. r = e.byteLength - t,
  4312. i = new Uint8Array(4),
  4313. a = Math.min(4, t);
  4314. if (0 === a) throw new Error("no bytes available");
  4315. i.set(e.subarray(r, r + a)), this.word = new DataView(i.buffer).getUint32(0), this.bitsAvailable = 8 * a, this.bytesAvailable -= a
  4316. }, e.prototype.skipBits = function(e) {
  4317. var t;
  4318. this.bitsAvailable > e ? (this.word <<= e, this.bitsAvailable -= e) : (e -= this.bitsAvailable, e -= (t = e >> 3) >> 3, this.bytesAvailable -= t, this.loadWord(), this.word <<= e, this.bitsAvailable -= e)
  4319. }, e.prototype.readBits = function(e) {
  4320. var t = Math.min(this.bitsAvailable, e),
  4321. r = this.word >>> 32 - t;
  4322. return e > 32 && i.logger.error("Cannot read more than 32 bits at a time"), this.bitsAvailable -= t, this.bitsAvailable > 0 ? this.word <<= t : this.bytesAvailable > 0 && this.loadWord(), (t = e - t) > 0 && this.bitsAvailable ? r << t | this.readBits(t) : r
  4323. }, e.prototype.skipLZ = function() {
  4324. var e;
  4325. for (e = 0; e < this.bitsAvailable; ++e)
  4326. if (0 != (this.word & 2147483648 >>> e)) return this.word <<= e, this.bitsAvailable -= e, e;
  4327. return this.loadWord(), e + this.skipLZ()
  4328. }, e.prototype.skipUEG = function() {
  4329. this.skipBits(1 + this.skipLZ())
  4330. }, e.prototype.skipEG = function() {
  4331. this.skipBits(1 + this.skipLZ())
  4332. }, e.prototype.readUEG = function() {
  4333. var e = this.skipLZ();
  4334. return this.readBits(e + 1) - 1
  4335. }, e.prototype.readEG = function() {
  4336. var e = this.readUEG();
  4337. return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1)
  4338. }, e.prototype.readBoolean = function() {
  4339. return 1 === this.readBits(1)
  4340. }, e.prototype.readUByte = function() {
  4341. return this.readBits(8)
  4342. }, e.prototype.readUShort = function() {
  4343. return this.readBits(16)
  4344. }, e.prototype.readUInt = function() {
  4345. return this.readBits(32)
  4346. }, e.prototype.skipScalingList = function(e) {
  4347. var t, r = 8,
  4348. i = 8;
  4349. for (t = 0; t < e; t++) 0 !== i && (i = (r + this.readEG() + 256) % 256), r = 0 === i ? r : i
  4350. }, e.prototype.readSPS = function() {
  4351. var e, t, r, i, a, n, o, s = 0,
  4352. l = 0,
  4353. u = 0,
  4354. d = 0,
  4355. f = this.readUByte.bind(this),
  4356. c = this.readBits.bind(this),
  4357. h = this.readUEG.bind(this),
  4358. p = this.readBoolean.bind(this),
  4359. g = this.skipBits.bind(this),
  4360. v = this.skipEG.bind(this),
  4361. y = this.skipUEG.bind(this),
  4362. m = this.skipScalingList.bind(this);
  4363. if (f(), e = f(), c(5), g(3), f(), y(), 100 === e || 110 === e || 122 === e || 244 === e || 44 === e || 83 === e || 86 === e || 118 === e || 128 === e) {
  4364. var E = h();
  4365. if (3 === E && g(1), y(), y(), g(1), p())
  4366. for (n = 3 !== E ? 8 : 12, o = 0; o < n; o++) p() && m(o < 6 ? 16 : 64)
  4367. }
  4368. y();
  4369. var _ = h();
  4370. if (0 === _) h();
  4371. else if (1 === _)
  4372. for (g(1), v(), v(), t = h(), o = 0; o < t; o++) v();
  4373. y(), g(1), r = h(), i = h(), 0 === (a = c(1)) && g(1), g(1), p() && (s = h(), l = h(), u = h(), d = h());
  4374. var T = [1, 1];
  4375. if (p() && p()) switch (f()) {
  4376. case 1:
  4377. T = [1, 1];
  4378. break;
  4379. case 2:
  4380. T = [12, 11];
  4381. break;
  4382. case 3:
  4383. T = [10, 11];
  4384. break;
  4385. case 4:
  4386. T = [16, 11];
  4387. break;
  4388. case 5:
  4389. T = [40, 33];
  4390. break;
  4391. case 6:
  4392. T = [24, 11];
  4393. break;
  4394. case 7:
  4395. T = [20, 11];
  4396. break;
  4397. case 8:
  4398. T = [32, 11];
  4399. break;
  4400. case 9:
  4401. T = [80, 33];
  4402. break;
  4403. case 10:
  4404. T = [18, 11];
  4405. break;
  4406. case 11:
  4407. T = [15, 11];
  4408. break;
  4409. case 12:
  4410. T = [64, 33];
  4411. break;
  4412. case 13:
  4413. T = [160, 99];
  4414. break;
  4415. case 14:
  4416. T = [4, 3];
  4417. break;
  4418. case 15:
  4419. T = [3, 2];
  4420. break;
  4421. case 16:
  4422. T = [2, 1];
  4423. break;
  4424. case 255:
  4425. T = [f() << 8 | f(), f() << 8 | f()]
  4426. }
  4427. return {
  4428. width: Math.ceil(16 * (r + 1) - 2 * s - 2 * l),
  4429. height: (2 - a) * (i + 1) * 16 - (a ? 2 : 4) * (u + d),
  4430. pixelRatio: T
  4431. }
  4432. }, e.prototype.readSliceType = function() {
  4433. return this.readUByte(), this.readUEG(), this.readUEG()
  4434. }, e
  4435. }();
  4436. t.default = a
  4437. }, function(e, t, r) {
  4438. "use strict";
  4439. Object.defineProperty(t, "__esModule", {
  4440. value: !0
  4441. });
  4442. var i = r(13),
  4443. a = function() {
  4444. function e(e, t, r, a) {
  4445. this.decryptdata = r, this.discardEPB = a, this.decrypter = new i.default(e, t, {
  4446. removePKCS7Padding: !1
  4447. })
  4448. }
  4449. return e.prototype.decryptBuffer = function(e, t) {
  4450. this.decrypter.decrypt(e, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, t)
  4451. }, e.prototype.decryptAacSample = function(e, t, r, i) {
  4452. var a = e[t].unit,
  4453. n = a.subarray(16, a.length - a.length % 16),
  4454. o = n.buffer.slice(n.byteOffset, n.byteOffset + n.length),
  4455. s = this;
  4456. this.decryptBuffer(o, function(n) {
  4457. n = new Uint8Array(n), a.set(n, 16), i || s.decryptAacSamples(e, t + 1, r)
  4458. })
  4459. }, e.prototype.decryptAacSamples = function(e, t, r) {
  4460. for (;; t++) {
  4461. if (t >= e.length) return void r();
  4462. if (!(e[t].unit.length < 32)) {
  4463. var i = this.decrypter.isSync();
  4464. if (this.decryptAacSample(e, t, r, i), !i) return
  4465. }
  4466. }
  4467. }, e.prototype.getAvcEncryptedData = function(e) {
  4468. for (var t = 16 * Math.floor((e.length - 48) / 160) + 16, r = new Int8Array(t), i = 0, a = 32; a <= e.length - 16; a += 160, i += 16) r.set(e.subarray(a, a + 16), i);
  4469. return r
  4470. }, e.prototype.getAvcDecryptedUnit = function(e, t) {
  4471. t = new Uint8Array(t);
  4472. for (var r = 0, i = 32; i <= e.length - 16; i += 160, r += 16) e.set(t.subarray(r, r + 16), i);
  4473. return e
  4474. }, e.prototype.decryptAvcSample = function(e, t, r, i, a, n) {
  4475. var o = this.discardEPB(a.data),
  4476. s = this.getAvcEncryptedData(o),
  4477. l = this;
  4478. this.decryptBuffer(s.buffer, function(s) {
  4479. a.data = l.getAvcDecryptedUnit(o, s), n || l.decryptAvcSamples(e, t, r + 1, i)
  4480. })
  4481. }, e.prototype.decryptAvcSamples = function(e, t, r, i) {
  4482. for (;; t++, r = 0) {
  4483. if (t >= e.length) return void i();
  4484. for (var a = e[t].units; !(r >= a.length); r++) {
  4485. var n = a[r];
  4486. if (!(n.length <= 48 || 1 !== n.type && 5 !== n.type)) {
  4487. var o = this.decrypter.isSync();
  4488. if (this.decryptAvcSample(e, t, r, i, n, o), !o) return
  4489. }
  4490. }
  4491. }
  4492. }, e
  4493. }();
  4494. t.default = a
  4495. }, function(e, t, r) {
  4496. "use strict";
  4497. Object.defineProperty(t, "__esModule", {
  4498. value: !0
  4499. });
  4500. var i = r(11),
  4501. a = r(0),
  4502. n = r(23),
  4503. o = function() {
  4504. function e(e, t, r) {
  4505. this.observer = e, this.config = r, this.remuxer = t
  4506. }
  4507. return e.prototype.resetInitSegment = function(e, t, r, i) {
  4508. this._audioTrack = {
  4509. container: "audio/mpeg",
  4510. type: "audio",
  4511. id: -1,
  4512. sequenceNumber: 0,
  4513. isAAC: !1,
  4514. samples: [],
  4515. len: 0,
  4516. manifestCodec: t,
  4517. duration: i,
  4518. inputTimeScale: 9e4
  4519. }
  4520. }, e.prototype.resetTimeStamp = function() {}, e.probe = function(e) {
  4521. var t, r, o = i.default.getID3Data(e, 0);
  4522. if (o && void 0 !== i.default.getTimeStamp(o))
  4523. for (t = o.length, r = Math.min(e.length - 1, t + 100); t < r; t++)
  4524. if (n.default.probe(e, t)) return a.logger.log("MPEG Audio sync word found !"), !0;
  4525. return !1
  4526. }, e.prototype.append = function(e, t, r, a) {
  4527. for (var o = i.default.getID3Data(e, 0), s = i.default.getTimeStamp(o), l = s ? 90 * s : 9e4 * t, u = o.length, d = e.length, f = 0, c = 0, h = this._audioTrack, p = [{
  4528. pts: l,
  4529. dts: l,
  4530. data: o
  4531. }]; u < d;)
  4532. if (n.default.isHeader(e, u)) {
  4533. var g = n.default.appendFrame(h, e, u, l, f);
  4534. if (!g) break;
  4535. u += g.length, c = g.sample.pts, f++
  4536. } else i.default.isHeader(e, u) ? (o = i.default.getID3Data(e, u), p.push({
  4537. pts: c,
  4538. dts: c,
  4539. data: o
  4540. }), u += o.length) : u++;
  4541. this.remuxer.remux(h, {
  4542. samples: []
  4543. }, {
  4544. samples: p,
  4545. inputTimeScale: 9e4
  4546. }, {
  4547. samples: []
  4548. }, t, r, a)
  4549. }, e.prototype.destroy = function() {}, e
  4550. }();
  4551. t.default = o
  4552. }, function(e, t, r) {
  4553. "use strict";
  4554. Object.defineProperty(t, "__esModule", {
  4555. value: !0
  4556. });
  4557. var i = r(48),
  4558. a = r(49),
  4559. n = r(1),
  4560. o = r(3),
  4561. s = r(0),
  4562. l = function() {
  4563. function e(e, t, r, i) {
  4564. this.observer = e, this.config = t, this.typeSupported = r;
  4565. var a = navigator.userAgent;
  4566. this.isSafari = i && i.indexOf("Apple") > -1 && a && !a.match("CriOS"), this.ISGenerated = !1
  4567. }
  4568. return e.prototype.destroy = function() {}, e.prototype.resetTimeStamp = function(e) {
  4569. this._initPTS = this._initDTS = e
  4570. }, e.prototype.resetInitSegment = function() {
  4571. this.ISGenerated = !1
  4572. }, e.prototype.remux = function(e, t, r, i, a, o, l) {
  4573. if (this.ISGenerated || this.generateIS(e, t, a), this.ISGenerated) {
  4574. var u = e.samples.length,
  4575. d = t.samples.length,
  4576. f = a,
  4577. c = a;
  4578. if (u && d) {
  4579. var h = (e.samples[0].pts - t.samples[0].pts) / t.inputTimeScale;
  4580. f += Math.max(0, h), c += Math.max(0, -h)
  4581. }
  4582. if (u) {
  4583. e.timescale || (s.logger.warn("regenerate InitSegment as audio detected"), this.generateIS(e, t, a));
  4584. var p = this.remuxAudio(e, f, o, l);
  4585. if (d) {
  4586. var g = void 0;
  4587. p && (g = p.endPTS - p.startPTS), t.timescale || (s.logger.warn("regenerate InitSegment as video detected"), this.generateIS(e, t, a)), this.remuxVideo(t, c, o, g, l)
  4588. }
  4589. } else if (d) {
  4590. var v = this.remuxVideo(t, c, o, 0, l);
  4591. v && e.codec && this.remuxEmptyAudio(e, f, o, v)
  4592. }
  4593. }
  4594. r.samples.length && this.remuxID3(r, a), i.samples.length && this.remuxText(i, a), this.observer.trigger(n.default.FRAG_PARSED)
  4595. }, e.prototype.generateIS = function(e, t, r) {
  4596. var i, l, u = this.observer,
  4597. d = e.samples,
  4598. f = t.samples,
  4599. c = this.typeSupported,
  4600. h = "audio/mp4",
  4601. p = {},
  4602. g = {
  4603. tracks: p
  4604. },
  4605. v = void 0 === this._initPTS;
  4606. if (v && (i = l = 1 / 0), e.config && d.length && (e.timescale = e.samplerate, s.logger.log("audio sampling rate : " + e.samplerate), e.isAAC || (c.mpeg ? (h = "audio/mpeg", e.codec = "") : c.mp3 && (e.codec = "mp3")), p.audio = {
  4607. container: h,
  4608. codec: e.codec,
  4609. initSegment: !e.isAAC && c.mpeg ? new Uint8Array : a.default.initSegment([e]),
  4610. metadata: {
  4611. channelCount: e.channelCount
  4612. }
  4613. }, v && (i = l = d[0].pts - e.inputTimeScale * r)), t.sps && t.pps && f.length) {
  4614. var y = t.inputTimeScale;
  4615. t.timescale = y, p.video = {
  4616. container: "video/mp4",
  4617. codec: t.codec,
  4618. initSegment: a.default.initSegment([t]),
  4619. metadata: {
  4620. width: t.width,
  4621. height: t.height
  4622. }
  4623. }, v && (i = Math.min(i, f[0].pts - y * r), l = Math.min(l, f[0].dts - y * r), this.observer.trigger(n.default.INIT_PTS_FOUND, {
  4624. initPTS: i
  4625. }))
  4626. }
  4627. Object.keys(p).length ? (u.trigger(n.default.FRAG_PARSING_INIT_SEGMENT, g), this.ISGenerated = !0, v && (this._initPTS = i, this._initDTS = l)) : u.trigger(n.default.ERROR, {
  4628. type: o.ErrorTypes.MEDIA_ERROR,
  4629. details: o.ErrorDetails.FRAG_PARSING_ERROR,
  4630. fatal: !1,
  4631. reason: "no audio/video samples found"
  4632. })
  4633. }, e.prototype.remuxVideo = function(e, t, r, i, l) {
  4634. var u, d, f, c, h, p, g, v = 8,
  4635. y = e.timescale,
  4636. m = e.samples,
  4637. E = [],
  4638. _ = m.length,
  4639. T = this._PTSNormalize,
  4640. S = this._initPTS,
  4641. b = this.nextAvcDts,
  4642. A = this.isSafari;
  4643. if (0 !== _) {
  4644. A && (r |= m.length && b && (l && Math.abs(t - b / y) < .1 || Math.abs(m[0].pts - b - S) < y / 5)), r || (b = t * y), m.forEach(function(e) {
  4645. e.pts = T(e.pts - S, b), e.dts = T(e.dts - S, b)
  4646. }), m.sort(function(e, t) {
  4647. var r = e.dts - t.dts,
  4648. i = e.pts - t.pts;
  4649. return r || i || e.id - t.id
  4650. });
  4651. var R = m.reduce(function(e, t) {
  4652. return Math.max(Math.min(e, t.pts - t.dts), -18e3)
  4653. }, 0);
  4654. if (R < 0) {
  4655. s.logger.warn("PTS < DTS detected in video samples, shifting DTS by " + Math.round(R / 90) + " ms to overcome this issue");
  4656. for (var D = 0; D < m.length; D++) m[D].dts += R
  4657. }
  4658. var L = m[0];
  4659. h = Math.max(L.dts, 0), c = Math.max(L.pts, 0);
  4660. var w = Math.round((h - b) / 90);
  4661. r && w && (w > 1 ? s.logger.log("AVC:" + w + " ms hole between fragments detected,filling it") : w < -1 && s.logger.log("AVC:" + -w + " ms overlapping between fragments detected"), h = b, m[0].dts = h, c = Math.max(c - w, b), m[0].pts = c, s.logger.log("Video/PTS/DTS adjusted: " + Math.round(c / 90) + "/" + Math.round(h / 90) + ",delta:" + w + " ms")), L = m[m.length - 1], g = Math.max(L.dts, 0), p = Math.max(L.pts, 0, g), A && (u = Math.round((g - h) / (m.length - 1)));
  4662. var O = 0,
  4663. I = 0;
  4664. for (D = 0; D < _; D++) {
  4665. for (var P = m[D], k = P.units, C = k.length, F = 0, x = 0; x < C; x++) F += k[x].data.length;
  4666. I += F, O += C, P.length = F, P.dts = A ? h + D * u : Math.max(P.dts, h), P.pts = Math.max(P.pts, P.dts)
  4667. }
  4668. var M = I + 4 * O + 8;
  4669. try {
  4670. d = new Uint8Array(M)
  4671. } catch (e) {
  4672. return void this.observer.trigger(n.default.ERROR, {
  4673. type: o.ErrorTypes.MUX_ERROR,
  4674. details: o.ErrorDetails.REMUX_ALLOC_ERROR,
  4675. fatal: !1,
  4676. bytes: M,
  4677. reason: "fail allocating video mdat " + M
  4678. })
  4679. }
  4680. var N = new DataView(d.buffer);
  4681. N.setUint32(0, M), d.set(a.default.types.mdat, 4);
  4682. for (D = 0; D < _; D++) {
  4683. var U = m[D],
  4684. B = U.units,
  4685. G = 0,
  4686. j = void 0;
  4687. for (x = 0, C = B.length; x < C; x++) {
  4688. var K = B[x],
  4689. H = K.data,
  4690. V = K.data.byteLength;
  4691. N.setUint32(v, V), v += 4, d.set(H, v), v += V, G += 4 + V
  4692. }
  4693. if (A) j = Math.max(0, u * Math.round((U.pts - U.dts) / u));
  4694. else {
  4695. if (D < _ - 1) u = m[D + 1].dts - U.dts;
  4696. else {
  4697. var W = this.config,
  4698. Y = U.dts - m[D > 0 ? D - 1 : D].dts;
  4699. if (W.stretchShortVideoTrack) {
  4700. var q = W.maxBufferHole,
  4701. X = Math.floor(q * y),
  4702. z = (i ? c + i * y : this.nextAudioPts) - U.pts;
  4703. z > X ? ((u = z - Y) < 0 && (u = Y), s.logger.log("It is approximately " + z / 90 + " ms to the next segment; using duration " + u / 90 + " ms for the last video frame.")) : u = Y
  4704. } else u = Y
  4705. }
  4706. j = Math.round(U.pts - U.dts)
  4707. }
  4708. E.push({
  4709. size: G,
  4710. duration: u,
  4711. cts: j,
  4712. flags: {
  4713. isLeading: 0,
  4714. isDependedOn: 0,
  4715. hasRedundancy: 0,
  4716. degradPrio: 0,
  4717. dependsOn: U.key ? 2 : 1,
  4718. isNonSync: U.key ? 0 : 1
  4719. }
  4720. })
  4721. }
  4722. this.nextAvcDts = g + u;
  4723. var Q = e.dropped;
  4724. if (e.len = 0, e.nbNalu = 0, e.dropped = 0, E.length && navigator.userAgent.toLowerCase().indexOf("chrome") > -1) {
  4725. var $ = E[0].flags;
  4726. $.dependsOn = 2, $.isNonSync = 0
  4727. }
  4728. e.samples = E, f = a.default.moof(e.sequenceNumber++, h, e), e.samples = [];
  4729. var J = {
  4730. data1: f,
  4731. data2: d,
  4732. startPTS: c / y,
  4733. endPTS: (p + u) / y,
  4734. startDTS: h / y,
  4735. endDTS: this.nextAvcDts / y,
  4736. type: "video",
  4737. hasAudio: !1,
  4738. hasVideo: !0,
  4739. nb: E.length,
  4740. dropped: Q
  4741. };
  4742. return this.observer.trigger(n.default.FRAG_PARSING_DATA, J), J
  4743. }
  4744. }, e.prototype.remuxAudio = function(e, t, r, l) {
  4745. var u, d, f, c, h, p, g, v = e.inputTimeScale,
  4746. y = e.timescale,
  4747. m = v / y,
  4748. E = (e.isAAC ? 1024 : 1152) * m,
  4749. _ = this._PTSNormalize,
  4750. T = this._initPTS,
  4751. S = !e.isAAC && this.typeSupported.mpeg,
  4752. b = e.samples,
  4753. A = [],
  4754. R = this.nextAudioPts;
  4755. if (r |= b.length && R && (l && Math.abs(t - R / v) < .1 || Math.abs(b[0].pts - R - T) < 20 * E), b.forEach(function(e) {
  4756. e.pts = e.dts = _(e.pts - T, t * v)
  4757. }), 0 !== (b = b.filter(function(e) {
  4758. return e.pts >= 0
  4759. })).length) {
  4760. if (r || (R = l ? t * v : b[0].pts), e.isAAC)
  4761. for (var D = this.config.maxAudioFramesDrift, L = 0, w = R; L < b.length;) {
  4762. var O, I = b[L];
  4763. O = (U = I.pts) - w;
  4764. var P = Math.abs(1e3 * O / v);
  4765. if (O <= -D * E) s.logger.warn("Dropping 1 audio frame @ " + (w / v).toFixed(3) + "s due to " + Math.round(P) + " ms overlap."), b.splice(L, 1), e.len -= I.unit.length;
  4766. else if (O >= D * E && P < 1e4 && w) {
  4767. var k = Math.round(O / E);
  4768. s.logger.warn("Injecting " + k + " audio frame @ " + (w / v).toFixed(3) + "s due to " + Math.round(1e3 * O / v) + " ms gap.");
  4769. for (var C = 0; C < k; C++) {
  4770. var F = Math.max(w, 0);
  4771. (f = i.default.getSilentFrame(e.manifestCodec || e.codec, e.channelCount)) || (s.logger.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), f = I.unit.subarray()), b.splice(L, 0, {
  4772. unit: f,
  4773. pts: F,
  4774. dts: F
  4775. }), e.len += f.length, w += E, L++
  4776. }
  4777. I.pts = I.dts = w, w += E, L++
  4778. } else Math.abs(O), I.pts = I.dts = w, w += E, L++
  4779. }
  4780. C = 0;
  4781. for (var x = b.length; C < x; C++) {
  4782. var M = b[C],
  4783. N = M.unit,
  4784. U = M.pts;
  4785. if (void 0 !== g) d.duration = Math.round((U - g) / m);
  4786. else {
  4787. var B = Math.round(1e3 * (U - R) / v),
  4788. G = 0;
  4789. if (r && e.isAAC && B) {
  4790. if (B > 0 && B < 1e4) G = Math.round((U - R) / E), s.logger.log(B + " ms hole between AAC samples detected,filling it"), G > 0 && ((f = i.default.getSilentFrame(e.manifestCodec || e.codec, e.channelCount)) || (f = N.subarray()), e.len += G * f.length);
  4791. else if (B < -12) {
  4792. s.logger.log("drop overlapping AAC sample, expected/parsed/delta:" + (R / v).toFixed(3) + "s/" + (U / v).toFixed(3) + "s/" + -B + "ms"), e.len -= N.byteLength;
  4793. continue
  4794. }
  4795. U = R
  4796. }
  4797. if (p = U, !(e.len > 0)) return;
  4798. var j = S ? e.len : e.len + 8;
  4799. u = S ? 0 : 8;
  4800. try {
  4801. c = new Uint8Array(j)
  4802. } catch (e) {
  4803. return void this.observer.trigger(n.default.ERROR, {
  4804. type: o.ErrorTypes.MUX_ERROR,
  4805. details: o.ErrorDetails.REMUX_ALLOC_ERROR,
  4806. fatal: !1,
  4807. bytes: j,
  4808. reason: "fail allocating audio mdat " + j
  4809. })
  4810. }
  4811. S || (new DataView(c.buffer).setUint32(0, j), c.set(a.default.types.mdat, 4));
  4812. for (L = 0; L < G; L++)(f = i.default.getSilentFrame(e.manifestCodec || e.codec, e.channelCount)) || (s.logger.log("Unable to get silent frame for given audio codec; duplicating this frame instead."), f = N.subarray()), c.set(f, u), u += f.byteLength, d = {
  4813. size: f.byteLength,
  4814. cts: 0,
  4815. duration: 1024,
  4816. flags: {
  4817. isLeading: 0,
  4818. isDependedOn: 0,
  4819. hasRedundancy: 0,
  4820. degradPrio: 0,
  4821. dependsOn: 1
  4822. }
  4823. }, A.push(d)
  4824. }
  4825. c.set(N, u);
  4826. var K = N.byteLength;
  4827. u += K, d = {
  4828. size: K,
  4829. cts: 0,
  4830. duration: 0,
  4831. flags: {
  4832. isLeading: 0,
  4833. isDependedOn: 0,
  4834. hasRedundancy: 0,
  4835. degradPrio: 0,
  4836. dependsOn: 1
  4837. }
  4838. }, A.push(d), g = U
  4839. }
  4840. var H = 0,
  4841. V = A.length;
  4842. if (V >= 2 && (H = A[V - 2].duration, d.duration = H), V) {
  4843. this.nextAudioPts = R = g + m * H, e.len = 0, e.samples = A, h = S ? new Uint8Array : a.default.moof(e.sequenceNumber++, p / m, e), e.samples = [];
  4844. var W = p / v,
  4845. Y = R / v,
  4846. q = {
  4847. data1: h,
  4848. data2: c,
  4849. startPTS: W,
  4850. endPTS: Y,
  4851. startDTS: W,
  4852. endDTS: Y,
  4853. type: "audio",
  4854. hasAudio: !0,
  4855. hasVideo: !1,
  4856. nb: V
  4857. };
  4858. return this.observer.trigger(n.default.FRAG_PARSING_DATA, q), q
  4859. }
  4860. return null
  4861. }
  4862. }, e.prototype.remuxEmptyAudio = function(e, t, r, a) {
  4863. var n = e.inputTimeScale,
  4864. o = n / (e.samplerate ? e.samplerate : n),
  4865. l = this.nextAudioPts,
  4866. u = (void 0 !== l ? l : a.startDTS * n) + this._initDTS,
  4867. d = a.endDTS * n + this._initDTS,
  4868. f = 1024 * o,
  4869. c = Math.ceil((d - u) / f),
  4870. h = i.default.getSilentFrame(e.manifestCodec || e.codec, e.channelCount);
  4871. if (s.logger.warn("remux empty Audio"), h) {
  4872. for (var p = [], g = 0; g < c; g++) {
  4873. var v = u + g * f;
  4874. p.push({
  4875. unit: h,
  4876. pts: v,
  4877. dts: v
  4878. }), e.len += h.length
  4879. }
  4880. e.samples = p, this.remuxAudio(e, t, r)
  4881. } else s.logger.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!")
  4882. }, e.prototype.remuxID3 = function(e) {
  4883. var t, r = e.samples.length,
  4884. i = e.inputTimeScale,
  4885. a = this._initPTS,
  4886. o = this._initDTS;
  4887. if (r) {
  4888. for (var s = 0; s < r; s++)(t = e.samples[s]).pts = (t.pts - a) / i, t.dts = (t.dts - o) / i;
  4889. this.observer.trigger(n.default.FRAG_PARSING_METADATA, {
  4890. samples: e.samples
  4891. })
  4892. }
  4893. e.samples = []
  4894. }, e.prototype.remuxText = function(e) {
  4895. e.samples.sort(function(e, t) {
  4896. return e.pts - t.pts
  4897. });
  4898. var t, r = e.samples.length,
  4899. i = e.inputTimeScale,
  4900. a = this._initPTS;
  4901. if (r) {
  4902. for (var o = 0; o < r; o++)(t = e.samples[o]).pts = (t.pts - a) / i;
  4903. this.observer.trigger(n.default.FRAG_PARSING_USERDATA, {
  4904. samples: e.samples
  4905. })
  4906. }
  4907. e.samples = []
  4908. }, e.prototype._PTSNormalize = function(e, t) {
  4909. var r;
  4910. if (void 0 === t) return e;
  4911. for (r = t < e ? -8589934592 : 8589934592; Math.abs(e - t) > 4294967296;) e += r;
  4912. return e
  4913. }, e
  4914. }();
  4915. t.default = l
  4916. }, function(e, t, r) {
  4917. "use strict";
  4918. Object.defineProperty(t, "__esModule", {
  4919. value: !0
  4920. });
  4921. var i = function() {
  4922. function e() {}
  4923. return e.getSilentFrame = function(e, t) {
  4924. switch (e) {
  4925. case "mp4a.40.2":
  4926. if (1 === t) return new Uint8Array([0, 200, 0, 128, 35, 128]);
  4927. if (2 === t) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
  4928. if (3 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
  4929. if (4 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
  4930. if (5 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
  4931. if (6 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);
  4932. break;
  4933. default:
  4934. if (1 === t) return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
  4935. if (2 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
  4936. if (3 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94])
  4937. }
  4938. return null
  4939. }, e
  4940. }();
  4941. t.default = i
  4942. }, function(e, t, r) {
  4943. "use strict";
  4944. Object.defineProperty(t, "__esModule", {
  4945. value: !0
  4946. });
  4947. var i = Math.pow(2, 32) - 1,
  4948. a = function() {
  4949. function e() {}
  4950. return e.init = function() {
  4951. var t;
  4952. for (t in e.types = {
  4953. avc1: [],
  4954. avcC: [],
  4955. btrt: [],
  4956. dinf: [],
  4957. dref: [],
  4958. esds: [],
  4959. ftyp: [],
  4960. hdlr: [],
  4961. mdat: [],
  4962. mdhd: [],
  4963. mdia: [],
  4964. mfhd: [],
  4965. minf: [],
  4966. moof: [],
  4967. moov: [],
  4968. mp4a: [],
  4969. ".mp3": [],
  4970. mvex: [],
  4971. mvhd: [],
  4972. pasp: [],
  4973. sdtp: [],
  4974. stbl: [],
  4975. stco: [],
  4976. stsc: [],
  4977. stsd: [],
  4978. stsz: [],
  4979. stts: [],
  4980. tfdt: [],
  4981. tfhd: [],
  4982. traf: [],
  4983. trak: [],
  4984. trun: [],
  4985. trex: [],
  4986. tkhd: [],
  4987. vmhd: [],
  4988. smhd: []
  4989. }, e.types) e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);
  4990. var r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]),
  4991. i = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]);
  4992. e.HDLR_TYPES = {
  4993. video: r,
  4994. audio: i
  4995. };
  4996. var a = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]),
  4997. n = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]);
  4998. e.STTS = e.STSC = e.STCO = n, e.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), e.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]), e.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), e.STSD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]);
  4999. var o = new Uint8Array([105, 115, 111, 109]),
  5000. s = new Uint8Array([97, 118, 99, 49]),
  5001. l = new Uint8Array([0, 0, 0, 1]);
  5002. e.FTYP = e.box(e.types.ftyp, o, l, o, s), e.DINF = e.box(e.types.dinf, e.box(e.types.dref, a))
  5003. }, e.box = function(e) {
  5004. for (var t, r = Array.prototype.slice.call(arguments, 1), i = 8, a = r.length, n = a; a--;) i += r[a].byteLength;
  5005. for ((t = new Uint8Array(i))[0] = i >> 24 & 255, t[1] = i >> 16 & 255, t[2] = i >> 8 & 255, t[3] = 255 & i, t.set(e, 4), a = 0, i = 8; a < n; a++) t.set(r[a], i), i += r[a].byteLength;
  5006. return t
  5007. }, e.hdlr = function(t) {
  5008. return e.box(e.types.hdlr, e.HDLR_TYPES[t])
  5009. }, e.mdat = function(t) {
  5010. return e.box(e.types.mdat, t)
  5011. }, e.mdhd = function(t, r) {
  5012. r *= t;
  5013. var a = Math.floor(r / (i + 1)),
  5014. n = Math.floor(r % (i + 1));
  5015. return e.box(e.types.mdhd, new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, 85, 196, 0, 0]))
  5016. }, e.mdia = function(t) {
  5017. return e.box(e.types.mdia, e.mdhd(t.timescale, t.duration), e.hdlr(t.type), e.minf(t))
  5018. }, e.mfhd = function(t) {
  5019. return e.box(e.types.mfhd, new Uint8Array([0, 0, 0, 0, t >> 24, t >> 16 & 255, t >> 8 & 255, 255 & t]))
  5020. }, e.minf = function(t) {
  5021. 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))
  5022. }, e.moof = function(t, r, i) {
  5023. return e.box(e.types.moof, e.mfhd(t), e.traf(i, r))
  5024. }, e.moov = function(t) {
  5025. for (var r = t.length, i = []; r--;) i[r] = e.trak(t[r]);
  5026. return e.box.apply(null, [e.types.moov, e.mvhd(t[0].timescale, t[0].duration)].concat(i).concat(e.mvex(t)))
  5027. }, e.mvex = function(t) {
  5028. for (var r = t.length, i = []; r--;) i[r] = e.trex(t[r]);
  5029. return e.box.apply(null, [e.types.mvex].concat(i))
  5030. }, e.mvhd = function(t, r) {
  5031. r *= t;
  5032. var a = Math.floor(r / (i + 1)),
  5033. n = Math.floor(r % (i + 1)),
  5034. o = new Uint8Array([1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, t >> 24 & 255, t >> 16 & 255, t >> 8 & 255, 255 & t, a >> 24, a >> 16 & 255, a >> 8 & 255, 255 & a, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n, 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]);
  5035. return e.box(e.types.mvhd, o)
  5036. }, e.sdtp = function(t) {
  5037. var r, i, a = t.samples || [],
  5038. n = new Uint8Array(4 + a.length);
  5039. for (i = 0; i < a.length; i++) r = a[i].flags, n[i + 4] = r.dependsOn << 4 | r.isDependedOn << 2 | r.hasRedundancy;
  5040. return e.box(e.types.sdtp, n)
  5041. }, e.stbl = function(t) {
  5042. return e.box(e.types.stbl, e.stsd(t), e.box(e.types.stts, e.STTS), e.box(e.types.stsc, e.STSC), e.box(e.types.stsz, e.STSZ), e.box(e.types.stco, e.STCO))
  5043. }, e.avc1 = function(t) {
  5044. var r, i, a, n = [],
  5045. o = [];
  5046. for (r = 0; r < t.sps.length; r++) a = (i = t.sps[r]).byteLength, n.push(a >>> 8 & 255), n.push(255 & a), n = n.concat(Array.prototype.slice.call(i));
  5047. for (r = 0; r < t.pps.length; r++) a = (i = t.pps[r]).byteLength, o.push(a >>> 8 & 255), o.push(255 & a), o = o.concat(Array.prototype.slice.call(i));
  5048. var s = e.box(e.types.avcC, new Uint8Array([1, n[3], n[4], n[5], 255, 224 | t.sps.length].concat(n).concat([t.pps.length]).concat(o))),
  5049. l = t.width,
  5050. u = t.height,
  5051. d = t.pixelRatio[0],
  5052. f = t.pixelRatio[1];
  5053. 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, l >> 8 & 255, 255 & l, u >> 8 & 255, 255 & u, 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]), s, e.box(e.types.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])), e.box(e.types.pasp, new Uint8Array([d >> 24, d >> 16 & 255, d >> 8 & 255, 255 & d, f >> 24, f >> 16 & 255, f >> 8 & 255, 255 & f])))
  5054. }, e.esds = function(e) {
  5055. var t = e.config.length;
  5056. return new Uint8Array([0, 0, 0, 0, 3, 23 + t, 0, 1, 0, 4, 15 + t, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5].concat([t]).concat(e.config).concat([6, 1, 2]))
  5057. }, e.mp4a = function(t) {
  5058. var r = t.samplerate;
  5059. 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)))
  5060. }, e.mp3 = function(t) {
  5061. var r = t.samplerate;
  5062. return e.box(e.types[".mp3"], 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]))
  5063. }, e.stsd = function(t) {
  5064. return "audio" === t.type ? t.isAAC || "mp3" !== t.codec ? e.box(e.types.stsd, e.STSD, e.mp4a(t)) : e.box(e.types.stsd, e.STSD, e.mp3(t)) : e.box(e.types.stsd, e.STSD, e.avc1(t))
  5065. }, e.tkhd = function(t) {
  5066. var r = t.id,
  5067. a = t.duration * t.timescale,
  5068. n = t.width,
  5069. o = t.height,
  5070. s = Math.floor(a / (i + 1)),
  5071. l = Math.floor(a % (i + 1));
  5072. return e.box(e.types.tkhd, new Uint8Array([1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, r >> 24 & 255, r >> 16 & 255, r >> 8 & 255, 255 & r, 0, 0, 0, 0, s >> 24, s >> 16 & 255, s >> 8 & 255, 255 & s, l >> 24, l >> 16 & 255, l >> 8 & 255, 255 & l, 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, o >> 8 & 255, 255 & o, 0, 0]))
  5073. }, e.traf = function(t, r) {
  5074. var a = e.sdtp(t),
  5075. n = t.id,
  5076. o = Math.floor(r / (i + 1)),
  5077. s = Math.floor(r % (i + 1));
  5078. return e.box(e.types.traf, e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, n >> 24, n >> 16 & 255, n >> 8 & 255, 255 & n])), e.box(e.types.tfdt, new Uint8Array([1, 0, 0, 0, o >> 24, o >> 16 & 255, o >> 8 & 255, 255 & o, s >> 24, s >> 16 & 255, s >> 8 & 255, 255 & s])), e.trun(t, a.length + 16 + 20 + 8 + 16 + 8 + 8), a)
  5079. }, e.trak = function(t) {
  5080. return t.duration = t.duration || 4294967295, e.box(e.types.trak, e.tkhd(t), e.mdia(t))
  5081. }, e.trex = function(t) {
  5082. var r = t.id;
  5083. return e.box(e.types.trex, new Uint8Array([0, 0, 0, 0, r >> 24, r >> 16 & 255, r >> 8 & 255, 255 & r, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]))
  5084. }, e.trun = function(t, r) {
  5085. var i, a, n, o, s, l, u = t.samples || [],
  5086. d = u.length,
  5087. f = 12 + 16 * d,
  5088. c = new Uint8Array(f);
  5089. for (r += 8 + f, c.set([0, 0, 15, 1, d >>> 24 & 255, d >>> 16 & 255, d >>> 8 & 255, 255 & d, r >>> 24 & 255, r >>> 16 & 255, r >>> 8 & 255, 255 & r], 0), i = 0; i < d; i++) n = (a = u[i]).duration, o = a.size, s = a.flags, l = a.cts, c.set([n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, o >>> 24 & 255, o >>> 16 & 255, o >>> 8 & 255, 255 & o, s.isLeading << 2 | s.dependsOn, s.isDependedOn << 6 | s.hasRedundancy << 4 | s.paddingValue << 1 | s.isNonSync, 61440 & s.degradPrio, 15 & s.degradPrio, l >>> 24 & 255, l >>> 16 & 255, l >>> 8 & 255, 255 & l], 12 + 16 * i);
  5090. return e.box(e.types.trun, c)
  5091. }, e.initSegment = function(t) {
  5092. e.types || e.init();
  5093. var r, i = e.moov(t);
  5094. return (r = new Uint8Array(e.FTYP.byteLength + i.byteLength)).set(e.FTYP), r.set(i, e.FTYP.byteLength), r
  5095. }, e
  5096. }();
  5097. t.default = a
  5098. }, function(e, t, r) {
  5099. "use strict";
  5100. Object.defineProperty(t, "__esModule", {
  5101. value: !0
  5102. });
  5103. var i = r(1),
  5104. a = function() {
  5105. function e(e) {
  5106. this.observer = e
  5107. }
  5108. return e.prototype.destroy = function() {}, e.prototype.resetTimeStamp = function() {}, e.prototype.resetInitSegment = function() {}, e.prototype.remux = function(e, t, r, a, n, o, s, l) {
  5109. var u = this.observer,
  5110. d = "";
  5111. e && (d += "audio"), t && (d += "video"), u.trigger(i.default.FRAG_PARSING_DATA, {
  5112. data1: l,
  5113. startPTS: n,
  5114. startDTS: n,
  5115. type: d,
  5116. hasAudio: !!e,
  5117. hasVideo: !!t,
  5118. nb: 1,
  5119. dropped: 0
  5120. }), u.trigger(i.default.FRAG_PARSED)
  5121. }, e
  5122. }();
  5123. t.default = a
  5124. }, function(e, t, r) {
  5125. "use strict";
  5126. var i = Object.prototype.hasOwnProperty,
  5127. a = "~";
  5128.  
  5129. function n() {}
  5130.  
  5131. function o(e, t, r, i, n) {
  5132. if ("function" != typeof r) throw new TypeError("The listener must be a function");
  5133. var o = new function(e, t, r) {
  5134. this.fn = e, this.context = t, this.once = r || !1
  5135. }(r, i || e, n),
  5136. s = a ? a + t : t;
  5137. return e._events[s] ? e._events[s].fn ? e._events[s] = [e._events[s], o] : e._events[s].push(o) : (e._events[s] = o, e._eventsCount++), e
  5138. }
  5139.  
  5140. function s(e, t) {
  5141. 0 == --e._eventsCount ? e._events = new n : delete e._events[t]
  5142. }
  5143.  
  5144. function l() {
  5145. this._events = new n, this._eventsCount = 0
  5146. }
  5147. Object.create && (n.prototype = Object.create(null), (new n).__proto__ || (a = !1)), l.prototype.eventNames = function() {
  5148. var e, t, r = [];
  5149. if (0 === this._eventsCount) return r;
  5150. for (t in e = this._events) i.call(e, t) && r.push(a ? t.slice(1) : t);
  5151. return Object.getOwnPropertySymbols ? r.concat(Object.getOwnPropertySymbols(e)) : r
  5152. }, l.prototype.listeners = function(e) {
  5153. var t = a ? a + e : e,
  5154. r = this._events[t];
  5155. if (!r) return [];
  5156. if (r.fn) return [r.fn];
  5157. for (var i = 0, n = r.length, o = new Array(n); i < n; i++) o[i] = r[i].fn;
  5158. return o
  5159. }, l.prototype.listenerCount = function(e) {
  5160. var t = a ? a + e : e,
  5161. r = this._events[t];
  5162. return r ? r.fn ? 1 : r.length : 0
  5163. }, l.prototype.emit = function(e, t, r, i, n, o) {
  5164. var s = a ? a + e : e;
  5165. if (!this._events[s]) return !1;
  5166. var l, u, d = this._events[s],
  5167. f = arguments.length;
  5168. if (d.fn) {
  5169. switch (d.once && this.removeListener(e, d.fn, void 0, !0), f) {
  5170. case 1:
  5171. return d.fn.call(d.context), !0;
  5172. case 2:
  5173. return d.fn.call(d.context, t), !0;
  5174. case 3:
  5175. return d.fn.call(d.context, t, r), !0;
  5176. case 4:
  5177. return d.fn.call(d.context, t, r, i), !0;
  5178. case 5:
  5179. return d.fn.call(d.context, t, r, i, n), !0;
  5180. case 6:
  5181. return d.fn.call(d.context, t, r, i, n, o), !0
  5182. }
  5183. for (u = 1, l = new Array(f - 1); u < f; u++) l[u - 1] = arguments[u];
  5184. d.fn.apply(d.context, l)
  5185. } else {
  5186. var c, h = d.length;
  5187. for (u = 0; u < h; u++) switch (d[u].once && this.removeListener(e, d[u].fn, void 0, !0), f) {
  5188. case 1:
  5189. d[u].fn.call(d[u].context);
  5190. break;
  5191. case 2:
  5192. d[u].fn.call(d[u].context, t);
  5193. break;
  5194. case 3:
  5195. d[u].fn.call(d[u].context, t, r);
  5196. break;
  5197. case 4:
  5198. d[u].fn.call(d[u].context, t, r, i);
  5199. break;
  5200. default:
  5201. if (!l)
  5202. for (c = 1, l = new Array(f - 1); c < f; c++) l[c - 1] = arguments[c];
  5203. d[u].fn.apply(d[u].context, l)
  5204. }
  5205. }
  5206. return !0
  5207. }, l.prototype.on = function(e, t, r) {
  5208. return o(this, e, t, r, !1)
  5209. }, l.prototype.once = function(e, t, r) {
  5210. return o(this, e, t, r, !0)
  5211. }, l.prototype.removeListener = function(e, t, r, i) {
  5212. var n = a ? a + e : e;
  5213. if (!this._events[n]) return this;
  5214. if (!t) return s(this, n), this;
  5215. var o = this._events[n];
  5216. if (o.fn) o.fn !== t || i && !o.once || r && o.context !== r || s(this, n);
  5217. else {
  5218. for (var l = 0, u = [], d = o.length; l < d; l++)(o[l].fn !== t || i && !o[l].once || r && o[l].context !== r) && u.push(o[l]);
  5219. u.length ? this._events[n] = 1 === u.length ? u[0] : u : s(this, n)
  5220. }
  5221. return this
  5222. }, l.prototype.removeAllListeners = function(e) {
  5223. var t;
  5224. return e ? (t = a ? a + e : e, this._events[t] && s(this, t)) : (this._events = new n, this._eventsCount = 0), this
  5225. }, l.prototype.off = l.prototype.removeListener, l.prototype.addListener = l.prototype.on, l.prefixed = a, l.EventEmitter = l, e.exports = l
  5226. }, function(e, t, r) {
  5227. "use strict";
  5228. Object.defineProperty(t, "__esModule", {
  5229. value: !0
  5230. });
  5231. var i = r(21),
  5232. a = r(1),
  5233. n = r(0),
  5234. o = r(53);
  5235. t.default = function(e) {
  5236. var t = new o.EventEmitter;
  5237. t.trigger = function(e) {
  5238. for (var r = [], i = 1; i < arguments.length; i++) r[i - 1] = arguments[i];
  5239. t.emit.apply(t, [e, e].concat(r))
  5240. }, t.off = function(e) {
  5241. for (var r = [], i = 1; i < arguments.length; i++) r[i - 1] = arguments[i];
  5242. t.removeListener.apply(t, [e].concat(r))
  5243. };
  5244. var r = function(t, r) {
  5245. e.postMessage({
  5246. event: t,
  5247. data: r
  5248. })
  5249. };
  5250. e.addEventListener("message", function(a) {
  5251. var o = a.data;
  5252. switch (o.cmd) {
  5253. case "init":
  5254. var s = JSON.parse(o.config);
  5255. e.demuxer = new i.default(t, o.typeSupported, s, o.vendor), n.enableLogs(s.debug), r("init", null);
  5256. break;
  5257. case "demux":
  5258. e.demuxer.push(o.data, o.decryptdata, o.initSegment, o.audioCodec, o.videoCodec, o.timeOffset, o.discontinuity, o.trackSwitch, o.contiguous, o.duration, o.accurateTimeOffset, o.defaultInitPTS)
  5259. }
  5260. }), t.on(a.default.FRAG_DECRYPTED, r), t.on(a.default.FRAG_PARSING_INIT_SEGMENT, r), t.on(a.default.FRAG_PARSED, r), t.on(a.default.ERROR, r), t.on(a.default.FRAG_PARSING_METADATA, r), t.on(a.default.FRAG_PARSING_USERDATA, r), t.on(a.default.INIT_PTS_FOUND, r), t.on(a.default.FRAG_PARSING_DATA, function(t, r) {
  5261. var i = [],
  5262. a = {
  5263. event: t,
  5264. data: r
  5265. };
  5266. r.data1 && (a.data1 = r.data1.buffer, i.push(r.data1.buffer), delete r.data1), r.data2 && (a.data2 = r.data2.buffer, i.push(r.data2.buffer), delete r.data2), e.postMessage(a, i)
  5267. })
  5268. }
  5269. }, function(e, t) {
  5270. function r() {
  5271. this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0
  5272. }
  5273.  
  5274. function i(e) {
  5275. return "function" == typeof e
  5276. }
  5277.  
  5278. function a(e) {
  5279. return "object" == typeof e && null !== e
  5280. }
  5281.  
  5282. function n(e) {
  5283. return void 0 === e
  5284. }
  5285. e.exports = r, r.EventEmitter = r, r.prototype._events = void 0, r.prototype._maxListeners = void 0, r.defaultMaxListeners = 10, r.prototype.setMaxListeners = function(e) {
  5286. if (! function(e) {
  5287. return "number" == typeof e
  5288. }(e) || e < 0 || isNaN(e)) throw TypeError("n must be a positive number");
  5289. return this._maxListeners = e, this
  5290. }, r.prototype.emit = function(e) {
  5291. var t, r, o, s, l, u;
  5292. if (this._events || (this._events = {}), "error" === e && (!this._events.error || a(this._events.error) && !this._events.error.length)) {
  5293. if ((t = arguments[1]) instanceof Error) throw t;
  5294. var d = new Error('Uncaught, unspecified "error" event. (' + t + ")");
  5295. throw d.context = t, d
  5296. }
  5297. if (n(r = this._events[e])) return !1;
  5298. if (i(r)) switch (arguments.length) {
  5299. case 1:
  5300. r.call(this);
  5301. break;
  5302. case 2:
  5303. r.call(this, arguments[1]);
  5304. break;
  5305. case 3:
  5306. r.call(this, arguments[1], arguments[2]);
  5307. break;
  5308. default:
  5309. s = Array.prototype.slice.call(arguments, 1), r.apply(this, s)
  5310. } else if (a(r))
  5311. for (s = Array.prototype.slice.call(arguments, 1), o = (u = r.slice()).length, l = 0; l < o; l++) u[l].apply(this, s);
  5312. return !0
  5313. }, r.prototype.addListener = function(e, t) {
  5314. var o;
  5315. if (!i(t)) throw TypeError("listener must be a function");
  5316. return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", e, i(t.listener) ? t.listener : t), this._events[e] ? a(this._events[e]) ? this._events[e].push(t) : this._events[e] = [this._events[e], t] : this._events[e] = t, a(this._events[e]) && !this._events[e].warned && (o = n(this._maxListeners) ? r.defaultMaxListeners : this._maxListeners) && o > 0 && this._events[e].length > o && (this._events[e].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[e].length), "function" == typeof console.trace && console.trace()), this
  5317. }, r.prototype.on = r.prototype.addListener, r.prototype.once = function(e, t) {
  5318. if (!i(t)) throw TypeError("listener must be a function");
  5319. var r = !1;
  5320.  
  5321. function a() {
  5322. this.removeListener(e, a), r || (r = !0, t.apply(this, arguments))
  5323. }
  5324. return a.listener = t, this.on(e, a), this
  5325. }, r.prototype.removeListener = function(e, t) {
  5326. var r, n, o, s;
  5327. if (!i(t)) throw TypeError("listener must be a function");
  5328. if (!this._events || !this._events[e]) return this;
  5329. if (o = (r = this._events[e]).length, n = -1, r === t || i(r.listener) && r.listener === t) delete this._events[e], this._events.removeListener && this.emit("removeListener", e, t);
  5330. else if (a(r)) {
  5331. for (s = o; s-- > 0;)
  5332. if (r[s] === t || r[s].listener && r[s].listener === t) {
  5333. n = s;
  5334. break
  5335. } if (n < 0) return this;
  5336. 1 === r.length ? (r.length = 0, delete this._events[e]) : r.splice(n, 1), this._events.removeListener && this.emit("removeListener", e, t)
  5337. }
  5338. return this
  5339. }, r.prototype.removeAllListeners = function(e) {
  5340. var t, r;
  5341. if (!this._events) return this;
  5342. if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[e] && delete this._events[e], this;
  5343. if (0 === arguments.length) {
  5344. for (t in this._events) "removeListener" !== t && this.removeAllListeners(t);
  5345. return this.removeAllListeners("removeListener"), this._events = {}, this
  5346. }
  5347. if (i(r = this._events[e])) this.removeListener(e, r);
  5348. else if (r)
  5349. for (; r.length;) this.removeListener(e, r[r.length - 1]);
  5350. return delete this._events[e], this
  5351. }, r.prototype.listeners = function(e) {
  5352. return this._events && this._events[e] ? i(this._events[e]) ? [this._events[e]] : this._events[e].slice() : []
  5353. }, r.prototype.listenerCount = function(e) {
  5354. if (this._events) {
  5355. var t = this._events[e];
  5356. if (i(t)) return 1;
  5357. if (t) return t.length
  5358. }
  5359. return 0
  5360. }, r.listenerCount = function(e, t) {
  5361. return e.listenerCount(t)
  5362. }
  5363. }, function(e, t, r) {
  5364. "use strict";
  5365. Object.defineProperty(t, "__esModule", {
  5366. value: !0
  5367. });
  5368. var i = r(5),
  5369. a = r(3),
  5370. n = r(1),
  5371. o = r(0),
  5372. s = function() {
  5373. function e(e, t, r, i) {
  5374. this.config = e, this.media = t, this.fragmentTracker = r, this.hls = i, this.stallReported = !1
  5375. }
  5376. return e.prototype.poll = function(e, t) {
  5377. var r = this.config,
  5378. a = this.media,
  5379. n = a.currentTime,
  5380. s = window.performance.now();
  5381. if (n !== e) return this.stallReported && (o.logger.warn("playback not stuck anymore @" + n + ", after " + Math.round(s - this.stalled) + "ms"), this.stallReported = !1), this.stalled = null, void(this.nudgeRetry = 0);
  5382. if (!(a.ended || !a.buffered.length || a.readyState > 2 || a.seeking && i.BufferHelper.isBuffered(a, n))) {
  5383. var l = s - this.stalled,
  5384. u = i.BufferHelper.bufferInfo(a, n, r.maxBufferHole);
  5385. this.stalled ? (l >= 1e3 && this._reportStall(u.len), this._tryFixBufferStall(u, l)) : this.stalled = s
  5386. }
  5387. }, e.prototype._tryFixBufferStall = function(e, t) {
  5388. var r = this.config,
  5389. i = this.fragmentTracker,
  5390. a = this.media.currentTime,
  5391. n = i.getPartialFragment(a);
  5392. n && this._trySkipBufferHole(n), e.len > .5 && t > 1e3 * r.highBufferWatchdogPeriod && (this.stalled = null, this._tryNudgeBuffer())
  5393. }, e.prototype._reportStall = function(e) {
  5394. var t = this.hls,
  5395. r = this.media;
  5396. this.stallReported || (this.stallReported = !0, o.logger.warn("Playback stalling at @" + r.currentTime + " due to low buffer"), t.trigger(n.default.ERROR, {
  5397. type: a.ErrorTypes.MEDIA_ERROR,
  5398. details: a.ErrorDetails.BUFFER_STALLED_ERROR,
  5399. fatal: !1,
  5400. buffer: e
  5401. }))
  5402. }, e.prototype._trySkipBufferHole = function(e) {
  5403. for (var t = this.hls, r = this.media, i = r.currentTime, s = 0, l = 0; l < r.buffered.length; l++) {
  5404. var u = r.buffered.start(l);
  5405. if (i >= s && i < u) return r.currentTime = Math.max(u, r.currentTime + .1), o.logger.warn("skipping hole, adjusting currentTime from " + i + " to " + r.currentTime), this.stalled = null, void t.trigger(n.default.ERROR, {
  5406. type: a.ErrorTypes.MEDIA_ERROR,
  5407. details: a.ErrorDetails.BUFFER_SEEK_OVER_HOLE,
  5408. fatal: !1,
  5409. reason: "fragment loaded with buffer holes, seeking from " + i + " to " + r.currentTime,
  5410. frag: e
  5411. });
  5412. s = r.buffered.end(l)
  5413. }
  5414. }, e.prototype._tryNudgeBuffer = function() {
  5415. var e = this.config,
  5416. t = this.hls,
  5417. r = this.media,
  5418. i = r.currentTime,
  5419. s = (this.nudgeRetry || 0) + 1;
  5420. if (this.nudgeRetry = s, s < e.nudgeMaxRetry) {
  5421. var l = i + s * e.nudgeOffset;
  5422. o.logger.log("adjust currentTime from " + i + " to " + l), r.currentTime = l, t.trigger(n.default.ERROR, {
  5423. type: a.ErrorTypes.MEDIA_ERROR,
  5424. details: a.ErrorDetails.BUFFER_NUDGE_ON_STALL,
  5425. fatal: !1
  5426. })
  5427. } else o.logger.error("still stuck in high buffer @" + i + " after " + e.nudgeMaxRetry + ", raise fatal error"), t.trigger(n.default.ERROR, {
  5428. type: a.ErrorTypes.MEDIA_ERROR,
  5429. details: a.ErrorDetails.BUFFER_STALLED_ERROR,
  5430. fatal: !0
  5431. })
  5432. }, e
  5433. }();
  5434. t.default = s
  5435. }, function(e, t, r) {
  5436. "use strict";
  5437. var i = this && this.__extends || function() {
  5438. var e = Object.setPrototypeOf || {
  5439. __proto__: []
  5440. }
  5441. instanceof Array && function(e, t) {
  5442. e.__proto__ = t
  5443. } || function(e, t) {
  5444. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  5445. };
  5446. return function(t, r) {
  5447. function i() {
  5448. this.constructor = t
  5449. }
  5450. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  5451. }
  5452. }();
  5453. Object.defineProperty(t, "__esModule", {
  5454. value: !0
  5455. });
  5456. var a, n = r(1),
  5457. o = r(4),
  5458. s = r(0),
  5459. l = r(3),
  5460. u = r(19),
  5461. d = r(8),
  5462. f = (window.performance, function(e) {
  5463. function t(t) {
  5464. var r = e.call(this, t, n.default.MANIFEST_LOADED, n.default.LEVEL_LOADED, n.default.AUDIO_TRACK_SWITCHED, n.default.FRAG_LOADED, n.default.ERROR) || this;
  5465. return r.canload = !1, r.currentLevelIndex = null, r.manualLevelIndex = -1, r.timer = null, a = /chrome|firefox/.test(navigator.userAgent.toLowerCase()), r
  5466. }
  5467. return i(t, e), t.prototype.onHandlerDestroying = function() {
  5468. this.clearTimer(), this.manualLevelIndex = -1
  5469. }, t.prototype.clearTimer = function() {
  5470. null !== this.timer && (clearTimeout(this.timer), this.timer = null)
  5471. }, t.prototype.startLoad = function() {
  5472. var e = this._levels;
  5473. this.canload = !0, this.levelRetryCount = 0, e && e.forEach(function(e) {
  5474. e.loadError = 0;
  5475. var t = e.details;
  5476. t && t.live && (e.details = void 0)
  5477. }), null !== this.timer && this.loadLevel()
  5478. }, t.prototype.stopLoad = function() {
  5479. this.canload = !1
  5480. }, t.prototype.onManifestLoaded = function(e) {
  5481. var t, r = [],
  5482. i = [],
  5483. o = {},
  5484. f = null,
  5485. c = !1,
  5486. h = !1;
  5487. if (e.levels.forEach(function(e) {
  5488. var t = e.attrs;
  5489. e.loadError = 0, e.fragmentError = !1, c = c || !!e.videoCodec, h = h || !!e.audioCodec, a && e.audioCodec && -1 !== e.audioCodec.indexOf("mp4a.40.34") && (e.audioCodec = void 0), (f = o[e.bitrate]) ? f.url.push(e.url) : (e.url = [e.url], e.urlId = 0, o[e.bitrate] = e, r.push(e)), t && (t.AUDIO && (h = !0, d.addGroupId(f || e, "audio", t.AUDIO)), t.SUBTITLES && d.addGroupId(f || e, "text", t.SUBTITLES))
  5490. }), c && h && (r = r.filter(function(e) {
  5491. return !!e.videoCodec
  5492. })), r = r.filter(function(e) {
  5493. var t = e.audioCodec,
  5494. r = e.videoCodec;
  5495. return (!t || u.isCodecSupportedInMp4(t, "audio")) && (!r || u.isCodecSupportedInMp4(r, "video"))
  5496. }), e.audioTracks && (i = e.audioTracks.filter(function(e) {
  5497. return !e.audioCodec || u.isCodecSupportedInMp4(e.audioCodec, "audio")
  5498. })).forEach(function(e, t) {
  5499. e.id = t
  5500. }), r.length > 0) {
  5501. t = r[0].bitrate, r.sort(function(e, t) {
  5502. return e.bitrate - t.bitrate
  5503. }), this._levels = r;
  5504. for (var p = 0; p < r.length; p++)
  5505. if (r[p].bitrate === t) {
  5506. this._firstLevel = p, s.logger.log("manifest loaded," + r.length + " level(s) found, first bitrate:" + t);
  5507. break
  5508. } this.hls.trigger(n.default.MANIFEST_PARSED, {
  5509. levels: r,
  5510. audioTracks: i,
  5511. firstLevel: this._firstLevel,
  5512. stats: e.stats,
  5513. audio: h,
  5514. video: c,
  5515. altAudio: i.some(function(e) {
  5516. return !!e.url
  5517. })
  5518. })
  5519. } else this.hls.trigger(n.default.ERROR, {
  5520. type: l.ErrorTypes.MEDIA_ERROR,
  5521. details: l.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
  5522. fatal: !0,
  5523. url: this.hls.url,
  5524. reason: "no level with compatible codecs found in manifest"
  5525. })
  5526. }, Object.defineProperty(t.prototype, "levels", {
  5527. get: function() {
  5528. return this._levels
  5529. },
  5530. enumerable: !0,
  5531. configurable: !0
  5532. }), Object.defineProperty(t.prototype, "level", {
  5533. get: function() {
  5534. return this.currentLevelIndex
  5535. },
  5536. set: function(e) {
  5537. var t = this._levels;
  5538. t && (e = Math.min(e, t.length - 1), this.currentLevelIndex === e && t[e].details || this.setLevelInternal(e))
  5539. },
  5540. enumerable: !0,
  5541. configurable: !0
  5542. }), t.prototype.setLevelInternal = function(e) {
  5543. var t = this._levels,
  5544. r = this.hls;
  5545. if (e >= 0 && e < t.length) {
  5546. if (this.clearTimer(), this.currentLevelIndex !== e) {
  5547. s.logger.log("switching to level " + e), this.currentLevelIndex = e;
  5548. var i = t[e];
  5549. i.level = e, r.trigger(n.default.LEVEL_SWITCHING, i)
  5550. }
  5551. var a = t[e],
  5552. o = a.details;
  5553. if (!o || o.live) {
  5554. var u = a.urlId;
  5555. r.trigger(n.default.LEVEL_LOADING, {
  5556. url: a.url[u],
  5557. level: e,
  5558. id: u
  5559. })
  5560. }
  5561. } else r.trigger(n.default.ERROR, {
  5562. type: l.ErrorTypes.OTHER_ERROR,
  5563. details: l.ErrorDetails.LEVEL_SWITCH_ERROR,
  5564. level: e,
  5565. fatal: !1,
  5566. reason: "invalid level idx"
  5567. })
  5568. }, Object.defineProperty(t.prototype, "manualLevel", {
  5569. get: function() {
  5570. return this.manualLevelIndex
  5571. },
  5572. set: function(e) {
  5573. this.manualLevelIndex = e, void 0 === this._startLevel && (this._startLevel = e), -1 !== e && (this.level = e)
  5574. },
  5575. enumerable: !0,
  5576. configurable: !0
  5577. }), Object.defineProperty(t.prototype, "firstLevel", {
  5578. get: function() {
  5579. return this._firstLevel
  5580. },
  5581. set: function(e) {
  5582. this._firstLevel = e
  5583. },
  5584. enumerable: !0,
  5585. configurable: !0
  5586. }), Object.defineProperty(t.prototype, "startLevel", {
  5587. get: function() {
  5588. if (void 0 === this._startLevel) {
  5589. var e = this.hls.config.startLevel;
  5590. return void 0 !== e ? e : this._firstLevel
  5591. }
  5592. return this._startLevel
  5593. },
  5594. set: function(e) {
  5595. this._startLevel = e
  5596. },
  5597. enumerable: !0,
  5598. configurable: !0
  5599. }), t.prototype.onError = function(e) {
  5600. if (e.fatal) e.type === l.ErrorTypes.NETWORK_ERROR && this.clearTimer();
  5601. else {
  5602. var t, r = !1,
  5603. i = !1;
  5604. switch (e.details) {
  5605. case l.ErrorDetails.FRAG_LOAD_ERROR:
  5606. case l.ErrorDetails.FRAG_LOAD_TIMEOUT:
  5607. case l.ErrorDetails.KEY_LOAD_ERROR:
  5608. case l.ErrorDetails.KEY_LOAD_TIMEOUT:
  5609. t = e.frag.level, i = !0;
  5610. break;
  5611. case l.ErrorDetails.LEVEL_LOAD_ERROR:
  5612. case l.ErrorDetails.LEVEL_LOAD_TIMEOUT:
  5613. t = e.context.level, r = !0;
  5614. break;
  5615. case l.ErrorDetails.REMUX_ALLOC_ERROR:
  5616. t = e.level, r = !0
  5617. }
  5618. void 0 !== t && this.recoverLevel(e, t, r, i)
  5619. }
  5620. }, t.prototype.recoverLevel = function(e, t, r, i) {
  5621. var a, n, o, l = this,
  5622. u = this.hls.config,
  5623. d = e.details,
  5624. f = this._levels[t];
  5625. if (f.loadError++, f.fragmentError = i, r) {
  5626. if (!(this.levelRetryCount + 1 <= u.levelLoadingMaxRetry)) return s.logger.error("level controller, cannot recover from " + d + " error"), this.currentLevelIndex = null, this.clearTimer(), void(e.fatal = !0);
  5627. n = Math.min(Math.pow(2, this.levelRetryCount) * u.levelLoadingRetryDelay, u.levelLoadingMaxRetryTimeout), this.timer = setTimeout(function() {
  5628. return l.loadLevel()
  5629. }, n), e.levelRetry = !0, this.levelRetryCount++, s.logger.warn("level controller, " + d + ", retry in " + n + " ms, current retry count is " + this.levelRetryCount)
  5630. }(r || i) && ((a = f.url.length) > 1 && f.loadError < a ? (f.urlId = (f.urlId + 1) % a, f.details = void 0, s.logger.warn("level controller, " + d + " for level " + t + ": switching to redundant URL-id " + f.urlId)) : -1 === this.manualLevelIndex ? (o = 0 === t ? this._levels.length - 1 : t - 1, s.logger.warn("level controller, " + d + ": switch to " + o), this.hls.nextAutoLevel = this.currentLevelIndex = o) : i && (s.logger.warn("level controller, " + d + ": reload a fragment"), this.currentLevelIndex = null))
  5631. }, t.prototype.onFragLoaded = function(e) {
  5632. var t = e.frag;
  5633. if (void 0 !== t && "main" === t.type) {
  5634. var r = this._levels[t.level];
  5635. void 0 !== r && (r.fragmentError = !1, r.loadError = 0, this.levelRetryCount = 0)
  5636. }
  5637. }, t.prototype.onLevelLoaded = function(e) {
  5638. var t = this,
  5639. r = e.level,
  5640. i = e.details;
  5641. if (r === this.currentLevelIndex) {
  5642. var a = this._levels[r];
  5643. if (a.fragmentError || (a.loadError = 0, this.levelRetryCount = 0), i.live) {
  5644. var n = d.computeReloadInterval(a.details, i, e.stats.trequest);
  5645. s.logger.log("live playlist, reload in " + Math.round(n) + " ms"), this.timer = setTimeout(function() {
  5646. return t.loadLevel()
  5647. }, n)
  5648. } else this.clearTimer()
  5649. }
  5650. }, t.prototype.onAudioTrackSwitched = function(e) {
  5651. var t = this.hls.audioTracks[e.id].groupId,
  5652. r = this.hls.levels[this.currentLevelIndex];
  5653. if (r && r.audioGroupIds) {
  5654. for (var i = -1, a = 0; a < r.audioGroupIds.length; a++)
  5655. if (r.audioGroupIds[a] === t) {
  5656. i = a;
  5657. break
  5658. } i !== r.urlId && (r.urlId = i, this.startLoad())
  5659. }
  5660. }, t.prototype.loadLevel = function() {
  5661. if (s.logger.debug("call to loadLevel"), null !== this.currentLevelIndex && this.canload) {
  5662. var e = this._levels[this.currentLevelIndex];
  5663. if ("object" == typeof e && e.url.length > 0) {
  5664. var t = this.currentLevelIndex,
  5665. r = e.urlId,
  5666. i = e.url[r];
  5667. s.logger.log("Attempt loading level index " + t + " with URL-id " + r), this.hls.trigger(n.default.LEVEL_LOADING, {
  5668. url: i,
  5669. level: t,
  5670. id: r
  5671. })
  5672. }
  5673. }
  5674. }, Object.defineProperty(t.prototype, "nextLoadLevel", {
  5675. get: function() {
  5676. return -1 !== this.manualLevelIndex ? this.manualLevelIndex : this.hls.nextAutoLevel
  5677. },
  5678. set: function(e) {
  5679. this.level = e, -1 === this.manualLevelIndex && (this.hls.nextAutoLevel = e)
  5680. },
  5681. enumerable: !0,
  5682. configurable: !0
  5683. }), t
  5684. }(o.default));
  5685. t.default = f
  5686. }, function(e, t, r) {
  5687. "use strict";
  5688. var i = this && this.__extends || function() {
  5689. var e = Object.setPrototypeOf || {
  5690. __proto__: []
  5691. }
  5692. instanceof Array && function(e, t) {
  5693. e.__proto__ = t
  5694. } || function(e, t) {
  5695. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  5696. };
  5697. return function(t, r) {
  5698. function i() {
  5699. this.constructor = t
  5700. }
  5701. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  5702. }
  5703. }();
  5704. Object.defineProperty(t, "__esModule", {
  5705. value: !0
  5706. });
  5707. var a = r(1),
  5708. n = r(4),
  5709. o = r(11),
  5710. s = r(29),
  5711. l = function(e) {
  5712. function t(t) {
  5713. var r = e.call(this, t, a.default.MEDIA_ATTACHED, a.default.MEDIA_DETACHING, a.default.FRAG_PARSING_METADATA) || this;
  5714. return r.id3Track = void 0, r.media = void 0, r
  5715. }
  5716. return i(t, e), t.prototype.destroy = function() {
  5717. n.default.prototype.destroy.call(this)
  5718. }, t.prototype.onMediaAttached = function(e) {
  5719. this.media = e.media, this.media
  5720. }, t.prototype.onMediaDetaching = function() {
  5721. s.clearCurrentCues(this.id3Track), this.id3Track = void 0, this.media = void 0
  5722. }, t.prototype.getID3Track = function(e) {
  5723. for (var t = 0; t < e.length; t++) {
  5724. var r = e[t];
  5725. if ("metadata" === r.kind && "id3" === r.label) return s.sendAddTrackEvent(r, this.media), r
  5726. }
  5727. return this.media.addTextTrack("metadata", "id3")
  5728. }, t.prototype.onFragParsingMetadata = function(e) {
  5729. var t = e.frag,
  5730. r = e.samples;
  5731. this.id3Track || (this.id3Track = this.getID3Track(this.media.textTracks), this.id3Track.mode = "hidden");
  5732. for (var i = window.WebKitDataCue || window.VTTCue || window.TextTrackCue, a = 0; a < r.length; a++) {
  5733. var n = o.default.getID3Frames(r[a].data);
  5734. if (n) {
  5735. var s = r[a].pts,
  5736. l = a < r.length - 1 ? r[a + 1].pts : t.endPTS;
  5737. s === l && (l += 1e-4);
  5738. for (var u = 0; u < n.length; u++) {
  5739. var d = n[u];
  5740. if (!o.default.isTimeStampFrame(d)) {
  5741. var f = new i(s, l, "");
  5742. f.value = d, this.id3Track.addCue(f)
  5743. }
  5744. }
  5745. }
  5746. }
  5747. }, t
  5748. }(n.default);
  5749. t.default = l
  5750. }, function(e, t, r) {
  5751. "use strict";
  5752. Object.defineProperty(t, "__esModule", {
  5753. value: !0
  5754. });
  5755. var i = r(14);
  5756. t.isSupported = function() {
  5757. var e = i.getMediaSource(),
  5758. t = window.SourceBuffer || window.WebKitSourceBuffer,
  5759. r = e && "function" == typeof e.isTypeSupported && e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),
  5760. a = !t || t.prototype && "function" == typeof t.prototype.appendBuffer && "function" == typeof t.prototype.remove;
  5761. return !!r && !!a
  5762. }
  5763. }, function(e, t, r) {
  5764. "use strict";
  5765. Object.defineProperty(t, "__esModule", {
  5766. value: !0
  5767. });
  5768. var i = r(59),
  5769. a = r(62),
  5770. n = r(63),
  5771. o = r(64),
  5772. s = r(65),
  5773. l = r(66),
  5774. u = r(67),
  5775. d = r(68),
  5776. f = r(70),
  5777. c = r(74),
  5778. h = r(75),
  5779. p = r(76),
  5780. g = r(77);
  5781. t.hlsDefaultConfig = {
  5782. autoStartLoad: !0,
  5783. startPosition: -1,
  5784. defaultAudioCodec: void 0,
  5785. debug: !1,
  5786. capLevelOnFPSDrop: !1,
  5787. capLevelToPlayerSize: !1,
  5788. initialLiveManifestSize: 1,
  5789. maxBufferLength: 30,
  5790. maxBufferSize: 6e7,
  5791. maxBufferHole: .5,
  5792. lowBufferWatchdogPeriod: .5,
  5793. highBufferWatchdogPeriod: 3,
  5794. nudgeOffset: .1,
  5795. nudgeMaxRetry: 3,
  5796. maxFragLookUpTolerance: .25,
  5797. liveSyncDurationCount: 3,
  5798. liveMaxLatencyDurationCount: 1 / 0,
  5799. liveSyncDuration: void 0,
  5800. liveMaxLatencyDuration: void 0,
  5801. liveDurationInfinity: !1,
  5802. liveBackBufferLength: 1 / 0,
  5803. maxMaxBufferLength: 600,
  5804. enableWorker: !0,
  5805. enableSoftwareAES: !0,
  5806. manifestLoadingTimeOut: 1e4,
  5807. manifestLoadingMaxRetry: 1,
  5808. manifestLoadingRetryDelay: 1e3,
  5809. manifestLoadingMaxRetryTimeout: 64e3,
  5810. startLevel: void 0,
  5811. levelLoadingTimeOut: 1e4,
  5812. levelLoadingMaxRetry: 4,
  5813. levelLoadingRetryDelay: 1e3,
  5814. levelLoadingMaxRetryTimeout: 64e3,
  5815. fragLoadingTimeOut: 2e4,
  5816. fragLoadingMaxRetry: 6,
  5817. fragLoadingRetryDelay: 1e3,
  5818. fragLoadingMaxRetryTimeout: 64e3,
  5819. startFragPrefetch: !1,
  5820. fpsDroppedMonitoringPeriod: 5e3,
  5821. fpsDroppedMonitoringThreshold: .2,
  5822. appendErrorMaxRetry: 3,
  5823. loader: s.default,
  5824. fLoader: void 0,
  5825. pLoader: void 0,
  5826. xhrSetup: void 0,
  5827. licenseXhrSetup: void 0,
  5828. abrController: i.default,
  5829. bufferController: a.default,
  5830. capLevelController: n.default,
  5831. fpsController: o.default,
  5832. stretchShortVideoTrack: !1,
  5833. maxAudioFramesDrift: 1,
  5834. forceKeyFrameOnDiscontinuity: !0,
  5835. abrEwmaFastLive: 3,
  5836. abrEwmaSlowLive: 9,
  5837. abrEwmaFastVoD: 3,
  5838. abrEwmaSlowVoD: 9,
  5839. abrEwmaDefaultEstimate: 5e5,
  5840. abrBandWidthFactor: .95,
  5841. abrBandWidthUpFactor: .7,
  5842. abrMaxWithRealBitrate: !1,
  5843. maxStarvationDelay: 4,
  5844. maxLoadingDelay: 4,
  5845. minAutoBitrate: 0,
  5846. emeEnabled: !1,
  5847. widevineLicenseUrl: void 0,
  5848. requestMediaKeySystemAccessFunc: g.requestMediaKeySystemAccess
  5849. }, t.hlsDefaultConfig.subtitleStreamController = h.SubtitleStreamController, t.hlsDefaultConfig.subtitleTrackController = c.default, t.hlsDefaultConfig.timelineController = f.default, t.hlsDefaultConfig.cueHandler = d, t.hlsDefaultConfig.enableCEA708Captions = !0, t.hlsDefaultConfig.enableWebVTT = !0, t.hlsDefaultConfig.captionsTextTrack1Label = "English", t.hlsDefaultConfig.captionsTextTrack1LanguageCode = "en", t.hlsDefaultConfig.captionsTextTrack2Label = "Spanish", t.hlsDefaultConfig.captionsTextTrack2LanguageCode = "es", t.hlsDefaultConfig.audioStreamController = u.default, t.hlsDefaultConfig.audioTrackController = l.default, t.hlsDefaultConfig.emeController = p.default
  5850. }, function(e, t, r) {
  5851. "use strict";
  5852. (function(e) {
  5853. var i = this && this.__extends || function() {
  5854. var e = Object.setPrototypeOf || {
  5855. __proto__: []
  5856. }
  5857. instanceof Array && function(e, t) {
  5858. e.__proto__ = t
  5859. } || function(e, t) {
  5860. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  5861. };
  5862. return function(t, r) {
  5863. function i() {
  5864. this.constructor = t
  5865. }
  5866. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  5867. }
  5868. }();
  5869. Object.defineProperty(t, "__esModule", {
  5870. value: !0
  5871. });
  5872. var a = r(1),
  5873. n = r(4),
  5874. o = r(5),
  5875. s = r(3),
  5876. l = r(0),
  5877. u = r(60),
  5878. d = window.performance,
  5879. f = function(t) {
  5880. function r(e) {
  5881. var r = t.call(this, e, a.default.FRAG_LOADING, a.default.FRAG_LOADED, a.default.FRAG_BUFFERED, a.default.ERROR) || this;
  5882. return r.lastLoadedFragLevel = 0, r._nextAutoLevel = -1, r.hls = e, r.timer = null, r._bwEstimator = null, r.onCheck = r._abandonRulesCheck.bind(r), r
  5883. }
  5884. return i(r, t), r.prototype.destroy = function() {
  5885. this.clearTimer(), n.default.prototype.destroy.call(this)
  5886. }, r.prototype.onFragLoading = function(e) {
  5887. var t = e.frag;
  5888. if ("main" === t.type && (this.timer || (this.fragCurrent = t, this.timer = setInterval(this.onCheck, 100)), !this._bwEstimator)) {
  5889. var r = this.hls,
  5890. i = r.config,
  5891. a = t.level,
  5892. n = void 0,
  5893. o = void 0;
  5894. r.levels[a].details.live ? (n = i.abrEwmaFastLive, o = i.abrEwmaSlowLive) : (n = i.abrEwmaFastVoD, o = i.abrEwmaSlowVoD), this._bwEstimator = new u.default(r, o, n, i.abrEwmaDefaultEstimate)
  5895. }
  5896. }, r.prototype._abandonRulesCheck = function() {
  5897. var e = this.hls,
  5898. t = e.media,
  5899. r = this.fragCurrent;
  5900. if (r) {
  5901. var i = r.loader,
  5902. n = e.minAutoLevel;
  5903. if (!i || i.stats && i.stats.aborted) return l.logger.warn("frag loader destroy or aborted, disarm abandonRules"), this.clearTimer(), void(this._nextAutoLevel = -1);
  5904. var s = i.stats;
  5905. if (t && s && (!t.paused && 0 !== t.playbackRate || !t.readyState) && r.autoLevel && r.level) {
  5906. var u = d.now() - s.trequest,
  5907. f = Math.abs(t.playbackRate);
  5908. if (u > 500 * r.duration / f) {
  5909. var c = e.levels,
  5910. h = Math.max(1, s.bw ? s.bw / 8 : 1e3 * s.loaded / u),
  5911. p = c[r.level],
  5912. g = p.realBitrate ? Math.max(p.realBitrate, p.bitrate) : p.bitrate,
  5913. v = s.total ? s.total : Math.max(s.loaded, Math.round(r.duration * g / 8)),
  5914. y = t.currentTime,
  5915. m = (v - s.loaded) / h,
  5916. E = (o.BufferHelper.bufferInfo(t, y, e.config.maxBufferHole).end - y) / f;
  5917. if (E < 2 * r.duration / f && m > E) {
  5918. var _ = void 0,
  5919. T = void 0;
  5920. for (T = r.level - 1; T > n; T--) {
  5921. var S = c[T].realBitrate ? Math.max(c[T].realBitrate, c[T].bitrate) : c[T].bitrate;
  5922. if ((_ = r.duration * S / (6.4 * h)) < E) break
  5923. }
  5924. _ < m && (l.logger.warn("loading too slow, abort fragment loading and switch to level " + T + ":fragLoadedDelay[" + T + "]<fragLoadedDelay[" + (r.level - 1) + "];bufferStarvationDelay:" + _.toFixed(1) + "<" + m.toFixed(1) + ":" + E.toFixed(1)), e.nextLoadLevel = T, this._bwEstimator.sample(u, s.loaded), i.abort(), this.clearTimer(), e.trigger(a.default.FRAG_LOAD_EMERGENCY_ABORTED, {
  5925. frag: r,
  5926. stats: s
  5927. }))
  5928. }
  5929. }
  5930. }
  5931. }
  5932. }, r.prototype.onFragLoaded = function(t) {
  5933. var r = t.frag;
  5934. if ("main" === r.type && e.isFinite(r.sn)) {
  5935. if (this.clearTimer(), this.lastLoadedFragLevel = r.level, this._nextAutoLevel = -1, this.hls.config.abrMaxWithRealBitrate) {
  5936. var i = this.hls.levels[r.level],
  5937. a = (i.loaded ? i.loaded.bytes : 0) + t.stats.loaded,
  5938. n = (i.loaded ? i.loaded.duration : 0) + t.frag.duration;
  5939. i.loaded = {
  5940. bytes: a,
  5941. duration: n
  5942. }, i.realBitrate = Math.round(8 * a / n)
  5943. }
  5944. if (t.frag.bitrateTest) {
  5945. var o = t.stats;
  5946. o.tparsed = o.tbuffered = o.tload, this.onFragBuffered(t)
  5947. }
  5948. }
  5949. }, r.prototype.onFragBuffered = function(t) {
  5950. var r = t.stats,
  5951. i = t.frag;
  5952. if (!0 !== r.aborted && "main" === i.type && e.isFinite(i.sn) && (!i.bitrateTest || r.tload === r.tbuffered)) {
  5953. var a = r.tparsed - r.trequest;
  5954. l.logger.log("latency/loading/parsing/append/kbps:" + Math.round(r.tfirst - r.trequest) + "/" + Math.round(r.tload - r.tfirst) + "/" + Math.round(r.tparsed - r.tload) + "/" + Math.round(r.tbuffered - r.tparsed) + "/" + Math.round(8 * r.loaded / (r.tbuffered - r.trequest))), this._bwEstimator.sample(a, r.loaded), r.bwEstimate = this._bwEstimator.getEstimate(), i.bitrateTest ? this.bitrateTestDelay = a / 1e3 : this.bitrateTestDelay = 0
  5955. }
  5956. }, r.prototype.onError = function(e) {
  5957. switch (e.details) {
  5958. case s.ErrorDetails.FRAG_LOAD_ERROR:
  5959. case s.ErrorDetails.FRAG_LOAD_TIMEOUT:
  5960. this.clearTimer()
  5961. }
  5962. }, r.prototype.clearTimer = function() {
  5963. clearInterval(this.timer), this.timer = null
  5964. }, Object.defineProperty(r.prototype, "nextAutoLevel", {
  5965. get: function() {
  5966. var e = this._nextAutoLevel,
  5967. t = this._bwEstimator;
  5968. if (!(-1 === e || t && t.canEstimate())) return e;
  5969. var r = this._nextABRAutoLevel;
  5970. return -1 !== e && (r = Math.min(e, r)), r
  5971. },
  5972. set: function(e) {
  5973. this._nextAutoLevel = e
  5974. },
  5975. enumerable: !0,
  5976. configurable: !0
  5977. }), Object.defineProperty(r.prototype, "_nextABRAutoLevel", {
  5978. get: function() {
  5979. var e = this.hls,
  5980. t = e.maxAutoLevel,
  5981. r = e.levels,
  5982. i = e.config,
  5983. a = e.minAutoLevel,
  5984. n = e.media,
  5985. s = this.lastLoadedFragLevel,
  5986. u = this.fragCurrent ? this.fragCurrent.duration : 0,
  5987. d = n ? n.currentTime : 0,
  5988. f = n && 0 !== n.playbackRate ? Math.abs(n.playbackRate) : 1,
  5989. c = this._bwEstimator ? this._bwEstimator.getEstimate() : i.abrEwmaDefaultEstimate,
  5990. h = (o.BufferHelper.bufferInfo(n, d, i.maxBufferHole).end - d) / f,
  5991. p = this._findBestLevel(s, u, c, a, t, h, i.abrBandWidthFactor, i.abrBandWidthUpFactor, r);
  5992. if (p >= 0) return p;
  5993. l.logger.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");
  5994. var g = u ? Math.min(u, i.maxStarvationDelay) : i.maxStarvationDelay,
  5995. v = i.abrBandWidthFactor,
  5996. y = i.abrBandWidthUpFactor;
  5997. if (0 === h) {
  5998. var m = this.bitrateTestDelay;
  5999. if (m) g = (u ? Math.min(u, i.maxLoadingDelay) : i.maxLoadingDelay) - m, l.logger.trace("bitrate test took " + Math.round(1e3 * m) + "ms, set first fragment max fetchDuration to " + Math.round(1e3 * g) + " ms"), v = y = 1
  6000. }
  6001. return p = this._findBestLevel(s, u, c, a, t, h + g, v, y, r), Math.max(p, 0)
  6002. },
  6003. enumerable: !0,
  6004. configurable: !0
  6005. }), r.prototype._findBestLevel = function(e, t, r, i, a, n, o, s, u) {
  6006. for (var d = a; d >= i; d--) {
  6007. var f = u[d];
  6008. if (f) {
  6009. var c = f.details,
  6010. h = c ? c.totalduration / c.fragments.length : t,
  6011. p = !!c && c.live,
  6012. g = void 0;
  6013. g = d <= e ? o * r : s * r;
  6014. var v = u[d].realBitrate ? Math.max(u[d].realBitrate, u[d].bitrate) : u[d].bitrate,
  6015. y = v * h / g;
  6016. if (l.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: " + d + "/" + Math.round(g) + "/" + v + "/" + h + "/" + n + "/" + y), g > v && (!y || p && !this.bitrateTestDelay || y < n)) return d
  6017. }
  6018. }
  6019. return -1
  6020. }, r
  6021. }(n.default);
  6022. t.default = f
  6023. }).call(this, r(2).Number)
  6024. }, function(e, t, r) {
  6025. "use strict";
  6026. Object.defineProperty(t, "__esModule", {
  6027. value: !0
  6028. });
  6029. var i = r(61),
  6030. a = function() {
  6031. function e(e, t, r, a) {
  6032. this.hls = e, this.defaultEstimate_ = a, this.minWeight_ = .001, this.minDelayMs_ = 50, this.slow_ = new i.default(t), this.fast_ = new i.default(r)
  6033. }
  6034. return e.prototype.sample = function(e, t) {
  6035. var r = 8e3 * t / (e = Math.max(e, this.minDelayMs_)),
  6036. i = e / 1e3;
  6037. this.fast_.sample(i, r), this.slow_.sample(i, r)
  6038. }, e.prototype.canEstimate = function() {
  6039. var e = this.fast_;
  6040. return e && e.getTotalWeight() >= this.minWeight_
  6041. }, e.prototype.getEstimate = function() {
  6042. return this.canEstimate() ? Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()) : this.defaultEstimate_
  6043. }, e.prototype.destroy = function() {}, e
  6044. }();
  6045. t.default = a
  6046. }, function(e, t, r) {
  6047. "use strict";
  6048. Object.defineProperty(t, "__esModule", {
  6049. value: !0
  6050. });
  6051. var i = function() {
  6052. function e(e) {
  6053. this.alpha_ = e ? Math.exp(Math.log(.5) / e) : 0, this.estimate_ = 0, this.totalWeight_ = 0
  6054. }
  6055. return e.prototype.sample = function(e, t) {
  6056. var r = Math.pow(this.alpha_, e);
  6057. this.estimate_ = t * (1 - r) + r * this.estimate_, this.totalWeight_ += e
  6058. }, e.prototype.getTotalWeight = function() {
  6059. return this.totalWeight_
  6060. }, e.prototype.getEstimate = function() {
  6061. if (this.alpha_) {
  6062. var e = 1 - Math.pow(this.alpha_, this.totalWeight_);
  6063. return this.estimate_ / e
  6064. }
  6065. return this.estimate_
  6066. }, e
  6067. }();
  6068. t.default = i
  6069. }, function(e, t, r) {
  6070. "use strict";
  6071. (function(e) {
  6072. var i = this && this.__extends || function() {
  6073. var e = Object.setPrototypeOf || {
  6074. __proto__: []
  6075. }
  6076. instanceof Array && function(e, t) {
  6077. e.__proto__ = t
  6078. } || function(e, t) {
  6079. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  6080. };
  6081. return function(t, r) {
  6082. function i() {
  6083. this.constructor = t
  6084. }
  6085. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  6086. }
  6087. }();
  6088. Object.defineProperty(t, "__esModule", {
  6089. value: !0
  6090. });
  6091. var a = r(1),
  6092. n = r(4),
  6093. o = r(0),
  6094. s = r(3),
  6095. l = r(14).getMediaSource(),
  6096. u = function(t) {
  6097. function r(e) {
  6098. var r = t.call(this, e, a.default.MEDIA_ATTACHING, a.default.MEDIA_DETACHING, a.default.MANIFEST_PARSED, a.default.BUFFER_RESET, a.default.BUFFER_APPENDING, a.default.BUFFER_CODECS, a.default.BUFFER_EOS, a.default.BUFFER_FLUSHING, a.default.LEVEL_PTS_UPDATED, a.default.LEVEL_UPDATED) || this;
  6099. return r._msDuration = null, r._levelDuration = null, r._levelTargetDuration = 10, r._live = null, r._objectUrl = null, r.bufferCodecEventsExpected = 0, r.onsbue = r.onSBUpdateEnd.bind(r), r.onsbe = r.onSBUpdateError.bind(r), r.pendingTracks = {}, r.tracks = {}, r
  6100. }
  6101. return i(r, t), r.prototype.destroy = function() {
  6102. n.default.prototype.destroy.call(this)
  6103. }, r.prototype.onLevelPtsUpdated = function(e) {
  6104. var t = e.type,
  6105. r = this.tracks.audio;
  6106. if ("audio" === t && r && "audio/mpeg" === r.container) {
  6107. var i = this.sourceBuffer.audio;
  6108. if (Math.abs(i.timestampOffset - e.start) > .1) {
  6109. var a = i.updating;
  6110. try {
  6111. i.abort()
  6112. } catch (e) {
  6113. o.logger.warn("can not abort audio buffer: " + e)
  6114. }
  6115. a ? this.audioTimestampOffset = e.start : (o.logger.warn("change mpeg audio timestamp offset from " + i.timestampOffset + " to " + e.start), i.timestampOffset = e.start)
  6116. }
  6117. }
  6118. }, r.prototype.onManifestParsed = function(e) {
  6119. this.bufferCodecEventsExpected = e.altAudio ? 2 : 1, o.logger.log(this.bufferCodecEventsExpected + " bufferCodec event(s) expected")
  6120. }, r.prototype.onMediaAttaching = function(e) {
  6121. var t = this.media = e.media;
  6122. if (t) {
  6123. var r = this.mediaSource = new l;
  6124. this.onmso = this.onMediaSourceOpen.bind(this), this.onmse = this.onMediaSourceEnded.bind(this), this.onmsc = this.onMediaSourceClose.bind(this), r.addEventListener("sourceopen", this.onmso), r.addEventListener("sourceended", this.onmse), r.addEventListener("sourceclose", this.onmsc), t.src = window.URL.createObjectURL(r), this._objectUrl = t.src
  6125. }
  6126. }, r.prototype.onMediaDetaching = function() {
  6127. o.logger.log("media source detaching");
  6128. var e = this.mediaSource;
  6129. if (e) {
  6130. if ("open" === e.readyState) try {
  6131. e.endOfStream()
  6132. } catch (e) {
  6133. o.logger.warn("onMediaDetaching:" + e.message + " while calling endOfStream")
  6134. }
  6135. e.removeEventListener("sourceopen", this.onmso), e.removeEventListener("sourceended", this.onmse), e.removeEventListener("sourceclose", this.onmsc), this.media && (window.URL.revokeObjectURL(this._objectUrl), this.media.src === this._objectUrl ? (this.media.removeAttribute("src"), this.media.load()) : o.logger.warn("media.src was changed by a third party - skip cleanup")), this.mediaSource = null, this.media = null, this._objectUrl = null, this.pendingTracks = {}, this.tracks = {}, this.sourceBuffer = {}, this.flushRange = [], this.segments = [], this.appended = 0
  6136. }
  6137. this.onmso = this.onmse = this.onmsc = null, this.hls.trigger(a.default.MEDIA_DETACHED)
  6138. }, r.prototype.onMediaSourceOpen = function() {
  6139. o.logger.log("media source opened"), this.hls.trigger(a.default.MEDIA_ATTACHED, {
  6140. media: this.media
  6141. });
  6142. var e = this.mediaSource;
  6143. e && e.removeEventListener("sourceopen", this.onmso), this.checkPendingTracks()
  6144. }, r.prototype.checkPendingTracks = function() {
  6145. var e = this.bufferCodecEventsExpected,
  6146. t = this.pendingTracks,
  6147. r = Object.keys(t).length;
  6148. (r && !e || 2 === r) && (this.createSourceBuffers(t), this.pendingTracks = {}, this.doAppending())
  6149. }, r.prototype.onMediaSourceClose = function() {
  6150. o.logger.log("media source closed")
  6151. }, r.prototype.onMediaSourceEnded = function() {
  6152. o.logger.log("media source ended")
  6153. }, r.prototype.onSBUpdateEnd = function() {
  6154. if (this.audioTimestampOffset) {
  6155. var e = this.sourceBuffer.audio;
  6156. o.logger.warn("change mpeg audio timestamp offset from " + e.timestampOffset + " to " + this.audioTimestampOffset), e.timestampOffset = this.audioTimestampOffset, delete this.audioTimestampOffset
  6157. }
  6158. this._needsFlush && this.doFlush(), this._needsEos && this.checkEos(), this.appending = !1;
  6159. var t = this.parent,
  6160. r = this.segments.reduce(function(e, r) {
  6161. return r.parent === t ? e + 1 : e
  6162. }, 0),
  6163. i = {},
  6164. n = this.sourceBuffer;
  6165. for (var s in n) i[s] = n[s].buffered;
  6166. this.hls.trigger(a.default.BUFFER_APPENDED, {
  6167. parent: t,
  6168. pending: r,
  6169. timeRanges: i
  6170. }), this._needsFlush || this.doAppending(), this.updateMediaElementDuration(), 0 === r && this.flushLiveBackBuffer()
  6171. }, r.prototype.onSBUpdateError = function(e) {
  6172. o.logger.error("sourceBuffer error:", e), this.hls.trigger(a.default.ERROR, {
  6173. type: s.ErrorTypes.MEDIA_ERROR,
  6174. details: s.ErrorDetails.BUFFER_APPENDING_ERROR,
  6175. fatal: !1
  6176. })
  6177. }, r.prototype.onBufferReset = function() {
  6178. var e = this.sourceBuffer;
  6179. for (var t in e) {
  6180. var r = e[t];
  6181. try {
  6182. this.mediaSource.removeSourceBuffer(r), r.removeEventListener("updateend", this.onsbue), r.removeEventListener("error", this.onsbe)
  6183. } catch (e) {}
  6184. }
  6185. this.sourceBuffer = {}, this.flushRange = [], this.segments = [], this.appended = 0
  6186. }, r.prototype.onBufferCodecs = function(e) {
  6187. var t = this;
  6188. if (!Object.keys(this.sourceBuffer).length) {
  6189. Object.keys(e).forEach(function(r) {
  6190. t.pendingTracks[r] = e[r]
  6191. });
  6192. var r = this.mediaSource;
  6193. this.bufferCodecEventsExpected = Math.max(this.bufferCodecEventsExpected - 1, 0), r && "open" === r.readyState && this.checkPendingTracks()
  6194. }
  6195. }, r.prototype.createSourceBuffers = function(e) {
  6196. var t = this.sourceBuffer,
  6197. r = this.mediaSource;
  6198. for (var i in e)
  6199. if (!t[i]) {
  6200. var n = e[i],
  6201. l = n.levelCodec || n.codec,
  6202. u = n.container + ";codecs=" + l;
  6203. o.logger.log("creating sourceBuffer(" + u + ")");
  6204. try {
  6205. var d = t[i] = r.addSourceBuffer(u);
  6206. d.addEventListener("updateend", this.onsbue), d.addEventListener("error", this.onsbe), this.tracks[i] = {
  6207. codec: l,
  6208. container: n.container
  6209. }, n.buffer = d
  6210. } catch (e) {
  6211. o.logger.error("error while trying to add sourceBuffer:" + e.message), this.hls.trigger(a.default.ERROR, {
  6212. type: s.ErrorTypes.MEDIA_ERROR,
  6213. details: s.ErrorDetails.BUFFER_ADD_CODEC_ERROR,
  6214. fatal: !1,
  6215. err: e,
  6216. mimeType: u
  6217. })
  6218. }
  6219. } this.hls.trigger(a.default.BUFFER_CREATED, {
  6220. tracks: e
  6221. })
  6222. }, r.prototype.onBufferAppending = function(e) {
  6223. this._needsFlush || (this.segments ? this.segments.push(e) : this.segments = [e], this.doAppending())
  6224. }, r.prototype.onBufferAppendFail = function(e) {
  6225. o.logger.error("sourceBuffer error:", e.event), this.hls.trigger(a.default.ERROR, {
  6226. type: s.ErrorTypes.MEDIA_ERROR,
  6227. details: s.ErrorDetails.BUFFER_APPENDING_ERROR,
  6228. fatal: !1
  6229. })
  6230. }, r.prototype.onBufferEos = function(e) {
  6231. var t = this.sourceBuffer,
  6232. r = e.type;
  6233. for (var i in t) r && i !== r || t[i].ended || (t[i].ended = !0, o.logger.log(i + " sourceBuffer now EOS"));
  6234. this.checkEos()
  6235. }, r.prototype.checkEos = function() {
  6236. var e = this.sourceBuffer,
  6237. t = this.mediaSource;
  6238. if (t && "open" === t.readyState) {
  6239. for (var r in e) {
  6240. var i = e[r];
  6241. if (!i.ended) return;
  6242. if (i.updating) return void(this._needsEos = !0)
  6243. }
  6244. o.logger.log("all media data are available, signal endOfStream() to MediaSource and stop loading fragment");
  6245. try {
  6246. t.endOfStream()
  6247. } catch (e) {
  6248. o.logger.warn("exception while calling mediaSource.endOfStream()")
  6249. }
  6250. this._needsEos = !1
  6251. } else this._needsEos = !1
  6252. }, r.prototype.onBufferFlushing = function(e) {
  6253. this.flushRange.push({
  6254. start: e.startOffset,
  6255. end: e.endOffset,
  6256. type: e.type
  6257. }), this.flushBufferCounter = 0, this.doFlush()
  6258. }, r.prototype.flushLiveBackBuffer = function() {
  6259. if (this._live) {
  6260. var e = this.hls.config.liveBackBufferLength;
  6261. if (isFinite(e) && !(e < 0))
  6262. for (var t = this.media.currentTime, r = this.sourceBuffer, i = Object.keys(r), a = t - Math.max(e, this._levelTargetDuration), n = i.length - 1; n >= 0; n--) {
  6263. var o = i[n],
  6264. s = r[o].buffered;
  6265. s.length > 0 && a > s.start(0) && this.removeBufferRange(o, r[o], 0, a)
  6266. }
  6267. }
  6268. }, r.prototype.onLevelUpdated = function(e) {
  6269. var t = e.details;
  6270. t.fragments.length > 0 && (this._levelDuration = t.totalduration + t.fragments[0].start, this._levelTargetDuration = t.averagetargetduration || t.targetduration || 10, this._live = t.live, this.updateMediaElementDuration())
  6271. }, r.prototype.updateMediaElementDuration = function() {
  6272. var t, r = this.hls.config;
  6273. if (null !== this._levelDuration && this.media && this.mediaSource && this.sourceBuffer && 0 !== this.media.readyState && "open" === this.mediaSource.readyState) {
  6274. for (var i in this.sourceBuffer)
  6275. if (!0 === this.sourceBuffer[i].updating) return;
  6276. t = this.media.duration, null === this._msDuration && (this._msDuration = this.mediaSource.duration), !0 === this._live && !0 === r.liveDurationInfinity ? (o.logger.log("Media Source duration is set to Infinity"), this._msDuration = this.mediaSource.duration = 1 / 0) : (this._levelDuration > this._msDuration && this._levelDuration > t || !e.isFinite(t)) && (o.logger.log("Updating Media Source duration to " + this._levelDuration.toFixed(3)), this._msDuration = this.mediaSource.duration = this._levelDuration)
  6277. }
  6278. }, r.prototype.doFlush = function() {
  6279. for (; this.flushRange.length;) {
  6280. var e = this.flushRange[0];
  6281. if (!this.flushBuffer(e.start, e.end, e.type)) return void(this._needsFlush = !0);
  6282. this.flushRange.shift(), this.flushBufferCounter = 0
  6283. }
  6284. if (0 === this.flushRange.length) {
  6285. this._needsFlush = !1;
  6286. var t = 0,
  6287. r = this.sourceBuffer;
  6288. try {
  6289. for (var i in r) t += r[i].buffered.length
  6290. } catch (e) {
  6291. o.logger.error("error while accessing sourceBuffer.buffered")
  6292. }
  6293. this.appended = t, this.hls.trigger(a.default.BUFFER_FLUSHED)
  6294. }
  6295. }, r.prototype.doAppending = function() {
  6296. var e = this.hls,
  6297. t = this.segments,
  6298. r = this.sourceBuffer;
  6299. if (Object.keys(r).length) {
  6300. if (this.media.error) return this.segments = [], void o.logger.error("trying to append although a media error occured, flush segment and abort");
  6301. if (this.appending) return;
  6302. if (t && t.length) {
  6303. var i = t.shift();
  6304. try {
  6305. var n = r[i.type];
  6306. n ? n.updating ? t.unshift(i) : (n.ended = !1, this.parent = i.parent, n.appendBuffer(i.data), this.appendError = 0, this.appended++, this.appending = !0) : this.onSBUpdateEnd()
  6307. } catch (r) {
  6308. o.logger.error("error while trying to append buffer:" + r.message), t.unshift(i);
  6309. var l = {
  6310. type: s.ErrorTypes.MEDIA_ERROR,
  6311. parent: i.parent
  6312. };
  6313. 22 !== r.code ? (this.appendError ? this.appendError++ : this.appendError = 1, l.details = s.ErrorDetails.BUFFER_APPEND_ERROR, this.appendError > e.config.appendErrorMaxRetry ? (o.logger.log("fail " + e.config.appendErrorMaxRetry + " times to append segment in sourceBuffer"), this.segments = [], l.fatal = !0, e.trigger(a.default.ERROR, l)) : (l.fatal = !1, e.trigger(a.default.ERROR, l))) : (this.segments = [], l.details = s.ErrorDetails.BUFFER_FULL_ERROR, l.fatal = !1, e.trigger(a.default.ERROR, l))
  6314. }
  6315. }
  6316. }
  6317. }, r.prototype.flushBuffer = function(e, t, r) {
  6318. var i, a = this.sourceBuffer;
  6319. if (Object.keys(a).length) {
  6320. if (o.logger.log("flushBuffer,pos/start/end: " + this.media.currentTime.toFixed(3) + "/" + e + "/" + t), this.flushBufferCounter < this.appended) {
  6321. for (var n in a)
  6322. if (!r || n === r) {
  6323. if ((i = a[n]).ended = !1, i.updating) return o.logger.warn("cannot flush, sb updating in progress"), !1;
  6324. if (this.removeBufferRange(n, i, e, t)) return this.flushBufferCounter++, !1
  6325. }
  6326. } else o.logger.warn("abort flushing too many retries");
  6327. o.logger.log("buffer flushed")
  6328. }
  6329. return !0
  6330. }, r.prototype.removeBufferRange = function(e, t, r, i) {
  6331. try {
  6332. for (var a = 0; a < t.buffered.length; a++) {
  6333. var n = t.buffered.start(a),
  6334. s = t.buffered.end(a),
  6335. l = Math.max(n, r),
  6336. u = Math.min(s, i);
  6337. if (Math.min(u, s) - l > .5) return o.logger.log("sb remove " + e + " [" + l + "," + u + "], of [" + n + "," + s + "], pos:" + this.media.currentTime), t.remove(l, u), !0
  6338. }
  6339. } catch (e) {
  6340. o.logger.warn("removeBufferRange failed", e)
  6341. }
  6342. return !1
  6343. }, r
  6344. }(n.default);
  6345. t.default = u
  6346. }).call(this, r(2).Number)
  6347. }, function(e, t, r) {
  6348. "use strict";
  6349. (function(e) {
  6350. var i = this && this.__extends || function() {
  6351. var e = Object.setPrototypeOf || {
  6352. __proto__: []
  6353. }
  6354. instanceof Array && function(e, t) {
  6355. e.__proto__ = t
  6356. } || function(e, t) {
  6357. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  6358. };
  6359. return function(t, r) {
  6360. function i() {
  6361. this.constructor = t
  6362. }
  6363. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  6364. }
  6365. }();
  6366. Object.defineProperty(t, "__esModule", {
  6367. value: !0
  6368. });
  6369. var a = r(1),
  6370. n = function(t) {
  6371. function r(r) {
  6372. var i = t.call(this, r, a.default.FPS_DROP_LEVEL_CAPPING, a.default.MEDIA_ATTACHING, a.default.MANIFEST_PARSED, a.default.BUFFER_CODECS, a.default.MEDIA_DETACHING) || this;
  6373. return i.autoLevelCapping = e.POSITIVE_INFINITY, i.firstLevel = null, i.levels = [], i.media = null, i.restrictedLevels = [], i.timer = null, i
  6374. }
  6375. return i(r, t), r.prototype.destroy = function() {
  6376. this.hls.config.capLevelToPlayerSize && (this.media = null, this._stopCapping())
  6377. }, r.prototype.onFpsDropLevelCapping = function(e) {
  6378. r.isLevelAllowed(e.droppedLevel, this.restrictedLevels) && this.restrictedLevels.push(e.droppedLevel)
  6379. }, r.prototype.onMediaAttaching = function(e) {
  6380. this.media = e.media instanceof window.HTMLVideoElement ? e.media : null
  6381. }, r.prototype.onManifestParsed = function(e) {
  6382. var t = this.hls;
  6383. this.restrictedLevels = [], this.levels = e.levels, this.firstLevel = e.firstLevel, t.config.capLevelToPlayerSize && e.video && this._startCapping()
  6384. }, r.prototype.onBufferCodecs = function(e) {
  6385. this.hls.config.capLevelToPlayerSize && e.video && this._startCapping()
  6386. }, r.prototype.onLevelsUpdated = function(e) {
  6387. this.levels = e.levels
  6388. }, r.prototype.onMediaDetaching = function() {
  6389. this._stopCapping()
  6390. }, r.prototype.detectPlayerSize = function() {
  6391. if (this.media) {
  6392. var e = this.levels ? this.levels.length : 0;
  6393. if (e) {
  6394. var t = this.hls;
  6395. t.autoLevelCapping = this.getMaxLevel(e - 1), t.autoLevelCapping > this.autoLevelCapping && t.streamController.nextLevelSwitch(), this.autoLevelCapping = t.autoLevelCapping
  6396. }
  6397. }
  6398. }, r.prototype.getMaxLevel = function(e) {
  6399. var t = this;
  6400. if (!this.levels) return -1;
  6401. var i = this.levels.filter(function(i, a) {
  6402. return r.isLevelAllowed(a, t.restrictedLevels) && a <= e
  6403. });
  6404. return r.getMaxLevelByMediaSize(i, this.mediaWidth, this.mediaHeight)
  6405. }, r.prototype._startCapping = function() {
  6406. this.timer || (this.autoLevelCapping = e.POSITIVE_INFINITY, this.hls.firstLevel = this.getMaxLevel(this.firstLevel), clearInterval(this.timer), this.timer = setInterval(this.detectPlayerSize.bind(this), 1e3), this.detectPlayerSize())
  6407. }, r.prototype._stopCapping = function() {
  6408. this.restrictedLevels = [], this.firstLevel = null, this.autoLevelCapping = e.POSITIVE_INFINITY, this.timer && (this.timer = clearInterval(this.timer), this.timer = null)
  6409. }, Object.defineProperty(r.prototype, "mediaWidth", {
  6410. get: function() {
  6411. var e, t = this.media;
  6412. return t && (e = t.width || t.clientWidth || t.offsetWidth, e *= r.contentScaleFactor), e
  6413. },
  6414. enumerable: !0,
  6415. configurable: !0
  6416. }), Object.defineProperty(r.prototype, "mediaHeight", {
  6417. get: function() {
  6418. var e, t = this.media;
  6419. return t && (e = t.height || t.clientHeight || t.offsetHeight, e *= r.contentScaleFactor), e
  6420. },
  6421. enumerable: !0,
  6422. configurable: !0
  6423. }), Object.defineProperty(r, "contentScaleFactor", {
  6424. get: function() {
  6425. var e = 1;
  6426. try {
  6427. e = window.devicePixelRatio
  6428. } catch (e) {}
  6429. return e
  6430. },
  6431. enumerable: !0,
  6432. configurable: !0
  6433. }), r.isLevelAllowed = function(e, t) {
  6434. return void 0 === t && (t = []), -1 === t.indexOf(e)
  6435. }, r.getMaxLevelByMediaSize = function(e, t, r) {
  6436. if (!e || e && !e.length) return -1;
  6437. for (var i = function(e, t) {
  6438. return !t || (e.width !== t.width || e.height !== t.height)
  6439. }, a = e.length - 1, n = 0; n < e.length; n += 1) {
  6440. var o = e[n];
  6441. if ((o.width >= t || o.height >= r) && i(o, e[n + 1])) {
  6442. a = n;
  6443. break
  6444. }
  6445. }
  6446. return a
  6447. }, r
  6448. }(r(4).default);
  6449. t.default = n
  6450. }).call(this, r(2).Number)
  6451. }, function(e, t, r) {
  6452. "use strict";
  6453. var i = this && this.__extends || function() {
  6454. var e = Object.setPrototypeOf || {
  6455. __proto__: []
  6456. }
  6457. instanceof Array && function(e, t) {
  6458. e.__proto__ = t
  6459. } || function(e, t) {
  6460. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  6461. };
  6462. return function(t, r) {
  6463. function i() {
  6464. this.constructor = t
  6465. }
  6466. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  6467. }
  6468. }();
  6469. Object.defineProperty(t, "__esModule", {
  6470. value: !0
  6471. });
  6472. var a = r(1),
  6473. n = r(4),
  6474. o = r(0),
  6475. s = window.performance,
  6476. l = function(e) {
  6477. function t(t) {
  6478. return e.call(this, t, a.default.MEDIA_ATTACHING) || this
  6479. }
  6480. return i(t, e), t.prototype.destroy = function() {
  6481. this.timer && clearInterval(this.timer), this.isVideoPlaybackQualityAvailable = !1
  6482. }, t.prototype.onMediaAttaching = function(e) {
  6483. var t = this.hls.config;
  6484. t.capLevelOnFPSDrop && ("function" == typeof(this.video = e.media instanceof window.HTMLVideoElement ? e.media : null).getVideoPlaybackQuality && (this.isVideoPlaybackQualityAvailable = !0), clearInterval(this.timer), this.timer = setInterval(this.checkFPSInterval.bind(this), t.fpsDroppedMonitoringPeriod))
  6485. }, t.prototype.checkFPS = function(e, t, r) {
  6486. var i = s.now();
  6487. if (t) {
  6488. if (this.lastTime) {
  6489. var n = i - this.lastTime,
  6490. l = r - this.lastDroppedFrames,
  6491. u = t - this.lastDecodedFrames,
  6492. d = 1e3 * l / n,
  6493. f = this.hls;
  6494. if (f.trigger(a.default.FPS_DROP, {
  6495. currentDropped: l,
  6496. currentDecoded: u,
  6497. totalDroppedFrames: r
  6498. }), d > 0 && l > f.config.fpsDroppedMonitoringThreshold * u) {
  6499. var c = f.currentLevel;
  6500. o.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: " + c), c > 0 && (-1 === f.autoLevelCapping || f.autoLevelCapping >= c) && (c -= 1, f.trigger(a.default.FPS_DROP_LEVEL_CAPPING, {
  6501. level: c,
  6502. droppedLevel: f.currentLevel
  6503. }), f.autoLevelCapping = c, f.streamController.nextLevelSwitch())
  6504. }
  6505. }
  6506. this.lastTime = i, this.lastDroppedFrames = r, this.lastDecodedFrames = t
  6507. }
  6508. }, t.prototype.checkFPSInterval = function() {
  6509. var e = this.video;
  6510. if (e)
  6511. if (this.isVideoPlaybackQualityAvailable) {
  6512. var t = e.getVideoPlaybackQuality();
  6513. this.checkFPS(e, t.totalVideoFrames, t.droppedVideoFrames)
  6514. } else this.checkFPS(e, e.webkitDecodedFrameCount, e.webkitDroppedFrameCount)
  6515. }, t
  6516. }(n.default);
  6517. t.default = l
  6518. }, function(e, t, r) {
  6519. "use strict";
  6520. Object.defineProperty(t, "__esModule", {
  6521. value: !0
  6522. });
  6523. var i = r(0),
  6524. a = window.performance,
  6525. n = window.XMLHttpRequest,
  6526. o = function() {
  6527. function e(e) {
  6528. e && e.xhrSetup && (this.xhrSetup = e.xhrSetup)
  6529. }
  6530. return e.prototype.destroy = function() {
  6531. this.abort(), this.loader = null
  6532. }, e.prototype.abort = function() {
  6533. var e = this.loader;
  6534. e && 4 !== e.readyState && (this.stats.aborted = !0, e.abort()), window.clearTimeout(this.requestTimeout), this.requestTimeout = null, window.clearTimeout(this.retryTimeout), this.retryTimeout = null
  6535. }, e.prototype.load = function(e, t, r) {
  6536. this.context = e, this.config = t, this.callbacks = r, this.stats = {
  6537. trequest: a.now(),
  6538. retry: 0
  6539. }, this.retryDelay = t.retryDelay, this.loadInternal()
  6540. }, e.prototype.loadInternal = function() {
  6541. var e, t = this.context;
  6542. e = this.loader = new n;
  6543. var r = this.stats;
  6544. r.tfirst = 0, r.loaded = 0;
  6545. var i = this.xhrSetup;
  6546. try {
  6547. if (i) try {
  6548. i(e, t.url)
  6549. } catch (r) {
  6550. e.open("GET", t.url, !0), i(e, t.url)
  6551. }
  6552. e.readyState || e.open("GET", t.url, !0)
  6553. } catch (r) {
  6554. return void this.callbacks.onError({
  6555. code: e.status,
  6556. text: r.message
  6557. }, t, e)
  6558. }
  6559. t.rangeEnd && e.setRequestHeader("Range", "bytes=" + t.rangeStart + "-" + (t.rangeEnd - 1)), e.onreadystatechange = this.readystatechange.bind(this), e.onprogress = this.loadprogress.bind(this), e.responseType = t.responseType, this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout), e.send()
  6560. }, e.prototype.readystatechange = function(e) {
  6561. var t = e.currentTarget,
  6562. r = t.readyState,
  6563. n = this.stats,
  6564. o = this.context,
  6565. s = this.config;
  6566. if (!n.aborted && r >= 2)
  6567. if (window.clearTimeout(this.requestTimeout), 0 === n.tfirst && (n.tfirst = Math.max(a.now(), n.trequest)), 4 === r) {
  6568. var l = t.status;
  6569. if (l >= 200 && l < 300) {
  6570. n.tload = Math.max(n.tfirst, a.now());
  6571. var u = void 0,
  6572. d = void 0;
  6573. d = "arraybuffer" === o.responseType ? (u = t.response).byteLength : (u = t.responseText).length, n.loaded = n.total = d;
  6574. var f = {
  6575. url: t.responseURL,
  6576. data: u
  6577. };
  6578. this.callbacks.onSuccess(f, n, o, t)
  6579. } else n.retry >= s.maxRetry || l >= 400 && l < 499 ? (i.logger.error(l + " while loading " + o.url), this.callbacks.onError({
  6580. code: l,
  6581. text: t.statusText
  6582. }, o, t)) : (i.logger.warn(l + " while loading " + o.url + ", retrying in " + this.retryDelay + "..."), this.destroy(), this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay), this.retryDelay = Math.min(2 * this.retryDelay, s.maxRetryDelay), n.retry++)
  6583. } else this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), s.timeout)
  6584. }, e.prototype.loadtimeout = function() {
  6585. i.logger.warn("timeout while loading " + this.context.url), this.callbacks.onTimeout(this.stats, this.context, null)
  6586. }, e.prototype.loadprogress = function(e) {
  6587. var t = e.currentTarget,
  6588. r = this.stats;
  6589. r.loaded = e.loaded, e.lengthComputable && (r.total = e.total);
  6590. var i = this.callbacks.onProgress;
  6591. i && i(r, this.context, null, t)
  6592. }, e
  6593. }();
  6594. t.default = o
  6595. }, function(e, t, r) {
  6596. "use strict";
  6597. var i = this && this.__extends || function() {
  6598. var e = Object.setPrototypeOf || {
  6599. __proto__: []
  6600. }
  6601. instanceof Array && function(e, t) {
  6602. e.__proto__ = t
  6603. } || function(e, t) {
  6604. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  6605. };
  6606. return function(t, r) {
  6607. function i() {
  6608. this.constructor = t
  6609. }
  6610. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  6611. }
  6612. }();
  6613. Object.defineProperty(t, "__esModule", {
  6614. value: !0
  6615. });
  6616. var a = r(1),
  6617. n = r(28),
  6618. o = r(0),
  6619. s = r(3),
  6620. l = function(e) {
  6621. function t(t) {
  6622. var r = e.call(this, t, a.default.MANIFEST_LOADING, a.default.MANIFEST_PARSED, a.default.AUDIO_TRACK_LOADED, a.default.AUDIO_TRACK_SWITCHED, a.default.LEVEL_LOADED, a.default.ERROR) || this;
  6623. return r._trackId = -1, r._selectDefaultTrack = !0, r.tracks = [], r.trackIdBlacklist = Object.create(null), r.audioGroupId = null, r
  6624. }
  6625. return i(t, e), t.prototype.onManifestLoading = function() {
  6626. this.tracks = [], this._trackId = -1, this._selectDefaultTrack = !0
  6627. }, t.prototype.onManifestParsed = function(e) {
  6628. var t = this.tracks = e.audioTracks || [];
  6629. this.hls.trigger(a.default.AUDIO_TRACKS_UPDATED, {
  6630. audioTracks: t
  6631. })
  6632. }, t.prototype.onAudioTrackLoaded = function(e) {
  6633. if (e.id >= this.tracks.length) o.logger.warn("Invalid audio track id:", e.id);
  6634. else {
  6635. if (o.logger.log("audioTrack " + e.id + " loaded"), this.tracks[e.id].details = e.details, e.details.live && !this.hasInterval()) {
  6636. var t = 1e3 * e.details.targetduration;
  6637. this.setInterval(t)
  6638. }!e.details.live && this.hasInterval() && this.clearInterval()
  6639. }
  6640. }, t.prototype.onAudioTrackSwitched = function(e) {
  6641. var t = this.tracks[e.id].groupId;
  6642. t && this.audioGroupId !== t && (this.audioGroupId = t)
  6643. }, t.prototype.onLevelLoaded = function(e) {
  6644. var t = this.hls.levels[e.level];
  6645. if (t.audioGroupIds) {
  6646. var r = t.audioGroupIds[t.urlId];
  6647. this.audioGroupId !== r && (this.audioGroupId = r, this._selectInitialAudioTrack())
  6648. }
  6649. }, t.prototype.onError = function(e) {
  6650. e.type === s.ErrorTypes.NETWORK_ERROR && (e.fatal && this.clearInterval(), e.details === s.ErrorDetails.AUDIO_TRACK_LOAD_ERROR && (o.logger.warn("Network failure on audio-track id:", e.context.id), this._handleLoadError()))
  6651. }, Object.defineProperty(t.prototype, "audioTracks", {
  6652. get: function() {
  6653. return this.tracks
  6654. },
  6655. enumerable: !0,
  6656. configurable: !0
  6657. }), Object.defineProperty(t.prototype, "audioTrack", {
  6658. get: function() {
  6659. return this._trackId
  6660. },
  6661. set: function(e) {
  6662. this._setAudioTrack(e), this._selectDefaultTrack = !1
  6663. },
  6664. enumerable: !0,
  6665. configurable: !0
  6666. }), t.prototype._setAudioTrack = function(e) {
  6667. if (this._trackId === e && this.tracks[this._trackId].details) o.logger.debug("Same id as current audio-track passed, and track details available -> no-op");
  6668. else if (e < 0 || e >= this.tracks.length) o.logger.warn("Invalid id passed to audio-track controller");
  6669. else {
  6670. var t = this.tracks[e];
  6671. o.logger.log("Now switching to audio-track index " + e), this.clearInterval(), this._trackId = e;
  6672. var r = t.url,
  6673. i = t.type,
  6674. n = t.id;
  6675. this.hls.trigger(a.default.AUDIO_TRACK_SWITCHING, {
  6676. id: n,
  6677. type: i,
  6678. url: r
  6679. }), this._loadTrackDetailsIfNeeded(t)
  6680. }
  6681. }, t.prototype.doTick = function() {
  6682. this._updateTrack(this._trackId)
  6683. }, t.prototype._selectInitialAudioTrack = function() {
  6684. var e = this,
  6685. t = this.tracks;
  6686. if (t.length) {
  6687. var r = this.tracks[this._trackId],
  6688. i = null;
  6689. if (r && (i = r.name), this._selectDefaultTrack) {
  6690. var n = t.filter(function(e) {
  6691. return e.default
  6692. });
  6693. n.length ? t = n : o.logger.warn("No default audio tracks defined")
  6694. }
  6695. var l = !1,
  6696. u = function() {
  6697. t.forEach(function(t) {
  6698. l || e.audioGroupId && t.groupId !== e.audioGroupId || i && i !== t.name || (e._setAudioTrack(t.id), l = !0)
  6699. })
  6700. };
  6701. u(), l || (i = null, u()), l || (o.logger.error("No track found for running audio group-ID: " + this.audioGroupId), this.hls.trigger(a.default.ERROR, {
  6702. type: s.ErrorTypes.MEDIA_ERROR,
  6703. details: s.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,
  6704. fatal: !0
  6705. }))
  6706. }
  6707. }, t.prototype._needsTrackLoading = function(e) {
  6708. var t = e.details,
  6709. r = e.url;
  6710. return !(t && !t.live) && !!r
  6711. }, t.prototype._loadTrackDetailsIfNeeded = function(e) {
  6712. if (this._needsTrackLoading(e)) {
  6713. var t = e.url,
  6714. r = e.id;
  6715. o.logger.log("loading audio-track playlist for id: " + r), this.hls.trigger(a.default.AUDIO_TRACK_LOADING, {
  6716. url: t,
  6717. id: r
  6718. })
  6719. }
  6720. }, t.prototype._updateTrack = function(e) {
  6721. if (!(e < 0 || e >= this.tracks.length)) {
  6722. this.clearInterval(), this._trackId = e, o.logger.log("trying to update audio-track " + e);
  6723. var t = this.tracks[e];
  6724. this._loadTrackDetailsIfNeeded(t)
  6725. }
  6726. }, t.prototype._handleLoadError = function() {
  6727. this.trackIdBlacklist[this._trackId] = !0;
  6728. var e = this._trackId,
  6729. t = this.tracks[e],
  6730. r = t.name,
  6731. i = t.language,
  6732. a = t.groupId;
  6733. o.logger.warn("Loading failed on audio track id: " + e + ", group-id: " + a + ', name/language: "' + r + '" / "' + i + '"');
  6734. for (var n = e, s = 0; s < this.tracks.length; s++) {
  6735. if (!this.trackIdBlacklist[s])
  6736. if (this.tracks[s].name === r) {
  6737. n = s;
  6738. break
  6739. }
  6740. }
  6741. n !== e ? (o.logger.log("Attempting audio-track fallback id:", n, "group-id:", this.tracks[n].groupId), this._setAudioTrack(n)) : o.logger.warn('No fallback audio-track found for name/language: "' + r + '" / "' + i + '"')
  6742. }, t
  6743. }(n.default);
  6744. t.default = l
  6745. }, function(e, t, r) {
  6746. "use strict";
  6747. (function(e) {
  6748. var i = this && this.__extends || function() {
  6749. var e = Object.setPrototypeOf || {
  6750. __proto__: []
  6751. }
  6752. instanceof Array && function(e, t) {
  6753. e.__proto__ = t
  6754. } || function(e, t) {
  6755. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  6756. };
  6757. return function(t, r) {
  6758. function i() {
  6759. this.constructor = t
  6760. }
  6761. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  6762. }
  6763. }();
  6764. Object.defineProperty(t, "__esModule", {
  6765. value: !0
  6766. });
  6767. var a = r(10),
  6768. n = r(5),
  6769. o = r(20),
  6770. s = r(1),
  6771. l = r(8),
  6772. u = r(25),
  6773. d = r(3),
  6774. f = r(0),
  6775. c = r(26),
  6776. h = r(7),
  6777. p = r(12),
  6778. g = r(15),
  6779. v = window.performance,
  6780. y = function(t) {
  6781. function r(e, r) {
  6782. var i = t.call(this, e, s.default.MEDIA_ATTACHED, s.default.MEDIA_DETACHING, s.default.AUDIO_TRACKS_UPDATED, s.default.AUDIO_TRACK_SWITCHING, s.default.AUDIO_TRACK_LOADED, s.default.KEY_LOADED, s.default.FRAG_LOADED, s.default.FRAG_PARSING_INIT_SEGMENT, s.default.FRAG_PARSING_DATA, s.default.FRAG_PARSED, s.default.ERROR, s.default.BUFFER_RESET, s.default.BUFFER_CREATED, s.default.BUFFER_APPENDED, s.default.BUFFER_FLUSHED, s.default.INIT_PTS_FOUND) || this;
  6783. return i.fragmentTracker = r, i.config = e.config, i.audioCodecSwap = !1, i._state = g.State.STOPPED, i.initPTS = [], i.waitingFragment = null, i.videoTrackCC = null, i
  6784. }
  6785. return i(r, t), r.prototype.onInitPtsFound = function(e) {
  6786. var t = e.id,
  6787. r = e.frag.cc,
  6788. i = e.initPTS;
  6789. "main" === t && (this.initPTS[r] = i, this.videoTrackCC = r, f.logger.log("InitPTS for cc: " + r + " found from video track: " + i), this.state === g.State.WAITING_INIT_PTS && this.tick())
  6790. }, r.prototype.startLoad = function(e) {
  6791. if (this.tracks) {
  6792. var t = this.lastCurrentTime;
  6793. this.stopLoad(), this.setInterval(100), this.fragLoadError = 0, t > 0 && -1 === e ? (f.logger.log("audio:override startPosition with lastCurrentTime @" + t.toFixed(3)), this.state = g.State.IDLE) : (this.lastCurrentTime = this.startPosition ? this.startPosition : e, this.state = g.State.STARTING), this.nextLoadPosition = this.startPosition = this.lastCurrentTime, this.tick()
  6794. } else this.startPosition = e, this.state = g.State.STOPPED
  6795. }, Object.defineProperty(r.prototype, "state", {
  6796. get: function() {
  6797. return this._state
  6798. },
  6799. set: function(e) {
  6800. if (this.state !== e) {
  6801. var t = this.state;
  6802. this._state = e, f.logger.log("audio stream:" + t + "->" + e)
  6803. }
  6804. },
  6805. enumerable: !0,
  6806. configurable: !0
  6807. }), r.prototype.doTick = function() {
  6808. var t, r, i, o = this.hls,
  6809. l = o.config;
  6810. switch (this.state) {
  6811. case g.State.ERROR:
  6812. case g.State.PAUSED:
  6813. case g.State.BUFFER_FLUSHING:
  6814. break;
  6815. case g.State.STARTING:
  6816. this.state = g.State.WAITING_TRACK, this.loadedmetadata = !1;
  6817. break;
  6818. case g.State.IDLE:
  6819. var u = this.tracks;
  6820. if (!u) break;
  6821. if (!this.media && (this.startFragRequested || !l.startFragPrefetch)) break;
  6822. if (this.loadedmetadata) t = this.media.currentTime;
  6823. else if (void 0 === (t = this.nextLoadPosition)) break;
  6824. var d = this.mediaBuffer ? this.mediaBuffer : this.media,
  6825. p = this.videoBuffer ? this.videoBuffer : this.media,
  6826. y = n.BufferHelper.bufferInfo(d, t, l.maxBufferHole),
  6827. m = n.BufferHelper.bufferInfo(p, t, l.maxBufferHole),
  6828. E = y.len,
  6829. _ = y.end,
  6830. T = this.fragPrevious,
  6831. S = Math.min(l.maxBufferLength, l.maxMaxBufferLength),
  6832. b = Math.max(S, m.len),
  6833. A = this.audioSwitch,
  6834. R = this.trackId;
  6835. if ((E < b || A) && R < u.length) {
  6836. if (void 0 === (i = u[R].details)) {
  6837. this.state = g.State.WAITING_TRACK;
  6838. break
  6839. }
  6840. if (!A && this._streamEnded(y, i)) return this.hls.trigger(s.default.BUFFER_EOS, {
  6841. type: "audio"
  6842. }), void(this.state = g.State.ENDED);
  6843. var D = i.fragments,
  6844. L = D.length,
  6845. w = D[0].start,
  6846. O = D[L - 1].start + D[L - 1].duration,
  6847. I = void 0;
  6848. if (A)
  6849. if (i.live && !i.PTSKnown) f.logger.log("switching audiotrack, live stream, unknown PTS,load first fragment"), _ = 0;
  6850. else if (_ = t, i.PTSKnown && t < w) {
  6851. if (!(y.end > w || y.nextStart)) return;
  6852. f.logger.log("alt audio track ahead of main track, seek to start of alt audio track"), this.media.currentTime = w + .05
  6853. }
  6854. if (i.initSegment && !i.initSegment.data) I = i.initSegment;
  6855. else if (_ <= w) {
  6856. if (I = D[0], null !== this.videoTrackCC && I.cc !== this.videoTrackCC && (I = c.findFragWithCC(D, this.videoTrackCC)), i.live && I.loadIdx && I.loadIdx === this.fragLoadIdx) {
  6857. var P = y.nextStart ? y.nextStart : w;
  6858. return f.logger.log("no alt audio available @currentTime:" + this.media.currentTime + ", seeking @" + (P + .05)), void(this.media.currentTime = P + .05)
  6859. }
  6860. } else {
  6861. var k = void 0,
  6862. C = l.maxFragLookUpTolerance,
  6863. F = T ? D[T.sn - D[0].sn + 1] : void 0,
  6864. x = function(e) {
  6865. var t = Math.min(C, e.duration);
  6866. return e.start + e.duration - t <= _ ? 1 : e.start - t > _ && e.start ? -1 : 0
  6867. };
  6868. _ < O ? (_ > O - C && (C = 0), k = F && !x(F) ? F : a.default.search(D, x)) : k = D[L - 1], k && (I = k, w = k.start, T && I.level === T.level && I.sn === T.sn && (I.sn < i.endSN ? (I = D[I.sn + 1 - i.startSN], f.logger.log("SN just loaded, load next one: " + I.sn)) : I = null))
  6869. }
  6870. I && (I.encrypted ? (f.logger.log("Loading key for " + I.sn + " of [" + i.startSN + " ," + i.endSN + "],track " + R), this.state = g.State.KEY_LOADING, o.trigger(s.default.KEY_LOADING, {
  6871. frag: I
  6872. })) : (f.logger.log("Loading " + I.sn + ", cc: " + I.cc + " of [" + i.startSN + " ," + i.endSN + "],track " + R + ", currentTime:" + t + ",bufferEnd:" + _.toFixed(3)), this.fragCurrent = I, (A || this.fragmentTracker.getState(I) === h.FragmentState.NOT_LOADED) && (this.startFragRequested = !0, e.isFinite(I.sn) && (this.nextLoadPosition = I.start + I.duration), o.trigger(s.default.FRAG_LOADING, {
  6873. frag: I
  6874. }), this.state = g.State.FRAG_LOADING)))
  6875. }
  6876. break;
  6877. case g.State.WAITING_TRACK:
  6878. (r = this.tracks[this.trackId]) && r.details && (this.state = g.State.IDLE);
  6879. break;
  6880. case g.State.FRAG_LOADING_WAITING_RETRY:
  6881. var M = v.now(),
  6882. N = this.retryDate,
  6883. U = (d = this.media) && d.seeking;
  6884. (!N || M >= N || U) && (f.logger.log("audioStreamController: retryDate reached, switch back to IDLE state"), this.state = g.State.IDLE);
  6885. break;
  6886. case g.State.WAITING_INIT_PTS:
  6887. var B = this.videoTrackCC;
  6888. if (void 0 === this.initPTS[B]) break;
  6889. var G = this.waitingFragment;
  6890. if (G) {
  6891. var j = G.frag.cc;
  6892. B !== j ? (r = this.tracks[this.trackId]).details && r.details.live && (f.logger.warn("Waiting fragment CC (" + j + ") does not match video track CC (" + B + ")"), this.waitingFragment = null, this.state = g.State.IDLE) : (this.state = g.State.FRAG_LOADING, this.onFragLoaded(this.waitingFragment), this.waitingFragment = null)
  6893. } else this.state = g.State.IDLE;
  6894. break;
  6895. case g.State.STOPPED:
  6896. case g.State.FRAG_LOADING:
  6897. case g.State.PARSING:
  6898. case g.State.PARSED:
  6899. case g.State.ENDED:
  6900. }
  6901. }, r.prototype.onMediaAttached = function(e) {
  6902. var t = this.media = this.mediaBuffer = e.media;
  6903. this.onvseeking = this.onMediaSeeking.bind(this), this.onvended = this.onMediaEnded.bind(this), t.addEventListener("seeking", this.onvseeking), t.addEventListener("ended", this.onvended);
  6904. var r = this.config;
  6905. this.tracks && r.autoStartLoad && this.startLoad(r.startPosition)
  6906. }, r.prototype.onMediaDetaching = function() {
  6907. var e = this.media;
  6908. e && e.ended && (f.logger.log("MSE detaching and video ended, reset startPosition"), this.startPosition = this.lastCurrentTime = 0), e && (e.removeEventListener("seeking", this.onvseeking), e.removeEventListener("ended", this.onvended), this.onvseeking = this.onvseeked = this.onvended = null), this.media = this.mediaBuffer = this.videoBuffer = null, this.loadedmetadata = !1, this.stopLoad()
  6909. }, r.prototype.onAudioTracksUpdated = function(e) {
  6910. f.logger.log("audio tracks updated"), this.tracks = e.audioTracks
  6911. }, r.prototype.onAudioTrackSwitching = function(e) {
  6912. var t = !!e.url;
  6913. this.trackId = e.id, this.fragCurrent = null, this.state = g.State.PAUSED, this.waitingFragment = null, t ? this.setInterval(100) : this.demuxer && (this.demuxer.destroy(), this.demuxer = null), t && (this.audioSwitch = !0, this.state = g.State.IDLE), this.tick()
  6914. }, r.prototype.onAudioTrackLoaded = function(t) {
  6915. var r = t.details,
  6916. i = t.id,
  6917. a = this.tracks[i],
  6918. n = r.totalduration,
  6919. o = 0;
  6920. if (f.logger.log("track " + i + " loaded [" + r.startSN + "," + r.endSN + "],duration:" + n), r.live) {
  6921. var s = a.details;
  6922. s && r.fragments.length > 0 ? (l.mergeDetails(s, r), o = r.fragments[0].start, r.PTSKnown ? f.logger.log("live audio playlist sliding:" + o.toFixed(3)) : f.logger.log("live audio playlist - outdated PTS, unknown sliding")) : (r.PTSKnown = !1, f.logger.log("live audio playlist - first load, unknown sliding"))
  6923. } else r.PTSKnown = !1;
  6924. if (a.details = r, !this.startFragRequested) {
  6925. if (-1 === this.startPosition) {
  6926. var u = r.startTimeOffset;
  6927. e.isFinite(u) ? (f.logger.log("start time offset found in playlist, adjust startPosition to " + u), this.startPosition = u) : this.startPosition = 0
  6928. }
  6929. this.nextLoadPosition = this.startPosition
  6930. }
  6931. this.state === g.State.WAITING_TRACK && (this.state = g.State.IDLE), this.tick()
  6932. }, r.prototype.onKeyLoaded = function() {
  6933. this.state === g.State.KEY_LOADING && (this.state = g.State.IDLE, this.tick())
  6934. }, r.prototype.onFragLoaded = function(e) {
  6935. var t = this.fragCurrent,
  6936. r = e.frag;
  6937. if (this.state === g.State.FRAG_LOADING && t && "audio" === r.type && r.level === t.level && r.sn === t.sn) {
  6938. var i = this.tracks[this.trackId],
  6939. a = i.details,
  6940. n = a.totalduration,
  6941. l = t.level,
  6942. u = t.sn,
  6943. d = t.cc,
  6944. c = this.config.defaultAudioCodec || i.audioCodec || "mp4a.40.2",
  6945. h = this.stats = e.stats;
  6946. if ("initSegment" === u) this.state = g.State.IDLE, h.tparsed = h.tbuffered = v.now(), a.initSegment.data = e.payload, this.hls.trigger(s.default.FRAG_BUFFERED, {
  6947. stats: h,
  6948. frag: t,
  6949. id: "audio"
  6950. }), this.tick();
  6951. else {
  6952. this.state = g.State.PARSING, this.appended = !1, this.demuxer || (this.demuxer = new o.default(this.hls, "audio"));
  6953. var p = this.initPTS[d],
  6954. y = a.initSegment ? a.initSegment.data : [];
  6955. if (a.initSegment || void 0 !== p) {
  6956. this.pendingBuffering = !0, f.logger.log("Demuxing " + u + " of [" + a.startSN + " ," + a.endSN + "],track " + l);
  6957. this.demuxer.push(e.payload, y, c, null, t, n, !1, p)
  6958. } else f.logger.log("unknown video PTS for continuity counter " + d + ", waiting for video PTS before demuxing audio frag " + u + " of [" + a.startSN + " ," + a.endSN + "],track " + l), this.waitingFragment = e, this.state = g.State.WAITING_INIT_PTS
  6959. }
  6960. }
  6961. this.fragLoadError = 0
  6962. }, r.prototype.onFragParsingInitSegment = function(e) {
  6963. var t = this.fragCurrent,
  6964. r = e.frag;
  6965. if (t && "audio" === e.id && r.sn === t.sn && r.level === t.level && this.state === g.State.PARSING) {
  6966. var i = e.tracks,
  6967. a = void 0;
  6968. if (i.video && delete i.video, a = i.audio) {
  6969. a.levelCodec = a.codec, a.id = e.id, this.hls.trigger(s.default.BUFFER_CODECS, i), f.logger.log("audio track:audio,container:" + a.container + ",codecs[level/parsed]=[" + a.levelCodec + "/" + a.codec + "]");
  6970. var n = a.initSegment;
  6971. if (n) {
  6972. var o = {
  6973. type: "audio",
  6974. data: n,
  6975. parent: "audio",
  6976. content: "initSegment"
  6977. };
  6978. this.audioSwitch ? this.pendingData = [o] : (this.appended = !0, this.pendingBuffering = !0, this.hls.trigger(s.default.BUFFER_APPENDING, o))
  6979. }
  6980. this.tick()
  6981. }
  6982. }
  6983. }, r.prototype.onFragParsingData = function(t) {
  6984. var r = this,
  6985. i = this.fragCurrent,
  6986. a = t.frag;
  6987. if (i && "audio" === t.id && "audio" === t.type && a.sn === i.sn && a.level === i.level && this.state === g.State.PARSING) {
  6988. var n = this.trackId,
  6989. o = this.tracks[n],
  6990. u = this.hls;
  6991. e.isFinite(t.endPTS) || (t.endPTS = t.startPTS + i.duration, t.endDTS = t.startDTS + i.duration), i.addElementaryStream(p.default.ElementaryStreamTypes.AUDIO), f.logger.log("parsed " + t.type + ",PTS:[" + t.startPTS.toFixed(3) + "," + t.endPTS.toFixed(3) + "],DTS:[" + t.startDTS.toFixed(3) + "/" + t.endDTS.toFixed(3) + "],nb:" + t.nb), l.updateFragPTSDTS(o.details, i, t.startPTS, t.endPTS);
  6992. var c = this.audioSwitch,
  6993. h = this.media,
  6994. v = !1;
  6995. if (c && h)
  6996. if (h.readyState) {
  6997. var y = h.currentTime;
  6998. f.logger.log("switching audio track : currentTime:" + y), y >= t.startPTS && (f.logger.log("switching audio track : flushing all audio"), this.state = g.State.BUFFER_FLUSHING, u.trigger(s.default.BUFFER_FLUSHING, {
  6999. startOffset: 0,
  7000. endOffset: e.POSITIVE_INFINITY,
  7001. type: "audio"
  7002. }), v = !0, this.audioSwitch = !1, u.trigger(s.default.AUDIO_TRACK_SWITCHED, {
  7003. id: n
  7004. }))
  7005. } else this.audioSwitch = !1, u.trigger(s.default.AUDIO_TRACK_SWITCHED, {
  7006. id: n
  7007. });
  7008. var m = this.pendingData;
  7009. if (!m) return f.logger.warn("Apparently attempt to enqueue media payload without codec initialization data upfront"), void u.trigger(s.default.ERROR, {
  7010. type: d.ErrorTypes.MEDIA_ERROR,
  7011. details: null,
  7012. fatal: !0
  7013. });
  7014. this.audioSwitch || ([t.data1, t.data2].forEach(function(e) {
  7015. e && e.length && m.push({
  7016. type: t.type,
  7017. data: e,
  7018. parent: "audio",
  7019. content: "data"
  7020. })
  7021. }), !v && m.length && (m.forEach(function(e) {
  7022. r.state === g.State.PARSING && (r.pendingBuffering = !0, r.hls.trigger(s.default.BUFFER_APPENDING, e))
  7023. }), this.pendingData = [], this.appended = !0)), this.tick()
  7024. }
  7025. }, r.prototype.onFragParsed = function(e) {
  7026. var t = this.fragCurrent,
  7027. r = e.frag;
  7028. t && "audio" === e.id && r.sn === t.sn && r.level === t.level && this.state === g.State.PARSING && (this.stats.tparsed = v.now(), this.state = g.State.PARSED, this._checkAppendedParsed())
  7029. }, r.prototype.onBufferReset = function() {
  7030. this.mediaBuffer = this.videoBuffer = null, this.loadedmetadata = !1
  7031. }, r.prototype.onBufferCreated = function(e) {
  7032. var t = e.tracks.audio;
  7033. t && (this.mediaBuffer = t.buffer, this.loadedmetadata = !0), e.tracks.video && (this.videoBuffer = e.tracks.video.buffer)
  7034. }, r.prototype.onBufferAppended = function(e) {
  7035. if ("audio" === e.parent) {
  7036. var t = this.state;
  7037. t !== g.State.PARSING && t !== g.State.PARSED || (this.pendingBuffering = e.pending > 0, this._checkAppendedParsed())
  7038. }
  7039. }, r.prototype._checkAppendedParsed = function() {
  7040. if (!(this.state !== g.State.PARSED || this.appended && this.pendingBuffering)) {
  7041. var e = this.fragCurrent,
  7042. t = this.stats,
  7043. r = this.hls;
  7044. if (e) {
  7045. this.fragPrevious = e, t.tbuffered = v.now(), r.trigger(s.default.FRAG_BUFFERED, {
  7046. stats: t,
  7047. frag: e,
  7048. id: "audio"
  7049. });
  7050. var i = this.mediaBuffer ? this.mediaBuffer : this.media;
  7051. f.logger.log("audio buffered : " + u.default.toString(i.buffered)), this.audioSwitch && this.appended && (this.audioSwitch = !1, r.trigger(s.default.AUDIO_TRACK_SWITCHED, {
  7052. id: this.trackId
  7053. })), this.state = g.State.IDLE
  7054. }
  7055. this.tick()
  7056. }
  7057. }, r.prototype.onError = function(t) {
  7058. var r = t.frag;
  7059. if (!r || "audio" === r.type) switch (t.details) {
  7060. case d.ErrorDetails.FRAG_LOAD_ERROR:
  7061. case d.ErrorDetails.FRAG_LOAD_TIMEOUT:
  7062. var i = t.frag;
  7063. if (i && "audio" !== i.type) break;
  7064. if (!t.fatal) {
  7065. var a = this.fragLoadError;
  7066. if (a ? a++ : a = 1, a <= (l = this.config).fragLoadingMaxRetry) {
  7067. this.fragLoadError = a;
  7068. var o = Math.min(Math.pow(2, a - 1) * l.fragLoadingRetryDelay, l.fragLoadingMaxRetryTimeout);
  7069. f.logger.warn("AudioStreamController: frag loading failed, retry in " + o + " ms"), this.retryDate = v.now() + o, this.state = g.State.FRAG_LOADING_WAITING_RETRY
  7070. } else f.logger.error("AudioStreamController: " + t.details + " reaches max retry, redispatch as fatal ..."), t.fatal = !0, this.state = g.State.ERROR
  7071. }
  7072. break;
  7073. case d.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:
  7074. case d.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:
  7075. case d.ErrorDetails.KEY_LOAD_ERROR:
  7076. case d.ErrorDetails.KEY_LOAD_TIMEOUT:
  7077. this.state !== g.State.ERROR && (this.state = t.fatal ? g.State.ERROR : g.State.IDLE, f.logger.warn("AudioStreamController: " + t.details + " while loading frag, now switching to " + this.state + " state ..."));
  7078. break;
  7079. case d.ErrorDetails.BUFFER_FULL_ERROR:
  7080. if ("audio" === t.parent && (this.state === g.State.PARSING || this.state === g.State.PARSED)) {
  7081. var l, u = this.mediaBuffer,
  7082. c = this.media.currentTime;
  7083. if (u && n.BufferHelper.isBuffered(u, c) && n.BufferHelper.isBuffered(u, c + .5))(l = this.config).maxMaxBufferLength >= l.maxBufferLength && (l.maxMaxBufferLength /= 2, f.logger.warn("AudioStreamController: reduce max buffer length to " + l.maxMaxBufferLength + "s")), this.state = g.State.IDLE;
  7084. else f.logger.warn("AudioStreamController: buffer full error also media.currentTime is not buffered, flush audio buffer"), this.fragCurrent = null, this.state = g.State.BUFFER_FLUSHING, this.hls.trigger(s.default.BUFFER_FLUSHING, {
  7085. startOffset: 0,
  7086. endOffset: e.POSITIVE_INFINITY,
  7087. type: "audio"
  7088. })
  7089. }
  7090. }
  7091. }, r.prototype.onBufferFlushed = function() {
  7092. var e = this,
  7093. t = this.pendingData;
  7094. t && t.length ? (f.logger.log("AudioStreamController: appending pending audio data after buffer flushed"), t.forEach(function(t) {
  7095. e.hls.trigger(s.default.BUFFER_APPENDING, t)
  7096. }), this.appended = !0, this.pendingData = [], this.state = g.State.PARSED) : (this.state = g.State.IDLE, this.fragPrevious = null, this.tick())
  7097. }, r
  7098. }(g.default);
  7099. t.default = y
  7100. }).call(this, r(2).Number)
  7101. }, function(e, t, r) {
  7102. "use strict";
  7103. Object.defineProperty(t, "__esModule", {
  7104. value: !0
  7105. });
  7106. var i = r(30);
  7107. t.newCue = function(e, t, r, a) {
  7108. for (var n, o, s, l, u, d = window.VTTCue || window.TextTrackCue, f = 0; f < a.rows.length; f++)
  7109. if (s = !0, l = 0, u = "", !(n = a.rows[f]).isEmpty()) {
  7110. for (var c = 0; c < n.chars.length; c++) n.chars[c].uchar.match(/\s/) && s ? l++ : (u += n.chars[c].uchar, s = !1);
  7111. n.cueStartTime = t, t === r && (r += 1e-4), o = new d(t, r, i.fixLineBreaks(u.trim())), l >= 16 ? l-- : l++, navigator.userAgent.match(/Firefox\//) ? o.line = f + 1 : o.line = f > 7 ? f - 2 : f + 1, o.align = "left", o.position = Math.max(0, Math.min(100, l / 32 * 100 + (navigator.userAgent.match(/Firefox\//) ? 50 : 0))), e.addCue(o)
  7112. }
  7113. }
  7114. }, function(e, t, r) {
  7115. "use strict";
  7116. Object.defineProperty(t, "__esModule", {
  7117. value: !0
  7118. }), t.default = function() {
  7119. if ("undefined" != typeof window && window.VTTCue) return window.VTTCue;
  7120. var e = "auto",
  7121. t = {
  7122. "": !0,
  7123. lr: !0,
  7124. rl: !0
  7125. },
  7126. r = {
  7127. start: !0,
  7128. middle: !0,
  7129. end: !0,
  7130. left: !0,
  7131. right: !0
  7132. };
  7133.  
  7134. function i(e) {
  7135. return "string" == typeof e && (!!r[e.toLowerCase()] && e.toLowerCase())
  7136. }
  7137.  
  7138. function a(e) {
  7139. for (var t = 1; t < arguments.length; t++) {
  7140. var r = arguments[t];
  7141. for (var i in r) e[i] = r[i]
  7142. }
  7143. return e
  7144. }
  7145.  
  7146. function n(r, n, o) {
  7147. var s = this,
  7148. l = function() {
  7149. if ("undefined" != typeof navigator) return /MSIE\s8\.0/.test(navigator.userAgent)
  7150. }(),
  7151. u = {};
  7152. l ? s = document.createElement("custom") : u.enumerable = !0, s.hasBeenReset = !1;
  7153. var d = "",
  7154. f = !1,
  7155. c = r,
  7156. h = n,
  7157. p = o,
  7158. g = null,
  7159. v = "",
  7160. y = !0,
  7161. m = "auto",
  7162. E = "start",
  7163. _ = 50,
  7164. T = "middle",
  7165. S = 50,
  7166. b = "middle";
  7167. if (Object.defineProperty(s, "id", a({}, u, {
  7168. get: function() {
  7169. return d
  7170. },
  7171. set: function(e) {
  7172. d = "" + e
  7173. }
  7174. })), Object.defineProperty(s, "pauseOnExit", a({}, u, {
  7175. get: function() {
  7176. return f
  7177. },
  7178. set: function(e) {
  7179. f = !!e
  7180. }
  7181. })), Object.defineProperty(s, "startTime", a({}, u, {
  7182. get: function() {
  7183. return c
  7184. },
  7185. set: function(e) {
  7186. if ("number" != typeof e) throw new TypeError("Start time must be set to a number.");
  7187. c = e, this.hasBeenReset = !0
  7188. }
  7189. })), Object.defineProperty(s, "endTime", a({}, u, {
  7190. get: function() {
  7191. return h
  7192. },
  7193. set: function(e) {
  7194. if ("number" != typeof e) throw new TypeError("End time must be set to a number.");
  7195. h = e, this.hasBeenReset = !0
  7196. }
  7197. })), Object.defineProperty(s, "text", a({}, u, {
  7198. get: function() {
  7199. return p
  7200. },
  7201. set: function(e) {
  7202. p = "" + e, this.hasBeenReset = !0
  7203. }
  7204. })), Object.defineProperty(s, "region", a({}, u, {
  7205. get: function() {
  7206. return g
  7207. },
  7208. set: function(e) {
  7209. g = e, this.hasBeenReset = !0
  7210. }
  7211. })), Object.defineProperty(s, "vertical", a({}, u, {
  7212. get: function() {
  7213. return v
  7214. },
  7215. set: function(e) {
  7216. var r = function(e) {
  7217. return "string" == typeof e && !!t[e.toLowerCase()] && e.toLowerCase()
  7218. }(e);
  7219. if (!1 === r) throw new SyntaxError("An invalid or illegal string was specified.");
  7220. v = r, this.hasBeenReset = !0
  7221. }
  7222. })), Object.defineProperty(s, "snapToLines", a({}, u, {
  7223. get: function() {
  7224. return y
  7225. },
  7226. set: function(e) {
  7227. y = !!e, this.hasBeenReset = !0
  7228. }
  7229. })), Object.defineProperty(s, "line", a({}, u, {
  7230. get: function() {
  7231. return m
  7232. },
  7233. set: function(t) {
  7234. if ("number" != typeof t && t !== e) throw new SyntaxError("An invalid number or illegal string was specified.");
  7235. m = t, this.hasBeenReset = !0
  7236. }
  7237. })), Object.defineProperty(s, "lineAlign", a({}, u, {
  7238. get: function() {
  7239. return E
  7240. },
  7241. set: function(e) {
  7242. var t = i(e);
  7243. if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
  7244. E = t, this.hasBeenReset = !0
  7245. }
  7246. })), Object.defineProperty(s, "position", a({}, u, {
  7247. get: function() {
  7248. return _
  7249. },
  7250. set: function(e) {
  7251. if (e < 0 || e > 100) throw new Error("Position must be between 0 and 100.");
  7252. _ = e, this.hasBeenReset = !0
  7253. }
  7254. })), Object.defineProperty(s, "positionAlign", a({}, u, {
  7255. get: function() {
  7256. return T
  7257. },
  7258. set: function(e) {
  7259. var t = i(e);
  7260. if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
  7261. T = t, this.hasBeenReset = !0
  7262. }
  7263. })), Object.defineProperty(s, "size", a({}, u, {
  7264. get: function() {
  7265. return S
  7266. },
  7267. set: function(e) {
  7268. if (e < 0 || e > 100) throw new Error("Size must be between 0 and 100.");
  7269. S = e, this.hasBeenReset = !0
  7270. }
  7271. })), Object.defineProperty(s, "align", a({}, u, {
  7272. get: function() {
  7273. return b
  7274. },
  7275. set: function(e) {
  7276. var t = i(e);
  7277. if (!t) throw new SyntaxError("An invalid or illegal string was specified.");
  7278. b = t, this.hasBeenReset = !0
  7279. }
  7280. })), s.displayState = void 0, l) return s
  7281. }
  7282. return n.prototype.getCueAsHTML = function() {
  7283. return window.WebVTT.convertCueToDOMTree(window, this.text)
  7284. }, n
  7285. }()
  7286. }, function(e, t, r) {
  7287. "use strict";
  7288. (function(e) {
  7289. var i = this && this.__extends || function() {
  7290. var e = Object.setPrototypeOf || {
  7291. __proto__: []
  7292. }
  7293. instanceof Array && function(e, t) {
  7294. e.__proto__ = t
  7295. } || function(e, t) {
  7296. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  7297. };
  7298. return function(t, r) {
  7299. function i() {
  7300. this.constructor = t
  7301. }
  7302. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  7303. }
  7304. }();
  7305. Object.defineProperty(t, "__esModule", {
  7306. value: !0
  7307. });
  7308. var a = r(1),
  7309. n = r(4),
  7310. o = r(71),
  7311. s = r(72),
  7312. l = r(73),
  7313. u = r(0),
  7314. d = r(29);
  7315.  
  7316. function f(e, t) {
  7317. return e && e.label === t.name && !(e.textTrack1 || e.textTrack2)
  7318. }
  7319.  
  7320. function c(e, t, r, i) {
  7321. return Math.min(t, i) - Math.max(e, r)
  7322. }
  7323. var h = function(t) {
  7324. function r(e) {
  7325. var r = t.call(this, e, a.default.MEDIA_ATTACHING, a.default.MEDIA_DETACHING, a.default.FRAG_PARSING_USERDATA, a.default.FRAG_DECRYPTED, a.default.MANIFEST_LOADING, a.default.MANIFEST_LOADED, a.default.FRAG_LOADED, a.default.LEVEL_SWITCHING, a.default.INIT_PTS_FOUND) || this;
  7326. if (r.hls = e, r.config = e.config, r.enabled = !0, r.Cues = e.config.cueHandler, r.textTracks = [], r.tracks = [], r.unparsedVttFrags = [], r.initPTS = [], r.cueRanges = [], r.captionsTracks = {}, r.captionsProperties = {
  7327. textTrack1: {
  7328. label: r.config.captionsTextTrack1Label,
  7329. languageCode: r.config.captionsTextTrack1LanguageCode
  7330. },
  7331. textTrack2: {
  7332. label: r.config.captionsTextTrack2Label,
  7333. languageCode: r.config.captionsTextTrack2LanguageCode
  7334. }
  7335. }, r.config.enableCEA708Captions) {
  7336. var i = new s.default(r, "textTrack1"),
  7337. n = new s.default(r, "textTrack2");
  7338. r.cea608Parser = new o.default(0, i, n)
  7339. }
  7340. return r
  7341. }
  7342. return i(r, t), r.prototype.addCues = function(e, t, r, i) {
  7343. for (var a = this.cueRanges, n = !1, o = a.length; o--;) {
  7344. var s = a[o],
  7345. l = c(s[0], s[1], t, r);
  7346. if (l >= 0 && (s[0] = Math.min(s[0], t), s[1] = Math.max(s[1], r), n = !0, l / (r - t) > .5)) return
  7347. }
  7348. n || a.push([t, r]), this.Cues.newCue(this.captionsTracks[e], t, r, i)
  7349. }, r.prototype.onInitPtsFound = function(e) {
  7350. var t = this;
  7351. if ("main" === e.id && (this.initPTS[e.frag.cc] = e.initPTS), this.unparsedVttFrags.length) {
  7352. var r = this.unparsedVttFrags;
  7353. this.unparsedVttFrags = [], r.forEach(function(e) {
  7354. t.onFragLoaded(e)
  7355. })
  7356. }
  7357. }, r.prototype.getExistingTrack = function(e) {
  7358. var t = this.media;
  7359. if (t)
  7360. for (var r = 0; r < t.textTracks.length; r++) {
  7361. var i = t.textTracks[r];
  7362. if (i[e]) return i
  7363. }
  7364. return null
  7365. }, r.prototype.createCaptionsTrack = function(e) {
  7366. var t = this.captionsProperties[e],
  7367. r = t.label,
  7368. i = t.languageCode,
  7369. a = this.captionsTracks;
  7370. if (!a[e]) {
  7371. var n = this.getExistingTrack(e);
  7372. if (n) a[e] = n, d.clearCurrentCues(a[e]), d.sendAddTrackEvent(a[e], this.media);
  7373. else {
  7374. var o = this.createTextTrack("captions", r, i);
  7375. o && (o[e] = !0, a[e] = o)
  7376. }
  7377. }
  7378. }, r.prototype.createTextTrack = function(e, t, r) {
  7379. var i = this.media;
  7380. if (i) return i.addTextTrack(e, t, r)
  7381. }, r.prototype.destroy = function() {
  7382. n.default.prototype.destroy.call(this)
  7383. }, r.prototype.onMediaAttaching = function(e) {
  7384. this.media = e.media, this._cleanTracks()
  7385. }, r.prototype.onMediaDetaching = function() {
  7386. var e = this.captionsTracks;
  7387. Object.keys(e).forEach(function(t) {
  7388. d.clearCurrentCues(e[t]), delete e[t]
  7389. })
  7390. }, r.prototype.onManifestLoading = function() {
  7391. this.lastSn = -1, this.prevCC = -1, this.vttCCs = {
  7392. ccOffset: 0,
  7393. presentationOffset: 0,
  7394. 0: {
  7395. start: 0,
  7396. prevCC: -1,
  7397. new: !1
  7398. }
  7399. }, this._cleanTracks()
  7400. }, r.prototype._cleanTracks = function() {
  7401. var e = this.media;
  7402. if (e) {
  7403. var t = e.textTracks;
  7404. if (t)
  7405. for (var r = 0; r < t.length; r++) d.clearCurrentCues(t[r])
  7406. }
  7407. }, r.prototype.onManifestLoaded = function(e) {
  7408. var t = this;
  7409. if (this.textTracks = [], this.unparsedVttFrags = this.unparsedVttFrags || [], this.initPTS = [], this.cueRanges = [], this.config.enableWebVTT) {
  7410. this.tracks = e.subtitles || [];
  7411. var r = this.media ? this.media.textTracks : [];
  7412. this.tracks.forEach(function(e, i) {
  7413. var a;
  7414. if (i < r.length) {
  7415. for (var n = null, o = 0; o < r.length; o++)
  7416. if (f(r[o], e)) {
  7417. n = r[o];
  7418. break
  7419. } n && (a = n)
  7420. }
  7421. a || (a = t.createTextTrack("subtitles", e.name, e.lang)), e.default ? a.mode = t.hls.subtitleDisplay ? "showing" : "hidden" : a.mode = "disabled", t.textTracks.push(a)
  7422. })
  7423. }
  7424. }, r.prototype.onLevelSwitching = function() {
  7425. this.enabled = "NONE" !== this.hls.currentLevel.closedCaptions
  7426. }, r.prototype.onFragLoaded = function(t) {
  7427. var r = t.frag,
  7428. i = t.payload;
  7429. if ("main" === r.type) {
  7430. var n = r.sn;
  7431. if (n !== this.lastSn + 1) {
  7432. var o = this.cea608Parser;
  7433. o && o.reset()
  7434. }
  7435. this.lastSn = n
  7436. } else if ("subtitle" === r.type)
  7437. if (i.byteLength) {
  7438. if (!e.isFinite(this.initPTS[r.cc])) return this.unparsedVttFrags.push(t), void(this.initPTS.length && this.hls.trigger(a.default.SUBTITLE_FRAG_PROCESSED, {
  7439. success: !1,
  7440. frag: r
  7441. }));
  7442. var s = r.decryptdata;
  7443. null != s && null != s.key && "AES-128" === s.method || this._parseVTTs(r, i)
  7444. } else this.hls.trigger(a.default.SUBTITLE_FRAG_PROCESSED, {
  7445. success: !1,
  7446. frag: r
  7447. })
  7448. }, r.prototype._parseVTTs = function(e, t) {
  7449. var r = this.vttCCs;
  7450. r[e.cc] || (r[e.cc] = {
  7451. start: e.start,
  7452. prevCC: this.prevCC,
  7453. new: !0
  7454. }, this.prevCC = e.cc);
  7455. var i = this.textTracks,
  7456. n = this.hls;
  7457. l.default.parse(t, this.initPTS[e.cc], r, e.cc, function(t) {
  7458. var r = i[e.level];
  7459. "disabled" !== r.mode ? (t.forEach(function(e) {
  7460. if (!r.cues.getCueById(e.id)) try {
  7461. r.addCue(e)
  7462. } catch (i) {
  7463. var t = new window.TextTrackCue(e.startTime, e.endTime, e.text);
  7464. t.id = e.id, r.addCue(t)
  7465. }
  7466. }), n.trigger(a.default.SUBTITLE_FRAG_PROCESSED, {
  7467. success: !0,
  7468. frag: e
  7469. })) : n.trigger(a.default.SUBTITLE_FRAG_PROCESSED, {
  7470. success: !1,
  7471. frag: e
  7472. })
  7473. }, function(t) {
  7474. u.logger.log("Failed to parse VTT cue: " + t), n.trigger(a.default.SUBTITLE_FRAG_PROCESSED, {
  7475. success: !1,
  7476. frag: e
  7477. })
  7478. })
  7479. }, r.prototype.onFragDecrypted = function(t) {
  7480. var r = t.payload,
  7481. i = t.frag;
  7482. if ("subtitle" === i.type) {
  7483. if (!e.isFinite(this.initPTS[i.cc])) return void this.unparsedVttFrags.push(t);
  7484. this._parseVTTs(i, r)
  7485. }
  7486. }, r.prototype.onFragParsingUserdata = function(e) {
  7487. if (this.enabled && this.config.enableCEA708Captions)
  7488. for (var t = 0; t < e.samples.length; t++) {
  7489. var r = this.extractCea608Data(e.samples[t].bytes);
  7490. this.cea608Parser.addData(e.samples[t].pts, r)
  7491. }
  7492. }, r.prototype.extractCea608Data = function(e) {
  7493. for (var t, r, i, a = 31 & e[0], n = 2, o = [], s = 0; s < a; s++) t = e[n++], r = 127 & e[n++], i = 127 & e[n++], 0 === r && 0 === i || 0 != (4 & t) && 0 === (3 & t) && (o.push(r), o.push(i));
  7494. return o
  7495. }, r
  7496. }(n.default);
  7497. t.default = h
  7498. }).call(this, r(2).Number)
  7499. }, function(e, t, r) {
  7500. "use strict";
  7501. Object.defineProperty(t, "__esModule", {
  7502. value: !0
  7503. });
  7504. var i = {
  7505. 42: 225,
  7506. 92: 233,
  7507. 94: 237,
  7508. 95: 243,
  7509. 96: 250,
  7510. 123: 231,
  7511. 124: 247,
  7512. 125: 209,
  7513. 126: 241,
  7514. 127: 9608,
  7515. 128: 174,
  7516. 129: 176,
  7517. 130: 189,
  7518. 131: 191,
  7519. 132: 8482,
  7520. 133: 162,
  7521. 134: 163,
  7522. 135: 9834,
  7523. 136: 224,
  7524. 137: 32,
  7525. 138: 232,
  7526. 139: 226,
  7527. 140: 234,
  7528. 141: 238,
  7529. 142: 244,
  7530. 143: 251,
  7531. 144: 193,
  7532. 145: 201,
  7533. 146: 211,
  7534. 147: 218,
  7535. 148: 220,
  7536. 149: 252,
  7537. 150: 8216,
  7538. 151: 161,
  7539. 152: 42,
  7540. 153: 8217,
  7541. 154: 9473,
  7542. 155: 169,
  7543. 156: 8480,
  7544. 157: 8226,
  7545. 158: 8220,
  7546. 159: 8221,
  7547. 160: 192,
  7548. 161: 194,
  7549. 162: 199,
  7550. 163: 200,
  7551. 164: 202,
  7552. 165: 203,
  7553. 166: 235,
  7554. 167: 206,
  7555. 168: 207,
  7556. 169: 239,
  7557. 170: 212,
  7558. 171: 217,
  7559. 172: 249,
  7560. 173: 219,
  7561. 174: 171,
  7562. 175: 187,
  7563. 176: 195,
  7564. 177: 227,
  7565. 178: 205,
  7566. 179: 204,
  7567. 180: 236,
  7568. 181: 210,
  7569. 182: 242,
  7570. 183: 213,
  7571. 184: 245,
  7572. 185: 123,
  7573. 186: 125,
  7574. 187: 92,
  7575. 188: 94,
  7576. 189: 95,
  7577. 190: 124,
  7578. 191: 8764,
  7579. 192: 196,
  7580. 193: 228,
  7581. 194: 214,
  7582. 195: 246,
  7583. 196: 223,
  7584. 197: 165,
  7585. 198: 164,
  7586. 199: 9475,
  7587. 200: 197,
  7588. 201: 229,
  7589. 202: 216,
  7590. 203: 248,
  7591. 204: 9487,
  7592. 205: 9491,
  7593. 206: 9495,
  7594. 207: 9499
  7595. },
  7596. a = function(e) {
  7597. var t = e;
  7598. return i.hasOwnProperty(e) && (t = i[e]), String.fromCharCode(t)
  7599. },
  7600. n = 15,
  7601. o = 100,
  7602. s = {
  7603. 17: 1,
  7604. 18: 3,
  7605. 21: 5,
  7606. 22: 7,
  7607. 23: 9,
  7608. 16: 11,
  7609. 19: 12,
  7610. 20: 14
  7611. },
  7612. l = {
  7613. 17: 2,
  7614. 18: 4,
  7615. 21: 6,
  7616. 22: 8,
  7617. 23: 10,
  7618. 19: 13,
  7619. 20: 15
  7620. },
  7621. u = {
  7622. 25: 1,
  7623. 26: 3,
  7624. 29: 5,
  7625. 30: 7,
  7626. 31: 9,
  7627. 24: 11,
  7628. 27: 12,
  7629. 28: 14
  7630. },
  7631. d = {
  7632. 25: 2,
  7633. 26: 4,
  7634. 29: 6,
  7635. 30: 8,
  7636. 31: 10,
  7637. 27: 13,
  7638. 28: 15
  7639. },
  7640. f = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "black", "transparent"],
  7641. c = {
  7642. verboseFilter: {
  7643. DATA: 3,
  7644. DEBUG: 3,
  7645. INFO: 2,
  7646. WARNING: 2,
  7647. TEXT: 1,
  7648. ERROR: 0
  7649. },
  7650. time: null,
  7651. verboseLevel: 0,
  7652. setTime: function(e) {
  7653. this.time = e
  7654. },
  7655. log: function(e, t) {
  7656. this.verboseFilter[e];
  7657. this.verboseLevel
  7658. }
  7659. },
  7660. h = function(e) {
  7661. for (var t = [], r = 0; r < e.length; r++) t.push(e[r].toString(16));
  7662. return t
  7663. },
  7664. p = function() {
  7665. function e(e, t, r, i, a) {
  7666. this.foreground = e || "white", this.underline = t || !1, this.italics = r || !1, this.background = i || "black", this.flash = a || !1
  7667. }
  7668. return e.prototype.reset = function() {
  7669. this.foreground = "white", this.underline = !1, this.italics = !1, this.background = "black", this.flash = !1
  7670. }, e.prototype.setStyles = function(e) {
  7671. for (var t = ["foreground", "underline", "italics", "background", "flash"], r = 0; r < t.length; r++) {
  7672. var i = t[r];
  7673. e.hasOwnProperty(i) && (this[i] = e[i])
  7674. }
  7675. }, e.prototype.isDefault = function() {
  7676. return "white" === this.foreground && !this.underline && !this.italics && "black" === this.background && !this.flash
  7677. }, e.prototype.equals = function(e) {
  7678. return this.foreground === e.foreground && this.underline === e.underline && this.italics === e.italics && this.background === e.background && this.flash === e.flash
  7679. }, e.prototype.copy = function(e) {
  7680. this.foreground = e.foreground, this.underline = e.underline, this.italics = e.italics, this.background = e.background, this.flash = e.flash
  7681. }, e.prototype.toString = function() {
  7682. return "color=" + this.foreground + ", underline=" + this.underline + ", italics=" + this.italics + ", background=" + this.background + ", flash=" + this.flash
  7683. }, e
  7684. }(),
  7685. g = function() {
  7686. function e(e, t, r, i, a, n) {
  7687. this.uchar = e || " ", this.penState = new p(t, r, i, a, n)
  7688. }
  7689. return e.prototype.reset = function() {
  7690. this.uchar = " ", this.penState.reset()
  7691. }, e.prototype.setChar = function(e, t) {
  7692. this.uchar = e, this.penState.copy(t)
  7693. }, e.prototype.setPenState = function(e) {
  7694. this.penState.copy(e)
  7695. }, e.prototype.equals = function(e) {
  7696. return this.uchar === e.uchar && this.penState.equals(e.penState)
  7697. }, e.prototype.copy = function(e) {
  7698. this.uchar = e.uchar, this.penState.copy(e.penState)
  7699. }, e.prototype.isEmpty = function() {
  7700. return " " === this.uchar && this.penState.isDefault()
  7701. }, e
  7702. }(),
  7703. v = function() {
  7704. function e() {
  7705. this.chars = [];
  7706. for (var e = 0; e < o; e++) this.chars.push(new g);
  7707. this.pos = 0, this.currPenState = new p
  7708. }
  7709. return e.prototype.equals = function(e) {
  7710. for (var t = !0, r = 0; r < o; r++)
  7711. if (!this.chars[r].equals(e.chars[r])) {
  7712. t = !1;
  7713. break
  7714. } return t
  7715. }, e.prototype.copy = function(e) {
  7716. for (var t = 0; t < o; t++) this.chars[t].copy(e.chars[t])
  7717. }, e.prototype.isEmpty = function() {
  7718. for (var e = !0, t = 0; t < o; t++)
  7719. if (!this.chars[t].isEmpty()) {
  7720. e = !1;
  7721. break
  7722. } return e
  7723. }, e.prototype.setCursor = function(e) {
  7724. this.pos !== e && (this.pos = e), this.pos < 0 ? (c.log("ERROR", "Negative cursor position " + this.pos), this.pos = 0) : this.pos > o && (c.log("ERROR", "Too large cursor position " + this.pos), this.pos = o)
  7725. }, e.prototype.moveCursor = function(e) {
  7726. var t = this.pos + e;
  7727. if (e > 1)
  7728. for (var r = this.pos + 1; r < t + 1; r++) this.chars[r].setPenState(this.currPenState);
  7729. this.setCursor(t)
  7730. }, e.prototype.backSpace = function() {
  7731. this.moveCursor(-1), this.chars[this.pos].setChar(" ", this.currPenState)
  7732. }, e.prototype.insertChar = function(e) {
  7733. e >= 144 && this.backSpace();
  7734. var t = a(e);
  7735. this.pos >= o ? c.log("ERROR", "Cannot insert " + e.toString(16) + " (" + t + ") at position " + this.pos + ". Skipping it!") : (this.chars[this.pos].setChar(t, this.currPenState), this.moveCursor(1))
  7736. }, e.prototype.clearFromPos = function(e) {
  7737. var t;
  7738. for (t = e; t < o; t++) this.chars[t].reset()
  7739. }, e.prototype.clear = function() {
  7740. this.clearFromPos(0), this.pos = 0, this.currPenState.reset()
  7741. }, e.prototype.clearToEndOfRow = function() {
  7742. this.clearFromPos(this.pos)
  7743. }, e.prototype.getTextString = function() {
  7744. for (var e = [], t = !0, r = 0; r < o; r++) {
  7745. var i = this.chars[r].uchar;
  7746. " " !== i && (t = !1), e.push(i)
  7747. }
  7748. return t ? "" : e.join("")
  7749. }, e.prototype.setPenStyles = function(e) {
  7750. this.currPenState.setStyles(e), this.chars[this.pos].setPenState(this.currPenState)
  7751. }, e
  7752. }(),
  7753. y = function() {
  7754. function e() {
  7755. this.rows = [];
  7756. for (var e = 0; e < n; e++) this.rows.push(new v);
  7757. this.currRow = n - 1, this.nrRollUpRows = null, this.reset()
  7758. }
  7759. return e.prototype.reset = function() {
  7760. for (var e = 0; e < n; e++) this.rows[e].clear();
  7761. this.currRow = n - 1
  7762. }, e.prototype.equals = function(e) {
  7763. for (var t = !0, r = 0; r < n; r++)
  7764. if (!this.rows[r].equals(e.rows[r])) {
  7765. t = !1;
  7766. break
  7767. } return t
  7768. }, e.prototype.copy = function(e) {
  7769. for (var t = 0; t < n; t++) this.rows[t].copy(e.rows[t])
  7770. }, e.prototype.isEmpty = function() {
  7771. for (var e = !0, t = 0; t < n; t++)
  7772. if (!this.rows[t].isEmpty()) {
  7773. e = !1;
  7774. break
  7775. } return e
  7776. }, e.prototype.backSpace = function() {
  7777. this.rows[this.currRow].backSpace()
  7778. }, e.prototype.clearToEndOfRow = function() {
  7779. this.rows[this.currRow].clearToEndOfRow()
  7780. }, e.prototype.insertChar = function(e) {
  7781. this.rows[this.currRow].insertChar(e)
  7782. }, e.prototype.setPen = function(e) {
  7783. this.rows[this.currRow].setPenStyles(e)
  7784. }, e.prototype.moveCursor = function(e) {
  7785. this.rows[this.currRow].moveCursor(e)
  7786. }, e.prototype.setCursor = function(e) {
  7787. c.log("INFO", "setCursor: " + e), this.rows[this.currRow].setCursor(e)
  7788. }, e.prototype.setPAC = function(e) {
  7789. c.log("INFO", "pacData = " + JSON.stringify(e));
  7790. var t = e.row - 1;
  7791. if (this.nrRollUpRows && t < this.nrRollUpRows - 1 && (t = this.nrRollUpRows - 1), this.nrRollUpRows && this.currRow !== t) {
  7792. for (var r = 0; r < n; r++) this.rows[r].clear();
  7793. var i = this.currRow + 1 - this.nrRollUpRows,
  7794. a = this.lastOutputScreen;
  7795. if (a) {
  7796. var o = a.rows[i].cueStartTime;
  7797. if (o && o < c.time)
  7798. for (r = 0; r < this.nrRollUpRows; r++) this.rows[t - this.nrRollUpRows + r + 1].copy(a.rows[i + r])
  7799. }
  7800. }
  7801. this.currRow = t;
  7802. var s = this.rows[this.currRow];
  7803. if (null !== e.indent) {
  7804. var l = e.indent,
  7805. u = Math.max(l - 1, 0);
  7806. s.setCursor(e.indent), e.color = s.chars[u].penState.foreground
  7807. }
  7808. var d = {
  7809. foreground: e.color,
  7810. underline: e.underline,
  7811. italics: e.italics,
  7812. background: "black",
  7813. flash: !1
  7814. };
  7815. this.setPen(d)
  7816. }, e.prototype.setBkgData = function(e) {
  7817. c.log("INFO", "bkgData = " + JSON.stringify(e)), this.backSpace(), this.setPen(e), this.insertChar(32)
  7818. }, e.prototype.setRollUpRows = function(e) {
  7819. this.nrRollUpRows = e
  7820. }, e.prototype.rollUp = function() {
  7821. if (null !== this.nrRollUpRows) {
  7822. c.log("TEXT", this.getDisplayText());
  7823. var e = this.currRow + 1 - this.nrRollUpRows,
  7824. t = this.rows.splice(e, 1)[0];
  7825. t.clear(), this.rows.splice(this.currRow, 0, t), c.log("INFO", "Rolling up")
  7826. } else c.log("DEBUG", "roll_up but nrRollUpRows not set yet")
  7827. }, e.prototype.getDisplayText = function(e) {
  7828. e = e || !1;
  7829. for (var t = [], r = "", i = -1, a = 0; a < n; a++) {
  7830. var o = this.rows[a].getTextString();
  7831. o && (i = a + 1, e ? t.push("Row " + i + ": '" + o + "'") : t.push(o.trim()))
  7832. }
  7833. return t.length > 0 && (r = e ? "[" + t.join(" | ") + "]" : t.join("\n")), r
  7834. }, e.prototype.getTextAndFormat = function() {
  7835. return this.rows
  7836. }, e
  7837. }(),
  7838. m = function() {
  7839. function e(e, t) {
  7840. this.chNr = e, this.outputFilter = t, this.mode = null, this.verbose = 0, this.displayedMemory = new y, this.nonDisplayedMemory = new y, this.lastOutputScreen = new y, this.currRollUpRow = this.displayedMemory.rows[n - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null
  7841. }
  7842. return e.prototype.reset = function() {
  7843. this.mode = null, this.displayedMemory.reset(), this.nonDisplayedMemory.reset(), this.lastOutputScreen.reset(), this.currRollUpRow = this.displayedMemory.rows[n - 1], this.writeScreen = this.displayedMemory, this.mode = null, this.cueStartTime = null, this.lastCueEndTime = null
  7844. }, e.prototype.getHandler = function() {
  7845. return this.outputFilter
  7846. }, e.prototype.setHandler = function(e) {
  7847. this.outputFilter = e
  7848. }, e.prototype.setPAC = function(e) {
  7849. this.writeScreen.setPAC(e)
  7850. }, e.prototype.setBkgData = function(e) {
  7851. this.writeScreen.setBkgData(e)
  7852. }, e.prototype.setMode = function(e) {
  7853. e !== this.mode && (this.mode = e, c.log("INFO", "MODE=" + e), "MODE_POP-ON" === this.mode ? this.writeScreen = this.nonDisplayedMemory : (this.writeScreen = this.displayedMemory, this.writeScreen.reset()), "MODE_ROLL-UP" !== this.mode && (this.displayedMemory.nrRollUpRows = null, this.nonDisplayedMemory.nrRollUpRows = null), this.mode = e)
  7854. }, e.prototype.insertChars = function(e) {
  7855. for (var t = 0; t < e.length; t++) this.writeScreen.insertChar(e[t]);
  7856. var r = this.writeScreen === this.displayedMemory ? "DISP" : "NON_DISP";
  7857. c.log("INFO", r + ": " + this.writeScreen.getDisplayText(!0)), "MODE_PAINT-ON" !== this.mode && "MODE_ROLL-UP" !== this.mode || (c.log("TEXT", "DISPLAYED: " + this.displayedMemory.getDisplayText(!0)), this.outputDataUpdate())
  7858. }, e.prototype.ccRCL = function() {
  7859. c.log("INFO", "RCL - Resume Caption Loading"), this.setMode("MODE_POP-ON")
  7860. }, e.prototype.ccBS = function() {
  7861. c.log("INFO", "BS - BackSpace"), "MODE_TEXT" !== this.mode && (this.writeScreen.backSpace(), this.writeScreen === this.displayedMemory && this.outputDataUpdate())
  7862. }, e.prototype.ccAOF = function() {}, e.prototype.ccAON = function() {}, e.prototype.ccDER = function() {
  7863. c.log("INFO", "DER- Delete to End of Row"), this.writeScreen.clearToEndOfRow(), this.outputDataUpdate()
  7864. }, e.prototype.ccRU = function(e) {
  7865. c.log("INFO", "RU(" + e + ") - Roll Up"), this.writeScreen = this.displayedMemory, this.setMode("MODE_ROLL-UP"), this.writeScreen.setRollUpRows(e)
  7866. }, e.prototype.ccFON = function() {
  7867. c.log("INFO", "FON - Flash On"), this.writeScreen.setPen({
  7868. flash: !0
  7869. })
  7870. }, e.prototype.ccRDC = function() {
  7871. c.log("INFO", "RDC - Resume Direct Captioning"), this.setMode("MODE_PAINT-ON")
  7872. }, e.prototype.ccTR = function() {
  7873. c.log("INFO", "TR"), this.setMode("MODE_TEXT")
  7874. }, e.prototype.ccRTD = function() {
  7875. c.log("INFO", "RTD"), this.setMode("MODE_TEXT")
  7876. }, e.prototype.ccEDM = function() {
  7877. c.log("INFO", "EDM - Erase Displayed Memory"), this.displayedMemory.reset(), this.outputDataUpdate(!0)
  7878. }, e.prototype.ccCR = function() {
  7879. c.log("CR - Carriage Return"), this.writeScreen.rollUp(), this.outputDataUpdate(!0)
  7880. }, e.prototype.ccENM = function() {
  7881. c.log("INFO", "ENM - Erase Non-displayed Memory"), this.nonDisplayedMemory.reset()
  7882. }, e.prototype.ccEOC = function() {
  7883. if (c.log("INFO", "EOC - End Of Caption"), "MODE_POP-ON" === this.mode) {
  7884. var e = this.displayedMemory;
  7885. this.displayedMemory = this.nonDisplayedMemory, this.nonDisplayedMemory = e, this.writeScreen = this.nonDisplayedMemory, c.log("TEXT", "DISP: " + this.displayedMemory.getDisplayText())
  7886. }
  7887. this.outputDataUpdate(!0)
  7888. }, e.prototype.ccTO = function(e) {
  7889. c.log("INFO", "TO(" + e + ") - Tab Offset"), this.writeScreen.moveCursor(e)
  7890. }, e.prototype.ccMIDROW = function(e) {
  7891. var t = {
  7892. flash: !1
  7893. };
  7894. if (t.underline = e % 2 == 1, t.italics = e >= 46, t.italics) t.foreground = "white";
  7895. else {
  7896. var r = Math.floor(e / 2) - 16;
  7897. t.foreground = ["white", "green", "blue", "cyan", "red", "yellow", "magenta"][r]
  7898. }
  7899. c.log("INFO", "MIDROW: " + JSON.stringify(t)), this.writeScreen.setPen(t)
  7900. }, e.prototype.outputDataUpdate = function(e) {
  7901. void 0 === e && (e = !1);
  7902. var t = c.time;
  7903. null !== t && this.outputFilter && (null !== this.cueStartTime || this.displayedMemory.isEmpty() ? this.displayedMemory.equals(this.lastOutputScreen) || (this.outputFilter.newCue && (this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen), !0 === e && this.outputFilter.dispatchCue && this.outputFilter.dispatchCue()), this.cueStartTime = this.displayedMemory.isEmpty() ? null : t) : this.cueStartTime = t, this.lastOutputScreen.copy(this.displayedMemory))
  7904. }, e.prototype.cueSplitAtTime = function(e) {
  7905. this.outputFilter && (this.displayedMemory.isEmpty() || (this.outputFilter.newCue && this.outputFilter.newCue(this.cueStartTime, e, this.displayedMemory), this.cueStartTime = e))
  7906. }, e
  7907. }(),
  7908. E = function() {
  7909. function e(e, t, r) {
  7910. this.field = e || 1, this.outputs = [t, r], this.channels = [new m(1, t), new m(2, r)], this.currChNr = -1, this.lastCmdA = null, this.lastCmdB = null, this.bufferedData = [], this.startTime = null, this.lastTime = null, this.dataCounters = {
  7911. padding: 0,
  7912. char: 0,
  7913. cmd: 0,
  7914. other: 0
  7915. }
  7916. }
  7917. return e.prototype.getHandler = function(e) {
  7918. return this.channels[e].getHandler()
  7919. }, e.prototype.setHandler = function(e, t) {
  7920. this.channels[e].setHandler(t)
  7921. }, e.prototype.addData = function(e, t) {
  7922. var r, i, a, n = !1;
  7923. this.lastTime = e, c.setTime(e);
  7924. for (var o = 0; o < t.length; o += 2)
  7925. if (i = 127 & t[o], a = 127 & t[o + 1], 0 !== i || 0 !== a) {
  7926. if (c.log("DATA", "[" + h([t[o], t[o + 1]]) + "] -> (" + h([i, a]) + ")"), (r = this.parseCmd(i, a)) || (r = this.parseMidrow(i, a)), r || (r = this.parsePAC(i, a)), r || (r = this.parseBackgroundAttributes(i, a)), !r)
  7927. if (n = this.parseChars(i, a))
  7928. if (this.currChNr && this.currChNr >= 0) this.channels[this.currChNr - 1].insertChars(n);
  7929. else c.log("WARNING", "No channel found yet. TEXT-MODE?");
  7930. r ? this.dataCounters.cmd += 2 : n ? this.dataCounters.char += 2 : (this.dataCounters.other += 2, c.log("WARNING", "Couldn't parse cleaned data " + h([i, a]) + " orig: " + h([t[o], t[o + 1]])))
  7931. } else this.dataCounters.padding += 2
  7932. }, e.prototype.parseCmd = function(e, t) {
  7933. var r = null;
  7934. if (!((20 === e || 28 === e) && t >= 32 && t <= 47) && !((23 === e || 31 === e) && t >= 33 && t <= 35)) return !1;
  7935. if (e === this.lastCmdA && t === this.lastCmdB) return this.lastCmdA = null, this.lastCmdB = null, c.log("DEBUG", "Repeated command (" + h([e, t]) + ") is dropped"), !0;
  7936. r = 20 === e || 23 === e ? 1 : 2;
  7937. var i = this.channels[r - 1];
  7938. return 20 === e || 28 === e ? 32 === t ? i.ccRCL() : 33 === t ? i.ccBS() : 34 === t ? i.ccAOF() : 35 === t ? i.ccAON() : 36 === t ? i.ccDER() : 37 === t ? i.ccRU(2) : 38 === t ? i.ccRU(3) : 39 === t ? i.ccRU(4) : 40 === t ? i.ccFON() : 41 === t ? i.ccRDC() : 42 === t ? i.ccTR() : 43 === t ? i.ccRTD() : 44 === t ? i.ccEDM() : 45 === t ? i.ccCR() : 46 === t ? i.ccENM() : 47 === t && i.ccEOC() : i.ccTO(t - 32), this.lastCmdA = e, this.lastCmdB = t, this.currChNr = r, !0
  7939. }, e.prototype.parseMidrow = function(e, t) {
  7940. var r = null;
  7941. return (17 === e || 25 === e) && t >= 32 && t <= 47 && ((r = 17 === e ? 1 : 2) !== this.currChNr ? (c.log("ERROR", "Mismatch channel in midrow parsing"), !1) : (this.channels[r - 1].ccMIDROW(t), c.log("DEBUG", "MIDROW (" + h([e, t]) + ")"), !0))
  7942. }, e.prototype.parsePAC = function(e, t) {
  7943. var r, i = null;
  7944. if (!((e >= 17 && e <= 23 || e >= 25 && e <= 31) && t >= 64 && t <= 127) && !((16 === e || 24 === e) && t >= 64 && t <= 95)) return !1;
  7945. if (e === this.lastCmdA && t === this.lastCmdB) return this.lastCmdA = null, this.lastCmdB = null, !0;
  7946. r = e <= 23 ? 1 : 2, i = t >= 64 && t <= 95 ? 1 === r ? s[e] : u[e] : 1 === r ? l[e] : d[e];
  7947. var a = this.interpretPAC(i, t);
  7948. return this.channels[r - 1].setPAC(a), this.lastCmdA = e, this.lastCmdB = t, this.currChNr = r, !0
  7949. }, e.prototype.interpretPAC = function(e, t) {
  7950. var r = t,
  7951. i = {
  7952. color: null,
  7953. italics: !1,
  7954. indent: null,
  7955. underline: !1,
  7956. row: e
  7957. };
  7958. return r = t > 95 ? t - 96 : t - 64, i.underline = 1 == (1 & r), r <= 13 ? i.color = ["white", "green", "blue", "cyan", "red", "yellow", "magenta", "white"][Math.floor(r / 2)] : r <= 15 ? (i.italics = !0, i.color = "white") : i.indent = 4 * Math.floor((r - 16) / 2), i
  7959. }, e.prototype.parseChars = function(e, t) {
  7960. var r = null,
  7961. i = null,
  7962. n = null;
  7963. if (e >= 25 ? (r = 2, n = e - 8) : (r = 1, n = e), n >= 17 && n <= 19) {
  7964. var o = t;
  7965. o = 17 === n ? t + 80 : 18 === n ? t + 112 : t + 144, c.log("INFO", "Special char '" + a(o) + "' in channel " + r), i = [o]
  7966. } else e >= 32 && e <= 127 && (i = 0 === t ? [e] : [e, t]);
  7967. if (i) {
  7968. var s = h(i);
  7969. c.log("DEBUG", "Char codes = " + s.join(",")), this.lastCmdA = null, this.lastCmdB = null
  7970. }
  7971. return i
  7972. }, e.prototype.parseBackgroundAttributes = function(e, t) {
  7973. var r, i, a;
  7974. return ((16 === e || 24 === e) && t >= 32 && t <= 47 || (23 === e || 31 === e) && t >= 45 && t <= 47) && (r = {}, 16 === e || 24 === e ? (i = Math.floor((t - 32) / 2), r.background = f[i], t % 2 == 1 && (r.background = r.background + "_semi")) : 45 === t ? r.background = "transparent" : (r.foreground = "black", 47 === t && (r.underline = !0)), a = e < 24 ? 1 : 2, this.channels[a - 1].setBkgData(r), this.lastCmdA = null, this.lastCmdB = null, !0)
  7975. }, e.prototype.reset = function() {
  7976. for (var e = 0; e < this.channels.length; e++) this.channels[e] && this.channels[e].reset();
  7977. this.lastCmdA = null, this.lastCmdB = null
  7978. }, e.prototype.cueSplitAtTime = function(e) {
  7979. for (var t = 0; t < this.channels.length; t++) this.channels[t] && this.channels[t].cueSplitAtTime(e)
  7980. }, e
  7981. }();
  7982. t.default = E
  7983. }, function(e, t, r) {
  7984. "use strict";
  7985. Object.defineProperty(t, "__esModule", {
  7986. value: !0
  7987. });
  7988. var i = function() {
  7989. function e(e, t) {
  7990. this.timelineController = e, this.trackName = t, this.startTime = null, this.endTime = null, this.screen = null
  7991. }
  7992. return e.prototype.dispatchCue = function() {
  7993. null !== this.startTime && (this.timelineController.addCues(this.trackName, this.startTime, this.endTime, this.screen), this.startTime = null)
  7994. }, e.prototype.newCue = function(e, t, r) {
  7995. (null === this.startTime || this.startTime > e) && (this.startTime = e), this.endTime = t, this.screen = r, this.timelineController.createCaptionsTrack(this.trackName)
  7996. }, e
  7997. }();
  7998. t.default = i
  7999. }, function(e, t, r) {
  8000. "use strict";
  8001. (function(e) {
  8002. Object.defineProperty(t, "__esModule", {
  8003. value: !0
  8004. });
  8005. var i = r(30),
  8006. a = r(11),
  8007. n = function(e, t, r) {
  8008. return e.substr(r || 0, t.length) === t
  8009. },
  8010. o = function(e) {
  8011. for (var t = 5381, r = e.length; r;) t = 33 * t ^ e.charCodeAt(--r);
  8012. return (t >>> 0).toString()
  8013. },
  8014. s = {
  8015. parse: function(t, r, s, l, u, d) {
  8016. var f, c = a.utf8ArrayToStr(new Uint8Array(t)).trim().replace(/\r\n|\n\r|\n|\r/g, "\n").split("\n"),
  8017. h = "00:00.000",
  8018. p = 0,
  8019. g = 0,
  8020. v = 0,
  8021. y = [],
  8022. m = !0,
  8023. E = new i.default;
  8024. E.oncue = function(e) {
  8025. var t = s[l],
  8026. r = s.ccOffset;
  8027. t && t.new && (void 0 !== g ? r = s.ccOffset = t.start : function(e, t, r) {
  8028. var i = e[t],
  8029. a = e[i.prevCC];
  8030. if (!a || !a.new && i.new) return e.ccOffset = e.presentationOffset = i.start, void(i.new = !1);
  8031. for (; a && a.new;) e.ccOffset += i.start - a.start, i.new = !1, a = e[(i = a).prevCC];
  8032. e.presentationOffset = r
  8033. }(s, l, v)), v && (r = v - s.presentationOffset), e.startTime += r - g, e.endTime += r - g, e.id = o(e.startTime.toString()) + o(e.endTime.toString()) + o(e.text), e.text = decodeURIComponent(encodeURIComponent(e.text)), e.endTime > 0 && y.push(e)
  8034. }, E.onparsingerror = function(e) {
  8035. f = e
  8036. }, E.onflush = function() {
  8037. f && d ? d(f) : u(y)
  8038. }, c.forEach(function(t) {
  8039. if (m) {
  8040. if (n(t, "X-TIMESTAMP-MAP=")) {
  8041. m = !1, t.substr(16).split(",").forEach(function(e) {
  8042. n(e, "LOCAL:") ? h = e.substr(6) : n(e, "MPEGTS:") && (p = parseInt(e.substr(7)))
  8043. });
  8044. try {
  8045. r + (9e4 * s[l].start || 0) < 0 && (r += 8589934592), p -= r, g = function(t) {
  8046. var r = parseInt(t.substr(-3)),
  8047. i = parseInt(t.substr(-6, 2)),
  8048. a = parseInt(t.substr(-9, 2)),
  8049. n = t.length > 9 ? parseInt(t.substr(0, t.indexOf(":"))) : 0;
  8050. return e.isFinite(r) && e.isFinite(i) && e.isFinite(a) && e.isFinite(n) ? (r += 1e3 * i, r += 6e4 * a, r += 36e5 * n) : -1
  8051. }(h) / 1e3, v = p / 9e4, -1 === g && (f = new Error("Malformed X-TIMESTAMP-MAP: " + t))
  8052. } catch (e) {
  8053. f = new Error("Malformed X-TIMESTAMP-MAP: " + t)
  8054. }
  8055. return
  8056. }
  8057. "" === t && (m = !1)
  8058. }
  8059. E.parse(t + "\n")
  8060. }), E.flush()
  8061. }
  8062. };
  8063. t.default = s
  8064. }).call(this, r(2).Number)
  8065. }, function(e, t, r) {
  8066. "use strict";
  8067. (function(e) {
  8068. var i = this && this.__extends || function() {
  8069. var e = Object.setPrototypeOf || {
  8070. __proto__: []
  8071. }
  8072. instanceof Array && function(e, t) {
  8073. e.__proto__ = t
  8074. } || function(e, t) {
  8075. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  8076. };
  8077. return function(t, r) {
  8078. function i() {
  8079. this.constructor = t
  8080. }
  8081. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  8082. }
  8083. }();
  8084. Object.defineProperty(t, "__esModule", {
  8085. value: !0
  8086. });
  8087. var a = r(1),
  8088. n = r(4),
  8089. o = r(0),
  8090. s = r(8),
  8091. l = function(t) {
  8092. function r(e) {
  8093. var r = t.call(this, e, a.default.MEDIA_ATTACHED, a.default.MEDIA_DETACHING, a.default.MANIFEST_LOADED, a.default.SUBTITLE_TRACK_LOADED) || this;
  8094. return r.tracks = [], r.trackId = -1, r.media = null, r.stopped = !0, r.subtitleDisplay = !0, r
  8095. }
  8096. return i(r, t), r.prototype.destroy = function() {
  8097. n.default.prototype.destroy.call(this)
  8098. }, r.prototype.onMediaAttached = function(e) {
  8099. var t = this;
  8100. this.media = e.media, this.media && (this.queuedDefaultTrack && (this.subtitleTrack = this.queuedDefaultTrack, delete this.queuedDefaultTrack), this.trackChangeListener = this._onTextTracksChanged.bind(this), this.useTextTrackPolling = !(this.media.textTracks && "onchange" in this.media.textTracks), this.useTextTrackPolling ? this.subtitlePollingInterval = setInterval(function() {
  8101. t.trackChangeListener()
  8102. }, 500) : this.media.textTracks.addEventListener("change", this.trackChangeListener))
  8103. }, r.prototype.onMediaDetaching = function() {
  8104. this.media && (this.useTextTrackPolling ? clearInterval(this.subtitlePollingInterval) : this.media.textTracks.removeEventListener("change", this.trackChangeListener), this.media = null)
  8105. }, r.prototype.onManifestLoaded = function(e) {
  8106. var t = this,
  8107. r = e.subtitles || [];
  8108. this.tracks = r, this.hls.trigger(a.default.SUBTITLE_TRACKS_UPDATED, {
  8109. subtitleTracks: r
  8110. }), r.forEach(function(e) {
  8111. e.default && (t.media ? t.subtitleTrack = e.id : t.queuedDefaultTrack = e.id)
  8112. })
  8113. }, r.prototype.onSubtitleTrackLoaded = function(e) {
  8114. var t = this,
  8115. r = e.id,
  8116. i = e.details,
  8117. a = this.trackId,
  8118. n = this.tracks,
  8119. l = n[a];
  8120. if (r >= n.length || r !== a || !l || this.stopped) this._clearReloadTimer();
  8121. else if (o.logger.log("subtitle track " + r + " loaded"), i.live) {
  8122. var u = s.computeReloadInterval(l.details, i, e.stats.trequest);
  8123. o.logger.log("Reloading live subtitle playlist in " + u + "ms"), this.timer = setTimeout(function() {
  8124. t._loadCurrentTrack()
  8125. }, u)
  8126. } else this._clearReloadTimer()
  8127. }, r.prototype.startLoad = function() {
  8128. this.stopped = !1, this._loadCurrentTrack()
  8129. }, r.prototype.stopLoad = function() {
  8130. this.stopped = !0, this._clearReloadTimer()
  8131. }, Object.defineProperty(r.prototype, "subtitleTracks", {
  8132. get: function() {
  8133. return this.tracks
  8134. },
  8135. enumerable: !0,
  8136. configurable: !0
  8137. }), Object.defineProperty(r.prototype, "subtitleTrack", {
  8138. get: function() {
  8139. return this.trackId
  8140. },
  8141. set: function(e) {
  8142. this.trackId !== e && (this._toggleTrackModes(e), this._setSubtitleTrackInternal(e))
  8143. },
  8144. enumerable: !0,
  8145. configurable: !0
  8146. }), r.prototype._clearReloadTimer = function() {
  8147. this.timer && (clearTimeout(this.timer), this.timer = null)
  8148. }, r.prototype._loadCurrentTrack = function() {
  8149. var e = this.trackId,
  8150. t = this.tracks,
  8151. r = this.hls,
  8152. i = t[e];
  8153. e < 0 || !i || i.details && !i.details.live || (o.logger.log("Loading subtitle track " + e), r.trigger(a.default.SUBTITLE_TRACK_LOADING, {
  8154. url: i.url,
  8155. id: e
  8156. }))
  8157. }, r.prototype._toggleTrackModes = function(e) {
  8158. var t = this.media,
  8159. r = this.subtitleDisplay,
  8160. i = this.trackId;
  8161. if (t) {
  8162. var a = u(t.textTracks);
  8163. if (-1 === e)[].slice.call(a).forEach(function(e) {
  8164. e.mode = "disabled"
  8165. });
  8166. else {
  8167. var n = a[i];
  8168. n && (n.mode = "disabled")
  8169. }
  8170. var o = a[e];
  8171. o && (o.mode = r ? "showing" : "hidden")
  8172. }
  8173. }, r.prototype._setSubtitleTrackInternal = function(t) {
  8174. var r = this.hls,
  8175. i = this.tracks;
  8176. !e.isFinite(t) || t < -1 || t >= i.length || (this.trackId = t, o.logger.log("Switching to subtitle track " + t), r.trigger(a.default.SUBTITLE_TRACK_SWITCH, {
  8177. id: t
  8178. }), this._loadCurrentTrack())
  8179. }, r.prototype._onTextTracksChanged = function() {
  8180. if (this.media) {
  8181. for (var e = -1, t = u(this.media.textTracks), r = 0; r < t.length; r++)
  8182. if ("hidden" === t[r].mode) e = r;
  8183. else if ("showing" === t[r].mode) {
  8184. e = r;
  8185. break
  8186. }
  8187. this.subtitleTrack = e
  8188. }
  8189. }, r
  8190. }(n.default);
  8191.  
  8192. function u(e) {
  8193. for (var t = [], r = 0; r < e.length; r++) {
  8194. var i = e[r];
  8195. "subtitles" === i.kind && i.label && t.push(e[r])
  8196. }
  8197. return t
  8198. }
  8199. t.default = l
  8200. }).call(this, r(2).Number)
  8201. }, function(e, t, r) {
  8202. "use strict";
  8203. var i = this && this.__extends || function() {
  8204. var e = Object.setPrototypeOf || {
  8205. __proto__: []
  8206. }
  8207. instanceof Array && function(e, t) {
  8208. e.__proto__ = t
  8209. } || function(e, t) {
  8210. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  8211. };
  8212. return function(t, r) {
  8213. function i() {
  8214. this.constructor = t
  8215. }
  8216. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  8217. }
  8218. }();
  8219. Object.defineProperty(t, "__esModule", {
  8220. value: !0
  8221. });
  8222. var a = r(1),
  8223. n = r(0),
  8224. o = r(13),
  8225. s = r(5),
  8226. l = r(27),
  8227. u = r(7),
  8228. d = r(15),
  8229. f = r(8),
  8230. c = window.performance,
  8231. h = function(e) {
  8232. function t(t, r) {
  8233. var i = e.call(this, t, a.default.MEDIA_ATTACHED, a.default.MEDIA_DETACHING, a.default.ERROR, a.default.KEY_LOADED, a.default.FRAG_LOADED, a.default.SUBTITLE_TRACKS_UPDATED, a.default.SUBTITLE_TRACK_SWITCH, a.default.SUBTITLE_TRACK_LOADED, a.default.SUBTITLE_FRAG_PROCESSED, a.default.LEVEL_UPDATED) || this;
  8234. return i.fragmentTracker = r, i.config = t.config, i.state = d.State.STOPPED, i.tracks = [], i.tracksBuffered = [], i.currentTrackId = -1, i.decrypter = new o.default(t, t.config), i.lastAVStart = 0, i._onMediaSeeking = i.onMediaSeeking.bind(i), i
  8235. }
  8236. return i(t, e), t.prototype.onSubtitleFragProcessed = function(e) {
  8237. var t = e.frag,
  8238. r = e.success;
  8239. if (this.fragPrevious = t, this.state = d.State.IDLE, r) {
  8240. var i = this.tracksBuffered[this.currentTrackId];
  8241. if (i) {
  8242. for (var a, n = t.start, o = 0; o < i.length; o++)
  8243. if (n >= i[o].start && n <= i[o].end) {
  8244. a = i[o];
  8245. break
  8246. } var s = t.start + t.duration;
  8247. a ? a.end = s : (a = {
  8248. start: n,
  8249. end: s
  8250. }, i.push(a))
  8251. }
  8252. }
  8253. }, t.prototype.onMediaAttached = function(e) {
  8254. var t = e.media;
  8255. this.media = t, t.addEventListener("seeking", this._onMediaSeeking), this.state = d.State.IDLE
  8256. }, t.prototype.onMediaDetaching = function() {
  8257. this.media.removeEventListener("seeking", this._onMediaSeeking), this.media = null, this.state = d.State.STOPPED
  8258. }, t.prototype.onError = function(e) {
  8259. var t = e.frag;
  8260. t && "subtitle" === t.type && (this.state = d.State.IDLE)
  8261. }, t.prototype.onSubtitleTracksUpdated = function(e) {
  8262. var t = this;
  8263. n.logger.log("subtitle tracks updated"), this.tracksBuffered = [], this.tracks = e.subtitleTracks, this.tracks.forEach(function(e) {
  8264. t.tracksBuffered[e.id] = []
  8265. })
  8266. }, t.prototype.onSubtitleTrackSwitch = function(e) {
  8267. if (this.currentTrackId = e.id, this.tracks && -1 !== this.currentTrackId) {
  8268. var t = this.tracks[this.currentTrackId];
  8269. t && t.details && this.setInterval(500)
  8270. } else this.clearInterval()
  8271. }, t.prototype.onSubtitleTrackLoaded = function(e) {
  8272. var t = e.id,
  8273. r = e.details,
  8274. i = this.currentTrackId,
  8275. a = this.tracks,
  8276. n = a[i];
  8277. t >= a.length || t !== i || !n || (r.live && f.mergeSubtitlePlaylists(n.details, r, this.lastAVStart), n.details = r, this.setInterval(500))
  8278. }, t.prototype.onKeyLoaded = function() {
  8279. this.state === d.State.KEY_LOADING && (this.state = d.State.IDLE)
  8280. }, t.prototype.onFragLoaded = function(e) {
  8281. var t = this.fragCurrent,
  8282. r = e.frag.decryptdata,
  8283. i = e.frag,
  8284. n = this.hls;
  8285. if (this.state === d.State.FRAG_LOADING && t && "subtitle" === e.frag.type && t.sn === e.frag.sn && e.payload.byteLength > 0 && r && r.key && "AES-128" === r.method) {
  8286. var o = c.now();
  8287. this.decrypter.decrypt(e.payload, r.key.buffer, r.iv.buffer, function(e) {
  8288. var t = c.now();
  8289. n.trigger(a.default.FRAG_DECRYPTED, {
  8290. frag: i,
  8291. payload: e,
  8292. stats: {
  8293. tstart: o,
  8294. tdecrypt: t
  8295. }
  8296. })
  8297. })
  8298. }
  8299. }, t.prototype.onLevelUpdated = function(e) {
  8300. var t = e.details.fragments;
  8301. this.lastAVStart = t.length ? t[0].start : 0
  8302. }, t.prototype.doTick = function() {
  8303. if (this.media) switch (this.state) {
  8304. case d.State.IDLE:
  8305. var e = this,
  8306. t = e.config,
  8307. r = e.currentTrackId,
  8308. i = e.fragmentTracker,
  8309. o = e.media,
  8310. f = e.tracks;
  8311. if (!f || !f[r] || !f[r].details) break;
  8312. var c = t.maxBufferHole,
  8313. h = t.maxFragLookUpTolerance,
  8314. p = Math.min(t.maxBufferLength, t.maxMaxBufferLength),
  8315. g = s.BufferHelper.bufferedInfo(this._getBuffered(), o.currentTime, c),
  8316. v = g.end,
  8317. y = g.len,
  8318. m = f[r].details,
  8319. E = m.fragments,
  8320. _ = E.length,
  8321. T = E[_ - 1].start + E[_ - 1].duration;
  8322. if (y > p) return;
  8323. var S = void 0,
  8324. b = this.fragPrevious;
  8325. v < T ? (b && m.hasProgramDateTime && (S = l.findFragmentByPDT(E, b.endProgramDateTime, h)), S || (S = l.findFragmentByPTS(b, E, v, h))) : S = E[_ - 1], S && S.encrypted ? (n.logger.log("Loading key for " + S.sn), this.state = d.State.KEY_LOADING, this.hls.trigger(a.default.KEY_LOADING, {
  8326. frag: S
  8327. })) : S && i.getState(S) === u.FragmentState.NOT_LOADED && (this.fragCurrent = S, this.state = d.State.FRAG_LOADING, this.hls.trigger(a.default.FRAG_LOADING, {
  8328. frag: S
  8329. }))
  8330. } else this.state = d.State.IDLE
  8331. }, t.prototype.stopLoad = function() {
  8332. this.lastAVStart = 0, e.prototype.stopLoad.call(this)
  8333. }, t.prototype._getBuffered = function() {
  8334. return this.tracksBuffered[this.currentTrackId] || []
  8335. }, t.prototype.onMediaSeeking = function() {
  8336. this.fragPrevious = null
  8337. }, t
  8338. }(d.default);
  8339. t.SubtitleStreamController = h
  8340. }, function(e, t, r) {
  8341. "use strict";
  8342. var i = this && this.__extends || function() {
  8343. var e = Object.setPrototypeOf || {
  8344. __proto__: []
  8345. }
  8346. instanceof Array && function(e, t) {
  8347. e.__proto__ = t
  8348. } || function(e, t) {
  8349. for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r])
  8350. };
  8351. return function(t, r) {
  8352. function i() {
  8353. this.constructor = t
  8354. }
  8355. e(t, r), t.prototype = null === r ? Object.create(r) : (i.prototype = r.prototype, new i)
  8356. }
  8357. }();
  8358. Object.defineProperty(t, "__esModule", {
  8359. value: !0
  8360. });
  8361. var a = r(4),
  8362. n = r(1),
  8363. o = r(3),
  8364. s = r(0),
  8365. l = window.XMLHttpRequest,
  8366. u = "com.widevine.alpha",
  8367. d = "com.microsoft.playready",
  8368. f = function(e) {
  8369. function t(t) {
  8370. var r = e.call(this, t, n.default.MEDIA_ATTACHED, n.default.MANIFEST_PARSED) || this;
  8371. return r._widevineLicenseUrl = t.config.widevineLicenseUrl, r._licenseXhrSetup = t.config.licenseXhrSetup, r._emeEnabled = t.config.emeEnabled, r._requestMediaKeySystemAccess = t.config.requestMediaKeySystemAccessFunc, r._mediaKeysList = [], r._media = null, r._hasSetMediaKeys = !1, r._isMediaEncrypted = !1, r._requestLicenseFailureCount = 0, r
  8372. }
  8373. return i(t, e), t.prototype.getLicenseServerUrl = function(e) {
  8374. var t;
  8375. switch (e) {
  8376. case u:
  8377. t = this._widevineLicenseUrl;
  8378. break;
  8379. default:
  8380. t = null
  8381. }
  8382. return t || (s.logger.error('No license server URL configured for key-system "' + e + '"'), this.hls.trigger(n.default.ERROR, {
  8383. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8384. details: o.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
  8385. fatal: !0
  8386. })), t
  8387. }, t.prototype._attemptKeySystemAccess = function(e, t, r) {
  8388. var i = this,
  8389. a = function(e, t, r) {
  8390. switch (e) {
  8391. case u:
  8392. return function(e, t, r) {
  8393. var i = {
  8394. videoCapabilities: []
  8395. };
  8396. return t.forEach(function(e) {
  8397. i.videoCapabilities.push({
  8398. contentType: 'video/mp4; codecs="' + e + '"'
  8399. })
  8400. }), [i]
  8401. }(0, r);
  8402. default:
  8403. throw Error("Unknown key-system: " + e)
  8404. }
  8405. }(e, 0, r);
  8406. a ? (s.logger.log("Requesting encrypted media key-system access"), this.requestMediaKeySystemAccess(e, a).then(function(t) {
  8407. i._onMediaKeySystemAccessObtained(e, t)
  8408. }).catch(function(t) {
  8409. s.logger.error('Failed to obtain key-system "' + e + '" access:', t)
  8410. })) : s.logger.warn("Can not create config for key-system (maybe because platform is not supported):", e)
  8411. }, Object.defineProperty(t.prototype, "requestMediaKeySystemAccess", {
  8412. get: function() {
  8413. if (!this._requestMediaKeySystemAccess) throw new Error("No requestMediaKeySystemAccess function configured");
  8414. return this._requestMediaKeySystemAccess
  8415. },
  8416. enumerable: !0,
  8417. configurable: !0
  8418. }), t.prototype._onMediaKeySystemAccessObtained = function(e, t) {
  8419. var r = this;
  8420. s.logger.log('Access for key-system "' + e + '" obtained');
  8421. var i = {
  8422. mediaKeys: null,
  8423. mediaKeysSession: null,
  8424. mediaKeysSessionInitialized: !1,
  8425. mediaKeySystemAccess: t,
  8426. mediaKeySystemDomain: e
  8427. };
  8428. this._mediaKeysList.push(i), t.createMediaKeys().then(function(t) {
  8429. i.mediaKeys = t, s.logger.log('Media-keys created for key-system "' + e + '"'), r._onMediaKeysCreated()
  8430. }).catch(function(e) {
  8431. s.logger.error("Failed to create media-keys:", e)
  8432. })
  8433. }, t.prototype._onMediaKeysCreated = function() {
  8434. var e = this;
  8435. this._mediaKeysList.forEach(function(t) {
  8436. t.mediaKeysSession || (t.mediaKeysSession = t.mediaKeys.createSession(), e._onNewMediaKeySession(t.mediaKeysSession))
  8437. })
  8438. }, t.prototype._onNewMediaKeySession = function(e) {
  8439. var t = this;
  8440. s.logger.log("New key-system session " + e.sessionId), e.addEventListener("message", function(r) {
  8441. t._onKeySessionMessage(e, r.message)
  8442. }, !1)
  8443. }, t.prototype._onKeySessionMessage = function(e, t) {
  8444. s.logger.log("Got EME message event, creating license request"), this._requestLicense(t, function(t) {
  8445. s.logger.log("Received license data, updating key-session"), e.update(t)
  8446. })
  8447. }, t.prototype._onMediaEncrypted = function(e, t) {
  8448. s.logger.log('Media is encrypted using "' + e + '" init data type'), this._isMediaEncrypted = !0, this._mediaEncryptionInitDataType = e, this._mediaEncryptionInitData = t, this._attemptSetMediaKeys(), this._generateRequestWithPreferredKeySession()
  8449. }, t.prototype._attemptSetMediaKeys = function() {
  8450. if (!this._hasSetMediaKeys) {
  8451. var e = this._mediaKeysList[0];
  8452. if (!e || !e.mediaKeys) return s.logger.error("Fatal: Media is encrypted but no CDM access or no keys have been obtained yet"), void this.hls.trigger(n.default.ERROR, {
  8453. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8454. details: o.ErrorDetails.KEY_SYSTEM_NO_KEYS,
  8455. fatal: !0
  8456. });
  8457. s.logger.log("Setting keys for encrypted media"), this._media.setMediaKeys(e.mediaKeys), this._hasSetMediaKeys = !0
  8458. }
  8459. }, t.prototype._generateRequestWithPreferredKeySession = function() {
  8460. var e = this,
  8461. t = this._mediaKeysList[0];
  8462. if (!t) return s.logger.error("Fatal: Media is encrypted but not any key-system access has been obtained yet"), void this.hls.trigger(n.default.ERROR, {
  8463. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8464. details: o.ErrorDetails.KEY_SYSTEM_NO_ACCESS,
  8465. fatal: !0
  8466. });
  8467. if (t.mediaKeysSessionInitialized) s.logger.warn("Key-Session already initialized but requested again");
  8468. else {
  8469. var r = t.mediaKeysSession;
  8470. r || (s.logger.error("Fatal: Media is encrypted but no key-session existing"), this.hls.trigger(n.default.ERROR, {
  8471. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8472. details: o.ErrorDetails.KEY_SYSTEM_NO_SESSION,
  8473. fatal: !0
  8474. }));
  8475. var i = this._mediaEncryptionInitDataType,
  8476. a = this._mediaEncryptionInitData;
  8477. s.logger.log('Generating key-session request for "' + i + '" init data type'), t.mediaKeysSessionInitialized = !0, r.generateRequest(i, a).then(function() {
  8478. s.logger.debug("Key-session generation succeeded")
  8479. }).catch(function(t) {
  8480. s.logger.error("Error generating key-session request:", t), e.hls.trigger(n.default.ERROR, {
  8481. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8482. details: o.ErrorDetails.KEY_SYSTEM_NO_SESSION,
  8483. fatal: !1
  8484. })
  8485. })
  8486. }
  8487. }, t.prototype._createLicenseXhr = function(e, t, r) {
  8488. var i = new l,
  8489. a = this._licenseXhrSetup;
  8490. try {
  8491. if (a) try {
  8492. a(i, e)
  8493. } catch (t) {
  8494. i.open("POST", e, !0), a(i, e)
  8495. }
  8496. i.readyState || i.open("POST", e, !0)
  8497. } catch (e) {
  8498. return s.logger.error("Error setting up key-system license XHR", e), void this.hls.trigger(n.default.ERROR, {
  8499. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8500. details: o.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
  8501. fatal: !0
  8502. })
  8503. }
  8504. return i.responseType = "arraybuffer", i.onreadystatechange = this._onLicenseRequestReadyStageChange.bind(this, i, e, t, r), i
  8505. }, t.prototype._onLicenseRequestReadyStageChange = function(e, t, r, i) {
  8506. switch (e.readyState) {
  8507. case 4:
  8508. if (200 === e.status) this._requestLicenseFailureCount = 0, s.logger.log("License request succeeded"), i(e.response);
  8509. else {
  8510. if (s.logger.error("License Request XHR failed (" + t + "). Status: " + e.status + " (" + e.statusText + ")"), this._requestLicenseFailureCount++, this._requestLicenseFailureCount <= 3) {
  8511. var a = 3 - this._requestLicenseFailureCount + 1;
  8512. return s.logger.warn("Retrying license request, " + a + " attempts left"), void this._requestLicense(r, i)
  8513. }
  8514. this.hls.trigger(n.default.ERROR, {
  8515. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8516. details: o.ErrorDetails.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
  8517. fatal: !0
  8518. })
  8519. }
  8520. }
  8521. }, t.prototype._generateLicenseRequestChallenge = function(e, t) {
  8522. var r;
  8523. return e.mediaKeySystemDomain === d ? s.logger.error("PlayReady is not supported (yet)") : e.mediaKeySystemDomain === u ? r = t : s.logger.error("Unsupported key-system:", e.mediaKeySystemDomain), r
  8524. }, t.prototype._requestLicense = function(e, t) {
  8525. s.logger.log("Requesting content license for key-system");
  8526. var r = this._mediaKeysList[0];
  8527. if (!r) return s.logger.error("Fatal error: Media is encrypted but no key-system access has been obtained yet"), void this.hls.trigger(n.default.ERROR, {
  8528. type: o.ErrorTypes.KEY_SYSTEM_ERROR,
  8529. details: o.ErrorDetails.KEY_SYSTEM_NO_ACCESS,
  8530. fatal: !0
  8531. });
  8532. var i = this.getLicenseServerUrl(r.mediaKeySystemDomain),
  8533. a = this._createLicenseXhr(i, e, t);
  8534. s.logger.log("Sending license request to URL: " + i), a.send(this._generateLicenseRequestChallenge(r, e))
  8535. }, t.prototype.onMediaAttached = function(e) {
  8536. var t = this;
  8537. if (this._emeEnabled) {
  8538. var r = e.media;
  8539. this._media = r, r.addEventListener("encrypted", function(e) {
  8540. t._onMediaEncrypted(e.initDataType, e.initData)
  8541. })
  8542. }
  8543. }, t.prototype.onManifestParsed = function(e) {
  8544. if (this._emeEnabled) {
  8545. var t = e.levels.map(function(e) {
  8546. return e.audioCodec
  8547. }),
  8548. r = e.levels.map(function(e) {
  8549. return e.videoCodec
  8550. });
  8551. this._attemptKeySystemAccess(u, t, r)
  8552. }
  8553. }, t
  8554. }(a.default);
  8555. t.default = f
  8556. }, function(e, t, r) {
  8557. "use strict";
  8558. Object.defineProperty(t, "__esModule", {
  8559. value: !0
  8560. });
  8561. var i = "undefined" != typeof window && window.navigator && window.navigator.requestMediaKeySystemAccess ? window.navigator.requestMediaKeySystemAccess.bind(window.navigator) : null;
  8562. t.requestMediaKeySystemAccess = i
  8563. }]).default
  8564. });
  8565. //# sourceMappingURL=hls.min.js.map

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址