@das-fed/ui 7.0.7-hot.2 → 7.0.7-hot.20
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 +2 -2
- package/package.json +6 -5
- 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
- package/packages/business-components/ai-panel/style.css.gz +0 -0
- package/packages/business-components/app-container/index.js.gz +0 -0
- 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/index.js.gz +0 -0
- 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/area-phone-select/style.css.gz +0 -0
- package/packages/business-components/change-enterprises/index.js.gz +0 -0
- package/packages/business-components/change-enterprises/style.css.gz +0 -0
- package/packages/business-components/change-pwd/index.js.gz +0 -0
- package/packages/business-components/currency-page/index.js.gz +0 -0
- package/packages/business-components/device-panel/index.js.gz +0 -0
- package/packages/business-components/device-panel/style.css.gz +0 -0
- package/packages/business-components/echarts/index.js.gz +0 -0
- package/packages/business-components/export-button/index.js.gz +0 -0
- package/packages/business-components/import-button/index.js +76 -74
- package/packages/business-components/import-button/index.js.gz +0 -0
- package/packages/business-components/import-button/src/type.d.ts +4 -0
- package/packages/business-components/import-button/style.css +1 -1
- package/packages/business-components/layout-breadcrumb/index.js.gz +0 -0
- package/packages/business-components/model-table-dialog/index.js.gz +0 -0
- package/packages/business-components/model-table-dialog/style.css.gz +0 -0
- package/packages/business-components/payment/api.d.ts +8 -0
- package/packages/business-components/payment/index.d.ts +9 -11
- package/packages/business-components/payment/index.js +153 -147
- 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 +3 -3
- package/packages/business-components/process-configuration/index.js.gz +0 -0
- package/packages/business-components/process-configuration/style.css +1 -1
- package/packages/business-components/process-configuration/style.css.gz +0 -0
- package/packages/business-components/process-form/index.js +1124 -1117
- package/packages/business-components/process-form/index.js.gz +0 -0
- package/packages/business-components/process-form/src/hooks/useSpaceTree.d.ts +3 -3
- package/packages/business-components/process-form/style.css +1 -1
- package/packages/business-components/process-log/index.js.gz +0 -0
- package/packages/business-components/process-log/style.css.gz +0 -0
- package/packages/business-components/process-search-form/index.js +54 -54
- package/packages/business-components/process-search-form/index.js.gz +0 -0
- package/packages/business-components/process-table/index.js.gz +0 -0
- package/packages/business-components/upload-file/index.js.gz +0 -0
- package/packages/business-components/urgent-panel/index.js.gz +0 -0
- package/packages/business-components/urgent-panel/style.css.gz +0 -0
- package/packages/business-components/user-org-dialog/index.js.gz +0 -0
- package/packages/business-components/user-org-dialog/style.css.gz +0 -0
- package/packages/business-components/video-dialog/index.d.ts +10 -0
- package/packages/business-components/video-dialog/index.js +375 -356
- 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/alert/index.js.gz +0 -0
- package/packages/components/alert/style.css.gz +0 -0
- package/packages/components/audio-video/index.js.gz +0 -0
- package/packages/components/autocomplete/index.d.ts +15 -15
- package/packages/components/autocomplete/index.js.gz +0 -0
- package/packages/components/autocomplete/src/index.vue.d.ts +2 -2
- package/packages/components/autocomplete/style.css.gz +0 -0
- package/packages/components/breadcrumb/index.js.gz +0 -0
- package/packages/components/breadcrumb/style.css.gz +0 -0
- package/packages/components/button/index.js.gz +0 -0
- package/packages/components/button/style.css.gz +0 -0
- package/packages/components/calendar/index.js.gz +0 -0
- package/packages/components/calendar/style.css.gz +0 -0
- package/packages/components/cascader/index.js.gz +0 -0
- package/packages/components/cascader/style.css.gz +0 -0
- package/packages/components/checkbox/index.d.ts +15 -15
- package/packages/components/checkbox/index.js.gz +0 -0
- package/packages/components/checkbox/src/Index.vue.d.ts +2 -2
- package/packages/components/checkbox/style.css.gz +0 -0
- package/packages/components/collapse-panel/index.js.gz +0 -0
- package/packages/components/collapse-panel/style.css.gz +0 -0
- package/packages/components/collapse-transition/index.js.gz +0 -0
- package/packages/components/collaspe/index.js.gz +0 -0
- package/packages/components/color-picker/index.d.ts +8 -8
- package/packages/components/color-picker/index.js.gz +0 -0
- package/packages/components/color-picker/src/Index.vue.d.ts +2 -2
- package/packages/components/color-picker/style.css.gz +0 -0
- package/packages/components/custom-search-item/index.d.ts +15 -15
- package/packages/components/custom-search-item/index.js.gz +0 -0
- package/packages/components/custom-search-item/src/Index.vue.d.ts +2 -2
- package/packages/components/date-picker/index.js.gz +0 -0
- package/packages/components/date-picker/style.css.gz +0 -0
- package/packages/components/dialog/index.js.gz +0 -0
- package/packages/components/dialog/style.css.gz +0 -0
- package/packages/components/dimple-layout/index.js.gz +0 -0
- package/packages/components/dimple-layout/style.css.gz +0 -0
- package/packages/components/drawer/index.js.gz +0 -0
- package/packages/components/dropdown/index.js.gz +0 -0
- package/packages/components/dropdown/style.css.gz +0 -0
- package/packages/components/edit-table/index.js.gz +0 -0
- package/packages/components/edit-table/style.css.gz +0 -0
- package/packages/components/empty/index.js.gz +0 -0
- package/packages/components/error-overlay-model/index.js.gz +0 -0
- package/packages/components/form/index.js.gz +0 -0
- package/packages/components/form-item/index.js.gz +0 -0
- package/packages/components/form-item/style.css.gz +0 -0
- package/packages/components/hls-player/index.js +488 -484
- 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/icon/index.js.gz +0 -0
- package/packages/components/image-preview/index.js.gz +0 -0
- package/packages/components/image-upload/index.js.gz +0 -0
- package/packages/components/image-upload/style.css.gz +0 -0
- package/packages/components/image-viewer/index.js.gz +0 -0
- package/packages/components/image-viewer/style.css.gz +0 -0
- package/packages/components/input/index.d.ts +5 -5
- package/packages/components/input/index.js.gz +0 -0
- package/packages/components/input/src/index.vue.d.ts +2 -2
- package/packages/components/input/style.css.gz +0 -0
- package/packages/components/input-dialog-select/index.d.ts +2 -2
- package/packages/components/input-dialog-select/index.js.gz +0 -0
- package/packages/components/input-dialog-select/src/Index.vue.d.ts +2 -2
- package/packages/components/input-dialog-select/style.css.gz +0 -0
- package/packages/components/input-number/index.d.ts +8 -8
- 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/input-number/style.css.gz +0 -0
- package/packages/components/live-player/index.d.ts +2 -0
- package/packages/components/live-player/index.js +822 -814
- 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/loading/index.js.gz +0 -0
- package/packages/components/loading/style.css.gz +0 -0
- package/packages/components/map/index.js.gz +0 -0
- package/packages/components/menu-aside/index.js.gz +0 -0
- package/packages/components/menu-aside/style.css.gz +0 -0
- package/packages/components/menu-header/index.js.gz +0 -0
- package/packages/components/menu-header/style.css.gz +0 -0
- package/packages/components/message/index.js.gz +0 -0
- package/packages/components/message/style.css.gz +0 -0
- package/packages/components/notification/index.js.gz +0 -0
- package/packages/components/notification/style.css.gz +0 -0
- package/packages/components/overlay/index.js.gz +0 -0
- package/packages/components/pagination/index.js.gz +0 -0
- package/packages/components/pagination/style.css.gz +0 -0
- package/packages/components/popover/index.js.gz +0 -0
- package/packages/components/popover/style.css.gz +0 -0
- package/packages/components/popup-mask/index.js.gz +0 -0
- package/packages/components/preview/index.js.gz +0 -0
- package/packages/components/progress/index.js.gz +0 -0
- package/packages/components/progress/style.css.gz +0 -0
- package/packages/components/radio/index.d.ts +15 -15
- package/packages/components/radio/index.js.gz +0 -0
- package/packages/components/radio/src/Index.vue.d.ts +2 -2
- package/packages/components/radio/style.css.gz +0 -0
- package/packages/components/radio-tabs/index.js.gz +0 -0
- package/packages/components/radio-tabs/style.css.gz +0 -0
- package/packages/components/rich-editor/index.d.ts +8 -8
- package/packages/components/rich-editor/index.js +15506 -14971
- 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/rich-editor/style.css.gz +0 -0
- package/packages/components/scrollbar/index.js.gz +0 -0
- package/packages/components/scrollbar/style.css.gz +0 -0
- package/packages/components/search/index.d.ts +2 -2
- package/packages/components/search/index.js.gz +0 -0
- package/packages/components/search/src/Index.vue.d.ts +2 -2
- package/packages/components/search/style.css.gz +0 -0
- 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.gz +0 -0
- package/packages/components/select/style.css.gz +0 -0
- package/packages/components/select-input/index.js.gz +0 -0
- package/packages/components/select-input/style.css.gz +0 -0
- package/packages/components/select-list/index.js.gz +0 -0
- package/packages/components/select-list/style.css.gz +0 -0
- package/packages/components/special-range-picker-month/index.d.ts +2 -2
- 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-month/style.css.gz +0 -0
- package/packages/components/special-range-picker-year/index.d.ts +2 -2
- 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/special-range-picker-year/style.css.gz +0 -0
- package/packages/components/spin/index.js.gz +0 -0
- package/packages/components/spin/style.css.gz +0 -0
- package/packages/components/split-panel/index.js.gz +0 -0
- package/packages/components/split-panel/style.css.gz +0 -0
- package/packages/components/step/index.js.gz +0 -0
- package/packages/components/steps/style.css.gz +0 -0
- package/packages/components/switch/index.js.gz +0 -0
- package/packages/components/switch/style.css.gz +0 -0
- package/packages/components/table/index.js.gz +0 -0
- package/packages/components/table/style.css.gz +0 -0
- package/packages/components/tabs/index.js.gz +0 -0
- package/packages/components/tabs/style.css.gz +0 -0
- package/packages/components/tag/index.js.gz +0 -0
- package/packages/components/tag/style.css.gz +0 -0
- package/packages/components/text-tooltip/index.js.gz +0 -0
- package/packages/components/text-tooltip/style.css.gz +0 -0
- package/packages/components/time-line/index.js.gz +0 -0
- package/packages/components/time-line/style.css.gz +0 -0
- package/packages/components/tooltip/index.js.gz +0 -0
- package/packages/components/tooltip/style.css.gz +0 -0
- package/packages/components/tree/index.js.gz +0 -0
- package/packages/components/tree/style.css.gz +0 -0
- 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-select/style.css.gz +0 -0
- package/packages/components/tree-table/index.js.gz +0 -0
- package/packages/components/tree-table/style.css.gz +0 -0
- package/packages/components/tree-v2/index.js.gz +0 -0
- package/packages/components/tree-v2/style.css.gz +0 -0
- package/packages/components/upload/index.js.gz +0 -0
- package/packages/components/upload/style.css.gz +0 -0
- package/packages/components/virtual-tree/index.js.gz +0 -0
- package/packages/components/virtual-tree/style.css.gz +0 -0
- package/packages/global/theme/index.js.gz +0 -0
- package/packages/icons/1-grids/index.js.gz +0 -0
- package/packages/icons/4-grids/index.js.gz +0 -0
- package/packages/icons/9-grids/index.js.gz +0 -0
- package/packages/icons/add/index.js.gz +0 -0
- package/packages/icons/add-item/index.js.gz +0 -0
- package/packages/icons/addto/index.js.gz +0 -0
- package/packages/icons/alarm/index.js.gz +0 -0
- package/packages/icons/arrow-first/index.js.gz +0 -0
- package/packages/icons/arrow-last/index.js.gz +0 -0
- package/packages/icons/audioing/index.js.gz +0 -0
- package/packages/icons/back/index.js.gz +0 -0
- package/packages/icons/bianjigongzuotai/index.js.gz +0 -0
- package/packages/icons/biaochi/index.js.gz +0 -0
- package/packages/icons/bim/index.js.gz +0 -0
- package/packages/icons/bobaoguanbi/index.js.gz +0 -0
- package/packages/icons/bobaokaiqi/index.js.gz +0 -0
- package/packages/icons/bold/index.js.gz +0 -0
- package/packages/icons/camera/index.js.gz +0 -0
- package/packages/icons/camera-2/index.js.gz +0 -0
- package/packages/icons/camera-3/index.js.gz +0 -0
- package/packages/icons/cancel-full-screen/index.js.gz +0 -0
- package/packages/icons/cankaoneirong/index.js.gz +0 -0
- package/packages/icons/card/index.js.gz +0 -0
- package/packages/icons/card-view/index.js.gz +0 -0
- package/packages/icons/caret-bottom/index.js.gz +0 -0
- package/packages/icons/caret-right/index.js.gz +0 -0
- package/packages/icons/chakancelve/index.js.gz +0 -0
- package/packages/icons/change/index.js.gz +0 -0
- package/packages/icons/change-2/index.js.gz +0 -0
- package/packages/icons/change-3/index.js.gz +0 -0
- package/packages/icons/changetenant/index.js.gz +0 -0
- package/packages/icons/chart/index.js.gz +0 -0
- package/packages/icons/chaxunxiangqing/index.js.gz +0 -0
- package/packages/icons/check/index.js.gz +0 -0
- package/packages/icons/chuanglianjiang/index.js.gz +0 -0
- package/packages/icons/chuangliansheng/index.js.gz +0 -0
- package/packages/icons/chuanglianting/index.js.gz +0 -0
- package/packages/icons/chuizhiduiqi/index.js.gz +0 -0
- package/packages/icons/chuizhijunfen/index.js.gz +0 -0
- package/packages/icons/close/index.js.gz +0 -0
- package/packages/icons/close-2/index.js.gz +0 -0
- package/packages/icons/closeaudio/index.js.gz +0 -0
- package/packages/icons/color/index.js.gz +0 -0
- package/packages/icons/copy/index.js.gz +0 -0
- package/packages/icons/custom/index.js.gz +0 -0
- package/packages/icons/daochu/index.js.gz +0 -0
- package/packages/icons/date/index.js.gz +0 -0
- package/packages/icons/decline/index.js.gz +0 -0
- package/packages/icons/default-btn/index.js.gz +0 -0
- package/packages/icons/default-point/index.js.gz +0 -0
- package/packages/icons/delete/index.js.gz +0 -0
- package/packages/icons/delete-2/index.js.gz +0 -0
- package/packages/icons/dengdai/index.js.gz +0 -0
- package/packages/icons/dianzan/index.js.gz +0 -0
- package/packages/icons/dianzan-2/index.js.gz +0 -0
- package/packages/icons/direction-control/index.js.gz +0 -0
- package/packages/icons/ditu/index.js.gz +0 -0
- package/packages/icons/dizhixuanze/index.js.gz +0 -0
- package/packages/icons/double-arrow-left/index.js.gz +0 -0
- package/packages/icons/double-arrow-right/index.js.gz +0 -0
- package/packages/icons/down/index.js.gz +0 -0
- package/packages/icons/download/index.js.gz +0 -0
- package/packages/icons/drag/index.js.gz +0 -0
- package/packages/icons/drawing/index.js.gz +0 -0
- package/packages/icons/edit/index.js.gz +0 -0
- package/packages/icons/edit-1/index.js.gz +0 -0
- package/packages/icons/edit-3/index.js.gz +0 -0
- package/packages/icons/empty/index.js.gz +0 -0
- package/packages/icons/enlarge/index.js.gz +0 -0
- package/packages/icons/entry/index.js.gz +0 -0
- package/packages/icons/exit/index.js.gz +0 -0
- package/packages/icons/fabu/index.js.gz +0 -0
- package/packages/icons/fanhui/index.js.gz +0 -0
- package/packages/icons/fasong/index.js.gz +0 -0
- package/packages/icons/filter-3/index.js.gz +0 -0
- package/packages/icons/finish/index.js.gz +0 -0
- package/packages/icons/fold/index.js.gz +0 -0
- package/packages/icons/folder-quest/index.js.gz +0 -0
- package/packages/icons/form-tips/index.js.gz +0 -0
- package/packages/icons/fresh/index.js.gz +0 -0
- package/packages/icons/full/index.js.gz +0 -0
- package/packages/icons/full-screen/index.js.gz +0 -0
- package/packages/icons/fullscreen-2/index.js.gz +0 -0
- package/packages/icons/fuzhi/index.js.gz +0 -0
- package/packages/icons/fuzhineirong/index.js.gz +0 -0
- package/packages/icons/gaojin/index.js.gz +0 -0
- package/packages/icons/global/index.js.gz +0 -0
- package/packages/icons/gongzuotaiguanli/index.js.gz +0 -0
- package/packages/icons/header-seach/index.js.gz +0 -0
- package/packages/icons/header-setting/index.js.gz +0 -0
- package/packages/icons/headersettings/index.js.gz +0 -0
- package/packages/icons/hide/index.js.gz +0 -0
- package/packages/icons/huabufuwei/index.js.gz +0 -0
- package/packages/icons/huaxian/index.js.gz +0 -0
- package/packages/icons/huida/index.js.gz +0 -0
- package/packages/icons/huidaodibu/index.js.gz +0 -0
- package/packages/icons/huifuchuchangshezhi/index.js.gz +0 -0
- package/packages/icons/hyperlinks/index.js.gz +0 -0
- package/packages/icons/img/index.js.gz +0 -0
- package/packages/icons/input-close/index.js.gz +0 -0
- package/packages/icons/input-select/index.js.gz +0 -0
- package/packages/icons/intnet/index.js.gz +0 -0
- package/packages/icons/italic/index.js.gz +0 -0
- package/packages/icons/jia-1/index.js.gz +0 -0
- package/packages/icons/jinggao/index.js.gz +0 -0
- package/packages/icons/jushangduiqi/index.js.gz +0 -0
- package/packages/icons/juxiaduiqi/index.js.gz +0 -0
- package/packages/icons/juxinghuizhi/index.js.gz +0 -0
- package/packages/icons/juyouduiqi/index.js.gz +0 -0
- package/packages/icons/juzuoduiqi/index.js.gz +0 -0
- package/packages/icons/kaiguan/index.js.gz +0 -0
- package/packages/icons/kaimen/index.js.gz +0 -0
- package/packages/icons/know/index.js.gz +0 -0
- package/packages/icons/knowed/index.js.gz +0 -0
- package/packages/icons/knowopen/index.js.gz +0 -0
- package/packages/icons/layout-refresh/index.js.gz +0 -0
- package/packages/icons/lianjie/index.js.gz +0 -0
- package/packages/icons/link/index.js.gz +0 -0
- package/packages/icons/lishihuihua/index.js.gz +0 -0
- package/packages/icons/list/index.js.gz +0 -0
- package/packages/icons/list-view/index.js.gz +0 -0
- package/packages/icons/load/index.js.gz +0 -0
- package/packages/icons/lock/index.js.gz +0 -0
- package/packages/icons/me/index.js.gz +0 -0
- package/packages/icons/more/index.js.gz +0 -0
- package/packages/icons/more-btn/index.js.gz +0 -0
- package/packages/icons/muted/index.js.gz +0 -0
- package/packages/icons/notification-face/index.js.gz +0 -0
- package/packages/icons/paiban/index.js.gz +0 -0
- package/packages/icons/password-lock/index.js.gz +0 -0
- package/packages/icons/password-lock2/index.js.gz +0 -0
- package/packages/icons/pause/index.js.gz +0 -0
- package/packages/icons/phone/index.js.gz +0 -0
- package/packages/icons/pinglun/index.js.gz +0 -0
- package/packages/icons/plan/index.js.gz +0 -0
- package/packages/icons/play/index.js.gz +0 -0
- package/packages/icons/preview/index.js.gz +0 -0
- package/packages/icons/preview-eye/index.js.gz +0 -0
- package/packages/icons/project-list/index.js.gz +0 -0
- package/packages/icons/project-tree/index.js.gz +0 -0
- package/packages/icons/promptinformation-l/index.js.gz +0 -0
- package/packages/icons/qiehuangongzuotai/index.js.gz +0 -0
- package/packages/icons/qingkong/index.js.gz +0 -0
- package/packages/icons/quanping/index.js.gz +0 -0
- package/packages/icons/rate-all/index.js.gz +0 -0
- package/packages/icons/rate-half/index.js.gz +0 -0
- package/packages/icons/rate-none/index.js.gz +0 -0
- package/packages/icons/recover/index.js.gz +0 -0
- package/packages/icons/refresh/index.js.gz +0 -0
- package/packages/icons/reload/index.js.gz +0 -0
- package/packages/icons/reset/index.js.gz +0 -0
- package/packages/icons/right-3/index.js.gz +0 -0
- package/packages/icons/riqixuanze/index.js.gz +0 -0
- package/packages/icons/rise/index.js.gz +0 -0
- package/packages/icons/save/index.js.gz +0 -0
- package/packages/icons/screenshot/index.js.gz +0 -0
- package/packages/icons/search/index.js.gz +0 -0
- package/packages/icons/select-confirm/index.js.gz +0 -0
- package/packages/icons/set-up/index.js.gz +0 -0
- package/packages/icons/setting/index.js.gz +0 -0
- package/packages/icons/shangchuan/index.js.gz +0 -0
- package/packages/icons/shebei/index.js.gz +0 -0
- package/packages/icons/shebeiqunzu/index.js.gz +0 -0
- package/packages/icons/shendusikao/index.js.gz +0 -0
- package/packages/icons/sheweimoren/index.js.gz +0 -0
- package/packages/icons/shisuan/index.js.gz +0 -0
- package/packages/icons/shitu-kapian/index.js.gz +0 -0
- package/packages/icons/shitu-map/index.js.gz +0 -0
- package/packages/icons/shortcut-keys/index.js.gz +0 -0
- package/packages/icons/shoudongzhihang/index.js.gz +0 -0
- package/packages/icons/shouqiyoucemianban/index.js.gz +0 -0
- package/packages/icons/shouqiyoucemianban-1/index.js.gz +0 -0
- package/packages/icons/shouqizuocemianban/index.js.gz +0 -0
- package/packages/icons/shouqizuocemianban-1/index.js.gz +0 -0
- package/packages/icons/shouquan/index.js.gz +0 -0
- package/packages/icons/show/index.js.gz +0 -0
- package/packages/icons/shrink/index.js.gz +0 -0
- package/packages/icons/shuaxin/index.js.gz +0 -0
- package/packages/icons/shuipingduiqi/index.js.gz +0 -0
- package/packages/icons/shuipingjunfen/index.js.gz +0 -0
- package/packages/icons/shuyoufanye/index.js.gz +0 -0
- package/packages/icons/shuzuofanye/index.js.gz +0 -0
- package/packages/icons/solid-filter/index.js.gz +0 -0
- package/packages/icons/start/index.js.gz +0 -0
- package/packages/icons/stop/index.js.gz +0 -0
- package/packages/icons/structural-diagram/index.js.gz +0 -0
- package/packages/icons/system/index.js.gz +0 -0
- package/packages/icons/table-header-search/index.js.gz +0 -0
- package/packages/icons/text/index.js.gz +0 -0
- package/packages/icons/tianjiaxinhuati/index.js.gz +0 -0
- package/packages/icons/tick/index.js.gz +0 -0
- package/packages/icons/tishixinxi/index.js.gz +0 -0
- package/packages/icons/tongguo/index.js.gz +0 -0
- package/packages/icons/tongzhi/index.js.gz +0 -0
- package/packages/icons/tubiaoku/index.js.gz +0 -0
- package/packages/icons/tucao/index.js.gz +0 -0
- package/packages/icons/tucao-2/index.js.gz +0 -0
- package/packages/icons/tuichuquanping/index.js.gz +0 -0
- package/packages/icons/tuozhuai/index.js.gz +0 -0
- package/packages/icons/underline/index.js.gz +0 -0
- package/packages/icons/unflod/index.js.gz +0 -0
- package/packages/icons/unlock/index.js.gz +0 -0
- package/packages/icons/up/index.js.gz +0 -0
- package/packages/icons/up-2/index.js.gz +0 -0
- package/packages/icons/vauth/index.js.gz +0 -0
- package/packages/icons/view/index.js.gz +0 -0
- package/packages/icons/view-2/index.js.gz +0 -0
- package/packages/icons/volume/index.js.gz +0 -0
- package/packages/icons/wangge/index.js.gz +0 -0
- package/packages/icons/wangge-1/index.js.gz +0 -0
- package/packages/icons/warning/index.js.gz +0 -0
- package/packages/icons/warning-face/index.js.gz +0 -0
- package/packages/icons/wendujiang/index.js.gz +0 -0
- package/packages/icons/wendusheng/index.js.gz +0 -0
- package/packages/icons/withdraw/index.js.gz +0 -0
- package/packages/icons/xiazai/index.js.gz +0 -0
- package/packages/icons/xinzengtongji/index.js.gz +0 -0
- package/packages/icons/xuanzhuanjiaodu/index.js.gz +0 -0
- package/packages/icons/yidongduan/index.js.gz +0 -0
- package/packages/icons/yincang/index.js.gz +0 -0
- package/packages/icons/yingpian/index.js.gz +0 -0
- package/packages/icons/yingyong/index.js.gz +0 -0
- package/packages/icons/yitushoutu/index.js.gz +0 -0
- package/packages/icons/yuanxinghuizhi/index.js.gz +0 -0
- package/packages/icons/yulan-2/index.js.gz +0 -0
- package/packages/icons/yuyin/index.js.gz +0 -0
- package/packages/icons/zhangaiwu/index.js.gz +0 -0
- package/packages/icons/zhizhen/index.js.gz +0 -0
- package/packages/icons/zhongxinshengcheng/index.js.gz +0 -0
- package/packages/icons/zhuomianduan/index.js.gz +0 -0
- package/packages/icons/zidingyihuizhi/index.js.gz +0 -0
- package/packages/icons/zuobiao/index.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,
|
|
@@ -5899,7 +5899,7 @@ class Ti {
|
|
|
5899
5899
|
this.cachedData && (e = De(this.cachedData, e), this.cachedData = null);
|
|
5900
5900
|
let s = _t(e, 0), i = s ? s.length : 0, r;
|
|
5901
5901
|
const n = this._audioTrack, o = this._id3Track, c = s ? Ei(s) : void 0, l = e.length;
|
|
5902
|
-
for ((this.basePTS === null || this.frameIndex === 0 &&
|
|
5902
|
+
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
5903
|
pts: this.lastPTS,
|
|
5904
5904
|
dts: this.lastPTS,
|
|
5905
5905
|
data: s,
|
|
@@ -5945,7 +5945,7 @@ class Ti {
|
|
|
5945
5945
|
}
|
|
5946
5946
|
}
|
|
5947
5947
|
const Bl = (a, e, t) => {
|
|
5948
|
-
if (
|
|
5948
|
+
if (B(a))
|
|
5949
5949
|
return a * 90;
|
|
5950
5950
|
const s = t ? t.baseTime * 9e4 / t.timescale : 0;
|
|
5951
5951
|
return e * 9e4 + s;
|
|
@@ -6316,7 +6316,7 @@ class jl {
|
|
|
6316
6316
|
}
|
|
6317
6317
|
}
|
|
6318
6318
|
function yr(a, e) {
|
|
6319
|
-
return
|
|
6319
|
+
return B(a.presentationTime) ? a.presentationTime / a.timeScale : e + a.presentationTimeDelta / a.timeScale;
|
|
6320
6320
|
}
|
|
6321
6321
|
class ql {
|
|
6322
6322
|
constructor(e, t, s) {
|
|
@@ -6836,8 +6836,8 @@ class Sr extends Kn {
|
|
|
6836
6836
|
const L = t.readUEG(), C = t.readUEG(), x = t.readBoolean();
|
|
6837
6837
|
let R = 0, D = 0, A = 0, k = 0;
|
|
6838
6838
|
x && (R += t.readUEG(), D += t.readUEG(), A += t.readUEG(), k += t.readUEG());
|
|
6839
|
-
const
|
|
6840
|
-
for (let J =
|
|
6839
|
+
const O = t.readUEG(), K = t.readUEG(), U = t.readUEG(), N = t.readBoolean();
|
|
6840
|
+
for (let J = N ? 0 : s; J <= s; J++)
|
|
6841
6841
|
t.skipUEG(), t.skipUEG(), t.skipUEG();
|
|
6842
6842
|
if (t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.skipUEG(), t.readBoolean() && t.readBoolean())
|
|
6843
6843
|
for (let ge = 0; ge < 4; ge++)
|
|
@@ -6851,12 +6851,12 @@ class Sr extends Kn {
|
|
|
6851
6851
|
t.readEG();
|
|
6852
6852
|
}
|
|
6853
6853
|
t.readBoolean(), t.readBoolean(), t.readBoolean() && (t.readUByte(), t.skipUEG(), t.skipUEG(), t.readBoolean());
|
|
6854
|
-
const
|
|
6854
|
+
const w = t.readUEG();
|
|
6855
6855
|
let Y = 0;
|
|
6856
|
-
for (let J = 0; J <
|
|
6856
|
+
for (let J = 0; J < w; J++) {
|
|
6857
6857
|
let ge = !1;
|
|
6858
6858
|
if (J !== 0 && (ge = t.readBoolean()), ge) {
|
|
6859
|
-
J ===
|
|
6859
|
+
J === w && t.readUEG(), t.readBoolean(), t.readUEG();
|
|
6860
6860
|
let Le = 0;
|
|
6861
6861
|
for (let Xe = 0; Xe <= Y; Xe++) {
|
|
6862
6862
|
const Ce = t.readBoolean();
|
|
@@ -6876,18 +6876,18 @@ class Sr extends Kn {
|
|
|
6876
6876
|
if (t.readBoolean()) {
|
|
6877
6877
|
const J = t.readUEG();
|
|
6878
6878
|
for (let ge = 0; ge < J; ge++) {
|
|
6879
|
-
for (let Le = 0; Le <
|
|
6879
|
+
for (let Le = 0; Le < U + 4; Le++)
|
|
6880
6880
|
t.readBits(1);
|
|
6881
6881
|
t.readBits(1);
|
|
6882
6882
|
}
|
|
6883
6883
|
}
|
|
6884
|
-
let
|
|
6884
|
+
let M = 0, F = 1, q = 1, X = !0, te = 1, Z = 0;
|
|
6885
6885
|
t.readBoolean(), t.readBoolean();
|
|
6886
6886
|
let ae = !1;
|
|
6887
6887
|
if (t.readBoolean()) {
|
|
6888
6888
|
if (t.readBoolean()) {
|
|
6889
6889
|
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 ? (
|
|
6890
|
+
Ze > 0 && Ze < 16 ? (F = Ri[Ze - 1], q = Ft[Ze - 1]) : Ze === 255 && (F = t.readBits(16), q = t.readBits(16));
|
|
6891
6891
|
}
|
|
6892
6892
|
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
6893
|
const Ft = t.readBoolean(), bi = t.readBoolean();
|
|
@@ -6907,12 +6907,12 @@ class Sr extends Kn {
|
|
|
6907
6907
|
t.readUEG(), t.readUEG(), yt && (t.readUEG(), t.readUEG()), t.skipBits(1);
|
|
6908
6908
|
}
|
|
6909
6909
|
}
|
|
6910
|
-
t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(),
|
|
6910
|
+
t.readBoolean() && (t.readBoolean(), t.readBoolean(), t.readBoolean(), M = t.readUEG());
|
|
6911
6911
|
}
|
|
6912
|
-
let fe = L,
|
|
6912
|
+
let fe = L, Se = C;
|
|
6913
6913
|
if (x || ae) {
|
|
6914
6914
|
let J = 1, ge = 1;
|
|
6915
|
-
S === 1 ? J = ge = 2 : S == 2 && (J = 2), fe = L - J * D - J * R,
|
|
6915
|
+
S === 1 ? J = ge = 2 : S == 2 && (J = 2), fe = L - J * D - J * R, Se = C - ge * k - ge * A;
|
|
6916
6916
|
}
|
|
6917
6917
|
const Qe = i ? ["A", "B", "C"][i] : "", pa = o << 24 | c << 16 | l << 8 | h;
|
|
6918
6918
|
let ps = 0;
|
|
@@ -6928,10 +6928,10 @@ class Sr extends Kn {
|
|
|
6928
6928
|
general_profile_compatibility_flags: [o, c, l, h],
|
|
6929
6929
|
general_constraint_indicator_flags: [u, d, f, g, E, p],
|
|
6930
6930
|
general_level_idc: T,
|
|
6931
|
-
bit_depth:
|
|
6932
|
-
bit_depth_luma_minus8:
|
|
6931
|
+
bit_depth: O + 8,
|
|
6932
|
+
bit_depth_luma_minus8: O,
|
|
6933
6933
|
bit_depth_chroma_minus8: K,
|
|
6934
|
-
min_spatial_segmentation_idc:
|
|
6934
|
+
min_spatial_segmentation_idc: M,
|
|
6935
6935
|
chroma_format_idc: S,
|
|
6936
6936
|
frame_rate: {
|
|
6937
6937
|
fixed: X,
|
|
@@ -6939,8 +6939,8 @@ class Sr extends Kn {
|
|
|
6939
6939
|
}
|
|
6940
6940
|
},
|
|
6941
6941
|
width: fe,
|
|
6942
|
-
height:
|
|
6943
|
-
pixelRatio: [
|
|
6942
|
+
height: Se,
|
|
6943
|
+
pixelRatio: [F, q]
|
|
6944
6944
|
};
|
|
6945
6945
|
}
|
|
6946
6946
|
readPPS(e) {
|
|
@@ -7094,8 +7094,8 @@ class je {
|
|
|
7094
7094
|
break;
|
|
7095
7095
|
case v: {
|
|
7096
7096
|
R && (k += e[k] + 1);
|
|
7097
|
-
const
|
|
7098
|
-
h =
|
|
7097
|
+
const O = Ql(e, k, this.typeSupported, s, this.observer, this.logger);
|
|
7098
|
+
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
7099
|
break;
|
|
7100
7100
|
}
|
|
7101
7101
|
case 17:
|
|
@@ -7350,7 +7350,7 @@ function Ql(a, e, t, s, i, r) {
|
|
|
7350
7350
|
}
|
|
7351
7351
|
function Qs(a, e, t, s) {
|
|
7352
7352
|
s.warn(`parsing error: ${e.message}`), a.emit(m.ERROR, m.ERROR, {
|
|
7353
|
-
type:
|
|
7353
|
+
type: V.MEDIA_ERROR,
|
|
7354
7354
|
details: b.FRAG_PARSING_ERROR,
|
|
7355
7355
|
fatal: !1,
|
|
7356
7356
|
levelRetry: t,
|
|
@@ -8677,30 +8677,30 @@ class Zt extends we {
|
|
|
8677
8677
|
if ((!T || S) && (!v || L) || this.ISGenerated || o) {
|
|
8678
8678
|
if (this.ISGenerated) {
|
|
8679
8679
|
var x, R, D, A;
|
|
8680
|
-
const
|
|
8681
|
-
(
|
|
8680
|
+
const U = this.videoTrackConfig;
|
|
8681
|
+
(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
8682
|
}
|
|
8683
8683
|
this.ISGenerated || (u = this.generateIS(e, t, r, n));
|
|
8684
8684
|
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
|
|
8685
|
+
let O = -1, K;
|
|
8686
|
+
if (L && (O = rc(t.samples), !k && this.config.forceKeyFrameOnDiscontinuity))
|
|
8687
|
+
if (g = !0, O > 0) {
|
|
8688
|
+
this.warn(`Dropped ${O} out of ${y} video samples due to a missing keyframe`);
|
|
8689
|
+
const U = this.getVideoStartPts(t.samples);
|
|
8690
|
+
t.samples = t.samples.slice(O), t.dropped += O, p += (t.samples[0].pts - U) / t.inputTimeScale, K = p;
|
|
8691
|
+
} else O === -1 && (this.warn(`No keyframe found out of ${y} video samples`), g = !1);
|
|
8692
8692
|
if (this.ISGenerated) {
|
|
8693
8693
|
if (S && L) {
|
|
8694
|
-
const
|
|
8695
|
-
E += Math.max(0,
|
|
8694
|
+
const U = this.getVideoStartPts(t.samples), _ = (Re(e.samples[0].pts, U) - U) / t.inputTimeScale;
|
|
8695
|
+
E += Math.max(0, _), p += Math.max(0, -_);
|
|
8696
8696
|
}
|
|
8697
8697
|
if (S) {
|
|
8698
8698
|
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,
|
|
8699
|
+
const U = h ? h.endPTS - h.startPTS : 0;
|
|
8700
|
+
t.inputTimeScale || (this.warn("regenerate InitSegment as video detected"), u = this.generateIS(e, t, r, n)), l = this.remuxVideo(t, p, k, U);
|
|
8701
8701
|
}
|
|
8702
8702
|
} else L && (l = this.remuxVideo(t, p, k, 0));
|
|
8703
|
-
l && (l.firstKeyFrame =
|
|
8703
|
+
l && (l.firstKeyFrame = O, l.independent = O !== -1, l.firstKeyFramePTS = K);
|
|
8704
8704
|
}
|
|
8705
8705
|
}
|
|
8706
8706
|
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 +8774,59 @@ class Zt extends we {
|
|
|
8774
8774
|
const r = e.inputTimeScale, n = e.samples, o = [], c = n.length, l = this._initPTS, h = l.baseTime * r / l.timescale;
|
|
8775
8775
|
let u = this.nextVideoTs, d = 8, f = this.videoSampleDuration, g, E, p = Number.POSITIVE_INFINITY, T = Number.NEGATIVE_INFINITY, v = !1;
|
|
8776
8776
|
if (!s || u === null) {
|
|
8777
|
-
const
|
|
8778
|
-
ht && u !== null && Math.abs(
|
|
8777
|
+
const M = h + t * r, F = n[0].pts - Re(n[0].dts, n[0].pts);
|
|
8778
|
+
ht && u !== null && Math.abs(M - F - (u + h)) < 15e3 ? s = !0 : u = M - F - h;
|
|
8779
8779
|
}
|
|
8780
8780
|
const y = u + h;
|
|
8781
|
-
for (let
|
|
8782
|
-
const
|
|
8783
|
-
|
|
8781
|
+
for (let M = 0; M < c; M++) {
|
|
8782
|
+
const F = n[M];
|
|
8783
|
+
F.pts = Re(F.pts, y), F.dts = Re(F.dts, y), F.dts < n[M > 0 ? M - 1 : M].dts && (v = !0);
|
|
8784
8784
|
}
|
|
8785
|
-
v && n.sort(function(
|
|
8786
|
-
const q =
|
|
8785
|
+
v && n.sort(function(M, F) {
|
|
8786
|
+
const q = M.dts - F.dts, X = M.pts - F.pts;
|
|
8787
8787
|
return q || X;
|
|
8788
8788
|
}), g = n[0].dts, E = n[n.length - 1].dts;
|
|
8789
8789
|
const S = E - g, L = S ? Math.round(S / (c - 1)) : f || e.inputTimeScale / 30;
|
|
8790
8790
|
if (s) {
|
|
8791
|
-
const
|
|
8792
|
-
if ((
|
|
8791
|
+
const M = g - y, F = M > L, q = M < -1;
|
|
8792
|
+
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
8793
|
g = y;
|
|
8794
|
-
const X = n[0].pts -
|
|
8795
|
-
if (
|
|
8794
|
+
const X = n[0].pts - M;
|
|
8795
|
+
if (F)
|
|
8796
8796
|
n[0].dts = g, n[0].pts = X;
|
|
8797
8797
|
else {
|
|
8798
8798
|
let te = !0;
|
|
8799
8799
|
for (let Z = 0; Z < n.length && !(n[Z].dts > X && te); Z++) {
|
|
8800
8800
|
const ae = n[Z].pts;
|
|
8801
|
-
if (n[Z].dts -=
|
|
8802
|
-
const
|
|
8803
|
-
te =
|
|
8801
|
+
if (n[Z].dts -= M, n[Z].pts -= M, Z < n.length - 1) {
|
|
8802
|
+
const ve = n[Z + 1].pts, fe = n[Z].pts, Se = ve <= fe, Qe = ve <= ae;
|
|
8803
|
+
te = Se == Qe;
|
|
8804
8804
|
}
|
|
8805
8805
|
}
|
|
8806
8806
|
}
|
|
8807
|
-
this.log(`Video: Initial PTS/DTS adjusted: ${xt(X, !0)}/${xt(g, !0)}, delta: ${xt(
|
|
8807
|
+
this.log(`Video: Initial PTS/DTS adjusted: ${xt(X, !0)}/${xt(g, !0)}, delta: ${xt(M, !0)} ms`);
|
|
8808
8808
|
}
|
|
8809
8809
|
}
|
|
8810
8810
|
g = Math.max(0, g);
|
|
8811
8811
|
let C = 0, x = 0, R = g;
|
|
8812
|
-
for (let
|
|
8813
|
-
const
|
|
8812
|
+
for (let M = 0; M < c; M++) {
|
|
8813
|
+
const F = n[M], q = F.units, X = q.length;
|
|
8814
8814
|
let te = 0;
|
|
8815
8815
|
for (let Z = 0; Z < X; Z++)
|
|
8816
8816
|
te += q[Z].data.length;
|
|
8817
|
-
x += te, C += X,
|
|
8817
|
+
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
8818
|
}
|
|
8819
8819
|
E = n[c - 1].dts;
|
|
8820
8820
|
const D = x + 4 * C + 8;
|
|
8821
8821
|
let A;
|
|
8822
8822
|
try {
|
|
8823
8823
|
A = new Uint8Array(D);
|
|
8824
|
-
} catch (
|
|
8824
|
+
} catch (M) {
|
|
8825
8825
|
this.observer.emit(m.ERROR, m.ERROR, {
|
|
8826
|
-
type:
|
|
8826
|
+
type: V.MUX_ERROR,
|
|
8827
8827
|
details: b.REMUX_ALLOC_ERROR,
|
|
8828
8828
|
fatal: !1,
|
|
8829
|
-
error:
|
|
8829
|
+
error: M,
|
|
8830
8830
|
bytes: D,
|
|
8831
8831
|
reason: `fail allocating video mdat ${D}`
|
|
8832
8832
|
});
|
|
@@ -8834,51 +8834,51 @@ class Zt extends we {
|
|
|
8834
8834
|
}
|
|
8835
8835
|
const k = new DataView(A.buffer);
|
|
8836
8836
|
k.setUint32(0, D), A.set(I.types.mdat, 4);
|
|
8837
|
-
let
|
|
8838
|
-
for (let
|
|
8839
|
-
const
|
|
8837
|
+
let O = !1, K = Number.POSITIVE_INFINITY, U = Number.POSITIVE_INFINITY, N = Number.NEGATIVE_INFINITY, _ = Number.NEGATIVE_INFINITY;
|
|
8838
|
+
for (let M = 0; M < c; M++) {
|
|
8839
|
+
const F = n[M], q = F.units;
|
|
8840
8840
|
let X = 0;
|
|
8841
|
-
for (let ae = 0,
|
|
8842
|
-
const fe = q[ae],
|
|
8843
|
-
k.setUint32(d, Qe), d += 4, A.set(
|
|
8841
|
+
for (let ae = 0, ve = q.length; ae < ve; ae++) {
|
|
8842
|
+
const fe = q[ae], Se = fe.data, Qe = fe.data.byteLength;
|
|
8843
|
+
k.setUint32(d, Qe), d += 4, A.set(Se, d), d += Qe, X += 4 + Qe;
|
|
8844
8844
|
}
|
|
8845
8845
|
let te;
|
|
8846
|
-
if (
|
|
8847
|
-
f = n[
|
|
8846
|
+
if (M < c - 1)
|
|
8847
|
+
f = n[M + 1].dts - F.dts, te = n[M + 1].pts - F.pts;
|
|
8848
8848
|
else {
|
|
8849
|
-
const ae = this.config,
|
|
8850
|
-
if (te =
|
|
8851
|
-
const fe = Math.floor(ae.maxBufferHole * r),
|
|
8852
|
-
|
|
8849
|
+
const ae = this.config, ve = M > 0 ? F.dts - n[M - 1].dts : L;
|
|
8850
|
+
if (te = M > 0 ? F.pts - n[M - 1].pts : L, ae.stretchShortVideoTrack && this.nextAudioTs !== null) {
|
|
8851
|
+
const fe = Math.floor(ae.maxBufferHole * r), Se = (i ? p + i * r : this.nextAudioTs + h) - F.pts;
|
|
8852
|
+
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
8853
|
} else
|
|
8854
|
-
f =
|
|
8854
|
+
f = ve;
|
|
8855
8855
|
}
|
|
8856
|
-
const Z = Math.round(
|
|
8857
|
-
K = Math.min(K, f),
|
|
8856
|
+
const Z = Math.round(F.pts - F.dts);
|
|
8857
|
+
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
8858
|
}
|
|
8859
8859
|
if (o.length) {
|
|
8860
8860
|
if (ht) {
|
|
8861
8861
|
if (ht < 70) {
|
|
8862
|
-
const
|
|
8863
|
-
|
|
8862
|
+
const M = o[0].flags;
|
|
8863
|
+
M.dependsOn = 2, M.isNonSync = 0;
|
|
8864
8864
|
}
|
|
8865
|
-
} else if (bs &&
|
|
8865
|
+
} else if (bs && _ - U < N - K && L / N < 0.025 && o[0].cts === 0) {
|
|
8866
8866
|
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[
|
|
8867
|
+
let M = g;
|
|
8868
|
+
for (let F = 0, q = o.length; F < q; F++) {
|
|
8869
|
+
const X = M + o[F].duration, te = M + o[F].cts;
|
|
8870
|
+
if (F < q - 1) {
|
|
8871
|
+
const Z = X + o[F + 1].cts;
|
|
8872
|
+
o[F].duration = Z - te;
|
|
8873
8873
|
} else
|
|
8874
|
-
o[
|
|
8875
|
-
o[
|
|
8874
|
+
o[F].duration = F ? o[F - 1].duration : L;
|
|
8875
|
+
o[F].cts = 0, M = X;
|
|
8876
8876
|
}
|
|
8877
8877
|
}
|
|
8878
8878
|
}
|
|
8879
|
-
f =
|
|
8880
|
-
const
|
|
8881
|
-
this.nextVideoTs = u =
|
|
8879
|
+
f = O || !f ? L : f;
|
|
8880
|
+
const $ = E + f;
|
|
8881
|
+
this.nextVideoTs = u = $ - h, this.videoSampleDuration = f, this.isVideoContiguous = !0;
|
|
8882
8882
|
const H = {
|
|
8883
8883
|
data1: I.moof(e.sequenceNumber++, g, se(e, {
|
|
8884
8884
|
samples: o
|
|
@@ -8910,54 +8910,54 @@ class Zt extends we {
|
|
|
8910
8910
|
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
8911
|
let E = e.samples, p = d ? 0 : 8, T = this.nextAudioTs || -1;
|
|
8912
8912
|
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
|
-
|
|
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
|
+
_.pts = Re(_.pts, y);
|
|
8915
8915
|
}), !s || T < 0) {
|
|
8916
|
-
if (E = E.filter((
|
|
8916
|
+
if (E = E.filter((_) => _.pts >= 0), !E.length)
|
|
8917
8917
|
return;
|
|
8918
8918
|
r === 0 ? T = 0 : i && !g ? T = Math.max(0, y - v) : T = E[0].pts - v;
|
|
8919
8919
|
}
|
|
8920
8920
|
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
|
-
|
|
8921
|
+
const _ = this.config.maxAudioFramesDrift;
|
|
8922
|
+
for (let $ = 0, w = T + v; $ < E.length; $++) {
|
|
8923
|
+
const Y = E[$], H = Y.pts, M = H - w, F = Math.abs(1e3 * M / n);
|
|
8924
|
+
if (M <= -_ * h && g)
|
|
8925
|
+
$ === 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);
|
|
8926
|
+
else if (M >= _ * h && F < ec && g) {
|
|
8927
|
+
let q = Math.round(M / h);
|
|
8928
|
+
for (w = H - q * h; w < 0 && q && h; )
|
|
8929
|
+
q--, w += h;
|
|
8930
|
+
$ === 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
8931
|
for (let X = 0; X < q; X++) {
|
|
8932
8932
|
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(
|
|
8933
|
+
te || (this.log("Unable to get silent frame for given audio codec; duplicating last frame instead."), te = Y.unit.subarray()), E.splice($, 0, {
|
|
8934
8934
|
unit: te,
|
|
8935
|
-
pts:
|
|
8936
|
-
}),
|
|
8935
|
+
pts: w
|
|
8936
|
+
}), w += h, $++;
|
|
8937
8937
|
}
|
|
8938
8938
|
}
|
|
8939
|
-
Y.pts =
|
|
8939
|
+
Y.pts = w, w += h;
|
|
8940
8940
|
}
|
|
8941
8941
|
}
|
|
8942
8942
|
let S = null, L = null, C, x = 0, R = E.length;
|
|
8943
8943
|
for (; R--; )
|
|
8944
8944
|
x += E[R].unit.byteLength;
|
|
8945
|
-
for (let
|
|
8946
|
-
const
|
|
8947
|
-
let H =
|
|
8945
|
+
for (let _ = 0, $ = E.length; _ < $; _++) {
|
|
8946
|
+
const w = E[_], Y = w.unit;
|
|
8947
|
+
let H = w.pts;
|
|
8948
8948
|
if (L !== null) {
|
|
8949
|
-
const
|
|
8950
|
-
|
|
8949
|
+
const F = f[_ - 1];
|
|
8950
|
+
F.duration = Math.round((H - L) / c);
|
|
8951
8951
|
} else if (s && e.segmentCodec === "aac" && (H = T + v), S = H, x > 0) {
|
|
8952
8952
|
x += p;
|
|
8953
8953
|
try {
|
|
8954
8954
|
C = new Uint8Array(x);
|
|
8955
|
-
} catch (
|
|
8955
|
+
} catch (F) {
|
|
8956
8956
|
this.observer.emit(m.ERROR, m.ERROR, {
|
|
8957
|
-
type:
|
|
8957
|
+
type: V.MUX_ERROR,
|
|
8958
8958
|
details: b.REMUX_ALLOC_ERROR,
|
|
8959
8959
|
fatal: !1,
|
|
8960
|
-
error:
|
|
8960
|
+
error: F,
|
|
8961
8961
|
bytes: x,
|
|
8962
8962
|
reason: `fail allocating audio mdat ${x}`
|
|
8963
8963
|
});
|
|
@@ -8967,8 +8967,8 @@ class Zt extends we {
|
|
|
8967
8967
|
} else
|
|
8968
8968
|
return;
|
|
8969
8969
|
C.set(Y, p);
|
|
8970
|
-
const
|
|
8971
|
-
p +=
|
|
8970
|
+
const M = Y.byteLength;
|
|
8971
|
+
p += M, f.push(Ar(!0, l, M, 0)), L = H;
|
|
8972
8972
|
}
|
|
8973
8973
|
const D = f.length;
|
|
8974
8974
|
if (!D)
|
|
@@ -8979,19 +8979,19 @@ class Zt extends we {
|
|
|
8979
8979
|
samples: f
|
|
8980
8980
|
}));
|
|
8981
8981
|
e.samples = [];
|
|
8982
|
-
const
|
|
8982
|
+
const O = (S - v) / n, K = T / n, N = {
|
|
8983
8983
|
data1: k,
|
|
8984
8984
|
data2: C,
|
|
8985
|
-
startPTS:
|
|
8985
|
+
startPTS: O,
|
|
8986
8986
|
endPTS: K,
|
|
8987
|
-
startDTS:
|
|
8987
|
+
startDTS: O,
|
|
8988
8988
|
endDTS: K,
|
|
8989
8989
|
type: "audio",
|
|
8990
8990
|
hasAudio: !0,
|
|
8991
8991
|
hasVideo: !1,
|
|
8992
8992
|
nb: D
|
|
8993
8993
|
};
|
|
8994
|
-
return this.isAudioContiguous = !0,
|
|
8994
|
+
return this.isAudioContiguous = !0, N;
|
|
8995
8995
|
}
|
|
8996
8996
|
}
|
|
8997
8997
|
function Re(a, e) {
|
|
@@ -9098,7 +9098,7 @@ class nc extends we {
|
|
|
9098
9098
|
id3: s,
|
|
9099
9099
|
initSegment: void 0
|
|
9100
9100
|
};
|
|
9101
|
-
|
|
9101
|
+
B(h) || (h = this.lastEndTime = r || 0);
|
|
9102
9102
|
const d = t.samples;
|
|
9103
9103
|
if (!(d != null && d.length))
|
|
9104
9104
|
return u;
|
|
@@ -9114,10 +9114,10 @@ class nc extends we {
|
|
|
9114
9114
|
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
9115
|
let C, x = r, R = 0;
|
|
9116
9116
|
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 /
|
|
9117
|
+
const _ = C.timescale;
|
|
9118
|
+
x = C.start / _, f.initPTS = C.start - r * _, f.timescale = _, l || (this.initPTS = l = {
|
|
9119
9119
|
baseTime: f.initPTS,
|
|
9120
|
-
timescale:
|
|
9120
|
+
timescale: _,
|
|
9121
9121
|
trackId: f.trackId
|
|
9122
9122
|
});
|
|
9123
9123
|
}
|
|
@@ -9127,10 +9127,10 @@ class nc extends we {
|
|
|
9127
9127
|
});
|
|
9128
9128
|
const D = e ? x - l.baseTime / l.timescale : h, A = D + R;
|
|
9129
9129
|
R > 0 ? this.lastEndTime = A : (this.warn("Duration parsed from mp4 should be greater than zero"), this.resetNextTimestamp());
|
|
9130
|
-
const k = !!g.audio,
|
|
9130
|
+
const k = !!g.audio, O = !!g.video;
|
|
9131
9131
|
let K = "";
|
|
9132
|
-
k && (K += "audio"),
|
|
9133
|
-
const
|
|
9132
|
+
k && (K += "audio"), O && (K += "video");
|
|
9133
|
+
const U = {
|
|
9134
9134
|
data1: d,
|
|
9135
9135
|
startPTS: D,
|
|
9136
9136
|
startDTS: D,
|
|
@@ -9138,15 +9138,15 @@ class nc extends we {
|
|
|
9138
9138
|
endDTS: A,
|
|
9139
9139
|
type: K,
|
|
9140
9140
|
hasAudio: k,
|
|
9141
|
-
hasVideo:
|
|
9141
|
+
hasVideo: O,
|
|
9142
9142
|
nb: 1,
|
|
9143
9143
|
dropped: 0
|
|
9144
9144
|
};
|
|
9145
|
-
u.audio = k && !
|
|
9146
|
-
const
|
|
9147
|
-
if (
|
|
9148
|
-
const
|
|
9149
|
-
|
|
9145
|
+
u.audio = k && !O ? U : void 0, u.video = O ? U : void 0;
|
|
9146
|
+
const N = T == null ? void 0 : T.sampleCount;
|
|
9147
|
+
if (N) {
|
|
9148
|
+
const _ = T.keyFrameIndex, $ = _ !== -1;
|
|
9149
|
+
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
9150
|
}
|
|
9151
9151
|
return u.initSegment = f, u.id3 = Hn(s, r, l, l), i.samples.length && (u.text = Yn(i, r, l)), u;
|
|
9152
9152
|
}
|
|
@@ -9222,8 +9222,8 @@ class Lr {
|
|
|
9222
9222
|
if (R.isSync()) {
|
|
9223
9223
|
let A = R.softwareDecrypt(n, S.key.buffer, S.iv.buffer, D);
|
|
9224
9224
|
if (s.part > -1) {
|
|
9225
|
-
const
|
|
9226
|
-
A =
|
|
9225
|
+
const O = R.flush();
|
|
9226
|
+
A = O && O.buffer;
|
|
9227
9227
|
}
|
|
9228
9228
|
if (!A)
|
|
9229
9229
|
return r.executeEnd = Ve(), Ds(s);
|
|
@@ -9239,7 +9239,7 @@ class Lr {
|
|
|
9239
9239
|
const R = this.configureTransmuxer(n);
|
|
9240
9240
|
if (R)
|
|
9241
9241
|
return this.logger.warn(`[transmuxer] ${R.message}`), this.observer.emit(m.ERROR, m.ERROR, {
|
|
9242
|
-
type:
|
|
9242
|
+
type: V.MEDIA_ERROR,
|
|
9243
9243
|
details: b.FRAG_PARSING_ERROR,
|
|
9244
9244
|
fatal: !1,
|
|
9245
9245
|
error: R,
|
|
@@ -9428,7 +9428,7 @@ class Wn {
|
|
|
9428
9428
|
return;
|
|
9429
9429
|
const l = new Error(`${c.message} (${c.filename}:${c.lineno})`);
|
|
9430
9430
|
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:
|
|
9431
|
+
type: V.OTHER_ERROR,
|
|
9432
9432
|
details: b.INTERNAL_EXCEPTION,
|
|
9433
9433
|
fatal: !1,
|
|
9434
9434
|
event: "demuxerWorker",
|
|
@@ -9529,10 +9529,10 @@ class Wn {
|
|
|
9529
9529
|
}, e instanceof ArrayBuffer ? [e] : []);
|
|
9530
9530
|
else if (g) {
|
|
9531
9531
|
const k = g.push(e, p, l, A);
|
|
9532
|
-
wt(k) ? k.then((
|
|
9533
|
-
this.handleTransmuxComplete(
|
|
9534
|
-
}).catch((
|
|
9535
|
-
this.transmuxerError(
|
|
9532
|
+
wt(k) ? k.then((O) => {
|
|
9533
|
+
this.handleTransmuxComplete(O);
|
|
9534
|
+
}).catch((O) => {
|
|
9535
|
+
this.transmuxerError(O, l, "transmuxer-interface push error");
|
|
9536
9536
|
}) : this.handleTransmuxComplete(k);
|
|
9537
9537
|
}
|
|
9538
9538
|
}
|
|
@@ -9559,7 +9559,7 @@ class Wn {
|
|
|
9559
9559
|
}
|
|
9560
9560
|
transmuxerError(e, t, s) {
|
|
9561
9561
|
this.hls && (this.error = e, this.hls.trigger(m.ERROR, {
|
|
9562
|
-
type:
|
|
9562
|
+
type: V.MEDIA_ERROR,
|
|
9563
9563
|
details: b.FRAG_PARSING_ERROR,
|
|
9564
9564
|
chunkMeta: t,
|
|
9565
9565
|
frag: this.frag || void 0,
|
|
@@ -10181,7 +10181,7 @@ class Si extends we {
|
|
|
10181
10181
|
networkDetails: S
|
|
10182
10182
|
} = t;
|
|
10183
10183
|
y.trigger(m.ERROR, {
|
|
10184
|
-
type:
|
|
10184
|
+
type: V.NETWORK_ERROR,
|
|
10185
10185
|
details: b.LEVEL_PARSING_ERROR,
|
|
10186
10186
|
fatal: !1,
|
|
10187
10187
|
url: i.url,
|
|
@@ -10215,8 +10215,8 @@ class Si extends we {
|
|
|
10215
10215
|
else {
|
|
10216
10216
|
const k = Math.floor(A / i.targetduration);
|
|
10217
10217
|
if (p += k, T !== void 0) {
|
|
10218
|
-
const
|
|
10219
|
-
T +=
|
|
10218
|
+
const O = Math.round(A % i.targetduration / i.partTarget);
|
|
10219
|
+
T += O;
|
|
10220
10220
|
}
|
|
10221
10221
|
this.log(`CDN Tune-in age: ${i.ageHeader}s last advanced ${R.toFixed(2)}s goal: ${A} skip sn ${k} to part ${T}`);
|
|
10222
10222
|
}
|
|
@@ -10368,7 +10368,7 @@ class uc extends Si {
|
|
|
10368
10368
|
var n;
|
|
10369
10369
|
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
10370
|
this.warn(d.message), this.hls.trigger(m.ERROR, {
|
|
10371
|
-
type:
|
|
10371
|
+
type: V.MEDIA_ERROR,
|
|
10372
10372
|
details: b.AUDIO_TRACK_LOAD_ERROR,
|
|
10373
10373
|
fatal: !0,
|
|
10374
10374
|
error: d
|
|
@@ -10948,8 +10948,8 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10948
10948
|
if (S && d !== "initSegment") {
|
|
10949
10949
|
const x = c || o, R = this.blockedAudioAppend;
|
|
10950
10950
|
if (r === "audio" && n !== "main" && !this.blockedAudioAppend) {
|
|
10951
|
-
const A = x.start + x.duration * 0.05, k = S.buffered,
|
|
10952
|
-
!k.length && !
|
|
10951
|
+
const A = x.start + x.duration * 0.05, k = S.buffered, O = this.currentOp("video");
|
|
10952
|
+
!k.length && !O ? this.blockAudio(x) : !O && !j.isBuffered(S, A) && this.lastVideoAppendEnd < A && this.blockAudio(x);
|
|
10953
10953
|
} else if (r === "video") {
|
|
10954
10954
|
const D = x.end;
|
|
10955
10955
|
if (R) {
|
|
@@ -10965,7 +10965,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10965
10965
|
var x;
|
|
10966
10966
|
u.executeStart = self.performance.now();
|
|
10967
10967
|
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 &&
|
|
10968
|
+
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
10969
|
},
|
|
10970
10970
|
onStart: () => {
|
|
10971
10971
|
},
|
|
@@ -10987,7 +10987,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
10987
10987
|
onError: (x) => {
|
|
10988
10988
|
var R;
|
|
10989
10989
|
const D = {
|
|
10990
|
-
type:
|
|
10990
|
+
type: V.MEDIA_ERROR,
|
|
10991
10991
|
parent: o.type,
|
|
10992
10992
|
details: b.BUFFER_APPEND_ERROR,
|
|
10993
10993
|
sourceBufferName: r,
|
|
@@ -11120,7 +11120,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11120
11120
|
if (t.details === b.BUFFER_APPEND_ERROR && t.frag) {
|
|
11121
11121
|
var s;
|
|
11122
11122
|
const i = (s = t.errorAction) == null ? void 0 : s.nextAutoLevel;
|
|
11123
|
-
|
|
11123
|
+
B(i) && i !== t.frag.level && this.resetAppendErrors();
|
|
11124
11124
|
}
|
|
11125
11125
|
}
|
|
11126
11126
|
resetAppendErrors() {
|
|
@@ -11139,11 +11139,11 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11139
11139
|
if (!s || t === null || !this.sourceBufferCount)
|
|
11140
11140
|
return;
|
|
11141
11141
|
const i = e.config, r = s.currentTime, n = t.levelTargetDuration, o = t.live && i.liveBackBufferLength !== null ? i.liveBackBufferLength : i.backBufferLength;
|
|
11142
|
-
if (
|
|
11142
|
+
if (B(o) && o >= 0) {
|
|
11143
11143
|
const c = Math.max(o, n), l = Math.floor(r / n) * n - c;
|
|
11144
11144
|
this.flushBackBuffer(r, n, l);
|
|
11145
11145
|
}
|
|
11146
|
-
if (
|
|
11146
|
+
if (B(i.frontBufferFlushThreshold) && i.frontBufferFlushThreshold > 0) {
|
|
11147
11147
|
const c = Math.max(i.maxBufferLength, i.frontBufferFlushThreshold), l = Math.max(c, n), h = Math.floor(r / n) * n + l;
|
|
11148
11148
|
this.flushFrontBuffer(r, n, h);
|
|
11149
11149
|
}
|
|
@@ -11221,11 +11221,11 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11221
11221
|
}
|
|
11222
11222
|
const r = (e = this.overrides) == null ? void 0 : e.duration;
|
|
11223
11223
|
if (r)
|
|
11224
|
-
return
|
|
11224
|
+
return B(r) ? {
|
|
11225
11225
|
duration: r
|
|
11226
11226
|
} : null;
|
|
11227
|
-
const n = this.media.duration, o =
|
|
11228
|
-
return i > o && i > n || !
|
|
11227
|
+
const n = this.media.duration, o = B(s.duration) ? s.duration : 0;
|
|
11228
|
+
return i > o && i > n || !B(n) ? {
|
|
11229
11229
|
duration: i
|
|
11230
11230
|
} : null;
|
|
11231
11231
|
}
|
|
@@ -11235,7 +11235,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11235
11235
|
end: s
|
|
11236
11236
|
}) {
|
|
11237
11237
|
const i = this.mediaSource;
|
|
11238
|
-
!this.media || !i || i.readyState !== "open" || (i.duration !== e && (
|
|
11238
|
+
!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
11239
|
}
|
|
11240
11240
|
get tracksReady() {
|
|
11241
11241
|
const e = this.pendingTrackCount;
|
|
@@ -11277,7 +11277,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11277
11277
|
} else {
|
|
11278
11278
|
const e = new Error("could not create source buffer for media codec(s)");
|
|
11279
11279
|
this.hls.trigger(m.ERROR, {
|
|
11280
|
-
type:
|
|
11280
|
+
type: V.MEDIA_ERROR,
|
|
11281
11281
|
details: b.BUFFER_INCOMPATIBLE_CODECS_ERROR,
|
|
11282
11282
|
fatal: !0,
|
|
11283
11283
|
error: e,
|
|
@@ -11304,7 +11304,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11304
11304
|
} catch (h) {
|
|
11305
11305
|
var i;
|
|
11306
11306
|
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:
|
|
11307
|
+
type: V.MEDIA_ERROR,
|
|
11308
11308
|
details: b.BUFFER_ADD_CODEC_ERROR,
|
|
11309
11309
|
fatal: !1,
|
|
11310
11310
|
error: h,
|
|
@@ -11369,7 +11369,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11369
11369
|
var s;
|
|
11370
11370
|
const i = new Error(`${e} SourceBuffer error. MediaSource readyState: ${(s = this.mediaSource) == null ? void 0 : s.readyState}`);
|
|
11371
11371
|
this.error(`${i}`, t), this.hls.trigger(m.ERROR, {
|
|
11372
|
-
type:
|
|
11372
|
+
type: V.MEDIA_ERROR,
|
|
11373
11373
|
details: b.BUFFER_APPENDING_ERROR,
|
|
11374
11374
|
sourceBufferName: e,
|
|
11375
11375
|
error: i,
|
|
@@ -11392,7 +11392,7 @@ transfer tracks: ${ne(i, (c, l) => c === "initSegment" ? void 0 : l)}}`), !zr(i,
|
|
|
11392
11392
|
this.warn(`Attempting to remove from the ${e} SourceBuffer, but it does not exist`), this.shiftAndExecuteNext(e);
|
|
11393
11393
|
return;
|
|
11394
11394
|
}
|
|
11395
|
-
const c =
|
|
11395
|
+
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
11396
|
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
11397
|
}
|
|
11398
11398
|
// This method must result in an updateend event; if append is not called, onSBUpdateEnd must be called manually
|
|
@@ -11542,7 +11542,7 @@ class Ai {
|
|
|
11542
11542
|
this.restrictedLevels = [], this.firstLevel = t.firstLevel, s.config.capLevelToPlayerSize && t.video && this.startCapping();
|
|
11543
11543
|
}
|
|
11544
11544
|
onLevelsUpdated(e, t) {
|
|
11545
|
-
this.timer &&
|
|
11545
|
+
this.timer && B(this.autoLevelCapping) && this.detectPlayerSize();
|
|
11546
11546
|
}
|
|
11547
11547
|
// Only activate capping when playing a video stream; otherwise, multi-bitrate audio-only streams will be restricted
|
|
11548
11548
|
// to the first level
|
|
@@ -11779,7 +11779,7 @@ function Pr(a) {
|
|
|
11779
11779
|
function Zs(a) {
|
|
11780
11780
|
switch (typeof a) {
|
|
11781
11781
|
case "number":
|
|
11782
|
-
if (!
|
|
11782
|
+
if (!B(a))
|
|
11783
11783
|
throw Ue(a, Cr);
|
|
11784
11784
|
return Number.isInteger(a) ? Qn(a) : Mc(a);
|
|
11785
11785
|
case "string":
|
|
@@ -11833,7 +11833,7 @@ function Wc(a) {
|
|
|
11833
11833
|
return ["ot", "sf", "st", "e", "sta"].includes(a);
|
|
11834
11834
|
}
|
|
11835
11835
|
function jc(a) {
|
|
11836
|
-
return typeof a == "number" ?
|
|
11836
|
+
return typeof a == "number" ? B(a) : a != null && a !== "" && a !== !1;
|
|
11837
11837
|
}
|
|
11838
11838
|
function qc(a, e) {
|
|
11839
11839
|
const t = new URL(a), s = new URL(e);
|
|
@@ -12461,7 +12461,7 @@ class gt extends we {
|
|
|
12461
12461
|
mediaKeys: u
|
|
12462
12462
|
})).catch((u) => {
|
|
12463
12463
|
l.length ? c(l) : u instanceof Ie ? o(u) : o(new Ie({
|
|
12464
|
-
type:
|
|
12464
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12465
12465
|
details: b.KEY_SYSTEM_NO_ACCESS,
|
|
12466
12466
|
error: u,
|
|
12467
12467
|
fatal: !0
|
|
@@ -12592,7 +12592,7 @@ class gt extends we {
|
|
|
12592
12592
|
}
|
|
12593
12593
|
handleError(e) {
|
|
12594
12594
|
this.hls && (this.error(e.message), e instanceof Ie ? this.hls.trigger(m.ERROR, e.data) : this.hls.trigger(m.ERROR, {
|
|
12595
|
-
type:
|
|
12595
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12596
12596
|
details: b.KEY_SYSTEM_NO_KEYS,
|
|
12597
12597
|
error: e,
|
|
12598
12598
|
fatal: !0
|
|
@@ -12609,7 +12609,7 @@ class gt extends we {
|
|
|
12609
12609
|
getKeySystemSelectionPromise(e) {
|
|
12610
12610
|
if (e.length || (e = Xt(this.config)), e.length === 0)
|
|
12611
12611
|
throw new Ie({
|
|
12612
|
-
type:
|
|
12612
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12613
12613
|
details: b.KEY_SYSTEM_NO_CONFIGURED_LICENSE,
|
|
12614
12614
|
fatal: !0
|
|
12615
12615
|
}, `Missing key-system license configuration options ${ne({
|
|
@@ -12675,11 +12675,11 @@ class gt extends we {
|
|
|
12675
12675
|
const f = new Promise((g, E) => {
|
|
12676
12676
|
h.on("error", E), h.on("keyStatus", (p) => {
|
|
12677
12677
|
p.startsWith("usable") ? g() : p === "output-restricted" ? E(new Ie({
|
|
12678
|
-
type:
|
|
12678
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12679
12679
|
details: b.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED,
|
|
12680
12680
|
fatal: !1
|
|
12681
12681
|
}, "HDCP level output restricted")) : p === "internal-error" ? E(new Ie({
|
|
12682
|
-
type:
|
|
12682
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12683
12683
|
details: b.KEY_SYSTEM_STATUS_INTERNAL_ERROR,
|
|
12684
12684
|
fatal: !0
|
|
12685
12685
|
}, `key status changed to "${p}"`)) : p === "expired" ? E(new Error("key expired while generating request")) : this.warn(`unhandled key status change "${p}"`);
|
|
@@ -12690,7 +12690,7 @@ class gt extends we {
|
|
|
12690
12690
|
this.log(`Request generated for key-session "${(g = e.mediaKeysSession) == null ? void 0 : g.sessionId}" keyId: ${l}`);
|
|
12691
12691
|
}).catch((g) => {
|
|
12692
12692
|
throw new Ie({
|
|
12693
|
-
type:
|
|
12693
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12694
12694
|
details: b.KEY_SYSTEM_NO_SESSION,
|
|
12695
12695
|
error: g,
|
|
12696
12696
|
fatal: !1
|
|
@@ -12726,7 +12726,7 @@ class gt extends we {
|
|
|
12726
12726
|
},
|
|
12727
12727
|
onError: (d, f, g, E) => {
|
|
12728
12728
|
o(new Ie({
|
|
12729
|
-
type:
|
|
12729
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12730
12730
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
|
|
12731
12731
|
fatal: !0,
|
|
12732
12732
|
networkDetails: g,
|
|
@@ -12738,7 +12738,7 @@ class gt extends we {
|
|
|
12738
12738
|
},
|
|
12739
12739
|
onTimeout: (d, f, g) => {
|
|
12740
12740
|
o(new Ie({
|
|
12741
|
-
type:
|
|
12741
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12742
12742
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,
|
|
12743
12743
|
fatal: !0,
|
|
12744
12744
|
networkDetails: g,
|
|
@@ -12761,7 +12761,7 @@ class gt extends we {
|
|
|
12761
12761
|
this.log(`setServerCertificate ${n ? "success" : "not supported by CDM"} (${s == null ? void 0 : s.byteLength}) on "${t}"`), i(e);
|
|
12762
12762
|
}).catch((n) => {
|
|
12763
12763
|
r(new Ie({
|
|
12764
|
-
type:
|
|
12764
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12765
12765
|
details: b.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,
|
|
12766
12766
|
error: n,
|
|
12767
12767
|
fatal: !0
|
|
@@ -12772,7 +12772,7 @@ class gt extends we {
|
|
|
12772
12772
|
renewLicense(e, t) {
|
|
12773
12773
|
return this.requestLicense(e, new Uint8Array(t)).then((s) => this.updateKeySession(e, new Uint8Array(s)).catch((i) => {
|
|
12774
12774
|
throw new Ie({
|
|
12775
|
-
type:
|
|
12775
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12776
12776
|
details: b.KEY_SYSTEM_SESSION_UPDATE_FAILED,
|
|
12777
12777
|
error: i,
|
|
12778
12778
|
fatal: !0
|
|
@@ -12842,7 +12842,7 @@ class gt extends we {
|
|
|
12842
12842
|
const c = s.errorRetry, l = c ? c.maxNumRetry : 0;
|
|
12843
12843
|
if (this._requestLicenseFailureCount++, this._requestLicenseFailureCount > l || o.status >= 400 && o.status < 500)
|
|
12844
12844
|
r(new Ie({
|
|
12845
|
-
type:
|
|
12845
|
+
type: V.KEY_SYSTEM_ERROR,
|
|
12846
12846
|
details: b.KEY_SYSTEM_LICENSE_REQUEST_FAILED,
|
|
12847
12847
|
fatal: !0,
|
|
12848
12848
|
networkDetails: o,
|
|
@@ -12889,7 +12889,7 @@ class gt extends we {
|
|
|
12889
12889
|
gt.CDMCleanupPromise = Promise.all(s.map((r) => this.removeSession(r)).concat(t == null || (e = t.setMediaKeys(null)) == null ? void 0 : e.catch((r) => {
|
|
12890
12890
|
var n;
|
|
12891
12891
|
this.log(`Could not clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, {
|
|
12892
|
-
type:
|
|
12892
|
+
type: V.OTHER_ERROR,
|
|
12893
12893
|
details: b.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,
|
|
12894
12894
|
fatal: !1,
|
|
12895
12895
|
error: new Error(`Could not clear media keys: ${r}`)
|
|
@@ -12897,7 +12897,7 @@ class gt extends we {
|
|
|
12897
12897
|
}))).catch((r) => {
|
|
12898
12898
|
var n;
|
|
12899
12899
|
this.log(`Could not close sessions and clear media keys: ${r}`), (n = this.hls) == null || n.trigger(m.ERROR, {
|
|
12900
|
-
type:
|
|
12900
|
+
type: V.OTHER_ERROR,
|
|
12901
12901
|
details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
|
|
12902
12902
|
fatal: !1,
|
|
12903
12903
|
error: new Error(`Could not close sessions and clear media keys: ${r}`)
|
|
@@ -12934,7 +12934,7 @@ class gt extends we {
|
|
|
12934
12934
|
}) : Promise.resolve()).catch((o) => {
|
|
12935
12935
|
var c;
|
|
12936
12936
|
this.log(`Could not remove session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, {
|
|
12937
|
-
type:
|
|
12937
|
+
type: V.OTHER_ERROR,
|
|
12938
12938
|
details: b.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,
|
|
12939
12939
|
fatal: !1,
|
|
12940
12940
|
error: new Error(`Could not remove session: ${o}`)
|
|
@@ -12942,7 +12942,7 @@ class gt extends we {
|
|
|
12942
12942
|
}).then(() => t.close()).catch((o) => {
|
|
12943
12943
|
var c;
|
|
12944
12944
|
this.log(`Could not close session: ${o}`), (c = this.hls) == null || c.trigger(m.ERROR, {
|
|
12945
|
-
type:
|
|
12945
|
+
type: V.OTHER_ERROR,
|
|
12946
12946
|
details: b.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,
|
|
12947
12947
|
fatal: !1,
|
|
12948
12948
|
error: new Error(`Could not close session: ${o}`)
|
|
@@ -13328,7 +13328,7 @@ class ch extends Si {
|
|
|
13328
13328
|
this.queuedDefaultTrack = e;
|
|
13329
13329
|
return;
|
|
13330
13330
|
}
|
|
13331
|
-
if (e < -1 || e >= t.length || !
|
|
13331
|
+
if (e < -1 || e >= t.length || !B(e)) {
|
|
13332
13332
|
this.warn(`Invalid subtitle track id: ${e}`);
|
|
13333
13333
|
return;
|
|
13334
13334
|
}
|
|
@@ -13447,7 +13447,7 @@ class dh {
|
|
|
13447
13447
|
return !1;
|
|
13448
13448
|
}
|
|
13449
13449
|
get resumptionOffset() {
|
|
13450
|
-
const e = this.resumeOffset, t =
|
|
13450
|
+
const e = this.resumeOffset, t = B(e) ? e : this.duration;
|
|
13451
13451
|
return this.cumulativeDuration + t;
|
|
13452
13452
|
}
|
|
13453
13453
|
get resumeTime() {
|
|
@@ -13850,11 +13850,11 @@ class mh extends we {
|
|
|
13850
13850
|
if (!S) {
|
|
13851
13851
|
const A = p - c;
|
|
13852
13852
|
if (A > wr) {
|
|
13853
|
-
const k = c,
|
|
13853
|
+
const k = c, O = l;
|
|
13854
13854
|
l += A;
|
|
13855
13855
|
const K = n;
|
|
13856
13856
|
n += A;
|
|
13857
|
-
const
|
|
13857
|
+
const U = {
|
|
13858
13858
|
previousEvent: e[u - 1] || null,
|
|
13859
13859
|
nextEvent: h,
|
|
13860
13860
|
start: k,
|
|
@@ -13864,11 +13864,11 @@ class mh extends we {
|
|
|
13864
13864
|
end: n
|
|
13865
13865
|
},
|
|
13866
13866
|
integrated: {
|
|
13867
|
-
start:
|
|
13867
|
+
start: O,
|
|
13868
13868
|
end: l
|
|
13869
13869
|
}
|
|
13870
13870
|
};
|
|
13871
|
-
s.push(
|
|
13871
|
+
s.push(U);
|
|
13872
13872
|
} else A > 0 && g && (g.cumulativeDuration += A, s[s.length - 1].end = p);
|
|
13873
13873
|
}
|
|
13874
13874
|
f && (C = L), h.timelineStart = L;
|
|
@@ -13943,7 +13943,7 @@ class mh extends we {
|
|
|
13943
13943
|
e.forEach((o, c) => {
|
|
13944
13944
|
const l = o.cue.pre, h = o.cue.post, u = l ? 0 : h ? i : o.startTime;
|
|
13945
13945
|
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 =
|
|
13946
|
+
const f = B(o.resumeOffset) ? o.resumeOffset : o.duration;
|
|
13947
13947
|
r += f;
|
|
13948
13948
|
});
|
|
13949
13949
|
}
|
|
@@ -14035,7 +14035,7 @@ class ph {
|
|
|
14035
14035
|
}
|
|
14036
14036
|
assignAssetListError(e, t, s, i, r, n) {
|
|
14037
14037
|
return e.error = s, {
|
|
14038
|
-
type:
|
|
14038
|
+
type: V.NETWORK_ERROR,
|
|
14039
14039
|
details: t,
|
|
14040
14040
|
fatal: !1,
|
|
14041
14041
|
interstitial: e,
|
|
@@ -14262,9 +14262,9 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14262
14262
|
if (p && (L || C)) {
|
|
14263
14263
|
const R = s(e.playingAsset), D = (R == null ? void 0 : R.media) || e.primaryMedia;
|
|
14264
14264
|
if (D) {
|
|
14265
|
-
const A = d === "primary" ? D.currentTime : i(p, d, e.playingAsset, "timelinePos", "currentTime"), k = u - A,
|
|
14266
|
-
if (
|
|
14267
|
-
D.currentTime =
|
|
14265
|
+
const A = d === "primary" ? D.currentTime : i(p, d, e.playingAsset, "timelinePos", "currentTime"), k = u - A, O = (L ? A : D.currentTime) + k;
|
|
14266
|
+
if (O >= 0 && (!R || L || O <= R.duration)) {
|
|
14267
|
+
D.currentTime = O;
|
|
14268
14268
|
return;
|
|
14269
14269
|
}
|
|
14270
14270
|
}
|
|
@@ -14282,9 +14282,9 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14282
14282
|
} else if (p) {
|
|
14283
14283
|
const A = e.findItemIndex(p);
|
|
14284
14284
|
if (T > A) {
|
|
14285
|
-
const
|
|
14286
|
-
if (
|
|
14287
|
-
e.setSchedulePosition(
|
|
14285
|
+
const O = e.schedule.findJumpRestrictedIndex(A + 1, T);
|
|
14286
|
+
if (O > A) {
|
|
14287
|
+
e.setSchedulePosition(O);
|
|
14288
14288
|
return;
|
|
14289
14289
|
}
|
|
14290
14290
|
}
|
|
@@ -14293,13 +14293,13 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14293
14293
|
e.timelinePos = R, e.checkBuffer();
|
|
14294
14294
|
else {
|
|
14295
14295
|
var x;
|
|
14296
|
-
const
|
|
14297
|
-
if (
|
|
14296
|
+
const O = v == null || (x = v.event) == null ? void 0 : x.assetList;
|
|
14297
|
+
if (O) {
|
|
14298
14298
|
const K = u - (v[d] || v).start;
|
|
14299
|
-
for (let
|
|
14300
|
-
const
|
|
14301
|
-
if (
|
|
14302
|
-
k =
|
|
14299
|
+
for (let U = O.length; U--; ) {
|
|
14300
|
+
const N = O[U];
|
|
14301
|
+
if (N.duration && K >= N.startOffset && K < N.startOffset + N.duration) {
|
|
14302
|
+
k = U;
|
|
14303
14303
|
break;
|
|
14304
14304
|
}
|
|
14305
14305
|
}
|
|
@@ -14454,7 +14454,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
14454
14454
|
let r = this.media;
|
|
14455
14455
|
!r && (e = this.bufferingItem) != null && (t = e.event) != null && t.appendInPlace && (r = this.primaryMedia);
|
|
14456
14456
|
const n = (s = r) == null ? void 0 : s.currentTime;
|
|
14457
|
-
if (!(n === void 0 || !
|
|
14457
|
+
if (!(n === void 0 || !B(n)))
|
|
14458
14458
|
return n;
|
|
14459
14459
|
}
|
|
14460
14460
|
get primaryMedia() {
|
|
@@ -15027,7 +15027,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15027
15027
|
if (y.live) {
|
|
15028
15028
|
const C = new Error(`Interstitials MUST be VOD assets ${e}`), x = {
|
|
15029
15029
|
fatal: !0,
|
|
15030
|
-
type:
|
|
15030
|
+
type: V.OTHER_ERROR,
|
|
15031
15031
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15032
15032
|
error: C
|
|
15033
15033
|
};
|
|
@@ -15091,7 +15091,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15091
15091
|
return;
|
|
15092
15092
|
const S = new Error(`Asset player destroyed unexpectedly ${u}`), L = {
|
|
15093
15093
|
fatal: !0,
|
|
15094
|
-
type:
|
|
15094
|
+
type: V.OTHER_ERROR,
|
|
15095
15095
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15096
15096
|
error: S
|
|
15097
15097
|
};
|
|
@@ -15167,7 +15167,7 @@ Schedule: ${c.map((g) => Ye(g))} pos: ${this.timelinePos}`), h.length && this.lo
|
|
|
15167
15167
|
if (u && !zr(u, e.tracks)) {
|
|
15168
15168
|
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
15169
|
fatal: !0,
|
|
15170
|
-
type:
|
|
15170
|
+
type: V.OTHER_ERROR,
|
|
15171
15171
|
details: b.INTERSTITIAL_ASSET_ITEM_ERROR,
|
|
15172
15172
|
error: d
|
|
15173
15173
|
}, g = r.findAssetIndex(n);
|
|
@@ -15422,7 +15422,7 @@ class Th extends fi {
|
|
|
15422
15422
|
const n = performance.now();
|
|
15423
15423
|
this.decrypter.decrypt(new Uint8Array(s), i.key.buffer, i.iv.buffer, di(i.method)).catch((o) => {
|
|
15424
15424
|
throw r.trigger(m.ERROR, {
|
|
15425
|
-
type:
|
|
15425
|
+
type: V.MEDIA_ERROR,
|
|
15426
15426
|
details: b.FRAG_DECRYPT_ERROR,
|
|
15427
15427
|
fatal: !1,
|
|
15428
15428
|
error: o,
|
|
@@ -16636,7 +16636,7 @@ const Fh = /\r\n|\n\r|\n|\r/g, ws = function(e, t, s = 0) {
|
|
|
16636
16636
|
}, Mh = function(e) {
|
|
16637
16637
|
let t = parseInt(e.slice(-3));
|
|
16638
16638
|
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 (!
|
|
16639
|
+
if (!B(t) || !B(s) || !B(i) || !B(r))
|
|
16640
16640
|
throw Error(`Malformed X-TIMESTAMP-MAP: Local:${e}`);
|
|
16641
16641
|
return t += 1e3 * s, t += 60 * 1e3 * i, t += 60 * 60 * 1e3 * r, t;
|
|
16642
16642
|
};
|
|
@@ -17299,7 +17299,7 @@ class Vr {
|
|
|
17299
17299
|
maxTimeToFirstByteMs: c,
|
|
17300
17300
|
maxLoadTimeMs: l
|
|
17301
17301
|
} = 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 &&
|
|
17302
|
+
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
17303
|
this.callbacks && (this.abortInternal(), this.callbacks.onTimeout(i, e, this.response));
|
|
17304
17304
|
}, t.timeout), (wt(this.request) ? this.request.then(self.fetch) : self.fetch(this.request)).then((u) => {
|
|
17305
17305
|
var d;
|
|
@@ -17316,7 +17316,7 @@ class Vr {
|
|
|
17316
17316
|
}
|
|
17317
17317
|
i.loading.first = f, i.total = Zh(u.headers) || i.total;
|
|
17318
17318
|
const g = (d = this.callbacks) == null ? void 0 : d.onProgress;
|
|
17319
|
-
return g &&
|
|
17319
|
+
return g && B(t.highWaterMark) ? this.loadProgressively(u, i, e, t.highWaterMark, g) : n ? u.arrayBuffer() : e.responseType === "json" ? u.json() : u.text();
|
|
17320
17320
|
}).then((u) => {
|
|
17321
17321
|
var d, f;
|
|
17322
17322
|
const g = this.response;
|
|
@@ -17330,7 +17330,7 @@ class Vr {
|
|
|
17330
17330
|
data: u,
|
|
17331
17331
|
code: g.status
|
|
17332
17332
|
}, T = (d = this.callbacks) == null ? void 0 : d.onProgress;
|
|
17333
|
-
T && !
|
|
17333
|
+
T && !B(t.highWaterMark) && T(i, e, u, g), (f = this.callbacks) == null || f.onSuccess(p, i, e, g);
|
|
17334
17334
|
}).catch((u) => {
|
|
17335
17335
|
var d;
|
|
17336
17336
|
if (self.clearTimeout(this.requestTimeout), i.aborted)
|
|
@@ -17382,7 +17382,7 @@ function Zh(a) {
|
|
|
17382
17382
|
const e = a.get("Content-Range");
|
|
17383
17383
|
if (e) {
|
|
17384
17384
|
const s = Xh(e);
|
|
17385
|
-
if (
|
|
17385
|
+
if (B(s))
|
|
17386
17386
|
return s;
|
|
17387
17387
|
}
|
|
17388
17388
|
const t = a.get("Content-Length");
|
|
@@ -17453,7 +17453,7 @@ class fa {
|
|
|
17453
17453
|
if (i)
|
|
17454
17454
|
for (const o in i)
|
|
17455
17455
|
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 &&
|
|
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 && B(r) ? r : n, this.requestTimeout = self.setTimeout(this.loadtimeout.bind(this), s.timeout), e.send();
|
|
17457
17457
|
}
|
|
17458
17458
|
readystatechange() {
|
|
17459
17459
|
const {
|
|
@@ -18050,7 +18050,7 @@ class hu extends fn {
|
|
|
18050
18050
|
this.warn(u.message), this.media.currentTime += 1e-6;
|
|
18051
18051
|
const d = this.fragmentTracker.getPartialFragment(e) || void 0, f = j.bufferInfo(this.media, e, 0);
|
|
18052
18052
|
this.hls.trigger(m.ERROR, {
|
|
18053
|
-
type:
|
|
18053
|
+
type: V.MEDIA_ERROR,
|
|
18054
18054
|
details: b.BUFFER_SEEK_OVER_HOLE,
|
|
18055
18055
|
fatal: !1,
|
|
18056
18056
|
error: u,
|
|
@@ -18109,7 +18109,7 @@ class hu extends fn {
|
|
|
18109
18109
|
this.stallReported = !0;
|
|
18110
18110
|
const n = new Error(`Playback stalling at @${s.currentTime} due to low buffer (${ne(e)})`);
|
|
18111
18111
|
this.warn(n.message), t.trigger(m.ERROR, {
|
|
18112
|
-
type:
|
|
18112
|
+
type: V.MEDIA_ERROR,
|
|
18113
18113
|
details: b.BUFFER_STALLED_ERROR,
|
|
18114
18114
|
fatal: !1,
|
|
18115
18115
|
error: n,
|
|
@@ -18169,7 +18169,7 @@ class hu extends fn {
|
|
|
18169
18169
|
if (this.warn(`skipping hole, adjusting currentTime from ${n} to ${f}`), this.moved = !0, i.currentTime = f, !(e != null && e.gap)) {
|
|
18170
18170
|
const g = new Error(`fragment loaded with buffer holes, seeking from ${n} to ${f}`);
|
|
18171
18171
|
this.hls.trigger(m.ERROR, {
|
|
18172
|
-
type:
|
|
18172
|
+
type: V.MEDIA_ERROR,
|
|
18173
18173
|
details: b.BUFFER_SEEK_OVER_HOLE,
|
|
18174
18174
|
fatal: !1,
|
|
18175
18175
|
error: g,
|
|
@@ -18200,7 +18200,7 @@ class hu extends fn {
|
|
|
18200
18200
|
if (this.nudgeRetry++, i < r.nudgeMaxRetry) {
|
|
18201
18201
|
const o = n + (i + 1) * r.nudgeOffset, c = new Error(`Nudging 'currentTime' from ${n} to ${o}`);
|
|
18202
18202
|
this.warn(c.message), s.currentTime = o, t.trigger(m.ERROR, {
|
|
18203
|
-
type:
|
|
18203
|
+
type: V.MEDIA_ERROR,
|
|
18204
18204
|
details: b.BUFFER_NUDGE_ON_STALL,
|
|
18205
18205
|
error: c,
|
|
18206
18206
|
fatal: !1,
|
|
@@ -18210,7 +18210,7 @@ class hu extends fn {
|
|
|
18210
18210
|
} else {
|
|
18211
18211
|
const o = new Error(`Playhead still not moving while enough data buffered @${n} after ${r.nudgeMaxRetry} nudges`);
|
|
18212
18212
|
this.error(o.message), t.trigger(m.ERROR, {
|
|
18213
|
-
type:
|
|
18213
|
+
type: V.MEDIA_ERROR,
|
|
18214
18214
|
details: b.BUFFER_STALLED_ERROR,
|
|
18215
18215
|
error: o,
|
|
18216
18216
|
fatal: !0,
|
|
@@ -18419,7 +18419,7 @@ class du {
|
|
|
18419
18419
|
n = this.dateRangeCuesAppended = {};
|
|
18420
18420
|
}
|
|
18421
18421
|
const c = e.fragments[e.fragments.length - 1];
|
|
18422
|
-
if (r.length === 0 || !
|
|
18422
|
+
if (r.length === 0 || !B(c == null ? void 0 : c.programDateTime))
|
|
18423
18423
|
return;
|
|
18424
18424
|
this.id3Track || (this.id3Track = this.createTrack(this.media));
|
|
18425
18425
|
const l = ii();
|
|
@@ -18716,7 +18716,7 @@ class gu extends Si {
|
|
|
18716
18716
|
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
18717
|
const v = new Error(p);
|
|
18718
18718
|
this.hls.trigger(m.ERROR, {
|
|
18719
|
-
type:
|
|
18719
|
+
type: V.MEDIA_ERROR,
|
|
18720
18720
|
details: b.MANIFEST_INCOMPATIBLE_CODECS_ERROR,
|
|
18721
18721
|
fatal: !0,
|
|
18722
18722
|
url: t.url,
|
|
@@ -18800,7 +18800,7 @@ class gu extends Si {
|
|
|
18800
18800
|
if (e < 0 || e >= t.length) {
|
|
18801
18801
|
const h = new Error("invalid level idx"), u = e < 0;
|
|
18802
18802
|
if (this.hls.trigger(m.ERROR, {
|
|
18803
|
-
type:
|
|
18803
|
+
type: V.OTHER_ERROR,
|
|
18804
18804
|
details: b.LEVEL_SWITCH_ERROR,
|
|
18805
18805
|
level: e,
|
|
18806
18806
|
fatal: u,
|
|
@@ -19004,7 +19004,7 @@ class Tu extends fi {
|
|
|
19004
19004
|
this.tick();
|
|
19005
19005
|
}, this.onMediaSeeked = () => {
|
|
19006
19006
|
const i = this.media, r = i ? i.currentTime : null;
|
|
19007
|
-
if (r === null || !
|
|
19007
|
+
if (r === null || !B(r) || (this.log(`Media seeked to ${r.toFixed(3)}`), !this.getBufferedFrag(r)))
|
|
19008
19008
|
return;
|
|
19009
19009
|
const n = this.getFwdBufferInfoAtPos(i, r, G.MAIN, 0);
|
|
19010
19010
|
if (n === null || n.len === 0) {
|
|
@@ -19518,7 +19518,7 @@ class Tu extends fi {
|
|
|
19518
19518
|
});
|
|
19519
19519
|
}
|
|
19520
19520
|
const T = g.initPTS, v = g.timescale, y = this.initPTS[c.cc];
|
|
19521
|
-
|
|
19521
|
+
B(T) && (!y || y.baseTime !== T || y.timescale !== v) && (this.initPTS[c.cc] = {
|
|
19522
19522
|
baseTime: T,
|
|
19523
19523
|
timescale: v
|
|
19524
19524
|
}, i.trigger(m.INIT_PTS_FOUND, {
|
|
@@ -19694,12 +19694,12 @@ class Tu extends fi {
|
|
|
19694
19694
|
if (this.fragPlaying)
|
|
19695
19695
|
return this.fragPlaying;
|
|
19696
19696
|
const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime;
|
|
19697
|
-
return
|
|
19697
|
+
return B(t) ? this.getAppendedFrag(t) : null;
|
|
19698
19698
|
}
|
|
19699
19699
|
get currentProgramDateTime() {
|
|
19700
19700
|
var e;
|
|
19701
19701
|
const t = ((e = this.media) == null ? void 0 : e.currentTime) || this.lastCurrentTime;
|
|
19702
|
-
if (
|
|
19702
|
+
if (B(t)) {
|
|
19703
19703
|
const s = this.getLevelDetails(), i = this.currentFrag || (s ? it(null, s.fragments, t) : null);
|
|
19704
19704
|
if (i) {
|
|
19705
19705
|
const r = i.programDateTime;
|
|
@@ -19754,7 +19754,7 @@ class yu {
|
|
|
19754
19754
|
}
|
|
19755
19755
|
createKeyLoadError(e, t = b.KEY_LOAD_ERROR, s, i, r) {
|
|
19756
19756
|
return new Ke({
|
|
19757
|
-
type:
|
|
19757
|
+
type: V.NETWORK_ERROR,
|
|
19758
19758
|
details: t,
|
|
19759
19759
|
fatal: !1,
|
|
19760
19760
|
frag: e,
|
|
@@ -20063,7 +20063,7 @@ class vu {
|
|
|
20063
20063
|
if (e.type === Q.MANIFEST ? r = s.manifestLoadPolicy.default : r = se({}, s.playlistLoadPolicy.default, {
|
|
20064
20064
|
timeoutRetry: null,
|
|
20065
20065
|
errorRetry: null
|
|
20066
|
-
}), i = this.createInternalLoader(e),
|
|
20066
|
+
}), i = this.createInternalLoader(e), B((t = e.deliveryDirectives) == null ? void 0 : t.part)) {
|
|
20067
20067
|
let l;
|
|
20068
20068
|
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
20069
|
const h = l.partTarget, u = l.targetduration;
|
|
@@ -20165,7 +20165,7 @@ class vu {
|
|
|
20165
20165
|
id: o,
|
|
20166
20166
|
level: c,
|
|
20167
20167
|
type: l
|
|
20168
|
-
} = s, h = Ns(e, s), u =
|
|
20168
|
+
} = 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
20169
|
if (l === Q.MANIFEST) {
|
|
20170
20170
|
const g = {
|
|
20171
20171
|
attrs: new oe({}),
|
|
@@ -20191,7 +20191,7 @@ class vu {
|
|
|
20191
20191
|
}
|
|
20192
20192
|
handleManifestParsingError(e, t, s, i, r) {
|
|
20193
20193
|
this.hls.trigger(m.ERROR, {
|
|
20194
|
-
type:
|
|
20194
|
+
type: V.NETWORK_ERROR,
|
|
20195
20195
|
details: b.MANIFEST_PARSING_ERROR,
|
|
20196
20196
|
fatal: t.type === Q.MANIFEST,
|
|
20197
20197
|
url: e.url,
|
|
@@ -20227,7 +20227,7 @@ class vu {
|
|
|
20227
20227
|
}
|
|
20228
20228
|
h && this.resetInternalLoader(e.type);
|
|
20229
20229
|
const u = {
|
|
20230
|
-
type:
|
|
20230
|
+
type: V.NETWORK_ERROR,
|
|
20231
20231
|
details: c,
|
|
20232
20232
|
fatal: l,
|
|
20233
20233
|
url: e.url,
|
|
@@ -20257,7 +20257,7 @@ class vu {
|
|
|
20257
20257
|
if (!e.fragments.length) {
|
|
20258
20258
|
const T = e.playlistParsingError = new Error("No Segments found in Playlist");
|
|
20259
20259
|
o.trigger(m.ERROR, {
|
|
20260
|
-
type:
|
|
20260
|
+
type: V.NETWORK_ERROR,
|
|
20261
20261
|
details: b.LEVEL_EMPTY_ERROR,
|
|
20262
20262
|
fatal: !1,
|
|
20263
20263
|
url: f,
|
|
@@ -20277,7 +20277,7 @@ class vu {
|
|
|
20277
20277
|
if (p) {
|
|
20278
20278
|
if (this.hls.logger.warn(p), !o.config.ignorePlaylistParsingErrors) {
|
|
20279
20279
|
o.trigger(m.ERROR, {
|
|
20280
|
-
type:
|
|
20280
|
+
type: V.NETWORK_ERROR,
|
|
20281
20281
|
details: b.LEVEL_PARSING_ERROR,
|
|
20282
20282
|
fatal: !1,
|
|
20283
20283
|
url: f,
|
|
@@ -20333,7 +20333,7 @@ class vu {
|
|
|
20333
20333
|
}
|
|
20334
20334
|
}
|
|
20335
20335
|
}
|
|
20336
|
-
class
|
|
20336
|
+
class Te {
|
|
20337
20337
|
/**
|
|
20338
20338
|
* Get the video-dev/hls.js package version.
|
|
20339
20339
|
*/
|
|
@@ -20365,7 +20365,7 @@ class Ee {
|
|
|
20365
20365
|
return Ae;
|
|
20366
20366
|
}
|
|
20367
20367
|
static get ErrorTypes() {
|
|
20368
|
-
return
|
|
20368
|
+
return V;
|
|
20369
20369
|
}
|
|
20370
20370
|
static get ErrorDetails() {
|
|
20371
20371
|
return b;
|
|
@@ -20374,13 +20374,13 @@ class Ee {
|
|
|
20374
20374
|
* Get the default configuration applied to new instances.
|
|
20375
20375
|
*/
|
|
20376
20376
|
static get DefaultConfig() {
|
|
20377
|
-
return
|
|
20377
|
+
return Te.defaultConfig ? Te.defaultConfig : iu;
|
|
20378
20378
|
}
|
|
20379
20379
|
/**
|
|
20380
20380
|
* Replace the default configuration applied to new instances.
|
|
20381
20381
|
*/
|
|
20382
20382
|
static set DefaultConfig(e) {
|
|
20383
|
-
|
|
20383
|
+
Te.defaultConfig = e;
|
|
20384
20384
|
}
|
|
20385
20385
|
/**
|
|
20386
20386
|
* Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.
|
|
@@ -20388,7 +20388,7 @@ class Ee {
|
|
|
20388
20388
|
*/
|
|
20389
20389
|
constructor(e = {}) {
|
|
20390
20390
|
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(
|
|
20391
|
+
const t = this.logger = Ua(e.debug || !1, "Hls instance", e.assetPlayerId), s = this.config = nu(Te.DefaultConfig, e, t);
|
|
20392
20392
|
this.userConfig = e, s.progressive && au(s, t);
|
|
20393
20393
|
const {
|
|
20394
20394
|
abrController: i,
|
|
@@ -20396,7 +20396,7 @@ class Ee {
|
|
|
20396
20396
|
capLevelController: n,
|
|
20397
20397
|
errorController: o,
|
|
20398
20398
|
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,
|
|
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, 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
20400
|
E.setStreamController(x), p.setStreamController(x);
|
|
20401
20401
|
const D = [T, S, x];
|
|
20402
20402
|
f && D.splice(1, 0, f), y && D.splice(1, 0, y), this.networkControllers = D;
|
|
@@ -20404,8 +20404,8 @@ class Ee {
|
|
|
20404
20404
|
this.audioTrackController = this.createController(s.audioTrackController, D);
|
|
20405
20405
|
const k = s.audioStreamController;
|
|
20406
20406
|
k && D.push(this.audioStreamController = new k(this, u, C)), this.subtitleTrackController = this.createController(s.subtitleTrackController, D);
|
|
20407
|
-
const
|
|
20408
|
-
|
|
20407
|
+
const O = s.subtitleStreamController;
|
|
20408
|
+
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
20409
|
const K = l.onErrorOut;
|
|
20410
20410
|
typeof K == "function" && this.on(m.ERROR, K, l), this.on(m.MANIFEST_LOADED, T.onManifestLoaded, T);
|
|
20411
20411
|
}
|
|
@@ -20445,7 +20445,7 @@ class Ee {
|
|
|
20445
20445
|
this.triggeringException = !0;
|
|
20446
20446
|
const i = e === m.ERROR;
|
|
20447
20447
|
this.trigger(m.ERROR, {
|
|
20448
|
-
type:
|
|
20448
|
+
type: V.OTHER_ERROR,
|
|
20449
20449
|
details: b.INTERNAL_EXCEPTION,
|
|
20450
20450
|
fatal: i,
|
|
20451
20451
|
event: e,
|
|
@@ -20473,7 +20473,7 @@ class Ee {
|
|
|
20473
20473
|
if (!e || "media" in e && !e.media) {
|
|
20474
20474
|
const r = new Error(`attachMedia failed: invalid argument (${e})`);
|
|
20475
20475
|
this.trigger(m.ERROR, {
|
|
20476
|
-
type:
|
|
20476
|
+
type: V.OTHER_ERROR,
|
|
20477
20477
|
details: b.ATTACH_MEDIA_ERROR,
|
|
20478
20478
|
fatal: !0,
|
|
20479
20479
|
error: r
|
|
@@ -21039,7 +21039,7 @@ class Ee {
|
|
|
21039
21039
|
return ln(e, s, navigator.mediaCapabilities);
|
|
21040
21040
|
}
|
|
21041
21041
|
}
|
|
21042
|
-
|
|
21042
|
+
Te.defaultConfig = void 0;
|
|
21043
21043
|
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
21044
|
__name: "das-hls-player",
|
|
21045
21045
|
props: {
|
|
@@ -21050,35 +21050,38 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21050
21050
|
loadingText: {},
|
|
21051
21051
|
error: { type: Boolean },
|
|
21052
21052
|
errorText: {},
|
|
21053
|
-
retryTime: {}
|
|
21053
|
+
retryTime: {},
|
|
21054
|
+
errorTime: {}
|
|
21054
21055
|
},
|
|
21055
21056
|
emits: ["loaded", "errorClick", "error"],
|
|
21056
21057
|
setup(a, { expose: e, emit: t }) {
|
|
21057
|
-
ya((
|
|
21058
|
-
"
|
|
21058
|
+
ya((_) => ({
|
|
21059
|
+
"88cc9cc6": _.loadingBackground
|
|
21059
21060
|
}));
|
|
21060
21061
|
const s = a, i = t, {
|
|
21061
21062
|
fit: r,
|
|
21062
21063
|
loadingText: n = _i("加载中"),
|
|
21063
21064
|
loading: o = !1,
|
|
21064
21065
|
errorText: c = _i("das-ui-hls-player-videoLoadFailedRetry")
|
|
21065
|
-
} = va(s), l =
|
|
21066
|
+
} = va(s), l = Ee(s.errorTime || 10), h = (_) => {
|
|
21067
|
+
l.value !== 0 && (l.value = l.value - 1, _.target, K());
|
|
21068
|
+
}, u = Sa(() => s.src || "");
|
|
21066
21069
|
Pa(s, "videoError");
|
|
21067
|
-
const
|
|
21068
|
-
|
|
21069
|
-
const
|
|
21070
|
-
const
|
|
21071
|
-
if (
|
|
21072
|
-
setTimeout(() =>
|
|
21070
|
+
const d = Ee(!0), f = Ee(null), g = Ee(null);
|
|
21071
|
+
Ee(!1);
|
|
21072
|
+
const E = Ee(""), p = Ee(null), T = Ee(), v = Ee(!1), y = Ee(!1), S = () => new Promise((_) => {
|
|
21073
|
+
const $ = () => {
|
|
21074
|
+
if (f != null && f.value) return _();
|
|
21075
|
+
setTimeout(() => $(), 50);
|
|
21073
21076
|
};
|
|
21074
|
-
|
|
21075
|
-
}),
|
|
21076
|
-
|
|
21077
|
-
const
|
|
21078
|
-
if (!
|
|
21079
|
-
return
|
|
21080
|
-
if (await
|
|
21081
|
-
const
|
|
21077
|
+
$();
|
|
21078
|
+
}), L = Ee(!1);
|
|
21079
|
+
Ee();
|
|
21080
|
+
const C = async () => {
|
|
21081
|
+
if (!u.value)
|
|
21082
|
+
return E.value = "视频URL为空";
|
|
21083
|
+
if (await S(), k(), d.value = !v.value, Te.isSupported()) {
|
|
21084
|
+
const _ = {
|
|
21082
21085
|
debug: !1,
|
|
21083
21086
|
// 生产环境关闭调试
|
|
21084
21087
|
enableWorker: !0,
|
|
@@ -21112,65 +21115,65 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21112
21115
|
fragLoadingTimeOut: 1e4
|
|
21113
21116
|
// 分片加载超时
|
|
21114
21117
|
};
|
|
21115
|
-
|
|
21116
|
-
|
|
21117
|
-
|
|
21118
|
-
}), i("loaded",
|
|
21118
|
+
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, () => {
|
|
21119
|
+
p.value && clearTimeout(p.value), p.value = setTimeout(() => {
|
|
21120
|
+
f.value.play().catch(() => {
|
|
21121
|
+
}), i("loaded", f.value);
|
|
21119
21122
|
}, 300);
|
|
21120
|
-
}),
|
|
21121
|
-
|
|
21123
|
+
}), g.value.on(Te.Events.ERROR, ($, w) => {
|
|
21124
|
+
O(w);
|
|
21122
21125
|
});
|
|
21123
|
-
} else
|
|
21124
|
-
|
|
21125
|
-
}, L = () => {
|
|
21126
|
-
h.value = !1, f.value = "", E.value = "";
|
|
21127
|
-
}, C = () => {
|
|
21128
|
-
h.value = !0, T.value = !1;
|
|
21126
|
+
} else f.value.canPlayType("application/vnd.apple.mpegurl") || O({ type: "UNSUPPORTED" });
|
|
21127
|
+
f.value.addEventListener("playing", x), f.value.addEventListener("waiting", D);
|
|
21129
21128
|
}, x = () => {
|
|
21130
|
-
|
|
21129
|
+
d.value = !1, E.value = "", T.value = "";
|
|
21131
21130
|
}, 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);
|
|
21131
|
+
d.value = !0, y.value = !1;
|
|
21134
21132
|
}, D = () => {
|
|
21135
|
-
|
|
21136
|
-
}, A = (
|
|
21137
|
-
var
|
|
21138
|
-
|
|
21139
|
-
|
|
21140
|
-
|
|
21141
|
-
|
|
21133
|
+
E.value = "视频缓冲中...";
|
|
21134
|
+
}, A = () => {
|
|
21135
|
+
var _, $, w;
|
|
21136
|
+
(_ = f.value) == null || _.removeEventListener("playing", x), ($ = f.value) == null || $.removeEventListener("play", R), (w = f.value) == null || w.removeEventListener("waiting", D);
|
|
21137
|
+
}, k = () => {
|
|
21138
|
+
g.value && (g.value.destroy(), g.value = null);
|
|
21139
|
+
}, O = (_) => {
|
|
21140
|
+
var $, w;
|
|
21141
|
+
if (E.value = "视频加载失败", T.value = JSON.stringify(_), _.fatal)
|
|
21142
|
+
switch (_.type) {
|
|
21143
|
+
case Te.ErrorTypes.NETWORK_ERROR:
|
|
21144
|
+
E.value = "网络错误或视频流404,正在加载中...", ($ = g.value) == null || $.startLoad(), K();
|
|
21142
21145
|
break;
|
|
21143
|
-
case
|
|
21144
|
-
|
|
21146
|
+
case Te.ErrorTypes.MEDIA_ERROR:
|
|
21147
|
+
E.value = "媒体错误,正在加载中...", (w = g.value) == null || w.recoverMediaError(), K();
|
|
21145
21148
|
break;
|
|
21146
21149
|
default:
|
|
21147
|
-
|
|
21150
|
+
E.value = "播放错误,正在尝试重新初始化...", K();
|
|
21148
21151
|
break;
|
|
21149
21152
|
}
|
|
21150
21153
|
else
|
|
21151
|
-
|
|
21152
|
-
},
|
|
21153
|
-
|
|
21154
|
-
|
|
21154
|
+
E.value = `非致命错误详情: ${_.details}`;
|
|
21155
|
+
}, K = () => {
|
|
21156
|
+
E.value = "重试中...", k(), setTimeout(() => {
|
|
21157
|
+
C();
|
|
21155
21158
|
}, 1e3);
|
|
21156
|
-
},
|
|
21157
|
-
|
|
21159
|
+
}, U = () => {
|
|
21160
|
+
C();
|
|
21158
21161
|
};
|
|
21159
|
-
|
|
21160
|
-
const
|
|
21161
|
-
|
|
21162
|
+
Ee(!1);
|
|
21163
|
+
const N = () => {
|
|
21164
|
+
y.value = !1, d.value = !0, C();
|
|
21162
21165
|
};
|
|
21163
21166
|
return Aa(() => {
|
|
21164
|
-
if (
|
|
21165
|
-
|
|
21167
|
+
if (v.value = /MicroMessenger/i.test(navigator.userAgent), y.value = v.value, L.value = !Te.isSupported(), v.value) {
|
|
21168
|
+
d.value = !1, L.value && (f.value.addEventListener("play", R), f.value.addEventListener("playing", x));
|
|
21166
21169
|
return;
|
|
21167
21170
|
}
|
|
21168
|
-
|
|
21171
|
+
U();
|
|
21169
21172
|
}), xa(() => {
|
|
21170
|
-
|
|
21173
|
+
p.value && clearTimeout(p.value), A(), k();
|
|
21171
21174
|
}), e({
|
|
21172
|
-
video:
|
|
21173
|
-
}), (
|
|
21175
|
+
video: f
|
|
21176
|
+
}), (_, $) => (At(), St(
|
|
21174
21177
|
La,
|
|
21175
21178
|
null,
|
|
21176
21179
|
[
|
|
@@ -21183,22 +21186,22 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21183
21186
|
"das-loading-text": at(n),
|
|
21184
21187
|
"das-loading-type": "component"
|
|
21185
21188
|
}, [
|
|
21186
|
-
|
|
21189
|
+
v.value && y.value ? (At(), St(
|
|
21187
21190
|
"div",
|
|
21188
21191
|
{
|
|
21189
21192
|
key: 0,
|
|
21190
|
-
class: Ra(["fake-gif", { native:
|
|
21193
|
+
class: Ra(["fake-gif", { native: L.value }])
|
|
21191
21194
|
},
|
|
21192
21195
|
[
|
|
21193
21196
|
ki("img", {
|
|
21194
21197
|
class: "preview-img",
|
|
21195
21198
|
src: at(Su)
|
|
21196
21199
|
}, null, 8, Lu),
|
|
21197
|
-
|
|
21200
|
+
L.value ? nt("v-if", !0) : (At(), St("img", {
|
|
21198
21201
|
key: 0,
|
|
21199
21202
|
class: "player-btn",
|
|
21200
21203
|
src: at(Au),
|
|
21201
|
-
onClick:
|
|
21204
|
+
onClick: N
|
|
21202
21205
|
}, null, 8, Iu))
|
|
21203
21206
|
],
|
|
21204
21207
|
2
|
|
@@ -21216,7 +21219,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21216
21219
|
`),
|
|
21217
21220
|
ki("video", {
|
|
21218
21221
|
ref_key: "videoEl",
|
|
21219
|
-
ref:
|
|
21222
|
+
ref: f,
|
|
21220
21223
|
"x-webkit-airplay": "true",
|
|
21221
21224
|
preload: "auto",
|
|
21222
21225
|
playsinline: "",
|
|
@@ -21228,17 +21231,18 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21228
21231
|
muted: "",
|
|
21229
21232
|
class: "player",
|
|
21230
21233
|
controlsList: "nodownload nofullscreen noplaybackrate",
|
|
21231
|
-
controls:
|
|
21234
|
+
controls: L.value,
|
|
21235
|
+
onError: h
|
|
21232
21236
|
}, [
|
|
21233
|
-
|
|
21237
|
+
L.value ? (At(), St("source", {
|
|
21234
21238
|
key: 0,
|
|
21235
|
-
src:
|
|
21239
|
+
src: u.value,
|
|
21236
21240
|
objectFit: at(r),
|
|
21237
21241
|
type: "application/vnd.apple.mpegurl"
|
|
21238
21242
|
}, null, 8, bu)) : nt("v-if", !0)
|
|
21239
|
-
],
|
|
21243
|
+
], 40, Ru)
|
|
21240
21244
|
], 8, xu)), [
|
|
21241
|
-
[at(Ca),
|
|
21245
|
+
[at(Ca), d.value]
|
|
21242
21246
|
]),
|
|
21243
21247
|
nt(" </div> ")
|
|
21244
21248
|
],
|
|
@@ -21251,7 +21255,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21251
21255
|
for (const [s, i] of e)
|
|
21252
21256
|
t[s] = i;
|
|
21253
21257
|
return t;
|
|
21254
|
-
}, Pu = /* @__PURE__ */ Cu(Du, [["__scopeId", "data-v-
|
|
21258
|
+
}, Pu = /* @__PURE__ */ Cu(Du, [["__scopeId", "data-v-9ee6e2c0"]]), ku = {
|
|
21255
21259
|
加载中: { "zh-CN": "加载中", en: "Loading", _appCode: "framework" },
|
|
21256
21260
|
"das-ui-hls-player-videoLoadFailedRetry": {
|
|
21257
21261
|
"zh-CN": "视频加载失败,请点击重试",
|
|
@@ -21260,7 +21264,7 @@ const Su = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgQAAACQCAYAAAB3anPqAA
|
|
|
21260
21264
|
}
|
|
21261
21265
|
};
|
|
21262
21266
|
Da(ku);
|
|
21263
|
-
const Gu = ba(Pu), $u = () =>
|
|
21267
|
+
const Gu = ba(Pu), $u = () => Ee(null);
|
|
21264
21268
|
export {
|
|
21265
21269
|
Gu as DasHlsPlayer,
|
|
21266
21270
|
$u as getDasHlsPlayerRef
|