jassub 2.4.2 → 2.5.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 CHANGED
@@ -38,7 +38,7 @@ The
38
38
 
39
39
  headers are recommended to use this library, as it uses SharedArrayBuffer for multi-threading, but if you can't set them, it will fallback automatically to work in single-threaded mode. Firefox doesn't support threading so they are not required there.
40
40
 
41
- At minimum WASM + TextDecoder + OffscreenCanvas + Web Workers + Proxy + AbortController + Fetch + Promise + getVideoPlaybackQuality/requestVideoFrameCallback are required for JASSUB to work.
41
+ At minimum WASM + TextDecoder + OffscreenCanvas + Web Workers + Proxy + Fetch + Promise + getVideoPlaybackQuality/requestVideoFrameCallback are required for JASSUB to work.
42
42
 
43
43
  <!--
44
44
  WASM: 57 11 52 / 51 11 47
@@ -49,12 +49,11 @@ BigInt: 67 15 68
49
49
  Web Workers: 4 4 3.5
50
50
  Promise: 33 7.1 29 / 4 3.1 2
51
51
  Proxy: 49 10 18
52
- AbortController: 66 12 57 / 4 3.1 2
53
52
  Fetch: 42 10.1 39 / 41 10.1 34
54
53
  getVPQ/rVFC: 80 8 42 / 28 8 42
55
54
  -->
56
55
 
57
- JASSUB supports Chrome/Safari/Firefox 80/17/105, you bring the support down to 67/16.2/68 if you enable some flags/settings in your browser for these features, and polyfill AbortController. For other engines other polyfills might be needed. Babel is also recommended if you need to support older JS engines as JASSUB ships as ES modules with modern syntax.
56
+ JASSUB supports Chrome/Safari/Firefox 80/17/105, you bring the support down to 67/16.2/68 if you enable some flags/settings in your browser for these features. For other engines polyfills might be needed. Babel is also recommended if you need to support older JS engines as JASSUB ships as ES modules with modern syntax.
58
57
 
59
58
  <!-- See https://github.com/gpuweb/gpuweb/wiki/Implementation-Status for a WebGPU support table, and what flags you might need to enable it in your browser if you want to utilise it instead of WebGL2. -->
60
59
 
