akarisub 1.1.5 → 1.1.7
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 +82 -80
- package/dist/COPYRIGHT +7 -7
- package/dist/SHA256SUMS +33 -21
- package/dist/ts/akarisub.d.ts +7 -0
- package/dist/ts/akarisub.d.ts.map +1 -1
- package/dist/ts/akarisub.js +38 -7
- package/dist/ts/akarisub.js.map +1 -1
- package/dist/ts/encrypted-payload.d.ts +6 -0
- package/dist/ts/encrypted-payload.d.ts.map +1 -0
- package/dist/ts/encrypted-payload.js +86 -0
- package/dist/ts/encrypted-payload.js.map +1 -0
- package/dist/ts/prepared-presentation.d.ts +7 -1
- package/dist/ts/prepared-presentation.d.ts.map +1 -1
- package/dist/ts/prepared-presentation.js +9 -2
- package/dist/ts/prepared-presentation.js.map +1 -1
- package/dist/ts/raw-ass-atlas.d.ts +117 -0
- package/dist/ts/raw-ass-atlas.d.ts.map +1 -0
- package/dist/ts/raw-ass-atlas.js +185 -0
- package/dist/ts/raw-ass-atlas.js.map +1 -0
- package/dist/ts/raw-ass-webgpu.d.ts +121 -0
- package/dist/ts/raw-ass-webgpu.d.ts.map +1 -0
- package/dist/ts/raw-ass-webgpu.js +754 -0
- package/dist/ts/raw-ass-webgpu.js.map +1 -0
- package/dist/ts/subtitle-budget.d.ts +2 -1
- package/dist/ts/subtitle-budget.d.ts.map +1 -1
- package/dist/ts/subtitle-budget.js +17 -3
- package/dist/ts/subtitle-budget.js.map +1 -1
- package/dist/ts/types.d.ts +39 -5
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/worker.js +741 -146
- package/dist/ts/worker.js.map +1 -1
- package/package.json +3 -3
- package/pkg/akarisub-mt.js +64 -63
- package/pkg/akarisub-mt.wasm +0 -0
- package/pkg/akarisub.js +45 -45
- package/pkg/akarisub.wasm +0 -0
package/README.md
CHANGED
|
@@ -95,7 +95,7 @@ const renderer = new AkariSub({
|
|
|
95
95
|
renderer.setCurrentTime(true, 15)
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Custom canvases stay on the main thread by default. Set both `offscreenRender: true` and `rawAssImageGpu: true` to opt into worker WebGL2 raw-mask composition when dense overlays benefit from it.
|
|
98
|
+
Custom canvases stay on the main thread by default. Set both `offscreenRender: true` and `rawAssImageGpu: true` to opt into worker WebGL2 raw-mask composition when dense overlays benefit from it. Add `rawAssImageWebGPU: true` to compose with worker WebGPU instead; it falls back to WebGL2 when the worker has no WebGPU. A lost worker WebGPU device is replaced automatically. If that keeps failing, an overlay canvas that AkariSub created is swapped for a new one drawn with WebGL2, but a caller-owned canvas cannot take another context and stays blank: listen for the `renderer-recovery` performance warning, or check `getStats().workerRendererLost`.
|
|
99
99
|
|
|
100
100
|
### Timing semantics
|
|
101
101
|
|
|
@@ -339,81 +339,83 @@ if (renderer.isUsingGPURenderer) {
|
|
|
339
339
|
|
|
340
340
|
The default options are best, and automatically fallback to the next fastest options in line, when the API's they use are unsupported. You can however forcefully change this behavior by specifying options.
|
|
341
341
|
|
|
342
|
-
| Option | Type
|
|
343
|
-
| ---------------------- |
|
|
344
|
-
| `video` | HTMLVideoElement
|
|
345
|
-
| `canvas` | HTMLCanvasElement
|
|
346
|
-
| `blendMode` | `'js'` \| `'wasm'`
|
|
347
|
-
| `asyncRender` | boolean
|
|
348
|
-
| `offscreenRender` | boolean
|
|
349
|
-
| `rawAssImageGpu` | boolean
|
|
350
|
-
| `
|
|
351
|
-
| `
|
|
352
|
-
| `
|
|
353
|
-
| `
|
|
354
|
-
| `
|
|
355
|
-
| `
|
|
356
|
-
| `
|
|
357
|
-
| `
|
|
358
|
-
| `
|
|
359
|
-
| `
|
|
360
|
-
| `
|
|
361
|
-
| `
|
|
362
|
-
| `
|
|
363
|
-
| `
|
|
364
|
-
| `
|
|
365
|
-
| `
|
|
366
|
-
| `
|
|
367
|
-
| `
|
|
368
|
-
| `
|
|
369
|
-
| `
|
|
370
|
-
| `
|
|
371
|
-
| `
|
|
372
|
-
| `
|
|
373
|
-
| `
|
|
374
|
-
| `
|
|
375
|
-
| `
|
|
376
|
-
| `
|
|
377
|
-
| `
|
|
378
|
-
| `
|
|
379
|
-
| `
|
|
380
|
-
| `
|
|
381
|
-
| `
|
|
382
|
-
| `
|
|
383
|
-
| `
|
|
384
|
-
| `
|
|
385
|
-
| `
|
|
386
|
-
| `
|
|
387
|
-
| `
|
|
342
|
+
| Option | Type | Default | Description |
|
|
343
|
+
| ---------------------- | ----------------------------------------------------- | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
344
|
+
| `video` | HTMLVideoElement | - | Video to use as target for rendering and event listeners. WebCodecs players pass `canvas` and call `presentVideoFrame` instead |
|
|
345
|
+
| `canvas` | HTMLCanvasElement | - | Canvas to use for manual handling (optional if video is provided) |
|
|
346
|
+
| `blendMode` | `'js'` \| `'wasm'` | `'wasm'` | Image blending mode. WASM is better for low-end devices, JS for hardware acceleration |
|
|
347
|
+
| `asyncRender` | boolean | auto | Render via ImageBitmap. Defaults to `true` on Canvas2D paths and `false` when a GPU renderer is active (raw buffers upload with fewer copies) or on WebKit |
|
|
348
|
+
| `offscreenRender` | boolean | automatic | Render fully on the worker; enabled for video-managed canvases and disabled for custom canvases |
|
|
349
|
+
| `rawAssImageGpu` | boolean | `false` | Compose raw libass masks with worker WebGL2 when offscreen rendering is active |
|
|
350
|
+
| `rawAssImageAtlas` | boolean | `true` | With `rawAssImageGpu`, upload each frame as one libass texture atlas and draw it with one call; `false` uploads every mask separately |
|
|
351
|
+
| `rawAssImageWebGPU` | boolean | `false` | With `rawAssImageGpu`, compose the raw masks with worker WebGPU instead of WebGL2; falls back to WebGL2 when the worker has no WebGPU adapter |
|
|
352
|
+
| `onDemandRender` | boolean | `true` | Render subtitles as the video player or `presentVideoFrame` presents frames |
|
|
353
|
+
| `adaptiveTiming` | boolean | `true` | Compensate measured queue, worker, bitmap, IPC, and paint latency while video is playing; pause and seek renders remain frame-exact |
|
|
354
|
+
| `frameTimeline` | FrameTimeline | - | Encoded browser-frame timestamps plus optional media/subtitle clock offsets; enables frame-locked libass sampling |
|
|
355
|
+
| `framePrefetch` | number | `2` | Number of exact subtitle-frame bitmaps to prepare ahead (`0` disables preparation, maximum `24`) |
|
|
356
|
+
| `targetFps` | number | `24` | Target FPS when not using onDemandRender |
|
|
357
|
+
| `timeOffset` | number | `0` | Subtitle time offset in seconds |
|
|
358
|
+
| `debug` | boolean | `false` | Enable debug logging |
|
|
359
|
+
| `prescaleFactor` | number | `1.0` | Scale factor for subtitles canvas |
|
|
360
|
+
| `prescaleHeightLimit` | number | `1080` | Height limit for prescaling in pixels |
|
|
361
|
+
| `maxRenderHeight` | number | `0` | Maximum render height (0 = no limit) |
|
|
362
|
+
| `dropAllAnimations` | boolean | `false` | Discard all animated tags for performance |
|
|
363
|
+
| `dropAllBlur` | boolean | `false` | Drop all blur effects (~10x performance gain) |
|
|
364
|
+
| `clampPos` | boolean | `false` | Clamp `\pos` values to script resolution |
|
|
365
|
+
| `renderAhead` | number | `0` | Optional extra seconds to render ahead, in addition to adaptive timing; also applies when `onDemandRender` is disabled |
|
|
366
|
+
| `workerUrl` | string | package worker URL | Optional worker script URL. Defaults to the package worker module URL |
|
|
367
|
+
| `wasmUrl` | string | package WASM URL | Optional WASM binary URL. Defaults to the URL resolved from `import.meta.url` |
|
|
368
|
+
| `glueUrl` | string | package glue URL | Optional WASM glue script URL. Defaults to the URL resolved from `import.meta.url` |
|
|
369
|
+
| `modernWasmUrl` | string | - | Optional SIMD WASM URL used when the engine validates `v128` |
|
|
370
|
+
| `mtWasmUrl` | string | package `akarisub-mt.wasm` | Optional pthread SIMD WASM URL. Requires COOP/COEP (`crossOriginIsolated`) |
|
|
371
|
+
| `canvasColorSpace` | `'srgb'` \| `'display-p3'` \| `'rec2020'` \| `'auto'` | `'auto'` | Overlay canvas color space. `auto` follows the video primaries |
|
|
372
|
+
| `hdr` | boolean \| `'auto'` | `'auto'` | Request an HDR canvas when the video transfer is PQ or HLG |
|
|
373
|
+
| `subUrl` | string | - | URL of the subtitle file to play |
|
|
374
|
+
| `subContent` | string \| Uint8Array \| ArrayBuffer | - | Content of the subtitle file to play |
|
|
375
|
+
| `fonts` | (string \| Uint8Array)[] | - | Font URLs or bytes to force-load in full |
|
|
376
|
+
| `availableFonts` | Record<string, FontFamilySource> | liberation sans from package assets | Family name (lowercase) → URL, bytes, or unicode-range / script slices. Slices load lazily from the current track |
|
|
377
|
+
| `lazyFonts` | boolean | `true` | When `availableFonts` entries declare slices, fetch only the ones the current scripts need |
|
|
378
|
+
| `fallbackFonts` | string[] | `['liberation sans']` | Fallback font families in order, used for the fontconfig cascade |
|
|
379
|
+
| `useLocalFonts` | boolean | `true` | Use Local Font Access API if available |
|
|
380
|
+
| `maxSubtitleBytes` | number | `33554432` | Largest subtitle accepted from any source, in bytes. Raising it increases worker/WASM memory use |
|
|
381
|
+
| `libassMemoryLimit` | number | `128` | libass bitmap cache memory limit in MiB |
|
|
382
|
+
| `libassGlyphLimit` | number | `2048` | libass glyph cache limit |
|
|
383
|
+
| `fullTrackWarmup` | boolean | `false` | Pre-render early track windows after load to warm libass caches |
|
|
384
|
+
| `onCanvasFallback` | function | - | Callback when no GPU renderer is available (Canvas2D fallback) |
|
|
385
|
+
| `onCueEnter` | `(cue) => void` | - | Dialogue event became active at the sampled media time |
|
|
386
|
+
| `onCueExit` | `(cue) => void` | - | Dialogue event is no longer active |
|
|
387
|
+
| `onRender` | `(event) => void` | - | Demand-frame render finished |
|
|
388
|
+
| `onRendererChange` | `(event) => void` | - | Compositor backend changed or recovered; GPU recovery includes `event.reason` |
|
|
389
|
+
| `onPerformanceWarning` | `(warning) => void` | - | Slow frame, dropped frames, a full demand queue, or GPU recovery |
|
|
388
390
|
|
|
389
391
|
## Methods
|
|
390
392
|
|
|
391
393
|
### Track Management
|
|
392
394
|
|
|
393
|
-
| Method
|
|
394
|
-
|
|
|
395
|
-
| `setTrackByUrl(url)`
|
|
396
|
-
| `setTrack(content)`
|
|
397
|
-
| `freeTrack()`
|
|
398
|
-
| `initStreamingTrack(options?)`
|
|
399
|
-
| `appendSubtitleData(content)`
|
|
400
|
-
| `appendSubtitleChunk(data, start, duration)` | `data`, `start: number`, `duration: number`
|
|
401
|
-
| `appendEvents(events)`
|
|
402
|
-
| `pruneEvents(before)`
|
|
403
|
-
| `flushEvents()`
|
|
404
|
-
| `configurePrune(delay)`
|
|
405
|
-
| `preloadTrack(source)`
|
|
406
|
-
| `activatePreloadedTrack(id?)`
|
|
395
|
+
| Method | Parameters | Description |
|
|
396
|
+
| -------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
397
|
+
| `setTrackByUrl(url)` | `url: string` | Load subtitle from URL |
|
|
398
|
+
| `setTrack(content)` | `content: string \| Uint8Array \| ArrayBuffer` | Set subtitle from content |
|
|
399
|
+
| `freeTrack()` | - | Remove current subtitles |
|
|
400
|
+
| `initStreamingTrack(options?)` | `StreamingTrackOptions \| string \| bytes` | Create a header-only track that can accept later fragments |
|
|
401
|
+
| `appendSubtitleData(content)` | `content: string \| Uint8Array \| ArrayBuffer` | Parse ASS text (Dialogue lines, extra styles) into the current track |
|
|
402
|
+
| `appendSubtitleChunk(data, start, duration)` | `data`, `start: number`, `duration: number` | Append one Matroska packet; `start`/`duration` are seconds |
|
|
403
|
+
| `appendEvents(events)` | `events: Partial<ASSEvent>[]` | Append several Dialogue events in one message |
|
|
404
|
+
| `pruneEvents(before)` | `before: number` | Drop events that ended before `before` seconds |
|
|
405
|
+
| `flushEvents()` | - | Drop every event and keep styles / script info |
|
|
406
|
+
| `configurePrune(delay)` | `delay: number` | Auto-drop events that ended more than `delay` seconds before the last render |
|
|
407
|
+
| `preloadTrack(source)` | `PreloadTrackSource \| string \| bytes` | Parse a track and load its fonts without replacing the visible one |
|
|
408
|
+
| `activatePreloadedTrack(id?)` | `id?: number` | Atomically swap to a preloaded track and await its matching readiness cycle |
|
|
407
409
|
|
|
408
410
|
### Playback Control
|
|
409
411
|
|
|
410
|
-
| Method | Parameters
|
|
411
|
-
| ------------------------------------------------ |
|
|
412
|
-
| `setIsPaused(isPaused)` | `isPaused: boolean`
|
|
413
|
-
| `setRate(rate)` | `rate: number`
|
|
414
|
-
| `setCurrentTime(isPaused?, currentTime?, rate?)` | `isPaused?: boolean, currentTime?: number, rate?: number`
|
|
415
|
-
| `setFrameTimeline(frameTimes)` | `ArrayLike<number> \| null`
|
|
416
|
-
| `presentVideoFrame(frame, options?)` | `frame: VideoFrame, options?: PresentVideoFrameOptions`
|
|
412
|
+
| Method | Parameters | Description |
|
|
413
|
+
| ------------------------------------------------ | ----------------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
414
|
+
| `setIsPaused(isPaused)` | `isPaused: boolean` | Set playback pause state |
|
|
415
|
+
| `setRate(rate)` | `rate: number` | Set playback rate (speed multiplier) |
|
|
416
|
+
| `setCurrentTime(isPaused?, currentTime?, rate?)` | `isPaused?: boolean, currentTime?: number, rate?: number` | Set current time, playback state and rate |
|
|
417
|
+
| `setFrameTimeline(frameTimes)` | `ArrayLike<number> \| null` | Replace or disable the encoded-frame timeline |
|
|
418
|
+
| `presentVideoFrame(frame, options?)` | `frame: VideoFrame, options?: PresentVideoFrameOptions` | Present a WebCodecs frame as the video clock |
|
|
417
419
|
| `setVideoColorSpace(colorSpace)` | `BT709` \| `BT601` \| `BT2020` \| matrix name \| `colorSpace` \| `null` | Set the video YCbCr matrix and optional HDR primaries/transfer |
|
|
418
420
|
|
|
419
421
|
### Video & Canvas
|
|
@@ -494,19 +496,19 @@ renderer.addEventListener('rendererChange', (event) => {
|
|
|
494
496
|
|
|
495
497
|
## Properties
|
|
496
498
|
|
|
497
|
-
| Property | Type | Description
|
|
498
|
-
| --------------------- | ---------------------------------------- |
|
|
499
|
-
| `debug` | boolean | Enable/disable debug logging
|
|
500
|
-
| `prescaleFactor` | number | Scale factor for subtitles
|
|
501
|
-
| `prescaleHeightLimit` | number | Height limit for prescaling
|
|
502
|
-
| `maxRenderHeight` | number | Maximum render height
|
|
499
|
+
| Property | Type | Description |
|
|
500
|
+
| --------------------- | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
501
|
+
| `debug` | boolean | Enable/disable debug logging |
|
|
502
|
+
| `prescaleFactor` | number | Scale factor for subtitles |
|
|
503
|
+
| `prescaleHeightLimit` | number | Height limit for prescaling |
|
|
504
|
+
| `maxRenderHeight` | number | Maximum render height |
|
|
503
505
|
| `timeOffset` | number | Subtitle time offset in seconds; assigning it at runtime discards prepared frames and re-renders at the new offset |
|
|
504
|
-
| `renderAhead` | number | Optional extra seconds to render ahead of the video clock
|
|
505
|
-
| `framePrefetch` | number | Number of exact subtitle frames prepared ahead
|
|
506
|
-
| `busy` | boolean | Whether the renderer is currently busy
|
|
507
|
-
| `rendererType` | `'webgpu'` \| `'webgl2'` \| `'canvas2d'` | Active renderer backend (read-only)
|
|
508
|
-
| `isUsingGPURenderer` | boolean | Whether a hardware-accelerated renderer is active (read-only)
|
|
509
|
-
| `isUsingWebGPU` | boolean | _Deprecated_ - use `rendererType === 'webgpu'`
|
|
506
|
+
| `renderAhead` | number | Optional extra seconds to render ahead of the video clock |
|
|
507
|
+
| `framePrefetch` | number | Number of exact subtitle frames prepared ahead |
|
|
508
|
+
| `busy` | boolean | Whether the renderer is currently busy |
|
|
509
|
+
| `rendererType` | `'webgpu'` \| `'webgl2'` \| `'canvas2d'` | Active renderer backend (read-only) |
|
|
510
|
+
| `isUsingGPURenderer` | boolean | Whether a hardware-accelerated renderer is active (read-only) |
|
|
511
|
+
| `isUsingWebGPU` | boolean | _Deprecated_ - use `rendererType === 'webgpu'` |
|
|
510
512
|
|
|
511
513
|
## Type Definitions
|
|
512
514
|
|
package/dist/COPYRIGHT
CHANGED
|
@@ -10,13 +10,13 @@ Regenerate it with `bun run license:third-party` after dependency, submodule, fo
|
|
|
10
10
|
|
|
11
11
|
| Component | Version/source | License | Use |
|
|
12
12
|
| --- | --- | --- | --- |
|
|
13
|
-
| Brotli |
|
|
14
|
-
| Expat |
|
|
13
|
+
| Brotli | db24a98 (lib/brotli) | MIT | Compiled into the WebAssembly worker for Brotli-compressed font data. |
|
|
14
|
+
| Expat | a76b117 (lib/expat) | MIT | Compiled into the WebAssembly worker as an XML parser dependency. |
|
|
15
15
|
| FreeType | f4205da (lib/freetype) | FreeType License | Compiled into the WebAssembly worker for font loading and rasterization. |
|
|
16
|
-
| FriBidi |
|
|
16
|
+
| FriBidi | d2f3e1f (lib/fribidi) | LGPL-2.1-or-later | Compiled into the WebAssembly worker for bidirectional text support. |
|
|
17
17
|
| fontconfig | 0f23672 (lib/fontconfig) | HPND-style license with additional notices | Compiled into the WebAssembly worker for font fallback and matching. |
|
|
18
18
|
| HarfBuzz | eb03331 (lib/harfbuzz) | Old MIT | Compiled into the WebAssembly worker for text shaping. |
|
|
19
|
-
| libass |
|
|
19
|
+
| libass | 8ecd660 (lib/libass) | ISC | Compiled into the WebAssembly worker for ASS/SSA subtitle rendering. |
|
|
20
20
|
| Liberation Sans | assets/default.woff2 (assets/default.woff2) | OFL-1.1 | Bundled fallback font asset used by default renderer options. |
|
|
21
21
|
| Emscripten runtime | 6.0.6 (pkg/akarisub.js) | MIT OR NCSA | Generated JavaScript runtime wrapper used by the WebAssembly worker. |
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ Regenerate it with `bun run license:third-party` after dependency, submodule, fo
|
|
|
24
24
|
|
|
25
25
|
| Package | Version | License | Source |
|
|
26
26
|
| --- | --- | --- | --- |
|
|
27
|
-
| `@types/bun` | 1.4.
|
|
27
|
+
| `@types/bun` | 1.4.4 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
|
|
28
28
|
| `@types/emscripten` | 1.41.6 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
|
|
29
29
|
| `@types/node` | 25.0.9 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
|
|
30
30
|
| `@typescript/typescript-aix-ppc64` | 7.0.2 | Apache-2.0 | https://github.com/microsoft/TypeScript.git |
|
|
@@ -48,8 +48,8 @@ Regenerate it with `bun run license:third-party` after dependency, submodule, fo
|
|
|
48
48
|
| `@typescript/typescript-win32-arm64` | 7.0.2 | Apache-2.0 | https://github.com/microsoft/TypeScript.git |
|
|
49
49
|
| `@typescript/typescript-win32-x64` | 7.0.2 | Apache-2.0 | https://github.com/microsoft/TypeScript.git |
|
|
50
50
|
| `@webgpu/types` | 0.1.74 | BSD-3-Clause | git+https://github.com/gpuweb/types.git |
|
|
51
|
-
| `bun-types` | 1.4.
|
|
52
|
-
| `prettier` | 3.9.
|
|
51
|
+
| `bun-types` | 1.4.4 | MIT | https://github.com/oven-sh/bun |
|
|
52
|
+
| `prettier` | 3.9.10 | MIT | prettier/prettier |
|
|
53
53
|
| `typescript` | 7.0.2 | Apache-2.0 | https://github.com/microsoft/TypeScript.git |
|
|
54
54
|
| `undici-types` | 7.16.0 | MIT | git+https://github.com/nodejs/undici.git |
|
|
55
55
|
|
package/dist/SHA256SUMS
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
5624060cb8dec3eaf83576e87a8b7f82af604afb818effe65e116ce9ef2547d0 dist/COPYRIGHT
|
|
2
2
|
875e830e8d3ffc9dd4ac04e35bbff1679e8c2cca04b9e253a52c13cdd427e002 dist/index.d.ts
|
|
3
3
|
fa747f7391ea35d6b59c07de76361eb681eef308bb7e0b551172a28af0477b44 dist/index.d.ts.map
|
|
4
4
|
f0871506c51e81b20a9e897475035e77b320c647dc2bcf188868a79cacfb5796 dist/index.js
|
|
5
5
|
67016996be9755a0ef87973ead977d8273ea81787ccfae84c49fc640ebe32587 dist/index.js.map
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
830c91b06bcc300fe48868f12dd001c6cd320287b49f869c8d6a2a664c216ae7 dist/ts/akarisub.d.ts
|
|
7
|
+
ffcc1e172ae3907bd053640b086d710f92ced1f74f2f3be651f98a548bc5daee dist/ts/akarisub.d.ts.map
|
|
8
|
+
16785d8271ff7ca0e459fd9ecfeed1fbadea9b57ce7408dba2eebf2bdbbdbeb3 dist/ts/akarisub.js
|
|
9
|
+
ea7fa60d2ee4ca9acff66649dabf8f03d2d1085eb60e0d07272d7eb5070525e7 dist/ts/akarisub.js.map
|
|
10
10
|
2e3ec3f18d67bd58a48e96df1045319f6a9ba6c9eccdf1b5875e695a15c6eae6 dist/ts/asset-loader.d.ts
|
|
11
11
|
f0ed2554e5776285d3af64375e59d0b9825d6c1cf9ad126d36a1d5e6aca1dfb5 dist/ts/asset-loader.d.ts.map
|
|
12
12
|
415a79d77f55489e5a2fa72e88afee2d0a61a5afd6052617b0db2fb18b005a1b dist/ts/asset-loader.js
|
|
@@ -23,6 +23,10 @@ f9c04172077ddd7ce5159815878f7c20256744c53afd22199f7bffbc977b8788 dist/ts/cue-ev
|
|
|
23
23
|
0410ba647170e1da8ce742075860de8dd839f7369e6ae5cd6adfabb45272343f dist/ts/cue-events.d.ts.map
|
|
24
24
|
20aae4b28222605b6bdae476ecf5feb910a8edf779a55e2a3ed01f233c97c0e8 dist/ts/cue-events.js
|
|
25
25
|
1827bfba70231ce14a8c6f1e4e3cdc45573d66b9c1acea2416e5ad59dfd55645 dist/ts/cue-events.js.map
|
|
26
|
+
cbbc4aeaf2f89b1a3aeb5c4606706a6a9cc68baf80e39a1490e6e97d4cf66647 dist/ts/encrypted-payload.d.ts
|
|
27
|
+
d727370e6929511b46240579cfd607e8e51fe85da52f878cd9ae4e4d424e2faf dist/ts/encrypted-payload.d.ts.map
|
|
28
|
+
5000e8b50894b3417f70d07ac1f1093112c8c35c5f7c79f3571b58bf3cf093de dist/ts/encrypted-payload.js
|
|
29
|
+
cc98eaa114056ef3db51d6b967311b81c08d90f1d9d07bb14b16374ff411dbfe dist/ts/encrypted-payload.js.map
|
|
26
30
|
96de10dcc3b39f1892343d4381efa6cfbb0f2731814876c786698cb3b72c15a0 dist/ts/font-reload.d.ts
|
|
27
31
|
375b8c5b95fd8fb9fd4109d6de5728c10d117d230c988840c9206dcdca8e02fe dist/ts/font-reload.d.ts.map
|
|
28
32
|
ae523b7c8321011eff40e545eddc952b5de3f4283578f5d4f69a442e1296b113 dist/ts/font-reload.js
|
|
@@ -39,18 +43,26 @@ ae523b7c8321011eff40e545eddc952b5de3f4283578f5d4f69a442e1296b113 dist/ts/font-r
|
|
|
39
43
|
610f15df8f9d43d826a2c9576a808f1e1ab2b1bbd897a127bc401537f4e7c9c7 dist/ts/gpu-recovery.d.ts.map
|
|
40
44
|
e63217eaf44b7d85809e57df99c0e067c831a8c98503df2ae1c93a37c0d1ee4b dist/ts/gpu-recovery.js
|
|
41
45
|
642160676977e7087c7d6867143db7c8492fad0b3a34dfdce5e9fa6e17ba5ae0 dist/ts/gpu-recovery.js.map
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
ba0ebbfb845fac95d7b8fd34b5b81f57ebe677fa81c453949dc42fd0b4eb2435 dist/ts/prepared-presentation.d.ts
|
|
47
|
+
f30aebac83eda301111a2cd21119b0abe4be88aeecf200396a94e4c796c01f0e dist/ts/prepared-presentation.d.ts.map
|
|
48
|
+
8b72eb17aeb6d934efede21b9d0ddd9fba450d913da4ace3c4e2d5fc87a5bb58 dist/ts/prepared-presentation.js
|
|
49
|
+
53e3158f34f6b4e019c6870e7907bc5f1d7f2a416865feb686e4e83c6b6451b2 dist/ts/prepared-presentation.js.map
|
|
50
|
+
76dddb259a343055925a888435767c8ab99da3c571d05055b91e04fbe1274c25 dist/ts/raw-ass-atlas.d.ts
|
|
51
|
+
629523c52cd60cc50737fe0b41ac2ee3a9373056f119cf75012a6e218788717b dist/ts/raw-ass-atlas.d.ts.map
|
|
52
|
+
846e9405d7f2e23478121c69e8b188154f177bf63c7676c2fcbf3348fd1d95c9 dist/ts/raw-ass-atlas.js
|
|
53
|
+
677a96708c6d74cfd9cd1fa3701a04fb2aa1cda6295e1439931b4d808ef0526a dist/ts/raw-ass-atlas.js.map
|
|
54
|
+
6b266683536d6dd845a1461f16aed1fc6d19072aa83de8826c0784461bb982bc dist/ts/raw-ass-webgpu.d.ts
|
|
55
|
+
e74c82fe2ebf565906bd1ffc2943cba5ed091581210fae573443414f6371ae75 dist/ts/raw-ass-webgpu.d.ts.map
|
|
56
|
+
3de2c9e08fc7328dbcd62b3f8555bd02b862b4cbce3de07b7e5b68f24810bf09 dist/ts/raw-ass-webgpu.js
|
|
57
|
+
0bdceb4e40db055a5462fe75f749ea9ef88e601aa6dd513de5104740725f50da dist/ts/raw-ass-webgpu.js.map
|
|
46
58
|
f438521761285e122f980bf303340c896ae8900653592aca8a50490cef248c0d dist/ts/streaming.d.ts
|
|
47
59
|
c9f15e4d436110dc5fd759a89c99c1062b531fa2c12397f71b2f279db9193a74 dist/ts/streaming.d.ts.map
|
|
48
60
|
d1a3884fa5d724e7f2008a4bb8d72f4b93aa50e65c3aa747b3db35d01e43187c dist/ts/streaming.js
|
|
49
61
|
3dc142c892b4474f04086957bea6b34c6bef4738f3ecd7a7425f853e8db774bf dist/ts/streaming.js.map
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
97841b0e571ec401d18480cdae5ee8f2c24618e59b1ecc441681e6f6f2daebc1 dist/ts/subtitle-budget.d.ts
|
|
63
|
+
b9c8de9266ff1ad5b10da955a5efc148f7957f8803319083a80652dae2491391 dist/ts/subtitle-budget.d.ts.map
|
|
64
|
+
e861eb287f7c7d1b62518bcb8fcc9e3436505b43da96b8ceaa04d0e193bc3060 dist/ts/subtitle-budget.js
|
|
65
|
+
f2e4f786a42f2c5852012846de1363abf9bad3d21863285e913d7657cb70582d dist/ts/subtitle-budget.js.map
|
|
54
66
|
5be6a5f6e545d4779d5c69f57f01c749f5a70f682f4df154a745cf901b23822f dist/ts/timing.d.ts
|
|
55
67
|
9dde42fc0ef84e31651bbcf8dfa8e030a448f667969796a706a93b6eafe91f67 dist/ts/timing.d.ts.map
|
|
56
68
|
9d7e3f9299315bc05519cae424f46405896b4a2418f347067b7dd768189d129f dist/ts/timing.js
|
|
@@ -59,8 +71,8 @@ f9a58c4bec2b483a5d86520227bff9d00a0ea255694d82b768f2010c1b09e42e dist/ts/track-
|
|
|
59
71
|
54f3c89a8bf08ba2fbdce4ef7e10ed21fd9c40e939760100b3d52c3403e56116 dist/ts/track-lifecycle.d.ts.map
|
|
60
72
|
ff1b29b6eb330955d7f49e43184814b7b2b648b99fc8b30f6666e813428c7489 dist/ts/track-lifecycle.js
|
|
61
73
|
50bccd0ab3fa035fe1e5925b7bfb6d8063f010a25c3831d793a9ba8bdc9f25fc dist/ts/track-lifecycle.js.map
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
ae24c14d544b1a687bac356adcbe4d5a68e7cbe3659d388556af4a623d35e835 dist/ts/types.d.ts
|
|
75
|
+
54ba63426d1b2f923c251570ace679cd3819302da25271079504914aaf320b54 dist/ts/types.d.ts.map
|
|
64
76
|
01ae2a5b120382f9a648ced7ee8507493a134f216d100fc61600c6c9738235d2 dist/ts/types.js
|
|
65
77
|
dcf4d5b79e4b7e0be9a882c40457fde920685f8bbe01bf6f565ef0d97ef33564 dist/ts/types.js.map
|
|
66
78
|
6f613569c4b1a778519fe1b34b0ec2087d5e430c5166c6fc243f0e533a21353f dist/ts/unicode-scripts.d.ts
|
|
@@ -93,13 +105,13 @@ cb6de44628c62b49105160468270f74f97da3a0636e3ede63174da2555dec05c dist/ts/webgpu
|
|
|
93
105
|
7bba440c325155741e844e48626c3ace8f8144cd3691ee2f34a01b62408ae3ba dist/ts/webgpu-renderer.js.map
|
|
94
106
|
14e7397ad7aab084b1c5b23b9f101c079611e43e872d5b4250f2be5499a6a273 dist/ts/worker.d.ts
|
|
95
107
|
1fc2a3d6079a60bb0114cdcaea636e3dcca0b9aefad8c8260fe74bad79329dc3 dist/ts/worker.d.ts.map
|
|
96
|
-
|
|
97
|
-
|
|
108
|
+
aaca4553e2226851126752e6ae467dc3099f02b6cc92df716717375aa8befff6 dist/ts/worker.js
|
|
109
|
+
5a3810c470be9c9768241c2eb7a6354ab3cfba500eadfd0a4b8d5ead42041731 dist/ts/worker.js.map
|
|
98
110
|
c33f5b7b3948884b2571c66fbc9eead2542944becb3aaf028414be69c18a8905 dist/wrapper.d.ts
|
|
99
111
|
32addba2866bac68b19d9176471f48f53f835a0c2267e79708cc137a46e3e542 dist/wrapper.d.ts.map
|
|
100
112
|
92c414eb37e60cf9eb51e9a5ad34a2d52127801f62b91319452f0f27bdfe6ab3 dist/wrapper.js
|
|
101
113
|
969db85f288bec05a65200d3d9cec06a8e12fec82913b06ea7462360a687c489 dist/wrapper.js.map
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
62dc90dd3077dc46a2b1adeedeb849cf3f62e0c73d05191694419a33e45e7461 pkg/akarisub-mt.js
|
|
115
|
+
bc659760f67a97ee24dfd258b450e814170fd33d9a0a5671c5ce30dd95ffbdb4 pkg/akarisub-mt.wasm
|
|
116
|
+
c1b8b9e8e760b6f82bfffc09fe1cf7cd1993b97c7dd0bb7f4e5b8b7d9f0ff6a9 pkg/akarisub.js
|
|
117
|
+
8b30189c2087d27c063c419e5bb012535b6b9637222dde091aa14e663241d5a5 pkg/akarisub.wasm
|
package/dist/ts/akarisub.d.ts
CHANGED
|
@@ -413,6 +413,13 @@ export default class AkariSub extends EventTarget {
|
|
|
413
413
|
private _demandRender;
|
|
414
414
|
/** @internal */
|
|
415
415
|
private _detachOffscreen;
|
|
416
|
+
/**
|
|
417
|
+
* @internal Worker WebGPU gave up on its device. The transferred canvas can
|
|
418
|
+
* hold no other context, so an owned overlay canvas is replaced and the
|
|
419
|
+
* worker binds the new one to WebGL2 (or 2D); a caller-owned canvas cannot
|
|
420
|
+
* be replaced and stays blank.
|
|
421
|
+
*/
|
|
422
|
+
private _rawAssGpuFailed;
|
|
416
423
|
/** @internal */
|
|
417
424
|
private _reAttachOffscreen;
|
|
418
425
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"akarisub.d.ts","sourceRoot":"","sources":["../../src/ts/akarisub.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,QAAQ,EAER,gBAAgB,EAEhB,cAAc,EACd,kBAAkB,EAKlB,YAAY,EAEZ,qBAAqB,EAGrB,kBAAkB,EAClB,aAAa,EACb,wBAAwB,EACxB,cAAc,EACf,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"akarisub.d.ts","sourceRoot":"","sources":["../../src/ts/akarisub.ts"],"names":[],"mappings":"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"}
|
package/dist/ts/akarisub.js
CHANGED
|
@@ -15,6 +15,12 @@ import { isVideoFrameLike, videoFrameCallbackMetadata } from './video-frame';
|
|
|
15
15
|
import { getDefaultFontUrl, getMtWasmGlueUrl, getMtWasmUrl, getWasmGlueUrl, getWasmUrl } from './wasm';
|
|
16
16
|
import { webYCbCrMap } from './utils';
|
|
17
17
|
const DEFAULT_RENDER_AHEAD = 0;
|
|
18
|
+
const transferredCanvasSize = (canvas) => ({ width: canvas.width, height: canvas.height });
|
|
19
|
+
// Firefox can composite a scheduled opacity swap with the old stage already
|
|
20
|
+
// hidden and the new one not yet shown, blanking subtitles for a refresh or
|
|
21
|
+
// two. Only Gecko UAs carry `rv:<version>) Gecko/`; Blink and WebKit say
|
|
22
|
+
// "like Gecko".
|
|
23
|
+
const isLikelyGecko = () => typeof navigator !== 'undefined' && /\brv:[\d.]+\) Gecko\/\d/.test(navigator.userAgent || '');
|
|
18
24
|
const isLikelyWebKit = () => {
|
|
19
25
|
if (typeof navigator === 'undefined')
|
|
20
26
|
return false;
|
|
@@ -98,7 +104,7 @@ export default class AkariSub extends EventTarget {
|
|
|
98
104
|
refreshInterval: () => estimateRefreshIntervalMs(this._refreshSamples ?? []),
|
|
99
105
|
now: () => performance.now(),
|
|
100
106
|
documentTime: () => Number(document.timeline?.currentTime)
|
|
101
|
-
});
|
|
107
|
+
}, !isLikelyGecko());
|
|
102
108
|
}
|
|
103
109
|
_predictedDisplayTimes = new Map();
|
|
104
110
|
_displayClockOffsets = [];
|
|
@@ -366,6 +372,8 @@ export default class AkariSub extends EventTarget {
|
|
|
366
372
|
adaptiveBlendLayouts: options.adaptiveBlendLayouts ?? false,
|
|
367
373
|
cueTracking: resolveCueTracking(options.cueTracking),
|
|
368
374
|
rawAssImageGpu,
|
|
375
|
+
rawAssImageAtlas: options.rawAssImageAtlas ?? true,
|
|
376
|
+
rawAssImageWebGPU: options.rawAssImageWebGPU ?? false,
|
|
369
377
|
onDemandRender: this._onDemandRender,
|
|
370
378
|
initialTime,
|
|
371
379
|
initialIsPaused: this._isVideoPausedForWorker(),
|
|
@@ -399,16 +407,19 @@ export default class AkariSub extends EventTarget {
|
|
|
399
407
|
this._worker.postMessage(initMessage, AkariSub._getSubtitleTransfers(options.subContent, options.encryptedSubContent));
|
|
400
408
|
if (this._offscreenRender) {
|
|
401
409
|
const offscreenCanvas = this._canvasctrl;
|
|
410
|
+
const size = transferredCanvasSize(offscreenCanvas);
|
|
402
411
|
// Post this immediately after init, before the worker can emit ready and
|
|
403
412
|
// trigger an on-demand render. sendMessage() waits for ready and races
|
|
404
413
|
// the first render, leaving offscreenRender=true with no canvas bound.
|
|
405
414
|
this._worker.postMessage({
|
|
406
415
|
target: 'offscreenCanvas',
|
|
407
416
|
rawAssImageGpu,
|
|
417
|
+
rawAssImageWebGPU: options.rawAssImageWebGPU ?? false,
|
|
408
418
|
canvasColorSpace: this._videoColorProfile.canvasColorSpace,
|
|
409
419
|
hdr: this._shouldUseHdr(),
|
|
410
420
|
transferable: [offscreenCanvas]
|
|
411
421
|
}, [offscreenCanvas]);
|
|
422
|
+
this._canvasctrl = size;
|
|
412
423
|
}
|
|
413
424
|
});
|
|
414
425
|
}
|
|
@@ -894,12 +905,13 @@ export default class AkariSub extends EventTarget {
|
|
|
894
905
|
this._canvas.style.width = cssWidth;
|
|
895
906
|
this._canvas.style.height = cssHeight;
|
|
896
907
|
if (mode === 'offscreen') {
|
|
897
|
-
|
|
908
|
+
const offscreenCanvas = this._canvas.transferControlToOffscreen();
|
|
909
|
+
this._canvasctrl = transferredCanvasSize(offscreenCanvas);
|
|
898
910
|
this._ctx = false;
|
|
899
911
|
this.sendMessage('offscreenCanvas', {
|
|
900
912
|
canvasColorSpace: this._videoColorProfile.canvasColorSpace,
|
|
901
913
|
hdr: this._shouldUseHdr()
|
|
902
|
-
}, [
|
|
914
|
+
}, [offscreenCanvas]);
|
|
903
915
|
}
|
|
904
916
|
else {
|
|
905
917
|
this._canvasctrl = this._canvas;
|
|
@@ -1415,6 +1427,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1415
1427
|
usingWorker: stats.usingWorker ?? true,
|
|
1416
1428
|
rawAssImageGpu: stats.rawAssImageGpu,
|
|
1417
1429
|
workerRenderer: stats.workerRenderer,
|
|
1430
|
+
workerRendererLost: stats.workerRendererLost,
|
|
1418
1431
|
offscreenRender: stats.offscreenRender ?? this._offscreenRender,
|
|
1419
1432
|
onDemandRender: stats.onDemandRender ?? this._onDemandRender,
|
|
1420
1433
|
wasmSimd: stats.wasmSimd ?? this._wasmSimd,
|
|
@@ -2153,12 +2166,13 @@ export default class AkariSub extends EventTarget {
|
|
|
2153
2166
|
// RVFC and presentVideoFrame render ahead while frames are advancing. When
|
|
2154
2167
|
// playback pauses, stalls, or seeks, the last ahead render can be visibly
|
|
2155
2168
|
// in the future. Force an exact render at the displayed media time.
|
|
2169
|
+
// `stalled` only reports a quiet network fetch while playback continues
|
|
2170
|
+
// from the buffer; a real stall also fires `waiting`.
|
|
2156
2171
|
const shouldRenderExactFrame = isPaused ||
|
|
2157
2172
|
event?.type === 'pause' ||
|
|
2158
2173
|
event?.type === 'seeking' ||
|
|
2159
2174
|
event?.type === 'seeked' ||
|
|
2160
2175
|
event?.type === 'waiting' ||
|
|
2161
|
-
event?.type === 'stalled' ||
|
|
2162
2176
|
event?.type === 'ended';
|
|
2163
2177
|
if (shouldRenderExactFrame) {
|
|
2164
2178
|
this._bumpRenderEpoch();
|
|
@@ -2326,24 +2340,41 @@ export default class AkariSub extends EventTarget {
|
|
|
2326
2340
|
this._canvas.remove();
|
|
2327
2341
|
this._createCanvas();
|
|
2328
2342
|
this._canvasctrl = this._canvas;
|
|
2329
|
-
this._ctx = this.
|
|
2343
|
+
this._ctx = this._canvas.getContext('2d', this._canvas2dSettings());
|
|
2330
2344
|
this.sendMessage('detachOffscreen');
|
|
2331
2345
|
this.busy = false;
|
|
2332
2346
|
this._pendingDemandTimes.length = 0;
|
|
2333
2347
|
this.resize(0, 0, 0, 0, true);
|
|
2334
2348
|
}
|
|
2349
|
+
/**
|
|
2350
|
+
* @internal Worker WebGPU gave up on its device. The transferred canvas can
|
|
2351
|
+
* hold no other context, so an owned overlay canvas is replaced and the
|
|
2352
|
+
* worker binds the new one to WebGL2 (or 2D); a caller-owned canvas cannot
|
|
2353
|
+
* be replaced and stays blank.
|
|
2354
|
+
*/
|
|
2355
|
+
_rawAssGpuFailed() {
|
|
2356
|
+
if (this._destroyed)
|
|
2357
|
+
return;
|
|
2358
|
+
this._emitPerformanceWarning({ kind: 'renderer-recovery', reason: 'device-lost', rendererType: this._rendererType });
|
|
2359
|
+
if (this._offscreenRender && !this._ctx && this._canvasParent) {
|
|
2360
|
+
this._replaceOwnedOverlayCanvas('offscreen');
|
|
2361
|
+
return;
|
|
2362
|
+
}
|
|
2363
|
+
console.warn('[AkariSub] Worker WebGPU failed; the caller-owned canvas cannot be replaced, so subtitles are not drawn');
|
|
2364
|
+
}
|
|
2335
2365
|
/** @internal */
|
|
2336
2366
|
_reAttachOffscreen() {
|
|
2337
2367
|
if (!this._offscreenRender || !this._ctx)
|
|
2338
2368
|
return;
|
|
2339
2369
|
this._canvas.remove();
|
|
2340
2370
|
this._createCanvas();
|
|
2341
|
-
|
|
2371
|
+
const offscreenCanvas = this._canvas.transferControlToOffscreen();
|
|
2372
|
+
this._canvasctrl = transferredCanvasSize(offscreenCanvas);
|
|
2342
2373
|
this._ctx = false;
|
|
2343
2374
|
this.sendMessage('offscreenCanvas', {
|
|
2344
2375
|
canvasColorSpace: this._videoColorProfile.canvasColorSpace,
|
|
2345
2376
|
hdr: this._shouldUseHdr()
|
|
2346
|
-
}, [
|
|
2377
|
+
}, [offscreenCanvas]);
|
|
2347
2378
|
this.resize(0, 0, 0, 0, true);
|
|
2348
2379
|
}
|
|
2349
2380
|
/** @internal */
|