akarisub 1.1.4 → 1.1.5

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
@@ -178,7 +178,7 @@ const ja = await renderer.preloadTrack({ kind: 'url', url: '/subs/ja.ass' })
178
178
  await renderer.activatePreloadedTrack(ja.id)
179
179
  ```
180
180
 
181
- `preloadTrack()` also accepts ASS text or bytes, `{ kind: 'content', content }`, or `{ kind: 'encrypted', content }`. `activatePreloadedTrack()` without an id uses the most recently preloaded track.
181
+ `preloadTrack()` also accepts ASS text or bytes, or `{ kind: 'content', content }`. `activatePreloadedTrack()` without an id uses the most recently preloaded track.
182
182
 
183
183
  ## Streaming and live tracks
184
184
 
@@ -217,7 +217,7 @@ renderer.initStreamingTrack({ header: codecPrivate, format: 'matroska', pruneDel
217
217
  renderer.appendSubtitleChunk(packet, startSeconds, durationSeconds)
218
218
  ```
219
219
 
220
- `pruneDelay` deletes events that ended more than that many seconds before the last rendered timestamp. Call `pruneEvents(video.currentTime - 30)` yourself when you want an explicit live window. `flushEvents()` drops every event and keeps the header.
220
+ `pruneDelay` defaults to 600 seconds (pass `null` to retain everything; the track is still capped at 250,000 events, packets at 4 MiB, batches at 10,000 events, and unacknowledged appends are limited, so `append*` throws when the worker is backed up). It deletes events that ended more than that many seconds before the last rendered timestamp. Call `pruneEvents(video.currentTime - 30)` yourself when you want an explicit live window. `flushEvents()` drops every event and keeps the header.
221
221
 
222
222
  Do not mix `appendSubtitleChunk` with `appendSubtitleData` / `createEvent` on the same track. libass uses ReadOrder to drop duplicate Matroska packets, and that check breaks if the event list is edited some other way.
223
223
 
@@ -370,12 +370,12 @@ The default options are best, and automatically fallback to the next fastest opt
370
370
  | `hdr` | boolean \| `'auto'` | `'auto'` | Request an HDR canvas when the video transfer is PQ or HLG |
371
371
  | `subUrl` | string | - | URL of the subtitle file to play |
372
372
  | `subContent` | string \| Uint8Array \| ArrayBuffer | - | Content of the subtitle file to play |
373
- | `encryptedSubContent` | EncryptedSubtitleContent | - | AES-GCM encrypted subtitle payload, decrypted inside the worker |
374
373
  | `fonts` | (string \| Uint8Array)[] | - | Font URLs or bytes to force-load in full |
375
374
  | `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 |
376
375
  | `lazyFonts` | boolean | `true` | When `availableFonts` entries declare slices, fetch only the ones the current scripts need |
377
376
  | `fallbackFonts` | string[] | `['liberation sans']` | Fallback font families in order, used for the fontconfig cascade |
378
377
  | `useLocalFonts` | boolean | `true` | Use Local Font Access API if available |
378
+ | `maxSubtitleBytes` | number | `33554432` | Largest subtitle accepted from any source, in bytes. Raising it increases worker/WASM memory use
379
379
  | `libassMemoryLimit` | number | `128` | libass bitmap cache memory limit in MiB |
380
380
  | `libassGlyphLimit` | number | `2048` | libass glyph cache limit |
381
381
  | `fullTrackWarmup` | boolean | `false` | Pre-render early track windows after load to warm libass caches |
@@ -394,7 +394,6 @@ The default options are best, and automatically fallback to the next fastest opt
394
394
  | ----------------------------- | ---------------------------------------------- | -------------------------------------------------------------------------------- |
395
395
  | `setTrackByUrl(url)` | `url: string` | Load subtitle from URL |
396
396
  | `setTrack(content)` | `content: string \| Uint8Array \| ArrayBuffer` | Set subtitle from content |
397
- | `setEncryptedTrack(content)` | `content: EncryptedSubtitleContent` | Set subtitle from an encrypted payload (decrypted in the worker) |
398
397
  | `freeTrack()` | - | Remove current subtitles |
399
398
  | `initStreamingTrack(options?)` | `StreamingTrackOptions \| string \| bytes` | Create a header-only track that can accept later fragments |
400
399
  | `appendSubtitleData(content)` | `content: string \| Uint8Array \| ArrayBuffer` | Parse ASS text (Dialogue lines, extra styles) into the current track |
@@ -446,7 +445,7 @@ renderer.addEventListener('rendererChange', (event) => {
446
445
  })
447
446
  ```
