@das-fed/ui 7.1.0-dev.1 → 7.1.0-dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm-map.json +3 -2
- package/package.json +5 -5
- package/packages/business-components/ai-panel/{index-8yffh0Id.js → index-DMJXZM7n.js} +1067 -1056
- package/packages/business-components/ai-panel/index-DMJXZM7n.js.gz +0 -0
- package/packages/business-components/ai-panel/{index-IzGl26KU.js → index-MqhMkLo9.js} +9 -9
- package/packages/business-components/ai-panel/index-MqhMkLo9.js.gz +0 -0
- package/packages/business-components/ai-panel/{index-OwRrV6K8.js → index-_q72oKSF.js} +63 -62
- package/packages/business-components/ai-panel/index-_q72oKSF.js.gz +0 -0
- package/packages/business-components/ai-panel/index.js +1 -1
- package/packages/business-components/app-container/style.css +1 -1
- package/packages/business-components/app-container/style.css.gz +0 -0
- package/packages/business-components/area-phone-select/index.d.ts +23 -23
- package/packages/business-components/area-phone-select/src/Index.vue.d.ts +2 -2
- package/packages/business-components/area-phone-select/src/area-popover/index.vue.d.ts +2 -2
- package/packages/business-components/device-panel/i18n/index.d.ts +40 -0
- package/packages/business-components/device-panel/index.js +20949 -19425
- package/packages/business-components/device-panel/index.js.gz +0 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/hooks/use-knowledge.d.ts +6 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/Index.vue.d.ts +6 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/apis.d.ts +5 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/components/use-info/Info.vue.d.ts +44 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/components/use-info/downloadFile.d.ts +8 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/components/use-info/info.d.ts +24 -0
- package/packages/business-components/device-panel/src/components/alarmDevicePanel/knowledge/utils/get-file-details.d.ts +2 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/hooks/use-knowledge.d.ts +6 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/Index.vue.d.ts +6 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/apis.d.ts +5 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/components/use-info/Info.vue.d.ts +44 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/components/use-info/downloadFile.d.ts +8 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/components/use-info/info.d.ts +24 -0
- package/packages/business-components/device-panel/src/components/devicePanelModal/knowledge/utils/get-file-details.d.ts +2 -0
- package/packages/business-components/device-panel/style.css +1 -1
- package/packages/business-components/device-panel/style.css.gz +0 -0
- package/packages/business-components/echarts/index.js +2056 -2049
- package/packages/business-components/echarts/index.js.gz +0 -0
- package/packages/business-components/index.d.ts +1 -0
- package/packages/business-components/index.js +1 -0
- package/packages/business-components/payment/index.d.ts +9 -11
- package/packages/business-components/payment/index.js +122 -129
- package/packages/business-components/payment/index.js.gz +0 -0
- package/packages/business-components/payment/style.css +1 -1
- package/packages/business-components/payment/type.d.ts +2 -0
- package/packages/business-components/process-configuration/index.js +46 -46
- package/packages/business-components/process-configuration/index.js.gz +0 -0
- package/packages/business-components/process-form/index.js +675 -655
- package/packages/business-components/process-form/index.js.gz +0 -0
- package/packages/business-components/process-form/src/utils/common-methods.d.ts +6 -0
- package/packages/business-components/process-search-form/index.js +73 -73
- package/packages/business-components/process-search-form/index.js.gz +0 -0
- package/packages/business-components/process-table/index.js +215 -213
- package/packages/business-components/process-table/index.js.gz +0 -0
- package/packages/business-components/update-confirm-dialog/i18n/index.d.ts +23 -0
- package/packages/business-components/update-confirm-dialog/index.d.ts +61 -0
- package/packages/business-components/update-confirm-dialog/index.js +105 -0
- package/packages/business-components/update-confirm-dialog/index.js.gz +0 -0
- package/packages/business-components/update-confirm-dialog/src/App.vue.d.ts +11 -0
- package/packages/business-components/update-confirm-dialog/src/type.d.ts +4 -0
- package/packages/business-components/urgent-panel/index.js +1104 -1096
- package/packages/business-components/urgent-panel/index.js.gz +0 -0
- package/packages/business-components/user-org-dialog/index.js +243 -240
- package/packages/business-components/user-org-dialog/index.js.gz +0 -0
- package/packages/business-components/video-dialog/index.d.ts +10 -0
- package/packages/business-components/video-dialog/index.js +357 -337
- package/packages/business-components/video-dialog/index.js.gz +0 -0
- package/packages/business-components/video-dialog/src/api.d.ts +1 -0
- package/packages/business-components/video-dialog/src/component/Player/index.vue.d.ts +2 -0
- package/packages/business-components/video-dialog/src/hooks/use-video/PlayerProvider.d.ts +6 -0
- package/packages/business-components/video-dialog/src/index.vue.d.ts +2 -0
- package/packages/business-components/video-dialog/src/type.d.ts +7 -1
- package/packages/business-components/video-dialog/style.css +1 -1
- package/packages/business-components/video-dialog/style.css.gz +0 -0
- package/packages/components/autocomplete/index.d.ts +15 -15
- package/packages/components/autocomplete/index.js +12 -6
- package/packages/components/autocomplete/index.js.gz +0 -0
- package/packages/components/autocomplete/src/index.vue.d.ts +2 -2
- package/packages/components/calendar/index.js +99 -99
- package/packages/components/calendar/index.js.gz +0 -0
- package/packages/components/cascader/index.js +2 -2
- package/packages/components/cascader/index.js.gz +0 -0
- package/packages/components/checkbox/index.d.ts +15 -15
- package/packages/components/checkbox/index.js +30 -30
- package/packages/components/checkbox/index.js.gz +0 -0
- package/packages/components/checkbox/src/Index.vue.d.ts +2 -2
- package/packages/components/color-picker/index.d.ts +8 -8
- package/packages/components/color-picker/src/Index.vue.d.ts +2 -2
- package/packages/components/custom-search-item/index.d.ts +15 -15
- package/packages/components/custom-search-item/src/Index.vue.d.ts +2 -2
- package/packages/components/date-picker/index.js +212 -212
- package/packages/components/date-picker/index.js.gz +0 -0
- package/packages/components/dialog/index.d.ts +6 -3
- package/packages/components/dialog/index.js +281 -184
- package/packages/components/dialog/index.js.gz +0 -0
- package/packages/components/dialog/src/Index.vue.d.ts +2 -1
- package/packages/components/dialog/src/directives/dialogResize.d.ts +2 -0
- package/packages/components/dialog/src/type.d.ts +2 -0
- package/packages/components/dialog/style.css +1 -1
- package/packages/components/dialog/style.css.gz +0 -0
- package/packages/components/dimple-layout/index.js +77 -75
- package/packages/components/dimple-layout/index.js.gz +0 -0
- package/packages/components/dropdown/index.js +25 -24
- package/packages/components/dropdown/index.js.gz +0 -0
- package/packages/components/edit-table/index.js +398 -397
- package/packages/components/edit-table/index.js.gz +0 -0
- package/packages/components/error-overlay-model/index.js +47 -45
- package/packages/components/error-overlay-model/index.js.gz +0 -0
- package/packages/components/form-item/index.js +67 -67
- package/packages/components/form-item/index.js.gz +0 -0
- package/packages/components/hls-player/index.js +496 -485
- package/packages/components/hls-player/index.js.gz +0 -0
- package/packages/components/hls-player/src/type.d.ts +3 -0
- package/packages/components/hls-player/style.css +1 -1
- package/packages/components/hls-player/style.css.gz +0 -0
- package/packages/components/image-upload/index.js +147 -143
- package/packages/components/image-upload/index.js.gz +0 -0
- package/packages/components/image-viewer/index.js +297 -293
- package/packages/components/image-viewer/index.js.gz +0 -0
- package/packages/components/input/index.d.ts +5 -5
- package/packages/components/input/index.js +52 -52
- package/packages/components/input/index.js.gz +0 -0
- package/packages/components/input/src/index.vue.d.ts +2 -2
- package/packages/components/input-dialog-select/index.d.ts +2 -2
- package/packages/components/input-dialog-select/src/Index.vue.d.ts +2 -2
- package/packages/components/input-number/index.d.ts +8 -8
- package/packages/components/input-number/index.js +26 -26
- package/packages/components/input-number/index.js.gz +0 -0
- package/packages/components/input-number/src/App.vue.d.ts +2 -2
- package/packages/components/live-player/index.d.ts +2 -0
- package/packages/components/live-player/index.js +988 -977
- package/packages/components/live-player/index.js.gz +0 -0
- package/packages/components/live-player/src/type.d.ts +3 -0
- package/packages/components/live-player/style.css +1 -1
- package/packages/components/map/index.js +421 -415
- package/packages/components/map/index.js.gz +0 -0
- package/packages/components/menu-aside/index.js +1 -1
- package/packages/components/menu-aside/index.js.gz +0 -0
- package/packages/components/message/index.js +6 -6
- package/packages/components/message/index.js.gz +0 -0
- package/packages/components/popover/index.js +12 -12
- package/packages/components/popover/index.js.gz +0 -0
- package/packages/components/radio/index.d.ts +15 -15
- package/packages/components/radio/src/Index.vue.d.ts +2 -2
- package/packages/components/radio-tabs/index.js +34 -34
- package/packages/components/radio-tabs/index.js.gz +0 -0
- package/packages/components/rich-editor/index.d.ts +8 -8
- package/packages/components/rich-editor/index.js +4613 -4583
- package/packages/components/rich-editor/index.js.gz +0 -0
- package/packages/components/rich-editor/src/Index.vue.d.ts +2 -2
- package/packages/components/scrollbar/index.d.ts +9 -3
- package/packages/components/scrollbar/index.js +394 -390
- package/packages/components/scrollbar/index.js.gz +0 -0
- package/packages/components/scrollbar/src/scrollbar.vue.d.ts +3 -1
- package/packages/components/scrollbar/style.css +1 -1
- package/packages/components/scrollbar/style.css.gz +0 -0
- package/packages/components/search/index.d.ts +2 -2
- package/packages/components/search/index.js +24 -24
- package/packages/components/search/index.js.gz +0 -0
- package/packages/components/search/src/Index.vue.d.ts +2 -2
- package/packages/components/search-form/index.js +175 -174
- package/packages/components/search-form/index.js.gz +0 -0
- package/packages/components/search-form/style.css +1 -1
- package/packages/components/search-form/style.css.gz +0 -0
- package/packages/components/select/index.js +60 -60
- package/packages/components/select/index.js.gz +0 -0
- package/packages/components/select-list/index.js +9 -5
- package/packages/components/select-list/index.js.gz +0 -0
- package/packages/components/special-range-picker-month/index.d.ts +2 -2
- package/packages/components/special-range-picker-month/index.js +16 -14
- package/packages/components/special-range-picker-month/index.js.gz +0 -0
- package/packages/components/special-range-picker-month/src/Index.vue.d.ts +2 -2
- package/packages/components/special-range-picker-year/index.d.ts +2 -2
- package/packages/components/special-range-picker-year/index.js +53 -51
- package/packages/components/special-range-picker-year/index.js.gz +0 -0
- package/packages/components/special-range-picker-year/src/Index.vue.d.ts +2 -2
- package/packages/components/spin/index.js +33 -33
- package/packages/components/spin/index.js.gz +0 -0
- package/packages/components/split-panel/index.js +129 -128
- package/packages/components/split-panel/index.js.gz +0 -0
- package/packages/components/table/index.js +179 -178
- package/packages/components/table/index.js.gz +0 -0
- package/packages/components/time-line/index.js +1 -1
- package/packages/components/time-line/index.js.gz +0 -0
- package/packages/components/tree-select/index.js +1 -1
- package/packages/components/tree-select/index.js.gz +0 -0
- package/packages/components/tree-select/src/App.vue.d.ts +2 -2
- package/packages/components/tree-table/index.js +2 -2
- package/packages/components/tree-table/index.js.gz +0 -0
- package/packages/components/tree-v2/index.js +1117 -1093
- package/packages/components/tree-v2/index.js.gz +0 -0
- package/packages/business-components/ai-panel/index-8yffh0Id.js.gz +0 -0
- package/packages/business-components/ai-panel/index-IzGl26KU.js.gz +0 -0
- package/packages/business-components/ai-panel/index-OwRrV6K8.js.gz +0 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import '@das-fed/ui/packages/components/hls-player/style.css';
|
|
2
|
-
import { defineComponent as Ta, useCssVars as ya, toRefs as va,
|
|
2
|
+
import { defineComponent as Ta, useCssVars as ya, toRefs as va, ref as Ee, computed as Sa, onMounted as Aa, onBeforeUnmount as xa, createElementBlock as St, openBlock as At, Fragment as La, createCommentVNode as nt, withDirectives as Ia, unref as at, createElementVNode as ki, normalizeClass as Ra } from "vue";
|
|
3
3
|
import { withInstall as ba } from "@das-fed/utils/with-install/index";
|
|
4
4
|
import { t as _i, setI18nRule as Da } from "@das-fed/web/packages/i18n/index";
|
|
5
5
|
import { vDasLoading as Ca } from "@das-fed/ui/packages/components/loading/index";
|
|
6
6
|
import { useModelValue as Pa } from "@das-fed/utils/vue";
|
|
7
|
-
const
|
|
7
|
+
const B = Number.isFinite || function(a) {
|
|
8
8
|
return typeof a == "number" && isFinite(a);
|
|
9
9
|
}, ka = Number.isSafeInteger || function(a) {
|
|
10
10
|
return typeof a == "number" && Math.abs(a) <= _a;
|
|
11
11
|
}, _a = Number.MAX_SAFE_INTEGER || 9007199254740991;
|
|
12
|
-
let
|
|
12
|
+
let V = /* @__PURE__ */ function(a) {
|
|
13
13
|
return a.NETWORK_ERROR = "networkError", a.MEDIA_ERROR = "mediaError", a.KEY_SYSTEM_ERROR = "keySystemError", a.MUX_ERROR = "muxError", a.OTHER_ERROR = "otherError", a;
|
|
14
14
|
}({}), b = /* @__PURE__ */ function(a) {
|
|
15
15
|
return a.KEY_SYSTEM_NO_KEYS = "keySystemNoKeys", a.KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess", a.KEY_SYSTEM_NO_SESSION = "keySystemNoSession", a.KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense", a.KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed", a.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed", a.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed", a.KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed", a.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted", a.KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError", a.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR = "keySystemDestroyMediaKeysError", a.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR = "keySystemDestroyCloseSessionError", a.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR = "keySystemDestroyRemoveSessionError", a.MANIFEST_LOAD_ERROR = "manifestLoadError", a.MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut", a.MANIFEST_PARSING_ERROR = "manifestParsingError", a.MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError", a.LEVEL_EMPTY_ERROR = "levelEmptyError", a.LEVEL_LOAD_ERROR = "levelLoadError", a.LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut", a.LEVEL_PARSING_ERROR = "levelParsingError", a.LEVEL_SWITCH_ERROR = "levelSwitchError", a.AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError", a.AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut", a.SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError", a.SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut", a.FRAG_LOAD_ERROR = "fragLoadError", a.FRAG_LOAD_TIMEOUT = "fragLoadTimeOut", a.FRAG_DECRYPT_ERROR = "fragDecryptError", a.FRAG_PARSING_ERROR = "fragParsingError", a.FRAG_GAP = "fragGap", a.REMUX_ALLOC_ERROR = "remuxAllocError", a.KEY_LOAD_ERROR = "keyLoadError", a.KEY_LOAD_TIMEOUT = "keyLoadTimeOut", a.BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError", a.BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError", a.BUFFER_APPEND_ERROR = "bufferAppendError", a.BUFFER_APPENDING_ERROR = "bufferAppendingError", a.BUFFER_STALLED_ERROR = "bufferStalledError", a.BUFFER_FULL_ERROR = "bufferFullError", a.BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole", a.BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall", a.ASSET_LIST_LOAD_ERROR = "assetListLoadError", a.ASSET_LIST_LOAD_TIMEOUT = "assetListLoadTimeout", a.ASSET_LIST_PARSING_ERROR = "assetListParsingError", a.INTERSTITIAL_ASSET_ITEM_ERROR = "interstitialAssetItemError", a.INTERNAL_EXCEPTION = "internalException", a.INTERNAL_ABORTED = "aborted", a.ATTACH_MEDIA_ERROR = "attachMediaError", a.UNKNOWN = "unknown", a;
|
|
@@ -430,7 +430,7 @@ class ys extends Xr {
|
|
|
430
430
|
}
|
|
431
431
|
if (this.byteRange) {
|
|
432
432
|
const e = this.byteRange[0], t = this.byteRange[1];
|
|
433
|
-
if (
|
|
433
|
+
if (B(e) && B(t))
|
|
434
434
|
return t - e;
|
|
435
435
|
}
|
|
436
436
|
return null;
|
|
@@ -465,7 +465,7 @@ class ys extends Xr {
|
|
|
465
465
|
get endProgramDateTime() {
|
|
466
466
|
if (this.programDateTime === null)
|
|
467
467
|
return null;
|
|
468
|
-
const e =
|
|
468
|
+
const e = B(this.duration) ? this.duration : 0;
|
|
469
469
|
return this.programDateTime + e * 1e3;
|
|
470
470
|
}
|
|
471
471
|
get encrypted() {
|
|
@@ -483,7 +483,7 @@ class ys extends Xr {
|
|
|
483
483
|
return this._programDateTime === null && this.rawProgramDateTime && (this.programDateTime = Date.parse(this.rawProgramDateTime)), this._programDateTime;
|
|
484
484
|
}
|
|
485
485
|
set programDateTime(e) {
|
|
486
|
-
if (!
|
|
486
|
+
if (!B(e)) {
|
|
487
487
|
this._programDateTime = this.rawProgramDateTime = null;
|
|
488
488
|
return;
|
|
489
489
|
}
|
|
@@ -861,7 +861,7 @@ function Za(a, e, t) {
|
|
|
861
861
|
if (u) {
|
|
862
862
|
const y = u[0];
|
|
863
863
|
let S = W(u, 4);
|
|
864
|
-
y === 1 && (S === Mi ? t.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time") : (S *= Mi + 1, S += W(u, 8))),
|
|
864
|
+
y === 1 && (S === Mi ? t.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time") : (S *= Mi + 1, S += W(u, 8))), B(S) && (!B(h.start) || S < h.start) && (h.start = S);
|
|
865
865
|
}
|
|
866
866
|
const d = l.default, f = W(o, 0) | (d == null ? void 0 : d.flags);
|
|
867
867
|
let g = (d == null ? void 0 : d.duration) || 0;
|
|
@@ -871,10 +871,10 @@ function Za(a, e, t) {
|
|
|
871
871
|
for (let y = 0; y < E.length; y++) {
|
|
872
872
|
const S = E[y], L = W(S, 4), C = h.sampleCount;
|
|
873
873
|
h.sampleCount += L;
|
|
874
|
-
const x = S[3] & 1, R = S[3] & 4, D = S[2] & 1, A = S[2] & 2, k = S[2] & 4,
|
|
875
|
-
let K = 8,
|
|
876
|
-
for (x && (K += 4), R && L && (!(S[K + 1] & 1) && h.keyFrameIndex === void 0 && (h.keyFrameIndex = C), K += 4, D ? (v = W(S, K), K += 4) : v = g, A && (K += 4),
|
|
877
|
-
D ? (v = W(S, K), K += 4) : v = g, A && (K += 4), k && (S[K + 1] & 1 || h.keyFrameIndex === void 0 && (h.keyFrameIndex = h.sampleCount - (
|
|
874
|
+
const x = S[3] & 1, R = S[3] & 4, D = S[2] & 1, A = S[2] & 2, k = S[2] & 4, O = S[2] & 8;
|
|
875
|
+
let K = 8, U = L;
|
|
876
|
+
for (x && (K += 4), R && L && (!(S[K + 1] & 1) && h.keyFrameIndex === void 0 && (h.keyFrameIndex = C), K += 4, D ? (v = W(S, K), K += 4) : v = g, A && (K += 4), O && (K += 4), p += v, T += v, U--); U--; )
|
|
877
|
+
D ? (v = W(S, K), K += 4) : v = g, A && (K += 4), k && (S[K + 1] & 1 || h.keyFrameIndex === void 0 && (h.keyFrameIndex = h.sampleCount - (U + 1), h.keyFrameStart = p), K += 4), O && (K += 4), p += v, T += v;
|
|
878
878
|
!T && g && (T += g * L);
|
|
879
879
|
}
|
|
880
880
|
h.duration += T;
|
|
@@ -890,7 +890,7 @@ function Za(a, e, t) {
|
|
|
890
890
|
n = Math.max(n, h + l.earliestPresentationTime / l.timescale);
|
|
891
891
|
}
|
|
892
892
|
}
|
|
893
|
-
n &&
|
|
893
|
+
n && B(n) && Object.keys(s).forEach((c) => {
|
|
894
894
|
s[c].duration || (s[c].duration = n * s[c].timescale - s[c].start);
|
|
895
895
|
});
|
|
896
896
|
}
|
|
@@ -930,21 +930,21 @@ function Ni(a, e) {
|
|
|
930
930
|
let x = 8;
|
|
931
931
|
g === r && (p && (x += 8), T && (x += 4), v && (y = W(f, x), x += 4), S && (L = W(f, x), x += 4), C && (x += 4), e.type === "video" && (n = fs(e.codec)), z(u, ["trun"]).map((R) => {
|
|
932
932
|
const D = R[0], A = W(R, 0) & 16777215, k = (A & 1) !== 0;
|
|
933
|
-
let
|
|
934
|
-
const K = (A & 4) !== 0,
|
|
935
|
-
let
|
|
936
|
-
const
|
|
937
|
-
let
|
|
938
|
-
const
|
|
933
|
+
let O = 0;
|
|
934
|
+
const K = (A & 4) !== 0, U = (A & 256) !== 0;
|
|
935
|
+
let N = 0;
|
|
936
|
+
const _ = (A & 512) !== 0;
|
|
937
|
+
let $ = 0;
|
|
938
|
+
const w = (A & 1024) !== 0, Y = (A & 2048) !== 0;
|
|
939
939
|
let H = 0;
|
|
940
|
-
const
|
|
941
|
-
let
|
|
942
|
-
k && (
|
|
943
|
-
let q =
|
|
944
|
-
for (let X = 0; X <
|
|
945
|
-
if (
|
|
940
|
+
const M = W(R, 4);
|
|
941
|
+
let F = 8;
|
|
942
|
+
k && (O = W(R, F), F += 4), K && (F += 4);
|
|
943
|
+
let q = O + l;
|
|
944
|
+
for (let X = 0; X < M; X++) {
|
|
945
|
+
if (U ? (N = W(R, F), F += 4) : N = y, _ ? ($ = W(R, F), F += 4) : $ = L, w && (F += 4), Y && (D === 0 ? H = W(R, F) : H = tn(R, F), F += 4), e.type === re.VIDEO) {
|
|
946
946
|
let te = 0;
|
|
947
|
-
for (; te <
|
|
947
|
+
for (; te < $; ) {
|
|
948
948
|
const Z = W(s, q);
|
|
949
949
|
if (q += 4, eo(n, s[q])) {
|
|
950
950
|
const ae = s.subarray(q, q + Z);
|
|
@@ -953,7 +953,7 @@ function Ni(a, e) {
|
|
|
953
953
|
q += Z, te += Z + 4;
|
|
954
954
|
}
|
|
955
955
|
}
|
|
956
|
-
a +=
|
|
956
|
+
a += N / i;
|
|
957
957
|
}
|
|
958
958
|
}));
|
|
959
959
|
});
|
|
@@ -1359,7 +1359,7 @@ function co(a, e, t, s, i, r) {
|
|
|
1359
1359
|
return !0;
|
|
1360
1360
|
}
|
|
1361
1361
|
return n !== void 0 && // Force media capabilities check for HEVC to avoid failure on Windows
|
|
1362
|
-
(n.split(",").some((d) => fs(d)) || a.width > 1920 && a.height > 1088 || a.height > 1920 && a.width > 1088 || a.frameRate > Math.max(s, 30) || a.videoRange !== "SDR" && a.videoRange !== t || a.bitrate > Math.max(i, 8e6)) || !!u &&
|
|
1362
|
+
(n.split(",").some((d) => fs(d)) || a.width > 1920 && a.height > 1088 || a.height > 1920 && a.width > 1088 || a.frameRate > Math.max(s, 30) || a.videoRange !== "SDR" && a.videoRange !== t || a.bitrate > Math.max(i, 8e6)) || !!u && B(h) && Object.keys(u).some((d) => parseInt(d) > h);
|
|
1363
1363
|
}
|
|
1364
1364
|
function ln(a, e, t, s = {}) {
|
|
1365
1365
|
const i = a.videoCodec;
|
|
@@ -1611,9 +1611,9 @@ function vo(a, e, t, s, i) {
|
|
|
1611
1611
|
const D = a[r[R]];
|
|
1612
1612
|
h || (h = D.channels[2] > 0), d = Math.min(d, D.minHeight), f = Math.min(f, D.minFramerate), g = Math.min(g, D.minBitrate), y.filter((k) => D.videoRanges[k] > 0).length > 0 && (u = !0);
|
|
1613
1613
|
}
|
|
1614
|
-
d =
|
|
1614
|
+
d = B(d) ? d : 0, f = B(f) ? f : 0;
|
|
1615
1615
|
const S = Math.max(1080, d), L = Math.max(30, f);
|
|
1616
|
-
g =
|
|
1616
|
+
g = B(g) ? g : t, t = Math.max(g, t), u || (e = void 0);
|
|
1617
1617
|
const C = r.length > 1;
|
|
1618
1618
|
return {
|
|
1619
1619
|
codecSet: r.reduce((R, D) => {
|
|
@@ -1822,33 +1822,33 @@ class Io extends we {
|
|
|
1822
1822
|
if (d <= Math.max(y, 1e3 * (u / (S * 2))))
|
|
1823
1823
|
return;
|
|
1824
1824
|
const L = v ? v.len / S : 0, C = h.loading.first ? h.loading.first - h.loading.start : -1, x = h.loaded && C > -1, R = this.getBwEstimate(), D = n.levels, A = D[g], k = Math.max(h.loaded, Math.round(u * (i.bitrate || A.averageBitrate) / 8));
|
|
1825
|
-
let
|
|
1826
|
-
|
|
1827
|
-
const K = x ? h.loaded * 1e3 /
|
|
1828
|
-
if (
|
|
1825
|
+
let O = x ? d - C : d;
|
|
1826
|
+
O < 1 && x && (O = Math.min(d, h.loaded * 8 / R));
|
|
1827
|
+
const K = x ? h.loaded * 1e3 / O : 0, U = y / 1e3, N = K ? (k - h.loaded) / K : k * 8 / R + U;
|
|
1828
|
+
if (N <= L)
|
|
1829
1829
|
return;
|
|
1830
|
-
const
|
|
1830
|
+
const _ = K ? K * 8 : R, $ = ((s = (t == null ? void 0 : t.details) || this.hls.latestLevelDetails) == null ? void 0 : s.live) === !0, w = this.hls.config.abrBandWidthUpFactor;
|
|
1831
1831
|
let Y = Number.POSITIVE_INFINITY, H;
|
|
1832
1832
|
for (H = g - 1; H > f; H--) {
|
|
1833
|
-
const X = D[H].maxBitrate, te = !D[H].details ||
|
|
1834
|
-
if (Y = this.getTimeToLoadFrag(
|
|
1833
|
+
const X = D[H].maxBitrate, te = !D[H].details || $;
|
|
1834
|
+
if (Y = this.getTimeToLoadFrag(U, _, u * X, te), Y < Math.min(L, u + U))
|
|
1835
1835
|
break;
|
|
1836
1836
|
}
|
|
1837
|
-
if (Y >=
|
|
1837
|
+
if (Y >= N || Y > u * 10)
|
|
1838
1838
|
return;
|
|
1839
1839
|
x ? this.bwEstimator.sample(d - Math.min(y, C), h.loaded) : this.bwEstimator.sampleTTFB(d);
|
|
1840
|
-
const
|
|
1841
|
-
this.getBwEstimate() *
|
|
1842
|
-
const
|
|
1843
|
-
|
|
1840
|
+
const M = D[H].maxBitrate;
|
|
1841
|
+
this.getBwEstimate() * w > M && this.resetEstimator(M);
|
|
1842
|
+
const F = this.findBestLevel(M, f, H, 0, L, 1, 1);
|
|
1843
|
+
F > -1 && (H = F), this.warn(`Fragment ${i.sn}${r ? " part " + r.index : ""} of level ${g} is loading too slowly;
|
|
1844
1844
|
Fragment duration: ${i.duration.toFixed(3)}
|
|
1845
1845
|
Time to underbuffer: ${L.toFixed(3)} s
|
|
1846
|
-
Estimated load time for current fragment: ${
|
|
1846
|
+
Estimated load time for current fragment: ${N.toFixed(3)} s
|
|
1847
1847
|
Estimated load time for down switch fragment: ${Y.toFixed(3)} s
|
|
1848
1848
|
TTFB estimate: ${C | 0} ms
|
|
1849
|
-
Current BW estimate: ${
|
|
1849
|
+
Current BW estimate: ${B(R) ? R | 0 : "Unknown"} bps
|
|
1850
1850
|
New BW estimate: ${this.getBwEstimate() | 0} bps
|
|
1851
|
-
Switching to level ${H} @ ${
|
|
1851
|
+
Switching to level ${H} @ ${M | 0} bps`), n.nextLoadLevel = n.nextAutoLevel = H, this.clearTimer();
|
|
1852
1852
|
const q = () => {
|
|
1853
1853
|
if (this.clearTimer(), this.fragCurrent === i && this.hls.loadLevel === H && H > 0) {
|
|
1854
1854
|
const X = this.getStarvationDelay();
|
|
@@ -1860,7 +1860,7 @@ class Io extends we {
|
|
|
1860
1860
|
}
|
|
1861
1861
|
}
|
|
1862
1862
|
};
|
|
1863
|
-
p ||
|
|
1863
|
+
p || N > Y * 2 ? q() : this.timer = self.setInterval(q, Y * 1e3), n.trigger(m.FRAG_LOAD_EMERGENCY_ABORTED, {
|
|
1864
1864
|
frag: i,
|
|
1865
1865
|
part: r,
|
|
1866
1866
|
stats: h
|
|
@@ -1943,7 +1943,7 @@ class Io extends we {
|
|
|
1943
1943
|
const s = this.hls.config, {
|
|
1944
1944
|
loading: i
|
|
1945
1945
|
} = t.stats, r = i.end - i.first;
|
|
1946
|
-
|
|
1946
|
+
B(r) && (this.lastLevelLoadSec = r / 1e3), t.details.live ? this.bwEstimator.update(s.abrEwmaSlowLive, s.abrEwmaFastLive) : this.bwEstimator.update(s.abrEwmaSlowVoD, s.abrEwmaFastVoD), this.timer > -1 && this._abandonRulesCheck(t.levelInfo);
|
|
1947
1947
|
}
|
|
1948
1948
|
onFragLoaded(e, {
|
|
1949
1949
|
frag: t,
|
|
@@ -2078,51 +2078,51 @@ class Io extends we {
|
|
|
2078
2078
|
if (S) {
|
|
2079
2079
|
if (this.firstSelection !== -1)
|
|
2080
2080
|
return this.firstSelection;
|
|
2081
|
-
const
|
|
2081
|
+
const $ = this.codecTiers || (this.codecTiers = So(g, A, t, s)), w = vo($, C, e, R, D), {
|
|
2082
2082
|
codecSet: Y,
|
|
2083
2083
|
videoRanges: H,
|
|
2084
|
-
minFramerate:
|
|
2085
|
-
minBitrate:
|
|
2084
|
+
minFramerate: M,
|
|
2085
|
+
minBitrate: F,
|
|
2086
2086
|
minIndex: q,
|
|
2087
2087
|
preferHDR: X
|
|
2088
|
-
} =
|
|
2089
|
-
k = q, L = Y, C = X ? H[H.length - 1] : H[0], x =
|
|
2088
|
+
} = w;
|
|
2089
|
+
k = q, L = Y, C = X ? H[H.length - 1] : H[0], x = M, e = Math.max(e, F), this.log(`picked start tier ${ne(w)}`);
|
|
2090
2090
|
} else
|
|
2091
2091
|
L = v == null ? void 0 : v.codecSet, C = v == null ? void 0 : v.videoRange;
|
|
2092
|
-
const
|
|
2093
|
-
for (let
|
|
2094
|
-
var
|
|
2095
|
-
const
|
|
2096
|
-
if (!
|
|
2092
|
+
const O = f ? f.duration : d ? d.duration : 0, K = this.bwEstimator.getEstimateTTFB() / 1e3, U = [];
|
|
2093
|
+
for (let $ = s; $ >= t; $--) {
|
|
2094
|
+
var N, _;
|
|
2095
|
+
const w = g[$], Y = $ > u;
|
|
2096
|
+
if (!w)
|
|
2097
2097
|
continue;
|
|
2098
|
-
if (T.useMediaCapabilities && !
|
|
2098
|
+
if (T.useMediaCapabilities && !w.supportedResult && !w.supportedPromise) {
|
|
2099
2099
|
const Z = navigator.mediaCapabilities;
|
|
2100
|
-
typeof (Z == null ? void 0 : Z.decodingInfo) == "function" && co(
|
|
2100
|
+
typeof (Z == null ? void 0 : Z.decodingInfo) == "function" && co(w, A, C, x, e, R) ? (w.supportedPromise = ln(w, A, Z, this.supportedCache), w.supportedPromise.then((ae) => {
|
|
2101
2101
|
if (!this.hls)
|
|
2102
2102
|
return;
|
|
2103
|
-
|
|
2104
|
-
const
|
|
2105
|
-
ae.error ? this.warn(`MediaCapabilities decodingInfo error: "${ae.error}" for level ${fe} ${ne(ae)}`) : ae.supported ? ae.decodingInfoResults.some((
|
|
2106
|
-
})) :
|
|
2103
|
+
w.supportedResult = ae;
|
|
2104
|
+
const ve = this.hls.levels, fe = ve.indexOf(w);
|
|
2105
|
+
ae.error ? this.warn(`MediaCapabilities decodingInfo error: "${ae.error}" for level ${fe} ${ne(ae)}`) : ae.supported ? ae.decodingInfoResults.some((Se) => Se.smooth === !1 || Se.powerEfficient === !1) && this.log(`MediaCapabilities decodingInfo for level ${fe} not smooth or powerEfficient: ${ne(ae)}`) : (this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${fe} ${ne(ae)}`), fe > -1 && ve.length > 1 && (this.log(`Removing unsupported level ${fe}`), this.hls.removeLevel(fe), this.hls.loadLevel === -1 && (this.hls.nextLoadLevel = 0)));
|
|
2106
|
+
})) : w.supportedResult = an;
|
|
2107
2107
|
}
|
|
2108
|
-
if ((L &&
|
|
2109
|
-
|
|
2108
|
+
if ((L && w.codecSet !== L || C && w.videoRange !== C || Y && x > w.frameRate || !Y && x > 0 && x < w.frameRate || (N = w.supportedResult) != null && (_ = N.decodingInfoResults) != null && _.some((Z) => Z.smooth === !1)) && (!S || $ !== k)) {
|
|
2109
|
+
U.push($);
|
|
2110
2110
|
continue;
|
|
2111
2111
|
}
|
|
2112
|
-
const H =
|
|
2113
|
-
let
|
|
2114
|
-
Y ?
|
|
2115
|
-
const q =
|
|
2112
|
+
const H = w.details, M = (f ? H == null ? void 0 : H.partTarget : H == null ? void 0 : H.averagetargetduration) || O;
|
|
2113
|
+
let F;
|
|
2114
|
+
Y ? F = o * e : F = n * e;
|
|
2115
|
+
const q = O && i >= O * 2 && r === 0 ? w.averageBitrate : w.maxBitrate, X = this.getTimeToLoadFrag(K, F, q * M, H === void 0);
|
|
2116
2116
|
if (
|
|
2117
2117
|
// if adjusted bw is greater than level bitrate AND
|
|
2118
|
-
|
|
2119
|
-
(
|
|
2118
|
+
F >= q && // no level change, or new level has no error history
|
|
2119
|
+
($ === h || w.loadError === 0 && w.fragmentError === 0) && // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches
|
|
2120
2120
|
// we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ...
|
|
2121
2121
|
// special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that findBestLevel will return -1
|
|
2122
|
-
(X <= K || !
|
|
2122
|
+
(X <= K || !B(X) || y && !this.bitrateTestDelay || X < l)
|
|
2123
2123
|
) {
|
|
2124
2124
|
const Z = this.forcedAutoLevel;
|
|
2125
|
-
return
|
|
2125
|
+
return $ !== p && (Z === -1 || Z !== p) && (U.length && this.trace(`Skipped level(s) ${U.join(",")} of ${s} max with CODECS and VIDEO-RANGE:"${g[U[0]].codecs}" ${g[U[0]].videoRange}; not compatible with "${L}" ${C}`), this.info(`switch candidate:${u}->${$} adjustedbw(${Math.round(F)})-bitrate=${Math.round(F - q)} ttfb:${K.toFixed(1)} avgDuration:${M.toFixed(1)} maxFetchDuration:${l.toFixed(1)} fetchDuration:${X.toFixed(1)} firstSelection:${S} codecSet:${w.codecSet} videoRange:${w.videoRange} hls.loadLevel:${p}`)), S && (this.firstSelection = $), $;
|
|
2126
2126
|
}
|
|
2127
2127
|
}
|
|
2128
2128
|
return -1;
|
|
@@ -2171,7 +2171,7 @@ const un = {
|
|
|
2171
2171
|
}
|
|
2172
2172
|
};
|
|
2173
2173
|
function Ro(a, e, t) {
|
|
2174
|
-
if (e === null || !Array.isArray(a) || !a.length || !
|
|
2174
|
+
if (e === null || !Array.isArray(a) || !a.length || !B(e))
|
|
2175
2175
|
return null;
|
|
2176
2176
|
const s = a[0].programDateTime;
|
|
2177
2177
|
if (e < (s || 0))
|
|
@@ -2373,7 +2373,7 @@ class Po extends we {
|
|
|
2373
2373
|
t.errorAction = Pt();
|
|
2374
2374
|
return;
|
|
2375
2375
|
}
|
|
2376
|
-
t.type ===
|
|
2376
|
+
t.type === V.KEY_SYSTEM_ERROR && this.keySystemError(t);
|
|
2377
2377
|
}
|
|
2378
2378
|
keySystemError(e) {
|
|
2379
2379
|
const t = this.getVariantLevelIndex(e.frag);
|
|
@@ -2887,12 +2887,12 @@ class Oo {
|
|
|
2887
2887
|
const i = this.keySize + 6, r = this.invKeySchedule, n = this.invSBox, o = this.invSubMix, c = o[0], l = o[1], h = o[2], u = o[3], d = this.uint8ArrayToUint32Array_(s);
|
|
2888
2888
|
let f = d[0], g = d[1], E = d[2], p = d[3];
|
|
2889
2889
|
const T = new Int32Array(e), v = new Int32Array(T.length);
|
|
2890
|
-
let y, S, L, C, x, R, D, A, k,
|
|
2891
|
-
const
|
|
2890
|
+
let y, S, L, C, x, R, D, A, k, O, K, U, N, _;
|
|
2891
|
+
const $ = this.networkToHostOrderSwap;
|
|
2892
2892
|
for (; t < T.length; ) {
|
|
2893
|
-
for (k =
|
|
2894
|
-
y = c[x >>> 24] ^ l[R >> 16 & 255] ^ h[D >> 8 & 255] ^ u[A & 255] ^ r[
|
|
2895
|
-
y = n[x >>> 24] << 24 ^ n[R >> 16 & 255] << 16 ^ n[D >> 8 & 255] << 8 ^ n[A & 255] ^ r[
|
|
2893
|
+
for (k = $(T[t]), O = $(T[t + 1]), K = $(T[t + 2]), U = $(T[t + 3]), x = k ^ r[0], R = U ^ r[1], D = K ^ r[2], A = O ^ r[3], N = 4, _ = 1; _ < i; _++)
|
|
2894
|
+
y = c[x >>> 24] ^ l[R >> 16 & 255] ^ h[D >> 8 & 255] ^ u[A & 255] ^ r[N], S = c[R >>> 24] ^ l[D >> 16 & 255] ^ h[A >> 8 & 255] ^ u[x & 255] ^ r[N + 1], L = c[D >>> 24] ^ l[A >> 16 & 255] ^ h[x >> 8 & 255] ^ u[R & 255] ^ r[N + 2], C = c[A >>> 24] ^ l[x >> 16 & 255] ^ h[R >> 8 & 255] ^ u[D & 255] ^ r[N + 3], x = y, R = S, D = L, A = C, N = N + 4;
|
|
2895
|
+
y = n[x >>> 24] << 24 ^ n[R >> 16 & 255] << 16 ^ n[D >> 8 & 255] << 8 ^ n[A & 255] ^ r[N], S = n[R >>> 24] << 24 ^ n[D >> 16 & 255] << 16 ^ n[A >> 8 & 255] << 8 ^ n[x & 255] ^ r[N + 1], L = n[D >>> 24] << 24 ^ n[A >> 16 & 255] << 16 ^ n[x >> 8 & 255] << 8 ^ n[R & 255] ^ r[N + 2], C = n[A >>> 24] << 24 ^ n[x >> 16 & 255] << 16 ^ n[R >> 8 & 255] << 8 ^ n[D & 255] ^ r[N + 3], v[t] = $(y ^ f), v[t + 1] = $(C ^ g), v[t + 2] = $(L ^ E), v[t + 3] = $(S ^ p), f = k, g = O, E = K, p = U, t = t + 4;
|
|
2896
2896
|
}
|
|
2897
2897
|
return v.buffer;
|
|
2898
2898
|
}
|
|
@@ -3020,7 +3020,7 @@ class No {
|
|
|
3020
3020
|
const s = e.url;
|
|
3021
3021
|
if (!s)
|
|
3022
3022
|
return Promise.reject(new Ke({
|
|
3023
|
-
type:
|
|
3023
|
+
type: V.NETWORK_ERROR,
|
|
3024
3024
|
details: b.FRAG_LOAD_ERROR,
|
|
3025
3025
|
fatal: !1,
|
|
3026
3026
|
frag: e,
|
|
@@ -3060,7 +3060,7 @@ class No {
|
|
|
3060
3060
|
},
|
|
3061
3061
|
onError: (g, E, p, T) => {
|
|
3062
3062
|
this.resetLoader(e, l), c(new Ke({
|
|
3063
|
-
type:
|
|
3063
|
+
type: V.NETWORK_ERROR,
|
|
3064
3064
|
details: b.FRAG_LOAD_ERROR,
|
|
3065
3065
|
fatal: !1,
|
|
3066
3066
|
frag: e,
|
|
@@ -3075,7 +3075,7 @@ class No {
|
|
|
3075
3075
|
},
|
|
3076
3076
|
onAbort: (g, E, p) => {
|
|
3077
3077
|
this.resetLoader(e, l), c(new Ke({
|
|
3078
|
-
type:
|
|
3078
|
+
type: V.NETWORK_ERROR,
|
|
3079
3079
|
details: b.INTERNAL_ABORTED,
|
|
3080
3080
|
fatal: !1,
|
|
3081
3081
|
frag: e,
|
|
@@ -3086,7 +3086,7 @@ class No {
|
|
|
3086
3086
|
},
|
|
3087
3087
|
onTimeout: (g, E, p) => {
|
|
3088
3088
|
this.resetLoader(e, l), c(new Ke({
|
|
3089
|
-
type:
|
|
3089
|
+
type: V.NETWORK_ERROR,
|
|
3090
3090
|
details: b.FRAG_LOAD_TIMEOUT,
|
|
3091
3091
|
fatal: !1,
|
|
3092
3092
|
frag: e,
|
|
@@ -3135,7 +3135,7 @@ class No {
|
|
|
3135
3135
|
},
|
|
3136
3136
|
onError: (f, g, E, p) => {
|
|
3137
3137
|
this.resetLoader(e, l), c(new Ke({
|
|
3138
|
-
type:
|
|
3138
|
+
type: V.NETWORK_ERROR,
|
|
3139
3139
|
details: b.FRAG_LOAD_ERROR,
|
|
3140
3140
|
fatal: !1,
|
|
3141
3141
|
frag: e,
|
|
@@ -3151,7 +3151,7 @@ class No {
|
|
|
3151
3151
|
},
|
|
3152
3152
|
onAbort: (f, g, E) => {
|
|
3153
3153
|
e.stats.aborted = t.stats.aborted, this.resetLoader(e, l), c(new Ke({
|
|
3154
|
-
type:
|
|
3154
|
+
type: V.NETWORK_ERROR,
|
|
3155
3155
|
details: b.INTERNAL_ABORTED,
|
|
3156
3156
|
fatal: !1,
|
|
3157
3157
|
frag: e,
|
|
@@ -3163,7 +3163,7 @@ class No {
|
|
|
3163
3163
|
},
|
|
3164
3164
|
onTimeout: (f, g, E) => {
|
|
3165
3165
|
this.resetLoader(e, l), c(new Ke({
|
|
3166
|
-
type:
|
|
3166
|
+
type: V.NETWORK_ERROR,
|
|
3167
3167
|
details: b.FRAG_LOAD_TIMEOUT,
|
|
3168
3168
|
fatal: !1,
|
|
3169
3169
|
frag: e,
|
|
@@ -3200,7 +3200,7 @@ function Zi(a, e = null) {
|
|
|
3200
3200
|
rangeStart: 0,
|
|
3201
3201
|
rangeEnd: 0
|
|
3202
3202
|
}, i = t.byteRangeStartOffset, r = t.byteRangeEndOffset;
|
|
3203
|
-
if (
|
|
3203
|
+
if (B(i) && B(r)) {
|
|
3204
3204
|
var n;
|
|
3205
3205
|
let o = i, c = r;
|
|
3206
3206
|
if (a.sn === "initSegment" && Uo((n = a.decryptdata) == null ? void 0 : n.method)) {
|
|
@@ -3213,7 +3213,7 @@ function Zi(a, e = null) {
|
|
|
3213
3213
|
}
|
|
3214
3214
|
function Ji(a, e) {
|
|
3215
3215
|
const t = new Error(`GAP ${a.gap ? "tag" : "attribute"} found`), s = {
|
|
3216
|
-
type:
|
|
3216
|
+
type: V.MEDIA_ERROR,
|
|
3217
3217
|
details: b.FRAG_GAP,
|
|
3218
3218
|
fatal: !1,
|
|
3219
3219
|
frag: a,
|
|
@@ -3573,7 +3573,7 @@ class mn {
|
|
|
3573
3573
|
}
|
|
3574
3574
|
if (this.attr = e, t ? (this._startDate = t._startDate, this._cue = t._cue, this._endDate = t._endDate, this._dateAtEnd = t._dateAtEnd) : this._startDate = new Date(e["START-DATE"]), "END-DATE" in this.attr) {
|
|
3575
3575
|
const r = (t == null ? void 0 : t.endDate) || new Date(this.attr["END-DATE"]);
|
|
3576
|
-
|
|
3576
|
+
B(r.getTime()) && (this._endDate = r);
|
|
3577
3577
|
}
|
|
3578
3578
|
}
|
|
3579
3579
|
get id() {
|
|
@@ -3609,7 +3609,7 @@ class mn {
|
|
|
3609
3609
|
get duration() {
|
|
3610
3610
|
if ("DURATION" in this.attr) {
|
|
3611
3611
|
const e = this.attr.decimalFloatingPoint("DURATION");
|
|
3612
|
-
if (
|
|
3612
|
+
if (B(e))
|
|
3613
3613
|
return e;
|
|
3614
3614
|
} else if (this._endDate)
|
|
3615
3615
|
return (this._endDate.getTime() - this._startDate.getTime()) / 1e3;
|
|
@@ -3625,7 +3625,7 @@ class mn {
|
|
|
3625
3625
|
return this.class === Ko;
|
|
3626
3626
|
}
|
|
3627
3627
|
get isValid() {
|
|
3628
|
-
return !!this.id && !this._badValueForSameId &&
|
|
3628
|
+
return !!this.id && !this._badValueForSameId && B(this.startDate.getTime()) && (this.duration === null || this.duration >= 0) && (!this.endOnNext || !!this.class) && (!this.attr.CUE || !this.cue.pre && !this.cue.post || this.cue.pre !== this.cue.post) && (!this.isInterstitial || "X-ASSET-URI" in this.attr || "X-ASSET-LIST" in this.attr);
|
|
3629
3629
|
}
|
|
3630
3630
|
}
|
|
3631
3631
|
const Yo = 10;
|
|
@@ -3642,7 +3642,7 @@ class Wo {
|
|
|
3642
3642
|
this.updated = this.endSN !== e.endSN || !!s || !!t || !this.live, this.advanced = this.endSN > e.endSN || t > 0 || t === 0 && s > 0, this.updated || this.advanced ? this.misses = Math.floor(e.misses * 0.6) : this.misses = e.misses + 1;
|
|
3643
3643
|
}
|
|
3644
3644
|
get hasProgramDateTime() {
|
|
3645
|
-
return this.fragments.length ?
|
|
3645
|
+
return this.fragments.length ? B(this.fragments[this.fragments.length - 1].programDateTime) : !1;
|
|
3646
3646
|
}
|
|
3647
3647
|
get levelTargetDuration() {
|
|
3648
3648
|
return this.averagetargetduration || this.targetduration || Yo;
|
|
@@ -3747,7 +3747,7 @@ var le = {
|
|
|
3747
3747
|
FAIRPLAY: "com.apple.fps",
|
|
3748
3748
|
PLAYREADY: "com.microsoft.playready",
|
|
3749
3749
|
WIDEVINE: "com.widevine.alpha"
|
|
3750
|
-
},
|
|
3750
|
+
}, ye = {
|
|
3751
3751
|
CLEARKEY: "org.w3.clearkey",
|
|
3752
3752
|
FAIRPLAY: "com.apple.streamingkeydelivery",
|
|
3753
3753
|
PLAYREADY: "com.microsoft.playready",
|
|
@@ -3755,26 +3755,26 @@ var le = {
|
|
|
3755
3755
|
};
|
|
3756
3756
|
function Ws(a) {
|
|
3757
3757
|
switch (a) {
|
|
3758
|
-
case
|
|
3758
|
+
case ye.FAIRPLAY:
|
|
3759
3759
|
return le.FAIRPLAY;
|
|
3760
|
-
case
|
|
3760
|
+
case ye.PLAYREADY:
|
|
3761
3761
|
return le.PLAYREADY;
|
|
3762
|
-
case
|
|
3762
|
+
case ye.WIDEVINE:
|
|
3763
3763
|
return le.WIDEVINE;
|
|
3764
|
-
case
|
|
3764
|
+
case ye.CLEARKEY:
|
|
3765
3765
|
return le.CLEARKEY;
|
|
3766
3766
|
}
|
|
3767
3767
|
}
|
|
3768
3768
|
function rr(a) {
|
|
3769
3769
|
switch (a) {
|
|
3770
3770
|
case le.FAIRPLAY:
|
|
3771
|
-
return
|
|
3771
|
+
return ye.FAIRPLAY;
|
|
3772
3772
|
case le.PLAYREADY:
|
|
3773
|
-
return
|
|
3773
|
+
return ye.PLAYREADY;
|
|
3774
3774
|
case le.WIDEVINE:
|
|
3775
|
-
return
|
|
3775
|
+
return ye.WIDEVINE;
|
|
3776
3776
|
case le.CLEARKEY:
|
|
3777
|
-
return
|
|
3777
|
+
return ye.CLEARKEY;
|
|
3778
3778
|
}
|
|
3779
3779
|
}
|
|
3780
3780
|
function Xt(a) {
|
|
@@ -3857,10 +3857,10 @@ class gs {
|
|
|
3857
3857
|
if (this.keyFormat === "identity")
|
|
3858
3858
|
return this.method === "SAMPLE-AES";
|
|
3859
3859
|
switch (this.keyFormat) {
|
|
3860
|
-
case
|
|
3861
|
-
case
|
|
3862
|
-
case
|
|
3863
|
-
case
|
|
3860
|
+
case ye.FAIRPLAY:
|
|
3861
|
+
case ye.WIDEVINE:
|
|
3862
|
+
case ye.PLAYREADY:
|
|
3863
|
+
case ye.CLEARKEY:
|
|
3864
3864
|
return ["ISO-23001-7", "SAMPLE-AES", "SAMPLE-AES-CENC", "SAMPLE-AES-CTR"].indexOf(this.method) !== -1;
|
|
3865
3865
|
}
|
|
3866
3866
|
}
|
|
@@ -3879,13 +3879,13 @@ class gs {
|
|
|
3879
3879
|
const t = zo(this.uri);
|
|
3880
3880
|
if (t)
|
|
3881
3881
|
switch (this.keyFormat) {
|
|
3882
|
-
case
|
|
3882
|
+
case ye.WIDEVINE:
|
|
3883
3883
|
if (this.pssh = t, !this.keyId && t.length >= 22) {
|
|
3884
3884
|
const s = t.length - 22;
|
|
3885
3885
|
this.keyId = t.subarray(s, s + 16);
|
|
3886
3886
|
}
|
|
3887
3887
|
break;
|
|
3888
|
-
case
|
|
3888
|
+
case ye.PLAYREADY: {
|
|
3889
3889
|
const s = new Uint8Array([154, 4, 240, 121, 152, 64, 66, 134, 171, 146, 230, 91, 224, 136, 95, 149]);
|
|
3890
3890
|
this.pssh = io(s, null, t), this.keyId = Jo(t);
|
|
3891
3891
|
break;
|
|
@@ -4054,16 +4054,16 @@ class Ne {
|
|
|
4054
4054
|
return l.playlistParsingError = new Error("Missing format identifier #EXTM3U"), l;
|
|
4055
4055
|
for (; (S = As.exec(e)) !== null; ) {
|
|
4056
4056
|
R && (R = !1, y = new ys(i, c), y.playlistOffset = E, y.start = E, y.sn = f, y.cc = p, T && (y.bitrate = T), y.level = s, d && (y.initSegment = d, d.rawProgramDateTime && (y.rawProgramDateTime = d.rawProgramDateTime, d.rawProgramDateTime = null), D && (y.setByteRange(D), D = null)));
|
|
4057
|
-
const
|
|
4058
|
-
if (
|
|
4059
|
-
y.duration = parseFloat(
|
|
4060
|
-
const
|
|
4061
|
-
y.title =
|
|
4057
|
+
const U = S[1];
|
|
4058
|
+
if (U) {
|
|
4059
|
+
y.duration = parseFloat(U);
|
|
4060
|
+
const N = (" " + S[2]).slice(1);
|
|
4061
|
+
y.title = N || null, y.tagList.push(N ? ["INF", U, N] : ["INF", U]);
|
|
4062
4062
|
} else if (S[3]) {
|
|
4063
|
-
if (
|
|
4063
|
+
if (B(y.duration)) {
|
|
4064
4064
|
y.playlistOffset = E, y.start = E, C && dr(y, C, l), y.sn = f, y.level = s, y.cc = p, h.push(y);
|
|
4065
|
-
const
|
|
4066
|
-
y.relurl = Hs(l,
|
|
4065
|
+
const N = (" " + S[3]).slice(1);
|
|
4066
|
+
y.relurl = Hs(l, N), js(y, v, u), v = y, E += y.duration, f++, g = 0, R = !0;
|
|
4067
4067
|
}
|
|
4068
4068
|
} else {
|
|
4069
4069
|
if (S = S[0].match(sl), !S) {
|
|
@@ -4072,93 +4072,93 @@ class Ne {
|
|
|
4072
4072
|
}
|
|
4073
4073
|
for (L = 1; L < S.length && S[L] === void 0; L++)
|
|
4074
4074
|
;
|
|
4075
|
-
const
|
|
4076
|
-
switch (
|
|
4075
|
+
const N = (" " + S[L]).slice(1), _ = (" " + S[L + 1]).slice(1), $ = S[L + 2] ? (" " + S[L + 2]).slice(1) : null;
|
|
4076
|
+
switch (N) {
|
|
4077
4077
|
case "BYTERANGE":
|
|
4078
|
-
v ? y.setByteRange(
|
|
4078
|
+
v ? y.setByteRange(_, v) : y.setByteRange(_);
|
|
4079
4079
|
break;
|
|
4080
4080
|
case "PROGRAM-DATE-TIME":
|
|
4081
|
-
y.rawProgramDateTime =
|
|
4081
|
+
y.rawProgramDateTime = _, y.tagList.push(["PROGRAM-DATE-TIME", _]), x === -1 && (x = h.length);
|
|
4082
4082
|
break;
|
|
4083
4083
|
case "PLAYLIST-TYPE":
|
|
4084
|
-
l.type && Ge(l,
|
|
4084
|
+
l.type && Ge(l, N, S), l.type = _.toUpperCase();
|
|
4085
4085
|
break;
|
|
4086
4086
|
case "MEDIA-SEQUENCE":
|
|
4087
|
-
l.startSN !== 0 ? Ge(l,
|
|
4087
|
+
l.startSN !== 0 ? Ge(l, N, S) : h.length > 0 && fr(l, N, S), f = l.startSN = parseInt(_);
|
|
4088
4088
|
break;
|
|
4089
4089
|
case "SKIP": {
|
|
4090
|
-
l.skippedSegments && Ge(l,
|
|
4091
|
-
const
|
|
4092
|
-
if (
|
|
4090
|
+
l.skippedSegments && Ge(l, N, S);
|
|
4091
|
+
const w = new oe(_, l), Y = w.decimalInteger("SKIPPED-SEGMENTS");
|
|
4092
|
+
if (B(Y)) {
|
|
4093
4093
|
l.skippedSegments += Y;
|
|
4094
|
-
for (let
|
|
4094
|
+
for (let M = Y; M--; )
|
|
4095
4095
|
h.push(null);
|
|
4096
4096
|
f += Y;
|
|
4097
4097
|
}
|
|
4098
|
-
const H =
|
|
4098
|
+
const H = w.enumeratedString("RECENTLY-REMOVED-DATERANGES");
|
|
4099
4099
|
H && (l.recentlyRemovedDateranges = (l.recentlyRemovedDateranges || []).concat(H.split(" ")));
|
|
4100
4100
|
break;
|
|
4101
4101
|
}
|
|
4102
4102
|
case "TARGETDURATION":
|
|
4103
|
-
l.targetduration !== 0 && Ge(l,
|
|
4103
|
+
l.targetduration !== 0 && Ge(l, N, S), l.targetduration = Math.max(parseInt(_), 1);
|
|
4104
4104
|
break;
|
|
4105
4105
|
case "VERSION":
|
|
4106
|
-
l.version !== null && Ge(l,
|
|
4106
|
+
l.version !== null && Ge(l, N, S), l.version = parseInt(_);
|
|
4107
4107
|
break;
|
|
4108
4108
|
case "INDEPENDENT-SEGMENTS":
|
|
4109
4109
|
break;
|
|
4110
4110
|
case "ENDLIST":
|
|
4111
|
-
l.live || Ge(l,
|
|
4111
|
+
l.live || Ge(l, N, S), l.live = !1;
|
|
4112
4112
|
break;
|
|
4113
4113
|
case "#":
|
|
4114
|
-
(
|
|
4114
|
+
(_ || $) && y.tagList.push($ ? [_, $] : [_]);
|
|
4115
4115
|
break;
|
|
4116
4116
|
case "DISCONTINUITY":
|
|
4117
4117
|
p++, y.tagList.push(["DIS"]);
|
|
4118
4118
|
break;
|
|
4119
4119
|
case "GAP":
|
|
4120
|
-
y.gap = !0, y.tagList.push([
|
|
4120
|
+
y.gap = !0, y.tagList.push([N]);
|
|
4121
4121
|
break;
|
|
4122
4122
|
case "BITRATE":
|
|
4123
|
-
y.tagList.push([
|
|
4123
|
+
y.tagList.push([N, _]), T = parseInt(_) * 1e3, B(T) ? y.bitrate = T : T = 0;
|
|
4124
4124
|
break;
|
|
4125
4125
|
case "DATERANGE": {
|
|
4126
|
-
const
|
|
4127
|
-
l.dateRangeTagCount++, Y.isValid || l.skippedSegments ? l.dateRanges[Y.id] = Y : ee.warn(`Ignoring invalid DATERANGE tag: "${
|
|
4126
|
+
const w = new oe(_, l), Y = new mn(w, l.dateRanges[w.ID], l.dateRangeTagCount);
|
|
4127
|
+
l.dateRangeTagCount++, Y.isValid || l.skippedSegments ? l.dateRanges[Y.id] = Y : ee.warn(`Ignoring invalid DATERANGE tag: "${_}"`), y.tagList.push(["EXT-X-DATERANGE", _]);
|
|
4128
4128
|
break;
|
|
4129
4129
|
}
|
|
4130
4130
|
case "DEFINE": {
|
|
4131
4131
|
{
|
|
4132
|
-
const
|
|
4133
|
-
"IMPORT" in
|
|
4132
|
+
const w = new oe(_, l);
|
|
4133
|
+
"IMPORT" in w ? Go(l, w, n) : sr(l, w, t);
|
|
4134
4134
|
}
|
|
4135
4135
|
break;
|
|
4136
4136
|
}
|
|
4137
4137
|
case "DISCONTINUITY-SEQUENCE":
|
|
4138
|
-
l.startCC !== 0 ? Ge(l,
|
|
4138
|
+
l.startCC !== 0 ? Ge(l, N, S) : h.length > 0 && fr(l, N, S), l.startCC = p = parseInt(_);
|
|
4139
4139
|
break;
|
|
4140
4140
|
case "KEY": {
|
|
4141
|
-
const
|
|
4142
|
-
if (
|
|
4143
|
-
if (
|
|
4141
|
+
const w = or(_, t, l);
|
|
4142
|
+
if (w.isSupported()) {
|
|
4143
|
+
if (w.method === "NONE") {
|
|
4144
4144
|
C = void 0;
|
|
4145
4145
|
break;
|
|
4146
4146
|
}
|
|
4147
4147
|
C || (C = {});
|
|
4148
|
-
const Y = C[
|
|
4149
|
-
Y != null && Y.matches(
|
|
4148
|
+
const Y = C[w.keyFormat];
|
|
4149
|
+
Y != null && Y.matches(w) || (Y && (C = se({}, C)), C[w.keyFormat] = w);
|
|
4150
4150
|
} else
|
|
4151
|
-
ee.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: "${
|
|
4151
|
+
ee.warn(`[Keys] Ignoring invalid EXT-X-KEY tag: "${_}"`);
|
|
4152
4152
|
break;
|
|
4153
4153
|
}
|
|
4154
4154
|
case "START":
|
|
4155
|
-
l.startTimeOffset = lr(
|
|
4155
|
+
l.startTimeOffset = lr(_);
|
|
4156
4156
|
break;
|
|
4157
4157
|
case "MAP": {
|
|
4158
|
-
const
|
|
4158
|
+
const w = new oe(_, l);
|
|
4159
4159
|
if (y.duration) {
|
|
4160
4160
|
const Y = new ys(i, c);
|
|
4161
|
-
ur(Y,
|
|
4161
|
+
ur(Y, w, s, C), d = Y, y.initSegment = d, d.rawProgramDateTime && !y.rawProgramDateTime && (y.rawProgramDateTime = d.rawProgramDateTime);
|
|
4162
4162
|
} else {
|
|
4163
4163
|
const Y = y.byteRangeEndOffset;
|
|
4164
4164
|
if (Y) {
|
|
@@ -4166,36 +4166,36 @@ class Ne {
|
|
|
4166
4166
|
D = `${Y - H}@${H}`;
|
|
4167
4167
|
} else
|
|
4168
4168
|
D = null;
|
|
4169
|
-
ur(y,
|
|
4169
|
+
ur(y, w, s, C), d = y, R = !0;
|
|
4170
4170
|
}
|
|
4171
4171
|
d.cc = p;
|
|
4172
4172
|
break;
|
|
4173
4173
|
}
|
|
4174
4174
|
case "SERVER-CONTROL": {
|
|
4175
|
-
A && Ge(l,
|
|
4175
|
+
A && Ge(l, N, S), A = new oe(_), l.canBlockReload = A.bool("CAN-BLOCK-RELOAD"), l.canSkipUntil = A.optionalFloat("CAN-SKIP-UNTIL", 0), l.canSkipDateRanges = l.canSkipUntil > 0 && A.bool("CAN-SKIP-DATERANGES"), l.partHoldBack = A.optionalFloat("PART-HOLD-BACK", 0), l.holdBack = A.optionalFloat("HOLD-BACK", 0);
|
|
4176
4176
|
break;
|
|
4177
4177
|
}
|
|
4178
4178
|
case "PART-INF": {
|
|
4179
|
-
l.partTarget && Ge(l,
|
|
4180
|
-
const
|
|
4181
|
-
l.partTarget =
|
|
4179
|
+
l.partTarget && Ge(l, N, S);
|
|
4180
|
+
const w = new oe(_);
|
|
4181
|
+
l.partTarget = w.decimalFloatingPoint("PART-TARGET");
|
|
4182
4182
|
break;
|
|
4183
4183
|
}
|
|
4184
4184
|
case "PART": {
|
|
4185
|
-
let
|
|
4186
|
-
|
|
4187
|
-
const Y = g > 0 ?
|
|
4188
|
-
|
|
4185
|
+
let w = l.partList;
|
|
4186
|
+
w || (w = l.partList = []);
|
|
4187
|
+
const Y = g > 0 ? w[w.length - 1] : void 0, H = g++, M = new oe(_, l), F = new Va(M, y, c, H, Y);
|
|
4188
|
+
w.push(F), y.duration += F.duration;
|
|
4189
4189
|
break;
|
|
4190
4190
|
}
|
|
4191
4191
|
case "PRELOAD-HINT": {
|
|
4192
|
-
const
|
|
4193
|
-
l.preloadHint =
|
|
4192
|
+
const w = new oe(_, l);
|
|
4193
|
+
l.preloadHint = w;
|
|
4194
4194
|
break;
|
|
4195
4195
|
}
|
|
4196
4196
|
case "RENDITION-REPORT": {
|
|
4197
|
-
const
|
|
4198
|
-
l.renditionReports = l.renditionReports || [], l.renditionReports.push(
|
|
4197
|
+
const w = new oe(_, l);
|
|
4198
|
+
l.renditionReports = l.renditionReports || [], l.renditionReports.push(w);
|
|
4199
4199
|
break;
|
|
4200
4200
|
}
|
|
4201
4201
|
default:
|
|
@@ -4205,14 +4205,14 @@ class Ne {
|
|
|
4205
4205
|
}
|
|
4206
4206
|
}
|
|
4207
4207
|
v && !v.relurl ? (h.pop(), E -= v.duration, l.partList && (l.fragmentHint = v)) : l.partList && (js(y, v, u), y.cc = p, l.fragmentHint = y, C && dr(y, C, l)), l.targetduration || (l.playlistParsingError = new Error("#EXT-X-TARGETDURATION is required"));
|
|
4208
|
-
const k = h.length,
|
|
4208
|
+
const k = h.length, O = h[0], K = h[k - 1];
|
|
4209
4209
|
if (E += l.skippedSegments * l.targetduration, E > 0 && k && K) {
|
|
4210
4210
|
l.averagetargetduration = E / k;
|
|
4211
|
-
const
|
|
4212
|
-
l.endSN =
|
|
4211
|
+
const U = K.sn;
|
|
4212
|
+
l.endSN = U !== "initSegment" ? U : 0, l.live || (K.endList = !0), O && l.startCC === void 0 && (l.startCC = O.cc), x > 0 && (rl(h, x), O && u.unshift(O));
|
|
4213
4213
|
} else
|
|
4214
4214
|
l.endSN = 0, l.startCC = 0;
|
|
4215
|
-
return l.fragmentHint && (E += l.fragmentHint.duration), l.totalduration = E, u.length && l.dateRangeTagCount &&
|
|
4215
|
+
return l.fragmentHint && (E += l.fragmentHint.duration), l.totalduration = E, u.length && l.dateRangeTagCount && O && Tn(u, l), l.endCC = p, l;
|
|
4216
4216
|
}
|
|
4217
4217
|
}
|
|
4218
4218
|
function Tn(a, e) {
|
|
@@ -4264,7 +4264,7 @@ function or(a, e, t) {
|
|
|
4264
4264
|
}
|
|
4265
4265
|
function lr(a) {
|
|
4266
4266
|
const t = new oe(a).decimalFloatingPoint("TIME-OFFSET");
|
|
4267
|
-
return
|
|
4267
|
+
return B(t) ? t : null;
|
|
4268
4268
|
}
|
|
4269
4269
|
function cr(a, e) {
|
|
4270
4270
|
let t = (a || "").split(/[ ,]+/).filter((s) => s);
|
|
@@ -4307,7 +4307,7 @@ function fr(a, e, t) {
|
|
|
4307
4307
|
}
|
|
4308
4308
|
function xs(a, e) {
|
|
4309
4309
|
const t = e.startPTS;
|
|
4310
|
-
if (
|
|
4310
|
+
if (B(t)) {
|
|
4311
4311
|
let s = 0, i;
|
|
4312
4312
|
e.sn > a.sn ? (s = t - a.start, i = a) : (s = a.start - t, i = e), i.duration !== s && i.setDuration(s);
|
|
4313
4313
|
} else e.sn > a.sn ? a.cc === e.cc && a.minEndPTS ? e.setStart(a.start + (a.minEndPTS - a.start)) : e.setStart(a.start + a.duration) : e.setStart(Math.max(a.start - e.duration, 0));
|
|
@@ -4316,9 +4316,9 @@ function yn(a, e, t, s, i, r) {
|
|
|
4316
4316
|
s - t <= 0 && (ee.warn("Fragment should have a positive duration", e), s = t + e.duration, r = i + e.duration);
|
|
4317
4317
|
let o = t, c = s;
|
|
4318
4318
|
const l = e.startPTS, h = e.endPTS;
|
|
4319
|
-
if (
|
|
4319
|
+
if (B(l)) {
|
|
4320
4320
|
const p = Math.abs(l - t);
|
|
4321
|
-
|
|
4321
|
+
B(e.deltaPTS) ? e.deltaPTS = Math.max(p, e.deltaPTS) : e.deltaPTS = p, o = Math.max(t, l), t = Math.min(t, l), i = Math.min(i, e.startDTS), c = Math.min(s, h), s = Math.max(s, h), r = Math.max(r, e.endDTS);
|
|
4322
4322
|
}
|
|
4323
4323
|
const u = t - e.start;
|
|
4324
4324
|
e.start !== 0 && e.setStart(t), e.setDuration(s - e.start), e.startPTS = t, e.maxStartPTS = o, e.startDTS = i, e.endPTS = s, e.minEndPTS = c, e.endDTS = r;
|
|
@@ -4354,7 +4354,7 @@ function nl(a, e) {
|
|
|
4354
4354
|
d[g].cc += f;
|
|
4355
4355
|
e.endCC = d[d.length - 1].cc;
|
|
4356
4356
|
}
|
|
4357
|
-
|
|
4357
|
+
B(l.startPTS) && B(l.endPTS) && (h.setStart(h.startPTS = l.startPTS), h.startDTS = l.startDTS, h.maxStartPTS = l.maxStartPTS, h.endPTS = l.endPTS, h.endDTS = l.endDTS, h.minEndPTS = l.minEndPTS, h.setDuration(l.endPTS - l.startPTS), h.duration && (i = h), e.PTSKnown = e.alignedSliding = !0), l.hasStreams && (h.elementaryStreams = l.elementaryStreams), h.loader = l.loader, l.hasStats && (h.stats = l.stats), l.initSegment && (h.initSegment = l.initSegment, t = l.initSegment);
|
|
4358
4358
|
});
|
|
4359
4359
|
const r = e.fragments, n = e.fragmentHint ? r.concat(e.fragmentHint) : r;
|
|
4360
4360
|
if (t && n.forEach((l) => {
|
|
@@ -4583,7 +4583,7 @@ class fi extends fn {
|
|
|
4583
4583
|
mediaBuffer: l,
|
|
4584
4584
|
state: h
|
|
4585
4585
|
} = this, u = c ? c.currentTime : 0, d = j.bufferInfo(l || c, u, n.maxBufferHole), f = !d.len;
|
|
4586
|
-
if (this.log(`Media seeking to ${
|
|
4586
|
+
if (this.log(`Media seeking to ${B(u) ? u.toFixed(3) : u}, state: ${h}, ${f ? "out of" : "in"} buffer`), this.state === P.ENDED)
|
|
4587
4587
|
this.resetLoadingState();
|
|
4588
4588
|
else if (o) {
|
|
4589
4589
|
const g = n.maxFragLookUpTolerance, E = o.start - g, p = o.start + o.duration + g;
|
|
@@ -4799,7 +4799,7 @@ class fi extends fn {
|
|
|
4799
4799
|
const c = self.performance.now();
|
|
4800
4800
|
return this.decrypter.decrypt(new Uint8Array(n), o.key.buffer, o.iv.buffer, di(o.method)).catch((l) => {
|
|
4801
4801
|
throw i.trigger(m.ERROR, {
|
|
4802
|
-
type:
|
|
4802
|
+
type: V.MEDIA_ERROR,
|
|
4803
4803
|
details: b.FRAG_DECRYPT_ERROR,
|
|
4804
4804
|
fatal: !1,
|
|
4805
4805
|
error: l,
|
|
@@ -4909,7 +4909,7 @@ class fi extends fn {
|
|
|
4909
4909
|
this.log(`LL-Part loading OFF after next part miss @${s.toFixed(2)}`), this.loadingParts = !1;
|
|
4910
4910
|
else if (!e.url)
|
|
4911
4911
|
return Promise.resolve(null);
|
|
4912
|
-
this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e, !1)}) cc: ${e.cc} ${n ? "[" + n.startSN + "-" + n.endSN + "]" : ""}, target: ${parseFloat(s.toFixed(3))}`),
|
|
4912
|
+
this.log(`Loading ${e.type} sn: ${e.sn} of ${this.fragInfo(e, !1)}) cc: ${e.cc} ${n ? "[" + n.startSN + "-" + n.endSN + "]" : ""}, target: ${parseFloat(s.toFixed(3))}`), B(e.sn) && !this.bitrateTest && (this.nextLoadPosition = e.start + e.duration), this.state = P.FRAG_LOADING;
|
|
4913
4913
|
const l = this.config.progressive;
|
|
4914
4914
|
let h;
|
|
4915
4915
|
return l && o ? h = o.then((u) => !u || this.fragContextChanged(u == null ? void 0 : u.frag) ? null : this.fragmentLoader.load(e, i)).catch((u) => this.handleFragLoadError(u)) : h = Promise.all([this.fragmentLoader.load(e, l ? i : void 0), o]).then(([u]) => (!l && u && i && i(u), u)).catch((u) => this.handleFragLoadError(u)), this.hls.trigger(m.FRAG_LOADING, {
|
|
@@ -4945,7 +4945,7 @@ class fi extends fn {
|
|
|
4945
4945
|
e.data && t.details === b.INTERNAL_ABORTED ? this.handleFragLoadAborted(t.frag, t.part) : this.hls.trigger(m.ERROR, t);
|
|
4946
4946
|
} else
|
|
4947
4947
|
this.hls.trigger(m.ERROR, {
|
|
4948
|
-
type:
|
|
4948
|
+
type: V.OTHER_ERROR,
|
|
4949
4949
|
details: b.INTERNAL_EXCEPTION,
|
|
4950
4950
|
err: e,
|
|
4951
4951
|
error: e,
|
|
@@ -5042,7 +5042,7 @@ class fi extends fn {
|
|
|
5042
5042
|
getFwdBufferInfo(e, t) {
|
|
5043
5043
|
var s;
|
|
5044
5044
|
const i = this.getLoadPosition();
|
|
5045
|
-
if (!
|
|
5045
|
+
if (!B(i))
|
|
5046
5046
|
return null;
|
|
5047
5047
|
const n = this.lastCurrentTime > i || (s = this.media) != null && s.paused ? 0 : this.config.maxBufferHole;
|
|
5048
5048
|
return this.getFwdBufferInfoAtPos(e, i, t, n);
|
|
@@ -5230,7 +5230,7 @@ class fi extends fn {
|
|
|
5230
5230
|
const i = e.fragments.length;
|
|
5231
5231
|
if (!i)
|
|
5232
5232
|
return this.warn("No fragments in live playlist"), 0;
|
|
5233
|
-
const r = e.fragmentStart, n = !t, o = e.alignedSliding &&
|
|
5233
|
+
const r = e.fragmentStart, n = !t, o = e.alignedSliding && B(r);
|
|
5234
5234
|
if (n || !o && !r) {
|
|
5235
5235
|
hl(s, e);
|
|
5236
5236
|
const c = e.fragmentStart;
|
|
@@ -5247,7 +5247,7 @@ class fi extends fn {
|
|
|
5247
5247
|
const i = this.timelineOffset;
|
|
5248
5248
|
if (s === -1) {
|
|
5249
5249
|
const r = this.startTimeOffset !== null, n = r ? this.startTimeOffset : e.startTimeOffset;
|
|
5250
|
-
n !== null &&
|
|
5250
|
+
n !== null && B(n) ? (s = t + n, n < 0 && (s += e.edge), s = Math.min(Math.max(t, s), t + e.totalduration), this.log(`Setting startPosition to ${s} for start time offset ${n} found in ${r ? "multivariant" : "media"} playlist`), this.startPosition = s) : e.live ? (s = this.hls.liveSyncPosition || t, this.log(`Setting startPosition to -1 to start at live edge ${s}`), this.startPosition = -1) : (this.log("setting startPosition to 0 by default"), this.startPosition = s = 0), this.lastCurrentTime = s + i;
|
|
5251
5251
|
}
|
|
5252
5252
|
this.nextLoadPosition = s + i;
|
|
5253
5253
|
}
|
|
@@ -5365,7 +5365,7 @@ class fi extends fn {
|
|
|
5365
5365
|
if (s.fragmentError === 0 && this.treatAsGap(e, s), ((o = this.transmuxer) == null ? void 0 : o.error) === null) {
|
|
5366
5366
|
const c = new Error(`Found no media in fragment ${e.sn} of ${this.playlistLabel()} ${e.level} resetting transmuxer to fallback to playlist timing`);
|
|
5367
5367
|
if (this.warn(c.message), this.hls.trigger(m.ERROR, {
|
|
5368
|
-
type:
|
|
5368
|
+
type: V.MEDIA_ERROR,
|
|
5369
5369
|
details: b.FRAG_PARSING_ERROR,
|
|
5370
5370
|
fatal: !1,
|
|
5371
5371
|
error: c,
|
|
@@ -5612,7 +5612,7 @@ function yl(a, e, t, s) {
|
|
|
5612
5612
|
if (n > 12) {
|
|
5613
5613
|
const f = new Error(`invalid ADTS sampling index:${n}`);
|
|
5614
5614
|
a.emit(m.ERROR, m.ERROR, {
|
|
5615
|
-
type:
|
|
5615
|
+
type: V.MEDIA_ERROR,
|
|
5616
5616
|
details: b.FRAG_PARSING_ERROR,
|
|
5617
5617
|
fatal: !0,
|
|
5618
5618
|
error: f,
|
|
@@ -5745,8 +5745,12 @@ function Cl(a) {
|
|
|
5745
5745
|
mimeType: null,
|
|
5746
5746
|
pictureType: null
|
|
5747
5747
|
}, t = 3;
|
|
5748
|
-
if (a.size < 2
|
|
5748
|
+
if (a.size < 2)
|
|
5749
|
+
return;
|
|
5750
|
+
if (a.data[0] !== t) {
|
|
5751
|
+
console.log("Ignore frame with unrecognized character encoding");
|
|
5749
5752
|
return;
|
|
5753
|
+
}
|
|
5750
5754
|
const s = a.data.subarray(1).indexOf(0);
|
|
5751
5755
|
if (s === -1)
|
|
5752
5756
|
return;
|
|
@@ -5899,7 +5903,7 @@ class Ti {
|
|
|
5899
5903
|
this.cachedData && (e = De(this.cachedData, e), this.cachedData = null);
|
|
5900
5904
|
let s = _t(e, 0), i = s ? s.length : 0, r;
|
|
5901
5905
|
const n = this._audioTrack, o = this._id3Track, c = s ? Ei(s) : void 0, l = e.length;
|
|
5902
|
-
for ((this.basePTS === null || this.frameIndex === 0 &&
|
|
5906
|
+
for ((this.basePTS === null || this.frameIndex === 0 && B(c)) && (this.basePTS = Bl(c, t, this.initPTS), this.lastPTS = this.basePTS), this.lastPTS === null && (this.lastPTS = this.basePTS), s && s.length > 0 && o.samples.push({
|
|
5903
5907
|
pts: this.lastPTS,
|
|
5904
5908
|
dts: this.lastPTS,
|
|
5905
5909
|
data: s,
|
|
@@ -5945,7 +5949,7 @@ class Ti {
|
|
|
5945
5949
|
}
|
|
5946
5950
|
}
|
|
5947
5951
|
const Bl = (a, e, t) => {
|
|
5948
|
-
if (
|
|
5952
|
+
if (B(a))
|
|
5949
5953
|
return a * 90;
|
|
5950
5954
|
const s = t ? t.baseTime * 9e4 / t.timescale : 0;
|
|
5951
5955
|
return e * 9e4 + s;
|
|
@@ -6316,7 +6320,7 @@ class jl {
|
|
|
6316
6320
|
}
|
|
6317
6321
|
}
|
|
6318
6322
|
function yr(a, e) {
|
|
6319
|
-
return
|
|
6323
|
+
return B(a.presentationTime) ? a.presentationTime / a.timeScale : e + a.presentationTimeDelta / a.timeScale;
|
|
6320
6324
|
}
|
|
6321
6325
|
class ql {
|
|
6322
6326
|
constructor(e, t, s) {
|
|
@@ -6836,8 +6840,8 @@ class Sr extends Kn {
|
|
|
6836
6840
|
const L = t.readUEG(), C = t.readUEG(), x = t.readBoolean();
|
|
6837
6841
|
let R = 0, D = 0, A = 0, k = 0;
|
|
6838
6842
|
x && (R += t.readUEG(), D += t.readUEG(), A += t.readUEG(), k += t.readUEG());
|
|
6839
|
-
const
|
|
6840
|
-
for (let J =
|
|
6843
|
+
const O = t.readUEG(), K = t.readUEG(), U = t.readUEG(), N = t.readBoolean();
|
|
6844
|
+
for (let J = N ? 0 : s; J <= s; J++)
|
|
6841
6845
|
t.skipUEG(), t.skipUEG(), t.skipUEG();
|
|
6842
6846
|
if (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.readBoolean() && t.readBoolean())
|
|
6843
6847
|
for (let ge = 0; ge < 4; ge++)
|
|
@@ -6851,12 +6855,12 @@ class Sr extends Kn {
|
|
|
6851
6855
|
t.readEG();
|
|
6852
6856
|
}
|
|
6853
6857
|
t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.skipUEG(), t.skipUEG(), t.readBoolean());
|
|
6854
|
-
const
|
|
6858
|
+
const w = t.readUEG();
|
|
6855
6859
|
let Y = 0;
|
|
6856
|
-
for (let J = 0; J <
|
|
6860
|
+
for (let J = 0; J < w; J++) {
|
|
6857
6861
|
let ge = !1;
|
|
6858
6862
|
if (J !== 0 && (ge = t.readBoolean()), ge) {
|
|
6859
|
-
J ===
|
|
6863
|
+
J === w && t.readUEG(), t.readBoolean(), t.readUEG();
|
|
6860
6864
|
let Le = 0;
|
|
6861
6865
|
for (let Xe = 0; Xe <= Y; Xe++) {
|
|
6862
6866
|
const Ce = t.readBoolean();
|
|
@@ -6876,18 +6880,18 @@ class Sr extends Kn {
|
|
|
6876
6880
|
if (t.readBoolean()) {
|
|
6877
6881
|
const J = t.readUEG();
|
|
6878
6882
|
for (let ge = 0; ge < J; ge++) {
|
|
6879
|
-
for (let Le = 0; Le <
|
|
6883
|
+
for (let Le = 0; Le < U + 4; Le++)
|
|
6880
6884
|
t.readBits(1);
|
|
6881
6885
|
t.readBits(1);
|
|
6882
6886
|
}
|
|
6883
6887
|
}
|
|
6884
|
-
let
|
|
6888
|
+
let M = 0, F = 1, q = 1, X = !0, te = 1, Z = 0;
|
|
6885
6889
|
t.readBoolean(), t.readBoolean();
|
|
6886
6890
|
let ae = !1;
|
|
6887
6891
|
if (t.readBoolean()) {
|
|
6888
6892
|
if (t.readBoolean()) {
|
|
6889
6893
|
const Ze = t.readUByte(), Ri = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2], Ft = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1];
|
|
6890
|
-
Ze > 0 && Ze < 16 ? (
|
|
6894
|
+
Ze > 0 && Ze < 16 ? (F = Ri[Ze - 1], q = Ft[Ze - 1]) : Ze === 255 && (F = t.readBits(16), q = t.readBits(16));
|
|
6891
6895
|
}
|
|
6892
6896
|
if (t.readBoolean() && t.readBoolean(), t.readBoolean() && (t.readBits(3), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.readUByte(), t.readUByte())), t.readBoolean() && (t.readUEG(), t.readUEG()), t.readBoolean(), t.readBoolean(), t.readBoolean(), ae = t.readBoolean(), ae && (R += t.readUEG(), D += t.readUEG(), A += t.readUEG(), k += t.readUEG()), t.readBoolean() && (te = t.readBits(32), Z = t.readBits(32), t.readBoolean() && t.readUEG(), t.readBoolean())) {
|
|
6893
6897
|
const Ft = t.readBoolean(), bi = t.readBoolean();
|
|
@@ -6907,12 +6911,12 @@ class Sr extends Kn {
|
|
|
6907
6911
|
t.readUEG(), t.readUEG(), yt && (t.readUEG(), t.readUEG()), t.skipBits(1);
|
|
6908
6912
|
}
|
|
6909
6913
|
}
|
|
6910
|
-
t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(),
|
|
6914
|
+
t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(), M = t.readUEG());
|
|
6911
6915
|
}
|
|
6912
|
-
let fe = L,
|
|
6916
|
+
let fe = L, Se = C;
|
|
6913
6917
|
if (x || ae) {
|
|
6914
6918
|
let J = 1, ge = 1;
|
|
6915
|
-
S === 1 ? J = ge = 2 : S == 2 && (J = 2), fe = L - J * D - J * R,
|
|
6919
|
+
S === 1 ? J = ge = 2 : S == 2 && (J = 2), fe = L - J * D - J * R, Se = C - ge * k - ge * A;
|
|
6916
6920
|
}
|
|
6917
6921
|
const Qe = i ? ["A", "B", "C"][i] : "", pa = o << 24 | c << 16 | l << 8 | h;
|
|
6918
6922
|
let ps = 0;
|
|
@@ -6928,10 +6932,10 @@ class Sr extends Kn {
|
|
|
6928
6932
|
general_profile_compatibility_flags: [o, c, l, h],
|
|
6929
6933
|
general_constraint_indicator_flags: [u, d, f, g, E, p],
|
|
6930
6934
|
general_level_idc: T,
|
|
6931
|
-
bit_depth:
|
|
6932
|
-
bit_depth_luma_minus8:
|
|
6935
|
+
bit_depth: O + 8,
|
|
6936
|
+
bit_depth_luma_minus8: O,
|
|
6933
6937
|
bit_depth_chroma_minus8: K,
|
|
6934
|
-
min_spatial_segmentation_idc:
|
|
6938
|
+
min_spatial_segmentation_idc: M,
|
|
6935
6939
|
chroma_format_idc: S,
|
|
6936
6940
|
frame_rate: {
|
|
6937
6941
|
fixed: X,
|
|
@@ -6939,8 +6943,8 @@ class Sr extends Kn {
|
|
|
6939
6943
|
}
|
|
6940
6944
|
},
|
|
6941
6945
|
width: fe,
|
|
6942
|
-
height:
|
|
6943
|
-
pixelRatio: [
|
|
6946
|
+
height: Se,
|
|
6947
|
+
pixelRatio: [F, q]
|
|
6944
6948
|
};
|
|
6945
6949
|
}
|
|
6946
6950
|
readPPS(e) {
|
|
@@ -7094,8 +7098,8 @@ class je {
|
|
|
7094
7098
|
break;
|
|
7095
7099
|
case v: {
|
|
7096
7100
|
R && (k += e[k] + 1);
|
|
7097
|
-
const
|
|
7098
|
-
h =
|
|
7101
|
+
const O = Ql(e, k, this.typeSupported, s, this.observer, this.logger);
|
|
7102
|
+
h = O.videoPid, h > 0 && (n.pid = h, n.segmentCodec = O.segmentVideoCodec), d = O.audioPid, d > 0 && (o.pid = d, o.segmentCodec = O.segmentAudioCodec), f = O.id3Pid, f > 0 && (c.pid = f), p !== null && !T && (this.logger.warn(`MPEG-TS PMT found at ${x} after unknown PID '${p}'. Backtracking to sync byte @${S} to parse all TS packets.`), p = null, x = S - 188), T = this.pmtParsed = !0;
|
|
7099
7103
|
break;
|
|
7100
7104
|
}
|
|
7101
7105
|
case 17:
|
|
@@ -7350,7 +7354,7 @@ function Ql(a, e, t, s, i, r) {
|
|
|
7350
7354
|
}
|
|
7351
7355
|
function Qs(a, e, t, s) {
|
|
7352
7356
|
s.warn(`parsing error: ${e.message}`), a.emit(m.ERROR, m.ERROR, {
|
|
7353
|
-
type:
|
|
7357
|
+
type: V.MEDIA_ERROR,
|
|
7354
7358
|
details: b.FRAG_PARSING_ERROR,
|
|
7355
7359
|
fatal: !1,
|
|
7356
7360
|
levelRetry: t,
|
|
@@ -8677,30 +8681,30 @@ class Zt extends we {
|
|
|
8677
8681
|
if ((!T || S) && (!v || L) || this.ISGenerated || o) {
|
|
8678
8682
|
if (this.ISGenerated) {
|
|
8679
8683
|
var x, R, D, A;
|
|
8680
|
-
const
|
|
8681
|
-
(
|
|
8684
|
+
const U = this.videoTrackConfig;
|
|
8685
|
+
(U && (t.width !== U.width || t.height !== U.height || ((x = t.pixelRatio) == null ? void 0 : x[0]) !== ((R = U.pixelRatio) == null ? void 0 : R[0]) || ((D = t.pixelRatio) == null ? void 0 : D[1]) !== ((A = U.pixelRatio) == null ? void 0 : A[1])) || !U && L || this.nextAudioTs === null && S) && this.resetInitSegment();
|
|
8682
8686
|
}
|
|
8683
8687
|
this.ISGenerated || (u = this.generateIS(e, t, r, n));
|
|
8684
8688
|
const k = this.isVideoContiguous;
|
|
8685
|
-
let
|
|
8686
|
-
if (L && (
|
|
8687
|
-
if (g = !0,
|
|
8688
|
-
this.warn(`Dropped ${
|
|
8689
|
-
const
|
|
8690
|
-
t.samples = t.samples.slice(
|
|
8691
|
-
} else
|
|
8689
|
+
let O = -1, K;
|
|
8690
|
+
if (L && (O = rc(t.samples), !k && this.config.forceKeyFrameOnDiscontinuity))
|
|
8691
|
+
if (g = !0, O > 0) {
|
|
8692
|
+
this.warn(`Dropped ${O} out of ${y} video samples due to a missing keyframe`);
|
|
8693
|
+
const U = this.getVideoStartPts(t.samples);
|
|
8694
|
+
t.samples = t.samples.slice(O), t.dropped += O, p += (t.samples[0].pts - U) / t.inputTimeScale, K = p;
|
|
8695
|
+
} else O === -1 && (this.warn(`No keyframe found out of ${y} video samples`), g = !1);
|
|
8692
8696
|
if (this.ISGenerated) {
|
|
8693
8697
|
if (S && L) {
|
|
8694
|
-
const
|
|
8695
|
-
E += Math.max(0,
|
|
8698
|
+
const U = this.getVideoStartPts(t.samples), _ = (Re(e.samples[0].pts, U) - U) / t.inputTimeScale;
|
|
8699
|
+
E += Math.max(0, _), p += Math.max(0, -_);
|
|
8696
8700
|
}
|
|
8697
8701
|
if (S) {
|
|
8698
8702
|
if (e.samplerate || (this.warn("regenerate InitSegment as audio detected"), u = this.generateIS(e, t, r, n)), h = this.remuxAudio(e, E, this.isAudioContiguous, n, v || L || c === G.AUDIO ? p : void 0), L) {
|
|
8699
|
-
const
|
|
8700
|
-
t.inputTimeScale || (this.warn("regenerate InitSegment as video detected"), u = this.generateIS(e, t, r, n)), l = this.remuxVideo(t, p, k,
|
|
8703
|
+
const U = h ? h.endPTS - h.startPTS : 0;
|
|
8704
|
+
t.inputTimeScale || (this.warn("regenerate InitSegment as video detected"), u = this.generateIS(e, t, r, n)), l = this.remuxVideo(t, p, k, U);
|
|
8701
8705
|
}
|
|
8702
8706
|
} else L && (l = this.remuxVideo(t, p, k, 0));
|
|
8703
|
-
l && (l.firstKeyFrame =
|
|
8707
|
+
l && (l.firstKeyFrame = O, l.independent = O !== -1, l.firstKeyFramePTS = K);
|
|
8704
8708
|
}
|
|
8705
8709
|
}
|
|
8706
8710
|
return this.ISGenerated && this._initPTS && this._initDTS && (s.samples.length && (f = Hn(s, r, this._initPTS, this._initDTS)), i.samples.length && (d = Yn(i, r, this._initPTS))), {
|
|
@@ -8774,59 +8778,59 @@ class Zt extends we {
|
|
|
8774
8778
|
const r = e.inputTimeScale, n = e.samples, o = [], c = n.length, l = this._initPTS, h = l.baseTime * r / l.timescale;
|
|
8775
8779
|
let u = this.nextVideoTs, d = 8, f = this.videoSampleDuration, g, E, p = Number.POSITIVE_INFINITY, T = Number.NEGATIVE_INFINITY, v = !1;
|
|
8776
8780
|
if (!s || u === null) {
|
|
8777
|
-
const
|
|
8778
|
-
ht && u !== null && Math.abs(
|
|
8781
|
+
const M = h + t * r, F = n[0].pts - Re(n[0].dts, n[0].pts);
|
|
8782
|
+
ht && u !== null && Math.abs(M - F - (u + h)) < 15e3 ? s = !0 : u = M - F - h;
|
|
8779
8783
|
}
|
|
8780
8784
|
const y = u + h;
|
|
8781
|
-
for (let
|
|
8782
|
-
const
|
|
8783
|
-
|
|
8785
|
+
for (let M = 0; M < c; M++) {
|
|
8786
|
+
const F = n[M];
|
|
8787
|
+
F.pts = Re(F.pts, y), F.dts = Re(F.dts, y), F.dts < n[M > 0 ? M - 1 : M].dts && (v = !0);
|
|
8784
8788
|
}
|
|
8785
|
-
v && n.sort(function(
|
|
8786
|
-
const q =
|
|
8789
|
+
v && n.sort(function(M, F) {
|
|
8790
|
+
const q = M.dts - F.dts, X = M.pts - F.pts;
|
|
8787
8791
|
return q || X;
|
|
8788
8792
|
}), g = n[0].dts, E = n[n.length - 1].dts;
|
|
8789
8793
|
const S = E - g, L = S ? Math.round(S / (c - 1)) : f || e.inputTimeScale / 30;
|
|
8790
8794
|
if (s) {
|
|
8791
|
-
const
|
|
8792
|
-
if ((
|
|
8795
|
+
const M = g - y, F = M > L, q = M < -1;
|
|
8796
|
+
if ((F || q) && (F ? this.warn(`${(e.segmentCodec || "").toUpperCase()}: ${xt(M, !0)} ms (${M}dts) hole between fragments detected at ${t.toFixed(3)}`) : this.warn(`${(e.segmentCodec || "").toUpperCase()}: ${xt(-M, !0)} ms (${M}dts) overlapping between fragments detected at ${t.toFixed(3)}`), !q || y >= n[0].pts || ht)) {
|
|
8793
8797
|
g = y;
|
|
8794
|
-
const X = n[0].pts -
|
|
8795
|
-
if (
|
|
8798
|
+
const X = n[0].pts - M;
|
|
8799
|
+
if (F)
|
|
8796
8800
|
n[0].dts = g, n[0].pts = X;
|
|
8797
8801
|
else {
|
|
8798
8802
|
let te = !0;
|
|
8799
8803
|
for (let Z = 0; Z < n.length && !(n[Z].dts > X && te); Z++) {
|
|
8800
8804
|
const ae = n[Z].pts;
|
|
8801
|
-
if (n[Z].dts -=
|
|
8802
|
-
const
|
|
8803
|
-
te =
|
|
8805
|
+
if (n[Z].dts -= M, n[Z].pts -= M, Z < n.length - 1) {
|
|
8806
|
+
const ve = n[Z + 1].pts, fe = n[Z].pts, Se = ve <= fe, Qe = ve <= ae;
|
|
8807
|
+
te = Se == Qe;
|
|
8804
8808
|
}
|
|
8805
8809
|
}
|
|
8806
8810
|
}
|
|
8807
|
-
this.log(`Video: Initial PTS/DTS adjusted: ${xt(X, !0)}/${xt(g, !0)}, delta: ${xt(
|
|
8811
|
+
this.log(`Video: Initial PTS/DTS adjusted: ${xt(X, !0)}/${xt(g, !0)}, delta: ${xt(M, !0)} ms`);
|
|
8808
8812
|
}
|
|
8809
8813
|
}
|
|
8810
8814
|
g = Math.max(0, g);
|
|
8811
8815
|
let C = 0, x = 0, R = g;
|
|
8812
|
-
for (let
|
|
8813
|
-
const
|
|
8816
|
+
for (let M = 0; M < c; M++) {
|
|
8817
|
+
const F = n[M], q = F.units, X = q.length;
|
|
8814
8818
|
let te = 0;
|
|
8815
8819
|
for (let Z = 0; Z < X; Z++)
|
|
8816
8820
|
te += q[Z].data.length;
|
|
8817
|
-
x += te, C += X,
|
|
8821
|
+
x += te, C += X, F.length = te, F.dts < R ? (F.dts = R, R += L / 4 | 0 || 1) : R = F.dts, p = Math.min(F.pts, p), T = Math.max(F.pts, T);
|
|
8818
8822
|
}
|
|
8819
8823
|
E = n[c - 1].dts;
|
|
8820
8824
|
const D = x + 4 * C + 8;
|
|
8821
8825
|
let A;
|
|
8822
8826
|
try {
|
|
8823
8827
|
A = new Uint8Array(D);
|
|
8824
|
-
} catch (
|
|
8828
|
+
} catch (M) {
|
|
8825
8829
|
this.observer.emit(m.ERROR, m.ERROR, {
|
|
8826
|
-
type:
|
|
8830
|
+
type: V.MUX_ERROR,
|
|
8827
8831
|
details: b.REMUX_ALLOC_ERROR,
|
|
8828
8832
|
fatal: !1,
|
|
8829
|
-
error:
|
|
8833
|
+
error: M,
|
|
8830
8834
|
bytes: D,
|
|
8831
8835
|
reason: `fail allocating video mdat ${D}`
|
|
8832
8836
|
});
|
|
@@ -8834,51 +8838,51 @@ class Zt extends we {
|
|
|
8834
8838
|
}
|
|
8835
8839
|
const k = new DataView(A.buffer);
|
|
8836
8840
|
k.setUint32(0, D), A.set(I.types.mdat, 4);
|
|
8837
|
-
let
|
|
8838
|
-
for (let
|
|
8839
|
-
const
|
|
8841
|
+
let O = !1, K = Number.POSITIVE_INFINITY, U = Number.POSITIVE_INFINITY, N = Number.NEGATIVE_INFINITY, _ = Number.NEGATIVE_INFINITY;
|
|
8842
|
+
for (let M = 0; M < c; M++) {
|
|
8843
|
+
const F = n[M], q = F.units;
|
|
8840
8844
|
let X = 0;
|
|
8841
|
-
for (let ae = 0,
|
|
8842
|
-
const fe = q[ae],
|
|
8843
|
-
k.setUint32(d, Qe), d += 4, A.set(
|
|
8845
|
+
for (let ae = 0, ve = q.length; ae < ve; ae++) {
|
|
8846
|
+
const fe = q[ae], Se = fe.data, Qe = fe.data.byteLength;
|
|
8847
|
+
k.setUint32(d, Qe), d += 4, A.set(Se, d), d += Qe, X += 4 + Qe;
|
|
8844
8848
|
}
|
|
8845
8849
|
let te;
|
|
8846
|
-
if (
|
|
8847
|
-
f = n[
|
|
8850
|
+
if (M < c - 1)
|
|
8851
|
+
f = n[M + 1].dts - F.dts, te = n[M + 1].pts - F.pts;
|
|
8848
8852
|
else {
|
|
8849
|
-
const ae = this.config,
|
|
8850
|
-
if (te =
|
|
8851
|
-
const fe = Math.floor(ae.maxBufferHole * r),
|
|
8852
|
-
|
|
8853
|
+
const ae = this.config, ve = M > 0 ? F.dts - n[M - 1].dts : L;
|
|
8854
|
+
if (te = M > 0 ? F.pts - n[M - 1].pts : L, ae.stretchShortVideoTrack && this.nextAudioTs !== null) {
|
|
8855
|
+
const fe = Math.floor(ae.maxBufferHole * r), Se = (i ? p + i * r : this.nextAudioTs + h) - F.pts;
|
|
8856
|
+
Se > fe ? (f = Se - ve, f < 0 ? f = ve : O = !0, this.log(`It is approximately ${Se / 90} ms to the next segment; using duration ${f / 90} ms for the last video frame.`)) : f = ve;
|
|
8853
8857
|
} else
|
|
8854
|
-
f =
|
|
8858
|
+
f = ve;
|
|
8855
8859
|
}
|
|
8856
|
-
const Z = Math.round(
|
|
8857
|
-
K = Math.min(K, f),
|
|
8860
|
+
const Z = Math.round(F.pts - F.dts);
|
|
8861
|
+
K = Math.min(K, f), N = Math.max(N, f), U = Math.min(U, te), _ = Math.max(_, te), o.push(Ar(F.key, f, X, Z));
|
|
8858
8862
|
}
|
|
8859
8863
|
if (o.length) {
|
|
8860
8864
|
if (ht) {
|
|
8861
8865
|
if (ht < 70) {
|
|
8862
|
-
const
|
|
8863
|
-
|
|
8866
|
+
const M = o[0].flags;
|
|
8867
|
+
M.dependsOn = 2, M.isNonSync = 0;
|
|
8864
8868
|
}
|
|
8865
|
-
} else if (bs &&
|
|
8869
|
+
} else if (bs && _ - U < N - K && L / N < 0.025 && o[0].cts === 0) {
|
|
8866
8870
|
this.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");
|
|
8867
|
-
let
|
|
8868
|
-
for (let
|
|
8869
|
-
const X =
|
|
8870
|
-
if (
|
|
8871
|
-
const Z = X + o[
|
|
8872
|
-
o[
|
|
8871
|
+
let M = g;
|
|
8872
|
+
for (let F = 0, q = o.length; F < q; F++) {
|
|
8873
|
+
const X = M + o[F].duration, te = M + o[F].cts;
|
|
8874
|
+
if (F < q - 1) {
|
|
8875
|
+
const Z = X + o[F + 1].cts;
|
|
8876
|
+
o[F].duration = Z - te;
|
|
8873
8877
|
} else
|
|
8874
|
-
o[
|
|
8875
|
-
o[
|
|
8878
|
+
o[F].duration = F ? o[F - 1].duration : L;
|
|
8879
|
+
o[F].cts = 0, M = X;
|
|
8876
8880
|
}
|
|
8877
8881
|
}
|
|
8878
8882
|
}
|
|
8879
|
-
f =
|
|
8880
|
-
const
|
|
8881
|
-
this.nextVideoTs = u =
|
|
8883
|
+
f = O || !f ? L : f;
|
|
8884
|
+
const $ = E + f;
|
|
8885
|
+
this.nextVideoTs = u = $ - h, this.videoSampleDuration = f, this.isVideoContiguous = !0;
|
|
8882
8886
|
const H = {
|
|
8883
8887
|
data1: I.moof(e.sequenceNumber++, g, se(e, {
|
|
8884
8888
|
samples: o
|
|
@@ -8910,54 +8914,54 @@ class Zt extends we {
|
|
|
8910
8914
|
const n = e.inputTimeScale, o = e.samplerate ? e.samplerate : n, c = n / o, l = this.getSamplesPerFrame(e), h = l * c, u = this._initPTS, d = e.segmentCodec === "mp3" && this.typeSupported.mpeg, f = [], g = r !== void 0;
|
|
8911
8915
|
let E = e.samples, p = d ? 0 : 8, T = this.nextAudioTs || -1;
|
|
8912
8916
|
const v = u.baseTime * n / u.timescale, y = v + t * n;
|
|
8913
|
-
if (this.isAudioContiguous = s = s || E.length && T > 0 && (i && Math.abs(y - (T + v)) < 9e3 || Math.abs(Re(E[0].pts, y) - (T + v)) < 20 * h), E.forEach(function(
|
|
8914
|
-
|
|
8917
|
+
if (this.isAudioContiguous = s = s || E.length && T > 0 && (i && Math.abs(y - (T + v)) < 9e3 || Math.abs(Re(E[0].pts, y) - (T + v)) < 20 * h), E.forEach(function(_) {
|
|
8918
|
+
_.pts = Re(_.pts, y);
|
|
8915
8919
|
}), !s || T < 0) {
|
|
8916
|
-
if (E = E.filter((
|
|
8920
|
+
if (E = E.filter((_) => _.pts >= 0), !E.length)
|
|
8917
8921
|
return;
|
|
8918
8922
|
r === 0 ? T = 0 : i && !g ? T = Math.max(0, y - v) : T = E[0].pts - v;
|
|
8919
8923
|
}
|
|
8920
8924
|
if (e.segmentCodec === "aac") {
|
|
8921
|
-
const
|
|
8922
|
-
for (let
|
|
8923
|
-
const Y = E[
|
|
8924
|
-
if (
|
|
8925
|
-
|
|
8926
|
-
else if (
|
|
8927
|
-
let q = Math.round(
|
|
8928
|
-
for (
|
|
8929
|
-
q--,
|
|
8930
|
-
|
|
8925
|
+
const _ = this.config.maxAudioFramesDrift;
|
|
8926
|
+
for (let $ = 0, w = T + v; $ < E.length; $++) {
|
|
8927
|
+
const Y = E[$], H = Y.pts, M = H - w, F = Math.abs(1e3 * M / n);
|
|
8928
|
+
if (M <= -_ * h && g)
|
|
8929
|
+
$ === 0 && (this.warn(`Audio frame @ ${(H / n).toFixed(3)}s overlaps marker by ${Math.round(1e3 * M / n)} ms.`), this.nextAudioTs = T = H - v, w = H);
|
|
8930
|
+
else if (M >= _ * h && F < ec && g) {
|
|
8931
|
+
let q = Math.round(M / h);
|
|
8932
|
+
for (w = H - q * h; w < 0 && q && h; )
|
|
8933
|
+
q--, w += h;
|
|
8934
|
+
$ === 0 && (this.nextAudioTs = T = w - v), this.warn(`Injecting ${q} audio frames @ ${((w - v) / n).toFixed(3)}s due to ${Math.round(1e3 * M / n)} ms gap.`);
|
|
8931
8935
|
for (let X = 0; X < q; X++) {
|
|
8932
8936
|
let te = Xl.getSilentFrame(e.parsedCodec || e.manifestCodec || e.codec, e.channelCount);
|
|
8933
|
-
te || (this.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), te = Y.unit.subarray()), E.splice(
|
|
8937
|
+
te || (this.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), te = Y.unit.subarray()), E.splice($, 0, {
|
|
8934
8938
|
unit: te,
|
|
8935
|
-
pts:
|
|
8936
|
-
}),
|
|
8939
|
+
pts: w
|
|
8940
|
+
}), w += h, $++;
|
|
8937
8941
|
}
|
|
8938
8942
|
}
|
|
8939
|
-
Y.pts =
|
|
8943
|
+
Y.pts = w, w += h;
|
|
8940
8944
|
}
|
|
8941
8945
|
}
|
|
8942
8946
|
let S = null, L = null, C, x = 0, R = E.length;
|
|
8943
8947
|
for (; R--; )
|
|
8944
8948
|
x += E[R].unit.byteLength;
|
|
8945
|
-
for (let
|
|
8946
|
-
const
|
|
8947
|
-
let H =
|
|
8949
|
+
for (let _ = 0, $ = E.length; _ < $; _++) {
|
|
8950
|
+
const w = E[_], Y = w.unit;
|
|
8951
|
+
let H = w.pts;
|
|
8948
8952
|
if (L !== null) {
|
|
8949
|
-
const
|
|
8950
|
-
|
|
8953
|
+
const F = f[_ - 1];
|
|
8954
|
+
F.duration = Math.round((H - L) / c);
|
|
8951
8955
|
} else if (s && e.segmentCodec === "aac" && (H = T + v), S = H, x > 0) {
|
|
8952
8956
|
x += p;
|
|
8953
8957
|
try {
|
|
8954
8958
|
C = new Uint8Array(x);
|
|
8955
|
-
} catch (
|
|
8959
|
+
} catch (F) {
|
|
8956
8960
|
this.observer.emit(m.ERROR, m.ERROR, {
|
|
8957
|
-
type:
|
|
8961
|
+
type: V.MUX_ERROR,
|
|
8958
8962
|
details: b.REMUX_ALLOC_ERROR,
|
|
8959
8963
|
fatal: !1,
|
|
8960
|
-
error:
|
|
8964
|
+
error: F,
|
|
8961
8965
|
bytes: x,
|
|
8962
8966
|
reason: `fail allocating audio mdat ${x}`
|
|
8963
8967
|
});
|
|
@@ -8967,8 +8971,8 @@ class Zt extends we {
|
|
|
8967
8971
|
} else
|
|
8968
8972
|
return;
|
|
8969
8973
|
C.set(Y, p);
|
|
8970
|
-
const
|
|
8971
|
-
p +=
|
|
8974
|
+
const M = Y.byteLength;
|
|
8975
|
+
p += M, f.push(Ar(!0, l, M, 0)), L = H;
|
|
8972
8976
|
}
|
|
8973
8977
|
const D = f.length;
|
|
8974
8978
|
if (!D)
|
|
@@ -8979,19 +8983,19 @@ class Zt extends we {
|
|
|
8979
8983
|
samples: f
|
|
8980
8984
|
}));
|
|
8981
8985
|
e.samples = [];
|
|
8982
|
-
const
|
|
8986
|
+
const O = (S - v) / n, K = T / n, N = {
|
|
8983
8987
|
data1: k,
|
|
8984
8988
|
data2: C,
|
|
8985
|
-
startPTS:
|
|
8989
|
+
startPTS: O,
|
|
8986
8990
|
endPTS: K,
|
|
8987
|
-
startDTS:
|
|
8991
|
+
startDTS: O,
|
|
8988
8992
|
endDTS: K,
|
|
8989
8993
|
type: "audio",
|
|
8990
8994
|
hasAudio: !0,
|
|
8991
8995
|
hasVideo: !1,
|
|
8992
8996
|
nb: D
|
|
8993
8997
|
};
|
|
8994
|
-
return this.isAudioContiguous = !0,
|
|
8998
|
+
return this.isAudioContiguous = !0, N;
|
|
8995
8999
|
}
|
|
8996
9000
|
}
|
|
8997
9001
|
function Re(a, e) {
|
|
@@ -9098,7 +9102,7 @@ class nc extends we {
|
|
|
9098
9102
|
id3: s,
|
|
9099
9103
|
initSegment: void 0
|
|
9100
9104
|
};
|
|
9101
|
-
|
|
9105
|
+
B(h) || (h = this.lastEndTime = r || 0);
|
|
9102
9106
|
const d = t.samples;
|
|
9103
9107
|
if (!(d != null && d.length))
|
|
9104
9108
|
return u;
|
|
@@ -9114,10 +9118,10 @@ class nc extends we {
|
|
|
9114
9118
|
const E = Za(d, g, this), p = g.audio ? E[g.audio.id] : null, T = g.video ? E[g.video.id] : null, v = Vt(T, 1 / 0), y = Vt(p, 1 / 0), S = Vt(T, 0, !0), L = Vt(p, 0, !0);
|
|
9115
9119
|
let C, x = r, R = 0;
|
|
9116
9120
|
if (p && (!T || !l && y < v || l && l.trackId === g.audio.id) ? (f.trackId = g.audio.id, C = p, R = L - y) : T && (f.trackId = g.video.id, C = T, R = S - v), C) {
|
|
9117
|
-
const
|
|
9118
|
-
x = C.start /
|
|
9121
|
+
const _ = C.timescale;
|
|
9122
|
+
x = C.start / _, f.initPTS = C.start - r * _, f.timescale = _, l || (this.initPTS = l = {
|
|
9119
9123
|
baseTime: f.initPTS,
|
|
9120
|
-
timescale:
|
|
9124
|
+
timescale: _,
|
|
9121
9125
|
trackId: f.trackId
|
|
9122
9126
|
});
|
|
9123
9127
|
}
|
|
@@ -9127,10 +9131,10 @@ class nc extends we {
|
|
|
9127
9131
|
});
|
|
9128
9132
|
const D = e ? x - l.baseTime / l.timescale : h, A = D + R;
|
|
9129
9133
|
R > 0 ? this.lastEndTime = A : (this.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp());
|
|
9130
|
-
const k = !!g.audio,
|
|
9134
|
+
const k = !!g.audio, O = !!g.video;
|
|
9131
9135
|
let K = "";
|
|
9132
|
-
k && (K += "audio"),
|
|
9133
|
-
const
|
|
9136
|
+
k && (K += "audio"), O && (K += "video");
|
|
9137
|
+
const U = {
|
|
9134
9138
|
data1: d,
|
|
9135
9139
|
startPTS: D,
|
|
9136
9140
|
startDTS: D,
|
|
@@ -9138,15 +9142,15 @@ class nc extends we {
|
|
|
9138
9142
|
endDTS: A,
|
|
9139
9143
|
type: K,
|
|
9140
9144
|
hasAudio: k,
|
|
9141
|
-
hasVideo:
|
|
9145
|
+
hasVideo: O,
|
|
9142
9146
|
nb: 1,
|
|
9143
9147
|
dropped: 0
|
|
9144
9148
|
};
|
|
9145
|
-
u.audio = k && !
|
|
9146
|
-
const
|
|
9147
|
-
if (
|
|
9148
|
-
const
|
|
9149
|
-
|
|
9149
|
+
u.audio = k && !O ? U : void 0, u.video = O ? U : void 0;
|
|
9150
|
+
const N = T == null ? void 0 : T.sampleCount;
|
|
9151
|
+
if (N) {
|
|
9152
|
+
const _ = T.keyFrameIndex, $ = _ !== -1;
|
|
9153
|
+
U.nb = N, U.dropped = _ === 0 || this.isVideoContiguous ? 0 : $ ? _ : N, U.independent = $, U.firstKeyFrame = _, $ && T.keyFrameStart && (U.firstKeyFramePTS = (T.keyFrameStart - l.baseTime) / l.timescale), this.isVideoContiguous || (u.independent = $), this.isVideoContiguous || (this.isVideoContiguous = $), U.dropped && this.warn(`fmp4 does not start with IDR: firstIDR ${_}/${N} dropped: ${U.dropped} start: ${U.firstKeyFramePTS || "NA"}`);
|
|
9150
9154
|
}
|
|
9151
9155
|
return u.initSegment = f, u.id3 = Hn(s, r, l, l), i.samples.length && (u.text = Yn(i, r, l)), u;
|
|
9152
9156
|
}
|
|
@@ -9222,8 +9226,8 @@ class Lr {
|
|
|
9222
9226
|
if (R.isSync()) {
|
|
9223
9227
|
let A = R.softwareDecrypt(n, S.key.buffer, S.iv.buffer, D);
|
|
9224
9228
|
if (s.part > -1) {
|
|
9225
|
-
const
|
|
9226
|
-
A =
|
|
9229
|
+
const O = R.flush();
|
|
9230
|
+
A = O && O.buffer;
|
|
9227
9231
|
}
|
|
9228
9232
|
if (!A)
|
|
9229
9233
|
return r.executeEnd = Ve(), Ds(s);
|
|
@@ -9239,7 +9243,7 @@ class Lr {
|
|
|
9239
9243
|
const R = this.configureTransmuxer(n);
|
|
9240
9244
|
if (R)
|
|
9241
9245
|
return this.logger.warn(`[transmuxer] ${R.message}`), this.observer.emit(m.ERROR, m.ERROR, {
|
|
9242
|
-
type:
|
|
9246
|
+
type: V.MEDIA_ERROR,
|
|
9243
9247
|
details: b.FRAG_PARSING_ERROR,
|
|
9244
9248
|
fatal: !1,
|
|
9245
9249
|
error: R,
|
|
@@ -9428,7 +9432,7 @@ class Wn {
|
|
|
9428
9432
|
return;
|
|
9429
9433
|
const l = new Error(`${c.message} (${c.filename}:${c.lineno})`);
|
|
9430
9434
|
this.hls.config.enableWorker = !1, this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`), this.hls.trigger(m.ERROR, {
|
|
9431
|
-
type:
|
|
9435
|
+
type: V.OTHER_ERROR,
|
|
9432
9436
|
details: b.INTERNAL_EXCEPTION,
|
|
9433
9437
|
fatal: !1,
|
|
9434
9438
|
event: "demuxerWorker",
|
|
@@ -9529,10 +9533,10 @@ class Wn {
|
|
|
9529
9533
|
}, e instanceof ArrayBuffer ? [e] : []);
|
|
9530
9534
|
else if (g) {
|
|
9531
9535
|
const k = g.push(e, p, l, A);
|
|
9532
|
-
wt(k) ? k.then((
|
|
9533
|
-
this.handleTransmuxComplete(
|
|
9534
|
-
}).catch((
|
|
9535
|
-
this.transmuxerError(
|
|
9536
|
+
wt(k) ? k.then((O) => {
|
|
9537
|
+
this.handleTransmuxComplete(O);
|
|
9538
|
+
}).catch((O) => {
|
|
9539
|
+
this.transmuxerError(O, l, "transmuxer-interface push error");
|
|
9536
9540
|
}) : this.handleTransmuxComplete(k);
|
|
9537
9541
|
}
|
|
9538
9542
|
}
|
|
@@ -9559,7 +9563,7 @@ class Wn {
|
|
|
9559
9563
|
}
|
|
9560
9564
|
transmuxerError(e, t, s) {
|
|
9561
9565
|
this.hls && (this.error = e, this.hls.trigger(m.ERROR, {
|
|
9562
|
-
type:
|
|
9566
|
+
type: V.MEDIA_ERROR,
|
|
9563
9567
|
details: b.FRAG_PARSING_ERROR,
|
|
9564
9568
|
chunkMeta: t,
|
|
9565
9569
|
frag: this.frag || void 0,
|
|
@@ -10181,7 +10185,7 @@ class Si extends we {
|
|
|
10181
10185
|
networkDetails: S
|
|
10182
10186
|
} = t;
|
|
10183
10187
|
y.trigger(m.ERROR, {
|
|
10184
|
-
type:
|
|
10188
|
+
type: V.NETWORK_ERROR,
|
|
10185
10189
|
details: b.LEVEL_PARSING_ERROR,
|
|
10186
10190
|
fatal: !1,
|
|
10187
10191
|
url: i.url,
|
|
@@ -10215,8 +10219,8 @@ class Si extends we {
|
|
|
10215
10219
|
else {
|
|
10216
10220
|
const k = Math.floor(A / i.targetduration);
|
|
10217
10221
|
if (p += k, T !== void 0) {
|
|
10218
|
-
const
|
|
10219
|
-
T +=
|
|
10222
|
+
const O = Math.round(A % i.targetduration / i.partTarget);
|
|
10223
|
+
T += O;
|
|
10220
10224
|
}
|
|
10221
10225
|
this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${R.toFixed(2)}s goal: ${A} skip sn ${k} to part ${T}`);
|
|
10222
10226
|
}
|
|
@@ -10368,7 +10372,7 @@ class uc extends Si {
|
|
|
10368
10372
|
var n;
|
|
10369
10373
|
const d = new Error(`No audio track selected for current audio group-ID(s): ${(n = this.groupIds) == null ? void 0 : n.join(",")} track count: ${o.length}`);
|
|
10370
10374
|
this.warn(d.message), this.hls.trigger(m.ERROR, {
|
|
10371
|
-
type:
|
|
10375
|
+
type: V.MEDIA_ERROR,
|
|
10372
10376
|
details: b.AUDIO_TRACK_LOAD_ERROR,
|
|
10373
10377
|
fatal: !0,
|
|
10374
10378
|
error: d
|
|
@@ -10948,8 +10952,8 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10948
10952
|
if (S && d !== "initSegment") {
|
|
10949
10953
|
const x = c || o, R = this.blockedAudioAppend;
|
|
10950
10954
|
if (r === "audio" && n !== "main" && !this.blockedAudioAppend) {
|
|
10951
|
-
const A = x.start + x.duration * 0.05, k = S.buffered,
|
|
10952
|
-
!k.length && !
|
|
10955
|
+
const A = x.start + x.duration * 0.05, k = S.buffered, O = this.currentOp("video");
|
|
10956
|
+
!k.length && !O ? this.blockAudio(x) : !O && !j.isBuffered(S, A) && this.lastVideoAppendEnd < A && this.blockAudio(x);
|
|
10953
10957
|
} else if (r === "video") {
|
|
10954
10958
|
const D = x.end;
|
|
10955
10959
|
if (R) {
|
|
@@ -10965,7 +10969,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10965
10969
|
var x;
|
|
10966
10970
|
u.executeStart = self.performance.now();
|
|
10967
10971
|
const R = (x = this.tracks[r]) == null ? void 0 : x.buffer;
|
|
10968
|
-
R && (v ? this.updateTimestampOffset(R, L, 0.1, r, d, f) : h !== void 0 &&
|
|
10972
|
+
R && (v ? this.updateTimestampOffset(R, L, 0.1, r, d, f) : h !== void 0 && B(h) && this.updateTimestampOffset(R, h, 1e-6, r, d, f)), this.appendExecutor(i, r);
|
|
10969
10973
|
},
|
|
10970
10974
|
onStart: () => {
|
|
10971
10975
|
},
|
|
@@ -10987,7 +10991,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10987
10991
|
onError: (x) => {
|
|
10988
10992
|
var R;
|
|
10989
10993
|
const D = {
|
|
10990
|
-
type:
|
|
10994
|
+
type: V.MEDIA_ERROR,
|
|
10991
10995
|
parent: o.type,
|
|
10992
10996
|
details: b.BUFFER_APPEND_ERROR,
|
|
10993
10997
|
sourceBufferName: r,
|
|
@@ -11120,7 +11124,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11120
11124
|
if (t.details === b.BUFFER_APPEND_ERROR && t.frag) {
|
|
11121
11125
|
var s;
|
|
11122
11126
|
const i = (s = t.errorAction) == null ? void 0 : s.nextAutoLevel;
|
|
11123
|
-
|
|
11127
|
+
B(i) && i !== t.frag.level && this.resetAppendErrors();
|
|
11124
11128
|
}
|
|
11125
11129
|
}
|
|
11126
11130
|
resetAppendErrors() {
|
|
@@ -11139,11 +11143,11 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11139
11143
|
if (!s || t === null || !this.sourceBufferCount)
|
|
11140
11144
|
return;
|
|
11141
11145
|
const i = e.config, r = s.currentTime, n = t.levelTargetDuration, o = t.live && i.liveBackBufferLength !== null ? i.liveBackBufferLength : i.backBufferLength;
|
|
11142
|
-
if (
|
|
11146
|
+
if (B(o) && o >= 0) {
|
|
11143
11147
|
const c = Math.max(o, n), l = Math.floor(r / n) * n - c;
|
|
11144
11148
|
this.flushBackBuffer(r, n, l);
|
|
11145
11149
|
}
|
|
11146
|
-
if (
|
|
11150
|
+
if (B(i.frontBufferFlushThreshold) && i.frontBufferFlushThreshold > 0) {
|
|
11147
11151
|
const c = Math.max(i.maxBufferLength, i.frontBufferFlushThreshold), l = Math.max(c, n), h = Math.floor(r / n) * n + l;
|
|
11148
11152
|
this.flushFrontBuffer(r, n, h);
|
|
11149
11153
|
}
|
|
@@ -11221,11 +11225,11 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11221
11225
|
}
|
|
11222
11226
|
const r = (e = this.overrides) == null ? void 0 : e.duration;
|
|
11223
11227
|
if (r)
|
|
11224
|
-
return
|
|
11228
|
+
return B(r) ? {
|
|
11225
11229
|
duration: r
|
|
11226
11230
|
} : null;
|
|
11227
|
-
const n = this.media.duration, o =
|
|
11228
|
-
return i > o && i > n || !
|
|
11231
|
+
const n = this.media.duration, o = B(s.duration) ? s.duration : 0;
|
|
11232
|
+
return i > o && i > n || !B(n) ? {
|
|
11229
11233
|
duration: i
|
|
11230
11234
|
} : null;
|
|
11231
11235
|
}
|
|
@@ -11235,7 +11239,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11235
11239
|
end: s
|
|
11236
11240
|
}) {
|
|
11237
11241
|
const i = this.mediaSource;
|
|
11238
|
-
!this.media || !i || i.readyState !== "open" || (i.duration !== e && (
|
|
11242
|
+
!this.media || !i || i.readyState !== "open" || (i.duration !== e && (B(e) && this.log(`Updating MediaSource duration to ${e.toFixed(3)}`), i.duration = e), t !== void 0 && s !== void 0 && (this.log(`MediaSource duration is set to ${i.duration}. Setting seekable range to ${t}-${s}.`), i.setLiveSeekableRange(t, s)));
|
|
11239
11243
|
}
|
|
11240
11244
|
get tracksReady() {
|
|
11241
11245
|
const e = this.pendingTrackCount;
|
|
@@ -11277,7 +11281,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11277
11281
|
} else {
|
|
11278
11282
|
const e = new Error("could not create source buffer for media codec(s)");
|
|
11279
11283
|
this.hls.trigger(m.ERROR, {
|
|
11280
|
-
type:
|
|
11284
|
+
type: V.MEDIA_ERROR,
|
|
11281
11285
|
details: b.BUFFER_INCOMPATIBLE_CODECS_ERROR,
|
|
11282
11286
|
fatal: !0,
|
|
11283
11287
|
error: e,
|
|
@@ -11304,7 +11308,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11304
11308
|
} catch (h) {
|
|
11305
11309
|
var i;
|
|
11306
11310
|
this.error(`error while trying to add sourceBuffer: ${h.message}`), this.shiftAndExecuteNext(n), (i = this.operationQueue) == null || i.removeBlockers(), delete this.tracks[n], this.hls.trigger(m.ERROR, {
|
|
11307
|
-
type:
|
|
11311
|
+
type: V.MEDIA_ERROR,
|
|
11308
11312
|
details: b.BUFFER_ADD_CODEC_ERROR,
|
|
11309
11313
|
fatal: !1,
|
|
11310
11314
|
error: h,
|
|
@@ -11369,7 +11373,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11369
11373
|
var s;
|
|
11370
11374
|
const i = new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s = this.mediaSource) == null ? void 0 : s.readyState}`);
|
|
11371
11375
|
this.error(`${i}`, t), this.hls.trigger(m.ERROR, {
|
|
11372
|
-
type:
|
|
11376
|
+
type: V.MEDIA_ERROR,
|
|
11373
11377
|
details: b.BUFFER_APPENDING_ERROR,
|
|
11374
11378
|
sourceBufferName: e,
|
|
11375
11379
|
error: i,
|
|
@@ -11392,7 +11396,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11392
11396
|
this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`), this.shiftAndExecuteNext(e);
|
|
11393
11397
|
return;
|
|
11394
11398
|
}
|
|
11395
|
-
const c =
|
|
11399
|
+
const c = B(i.duration) ? i.duration : 1 / 0, l = B(r.duration) ? r.duration : 1 / 0, h = Math.max(0, t), u = Math.min(s, c, l);
|
|
11396
11400
|
u > h && (!n.ending || n.ended) ? (n.ended = !1, this.log(`Removing [${h},${u}] from the ${e} SourceBuffer`), o.remove(h, u)) : this.shiftAndExecuteNext(e);
|
|
11397
11401
|
}
|
|
11398
11402
|
// This method must result in an updateend event; if append is not called, onSBUpdateEnd must be called manually
|
|
@@ -11542,7 +11546,7 @@ class Ai {
|
|
|
11542
11546
|
this.restrictedLevels = [], this.firstLevel = t.firstLevel, s.config.capLevelToPlayerSize && t.video && this.startCapping();
|
|
11543
11547
|
}
|
|
11544
11548
|
onLevelsUpdated(e, t) {
|
|
11545
|
-
this.timer &&
|
|
11549
|
+
this.timer && B(this.autoLevelCapping) && this.detectPlayerSize();
|
|
11546
11550
|
}
|
|
11547
11551
|
// Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted
|
|
11548
11552
|
// to the first level
|
|
@@ -11779,7 +11783,7 @@ function Pr(a) {
|
|
|
11779
11783
|
function Zs(a) {
|
|
11780
11784
|
switch (typeof a) {
|
|
11781
11785
|
case "number":
|
|
11782
|
-
if (!
|
|
11786
|
+
if (!B(a))
|
|
11783
11787
|
throw Ue(a, Cr);
|
|
11784
11788
|
return Number.isInteger(a) ? Qn(a) : Mc(a);
|
|
11785
11789
|
case "string":
|
|
@@ -11833,7 +11837,7 @@ function Wc(a) {
|
|
|
11833
11837
|
return ["ot", "sf", "st", "e", "sta"].includes(a);
|
|
11834
11838
|
}
|
|
11835
11839
|
function jc(a) {
|
|
11836
|
-
return typeof a == "number" ?
|
|
11840
|
+
return typeof a == "number" ? B(a) : a != null && a !== "" && a !== !1;
|
|
11837
11841
|
}
|
|
11838
11842
|
function qc(a, e) {
|
|
11839
11843
|
const t = new URL(a), s = new URL(e);
|
|
@@ -12461,7 +12465,7 @@ class gt extends we {
|
|
|
12461
12465
|
mediaKeys: u
|
|
12462
12466
|
})).catch((u) => {
|
|
12463
12467
|
l.length ? c(l) : u instanceof Ie ? o(u) : o(new Ie({
|
|
12464
|
-
type:
|
|
12468
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12465
12469
|
details: b.KEY_SYSTEM_NO_ACCESS,
|
|
12466
12470
|
error: u,
|
|
12467
12471
|
fatal: !0
|
|
@@ -12592,7 +12596,7 @@ class gt extends we {
|
|
|
12592
12596
|
}
|
|
12593
12597
|
handleError(e) {
|
|
12594
12598
|
this.hls && (this.error(e.message), e instanceof Ie ? this.hls.trigger(m.ERROR, e.data) : this.hls.trigger(m.ERROR, {
|
|
12595
|
-
type:
|
|
12599
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12596
12600
|
details: b.KEY_SYSTEM_NO_KEYS,
|
|
12597
12601
|
error: e,
|
|
12598
12602
|
fatal: !0
|
|
@@ -12609,7 +12613,7 @@ class gt extends we {
|
|
|
12609
12613
|
getKeySystemSelectionPromise(e) {
|
|
12610
12614
|
if (e.length || (e = Xt(this.config)), e.length === 0)
|
|
12611
12615
|
throw new Ie({
|
|
12612
|
-
type:
|
|
12616
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12613
12617
|
details: b.KEY_SYSTEM_NO_CONFIGURED_LICENSE,
|
|
12614
12618
|
fatal: !0
|
|
12615
12619
|
}, `Missing key-system license configuration options ${ne({
|
|
@@ -12675,11 +12679,11 @@ class gt extends we {
|
|
|
12675
12679
|
const f = new Promise((g, E) => {
|
|
12676
12680
|
h.on("error", E), h.on("keyStatus", (p) => {
|
|
12677
12681
|
p.startsWith("usable") ? g() : p === "output-restricted" ? E(new Ie({
|
|
12678
|
-
type:
|
|
12682
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12679
12683
|
details: b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,
|
|
12680
12684
|
fatal: !1
|
|
12681
12685
|
}, "HDCP level output restricted")) : p === "internal-error" ? E(new Ie({
|
|
12682
|
-
type:
|
|
12686
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12683
12687
|
details: b.KEY_SYSTEM_STATUS_INTERNAL_ERROR,
|
|
12684
12688
|
fatal: !0
|
|
12685
12689
|
}, `key status changed to "${p}"`)) : p === "expired" ? E(new Error("key expired while generating request")) : this.warn(`unhandled key status change "${p}"`);
|
|
@@ -12690,7 +12694,7 @@ class gt extends we {
|
|
|
12690
12694
|
this.log(`Request generated for key-session "${(g = e.mediaKeysSession) == null ? void 0 : g.sessionId}" keyId: ${l}`);
|
|
12691
12695
|
}).catch((g) => {
|
|
12692
12696
|
throw new Ie({
|
|
12693
|
-
type:
|
|
12697
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12694
12698
|
details: b.KEY_SYSTEM_NO_SESSION,
|
|
12695
12699
|
error: g,
|
|
12696
12700
|
fatal: !1
|
|
@@ -12726,7 +12730,7 @@ class gt extends we {
|
|
|
12726
12730
|
},
|
|
12727
12731
|
onError: (d, f, g, E) => {
|
|
12728
12732
|
o(new Ie({
|
|
12729
|
-
type:
|
|
12733
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12730
12734
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
|
|
12731
12735
|
fatal: !0,
|
|
12732
12736
|
networkDetails: g,
|
|
@@ -12738,7 +12742,7 @@ class gt extends we {
|
|
|
12738
12742
|
},
|
|
12739
12743
|
onTimeout: (d, f, g) => {
|
|
12740
12744
|
o(new Ie({
|
|
12741
|
-
type:
|
|
12745
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12742
12746
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
|
|
12743
12747
|
fatal: !0,
|
|
12744
12748
|
networkDetails: g,
|
|
@@ -12761,7 +12765,7 @@ class gt extends we {
|
|
|
12761
12765
|
this.log(`setServerCertificate ${n ? "success" : "not supported by CDM"} (${s == null ? void 0 : s.byteLength}) on "${t}"`), i(e);
|
|
12762
12766
|
}).catch((n) => {
|
|
12763
12767
|
r(new Ie({
|
|
12764
|
-
type:
|
|
12768
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12765
12769
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,
|
|
12766
12770
|
error: n,
|
|
12767
12771
|
fatal: !0
|
|
@@ -12772,7 +12776,7 @@ class gt extends we {
|
|
|
12772
12776
|
renewLicense(e, t) {
|
|
12773
12777
|
return this.requestLicense(e, new Uint8Array(t)).then((s) => this.updateKeySession(e, new Uint8Array(s)).catch((i) => {
|
|
12774
12778
|
throw new Ie({
|
|
12775
|
-
type:
|
|
12779
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12776
12780
|
details: b.KEY_SYSTEM_SESSION_UPDATE_FAILED,
|
|
12777
12781
|
error: i,
|
|
12778
12782
|
fatal: !0
|
|
@@ -12842,7 +12846,7 @@ class gt extends we {
|
|
|
12842
12846
|
const c = s.errorRetry, l = c ? c.maxNumRetry : 0;
|
|
12843
12847
|
if (this._requestLicenseFailureCount++, this._requestLicenseFailureCount > l || o.status >= 400 && o.status < 500)
|
|
12844
12848
|
r(new Ie({
|
|
12845
|
-
type:
|
|
12849
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12846
12850
|
details: b.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
|
|
12847
12851
|
fatal: !0,
|
|
12848
12852
|
networkDetails: o,
|
|
@@ -12889,7 +12893,7 @@ class gt extends we {
|
|
|
12889
12893
|
gt.CDMCleanupPromise = Promise.all(s.map((r) => this.removeSession(r)).concat(t == null || (e = t.setMediaKeys(null)) == null ? void 0 : e.catch((r) => {
|
|
12890
12894
|
var n;
|
|
12891
12895
|
this.log(`Could not clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, {
|
|
12892
|
-
type:
|
|
12896
|
+
type: V.OTHER_ERROR,
|
|
12893
12897
|
details: b.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,
|
|
12894
12898
|
fatal: !1,
|
|
12895
12899
|
error: new Error(`Could not clear media keys: ${r}`)
|
|
@@ -12897,7 +12901,7 @@ class gt extends we {
|
|
|
12897
12901
|
}))).catch((r) => {
|
|
12898
12902
|
var n;
|
|
12899
12903
|
this.log(`Could not close sessions and clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, {
|
|
12900
|
-
type:
|
|
12904
|
+
type: V.OTHER_ERROR,
|
|
12901
12905
|
details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
|
|
12902
12906
|
fatal: !1,
|
|
12903
12907
|
error: new Error(`Could not close sessions and clear media keys: ${r}`)
|
|
@@ -12934,7 +12938,7 @@ class gt extends we {
|
|
|
12934
12938
|
}) : Promise.resolve()).catch((o) => {
|
|
12935
12939
|
var c;
|
|
12936
12940
|
this.log(`Could not remove session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, {
|
|
12937
|
-
type:
|
|
12941
|
+
type: V.OTHER_ERROR,
|
|
12938
12942
|
details: b.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,
|
|
12939
12943
|
fatal: !1,
|
|
12940
12944
|
error: new Error(`Could not remove session: ${o}`)
|
|
@@ -12942,7 +12946,7 @@ class gt extends we {
|
|
|
12942
12946
|
}).then(() => t.close()).catch((o) => {
|
|
12943
12947
|
var c;
|
|
12944
12948
|
this.log(`Could not close session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, {
|
|
12945
|
-
type:
|
|
12949
|
+
type: V.OTHER_ERROR,
|
|
12946
12950
|
details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
|
|
12947
12951
|
fatal: !1,
|
|
12948
12952
|
error: new Error(`Could not close session: ${o}`)
|
|
@@ -13328,7 +13332,7 @@ class ch extends Si {
|
|
|
13328
13332
|
this.queuedDefaultTrack = e;
|
|
13329
13333
|
return;
|
|
13330
13334
|
}
|
|
13331
|
-
if (e < -1 || e >= t.length || !
|
|
13335
|
+
if (e < -1 || e >= t.length || !B(e)) {
|
|
13332
13336
|
this.warn(`Invalid subtitle track id: ${e}`);
|
|
13333
13337
|
return;
|
|
13334
13338
|
}
|
|
@@ -13447,7 +13451,7 @@ class dh {
|
|
|
13447
13451
|
return !1;
|
|
13448
13452
|
}
|
|
13449
13453
|
get resumptionOffset() {
|
|
13450
|
-
const e = this.resumeOffset, t =
|
|
13454
|
+
const e = this.resumeOffset, t = B(e) ? e : this.duration;
|
|
13451
13455
|
return this.cumulativeDuration + t;
|
|
13452
13456
|
}
|
|
13453
13457
|
get resumeTime() {
|
|
@@ -13850,11 +13854,11 @@ class mh extends we {
|
|
|
13850
13854
|
if (!S) {
|
|
13851
13855
|
const A = p - c;
|
|
13852
13856
|
if (A > wr) {
|
|
13853
|
-
const k = c,
|
|
13857
|
+
const k = c, O = l;
|
|
13854
13858
|
l += A;
|
|
13855
13859
|
const K = n;
|
|
13856
13860
|
n += A;
|
|
13857
|
-
const
|
|
13861
|
+
const U = {
|
|
13858
13862
|
previousEvent: e[u - 1] || null,
|
|
13859
13863
|
nextEvent: h,
|
|
13860
13864
|
start: k,
|
|
@@ -13864,11 +13868,11 @@ class mh extends we {
|
|
|
13864
13868
|
end: n
|
|
13865
13869
|
},
|
|
13866
13870
|
integrated: {
|
|
13867
|
-
start:
|
|
13871
|
+
start: O,
|
|
13868
13872
|
end: l
|
|
13869
13873
|
}
|
|
13870
13874
|
};
|
|
13871
|
-
s.push(
|
|
13875
|
+
s.push(U);
|
|
13872
13876
|
} else A > 0 && g && (g.cumulativeDuration += A, s[s.length - 1].end = p);
|
|
13873
13877
|
}
|
|
13874
13878
|
f && (C = L), h.timelineStart = L;
|
|
@@ -13943,7 +13947,7 @@ class mh extends we {
|
|
|
13943
13947
|
e.forEach((o, c) => {
|
|
13944
13948
|
const l = o.cue.pre, h = o.cue.post, u = l ? 0 : h ? i : o.startTime;
|
|
13945
13949
|
this.updateAssetDurations(o), n === u ? o.cumulativeDuration = r : (r = 0, n = u), !h && o.snapOptions.in && (o.resumeAnchor = it(null, s.fragments, o.startOffset + o.resumptionOffset, 0, 0) || void 0), o.appendInPlace && !o.appendInPlaceStarted && (this.primaryCanResumeInPlaceAt(o, t) || (o.appendInPlace = !1)), !o.appendInPlace && c + 1 < e.length && e[c + 1].startTime - e[c].resumeTime < wr && (e[c + 1].appendInPlace = !1, e[c + 1].appendInPlace && this.warn(`Could not change append strategy for abutting event ${o}`));
|
|
13946
|
-
const f =
|
|
13950
|
+
const f = B(o.resumeOffset) ? o.resumeOffset : o.duration;
|
|
13947
13951
|
r += f;
|
|
13948
13952
|
});
|
|
13949
13953
|
}
|
|
@@ -14035,7 +14039,7 @@ class ph {
|
|
|
14035
14039
|
}
|
|
14036
14040
|
assignAssetListError(e, t, s, i, r, n) {
|
|
14037
14041
|
return e.error = s, {
|
|
14038
|
-
type:
|
|
14042
|
+
type: V.NETWORK_ERROR,
|
|
14039
14043
|
details: t,
|
|
14040
14044
|
fatal: !1,
|
|
14041
14045
|
interstitial: e,
|
|
@@ -14262,9 +14266,9 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14262
14266
|
if (p && (L || C)) {
|
|
14263
14267
|
const R = s(e.playingAsset), D = (R == null ? void 0 : R.media) || e.primaryMedia;
|
|
14264
14268
|
if (D) {
|
|
14265
|
-
const A = d === "primary" ? D.currentTime : i(p, d, e.playingAsset, "timelinePos", "currentTime"), k = u - A,
|
|
14266
|
-
if (
|
|
14267
|
-
D.currentTime =
|
|
14269
|
+
const A = d === "primary" ? D.currentTime : i(p, d, e.playingAsset, "timelinePos", "currentTime"), k = u - A, O = (L ? A : D.currentTime) + k;
|
|
14270
|
+
if (O >= 0 && (!R || L || O <= R.duration)) {
|
|
14271
|
+
D.currentTime = O;
|
|
14268
14272
|
return;
|
|
14269
14273
|
}
|
|
14270
14274
|
}
|
|
@@ -14282,9 +14286,9 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14282
14286
|
} else if (p) {
|
|
14283
14287
|
const A = e.findItemIndex(p);
|
|
14284
14288
|
if (T > A) {
|
|
14285
|
-
const
|
|
14286
|
-
if (
|
|
14287
|
-
e.setSchedulePosition(
|
|
14289
|
+
const O = e.schedule.findJumpRestrictedIndex(A + 1, T);
|
|
14290
|
+
if (O > A) {
|
|
14291
|
+
e.setSchedulePosition(O);
|
|
14288
14292
|
return;
|
|
14289
14293
|
}
|
|
14290
14294
|
}
|
|
@@ -14293,13 +14297,13 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14293
14297
|
e.timelinePos = R, e.checkBuffer();
|
|
14294
14298
|
else {
|
|
14295
14299
|
var x;
|
|
14296
|
-
const
|
|
14297
|
-
if (
|
|
14300
|
+
const O = v == null || (x = v.event) == null ? void 0 : x.assetList;
|
|
14301
|
+
if (O) {
|
|
14298
14302
|
const K = u - (v[d] || v).start;
|
|
14299
|
-
for (let
|
|
14300
|
-
const
|
|
14301
|
-
if (
|
|
14302
|
-
k =
|
|
14303
|
+
for (let U = O.length; U--; ) {
|
|
14304
|
+
const N = O[U];
|
|
14305
|
+
if (N.duration && K >= N.startOffset && K < N.startOffset + N.duration) {
|
|
14306
|
+
k = U;
|
|
14303
14307
|
break;
|
|
14304
14308
|
}
|
|
14305
14309
|
}
|
|
@@ -14454,7 +14458,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14454
14458
|
let r = this.media;
|
|
14455
14459
|
!r && (e = this.bufferingItem) != null && (t = e.event) != null && t.appendInPlace && (r = this.primaryMedia);
|
|
14456
14460
|
const n = (s = r) == null ? void 0 : s.currentTime;
|
|
14457
|
-
if (!(n === void 0 || !
|
|
14461
|
+
if (!(n === void 0 || !B(n)))
|
|
14458
14462
|
return n;
|
|
14459
14463
|
}
|
|
14460
14464
|
get primaryMedia() {
|
|
@@ -15027,7 +15031,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15027
15031
|
if (y.live) {
|
|
15028
15032
|
const C = new Error(`Interstitials MUST be VOD assets ${e}`), x = {
|
|
15029
15033
|
fatal: !0,
|
|
15030
|
-
type:
|
|
15034
|
+
type: V.OTHER_ERROR,
|
|
15031
15035
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15032
15036
|
error: C
|
|
15033
15037
|
};
|
|
@@ -15091,7 +15095,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15091
15095
|
return;
|
|
15092
15096
|
const S = new Error(`Asset player destroyed unexpectedly ${u}`), L = {
|
|
15093
15097
|
fatal: !0,
|
|
15094
|
-
type:
|
|
15098
|
+
type: V.OTHER_ERROR,
|
|
15095
15099
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15096
15100
|
error: S
|
|
15097
15101
|
};
|
|
@@ -15167,7 +15171,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15167
15171
|
if (u && !zr(u, e.tracks)) {
|
|
15168
15172
|
const d = new Error(`Asset ${ut(n)} SourceBuffer tracks ('${Object.keys(e.tracks)}') are not compatible with primary content tracks ('${Object.keys(u)}')`), f = {
|
|
15169
15173
|
fatal: !0,
|
|
15170
|
-
type:
|
|
15174
|
+
type: V.OTHER_ERROR,
|
|
15171
15175
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15172
15176
|
error: d
|
|
15173
15177
|
}, g = r.findAssetIndex(n);
|
|
@@ -15422,7 +15426,7 @@ class Th extends fi {
|
|
|
15422
15426
|
const n = performance.now();
|
|
15423
15427
|
this.decrypter.decrypt(new Uint8Array(s), i.key.buffer, i.iv.buffer, di(i.method)).catch((o) => {
|
|
15424
15428
|
throw r.trigger(m.ERROR, {
|
|
15425
|
-
type:
|
|
15429
|
+
type: V.MEDIA_ERROR,
|
|
15426
15430
|
details: b.FRAG_DECRYPT_ERROR,
|
|
15427
15431
|
fatal: !1,
|
|
15428
15432
|
error: o,
|
|
@@ -16636,7 +16640,7 @@ const Fh = /\r\n|\n\r|\n|\r/g, ws = function(e, t, s = 0) {
|
|
|
16636
16640
|
}, Mh = function(e) {
|
|
16637
16641
|
let t = parseInt(e.slice(-3));
|
|
16638
16642
|
const s = parseInt(e.slice(-6, -4)), i = parseInt(e.slice(-9, -7)), r = e.length > 9 ? parseInt(e.substring(0, e.indexOf(":"))) : 0;
|
|
16639
|
-
if (!
|
|
16643
|
+
if (!B(t) || !B(s) || !B(i) || !B(r))
|
|
16640
16644
|
throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);
|
|
16641
16645
|
return t += 1e3 * s, t += 60 * 1e3 * i, t += 60 * 60 * 1e3 * r, t;
|
|
16642
16646
|
};
|
|
@@ -17299,7 +17303,7 @@ class Vr {
|
|
|
17299
17303
|
maxTimeToFirstByteMs: c,
|
|
17300
17304
|
maxLoadTimeMs: l
|
|
17301
17305
|
} = t.loadPolicy;
|
|
17302
|
-
this.context = e, this.config = t, this.callbacks = s, this.request = this.fetchSetup(e, r), self.clearTimeout(this.requestTimeout), t.timeout = c &&
|
|
17306
|
+
this.context = e, this.config = t, this.callbacks = s, this.request = this.fetchSetup(e, r), self.clearTimeout(this.requestTimeout), t.timeout = c && B(c) ? c : l, this.requestTimeout = self.setTimeout(() => {
|
|
17303
17307
|
this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(i, e, this.response));
|
|
17304
17308
|
}, t.timeout), (wt(this.request) ? this.request.then(self.fetch) : self.fetch(this.request)).then((u) => {
|
|
17305
17309
|
var d;
|
|
@@ -17316,7 +17320,7 @@ class Vr {
|
|
|
17316
17320
|
}
|
|
17317
17321
|
i.loading.first = f, i.total = Zh(u.headers) || i.total;
|
|
17318
17322
|
const g = (d = this.callbacks) == null ? void 0 : d.onProgress;
|
|
17319
|
-
return g &&
|
|
17323
|
+
return g && B(t.highWaterMark) ? this.loadProgressively(u, i, e, t.highWaterMark, g) : n ? u.arrayBuffer() : e.responseType === "json" ? u.json() : u.text();
|
|
17320
17324
|
}).then((u) => {
|
|
17321
17325
|
var d, f;
|
|
17322
17326
|
const g = this.response;
|
|
@@ -17330,7 +17334,7 @@ class Vr {
|
|
|
17330
17334
|
data: u,
|
|
17331
17335
|
code: g.status
|
|
17332
17336
|
}, T = (d = this.callbacks) == null ? void 0 : d.onProgress;
|
|
17333
|
-
T && !
|
|
17337
|
+
T && !B(t.highWaterMark) && T(i, e, u, g), (f = this.callbacks) == null || f.onSuccess(p, i, e, g);
|
|
17334
17338
|
}).catch((u) => {
|
|
17335
17339
|
var d;
|
|
17336
17340
|
if (self.clearTimeout(this.requestTimeout), i.aborted)
|
|
@@ -17382,7 +17386,7 @@ function Zh(a) {
|
|
|
17382
17386
|
const e = a.get("Content-Range");
|
|
17383
17387
|
if (e) {
|
|
17384
17388
|
const s = Xh(e);
|
|
17385
|
-
if (
|
|
17389
|
+
if (B(s))
|
|
17386
17390
|
return s;
|
|
17387
17391
|
}
|
|
17388
17392
|
const t = a.get("Content-Length");
|
|
@@ -17453,7 +17457,7 @@ class fa {
|
|
|
17453
17457
|
if (i)
|
|
17454
17458
|
for (const o in i)
|
|
17455
17459
|
e.setRequestHeader(o, i[o]);
|
|
17456
|
-
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, self.clearTimeout(this.requestTimeout), s.timeout = r &&
|
|
17460
|
+
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, self.clearTimeout(this.requestTimeout), s.timeout = r && B(r) ? r : n, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), s.timeout), e.send();
|
|
17457
17461
|
}
|
|
17458
17462
|
readystatechange() {
|
|
17459
17463
|
const {
|
|
@@ -18050,7 +18054,7 @@ class hu extends fn {
|
|
|
18050
18054
|
this.warn(u.message), this.media.currentTime += 1e-6;
|
|
18051
18055
|
const d = this.fragmentTracker.getPartialFragment(e) || void 0, f = j.bufferInfo(this.media, e, 0);
|
|
18052
18056
|
this.hls.trigger(m.ERROR, {
|
|
18053
|
-
type:
|
|
18057
|
+
type: V.MEDIA_ERROR,
|
|
18054
18058
|
details: b.BUFFER_SEEK_OVER_HOLE,
|
|
18055
18059
|
fatal: !1,
|
|
18056
18060
|
error: u,
|
|
@@ -18109,7 +18113,7 @@ class hu extends fn {
|
|
|
18109
18113
|
this.stallReported = !0;
|
|
18110
18114
|
const n = new Error(`Playback stalling at @${s.currentTime} due to low buffer (${ne(e)})`);
|
|
18111
18115
|
this.warn(n.message), t.trigger(m.ERROR, {
|
|
18112
|
-
type:
|
|
18116
|
+
type: V.MEDIA_ERROR,
|
|
18113
18117
|
details: b.BUFFER_STALLED_ERROR,
|
|
18114
18118
|
fatal: !1,
|
|
18115
18119
|
error: n,
|
|
@@ -18169,7 +18173,7 @@ class hu extends fn {
|
|
|
18169
18173
|
if (this.warn(`skipping hole, adjusting currentTime from ${n} to ${f}`), this.moved = !0, i.currentTime = f, !(e != null && e.gap)) {
|
|
18170
18174
|
const g = new Error(`fragment loaded with buffer holes, seeking from ${n} to ${f}`);
|
|
18171
18175
|
this.hls.trigger(m.ERROR, {
|
|
18172
|
-
type:
|
|
18176
|
+
type: V.MEDIA_ERROR,
|
|
18173
18177
|
details: b.BUFFER_SEEK_OVER_HOLE,
|
|
18174
18178
|
fatal: !1,
|
|
18175
18179
|
error: g,
|
|
@@ -18200,7 +18204,7 @@ class hu extends fn {
|
|
|
18200
18204
|
if (this.nudgeRetry++, i < r.nudgeMaxRetry) {
|
|
18201
18205
|
const o = n + (i + 1) * r.nudgeOffset, c = new Error(`Nudging 'currentTime' from ${n} to ${o}`);
|
|
18202
18206
|
this.warn(c.message), s.currentTime = o, t.trigger(m.ERROR, {
|
|
18203
|
-
type:
|
|
18207
|
+
type: V.MEDIA_ERROR,
|
|
18204
18208
|
details: b.BUFFER_NUDGE_ON_STALL,
|
|
18205
18209
|
error: c,
|
|
18206
18210
|
fatal: !1,
|
|
@@ -18210,7 +18214,7 @@ class hu extends fn {
|
|
|
18210
18214
|
} else {
|
|
18211
18215
|
const o = new Error(`Playhead still not moving while enough data buffered @${n} after ${r.nudgeMaxRetry} nudges`);
|
|
18212
18216
|
this.error(o.message), t.trigger(m.ERROR, {
|
|
18213
|
-
type:
|
|
18217
|
+
type: V.MEDIA_ERROR,
|
|
18214
18218
|
details: b.BUFFER_STALLED_ERROR,
|
|
18215
18219
|
error: o,
|
|
18216
18220
|
fatal: !0,
|
|
@@ -18419,7 +18423,7 @@ class du {
|
|
|
18419
18423
|
n = this.dateRangeCuesAppended = {};
|
|
18420
18424
|
}
|
|
18421
18425
|
const c = e.fragments[e.fragments.length - 1];
|
|
18422
|
-
if (r.length === 0 || !
|
|
18426
|
+
if (r.length === 0 || !B(c == null ? void 0 : c.programDateTime))
|
|
18423
18427
|
return;
|
|
18424
18428
|
this.id3Track || (this.id3Track = this.createTrack(this.media));
|
|
18425
18429
|
const l = ii();
|
|
@@ -18716,7 +18720,7 @@ class gu extends Si {
|
|
|
18716
18720
|
t.levels.length && (T = `one or more CODECS in variant not supported: ${ne(t.levels.map((y) => y.attrs.CODECS).filter((y, S, L) => L.indexOf(y) === S))}`, this.warn(T), p += ` (${T})`);
|
|
18717
18721
|
const v = new Error(p);
|
|
18718
18722
|
this.hls.trigger(m.ERROR, {
|
|
18719
|
-
type:
|
|
18723
|
+
type: V.MEDIA_ERROR,
|
|
18720
18724
|
details: b.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
|
|
18721
18725
|
fatal: !0,
|
|
18722
18726
|
url: t.url,
|
|
@@ -18800,7 +18804,7 @@ class gu extends Si {
|
|
|
18800
18804
|
if (e < 0 || e >= t.length) {
|
|
18801
18805
|
const h = new Error("invalid level idx"), u = e < 0;
|
|
18802
18806
|
if (this.hls.trigger(m.ERROR, {
|
|
18803
|
-
type:
|
|
18807
|
+
type: V.OTHER_ERROR,
|
|
18804
18808
|
details: b.LEVEL_SWITCH_ERROR,
|
|
18805
18809
|
level: e,
|
|
18806
18810
|
fatal: u,
|
|
@@ -19004,7 +19008,7 @@ class Tu extends fi {
|
|
|
19004
19008
|
this.tick();
|
|
19005
19009
|
}, this.onMediaSeeked = () => {
|
|
19006
19010
|
const i = this.media, r = i ? i.currentTime : null;
|
|
19007
|
-
if (r === null || !
|
|
19011
|
+
if (r === null || !B(r) || (this.log(`Media seeked to ${r.toFixed(3)}`), !this.getBufferedFrag(r)))
|
|
19008
19012
|
return;
|
|
19009
19013
|
const n = this.getFwdBufferInfoAtPos(i, r, G.MAIN, 0);
|
|
19010
19014
|
if (n === null || n.len === 0) {
|
|
@@ -19518,7 +19522,7 @@ class Tu extends fi {
|
|
|
19518
19522
|
});
|
|
19519
19523
|
}
|
|
19520
19524
|
const T = g.initPTS, v = g.timescale, y = this.initPTS[c.cc];
|
|
19521
|
-
|
|
19525
|
+
B(T) && (!y || y.baseTime !== T || y.timescale !== v) && (this.initPTS[c.cc] = {
|
|
19522
19526
|
baseTime: T,
|
|
19523
19527
|
timescale: v
|
|
19524
19528
|
}, i.trigger(m.INIT_PTS_FOUND, {
|
|
@@ -19694,12 +19698,12 @@ class Tu extends fi {
|
|
|
19694
19698
|
if (this.fragPlaying)
|
|
19695
19699
|
return this.fragPlaying;
|
|
19696
19700
|
const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime;
|
|
19697
|
-
return
|
|
19701
|
+
return B(t) ? this.getAppendedFrag(t) : null;
|
|
19698
19702
|
}
|
|
19699
19703
|
get currentProgramDateTime() {
|
|
19700
19704
|
var e;
|
|
19701
19705
|
const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime;
|
|
19702
|
-
if (
|
|
19706
|
+
if (B(t)) {
|
|
19703
19707
|
const s = this.getLevelDetails(), i = this.currentFrag || (s ? it(null, s.fragments, t) : null);
|
|
19704
19708
|
if (i) {
|
|
19705
19709
|
const r = i.programDateTime;
|
|
@@ -19754,7 +19758,7 @@ class yu {
|
|
|
19754
19758
|
}
|
|
19755
19759
|
createKeyLoadError(e, t = b.KEY_LOAD_ERROR, s, i, r) {
|
|
19756
19760
|
return new Ke({
|
|
19757
|
-
type:
|
|
19761
|
+
type: V.NETWORK_ERROR,
|
|
19758
19762
|
details: t,
|
|
19759
19763
|
fatal: !1,
|
|
19760
19764
|
frag: e,
|
|
@@ -20063,7 +20067,7 @@ class vu {
|
|
|
20063
20067
|
if (e.type === Q.MANIFEST ? r = s.manifestLoadPolicy.default : r = se({}, s.playlistLoadPolicy.default, {
|
|
20064
20068
|
timeoutRetry: null,
|
|
20065
20069
|
errorRetry: null
|
|
20066
|
-
}), i = this.createInternalLoader(e),
|
|
20070
|
+
}), i = this.createInternalLoader(e), B((t = e.deliveryDirectives) == null ? void 0 : t.part)) {
|
|
20067
20071
|
let l;
|
|
20068
20072
|
if (e.type === Q.LEVEL && e.level !== null ? l = this.hls.levels[e.level].details : e.type === Q.AUDIO_TRACK && e.id !== null ? l = this.hls.audioTracks[e.id].details : e.type === Q.SUBTITLE_TRACK && e.id !== null && (l = this.hls.subtitleTracks[e.id].details), l) {
|
|
20069
20073
|
const h = l.partTarget, u = l.targetduration;
|
|
@@ -20165,7 +20169,7 @@ class vu {
|
|
|
20165
20169
|
id: o,
|
|
20166
20170
|
level: c,
|
|
20167
20171
|
type: l
|
|
20168
|
-
} = s, h = Ns(e, s), u =
|
|
20172
|
+
} = s, h = Ns(e, s), u = B(c) ? c : B(o) ? o : 0, d = qr(s), f = Ne.parseLevelPlaylist(e.data, h, u, d, 0, this.variableList);
|
|
20169
20173
|
if (l === Q.MANIFEST) {
|
|
20170
20174
|
const g = {
|
|
20171
20175
|
attrs: new oe({}),
|
|
@@ -20191,7 +20195,7 @@ class vu {
|
|
|
20191
20195
|
}
|
|
20192
20196
|
handleManifestParsingError(e, t, s, i, r) {
|
|
20193
20197
|
this.hls.trigger(m.ERROR, {
|
|
20194
|
-
type:
|
|
20198
|
+
type: V.NETWORK_ERROR,
|
|
20195
20199
|
details: b.MANIFEST_PARSING_ERROR,
|
|
20196
20200
|
fatal: t.type === Q.MANIFEST,
|
|
20197
20201
|
url: e.url,
|
|
@@ -20227,7 +20231,7 @@ class vu {
|
|
|
20227
20231
|
}
|
|
20228
20232
|
h && this.resetInternalLoader(e.type);
|
|
20229
20233
|
const u = {
|
|
20230
|
-
type:
|
|
20234
|
+
type: V.NETWORK_ERROR,
|
|
20231
20235
|
details: c,
|
|
20232
20236
|
fatal: l,
|
|
20233
20237
|
url: e.url,
|
|
@@ -20257,7 +20261,7 @@ class vu {
|
|
|
20257
20261
|
if (!e.fragments.length) {
|
|
20258
20262
|
const T = e.playlistParsingError = new Error("No Segments found in Playlist");
|
|
20259
20263
|
o.trigger(m.ERROR, {
|
|
20260
|
-
type:
|
|
20264
|
+
type: V.NETWORK_ERROR,
|
|
20261
20265
|
details: b.LEVEL_EMPTY_ERROR,
|
|
20262
20266
|
fatal: !1,
|
|
20263
20267
|
url: f,
|
|
@@ -20277,7 +20281,7 @@ class vu {
|
|
|
20277
20281
|
if (p) {
|
|
20278
20282
|
if (this.hls.logger.warn(p), !o.config.ignorePlaylistParsingErrors) {
|
|
20279
20283
|
o.trigger(m.ERROR, {
|
|
20280
|
-
type:
|
|
20284
|
+
type: V.NETWORK_ERROR,
|
|
20281
20285
|
details: b.LEVEL_PARSING_ERROR,
|
|
20282
20286
|
fatal: !1,
|
|
20283
20287
|
url: f,
|
|
@@ -20333,7 +20337,7 @@ class vu {
|
|
|
20333
20337
|
}
|
|
20334
20338
|
}
|
|
20335
20339
|
}
|
|
20336
|
-
class
|
|
20340
|
+
class Te {
|
|
20337
20341
|
/**
|
|
20338
20342
|
* Get the video-dev/hls.js package version.
|
|
20339
20343
|
*/
|
|
@@ -20365,7 +20369,7 @@ class Ee {
|
|
|
20365
20369
|
return Ae;
|
|
20366
20370
|
}
|
|
20367
20371
|
static get ErrorTypes() {
|
|
20368
|
-
return
|
|
20372
|
+
return V;
|
|
20369
20373
|
}
|
|
20370
20374
|
static get ErrorDetails() {
|
|
20371
20375
|
return b;
|
|
@@ -20374,13 +20378,13 @@ class Ee {
|
|
|
20374
20378
|
* Get the default configuration applied to new instances.
|
|
20375
20379
|
*/
|
|
20376
20380
|
static get DefaultConfig() {
|
|
20377
|
-
return
|
|
20381
|
+
return Te.defaultConfig ? Te.defaultConfig : iu;
|
|
20378
20382
|
}
|
|
20379
20383
|
/**
|
|
20380
20384
|
* Replace the default configuration applied to new instances.
|
|
20381
20385
|
*/
|
|
20382
20386
|
static set DefaultConfig(e) {
|
|
20383
|
-
|
|
20387
|
+
Te.defaultConfig = e;
|
|
20384
20388
|
}
|
|
20385
20389
|
/**
|
|
20386
20390
|
* Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
|
|
@@ -20388,7 +20392,7 @@ class Ee {
|
|
|
20388
20392
|
*/
|
|
20389
20393
|
constructor(e = {}) {
|
|
20390
20394
|
this.config = void 0, this.userConfig = void 0, this.logger = void 0, this.coreComponents = void 0, this.networkControllers = void 0, this._emitter = new gi(), this._autoLevelCapping = -1, this._maxHdcpLevel = null, this.abrController = void 0, this.bufferController = void 0, this.capLevelController = void 0, this.latencyController = void 0, this.levelController = void 0, this.streamController = void 0, this.audioStreamController = void 0, this.subtititleStreamController = void 0, this.audioTrackController = void 0, this.subtitleTrackController = void 0, this.interstitialsController = void 0, this.gapController = void 0, this.emeController = void 0, this.cmcdController = void 0, this._media = null, this._url = null, this._sessionId = void 0, this.triggeringException = void 0, this.started = !1;
|
|
20391
|
-
const t = this.logger = Ua(e.debug || !1, "Hls instance", e.assetPlayerId), s = this.config = nu(
|
|
20395
|
+
const t = this.logger = Ua(e.debug || !1, "Hls instance", e.assetPlayerId), s = this.config = nu(Te.DefaultConfig, e, t);
|
|
20392
20396
|
this.userConfig = e, s.progressive && au(s, t);
|
|
20393
20397
|
const {
|
|
20394
20398
|
abrController: i,
|
|
@@ -20396,7 +20400,7 @@ class Ee {
|
|
|
20396
20400
|
capLevelController: n,
|
|
20397
20401
|
errorController: o,
|
|
20398
20402
|
fpsController: c
|
|
20399
|
-
} = s, l = new o(this), h = this.abrController = new i(this), u = new ko(this), d = s.interstitialsController, f = d ? this.interstitialsController = new d(this,
|
|
20403
|
+
} = s, l = new o(this), h = this.abrController = new i(this), u = new ko(this), d = s.interstitialsController, f = d ? this.interstitialsController = new d(this, Te) : null, g = this.bufferController = new r(this, u), E = this.capLevelController = new n(this), p = new c(this), T = new vu(this), v = s.contentSteeringController, y = v ? new v(this) : null, S = this.levelController = new gu(this, y), L = new du(this), C = new yu(this.config), x = this.streamController = new Tu(this, u, C), R = this.gapController = new hu(this, u);
|
|
20400
20404
|
E.setStreamController(x), p.setStreamController(x);
|
|
20401
20405
|
const D = [T, S, x];
|
|
20402
20406
|
f && D.splice(1, 0, f), y && D.splice(1, 0, y), this.networkControllers = D;
|
|
@@ -20404,8 +20408,8 @@ class Ee {
|
|
|
20404
20408
|
this.audioTrackController = this.createController(s.audioTrackController, D);
|
|
20405
20409
|
const k = s.audioStreamController;
|
|
20406
20410
|
k && D.push(this.audioStreamController = new k(this, u, C)), this.subtitleTrackController = this.createController(s.subtitleTrackController, D);
|
|
20407
|
-
const
|
|
20408
|
-
|
|
20411
|
+
const O = s.subtitleStreamController;
|
|
20412
|
+
O && D.push(this.subtititleStreamController = new O(this, u, C)), this.createController(s.timelineController, A), C.emeController = this.emeController = this.createController(s.emeController, A), this.cmcdController = this.createController(s.cmcdController, A), this.latencyController = this.createController(fu, A), this.coreComponents = A, D.push(l);
|
|
20409
20413
|
const K = l.onErrorOut;
|
|
20410
20414
|
typeof K == "function" && this.on(m.ERROR, K, l), this.on(m.MANIFEST_LOADED, T.onManifestLoaded, T);
|
|
20411
20415
|
}
|
|
@@ -20445,7 +20449,7 @@ class Ee {
|
|
|
20445
20449
|
this.triggeringException = !0;
|
|
20446
20450
|
const i = e === m.ERROR;
|
|
20447
20451
|
this.trigger(m.ERROR, {
|
|
20448
|
-
type:
|
|
20452
|
+
type: V.OTHER_ERROR,
|
|
20449
20453
|
details: b.INTERNAL_EXCEPTION,
|
|
20450
20454
|
fatal: i,
|
|
20451
20455
|
event: e,
|
|
@@ -20473,7 +20477,7 @@ class Ee {
|
|
|
20473
20477
|
if (!e || "media" in e && !e.media) {
|
|
20474
20478
|
const r = new Error(`attachMedia failed: invalid argument (${e})`);
|
|
20475
20479
|
this.trigger(m.ERROR, {
|
|
20476
|
-
type:
|
|
20480
|
+
type: V.OTHER_ERROR,
|
|
20477
20481
|
details: b.ATTACH_MEDIA_ERROR,
|
|
20478
20482
|
fatal: !0,
|
|
20479
20483
|
error: r
|
|
@@ -21039,7 +21043,7 @@ class Ee {
|
|
|
21039
21043
|
return ln(e, s, navigator.mediaCapabilities);
|
|
21040
21044
|
}
|
|
21041
21045
|
}
|
|
21042
|
-
|
|
21046
|
+
Te.defaultConfig = void 0;
|
|
21043
21047
|
const Su = "data:image/png;base64,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", Au = "data:image/png;base64,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", xu = ["das-loading-text"], Lu = ["src"], Iu = ["src"], Ru = ["objectFit", "controls"], bu = ["src", "objectFit"], Du = /* @__PURE__ */ Ta({
|
|
21044
21048
|
__name: "das-hls-player",
|
|
21045
21049
|
props: {
|
|
@@ -21050,35 +21054,41 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21050
21054
|
loadingText: {},
|
|
21051
21055
|
error: { type: Boolean },
|
|
21052
21056
|
errorText: {},
|
|
21053
|
-
retryTime: {}
|
|
21057
|
+
retryTime: {},
|
|
21058
|
+
errorTime: {}
|
|
21054
21059
|
},
|
|
21055
21060
|
emits: ["loaded", "errorClick", "error"],
|
|
21056
21061
|
setup(a, { expose: e, emit: t }) {
|
|
21057
|
-
ya((
|
|
21058
|
-
"
|
|
21062
|
+
ya((_) => ({
|
|
21063
|
+
"88cc9cc6": _.loadingBackground
|
|
21059
21064
|
}));
|
|
21060
21065
|
const s = a, i = t, {
|
|
21061
21066
|
fit: r,
|
|
21062
21067
|
loadingText: n = _i("加载中"),
|
|
21063
21068
|
loading: o = !1,
|
|
21064
21069
|
errorText: c = _i("das-ui-hls-player-videoLoadFailedRetry")
|
|
21065
|
-
} = va(s), l =
|
|
21070
|
+
} = va(s), l = Ee(s.errorTime || 10), h = (_) => {
|
|
21071
|
+
if (l.value === 0) return;
|
|
21072
|
+
l.value = l.value - 1;
|
|
21073
|
+
const $ = _.target;
|
|
21074
|
+
console.log("Video error:", $.error), K();
|
|
21075
|
+
}, u = Sa(() => s.src || "");
|
|
21066
21076
|
Pa(s, "videoError");
|
|
21067
|
-
const
|
|
21068
|
-
|
|
21069
|
-
const
|
|
21070
|
-
const
|
|
21071
|
-
if (
|
|
21072
|
-
setTimeout(() =>
|
|
21077
|
+
const d = Ee(!0), f = Ee(null), g = Ee(null);
|
|
21078
|
+
Ee(!1);
|
|
21079
|
+
const E = Ee(""), p = Ee(null), T = Ee(), v = Ee(!1), y = Ee(!1), S = () => new Promise((_) => {
|
|
21080
|
+
const $ = () => {
|
|
21081
|
+
if (f != null && f.value) return _();
|
|
21082
|
+
setTimeout(() => $(), 50);
|
|
21073
21083
|
};
|
|
21074
|
-
|
|
21075
|
-
}),
|
|
21076
|
-
|
|
21077
|
-
const
|
|
21078
|
-
if (!
|
|
21079
|
-
return
|
|
21080
|
-
if (await
|
|
21081
|
-
const
|
|
21084
|
+
$();
|
|
21085
|
+
}), L = Ee(!1);
|
|
21086
|
+
Ee();
|
|
21087
|
+
const C = async () => {
|
|
21088
|
+
if (!u.value)
|
|
21089
|
+
return E.value = "视频URL为空";
|
|
21090
|
+
if (await S(), k(), d.value = !v.value, Te.isSupported()) {
|
|
21091
|
+
const _ = {
|
|
21082
21092
|
debug: !1,
|
|
21083
21093
|
// 生产环境关闭调试
|
|
21084
21094
|
enableWorker: !0,
|
|
@@ -21112,65 +21122,65 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21112
21122
|
fragLoadingTimeOut: 1e4
|
|
21113
21123
|
// 分片加载超时
|
|
21114
21124
|
};
|
|
21115
|
-
|
|
21116
|
-
|
|
21117
|
-
|
|
21118
|
-
}), i("loaded",
|
|
21125
|
+
g.value = new Te(_), g.value.loadSource(u.value), g.value.autoLevelCapping = -1, g.value.attachMedia(f.value), g.value.on(Te.Events.MANIFEST_PARSED, () => {
|
|
21126
|
+
console.log("HLS 流加载成功,尝试播放..."), p.value && clearTimeout(p.value), p.value = setTimeout(() => {
|
|
21127
|
+
f.value.play().catch(() => {
|
|
21128
|
+
}), i("loaded", f.value);
|
|
21119
21129
|
}, 300);
|
|
21120
|
-
}),
|
|
21121
|
-
|
|
21130
|
+
}), g.value.on(Te.Events.ERROR, ($, w) => {
|
|
21131
|
+
O(w);
|
|
21122
21132
|
});
|
|
21123
|
-
} else
|
|
21124
|
-
|
|
21125
|
-
}, L = () => {
|
|
21126
|
-
h.value = !1, f.value = "", E.value = "";
|
|
21127
|
-
}, C = () => {
|
|
21128
|
-
h.value = !0, T.value = !1;
|
|
21133
|
+
} else f.value.canPlayType("application/vnd.apple.mpegurl") ? console.log("ios用原生播放") : O({ type: "UNSUPPORTED" });
|
|
21134
|
+
f.value.addEventListener("playing", x), f.value.addEventListener("waiting", D);
|
|
21129
21135
|
}, x = () => {
|
|
21130
|
-
|
|
21136
|
+
console.log("视频开始播放"), d.value = !1, E.value = "", T.value = "";
|
|
21131
21137
|
}, R = () => {
|
|
21132
|
-
|
|
21133
|
-
(O = u.value) == null || O.removeEventListener("playing", L), (B = u.value) == null || B.removeEventListener("play", C), (M = u.value) == null || M.removeEventListener("waiting", x);
|
|
21138
|
+
d.value = !0, y.value = !1;
|
|
21134
21139
|
}, D = () => {
|
|
21135
|
-
|
|
21136
|
-
}, A = (
|
|
21137
|
-
var
|
|
21138
|
-
|
|
21139
|
-
|
|
21140
|
-
|
|
21141
|
-
|
|
21140
|
+
console.log("视频缓冲中..."), E.value = "视频缓冲中...";
|
|
21141
|
+
}, A = () => {
|
|
21142
|
+
var _, $, w;
|
|
21143
|
+
(_ = f.value) == null || _.removeEventListener("playing", x), ($ = f.value) == null || $.removeEventListener("play", R), (w = f.value) == null || w.removeEventListener("waiting", D);
|
|
21144
|
+
}, k = () => {
|
|
21145
|
+
g.value && (g.value.destroy(), g.value = null);
|
|
21146
|
+
}, O = (_) => {
|
|
21147
|
+
var $, w;
|
|
21148
|
+
if (E.value = "视频加载失败", T.value = JSON.stringify(_), console.log(_, "============dadta"), _.fatal)
|
|
21149
|
+
switch (_.type) {
|
|
21150
|
+
case Te.ErrorTypes.NETWORK_ERROR:
|
|
21151
|
+
E.value = "网络错误或视频流404,正在加载中...", ($ = g.value) == null || $.startLoad(), K();
|
|
21142
21152
|
break;
|
|
21143
|
-
case
|
|
21144
|
-
|
|
21153
|
+
case Te.ErrorTypes.MEDIA_ERROR:
|
|
21154
|
+
E.value = "媒体错误,正在加载中...", (w = g.value) == null || w.recoverMediaError(), K();
|
|
21145
21155
|
break;
|
|
21146
21156
|
default:
|
|
21147
|
-
|
|
21157
|
+
E.value = "播放错误,正在尝试重新初始化...", K();
|
|
21148
21158
|
break;
|
|
21149
21159
|
}
|
|
21150
21160
|
else
|
|
21151
|
-
|
|
21152
|
-
},
|
|
21153
|
-
|
|
21154
|
-
|
|
21161
|
+
E.value = `非致命错误详情: ${_.details}`;
|
|
21162
|
+
}, K = () => {
|
|
21163
|
+
E.value = "重试中...", k(), setTimeout(() => {
|
|
21164
|
+
C();
|
|
21155
21165
|
}, 1e3);
|
|
21156
|
-
},
|
|
21157
|
-
|
|
21166
|
+
}, U = () => {
|
|
21167
|
+
C();
|
|
21158
21168
|
};
|
|
21159
|
-
|
|
21160
|
-
const
|
|
21161
|
-
|
|
21169
|
+
Ee(!1);
|
|
21170
|
+
const N = () => {
|
|
21171
|
+
y.value = !1, d.value = !0, C();
|
|
21162
21172
|
};
|
|
21163
21173
|
return Aa(() => {
|
|
21164
|
-
if (
|
|
21165
|
-
|
|
21174
|
+
if (v.value = /MicroMessenger/i.test(navigator.userAgent), y.value = v.value, L.value = !Te.isSupported(), v.value) {
|
|
21175
|
+
d.value = !1, L.value && (f.value.addEventListener("play", R), f.value.addEventListener("playing", x));
|
|
21166
21176
|
return;
|
|
21167
21177
|
}
|
|
21168
|
-
|
|
21178
|
+
U();
|
|
21169
21179
|
}), xa(() => {
|
|
21170
|
-
|
|
21180
|
+
p.value && clearTimeout(p.value), A(), k();
|
|
21171
21181
|
}), e({
|
|
21172
|
-
video:
|
|
21173
|
-
}), (
|
|
21182
|
+
video: f
|
|
21183
|
+
}), (_, $) => (At(), St(
|
|
21174
21184
|
La,
|
|
21175
21185
|
null,
|
|
21176
21186
|
[
|
|
@@ -21183,22 +21193,22 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21183
21193
|
"das-loading-text": at(n),
|
|
21184
21194
|
"das-loading-type": "component"
|
|
21185
21195
|
}, [
|
|
21186
|
-
|
|
21196
|
+
v.value && y.value ? (At(), St(
|
|
21187
21197
|
"div",
|
|
21188
21198
|
{
|
|
21189
21199
|
key: 0,
|
|
21190
|
-
class: Ra(["fake-gif", { native:
|
|
21200
|
+
class: Ra(["fake-gif", { native: L.value }])
|
|
21191
21201
|
},
|
|
21192
21202
|
[
|
|
21193
21203
|
ki("img", {
|
|
21194
21204
|
class: "preview-img",
|
|
21195
21205
|
src: at(Su)
|
|
21196
21206
|
}, null, 8, Lu),
|
|
21197
|
-
|
|
21207
|
+
L.value ? nt("v-if", !0) : (At(), St("img", {
|
|
21198
21208
|
key: 0,
|
|
21199
21209
|
class: "player-btn",
|
|
21200
21210
|
src: at(Au),
|
|
21201
|
-
onClick:
|
|
21211
|
+
onClick: N
|
|
21202
21212
|
}, null, 8, Iu))
|
|
21203
21213
|
],
|
|
21204
21214
|
2
|
|
@@ -21216,7 +21226,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21216
21226
|
`),
|
|
21217
21227
|
ki("video", {
|
|
21218
21228
|
ref_key: "videoEl",
|
|
21219
|
-
ref:
|
|
21229
|
+
ref: f,
|
|
21220
21230
|
"x-webkit-airplay": "true",
|
|
21221
21231
|
preload: "auto",
|
|
21222
21232
|
playsinline: "",
|
|
@@ -21228,17 +21238,18 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21228
21238
|
muted: "",
|
|
21229
21239
|
class: "player",
|
|
21230
21240
|
controlsList: "nodownload nofullscreen noplaybackrate",
|
|
21231
|
-
controls:
|
|
21241
|
+
controls: L.value,
|
|
21242
|
+
onError: h
|
|
21232
21243
|
}, [
|
|
21233
|
-
|
|
21244
|
+
L.value ? (At(), St("source", {
|
|
21234
21245
|
key: 0,
|
|
21235
|
-
src:
|
|
21246
|
+
src: u.value,
|
|
21236
21247
|
objectFit: at(r),
|
|
21237
21248
|
type: "application/vnd.apple.mpegurl"
|
|
21238
21249
|
}, null, 8, bu)) : nt("v-if", !0)
|
|
21239
|
-
],
|
|
21250
|
+
], 40, Ru)
|
|
21240
21251
|
], 8, xu)), [
|
|
21241
|
-
[at(Ca),
|
|
21252
|
+
[at(Ca), d.value]
|
|
21242
21253
|
]),
|
|
21243
21254
|
nt(" </div> ")
|
|
21244
21255
|
],
|
|
@@ -21251,7 +21262,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21251
21262
|
for (const [s, i] of e)
|
|
21252
21263
|
t[s] = i;
|
|
21253
21264
|
return t;
|
|
21254
|
-
}, Pu = /* @__PURE__ */ Cu(Du, [["__scopeId", "data-v-
|
|
21265
|
+
}, Pu = /* @__PURE__ */ Cu(Du, [["__scopeId", "data-v-9ee6e2c0"]]), ku = {
|
|
21255
21266
|
加载中: { "zh-CN": "加载中", en: "Loading", _appCode: "framework" },
|
|
21256
21267
|
"das-ui-hls-player-videoLoadFailedRetry": {
|
|
21257
21268
|
"zh-CN": "视频加载失败,请点击重试",
|
|
@@ -21260,7 +21271,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21260
21271
|
}
|
|
21261
21272
|
};
|
|
21262
21273
|
Da(ku);
|
|
21263
|
-
const Gu = ba(Pu), $u = () =>
|
|
21274
|
+
const Gu = ba(Pu), $u = () => Ee(null);
|
|
21264
21275
|
export {
|
|
21265
21276
|
Gu as DasHlsPlayer,
|
|
21266
21277
|
$u as getDasHlsPlayerRef
|