libbitsub 1.1.1 → 1.2.1
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 +64 -29
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ts/renderers.d.ts +13 -0
- package/dist/ts/renderers.d.ts.map +1 -1
- package/dist/ts/renderers.js +95 -4
- package/dist/ts/renderers.js.map +1 -1
- package/dist/ts/types.d.ts +4 -0
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/webgpu-renderer.d.ts +63 -0
- package/dist/ts/webgpu-renderer.d.ts.map +1 -0
- package/dist/ts/webgpu-renderer.js +405 -0
- package/dist/ts/webgpu-renderer.js.map +1 -0
- package/dist/wrapper.d.ts +1 -0
- package/dist/wrapper.d.ts.map +1 -1
- package/dist/wrapper.js +2 -0
- package/dist/wrapper.js.map +1 -1
- package/package.json +4 -1
- package/pkg/README.md +64 -29
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/package.json +1 -1
- package/src/wrapper.ts +3 -0
package/README.md
CHANGED
|
@@ -8,6 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
|
|
|
8
8
|
|
|
9
9
|
- **PGS (Blu-ray)** subtitle parsing and rendering
|
|
10
10
|
- **VobSub (DVD)** subtitle parsing and rendering
|
|
11
|
+
- **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D fallback
|
|
11
12
|
- **High-performance** Rust-based rendering engine compiled to WebAssembly
|
|
12
13
|
- **Zero-copy** data transfer between JS and WASM where possible
|
|
13
14
|
- **Caching** for decoded bitmaps to optimize repeated rendering
|
|
@@ -23,12 +24,20 @@ https://gist.github.com/user-attachments/assets/55ac8e11-1964-4fb9-923e-dcac82dc
|
|
|
23
24
|
|
|
24
25
|
https://gist.github.com/user-attachments/assets/a89ae9fe-23e4-4bc3-8cad-16a3f0fea665
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
### Installation
|
|
27
28
|
|
|
29
|
+
**npm / bun**
|
|
28
30
|
```bash
|
|
31
|
+
npm install libbitsub
|
|
32
|
+
# or
|
|
29
33
|
bun add libbitsub
|
|
30
34
|
```
|
|
31
35
|
|
|
36
|
+
**JSR (Deno)**
|
|
37
|
+
```bash
|
|
38
|
+
deno add jsr:@altq/libbitsub
|
|
39
|
+
```
|
|
40
|
+
|
|
32
41
|
### Setup for Web Workers (Recommended)
|
|
33
42
|
|
|
34
43
|
For best performance with large subtitle files, copy the WASM files to your public folder so Web Workers can access them:
|
|
@@ -207,20 +216,46 @@ setInterval(() => {
|
|
|
207
216
|
|
|
208
217
|
**Stats Reference:**
|
|
209
218
|
|
|
210
|
-
| Property
|
|
211
|
-
|
|
212
|
-
| `framesRendered` | number
|
|
213
|
-
| `framesDropped`
|
|
214
|
-
| `avgRenderTime`
|
|
215
|
-
| `maxRenderTime`
|
|
216
|
-
| `minRenderTime`
|
|
217
|
-
| `lastRenderTime` | number
|
|
218
|
-
| `renderFps`
|
|
219
|
-
| `usingWorker`
|
|
220
|
-
| `cachedFrames`
|
|
221
|
-
| `pendingRenders` | number
|
|
222
|
-
| `totalEntries`
|
|
223
|
-
| `currentIndex`
|
|
219
|
+
| Property | Type | Description |
|
|
220
|
+
| ---------------- | ------- | -------------------------------------------------------------- |
|
|
221
|
+
| `framesRendered` | number | Total frames rendered since initialization |
|
|
222
|
+
| `framesDropped` | number | Frames dropped due to slow rendering (>16.67ms) |
|
|
223
|
+
| `avgRenderTime` | number | Average render time in milliseconds (rolling 60-sample window) |
|
|
224
|
+
| `maxRenderTime` | number | Maximum render time in milliseconds |
|
|
225
|
+
| `minRenderTime` | number | Minimum render time in milliseconds |
|
|
226
|
+
| `lastRenderTime` | number | Most recent render time in milliseconds |
|
|
227
|
+
| `renderFps` | number | Current renders per second (based on last 1 second) |
|
|
228
|
+
| `usingWorker` | boolean | Whether rendering is using Web Worker (off-main-thread) |
|
|
229
|
+
| `cachedFrames` | number | Number of decoded frames currently cached |
|
|
230
|
+
| `pendingRenders` | number | Number of frames currently being decoded asynchronously |
|
|
231
|
+
| `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
|
|
232
|
+
| `currentIndex` | number | Index of the currently displayed subtitle |
|
|
233
|
+
|
|
234
|
+
### WebGPU Rendering
|
|
235
|
+
|
|
236
|
+
libbitsub automatically uses WebGPU for GPU-accelerated rendering when available, with automatic fallback to Canvas2D:
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
|
|
240
|
+
|
|
241
|
+
// Check WebGPU support
|
|
242
|
+
if (isWebGPUSupported()) {
|
|
243
|
+
console.log('WebGPU available - GPU-accelerated rendering enabled')
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Configure WebGPU preference
|
|
247
|
+
const renderer = new PgsRenderer({
|
|
248
|
+
video: videoElement,
|
|
249
|
+
subUrl: '/subtitles/movie.sup',
|
|
250
|
+
preferWebGPU: true, // default: true
|
|
251
|
+
onWebGPUFallback: () => console.log('Fell back to Canvas2D')
|
|
252
|
+
})
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Options:**
|
|
256
|
+
|
|
257
|
+
- `preferWebGPU` (boolean): Enable WebGPU rendering if available. Default: `true`
|
|
258
|
+
- `onWebGPUFallback` (function): Callback when WebGPU is unavailable and falls back to Canvas2D
|
|
224
259
|
|
|
225
260
|
## Low-Level API (Programmatic Use)
|
|
226
261
|
|
|
@@ -398,18 +433,18 @@ interface SubtitleDisplaySettings {
|
|
|
398
433
|
|
|
399
434
|
```typescript
|
|
400
435
|
interface SubtitleRendererStats {
|
|
401
|
-
framesRendered: number
|
|
402
|
-
framesDropped: number
|
|
403
|
-
avgRenderTime: number
|
|
404
|
-
maxRenderTime: number
|
|
405
|
-
minRenderTime: number
|
|
406
|
-
lastRenderTime: number
|
|
407
|
-
renderFps: number
|
|
408
|
-
usingWorker: boolean
|
|
409
|
-
cachedFrames: number
|
|
410
|
-
pendingRenders: number
|
|
411
|
-
totalEntries: number
|
|
412
|
-
currentIndex: number
|
|
436
|
+
framesRendered: number // Total frames rendered since initialization
|
|
437
|
+
framesDropped: number // Frames dropped due to slow rendering
|
|
438
|
+
avgRenderTime: number // Average render time in milliseconds
|
|
439
|
+
maxRenderTime: number // Maximum render time in milliseconds
|
|
440
|
+
minRenderTime: number // Minimum render time in milliseconds
|
|
441
|
+
lastRenderTime: number // Last render time in milliseconds
|
|
442
|
+
renderFps: number // Current FPS (renders per second)
|
|
443
|
+
usingWorker: boolean // Whether rendering is using web worker
|
|
444
|
+
cachedFrames: number // Number of cached frames
|
|
445
|
+
pendingRenders: number // Number of pending renders
|
|
446
|
+
totalEntries: number // Total subtitle entries/display sets
|
|
447
|
+
currentIndex: number // Current subtitle index being displayed
|
|
413
448
|
}
|
|
414
449
|
```
|
|
415
450
|
|
|
@@ -433,5 +468,5 @@ interface SubtitleCompositionData {
|
|
|
433
468
|
|
|
434
469
|
Licensed under either of
|
|
435
470
|
|
|
436
|
-
- Apache License, Version 2.0
|
|
437
|
-
- MIT license
|
|
471
|
+
- Apache License, Version 2.0
|
|
472
|
+
- MIT license
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { PgsRenderer, VobSubRenderer, type VideoSubtitleOptions, type VideoVobSubOptions, type SubtitleRendererStats } from './wrapper';
|
|
7
7
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './wrapper';
|
|
8
|
-
export { initWasm, isWasmInitialized, type SubtitleData, type SubtitleCompositionData, type SubtitleDisplaySettings } from './wrapper';
|
|
8
|
+
export { initWasm, isWasmInitialized, isWebGPUSupported, type SubtitleData, type SubtitleCompositionData, type SubtitleDisplaySettings } from './wrapper';
|
|
9
9
|
export type { RenderResult, SubtitleFrame, VobSubFrame } from './wrapper';
|
|
10
10
|
export { PGSRenderer, VobsubRenderer, UnifiedSubtitleRenderer } from './wrapper';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAA;AAGlB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAGlF,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,WAAW,CAAA;AAGlB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,WAAW,EACX,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC3B,MAAM,WAAW,CAAA;AAGlB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAGlF,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC7B,MAAM,WAAW,CAAA;AAGlB,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAGzE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ export { PgsRenderer, VobSubRenderer } from './wrapper';
|
|
|
8
8
|
// Low-level parsers for programmatic use
|
|
9
9
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './wrapper';
|
|
10
10
|
// Utility exports
|
|
11
|
-
export { initWasm, isWasmInitialized } from './wrapper';
|
|
11
|
+
export { initWasm, isWasmInitialized, isWebGPUSupported } from './wrapper';
|
|
12
12
|
// Legacy aliases
|
|
13
13
|
export { PGSRenderer, VobsubRenderer, UnifiedSubtitleRenderer } from './wrapper';
|
|
14
14
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4EAA4E;AAC5E,OAAO,EACL,WAAW,EACX,cAAc,EAIf,MAAM,WAAW,CAAA;AAElB,yCAAyC;AACzC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAElF,kBAAkB;AAClB,OAAO,EACL,QAAQ,EACR,iBAAiB,EAIlB,MAAM,WAAW,CAAA;AAKlB,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4EAA4E;AAC5E,OAAO,EACL,WAAW,EACX,cAAc,EAIf,MAAM,WAAW,CAAA;AAElB,yCAAyC;AACzC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAElF,kBAAkB;AAClB,OAAO,EACL,QAAQ,EACR,iBAAiB,EACjB,iBAAiB,EAIlB,MAAM,WAAW,CAAA;AAKlB,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/ts/renderers.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Handles canvas overlay, video sync, and subtitle fetching.
|
|
4
4
|
*/
|
|
5
5
|
import type { SubtitleData, SubtitleDisplaySettings, VideoSubtitleOptions, VideoVobSubOptions } from './types';
|
|
6
|
+
import { WebGPURenderer } from './webgpu-renderer';
|
|
6
7
|
/** Performance statistics for subtitle renderer */
|
|
7
8
|
export interface SubtitleRendererStats {
|
|
8
9
|
/** Total frames rendered since initialization */
|
|
@@ -50,6 +51,10 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
50
51
|
protected lastRenderedData: SubtitleData | null;
|
|
51
52
|
/** Display settings for subtitle rendering */
|
|
52
53
|
protected displaySettings: SubtitleDisplaySettings;
|
|
54
|
+
protected webgpuRenderer: WebGPURenderer | null;
|
|
55
|
+
protected useWebGPU: boolean;
|
|
56
|
+
protected preferWebGPU: boolean;
|
|
57
|
+
protected onWebGPUFallback?: () => void;
|
|
53
58
|
protected perfStats: {
|
|
54
59
|
framesRendered: number;
|
|
55
60
|
framesDropped: number;
|
|
@@ -75,6 +80,10 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
75
80
|
protected init(): Promise<void>;
|
|
76
81
|
/** Create the canvas overlay positioned over the video. */
|
|
77
82
|
protected createCanvas(): void;
|
|
83
|
+
/** Initialize WebGPU renderer. */
|
|
84
|
+
private initWebGPU;
|
|
85
|
+
/** Initialize Canvas2D renderer. */
|
|
86
|
+
private initCanvas2D;
|
|
78
87
|
/** Called when video seeks. */
|
|
79
88
|
protected onSeek(): void;
|
|
80
89
|
/** Calculate the actual video content bounds, accounting for letterboxing/pillarboxing */
|
|
@@ -96,6 +105,10 @@ declare abstract class BaseVideoSubtitleRenderer {
|
|
|
96
105
|
protected startRenderLoop(): void;
|
|
97
106
|
/** Render a subtitle frame to the canvas. */
|
|
98
107
|
protected renderFrame(time: number, index: number): void;
|
|
108
|
+
/** Render using WebGPU. */
|
|
109
|
+
private renderFrameWebGPU;
|
|
110
|
+
/** Render using Canvas2D. */
|
|
111
|
+
private renderFrameCanvas2D;
|
|
99
112
|
/** Dispose of all resources. */
|
|
100
113
|
dispose(): void;
|
|
101
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/renderers.js
CHANGED
|
@@ -6,6 +6,7 @@ import { initWasm } from './wasm';
|
|
|
6
6
|
import { getOrCreateWorker, sendToWorker } from './worker';
|
|
7
7
|
import { binarySearchTimestamp, convertFrameData, createWorkerState } from './utils';
|
|
8
8
|
import { PgsParser, VobSubParserLowLevel } from './parsers';
|
|
9
|
+
import { WebGPURenderer, isWebGPUSupported } from './webgpu-renderer';
|
|
9
10
|
/** Default display settings */
|
|
10
11
|
const DEFAULT_DISPLAY_SETTINGS = {
|
|
11
12
|
scale: 1.0,
|
|
@@ -31,6 +32,11 @@ class BaseVideoSubtitleRenderer {
|
|
|
31
32
|
lastRenderedData = null;
|
|
32
33
|
/** Display settings for subtitle rendering */
|
|
33
34
|
displaySettings = { ...DEFAULT_DISPLAY_SETTINGS };
|
|
35
|
+
// WebGPU renderer (optional, falls back to Canvas2D if unavailable)
|
|
36
|
+
webgpuRenderer = null;
|
|
37
|
+
useWebGPU = false;
|
|
38
|
+
preferWebGPU = true;
|
|
39
|
+
onWebGPUFallback;
|
|
34
40
|
// Performance tracking
|
|
35
41
|
perfStats = {
|
|
36
42
|
framesRendered: 0,
|
|
@@ -43,6 +49,8 @@ class BaseVideoSubtitleRenderer {
|
|
|
43
49
|
constructor(options) {
|
|
44
50
|
this.video = options.video;
|
|
45
51
|
this.subUrl = options.subUrl;
|
|
52
|
+
this.preferWebGPU = options.preferWebGPU !== false; // Default to true
|
|
53
|
+
this.onWebGPUFallback = options.onWebGPUFallback;
|
|
46
54
|
}
|
|
47
55
|
/** Get current display settings */
|
|
48
56
|
getDisplaySettings() {
|
|
@@ -116,7 +124,13 @@ class BaseVideoSubtitleRenderer {
|
|
|
116
124
|
}
|
|
117
125
|
parent.appendChild(this.canvas);
|
|
118
126
|
}
|
|
119
|
-
|
|
127
|
+
// Try WebGPU first if preferred
|
|
128
|
+
if (this.preferWebGPU && isWebGPUSupported()) {
|
|
129
|
+
this.initWebGPU();
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
this.initCanvas2D();
|
|
133
|
+
}
|
|
120
134
|
this.updateCanvasSize();
|
|
121
135
|
this.resizeObserver = new ResizeObserver(() => this.updateCanvasSize());
|
|
122
136
|
this.resizeObserver.observe(this.video);
|
|
@@ -127,6 +141,37 @@ class BaseVideoSubtitleRenderer {
|
|
|
127
141
|
this.onSeek();
|
|
128
142
|
});
|
|
129
143
|
}
|
|
144
|
+
/** Initialize WebGPU renderer. */
|
|
145
|
+
async initWebGPU() {
|
|
146
|
+
try {
|
|
147
|
+
this.webgpuRenderer = new WebGPURenderer();
|
|
148
|
+
await this.webgpuRenderer.init();
|
|
149
|
+
if (!this.canvas)
|
|
150
|
+
return;
|
|
151
|
+
const bounds = this.getVideoContentBounds();
|
|
152
|
+
const width = Math.max(1, bounds.width * window.devicePixelRatio);
|
|
153
|
+
const height = Math.max(1, bounds.height * window.devicePixelRatio);
|
|
154
|
+
await this.webgpuRenderer.setCanvas(this.canvas, width, height);
|
|
155
|
+
this.useWebGPU = true;
|
|
156
|
+
console.log('[libbitsub] Using WebGPU renderer');
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.warn('[libbitsub] WebGPU init failed, falling back to Canvas2D:', error);
|
|
160
|
+
this.webgpuRenderer?.destroy();
|
|
161
|
+
this.webgpuRenderer = null;
|
|
162
|
+
this.useWebGPU = false;
|
|
163
|
+
this.initCanvas2D();
|
|
164
|
+
this.onWebGPUFallback?.();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/** Initialize Canvas2D renderer. */
|
|
168
|
+
initCanvas2D() {
|
|
169
|
+
if (!this.canvas)
|
|
170
|
+
return;
|
|
171
|
+
this.ctx = this.canvas.getContext('2d');
|
|
172
|
+
this.useWebGPU = false;
|
|
173
|
+
console.log('[libbitsub] Using Canvas2D renderer');
|
|
174
|
+
}
|
|
130
175
|
/** Called when video seeks. */
|
|
131
176
|
onSeek() { }
|
|
132
177
|
/** Calculate the actual video content bounds, accounting for letterboxing/pillarboxing */
|
|
@@ -171,13 +216,19 @@ class BaseVideoSubtitleRenderer {
|
|
|
171
216
|
const bounds = this.getVideoContentBounds();
|
|
172
217
|
const width = bounds.width > 0 ? bounds.width : this.video.videoWidth || 1920;
|
|
173
218
|
const height = bounds.height > 0 ? bounds.height : this.video.videoHeight || 1080;
|
|
174
|
-
|
|
175
|
-
|
|
219
|
+
const pixelWidth = Math.max(1, width * window.devicePixelRatio);
|
|
220
|
+
const pixelHeight = Math.max(1, height * window.devicePixelRatio);
|
|
221
|
+
this.canvas.width = pixelWidth;
|
|
222
|
+
this.canvas.height = pixelHeight;
|
|
176
223
|
// Position canvas to match video content area
|
|
177
224
|
this.canvas.style.left = `${bounds.x}px`;
|
|
178
225
|
this.canvas.style.top = `${bounds.y}px`;
|
|
179
226
|
this.canvas.style.width = `${bounds.width}px`;
|
|
180
227
|
this.canvas.style.height = `${bounds.height}px`;
|
|
228
|
+
// Update WebGPU renderer size if active
|
|
229
|
+
if (this.useWebGPU && this.webgpuRenderer) {
|
|
230
|
+
this.webgpuRenderer.updateSize(pixelWidth, pixelHeight);
|
|
231
|
+
}
|
|
181
232
|
this.lastRenderedIndex = -1;
|
|
182
233
|
this.lastRenderedTime = -1;
|
|
183
234
|
}
|
|
@@ -222,7 +273,7 @@ class BaseVideoSubtitleRenderer {
|
|
|
222
273
|
}
|
|
223
274
|
/** Render a subtitle frame to the canvas. */
|
|
224
275
|
renderFrame(time, index) {
|
|
225
|
-
if (!this.
|
|
276
|
+
if (!this.canvas)
|
|
226
277
|
return;
|
|
227
278
|
// Get the data for this index
|
|
228
279
|
const data = index >= 0 ? this.renderAtIndex(index) : undefined;
|
|
@@ -237,6 +288,40 @@ class BaseVideoSubtitleRenderer {
|
|
|
237
288
|
return;
|
|
238
289
|
}
|
|
239
290
|
}
|
|
291
|
+
// Use WebGPU or Canvas2D based on availability
|
|
292
|
+
if (this.useWebGPU && this.webgpuRenderer) {
|
|
293
|
+
this.renderFrameWebGPU(data, index);
|
|
294
|
+
}
|
|
295
|
+
else {
|
|
296
|
+
this.renderFrameCanvas2D(data, index);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/** Render using WebGPU. */
|
|
300
|
+
renderFrameWebGPU(data, index) {
|
|
301
|
+
if (!this.webgpuRenderer || !this.canvas)
|
|
302
|
+
return;
|
|
303
|
+
// If no subtitle at this index, clear
|
|
304
|
+
if (index < 0 || !data || data.compositionData.length === 0) {
|
|
305
|
+
this.webgpuRenderer.clear();
|
|
306
|
+
this.lastRenderedData = null;
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
// Store for potential reuse
|
|
310
|
+
this.lastRenderedData = data;
|
|
311
|
+
// Calculate base scale factors
|
|
312
|
+
const baseScaleX = this.canvas.width / data.width;
|
|
313
|
+
const baseScaleY = this.canvas.height / data.height;
|
|
314
|
+
// Apply display settings
|
|
315
|
+
const { scale, verticalOffset } = this.displaySettings;
|
|
316
|
+
const scaleX = baseScaleX * scale;
|
|
317
|
+
const scaleY = baseScaleY * scale;
|
|
318
|
+
const offsetY = (verticalOffset / 100) * this.canvas.height;
|
|
319
|
+
this.webgpuRenderer.render(data.compositionData, data.width, data.height, scaleX, scaleY, offsetY);
|
|
320
|
+
}
|
|
321
|
+
/** Render using Canvas2D. */
|
|
322
|
+
renderFrameCanvas2D(data, index) {
|
|
323
|
+
if (!this.ctx || !this.canvas)
|
|
324
|
+
return;
|
|
240
325
|
// Clear canvas
|
|
241
326
|
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
242
327
|
// If no subtitle at this index, we're done
|
|
@@ -283,12 +368,18 @@ class BaseVideoSubtitleRenderer {
|
|
|
283
368
|
}
|
|
284
369
|
this.resizeObserver?.disconnect();
|
|
285
370
|
this.resizeObserver = null;
|
|
371
|
+
// Clean up WebGPU renderer
|
|
372
|
+
if (this.webgpuRenderer) {
|
|
373
|
+
this.webgpuRenderer.destroy();
|
|
374
|
+
this.webgpuRenderer = null;
|
|
375
|
+
}
|
|
286
376
|
this.canvas?.parentElement?.removeChild(this.canvas);
|
|
287
377
|
this.canvas = null;
|
|
288
378
|
this.ctx = null;
|
|
289
379
|
this.tempCanvas = null;
|
|
290
380
|
this.tempCtx = null;
|
|
291
381
|
this.lastRenderedData = null;
|
|
382
|
+
this.useWebGPU = false;
|
|
292
383
|
}
|
|
293
384
|
}
|
|
294
385
|
/**
|
package/dist/ts/renderers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../src/ts/renderers.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/types.d.ts
CHANGED
|
@@ -29,12 +29,16 @@ export interface VideoSubtitleOptions {
|
|
|
29
29
|
subUrl: string;
|
|
30
30
|
/** Worker URL (kept for API compatibility, not used in WASM version) */
|
|
31
31
|
workerUrl?: string;
|
|
32
|
+
/** Prefer WebGPU renderer if available (default: true) */
|
|
33
|
+
preferWebGPU?: boolean;
|
|
32
34
|
/** Callback when subtitle loading starts */
|
|
33
35
|
onLoading?: () => void;
|
|
34
36
|
/** Callback when subtitle loading completes */
|
|
35
37
|
onLoaded?: () => void;
|
|
36
38
|
/** Callback when subtitle loading fails */
|
|
37
39
|
onError?: (error: Error) => void;
|
|
40
|
+
/** Callback when WebGPU is unavailable and falling back to Canvas2D */
|
|
41
|
+
onWebGPUFallback?: () => void;
|
|
38
42
|
}
|
|
39
43
|
/** Options for VobSub video subtitle renderer. */
|
|
40
44
|
export interface VideoVobSubOptions extends VideoSubtitleOptions {
|
package/dist/ts/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,IAAI,oBAAoB,EACxC,SAAS,IAAI,aAAa,EAC1B,YAAY,IAAI,gBAAgB,EAChC,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAA;AAM/G,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,eAAe,EAAE,uBAAuB,EAAE,CAAA;CAC3C;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,+CAA+C;IAC/C,SAAS,EAAE,SAAS,CAAA;IACpB,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;IACT,4BAA4B;IAC5B,CAAC,EAAE,MAAM,CAAA;CACV;AAMD,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,qCAAqC;IACrC,KAAK,EAAE,gBAAgB,CAAA;IACvB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ts/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { SubtitleCompositionData } from './types';
|
|
2
|
+
interface TextureInfo {
|
|
3
|
+
texture: GPUTexture;
|
|
4
|
+
view: GPUTextureView;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Check if WebGPU is supported in the current browser.
|
|
10
|
+
*/
|
|
11
|
+
export declare function isWebGPUSupported(): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* WebGPU-based subtitle renderer.
|
|
14
|
+
* Uploads RGBA bitmap data to GPU textures and renders textured quads.
|
|
15
|
+
*/
|
|
16
|
+
export declare class WebGPURenderer {
|
|
17
|
+
device: GPUDevice | null;
|
|
18
|
+
context: GPUCanvasContext | null;
|
|
19
|
+
pipeline: GPURenderPipeline | null;
|
|
20
|
+
sampler: GPUSampler | null;
|
|
21
|
+
bindGroupLayout: GPUBindGroupLayout | null;
|
|
22
|
+
uniformBuffer: GPUBuffer | null;
|
|
23
|
+
quadDataBuffers: GPUBuffer[];
|
|
24
|
+
textures: TextureInfo[];
|
|
25
|
+
pendingDestroyTextures: GPUTexture[];
|
|
26
|
+
format: GPUTextureFormat;
|
|
27
|
+
private _canvas;
|
|
28
|
+
private _initPromise;
|
|
29
|
+
private _initialized;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the WebGPU renderer.
|
|
32
|
+
* Returns a promise that resolves when initialization is complete.
|
|
33
|
+
*/
|
|
34
|
+
init(): Promise<void>;
|
|
35
|
+
private _initDevice;
|
|
36
|
+
/**
|
|
37
|
+
* Configure the canvas for WebGPU rendering.
|
|
38
|
+
*/
|
|
39
|
+
setCanvas(canvas: HTMLCanvasElement, width: number, height: number): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Update canvas dimensions.
|
|
42
|
+
*/
|
|
43
|
+
updateSize(width: number, height: number): void;
|
|
44
|
+
private createTextureInfo;
|
|
45
|
+
/**
|
|
46
|
+
* Render subtitle compositions to the canvas.
|
|
47
|
+
*/
|
|
48
|
+
render(compositions: SubtitleCompositionData[], screenWidth: number, screenHeight: number, scaleX: number, scaleY: number, offsetY: number): void;
|
|
49
|
+
/**
|
|
50
|
+
* Clear the canvas.
|
|
51
|
+
*/
|
|
52
|
+
clear(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Check if renderer is initialized.
|
|
55
|
+
*/
|
|
56
|
+
get initialized(): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Destroy all resources.
|
|
59
|
+
*/
|
|
60
|
+
destroy(): void;
|
|
61
|
+
}
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=webgpu-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-renderer.d.ts","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAuEtD,UAAU,WAAW;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAO;IAC/B,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAO;IACvC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAO;IACzC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAO;IACjC,eAAe,EAAE,kBAAkB,GAAG,IAAI,CAAO;IAGjD,aAAa,EAAE,SAAS,GAAG,IAAI,CAAO;IAGtC,eAAe,EAAE,SAAS,EAAE,CAAK;IAGjC,QAAQ,EAAE,WAAW,EAAE,CAAK;IAC5B,sBAAsB,EAAE,UAAU,EAAE,CAAK;IAEzC,MAAM,EAAE,gBAAgB,CAAe;IAEvC,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,YAAY,CAAQ;IAE5B;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAMb,WAAW;IA0GzB;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BxF;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/C,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,MAAM,CACJ,YAAY,EAAE,uBAAuB,EAAE,EACvC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI;IA0HP;;OAEG;IACH,KAAK,IAAI,IAAI;IAqBb;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;OAEG;IACH,OAAO,IAAI,IAAI;CAwBhB"}
|
|
@@ -0,0 +1,405 @@
|
|
|
1
|
+
/// <reference types="@webgpu/types" />
|
|
2
|
+
// WGSL Vertex Shader
|
|
3
|
+
const VERTEX_SHADER = /* wgsl */ `
|
|
4
|
+
struct VertexOutput {
|
|
5
|
+
@builtin(position) position: vec4f,
|
|
6
|
+
@location(0) texCoord: vec2f,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
struct Uniforms {
|
|
10
|
+
resolution: vec2f,
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
struct QuadData {
|
|
14
|
+
destRect: vec4f, // x, y, w, h in pixels
|
|
15
|
+
texSize: vec4f, // texW, texH, 0, 0
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@group(0) @binding(0) var<uniform> uniforms: Uniforms;
|
|
19
|
+
@group(0) @binding(1) var<storage, read> quadData: QuadData;
|
|
20
|
+
|
|
21
|
+
// Quad vertices (two triangles)
|
|
22
|
+
const QUAD_POSITIONS = array<vec2f, 6>(
|
|
23
|
+
vec2f(0.0, 0.0),
|
|
24
|
+
vec2f(1.0, 0.0),
|
|
25
|
+
vec2f(0.0, 1.0),
|
|
26
|
+
vec2f(1.0, 0.0),
|
|
27
|
+
vec2f(1.0, 1.0),
|
|
28
|
+
vec2f(0.0, 1.0)
|
|
29
|
+
);
|
|
30
|
+
|
|
31
|
+
@vertex
|
|
32
|
+
fn vertexMain(@builtin(vertex_index) vertexIndex: u32) -> VertexOutput {
|
|
33
|
+
var output: VertexOutput;
|
|
34
|
+
|
|
35
|
+
let quadPos = QUAD_POSITIONS[vertexIndex];
|
|
36
|
+
let wh = quadData.destRect.zw;
|
|
37
|
+
|
|
38
|
+
// Calculate pixel position
|
|
39
|
+
let pixelPos = quadData.destRect.xy + quadPos * wh;
|
|
40
|
+
|
|
41
|
+
// Convert to clip space (-1 to 1)
|
|
42
|
+
var clipPos = (pixelPos / uniforms.resolution) * 2.0 - 1.0;
|
|
43
|
+
clipPos.y = -clipPos.y; // Flip Y for canvas coordinates
|
|
44
|
+
|
|
45
|
+
output.position = vec4f(clipPos, 0.0, 1.0);
|
|
46
|
+
output.texCoord = quadPos;
|
|
47
|
+
|
|
48
|
+
return output;
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
// WGSL Fragment Shader - sample RGBA texture directly
|
|
52
|
+
const FRAGMENT_SHADER = /* wgsl */ `
|
|
53
|
+
@group(0) @binding(2) var texSampler: sampler;
|
|
54
|
+
@group(0) @binding(3) var tex: texture_2d<f32>;
|
|
55
|
+
|
|
56
|
+
struct FragmentInput {
|
|
57
|
+
@location(0) texCoord: vec2f,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@fragment
|
|
61
|
+
fn fragmentMain(input: FragmentInput) -> @location(0) vec4f {
|
|
62
|
+
// Sample RGBA texture
|
|
63
|
+
let color = textureSample(tex, texSampler, input.texCoord);
|
|
64
|
+
|
|
65
|
+
// Output with premultiplied alpha
|
|
66
|
+
return vec4f(color.rgb * color.a, color.a);
|
|
67
|
+
}
|
|
68
|
+
`;
|
|
69
|
+
/**
|
|
70
|
+
* Check if WebGPU is supported in the current browser.
|
|
71
|
+
*/
|
|
72
|
+
export function isWebGPUSupported() {
|
|
73
|
+
return typeof navigator !== 'undefined' && 'gpu' in navigator;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* WebGPU-based subtitle renderer.
|
|
77
|
+
* Uploads RGBA bitmap data to GPU textures and renders textured quads.
|
|
78
|
+
*/
|
|
79
|
+
export class WebGPURenderer {
|
|
80
|
+
device = null;
|
|
81
|
+
context = null;
|
|
82
|
+
pipeline = null;
|
|
83
|
+
sampler = null;
|
|
84
|
+
bindGroupLayout = null;
|
|
85
|
+
// Uniform buffer for resolution
|
|
86
|
+
uniformBuffer = null;
|
|
87
|
+
// Quad data buffers (one per composition)
|
|
88
|
+
quadDataBuffers = [];
|
|
89
|
+
// Textures for compositions
|
|
90
|
+
textures = [];
|
|
91
|
+
pendingDestroyTextures = [];
|
|
92
|
+
format = 'bgra8unorm';
|
|
93
|
+
_canvas = null;
|
|
94
|
+
_initPromise = null;
|
|
95
|
+
_initialized = false;
|
|
96
|
+
/**
|
|
97
|
+
* Initialize the WebGPU renderer.
|
|
98
|
+
* Returns a promise that resolves when initialization is complete.
|
|
99
|
+
*/
|
|
100
|
+
async init() {
|
|
101
|
+
if (this._initPromise)
|
|
102
|
+
return this._initPromise;
|
|
103
|
+
this._initPromise = this._initDevice();
|
|
104
|
+
return this._initPromise;
|
|
105
|
+
}
|
|
106
|
+
async _initDevice() {
|
|
107
|
+
if (!navigator.gpu) {
|
|
108
|
+
throw new Error('WebGPU not supported');
|
|
109
|
+
}
|
|
110
|
+
const adapter = await navigator.gpu.requestAdapter({
|
|
111
|
+
powerPreference: 'high-performance'
|
|
112
|
+
});
|
|
113
|
+
if (!adapter) {
|
|
114
|
+
throw new Error('No WebGPU adapter found');
|
|
115
|
+
}
|
|
116
|
+
this.device = await adapter.requestDevice();
|
|
117
|
+
this.format = navigator.gpu.getPreferredCanvasFormat();
|
|
118
|
+
// Create shader modules
|
|
119
|
+
const vertexModule = this.device.createShaderModule({
|
|
120
|
+
code: VERTEX_SHADER
|
|
121
|
+
});
|
|
122
|
+
const fragmentModule = this.device.createShaderModule({
|
|
123
|
+
code: FRAGMENT_SHADER
|
|
124
|
+
});
|
|
125
|
+
// Create sampler - use linear filtering for smooth scaling
|
|
126
|
+
this.sampler = this.device.createSampler({
|
|
127
|
+
magFilter: 'linear',
|
|
128
|
+
minFilter: 'linear',
|
|
129
|
+
addressModeU: 'clamp-to-edge',
|
|
130
|
+
addressModeV: 'clamp-to-edge'
|
|
131
|
+
});
|
|
132
|
+
// Create uniform buffer
|
|
133
|
+
this.uniformBuffer = this.device.createBuffer({
|
|
134
|
+
size: 16, // vec2f resolution + padding
|
|
135
|
+
usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
|
|
136
|
+
});
|
|
137
|
+
// Create bind group layout
|
|
138
|
+
this.bindGroupLayout = this.device.createBindGroupLayout({
|
|
139
|
+
entries: [
|
|
140
|
+
{
|
|
141
|
+
binding: 0,
|
|
142
|
+
visibility: GPUShaderStage.VERTEX,
|
|
143
|
+
buffer: { type: 'uniform' }
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
binding: 1,
|
|
147
|
+
visibility: GPUShaderStage.VERTEX,
|
|
148
|
+
buffer: { type: 'read-only-storage' }
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
binding: 2,
|
|
152
|
+
visibility: GPUShaderStage.FRAGMENT,
|
|
153
|
+
sampler: { type: 'filtering' }
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
binding: 3,
|
|
157
|
+
visibility: GPUShaderStage.FRAGMENT,
|
|
158
|
+
texture: { sampleType: 'float' }
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
});
|
|
162
|
+
// Create pipeline layout
|
|
163
|
+
const pipelineLayout = this.device.createPipelineLayout({
|
|
164
|
+
bindGroupLayouts: [this.bindGroupLayout]
|
|
165
|
+
});
|
|
166
|
+
// Create render pipeline with alpha blending
|
|
167
|
+
this.pipeline = this.device.createRenderPipeline({
|
|
168
|
+
layout: pipelineLayout,
|
|
169
|
+
vertex: {
|
|
170
|
+
module: vertexModule,
|
|
171
|
+
entryPoint: 'vertexMain'
|
|
172
|
+
},
|
|
173
|
+
fragment: {
|
|
174
|
+
module: fragmentModule,
|
|
175
|
+
entryPoint: 'fragmentMain',
|
|
176
|
+
targets: [
|
|
177
|
+
{
|
|
178
|
+
format: this.format,
|
|
179
|
+
blend: {
|
|
180
|
+
color: {
|
|
181
|
+
srcFactor: 'one',
|
|
182
|
+
dstFactor: 'one-minus-src-alpha',
|
|
183
|
+
operation: 'add'
|
|
184
|
+
},
|
|
185
|
+
alpha: {
|
|
186
|
+
srcFactor: 'one',
|
|
187
|
+
dstFactor: 'one-minus-src-alpha',
|
|
188
|
+
operation: 'add'
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
},
|
|
194
|
+
primitive: {
|
|
195
|
+
topology: 'triangle-list'
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
this._initialized = true;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Configure the canvas for WebGPU rendering.
|
|
202
|
+
*/
|
|
203
|
+
async setCanvas(canvas, width, height) {
|
|
204
|
+
await this.init();
|
|
205
|
+
if (!this.device) {
|
|
206
|
+
throw new Error('WebGPU device not initialized');
|
|
207
|
+
}
|
|
208
|
+
this._canvas = canvas;
|
|
209
|
+
// Get WebGPU context
|
|
210
|
+
if (!this.context) {
|
|
211
|
+
this.context = canvas.getContext('webgpu');
|
|
212
|
+
if (!this.context) {
|
|
213
|
+
throw new Error('Could not get WebGPU context');
|
|
214
|
+
}
|
|
215
|
+
this.context.configure({
|
|
216
|
+
device: this.device,
|
|
217
|
+
format: this.format,
|
|
218
|
+
alphaMode: 'premultiplied'
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Update canvas size
|
|
222
|
+
canvas.width = width;
|
|
223
|
+
canvas.height = height;
|
|
224
|
+
// Update uniform buffer with resolution
|
|
225
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height]));
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Update canvas dimensions.
|
|
229
|
+
*/
|
|
230
|
+
updateSize(width, height) {
|
|
231
|
+
if (!this.device || !this._canvas)
|
|
232
|
+
return;
|
|
233
|
+
this._canvas.width = width;
|
|
234
|
+
this._canvas.height = height;
|
|
235
|
+
this.device.queue.writeBuffer(this.uniformBuffer, 0, new Float32Array([width, height]));
|
|
236
|
+
}
|
|
237
|
+
createTextureInfo(width, height) {
|
|
238
|
+
const texture = this.device.createTexture({
|
|
239
|
+
size: [width, height],
|
|
240
|
+
format: this.format,
|
|
241
|
+
usage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.RENDER_ATTACHMENT
|
|
242
|
+
});
|
|
243
|
+
return {
|
|
244
|
+
texture,
|
|
245
|
+
view: texture.createView(),
|
|
246
|
+
width,
|
|
247
|
+
height
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Render subtitle compositions to the canvas.
|
|
252
|
+
*/
|
|
253
|
+
render(compositions, screenWidth, screenHeight, scaleX, scaleY, offsetY) {
|
|
254
|
+
if (!this.device || !this.context || !this.pipeline)
|
|
255
|
+
return;
|
|
256
|
+
const commandEncoder = this.device.createCommandEncoder();
|
|
257
|
+
const textureView = this.context.getCurrentTexture().createView();
|
|
258
|
+
// Begin render pass with clear
|
|
259
|
+
const renderPass = commandEncoder.beginRenderPass({
|
|
260
|
+
colorAttachments: [
|
|
261
|
+
{
|
|
262
|
+
view: textureView,
|
|
263
|
+
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
264
|
+
loadOp: 'clear',
|
|
265
|
+
storeOp: 'store'
|
|
266
|
+
}
|
|
267
|
+
]
|
|
268
|
+
});
|
|
269
|
+
renderPass.setPipeline(this.pipeline);
|
|
270
|
+
// Grow buffers if needed
|
|
271
|
+
while (this.textures.length < compositions.length) {
|
|
272
|
+
this.textures.push(this.createTextureInfo(64, 64));
|
|
273
|
+
}
|
|
274
|
+
while (this.quadDataBuffers.length < compositions.length) {
|
|
275
|
+
this.quadDataBuffers.push(this.device.createBuffer({
|
|
276
|
+
size: 32, // 2 x vec4f
|
|
277
|
+
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST
|
|
278
|
+
}));
|
|
279
|
+
}
|
|
280
|
+
// Render each composition
|
|
281
|
+
for (let i = 0; i < compositions.length; i++) {
|
|
282
|
+
const comp = compositions[i];
|
|
283
|
+
const { pixelData, x, y } = comp;
|
|
284
|
+
const { width, height, data } = pixelData;
|
|
285
|
+
if (width <= 0 || height <= 0)
|
|
286
|
+
continue;
|
|
287
|
+
let texInfo = this.textures[i];
|
|
288
|
+
// Recreate texture if size changed
|
|
289
|
+
if (texInfo.width !== width || texInfo.height !== height) {
|
|
290
|
+
this.pendingDestroyTextures.push(texInfo.texture);
|
|
291
|
+
texInfo = this.createTextureInfo(width, height);
|
|
292
|
+
this.textures[i] = texInfo;
|
|
293
|
+
}
|
|
294
|
+
let uploadData;
|
|
295
|
+
if (this.format === 'bgra8unorm') {
|
|
296
|
+
const bgraData = new Uint8Array(data.length);
|
|
297
|
+
for (let j = 0; j < data.length; j += 4) {
|
|
298
|
+
bgraData[j] = data[j + 2]; // B <- R
|
|
299
|
+
bgraData[j + 1] = data[j + 1]; // G <- G
|
|
300
|
+
bgraData[j + 2] = data[j]; // R <- B
|
|
301
|
+
bgraData[j + 3] = data[j + 3]; // A <- A
|
|
302
|
+
}
|
|
303
|
+
uploadData = bgraData;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
uploadData = new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
|
|
307
|
+
}
|
|
308
|
+
// Upload pixel data to texture
|
|
309
|
+
this.device.queue.writeTexture({ texture: texInfo.texture }, uploadData.buffer, { bytesPerRow: width * 4 }, { width, height });
|
|
310
|
+
// Calculate scaled position and size
|
|
311
|
+
const scaledWidth = width * scaleX;
|
|
312
|
+
const scaledHeight = height * scaleY;
|
|
313
|
+
const baseX = x * (this._canvas.width / screenWidth);
|
|
314
|
+
const baseY = y * (this._canvas.height / screenHeight);
|
|
315
|
+
const centeredX = baseX + (width * (this._canvas.width / screenWidth) - scaledWidth) / 2;
|
|
316
|
+
const adjustedY = baseY + offsetY + (height * (this._canvas.height / screenHeight) - scaledHeight);
|
|
317
|
+
// Update quad data buffer
|
|
318
|
+
const quadData = new Float32Array([
|
|
319
|
+
// destRect
|
|
320
|
+
centeredX,
|
|
321
|
+
adjustedY,
|
|
322
|
+
scaledWidth,
|
|
323
|
+
scaledHeight,
|
|
324
|
+
// texSize
|
|
325
|
+
width,
|
|
326
|
+
height,
|
|
327
|
+
0,
|
|
328
|
+
0
|
|
329
|
+
]);
|
|
330
|
+
const quadBuffer = this.quadDataBuffers[i];
|
|
331
|
+
this.device.queue.writeBuffer(quadBuffer, 0, quadData);
|
|
332
|
+
// Create bind group for this composition
|
|
333
|
+
const bindGroup = this.device.createBindGroup({
|
|
334
|
+
layout: this.bindGroupLayout,
|
|
335
|
+
entries: [
|
|
336
|
+
{ binding: 0, resource: { buffer: this.uniformBuffer } },
|
|
337
|
+
{ binding: 1, resource: { buffer: quadBuffer } },
|
|
338
|
+
{ binding: 2, resource: this.sampler },
|
|
339
|
+
{ binding: 3, resource: texInfo.view }
|
|
340
|
+
]
|
|
341
|
+
});
|
|
342
|
+
renderPass.setBindGroup(0, bindGroup);
|
|
343
|
+
renderPass.draw(6); // 6 vertices for quad
|
|
344
|
+
}
|
|
345
|
+
renderPass.end();
|
|
346
|
+
this.device.queue.submit([commandEncoder.finish()]);
|
|
347
|
+
// Destroy old textures after submit
|
|
348
|
+
for (const tex of this.pendingDestroyTextures) {
|
|
349
|
+
tex.destroy();
|
|
350
|
+
}
|
|
351
|
+
this.pendingDestroyTextures = [];
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Clear the canvas.
|
|
355
|
+
*/
|
|
356
|
+
clear() {
|
|
357
|
+
if (!this.device || !this.context)
|
|
358
|
+
return;
|
|
359
|
+
const commandEncoder = this.device.createCommandEncoder();
|
|
360
|
+
const textureView = this.context.getCurrentTexture().createView();
|
|
361
|
+
const renderPass = commandEncoder.beginRenderPass({
|
|
362
|
+
colorAttachments: [
|
|
363
|
+
{
|
|
364
|
+
view: textureView,
|
|
365
|
+
clearValue: { r: 0, g: 0, b: 0, a: 0 },
|
|
366
|
+
loadOp: 'clear',
|
|
367
|
+
storeOp: 'store'
|
|
368
|
+
}
|
|
369
|
+
]
|
|
370
|
+
});
|
|
371
|
+
renderPass.end();
|
|
372
|
+
this.device.queue.submit([commandEncoder.finish()]);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Check if renderer is initialized.
|
|
376
|
+
*/
|
|
377
|
+
get initialized() {
|
|
378
|
+
return this._initialized;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Destroy all resources.
|
|
382
|
+
*/
|
|
383
|
+
destroy() {
|
|
384
|
+
for (const tex of this.textures) {
|
|
385
|
+
tex.texture.destroy();
|
|
386
|
+
}
|
|
387
|
+
this.textures = [];
|
|
388
|
+
for (const tex of this.pendingDestroyTextures) {
|
|
389
|
+
tex.destroy();
|
|
390
|
+
}
|
|
391
|
+
this.pendingDestroyTextures = [];
|
|
392
|
+
this.uniformBuffer?.destroy();
|
|
393
|
+
for (const buf of this.quadDataBuffers) {
|
|
394
|
+
buf.destroy();
|
|
395
|
+
}
|
|
396
|
+
this.quadDataBuffers = [];
|
|
397
|
+
this.device?.destroy();
|
|
398
|
+
this.device = null;
|
|
399
|
+
this.context = null;
|
|
400
|
+
this._canvas = null;
|
|
401
|
+
this._initialized = false;
|
|
402
|
+
this._initPromise = null;
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
//# sourceMappingURL=webgpu-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webgpu-renderer.js","sourceRoot":"","sources":["../../src/ts/webgpu-renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/wrapper.d.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export type { SubtitleData, SubtitleCompositionData, SubtitleDisplaySettings, VideoSubtitleOptions, VideoVobSubOptions, RenderResult, SubtitleFrame, VobSubFrame } from './ts/types';
|
|
6
6
|
export { initWasm, isWasmInitialized } from './ts/wasm';
|
|
7
|
+
export { isWebGPUSupported } from './ts/webgpu-renderer';
|
|
7
8
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers';
|
|
8
9
|
export { PgsRenderer, VobSubRenderer, type SubtitleRendererStats } from './ts/renderers';
|
|
9
10
|
import { PgsRenderer as _PgsRenderer, VobSubRenderer as _VobSubRenderer } from './ts/renderers';
|
package/dist/wrapper.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGrF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAMxF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,eAAO,MAAM,WAAW,qBAAe,CAAA;AAEvC,6CAA6C;AAC7C,eAAO,MAAM,cAAc,wBAAkB,CAAA;AAE7C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,+BAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAGrF,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAMxF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,eAAO,MAAM,WAAW,qBAAe,CAAA;AAEvC,6CAA6C;AAC7C,eAAO,MAAM,cAAc,wBAAkB,CAAA;AAE7C,oDAAoD;AACpD,eAAO,MAAM,uBAAuB,+BAAyB,CAAA"}
|
package/dist/wrapper.js
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
*/
|
|
5
5
|
// Re-export WASM management
|
|
6
6
|
export { initWasm, isWasmInitialized } from './ts/wasm';
|
|
7
|
+
// Re-export WebGPU utilities
|
|
8
|
+
export { isWebGPUSupported } from './ts/webgpu-renderer';
|
|
7
9
|
// Re-export parsers
|
|
8
10
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers';
|
|
9
11
|
// Re-export renderers
|
package/dist/wrapper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAErF,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAA8B,MAAM,gBAAgB,CAAA;AAExF,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAA;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../src/wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEvD,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,oBAAoB;AACpB,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAErF,sBAAsB;AACtB,OAAO,EAAE,WAAW,EAAE,cAAc,EAA8B,MAAM,gBAAgB,CAAA;AAExF,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAEhF,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC/F,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE9E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAA;AAEvC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAA;AAE7C,oDAAoD;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAAsB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "libbitsub",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"author": "altqx",
|
|
5
5
|
"license": "MIT OR Apache-2.0",
|
|
6
6
|
"description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
|
|
@@ -50,5 +50,8 @@
|
|
|
50
50
|
"peerDependencies": {},
|
|
51
51
|
"engines": {
|
|
52
52
|
"node": ">=18"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@webgpu/types": "^0.1.68"
|
|
53
56
|
}
|
|
54
57
|
}
|
package/pkg/README.md
CHANGED
|
@@ -8,6 +8,7 @@ Started as a fork of Arcus92's [libpgs-js](https://github.com/Arcus92/libpgs-js)
|
|
|
8
8
|
|
|
9
9
|
- **PGS (Blu-ray)** subtitle parsing and rendering
|
|
10
10
|
- **VobSub (DVD)** subtitle parsing and rendering
|
|
11
|
+
- **WebGPU rendering** GPU-accelerated rendering with automatic Canvas2D fallback
|
|
11
12
|
- **High-performance** Rust-based rendering engine compiled to WebAssembly
|
|
12
13
|
- **Zero-copy** data transfer between JS and WASM where possible
|
|
13
14
|
- **Caching** for decoded bitmaps to optimize repeated rendering
|
|
@@ -23,12 +24,20 @@ https://gist.github.com/user-attachments/assets/55ac8e11-1964-4fb9-923e-dcac82dc
|
|
|
23
24
|
|
|
24
25
|
https://gist.github.com/user-attachments/assets/a89ae9fe-23e4-4bc3-8cad-16a3f0fea665
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
### Installation
|
|
27
28
|
|
|
29
|
+
**npm / bun**
|
|
28
30
|
```bash
|
|
31
|
+
npm install libbitsub
|
|
32
|
+
# or
|
|
29
33
|
bun add libbitsub
|
|
30
34
|
```
|
|
31
35
|
|
|
36
|
+
**JSR (Deno)**
|
|
37
|
+
```bash
|
|
38
|
+
deno add jsr:@altq/libbitsub
|
|
39
|
+
```
|
|
40
|
+
|
|
32
41
|
### Setup for Web Workers (Recommended)
|
|
33
42
|
|
|
34
43
|
For best performance with large subtitle files, copy the WASM files to your public folder so Web Workers can access them:
|
|
@@ -207,20 +216,46 @@ setInterval(() => {
|
|
|
207
216
|
|
|
208
217
|
**Stats Reference:**
|
|
209
218
|
|
|
210
|
-
| Property
|
|
211
|
-
|
|
212
|
-
| `framesRendered` | number
|
|
213
|
-
| `framesDropped`
|
|
214
|
-
| `avgRenderTime`
|
|
215
|
-
| `maxRenderTime`
|
|
216
|
-
| `minRenderTime`
|
|
217
|
-
| `lastRenderTime` | number
|
|
218
|
-
| `renderFps`
|
|
219
|
-
| `usingWorker`
|
|
220
|
-
| `cachedFrames`
|
|
221
|
-
| `pendingRenders` | number
|
|
222
|
-
| `totalEntries`
|
|
223
|
-
| `currentIndex`
|
|
219
|
+
| Property | Type | Description |
|
|
220
|
+
| ---------------- | ------- | -------------------------------------------------------------- |
|
|
221
|
+
| `framesRendered` | number | Total frames rendered since initialization |
|
|
222
|
+
| `framesDropped` | number | Frames dropped due to slow rendering (>16.67ms) |
|
|
223
|
+
| `avgRenderTime` | number | Average render time in milliseconds (rolling 60-sample window) |
|
|
224
|
+
| `maxRenderTime` | number | Maximum render time in milliseconds |
|
|
225
|
+
| `minRenderTime` | number | Minimum render time in milliseconds |
|
|
226
|
+
| `lastRenderTime` | number | Most recent render time in milliseconds |
|
|
227
|
+
| `renderFps` | number | Current renders per second (based on last 1 second) |
|
|
228
|
+
| `usingWorker` | boolean | Whether rendering is using Web Worker (off-main-thread) |
|
|
229
|
+
| `cachedFrames` | number | Number of decoded frames currently cached |
|
|
230
|
+
| `pendingRenders` | number | Number of frames currently being decoded asynchronously |
|
|
231
|
+
| `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
|
|
232
|
+
| `currentIndex` | number | Index of the currently displayed subtitle |
|
|
233
|
+
|
|
234
|
+
### WebGPU Rendering
|
|
235
|
+
|
|
236
|
+
libbitsub automatically uses WebGPU for GPU-accelerated rendering when available, with automatic fallback to Canvas2D:
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
|
|
240
|
+
|
|
241
|
+
// Check WebGPU support
|
|
242
|
+
if (isWebGPUSupported()) {
|
|
243
|
+
console.log('WebGPU available - GPU-accelerated rendering enabled')
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// Configure WebGPU preference
|
|
247
|
+
const renderer = new PgsRenderer({
|
|
248
|
+
video: videoElement,
|
|
249
|
+
subUrl: '/subtitles/movie.sup',
|
|
250
|
+
preferWebGPU: true, // default: true
|
|
251
|
+
onWebGPUFallback: () => console.log('Fell back to Canvas2D')
|
|
252
|
+
})
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**Options:**
|
|
256
|
+
|
|
257
|
+
- `preferWebGPU` (boolean): Enable WebGPU rendering if available. Default: `true`
|
|
258
|
+
- `onWebGPUFallback` (function): Callback when WebGPU is unavailable and falls back to Canvas2D
|
|
224
259
|
|
|
225
260
|
## Low-Level API (Programmatic Use)
|
|
226
261
|
|
|
@@ -398,18 +433,18 @@ interface SubtitleDisplaySettings {
|
|
|
398
433
|
|
|
399
434
|
```typescript
|
|
400
435
|
interface SubtitleRendererStats {
|
|
401
|
-
framesRendered: number
|
|
402
|
-
framesDropped: number
|
|
403
|
-
avgRenderTime: number
|
|
404
|
-
maxRenderTime: number
|
|
405
|
-
minRenderTime: number
|
|
406
|
-
lastRenderTime: number
|
|
407
|
-
renderFps: number
|
|
408
|
-
usingWorker: boolean
|
|
409
|
-
cachedFrames: number
|
|
410
|
-
pendingRenders: number
|
|
411
|
-
totalEntries: number
|
|
412
|
-
currentIndex: number
|
|
436
|
+
framesRendered: number // Total frames rendered since initialization
|
|
437
|
+
framesDropped: number // Frames dropped due to slow rendering
|
|
438
|
+
avgRenderTime: number // Average render time in milliseconds
|
|
439
|
+
maxRenderTime: number // Maximum render time in milliseconds
|
|
440
|
+
minRenderTime: number // Minimum render time in milliseconds
|
|
441
|
+
lastRenderTime: number // Last render time in milliseconds
|
|
442
|
+
renderFps: number // Current FPS (renders per second)
|
|
443
|
+
usingWorker: boolean // Whether rendering is using web worker
|
|
444
|
+
cachedFrames: number // Number of cached frames
|
|
445
|
+
pendingRenders: number // Number of pending renders
|
|
446
|
+
totalEntries: number // Total subtitle entries/display sets
|
|
447
|
+
currentIndex: number // Current subtitle index being displayed
|
|
413
448
|
}
|
|
414
449
|
```
|
|
415
450
|
|
|
@@ -433,5 +468,5 @@ interface SubtitleCompositionData {
|
|
|
433
468
|
|
|
434
469
|
Licensed under either of
|
|
435
470
|
|
|
436
|
-
- Apache License, Version 2.0
|
|
437
|
-
- MIT license
|
|
471
|
+
- Apache License, Version 2.0
|
|
472
|
+
- MIT license
|
package/pkg/libbitsub_bg.wasm
CHANGED
|
Binary file
|
package/pkg/package.json
CHANGED
package/src/wrapper.ts
CHANGED
|
@@ -18,6 +18,9 @@ export type {
|
|
|
18
18
|
// Re-export WASM management
|
|
19
19
|
export { initWasm, isWasmInitialized } from './ts/wasm'
|
|
20
20
|
|
|
21
|
+
// Re-export WebGPU utilities
|
|
22
|
+
export { isWebGPUSupported } from './ts/webgpu-renderer'
|
|
23
|
+
|
|
21
24
|
// Re-export parsers
|
|
22
25
|
export { PgsParser, VobSubParserLowLevel, UnifiedSubtitleParser } from './ts/parsers'
|
|
23
26
|
|