@blockcast/mmt-container 2.2.0-main.73af0eedcbc8 → 2.2.0-main.a16efba1d85a

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.
Files changed (89) hide show
  1. package/README.md +29 -17
  2. package/dist/browser-runtime.js +630 -191
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.js.map +1 -1
  5. package/dist/catalog-fec-params.d.ts +17 -1
  6. package/dist/catalog-fec-params.d.ts.map +1 -1
  7. package/dist/catalog-fec-params.js +15 -0
  8. package/dist/catalog-fec-params.js.map +2 -2
  9. package/dist/catalog-network-source.js.map +1 -1
  10. package/dist/cmcd-producer.d.ts +60 -47
  11. package/dist/cmcd-producer.d.ts.map +1 -1
  12. package/dist/cmcd-producer.js +138 -109
  13. package/dist/cmcd-producer.js.map +2 -2
  14. package/dist/delivery-catalog.js +26 -16
  15. package/dist/delivery-catalog.js.map +2 -2
  16. package/dist/delta-fallback-config.js.map +1 -1
  17. package/dist/fec-manager.d.ts +3 -1
  18. package/dist/fec-manager.d.ts.map +1 -1
  19. package/dist/fec-manager.js +26 -4
  20. package/dist/fec-manager.js.map +2 -2
  21. package/dist/fec-state.js.map +1 -1
  22. package/dist/fec-worker-setup.d.ts +1 -1
  23. package/dist/fec-worker-setup.js +1 -1
  24. package/dist/fec-worker-setup.js.map +1 -1
  25. package/dist/held-layer-admission.js.map +1 -1
  26. package/dist/index.d.ts +5 -4
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +9 -1
  29. package/dist/index.js.map +2 -2
  30. package/dist/iso-block-locator.js.map +1 -1
  31. package/dist/iso-bmff-timing.d.ts +10 -1
  32. package/dist/iso-bmff-timing.d.ts.map +1 -1
  33. package/dist/iso-bmff-timing.js +36 -2
  34. package/dist/iso-bmff-timing.js.map +2 -2
  35. package/dist/media-router.js.map +1 -1
  36. package/dist/mfu-reassembler.js +12 -19
  37. package/dist/mfu-reassembler.js.map +2 -2
  38. package/dist/mmtp-container-parser.d.ts +35 -2
  39. package/dist/mmtp-container-parser.d.ts.map +1 -1
  40. package/dist/mmtp-container-parser.js +97 -28
  41. package/dist/mmtp-container-parser.js.map +2 -2
  42. package/dist/mmtp-container-parser.no-modules.js +222 -45
  43. package/dist/mmtp-container-parser.no-modules.js.map +3 -3
  44. package/dist/mmtp-decode-pipeline.js +97 -28
  45. package/dist/mmtp-decode-pipeline.js.map +2 -2
  46. package/dist/mmtp-fec-session.d.ts +41 -3
  47. package/dist/mmtp-fec-session.d.ts.map +1 -1
  48. package/dist/mmtp-fec-session.js +118 -13
  49. package/dist/mmtp-fec-session.js.map +3 -3
  50. package/dist/mmtp-router.d.ts +6 -0
  51. package/dist/mmtp-router.d.ts.map +1 -1
  52. package/dist/mmtp-router.js +150 -44
  53. package/dist/mmtp-router.js.map +2 -2
  54. package/dist/multicast-auth-catalog.js.map +1 -1
  55. package/dist/multicast-input.js.map +1 -1
  56. package/dist/multicast-manager.js +176 -48
  57. package/dist/multicast-manager.js.map +2 -2
  58. package/dist/multicast-transport.js +26 -16
  59. package/dist/multicast-transport.js.map +2 -2
  60. package/dist/multicast-unwrap.js +12 -19
  61. package/dist/multicast-unwrap.js.map +2 -2
  62. package/dist/no-modules.js +215 -42
  63. package/dist/no-modules.js.map +3 -3
  64. package/dist/repair-fetch.js.map +1 -1
  65. package/dist/repair-layer-subscriptions.d.ts +82 -0
  66. package/dist/repair-layer-subscriptions.d.ts.map +1 -0
  67. package/dist/repair-layer-subscriptions.js +192 -0
  68. package/dist/repair-layer-subscriptions.js.map +7 -0
  69. package/dist/signaling.js.map +1 -1
  70. package/dist/timestamp-codec.js +12 -19
  71. package/dist/timestamp-codec.js.map +2 -2
  72. package/dist/track-session.d.ts +1 -1
  73. package/dist/track-session.js.map +1 -1
  74. package/dist/wasm-mfu-reassembler.js.map +1 -1
  75. package/dist/wasm-mmtp-container-parser.js +97 -28
  76. package/dist/wasm-mmtp-container-parser.js.map +2 -2
  77. package/package.json +8 -5
  78. package/schemas/catalog.schema.json +4 -0
  79. package/src/catalog-fec-params.ts +36 -1
  80. package/src/cmcd-producer.ts +189 -179
  81. package/src/fec-manager.ts +26 -4
  82. package/src/fec-worker-setup.ts +2 -2
  83. package/src/index.ts +18 -2
  84. package/src/iso-bmff-timing.ts +40 -1
  85. package/src/mmtp-container-parser.ts +92 -7
  86. package/src/mmtp-fec-session.ts +115 -15
  87. package/src/mmtp-router.ts +46 -0
  88. package/src/repair-layer-subscriptions.ts +261 -0
  89. package/src/track-session.ts +1 -1
