akarisub 1.1.1 → 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 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; last frame stays until the first new paint |
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
 
@@ -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 | d3941ab (lib/libass) | ISC | Compiled into the WebAssembly worker for ASS/SSA subtitle rendering. |
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 | d3941ab (lib/libass) | ISC | Compiled into the WebAssembly worker for ASS/SSA subtitle rendering. |
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.0 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
28
- | `@types/emscripten` | 1.41.5 | MIT | https://github.com/DefinitelyTyped/DefinitelyTyped.git |
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.0 | MIT | https://github.com/oven-sh/bun |
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 |
@@ -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 last
288
- * painted frame stays on screen until the new track's first frame is ready.
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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"}
@@ -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 last
1269
- * painted frame stays on screen until the new track's first frame is ready.
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 result = await this._fetchFromWorker({
1281
- target: 'activatePreloadedTrack',
1282
- requestId,
1283
- id,
1284
- timeoutMs: null
1285
- });
1286
- if (!result.success || result.id == null) {
1287
- throw new Error(result.error || 'The preloaded track could not be activated');
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 || timeline.length === 0 || this.framePrefetch <= 0 || this._destroyed) {
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 || !this._workerReady || !this._frameTimeline || this.framePrefetch <= 0)
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(createSubtitleImageData(fixedData, imgW, imgH), 0, 0);
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 ? 'trackReady' : null;
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);