448
447
 
449
- `CueEvent.start` and `CueEvent.duration` are seconds on the subtitle clock, matching `video.currentTime` plus `timeOffset`. Encrypted tracks omit `name` and `text`.
448
+ `CueEvent.start` and `CueEvent.duration` are seconds on the subtitle clock, matching `video.currentTime` plus `timeOffset`.
450
449
 
451
450
  ### Event Management
452
451
 
@@ -0,0 +1,105 @@
1
+ c123e009e4b481b06e7ca995645cb63e1628d70bd9ac7ffcaf64a09fc7a982d5 dist/COPYRIGHT
2
+ 875e830e8d3ffc9dd4ac04e35bbff1679e8c2cca04b9e253a52c13cdd427e002 dist/index.d.ts
3
+ fa747f7391ea35d6b59c07de76361eb681eef308bb7e0b551172a28af0477b44 dist/index.d.ts.map
4
+ f0871506c51e81b20a9e897475035e77b320c647dc2bcf188868a79cacfb5796 dist/index.js
5
+ 67016996be9755a0ef87973ead977d8273ea81787ccfae84c49fc640ebe32587 dist/index.js.map
6
+ 0923a0094808cdbee10540c9d3216f6a259d11e73b76e4a19529327bad58f539 dist/ts/akarisub.d.ts
7
+ e898f480502cf2ae37c3a171e0bd1e8e082e8df3e84ae26494342bf9ea1469c1 dist/ts/akarisub.d.ts.map
8
+ 7f6c7db8b97cbf1dd6630382c2320aa74be3bff9a21e40387e02643745163d03 dist/ts/akarisub.js
9
+ f7e0b58377fa2afa38e43959245b70ef2bae99f3974a94b688a814f1822e5746 dist/ts/akarisub.js.map
10
+ 2e3ec3f18d67bd58a48e96df1045319f6a9ba6c9eccdf1b5875e695a15c6eae6 dist/ts/asset-loader.d.ts
11
+ f0ed2554e5776285d3af64375e59d0b9825d6c1cf9ad126d36a1d5e6aca1dfb5 dist/ts/asset-loader.d.ts.map
12
+ 415a79d77f55489e5a2fa72e88afee2d0a61a5afd6052617b0db2fb18b005a1b dist/ts/asset-loader.js
13
+ 17be612a73c2a1f7eb7af90b7d1813104e1e6b44fd6278988f7542ee7619ad9d dist/ts/asset-loader.js.map
14
+ f9c00b421bd12c1751956b14ddc04ea21023a25da679ed3e70015a7a658c1981 dist/ts/bitmap-settlements.d.ts
15
+ 73b4dc1ed738fbbf76ee9af47ad90bf7f605b97dea2137a466666b2ea295fd32 dist/ts/bitmap-settlements.d.ts.map
16
+ 20893aad692f02d2b3fdb515faa60227db96b67367e9aff86b13d1e51d55276c dist/ts/bitmap-settlements.js
17
+ fcf015ab2375d5cc772ef6253811e837edac5fb00e03cb8e25b7768ec54cf1fa dist/ts/bitmap-settlements.js.map
18
+ 3578fdccd0cdf24a8090f84ef348459928b8592000087e96693206946d1d722f dist/ts/color-space.d.ts
19
+ 84575e4736f5d0b3de4b0bfb774a4ae75a99ce01e31743f02df80142ca91ff91 dist/ts/color-space.d.ts.map
20
+ 0baec6616569f4839c9336b6c55f83bd97543c6d9f7002187f43ee25e4270ed2 dist/ts/color-space.js
21
+ 798b385537179e1b82df6caa90462f01cb05a5a049ea70643b2ac817d16336e1 dist/ts/color-space.js.map
22
+ f9c04172077ddd7ce5159815878f7c20256744c53afd22199f7bffbc977b8788 dist/ts/cue-events.d.ts
23
+ 0410ba647170e1da8ce742075860de8dd839f7369e6ae5cd6adfabb45272343f dist/ts/cue-events.d.ts.map
24
+ 20aae4b28222605b6bdae476ecf5feb910a8edf779a55e2a3ed01f233c97c0e8 dist/ts/cue-events.js
25
+ 1827bfba70231ce14a8c6f1e4e3cdc45573d66b9c1acea2416e5ad59dfd55645 dist/ts/cue-events.js.map
26
+ 96de10dcc3b39f1892343d4381efa6cfbb0f2731814876c786698cb3b72c15a0 dist/ts/font-reload.d.ts
27
+ 375b8c5b95fd8fb9fd4109d6de5728c10d117d230c988840c9206dcdca8e02fe dist/ts/font-reload.d.ts.map
28
+ ae523b7c8321011eff40e545eddc952b5de3f4283578f5d4f69a442e1296b113 dist/ts/font-reload.js
29
+ 6f4bfc3746c3eacc8538eb8ab3caa0244d2a2dbbbbc7dcfb4735f2c744b61623 dist/ts/font-reload.js.map
30
+ 6c7de97f4bcbaad5bb6550a6c903c6b983e8972e007e41c9cae3de0a9ec0eb98 dist/ts/font-subsets.d.ts
31
+ 3fdeeadd36e5f27bcfd051541881dd4d88180c126f2474f70df7bb89407c4f4b dist/ts/font-subsets.d.ts.map
32
+ 56295413035ff2ad03b262bb5a0de6d61532bc1651a36006376131c8dccc9888 dist/ts/font-subsets.js
33
+ 83ce6a1b7fbdc52efc096ca27bdd6baa90968b1bf2c07ab465af4d349cbcd794 dist/ts/font-subsets.js.map
34
+ 7d8046a94b3f16ecffdb771299e38fa2c223926d6d694fbdf5f91ca990da11a2 dist/ts/gpu-budget.d.ts
35
+ 12c21d6d41ec09c598253ff435dd33bed3d4edf79e2929b490d5944fd0e34b59 dist/ts/gpu-budget.d.ts.map
36
+ 9df1b632f44890b211f20536883b5460e87356dbb48d20c6ca8caa626a261337 dist/ts/gpu-budget.js
37
+ 31c55334ba2feac2cdb4f4c7b28582f9cb8790c64fab9a750942a98e0aab7e9b dist/ts/gpu-budget.js.map
38
+ 9782e391d1e0dd8d1937effa43f4022d571d95eb74a5370292856638254c28d6 dist/ts/gpu-recovery.d.ts
39
+ 610f15df8f9d43d826a2c9576a808f1e1ab2b1bbd897a127bc401537f4e7c9c7 dist/ts/gpu-recovery.d.ts.map
40
+ e63217eaf44b7d85809e57df99c0e067c831a8c98503df2ae1c93a37c0d1ee4b dist/ts/gpu-recovery.js
41
+ 642160676977e7087c7d6867143db7c8492fad0b3a34dfdce5e9fa6e17ba5ae0 dist/ts/gpu-recovery.js.map
42
+ 028420fc464397a719156eb8acceee23e5b435632ee188eb7dc371c39b5422f4 dist/ts/prepared-presentation.d.ts
43
+ b840b4191d937097ba3cfd07fb43b4c3f4e3856fc9a40fdc2273204a918b539c dist/ts/prepared-presentation.d.ts.map
44
+ 632c199012591176e4793f208173c4deb408ab9235791aeedb53c58ef8a9f5f6 dist/ts/prepared-presentation.js
45
+ a5405c79e0fecb7687c189876ef79584f9f6e18f672f5782af46c513a6690e00 dist/ts/prepared-presentation.js.map
46
+ f438521761285e122f980bf303340c896ae8900653592aca8a50490cef248c0d dist/ts/streaming.d.ts
47
+ c9f15e4d436110dc5fd759a89c99c1062b531fa2c12397f71b2f279db9193a74 dist/ts/streaming.d.ts.map
48
+ d1a3884fa5d724e7f2008a4bb8d72f4b93aa50e65c3aa747b3db35d01e43187c dist/ts/streaming.js
49
+ 3dc142c892b4474f04086957bea6b34c6bef4738f3ecd7a7425f853e8db774bf dist/ts/streaming.js.map
50
+ ec7a617cc45977d2072cd980f489b324e7b3b7f814d22ab39bd2ae0f1861895c dist/ts/subtitle-budget.d.ts
51
+ c356dbe7acd1cbac7bd1ff289ba8d3680cf3f2dc0c0f0d00212471ca9637364b dist/ts/subtitle-budget.d.ts.map
52
+ 50cf42b3795c4f02339dfa4514fe52cc06168d85b34acb5dce0e33b270a6f705 dist/ts/subtitle-budget.js
53
+ e79211ccd5e7bf52284c159700b69cb1abe35e379a36288f4f9e220b350f08ac dist/ts/subtitle-budget.js.map
54
+ 5be6a5f6e545d4779d5c69f57f01c749f5a70f682f4df154a745cf901b23822f dist/ts/timing.d.ts
55
+ 9dde42fc0ef84e31651bbcf8dfa8e030a448f667969796a706a93b6eafe91f67 dist/ts/timing.d.ts.map
56
+ 9d7e3f9299315bc05519cae424f46405896b4a2418f347067b7dd768189d129f dist/ts/timing.js
57
+ 57eb5b3d9bfecd0d636b63bc9a8cde65225300241dc54da29988dc3bb1582e0e dist/ts/timing.js.map
58
+ f9a58c4bec2b483a5d86520227bff9d00a0ea255694d82b768f2010c1b09e42e dist/ts/track-lifecycle.d.ts
59
+ 54f3c89a8bf08ba2fbdce4ef7e10ed21fd9c40e939760100b3d52c3403e56116 dist/ts/track-lifecycle.d.ts.map
60
+ ff1b29b6eb330955d7f49e43184814b7b2b648b99fc8b30f6666e813428c7489 dist/ts/track-lifecycle.js
61
+ 50bccd0ab3fa035fe1e5925b7bfb6d8063f010a25c3831d793a9ba8bdc9f25fc dist/ts/track-lifecycle.js.map
62
+ e7b1315ca0351ab30e225bdc20783f78521844ca3f31ff3a098be3c7bde8bcd5 dist/ts/types.d.ts
63
+ 95ca59a555df674340f014af2f5b659c1ccae9cb64b589b22c4d37a614885b07 dist/ts/types.d.ts.map
64
+ 01ae2a5b120382f9a648ced7ee8507493a134f216d100fc61600c6c9738235d2 dist/ts/types.js
65
+ dcf4d5b79e4b7e0be9a882c40457fde920685f8bbe01bf6f565ef0d97ef33564 dist/ts/types.js.map
66
+ 6f613569c4b1a778519fe1b34b0ec2087d5e430c5166c6fc243f0e533a21353f dist/ts/unicode-scripts.d.ts
67
+ b025e538a09ac40f01a4f8e581f90b794f6ec910bb008eac5d9ddbbb467ddfe1 dist/ts/unicode-scripts.d.ts.map
68
+ c050ec72ccc364bfa8d2a1a53abe8836d5e6903eee8b88919ee71f5734c20148 dist/ts/unicode-scripts.js
69
+ 7ba0d7e5698cd35e11fae23751fee71dc2982fd84c3acd7769cf3eaadf6d31b4 dist/ts/unicode-scripts.js.map
70
+ 66454e981ab2117db51f266225b557de41cad19e6e6b3d6fdcfe39a0d442c4e5 dist/ts/utils.d.ts
71
+ db7036adb60d2ae0cea8d74ea11bf5a43809603f5430c4f5d927f8afb668e205 dist/ts/utils.d.ts.map
72
+ 82439f71206943dda4b7c41a6e6dde50701b75f4a990c2e38e208f43502ff9a9 dist/ts/utils.js
73
+ 0793a7e3e385357162d6b8fea698e9c0fcee8bd1b5455d088820dc0a476dcc62 dist/ts/utils.js.map
74
+ 1b40bed7596eced2d837645da6bb7c7d0306b31e61929a5a16a3777e6d6353bc dist/ts/video-frame.d.ts
75
+ 0dc947ff8ddc10e4df3d6a4b8ca35582fd489b21dd4d498ba81cde63274ff998 dist/ts/video-frame.d.ts.map
76
+ 7b3d814bcad3af12aae169884d642b4636968c01e489867a8f11b5ccd9e8ea00 dist/ts/video-frame.js
77
+ 462a770060f2b0990a9c911cfc2ac3cc92082c4a6b45b16b3271642b3ce75f7e dist/ts/video-frame.js.map
78
+ 8f488d2b6b68c1d01d2327787e85c7586d8cb708ededbe5e0a867b851501b8e8 dist/ts/wasm-capabilities.d.ts
79
+ 2aef84a1e131578ea04ba5cb22fd9e281a8567da1c2a84987086000aac284984 dist/ts/wasm-capabilities.d.ts.map
80
+ b79ede654642c72dcaa3b726032e856f766d32fe62e7b355e95bfeec75181687 dist/ts/wasm-capabilities.js
81
+ e8a1b1a1885eb022ee0e99911d6a60b7709c11749adad4b4ebb6baa849eda30b dist/ts/wasm-capabilities.js.map
82
+ 753194762f4682dbf22e7ed9490af9bac16fdd36265c5419c48a9ba51cd94de0 dist/ts/wasm.d.ts
83
+ 0b883ca8d5285ff418717b3e0cc640c863afdd53260524fa5045cf7329c6c9eb dist/ts/wasm.d.ts.map
84
+ ab836d9d7ed47a66a23bc6115d3c5cd32ed230517382a9b1c76018bca4b5d2cb dist/ts/wasm.js
85
+ 1ec9ba5f889e7cbcf27e8c5d929a23cfa1f1c1f915bbd75f9e7d43e18688fcc2 dist/ts/wasm.js.map
86
+ 71a65f4541486c9cd7f70f27e1c88e1013789afc7621d36c1361bf38f56fb894 dist/ts/webgl2-renderer.d.ts
87
+ 1c57a3445915436546141ddfe93a01e3c742ba15ddc228a945df24491afd6388 dist/ts/webgl2-renderer.d.ts.map
88
+ f2eef6dadea7a8eff37bca5401dc7572d47b88229f9e0719192724e4c42f629b dist/ts/webgl2-renderer.js
89
+ a6b67ad65e81288e24d837065fd0dcab019f8c79bb9372f02007220ad71e88f7 dist/ts/webgl2-renderer.js.map
90
+ cb6de44628c62b49105160468270f74f97da3a0636e3ede63174da2555dec05c dist/ts/webgpu-renderer.d.ts
91
+ 7aea5a5a43136b7ea794ec09289e2c7b1ecf702bad388bab8b7f20de8363a919 dist/ts/webgpu-renderer.d.ts.map
92
+ 2ad4868dbc716b2ac8efe113c1e756d4aebaf7c0fef6ece6d4a5ddffb66530bb dist/ts/webgpu-renderer.js
93
+ 7bba440c325155741e844e48626c3ace8f8144cd3691ee2f34a01b62408ae3ba dist/ts/webgpu-renderer.js.map
94
+ 14e7397ad7aab084b1c5b23b9f101c079611e43e872d5b4250f2be5499a6a273 dist/ts/worker.d.ts
95
+ 1fc2a3d6079a60bb0114cdcaea636e3dcca0b9aefad8c8260fe74bad79329dc3 dist/ts/worker.d.ts.map
96
+ 6a0d0ca0c956b26aee7b1d2ae5b24b043b1836fd30f9cff211c6c0f195dffe1d dist/ts/worker.js
97
+ 34e8e9bc8892dafd5bd70dc9e85d6203011bd9da45f49ac4c36a040c8bfcbfe6 dist/ts/worker.js.map
98
+ c33f5b7b3948884b2571c66fbc9eead2542944becb3aaf028414be69c18a8905 dist/wrapper.d.ts
99
+ 32addba2866bac68b19d9176471f48f53f835a0c2267e79708cc137a46e3e542 dist/wrapper.d.ts.map
100
+ 92c414eb37e60cf9eb51e9a5ad34a2d52127801f62b91319452f0f27bdfe6ab3 dist/wrapper.js
101
+ 969db85f288bec05a65200d3d9cec06a8e12fec82913b06ea7462360a687c489 dist/wrapper.js.map
102
+ 3a520ec41601947a363e8562ebbca234e380b418085ee555acf4428dbb50b834 pkg/akarisub-mt.js
103
+ b46f318fb30425bf450e1f588eb3ac38568b452ffdd15c027aa6cb5e6731dbdd pkg/akarisub-mt.wasm
104
+ ffc230dad4ce5aca5920f6ea27ff895ff9116c31becc691b8179394b8ddccdca pkg/akarisub.js
105
+ 5fa47e6a58cb2f769ce72116ae613c527bfe104ed0b3dcae23446cbdd0041601 pkg/akarisub.wasm
@@ -105,6 +105,10 @@ export default class AkariSub extends EventTarget {
105
105
  private _onPerformanceWarning?;
106
106
  private _preloadedTrackId;
107
107
  private _nextTrackRequestId;
108
+ private _maxSubtitleBytes;
109
+ private _localFontIndex;
110
+ private _pendingStreamingSizes;
111
+ private _pendingStreamingBytes;
108
112
  private _lastRenderWidth;
109
113
  private _lastRenderHeight;
110
114
  private _gpuBitmapImages;
@@ -321,6 +325,8 @@ export default class AkariSub extends EventTarget {
321
325
  getEventCount(): Promise<number>;
322
326
  /** Number of styles in the loaded track. */
323
327
  getStyleCount(): Promise<number>;
328
+ /** One enumeration per renderer; retried only if it failed. @internal */
329
+ private _getLocalFontIndex;
324
330
  /** @internal */
325
331
  private _sendLocalFont;
326
332
  /** @internal */
@@ -367,6 +373,14 @@ export default class AkariSub extends EventTarget {
367
373
  private _activatePresentation;
368
374
  /** @internal */
369
375
  private _bumpRenderEpoch;
376
+ /**
377
+ * Account for one unacknowledged append. Throws instead of queueing without
378
+ * bound; callers should retry after the worker catches up.
379
+ * @internal
380
+ */
381
+ private _reserveStreaming;
382
+ /** @internal */
383
+ private _streamingAck;
370
384
  /** @internal */
371
385
  private _sendMutatingMessage;
372
386
  /** @internal */
@@ -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,5 +1,7 @@
1
1
  import { GPURecovery } from './gpu-recovery';
2
2
  import { PreparedPresentation } from './prepared-presentation';
3
+ import { MAX_STREAM_PENDING_BYTES, MAX_STREAM_PENDING_MESSAGES, assertEncryptedBudget, assertStreamingEventBatch, assertStreamingPacket, assertSubtitleBudget, resolveSubtitleLimit, streamingPayloadBytes } from './subtitle-budget';
4
+ import { MAX_SUBTITLE_BYTES } from './asset-loader';
3
5
  import { classifyPerformanceWarnings, parsePreloadTrackSource, resolveCueTracking } from './cue-events';
4
6
  import { parseStreamingTrackOptions } from './streaming';
5
7
  import { normalizeFontFamilySource } from './font-subsets';
@@ -177,6 +179,10 @@ export default class AkariSub extends EventTarget {
177
179
  _onPerformanceWarning;
178
180
  _preloadedTrackId = null;
179
181
  _nextTrackRequestId = 1;
182
+ _maxSubtitleBytes = MAX_SUBTITLE_BYTES;
183
+ _localFontIndex = null;
184
+ _pendingStreamingSizes = [];
185
+ _pendingStreamingBytes = 0;
180
186
  _lastRenderWidth = 0;
181
187
  _lastRenderHeight = 0;
182
188
  _gpuBitmapImages = [];
@@ -211,6 +217,11 @@ export default class AkariSub extends EventTarget {
211
217
  if (!options) {
212
218
  throw this.destroy(new Error('No options provided'));
213
219
  }
220
+ this._maxSubtitleBytes = resolveSubtitleLimit(options.maxSubtitleBytes);
221
+ if (options.subContent)
222
+ assertSubtitleBudget(options.subContent, this._maxSubtitleBytes);
223
+ if (options.encryptedSubContent)
224
+ assertEncryptedBudget(options.encryptedSubContent, this._maxSubtitleBytes);
214
225
  for (const [index, font] of (options.fonts ?? []).entries()) {
215
226
  if (typeof font !== 'string' && font.byteLength > AkariSub.MAX_FONT_BYTES) {
216
227
  throw new Error(`Font ${index + 1} exceeds the 32 MiB per-font limit`);
@@ -381,6 +392,7 @@ export default class AkariSub extends EventTarget {
381
392
  libassMemoryLimit: options.libassMemoryLimit ?? 128,
382
393
  libassGlyphLimit: options.libassGlyphLimit ?? 2048,
383
394
  useLocalFonts: typeof globalThis.queryLocalFonts !== 'undefined' && (options.useLocalFonts ?? true),
395
+ maxSubtitleBytes: this._maxSubtitleBytes,
384
396
  useFontconfigProvider: options.useFontconfigProvider ?? true,
385
397
  hasBitmapBug: AkariSub._hasBitmapBug
386
398
  };
@@ -1092,6 +1104,7 @@ export default class AkariSub extends EventTarget {
1092
1104
  }
1093
1105
  /** Replace the current track with ASS/SSA text or bytes. */
1094
1106
  setTrack(content) {
1107
+ assertSubtitleBudget(content, this._maxSubtitleBytes);
1095
1108
  this._supersedePendingTrackActivation();
1096
1109
  this._bumpRenderEpoch();
1097
1110
  this.sendMessage('setTrack', { content }, AkariSub._getSubtitleTransfers(content));
@@ -1105,6 +1118,7 @@ export default class AkariSub extends EventTarget {
1105
1118
  * materialized in the main thread.
1106
1119
  */
1107
1120
  setEncryptedTrack(content) {
1121
+ assertEncryptedBudget(content, this._maxSubtitleBytes);
1108
1122
  this._supersedePendingTrackActivation();
1109
1123
  this._bumpRenderEpoch();
1110
1124
  this.sendMessage('setEncryptedTrack', { content }, AkariSub._getSubtitleTransfers(undefined, content));
@@ -1125,6 +1139,10 @@ export default class AkariSub extends EventTarget {
1125
1139
  */
1126
1140
  initStreamingTrack(options) {
1127
1141
  const parsed = parseStreamingTrackOptions(options);
1142
+ if (parsed.header)
1143
+ assertSubtitleBudget(parsed.header, this._maxSubtitleBytes);
1144
+ this._pendingStreamingSizes = [];
1145
+ this._pendingStreamingBytes = 0;
1128
1146
  this._supersedePendingTrackActivation();
1129
1147
  this._bumpRenderEpoch();
1130
1148
  this.sendMessage('initStreamingTrack', { options: parsed }, parsed.header ? AkariSub._getSubtitleTransfers(parsed.header) : undefined);
@@ -1137,6 +1155,8 @@ export default class AkariSub extends EventTarget {
1137
1155
  * or HLS fragments converted to ASS.
1138
1156
  */
1139
1157
  appendSubtitleData(content) {
1158
+ assertStreamingPacket(content);
1159
+ this._reserveStreaming(streamingPayloadBytes(content));
1140
1160
  this._sendMutatingMessage('appendSubtitleData', { content }, AkariSub._getSubtitleTransfers(content));
1141
1161
  }
1142
1162
  /**
@@ -1145,10 +1165,14 @@ export default class AkariSub extends EventTarget {
1145
1165
  * the source is a Matroska/WebM stream.
1146
1166
  */
1147
1167
  appendSubtitleChunk(content, start, duration) {
1168
+ assertStreamingPacket(content);
1169
+ this._reserveStreaming(streamingPayloadBytes(content));
1148
1170
  this._sendMutatingMessage('appendSubtitleChunk', { content, start, duration }, AkariSub._getSubtitleTransfers(content));
1149
1171
  }
1150
1172
  /** Append several Dialogue events in one worker message. */
1151
1173
  appendEvents(events) {
1174
+ assertStreamingEventBatch(events);
1175
+ this._reserveStreaming(events.length * 256);
1152
1176
  this._sendMutatingMessage('appendEvents', { events });
1153
1177
  }
1154
1178
  /** Drop every event and keep styles and script info. */
@@ -1176,6 +1200,10 @@ export default class AkariSub extends EventTarget {
1176
1200
  */
1177
1201
  async preloadTrack(source) {
1178
1202
  const parsed = parsePreloadTrackSource(source);
1203
+ if (parsed.kind === 'content')
1204
+ assertSubtitleBudget(parsed.content, this._maxSubtitleBytes);
1205
+ else if (parsed.kind === 'encrypted')
1206
+ assertEncryptedBudget(parsed.content, this._maxSubtitleBytes);
1179
1207
  const ready = this._workerReady ||
1180
1208
  (await Promise.race([this._loaded.then(() => true), this._destroyedSignal.then(() => false)]));
1181
1209
  if (!ready || this._destroyed)
@@ -1442,12 +1470,28 @@ export default class AkariSub extends EventTarget {
1442
1470
  const data = await this._fetchFromWorker({ target: 'getStyleCount' });
1443
1471
  return data.count;
1444
1472
  }
1473
+ /** One enumeration per renderer; retried only if it failed. @internal */
1474
+ _getLocalFontIndex() {
1475
+ this._localFontIndex ??= (async () => {
1476
+ const fontData = await globalThis.queryLocalFonts();
1477
+ const index = new Map();
1478
+ for (const obj of fontData ?? []) {
1479
+ const key = String(obj.fullName).toLowerCase();
1480
+ if (!index.has(key))
1481
+ index.set(key, obj);
1482
+ }
1483
+ return index;
1484
+ })().catch((error) => {
1485
+ this._localFontIndex = null;
1486
+ throw error;
1487
+ });
1488
+ return this._localFontIndex;
1489
+ }
1445
1490
  /** @internal */
1446
1491
  async _sendLocalFont(name) {
1447
1492
  let success = false;
1448
1493
  try {
1449
- const fontData = await globalThis.queryLocalFonts();
1450
- const font = fontData?.find((obj) => obj.fullName.toLowerCase() === name);
1494
+ const font = (await this._getLocalFontIndex()).get(name);
1451
1495
  if (font) {
1452
1496
  const blob = await font.blob();
1453
1497
  const buffer = await blob.arrayBuffer();
@@ -1969,6 +2013,23 @@ export default class AkariSub extends EventTarget {
1969
2013
  this._clearPreparedFrames();
1970
2014
  this._prepareForce = true;
1971
2015
  }
2016
+ /**
2017
+ * Account for one unacknowledged append. Throws instead of queueing without
2018
+ * bound; callers should retry after the worker catches up.
2019
+ * @internal
2020
+ */
2021
+ _reserveStreaming(bytes) {
2022
+ if (this._pendingStreamingSizes.length >= MAX_STREAM_PENDING_MESSAGES ||
2023
+ this._pendingStreamingBytes + bytes > MAX_STREAM_PENDING_BYTES) {
2024
+ throw new Error('Streaming backlog: the worker has not processed earlier appends yet');
2025
+ }
2026
+ this._pendingStreamingSizes.push(bytes);
2027
+ this._pendingStreamingBytes += bytes;
2028
+ }
2029
+ /** @internal */
2030
+ _streamingAck() {
2031
+ this._pendingStreamingBytes -= this._pendingStreamingSizes.shift() ?? 0;
2032
+ }
1972
2033
  /** @internal */
1973
2034
  _sendMutatingMessage(target, data = {}, transferable) {
1974
2035
  this._bumpRenderEpoch();