@blockcast/mmt-container 0.3.0 → 0.4.0-main.71d61b2a53f2

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 (605) hide show
  1. package/README.md +33 -16
  2. package/dist/browser-runtime.js +14743 -14412
  3. package/dist/browser-runtime.js.map +4 -4
  4. package/dist/carp-catalog.d.ts +24 -19
  5. package/dist/carp-catalog.d.ts.map +1 -1
  6. package/dist/carp-catalog.js +29 -14
  7. package/dist/carp-catalog.js.map +4 -4
  8. package/dist/catalog-fec-params.d.ts +88 -28
  9. package/dist/catalog-fec-params.d.ts.map +1 -1
  10. package/dist/catalog-fec-params.js +60 -23
  11. package/dist/catalog-fec-params.js.map +4 -4
  12. package/dist/catalog-network-source.js +1 -7
  13. package/dist/catalog-network-source.js.map +4 -4
  14. package/dist/cmaf-block-assembler.d.ts +0 -2
  15. package/dist/cmaf-block-assembler.d.ts.map +1 -1
  16. package/dist/cmaf-block-assembler.js +0 -1
  17. package/dist/cmaf-block-assembler.js.map +2 -2
  18. package/dist/cmcd-producer.d.ts.map +1 -1
  19. package/dist/cmcd-producer.js +0 -4
  20. package/dist/cmcd-producer.js.map +2 -2
  21. package/dist/delivery-catalog.d.ts +124 -0
  22. package/dist/delivery-catalog.d.ts.map +1 -0
  23. package/dist/delivery-catalog.js +1857 -0
  24. package/dist/delivery-catalog.js.map +7 -0
  25. package/dist/delta-fallback-config.d.ts +42 -0
  26. package/dist/delta-fallback-config.d.ts.map +1 -0
  27. package/dist/delta-fallback-config.js +59 -0
  28. package/dist/delta-fallback-config.js.map +7 -0
  29. package/dist/fec-manager.d.ts +36 -30
  30. package/dist/fec-manager.d.ts.map +1 -1
  31. package/dist/fec-manager.js +303 -293
  32. package/dist/fec-manager.js.map +4 -4
  33. package/dist/fec-state.d.ts +19 -31
  34. package/dist/fec-state.d.ts.map +1 -1
  35. package/dist/fec-state.js +4 -10
  36. package/dist/fec-state.js.map +4 -4
  37. package/dist/fec-worker-setup.d.ts +18 -14
  38. package/dist/fec-worker-setup.d.ts.map +1 -1
  39. package/dist/fec-worker-setup.js +81 -96
  40. package/dist/fec-worker-setup.js.map +4 -4
  41. package/dist/index.d.ts +5 -3
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +16 -0
  44. package/dist/index.js.map +2 -2
  45. package/dist/iso-block-locator.js +1 -7
  46. package/dist/iso-block-locator.js.map +4 -4
  47. package/dist/media-router.d.ts +20 -8
  48. package/dist/media-router.d.ts.map +1 -1
  49. package/dist/media-router.js +46 -21
  50. package/dist/media-router.js.map +2 -2
  51. package/dist/mfu-reassembler.js +24 -30
  52. package/dist/mfu-reassembler.js.map +4 -4
  53. package/dist/mmtp-container-parser.d.ts +6 -11
  54. package/dist/mmtp-container-parser.d.ts.map +1 -1
  55. package/dist/mmtp-container-parser.js +56 -97
  56. package/dist/mmtp-container-parser.js.map +4 -4
  57. package/dist/mmtp-container-parser.no-modules.js +78 -105
  58. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  59. package/dist/mmtp-decode-pipeline.js +56 -97
  60. package/dist/mmtp-decode-pipeline.js.map +4 -4
  61. package/dist/mmtp-router.d.ts +37 -26
  62. package/dist/mmtp-router.d.ts.map +1 -1
  63. package/dist/mmtp-router.js +162 -313
  64. package/dist/mmtp-router.js.map +4 -4
  65. package/dist/multicast-input.js +1 -7
  66. package/dist/multicast-input.js.map +4 -4
  67. package/dist/multicast-manager.d.ts +34 -6
  68. package/dist/multicast-manager.d.ts.map +1 -1
  69. package/dist/multicast-manager.js +709 -658
  70. package/dist/multicast-manager.js.map +4 -4
  71. package/dist/multicast-transport.d.ts +1 -1
  72. package/dist/multicast-transport.d.ts.map +1 -1
  73. package/dist/multicast-transport.js +44 -26
  74. package/dist/multicast-transport.js.map +4 -4
  75. package/dist/multicast-unwrap.js +29 -35
  76. package/dist/multicast-unwrap.js.map +4 -4
  77. package/dist/no-modules.js +77 -104
  78. package/dist/no-modules.js.map +4 -4
  79. package/dist/repair-fetch.d.ts +30 -19
  80. package/dist/repair-fetch.d.ts.map +1 -1
  81. package/dist/repair-fetch.js +33 -24
  82. package/dist/repair-fetch.js.map +4 -4
  83. package/dist/repair-layers.d.ts +18 -7
  84. package/dist/repair-layers.d.ts.map +1 -1
  85. package/dist/repair-layers.js +12 -10
  86. package/dist/repair-layers.js.map +4 -4
  87. package/dist/signaling.js +2 -11
  88. package/dist/signaling.js.map +4 -4
  89. package/dist/timestamp-codec.js +24 -30
  90. package/dist/timestamp-codec.js.map +4 -4
  91. package/dist/track-session.d.ts +7 -0
  92. package/dist/track-session.d.ts.map +1 -1
  93. package/dist/track-session.js +15 -8
  94. package/dist/track-session.js.map +2 -2
  95. package/dist/wasm-mfu-reassembler.js +1 -7
  96. package/dist/wasm-mfu-reassembler.js.map +4 -4
  97. package/dist/wasm-mmtp-container-parser.js +56 -97
  98. package/dist/wasm-mmtp-container-parser.js.map +4 -4
  99. package/package.json +7 -14
  100. package/schemas/catalog.schema.json +3 -3
  101. package/src/carp-catalog.ts +46 -24
  102. package/src/catalog-fec-params.ts +173 -64
  103. package/src/cmaf-block-assembler.ts +1 -4
  104. package/src/cmcd-producer.ts +0 -6
  105. package/src/delivery-catalog.ts +498 -0
  106. package/src/delta-fallback-config.ts +72 -0
  107. package/src/fec-manager.ts +414 -334
  108. package/src/fec-state.ts +20 -32
  109. package/src/fec-worker-setup.ts +109 -90
  110. package/src/index.ts +32 -0
  111. package/src/media-router.ts +59 -21
  112. package/src/mmtp-container-parser.ts +27 -18
  113. package/src/mmtp-router.ts +146 -313
  114. package/src/multicast-manager.ts +184 -83
  115. package/src/multicast-transport.ts +16 -9
  116. package/src/repair-fetch.ts +46 -27
  117. package/src/repair-layers.ts +28 -8
  118. package/src/track-session.ts +28 -9
  119. package/test-vectors/catalog/README.md +37 -17
  120. package/test-vectors/catalog/negative/fec-block-profile-retired.json +52 -0
  121. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +1 -1
  122. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +1 -1
  123. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +1 -1
  124. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +1 -1
  125. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +1 -1
  126. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +1 -1
  127. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +1 -1
  128. package/test-vectors/catalog/negative/multicast-endpoint-relay-address.json +39 -0
  129. package/test-vectors/catalog/negative/multicast-network-source-empty.json +1 -1
  130. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +1 -1
  131. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +1 -1
  132. package/test-vectors/catalog/positive/fec-layered-repair.json +2 -2
  133. package/test-vectors/catalog/positive/fec-multicast.json +2 -1
  134. package/test-vectors/catalog/positive/multicast-amt-manual-relay.json +38 -0
  135. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +2 -1
  136. package/test-vectors/catalog-timing.json +356 -0
  137. package/test-vectors/catalog-validation.json +40 -5
  138. package/test-vectors/delivery-catalog/README.md +11 -0
  139. package/test-vectors/delivery-catalog/negative/missing-block-profile.json +58 -0
  140. package/test-vectors/delivery-catalog/negative/packet-id-signaling.json +59 -0
  141. package/test-vectors/delivery-catalog/negative/retired-k-padded-block-profile.json +59 -0
  142. package/test-vectors/delivery-catalog/positive/dash.json +56 -0
  143. package/test-vectors/delivery-catalog/positive/mmtp-source-only.json +43 -0
  144. package/node_modules/@blockcast/fec-worker/README.md +0 -223
  145. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  146. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +0 -38
  147. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +0 -1
  148. package/node_modules/@blockcast/fec-worker/dist/block-order.js +0 -78
  149. package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +0 -1
  150. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +0 -93
  151. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +0 -1
  152. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +0 -346
  153. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +0 -1
  154. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +0 -380
  155. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +0 -1
  156. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +0 -11
  157. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +0 -1
  158. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +0 -14
  159. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +0 -1
  160. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +0 -859
  161. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +0 -7
  162. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +0 -10
  163. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +0 -1
  164. package/node_modules/@blockcast/fec-worker/dist/index.js +0 -8
  165. package/node_modules/@blockcast/fec-worker/dist/index.js.map +0 -1
  166. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +0 -20
  167. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +0 -1
  168. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +0 -370
  169. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +0 -7
  170. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +0 -104
  171. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +0 -1
  172. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +0 -181
  173. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +0 -1
  174. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +0 -194
  175. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +0 -1
  176. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +0 -62
  177. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +0 -1
  178. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +0 -9
  179. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +0 -1
  180. package/node_modules/@blockcast/fec-worker/dist/transfer.js +0 -13
  181. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +0 -1
  182. package/node_modules/@blockcast/fec-worker/package.json +0 -59
  183. package/node_modules/@blockcast/fec-worker/src/block-order.ts +0 -93
  184. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +0 -392
  185. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +0 -399
  186. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +0 -1502
  187. package/node_modules/@blockcast/fec-worker/src/index.ts +0 -35
  188. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +0 -589
  189. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +0 -222
  190. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +0 -209
  191. package/node_modules/@blockcast/fec-worker/src/transfer.ts +0 -12
  192. package/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  193. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  194. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  195. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  196. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  197. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  198. package/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  199. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  200. package/node_modules/@blockcast/mmt-base/README.md +0 -134
  201. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  202. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  203. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  204. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  205. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  206. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  207. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  208. package/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  209. package/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  210. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  211. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  212. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  213. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  214. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  215. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  216. package/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  217. package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  218. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  219. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  220. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  221. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  222. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  223. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  224. package/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  225. package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  226. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  227. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  228. package/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  229. package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  230. package/node_modules/@blockcast/mmt-base/package.json +0 -49
  231. package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  232. package/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  233. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  234. package/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  235. package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  236. package/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  237. package/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  238. package/node_modules/@blockcast/mmt-fec/README.md +0 -271
  239. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  240. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +0 -82
  241. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +0 -1
  242. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +0 -296
  243. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +0 -1
  244. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +0 -106
  245. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +0 -1
  246. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +0 -288
  247. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +0 -1
  248. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +0 -46
  249. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +0 -1
  250. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +0 -96
  251. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +0 -1
  252. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +0 -33
  253. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +0 -1
  254. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +0 -57
  255. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +0 -1
  256. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +0 -205
  257. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +0 -1
  258. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +0 -240
  259. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +0 -1
  260. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +0 -28
  261. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +0 -1
  262. package/node_modules/@blockcast/mmt-fec/dist/index.js +0 -28
  263. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +0 -1
  264. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +0 -20
  265. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +0 -1
  266. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +0 -28
  267. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +0 -1
  268. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +0 -258
  269. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +0 -1
  270. package/node_modules/@blockcast/mmt-fec/dist/oti.js +0 -382
  271. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +0 -1
  272. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +0 -41
  273. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +0 -1
  274. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +0 -81
  275. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +0 -1
  276. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +0 -82
  277. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +0 -1
  278. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +0 -170
  279. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +0 -1
  280. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +0 -181
  281. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  282. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +0 -57
  283. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +0 -1
  284. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +0 -115
  285. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +0 -1
  286. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +0 -50
  287. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +0 -136
  288. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +0 -134
  289. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  290. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +0 -55
  291. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +0 -1
  292. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +0 -128
  293. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +0 -1
  294. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +0 -7
  295. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +0 -1
  296. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +0 -7
  297. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +0 -1
  298. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +0 -292
  299. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +0 -1
  300. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +0 -612
  301. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +0 -1
  302. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +0 -18
  303. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +0 -1
  304. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +0 -18
  305. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +0 -1
  306. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +0 -47
  307. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +0 -1
  308. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +0 -54
  309. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +0 -1
  310. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +0 -57
  311. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +0 -1
  312. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +0 -98
  313. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +0 -1
  314. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +0 -312
  315. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +0 -1
  316. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +0 -637
  317. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +0 -1
  318. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +0 -49
  319. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +0 -145
  320. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +0 -6
  321. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +0 -892
  322. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +0 -17
  323. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +0 -67
  324. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +0 -107
  325. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +0 -862
  326. package/node_modules/@blockcast/mmt-fec/package.json +0 -79
  327. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +0 -371
  328. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +0 -439
  329. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +0 -127
  330. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +0 -68
  331. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +0 -310
  332. package/node_modules/@blockcast/mmt-fec/src/index.ts +0 -94
  333. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +0 -34
  334. package/node_modules/@blockcast/mmt-fec/src/oti.ts +0 -463
  335. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +0 -101
  336. package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +0 -195
  337. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  338. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +0 -28
  339. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +0 -1
  340. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +0 -128
  341. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +0 -1
  342. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +0 -4
  343. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +0 -1
  344. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +0 -4
  345. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +0 -1
  346. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +0 -37
  347. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +0 -1
  348. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +0 -179
  349. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +0 -1
  350. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +0 -99
  351. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +0 -1
  352. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +0 -492
  353. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +0 -1
  354. package/node_modules/@blockcast/mmt-manifest-verify/package.json +0 -45
  355. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +0 -171
  356. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +0 -3
  357. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +0 -230
  358. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +0 -669
  359. package/node_modules/@noble/hashes/LICENSE +0 -21
  360. package/node_modules/@noble/hashes/README.md +0 -521
  361. package/node_modules/@noble/hashes/_assert.d.ts +0 -17
  362. package/node_modules/@noble/hashes/_assert.d.ts.map +0 -1
  363. package/node_modules/@noble/hashes/_assert.js +0 -18
  364. package/node_modules/@noble/hashes/_assert.js.map +0 -1
  365. package/node_modules/@noble/hashes/_blake.d.ts +0 -14
  366. package/node_modules/@noble/hashes/_blake.d.ts.map +0 -1
  367. package/node_modules/@noble/hashes/_blake.js +0 -50
  368. package/node_modules/@noble/hashes/_blake.js.map +0 -1
  369. package/node_modules/@noble/hashes/_md.d.ts +0 -51
  370. package/node_modules/@noble/hashes/_md.d.ts.map +0 -1
  371. package/node_modules/@noble/hashes/_md.js +0 -162
  372. package/node_modules/@noble/hashes/_md.js.map +0 -1
  373. package/node_modules/@noble/hashes/_u64.d.ts +0 -55
  374. package/node_modules/@noble/hashes/_u64.d.ts.map +0 -1
  375. package/node_modules/@noble/hashes/_u64.js +0 -90
  376. package/node_modules/@noble/hashes/_u64.js.map +0 -1
  377. package/node_modules/@noble/hashes/argon2.d.ts +0 -32
  378. package/node_modules/@noble/hashes/argon2.d.ts.map +0 -1
  379. package/node_modules/@noble/hashes/argon2.js +0 -401
  380. package/node_modules/@noble/hashes/argon2.js.map +0 -1
  381. package/node_modules/@noble/hashes/blake1.d.ts +0 -106
  382. package/node_modules/@noble/hashes/blake1.d.ts.map +0 -1
  383. package/node_modules/@noble/hashes/blake1.js +0 -459
  384. package/node_modules/@noble/hashes/blake1.js.map +0 -1
  385. package/node_modules/@noble/hashes/blake2.d.ts +0 -116
  386. package/node_modules/@noble/hashes/blake2.d.ts.map +0 -1
  387. package/node_modules/@noble/hashes/blake2.js +0 -420
  388. package/node_modules/@noble/hashes/blake2.js.map +0 -1
  389. package/node_modules/@noble/hashes/blake2b.d.ts +0 -11
  390. package/node_modules/@noble/hashes/blake2b.d.ts.map +0 -1
  391. package/node_modules/@noble/hashes/blake2b.js +0 -14
  392. package/node_modules/@noble/hashes/blake2b.js.map +0 -1
  393. package/node_modules/@noble/hashes/blake2s.d.ts +0 -20
  394. package/node_modules/@noble/hashes/blake2s.d.ts.map +0 -1
  395. package/node_modules/@noble/hashes/blake2s.js +0 -24
  396. package/node_modules/@noble/hashes/blake2s.js.map +0 -1
  397. package/node_modules/@noble/hashes/blake3.d.ts +0 -54
  398. package/node_modules/@noble/hashes/blake3.d.ts.map +0 -1
  399. package/node_modules/@noble/hashes/blake3.js +0 -255
  400. package/node_modules/@noble/hashes/blake3.js.map +0 -1
  401. package/node_modules/@noble/hashes/crypto.d.ts +0 -2
  402. package/node_modules/@noble/hashes/crypto.d.ts.map +0 -1
  403. package/node_modules/@noble/hashes/crypto.js +0 -5
  404. package/node_modules/@noble/hashes/crypto.js.map +0 -1
  405. package/node_modules/@noble/hashes/cryptoNode.d.ts +0 -2
  406. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +0 -1
  407. package/node_modules/@noble/hashes/cryptoNode.js +0 -18
  408. package/node_modules/@noble/hashes/cryptoNode.js.map +0 -1
  409. package/node_modules/@noble/hashes/eskdf.d.ts +0 -47
  410. package/node_modules/@noble/hashes/eskdf.d.ts.map +0 -1
  411. package/node_modules/@noble/hashes/eskdf.js +0 -166
  412. package/node_modules/@noble/hashes/eskdf.js.map +0 -1
  413. package/node_modules/@noble/hashes/esm/_assert.d.ts +0 -17
  414. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +0 -1
  415. package/node_modules/@noble/hashes/esm/_assert.js +0 -15
  416. package/node_modules/@noble/hashes/esm/_assert.js.map +0 -1
  417. package/node_modules/@noble/hashes/esm/_blake.d.ts +0 -14
  418. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +0 -1
  419. package/node_modules/@noble/hashes/esm/_blake.js +0 -45
  420. package/node_modules/@noble/hashes/esm/_blake.js.map +0 -1
  421. package/node_modules/@noble/hashes/esm/_md.d.ts +0 -51
  422. package/node_modules/@noble/hashes/esm/_md.d.ts.map +0 -1
  423. package/node_modules/@noble/hashes/esm/_md.js +0 -155
  424. package/node_modules/@noble/hashes/esm/_md.js.map +0 -1
  425. package/node_modules/@noble/hashes/esm/_u64.d.ts +0 -55
  426. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +0 -1
  427. package/node_modules/@noble/hashes/esm/_u64.js +0 -67
  428. package/node_modules/@noble/hashes/esm/_u64.js.map +0 -1
  429. package/node_modules/@noble/hashes/esm/argon2.d.ts +0 -32
  430. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +0 -1
  431. package/node_modules/@noble/hashes/esm/argon2.js +0 -392
  432. package/node_modules/@noble/hashes/esm/argon2.js.map +0 -1
  433. package/node_modules/@noble/hashes/esm/blake1.d.ts +0 -106
  434. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +0 -1
  435. package/node_modules/@noble/hashes/esm/blake1.js +0 -452
  436. package/node_modules/@noble/hashes/esm/blake1.js.map +0 -1
  437. package/node_modules/@noble/hashes/esm/blake2.d.ts +0 -116
  438. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +0 -1
  439. package/node_modules/@noble/hashes/esm/blake2.js +0 -413
  440. package/node_modules/@noble/hashes/esm/blake2.js.map +0 -1
  441. package/node_modules/@noble/hashes/esm/blake2b.d.ts +0 -11
  442. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +0 -1
  443. package/node_modules/@noble/hashes/esm/blake2b.js +0 -11
  444. package/node_modules/@noble/hashes/esm/blake2b.js.map +0 -1
  445. package/node_modules/@noble/hashes/esm/blake2s.d.ts +0 -20
  446. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +0 -1
  447. package/node_modules/@noble/hashes/esm/blake2s.js +0 -21
  448. package/node_modules/@noble/hashes/esm/blake2s.js.map +0 -1
  449. package/node_modules/@noble/hashes/esm/blake3.d.ts +0 -54
  450. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +0 -1
  451. package/node_modules/@noble/hashes/esm/blake3.js +0 -251
  452. package/node_modules/@noble/hashes/esm/blake3.js.map +0 -1
  453. package/node_modules/@noble/hashes/esm/crypto.d.ts +0 -2
  454. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +0 -1
  455. package/node_modules/@noble/hashes/esm/crypto.js +0 -2
  456. package/node_modules/@noble/hashes/esm/crypto.js.map +0 -1
  457. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +0 -2
  458. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +0 -1
  459. package/node_modules/@noble/hashes/esm/cryptoNode.js +0 -15
  460. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +0 -1
  461. package/node_modules/@noble/hashes/esm/eskdf.d.ts +0 -47
  462. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +0 -1
  463. package/node_modules/@noble/hashes/esm/eskdf.js +0 -160
  464. package/node_modules/@noble/hashes/esm/eskdf.js.map +0 -1
  465. package/node_modules/@noble/hashes/esm/hkdf.d.ts +0 -36
  466. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +0 -1
  467. package/node_modules/@noble/hashes/esm/hkdf.js +0 -82
  468. package/node_modules/@noble/hashes/esm/hkdf.js.map +0 -1
  469. package/node_modules/@noble/hashes/esm/hmac.d.ts +0 -35
  470. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +0 -1
  471. package/node_modules/@noble/hashes/esm/hmac.js +0 -86
  472. package/node_modules/@noble/hashes/esm/hmac.js.map +0 -1
  473. package/node_modules/@noble/hashes/esm/index.d.ts +0 -2
  474. package/node_modules/@noble/hashes/esm/index.d.ts.map +0 -1
  475. package/node_modules/@noble/hashes/esm/index.js +0 -33
  476. package/node_modules/@noble/hashes/esm/index.js.map +0 -1
  477. package/node_modules/@noble/hashes/esm/legacy.d.ts +0 -71
  478. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +0 -1
  479. package/node_modules/@noble/hashes/esm/legacy.js +0 -281
  480. package/node_modules/@noble/hashes/esm/legacy.js.map +0 -1
  481. package/node_modules/@noble/hashes/esm/package.json +0 -10
  482. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +0 -23
  483. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +0 -1
  484. package/node_modules/@noble/hashes/esm/pbkdf2.js +0 -97
  485. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +0 -1
  486. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +0 -13
  487. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +0 -1
  488. package/node_modules/@noble/hashes/esm/ripemd160.js +0 -13
  489. package/node_modules/@noble/hashes/esm/ripemd160.js.map +0 -1
  490. package/node_modules/@noble/hashes/esm/scrypt.d.ts +0 -34
  491. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +0 -1
  492. package/node_modules/@noble/hashes/esm/scrypt.js +0 -228
  493. package/node_modules/@noble/hashes/esm/scrypt.js.map +0 -1
  494. package/node_modules/@noble/hashes/esm/sha1.d.ts +0 -11
  495. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +0 -1
  496. package/node_modules/@noble/hashes/esm/sha1.js +0 -11
  497. package/node_modules/@noble/hashes/esm/sha1.js.map +0 -1
  498. package/node_modules/@noble/hashes/esm/sha2.d.ts +0 -159
  499. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +0 -1
  500. package/node_modules/@noble/hashes/esm/sha2.js +0 -375
  501. package/node_modules/@noble/hashes/esm/sha2.js.map +0 -1
  502. package/node_modules/@noble/hashes/esm/sha256.d.ts +0 -20
  503. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +0 -1
  504. package/node_modules/@noble/hashes/esm/sha256.js +0 -20
  505. package/node_modules/@noble/hashes/esm/sha256.js.map +0 -1
  506. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +0 -142
  507. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +0 -1
  508. package/node_modules/@noble/hashes/esm/sha3-addons.js +0 -393
  509. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +0 -1
  510. package/node_modules/@noble/hashes/esm/sha3.d.ts +0 -53
  511. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +0 -1
  512. package/node_modules/@noble/hashes/esm/sha3.js +0 -234
  513. package/node_modules/@noble/hashes/esm/sha3.js.map +0 -1
  514. package/node_modules/@noble/hashes/esm/sha512.d.ts +0 -26
  515. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +0 -1
  516. package/node_modules/@noble/hashes/esm/sha512.js +0 -26
  517. package/node_modules/@noble/hashes/esm/sha512.js.map +0 -1
  518. package/node_modules/@noble/hashes/esm/utils.d.ts +0 -161
  519. package/node_modules/@noble/hashes/esm/utils.d.ts.map +0 -1
  520. package/node_modules/@noble/hashes/esm/utils.js +0 -281
  521. package/node_modules/@noble/hashes/esm/utils.js.map +0 -1
  522. package/node_modules/@noble/hashes/hkdf.d.ts +0 -36
  523. package/node_modules/@noble/hashes/hkdf.d.ts.map +0 -1
  524. package/node_modules/@noble/hashes/hkdf.js +0 -88
  525. package/node_modules/@noble/hashes/hkdf.js.map +0 -1
  526. package/node_modules/@noble/hashes/hmac.d.ts +0 -35
  527. package/node_modules/@noble/hashes/hmac.d.ts.map +0 -1
  528. package/node_modules/@noble/hashes/hmac.js +0 -91
  529. package/node_modules/@noble/hashes/hmac.js.map +0 -1
  530. package/node_modules/@noble/hashes/index.d.ts +0 -1
  531. package/node_modules/@noble/hashes/index.d.ts.map +0 -1
  532. package/node_modules/@noble/hashes/index.js +0 -33
  533. package/node_modules/@noble/hashes/index.js.map +0 -1
  534. package/node_modules/@noble/hashes/legacy.d.ts +0 -71
  535. package/node_modules/@noble/hashes/legacy.d.ts.map +0 -1
  536. package/node_modules/@noble/hashes/legacy.js +0 -287
  537. package/node_modules/@noble/hashes/legacy.js.map +0 -1
  538. package/node_modules/@noble/hashes/package.json +0 -266
  539. package/node_modules/@noble/hashes/pbkdf2.d.ts +0 -23
  540. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +0 -1
  541. package/node_modules/@noble/hashes/pbkdf2.js +0 -101
  542. package/node_modules/@noble/hashes/pbkdf2.js.map +0 -1
  543. package/node_modules/@noble/hashes/ripemd160.d.ts +0 -13
  544. package/node_modules/@noble/hashes/ripemd160.d.ts.map +0 -1
  545. package/node_modules/@noble/hashes/ripemd160.js +0 -16
  546. package/node_modules/@noble/hashes/ripemd160.js.map +0 -1
  547. package/node_modules/@noble/hashes/scrypt.d.ts +0 -34
  548. package/node_modules/@noble/hashes/scrypt.d.ts.map +0 -1
  549. package/node_modules/@noble/hashes/scrypt.js +0 -232
  550. package/node_modules/@noble/hashes/scrypt.js.map +0 -1
  551. package/node_modules/@noble/hashes/sha1.d.ts +0 -11
  552. package/node_modules/@noble/hashes/sha1.d.ts.map +0 -1
  553. package/node_modules/@noble/hashes/sha1.js +0 -14
  554. package/node_modules/@noble/hashes/sha1.js.map +0 -1
  555. package/node_modules/@noble/hashes/sha2.d.ts +0 -159
  556. package/node_modules/@noble/hashes/sha2.d.ts.map +0 -1
  557. package/node_modules/@noble/hashes/sha2.js +0 -384
  558. package/node_modules/@noble/hashes/sha2.js.map +0 -1
  559. package/node_modules/@noble/hashes/sha256.d.ts +0 -20
  560. package/node_modules/@noble/hashes/sha256.d.ts.map +0 -1
  561. package/node_modules/@noble/hashes/sha256.js +0 -23
  562. package/node_modules/@noble/hashes/sha256.js.map +0 -1
  563. package/node_modules/@noble/hashes/sha3-addons.d.ts +0 -142
  564. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +0 -1
  565. package/node_modules/@noble/hashes/sha3-addons.js +0 -402
  566. package/node_modules/@noble/hashes/sha3-addons.js.map +0 -1
  567. package/node_modules/@noble/hashes/sha3.d.ts +0 -53
  568. package/node_modules/@noble/hashes/sha3.d.ts.map +0 -1
  569. package/node_modules/@noble/hashes/sha3.js +0 -239
  570. package/node_modules/@noble/hashes/sha3.js.map +0 -1
  571. package/node_modules/@noble/hashes/sha512.d.ts +0 -26
  572. package/node_modules/@noble/hashes/sha512.d.ts.map +0 -1
  573. package/node_modules/@noble/hashes/sha512.js +0 -29
  574. package/node_modules/@noble/hashes/sha512.js.map +0 -1
  575. package/node_modules/@noble/hashes/src/_assert.ts +0 -22
  576. package/node_modules/@noble/hashes/src/_blake.ts +0 -50
  577. package/node_modules/@noble/hashes/src/_md.ts +0 -176
  578. package/node_modules/@noble/hashes/src/_u64.ts +0 -91
  579. package/node_modules/@noble/hashes/src/argon2.ts +0 -497
  580. package/node_modules/@noble/hashes/src/blake1.ts +0 -534
  581. package/node_modules/@noble/hashes/src/blake2.ts +0 -486
  582. package/node_modules/@noble/hashes/src/blake2b.ts +0 -10
  583. package/node_modules/@noble/hashes/src/blake2s.ts +0 -20
  584. package/node_modules/@noble/hashes/src/blake3.ts +0 -272
  585. package/node_modules/@noble/hashes/src/crypto.ts +0 -9
  586. package/node_modules/@noble/hashes/src/cryptoNode.ts +0 -15
  587. package/node_modules/@noble/hashes/src/eskdf.ts +0 -187
  588. package/node_modules/@noble/hashes/src/hkdf.ts +0 -88
  589. package/node_modules/@noble/hashes/src/hmac.ts +0 -94
  590. package/node_modules/@noble/hashes/src/index.ts +0 -31
  591. package/node_modules/@noble/hashes/src/legacy.ts +0 -293
  592. package/node_modules/@noble/hashes/src/pbkdf2.ts +0 -122
  593. package/node_modules/@noble/hashes/src/ripemd160.ts +0 -12
  594. package/node_modules/@noble/hashes/src/scrypt.ts +0 -257
  595. package/node_modules/@noble/hashes/src/sha1.ts +0 -10
  596. package/node_modules/@noble/hashes/src/sha2.ts +0 -402
  597. package/node_modules/@noble/hashes/src/sha256.ts +0 -24
  598. package/node_modules/@noble/hashes/src/sha3-addons.ts +0 -499
  599. package/node_modules/@noble/hashes/src/sha3.ts +0 -258
  600. package/node_modules/@noble/hashes/src/sha512.ts +0 -34
  601. package/node_modules/@noble/hashes/src/utils.ts +0 -395
  602. package/node_modules/@noble/hashes/utils.d.ts +0 -161
  603. package/node_modules/@noble/hashes/utils.d.ts.map +0 -1
  604. package/node_modules/@noble/hashes/utils.js +0 -313
  605. package/node_modules/@noble/hashes/utils.js.map +0 -1
