jassub 2.3.3 → 2.4.0
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/README.md +3 -3
- package/dist/worker/renderers/2d-renderer.d.ts +16 -0
- package/dist/worker/renderers/2d-renderer.js +71 -0
- package/dist/worker/renderers/2d-renderer.js.map +1 -0
- package/dist/worker/renderers/webgl1-renderer.d.ts +38 -0
- package/dist/worker/renderers/webgl1-renderer.js +363 -0
- package/dist/worker/renderers/webgl1-renderer.js.map +1 -0
- package/dist/worker/renderers/webgl2-renderer.d.ts +32 -0
- package/dist/worker/renderers/webgl2-renderer.js +361 -0
- package/dist/worker/renderers/webgl2-renderer.js.map +1 -0
- package/dist/worker/renderers/webgpu-renderer.d.ts +50 -0
- package/dist/worker/renderers/webgpu-renderer.js +404 -0
- package/dist/worker/renderers/webgpu-renderer.js.map +1 -0
- package/dist/worker/util.d.ts +23 -0
- package/dist/worker/util.js +57 -0
- package/dist/worker/util.js.map +1 -1
- package/dist/worker/worker.d.ts +4 -2
- package/dist/worker/worker.js +19 -5
- package/dist/worker/worker.js.map +1 -1
- package/package.json +1 -1
- package/src/worker/renderers/2d-renderer.ts +81 -0
- package/src/worker/renderers/webgl1-renderer.ts +445 -0
- package/src/worker/{webgl-renderer.ts → renderers/webgl2-renderer.ts} +2 -65
- package/src/worker/{webgpu-renderer.ts → renderers/webgpu-renderer.ts} +1 -1
- package/src/worker/util.ts +64 -0
- package/src/worker/worker.ts +17 -5
package/src/worker/worker.ts
CHANGED
|
@@ -5,8 +5,10 @@ import { queryRemoteFonts } from 'lfa-ponyfill'
|
|
|
5
5
|
|
|
6
6
|
import WASM from '../wasm/jassub-worker.js'
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { Canvas2DRenderer } from './renderers/2d-renderer.ts'
|
|
9
|
+
import { WebGL1Renderer } from './renderers/webgl1-renderer.ts'
|
|
10
|
+
import { WebGL2Renderer } from './renderers/webgl2-renderer.ts'
|
|
11
|
+
import { _applyKeys, _fetch, fetchtext, LIBASS_YCBCR_MAP, THREAD_COUNT, WEIGHT_MAP, type ASSEvent, type ASSImage, type ASSStyle, type WeightValue } from './util.ts'
|
|
10
12
|
|
|
11
13
|
import type { JASSUB, MainModule } from '../wasm/types.d.ts'
|
|
12
14
|
// import { WebGPURenderer } from './webgpu-renderer'
|
|
@@ -38,7 +40,7 @@ export class ASSRenderer {
|
|
|
38
40
|
_subtitleColorSpace?: 'BT601' | 'BT709' | 'SMPTE240M' | 'FCC' | null
|
|
39
41
|
_videoColorSpace?: 'BT709' | 'BT601'
|
|
40
42
|
_malloc!: (size: number) => number
|
|
41
|
-
_gpurender
|
|
43
|
+
_gpurender: WebGL2Renderer | WebGL1Renderer | Canvas2DRenderer
|
|
42
44
|
|
|
43
45
|
debug = false
|
|
44
46
|
|
|
@@ -57,7 +59,7 @@ export class ASSRenderer {
|
|
|
57
59
|
globalThis.fetch = _ => _fetch(data.wasmUrl)
|
|
58
60
|
|
|
59
61
|
// TODO: abslink doesnt support transferables yet
|
|
60
|
-
const handleMessage =
|
|
62
|
+
const handleMessage = ({ data }: MessageEvent) => {
|
|
61
63
|
if (data.name === 'offscreenCanvas') {
|
|
62
64
|
// await this._ready // needed for webGPU
|
|
63
65
|
this._offCanvas = data.ctrl
|
|
@@ -70,6 +72,16 @@ export class ASSRenderer {
|
|
|
70
72
|
// const devicePromise = navigator.gpu?.requestAdapter({
|
|
71
73
|
// powerPreference: 'high-performance'
|
|
72
74
|
// }).then(adapter => adapter?.requestDevice())
|
|
75
|
+
try {
|
|
76
|
+
const testCanvas = new OffscreenCanvas(1, 1)
|
|
77
|
+
if (testCanvas.getContext('webgl2')) {
|
|
78
|
+
this._gpurender = new WebGL2Renderer()
|
|
79
|
+
} else {
|
|
80
|
+
this._gpurender = testCanvas.getContext('webgl') ? new WebGL1Renderer() : new Canvas2DRenderer()
|
|
81
|
+
}
|
|
82
|
+
} catch {
|
|
83
|
+
this._gpurender = new Canvas2DRenderer()
|
|
84
|
+
}
|
|
73
85
|
|
|
74
86
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
75
87
|
this._ready = (WASM({ __url: data.wasmUrl, __out: (log: string) => this._log(log) }) as Promise<MainModule>).then(async ({ _malloc, JASSUB }) => {
|
|
@@ -78,7 +90,7 @@ export class ASSRenderer {
|
|
|
78
90
|
this._wasm = new JASSUB(data.width, data.height, this._defaultFont)
|
|
79
91
|
// Firefox seems to have issues with multithreading in workers
|
|
80
92
|
// a worker inside a worker does not recieve messages properly
|
|
81
|
-
this._wasm.setThreads(
|
|
93
|
+
this._wasm.setThreads(THREAD_COUNT)
|
|
82
94
|
|
|
83
95
|
this._loadInitialFonts(data.fonts)
|
|
84
96
|
|