From 6f0a8631af54273a8dc51be9f96297d558624e87 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Wed, 15 Feb 2023 15:42:23 +0100 Subject: [PATCH 01/24] feat: migrate to JASSUB --- package-lock.json | 38 ++++++++++++----- package.json | 2 +- src/plugins/htmlVideoPlayer/plugin.js | 59 +++++++++++++-------------- webpack.common.js | 10 ++--- 4 files changed, 60 insertions(+), 49 deletions(-) diff --git a/package-lock.json b/package-lock.json index c4fb4ec7ec..a2a98ed104 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,6 @@ "@fontsource/noto-sans-kr": "4.5.12", "@fontsource/noto-sans-sc": "4.5.12", "@fontsource/noto-sans-tc": "4.5.12", - "@jellyfin/libass-wasm": "4.1.1", "@jellyfin/sdk": "unstable", "@loadable/component": "5.15.3", "blurhash": "2.0.4", @@ -32,6 +31,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", + "jassub": "1.4.0", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.14", @@ -2580,11 +2580,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "node_modules/@jellyfin/libass-wasm": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@jellyfin/libass-wasm/-/libass-wasm-4.1.1.tgz", - "integrity": "sha512-xQVJw+lZUg4U1TmLS80reBECfPtpCgRF8hhUSvUUQM9g68OvINyUU3K2yqRH+8tomGpghiRaIcr/bUJ83e0veA==" - }, "node_modules/@jellyfin/sdk": { "version": "0.0.0-unstable.202302070552", "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202302070552.tgz", @@ -9629,6 +9624,14 @@ "node": ">=0.10.0" } }, + "node_modules/jassub": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.0.tgz", + "integrity": "sha512-cqUKGUCho/MgJoloMP8b/+q3IQpFBmUK/hvneFKyEruHEEEXUYWP9ksQcDX1wewF5WNvUqGGLhnvZJRZt01+Kg==", + "dependencies": { + "rvfc-polyfill": "^1.0.4" + } + }, "node_modules/jellyfin-apiclient": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/jellyfin-apiclient/-/jellyfin-apiclient-1.10.0.tgz", @@ -13628,6 +13631,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rvfc-polyfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rvfc-polyfill/-/rvfc-polyfill-1.0.4.tgz", + "integrity": "sha512-BemRbBDZiLB8pxoPT+2q6R30ykY1e75XBE/L1A0Ubd/3KdUoCQLqI/z4v4oNFNlN3/Rs93d3b6WoybnXhdebkw==" + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -20825,11 +20833,6 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, - "@jellyfin/libass-wasm": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@jellyfin/libass-wasm/-/libass-wasm-4.1.1.tgz", - "integrity": "sha512-xQVJw+lZUg4U1TmLS80reBECfPtpCgRF8hhUSvUUQM9g68OvINyUU3K2yqRH+8tomGpghiRaIcr/bUJ83e0veA==" - }, "@jellyfin/sdk": { "version": "0.0.0-unstable.202302070552", "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202302070552.tgz", @@ -26153,6 +26156,14 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "jassub": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.0.tgz", + "integrity": "sha512-cqUKGUCho/MgJoloMP8b/+q3IQpFBmUK/hvneFKyEruHEEEXUYWP9ksQcDX1wewF5WNvUqGGLhnvZJRZt01+Kg==", + "requires": { + "rvfc-polyfill": "^1.0.4" + } + }, "jellyfin-apiclient": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/jellyfin-apiclient/-/jellyfin-apiclient-1.10.0.tgz", @@ -29030,6 +29041,11 @@ "queue-microtask": "^1.2.2" } }, + "rvfc-polyfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/rvfc-polyfill/-/rvfc-polyfill-1.0.4.tgz", + "integrity": "sha512-BemRbBDZiLB8pxoPT+2q6R30ykY1e75XBE/L1A0Ubd/3KdUoCQLqI/z4v4oNFNlN3/Rs93d3b6WoybnXhdebkw==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", diff --git a/package.json b/package.json index bafc4ff4bc..80a7d85983 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,6 @@ "@fontsource/noto-sans-kr": "4.5.12", "@fontsource/noto-sans-sc": "4.5.12", "@fontsource/noto-sans-tc": "4.5.12", - "@jellyfin/libass-wasm": "4.1.1", "@jellyfin/sdk": "unstable", "@loadable/component": "5.15.3", "blurhash": "2.0.4", @@ -91,6 +90,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", + "jassub": "1.4.0", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.14", diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index af136e9185..d64478005f 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -198,7 +198,7 @@ function tryRemoveElement(elem) { /** * @type {any | null | undefined} */ - #currentSubtitlesOctopus; + #currentJASSUB; /** * @type {null | undefined} */ @@ -530,9 +530,9 @@ function tryRemoveElement(elem) { const offsetValue = parseFloat(offset); // if .ass currently rendering - if (this.#currentSubtitlesOctopus) { + if (this.#currentJASSUB) { this.updateCurrentTrackOffset(offsetValue); - this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; + this.#currentJASSUB.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; } else { const trackElement = this.getTextTrack(); // if .vtt currently rendering @@ -837,10 +837,8 @@ function tryRemoveElement(elem) { loading.hide(); seekOnPlaybackStart(this, e.target, this._currentPlayOptions.playerStartPositionTicks, () => { - if (this.#currentSubtitlesOctopus) { - this.#currentSubtitlesOctopus.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + this.#currentTrackOffset; - this.#currentSubtitlesOctopus.resize(); - this.#currentSubtitlesOctopus.resetRenderAheadCache(false); + if (this.#currentJASSUB) { + this.#currentJASSUB.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + this.#currentTrackOffset; } }); @@ -980,11 +978,11 @@ function tryRemoveElement(elem) { this.#currentClock = null; this._currentAspectRatio = null; - const octopus = this.#currentSubtitlesOctopus; - if (octopus) { - octopus.dispose(); + const jassub = this.#currentJASSUB; + if (jassub) { + jassub.destroy(); } - this.#currentSubtitlesOctopus = null; + this.#currentJASSUB = null; const renderer = this.#currentAssRenderer; if (renderer) { @@ -1066,37 +1064,30 @@ function tryRemoveElement(elem) { const fallbackFontList = apiClient.getUrl('/FallbackFont/Fonts', { api_key: apiClient.accessToken() }); - const htmlVideoPlayer = this; const options = { video: videoElement, subUrl: getTextTrackUrl(track, item), fonts: avaliableFonts, - workerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker.js`, - legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/subtitles-octopus-worker-legacy.js`, - onError() { - // HACK: Clear JavascriptSubtitlesOctopus: it gets disposed when an error occurs - htmlVideoPlayer.#currentSubtitlesOctopus = null; - - // HACK: Give JavascriptSubtitlesOctopus time to dispose itself - setTimeout(() => { - onErrorInternal(htmlVideoPlayer, 'mediadecodeerror'); - }, 0); - }, + workerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker.js`, + legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker-legacy.js`, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, - // new octopus options; override all, even defaults - renderMode: 'wasm-blend', + // new jassub options; override all, even defaults + blendMode: 'js', + asyncRender: true, + // firefox implements offscreen canvas, but not according to spec which causes errors + offscreenRender: !browser.firefox, + onDemandRender: true, + useLocalFonts: true, dropAllAnimations: false, libassMemoryLimit: 40, libassGlyphLimit: 40, targetFps: 24, prescaleFactor: 0.8, prescaleHeightLimit: 1080, - maxRenderHeight: 2160, - resizeVariation: 0.2, - renderAhead: 90 + maxRenderHeight: 2160 }; - import('@jellyfin/libass-wasm').then(({default: SubtitlesOctopus}) => { + import('jassub').then(({ default: JASSUB }) => { Promise.all([ apiClient.getNamedConfiguration('encoding'), // Worker in Tizen 5 doesn't resolve relative path with async request @@ -1114,11 +1105,17 @@ function tryRemoveElement(elem) { }); avaliableFonts.push(fontUrl); }); - this.#currentSubtitlesOctopus = new SubtitlesOctopus(options); + this.#currentJASSUB = new JASSUB(options); }); } else { - this.#currentSubtitlesOctopus = new SubtitlesOctopus(options); + this.#currentJASSUB = new JASSUB(options); } + + this.#currentJASSUB.addEventListener('error', ()=>{ + this.#currentJASSUB.destroy(); + this.#currentJASSUB = null; + onErrorInternal(this, 'mediadecodeerror'); + }, { once: true }); }); }); } diff --git a/webpack.common.js b/webpack.common.js index 14826c9f0b..b42f34c398 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -8,12 +8,10 @@ const { DefinePlugin } = require('webpack'); const Assets = [ 'native-promise-only/npo.js', 'libarchive.js/dist/worker-bundle.js', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.js', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.data', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.wasm', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker-legacy.js', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker-legacy.data', - '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker-legacy.js.mem', + 'jassub/dist/jassub-worker.js', + 'jassub/dist/jassub-worker.wasm', + 'jassub/dist/jassub-worker-legacy.js', + 'jassub/dist/jassub-worker-legacy.mem', 'pdfjs-dist/build/pdf.worker.js' ]; From fc1acef35d77c49fe11456195a50bfbb3dc767a3 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 16 Feb 2023 00:22:36 +0100 Subject: [PATCH 02/24] chore: update jassub --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a2a98ed104..3ba87ec60e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.4.0", + "jassub": "1.4.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.14", @@ -9625,9 +9625,9 @@ } }, "node_modules/jassub": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.0.tgz", - "integrity": "sha512-cqUKGUCho/MgJoloMP8b/+q3IQpFBmUK/hvneFKyEruHEEEXUYWP9ksQcDX1wewF5WNvUqGGLhnvZJRZt01+Kg==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.5.tgz", + "integrity": "sha512-vfdyCxT9DgfvbNK5NOAGZBQKxH+XsigoE3Hfc06zevAf8YvoQJ1vOMKNZ7/QJMKea9Nbo09/mqcs1/iBdjBlMw==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -26157,9 +26157,9 @@ "dev": true }, "jassub": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.0.tgz", - "integrity": "sha512-cqUKGUCho/MgJoloMP8b/+q3IQpFBmUK/hvneFKyEruHEEEXUYWP9ksQcDX1wewF5WNvUqGGLhnvZJRZt01+Kg==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.5.tgz", + "integrity": "sha512-vfdyCxT9DgfvbNK5NOAGZBQKxH+XsigoE3Hfc06zevAf8YvoQJ1vOMKNZ7/QJMKea9Nbo09/mqcs1/iBdjBlMw==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index 80a7d85983..87293298ea 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.4.0", + "jassub": "1.4.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.14", From 7ad63dae4cd59da726ad0d6d6e39a09c5309bee5 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Sun, 19 Feb 2023 16:50:51 +0100 Subject: [PATCH 03/24] fix: babelify jassub --- webpack.common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webpack.common.js b/webpack.common.js index 9a0d9da306..9457b622e3 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -145,7 +145,7 @@ const config = { { test: /\.(js|jsx)$/, include: [ - path.resolve(__dirname, 'node_modules/@jellyfin/libass-wasm'), + path.resolve(__dirname, 'node_modules/jassub'), path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), path.resolve(__dirname, 'node_modules/@remix-run/router'), path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), From 881a50c57645e196f376df21635eb5ecaf786790 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Sun, 19 Feb 2023 18:14:09 +0100 Subject: [PATCH 04/24] fix: babelify rvfc-polyfill --- webpack.common.js | 1 + 1 file changed, 1 insertion(+) diff --git a/webpack.common.js b/webpack.common.js index 9457b622e3..cc460fb409 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -146,6 +146,7 @@ const config = { test: /\.(js|jsx)$/, include: [ path.resolve(__dirname, 'node_modules/jassub'), + path.resolve(__dirname, 'node_modules/rvfc-polyfill'), path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), path.resolve(__dirname, 'node_modules/@remix-run/router'), path.resolve(__dirname, 'node_modules/@uupaa/dynamic-import-polyfill'), From 35e588e1756245c2ade767b72503d8d3cb18b958 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Wed, 22 Feb 2023 19:18:00 +0100 Subject: [PATCH 05/24] fix: canvas positioning, worker escheck --- .escheckrc | 2 +- src/plugins/htmlVideoPlayer/style.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.escheckrc b/.escheckrc index 90d6edddb9..db52af30de 100644 --- a/.escheckrc +++ b/.escheckrc @@ -6,7 +6,7 @@ "./dist/libraries/pdf.worker.js", "./dist/libraries/worker-bundle.js", "./dist/libraries/wasm-gen/libarchive.js", - "./dist/node_modules.@jellyfin.libass-wasm.*.chunk.js", + "./dist/libraries/jassub-worker*.js", "./dist/serviceworker.js" ] } diff --git a/src/plugins/htmlVideoPlayer/style.scss b/src/plugins/htmlVideoPlayer/style.scss index 390e25a994..a4be65adce 100644 --- a/src/plugins/htmlVideoPlayer/style.scss +++ b/src/plugins/htmlVideoPlayer/style.scss @@ -17,7 +17,7 @@ z-index: 1000; } -.videoPlayerContainer .libassjs-canvas-parent { +.videoPlayerContainer .JASSUB { order: -1; } From c436d9abae51b3e85b7b476ee5a21da946608de3 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 2 Mar 2023 10:42:33 +0100 Subject: [PATCH 06/24] chore: update JASSUB --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index eb12f0c4b8..2b7f77c8af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.4.5", + "jassub": "1.5.0", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9640,9 +9640,9 @@ } }, "node_modules/jassub": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.5.tgz", - "integrity": "sha512-vfdyCxT9DgfvbNK5NOAGZBQKxH+XsigoE3Hfc06zevAf8YvoQJ1vOMKNZ7/QJMKea9Nbo09/mqcs1/iBdjBlMw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.0.tgz", + "integrity": "sha512-uyAZVStxwYRhtuTUN4pRxTsacY/G/X9aymXHh9/dyjkn2qx4w0b/vqZmg1z/iW6n9YLHjGgT+3Qt/A3bNo1bag==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -26229,9 +26229,9 @@ "dev": true }, "jassub": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.4.5.tgz", - "integrity": "sha512-vfdyCxT9DgfvbNK5NOAGZBQKxH+XsigoE3Hfc06zevAf8YvoQJ1vOMKNZ7/QJMKea9Nbo09/mqcs1/iBdjBlMw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.0.tgz", + "integrity": "sha512-uyAZVStxwYRhtuTUN4pRxTsacY/G/X9aymXHh9/dyjkn2qx4w0b/vqZmg1z/iW6n9YLHjGgT+3Qt/A3bNo1bag==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index d3c5c2f688..886da545db 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.4.5", + "jassub": "1.5.0", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From bcc4f876052427e3d7216c737cc4d7368a788792 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 6 Mar 2023 02:14:55 +0100 Subject: [PATCH 07/24] chore: update jassub --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b1880fc8e5..14283421aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.5.0", + "jassub": "1.5.1", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9650,9 +9650,9 @@ } }, "node_modules/jassub": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.0.tgz", - "integrity": "sha512-uyAZVStxwYRhtuTUN4pRxTsacY/G/X9aymXHh9/dyjkn2qx4w0b/vqZmg1z/iW6n9YLHjGgT+3Qt/A3bNo1bag==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.1.tgz", + "integrity": "sha512-li8NUMm9JYHELRrsEEd9+8wX/PdN3H7JKE1V3Hwm9S7QmTr1Rx2VRU9AeiwJbZpxp9CcVSTyw0xFykluDGItHg==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -26246,9 +26246,9 @@ "dev": true }, "jassub": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.0.tgz", - "integrity": "sha512-uyAZVStxwYRhtuTUN4pRxTsacY/G/X9aymXHh9/dyjkn2qx4w0b/vqZmg1z/iW6n9YLHjGgT+3Qt/A3bNo1bag==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.1.tgz", + "integrity": "sha512-li8NUMm9JYHELRrsEEd9+8wX/PdN3H7JKE1V3Hwm9S7QmTr1Rx2VRU9AeiwJbZpxp9CcVSTyw0xFykluDGItHg==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index 7c37d63875..3569f59c22 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.5.0", + "jassub": "1.5.1", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From 71e9b46a815f1e3cd1da363223ce7bac696aa84c Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Fri, 10 Mar 2023 15:45:01 +0100 Subject: [PATCH 08/24] chore: update JASSUB fix: error event handling fix: default font --- package-lock.json | 26 +++++++++++++++++++------- package.json | 2 +- src/plugins/htmlVideoPlayer/plugin.js | 17 ++++++++++------- webpack.common.js | 1 + 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14283421aa..093d5dc279 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.5.1", + "jassub": "1.5.3", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -7293,6 +7293,11 @@ "es5-ext": "~0.10.14" } }, + "node_modules/event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==" + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -9650,10 +9655,11 @@ } }, "node_modules/jassub": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.1.tgz", - "integrity": "sha512-li8NUMm9JYHELRrsEEd9+8wX/PdN3H7JKE1V3Hwm9S7QmTr1Rx2VRU9AeiwJbZpxp9CcVSTyw0xFykluDGItHg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.3.tgz", + "integrity": "sha512-RADNYFjuQgQmA2Jn7/m4X1cn6a24fvvxcxL0A/q4In++SqHsOwIi40oyYLu7T63Abs5dagONTAAb9TGYBZsRKA==", "dependencies": { + "event-target-polyfill": "^0.0.3", "rvfc-polyfill": "^1.0.4" } }, @@ -24492,6 +24498,11 @@ "es5-ext": "~0.10.14" } }, + "event-target-polyfill": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", + "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==" + }, "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -26246,10 +26257,11 @@ "dev": true }, "jassub": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.1.tgz", - "integrity": "sha512-li8NUMm9JYHELRrsEEd9+8wX/PdN3H7JKE1V3Hwm9S7QmTr1Rx2VRU9AeiwJbZpxp9CcVSTyw0xFykluDGItHg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.3.tgz", + "integrity": "sha512-RADNYFjuQgQmA2Jn7/m4X1cn6a24fvvxcxL0A/q4In++SqHsOwIi40oyYLu7T63Abs5dagONTAAb9TGYBZsRKA==", "requires": { + "event-target-polyfill": "^0.0.3", "rvfc-polyfill": "^1.0.4" } }, diff --git a/package.json b/package.json index 3569f59c22..7895093659 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "history": "5.3.0", "hls.js": "0.14.17", "intersection-observer": "0.12.2", - "jassub": "1.5.1", + "jassub": "1.5.3", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ea3b052cc9..2d99af9d9a 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1211,10 +1211,11 @@ function tryRemoveElement(elem) { video: videoElement, subUrl: getTextTrackUrl(track, item), fonts: avaliableFonts, + fallbackFont: 'liberation sans', + availableFonts: {'liberation sans': `${appRouter.baseUrl()}/libraries/default.woff2`}, workerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker.js`, legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker-legacy.js`, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, - // new jassub options; override all, even defaults blendMode: 'js', asyncRender: true, @@ -1240,6 +1241,12 @@ function tryRemoveElement(elem) { options.workerUrl = workerUrl; options.legacyWorkerUrl = legacyWorkerUrl; + const cleanup = () => { + this.#currentJASSUB.destroy(); + this.#currentJASSUB = null; + onErrorInternal(this, 'mediadecodeerror'); + }; + if (config.EnableFallbackFont) { apiClient.getJSON(fallbackFontList).then((fontFiles = []) => { fontFiles.forEach(font => { @@ -1249,16 +1256,12 @@ function tryRemoveElement(elem) { avaliableFonts.push(fontUrl); }); this.#currentJASSUB = new JASSUB(options); + this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); }); } else { this.#currentJASSUB = new JASSUB(options); + this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); } - - this.#currentJASSUB.addEventListener('error', ()=>{ - this.#currentJASSUB.destroy(); - this.#currentJASSUB = null; - onErrorInternal(this, 'mediadecodeerror'); - }, { once: true }); }); }); } diff --git a/webpack.common.js b/webpack.common.js index cc460fb409..93460fc5aa 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -12,6 +12,7 @@ const Assets = [ 'jassub/dist/jassub-worker.wasm', 'jassub/dist/jassub-worker-legacy.js', 'jassub/dist/jassub-worker-legacy.mem', + 'jassub/dist/default.woff2', 'pdfjs-dist/build/pdf.worker.js' ]; From 434029dae938410f72bc409920c7e06ce3c0f96f Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Wed, 15 Mar 2023 12:50:02 +0100 Subject: [PATCH 09/24] fix: babel jassub worker --- babel.config.js | 9 +-------- src/plugins/htmlVideoPlayer/plugin.js | 6 ++++-- webpack.common.js | 17 ++++++++++++++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/babel.config.js b/babel.config.js index fcd9dcb4ac..e31ea23126 100644 --- a/babel.config.js +++ b/babel.config.js @@ -12,14 +12,7 @@ module.exports = { corejs: 3 } ], - '@babel/preset-react', - [ - '@babel/preset-typescript', - { - isTSX: true, - allExtensions: true - } - ] + '@babel/preset-react' ], plugins: [ '@babel/plugin-proposal-class-properties', diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 2d99af9d9a..ad1c58d487 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1213,8 +1213,10 @@ function tryRemoveElement(elem) { fonts: avaliableFonts, fallbackFont: 'liberation sans', availableFonts: {'liberation sans': `${appRouter.baseUrl()}/libraries/default.woff2`}, - workerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker.js`, - legacyWorkerUrl: `${appRouter.baseUrl()}/libraries/jassub-worker-legacy.js`, + // eslint-disable-next-line compat/compat + workerUrl: `${appRouter.baseUrl()}/${new URL('jassub/dist/jassub-worker.js', import.meta.url)}`, + // eslint-disable-next-line compat/compat + legacyWorkerUrl: `${appRouter.baseUrl()}/${new URL('jassub/dist/jassub-worker-legacy.js', import.meta.url)}`, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, // new jassub options; override all, even defaults blendMode: 'js', diff --git a/webpack.common.js b/webpack.common.js index 93460fc5aa..31bed42053 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -8,9 +8,7 @@ const { DefinePlugin } = require('webpack'); const Assets = [ 'native-promise-only/npo.js', 'libarchive.js/dist/worker-bundle.js', - 'jassub/dist/jassub-worker.js', 'jassub/dist/jassub-worker.wasm', - 'jassub/dist/jassub-worker-legacy.js', 'jassub/dist/jassub-worker-legacy.mem', 'jassub/dist/default.woff2', 'pdfjs-dist/build/pdf.worker.js' @@ -146,7 +144,6 @@ const config = { { test: /\.(js|jsx)$/, include: [ - path.resolve(__dirname, 'node_modules/jassub'), path.resolve(__dirname, 'node_modules/rvfc-polyfill'), path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), path.resolve(__dirname, 'node_modules/@remix-run/router'), @@ -174,6 +171,20 @@ const config = { } }] }, + { + test: /\.js$/, + include: [ + path.resolve(__dirname, 'node_modules/jassub') + ], + use: [{ + loader: 'babel-loader', + options: { + cacheCompression: false, + cacheDirectory: true, + presets: ['@babel/preset-env'] + } + }] + }, { test: /\.worker\.ts$/, exclude: /node_modules/, From 43aba5e58064ba221574bebe973870d19bc8b111 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Wed, 15 Mar 2023 13:25:30 +0100 Subject: [PATCH 10/24] fix: make CI happy --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 7895093659..6c96acd926 100644 --- a/package.json +++ b/package.json @@ -132,8 +132,8 @@ "start": "npm run serve", "serve": "webpack serve --config webpack.dev.js", "prepare": "node ./scripts/prepare.js", - "build:development": "webpack --config webpack.dev.js", - "build:production": "cross-env NODE_ENV=\"production\" webpack --config webpack.prod.js", + "build:development": "cross-env NODE_OPTIONS=\"--max_old_space_size=6144\" webpack --config webpack.dev.js", + "build:production": "cross-env NODE_ENV=\"production\" NODE_OPTIONS=\"--max_old_space_size=6144\" webpack --config webpack.prod.js", "build:check": "tsc --noEmit", "escheck": "es-check", "lint": "eslint \"./\"", From a73b691653960515da5c5c23704a1511337f429c Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 16 Mar 2023 15:37:30 +0100 Subject: [PATCH 11/24] fix: babel evt-polyfill fix: worker paths fix: wasm paths --- package-lock.json | 1 + package.json | 1 + src/plugins/htmlVideoPlayer/plugin.js | 57 ++++++++++++++------------- webpack.common.js | 16 +++++++- 4 files changed, 46 insertions(+), 29 deletions(-) diff --git a/package-lock.json b/package-lock.json index 964d7ed7c0..5e7d33af06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "dompurify": "3.0.1", "epubjs": "0.4.2", "escape-html": "1.0.3", + "event-target-polyfill": "0.0.3", "fast-text-encoding": "1.0.6", "flv.js": "1.6.2", "headroom.js": "0.12.0", diff --git a/package.json b/package.json index 4a6817c17c..a795264e58 100644 --- a/package.json +++ b/package.json @@ -84,6 +84,7 @@ "dompurify": "3.0.1", "epubjs": "0.4.2", "escape-html": "1.0.3", + "event-target-polyfill": "0.0.3", "fast-text-encoding": "1.0.6", "flv.js": "1.6.2", "headroom.js": "0.12.0", diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index a2e5535df6..a9457783f4 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1270,10 +1270,11 @@ function tryRemoveElement(elem) { fonts: avaliableFonts, fallbackFont: 'liberation sans', availableFonts: {'liberation sans': `${appRouter.baseUrl()}/libraries/default.woff2`}, + // Disabled eslint compat, but is safe as corejs3 polyfills URL // eslint-disable-next-line compat/compat - workerUrl: `${appRouter.baseUrl()}/${new URL('jassub/dist/jassub-worker.js', import.meta.url)}`, + workerUrl: `${appRouter.baseUrl()}${new URL('jassub/dist/jassub-worker.js', import.meta.url).pathname}`, // eslint-disable-next-line compat/compat - legacyWorkerUrl: `${appRouter.baseUrl()}/${new URL('jassub/dist/jassub-worker-legacy.js', import.meta.url)}`, + legacyWorkerUrl: `${appRouter.baseUrl()}${new URL('jassub/dist/jassub-worker-legacy.js', import.meta.url).pathname}`, timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, // new jassub options; override all, even defaults blendMode: 'js', @@ -1290,37 +1291,39 @@ function tryRemoveElement(elem) { prescaleHeightLimit: 1080, maxRenderHeight: 2160 }; - import('jassub').then(({ default: JASSUB }) => { - Promise.all([ - apiClient.getNamedConfiguration('encoding'), - // Worker in Tizen 5 doesn't resolve relative path with async request - resolveUrl(options.workerUrl), - resolveUrl(options.legacyWorkerUrl) - ]).then(([config, workerUrl, legacyWorkerUrl]) => { - options.workerUrl = workerUrl; - options.legacyWorkerUrl = legacyWorkerUrl; + import('event-target-polyfill').then(() => { + import('jassub').then(({ default: JASSUB }) => { + Promise.all([ + apiClient.getNamedConfiguration('encoding'), + // Worker in Tizen 5 doesn't resolve relative path with async request + resolveUrl(options.workerUrl), + resolveUrl(options.legacyWorkerUrl) + ]).then(([config, workerUrl, legacyWorkerUrl]) => { + options.workerUrl = workerUrl; + options.legacyWorkerUrl = legacyWorkerUrl; - const cleanup = () => { - this.#currentJASSUB.destroy(); - this.#currentJASSUB = null; - onErrorInternal(this, 'mediadecodeerror'); - }; + const cleanup = () => { + this.#currentJASSUB.destroy(); + this.#currentJASSUB = null; + onErrorInternal(this, 'mediadecodeerror'); + }; - if (config.EnableFallbackFont) { - apiClient.getJSON(fallbackFontList).then((fontFiles = []) => { - fontFiles.forEach(font => { - const fontUrl = apiClient.getUrl(`/FallbackFont/Fonts/${font.Name}`, { - api_key: apiClient.accessToken() + if (config.EnableFallbackFont) { + apiClient.getJSON(fallbackFontList).then((fontFiles = []) => { + fontFiles.forEach(font => { + const fontUrl = apiClient.getUrl(`/FallbackFont/Fonts/${font.Name}`, { + api_key: apiClient.accessToken() + }); + avaliableFonts.push(fontUrl); }); - avaliableFonts.push(fontUrl); + this.#currentJASSUB = new JASSUB(options); + this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); }); + } else { this.#currentJASSUB = new JASSUB(options); this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); - }); - } else { - this.#currentJASSUB = new JASSUB(options); - this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); - } + } + }); }); }); } diff --git a/webpack.common.js b/webpack.common.js index a66ddfe033..87f899040c 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -8,10 +8,13 @@ const { DefinePlugin } = require('webpack'); const Assets = [ 'native-promise-only/npo.js', 'libarchive.js/dist/worker-bundle.js', + 'pdfjs-dist/build/pdf.worker.js' +]; + +const JassubWasm = [ 'jassub/dist/jassub-worker.wasm', 'jassub/dist/jassub-worker-legacy.mem', - 'jassub/dist/default.woff2', - 'pdfjs-dist/build/pdf.worker.js' + 'jassub/dist/default.woff2' ]; const LibarchiveWasm = [ @@ -80,6 +83,14 @@ const config = { to: path.resolve(__dirname, './dist/libraries/wasm-gen') }; }) + }), + new CopyPlugin({ + patterns: JassubWasm.map(asset => { + return { + from: path.resolve(__dirname, `./node_modules/${asset}`), + to: path.resolve(__dirname, './dist') + }; + }) }) ], output: { @@ -144,6 +155,7 @@ const config = { { test: /\.(js|jsx)$/, include: [ + path.resolve(__dirname, 'node_modules/event-target-polyfill'), path.resolve(__dirname, 'node_modules/rvfc-polyfill'), path.resolve(__dirname, 'node_modules/@jellyfin/sdk'), path.resolve(__dirname, 'node_modules/@remix-run/router'), From 70f65141f4462df97ff98dd1aae6b6e145edbefc Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 16 Mar 2023 15:42:44 +0100 Subject: [PATCH 12/24] cleanup: formatting, escheck --- .escheckrc | 1 - src/plugins/htmlVideoPlayer/plugin.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.escheckrc b/.escheckrc index db52af30de..195d28b9fc 100644 --- a/.escheckrc +++ b/.escheckrc @@ -6,7 +6,6 @@ "./dist/libraries/pdf.worker.js", "./dist/libraries/worker-bundle.js", "./dist/libraries/wasm-gen/libarchive.js", - "./dist/libraries/jassub-worker*.js", "./dist/serviceworker.js" ] } diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index a9457783f4..80d8c66cb0 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1292,7 +1292,7 @@ function tryRemoveElement(elem) { maxRenderHeight: 2160 }; import('event-target-polyfill').then(() => { - import('jassub').then(({ default: JASSUB }) => { + import('jassub').then(({ default: JASSUB }) => { Promise.all([ apiClient.getNamedConfiguration('encoding'), // Worker in Tizen 5 doesn't resolve relative path with async request From 41fdbbb96e4447c2cf216c41c3f5e21b6a5dfad7 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 16 Mar 2023 16:53:01 +0100 Subject: [PATCH 13/24] chore: update jassub --- package-lock.json | 16 +++++++--------- package.json | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e7d33af06..132520ab0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.3", + "jassub": "1.5.4", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9653,11 +9653,10 @@ } }, "node_modules/jassub": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.3.tgz", - "integrity": "sha512-RADNYFjuQgQmA2Jn7/m4X1cn6a24fvvxcxL0A/q4In++SqHsOwIi40oyYLu7T63Abs5dagONTAAb9TGYBZsRKA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.4.tgz", + "integrity": "sha512-pSuEwSoQ2pjrfVhMJ+iNb7WcwrzzKNU+Q0VWptkeWPJx7abeNxPMS3zX0c6bpMyGLYaTh5Uc6MePEFni4tDv6A==", "dependencies": { - "event-target-polyfill": "^0.0.3", "rvfc-polyfill": "^1.0.4" } }, @@ -26247,11 +26246,10 @@ "dev": true }, "jassub": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.3.tgz", - "integrity": "sha512-RADNYFjuQgQmA2Jn7/m4X1cn6a24fvvxcxL0A/q4In++SqHsOwIi40oyYLu7T63Abs5dagONTAAb9TGYBZsRKA==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.4.tgz", + "integrity": "sha512-pSuEwSoQ2pjrfVhMJ+iNb7WcwrzzKNU+Q0VWptkeWPJx7abeNxPMS3zX0c6bpMyGLYaTh5Uc6MePEFni4tDv6A==", "requires": { - "event-target-polyfill": "^0.0.3", "rvfc-polyfill": "^1.0.4" } }, diff --git a/package.json b/package.json index a795264e58..a7da1b1b40 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.3", + "jassub": "1.5.4", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From 132825962aea0dce523aad9f0a09988f573e9ef5 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Fri, 17 Mar 2023 10:02:33 +0100 Subject: [PATCH 14/24] fix: poor eventtarget polyfill --- package-lock.json | 25 ++++++++++++------------- package.json | 4 ++-- src/plugins/htmlVideoPlayer/plugin.js | 7 ++++--- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 132520ab0d..73e48d813b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,14 +25,14 @@ "dompurify": "3.0.1", "epubjs": "0.4.2", "escape-html": "1.0.3", - "event-target-polyfill": "0.0.3", + "event-target-polyfill": "github:ThaUnknown/event-target-polyfill", "fast-text-encoding": "1.0.6", "flv.js": "1.6.2", "headroom.js": "0.12.0", "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.4", + "jassub": "1.5.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -7296,8 +7296,8 @@ }, "node_modules/event-target-polyfill": { "version": "0.0.3", - "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", - "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==" + "resolved": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5152219bdee9bc18ab0a1cccddab48a813c20b81", + "license": "MIT" }, "node_modules/eventemitter3": { "version": "4.0.7", @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.4.tgz", - "integrity": "sha512-pSuEwSoQ2pjrfVhMJ+iNb7WcwrzzKNU+Q0VWptkeWPJx7abeNxPMS3zX0c6bpMyGLYaTh5Uc6MePEFni4tDv6A==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.5.tgz", + "integrity": "sha512-PduISAKqGZYMRnaO7v9HKYaR2/q8U6tTQK2hKSJtUGucWcAM1kS4Rsqwf7qbtB++UmfQYxuG1fN4VixfiA2iOA==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -24491,9 +24491,8 @@ } }, "event-target-polyfill": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/event-target-polyfill/-/event-target-polyfill-0.0.3.tgz", - "integrity": "sha512-ZMc6UuvmbinrCk4RzGyVmRyIsAyxMRlp4CqSrcQRO8Dy0A9ldbiRy5kdtBj4OtP7EClGdqGfIqo9JmOClMsGLQ==" + "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5152219bdee9bc18ab0a1cccddab48a813c20b81", + "from": "event-target-polyfill@github:ThaUnknown/event-target-polyfill" }, "eventemitter3": { "version": "4.0.7", @@ -26246,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.4.tgz", - "integrity": "sha512-pSuEwSoQ2pjrfVhMJ+iNb7WcwrzzKNU+Q0VWptkeWPJx7abeNxPMS3zX0c6bpMyGLYaTh5Uc6MePEFni4tDv6A==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.5.tgz", + "integrity": "sha512-PduISAKqGZYMRnaO7v9HKYaR2/q8U6tTQK2hKSJtUGucWcAM1kS4Rsqwf7qbtB++UmfQYxuG1fN4VixfiA2iOA==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index a7da1b1b40..c7f30f6a84 100644 --- a/package.json +++ b/package.json @@ -84,14 +84,14 @@ "dompurify": "3.0.1", "epubjs": "0.4.2", "escape-html": "1.0.3", - "event-target-polyfill": "0.0.3", + "event-target-polyfill": "github:ThaUnknown/event-target-polyfill", "fast-text-encoding": "1.0.6", "flv.js": "1.6.2", "headroom.js": "0.12.0", "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.4", + "jassub": "1.5.5", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 80d8c66cb0..ab38df6d5d 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1269,12 +1269,12 @@ function tryRemoveElement(elem) { subUrl: getTextTrackUrl(track, item), fonts: avaliableFonts, fallbackFont: 'liberation sans', - availableFonts: {'liberation sans': `${appRouter.baseUrl()}/libraries/default.woff2`}, + availableFonts: {'liberation sans': `${appRouter.baseUrl()}/default.woff2`}, // Disabled eslint compat, but is safe as corejs3 polyfills URL // eslint-disable-next-line compat/compat - workerUrl: `${appRouter.baseUrl()}${new URL('jassub/dist/jassub-worker.js', import.meta.url).pathname}`, + workerUrl: new URL('jassub/dist/jassub-worker.js', import.meta.url), // eslint-disable-next-line compat/compat - legacyWorkerUrl: `${appRouter.baseUrl()}${new URL('jassub/dist/jassub-worker-legacy.js', import.meta.url).pathname}`, + legacyWorkerUrl: new URL('jassub/dist/jassub-worker-legacy.js', import.meta.url), timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000, // new jassub options; override all, even defaults blendMode: 'js', @@ -1291,6 +1291,7 @@ function tryRemoveElement(elem) { prescaleHeightLimit: 1080, maxRenderHeight: 2160 }; + // TODO: replace with `event-target-polyfill` once https://github.com/benlesh/event-target-polyfill/pull/12 or 11 is merged import('event-target-polyfill').then(() => { import('jassub').then(({ default: JASSUB }) => { Promise.all([ From fb9fc152fdb4d1097e089b11e48ef7c45aca3ec0 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Fri, 17 Mar 2023 18:27:55 +0100 Subject: [PATCH 15/24] chore: update jassub --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 73e48d813b..1c191c8640 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.5", + "jassub": "1.5.6", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -7296,7 +7296,7 @@ }, "node_modules/event-target-polyfill": { "version": "0.0.3", - "resolved": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5152219bdee9bc18ab0a1cccddab48a813c20b81", + "resolved": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#8becf1fbdd9ec547c1ea2097d2cb492f6e4d3984", "license": "MIT" }, "node_modules/eventemitter3": { @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.5.tgz", - "integrity": "sha512-PduISAKqGZYMRnaO7v9HKYaR2/q8U6tTQK2hKSJtUGucWcAM1kS4Rsqwf7qbtB++UmfQYxuG1fN4VixfiA2iOA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.6.tgz", + "integrity": "sha512-PRN+HmXF8c5pn0uGaSEwB0nDGNd8xLoa7HGNtH6/O9jMdbteup1cLbbEDYddJHx0JQnG5ouzAh7Vg+oum1+mKw==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -24491,8 +24491,8 @@ } }, "event-target-polyfill": { - "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5152219bdee9bc18ab0a1cccddab48a813c20b81", - "from": "event-target-polyfill@github:ThaUnknown/event-target-polyfill" + "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#8becf1fbdd9ec547c1ea2097d2cb492f6e4d3984", + "from": "event-target-polyfill@https://github.com/ThaUnknown/event-target-polyfill" }, "eventemitter3": { "version": "4.0.7", @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.5.tgz", - "integrity": "sha512-PduISAKqGZYMRnaO7v9HKYaR2/q8U6tTQK2hKSJtUGucWcAM1kS4Rsqwf7qbtB++UmfQYxuG1fN4VixfiA2iOA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.6.tgz", + "integrity": "sha512-PRN+HmXF8c5pn0uGaSEwB0nDGNd8xLoa7HGNtH6/O9jMdbteup1cLbbEDYddJHx0JQnG5ouzAh7Vg+oum1+mKw==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index c7f30f6a84..a9b3f9eff7 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.5", + "jassub": "1.5.6", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From fc231c1d96c36895221f4845d8c57730950171ac Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Sun, 19 Mar 2023 22:50:34 +0100 Subject: [PATCH 16/24] chore: update jassub --- package-lock.json | 16 ++++++++-------- package.json | 2 +- webpack.common.js | 1 - 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1c191c8640..a63788287a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.6", + "jassub": "1.5.7", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.6.tgz", - "integrity": "sha512-PRN+HmXF8c5pn0uGaSEwB0nDGNd8xLoa7HGNtH6/O9jMdbteup1cLbbEDYddJHx0JQnG5ouzAh7Vg+oum1+mKw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.7.tgz", + "integrity": "sha512-/gBotWw34MKccleaFTKFqfZ+LF+lXhLRB7iQzWNm5RAQixBkF2d4AMazpQUJ7jMRUSwwyvRyvZWV9rRah2n3og==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -24492,7 +24492,7 @@ }, "event-target-polyfill": { "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#8becf1fbdd9ec547c1ea2097d2cb492f6e4d3984", - "from": "event-target-polyfill@https://github.com/ThaUnknown/event-target-polyfill" + "from": "event-target-polyfill@github:ThaUnknown/event-target-polyfill" }, "eventemitter3": { "version": "4.0.7", @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.6.tgz", - "integrity": "sha512-PRN+HmXF8c5pn0uGaSEwB0nDGNd8xLoa7HGNtH6/O9jMdbteup1cLbbEDYddJHx0JQnG5ouzAh7Vg+oum1+mKw==", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.7.tgz", + "integrity": "sha512-/gBotWw34MKccleaFTKFqfZ+LF+lXhLRB7iQzWNm5RAQixBkF2d4AMazpQUJ7jMRUSwwyvRyvZWV9rRah2n3og==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index a9b3f9eff7..2db2e46ba6 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.6", + "jassub": "1.5.7", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", diff --git a/webpack.common.js b/webpack.common.js index 87f899040c..9b0d41cd0b 100644 --- a/webpack.common.js +++ b/webpack.common.js @@ -13,7 +13,6 @@ const Assets = [ const JassubWasm = [ 'jassub/dist/jassub-worker.wasm', - 'jassub/dist/jassub-worker-legacy.mem', 'jassub/dist/default.woff2' ]; From a17e6ae421a82d3078400805ffed844e4be88065 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 20 Mar 2023 14:55:02 +0100 Subject: [PATCH 17/24] chore: update deps --- package-lock.json | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5074c4a83e..2a0894c80f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.7", + "jassub": "1.5.8", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -7296,7 +7296,7 @@ }, "node_modules/event-target-polyfill": { "version": "0.0.3", - "resolved": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#8becf1fbdd9ec547c1ea2097d2cb492f6e4d3984", + "resolved": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5cb9a0ed6774af1b905b525964316911375726a7", "license": "MIT" }, "node_modules/eventemitter3": { @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.7.tgz", - "integrity": "sha512-/gBotWw34MKccleaFTKFqfZ+LF+lXhLRB7iQzWNm5RAQixBkF2d4AMazpQUJ7jMRUSwwyvRyvZWV9rRah2n3og==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.8.tgz", + "integrity": "sha512-zmckN4puuayx0uv12g6uMDtpdmGEqhV8o2qKnvzrkGD5/FVZ9ufcjwpy4R9c28/Lt4brmRXRBE2o9IXxl8h6rw==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -24491,8 +24491,8 @@ } }, "event-target-polyfill": { - "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#8becf1fbdd9ec547c1ea2097d2cb492f6e4d3984", - "from": "event-target-polyfill@github:ThaUnknown/event-target-polyfill" + "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5cb9a0ed6774af1b905b525964316911375726a7", + "from": "event-target-polyfill@https://github.com/ThaUnknown/event-target-polyfill" }, "eventemitter3": { "version": "4.0.7", @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.7.tgz", - "integrity": "sha512-/gBotWw34MKccleaFTKFqfZ+LF+lXhLRB7iQzWNm5RAQixBkF2d4AMazpQUJ7jMRUSwwyvRyvZWV9rRah2n3og==", + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.8.tgz", + "integrity": "sha512-zmckN4puuayx0uv12g6uMDtpdmGEqhV8o2qKnvzrkGD5/FVZ9ufcjwpy4R9c28/Lt4brmRXRBE2o9IXxl8h6rw==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index 581d5104e0..dee365876b 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.7", + "jassub": "1.5.8", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From 062ee9d5240795cd514b866cdff15136eed1ec8d Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 20 Mar 2023 16:05:13 +0100 Subject: [PATCH 18/24] chore: update jassub --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2a0894c80f..5e1468aff0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.8", + "jassub": "1.5.10", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.8.tgz", - "integrity": "sha512-zmckN4puuayx0uv12g6uMDtpdmGEqhV8o2qKnvzrkGD5/FVZ9ufcjwpy4R9c28/Lt4brmRXRBE2o9IXxl8h6rw==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.10.tgz", + "integrity": "sha512-G3I3ZeHd+vhGADyYM9WuhNJMK1zWjUJd6WsqFGkh2xpYv62os00vyKrIJm1RMXIYa3WnnYdyY+IE5tZAPFbrKQ==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -24492,7 +24492,7 @@ }, "event-target-polyfill": { "version": "git+ssh://git@github.com/ThaUnknown/event-target-polyfill.git#5cb9a0ed6774af1b905b525964316911375726a7", - "from": "event-target-polyfill@https://github.com/ThaUnknown/event-target-polyfill" + "from": "event-target-polyfill@github:ThaUnknown/event-target-polyfill" }, "eventemitter3": { "version": "4.0.7", @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.8", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.8.tgz", - "integrity": "sha512-zmckN4puuayx0uv12g6uMDtpdmGEqhV8o2qKnvzrkGD5/FVZ9ufcjwpy4R9c28/Lt4brmRXRBE2o9IXxl8h6rw==", + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.10.tgz", + "integrity": "sha512-G3I3ZeHd+vhGADyYM9WuhNJMK1zWjUJd6WsqFGkh2xpYv62os00vyKrIJm1RMXIYa3WnnYdyY+IE5tZAPFbrKQ==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index dee365876b..eb0f85f533 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.8", + "jassub": "1.5.10", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From d352c6958cf141c18dbd4d97fb074d58531e9ae4 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 23 Mar 2023 15:22:32 +0100 Subject: [PATCH 19/24] chore: update JASSUB --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e1468aff0..fd6a196a77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.10", + "jassub": "1.5.11", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.10.tgz", - "integrity": "sha512-G3I3ZeHd+vhGADyYM9WuhNJMK1zWjUJd6WsqFGkh2xpYv62os00vyKrIJm1RMXIYa3WnnYdyY+IE5tZAPFbrKQ==", + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.11.tgz", + "integrity": "sha512-wkmoTYSvbS0j95FH2uh0opwK/CQR/3b0oZaeSPxcMFsZ88Ss5LeLYgtgs3yXy/3lE6/prZYzsKfeOdL01iqOBA==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.10.tgz", - "integrity": "sha512-G3I3ZeHd+vhGADyYM9WuhNJMK1zWjUJd6WsqFGkh2xpYv62os00vyKrIJm1RMXIYa3WnnYdyY+IE5tZAPFbrKQ==", + "version": "1.5.11", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.11.tgz", + "integrity": "sha512-wkmoTYSvbS0j95FH2uh0opwK/CQR/3b0oZaeSPxcMFsZ88Ss5LeLYgtgs3yXy/3lE6/prZYzsKfeOdL01iqOBA==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index eb0f85f533..c2331cba92 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.10", + "jassub": "1.5.11", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From 5d32eb8058066164229002f15b131f86748f0e43 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:48:03 +0100 Subject: [PATCH 20/24] fix: exclude onDemandRender from webOS 2 reports getVideoPlaybackQuality as functional, but isn't --- src/plugins/htmlVideoPlayer/plugin.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index ab38df6d5d..2c48b40878 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1281,7 +1281,8 @@ function tryRemoveElement(elem) { asyncRender: true, // firefox implements offscreen canvas, but not according to spec which causes errors offscreenRender: !browser.firefox, - onDemandRender: true, + // RVFC is polyfilled everywhere, but webOS 2 reports polyfill API's as functional even tho they aren't + onDemandRender: browser.web0sVersion !== 2, useLocalFonts: true, dropAllAnimations: false, libassMemoryLimit: 40, From a99385d1905b70123f5217135df142dd90b0e743 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Mon, 27 Mar 2023 12:58:33 +0200 Subject: [PATCH 21/24] chore: update JASSUB --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd6a196a77..bb404ee2e7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,7 +32,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.11", + "jassub": "1.5.12", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", @@ -9653,9 +9653,9 @@ } }, "node_modules/jassub": { - "version": "1.5.11", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.11.tgz", - "integrity": "sha512-wkmoTYSvbS0j95FH2uh0opwK/CQR/3b0oZaeSPxcMFsZ88Ss5LeLYgtgs3yXy/3lE6/prZYzsKfeOdL01iqOBA==", + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.12.tgz", + "integrity": "sha512-CJiuNCXMMGqfmVVlaDyxqaKfOy3RIHW4HBwVWvbq8pl/d1/y1fgTarfR31whUUupHZCe7Tfq8XB7WDgdu6IHaA==", "dependencies": { "rvfc-polyfill": "^1.0.4" } @@ -26245,9 +26245,9 @@ "dev": true }, "jassub": { - "version": "1.5.11", - "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.11.tgz", - "integrity": "sha512-wkmoTYSvbS0j95FH2uh0opwK/CQR/3b0oZaeSPxcMFsZ88Ss5LeLYgtgs3yXy/3lE6/prZYzsKfeOdL01iqOBA==", + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/jassub/-/jassub-1.5.12.tgz", + "integrity": "sha512-CJiuNCXMMGqfmVVlaDyxqaKfOy3RIHW4HBwVWvbq8pl/d1/y1fgTarfR31whUUupHZCe7Tfq8XB7WDgdu6IHaA==", "requires": { "rvfc-polyfill": "^1.0.4" } diff --git a/package.json b/package.json index c2331cba92..3f4cadfbc2 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "history": "5.3.0", "hls.js": "1.3.4", "intersection-observer": "0.12.2", - "jassub": "1.5.11", + "jassub": "1.5.12", "jellyfin-apiclient": "1.10.0", "jquery": "3.6.3", "jstree": "3.3.15", From 1cfd4f6b3eaaefdb470dfa09b0ee7f63c359fccc Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Sun, 2 Apr 2023 23:06:03 +0200 Subject: [PATCH 22/24] chore: fix new eslint styles --- src/plugins/htmlVideoPlayer/plugin.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 3817988d65..9710e77daa 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -1269,7 +1269,7 @@ function tryRemoveElement(elem) { subUrl: getTextTrackUrl(track, item), fonts: avaliableFonts, fallbackFont: 'liberation sans', - availableFonts: {'liberation sans': `${appRouter.baseUrl()}/default.woff2`}, + availableFonts: { 'liberation sans': `${appRouter.baseUrl()}/default.woff2` }, // Disabled eslint compat, but is safe as corejs3 polyfills URL // eslint-disable-next-line compat/compat workerUrl: new URL('jassub/dist/jassub-worker.js', import.meta.url), From f4aa6e1737bef72375b1320f0489bc965fdc9802 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Tue, 18 Apr 2023 21:13:04 +0200 Subject: [PATCH 23/24] chore: rename renderer var --- src/plugins/htmlVideoPlayer/plugin.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 9710e77daa..6b5d9886ed 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -209,7 +209,7 @@ function tryRemoveElement(elem) { /** * @type {any | null | undefined} */ - #currentJASSUB; + #currentAssRenderer; /** * @type {null | undefined} */ @@ -585,9 +585,9 @@ function tryRemoveElement(elem) { const offsetValue = parseFloat(offset); // if .ass currently rendering - if (this.#currentJASSUB) { + if (this.#currentAssRenderer) { this.updateCurrentTrackOffset(offsetValue); - this.#currentJASSUB.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; + this.#currentAssRenderer.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + offsetValue; } else { const trackElements = this.getTextTracks(); // if .vtt currently rendering @@ -978,8 +978,8 @@ function tryRemoveElement(elem) { loading.hide(); seekOnPlaybackStart(this, e.target, this._currentPlayOptions.playerStartPositionTicks, () => { - if (this.#currentJASSUB) { - this.#currentJASSUB.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + this.#currentTrackOffset; + if (this.#currentAssRenderer) { + this.#currentAssRenderer.timeOffset = (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 + this.#currentTrackOffset; } }); @@ -1167,11 +1167,11 @@ function tryRemoveElement(elem) { this.#currentClock = null; this._currentAspectRatio = null; - const jassub = this.#currentJASSUB; + const jassub = this.#currentAssRenderer; if (jassub) { jassub.destroy(); } - this.#currentJASSUB = null; + this.#currentAssRenderer = null; const renderer = this.#currentAssRenderer; if (renderer) { @@ -1305,8 +1305,8 @@ function tryRemoveElement(elem) { options.legacyWorkerUrl = legacyWorkerUrl; const cleanup = () => { - this.#currentJASSUB.destroy(); - this.#currentJASSUB = null; + this.#currentAssRenderer.destroy(); + this.#currentAssRenderer = null; onErrorInternal(this, 'mediadecodeerror'); }; @@ -1318,12 +1318,12 @@ function tryRemoveElement(elem) { }); avaliableFonts.push(fontUrl); }); - this.#currentJASSUB = new JASSUB(options); - this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); + this.#currentAssRenderer = new JASSUB(options); + this.#currentAssRenderer.addEventListener('error', cleanup, { once: true }); }); } else { - this.#currentJASSUB = new JASSUB(options); - this.#currentJASSUB.addEventListener('error', cleanup, { once: true }); + this.#currentAssRenderer = new JASSUB(options); + this.#currentAssRenderer.addEventListener('error', cleanup, { once: true }); } }); }); From aa5bac5af9ae7de02bc5b66ede3c871032e69343 Mon Sep 17 00:00:00 2001 From: ThaUnknown <6506529+ThaUnknown@users.noreply.github.com> Date: Tue, 18 Apr 2023 21:40:32 +0200 Subject: [PATCH 24/24] fix: remove dead code --- src/plugins/htmlVideoPlayer/plugin.js | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/plugins/htmlVideoPlayer/plugin.js b/src/plugins/htmlVideoPlayer/plugin.js index 6b5d9886ed..ad39f19ea4 100644 --- a/src/plugins/htmlVideoPlayer/plugin.js +++ b/src/plugins/htmlVideoPlayer/plugin.js @@ -213,10 +213,6 @@ function tryRemoveElement(elem) { /** * @type {null | undefined} */ - #currentAssRenderer; - /** - * @type {number | undefined} - */ #customTrackIndex; /** * @type {number | undefined} @@ -1172,12 +1168,6 @@ function tryRemoveElement(elem) { jassub.destroy(); } this.#currentAssRenderer = null; - - const renderer = this.#currentAssRenderer; - if (renderer) { - renderer.setEnabled(false); - } - this.#currentAssRenderer = null; } /**