@@ -1,77 +1,16 @@
1
- // ../mmt-alta-parse/dist/index.js
1
+ // ../mmt-base/dist/mmtp.js
2
2
  var MMTP_HEADER_SIZE = 12;
3
3
  var MPU_HEADER_SIZE = 8;
4
- var MPU_LENGTH_FIELD_SIZE = 2;
5
- var MPU_HEADER_REMAINDER_SIZE = MPU_HEADER_SIZE - MPU_LENGTH_FIELD_SIZE;
6
- var TIMED_MFU_DU_HEADER_SIZE = 14;
7
- var NONTIMED_MFU_DU_HEADER_SIZE = 4;
8
- var PACKET_TYPE_MPU = 0;
9
- var MMTP_EXT_TYPE_ALTA_AUTH = 61601;
10
- var MMTP_EXT_TRAILER_HEADER_SIZE = 4;
11
- function extractAltaTrailer(mmtpPacket, options) {
12
- if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE)
13
- return null;
14
- const packetType = mmtpPacket[1] & 63;
15
- if (packetType !== PACKET_TYPE_MPU)
16
- return null;
17
- const fecType = mmtpPacket[0] >> 3 & 3;
18
- let headerLength = MMTP_HEADER_SIZE;
19
- if (fecType < 2 && (mmtpPacket[0] & 32) !== 0)
20
- headerLength += 4;
21
- if (fecType < 2 && (mmtpPacket[0] & 2) !== 0) {
22
- if (headerLength + 4 > mmtpPacket.length)
23
- return null;
24
- const extensionLength = new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + headerLength + 2, 2).getUint16(0, false);
25
- headerLength += 4 + extensionLength;
26
- }
27
- if (headerLength + MPU_HEADER_SIZE > mmtpPacket.length)
28
- return null;
29
- const payload = mmtpPacket.subarray(headerLength);
30
- const payloadLength = payload[0] << 8 | payload[1];
31
- const flagsByte = payload[2];
32
- const fragmentType = flagsByte >> 4 & 15;
33
- const timed = (flagsByte >> 3 & 1) === 1;
34
- const fragmentationIndicator = flagsByte >> 1 & 3;
35
- if (fragmentType !== 2)
36
- return null;
37
- const dataUnitHeaderSize = fragmentationIndicator <= 1 ? timed ? TIMED_MFU_DU_HEADER_SIZE : NONTIMED_MFU_DU_HEADER_SIZE : 0;
38
- if (payloadLength <= MPU_HEADER_REMAINDER_SIZE + dataUnitHeaderSize)
39
- return null;
40
- if (fecType > 1)
41
- return null;
42
- const hasFecId = !options?.skipFecId && fecType === 1;
43
- const payloadEnd = hasFecId ? payload.length - 4 : payload.length;
44
- const declaredEnd = MPU_LENGTH_FIELD_SIZE + payloadLength;
45
- if (declaredEnd > payloadEnd)
46
- return null;
47
- if (declaredEnd + MMTP_EXT_TRAILER_HEADER_SIZE > payloadEnd)
48
- return null;
49
- const extType = payload[declaredEnd] << 8 | payload[declaredEnd + 1];
50
- if (extType !== MMTP_EXT_TYPE_ALTA_AUTH)
51
- return null;
52
- const extLen = payload[declaredEnd + 2] << 8 | payload[declaredEnd + 3];
53
- const authStart = declaredEnd + MMTP_EXT_TRAILER_HEADER_SIZE;
54
- if (authStart + extLen !== payloadEnd)
55
- return null;
56
- return {
57
- auth: payload.subarray(authStart, payloadEnd),
58
- signedEnd: headerLength + declaredEnd
59
- };
60
- }
61
-
62
- // ../mmt-base/dist/mmtp.js
63
- var MMTP_HEADER_SIZE2 = 12;
64
- var MPU_HEADER_SIZE2 = 8;
65
4
  var MFU_DU_HEADER_SIZE_TIMED = 14;
