1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Updated libpgs to add web-worker support for PGS rendering.

This commit is contained in:
David Schulte 2024-06-13 21:29:52 +02:00
parent a6732739c5
commit c5d3b081cf
4 changed files with 11 additions and 26 deletions

31
package-lock.json generated
View file

@ -45,7 +45,7 @@
"jquery": "3.7.1", "jquery": "3.7.1",
"jstree": "3.3.16", "jstree": "3.3.16",
"libarchive.js": "2.0.2", "libarchive.js": "2.0.2",
"libpgs": "0.2.1", "libpgs": "0.4.1",
"lodash-es": "4.17.21", "lodash-es": "4.17.21",
"markdown-it": "14.1.0", "markdown-it": "14.1.0",
"material-design-icons-iconfont": "6.7.0", "material-design-icons-iconfont": "6.7.0",
@ -139,23 +139,6 @@
"sass-embedded": "1.77.8" "sass-embedded": "1.77.8"
} }
}, },
"../libpgs-js": {
"name": "libpgs",
"version": "0.2.1",
"extraneous": true,
"license": "MIT",
"devDependencies": {
"@tsconfig/recommended": "^1.0.6",
"@types/jest": "^29.5.12",
"jest": "^29.7.0",
"ts-jest": "^29.1.4",
"ts-loader": "^9.5.1",
"ts-node": "^10.9.2",
"typescript": "^5.4.5",
"webpack": "^5.91.0",
"webpack-cli": "^5.1.4"
}
},
"node_modules/@aashutoshrathi/word-wrap": { "node_modules/@aashutoshrathi/word-wrap": {
"version": "1.2.6", "version": "1.2.6",
"resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
@ -14990,9 +14973,9 @@
} }
}, },
"node_modules/libpgs": { "node_modules/libpgs": {
"version": "0.2.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/libpgs/-/libpgs-0.2.1.tgz", "resolved": "https://registry.npmjs.org/libpgs/-/libpgs-0.4.1.tgz",
"integrity": "sha512-4aYbQZ7UavFTFCmr1uqTJpQWjtbt1mefvjYWJl4nq3uPVWKp5L/GeGrVWPinoNd2fAXAzuMmvjgKwuYaGff2BQ==", "integrity": "sha512-I4mIGz7Lf23xy/8mwSx0qlStz0oZFCz9dLC1xXNaqv5MbVdFhZWE+OMhVBLGjfVkjugyboM9XJ+4bCSibAIGuA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/lie": { "node_modules/lie": {
@ -36554,9 +36537,9 @@
} }
}, },
"libpgs": { "libpgs": {
"version": "0.2.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/libpgs/-/libpgs-0.2.1.tgz", "resolved": "https://registry.npmjs.org/libpgs/-/libpgs-0.4.1.tgz",
"integrity": "sha512-4aYbQZ7UavFTFCmr1uqTJpQWjtbt1mefvjYWJl4nq3uPVWKp5L/GeGrVWPinoNd2fAXAzuMmvjgKwuYaGff2BQ==" "integrity": "sha512-I4mIGz7Lf23xy/8mwSx0qlStz0oZFCz9dLC1xXNaqv5MbVdFhZWE+OMhVBLGjfVkjugyboM9XJ+4bCSibAIGuA=="
}, },
"lie": { "lie": {
"version": "3.1.1", "version": "3.1.1",

View file

@ -106,7 +106,7 @@
"jquery": "3.7.1", "jquery": "3.7.1",
"jstree": "3.3.16", "jstree": "3.3.16",
"libarchive.js": "2.0.2", "libarchive.js": "2.0.2",
"libpgs": "0.2.1", "libpgs": "0.4.1",
"lodash-es": "4.17.21", "lodash-es": "4.17.21",
"markdown-it": "14.1.0", "markdown-it": "14.1.0",
"material-design-icons-iconfont": "6.7.0", "material-design-icons-iconfont": "6.7.0",

View file

@ -1337,6 +1337,7 @@ export class HtmlVideoPlayer {
const options = { const options = {
video: videoElement, video: videoElement,
subUrl: getTextTrackUrl(track, item), subUrl: getTextTrackUrl(track, item),
workerUrl: `${appRouter.baseUrl()}/libraries/libpgs.worker.js`,
timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000 timeOffset: (this._currentPlayOptions.transcodingOffsetTicks || 0) / 10000000
}; };
this.#currentPgsRenderer = new libpgs.PgsRenderer(options); this.#currentPgsRenderer = new libpgs.PgsRenderer(options);

View file

@ -15,7 +15,8 @@ const Assets = [
'@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.js', '@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.js',
'@jellyfin/libass-wasm/dist/js/subtitles-octopus-worker.wasm', '@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.js',
'pdfjs-dist/build/pdf.worker.js' 'pdfjs-dist/build/pdf.worker.js',
'libpgs/dist/libpgs.worker.js'
]; ];
const DEV_MODE = process.env.NODE_ENV !== 'production'; const DEV_MODE = process.env.NODE_ENV !== 'production';