jassub 2.5.0 → 2.5.2

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.
@@ -6,17 +6,19 @@ import WASM from '../wasm/jassub-worker.js';
6
6
  import { Canvas2DRenderer } from "./renderers/2d-renderer.js";
7
7
  import { WebGL1Renderer } from "./renderers/webgl1-renderer.js";
8
8
  import { WebGL2Renderer } from "./renderers/webgl2-renderer.js";
9
- import { _applyKeys, _fetch, fetchtext, LIBASS_YCBCR_MAP, THREAD_COUNT, WEIGHT_MAP } from "./util.js";
9
+ import { _fetch, fetchtext, LIBASS_YCBCR_MAP, THREAD_COUNT, WEIGHT_MAP } from "./util.js";
10
+ const constructor = Symbol.for('constructor');
10
11
  export class ASSRenderer {
11
- _offCanvas;
12
12
  _wasm;
13
13
  _subtitleColorSpace;
14
14
  _videoColorSpace;
15
15
  _malloc;
16
16
  _gpurender;
17
17
  debug = false;
18
- _ready;
19
- constructor(data, getFont) {
18
+ constructor(...args) {
19
+ return this[constructor](...args);
20
+ }
21
+ async [constructor](data, getFont, ctrl) {
20
22
  // remove case sensitivity
21
23
  this._availableFonts = Object.fromEntries(Object.entries(data.availableFonts).map(([k, v]) => [k.trim().toLowerCase(), v]));
22
24
  this.debug = data.debug;
@@ -26,16 +28,6 @@ export class ASSRenderer {
26
28
  // hack, we want custom WASM URLs
27
29
  const _fetch = globalThis.fetch;
28
30
  globalThis.fetch = _ => _fetch(data.wasmUrl);
29
- // TODO: abslink doesnt support transferables yet
30
- const handleMessage = ({ data }) => {
31
- if (data.name === 'offscreenCanvas') {
32
- // await this._ready // needed for webGPU
33
- this._offCanvas = data.ctrl;
34
- this._gpurender.setCanvas(this._offCanvas);
35
- removeEventListener('message', handleMessage);
36
- }
37
- };
38
- addEventListener('message', handleMessage);
39
31
  // const devicePromise = navigator.gpu?.requestAdapter({
40
32
  // powerPreference: 'high-performance'
41
33
  // }).then(adapter => adapter?.requestDevice())
@@ -51,27 +43,24 @@ export class ASSRenderer {
51
43
  catch {
52
44
  this._gpurender = new Canvas2DRenderer();
53
45
  }
46
+ this._gpurender.setCanvas(ctrl);
47
+ this._loadedInitialFonts = !data.fonts.length;
54
48
  // eslint-disable-next-line @typescript-eslint/unbound-method
55
- this._ready = WASM({ __url: data.wasmUrl, __out: (log) => this._log(log) }).then(async ({ _malloc, JASSUB }) => {
56
- this._malloc = _malloc;
57
- this._wasm = new JASSUB(data.width, data.height, this._defaultFont);
58
- // Firefox seems to have issues with multithreading in workers
59
- // a worker inside a worker does not recieve messages properly
60
- this._wasm.setThreads(THREAD_COUNT);
61
- this._loadInitialFonts(data.fonts);
62
- this._wasm.createTrackMem(data.subContent ?? await fetchtext(data.subUrl));
63
- this._subtitleColorSpace = LIBASS_YCBCR_MAP[this._wasm.trackColorSpace];
64
- if (data.libassMemoryLimit > 0 || data.libassGlyphLimit > 0) {
65
- this._wasm.setMemoryLimits(data.libassGlyphLimit || 0, data.libassMemoryLimit || 0);
66
- }
67
- // const device = await devicePromise
68
- // this._gpurender = device ? new WebGPURenderer(device) : new WebGL2Renderer()
69
- // if (this._offCanvas) this._gpurender.setCanvas(this._offCanvas, this._offCanvas.width, this._offCanvas.height)
70
- this._checkColorSpace();
71
- });
72
- }
73
- ready() {
74
- return this._ready;
49
+ const { _malloc, JASSUB } = await WASM({ __url: data.wasmUrl, __out: (log) => this._log(log) });
50
+ this._malloc = _malloc;
51
+ this._wasm = new JASSUB(data.width, data.height, this._defaultFont);
52
+ // Firefox seems to have issues with multithreading in workers
53
+ // a worker inside a worker does not recieve messages properly
54
+ this._wasm.setThreads(THREAD_COUNT);
55
+ if (!this._loadedInitialFonts)
56
+ await this._loadInitialFonts(data.fonts);
57
+ this._wasm.createTrackMem(data.subContent ?? await fetchtext(data.subUrl));
58
+ this._subtitleColorSpace = LIBASS_YCBCR_MAP[this._wasm.trackColorSpace];
59
+ if (data.libassMemoryLimit > 0 || data.libassGlyphLimit > 0) {
60
+ this._wasm.setMemoryLimits(data.libassGlyphLimit || 0, data.libassMemoryLimit || 0);
61
+ }
62
+ this._checkColorSpace();
63
+ return this;
75
64
  }
76
65
  // this passes a string of track data to libass, be it styles, events etc, which it then processes and adds to the track
77
66
  // useful for streaming subtitles
@@ -79,44 +68,31 @@ export class ASSRenderer {
79
68
  this._wasm.processData(events);
80
69
  }
81
70
  createEvent(event) {
82
- _applyKeys(event, this._wasm.getEvent(this._wasm.allocEvent()));
71
+ this._wasm.createEvent(event);
83
72
  }
84
73
  getEvents() {
85
- const events = [];
86
- for (let i = 0; i < this._wasm.getEventCount(); i++) {
87
- const { Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect } = this._wasm.getEvent(i);
88
- events.push({ Start, Duration, ReadOrder, Layer, Style, MarginL, MarginR, MarginV, Name, Text, Effect });
89
- }
90
- return events;
74
+ return this._wasm.getEvents();
91
75
  }
92
76
  setEvent(event, index) {
93
- _applyKeys(event, this._wasm.getEvent(index));
77
+ this._wasm.setEvent(index, event);
94
78
  }
95
79
  removeEvent(index) {
96
80
  this._wasm.removeEvent(index);
97
81
  }
98
82
  createStyle(style) {
99
- const alloc = this._wasm.getStyle(this._wasm.allocStyle());
100
- _applyKeys(style, alloc);
101
- return alloc;
83
+ this._wasm.createStyle(style);
102
84
  }
103
85
  getStyles() {
104
- const styles = [];
105
- for (let i = 0; i < this._wasm.getStyleCount(); i++) {
106
- // eslint-disable-next-line @typescript-eslint/naming-convention
107
- const { Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify } = this._wasm.getStyle(i);
108
- styles.push({ Name, FontName, FontSize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding, treat_fontname_as_pattern, Blur, Justify });
109
- }
110
- return styles;
86
+ return this._wasm.getStyles();
111
87
  }
112
88
  setStyle(style, index) {
113
- _applyKeys(style, this._wasm.getStyle(index));
89
+ this._wasm.setStyle(index, style);
114
90
  }
115
91
  removeStyle(index) {
116
92
  this._wasm.removeStyle(index);
117
93
  }
118
94
  styleOverride(style) {
119
- this._wasm.styleOverride(this.createStyle(style));
95
+ this._wasm.styleOverride(style);
120
96
  }
121
97
  disableStyleOverride() {
122
98
  this._wasm.disableStyleOverride();
@@ -150,7 +126,7 @@ export class ASSRenderer {
150
126
  }
151
127
  async addFonts(fontOrURLs) {
152
128
  if (!fontOrURLs.length)
153
- return;
129
+ return false;
154
130
  const strings = [];
155
131
  const uint8s = [];
156
132
  for (const fontOrURL of fontOrURLs) {
@@ -165,7 +141,7 @@ export class ASSRenderer {
165
141
  this._allocFonts(uint8s);
166
142
  // this isn't batched like uint8s because software like jellyfin exists, which loads 50+ fonts over the network which takes time...
167
143
  // is connection exhaustion a concern here?
168
- return await Promise.allSettled(strings.map(url => this._asyncWrite(url)));
144
+ return !!await Promise.allSettled(strings.map(url => this._asyncWrite(url)));
169
145
  }
170
146
  // we don't want to run _findAvailableFont before initial fonts are loaded
171
147
  // because it could duplicate fonts
@@ -173,6 +149,7 @@ export class ASSRenderer {
173
149
  async _loadInitialFonts(fontOrURLs) {
174
150
  await this.addFonts(fontOrURLs);
175
151
  this._loadedInitialFonts = true;
152
+ this._wasm.reloadFonts();
176
153
  }
177
154
  _getFont;
178
155
  _availableFonts = {};
@@ -240,7 +217,6 @@ export class ASSRenderer {
240
217
  this._gpurender.resizeCanvas(width, height);
241
218
  }
242
219
  async [finalizer]() {
243
- await this._ready;
244
220
  this._wasm.quitLibrary();
245
221
  this._gpurender.destroy();
246
222
  // @ts-expect-error force GC
@@ -250,25 +226,10 @@ export class ASSRenderer {
250
226
  this._availableFonts = {};
251
227
  }
252
228
  _draw(time, repaint = false) {
253
- if (!this._offCanvas || !this._gpurender)
254
- return;
255
- const result = this._wasm.rawRender(time, Number(repaint));
256
- if (this._wasm.changed === 0 && !repaint)
229
+ const images = this._wasm.rawRender(time, Number(repaint));
230
+ if (!images)
257
231
  return;
258
- const bitmaps = [];
259
- for (let image = result, i = 0; i < this._wasm.count; image = image.next, ++i) {
260
- // @ts-expect-error internal emsc types
261
- bitmaps.push({
262
- bitmap: image.bitmap,
263
- color: image.color,
264
- dst_x: image.dst_x,
265
- dst_y: image.dst_y,
266
- h: image.h,
267
- stride: image.stride,
268
- w: image.w
269
- });
270
- }
271
- this._gpurender.render(bitmaps, self.HEAPU8RAW);
232
+ this._gpurender.render(images, self.HEAPU8RAW);
272
233
  }
273
234
  _setColorSpace(videoColorSpace) {
274
235
  if (videoColorSpace === 'RGB')
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/worker/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jassub",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "The Fastest JavaScript SSA/ASS Subtitle Renderer For Browsers",
5
5
  "main": "dist/jassub.js",
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "homepage": "https://github.com/ThaUnknown/jassub",
42
42
  "dependencies": {
43
- "abslink": "^1.1.6",
43
+ "abslink": "^1.2.2",
44
44
  "lfa-ponyfill": "^1.1.0",
45
45
  "rvfc-polyfill": "^1.0.8",
46
46
  "throughput": "^1.0.2"
package/src/jassub.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import 'rvfc-polyfill'
2
2
 
3
- import { proxy, releaseProxy } from 'abslink'
3
+ import { proxy, releaseProxy, transfer } from 'abslink'
4
4
  import { wrap } from 'abslink/w3c'
5
5
 
6
6
  import { Debug } from './debug.ts'
@@ -115,8 +115,8 @@ export default class JASSUB {
115
115
  availableFonts['liberation sans'] = new URL('./default.woff2', import.meta.url).href
116
116
  }
117
117
 
118
- this.ready = (async () => {
119
- this.renderer = await new Renderer({
118
+ this.ready = new Renderer(
119
+ {
120
120
  wasmUrl: JASSUB._supportsSIMD ? modern : normal,
121
121
  width: ctrl.width,
122
122
  height: ctrl.height,
@@ -129,17 +129,18 @@ export default class JASSUB {
129
129
  libassMemoryLimit: opts.libassMemoryLimit ?? 0,
130
130
  libassGlyphLimit: opts.libassGlyphLimit ?? 0,
131
131
  queryFonts: opts.queryFonts ?? 'local'
132
- }, proxy(font => this._getLocalFont(font))) as unknown as Remote<ASSRenderer>
133
-
134
- await this.renderer.ready()
135
- })()
132
+ },
133
+ proxy(font => this._getLocalFont(font)),
134
+ transfer(ctrl, [ctrl])
135
+ ).then((renderer: unknown) => {
136
+ this.renderer = renderer as Remote<ASSRenderer>
137
+ })
136
138
 
137
139
  if (this._video) {
138
140
  this.setVideo(this._video)
139
141
  } else {
140
142
  this._ro.observe(this._canvas)
141
143
  }
142
- this._worker.postMessage({ name: 'offscreenCanvas', ctrl }, [ctrl])
143
144
  }
144
145
 
145
146
  static _supportsSIMD?: boolean
@@ -189,21 +190,21 @@ export default class JASSUB {
189
190
  if (this._lastDemandTime) await this._demandRender(forceRepaint)
190
191
  }
191
192
 
192
- _getElementBoundingBox (el: Element, videoWidth: number, videoHeight: number) {
193
- const { width, height, x, y } = el.getBoundingClientRect()
193
+ _getElementBoundingBox (el: HTMLElement, videoWidth: number, videoHeight: number) {
194
+ const { clientWidth, clientHeight, offsetLeft, offsetTop } = el
194
195
 
195
196
  const videoRatio = videoWidth / videoHeight
196
- const elementRatio = width / height
197
+ const elementRatio = clientWidth / clientHeight
197
198
 
198
199
  if (elementRatio > videoRatio) {
199
- videoHeight = height
200
- videoWidth = height * videoRatio
200
+ videoHeight = clientHeight
201
+ videoWidth = clientHeight * videoRatio
201
202
  } else {
202
- videoHeight = width / videoRatio
203
- videoWidth = width
203
+ videoHeight = clientWidth / videoRatio
204
+ videoWidth = clientWidth
204
205
  }
205
206
 
206
- return { x: x + (width - videoWidth) / 2, y: y + (height - videoHeight) / 2, width: videoWidth, height: videoHeight }
207
+ return { x: offsetLeft + (clientWidth - videoWidth) / 2, y: offsetTop + (clientHeight - videoHeight) / 2, width: videoWidth, height: videoHeight }
207
208
  }
208
209
 
209
210
  _computeRenderSize (width = 0, height = 0) {
@@ -324,6 +325,7 @@ export default class JASSUB {
324
325
  this._destroyed = true
325
326
  this._canvas.remove()
326
327
  this._removeListeners()
328
+ await this.ready
327
329
  await this.renderer?.[releaseProxy]()
328
330
  this._worker.terminate()
329
331
  }
@@ -1,6 +1,7 @@
1
1
  // TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
2
2
  interface WasmModule {
3
3
  __ZdlPvm(_0: number, _1: number): void;
4
+ __Znwm(_0: number): number;
4
5
  _malloc(_0: number): number;
5
6
  _calloc(_0: number, _1: number): number;
6
7
  _emscripten_builtin_free(_0: number): void;
@@ -10,10 +11,9 @@ interface WasmModule {
10
11
  __ZdaPv(_0: number): void;
11
12
  __ZdaPvm(_0: number, _1: number): void;
12
13
  __ZdlPv(_0: number): void;
13
- __Znaj(_0: number): number;
14
- __ZnajSt11align_val_t(_0: number, _1: number): number;
15
- __Znwj(_0: number): number;
16
- __ZnwjSt11align_val_t(_0: number, _1: number): number;
14
+ __Znam(_0: number): number;
15
+ __ZnamSt11align_val_t(_0: number, _1: number): number;
16
+ __ZnwmSt11align_val_t(_0: number, _1: number): number;
17
17
  ___libc_calloc(_0: number, _1: number): number;
18
18
  ___libc_realloc(_0: number, _1: number): number;
19
19
  _emscripten_builtin_calloc(_0: number, _1: number): number;
@@ -33,101 +33,37 @@ export interface ClassHandle {
33
33
  [Symbol.dispose](): void;
34
34
  clone(): this;
35
35
  }
36
- export interface ASS_Image extends ClassHandle {
37
- readonly next: ASS_Image;
38
- w: number;
39
- h: number;
40
- dst_x: number;
41
- dst_y: number;
42
- stride: number;
43
- color: number;
44
- readonly bitmap: number;
45
- }
46
-
47
- export interface ASS_Style extends ClassHandle {
48
- Bold: number;
49
- Italic: number;
50
- Underline: number;
51
- StrikeOut: number;
52
- BorderStyle: number;
53
- Alignment: number;
54
- MarginL: number;
55
- MarginR: number;
56
- MarginV: number;
57
- Encoding: number;
58
- treat_fontname_as_pattern: number;
59
- Justify: number;
60
- PrimaryColour: number;
61
- SecondaryColour: number;
62
- OutlineColour: number;
63
- BackColour: number;
64
- FontSize: number;
65
- ScaleX: number;
66
- ScaleY: number;
67
- Spacing: number;
68
- Angle: number;
69
- Outline: number;
70
- Shadow: number;
71
- Blur: number;
72
- get Name(): string;
73
- set Name(value: EmbindString);
74
- get FontName(): string;
75
- set FontName(value: EmbindString);
76
- }
77
-
78
- export interface ASS_Event extends ClassHandle {
79
- ReadOrder: number;
80
- Layer: number;
81
- Style: number;
82
- MarginL: number;
83
- MarginR: number;
84
- MarginV: number;
85
- Start: number;
86
- Duration: number;
87
- get Name(): string;
88
- set Name(value: EmbindString);
89
- get Effect(): string;
90
- set Effect(value: EmbindString);
91
- get Text(): string;
92
- set Text(value: EmbindString);
93
- }
94
-
95
36
  export interface JASSUB extends ClassHandle {
96
37
  trackColorSpace: number;
97
- changed: number;
98
- count: number;
99
38
  removeTrack(): void;
100
39
  quitLibrary(): void;
101
40
  reloadFonts(): void;
102
41
  removeAllEvents(): void;
103
- styleOverride(_0: ASS_Style): void;
104
42
  disableStyleOverride(): void;
105
43
  setLogLevel(_0: number): void;
106
44
  resizeCanvas(_0: number, _1: number, _2: number, _3: number): void;
107
45
  setMargin(_0: number, _1: number, _2: number, _3: number): void;
108
- getEventCount(): number;
109
- allocEvent(): number;
110
- allocStyle(): number;
111
46
  removeEvent(_0: number): void;
112
- getStyleCount(): number;
113
47
  removeStyle(_0: number): void;
114
48
  setMemoryLimits(_0: number, _1: number): void;
115
- getEvent(_0: number): ASS_Event | null;
116
- getStyle(_0: number): ASS_Style | null;
117
49
  setThreads(_0: number): number;
118
- rawRender(_0: number, _1: number): ASS_Image | null;
119
50
  createTrackMem(_0: EmbindString): void;
120
- addFont(_0: EmbindString, _1: number, _2: number): void;
121
51
  processData(_0: EmbindString): void;
122
- setDefaultFont(_0: EmbindString): void;
52
+ addFont(_0: any, _1: number, _2: number): void;
53
+ getEvents(): any;
54
+ getStyles(): any;
55
+ createEvent(_0: any): void;
56
+ setEvent(_0: number, _1: any): void;
57
+ createStyle(_0: any): void;
58
+ setStyle(_0: number, _1: any): void;
59
+ rawRender(_0: number, _1: number): any;
60
+ styleOverride(_0: any): void;
61
+ setDefaultFont(_0: any): void;
123
62
  }
124
63
 
125
64
  interface EmbindModule {
126
- ASS_Image: {};
127
- ASS_Style: {};
128
- ASS_Event: {};
129
65
  JASSUB: {
130
- new(_0: number, _1: number, _2: EmbindString): JASSUB;
66
+ new(_0: number, _1: number, _2: any): JASSUB;
131
67
  };
132
68
  }
133
69
 
@@ -1,9 +1,56 @@
1
1
  /* eslint-disable camelcase */
2
- import type { ASS_Event, ASS_Image, ASS_Style, ClassHandle } from '../wasm/types.d.ts'
2
+ export interface ASSEvent {
3
+ Start: number
4
+ Duration: number
5
+ Name: string
6
+ Effect: string
7
+ Text: string
8
+ ReadOrder: number
9
+ Layer: number
10
+ Style: number
11
+ MarginL: number
12
+ MarginR: number
13
+ MarginV: number
14
+ }
15
+
16
+ export interface ASSStyle {
17
+ Name: string
18
+ FontName: string
19
+ FontSize: number
20
+ PrimaryColour: number
21
+ SecondaryColour: number
22
+ OutlineColour: number
23
+ BackColour: number
24
+ Bold: number
25
+ Italic: number
26
+ Underline: number
27
+ StrikeOut: number
28
+ ScaleX: number
29
+ ScaleY: number
30
+ Spacing: number
31
+ Angle: number
32
+ BorderStyle: number
33
+ Outline: number
34
+ Shadow: number
35
+ Alignment: number
36
+ MarginL: number
37
+ MarginR: number
38
+ MarginV: number
39
+ Encoding: number
40
+ treat_fontname_as_pattern: number
41
+ Blur: number
42
+ Justify: number
43
+ }
3
44
 
4
- export type ASSEvent = Omit<ASS_Event, keyof ClassHandle>
5
- export type ASSStyle = Omit<ASS_Style, keyof ClassHandle>
6
- export type ASSImage = Omit<ASS_Image, keyof ClassHandle>
45
+ export interface ASSImage {
46
+ w: number
47
+ h: number
48
+ dst_x: number
49
+ dst_y: number
50
+ stride: number
51
+ color: number
52
+ bitmap: number
53
+ }
7
54
 
8
55
  // offset by 1, 0 = 1, to match CSS font-weight values, but dividing by 100 gives the correct index
9
56
  export const WEIGHT_MAP = [
@@ -32,12 +79,6 @@ const d = 'FCC'
32
79
 
33
80
  export const LIBASS_YCBCR_MAP = [null, a, null, a, a, b, b, c, c, d, d] as const
34
81
 
35
- export function _applyKeys<T extends (ASSEvent | ASSStyle)> (input: T, output: T) {
36
- for (const v of Object.keys(input) as Array<keyof T>) {
37
- output[v] = input[v]
38
- }
39
- }
40
-
41
82
  export const _fetch = globalThis.fetch
42
83
  export async function fetchtext (url: string) {
43
84
  const res = await _fetch(url)