66
5
  var MFU_DU_HEADER_SIZE_NONTIMED = 4;
67
- var MPU_LENGTH_FIELD_SIZE2 = 2;
68
- var MPU_HEADER_REMAINDER_SIZE2 = MPU_HEADER_SIZE2 - MPU_LENGTH_FIELD_SIZE2;
6
+ var MPU_LENGTH_FIELD_SIZE = 2;
7
+ var MPU_HEADER_REMAINDER_SIZE = MPU_HEADER_SIZE - MPU_LENGTH_FIELD_SIZE;
69
8
  var SOURCE_FEC_PAYLOAD_ID_SIZE = 4;
70
- var PACKET_TYPE_MPU2 = 0;
9
+ var PACKET_TYPE_MPU = 0;
71
10
  var PACKET_TYPE_REPAIR = 3;
72
11
  var MMTP_SIGNALING_PACKET_ID = 0;
73
12
  function parseMMTPHeader(buffer) {
74
- if (buffer.length < MMTP_HEADER_SIZE2) {
13
+ if (buffer.length < MMTP_HEADER_SIZE) {
75
14
  throw new Error(`MMTP packet too small: ${buffer.length} bytes`);
76
15
  }
77
16
  const view2 = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);
@@ -127,7 +66,7 @@ function parseMMTPHeader(buffer) {
127
66
  };
128
67
  }
