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' ];