akarisub 1.1.2 → 1.1.3
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 +1 -1
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/dist/COPYRIGHT +4 -4
- package/dist/ts/akarisub.d.ts +11 -2
- package/dist/ts/akarisub.d.ts.map +1 -1
- package/dist/ts/akarisub.js +158 -27
- package/dist/ts/akarisub.js.map +1 -1
- package/dist/ts/bitmap-settlements.d.ts +14 -0
- package/dist/ts/bitmap-settlements.d.ts.map +1 -0
- package/dist/ts/bitmap-settlements.js +23 -0
- package/dist/ts/bitmap-settlements.js.map +1 -0
- package/dist/ts/color-space.d.ts +1 -0
- package/dist/ts/color-space.d.ts.map +1 -1
- package/dist/ts/color-space.js +10 -1
- package/dist/ts/color-space.js.map +1 -1
- package/dist/ts/cue-events.d.ts +2 -0
- package/dist/ts/cue-events.d.ts.map +1 -1
- package/dist/ts/cue-events.js +2 -0
- package/dist/ts/cue-events.js.map +1 -1
- package/dist/ts/types.d.ts +6 -0
- package/dist/ts/types.d.ts.map +1 -1
- package/dist/ts/worker.js +86 -32
- package/dist/ts/worker.js.map +1 -1
- package/package.json +3 -3
- package/pkg/akarisub-mt.wasm +0 -0
- package/pkg/akarisub.wasm +0 -0
package/README.md
CHANGED
|
@@ -404,7 +404,7 @@ The default options are best, and automatically fallback to the next fastest opt
|
|
|
404
404
|
| `flushEvents()` | - | Drop every event and keep styles / script info |
|
|
405
405
|
| `configurePrune(delay)` | `delay: number` | Auto-drop events that ended more than `delay` seconds before the last render |
|
|
406
406
|
| `preloadTrack(source)` | `PreloadTrackSource \| string \| bytes` | Parse a track and load its fonts without replacing the visible one |
|
|
407
|
-
| `activatePreloadedTrack(id?)` | `id?: number` | Atomically swap to a preloaded track
|
|
407
|
+
| `activatePreloadedTrack(id?)` | `id?: number` | Atomically swap to a preloaded track and await its matching readiness cycle |
|
|
408
408
|
|
|
409
409
|
### Playback Control
|
|
410
410
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -16,7 +16,7 @@ Regenerate it with `bun run license:third-party` after dependency, submodule, fo
|
|
|
16
16
|
| FriBidi | v1.0.16-5-g069a7e3 (lib/fribidi) | LGPL-2.1-or-later | Compiled into the WebAssembly worker for bidirectional text support. |
|
|
17
17
|
| fontconfig | 2.18.3 (lib/fontconfig) | HPND-style license with additional notices | Compiled into the WebAssembly worker for font fallback and matching. |
|
|
18
18
|
| HarfBuzz | 14.3.0 (lib/harfbuzz) | Old MIT | Compiled into the WebAssembly worker for text shaping. |
|
|
19
|
-
| libass |
|
|
19
|
+
| libass | 3fef2c1 (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
|
|
package/dist/COPYRIGHT
CHANGED
|
@@ -16,7 +16,7 @@ Regenerate it with `bun run license:third-party` after dependency, submodule, fo
|
|
|
16
16
|
| FriBidi | 069a7e3 (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 | 4c2aa80 (lib/harfbuzz) | Old MIT | Compiled into the WebAssembly worker for text shaping. |
|
|
19
|
-
| libass |
|
|
19
|
+
| libass | 3fef2c1 (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,8 +24,8 @@ 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.
|
|
28
|
-
| `@types/emscripten` | 1.41.
|
|
27
|
+
| `@types/bun` | 1.4.1 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
|
|
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 |
|
|
31
31
|
| `@typescript/typescript-darwin-arm64` | 7.0.2 | Apache-2.0 | https://github.com/microsoft/TypeScript.git |
|
|
@@ -48,7 +48,7 @@ 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.72 | BSD-3-Clause | gpuweb/types |
|
|
51
|
-
| `bun-types` | 1.4.
|
|
51
|
+
| `bun-types` | 1.4.1 | MIT | https://github.com/oven-sh/bun |
|
|
52
52
|
| `prettier` | 3.9.6 | 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 |
|
package/dist/ts/akarisub.d.ts
CHANGED
|
@@ -27,6 +27,7 @@ export default class AkariSub extends EventTarget {
|
|
|
27
27
|
private _destroyedSignal;
|
|
28
28
|
private _resolveDestroyed;
|
|
29
29
|
private _pendingWorkerRejectors;
|
|
30
|
+
private _pendingTrackReadyWaiters;
|
|
30
31
|
private _onDemandRender;
|
|
31
32
|
private _offscreenRender;
|
|
32
33
|
private _video?;
|
|
@@ -78,6 +79,7 @@ export default class AkariSub extends EventTarget {
|
|
|
78
79
|
private _prepareRequests;
|
|
79
80
|
private _nextPrepareId;
|
|
80
81
|
private _prepareForce;
|
|
82
|
+
private _prepareFailureEpoch;
|
|
81
83
|
private _timingCompensationSeconds;
|
|
82
84
|
private _rvfcHandle;
|
|
83
85
|
private _rvfcGeneration;
|
|
@@ -184,6 +186,8 @@ export default class AkariSub extends EventTarget {
|
|
|
184
186
|
/** @internal */
|
|
185
187
|
private _currentCanvasFilter;
|
|
186
188
|
/** @internal */
|
|
189
|
+
private _requiresCanvasColorConversion;
|
|
190
|
+
/** @internal */
|
|
187
191
|
private _showGPURecoveryFrame;
|
|
188
192
|
/** @internal */
|
|
189
193
|
private _hideGPURecoveryFrame;
|
|
@@ -284,8 +288,9 @@ export default class AkariSub extends EventTarget {
|
|
|
284
288
|
*/
|
|
285
289
|
preloadTrack(source: PreloadTrackSource | string | Uint8Array | ArrayBuffer): Promise<PreloadedTrack>;
|
|
286
290
|
/**
|
|
287
|
-
* Replace the visible track with a previously preloaded one. The
|
|
288
|
-
*
|
|
291
|
+
* Replace the visible track with a previously preloaded one. The returned
|
|
292
|
+
* promise waits for the matching readiness cycle; paused exact-timeline
|
|
293
|
+
* renderers also finish their configured frame-prefetch runway.
|
|
289
294
|
*/
|
|
290
295
|
activatePreloadedTrack(id?: number): Promise<PreloadedTrack>;
|
|
291
296
|
/** Tell the worker whether playback is paused. Ignored when a video element is attached. */
|
|
@@ -445,6 +450,8 @@ export default class AkariSub extends EventTarget {
|
|
|
445
450
|
private _partial_ready;
|
|
446
451
|
/** @internal */
|
|
447
452
|
private _trackReady;
|
|
453
|
+
/** @internal */
|
|
454
|
+
private _supersedePendingTrackActivation;
|
|
448
455
|
/** Send a raw message to the worker. Prefer the typed methods above. */
|
|
449
456
|
sendMessage(target: string, data?: Record<string, any>, transferable?: Transferable[]): Promise<void>;
|
|
450
457
|
/** @internal */
|
|
@@ -452,6 +459,8 @@ export default class AkariSub extends EventTarget {
|
|
|
452
459
|
/** @internal */
|
|
453
460
|
private _fetchFromWorker;
|
|
454
461
|
/** @internal */
|
|
462
|
+
private _waitForTrackReady;
|
|
463
|
+
/** @internal */
|
|
455
464
|
private _cues;
|
|
456
465
|
/** @internal */
|
|
457
466
|
private _renderInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"akarisub.d.ts","sourceRoot":"","sources":["../../src/ts/akarisub.ts"],"names":[],"mappings":"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"}
|
|
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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classifyPerformanceWarnings, parsePreloadTrackSource } from './cue-events';
|
|
1
|
+
import { classifyPerformanceWarnings, parsePreloadTrackSource, resolveCueTracking } from './cue-events';
|
|
2
2
|
import { parseStreamingTrackOptions } from './streaming';
|
|
3
3
|
import { normalizeFontFamilySource } from './font-subsets';
|
|
4
4
|
import { computeCanvasSize, getVideoPosition, fixAlpha } from './utils';
|
|
@@ -53,6 +53,7 @@ export default class AkariSub extends EventTarget {
|
|
|
53
53
|
_destroyedSignal;
|
|
54
54
|
_resolveDestroyed;
|
|
55
55
|
_pendingWorkerRejectors = new Set();
|
|
56
|
+
_pendingTrackReadyWaiters = new Map();
|
|
56
57
|
_onDemandRender;
|
|
57
58
|
_offscreenRender;
|
|
58
59
|
_video;
|
|
@@ -104,6 +105,7 @@ export default class AkariSub extends EventTarget {
|
|
|
104
105
|
_prepareRequests = new Map();
|
|
105
106
|
_nextPrepareId = 1;
|
|
106
107
|
_prepareForce = true;
|
|
108
|
+
_prepareFailureEpoch = -1;
|
|
107
109
|
_timingCompensationSeconds = 0;
|
|
108
110
|
_rvfcHandle = null;
|
|
109
111
|
_rvfcGeneration = 0;
|
|
@@ -313,6 +315,7 @@ export default class AkariSub extends EventTarget {
|
|
|
313
315
|
blockingFullTrackWarmup: options.blockingFullTrackWarmup ?? false,
|
|
314
316
|
fullTrackWarmupStep: options.fullTrackWarmupStep ?? 1,
|
|
315
317
|
adaptiveBlendLayouts: options.adaptiveBlendLayouts ?? false,
|
|
318
|
+
cueTracking: resolveCueTracking(options.cueTracking),
|
|
316
319
|
rawAssImageGpu,
|
|
317
320
|
onDemandRender: this._onDemandRender,
|
|
318
321
|
initialTime,
|
|
@@ -797,6 +800,14 @@ export default class AkariSub extends EventTarget {
|
|
|
797
800
|
return getColorSpaceFilterUrl(this._lastSubtitleColorSpace, target) ?? 'none';
|
|
798
801
|
}
|
|
799
802
|
/** @internal */
|
|
803
|
+
_requiresCanvasColorConversion() {
|
|
804
|
+
const target = this._videoColorProfile?.matrix ?? this._videoColorSpace;
|
|
805
|
+
return (!this._gpuRenderer &&
|
|
806
|
+
!!this._lastSubtitleColorSpace &&
|
|
807
|
+
!!target &&
|
|
808
|
+
this._lastSubtitleColorSpace !== target);
|
|
809
|
+
}
|
|
810
|
+
/** @internal */
|
|
800
811
|
_showGPURecoveryFrame() {
|
|
801
812
|
if (!this._canvasParent || !this._canvas)
|
|
802
813
|
return;
|
|
@@ -1024,6 +1035,11 @@ export default class AkariSub extends EventTarget {
|
|
|
1024
1035
|
this._canvas.style.width = videoSize.width + 'px';
|
|
1025
1036
|
this._canvas.style.height = videoSize.height + 'px';
|
|
1026
1037
|
}
|
|
1038
|
+
else if ((!width || !height) && this._videoFrameClock) {
|
|
1039
|
+
const renderSize = computeCanvasSize(this._videoFrameClock.width, this._videoFrameClock.height, this.prescaleFactor, this.prescaleHeightLimit, this.maxRenderHeight);
|
|
1040
|
+
width = renderSize.width;
|
|
1041
|
+
height = renderSize.height;
|
|
1042
|
+
}
|
|
1027
1043
|
this._canvas.style.top = top + 'px';
|
|
1028
1044
|
this._canvas.style.left = left + 'px';
|
|
1029
1045
|
for (const stage of this._stagedCanvases)
|
|
@@ -1153,6 +1169,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1153
1169
|
}
|
|
1154
1170
|
/** Fetch and load an ASS/SSA track from `url`. */
|
|
1155
1171
|
setTrackByUrl(url) {
|
|
1172
|
+
this._supersedePendingTrackActivation();
|
|
1156
1173
|
this._bumpRenderEpoch();
|
|
1157
1174
|
this.sendMessage('setTrackByUrl', { url });
|
|
1158
1175
|
this._reAttachOffscreen();
|
|
@@ -1161,6 +1178,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1161
1178
|
}
|
|
1162
1179
|
/** Replace the current track with ASS/SSA text or bytes. */
|
|
1163
1180
|
setTrack(content) {
|
|
1181
|
+
this._supersedePendingTrackActivation();
|
|
1164
1182
|
this._bumpRenderEpoch();
|
|
1165
1183
|
this.sendMessage('setTrack', { content }, AkariSub._getSubtitleTransfers(content));
|
|
1166
1184
|
this._reAttachOffscreen();
|
|
@@ -1173,6 +1191,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1173
1191
|
* materialized in the main thread.
|
|
1174
1192
|
*/
|
|
1175
1193
|
setEncryptedTrack(content) {
|
|
1194
|
+
this._supersedePendingTrackActivation();
|
|
1176
1195
|
this._bumpRenderEpoch();
|
|
1177
1196
|
this.sendMessage('setEncryptedTrack', { content }, AkariSub._getSubtitleTransfers(undefined, content));
|
|
1178
1197
|
this._reAttachOffscreen();
|
|
@@ -1181,6 +1200,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1181
1200
|
}
|
|
1182
1201
|
/** Unload the current track without destroying the renderer. */
|
|
1183
1202
|
freeTrack() {
|
|
1203
|
+
this._supersedePendingTrackActivation();
|
|
1184
1204
|
this._sendMutatingMessage('freeTrack');
|
|
1185
1205
|
}
|
|
1186
1206
|
/**
|
|
@@ -1191,6 +1211,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1191
1211
|
*/
|
|
1192
1212
|
initStreamingTrack(options) {
|
|
1193
1213
|
const parsed = parseStreamingTrackOptions(options);
|
|
1214
|
+
this._supersedePendingTrackActivation();
|
|
1194
1215
|
this._bumpRenderEpoch();
|
|
1195
1216
|
this.sendMessage('initStreamingTrack', { options: parsed }, parsed.header ? AkariSub._getSubtitleTransfers(parsed.header) : undefined);
|
|
1196
1217
|
this._reAttachOffscreen();
|
|
@@ -1265,8 +1286,9 @@ export default class AkariSub extends EventTarget {
|
|
|
1265
1286
|
return { id: result.id };
|
|
1266
1287
|
}
|
|
1267
1288
|
/**
|
|
1268
|
-
* Replace the visible track with a previously preloaded one. The
|
|
1269
|
-
*
|
|
1289
|
+
* Replace the visible track with a previously preloaded one. The returned
|
|
1290
|
+
* promise waits for the matching readiness cycle; paused exact-timeline
|
|
1291
|
+
* renderers also finish their configured frame-prefetch runway.
|
|
1270
1292
|
*/
|
|
1271
1293
|
async activatePreloadedTrack(id = this._preloadedTrackId ?? -1) {
|
|
1272
1294
|
const ready = this._workerReady ||
|
|
@@ -1277,22 +1299,38 @@ export default class AkariSub extends EventTarget {
|
|
|
1277
1299
|
throw new Error('No preloaded track is ready');
|
|
1278
1300
|
this._bumpRenderEpoch();
|
|
1279
1301
|
const requestId = this._nextTrackRequestId++;
|
|
1280
|
-
const
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1302
|
+
const readiness = this._waitForTrackReady(requestId);
|
|
1303
|
+
try {
|
|
1304
|
+
const result = await this._fetchFromWorker({
|
|
1305
|
+
target: 'activatePreloadedTrack',
|
|
1306
|
+
requestId,
|
|
1307
|
+
id,
|
|
1308
|
+
timeoutMs: null
|
|
1309
|
+
});
|
|
1310
|
+
if (!result.success || result.id == null) {
|
|
1311
|
+
throw new Error(result.error || 'The preloaded track could not be activated');
|
|
1312
|
+
}
|
|
1313
|
+
if (this._preloadedTrackId === result.id)
|
|
1314
|
+
this._preloadedTrackId = null;
|
|
1315
|
+
const requiresCanvasColorConversion = this._requiresCanvasColorConversion();
|
|
1316
|
+
const reattachedOffscreen = !requiresCanvasColorConversion && this._offscreenRender && !!this._ctx;
|
|
1317
|
+
if (!requiresCanvasColorConversion) {
|
|
1318
|
+
this._reAttachOffscreen();
|
|
1319
|
+
if (this._ctx)
|
|
1320
|
+
this._ctx.filter = 'none';
|
|
1321
|
+
}
|
|
1322
|
+
// The matching trackReady already synchronized the clock. Repeat it only
|
|
1323
|
+
// when reattachment replaced the canvas that received that first render.
|
|
1324
|
+
if (reattachedOffscreen)
|
|
1325
|
+
this._syncVideoClock();
|
|
1326
|
+
const readinessError = await readiness.promise;
|
|
1327
|
+
if (readinessError)
|
|
1328
|
+
throw readinessError;
|
|
1329
|
+
return { id: result.id };
|
|
1330
|
+
}
|
|
1331
|
+
finally {
|
|
1332
|
+
readiness.cancel();
|
|
1288
1333
|
}
|
|
1289
|
-
if (this._preloadedTrackId === result.id)
|
|
1290
|
-
this._preloadedTrackId = null;
|
|
1291
|
-
this._reAttachOffscreen();
|
|
1292
|
-
if (this._ctx)
|
|
1293
|
-
this._ctx.filter = 'none';
|
|
1294
|
-
this._syncVideoClock();
|
|
1295
|
-
return { id: result.id };
|
|
1296
1334
|
}
|
|
1297
1335
|
/** Tell the worker whether playback is paused. Ignored when a video element is attached. */
|
|
1298
1336
|
setIsPaused(isPaused) {
|
|
@@ -1588,7 +1626,7 @@ export default class AkariSub extends EventTarget {
|
|
|
1588
1626
|
}
|
|
1589
1627
|
const event = this._frameBufferReadyEvent;
|
|
1590
1628
|
this._frameBufferReadyEvent = null;
|
|
1591
|
-
this.dispatchEvent(new CustomEvent(event));
|
|
1629
|
+
this.dispatchEvent(new CustomEvent(event.type, event.requestId == null ? undefined : { detail: { requestId: event.requestId } }));
|
|
1592
1630
|
}
|
|
1593
1631
|
/** @internal */
|
|
1594
1632
|
_startRefreshSampling() {
|
|
@@ -2085,7 +2123,11 @@ export default class AkariSub extends EventTarget {
|
|
|
2085
2123
|
/** @internal */
|
|
2086
2124
|
_primePreparedFrames(mediaTime) {
|
|
2087
2125
|
const timeline = this._frameTimeline;
|
|
2088
|
-
if (!timeline ||
|
|
2126
|
+
if (!timeline ||
|
|
2127
|
+
timeline.length === 0 ||
|
|
2128
|
+
this.framePrefetch <= 0 ||
|
|
2129
|
+
this._destroyed ||
|
|
2130
|
+
(this._prepareFailureEpoch ?? -1) >= 0 && this._prepareFailureEpoch === this._renderEpoch) {
|
|
2089
2131
|
return;
|
|
2090
2132
|
}
|
|
2091
2133
|
const currentIndex = presentedFrameIndex(timeline, mediaTime);
|
|
@@ -2120,8 +2162,13 @@ export default class AkariSub extends EventTarget {
|
|
|
2120
2162
|
}
|
|
2121
2163
|
/** @internal */
|
|
2122
2164
|
_dispatchNextPreparation() {
|
|
2123
|
-
if (this.busy ||
|
|
2165
|
+
if (this.busy ||
|
|
2166
|
+
!this._workerReady ||
|
|
2167
|
+
!this._frameTimeline ||
|
|
2168
|
+
this.framePrefetch <= 0 ||
|
|
2169
|
+
(this._prepareFailureEpoch ?? -1) >= 0 && this._prepareFailureEpoch === this._renderEpoch) {
|
|
2124
2170
|
return;
|
|
2171
|
+
}
|
|
2125
2172
|
let index;
|
|
2126
2173
|
while ((index = this._prepareQueue.shift()) != null) {
|
|
2127
2174
|
if (!this._preparedFrames.has(index))
|
|
@@ -2148,9 +2195,15 @@ export default class AkariSub extends EventTarget {
|
|
|
2148
2195
|
_preparedFrame(data) {
|
|
2149
2196
|
const request = this._prepareRequests.get(data.prepareId);
|
|
2150
2197
|
this._prepareRequests.delete(data.prepareId);
|
|
2198
|
+
const validEpoch = request != null && request.renderEpoch === this._renderEpoch && data.renderEpoch === this._renderEpoch;
|
|
2199
|
+
if (data.failed && validEpoch) {
|
|
2200
|
+
// A snapshot failure must not immediately enqueue the same frame again.
|
|
2201
|
+
// Fall back to demand rendering for this epoch and let a later epoch retry.
|
|
2202
|
+
this._prepareFailureEpoch = this._renderEpoch;
|
|
2203
|
+
this._prepareQueue.length = 0;
|
|
2204
|
+
}
|
|
2151
2205
|
if (request?.presentation) {
|
|
2152
2206
|
const presentation = request.presentation;
|
|
2153
|
-
const validEpoch = request.renderEpoch === this._renderEpoch && data.renderEpoch === this._renderEpoch;
|
|
2154
2207
|
const currentIndex = this._currentExactFrameIndex();
|
|
2155
2208
|
const obsolete = currentIndex != null && request.index < currentIndex;
|
|
2156
2209
|
if (data.bitmap && validEpoch && !obsolete) {
|
|
@@ -2300,6 +2353,7 @@ export default class AkariSub extends EventTarget {
|
|
|
2300
2353
|
/** @internal */
|
|
2301
2354
|
_bumpRenderEpoch() {
|
|
2302
2355
|
this._renderEpoch++;
|
|
2356
|
+
this._prepareFailureEpoch = -1;
|
|
2303
2357
|
this._pendingDemandTimes.length = 0;
|
|
2304
2358
|
this._demandTimings.clear();
|
|
2305
2359
|
this._clearPreparedFrames();
|
|
@@ -2730,6 +2784,7 @@ export default class AkariSub extends EventTarget {
|
|
|
2730
2784
|
const hasAlphaBug = AkariSub._hasAlphaBug ?? false;
|
|
2731
2785
|
const bufferCanvas = this._bufferCanvas;
|
|
2732
2786
|
const bufferCtx = this._bufferCtx;
|
|
2787
|
+
const canWritePreblendedDirectly = data.preblended === true && ctx.filter === 'none';
|
|
2733
2788
|
for (let i = 0; i < imageCount; i++) {
|
|
2734
2789
|
const image = images[i];
|
|
2735
2790
|
if (image.image) {
|
|
@@ -2742,11 +2797,20 @@ export default class AkariSub extends EventTarget {
|
|
|
2742
2797
|
? new Uint8ClampedArray(rawImage.buffer, rawImage.byteOffset, rawImage.byteLength)
|
|
2743
2798
|
: new Uint8ClampedArray(rawImage);
|
|
2744
2799
|
const fixedData = fixAlpha(rawData, hasAlphaBug);
|
|
2800
|
+
const imageData = createSubtitleImageData(fixedData, imgW, imgH);
|
|
2801
|
+
if (canWritePreblendedDirectly) {
|
|
2802
|
+
// renderBlendCollect guarantees these rectangles are already
|
|
2803
|
+
// source-over flattened and mutually disjoint. The render target
|
|
2804
|
+
// is cleared above, so a direct write preserves the same frame
|
|
2805
|
+
// while avoiding one upload and draw per plane.
|
|
2806
|
+
ctx.putImageData(imageData, image.x, image.y);
|
|
2807
|
+
continue;
|
|
2808
|
+
}
|
|
2745
2809
|
if (bufferCanvas.width !== imgW || bufferCanvas.height !== imgH) {
|
|
2746
2810
|
bufferCanvas.width = imgW;
|
|
2747
2811
|
bufferCanvas.height = imgH;
|
|
2748
2812
|
}
|
|
2749
|
-
bufferCtx.putImageData(
|
|
2813
|
+
bufferCtx.putImageData(imageData, 0, 0);
|
|
2750
2814
|
ctx.drawImage(bufferCanvas, image.x, image.y);
|
|
2751
2815
|
}
|
|
2752
2816
|
}
|
|
@@ -2863,7 +2927,7 @@ export default class AkariSub extends EventTarget {
|
|
|
2863
2927
|
const currentTime = this._clockCurrentTime() ?? 0;
|
|
2864
2928
|
const isPaused = this._isVideoPausedForWorker();
|
|
2865
2929
|
const bufferExactFrames = isPaused && this._onDemandRender && !!this._frameTimeline?.length && this.framePrefetch > 0;
|
|
2866
|
-
this._frameBufferReadyEvent = bufferExactFrames ? 'ready' : null;
|
|
2930
|
+
this._frameBufferReadyEvent = bufferExactFrames ? { type: 'ready' } : null;
|
|
2867
2931
|
this.setCurrentTime(isPaused, currentTime + this.timeOffset, this._videoPlaybackRateForWorker());
|
|
2868
2932
|
if (!this._onDemandRender) {
|
|
2869
2933
|
this.dispatchEvent(new CustomEvent('ready'));
|
|
@@ -2892,20 +2956,39 @@ export default class AkariSub extends EventTarget {
|
|
|
2892
2956
|
this.dispatchEvent(new CustomEvent('partial_ready'));
|
|
2893
2957
|
}
|
|
2894
2958
|
/** @internal */
|
|
2895
|
-
_trackReady() {
|
|
2959
|
+
_trackReady(data = {}) {
|
|
2960
|
+
this._supersedePendingTrackActivation(data.requestId);
|
|
2896
2961
|
const bufferExactFrames = this._workerReady &&
|
|
2897
2962
|
this._isVideoPausedForWorker() &&
|
|
2898
2963
|
this._onDemandRender &&
|
|
2899
2964
|
!!this._frameTimeline?.length &&
|
|
2900
2965
|
this.framePrefetch > 0;
|
|
2901
|
-
this._frameBufferReadyEvent = bufferExactFrames
|
|
2966
|
+
this._frameBufferReadyEvent = bufferExactFrames
|
|
2967
|
+
? { type: 'trackReady', requestId: data.requestId }
|
|
2968
|
+
: null;
|
|
2902
2969
|
this._syncVideoClock();
|
|
2903
2970
|
if (bufferExactFrames) {
|
|
2904
2971
|
this._primePreparedFrames(this._currentExactFrameMediaTime());
|
|
2905
2972
|
this._dispatchNextPreparation();
|
|
2906
2973
|
return;
|
|
2907
2974
|
}
|
|
2908
|
-
this.dispatchEvent(new CustomEvent('trackReady'));
|
|
2975
|
+
this.dispatchEvent(new CustomEvent('trackReady', data.requestId == null ? undefined : { detail: { requestId: data.requestId } }));
|
|
2976
|
+
}
|
|
2977
|
+
/** @internal */
|
|
2978
|
+
_supersedePendingTrackActivation(nextRequestId) {
|
|
2979
|
+
const supersededRequestIds = new Set();
|
|
2980
|
+
for (const [requestId, supersede] of [...(this._pendingTrackReadyWaiters ?? [])]) {
|
|
2981
|
+
if (requestId === nextRequestId)
|
|
2982
|
+
continue;
|
|
2983
|
+
supersededRequestIds.add(requestId);
|
|
2984
|
+
supersede(new Error('Track activation was superseded by a newer track change'));
|
|
2985
|
+
}
|
|
2986
|
+
const pending = this._frameBufferReadyEvent;
|
|
2987
|
+
if (pending?.type === 'trackReady' &&
|
|
2988
|
+
pending.requestId != null &&
|
|
2989
|
+
supersededRequestIds.has(pending.requestId)) {
|
|
2990
|
+
this._frameBufferReadyEvent = null;
|
|
2991
|
+
}
|
|
2909
2992
|
}
|
|
2910
2993
|
/** Send a raw message to the worker. Prefer the typed methods above. */
|
|
2911
2994
|
async sendMessage(target, data = {}, transferable) {
|
|
@@ -2944,6 +3027,15 @@ export default class AkariSub extends EventTarget {
|
|
|
2944
3027
|
reject(new Error('Error: Timeout while trying to fetch ' + target));
|
|
2945
3028
|
}, timeoutMs);
|
|
2946
3029
|
const handleMessage = (event) => {
|
|
3030
|
+
if (event.data.target === 'error') {
|
|
3031
|
+
const workerError = event.data.error;
|
|
3032
|
+
handleError(workerError instanceof Error
|
|
3033
|
+
? workerError
|
|
3034
|
+
: new Error(typeof workerError === 'string'
|
|
3035
|
+
? workerError
|
|
3036
|
+
: workerError?.message || 'Unknown worker error'));
|
|
3037
|
+
return;
|
|
3038
|
+
}
|
|
2947
3039
|
if (event.data.target === target &&
|
|
2948
3040
|
(workerMessage.requestId === undefined || event.data.requestId === workerMessage.requestId)) {
|
|
2949
3041
|
cleanup();
|
|
@@ -2982,6 +3074,45 @@ export default class AkariSub extends EventTarget {
|
|
|
2982
3074
|
});
|
|
2983
3075
|
}
|
|
2984
3076
|
/** @internal */
|
|
3077
|
+
_waitForTrackReady(requestId) {
|
|
3078
|
+
let cancel = () => { };
|
|
3079
|
+
const promise = new Promise((resolve) => {
|
|
3080
|
+
let settled = false;
|
|
3081
|
+
const cleanup = () => {
|
|
3082
|
+
this.removeEventListener('trackReady', handleTrackReady);
|
|
3083
|
+
this.removeEventListener('error', handleError);
|
|
3084
|
+
this._pendingWorkerRejectors.delete(handleDestroyed);
|
|
3085
|
+
if (this._pendingTrackReadyWaiters.get(requestId) === handleSuperseded) {
|
|
3086
|
+
this._pendingTrackReadyWaiters.delete(requestId);
|
|
3087
|
+
}
|
|
3088
|
+
};
|
|
3089
|
+
const settle = (error) => {
|
|
3090
|
+
if (settled)
|
|
3091
|
+
return;
|
|
3092
|
+
settled = true;
|
|
3093
|
+
cleanup();
|
|
3094
|
+
resolve(error);
|
|
3095
|
+
};
|
|
3096
|
+
const handleTrackReady = (event) => {
|
|
3097
|
+
if (event.detail?.requestId !== requestId)
|
|
3098
|
+
return;
|
|
3099
|
+
settle(null);
|
|
3100
|
+
};
|
|
3101
|
+
const handleError = (event) => {
|
|
3102
|
+
const errorEvent = event;
|
|
3103
|
+
settle(errorEvent.error instanceof Error ? errorEvent.error : new Error(errorEvent.message || 'Renderer error'));
|
|
3104
|
+
};
|
|
3105
|
+
const handleDestroyed = (error) => settle(error);
|
|
3106
|
+
const handleSuperseded = (error) => settle(error);
|
|
3107
|
+
cancel = () => settle(null);
|
|
3108
|
+
this.addEventListener('trackReady', handleTrackReady);
|
|
3109
|
+
this.addEventListener('error', handleError);
|
|
3110
|
+
this._pendingWorkerRejectors.add(handleDestroyed);
|
|
3111
|
+
this._pendingTrackReadyWaiters.set(requestId, handleSuperseded);
|
|
3112
|
+
});
|
|
3113
|
+
return { promise, cancel: () => cancel() };
|
|
3114
|
+
}
|
|
3115
|
+
/** @internal */
|
|
2985
3116
|
_cues(data) {
|
|
2986
3117
|
for (const cue of data.exited) {
|
|
2987
3118
|
this._onCueExit?.(cue);
|