jassub 2.0.18 → 2.0.20

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/dist/debug.js CHANGED
@@ -19,7 +19,7 @@ export class Debug {
19
19
  const fps = this.fps(1);
20
20
  const now = performance.now();
21
21
  const processingDuration = this.processingDuration((now - this._startTime) / fps);
22
- const frameDelay = Math.max(0, meta.expectedDisplayTime - now);
22
+ const frameDelay = Math.max(0, now - meta.expectedDisplayTime);
23
23
  if (frameDelay)
24
24
  ++this.mistimedFrames;
25
25
  this.onsubtitleFrameCallback?.(now, {
package/dist/debug.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAgBnC,MAAM,OAAO,KAAK;IAChB,mBAAmB;IACnB,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACnB,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAClC,aAAa,GAAG,CAAC,CAAA;IACjB,eAAe,GAAG,CAAC,CAAA;IACnB,cAAc,GAAG,CAAC,CAAA;IAElB,KAAK;QACH,EAAE,IAAI,CAAC,aAAa,CAAA;IACtB,CAAC;IAED,UAAU,GAAG,CAAC,CAAA;IACd,WAAW;QACT,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IACrC,CAAC;IAED,uBAAuB,GAA4E,OAAO,CAAC,GAAG,CAAA;IAE9G,SAAS,CAAE,IAAgC;QACzC,EAAE,IAAI,CAAC,eAAe,CAAA;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAA;QAC9D,IAAI,UAAU;YAAE,EAAE,IAAI,CAAC,cAAc,CAAA;QAErC,IAAI,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE;YAClC,GAAG;YACH,kBAAkB;YAClB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,GAAG;YACrB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CACV,yEAAyE,EACzE,aAAa,EACb,gCAAgC,EAChC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EACd,aAAa,EACb,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,gCAAgC,EAChC,IAAI,CAAC,aAAa,EAClB,aAAa,CACd,CAAA;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../src/debug.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,YAAY,CAAA;AAgBnC,MAAM,OAAO,KAAK;IAChB,mBAAmB;IACnB,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IACnB,kBAAkB,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAClC,aAAa,GAAG,CAAC,CAAA;IACjB,eAAe,GAAG,CAAC,CAAA;IACnB,cAAc,GAAG,CAAC,CAAA;IAElB,KAAK;QACH,EAAE,IAAI,CAAC,aAAa,CAAA;IACtB,CAAC;IAED,UAAU,GAAG,CAAC,CAAA;IACd,WAAW;QACT,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;IACrC,CAAC;IAED,uBAAuB,GAA4E,OAAO,CAAC,GAAG,CAAA;IAE9G,SAAS,CAAE,IAAgC;QACzC,EAAE,IAAI,CAAC,eAAe,CAAA;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAA;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAA;QAC9D,IAAI,UAAU;YAAE,EAAE,IAAI,CAAC,cAAc,CAAA;QAErC,IAAI,CAAC,uBAAuB,EAAE,CAAC,GAAG,EAAE;YAClC,GAAG;YACH,kBAAkB;YAClB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,gBAAgB,EAAE,GAAG;YACrB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,UAAU;YACV,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,IAAI,CACV,yEAAyE,EACzE,aAAa,EACb,gCAAgC,EAChC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EACd,aAAa,EACb,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,gCAAgC,EAChC,IAAI,CAAC,aAAa,EAClB,aAAa,CACd,CAAA;IACH,CAAC;CACF"}
package/dist/jassub.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import 'rvfc-polyfill';
2
- import { Debug } from './debug.ts';
2
+ import { Debug } from './debug';
3
3
  import type { ASS_Event, ASS_Image, ASS_Style, ClassHandle } from './wasm/types';
4
4
  import type { ASSRenderer } from './worker/worker';
5
5
  import type { Remote } from 'abslink';
package/dist/jassub.js ADDED
@@ -0,0 +1,286 @@
1
+ /* eslint-disable camelcase */
2
+ import 'rvfc-polyfill';
3
+ import { proxy, releaseProxy } from 'abslink';
4
+ import { wrap } from 'abslink/w3c';
5
+ import { Debug } from './debug';
6
+ const webYCbCrMap = {
7
+ rgb: 'RGB',
8
+ bt709: 'BT709',
9
+ // these might not be exactly correct? oops?
10
+ bt470bg: 'BT601', // alias BT.601 PAL... whats the difference?
11
+ smpte170m: 'BT601' // alias BT.601 NTSC... whats the difference?
12
+ };
13
+ export default class JASSUB {
14
+ timeOffset;
15
+ prescaleFactor;
16
+ prescaleHeightLimit;
17
+ maxRenderHeight;
18
+ debug;
19
+ renderer;
20
+ ready;
21
+ busy = false;
22
+ _video;
23
+ _videoWidth = 0;
24
+ _videoHeight = 0;
25
+ _videoColorSpace = null;
26
+ _canvas;
27
+ _canvasParent;
28
+ _ctrl = new AbortController();
29
+ _ro = new ResizeObserver(() => this.resize());
30
+ _destroyed = false;
31
+ _lastDemandTime;
32
+ _skipped = false;
33
+ _worker;
34
+ constructor(opts) {
35
+ if (!globalThis.Worker)
36
+ throw new Error('Worker not supported');
37
+ if (!opts)
38
+ throw new Error('No options provided');
39
+ if (!opts.video && !opts.canvas)
40
+ throw new Error('You should give video or canvas in options.');
41
+ JASSUB._test();
42
+ this.timeOffset = opts.timeOffset ?? 0;
43
+ this._video = opts.video;
44
+ this._canvas = opts.canvas ?? document.createElement('canvas');
45
+ if (this._video && !opts.canvas) {
46
+ this._canvasParent = document.createElement('div');
47
+ this._canvasParent.className = 'JASSUB';
48
+ this._canvasParent.style.position = 'relative';
49
+ this._canvas.style.display = 'block';
50
+ this._canvas.style.position = 'absolute';
51
+ this._canvas.style.pointerEvents = 'none';
52
+ this._canvasParent.appendChild(this._canvas);
53
+ this._video.insertAdjacentElement('afterend', this._canvasParent);
54
+ }
55
+ const ctrl = this._canvas.transferControlToOffscreen();
56
+ this.debug = opts.debug ? new Debug() : null;
57
+ this.prescaleFactor = opts.prescaleFactor ?? 1.0;
58
+ this.prescaleHeightLimit = opts.prescaleHeightLimit ?? 1080;
59
+ this.maxRenderHeight = opts.maxRenderHeight ?? 0; // 0 - no limit.
60
+ // yes this is awful, but bundlers check for new Worker(new URL()) patterns, so can't use new Worker(workerUrl ?? new URL(...)) ... bruh
61
+ this._worker = opts.workerUrl
62
+ ? new Worker(opts.workerUrl, { name: 'jassub-worker', type: 'module' })
63
+ : new Worker(new URL('./worker/worker.js', import.meta.url), { name: 'jassub-worker', type: 'module' });
64
+ const Renderer = wrap(this._worker);
65
+ const modern = opts.modernWasmUrl ?? new URL('./wasm/jassub-worker-modern.wasm', import.meta.url).href;
66
+ const fallback = opts.wasmUrl ?? new URL('./wasm/jassub-worker.wasm', import.meta.url).href;
67
+ this.ready = (async () => {
68
+ this.renderer = await new Renderer({
69
+ wasmUrl: JASSUB._supportsSIMD ? modern : fallback,
70
+ width: ctrl.width,
71
+ height: ctrl.height,
72
+ subUrl: opts.subUrl,
73
+ subContent: opts.subContent ?? null,
74
+ fonts: opts.fonts ?? [],
75
+ availableFonts: opts.availableFonts ?? { 'liberation sans': './default.woff2' },
76
+ fallbackFont: opts.fallbackFont ?? 'liberation sans',
77
+ debug: !!opts.debug,
78
+ libassMemoryLimit: opts.libassMemoryLimit ?? 0,
79
+ libassGlyphLimit: opts.libassGlyphLimit ?? 0,
80
+ // @ts-expect-error TS doesn't know about queryLocalFonts
81
+ useLocalFonts: typeof queryLocalFonts !== 'undefined' && (opts.useLocalFonts ?? true)
82
+ }, proxy(font => this._getLocalFont(font)));
83
+ await this.renderer.ready();
84
+ })();
85
+ if (this._video)
86
+ this.setVideo(this._video);
87
+ this._worker.postMessage({ name: 'offscreenCanvas', ctrl }, [ctrl]);
88
+ }
89
+ static _supportsSIMD;
90
+ static _test() {
91
+ if (JASSUB._supportsSIMD != null)
92
+ return;
93
+ try {
94
+ JASSUB._supportsSIMD = WebAssembly.validate(Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11));
95
+ }
96
+ catch (e) {
97
+ JASSUB._supportsSIMD = false;
98
+ }
99
+ const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
100
+ if (!(module instanceof WebAssembly.Module) || !(new WebAssembly.Instance(module) instanceof WebAssembly.Instance))
101
+ throw new Error('WASM not supported');
102
+ }
103
+ async resize(force = !!this._video?.paused, width = 0, height = 0, top = 0, left = 0) {
104
+ await this.ready;
105
+ if ((!width || !height) && this._video) {
106
+ const videoSize = this._getVideoPosition();
107
+ let renderSize = null;
108
+ // support anamorphic video
109
+ if (this._videoWidth) {
110
+ const widthRatio = this._video.videoWidth / this._videoWidth;
111
+ const heightRatio = this._video.videoHeight / this._videoHeight;
112
+ renderSize = this._computeCanvasSize((videoSize.width || 0) / widthRatio, (videoSize.height || 0) / heightRatio);
113
+ }
114
+ else {
115
+ renderSize = this._computeCanvasSize(videoSize.width || 0, videoSize.height || 0);
116
+ }
117
+ width = renderSize.width;
118
+ height = renderSize.height;
119
+ if (this._canvasParent) {
120
+ top = videoSize.y - (this._canvasParent.getBoundingClientRect().top - this._video.getBoundingClientRect().top);
121
+ left = videoSize.x;
122
+ }
123
+ this._canvas.style.width = videoSize.width + 'px';
124
+ this._canvas.style.height = videoSize.height + 'px';
125
+ }
126
+ this._canvas.style.top = top + 'px';
127
+ this._canvas.style.left = left + 'px';
128
+ await this.renderer._canvas(width, height, (this._videoWidth || this._video?.videoWidth) ?? width, (this._videoHeight || this._video?.videoHeight) ?? height);
129
+ if (force && this._lastDemandTime)
130
+ this._demandRender();
131
+ }
132
+ _getVideoPosition(width = this._video.videoWidth, height = this._video.videoHeight) {
133
+ const videoRatio = width / height;
134
+ const { offsetWidth, offsetHeight } = this._video;
135
+ const elementRatio = offsetWidth / offsetHeight;
136
+ width = offsetWidth;
137
+ height = offsetHeight;
138
+ if (elementRatio > videoRatio) {
139
+ width = Math.floor(offsetHeight * videoRatio);
140
+ }
141
+ else {
142
+ height = Math.floor(offsetWidth / videoRatio);
143
+ }
144
+ const x = (offsetWidth - width) / 2;
145
+ const y = (offsetHeight - height) / 2;
146
+ return { width, height, x, y };
147
+ }
148
+ _computeCanvasSize(width = 0, height = 0) {
149
+ const scalefactor = this.prescaleFactor <= 0 ? 1.0 : this.prescaleFactor;
150
+ const ratio = self.devicePixelRatio || 1;
151
+ if (height <= 0 || width <= 0) {
152
+ width = 0;
153
+ height = 0;
154
+ }
155
+ else {
156
+ const sgn = scalefactor < 1 ? -1 : 1;
157
+ let newH = height * ratio;
158
+ if (sgn * newH * scalefactor <= sgn * this.prescaleHeightLimit) {
159
+ newH *= scalefactor;
160
+ }
161
+ else if (sgn * newH < sgn * this.prescaleHeightLimit) {
162
+ newH = this.prescaleHeightLimit;
163
+ }
164
+ if (this.maxRenderHeight > 0 && newH > this.maxRenderHeight)
165
+ newH = this.maxRenderHeight;
166
+ width *= newH / height;
167
+ height = newH;
168
+ }
169
+ return { width, height };
170
+ }
171
+ async setVideo(video) {
172
+ await this.ready;
173
+ if (video instanceof HTMLVideoElement) {
174
+ this._removeListeners();
175
+ this._video = video;
176
+ this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data));
177
+ // everything else is unreliable for this, loadedmetadata and loadeddata included.
178
+ if ('VideoFrame' in globalThis) {
179
+ video.addEventListener('loadedmetadata', () => this._updateColorSpace(), this._ctrl);
180
+ if (video.readyState > 2)
181
+ this._updateColorSpace();
182
+ }
183
+ if (video.videoWidth > 0)
184
+ this.resize();
185
+ this._ro.observe(video);
186
+ }
187
+ else {
188
+ throw new Error('Video element invalid!');
189
+ }
190
+ }
191
+ async _sendLocalFont(name) {
192
+ try {
193
+ // @ts-expect-error ts doesnt know
194
+ const fontData = await queryLocalFonts();
195
+ // @ts-expect-error ts doesnt know
196
+ const font = fontData?.find(obj => obj.fullName.toLowerCase() === name);
197
+ if (font) {
198
+ const blob = await font.blob();
199
+ this.renderer.addFont(new Uint8Array(await blob.arrayBuffer()));
200
+ }
201
+ }
202
+ catch (e) {
203
+ console.warn('Local fonts API:', e);
204
+ }
205
+ }
206
+ async _getLocalFont(font) {
207
+ try {
208
+ // electron by default has all permissions enabled, and it doesn't have perm query
209
+ // if this happens, just send it
210
+ if (navigator?.permissions?.query) {
211
+ // @ts-expect-error TS doesn't know about local-fonts
212
+ const permission = await navigator.permissions.query({ name: 'local-fonts' });
213
+ if (permission.state === 'granted') {
214
+ await this._sendLocalFont(font);
215
+ }
216
+ }
217
+ else {
218
+ await this._sendLocalFont(font);
219
+ }
220
+ }
221
+ catch (e) {
222
+ console.warn('Local fonts API:', e);
223
+ }
224
+ }
225
+ _handleRVFC(data) {
226
+ if (this._destroyed)
227
+ return;
228
+ this._lastDemandTime = data;
229
+ this._demandRender();
230
+ this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data));
231
+ }
232
+ async _demandRender() {
233
+ const { mediaTime, width, height } = this._lastDemandTime;
234
+ if (width !== this._videoWidth || height !== this._videoHeight) {
235
+ this._videoWidth = width;
236
+ this._videoHeight = height;
237
+ this.resize(false);
238
+ }
239
+ if (this.busy) {
240
+ this._skipped = true;
241
+ this.debug?._drop();
242
+ return;
243
+ }
244
+ this.busy = true;
245
+ this._skipped = false;
246
+ this.debug?._startFrame();
247
+ await this.renderer._draw(mediaTime + this.timeOffset);
248
+ this.debug?._endFrame(this._lastDemandTime);
249
+ this.busy = false;
250
+ if (this._skipped)
251
+ this._demandRender();
252
+ }
253
+ async _updateColorSpace() {
254
+ await this.ready;
255
+ this._video.requestVideoFrameCallback(async () => {
256
+ try {
257
+ const frame = new VideoFrame(this._video);
258
+ frame.close();
259
+ await this.renderer._setColorSpace(webYCbCrMap[frame.colorSpace.matrix]);
260
+ }
261
+ catch (e) {
262
+ // sources can be tainted
263
+ console.warn(e);
264
+ }
265
+ });
266
+ }
267
+ _removeListeners() {
268
+ if (this._video) {
269
+ if (this._ro)
270
+ this._ro.unobserve(this._video);
271
+ this._ctrl.abort();
272
+ this._ctrl = new AbortController();
273
+ }
274
+ }
275
+ async destroy() {
276
+ if (this._destroyed)
277
+ return;
278
+ this._destroyed = true;
279
+ if (this._video && this._canvasParent)
280
+ this._video.parentNode?.removeChild(this._canvasParent);
281
+ this._removeListeners();
282
+ await this.renderer[releaseProxy]();
283
+ this._worker.terminate();
284
+ }
285
+ }
286
+ //# sourceMappingURL=jassub.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jassub.js","sourceRoot":"","sources":["../src/jassub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jassub.js","sourceRoot":"","sources":["../src/jassub.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jassub",
3
- "version": "2.0.18",
3
+ "version": "2.0.20",
4
4
  "description": "libass subtitle renderer for modern browsers",
5
5
  "main": "dist/jassub.js",
6
6
  "type": "module",
package/src/debug.ts CHANGED
@@ -38,7 +38,7 @@ export class Debug {
38
38
  const fps = this.fps(1)
39
39
  const now = performance.now()
40
40
  const processingDuration = this.processingDuration((now - this._startTime) / fps)
41
- const frameDelay = Math.max(0, meta.expectedDisplayTime - now)
41
+ const frameDelay = Math.max(0, now - meta.expectedDisplayTime)
42
42
  if (frameDelay) ++this.mistimedFrames
43
43
 
44
44
  this.onsubtitleFrameCallback?.(now, {
package/src/jassub.ts CHANGED
@@ -4,7 +4,7 @@ import 'rvfc-polyfill'
4
4
  import { proxy, releaseProxy } from 'abslink'
5
5
  import { wrap } from 'abslink/w3c'
6
6
 
7
- import { Debug } from './debug.ts'
7
+ import { Debug } from './debug'
8
8
 
9
9
  import type { ASS_Event, ASS_Image, ASS_Style, ClassHandle } from './wasm/types'
10
10
  import type { ASSRenderer } from './worker/worker'