@@ -108,7 +107,7 @@ const instance = new JASSUB({
108
107
 
109
108
  await instance.ready
110
109
 
111
- instance.setCurrentTime(15)
110
+ instance.manualRender({ expectedDisplayTime: performance.now(), width: 1920, height: 1080, mediaTime: 10.20 })
112
111
  ```
113
112
 
114
113
  # Docs
package/dist/debug.d.ts CHANGED
@@ -21,5 +21,5 @@ export declare class Debug {
21
21
  _startTime: number;
22
22
  _startFrame(): void;
23
23
  onsubtitleFrameCallback?: (now: DOMHighResTimeStamp, metadata: SubtitleCallbackMetadata) => void;
24
- _endFrame(meta: VideoFrameCallbackMetadata): void;
24
+ _endFrame(meta: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>): void;
25
25
  }
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,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAChK,yEAAyE,EACzE,aAAa,EACb,gCAAgC,EAChC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EACd,aAAa,EACb,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,gCAAgC,EAChC,aAAa,EACb,aAAa,CACd,CAAA;IAED,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;IACJ,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,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAChK,yEAAyE,EACzE,aAAa,EACb,gCAAgC,EAChC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EACd,aAAa,EACb,gCAAgC,EAChC,kBAAkB,EAClB,aAAa,EACb,gCAAgC,EAChC,aAAa,EACb,aAAa,CACd,CAAA;IAED,SAAS,CAAE,IAAgG;QACzG,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;IACJ,CAAC;CACF"}
package/dist/jassub.d.ts CHANGED
@@ -3,6 +3,12 @@ import { Debug } from './debug.ts';
3
3
  import type { WeightValue } from './worker/util.ts';
4
4
  import type { ASSRenderer } from './worker/worker';
5
5
  import type { Remote } from 'abslink';
6
+ export declare const webYCbCrMap: {
7
+ readonly rgb: "RGB";
8
+ readonly bt709: "BT709";
9
+ readonly bt470bg: "BT601";
10
+ readonly smpte170m: "BT601";
11
+ };
6
12
  export type JASSUBOptions = {
7
13
  timeOffset?: number;
8
14
  debug?: boolean;
@@ -45,32 +51,36 @@ export default class JASSUB {
45
51
  _videoHeight: number;
46
52
  _videoColorSpace: string | null;
47
53
  _canvas: HTMLCanvasElement;
48
- _canvasParent: HTMLDivElement | undefined;
49
- _ctrl: AbortController;
50
54
  _ro: ResizeObserver;
51
55
  _destroyed: boolean;
52
- _lastDemandTime: VideoFrameCallbackMetadata;
56
+ _lastDemandTime: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>;
53
57
  _skipped: boolean;
54
58
  _worker: Worker;
55
59
  constructor(opts: JASSUBOptions);
56
60
  static _supportsSIMD?: boolean;
57
61
  static _test(): void;
58
- resize(forceRepaint?: boolean, width?: number, height?: number, top?: number, left?: number): Promise<void>;
59
- _getVideoPosition(width?: number, height?: number): {
60
- width: number;
61
- height: number;
62
+ resize(forceRepaint?: boolean, renderWidth?: number, renderHeight?: number): Promise<void>;
63
+ _getElementBoundingBox(el: Element, videoWidth: number, videoHeight: number): {
62
64
  x: number;
63
65
  y: number;
66
+ width: number;
67
+ height: number;
64
68
  };
65
- _computeCanvasSize(width?: number, height?: number): {
69
+ _computeRenderSize(width?: number, height?: number): {
66
70
  width: number;
67
71
  height: number;
68
72
  };
69
- setVideo(video: HTMLVideoElement): Promise<void>;
73
+ setVideo(target: HTMLVideoElement): Promise<void>;
70
74
  _getLocalFont(font: string, weight?: WeightValue): Promise<Uint8Array<ArrayBuffer> | undefined>;
71
75
  _handleRVFC(data: VideoFrameCallbackMetadata): void;
76
+ manualRender(data: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>): Promise<void>;
72
77
  _demandRender(repaint?: boolean): Promise<void>;
73
- _updateColorSpace(): Promise<void>;
78
+ _boundUpdateColorSpace: ({ target }: {
79
+ target: EventTarget | null;
80
+ }) => void;
81
+ _updateColorSpace({ target }: {
82
+ target: EventTarget | null;
83
+ }): void;
74
84
  _removeListeners(): void;
75
85
  destroy(): Promise<void>;
76
86
  }
package/dist/jassub.js CHANGED
@@ -2,7 +2,7 @@ import 'rvfc-polyfill';
2
2
  import { proxy, releaseProxy } from 'abslink';
3
3
  import { wrap } from 'abslink/w3c';
4
4
  import { Debug } from "./debug.js";
5
- const webYCbCrMap = {
5
+ export const webYCbCrMap = {
6
6
  rgb: 'RGB',
7
7
  bt709: 'BT709',
8
8
  // these might not be exactly correct? oops?
@@ -23,8 +23,6 @@ export default class JASSUB {
23
23
  _videoHeight = 0;
24
24
  _videoColorSpace = null;
25
25
  _canvas;
26
- _canvasParent;
27
- _ctrl = new AbortController();
28
26
  _ro = new ResizeObserver(async () => {
29
27
  await this.ready;
30
28
  this.resize();
@@ -45,14 +43,10 @@ export default class JASSUB {
45
43
  this._video = opts.video;
46
44
  this._canvas = opts.canvas ?? document.createElement('canvas');
47
45
  if (this._video && !opts.canvas) {
48
- this._canvasParent = document.createElement('div');
49
- this._canvasParent.className = 'JASSUB';
50
- this._canvasParent.style.position = 'relative';
51
- this._canvas.style.display = 'block';
46
+ this._canvas.className = 'JASSUB';
52
47
  this._canvas.style.position = 'absolute';
53
48
  this._canvas.style.pointerEvents = 'none';
54
- this._canvasParent.appendChild(this._canvas);
55
- this._video.insertAdjacentElement('afterend', this._canvasParent);
49
+ this._video.insertAdjacentElement('afterend', this._canvas);
56
50
  }
57
51
  const ctrl = this._canvas.transferControlToOffscreen();
58
52
  this.debug = opts.debug ? new Debug() : null;
@@ -87,8 +81,12 @@ export default class JASSUB {
87
81
  }, proxy(font => this._getLocalFont(font)));
88
82
  await this.renderer.ready();
89
83
  })();
90
- if (this._video)
84
+ if (this._video) {
91
85
  this.setVideo(this._video);
86
+ }
87
+ else {
88
+ this._ro.observe(this._canvas);
89
+ }
92
90
  this._worker.postMessage({ name: 'offscreenCanvas', ctrl }, [ctrl]);
93
91
  }
94
92
  static _supportsSIMD;
@@ -105,94 +103,71 @@ export default class JASSUB {
105
103
  if (!(module instanceof WebAssembly.Module) || !(new WebAssembly.Instance(module) instanceof WebAssembly.Instance))
106
104
  throw new Error('WASM not supported');
107
105
  }
108
- async resize(forceRepaint = !!this._video?.paused, width = 0, height = 0, top = 0, left = 0) {
109
- if ((!width || !height) && this._video) {
110
- const videoSize = this._getVideoPosition();
111
- let renderSize = null;
112
- // support anamorphic video
113
- if (this._videoWidth) {
114
- const widthRatio = this._video.videoWidth / this._videoWidth;
115
- const heightRatio = this._video.videoHeight / this._videoHeight;
116
- renderSize = this._computeCanvasSize((videoSize.width || 0) / widthRatio, (videoSize.height || 0) / heightRatio);
117
- }
118
- else {
119
- renderSize = this._computeCanvasSize(videoSize.width || 0, videoSize.height || 0);
120
- }
121
- width = renderSize.width;
122
- height = renderSize.height;
123
- if (this._canvasParent) {
124
- top = videoSize.y - (this._canvasParent.getBoundingClientRect().top - this._video.getBoundingClientRect().top);
125
- left = videoSize.x;
126
- }
127
- this._canvas.style.width = videoSize.width + 'px';
128
- this._canvas.style.height = videoSize.height + 'px';
106
+ async resize(forceRepaint = !!this._video?.paused, renderWidth = 0, renderHeight = 0) {
107
+ const videoWidth = this._video?.videoWidth ?? this._videoWidth;
108
+ const videoHeight = this._video?.videoHeight ?? this._videoHeight;
109
+ const videoSize = this._getElementBoundingBox(this._video ?? this._canvas, videoWidth, videoHeight);
110
+ if (!renderWidth || !renderHeight) {
111
+ // || 1 for divide by zero safety
112
+ const widthScale = (this._videoWidth / videoWidth) || 1;
113
+ const heightScale = (this._videoHeight / videoHeight) || 1;
114
+ const { width, height } = this._computeRenderSize(videoSize.width * widthScale, videoSize.height * heightScale);
115
+ renderWidth = Math.round(width);
116
+ renderHeight = Math.round(height);
129
117
  }
130
- if (this._canvasParent) {
131
- this._canvas.style.top = top + 'px';
132
- this._canvas.style.left = left + 'px';
118
+ if (this._video) {
119
+ this._canvas.style.width = Math.round(videoSize.width) + 'px';
120
+ this._canvas.style.height = Math.round(videoSize.height) + 'px';
121
+ this._canvas.style.top = videoSize.y + 'px';
122
+ this._canvas.style.left = videoSize.x + 'px';
133
123
  }
134
- await this.renderer._resizeCanvas(width, height, (this._videoWidth || this._video?.videoWidth) ?? width, (this._videoHeight || this._video?.videoHeight) ?? height);
124
+ await this.renderer._resizeCanvas(renderWidth, renderHeight, this._videoWidth || renderWidth, this._videoHeight || renderHeight);
135
125
  if (this._lastDemandTime)
136
126
  await this._demandRender(forceRepaint);
137
127
  }
138
- _getVideoPosition(width = this._video.videoWidth, height = this._video.videoHeight) {
139
- const videoRatio = width / height;
140
- const { offsetWidth, offsetHeight } = this._video;
141
- const elementRatio = offsetWidth / offsetHeight;
142
- width = offsetWidth;
143
- height = offsetHeight;
128
+ _getElementBoundingBox(el, videoWidth, videoHeight) {
129
+ const { width, height, x, y } = el.getBoundingClientRect();
130
+ const videoRatio = videoWidth / videoHeight;
131
+ const elementRatio = width / height;
144
132
  if (elementRatio > videoRatio) {
145
- width = Math.floor(offsetHeight * videoRatio);
133
+ videoHeight = height;
134
+ videoWidth = height * videoRatio;
146
135
  }
147
136
  else {
148
- height = Math.floor(offsetWidth / videoRatio);
137
+ videoHeight = width / videoRatio;
138
+ videoWidth = width;
149
139
  }
150
- const x = (offsetWidth - width) / 2;
151
- const y = (offsetHeight - height) / 2;
152
- return { width, height, x, y };
140
+ return { x: x + (width - videoWidth) / 2, y: y + (height - videoHeight) / 2, width: videoWidth, height: videoHeight };
153
141
  }
154
- _computeCanvasSize(width = 0, height = 0) {
142
+ _computeRenderSize(width = 0, height = 0) {
143
+ if (height <= 0 || width <= 0)
144
+ return { width: 0, height: 0 };
155
145
  const scalefactor = this.prescaleFactor <= 0 ? 1.0 : this.prescaleFactor;
156
146
  const ratio = self.devicePixelRatio || 1;
157
- if (height <= 0 || width <= 0) {
158
- width = 0;
159
- height = 0;
160
- }
161
- else {
162
- const sgn = scalefactor < 1 ? -1 : 1;
163
- let newH = height * ratio;
164
- if (sgn * newH * scalefactor <= sgn * this.prescaleHeightLimit) {
165
- newH *= scalefactor;
166
- }
167
- else if (sgn * newH < sgn * this.prescaleHeightLimit) {
168
- newH = this.prescaleHeightLimit;
169
- }
170
- if (this.maxRenderHeight > 0 && newH > this.maxRenderHeight)
171
- newH = this.maxRenderHeight;
172
- width *= newH / height;
173
- height = newH;
174
- }
147
+ const sgn = scalefactor < 1 ? -1 : 1;
148
+ let newH = height * ratio;
149
+ if (sgn * newH * scalefactor <= sgn * this.prescaleHeightLimit) {
150
+ newH *= scalefactor;
151
+ }
152
+ else if (sgn * newH < sgn * this.prescaleHeightLimit) {
153
+ newH = this.prescaleHeightLimit;
154
+ }
155
+ if (this.maxRenderHeight > 0 && newH > this.maxRenderHeight)
156
+ newH = this.maxRenderHeight;
157
+ width *= newH / height;
158
+ height = newH;
175
159
  return { width, height };
176
160
  }
177
- async setVideo(video) {
178
- if (video instanceof HTMLVideoElement) {
179
- this._removeListeners();
180
- this._video = video;
181
- await this.ready;
182
- this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data));
183
- // everything else is unreliable for this, loadedmetadata and loadeddata included.
184
- if ('VideoFrame' in globalThis) {
185
- video.addEventListener('loadedmetadata', () => this._updateColorSpace(), this._ctrl);
186
- if (video.readyState > 2)
187
- this._updateColorSpace();
188
- }
189
- if (video.videoWidth > 0)
190
- this.resize();
191
- this._ro.observe(video);
192
- }
193
- else {
194
- throw new Error('Video element invalid!');
161
+ async setVideo(target) {
162
+ this._removeListeners();
163
+ this._video = target;
164
+ this._ro.observe(target);
165
+ if (typeof VideoFrame !== 'undefined') {
166
+ target.addEventListener('loadedmetadata', this._boundUpdateColorSpace);
167
+ this._updateColorSpace({ target });
195
168
  }
169
+ await this.ready;
170
+ this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data));
196
171
  }
197
172
  async _getLocalFont(font, weight = 'regular') {
198
173
  // electron by default has all permissions enabled, and it doesn't have perm query
@@ -214,10 +189,13 @@ export default class JASSUB {
214
189
  _handleRVFC(data) {
215
190
  if (this._destroyed)
216
191
  return;
217
- this._lastDemandTime = data;
218
- this._demandRender();
192
+ this.manualRender(data);
219
193
  this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data));
220
194
  }
195
+ manualRender(data) {
196
+ this._lastDemandTime = data;
197
+ return this._demandRender();
198
+ }
221
199
  async _demandRender(repaint = false) {
222
200
  const { mediaTime, width, height } = this._lastDemandTime;
223
201
  if (width !== this._videoWidth || height !== this._videoHeight) {
@@ -239,12 +217,15 @@ export default class JASSUB {
239
217
  if (this._skipped)
240
218
  await this._demandRender();
241
219
  }
242
- async _updateColorSpace() {
243
- await this.ready;
220
+ _boundUpdateColorSpace = this._updateColorSpace.bind(this);
221
+ _updateColorSpace({ target }) {
244
222
  this._video.requestVideoFrameCallback(async () => {
223
+ if (this._destroyed || this._video !== target)
224
+ return;
245
225
  try {
246
226
  const frame = new VideoFrame(this._video);
247
227
  frame.close();
228
+ await this.ready;
248
229
  await this.renderer._setColorSpace(webYCbCrMap[frame.colorSpace.matrix]);
249
230
  }
250
231
  catch (e) {
@@ -254,19 +235,14 @@ export default class JASSUB {
254
235
  });
255
236
  }
256
237
  _removeListeners() {
257
- if (this._video) {
258
- if (this._ro)
259
- this._ro.unobserve(this._video);
260
- this._ctrl.abort();
261
- this._ctrl = new AbortController();
262
- }
238
+ this._ro.disconnect();
239
+ this._video?.removeEventListener('loadedmetadata', this._boundUpdateColorSpace);
263
240
  }
264
241
  async destroy() {
265
242
  if (this._destroyed)
266
243
  return;
267
244
  this._destroyed = true;
268
- if (this._video && this._canvasParent)
269
- this._video.parentNode?.removeChild(this._canvasParent);
245
+ this._canvas.remove();
270
246
  this._removeListeners();
271
247
  await this.renderer?.[releaseProxy]();
272
248
  this._worker.terminate();
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  // fallback for browsers that don't support WebGL2
2
- import { colorMatrixConversionMap, IDENTITY_MATRIX, IS_FIREFOX, SHOULD_REFERENCE_MEMORY } from "../util.js";
2
+ import { colorMatrixConversionMap, IDENTITY_MATRIX, IS_FIREFOX, IS_SAFARI, SHOULD_REFERENCE_MEMORY } from "../util.js";
3
3
  // GLSL ES 3.0 Vertex Shader with Instancing
4
4
  const VERTEX_SHADER = /* glsl */ `#version 300 es
5
5
  precision mediump float;
@@ -288,8 +288,8 @@ export class WebGL2Renderer {
288
288
  const layer = instanceCount;
289
289
  // Upload bitmap data to texture array layer
290
290
  this.gl.pixelStorei(this.gl.UNPACK_ROW_LENGTH, img.stride);
291
- if (IS_FIREFOX) {
292
- // HACK 3 [see above for explanation]
291
+ if (IS_FIREFOX || IS_SAFARI) {
292
+ // HACK 3 [see util.ts for explanation]
293
293
  const sourceView = new Uint8Array(heap.buffer, img.bitmap, img.stride * img.h);
294
294
  const bitmapData = new Uint8Array(sourceView);
295
295
  this.gl.texSubImage3D(this.gl.TEXTURE_2D_ARRAY, 0, 0, 0, layer, // x, y, z offset
@@ -1 +1 @@
1
- {"version":3,"file":"webgl2-renderer.js","sourceRoot":"","sources":["../../../src/worker/renderers/webgl2-renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webgl2-renderer.js","sourceRoot":"","sources":["../../../src/worker/renderers/webgl2-renderer.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export type ASSImage = Omit<ASS_Image, keyof ClassHandle>;
5
5
  export declare const WEIGHT_MAP: readonly ["thin", "extralight", "light", "regular", "medium", "semibold", "bold", "extrabold", "black", "ultrablack"];
6
6
  export type WeightValue = typeof WEIGHT_MAP[number];
7
7
  export declare const IS_FIREFOX: boolean;
8
+ export declare const IS_SAFARI: boolean;
8
9
  export declare const LIBASS_YCBCR_MAP: readonly [null, "BT601", null, "BT601", "BT601", "BT709", "BT709", "SMPTE240M", "SMPTE240M", "FCC", "FCC"];
9
10
  export declare function _applyKeys<T extends (ASSEvent | ASSStyle)>(input: T, output: T): void;
10
11
  export declare const _fetch: typeof fetch;
@@ -11,7 +11,9 @@ export const WEIGHT_MAP = [
11
11
  'black',
12
12
  'ultrablack'
13
13
  ];
14
- export const IS_FIREFOX = navigator.userAgent.toLowerCase().includes('firefox');
14
+ const UA = navigator.userAgent.toLowerCase();
15
+ export const IS_FIREFOX = UA.includes('firefox');
16
+ export const IS_SAFARI = /applewebkit\/[\d.]+ \(khtml, like gecko\)(?!.*chrome\/)/.test(UA);
15
17
  const a = 'BT601';
16
18
  const b = 'BT709';
17
19
  const c = 'SMPTE240M';
@@ -28,13 +30,13 @@ export async function fetchtext(url) {
28
30
  return await res.text();
29
31
  }
30
32
  export const THREAD_COUNT = !IS_FIREFOX && self.crossOriginIsolated ? Math.min(Math.max(1, navigator.hardwareConcurrency - 2), 8) : 1;
31
- // @ts-expect-error new experimental API
32
33
  export const SUPPORTS_GROWTH = !!WebAssembly.Memory.prototype.toResizableBuffer;
33
34
  // HACK: 3 memory hacks to support here:
34
35
  // 1. Chrome WASM Growable memory which can use a reference to the buffer to fix visual artifacts, which happen both with multithreading or without [fastest]
35
36
  // 2. Chrome WASM non-growable, but mult-threaded only memory which needs to re-create the HEAPU8 on growth because of race conditions [medium]
36
37
  // 3. Firefox non-growable memory which needs a copy of the data into a non-resizable buffer and can't use a reference [fastest single threaded, but only on Firefox, on Chrome this is slowest]
37
- export const SHOULD_REFERENCE_MEMORY = !IS_FIREFOX && (SUPPORTS_GROWTH || THREAD_COUNT > 1);
38
+ // Additionally safari is inconsistent with this, sometimes it works with sharedarraybuffers, and sometimes it doesn't, probably some version compat diffs?
39
+ export const SHOULD_REFERENCE_MEMORY = !IS_FIREFOX && !IS_SAFARI && (SUPPORTS_GROWTH || THREAD_COUNT > 1);
38
40
  export const IDENTITY_MATRIX = new Float32Array([
39
41
  1, 0, 0,
40
42
  0, 1, 0,
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/worker/util.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/worker/util.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jassub",
3
- "version": "2.4.2",
3
+ "version": "2.5.0",
4
4
  "description": "The Fastest JavaScript SSA/ASS Subtitle Renderer For Browsers",
5
5
  "main": "dist/jassub.js",
6
6
  "type": "module",
package/src/debug.ts CHANGED
@@ -45,7 +45,7 @@ export class Debug {
45
45
  'color: #888'
46
46
  )
47
47
 
48
- _endFrame (meta: VideoFrameCallbackMetadata) {
48
+ _endFrame (meta: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>) {
49
49
  ++this.presentedFrames
50
50
  const fps = this.fps(1)
51
51
  const now = performance.now()
package/src/jassub.ts CHANGED
@@ -14,7 +14,7 @@ declare const self: typeof globalThis & {
14
14
  queryLocalFonts: (opts?: { postscriptNames?: string[] }) => ReturnType<typeof queryRemoteFonts>
15
15
  }
16
16
 
17
- const webYCbCrMap = {
17
+ export const webYCbCrMap = {
18
18
  rgb: 'RGB',
19
19
  bt709: 'BT709',
20
20
  // these might not be exactly correct? oops?
@@ -65,15 +65,13 @@ export default class JASSUB {
65
65
  _videoHeight = 0
66
66
  _videoColorSpace: string | null = null
67
67
  _canvas
68
- _canvasParent
69
- _ctrl = new AbortController()
70
68
  _ro = new ResizeObserver(async () => {
71
69
  await this.ready
72
70
  this.resize()
73
71
  })
74
72
 
75
73
  _destroyed = false
76
- _lastDemandTime!: VideoFrameCallbackMetadata
74
+ _lastDemandTime!: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>
77
75
  _skipped = false
78
76
  _worker
79
77
  constructor (opts: JASSUBOptions) {
@@ -87,16 +85,11 @@ export default class JASSUB {
87
85
  this._video = opts.video
88
86
  this._canvas = opts.canvas ?? document.createElement('canvas')
89
87
  if (this._video && !opts.canvas) {
90
- this._canvasParent = document.createElement('div')
91
- this._canvasParent.className = 'JASSUB'
92
- this._canvasParent.style.position = 'relative'
93
-
94
- this._canvas.style.display = 'block'
88
+ this._canvas.className = 'JASSUB'
95
89
  this._canvas.style.position = 'absolute'
96
90
  this._canvas.style.pointerEvents = 'none'
97
- this._canvasParent.appendChild(this._canvas)
98
91
 
99
- this._video.insertAdjacentElement('afterend', this._canvasParent)
92
+ this._video.insertAdjacentElement('afterend', this._canvas)
100
93
  }
101
94
 
102
95
  const ctrl = this._canvas.transferControlToOffscreen()
@@ -141,7 +134,11 @@ export default class JASSUB {
141
134
  await this.renderer.ready()
142
135
  })()
143
136
 
144
- if (this._video) this.setVideo(this._video)
137
+ if (this._video) {
138
+ this.setVideo(this._video)
139
+ } else {
140
+ this._ro.observe(this._canvas)
141
+ }
145
142
  this._worker.postMessage({ name: 'offscreenCanvas', ctrl }, [ctrl])
146
143
  }
147
144
 
@@ -160,102 +157,88 @@ export default class JASSUB {
160
157
  if (!(module instanceof WebAssembly.Module) || !(new WebAssembly.Instance(module) instanceof WebAssembly.Instance)) throw new Error('WASM not supported')
161
158
  }
162
159
 
163
- async resize (forceRepaint = !!this._video?.paused, width = 0, height = 0, top = 0, left = 0) {
164
- if ((!width || !height) && this._video) {
165
- const videoSize = this._getVideoPosition()
166
- let renderSize = null
167
- // support anamorphic video
168
- if (this._videoWidth) {
169
- const widthRatio = this._video.videoWidth / this._videoWidth
170
- const heightRatio = this._video.videoHeight / this._videoHeight
171
- renderSize = this._computeCanvasSize((videoSize.width || 0) / widthRatio, (videoSize.height || 0) / heightRatio)
172
- } else {
173
- renderSize = this._computeCanvasSize(videoSize.width || 0, videoSize.height || 0)
174
- }
175
- width = renderSize.width
176
- height = renderSize.height
177
- if (this._canvasParent) {
178
- top = videoSize.y - (this._canvasParent.getBoundingClientRect().top - this._video.getBoundingClientRect().top)
179
- left = videoSize.x
180
- }
181
- this._canvas.style.width = videoSize.width + 'px'
182
- this._canvas.style.height = videoSize.height + 'px'
160
+ async resize (forceRepaint = !!this._video?.paused, renderWidth = 0, renderHeight = 0) {
161
+ const videoWidth = this._video?.videoWidth ?? this._videoWidth
162
+ const videoHeight = this._video?.videoHeight ?? this._videoHeight
163
+ const videoSize = this._getElementBoundingBox(this._video ?? this._canvas, videoWidth, videoHeight)
164
+
165
+ if (!renderWidth || !renderHeight) {
166
+ // || 1 for divide by zero safety
167
+ const widthScale = (this._videoWidth / videoWidth) || 1
168
+ const heightScale = (this._videoHeight / videoHeight) || 1
169
+
170
+ const { width, height } = this._computeRenderSize(videoSize.width * widthScale, videoSize.height * heightScale)
171
+ renderWidth = Math.round(width)
172
+ renderHeight = Math.round(height)
183
173
  }
184
174
 
185
- if (this._canvasParent) {
186
- this._canvas.style.top = top + 'px'
187
- this._canvas.style.left = left + 'px'
175
+ if (this._video) {
176
+ this._canvas.style.width = Math.round(videoSize.width) + 'px'
177
+ this._canvas.style.height = Math.round(videoSize.height) + 'px'
178
+ this._canvas.style.top = videoSize.y + 'px'
179
+ this._canvas.style.left = videoSize.x + 'px'
188
180
  }
189
181
 
190
182
  await this.renderer._resizeCanvas(
191
- width,
192
- height,
193
- (this._videoWidth || this._video?.videoWidth) ?? width,
194
- (this._videoHeight || this._video?.videoHeight) ?? height
183
+ renderWidth,
184
+ renderHeight,
185
+ this._videoWidth || renderWidth,
186
+ this._videoHeight || renderHeight
195
187
  )
196
188
 
197
189
  if (this._lastDemandTime) await this._demandRender(forceRepaint)
198
190
  }
199
191
 
200
- _getVideoPosition (width = this._video!.videoWidth, height = this._video!.videoHeight) {
201
- const videoRatio = width / height
202
- const { offsetWidth, offsetHeight } = this._video!
203
- const elementRatio = offsetWidth / offsetHeight
204
- width = offsetWidth
205
- height = offsetHeight
192
+ _getElementBoundingBox (el: Element, videoWidth: number, videoHeight: number) {
193
+ const { width, height, x, y } = el.getBoundingClientRect()
194
+
195
+ const videoRatio = videoWidth / videoHeight
196
+ const elementRatio = width / height
197
+
206
198
  if (elementRatio > videoRatio) {
207
- width = Math.floor(offsetHeight * videoRatio)
199
+ videoHeight = height
200
+ videoWidth = height * videoRatio
208
201
  } else {
209
- height = Math.floor(offsetWidth / videoRatio)
202
+ videoHeight = width / videoRatio
203
+ videoWidth = width
210
204
  }
211
205
 
212
- const x = (offsetWidth - width) / 2
213
- const y = (offsetHeight - height) / 2
214
-
215
- return { width, height, x, y }
206
+ return { x: x + (width - videoWidth) / 2, y: y + (height - videoHeight) / 2, width: videoWidth, height: videoHeight }
216
207
  }
217
208
 
218
- _computeCanvasSize (width = 0, height = 0) {
209
+ _computeRenderSize (width = 0, height = 0) {
210
+ if (height <= 0 || width <= 0) return { width: 0, height: 0 }
211
+
219
212
  const scalefactor = this.prescaleFactor <= 0 ? 1.0 : this.prescaleFactor
220
213
  const ratio = self.devicePixelRatio || 1
221
214
 
222
- if (height <= 0 || width <= 0) {
223
- width = 0
224
- height = 0
225
- } else {
226
- const sgn = scalefactor < 1 ? -1 : 1
227
- let newH = height * ratio
228
- if (sgn * newH * scalefactor <= sgn * this.prescaleHeightLimit) {
229
- newH *= scalefactor
230
- } else if (sgn * newH < sgn * this.prescaleHeightLimit) {
231
- newH = this.prescaleHeightLimit
232
- }
215
+ const sgn = scalefactor < 1 ? -1 : 1
216
+ let newH = height * ratio
217
+ if (sgn * newH * scalefactor <= sgn * this.prescaleHeightLimit) {
218
+ newH *= scalefactor
219
+ } else if (sgn * newH < sgn * this.prescaleHeightLimit) {
220
+ newH = this.prescaleHeightLimit
221
+ }
233
222
 
234
- if (this.maxRenderHeight > 0 && newH > this.maxRenderHeight) newH = this.maxRenderHeight
223
+ if (this.maxRenderHeight > 0 && newH > this.maxRenderHeight) newH = this.maxRenderHeight
235
224
 
236
- width *= newH / height
237
- height = newH
238
- }
225
+ width *= newH / height
226
+ height = newH
239
227
 
240
228
  return { width, height }
241
229
  }
242
230
 
243
- async setVideo (video: HTMLVideoElement) {
244
- if (video instanceof HTMLVideoElement) {
245
- this._removeListeners()
246
- this._video = video
247
- await this.ready
248
- this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data))
249
- // everything else is unreliable for this, loadedmetadata and loadeddata included.
250
- if ('VideoFrame' in globalThis) {
251
- video.addEventListener('loadedmetadata', () => this._updateColorSpace(), this._ctrl)
252
- if (video.readyState > 2) this._updateColorSpace()
253
- }
254
- if (video.videoWidth > 0) this.resize()
255
- this._ro.observe(video)
256
- } else {
257
- throw new Error('Video element invalid!')
231
+ async setVideo (target: HTMLVideoElement) {
232
+ this._removeListeners()
233
+ this._video = target
234
+ this._ro.observe(target)
235
+ if (typeof VideoFrame !== 'undefined') {
236
+ target.addEventListener('loadedmetadata', this._boundUpdateColorSpace)
237
+ this._updateColorSpace({ target })
258
238
  }
239
+
240
+ await this.ready
241
+ this._video.requestVideoFrameCallback((now, data) => this._handleRVFC(data))
259
242
  }
260
243
 
261
244
  async _getLocalFont (font: string, weight: WeightValue = 'regular') {
@@ -279,12 +262,16 @@ export default class JASSUB {
279
262
  _handleRVFC (data: VideoFrameCallbackMetadata) {
280
263
  if (this._destroyed) return
281
264
 
282
- this._lastDemandTime = data
283
- this._demandRender()
265
+ this.manualRender(data)
284
266
 
285
267
  this._video!.requestVideoFrameCallback((now, data) => this._handleRVFC(data))
286
268
  }
287
269
 
270
+ manualRender (data: Pick<VideoFrameCallbackMetadata, 'expectedDisplayTime' | 'width' | 'height' | 'mediaTime'>) {
271
+ this._lastDemandTime = data
272
+ return this._demandRender()
273
+ }
274
+
288
275
  async _demandRender (repaint = false) {
289
276
  const { mediaTime, width, height } = this._lastDemandTime
290
277
  if (width !== this._videoWidth || height !== this._videoHeight) {
@@ -310,12 +297,15 @@ export default class JASSUB {
310
297
  if (this._skipped) await this._demandRender()
311
298
  }
312
299
 
313
- async _updateColorSpace () {
314
- await this.ready
300
+ _boundUpdateColorSpace = this._updateColorSpace.bind(this)
301
+
302
+ _updateColorSpace ({ target }: { target: EventTarget | null }) {
315
303
  this._video!.requestVideoFrameCallback(async () => {
304
+ if (this._destroyed || this._video !== target) return
316
305
  try {
317
- const frame = new VideoFrame(this._video!)
306
+ const frame = new VideoFrame(this._video)
318
307
  frame.close()
308
+ await this.ready
319
309
  await this.renderer._setColorSpace(webYCbCrMap[frame.colorSpace.matrix!])
320
310
  } catch (e) {
321
311
  // sources can be tainted
@@ -325,17 +315,14 @@ export default class JASSUB {
325
315
  }
326
316
 
327
317
  _removeListeners () {
328
- if (this._video) {
329
- if (this._ro) this._ro.unobserve(this._video)
330
- this._ctrl.abort()
331
- this._ctrl = new AbortController()
332
- }
318
+ this._ro.disconnect()
319
+ this._video?.removeEventListener('loadedmetadata', this._boundUpdateColorSpace)
333
320
  }
334
321
 
335
322
  async destroy () {
336
323
  if (this._destroyed) return
337
324
  this._destroyed = true
338
- if (this._video && this._canvasParent) this._video.parentNode?.removeChild(this._canvasParent)
325
+ this._canvas.remove()
339
326
  this._removeListeners()
340
327
  await this.renderer?.[releaseProxy]()
341
328
  this._worker.terminate()
@@ -1,5 +1,5 @@
1
1
  // fallback for browsers that don't support WebGL2
2
- import { colorMatrixConversionMap, IDENTITY_MATRIX, IS_FIREFOX, SHOULD_REFERENCE_MEMORY, type ASSImage } from '../util.ts'
2
+ import { colorMatrixConversionMap, IDENTITY_MATRIX, IS_FIREFOX, IS_SAFARI, SHOULD_REFERENCE_MEMORY, type ASSImage } from '../util.ts'
3
3
 
4
4
  declare const self: DedicatedWorkerGlobalScope &
5
5
  typeof globalThis & {
@@ -351,8 +351,8 @@ export class WebGL2Renderer {
351
351
  // Upload bitmap data to texture array layer
352
352
  this.gl.pixelStorei(this.gl.UNPACK_ROW_LENGTH, img.stride)
353
353
 
354
- if (IS_FIREFOX) {
355
- // HACK 3 [see above for explanation]
354
+ if (IS_FIREFOX || IS_SAFARI) {
355
+ // HACK 3 [see util.ts for explanation]
356
356
  const sourceView = new Uint8Array(heap.buffer, img.bitmap, img.stride * img.h)
357
357
  const bitmapData = new Uint8Array(sourceView)
358
358
 
@@ -21,7 +21,9 @@ export const WEIGHT_MAP = [
21
21
 
22
22
  export type WeightValue = typeof WEIGHT_MAP[number]
23
23
 
24
- export const IS_FIREFOX = navigator.userAgent.toLowerCase().includes('firefox')
24
+ const UA = navigator.userAgent.toLowerCase()
25
+ export const IS_FIREFOX = UA.includes('firefox')
26
+ export const IS_SAFARI = /applewebkit\/[\d.]+ \(khtml, like gecko\)(?!.*chrome\/)/.test(UA)
25
27
 
26
28
  const a = 'BT601'
27
29
  const b = 'BT709'
@@ -44,14 +46,14 @@ export async function fetchtext (url: string) {
44
46
 
45
47
  export const THREAD_COUNT = !IS_FIREFOX && self.crossOriginIsolated ? Math.min(Math.max(1, navigator.hardwareConcurrency - 2), 8) : 1
46
48
 
47
- // @ts-expect-error new experimental API
48
49
  export const SUPPORTS_GROWTH = !!WebAssembly.Memory.prototype.toResizableBuffer
49
50
 
50
51
  // HACK: 3 memory hacks to support here:
51
52
  // 1. Chrome WASM Growable memory which can use a reference to the buffer to fix visual artifacts, which happen both with multithreading or without [fastest]
52
53
  // 2. Chrome WASM non-growable, but mult-threaded only memory which needs to re-create the HEAPU8 on growth because of race conditions [medium]
53
54
  // 3. Firefox non-growable memory which needs a copy of the data into a non-resizable buffer and can't use a reference [fastest single threaded, but only on Firefox, on Chrome this is slowest]
54
- export const SHOULD_REFERENCE_MEMORY = !IS_FIREFOX && (SUPPORTS_GROWTH || THREAD_COUNT > 1)
55
+ // Additionally safari is inconsistent with this, sometimes it works with sharedarraybuffers, and sometimes it doesn't, probably some version compat diffs?
56
+ export const SHOULD_REFERENCE_MEMORY = !IS_FIREFOX && !IS_SAFARI && (SUPPORTS_GROWTH || THREAD_COUNT > 1)
55
57
 
56
58
  export const IDENTITY_MATRIX = new Float32Array([
57
59
  1, 0, 0,