129
68
  function parseMPUHeader(payload) {
130
- if (payload.length < MPU_HEADER_SIZE2) {
69
+ if (payload.length < MPU_HEADER_SIZE) {
131
70
  throw new Error(`Payload too small for MPU header: ${payload.length} bytes`);
132
71
  }
133
72
  const view2 = new DataView(payload.buffer, payload.byteOffset, payload.byteLength);
@@ -160,15 +99,15 @@ function parseTimedMfuDuHeader(payload, offset) {
160
99
  };
161
100
  }
162
101
  function resolveMfuPayloadLayout(mpu, fragmentType, payload) {
163
- if (mpu.payloadLength < MPU_HEADER_REMAINDER_SIZE2) {
102
+ if (mpu.payloadLength < MPU_HEADER_REMAINDER_SIZE) {
164
103
  return {
165
104
  rejection: {
166
105
  gate: "mpu-payload-length-below-header-remainder",
167
- detail: `payload_length=${mpu.payloadLength} < ${MPU_HEADER_REMAINDER_SIZE2}`
106
+ detail: `payload_length=${mpu.payloadLength} < ${MPU_HEADER_REMAINDER_SIZE}`
168
107
  }
169
108
  };
170
109
  }
171
- const declaredEnd = MPU_LENGTH_FIELD_SIZE2 + mpu.payloadLength;
110
+ const declaredEnd = MPU_LENGTH_FIELD_SIZE + mpu.payloadLength;
172
111
  if (declaredEnd > payload.length) {
173
112
  return {
174
113
  rejection: {
@@ -179,7 +118,7 @@ function resolveMfuPayloadLayout(mpu, fragmentType, payload) {
179
118
  }
180
119
  const hasHeader = fragmentType === 2 && mpu.fragmentationIndicator <= 1;
181
120
  const mfuHeaderSize = mpu.timedFlag ? MFU_DU_HEADER_SIZE_TIMED : MFU_DU_HEADER_SIZE_NONTIMED;
182
- const mfuOffset = MPU_HEADER_SIZE2 + (hasHeader ? mfuHeaderSize : 0);
121
+ const mfuOffset = MPU_HEADER_SIZE + (hasHeader ? mfuHeaderSize : 0);
183
122
  if (mfuOffset >= declaredEnd) {
184
123
  return {
185
124
  rejection: {
@@ -196,44 +135,46 @@ function resolveMfuPayloadLayout(mpu, fragmentType, payload) {
196
135
  }
197
136
  };
198
137
  }
199
- function isEmptyOrExactAltaTrailer(payload, start, end) {
138
+ var LEGACY_TRAILER_EXT_TYPE = 61601;
139
+ var LEGACY_TRAILER_HEADER_SIZE = 4;
140
+ function isEmptyOrExactLegacyTrailer(payload, start, end) {
200
141
  if (start === end)
201
142
  return true;
202
- if (start < 0 || end > payload.length || start + MMTP_EXT_TRAILER_HEADER_SIZE > end) {
143
+ if (start < 0 || end > payload.length || start + LEGACY_TRAILER_HEADER_SIZE > end) {
203
144
  return false;
204
145
  }
205
146
  const view2 = new DataView(payload.buffer, payload.byteOffset + start, end - start);
206
- if (view2.getUint16(0, false) !== MMTP_EXT_TYPE_ALTA_AUTH)
147
+ if (view2.getUint16(0, false) !== LEGACY_TRAILER_EXT_TYPE)
207
148
  return false;
208
149
  const authLength = view2.getUint16(2, false);
209
- return start + MMTP_EXT_TRAILER_HEADER_SIZE + authLength === end;
150
+ return start + LEGACY_TRAILER_HEADER_SIZE + authLength === end;
210
151
  }
211
152
  function resolveDeclaredTrailers(payload, declaredEnd, fecType, options) {
212
153
  if (declaredEnd > payload.length)
213
154
  return null;
214
155
  if (options?.skipFecId) {
215
- return isEmptyOrExactAltaTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false } : null;
156
+ return isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length) ? { hasFecId: false } : null;
216
157
  }
217
158
  if (fecType === 1) {
218
159
  const fecStart = payload.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
219
- if (fecStart < declaredEnd || !isEmptyOrExactAltaTrailer(payload, declaredEnd, fecStart)) {
160
+ if (fecStart < declaredEnd || !isEmptyOrExactLegacyTrailer(payload, declaredEnd, fecStart)) {
220
161
  return null;
221
162
  }
222
163
  return { hasFecId: true };
223
164
  }
224
165
  if (fecType !== 0)
225
166
  return null;
226
- if (isEmptyOrExactAltaTrailer(payload, declaredEnd, payload.length)) {
167
+ if (isEmptyOrExactLegacyTrailer(payload, declaredEnd, payload.length)) {
227
168
  return { hasFecId: false };
228
169
  }
229
170
  return null;
230
171
  }
231
172
  function planMfuExtraction(mmtpPacket, options, parsedHeader) {
232
- if (mmtpPacket.length < MMTP_HEADER_SIZE2 + MPU_HEADER_SIZE2) {
173
+ if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE) {
233
174
  return {
234
175
  rejection: {
235
176
  gate: "packet-shorter-than-mmtp-plus-mpu-header",
236
- detail: `${mmtpPacket.length} bytes < ${MMTP_HEADER_SIZE2 + MPU_HEADER_SIZE2}`
177
+ detail: `${mmtpPacket.length} bytes < ${MMTP_HEADER_SIZE + MPU_HEADER_SIZE}`
237
178
  }
238
179
  };
239
180
  }
@@ -252,7 +193,7 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
252
193
  };
253
194
  }
254
195
  }
255
- if (header.packetType !== PACKET_TYPE_MPU2) {
196
+ if (header.packetType !== PACKET_TYPE_MPU) {
256
197
  return {
257
198
  rejection: {
258
199
  gate: "not-an-mpu-packet",
@@ -261,11 +202,11 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
261
202
  };
262
203
  }
263
204
  const payload = mmtpPacket.subarray(header.headerLength);
264
- if (payload.length < MPU_HEADER_SIZE2) {
205
+ if (payload.length < MPU_HEADER_SIZE) {
265
206
  return {
266
207
  rejection: {
267
208
  gate: "payload-shorter-than-mpu-header",
268
- detail: `${payload.length} bytes < ${MPU_HEADER_SIZE2}`
209
+ detail: `${payload.length} bytes < ${MPU_HEADER_SIZE}`
269
210
  }
270
211
  };
271
212
  }
@@ -296,7 +237,7 @@ function planMfuExtraction(mmtpPacket, options, parsedHeader) {
296
237
  return {
297
238
  rejection: {
298
239
  gate: "declared-trailers-unresolved",
299
- detail: `trailer bytes [${layout.dataEnd}, ${payload.length}) are neither empty nor an exact ALTA trailer (fecType=${header.fecType})`
240
+ detail: `trailer bytes [${layout.dataEnd}, ${payload.length}) are neither empty nor an exact legacy authenticator trailer (fecType=${header.fecType})`
300
241
  }
301
242
  };
302
243
  }
@@ -312,8 +253,8 @@ function extractPlannedMfu(mmtpPacket, result) {
312
253
  const mfuDuHeaderPresent = layout.hasMfuDuHeader;
313
254
  const mfuOffset = layout.mfuOffset;
314
255
  const dataEnd = layout.dataEnd;
315
- const mfuDuHeader = mfuDuHeaderPresent && mpu.timedFlag === 1 ? parseTimedMfuDuHeader(payload, MPU_HEADER_SIZE2) : null;
316
- const itemId = mfuDuHeaderPresent && mpu.timedFlag === 0 ? new DataView(payload.buffer, payload.byteOffset + MPU_HEADER_SIZE2, 4).getUint32(0, false) : null;
256
+ const mfuDuHeader = mfuDuHeaderPresent && mpu.timedFlag === 1 ? parseTimedMfuDuHeader(payload, MPU_HEADER_SIZE) : null;
257
+ const itemId = mfuDuHeaderPresent && mpu.timedFlag === 0 ? new DataView(payload.buffer, payload.byteOffset + MPU_HEADER_SIZE, 4).getUint32(0, false) : null;
317
258
  const data = payload.subarray(mfuOffset, dataEnd);
318
259
  const fecPayloadId = trailerLayout.hasFecId ? {
319
260
  ssId: new DataView(mmtpPacket.buffer, mmtpPacket.byteOffset + mmtpPacket.length - SOURCE_FEC_PAYLOAD_ID_SIZE, SOURCE_FEC_PAYLOAD_ID_SIZE).getUint32(0, false)
@@ -321,17 +262,17 @@ function extractPlannedMfu(mmtpPacket, result) {
321
262
  return { header, mpu, fragmentType, data, mfuDuHeader, itemId, fecPayloadId };
322
263
  }
323
264
  function sourceFecPayloadIdOf(mmtpPacket, header) {
324
- if (mmtpPacket.length < MMTP_HEADER_SIZE2 + MPU_HEADER_SIZE2)
265
+ if (mmtpPacket.length < MMTP_HEADER_SIZE + MPU_HEADER_SIZE)
325
266
  return null;
326
- if (header.packetType !== PACKET_TYPE_MPU2)
267
+ if (header.packetType !== PACKET_TYPE_MPU)
327
268
  return null;
328
269
  const payload = mmtpPacket.subarray(header.headerLength);
329
- if (payload.length < MPU_HEADER_SIZE2)
270
+ if (payload.length < MPU_HEADER_SIZE)
330
271
  return null;
331
272
  const payloadLength = payload[0] << 8 | payload[1];
332
- if (payloadLength < MPU_HEADER_REMAINDER_SIZE2)
273
+ if (payloadLength < MPU_HEADER_REMAINDER_SIZE)
333
274
  return null;
334
- const declaredEnd = MPU_LENGTH_FIELD_SIZE2 + payloadLength;
275
+ const declaredEnd = MPU_LENGTH_FIELD_SIZE + payloadLength;
335
276
  if (!resolveDeclaredTrailers(payload, declaredEnd, header.fecType)?.hasFecId)
336
277
  return null;
337
278
  const off = mmtpPacket.length - SOURCE_FEC_PAYLOAD_ID_SIZE;
@@ -339,7 +280,6 @@ function sourceFecPayloadIdOf(mmtpPacket, header) {
339
280
  ssId: (mmtpPacket[off] << 24 | mmtpPacket[off + 1] << 16 | mmtpPacket[off + 2] << 8 | mmtpPacket[off + 3]) >>> 0
340
281
  };
341
282
  }
342
- var extractAltaTrailer2 = extractAltaTrailer;
343
283
  var REPAIR_FEC_PID_SIZE = 13;
344
284
  function readRepairFecPayloadIdFields(mmtpPacket, parsedHeader) {
345
285
  let header;
@@ -419,7 +359,6 @@ function serial32Precedes(a, b) {
419
359
 
420
360
  // ../mmt-base/dist/fec-block-profile.js
421
361
  var FEC_BLOCK_PROFILES = Object.freeze([
422
- "k-padded-v1",
423
362
  "iso-ssbg1-v1"
424
363
  ]);
425
364
 
@@ -4526,7 +4465,6 @@ var CmafBlockAssembler = class {
4526
4465
  failedBlocks: 0
4527
4466
  };
4528
4467
  this.#config = {
4529
- k: config.k,
4530
4468
  timescale: config.timescale ?? 1e6,
4531
4469
  trackId: config.trackId ?? 1,
4532
4470
  trackType: config.trackType,
@@ -6712,6 +6650,21 @@ var FecReleaseSequencer = class {
6712
6650
  this.#streams.delete(key);
6713
6651
  }
6714
6652
  }
6653
+ /**
6654
+ * The packet's FEC ended, so no block will resolve a held gap: release its
6655
+ * frames in order, each gap stalled as a discontinuity, and forget its
6656
+ * streams, so FEC configured on it again starts from a fresh one.
6657
+ */
6658
+ endPacket(packetId) {
6659
+ for (const [key, stream] of this.#streams) {
6660
+ if (stream.packetId !== packetId) continue;
6661
+ while (stream.buf.length > 0 && stream.last !== null) {
6662
+ stream.discontinuity = true;
6663
+ this.#drain(stream);
6664
+ }
6665
+ this.#streams.delete(key);
6666
+ }
6667
+ }
6715
6668
  discardPacket(packetId) {
6716
6669
  for (const [key, stream] of this.#streams) {
6717
6670
  if (stream.packetId !== packetId) continue;
@@ -7094,6 +7047,13 @@ var MmtpContainerParser = class _MmtpContainerParser {
7094
7047
  markFecDiscontinuity(packetId, catalogTrackName) {
7095
7048
  this.#fecSequencer?.markDiscontinuity(this.#streamKey(packetId, catalogTrackName));
7096
7049
  }
7050
+ /**
7051
+ * The FEC of a packet ID ended: release the frames the FEC release gate
7052
+ * holds for it in order, each gap stalled, and forget its gated streams.
7053
+ */
7054
+ endFecRelease(packetId) {
7055
+ this.#fecSequencer?.endPacket(packetId);
7056
+ }
7097
7057
  /**
7098
7058
  * MPU and data-unit identity of one MMTP packet, parsed in place (no copy,
7099
7059
  * no reassembly). Null for non-MPU packets and packets that do not parse.
@@ -7274,7 +7234,7 @@ var MmtpContainerParser = class _MmtpContainerParser {
7274
7234
  const parsed = preParsed !== void 0 && preParsed.skipFecPayloadId === (options?.skipFecPayloadId === true) ? preParsed : this.parsePacket(packet, options);
7275
7235
  if (!parsed) return this.#drop("header-parse-failed");
7276
7236
  const info = parsed.info;
7277
- if (info.packetType !== PACKET_TYPE_MPU2) {
7237
+ if (info.packetType !== PACKET_TYPE_MPU) {
7278
7238
  return {
7279
7239
  kind: info.isRepair ? "repair" : "non-media",
7280
7240
  packet: info,
@@ -7283,10 +7243,8 @@ var MmtpContainerParser = class _MmtpContainerParser {
7283
7243
  }
7284
7244
  if (info.fecPayloadId !== null && this.#sourceSymbolCb) {
7285
7245
  const rawSymbol = packet.subarray(0, packet.length - 4);
7286
- const altaTrailer = extractAltaTrailer2(packet);
7287
- const alta = altaTrailer ? { auth: altaTrailer.auth, payloadEnd: altaTrailer.signedEnd } : void 0;
7288
7246
  try {
7289
- this.#sourceSymbolCb(info.packetId, info.fecPayloadId.ssId, rawSymbol, alta);
7247
+ this.#sourceSymbolCb(info.packetId, info.fecPayloadId.ssId, rawSymbol);
7290
7248
  } catch {
7291
7249
  }
7292
7250
  }
@@ -8489,6 +8447,8 @@ var MmtpRouter = class {
8489
8447
  */
8490
8448
  #onPublisherRestart;
8491
8449
  #publisherRestarts = 0;
8450
+ /** Inits delivered with no onTrackInit handler for their packetId (MOQT-01). */
8451
+ #unmappedInitDeliveries = 0;
8492
8452
  // FEC Payload IDs left unread because their (owner) packetId had no
8493
8453
  // configured fec.blockProfile (see #noteUnreadableFecPayloadId).
8494
8454
  #fecPayloadIdsWithoutProfile = 0;
@@ -8685,15 +8645,24 @@ var MmtpRouter = class {
8685
8645
  return NO_FEC_GEOMETRY_HORIZON;
8686
8646
  }
8687
8647
  const blockSpanMs = fec.interleaveDepthMsForPacket(packetId);
8648
+ const blockLifetimeMs = fec.blockLifetimeMsForPacket(packetId);
8649
+ if (blockSpanMs === void 0 || blockLifetimeMs === void 0) return NO_FEC_GEOMETRY_HORIZON;
8688
8650
  if (blockSpanMs === 0) return NO_BLOCK_SPAN_HORIZON;
8689
8651
  return {
8690
8652
  kind: "fec-horizon",
8691
- retentionMs: duplicateRetentionMs({
8692
- blockSpanMs,
8693
- blockLifetimeMs: fec.blockLifetimeMsForPacket(packetId)
8694
- })
8653
+ retentionMs: duplicateRetentionMs({ blockSpanMs, blockLifetimeMs })
8695
8654
  };
8696
8655
  }
8656
+ /**
8657
+ * Init segments delivered for a packetId with no `onTrackInit` handler
8658
+ * since construction, whether the deprecated aggregate `onInitSegment`
8659
+ * callback then received them or nothing did. A supported deployment reads
8660
+ * 0 here; a non-zero value is the evidence that blocks removing the
8661
+ * aggregate callback (MOQT-01, BLO-21181).
8662
+ */
8663
+ get unmappedInitDeliveryCount() {
8664
+ return this.#unmappedInitDeliveries;
8665
+ }
8697
8666
  /** Publisher restarts detected on the multicast leg since construction. */
8698
8667
  get publisherRestartCount() {
8699
8668
  return this.#publisherRestarts;
@@ -8781,7 +8750,7 @@ var MmtpRouter = class {
8781
8750
  /** Update MFU reassembly timeout. Source and FEC-recovery paths share the
8782
8751
  * parser's single reassembler (BLO-8151), so one update covers both. */
8783
8752
  setMfuTimeoutMs(ms) {
8784
- if (ms <= 0) throw new Error("[MmtpRouter] mfuTimeoutMs must be > 0");
8753
+ if (ms !== null && ms <= 0) throw new Error("[MmtpRouter] mfuTimeoutMs must be > 0");
8785
8754
  this.#parser.setMfuTimeoutMs(ms);
8786
8755
  }
8787
8756
  /** Update parser frame reordering for unordered multicast delivery.
@@ -8851,7 +8820,15 @@ var MmtpRouter = class {
8851
8820
  onTrackPacket(packetId, cb) {
8852
8821
  this.#trackPacketCallbacks.set(packetId, cb);
8853
8822
  }
8854
- /** Register an init segment callback (ftyp+moov from MMTP MPU metadata). */
8823
+ /**
8824
+ * Register an init segment callback (ftyp+moov from MMTP MPU metadata).
8825
+ * Receives an init only for a packetId with no `onTrackInit` handler.
8826
+ *
8827
+ * @deprecated Use onTrackInit(packetId, cb). Still delivered as a fallback;
8828
+ * removed in the 1.0.0 major, no earlier than one minor release after this
8829
+ * deprecation reaches the `latest` dist-tag (BLO-21181). Count fallback
8830
+ * deliveries with `unmappedInitDeliveryCount`.
8831
+ */
8855
8832
  onInitSegment(cb) {
8856
8833
  this.#onInitSegment = cb;
8857
8834
  }
@@ -8865,17 +8842,16 @@ var MmtpRouter = class {
8865
8842
  * When active, source frames are buffered per FEC block and emitted as
8866
8843
  * multi-sample CMAF segments instead of per-frame callbacks. */
8867
8844
  enableMseAssembler(packetId, config, catalogTrackName) {
8868
- const k = this.#kForPacket(packetId);
8869
8845
  const assemblerKey = this.#mseAssemblerKey(packetId, catalogTrackName);
8870
8846
  const previous = this.#mseAssemblers.get(assemblerKey);
8871
8847
  if (previous) {
8872
8848
  previous.flush();
8873
8849
  previous.dispose();
8874
8850
  }
8875
- const assembler = new CmafBlockAssembler({ ...config, k });
8851
+ const assembler = new CmafBlockAssembler(config);
8876
8852
  this.#mseAssemblers.set(assemblerKey, assembler);
8877
8853
  console.log(
8878
- `[MmtpRouter] MSE assembler enabled for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (K=${k}, ${config.trackType})`
8854
+ `[MmtpRouter] MSE assembler enabled for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (${config.trackType})`
8879
8855
  );
8880
8856
  return assembler;
8881
8857
  }
@@ -8984,6 +8960,21 @@ var MmtpRouter = class {
8984
8960
  }
8985
8961
  this.#fecMappersByPacketId.set(packetId, mapper);
8986
8962
  }
8963
+ /**
8964
+ * Release the router side of a packetId whose FEC is ending: drop its block
8965
+ * mapper and end its FEC release gating. Frames the gate holds are released
8966
+ * in order, each gap stalled (no block will resolve it), not stranded. Call
8967
+ * before FECManager.releasePacket, while the gate can still read its blocks.
8968
+ */
8969
+ releaseFecPacket(packetId) {
8970
+ this.#fecMappersByPacketId.delete(packetId);
8971
+ this.#withDeferredFecPokes(() => {
8972
+ this.#parser.endFecRelease(packetId);
8973
+ for (const [key, poke] of this.#pendingFecPokes) {
8974
+ if (poke.packetId === packetId) this.#pendingFecPokes.delete(key);
8975
+ }
8976
+ });
8977
+ }
8987
8978
  registerManifestTrack(context) {
8988
8979
  if (!this.#manifestVerifier) throw new Error("manifest verifier is not configured");
8989
8980
  this.#manifestVerifier.registerTrack(context);
@@ -9103,87 +9094,21 @@ var MmtpRouter = class {
9103
9094
  this.#noteUnreadableFecPayloadId(ownerPacketId, "repair");
9104
9095
  return;
9105
9096
  }
9106
- if (this.#isIsoPacket(ownerPacketId)) {
9107
- this.#handleIsoRepair(ownerPacketId, catalogTrackName, parsed, "moq");
9108
- return;
9109
- }
9110
- const repairSbn = this.#deriveRepairSbn(parsed.ssStart, parsed.ssbLength, ownerPacketId);
9111
- if (repairSbn === null) return;
9112
- const repairEsi = this.#kForPacket(ownerPacketId) + parsed.rsId;
9113
- if (!this.#feedFecTransportSymbol(
9114
- ownerPacketId,
9115
- repairSbn,
9116
- repairEsi,
9117
- parsed.symbolData,
9118
- "moq",
9119
- catalogTrackName
9120
- )) return;
9121
- const recovered = catalogTrackName === void 0 ? this.#fecManager.feedRepairSymbol(
9122
- ownerPacketId,
9123
- parsed.ssStart,
9124
- parsed.ssbLength,
9125
- parsed.rsId,
9126
- parsed.symbolData
9127
- ) : this.#fecManager.feedRepairSymbol(
9128
- ownerPacketId,
9129
- parsed.ssStart,
9130
- parsed.ssbLength,
9131
- parsed.rsId,
9132
- parsed.symbolData,
9133
- catalogTrackName
9134
- );
9135
- if (recovered) {
9136
- const alreadyCompleted = catalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId) : this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId, catalogTrackName);
9137
- if (catalogTrackName === void 0) {
9138
- this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId);
9139
- } else {
9140
- this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId, catalogTrackName);
9141
- }
9142
- if (!alreadyCompleted) {
9143
- this.#fecManager.countRecovery(ownerPacketId, repairSbn, catalogTrackName);
9144
- if (catalogTrackName === void 0) {
9145
- this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId);
9146
- } else {
9147
- this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId, catalogTrackName);
9148
- }
9149
- this.#routeRecoveredBlock(
9150
- repairSbn,
9151
- recovered,
9152
- ownerPacketId,
9153
- catalogTrackName
9154
- );
9155
- }
9156
- }
9097
+ this.#handleIsoRepair(ownerPacketId, catalogTrackName, parsed, "moq");
9157
9098
  }
9158
9099
  }
9159
- // ── SBN/ESI derivation ──────────────────────────────────────────
9160
- #kForPacket(packetId) {
9161
- if (packetId != null)
9162
- return this.#fecManager?.kForPacket?.(packetId) ?? this.#fecMappersByPacketId.get(packetId)?.k ?? this.#fecManager?.k ?? 4;
9163
- return this.#defaultFecMapper?.k ?? this.#fecManager?.k ?? 4;
9164
- }
9100
+ // ── Packet FEC geometry and block profile ───────────────────────
9165
9101
  #symbolSizeForPacket(packetId) {
9166
- if (packetId != null) return this.#fecManager?.symbolSizeForPacket?.(packetId) ?? this.#fecManager?.symbolSize ?? 0;
9102
+ if (packetId != null) return this.#fecManager?.symbolSizeForPacket?.(packetId) ?? 0;
9167
9103
  return this.#fecManager?.symbolSize ?? 0;
9168
9104
  }
9169
- /** Derive SBN/ESI from SS_ID using packet-scoped FEC geometry. */
9170
- #deriveSbnEsi(ssId, packetId) {
9171
- const mapper = packetId == null ? this.#defaultFecMapper : this.#fecMappersByPacketId.get(packetId) ?? null;
9172
- if (mapper) return mapper.fromSsId(ssId);
9173
- const k = this.#kForPacket(packetId);
9174
- return { sbn: Math.floor(ssId / k), esi: ssId % k };
9175
- }
9176
- #deriveRepairSbn(ssStart, ssbLength, packetId) {
9177
- const k = this.#kForPacket(packetId);
9178
- if (ssbLength <= 0 || ssbLength > k || ssStart % k !== 0) return null;
9179
- return Math.floor(ssStart / k);
9180
- }
9181
9105
  /**
9182
9106
  * The configured block profile of a packetId, or undefined while it is
9183
9107
  * unconfigured. With an FEC manager its per-packet configuration is the
9184
9108
  * only source. A router without one still recovers symbols through its
9185
9109
  * registered mapper, built with the catalog's explicit profile: the
9186
- * packet's own mapper, else the default one (the #deriveSbnEsi rule).
9110
+ * packet's own mapper, else the default one. A NullBlockMapper (a stream
9111
+ * without an FEC instance) states none.
9187
9112
  */
9188
9113
  #configuredBlockProfile(packetId) {
9189
9114
  if (this.#fecManager) return this.#fecManager.blockProfileForPacket(packetId);
@@ -9191,9 +9116,10 @@ var MmtpRouter = class {
9191
9116
  return mapper?.blockProfile ?? void 0;
9192
9117
  }
9193
9118
  /**
9194
- * The block profile an FEC coordinate of `packetId` is read under. Throws
9195
- * while none is configured: the two profiles carry identical wire tuples
9196
- * with different block math, so there is no default to fall back to.
9119
+ * The block profile an FEC coordinate of `packetId` is read under:
9120
+ * `iso-ssbg1-v1`, the only one (`k-padded-v1` is retired and refused).
9121
+ * Throws while none is configured: such a packet has no FEC geometry, and
9122
+ * nothing is inferred from the wire or defaulted.
9197
9123
  * Packet ingress leaves such a packet's FEC Payload ID unread first
9198
9124
  * (#noteUnreadableFecPayloadId); a throw here is a wiring fault on a path
9199
9125
  * that cannot hold an unconfigured packet.
@@ -9207,8 +9133,16 @@ var MmtpRouter = class {
9207
9133
  }
9208
9134
  return profile;
9209
9135
  }
9210
- #isIsoPacket(packetId) {
9211
- return this.#blockProfileFor(packetId) === "iso-ssbg1-v1";
9136
+ /**
9137
+ * The block coordinates (SS_Start, ESI) of an FEC source: range membership
9138
+ * in a block a repair already stated (ISO/IEC 23008-1 C.5.3). Null while no
9139
+ * repair has stated its block, while its packetId has no configured block
9140
+ * profile, and without an FEC manager: SS_ID alone locates no block, so
9141
+ * nothing is derived from it.
9142
+ */
9143
+ #locateFecSource(packetId, catalogTrackName, ssId) {
9144
+ if (this.#configuredBlockProfile(packetId) === void 0) return null;
9145
+ return this.#fecManager?.locateIsoSource?.(packetId, catalogTrackName, ssId) ?? null;
9212
9146
  }
9213
9147
  /**
9214
9148
  * Explicit refusal to read an FEC Payload ID: its (owner) packetId has no
@@ -9227,21 +9161,20 @@ var MmtpRouter = class {
9227
9161
  }
9228
9162
  }
9229
9163
  /**
9230
- * The release-gate anchor of a recovered symbol: its block (SBN) under
9231
- * k-padded-v1, its own SS_ID under iso-ssbg1-v1, where a frame is gated by
9232
- * the SS_IDs between it and the last released frame.
9164
+ * The release-gate anchor of a recovered symbol: its own SS_ID, SS_Start +
9165
+ * ESI modulo 2^32 (C.5.2), where a frame is gated by the SS_IDs between it
9166
+ * and the last released frame.
9233
9167
  */
9234
- #fecAnchorForRecovered(ownerPacketId, blockId, index) {
9235
- return ownerPacketId !== void 0 && this.#isIsoPacket(ownerPacketId) ? serial32Add(blockId, index) : blockId;
9168
+ #fecAnchorForRecovered(blockStart, index) {
9169
+ return serial32Add(blockStart, index);
9236
9170
  }
9237
9171
  /**
9238
9172
  * One iso-ssbg1-v1 repair symbol (ISO/IEC 23008-1 C.5.3). It states the
9239
9173
  * block `[SS_Start, SS_Start + SSB_length)`; repair ESI = SSB_length +
9240
9174
  * RS_ID (K' = SSB_length). The held sources it placed (and those of a
9241
9175
  * repair-less span in front of it) are fed as first-arrival sources, then
9242
- * the repair, the order they had on the wire, so a loss-free block is clean
9243
- * on its repair exactly as under k-padded-v1. A repair contradicting a known
9244
- * block is dropped.
9176
+ * the repair, the order they had on the wire, so a loss-free block completes
9177
+ * clean on its repair. A repair contradicting a known block is dropped.
9245
9178
  */
9246
9179
  #handleIsoRepair(ownerPacketId, catalogTrackName, repair, source) {
9247
9180
  const fec = this.#fecManager;
@@ -9308,7 +9241,7 @@ var MmtpRouter = class {
9308
9241
  }
9309
9242
  if (payload.oversized) continue;
9310
9243
  const alreadyCompleted = fec.isBlockCompleted(blockStart, ownerPacketId, catalogTrackName);
9311
- const recovered = fec.feedSourceSymbol(ownerPacketId, ssId, payload.symbolData, void 0, catalogTrackName);
9244
+ const recovered = fec.feedSourceSymbol(ownerPacketId, ssId, payload.symbolData, catalogTrackName);
9312
9245
  if (!recovered || alreadyCompleted) continue;
9313
9246
  fec.cancelBlockTimeout(blockStart, ownerPacketId, catalogTrackName);
9314
9247
  fec.countRecovery(ownerPacketId, blockStart, catalogTrackName);
@@ -9333,7 +9266,8 @@ var MmtpRouter = class {
9333
9266
  return null;
9334
9267
  }
9335
9268
  /** Route a recovered FEC block through the parser + dedup pipeline.
9336
- * Sync WASM decoders return K fixed-width source symbols concatenated. */
9269
+ * Sync WASM decoders return the block's K' = SSB_length fixed-width
9270
+ * ssbg_mode1 source symbols concatenated. */
9337
9271
  routeRecoveredBlock(blockId, data, packetId, catalogTrackName) {
9338
9272
  this.#routeRecoveredBlock(blockId, data, packetId, catalogTrackName);
9339
9273
  }
@@ -9801,29 +9735,19 @@ var MmtpRouter = class {
9801
9735
  resolvedLoss: (packetId, catalogTrackName, fromSbn, toSbn, releasedSbn) => {
9802
9736
  const fec = this.#fecManager;
9803
9737
  if (!fec?.blockResolution) return [];
9804
- if (this.#isIsoPacket(packetId)) {
9805
- const head = fromSbn === releasedSbn ? toSbn : fromSbn;
9806
- return fec.isoSpanResolution?.(packetId, catalogTrackName, releasedSbn, head) ?? null;
9807
- }
9808
- const highest = fec.highestSbn?.(packetId, catalogTrackName);
9809
- const lost = [];
9810
- for (let sbn = fromSbn; sbn <= toSbn; sbn++) {
9811
- const resolution = fec.blockResolution(sbn, packetId, catalogTrackName);
9812
- if (resolution === "pending") return null;
9813
- if (resolution === "failed") {
9814
- lost.push(sbn);
9815
- } else if (resolution === "untracked") {
9816
- if (sbn === releasedSbn) continue;
9817
- if (highest === void 0 || sbn > highest) return null;
9818
- lost.push(sbn);
9819
- }
9820
- }
9821
- return lost;
9738
+ const head = fromSbn === releasedSbn ? toSbn : fromSbn;
9739
+ return fec.isoSpanResolution?.(packetId, catalogTrackName, releasedSbn, head) ?? null;
9822
9740
  },
9823
9741
  // The retention window itself: a frame is never still held when a block
9824
9742
  // it waits on retires. Only consulted while resolvedLoss holds a gap,
9825
9743
  // which needs blockResolution, so the check above guarantees the method.
9826
- holdLimitMs: (packetId) => this.#fecManager?.terminalRetentionMsForPacket?.(packetId) ?? Infinity,
9744
+ // A packetId the manager no longer has configured (released) has no
9745
+ // block left to wait on: release its frames now (BLO-45953).
9746
+ holdLimitMs: (packetId) => {
9747
+ const fec = this.#fecManager;
9748
+ if (!fec?.terminalRetentionMsForPacket) return Infinity;
9749
+ return fec.terminalRetentionMsForPacket(packetId) ?? 0;
9750
+ },
9827
9751
  decide: (before, after, lostBlocks, discontinuity) => {
9828
9752
  const decision = this.#decideGap(before, after, lostBlocks, discontinuity);
9829
9753
  this.#onFrameGap?.(decision);
@@ -9885,9 +9809,10 @@ var MmtpRouter = class {
9885
9809
  }
9886
9810
  /**
9887
9811
  * The most media units a gap between two released frames can hold: the
9888
- * FEC blocks from `before`'s SBN to `after`'s, times D, the media units one
9889
- * block touches (ceil(interleaveDepthMs / unit duration), §5.1). Null when
9890
- * either SBN, the unit duration or the catalog interleave is unknown.
9812
+ * FEC blocks between `before`'s anchor and `after`'s, times D, the media
9813
+ * units one block touches (ceil(interleaveDepthMs / unit duration), §5.1).
9814
+ * Null when either anchor, the unit duration or the catalog interleave is
9815
+ * unknown.
9891
9816
  */
9892
9817
  #maxMissingUnits(before, after) {
9893
9818
  const from = before.fecSbn;
@@ -9900,7 +9825,7 @@ var MmtpRouter = class {
9900
9825
  const denominator = BigInt(timing.durationTicks) * 1000n;
9901
9826
  const unitsPerBlock = (numerator + denominator - 1n) / denominator;
9902
9827
  const blocks = BigInt(
9903
- (this.#isIsoPacket(after.packetId) ? serial32Precedes(from, to) ? serial32Distance(from, to) : serial32Distance(to, from) : Math.abs(to - from)) + 1
9828
+ (serial32Precedes(from, to) ? serial32Distance(from, to) : serial32Distance(to, from)) + 1
9904
9829
  );
9905
9830
  const bound = unitsPerBlock * blocks;
9906
9831
  return bound > BigInt(Number.MAX_SAFE_INTEGER) ? null : Number(bound);
@@ -9950,8 +9875,9 @@ var MmtpRouter = class {
9950
9875
  const cb = this.#trackInitCallbacks.get(packetId);
9951
9876
  if (cb) {
9952
9877
  cb(data);
9953
- } else if (this.#onInitSegment) {
9954
- this.#onInitSegment(data);
9878
+ } else {
9879
+ this.#unmappedInitDeliveries++;
9880
+ this.#onInitSegment?.(data);
9955
9881
  }
9956
9882
  console.log(
9957
9883
  `[MmtpRouter] Init delivered for packetId=${packetId}${catalogTrackName === void 0 ? "" : ` track=${catalogTrackName}`} (${data.byteLength}B)`
@@ -9993,9 +9919,9 @@ var MmtpRouter = class {
9993
9919
  if (!info.isRepair && this.#manifestVerifier && !manifestAdmitted) {
9994
9920
  let identity = manifestIdentity;
9995
9921
  if (!identity && info.fecPayloadId && !fecUnreadable && (this.#resolveManifestIdentityForRoute || this.#resolveManifestIdentity)) {
9996
- const coordinates = this.#deriveSbnEsi(info.fecPayloadId.ssId, info.packetId);
9997
9922
  const catalogTrackName = catalogTrackNameForPacket(ingress, info.packetId);
9998
- identity = (this.#resolveManifestIdentityForRoute ? this.#resolveManifestIdentityForRoute({
9923
+ const coordinates = this.#locateFecSource(info.packetId, catalogTrackName, info.fecPayloadId.ssId);
9924
+ identity = coordinates === null ? void 0 : (this.#resolveManifestIdentityForRoute ? this.#resolveManifestIdentityForRoute({
9999
9925
  packetId: info.packetId,
10000
9926
  sbn: coordinates.sbn,
10001
9927
  esi: coordinates.esi,
@@ -10047,79 +9973,7 @@ var MmtpRouter = class {
10047
9973
  this.#noteUnreadableFecPayloadId(ownerPacketId, "repair");
10048
9974
  return;
10049
9975
  }
10050
- if (this.#isIsoPacket(ownerPacketId)) {
10051
- this.#handleIsoRepair(ownerPacketId, catalogTrackNameForPacket(ingress, ownerPacketId), repair, source);
10052
- return;
10053
- }
10054
- const repairSbn = this.#deriveRepairSbn(repair.ssStart, repair.ssbLength, ownerPacketId);
10055
- if (repairSbn === null) return;
10056
- const repairEsi = this.#kForPacket(ownerPacketId) + repair.rsId;
10057
- if (!this.#feedFecTransportSymbol(
10058
- ownerPacketId,
10059
- repairSbn,
10060
- repairEsi,
10061
- repair.symbolData,
10062
- source,
10063
- catalogTrackNameForPacket(ingress, ownerPacketId)
10064
- )) return;
10065
- const repairCatalogTrackName = catalogTrackNameForPacket(ingress, ownerPacketId);
10066
- if (repairCatalogTrackName === void 0) {
10067
- this.#fecManager.noteBlockActivity?.(repairSbn, ownerPacketId);
10068
- } else {
10069
- this.#fecManager.noteBlockActivity?.(
10070
- repairSbn,
10071
- ownerPacketId,
10072
- repairCatalogTrackName
10073
- );
10074
- }
10075
- const recovered = repairCatalogTrackName === void 0 ? this.#fecManager.feedRepairSymbol(
10076
- ownerPacketId,
10077
- repair.ssStart,
10078
- repair.ssbLength,
10079
- repair.rsId,
10080
- repair.symbolData
10081
- ) : this.#fecManager.feedRepairSymbol(
10082
- ownerPacketId,
10083
- repair.ssStart,
10084
- repair.ssbLength,
10085
- repair.rsId,
10086
- repair.symbolData,
10087
- repairCatalogTrackName
10088
- );
10089
- if (recovered) {
10090
- const alreadyCompleted = repairCatalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(repairSbn, ownerPacketId) : this.#fecManager.isBlockCompleted(
10091
- repairSbn,
10092
- ownerPacketId,
10093
- repairCatalogTrackName
10094
- );
10095
- if (repairCatalogTrackName === void 0) {
10096
- this.#fecManager.cancelBlockTimeout(repairSbn, ownerPacketId);
10097
- } else {
10098
- this.#fecManager.cancelBlockTimeout(
10099
- repairSbn,
10100
- ownerPacketId,
10101
- repairCatalogTrackName
10102
- );
10103
- }
10104
- if (!alreadyCompleted) {
10105
- this.#fecManager.countRecovery(ownerPacketId, repairSbn, repairCatalogTrackName);
10106
- if (repairCatalogTrackName === void 0) {
10107
- this.#fecManager.markBlockCompleted(repairSbn, ownerPacketId);
10108
- } else {
10109
- this.#fecManager.markBlockCompleted(
10110
- repairSbn,
10111
- ownerPacketId,
10112
- repairCatalogTrackName
10113
- );
10114
- }
10115
- this.#routeRecoveredBlock(
10116
- repairSbn,
10117
- recovered,
10118
- ownerPacketId,
10119
- catalogTrackNameForPacket(ingress, ownerPacketId)
10120
- );
10121
- }
10122
- }
9976
+ this.#handleIsoRepair(ownerPacketId, catalogTrackNameForPacket(ingress, ownerPacketId), repair, source);
10123
9977
  }
10124
9978
  } else {
10125
9979
  if (this.#classifyPacketId(info.packetId) === null) return;
@@ -10143,8 +9997,8 @@ var MmtpRouter = class {
10143
9997
  }
10144
9998
  const duplicates = this.#stream(info.packetId, catalogTrackName).duplicates;
10145
9999
  const fecPayloadId = fecUnreadable ? null : info.fecPayloadId;
10146
- const isoSource = this.#fecManager !== null && fecPayloadId != null && this.#isIsoPacket(info.packetId);
10147
- const coords = this.#fecManager && fecPayloadId ? isoSource ? this.#fecManager.locateIsoSource?.(info.packetId, catalogTrackName, fecPayloadId.ssId) ?? void 0 : this.#deriveSbnEsi(fecPayloadId.ssId, info.packetId) : void 0;
10000
+ const fecSource = this.#fecManager !== null && fecPayloadId != null;
10001
+ const coords = fecSource && fecPayloadId ? this.#locateFecSource(info.packetId, catalogTrackName, fecPayloadId.ssId) ?? void 0 : void 0;
10148
10002
  duplicates.advance(coords?.sbn);
10149
10003
  if (source === "multicast" && !overlapCopy && !releasedFromQuarantine && catalogTrackName !== void 0 && duplicates.predatesHorizon(info.sequenceNumber, fecPayloadId?.ssId)) {
10150
10004
  this.#publisherRestarts++;
@@ -10159,9 +10013,8 @@ var MmtpRouter = class {
10159
10013
  }
10160
10014
  if (this.#fecManager && fecPayloadId && coords) {
10161
10015
  const fecId = fecPayloadId;
10162
- const symbolSize = this.#symbolSizeForPacket(info.packetId);
10163
10016
  const rawSymbol = packet.subarray(0, packet.length - 4);
10164
- const oversized = isoSource ? !(this.#fecManager.isoSourceFits?.(info.packetId, rawSymbol.length) ?? false) : symbolSize > 0 && rawSymbol.length > symbolSize;
10017
+ const oversized = !(this.#fecManager.isoSourceFits?.(info.packetId, rawSymbol.length) ?? false);
10165
10018
  let overlapBlockCompleted = false;
10166
10019
  if (overlapCopy) {
10167
10020
  overlapBlockCompleted = catalogTrackName === void 0 ? this.#fecManager.isBlockCompleted(coords.sbn, info.packetId) : this.#fecManager.isBlockCompleted(
@@ -10196,7 +10049,7 @@ var MmtpRouter = class {
10196
10049
  }
10197
10050
  parseSourceSymbol = (overlapCopy ? !overlapBlockCompleted : sourceSymbolAccepted) && !duplicates.parsedSymbols.has(fecId.ssId);
10198
10051
  fecInfo = { sbn: coords.sbn, esi: coords.esi, oversized };
10199
- } else if (isoSource && this.#fecManager && fecPayloadId) {
10052
+ } else if (fecSource && this.#fecManager && fecPayloadId) {
10200
10053
  const ssId = fecPayloadId.ssId;
10201
10054
  if (overlapCopy) {
10202
10055
  parseSourceSymbol = !duplicates.parsedSymbols.has(ssId);
@@ -10230,12 +10083,13 @@ var MmtpRouter = class {
10230
10083
  this.#feedViaParser(packet, info, fecInfo, {
10231
10084
  source,
10232
10085
  catalogTrackName,
10233
- ...isoSource && info.fecPayloadId ? { fecSbn: info.fecPayloadId.ssId } : fecInfo === void 0 ? {} : { fecSbn: fecInfo.sbn }
10086
+ // An FEC source frame is anchored by its own SS_ID (C.5.2).
10087
+ ...fecSource && fecPayloadId ? { fecSbn: fecPayloadId.ssId } : {}
10234
10088
  }, parsed);
10235
10089
  }
10236
10090
  if (this.#classifyPacketId(info.packetId) === null) return;
10237
- if (this.#fecManager && fecPayloadId && sourceSymbolAccepted && sourceSymbolTrackable) {
10238
- const { sbn, esi } = isoSource && coords ? coords : this.#deriveSbnEsi(fecPayloadId.ssId, info.packetId);
10091
+ if (this.#fecManager && fecPayloadId && coords && sourceSymbolAccepted && sourceSymbolTrackable) {
10092
+ const { sbn, esi } = coords;
10239
10093
  if (this.#classifyPacketId(info.packetId) !== null && this.#fecManager.isTrackConfigured?.(info.packetId) !== false) {
10240
10094
  this.#fecManager.trackBlock(
10241
10095
  sbn,
@@ -10256,13 +10110,11 @@ var MmtpRouter = class {
10256
10110
  const recovered = catalogTrackName === void 0 ? this.#fecManager.feedSourceSymbol(
10257
10111
  info.packetId,
10258
10112
  sourceFec.ssId,
10259
- sourceFec.symbolData,
10260
- void 0
10113
+ sourceFec.symbolData
10261
10114
  ) : this.#fecManager.feedSourceSymbol(
10262
10115
  info.packetId,
10263
10116
  sourceFec.ssId,
10264
10117
  sourceFec.symbolData,
10265
- void 0,
10266
10118
  catalogTrackName
10267
10119
  );
10268
10120
  if (recovered) {
@@ -10669,7 +10521,6 @@ var MmtpRouter = class {
10669
10521
  // ── Private: FEC recovery routing ───────────────────────────────
10670
10522
  /** Route WASM-recovered block through appropriate path based on container kind. */
10671
10523
  #routeRecoveredBlock(blockId, recovered, ownerPacketId, catalogTrackName) {
10672
- const k = this.#kForPacket(ownerPacketId);
10673
10524
  const packetSymbolSize = this.#symbolSizeForPacket(ownerPacketId);
10674
10525
  if (ownerPacketId === void 0) {
10675
10526
  throw new Error("[MmtpRouter] a recovered FEC block needs its owner packetId to read its fec.blockProfile");
@@ -10682,7 +10533,6 @@ var MmtpRouter = class {
10682
10533
  }
10683
10534
  const symbolSize = packetSymbolSize;
10684
10535
  const result = processFecBlock(recovered, {
10685
- ...blockProfile === "k-padded-v1" ? { k } : {},
10686
10536
  symbolSize,
10687
10537
  ownerPacketId,
10688
10538
  blockProfile
@@ -10762,8 +10612,7 @@ var MmtpRouter = class {
10762
10612
  const admission = verifier.admitObject(
10763
10613
  {
10764
10614
  ...identity,
10765
- packetId: ownerPacketId,
10766
- ...ownerPacketId !== void 0 && this.#isIsoPacket(ownerPacketId) ? {} : { ssId: blockId * this.#kForPacket(ownerPacketId) + symbol.index }
10615
+ packetId: ownerPacketId
10767
10616
  },
10768
10617
  symbol.rawSymbol,
10769
10618
  () => {
@@ -10866,7 +10715,7 @@ var MmtpRouter = class {
10866
10715
  rapFlag: sym.fragment.rapFlag,
10867
10716
  recovered: true,
10868
10717
  deliveryProvenance,
10869
- fecSbn: this.#fecAnchorForRecovered(ownerPacketId, blockId, sym.index),
10718
+ fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
10870
10719
  ...catalogTrackName === void 0 ? {} : { catalogTrackName }
10871
10720
  });
10872
10721
  continue;
@@ -10978,7 +10827,7 @@ var MmtpRouter = class {
10978
10827
  rapFlag: assembled.rapFlag,
10979
10828
  recovered: true,
10980
10829
  ...assembled.deliveryProvenance === void 0 ? {} : { deliveryProvenance: assembled.deliveryProvenance },
10981
- fecSbn: this.#fecAnchorForRecovered(ownerPacketId, blockId, sym.index),
10830
+ fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
10982
10831
  ...recoveredCatalogTrackName === void 0 ? {} : { catalogTrackName: recoveredCatalogTrackName }
10983
10832
  });
10984
10833
  continue;
@@ -11115,7 +10964,7 @@ var MmtpRouter = class {
11115
10964
  rapFlag: sym.fragment.rapFlag,
11116
10965
  recovered: true,
11117
10966
  deliveryProvenance,
11118
- fecSbn: this.#fecAnchorForRecovered(ownerPacketId, blockId, sym.index),
10967
+ fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
11119
10968
  ...catalogTrackName === void 0 ? {} : { catalogTrackName }
11120
10969
  });
11121
10970
  } else {
@@ -11194,7 +11043,7 @@ var MmtpRouter = class {
11194
11043
  rapFlag: assembled.rapFlag,
11195
11044
  recovered: true,
11196
11045
  deliveryProvenance,
11197
- fecSbn: this.#fecAnchorForRecovered(ownerPacketId, blockId, sym.index),
11046
+ fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
11198
11047
  ...assembled.catalogTrackName === void 0 ? {} : { catalogTrackName: assembled.catalogTrackName }
11199
11048
  });
11200
11049
  }
@@ -11229,7 +11078,7 @@ var MmtpRouter = class {
11229
11078
  ...sym.fragment.sampleNumber === void 0 ? {} : { sampleNumber: sym.fragment.sampleNumber },
11230
11079
  recovered: true,
11231
11080
  deliveryProvenance,
11232
- fecSbn: this.#fecAnchorForRecovered(ownerPacketId, blockId, sym.index),
11081
+ fecSbn: this.#fecAnchorForRecovered(blockId, sym.index),
11233
11082
  ...catalogTrackName === void 0 ? {} : { catalogTrackName }
11234
11083
  });
11235
11084
  continue;