libbitsub 1.1.0 → 1.2.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/LICENSE +235 -674
- package/README.md +60 -26
- 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 +391 -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 +5 -2
- package/pkg/LICENSE +235 -674
- package/pkg/README.md +60 -26
- package/pkg/libbitsub_bg.wasm +0 -0
- package/pkg/package.json +2 -2
- package/src/wrapper.ts +3 -0
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
|
|
@@ -207,20 +208,46 @@ setInterval(() => {
|
|
|
207
208
|
|
|
208
209
|
**Stats Reference:**
|
|
209
210
|
|
|
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`
|
|
211
|
+
| Property | Type | Description |
|
|
212
|
+
| ---------------- | ------- | -------------------------------------------------------------- |
|
|
213
|
+
| `framesRendered` | number | Total frames rendered since initialization |
|
|
214
|
+
| `framesDropped` | number | Frames dropped due to slow rendering (>16.67ms) |
|
|
215
|
+
| `avgRenderTime` | number | Average render time in milliseconds (rolling 60-sample window) |
|
|
216
|
+
| `maxRenderTime` | number | Maximum render time in milliseconds |
|
|
217
|
+
| `minRenderTime` | number | Minimum render time in milliseconds |
|
|
218
|
+
| `lastRenderTime` | number | Most recent render time in milliseconds |
|
|
219
|
+
| `renderFps` | number | Current renders per second (based on last 1 second) |
|
|
220
|
+
| `usingWorker` | boolean | Whether rendering is using Web Worker (off-main-thread) |
|
|
221
|
+
| `cachedFrames` | number | Number of decoded frames currently cached |
|
|
222
|
+
| `pendingRenders` | number | Number of frames currently being decoded asynchronously |
|
|
223
|
+
| `totalEntries` | number | Total subtitle entries/display sets in the loaded file |
|
|
224
|
+
| `currentIndex` | number | Index of the currently displayed subtitle |
|
|
225
|
+
|
|
226
|
+
### WebGPU Rendering
|
|
227
|
+
|
|
228
|
+
libbitsub automatically uses WebGPU for GPU-accelerated rendering when available, with automatic fallback to Canvas2D:
|
|
229
|
+
|
|
230
|
+
```typescript
|
|
231
|
+
import { PgsRenderer, isWebGPUSupported } from 'libbitsub'
|
|
232
|
+
|
|
233
|
+
// Check WebGPU support
|
|
234
|
+
if (isWebGPUSupported()) {
|
|
235
|
+
console.log('WebGPU available - GPU-accelerated rendering enabled')
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// Configure WebGPU preference
|
|
239
|
+
const renderer = new PgsRenderer({
|
|
240
|
+
video: videoElement,
|
|
241
|
+
subUrl: '/subtitles/movie.sup',
|
|
242
|
+
preferWebGPU: true, // default: true
|
|
243
|
+
onWebGPUFallback: () => console.log('Fell back to Canvas2D')
|
|
244
|
+
})
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
**Options:**
|
|
248
|
+
|
|
249
|
+
- `preferWebGPU` (boolean): Enable WebGPU rendering if available. Default: `true`
|
|
250
|
+
- `onWebGPUFallback` (function): Callback when WebGPU is unavailable and falls back to Canvas2D
|
|
224
251
|
|
|
225
252
|
## Low-Level API (Programmatic Use)
|
|
226
253
|
|
|
@@ -398,18 +425,18 @@ interface SubtitleDisplaySettings {
|
|
|
398
425
|
|
|
399
426
|
```typescript
|
|
400
427
|
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
|
|
428
|
+
framesRendered: number // Total frames rendered since initialization
|
|
429
|
+
framesDropped: number // Frames dropped due to slow rendering
|
|
430
|
+
avgRenderTime: number // Average render time in milliseconds
|
|
431
|
+
maxRenderTime: number // Maximum render time in milliseconds
|
|
432
|
+
minRenderTime: number // Minimum render time in milliseconds
|
|
433
|
+
lastRenderTime: number // Last render time in milliseconds
|
|
434
|
+
renderFps: number // Current FPS (renders per second)
|
|
435
|
+
usingWorker: boolean // Whether rendering is using web worker
|
|
436
|
+
cachedFrames: number // Number of cached frames
|
|
437
|
+
pendingRenders: number // Number of pending renders
|
|
438
|
+
totalEntries: number // Total subtitle entries/display sets
|
|
439
|
+
currentIndex: number // Current subtitle index being displayed
|
|
413
440
|
}
|
|
414
441
|
```
|
|
415
442
|
|
|
@@ -428,3 +455,10 @@ interface SubtitleCompositionData {
|
|
|
428
455
|
y: number // Y position
|
|
429
456
|
}
|
|
430
457
|
```
|
|
458
|
+
|
|
459
|
+
## License
|
|
460
|
+
|
|
461
|
+
Licensed under either of
|
|
462
|
+
|
|
463
|
+
- Apache License, Version 2.0
|
|
464
|
+
- MIT license
|
package/pkg/libbitsub_bg.wasm
CHANGED
|
Binary file
|
package/pkg/package.json
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
"altqx"
|
|
6
6
|
],
|
|
7
7
|
"description": "High-performance WASM renderer for graphical subtitles (PGS and VobSub)",
|
|
8
|
-
"version": "1.
|
|
9
|
-
"license": "
|
|
8
|
+
"version": "1.2.0",
|
|
9
|
+
"license": "MIT OR Apache-2.0",
|
|
10
10
|
"repository": {
|
|
11
11
|
"type": "git",
|
|
12
12
|
"url": "https://github.com/altqx/libbitsub"
|
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
|
|