@@ -19,6 +19,7 @@ import type { MfuReassemblyPolicy } from "./mfu-reassembly-policy.js";
19
19
  import { type AuthoredTiming } from "./authored-timing.js";
20
20
  import { FecBlockMapper } from "@blockcast/mmt-fec";
21
21
  import { CmafBlockAssembler, type BlockAssemblerConfig, type CmafBlockSample } from "./cmaf-block-assembler.js";
22
+ import { type MmtpRecoveredHeadTimingStats } from "./mmtp-container-parser.js";
22
23
  import { type TrackRole } from "./carp-catalog.js";
23
24
  import { type BlockClass, type ClassifierMode, type ClassifierReason, type FrameGapDecision, type SourceSymbolEvidence } from "./block-policy.js";
24
25
  import { type DuplicateHorizon } from "./duplicate-ledger.js";
@@ -238,6 +239,9 @@ export type RoutedPacketMeta = {
238
239
  mmtpTimestamp: bigint;
239
240
  /**
240
241
  * The MMTP header RAP flag: the packet starts a random access point. On a
242
+ * track under a keyframe overlay it is also set on the FT=0 and FT=1 data
243
+ * units that govern a covered keyframe (draft-ramadan-moq-mmt-02 7.4.2), so
244
+ * it can precede the keyframe's first MFU fragment. On a
241
245
  * `recovered` packet it is read from the FEC-reconstructed header, which is
242
246
  * byte-exact outside packet_sequence_number, so it is the flag the
243
247
  * publisher sent. The router's own gap decisions deliberately ignore it for
@@ -632,6 +636,8 @@ export declare class MmtpRouter {
632
636
  * for a MoQ symbol on a protected flow (multicast-02 7.2.7).
633
637
  */
634
638
  get keyframeOverlayStats(): Readonly<KeyframeOverlayStats>;
639
+ /** Recovered FT=2 heads held for their FT=1, and how each left the wait (BLO-53369). */
640
+ get recoveredHeadsAwaitingTiming(): Readonly<MmtpRecoveredHeadTimingStats>;
635
641
  /**
636
642
  * Install the keyframe overlay decoded on `fec` for a known overlay leg
637
643
  * (draft-ramadan-mmt-fec-02 7.4.4: decoded independently of the base). `fec`
@@ -1 +1 @@
1
- {"version":3,"file":"mmtp-router.d.ts","sourceRoot":"","sources":["../src/mmtp-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mmtp-router.d.ts","sourceRoot":"","sources":["../src/mmtp-router.ts"],"names":[],"mappings":"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"}
@@ -149,30 +149,26 @@ function isEmptyOrExactLegacyTrailer(payload, start, end) {
149
149
  const authLength = view2.getUint16(2, false);
150
150
  return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end;
151
151
  }
152
- function resolveDeclaredTrailers(payload, declaredEnd, fecType, options, rapFlag = false) {
152
+ function resolveDeclaredTrailers(payload, declaredEnd, fecType, options) {
153
153
  if (declaredEnd > payload.length)
154
154
  return null;
155
155
  if (options?.skipFecId) {
156
- return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false, hasOverlayFecId: false } : null;
156
+ return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false } : null;
157
157
  }
158
- const overlay = options?.overlayDeclared === true && rapFlag;
159
158
  if (fecType === 1) {
160
- const fecStart = payload.length - sourceFecTrailerSize(overlay);
159
+ const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
161
160
  if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
162
161
  return null;
163
162
  }
164
- return { hasFecId: true, hasOverlayFecId: overlay };
163
+ return { hasFecId: true };
165
164
  }
166
- if (fecType !== 0 || overlay)
165
+ if (fecType !== 0)
167
166
  return null;
168
167
  if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
169
- return { hasFecId: false, hasOverlayFecId: false };
168
+ return { hasFecId: false };
170
169
  }
171
170
  return null;
172
171
  }
173
- function sourceFecTrailerSize(overlay) {
174
- return overlay ? 2 * SOURCE_FEC_PAYLOAD_ID_SIZE : SOURCE_FEC_PAYLOAD_ID_SIZE;
175
- }
176
172
  function planMfuExtraction(mmtpPacket, options, parsedHeader) {
177
173
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE) {
178
174
  return {
@@ -225,11 +221,11 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
225
221
  if ("rejection" in layoutResult)
226
222
  return layoutResult;
227
223
  const { layout } = layoutResult;
228
- const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options, header.rapFlag);
224
+ const trailerLayout = resolveDeclaredTrailers(payload, layout.dataEnd, header.fecType, options);
229
225
  if (!trailerLayout) {
230
226
  if (!options?.skipFecId && header.fecType === 1) {
231
227
  const observed = payload.length - layout.dataEnd;
232
- const expected = sourceFecTrailerSize(options?.overlayDeclared === true && header.rapFlag);
228
+ const expected = SOURCE_FEC_PAYLOAD_ID_SIZE;
233
229
  if (observed !== expected) {
234
230
  return {
235
231
  rejection: {
@@ -261,13 +257,10 @@ function extractPlannedMfu(mmtpPacket, result) {
261
257
  const mfuDuHeader = mfuDuHeaderPresent && mpu.timedFlag === 1 ? parseTimedMfuDuHeader(payload, MPU_HEADER_SIZE) : null;
262
258
  const itemId = mfuDuHeaderPresent && mpu.timedFlag === 0 ? new DataView(payload.buffer, payload.byteOffset + MPU_HEADER_SIZE, 4).getUint32(0, false) : null;
263
259
  const data = payload.subarray(mfuOffset, dataEnd);
264
- const trailerStart = mmtpPacket.length - sourceFecTrailerSize(trailerLayout.hasOverlayFecId);
265
- const ssIdAt = (offset) => ({
266
- ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + offset, 4).getUint32(0, false)
267
- });
268
- const fecPayloadId = trailerLayout.hasFecId ? ssIdAt(trailerStart) : null;
269
- const overlayFecPayloadId = trailerLayout.hasOverlayFecId ? ssIdAt(trailerStart + SOURCE_FEC_PAYLOAD_ID_SIZE) : null;
270
- return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId, overlayFecPayloadId };
260
+ const fecPayloadId = trailerLayout.hasFecId ? {
261
+ ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + mmtpPacket.length - SOURCE_FEC_PAYLOAD_ID_SIZE, 4).getUint32(0, false)
262
+ } : null;
263
+ return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId };
271
264
  }
272
265
  function sourceFecPayloadIdOf(mmtpPacket, header) {
273
266
  if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE)
@@ -1617,14 +1610,15 @@ var MOQT_PUBLISHER_PRIORITY = Object.freeze({
1617
1610
  });
1618
1611
 
1619
1612
  // node_modules/@blockcast/mmt-transport/dist/amt-gateway.js
1613
+ var MAX_PENDING_PACKETS = 256;
1620
1614
  var AMTGatewayManager = class {
1621
1615
  subscriptions = /* @__PURE__ */ new Map();
1622
1616
  messageHandler;
1617
+ messageListenerRegistered = false;
1623
1618
  pendingPackets = /* @__PURE__ */ new Map();
1624
1619
  constructor() {
1625
1620
  this.messageHandler = (event) => {
1626
1621
  const data = event.data;
1627
- console.log(`[AMT] SW message received:`, data.type);
1628
1622
  if (data.type === "UDP_PACKET") {
1629
1623
  this.handlePacket(data);
1630
1624
  } else if (data.type === "SOCKET_ERROR") {
@@ -1633,12 +1627,22 @@ var AMTGatewayManager = class {
1633
1627
  console.log(`[AMT SW Debug] ${data.message}`);
1634
1628
  }
1635
1629
  };
1636
- if (typeof navigator !== "undefined" && navigator.serviceWorker) {
1637
- navigator.serviceWorker.addEventListener("message", this.messageHandler);
1638
- console.log("[AMT] Registered service worker message handler");
1639
- } else {
1640
- console.warn("[AMT] Service worker not available");
1630
+ }
1631
+ ensureMessageListener() {
1632
+ if (this.messageListenerRegistered || typeof navigator === "undefined" || !navigator.serviceWorker || !this.messageHandler) {
1633
+ return;
1634
+ }
1635
+ navigator.serviceWorker.addEventListener("message", this.messageHandler);
1636
+ this.messageListenerRegistered = true;
1637
+ console.log("[AMT] Registered service worker message handler");
1638
+ }
1639
+ removeMessageListener() {
1640
+ if (!this.messageListenerRegistered)
1641
+ return;
1642
+ if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1643
+ navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1641
1644
  }
1645
+ this.messageListenerRegistered = false;
1642
1646
  }
1643
1647
  /**
1644
1648
  * Subscribe via AMT tunnel
@@ -1648,6 +1652,7 @@ var AMTGatewayManager = class {
1648
1652
  if (config.protected) {
1649
1653
  throw new Error("AMTGatewayManager refuses a protected join: it reports no per-datagram sender (multicast-02 7.2.7)");
1650
1654
  }
1655
+ this.ensureMessageListener();
1651
1656
  const keyStr = this.getKeyString(key);
1652
1657
  if (this.subscriptions.has(keyStr)) {
1653
1658
  console.log(`[AMT] Reusing existing subscription to ${keyStr}`);
@@ -1683,6 +1688,8 @@ var AMTGatewayManager = class {
1683
1688
  this.subscriptions.delete(keyStr);
1684
1689
  this.pendingPackets.delete(subscription.subscriptionId);
1685
1690
  }
1691
+ if (this.subscriptions.size === 0)
1692
+ this.removeMessageListener();
1686
1693
  throw new Error(`Failed to subscribe via AMT: ${error instanceof Error ? error.message : String(error)}`);
1687
1694
  }
1688
1695
  }
@@ -1704,6 +1711,8 @@ var AMTGatewayManager = class {
1704
1711
  } finally {
1705
1712
  this.subscriptions.delete(handle);
1706
1713
  this.pendingPackets.delete(subscription.subscriptionId);
1714
+ if (this.subscriptions.size === 0)
1715
+ this.removeMessageListener();
1707
1716
  }
1708
1717
  }
1709
1718
  /**
@@ -1720,14 +1729,12 @@ var AMTGatewayManager = class {
1720
1729
  if (!subscriptionId)
1721
1730
  return;
1722
1731
  const subscription = this.subscriptions.get(subscriptionId);
1723
- if (!subscription) {
1724
- console.warn(`[AMT] Received packet for unknown subscription: ${subscriptionId}`);
1732
+ if (!subscription)
1725
1733
  return;
1726
- }
1727
1734
  if (!subscription.handshakeComplete) {
1728
1735
  const queue = this.pendingPackets.get(subscriptionId);
1729
1736
  const packetData2 = data;
1730
- if (queue) {
1737
+ if (queue && queue.length < MAX_PENDING_PACKETS) {
1731
1738
  queue.push({
1732
1739
  data: packetData2.data,
1733
1740
  remoteAddress: packetData2.remoteAddress,
@@ -1753,19 +1760,15 @@ var AMTGatewayManager = class {
1753
1760
  if (!subscriptionId)
1754
1761
  return;
1755
1762
  const subscription = this.subscriptions.get(subscriptionId);
1756
- if (!subscription) {
1757
- console.warn(`[AMT] Received error for unknown subscription: ${subscriptionId}`);
1763
+ if (!subscription)
1758
1764
  return;
1759
- }
1760
1765
  subscription.config.onError(new Error(error || "Unknown error"));
1761
1766
  }
1762
1767
  /**
1763
1768
  * Cleanup on destroy
1764
1769
  */
1765
1770
  destroy() {
1766
- if (this.messageHandler && typeof navigator !== "undefined" && navigator.serviceWorker) {
1767
- navigator.serviceWorker.removeEventListener("message", this.messageHandler);
1768
- }
1771
+ this.removeMessageListener();
1769
1772
  const handles = Array.from(this.subscriptions.keys());
1770
1773
  for (const handle of handles) {
1771
1774
  this.unsubscribe(handle).catch((err) => {
@@ -7674,9 +7677,21 @@ var IsoBmffTimingResolver = class {
7674
7677
  }
7675
7678
  #track = null;
7676
7679
  #fragments = /* @__PURE__ */ new Map();
7680
+ /** First sample of each pending fragment, kept in `#delivered` with its sample count. */
7681
+ #firstSamples = /* @__PURE__ */ new Map();
7682
+ /**
7683
+ * First sample and sample count of the newest fragments whose every slot was
7684
+ * cleared. Abandonment counts: `releaseSample` clears a slot too, which
7685
+ * matches the combiner, since it retires an abandoned sample as well.
7686
+ */
7687
+ #delivered = /* @__PURE__ */ new Map();
7677
7688
  #pendingSamples = 0;
7678
7689
  #evictedSamples = 0;
7679
7690
  #lastMovieFragmentRejection = null;
7691
+ /** True once an FT=0 has bound the track that FT=1 timing is read against. */
7692
+ get initialized() {
7693
+ return this.#track !== null;
7694
+ }
7680
7695
  get pendingSampleCount() {
7681
7696
  return this.#pendingSamples;
7682
7697
  }
@@ -7700,7 +7715,14 @@ var IsoBmffTimingResolver = class {
7700
7715
  this.#track = timing;
7701
7716
  return true;
7702
7717
  }
7703
- addMovieFragment(mpuSequenceNumber, data, additionalSampleLimit = this.maxPendingSamples) {
7718
+ /**
7719
+ * `recovered` marks an FEC-recovered copy. A recovered block hands back
7720
+ * every FT=1 it holds, the received ones included, so a recovered copy of a
7721
+ * fragment whose samples are all done is a duplicate: admitting it again
7722
+ * would charge stale timing and could displace the live MPU's. A source
7723
+ * copy is still admitted again (a rendition switch re-arms timing that way).
7724
+ */
7725
+ addMovieFragment(mpuSequenceNumber, data, additionalSampleLimit = this.maxPendingSamples, recovered = false) {
7704
7726
  this.#lastMovieFragmentRejection = null;
7705
7727
  if (!Number.isInteger(additionalSampleLimit) || additionalSampleLimit < 0) {
7706
7728
  this.#lastMovieFragmentRejection = "invalid";
@@ -7726,6 +7748,8 @@ var IsoBmffTimingResolver = class {
7726
7748
  (sample, index) => sample !== null && sameSample(sample, parsed.samples[index])
7727
7749
  );
7728
7750
  }
7751
+ const delivered = recovered ? this.#delivered.get(key) : void 0;
7752
+ if (delivered && delivered.sampleCount === parsed.samples.length && sameSample(delivered.first, parsed.samples[0])) return true;
7729
7753
  let freed = 0;
7730
7754
  while (this.#fragments.size > 0 && (this.#pendingSamples + parsed.samples.length > this.maxPendingSamples || parsed.samples.length - freed > additionalSampleLimit)) {
7731
7755
  freed += this.#evictOldestFragment();
@@ -7739,6 +7763,7 @@ var IsoBmffTimingResolver = class {
7739
7763
  return false;
7740
7764
  }
7741
7765
  this.#fragments.set(key, [...parsed.samples]);
7766
+ this.#firstSamples.set(key, parsed.samples[0]);
7742
7767
  this.#pendingSamples += parsed.samples.length;
7743
7768
  return true;
7744
7769
  }
@@ -7796,6 +7821,7 @@ var IsoBmffTimingResolver = class {
7796
7821
  let live = 0;
7797
7822
  for (const sample of samples) if (sample !== null) live++;
7798
7823
  this.#fragments.delete(oldest);
7824
+ this.#firstSamples.delete(oldest);
7799
7825
  this.#pendingSamples -= live;
7800
7826
  this.#evictedSamples += live;
7801
7827
  return live;
@@ -7811,12 +7837,23 @@ var IsoBmffTimingResolver = class {
7811
7837
  if (!samples || !samples[index]) return false;
7812
7838
  samples[index] = null;
7813
7839
  this.#pendingSamples--;
7814
- if (samples.every((value) => value === null)) this.#fragments.delete(key);
7840
+ if (samples.every((value) => value === null)) {
7841
+ this.#fragments.delete(key);
7842
+ const first = this.#firstSamples.get(key);
7843
+ this.#firstSamples.delete(key);
7844
+ this.#delivered.delete(key);
7845
+ this.#delivered.set(key, { first, sampleCount: samples.length });
7846
+ if (this.#delivered.size > this.maxPendingSamples) {
7847
+ this.#delivered.delete(this.#delivered.keys().next().value);
7848
+ }
7849
+ }
7815
7850
  return true;
7816
7851
  }
7817
7852
  reset() {
7818
7853
  this.#track = null;
7819
7854
  this.#fragments.clear();
7855
+ this.#firstSamples.clear();
7856
+ this.#delivered.clear();
7820
7857
  this.#pendingSamples = 0;
7821
7858
  }
7822
7859
  };
@@ -8298,6 +8335,12 @@ var MmtpContainerParser = class _MmtpContainerParser {
8298
8335
  this.#reclaimedTimingSamples = 0;
8299
8336
  this.#evictedTimingSamples = 0;
8300
8337
  this.#rejectedMovieFragments = 0;
8338
+ this.#recoveredHeadsAwaitingTiming = {
8339
+ held: 0,
8340
+ expired: 0,
8341
+ discarded: 0,
8342
+ superseded: 0
8343
+ };
8301
8344
  this.#sequencers = /* @__PURE__ */ new Map();
8302
8345
  this.#fecGate = null;
8303
8346
  this.#fecSequencer = null;
@@ -8406,6 +8449,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
8406
8449
  #reclaimedTimingSamples;
8407
8450
  #evictedTimingSamples;
8408
8451
  #rejectedMovieFragments;
8452
+ #recoveredHeadsAwaitingTiming;
8409
8453
  #sequencers;
8410
8454
  #fecGate;
8411
8455
  #fecSequencer;
@@ -8526,6 +8570,14 @@ var MmtpContainerParser = class _MmtpContainerParser {
8526
8570
  rejectedMovieFragments: this.#rejectedMovieFragments
8527
8571
  };
8528
8572
  }
8573
+ /** Recovered heads parked for FT=1 timing (BLO-53369). Survives dispose(). */
8574
+ get recoveredHeadsAwaitingTiming() {
8575
+ let pending = 0;
8576
+ for (const { awaitingTiming } of this.#timingStreams.values()) {
8577
+ for (const head of awaitingTiming) if (head.options?.recovered) pending++;
8578
+ }
8579
+ return { ...this.#recoveredHeadsAwaitingTiming, pending };
8580
+ }
8529
8581
  get reorderStats() {
8530
8582
  let bufferedFrames = this.#fecSequencer?.buffered ?? 0;
8531
8583
  for (const { sequencer } of this.#sequencers.values()) bufferedFrames += sequencer.buffered;
@@ -8699,7 +8751,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
8699
8751
  const now = Date.now();
8700
8752
  for (const { awaitingTiming } of this.#timingStreams.values()) {
8701
8753
  while (awaitingTiming.length > 0 && now - awaitingTiming[0].arrivedAt > timeoutMs) {
8702
- awaitingTiming.shift();
8754
+ this.#leaveAwaitingTiming(awaitingTiming.shift(), "expired");
8703
8755
  }
8704
8756
  }
8705
8757
  }
@@ -8817,11 +8869,16 @@ var MmtpContainerParser = class _MmtpContainerParser {
8817
8869
  if (mpu.fragmentationIndicator !== 0 || mpu.fragmentCounter !== 0)
8818
8870
  return this.#drop("fragment-unexpected-fragmentation");
8819
8871
  const resolver2 = this.#timingResolver(streamKey, info.packetId, false);
8820
- if (!resolver2) return this.#drop("fragment-no-resolver");
8872
+ if (!resolver2?.initialized) return this.#drop("fragment-no-resolver");
8821
8873
  const pendingBefore = resolver2.pendingSampleCount;
8822
8874
  const evictedBefore = resolver2.evictedSampleCount;
8823
8875
  const remaining = this.#maxPendingTimingSamples - this.#pendingTimingSamples;
8824
- const admitted = resolver2.addMovieFragment(mpu.mpuSequenceNumber, data, remaining);
8876
+ const admitted = resolver2.addMovieFragment(
8877
+ mpu.mpuSequenceNumber,
8878
+ data,
8879
+ remaining,
8880
+ options?.recovered === true
8881
+ );
8825
8882
  this.#pendingTimingSamples += resolver2.pendingSampleCount - pendingBefore;
8826
8883
  this.#evictedTimingSamples += resolver2.evictedSampleCount - evictedBefore;
8827
8884
  if (!admitted) {
@@ -8841,7 +8898,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
8841
8898
  };
8842
8899
  }
8843
8900
  if (fragmentType !== 2) return this.#drop("unknown-fragment-type");
8844
- const resolver = this.#timingResolver(streamKey, info.packetId, false);
8901
+ const resolver = this.#timingResolver(streamKey, info.packetId, true);
8845
8902
  if (!resolver) return this.#drop("mfu-no-resolver");
8846
8903
  if (!Number.isSafeInteger(data.byteLength) || data.byteLength <= 0)
8847
8904
  return this.#drop("mfu-empty-payload");
@@ -8862,6 +8919,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
8862
8919
  mpuSequenceNumber: mpu.mpuSequenceNumber,
8863
8920
  movieFragmentSequenceNumber: mfuDuHeader.movieFragmentSequenceNumber,
8864
8921
  sampleNumber: mfuDuHeader.sampleNumber,
8922
+ sequenceNumber: info.sequenceNumber,
8865
8923
  arrivedAt: Date.now()
8866
8924
  });
8867
8925
  return this.#drop("mfu-sample-timing-missing");
@@ -9185,6 +9243,10 @@ var MmtpContainerParser = class _MmtpContainerParser {
9185
9243
  }
9186
9244
  this.#emitFrame(data, meta);
9187
9245
  }
9246
+ /** Whether FT=1 metadata already names this sample, without claiming it. */
9247
+ hasAuthoredTimingFor(packetId, mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber, catalogTrackName) {
9248
+ return this.#timingResolver(this.#streamKey(packetId, catalogTrackName), packetId, false)?.sampleTiming(mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber) != null;
9249
+ }
9188
9250
  /**
9189
9251
  * Claim and return the authored timing for a recovered sample. Recovery does
9190
9252
  * not pass through the ordinary `feed()` completion path, so it must retire
@@ -9246,6 +9308,9 @@ var MmtpContainerParser = class _MmtpContainerParser {
9246
9308
  for (const { sequencer } of this.#sequencers.values()) sequencer.discard();
9247
9309
  this.#sequencers.clear();
9248
9310
  this.#fecSequencer?.discard();
9311
+ for (const { awaitingTiming } of this.#timingStreams.values()) {
9312
+ for (const head of awaitingTiming) this.#leaveAwaitingTiming(head, "discarded");
9313
+ }
9249
9314
  this.#timingStreams.clear();
9250
9315
  this.#pendingTimingSamples = 0;
9251
9316
  this.#reliableMoqStartupGate.clear();
@@ -9264,10 +9329,23 @@ var MmtpContainerParser = class _MmtpContainerParser {
9264
9329
  return resolver;
9265
9330
  }
9266
9331
  #awaitTiming(streamKey, head) {
9267
- const awaitingTiming = this.#timingStreams.get(streamKey)?.awaitingTiming;
9268
- if (!awaitingTiming) return;
9332
+ const state = this.#timingStreams.get(streamKey);
9333
+ if (!state) return;
9334
+ if (!head.options?.recovered) {
9335
+ const kept = state.awaitingTiming.filter((queued) => !queued.options?.recovered || queued.sequenceNumber !== head.sequenceNumber);
9336
+ this.#recoveredHeadsAwaitingTiming.superseded += state.awaitingTiming.length - kept.length;
9337
+ state.awaitingTiming = kept;
9338
+ }
9339
+ const awaitingTiming = state.awaitingTiming;
9269
9340
  awaitingTiming.push(head);
9270
- if (awaitingTiming.length > MAX_AWAITING_TIMING_HEADS) awaitingTiming.shift();
9341
+ if (head.options?.recovered) this.#recoveredHeadsAwaitingTiming.held++;
9342
+ if (awaitingTiming.length > MAX_AWAITING_TIMING_HEADS) {
9343
+ this.#leaveAwaitingTiming(awaitingTiming.shift(), "expired");
9344
+ }
9345
+ }
9346
+ /** Count a recovered head leaving the queue other than by replay or its source copy. */
9347
+ #leaveAwaitingTiming(head, outcome) {
9348
+ if (head.options?.recovered) this.#recoveredHeadsAwaitingTiming[outcome]++;
9271
9349
  }
9272
9350
  /**
9273
9351
  * Feed again the heads whose timing the FT=1 just admitted declares. That
@@ -9295,6 +9373,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
9295
9373
  const state = this.#timingStreams.get(streamKey);
9296
9374
  if (!state) return;
9297
9375
  this.#timingStreams.delete(streamKey);
9376
+ for (const head of state.awaitingTiming) this.#leaveAwaitingTiming(head, "discarded");
9298
9377
  this.#pendingTimingSamples -= state.resolver.pendingSampleCount;
9299
9378
  if (this.#pendingTimingSamples < 0) {
9300
9379
  throw new Error("[MmtpContainerParser] pending timing sample accounting underflow");
@@ -10634,6 +10713,10 @@ var MmtpRouter = class {
10634
10713
  get keyframeOverlayStats() {
10635
10714
  return { ...this.#overlayStats };
10636
10715
  }
10716
+ /** Recovered FT=2 heads held for their FT=1, and how each left the wait (BLO-53369). */
10717
+ get recoveredHeadsAwaitingTiming() {
10718
+ return this.#parser.recoveredHeadsAwaitingTiming;
10719
+ }
10637
10720
  #isOverlayRepair(repairPacketId, repairTrackName) {
10638
10721
  return this.#overlayLegs.has(repairPacketId) || repairTrackName !== void 0 && this.#overlayRepairNames.has(repairTrackName);
10639
10722
  }
@@ -13043,6 +13126,29 @@ var MmtpRouter = class {
13043
13126
  }
13044
13127
  );
13045
13128
  }
13129
+ const untimedHead = (sym) => sym.fragmentType === 2 && sym.fragment.fragmentationIndicator === 1 && sym.fragment.movieFragmentSequenceNumber !== void 0 && sym.fragment.sampleNumber !== void 0 && !this.#parser.hasAuthoredTimingFor(
13130
+ ownerPacketId,
13131
+ sym.fragment.mpuSequenceNumber,
13132
+ sym.fragment.movieFragmentSequenceNumber,
13133
+ sym.fragment.sampleNumber,
13134
+ catalogTrackName
13135
+ );
13136
+ for (const sym of result.symbols) {
13137
+ if (!untimedHead(sym) || this.#sourceSeqReceived(ownerPacketId, sym.packetSequenceNumber, catalogTrackName)) continue;
13138
+ this.#feedViaParser(
13139
+ sym.rawSymbol,
13140
+ { packetId: ownerPacketId, sequenceNumber: sym.packetSequenceNumber },
13141
+ void 0,
13142
+ {
13143
+ skipFecPayloadId: true,
13144
+ recovered: true,
13145
+ deliveryProvenance,
13146
+ ...fecSbnOf(sym.index),
13147
+ ...catalogTrackName === void 0 ? {} : { catalogTrackName }
13148
+ }
13149
+ );
13150
+ }
13151
+ result = { ...result, symbols: result.symbols.filter((sym) => !untimedHead(sym)) };
13046
13152
  const gated = this.#isFecTrack(ownerPacketId);
13047
13153
  const assembler = this.#mseAssemblerFor(ownerPacketId, catalogTrackName);
13048
13154
  if (assembler) {