@blockcast/mmt-container 0.1.0 → 0.3.0-main.d9354616fdf2

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 (799) hide show
  1. package/README.md +524 -0
  2. package/dist/.build-stamp +0 -0
  3. package/dist/__tests__/test-utils.d.ts +71 -0
  4. package/dist/__tests__/test-utils.d.ts.map +1 -0
  5. package/dist/align.d.ts +152 -0
  6. package/dist/align.d.ts.map +1 -0
  7. package/dist/align.js +88 -0
  8. package/dist/align.js.map +7 -0
  9. package/dist/audio-init-parser.d.ts +66 -0
  10. package/dist/audio-init-parser.d.ts.map +1 -0
  11. package/dist/audio-init-parser.js +118 -0
  12. package/dist/audio-init-parser.js.map +7 -0
  13. package/dist/audio-ring-buffer.d.ts +50 -0
  14. package/dist/audio-ring-buffer.d.ts.map +1 -0
  15. package/dist/audio-ring-buffer.js +80 -0
  16. package/dist/audio-ring-buffer.js.map +7 -0
  17. package/dist/authored-timing.d.ts +32 -0
  18. package/dist/authored-timing.d.ts.map +1 -0
  19. package/dist/authored-timing.js +32 -0
  20. package/dist/authored-timing.js.map +7 -0
  21. package/dist/block-policy.d.ts +314 -0
  22. package/dist/block-policy.d.ts.map +1 -0
  23. package/dist/block-policy.js +466 -0
  24. package/dist/block-policy.js.map +7 -0
  25. package/dist/browser-runtime.js +26549 -0
  26. package/dist/browser-runtime.js.map +7 -0
  27. package/dist/carp-catalog.d.ts +429 -0
  28. package/dist/carp-catalog.d.ts.map +1 -0
  29. package/dist/carp-catalog.js +985 -0
  30. package/dist/carp-catalog.js.map +7 -0
  31. package/dist/catalog-fec-params.d.ts +275 -0
  32. package/dist/catalog-fec-params.d.ts.map +1 -0
  33. package/dist/catalog-fec-params.js +702 -0
  34. package/dist/catalog-fec-params.js.map +7 -0
  35. package/dist/catalog-network-source.d.ts +42 -0
  36. package/dist/catalog-network-source.d.ts.map +1 -0
  37. package/dist/catalog-network-source.js +47 -0
  38. package/dist/catalog-network-source.js.map +7 -0
  39. package/dist/catalog-validator.d.ts +18 -0
  40. package/dist/catalog-validator.d.ts.map +1 -0
  41. package/dist/catalog-validator.js +7747 -0
  42. package/dist/catalog-validator.js.map +7 -0
  43. package/dist/cmaf-block-assembler.d.ts +285 -0
  44. package/dist/cmaf-block-assembler.d.ts.map +1 -0
  45. package/dist/cmaf-block-assembler.js +1966 -0
  46. package/dist/cmaf-block-assembler.js.map +7 -0
  47. package/dist/cmaf-group-batcher.d.ts +38 -0
  48. package/dist/cmaf-group-batcher.d.ts.map +1 -0
  49. package/dist/cmaf-group-batcher.js +176 -0
  50. package/dist/cmaf-group-batcher.js.map +7 -0
  51. package/dist/cmcd-producer.d.ts +104 -0
  52. package/dist/cmcd-producer.d.ts.map +1 -0
  53. package/dist/cmcd-producer.js +183 -0
  54. package/dist/cmcd-producer.js.map +7 -0
  55. package/dist/codec-utils.d.ts +384 -0
  56. package/dist/codec-utils.d.ts.map +1 -0
  57. package/dist/codec-utils.js +1546 -0
  58. package/dist/codec-utils.js.map +7 -0
  59. package/dist/conceal-timeline.d.ts +146 -0
  60. package/dist/conceal-timeline.d.ts.map +1 -0
  61. package/dist/conceal-timeline.js +137 -0
  62. package/dist/conceal-timeline.js.map +7 -0
  63. package/dist/delivery-gap.d.ts +75 -0
  64. package/dist/delivery-gap.d.ts.map +1 -0
  65. package/dist/delivery-gap.js +88 -0
  66. package/dist/delivery-gap.js.map +7 -0
  67. package/dist/duplicate-ledger.d.ts +197 -0
  68. package/dist/duplicate-ledger.d.ts.map +1 -0
  69. package/dist/duplicate-ledger.js +226 -0
  70. package/dist/duplicate-ledger.js.map +7 -0
  71. package/dist/fec-codec.d.ts +32 -0
  72. package/dist/fec-codec.d.ts.map +1 -0
  73. package/dist/fec-codec.js +47 -0
  74. package/dist/fec-codec.js.map +7 -0
  75. package/dist/fec-manager.d.ts +583 -0
  76. package/dist/fec-manager.d.ts.map +1 -0
  77. package/dist/fec-manager.js +3899 -0
  78. package/dist/fec-manager.js.map +7 -0
  79. package/dist/fec-starvation-detector.d.ts +59 -0
  80. package/dist/fec-starvation-detector.d.ts.map +1 -0
  81. package/dist/fec-starvation-detector.js +60 -0
  82. package/dist/fec-starvation-detector.js.map +7 -0
  83. package/dist/fec-state.d.ts +131 -0
  84. package/dist/fec-state.d.ts.map +1 -0
  85. package/dist/fec-state.js +87 -0
  86. package/dist/fec-state.js.map +7 -0
  87. package/dist/fec-worker-setup.d.ts +94 -0
  88. package/dist/fec-worker-setup.d.ts.map +1 -0
  89. package/dist/fec-worker-setup.js +673 -0
  90. package/dist/fec-worker-setup.js.map +7 -0
  91. package/dist/fmp4-completion.d.ts +30 -0
  92. package/dist/fmp4-completion.d.ts.map +1 -0
  93. package/dist/fmp4-completion.js +21 -0
  94. package/dist/fmp4-completion.js.map +7 -0
  95. package/dist/fmp4-reader.d.ts +37 -0
  96. package/dist/fmp4-reader.d.ts.map +1 -0
  97. package/dist/fmp4-reader.js +100 -0
  98. package/dist/fmp4-reader.js.map +7 -0
  99. package/dist/index.d.ts +44 -3
  100. package/dist/index.d.ts.map +1 -1
  101. package/dist/index.js +460 -14
  102. package/dist/index.js.map +7 -1
  103. package/dist/iso-block-locator.d.ts +118 -0
  104. package/dist/iso-block-locator.d.ts.map +1 -0
  105. package/dist/iso-block-locator.js +289 -0
  106. package/dist/iso-block-locator.js.map +7 -0
  107. package/dist/iso-bmff-timing.d.ts +78 -0
  108. package/dist/iso-bmff-timing.d.ts.map +1 -0
  109. package/dist/iso-bmff-timing.js +593 -0
  110. package/dist/iso-bmff-timing.js.map +7 -0
  111. package/dist/loc.d.ts +70 -75
  112. package/dist/loc.d.ts.map +1 -1
  113. package/dist/loc.js +106 -192
  114. package/dist/loc.js.map +7 -1
  115. package/dist/manifest-auth-plan.d.ts +30 -0
  116. package/dist/manifest-auth-plan.d.ts.map +1 -0
  117. package/dist/manifest-auth-plan.js +1266 -0
  118. package/dist/manifest-auth-plan.js.map +7 -0
  119. package/dist/media-router.d.ts +262 -0
  120. package/dist/media-router.d.ts.map +1 -0
  121. package/dist/media-router.js +584 -0
  122. package/dist/media-router.js.map +7 -0
  123. package/dist/mfu-reassembler.d.ts +313 -9
  124. package/dist/mfu-reassembler.d.ts.map +1 -1
  125. package/dist/mfu-reassembler.js +3051 -285
  126. package/dist/mfu-reassembler.js.map +7 -1
  127. package/dist/mfu-reassembly-policy.d.ts +24 -0
  128. package/dist/mfu-reassembly-policy.d.ts.map +1 -0
  129. package/dist/mfu-reassembly-policy.js +99 -0
  130. package/dist/mfu-reassembly-policy.js.map +7 -0
  131. package/dist/mmtp-container-parser.d.ts +568 -0
  132. package/dist/mmtp-container-parser.d.ts.map +1 -0
  133. package/dist/mmtp-container-parser.js +6580 -0
  134. package/dist/mmtp-container-parser.js.map +7 -0
  135. package/dist/mmtp-container-parser.no-modules.js +9616 -0
  136. package/dist/mmtp-container-parser.no-modules.js.map +7 -0
  137. package/dist/mmtp-decode-pipeline.d.ts +138 -0
  138. package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
  139. package/dist/mmtp-decode-pipeline.js +6814 -0
  140. package/dist/mmtp-decode-pipeline.js.map +7 -0
  141. package/dist/mmtp-router.d.ts +679 -0
  142. package/dist/mmtp-router.d.ts.map +1 -0
  143. package/dist/mmtp-router.js +11278 -0
  144. package/dist/mmtp-router.js.map +7 -0
  145. package/dist/mmtp-to-cmaf.d.ts +187 -0
  146. package/dist/mmtp-to-cmaf.d.ts.map +1 -0
  147. package/dist/mmtp-to-cmaf.js +716 -0
  148. package/dist/mmtp-to-cmaf.js.map +7 -0
  149. package/dist/multicast-auth-catalog.d.ts +115 -0
  150. package/dist/multicast-auth-catalog.d.ts.map +1 -0
  151. package/dist/multicast-auth-catalog.js +202 -0
  152. package/dist/multicast-auth-catalog.js.map +7 -0
  153. package/dist/multicast-input.d.ts +141 -0
  154. package/dist/multicast-input.d.ts.map +1 -0
  155. package/dist/multicast-input.js +390 -0
  156. package/dist/multicast-input.js.map +7 -0
  157. package/dist/multicast-manager.d.ts +669 -0
  158. package/dist/multicast-manager.d.ts.map +1 -0
  159. package/dist/multicast-manager.js +19101 -0
  160. package/dist/multicast-manager.js.map +7 -0
  161. package/dist/multicast-transport.d.ts +271 -0
  162. package/dist/multicast-transport.d.ts.map +1 -0
  163. package/dist/multicast-transport.js +2264 -0
  164. package/dist/multicast-transport.js.map +7 -0
  165. package/dist/multicast-unwrap.d.ts +57 -0
  166. package/dist/multicast-unwrap.d.ts.map +1 -0
  167. package/dist/multicast-unwrap.js +418 -0
  168. package/dist/multicast-unwrap.js.map +7 -0
  169. package/dist/no-modules.d.ts +10 -0
  170. package/dist/no-modules.d.ts.map +1 -0
  171. package/dist/no-modules.js +9491 -0
  172. package/dist/no-modules.js.map +7 -0
  173. package/dist/phase14-catalog-override.d.ts +126 -0
  174. package/dist/phase14-catalog-override.d.ts.map +1 -0
  175. package/dist/phase14-catalog-override.js +155 -0
  176. package/dist/phase14-catalog-override.js.map +7 -0
  177. package/dist/repair-fetch.d.ts +270 -0
  178. package/dist/repair-fetch.d.ts.map +1 -0
  179. package/dist/repair-fetch.js +381 -0
  180. package/dist/repair-fetch.js.map +7 -0
  181. package/dist/repair-layers.d.ts +158 -0
  182. package/dist/repair-layers.d.ts.map +1 -0
  183. package/dist/repair-layers.js +344 -0
  184. package/dist/repair-layers.js.map +7 -0
  185. package/dist/sample-combiner.d.ts +212 -0
  186. package/dist/sample-combiner.d.ts.map +1 -0
  187. package/dist/sample-combiner.js +595 -0
  188. package/dist/sample-combiner.js.map +7 -0
  189. package/dist/signaling.d.ts +29 -0
  190. package/dist/signaling.d.ts.map +1 -0
  191. package/dist/signaling.js +572 -0
  192. package/dist/signaling.js.map +7 -0
  193. package/dist/source-auth.d.ts +2 -0
  194. package/dist/source-auth.d.ts.map +1 -0
  195. package/dist/source-auth.js +1209 -0
  196. package/dist/source-auth.js.map +7 -0
  197. package/dist/switching-set-alignment.d.ts +61 -0
  198. package/dist/switching-set-alignment.d.ts.map +1 -0
  199. package/dist/switching-set-alignment.js +70 -0
  200. package/dist/switching-set-alignment.js.map +7 -0
  201. package/dist/timestamp-codec.d.ts +34 -0
  202. package/dist/timestamp-codec.d.ts.map +1 -0
  203. package/dist/timestamp-codec.js +473 -0
  204. package/dist/timestamp-codec.js.map +7 -0
  205. package/dist/track-pipeline-setup.d.ts +83 -0
  206. package/dist/track-pipeline-setup.d.ts.map +1 -0
  207. package/dist/track-pipeline-setup.js +291 -0
  208. package/dist/track-pipeline-setup.js.map +7 -0
  209. package/dist/track-pipeline.d.ts +121 -0
  210. package/dist/track-pipeline.d.ts.map +1 -0
  211. package/dist/track-pipeline.js +209 -0
  212. package/dist/track-pipeline.js.map +7 -0
  213. package/dist/track-session.d.ts +414 -0
  214. package/dist/track-session.d.ts.map +1 -0
  215. package/dist/track-session.js +754 -0
  216. package/dist/track-session.js.map +7 -0
  217. package/dist/transport-pool.d.ts +69 -0
  218. package/dist/transport-pool.d.ts.map +1 -0
  219. package/dist/transport-pool.js +74 -0
  220. package/dist/transport-pool.js.map +7 -0
  221. package/dist/wasm-mfu-reassembler.d.ts +97 -0
  222. package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
  223. package/dist/wasm-mfu-reassembler.js +2133 -0
  224. package/dist/wasm-mfu-reassembler.js.map +7 -0
  225. package/dist/wasm-mmtp-container-parser.d.ts +10 -0
  226. package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
  227. package/dist/wasm-mmtp-container-parser.js +6834 -0
  228. package/dist/wasm-mmtp-container-parser.js.map +7 -0
  229. package/node_modules/@blockcast/fec-worker/README.md +223 -0
  230. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  231. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts +38 -0
  232. package/node_modules/@blockcast/fec-worker/dist/block-order.d.ts.map +1 -0
  233. package/node_modules/@blockcast/fec-worker/dist/block-order.js +78 -0
  234. package/node_modules/@blockcast/fec-worker/dist/block-order.js.map +1 -0
  235. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +93 -0
  236. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
  237. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +346 -0
  238. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
  239. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +380 -0
  240. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
  241. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
  242. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
  243. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
  244. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
  245. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +859 -0
  246. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
  247. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
  248. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
  249. package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
  250. package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
  251. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
  252. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
  253. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +370 -0
  254. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
  255. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
  256. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
  257. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
  258. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
  259. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +194 -0
  260. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
  261. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +62 -0
  262. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
  263. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
  264. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
  265. package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
  266. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
  267. package/node_modules/@blockcast/fec-worker/package.json +59 -0
  268. package/node_modules/@blockcast/fec-worker/src/block-order.ts +93 -0
  269. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +392 -0
  270. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +399 -0
  271. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1502 -0
  272. package/node_modules/@blockcast/fec-worker/src/index.ts +35 -0
  273. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +589 -0
  274. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
  275. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +209 -0
  276. package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
  277. package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  278. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  279. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  280. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  281. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  282. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  283. package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  284. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  285. package/node_modules/@blockcast/mmt-base/README.md +134 -0
  286. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  287. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
  288. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
  289. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
  290. package/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
  291. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
  292. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  293. package/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
  294. package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  295. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
  296. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  297. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
  298. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  299. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
  300. package/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
  301. package/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
  302. package/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
  303. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
  304. package/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
  305. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
  306. package/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
  307. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
  308. package/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
  309. package/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
  310. package/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
  311. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
  312. package/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
  313. package/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
  314. package/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
  315. package/node_modules/@blockcast/mmt-base/package.json +49 -0
  316. package/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
  317. package/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
  318. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
  319. package/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
  320. package/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
  321. package/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
  322. package/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
  323. package/node_modules/@blockcast/mmt-fec/README.md +271 -0
  324. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  325. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +82 -0
  326. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
  327. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +296 -0
  328. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
  329. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +106 -0
  330. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
  331. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +288 -0
  332. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
  333. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
  334. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
  335. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
  336. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
  337. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
  338. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
  339. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
  340. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
  341. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +205 -0
  342. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
  343. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +240 -0
  344. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
  345. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +28 -0
  346. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
  347. package/node_modules/@blockcast/mmt-fec/dist/index.js +28 -0
  348. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
  349. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
  350. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
  351. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
  352. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
  353. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +258 -0
  354. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
  355. package/node_modules/@blockcast/mmt-fec/dist/oti.js +382 -0
  356. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
  357. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
  358. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
  359. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
  360. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
  361. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts +82 -0
  362. package/node_modules/@blockcast/mmt-fec/dist/repair-group.d.ts.map +1 -0
  363. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js +170 -0
  364. package/node_modules/@blockcast/mmt-fec/dist/repair-group.js.map +1 -0
  365. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  366. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  367. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  368. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  369. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  370. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  371. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  372. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  373. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +134 -0
  374. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  375. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts +55 -0
  376. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.d.ts.map +1 -0
  377. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js +128 -0
  378. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/fec-block-profile.js.map +1 -0
  379. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +7 -0
  380. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  381. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +7 -0
  382. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  383. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +292 -0
  384. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  385. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +612 -0
  386. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  387. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts +18 -0
  388. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.d.ts.map +1 -0
  389. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js +18 -0
  390. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/net-constants.js.map +1 -0
  391. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts +47 -0
  392. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.d.ts.map +1 -0
  393. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js +54 -0
  394. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/ntp-short.js.map +1 -0
  395. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts +57 -0
  396. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.d.ts.map +1 -0
  397. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js +98 -0
  398. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/serial-number.js.map +1 -0
  399. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts +312 -0
  400. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.d.ts.map +1 -0
  401. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js +637 -0
  402. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/signalling.js.map +1 -0
  403. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
  404. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/fec-block-profile.ts +145 -0
  405. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +6 -0
  406. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +892 -0
  407. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/net-constants.ts +17 -0
  408. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/ntp-short.ts +67 -0
  409. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/serial-number.ts +107 -0
  410. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/signalling.ts +862 -0
  411. package/node_modules/@blockcast/mmt-fec/package.json +79 -0
  412. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +371 -0
  413. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +439 -0
  414. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
  415. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
  416. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +310 -0
  417. package/node_modules/@blockcast/mmt-fec/src/index.ts +94 -0
  418. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
  419. package/node_modules/@blockcast/mmt-fec/src/oti.ts +463 -0
  420. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
  421. package/node_modules/@blockcast/mmt-fec/src/repair-group.ts +195 -0
  422. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  423. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
  424. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
  425. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
  426. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
  427. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
  428. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
  429. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
  430. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
  431. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
  432. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
  433. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
  434. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
  435. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +99 -0
  436. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
  437. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +492 -0
  438. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
  439. package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
  440. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
  441. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
  442. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
  443. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +669 -0
  444. package/node_modules/@noble/hashes/LICENSE +21 -0
  445. package/node_modules/@noble/hashes/README.md +521 -0
  446. package/node_modules/@noble/hashes/_assert.d.ts +17 -0
  447. package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
  448. package/node_modules/@noble/hashes/_assert.js +18 -0
  449. package/node_modules/@noble/hashes/_assert.js.map +1 -0
  450. package/node_modules/@noble/hashes/_blake.d.ts +14 -0
  451. package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
  452. package/node_modules/@noble/hashes/_blake.js +50 -0
  453. package/node_modules/@noble/hashes/_blake.js.map +1 -0
  454. package/node_modules/@noble/hashes/_md.d.ts +51 -0
  455. package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
  456. package/node_modules/@noble/hashes/_md.js +162 -0
  457. package/node_modules/@noble/hashes/_md.js.map +1 -0
  458. package/node_modules/@noble/hashes/_u64.d.ts +55 -0
  459. package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
  460. package/node_modules/@noble/hashes/_u64.js +90 -0
  461. package/node_modules/@noble/hashes/_u64.js.map +1 -0
  462. package/node_modules/@noble/hashes/argon2.d.ts +32 -0
  463. package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
  464. package/node_modules/@noble/hashes/argon2.js +401 -0
  465. package/node_modules/@noble/hashes/argon2.js.map +1 -0
  466. package/node_modules/@noble/hashes/blake1.d.ts +106 -0
  467. package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
  468. package/node_modules/@noble/hashes/blake1.js +459 -0
  469. package/node_modules/@noble/hashes/blake1.js.map +1 -0
  470. package/node_modules/@noble/hashes/blake2.d.ts +116 -0
  471. package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
  472. package/node_modules/@noble/hashes/blake2.js +420 -0
  473. package/node_modules/@noble/hashes/blake2.js.map +1 -0
  474. package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
  475. package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
  476. package/node_modules/@noble/hashes/blake2b.js +14 -0
  477. package/node_modules/@noble/hashes/blake2b.js.map +1 -0
  478. package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
  479. package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
  480. package/node_modules/@noble/hashes/blake2s.js +24 -0
  481. package/node_modules/@noble/hashes/blake2s.js.map +1 -0
  482. package/node_modules/@noble/hashes/blake3.d.ts +54 -0
  483. package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
  484. package/node_modules/@noble/hashes/blake3.js +255 -0
  485. package/node_modules/@noble/hashes/blake3.js.map +1 -0
  486. package/node_modules/@noble/hashes/crypto.d.ts +2 -0
  487. package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
  488. package/node_modules/@noble/hashes/crypto.js +5 -0
  489. package/node_modules/@noble/hashes/crypto.js.map +1 -0
  490. package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
  491. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
  492. package/node_modules/@noble/hashes/cryptoNode.js +18 -0
  493. package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
  494. package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
  495. package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
  496. package/node_modules/@noble/hashes/eskdf.js +166 -0
  497. package/node_modules/@noble/hashes/eskdf.js.map +1 -0
  498. package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
  499. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
  500. package/node_modules/@noble/hashes/esm/_assert.js +15 -0
  501. package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
  502. package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
  503. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
  504. package/node_modules/@noble/hashes/esm/_blake.js +45 -0
  505. package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
  506. package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
  507. package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
  508. package/node_modules/@noble/hashes/esm/_md.js +155 -0
  509. package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
  510. package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
  511. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
  512. package/node_modules/@noble/hashes/esm/_u64.js +67 -0
  513. package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
  514. package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
  515. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
  516. package/node_modules/@noble/hashes/esm/argon2.js +392 -0
  517. package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
  518. package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
  519. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
  520. package/node_modules/@noble/hashes/esm/blake1.js +452 -0
  521. package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
  522. package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
  523. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
  524. package/node_modules/@noble/hashes/esm/blake2.js +413 -0
  525. package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
  526. package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
  527. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
  528. package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
  529. package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
  530. package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
  531. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
  532. package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
  533. package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
  534. package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
  535. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
  536. package/node_modules/@noble/hashes/esm/blake3.js +251 -0
  537. package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
  538. package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
  539. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
  540. package/node_modules/@noble/hashes/esm/crypto.js +2 -0
  541. package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
  542. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
  543. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
  544. package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
  545. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
  546. package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
  547. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
  548. package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
  549. package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
  550. package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
  551. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
  552. package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
  553. package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
  554. package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
  555. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
  556. package/node_modules/@noble/hashes/esm/hmac.js +86 -0
  557. package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
  558. package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
  559. package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
  560. package/node_modules/@noble/hashes/esm/index.js +33 -0
  561. package/node_modules/@noble/hashes/esm/index.js.map +1 -0
  562. package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
  563. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
  564. package/node_modules/@noble/hashes/esm/legacy.js +281 -0
  565. package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
  566. package/node_modules/@noble/hashes/esm/package.json +10 -0
  567. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
  568. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
  569. package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
  570. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
  571. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
  572. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
  573. package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
  574. package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
  575. package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
  576. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
  577. package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
  578. package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
  579. package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
  580. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
  581. package/node_modules/@noble/hashes/esm/sha1.js +11 -0
  582. package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
  583. package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
  584. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
  585. package/node_modules/@noble/hashes/esm/sha2.js +375 -0
  586. package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
  587. package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
  588. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
  589. package/node_modules/@noble/hashes/esm/sha256.js +20 -0
  590. package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
  591. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
  592. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
  593. package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
  594. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
  595. package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
  596. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
  597. package/node_modules/@noble/hashes/esm/sha3.js +234 -0
  598. package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
  599. package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
  600. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
  601. package/node_modules/@noble/hashes/esm/sha512.js +26 -0
  602. package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
  603. package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
  604. package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
  605. package/node_modules/@noble/hashes/esm/utils.js +281 -0
  606. package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
  607. package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
  608. package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
  609. package/node_modules/@noble/hashes/hkdf.js +88 -0
  610. package/node_modules/@noble/hashes/hkdf.js.map +1 -0
  611. package/node_modules/@noble/hashes/hmac.d.ts +35 -0
  612. package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
  613. package/node_modules/@noble/hashes/hmac.js +91 -0
  614. package/node_modules/@noble/hashes/hmac.js.map +1 -0
  615. package/node_modules/@noble/hashes/index.d.ts +1 -0
  616. package/node_modules/@noble/hashes/index.d.ts.map +1 -0
  617. package/node_modules/@noble/hashes/index.js +33 -0
  618. package/node_modules/@noble/hashes/index.js.map +1 -0
  619. package/node_modules/@noble/hashes/legacy.d.ts +71 -0
  620. package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
  621. package/node_modules/@noble/hashes/legacy.js +287 -0
  622. package/node_modules/@noble/hashes/legacy.js.map +1 -0
  623. package/node_modules/@noble/hashes/package.json +266 -0
  624. package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
  625. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
  626. package/node_modules/@noble/hashes/pbkdf2.js +101 -0
  627. package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
  628. package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
  629. package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
  630. package/node_modules/@noble/hashes/ripemd160.js +16 -0
  631. package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
  632. package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
  633. package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
  634. package/node_modules/@noble/hashes/scrypt.js +232 -0
  635. package/node_modules/@noble/hashes/scrypt.js.map +1 -0
  636. package/node_modules/@noble/hashes/sha1.d.ts +11 -0
  637. package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
  638. package/node_modules/@noble/hashes/sha1.js +14 -0
  639. package/node_modules/@noble/hashes/sha1.js.map +1 -0
  640. package/node_modules/@noble/hashes/sha2.d.ts +159 -0
  641. package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
  642. package/node_modules/@noble/hashes/sha2.js +384 -0
  643. package/node_modules/@noble/hashes/sha2.js.map +1 -0
  644. package/node_modules/@noble/hashes/sha256.d.ts +20 -0
  645. package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
  646. package/node_modules/@noble/hashes/sha256.js +23 -0
  647. package/node_modules/@noble/hashes/sha256.js.map +1 -0
  648. package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
  649. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
  650. package/node_modules/@noble/hashes/sha3-addons.js +402 -0
  651. package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
  652. package/node_modules/@noble/hashes/sha3.d.ts +53 -0
  653. package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
  654. package/node_modules/@noble/hashes/sha3.js +239 -0
  655. package/node_modules/@noble/hashes/sha3.js.map +1 -0
  656. package/node_modules/@noble/hashes/sha512.d.ts +26 -0
  657. package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
  658. package/node_modules/@noble/hashes/sha512.js +29 -0
  659. package/node_modules/@noble/hashes/sha512.js.map +1 -0
  660. package/node_modules/@noble/hashes/src/_assert.ts +22 -0
  661. package/node_modules/@noble/hashes/src/_blake.ts +50 -0
  662. package/node_modules/@noble/hashes/src/_md.ts +176 -0
  663. package/node_modules/@noble/hashes/src/_u64.ts +91 -0
  664. package/node_modules/@noble/hashes/src/argon2.ts +497 -0
  665. package/node_modules/@noble/hashes/src/blake1.ts +534 -0
  666. package/node_modules/@noble/hashes/src/blake2.ts +486 -0
  667. package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
  668. package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
  669. package/node_modules/@noble/hashes/src/blake3.ts +272 -0
  670. package/node_modules/@noble/hashes/src/crypto.ts +9 -0
  671. package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
  672. package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
  673. package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
  674. package/node_modules/@noble/hashes/src/hmac.ts +94 -0
  675. package/node_modules/@noble/hashes/src/index.ts +31 -0
  676. package/node_modules/@noble/hashes/src/legacy.ts +293 -0
  677. package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
  678. package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
  679. package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
  680. package/node_modules/@noble/hashes/src/sha1.ts +10 -0
  681. package/node_modules/@noble/hashes/src/sha2.ts +402 -0
  682. package/node_modules/@noble/hashes/src/sha256.ts +24 -0
  683. package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
  684. package/node_modules/@noble/hashes/src/sha3.ts +258 -0
  685. package/node_modules/@noble/hashes/src/sha512.ts +34 -0
  686. package/node_modules/@noble/hashes/src/utils.ts +395 -0
  687. package/node_modules/@noble/hashes/utils.d.ts +161 -0
  688. package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
  689. package/node_modules/@noble/hashes/utils.js +313 -0
  690. package/node_modules/@noble/hashes/utils.js.map +1 -0
  691. package/package.json +179 -8
  692. package/schemas/catalog.schema.json +357 -0
  693. package/src/align.ts +239 -0
  694. package/src/audio-init-parser.ts +189 -0
  695. package/src/audio-ring-buffer.ts +120 -0
  696. package/src/authored-timing.ts +63 -0
  697. package/src/block-policy.ts +903 -0
  698. package/src/carp-catalog.ts +1065 -0
  699. package/src/catalog-fec-params.ts +729 -0
  700. package/src/catalog-network-source.ts +74 -0
  701. package/src/catalog-validator.ts +34 -0
  702. package/src/cmaf-block-assembler.ts +1255 -0
  703. package/src/cmaf-group-batcher.ts +104 -0
  704. package/src/cmcd-producer.ts +329 -0
  705. package/src/codec-utils.ts +1984 -0
  706. package/src/conceal-timeline.ts +293 -0
  707. package/src/delivery-gap.ts +147 -0
  708. package/src/duplicate-ledger.ts +372 -0
  709. package/src/fec-codec.ts +61 -0
  710. package/src/fec-manager.ts +4298 -0
  711. package/src/fec-starvation-detector.ts +128 -0
  712. package/src/fec-state.ts +219 -0
  713. package/src/fec-worker-setup.ts +283 -0
  714. package/src/fmp4-completion.ts +47 -0
  715. package/src/fmp4-reader.ts +112 -0
  716. package/src/index.ts +590 -21
  717. package/src/iso-block-locator.ts +329 -0
  718. package/src/iso-bmff-timing.ts +813 -0
  719. package/src/loc.ts +128 -154
  720. package/src/manifest-auth-plan.ts +107 -0
  721. package/src/media-router.ts +841 -0
  722. package/src/mfu-reassembler.ts +3480 -155
  723. package/src/mfu-reassembly-policy.ts +134 -0
  724. package/src/mmtp-container-parser.ts +2380 -0
  725. package/src/mmtp-decode-pipeline.ts +406 -0
  726. package/src/mmtp-router.ts +4860 -0
  727. package/src/mmtp-to-cmaf.ts +977 -0
  728. package/src/multicast-auth-catalog.ts +340 -0
  729. package/src/multicast-input.ts +793 -0
  730. package/src/multicast-manager.ts +2783 -0
  731. package/src/multicast-transport.ts +1058 -0
  732. package/src/multicast-unwrap.ts +132 -0
  733. package/src/no-modules.ts +21 -0
  734. package/src/phase14-catalog-override.ts +336 -0
  735. package/src/repair-fetch.ts +772 -0
  736. package/src/repair-layers.ts +533 -0
  737. package/src/sample-combiner.ts +938 -0
  738. package/src/signaling.ts +78 -0
  739. package/src/source-auth.ts +1 -0
  740. package/src/switching-set-alignment.ts +109 -0
  741. package/src/timestamp-codec.ts +265 -0
  742. package/src/track-pipeline-setup.ts +205 -0
  743. package/src/track-pipeline.ts +332 -0
  744. package/src/track-session.ts +1010 -0
  745. package/src/transport-pool.ts +128 -0
  746. package/src/wasm-mfu-reassembler.ts +405 -0
  747. package/src/wasm-mmtp-container-parser.ts +23 -0
  748. package/test-vectors/align.json +199 -0
  749. package/test-vectors/catalog/README.md +106 -0
  750. package/test-vectors/catalog/negative/archive-origin-with-path.json +33 -0
  751. package/test-vectors/catalog/negative/archive-unknown-field.json +34 -0
  752. package/test-vectors/catalog/negative/fec-block-profile-missing.json +51 -0
  753. package/test-vectors/catalog/negative/fec-block-profile-unknown.json +52 -0
  754. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +28 -0
  755. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +33 -0
  756. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +31 -0
  757. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +32 -0
  758. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +34 -0
  759. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +24 -0
  760. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +33 -0
  761. package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
  762. package/test-vectors/catalog/negative/media-track-repair-layer.json +16 -0
  763. package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
  764. package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
  765. package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
  766. package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
  767. package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
  768. package/test-vectors/catalog/negative/multicast-network-source-empty.json +44 -0
  769. package/test-vectors/catalog/negative/multicast-packet-id-signaling.json +26 -0
  770. package/test-vectors/catalog/negative/network-source-object.json +25 -0
  771. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +24 -0
  772. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +27 -0
  773. package/test-vectors/catalog/negative/repair-track-legacy-shape.json +19 -0
  774. package/test-vectors/catalog/negative/track-role-empty.json +16 -0
  775. package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
  776. package/test-vectors/catalog/positive/archive-origin.json +34 -0
  777. package/test-vectors/catalog/positive/fec-iso-ssbg1.json +52 -0
  778. package/test-vectors/catalog/positive/fec-layered-repair.json +106 -0
  779. package/test-vectors/catalog/positive/fec-multicast.json +52 -0
  780. package/test-vectors/catalog/positive/flat-av.json +30 -0
  781. package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
  782. package/test-vectors/catalog/positive/multicast-native-ssm-no-network-source.json +43 -0
  783. package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
  784. package/test-vectors/catalog/positive/track-role.json +49 -0
  785. package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
  786. package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
  787. package/test-vectors/catalog-multicast-auth-v1.json +26 -0
  788. package/test-vectors/catalog-validation.json +732 -0
  789. package/test-vectors/catalog-validator-public-api.mjs +25 -0
  790. package/test-vectors/generate-source-auth-fixture.mjs +114 -0
  791. package/test-vectors/hevc-x265-repeat-headers-v1.json +40 -0
  792. package/test-vectors/source-auth-v1.json +61 -0
  793. package/test-vectors/source-contiguity-v1.json +131 -0
  794. package/test-vectors/subsample-placement-v1.json +230 -0
  795. package/dist/mmtp.d.ts +0 -73
  796. package/dist/mmtp.d.ts.map +0 -1
  797. package/dist/mmtp.js +0 -210
  798. package/dist/mmtp.js.map +0 -1
  799. package/src/mmtp.ts +0 -277
@@ -0,0 +1,679 @@
1
+ /**
2
+ * MMTP packet processing and frame routing layer.
3
+ *
4
+ * Delegates MMTP header parsing, MFU extraction, reassembly, and keyframe
5
+ * detection to MmtpContainerParser while owning FEC orchestration, sync
6
+ * gating, CMAF assembly, and callback routing.
7
+ *
8
+ * Extracted from MulticastManager — this module owns MMTP-layer concerns:
9
+ * FEC symbol feeding, sync gating, MSE segment assembly, and frame routing.
10
+ * It does NOT own network I/O, watchdog timers, or multicast join/leave.
11
+ *
12
+ * @packageDocumentation
13
+ */
14
+ import { type FecBlockProfile } from "@blockcast/mmt-base";
15
+ import type { IsoHeldSource } from "./fec-manager.js";
16
+ import type { IsoRepairPlacement } from "./iso-block-locator.js";
17
+ import type { MfuReassemblerBackend, MmtpSourcePath, MmtpDeliveryProvenance } from "./mfu-reassembler.js";
18
+ import type { MfuReassemblyPolicy } from "./mfu-reassembly-policy.js";
19
+ import { type AuthoredTiming } from "./authored-timing.js";
20
+ import { FecBlockMapper } from "@blockcast/mmt-fec";
21
+ import { CmafBlockAssembler, type BlockAssemblerConfig, type CmafBlockSample } from "./cmaf-block-assembler.js";
22
+ import { type TrackRole } from "./carp-catalog.js";
23
+ import { type BlockClass, type ClassifierMode, type ClassifierReason, type FrameGapDecision, type SourceSymbolEvidence } from "./block-policy.js";
24
+ import { type DuplicateHorizon } from "./duplicate-ledger.js";
25
+ import type { ManifestAuthMode, ManifestObjectIdentity, ManifestTrackContext, ManifestVerifier } from "@blockcast/mmt-manifest-verify";
26
+ /**
27
+ * Keyframe loss timeout slack factor (Phase 13, tracks WITHOUT FEC only).
28
+ *
29
+ * FEC tracks never arm the keyframe-lost timer: vanished FEC blocks are
30
+ * materialised from SBN evidence and resolve through their catalog-derived
31
+ * repair and fail deadlines, and the stall/conceal decision rides on the
32
+ * first frame released after the gap (`RoutedFrameMeta.gapBefore`).
33
+ *
34
+ * Derivation: The keyframe loss timer must fire after one full keyframe group
35
+ * has been missed. Group duration must come from explicit catalog timing; FEC
36
+ * sourceSymbols is a block width, not a GOP length. Multicast jitter means the
37
+ * last packet of a group may arrive up to ~0.5 group durations late (network
38
+ * reordering + FEC recovery latency). The total timeout is therefore:
39
+ *
40
+ * timeout = group_duration * (1.0 + 0.5_jitter) = group_duration * 1.5
41
+ *
42
+ * The 0.5 jitter margin covers: (a) FEC interleave recovery window (up to D
43
+ * frames), (b) network reordering within one interleave depth, and (c) OS
44
+ * socket buffer draining latency. This is tight enough to detect loss within
45
+ * one missing group while avoiding false positives from normal jitter.
46
+ */
47
+ export declare const KEYFRAME_LOST_TIMEOUT_SLACK = 1.5;
48
+ export type RoutedFrameMeta = {
49
+ /** Authored ISO-BMFF presentation timestamp, in microseconds. */
50
+ timestamp: number;
51
+ /**
52
+ * Raw MMTP short-NTP header timestamp. This is transport timing metadata
53
+ * only; it is deliberately separate from the authored media timestamp.
54
+ */
55
+ mmtpTimestamp?: bigint;
56
+ keyframe: boolean;
57
+ /** Exact ISO-BMFF timing in the media track's native timescale. */
58
+ authoredTiming?: AuthoredTiming;
59
+ /** Transport that supplied the accepted FI=1 head (or complete FI=0 frame). */
60
+ source?: MmtpSourcePath;
61
+ /**
62
+ * Whole-frame delivery verdict folded across every contributing fragment.
63
+ *
64
+ * Distinct from `source` on purpose. `source` answers a routing question —
65
+ * which transport's copy is this — and deliberately lets the head fragment
66
+ * decide. This answers an evidence question: did every byte of this frame
67
+ * physically arrive over multicast? A frame can be routed as 'multicast'
68
+ * and still be 'mixed'.
69
+ */
70
+ deliveryProvenance?: MmtpDeliveryProvenance;
71
+ packetId?: number;
72
+ packetSequenceNumber?: number;
73
+ /** Every authoritative MMTP source-packet sequence that formed this frame. */
74
+ packetSequenceNumbers?: number[];
75
+ /** Subset of packetSequenceNumbers reconstructed by FEC. */
76
+ repairedPacketSequenceNumbers?: number[];
77
+ /** Native MMTP MPU group coordinate. */
78
+ mpuSequenceNumber?: number;
79
+ /**
80
+ * Timed-MFU sample identity `(movie_fragment_sequence_number, sample_number)`
81
+ * from the MFU data-unit header. Absent when the MFU header is untimed.
82
+ */
83
+ movieFragmentSequenceNumber?: number;
84
+ sampleNumber?: number;
85
+ /** Immutable catalog identity supplied by the owning ingress subscription. */
86
+ catalogTrackName?: string;
87
+ recovered?: boolean;
88
+ /**
89
+ * True when this frame opens playback after the router suppressed earlier
90
+ * video deltas while waiting for a sync keyframe. Downstream decoders can
91
+ * use this to treat the following dependency chain as provisional.
92
+ */
93
+ sourceDiscontinuity?: boolean;
94
+ /**
95
+ * Stall/conceal decision for the first frame released after a gap: its
96
+ * FEC blocks resolved with lost media, or authored decode time shows a
97
+ * missing sample. Sinks act on it in order, on this frame. It is the same
98
+ * object the manager emits as its `gap` event.
99
+ */
100
+ gapBefore?: FrameGapDecision;
101
+ };
102
+ export interface MmtpIngressContext {
103
+ tracks: readonly Readonly<{
104
+ name: string;
105
+ packetId: number;
106
+ }>[];
107
+ }
108
+ /** One physical stream: an MMTP packet ID and the catalog track it carries. */
109
+ export interface MmtpStreamIdentity {
110
+ readonly packetId: number;
111
+ readonly catalogTrackName: string;
112
+ }
113
+ /**
114
+ * Where a staged stream switch committed, relative to the outgoing stream.
115
+ *
116
+ * - `outgoing-reached-rap`: the outgoing stream was about to deliver a frame
117
+ * at or past the incoming RAP's presentation time. The splice is exact:
118
+ * the outgoing stream delivered every frame before the RAP that reached
119
+ * the router, and none at or after it. An MSE assembler is the one
120
+ * exception, since its flush is unbounded (see `stageStreamSwitch`).
121
+ * - `outgoing-ahead`: when the incoming RAP arrived, the outgoing stream had
122
+ * already delivered a frame at or past it. The switch commits on that RAP
123
+ * at once; incoming frames up to `outgoingHighWater` cover media time the
124
+ * outgoing stream already delivered.
125
+ * - `outgoing-overdue`: the incoming stream reached its next RAP before the
126
+ * outgoing stream reached the one held for it, so the outgoing stream is at
127
+ * least a GOP behind (stalled, or losing media) and waiting longer only
128
+ * widens the gap. The switch commits on the held RAP: the held GOP is
129
+ * delivered, then the newer RAP. It overlaps nothing, since every outgoing
130
+ * frame delivered was compared against the held RAP and is before it.
131
+ */
132
+ export type StreamSwitchCommitReason = "outgoing-reached-rap" | "outgoing-ahead" | "outgoing-overdue";
133
+ /** Presentation position of one frame, in the router's frame vocabulary. */
134
+ export interface StreamSwitchPosition {
135
+ /** Authored presentation timestamp, in microseconds. */
136
+ readonly timestamp: number;
137
+ /** Exact authored timing, when the frame carried it. */
138
+ readonly authoredTiming?: Readonly<AuthoredTiming>;
139
+ }
140
+ /** A staged stream switch, at the moment it commits. */
141
+ export interface StreamSwitchCommit {
142
+ readonly from: MmtpStreamIdentity;
143
+ readonly to: MmtpStreamIdentity;
144
+ /** The incoming RAP the switch commits on: the first `to` frame delivered. */
145
+ readonly rap: StreamSwitchPosition & {
146
+ readonly mpuSequenceNumber?: number;
147
+ };
148
+ /**
149
+ * The furthest-presented outgoing frame delivered before the commit,
150
+ * counting the gap fills the commit released, or undefined when the
151
+ * outgoing stream delivered none.
152
+ */
153
+ readonly outgoingHighWater: StreamSwitchPosition | undefined;
154
+ readonly reason: StreamSwitchCommitReason;
155
+ /**
156
+ * Incoming frames never delivered: the deltas before the incoming stream's
157
+ * first RAP (the GOP it was admitted into mid-way), and a held GOP a reset
158
+ * of the incoming stream invalidated.
159
+ */
160
+ readonly droppedIncomingFrames: number;
161
+ }
162
+ /** What MmtpRouter.stageStreamSwitch needs. */
163
+ export interface StreamSwitchOptions {
164
+ /** The stream being replaced: a registered video packet ID. */
165
+ readonly from: MmtpStreamIdentity;
166
+ /** The replacing stream: a registered video packet ID other than `from`'s. */
167
+ readonly to: MmtpStreamIdentity;
168
+ /**
169
+ * Called synchronously at the commit, after `from`'s packet ID is retired
170
+ * and before `to`'s withheld init and its RAP are delivered. Throwing fails
171
+ * the commit closed: `to` is retired as well and nothing of it is
172
+ * delivered, since `from` can no longer be restored.
173
+ */
174
+ readonly onCommit: (commit: StreamSwitchCommit) => void;
175
+ }
176
+ /** A switch MmtpRouter.stageStreamSwitch staged. */
177
+ export interface StagedStreamSwitch {
178
+ /**
179
+ * Abandon the switch before it commits: `to` is no longer withheld and its
180
+ * withheld init is dropped. Returns false when the switch already committed
181
+ * or was cancelled.
182
+ */
183
+ cancel(): boolean;
184
+ }
185
+ /** Callback for decoded video/audio frames. */
186
+ export type FrameCallback = (data: Uint8Array, meta: RoutedFrameMeta) => void;
187
+ /** Metadata accompanying an accepted raw MMTP source packet. */
188
+ export type RoutedPacketMeta = {
189
+ packetId: number;
190
+ packetSequenceNumber: number;
191
+ /** True when FEC reconstructed this source packet. */
192
+ recovered: boolean;
193
+ /** True when the packet has no trailing Source FEC Payload ID. */
194
+ skipFecPayloadId: boolean;
195
+ /** Immutable catalog identity supplied by the owning ingress subscription. */
196
+ catalogTrackName?: string;
197
+ /**
198
+ * Strict provenance for the fragments this packet produces. Set for
199
+ * FEC-recovered packets, which carry no `source` of their own but inherit
200
+ * their FEC block's symbol provenance.
201
+ */
202
+ deliveryProvenance?: MmtpDeliveryProvenance;
203
+ };
204
+ /** Callback for accepted raw MMTP source packets. */
205
+ export type TrackPacketCallback = (packet: Uint8Array, meta: RoutedPacketMeta) => void;
206
+ type ParserDiagnostics = {
207
+ packets: number;
208
+ frames: number;
209
+ initSegments: number;
210
+ noFragment: number;
211
+ fragments: number;
212
+ reassembled: number;
213
+ pendingBuffers: number;
214
+ pendingFragments: number;
215
+ pendingSamples?: unknown[];
216
+ lastPacketLength: number;
217
+ lastSequenceNumber: number;
218
+ lastFecSsId?: number;
219
+ lastFrameTimestamp?: number;
220
+ directAudioSourceEmitted: number;
221
+ directAudioSourceRegressions: number;
222
+ directAudioRecoveredQueued: number;
223
+ directAudioRecoveredDrained: number;
224
+ directAudioRecoveredStaleDropped: number;
225
+ };
226
+ /**
227
+ * FECManager interface — the contract MmtpRouter expects for FEC
228
+ * source/repair symbol processing and block lifecycle events.
229
+ *
230
+ * Concrete implementation: `FECManager` class in `./fec-manager.ts`.
231
+ * MmtpRouter only interacts with FEC through this interface.
232
+ */
233
+ export interface FECManagerLike {
234
+ /** Feed a source symbol to the FEC decoder for a given track.
235
+ * Returns recovered block bytes if recovery completes, else null.
236
+ *
237
+ * `symbolData` is the complete MMTP packet without its Source FEC Payload
238
+ * ID, unpadded and possibly a view into the received packet. The manager
239
+ * zero-pads it to the packet's own symbol size T.
240
+ *
241
+ * Optional `alta` carries the detached ALTA authenticator extracted from
242
+ * the MMTP header-extension trailer (08-07 Path 2) — present on signed
243
+ * source packets, absent on relay-reassembled / unsigned streams. When
244
+ * provided, the fec-worker runs verify_detached instead of counting the
245
+ * symbol as `altaPending`. */
246
+ feedSourceSymbol(packetId: number, ssId: number, symbolData: Uint8Array, alta?: {
247
+ auth: Uint8Array;
248
+ payloadEnd: number;
249
+ }, catalogTrackName?: string): Uint8Array | null;
250
+ /** Feed a repair symbol to the FEC decoder for a given track.
251
+ * Returns recovered block bytes if recovery completes, else null. */
252
+ feedRepairSymbol(packetId: number, ssStart: number, ssbLength: number, rsId: number, repairData: Uint8Array, catalogTrackName?: string): Uint8Array | null;
253
+ /** Delivery-gap sample for one multicast packet (FECManager.noteMulticastArrival). */
254
+ noteMulticastArrival?(packetId: number, packetSequenceNumber: number): void;
255
+ /** Record a transport symbol for first-arrival-wins dedup and path counters. */
256
+ feedSymbolFromSource(packetId: number, sbn: number, esi: number, data: Uint8Array, source: "multicast" | "moq", catalogTrackName?: string): boolean;
257
+ /** Strict provenance for a block: 'multicast' only when no symbol arrived
258
+ * over MoQ. Recovered bytes inherit it, since a recovered symbol is a
259
+ * function of every symbol that entered the block. */
260
+ blockDeliveryProvenance?(sbn: number, packetId: number, catalogTrackName?: string): MmtpDeliveryProvenance;
261
+ /** Track a first-arrival network source symbol for block completion and
262
+ * classification. Refreshes the inactivity deadline and marks clean when
263
+ * K arrive. */
264
+ trackBlock(sbn: number, packetId: number, catalogTrackName: string | undefined, esi: number, evidence: SourceSymbolEvidence): void;
265
+ /** True once the packetId has a per-track FEC configuration. */
266
+ isTrackConfigured?(packetId: number): boolean;
267
+ /** Lifecycle resolution of one block for in-order frame release. */
268
+ blockResolution?(sbn: number, packetId: number, catalogTrackName?: string): "pending" | "complete" | "failed" | "untracked";
269
+ /** Highest SBN seen for a stream in the current epoch. */
270
+ highestSbn?(packetId: number, catalogTrackName?: string): number | undefined;
271
+ /** Catalog/reset epoch of a packet's streams. */
272
+ epochFor?(packetId: number): number;
273
+ /**
274
+ * Catalog `fec.interleaveDepthMs` (§5.1 full block span) of a packetId; 0
275
+ * when the stream has none.
276
+ */
277
+ interleaveDepthMsForPacket?(packetId: number): number;
278
+ /**
279
+ * How long a terminal block stays authoritative before it retires to
280
+ * untracked. The release gate holds a frame at most this long, so its loss
281
+ * scan never reads a retired, delivered block as lost. Required whenever
282
+ * blockResolution is.
283
+ */
284
+ terminalRetentionMsForPacket?(packetId: number): number;
285
+ /** Configured codec of a packetId. */
286
+ codecFor?(packetId: number): string | undefined;
287
+ /** Current classifier mode of a stream. */
288
+ classifierModeFor?(packetId: number, catalogTrackName?: string): {
289
+ mode: ClassifierMode;
290
+ reason: ClassifierReason | null;
291
+ };
292
+ /** Whether an MPU boundary still bounds the stream's RAPs. */
293
+ mpuBoundsRapsFor?(packetId: number, catalogTrackName?: string): boolean;
294
+ /** Record a RAP released in order (RAP-spacing invariant). */
295
+ noteReleasedRap?(packetId: number, catalogTrackName: string | undefined, mpu: number, presentationTime: bigint, mediaTimescale: number): void;
296
+ /** Refresh the block inactivity deadline after accepted repair progress. */
297
+ noteBlockActivity?(sbn: number, packetId: number, catalogTrackName?: string): void;
298
+ /** Cancel block timeout (block completed via clean or FEC recovery). */
299
+ cancelBlockTimeout(sbn: number, packetId?: number, catalogTrackName?: string): void;
300
+ /** Check if a block is already completed (clean or recovered). */
301
+ isBlockCompleted(sbn: number, packetId?: number, catalogTrackName?: string): boolean;
302
+ /** Mark a block as completed externally (after routing recovered data). */
303
+ markBlockCompleted(sbn: number, packetId?: number, catalogTrackName?: string): void;
304
+ /** Increment blocksRecovered stat (called after routing recovery). */
305
+ countRecovery(packetId?: number, sbn?: number, catalogTrackName?: string): void;
306
+ /**
307
+ * The configured catalog `fec.blockProfile` of a packetId, or undefined
308
+ * while it is unconfigured. Required: a Source or Repair FEC Payload ID is
309
+ * read under exactly one profile, and the router never guesses it.
310
+ */
311
+ blockProfileForPacket(packetId: number): FecBlockProfile | undefined;
312
+ /** iso-ssbg1-v1: whether a protected packet fits one ssbg_mode1 symbol. */
313
+ isoSourceFits?(packetId: number, packetLength: number): boolean;
314
+ /** iso-ssbg1-v1: locate a source in a block a repair already stated. */
315
+ locateIsoSource?(packetId: number, catalogTrackName: string | undefined, ssId: number): {
316
+ sbn: number;
317
+ esi: number;
318
+ } | null;
319
+ /** iso-ssbg1-v1: hold a first-arrival source until a repair states its block. */
320
+ holdIsoSource?(packetId: number, catalogTrackName: string | undefined, ssId: number, source: IsoHeldSource): boolean;
321
+ /** iso-ssbg1-v1: state a repair's block and hand back the held sources it places. */
322
+ placeIsoRepair?(packetId: number, catalogTrackName: string | undefined, ssStart: number, ssbLength: number): IsoRepairPlacement<IsoHeldSource>;
323
+ /** iso-ssbg1-v1: resolution of the SS_IDs strictly between two released frames. */
324
+ isoSpanResolution?(packetId: number, catalogTrackName: string | undefined, fromSsId: number, toSsId: number): readonly number[] | null;
325
+ /** FEC source symbol count K per block. */
326
+ readonly k: number;
327
+ kForPacket?(packetId: number): number;
328
+ /**
329
+ * The longest a block stays open after its last symbol (inactivity fail
330
+ * bound plus D-28 repair grace). With interleaveDepthMsForPacket it bounds
331
+ * how long the router keeps a stream's duplicate ledgers.
332
+ */
333
+ blockLifetimeMsForPacket?(packetId: number): number;
334
+ /** FEC symbol size T in bytes (0 = unknown / no FEC). */
335
+ readonly symbolSize: number;
336
+ symbolSizeForPacket?(packetId: number): number;
337
+ /** Update framerate — used to refine FEC block timeout. */
338
+ setFramerate(fps: number): void;
339
+ /** Per-block state snapshot for FecBlockGrid visualization. */
340
+ getBlockStates(): Array<{
341
+ sbn: number;
342
+ packetId?: number;
343
+ state: "collecting" | "complete" | "failed";
344
+ sourceCount: number;
345
+ k: number;
346
+ progress: number;
347
+ }>;
348
+ /** FEC statistics snapshot. */
349
+ readonly fecStats: {
350
+ sourcePackets: number;
351
+ repairPackets: number;
352
+ blocksClean: number;
353
+ blocksRecovered: number;
354
+ blocksFailed: number;
355
+ };
356
+ /** Called when a block receives its first source symbol. */
357
+ onBlockStarted: ((sbn: number, packetId: number, catalogTrackName?: string) => void) | null;
358
+ /** Called when a block completes cleanly (all K sources arrived). */
359
+ onBlockComplete: ((sbn: number, packetId: number, catalogTrackName?: string) => void) | null;
360
+ /** Called when a block times out (unrecoverable), with its class. */
361
+ onBlockFailed: ((sbn: number, packetId: number, catalogTrackName: string | undefined, blockClass: BlockClass) => void) | null;
362
+ /** Called when a block reaches any terminal state. */
363
+ onBlockResolved?: ((sbn: number, packetId: number, catalogTrackName: string | undefined) => void) | null;
364
+ /** Called when a stream's FEC source restarted (SBN discontinuity). */
365
+ onSourceDiscontinuity?: ((packetId: number, catalogTrackName: string | undefined) => void) | null;
366
+ /** Dispose timers and state. */
367
+ dispose(): void;
368
+ }
369
+ export interface ManifestIdentityResolutionInput {
370
+ packetId: number;
371
+ sbn: number;
372
+ esi: number;
373
+ /**
374
+ * The packet's SS_ID and its MPU's mpu_sequence_number. Under
375
+ * iso-ssbg1-v1 blocks vary in length, so a packet's media group comes from
376
+ * its own MPU header, never from SBN arithmetic (BLO-35597 D2a).
377
+ */
378
+ ssId?: number;
379
+ mpuSequenceNumber?: number;
380
+ catalogTrackName?: string;
381
+ recovered: boolean;
382
+ sourceSymbolFormat: "full-mmtp-packet" | "fec-padded-recovery";
383
+ }
384
+ export type ManifestIdentityResolver = (input: ManifestIdentityResolutionInput) => ManifestObjectIdentity | null;
385
+ export declare class MmtpRouter {
386
+ #private;
387
+ constructor(config?: {
388
+ fecManager?: FECManagerLike;
389
+ fecMapper?: FecBlockMapper;
390
+ /** MFU reassembly timeout (ms) for FEC recovery path. Derive from FEC interleaveDepthMs. */
391
+ mfuTimeoutMs?: number;
392
+ reassemblyPolicy?: MfuReassemblyPolicy;
393
+ reassembler?: MfuReassemblerBackend;
394
+ maxBufferedMfus?: number;
395
+ /** Catalog-derived keyframe loss timeout (ms). Derive from explicit
396
+ * keyframe/group duration; do not use FEC sourceSymbols as GOP length.
397
+ * Pass a reader when its inputs are measured later; see
398
+ * setKeyframeLostTimeoutMs. */
399
+ keyframeLostTimeoutMs?: number | (() => number);
400
+ manifestVerifier?: ManifestVerifier;
401
+ /** Existing behavior is router ownership; shared browser plans opt into caller ownership. */
402
+ manifestVerifierOwnership?: "caller" | "router";
403
+ resolveManifestIdentity?: (packetId: number, sbn: number, esi: number, catalogTrackName?: string) => ManifestObjectIdentity | null;
404
+ resolveManifestIdentityForRoute?: ManifestIdentityResolver;
405
+ /** Internal terminal-failure sink owned by the composing transport. */
406
+ onBlockFailed?: (sbn: number, packetId: number, catalogTrackName: string | undefined, blockClass: BlockClass) => void;
407
+ /** Internal gap-decision sink owned by the composing transport. */
408
+ onFrameGap?: (decision: FrameGapDecision) => void;
409
+ /**
410
+ * Called when a multicast stream's publisher restarted its wire counters,
411
+ * after the router reset its own state for the stream, so the composing
412
+ * transport can reset what it holds (FEC blocks, repair I/O) before the
413
+ * packet that revealed the restart is processed.
414
+ */
415
+ onPublisherRestart?: (packetId: number, catalogTrackName: string) => void;
416
+ });
417
+ get fecManager(): FECManagerLike | null;
418
+ /**
419
+ * How long this router keeps a packet ID's duplicate ledgers, derived from
420
+ * the FEC manager's geometry for it (see duplicate-ledger.ts), or why no
421
+ * horizon is derivable (the stream then keeps count-bounded ledgers, or none
422
+ * without an FEC manager). A stream reads this when it moves to a new FEC
423
+ * block, so a catalog change applies from the next block.
424
+ */
425
+ duplicateHorizonFor(packetId: number): DuplicateHorizon;
426
+ /** Publisher restarts detected on the multicast leg since construction. */
427
+ get publisherRestartCount(): number;
428
+ /**
429
+ * Packets whose Source or Repair FEC Payload ID was left unread because
430
+ * their (owner) packetId had no configured `fec.blockProfile`: FEC not
431
+ * configured yet for a track whose packets already flow, or a track whose
432
+ * catalog FEC was unusable. Such a source packet's media is routed as on a
433
+ * track without FEC; such a repair packet is dropped. Neither is read as a
434
+ * block coordinate under a guessed profile, and neither touches FEC state.
435
+ */
436
+ get fecPayloadIdsWithoutProfile(): number;
437
+ get reassembler(): MfuReassemblerBackend;
438
+ getDiagnostics(): Record<number, ParserDiagnostics>;
439
+ /** Register callback for keyframe loss detection.
440
+ * Fires when no complete keyframe is emitted within keyframeLostTimeoutMs.
441
+ * Argument: next expected groupId (lastKeyframeGroupId + 1). */
442
+ onKeyframeLost(cb: (expectedGroupId: number) => void): void;
443
+ /**
444
+ * Set the keyframe loss timeout after construction.
445
+ * Must be called BEFORE setPacketIdType('video').
446
+ * A fixed timeout derives from explicit keyframe/group duration:
447
+ * Math.ceil(groupDurationMs * KEYFRAME_LOST_TIMEOUT_SLACK).
448
+ * A timeout whose inputs are measured after configuration (e.g. keyframe
449
+ * cadence plus measured playout lateness) is passed as a reader, evaluated
450
+ * each time the timer is armed. Both forms pass the same check at each arm:
451
+ * a throw, or a value that is not finite, positive and within the timer
452
+ * maximum, leaves that keyframe unarmed (fail closed per keyframe, not per
453
+ * session). A fixed NaN, e.g. derived from a catalog without a group
454
+ * duration, therefore never reaches setTimeout.
455
+ */
456
+ setKeyframeLostTimeoutMs(ms: number | (() => number)): void;
457
+ /** Update MFU reassembly timeout. Source and FEC-recovery paths share the
458
+ * parser's single reassembler (BLO-8151), so one update covers both. */
459
+ setMfuTimeoutMs(ms: number): void;
460
+ /** Update parser frame reordering for unordered multicast delivery.
461
+ * Callers derive this from the catalog FEC block span (§5.1 — the
462
+ * interleave value IS the span): positive round-half-up of span / frameMs. */
463
+ setReorderWindow(windowSize: number): void;
464
+ /** Register MMTP packetId → track type mapping.
465
+ * Call BEFORE packets arrive to ensure correct routing from the first packet.
466
+ * If keyframeLostTimeoutMs is not provided, Phase 13 keyframe repair is
467
+ * disabled (video still routes/decodes normally). framerate is OPTIONAL per
468
+ * draft-ietf-moq-catalogformat-01 §3.2.23, so we can't require the timeout. */
469
+ setPacketIdType(packetId: number, trackType: "video" | "audio"): void;
470
+ /** Media kind registered for a packetId, if any. */
471
+ trackKindFor(packetId: number): "video" | "audio" | undefined;
472
+ /** Register codec string for a packetId — enables codec-aware keyframe detection.
473
+ * Without this, only H.264 IDR (NAL type 5) is detected as keyframe fallback.
474
+ * AV1 (OBU_SEQUENCE_HEADER) and VP9 (frame_type bit) require the codec string. */
475
+ setTrackCodec(packetId: number, codec: string): void;
476
+ /** @deprecated Use onTrackFrame(packetId, cb) for per-track routing */
477
+ onVideoFrame(cb: FrameCallback): void;
478
+ /** @deprecated Use onTrackFrame(packetId, cb) for per-track routing */
479
+ onAudioFrame(cb: FrameCallback): void;
480
+ /** Register a frame callback for a specific MMTP packetId (track).
481
+ * When a legacy callback (onVideoFrame/onAudioFrame) also exists for this
482
+ * packetId's type, both fire: per-track first, then legacy. This ensures
483
+ * element.ts wiring (confirmAudio, feedMulticast) continues working when
484
+ * TrackPipeline registers per-track sources. */
485
+ onTrackFrame(packetId: number, cb: FrameCallback): void;
486
+ /** Register a raw MMTP source-packet callback for one track.
487
+ *
488
+ * Direct packets retain their original bytes, including a Source FEC Payload
489
+ * ID when present. FEC-recovered packets are the recovered source-symbol
490
+ * bytes and set `skipFecPayloadId` because that trailer is not part of the
491
+ * protected symbol. Repair packets are never delivered here.
492
+ */
493
+ onTrackPacket(packetId: number, cb: TrackPacketCallback): void;
494
+ /** Register an init segment callback (ftyp+moov from MMTP MPU metadata). */
495
+ onInitSegment(cb: (data: Uint8Array) => void): void;
496
+ /** Register an init segment callback for a specific MMTP packetId.
497
+ * Called when FT=0 init arrives via direct source or FEC recovery. */
498
+ onTrackInit(packetId: number, cb: (data: Uint8Array) => void): void;
499
+ /** Create a CMAF block assembler for MSE mode on a specific track.
500
+ * When active, source frames are buffered per FEC block and emitted as
501
+ * multi-sample CMAF segments instead of per-frame callbacks. */
502
+ enableMseAssembler(packetId: number, config: Omit<BlockAssemblerConfig, "k">, catalogTrackName?: string): CmafBlockAssembler;
503
+ /** Register a segment callback for a track's MSE assembler.
504
+ * Called with complete moof+mdat CMAF segments on block completion. */
505
+ onMseSegment(packetId: number, cb: (segment: Uint8Array) => void, catalogTrackName?: string): void;
506
+ /** Register a raw-sample callback for a track's MSE assembler.
507
+ * Use this when the caller already owns the fMP4/MSE timeline and only wants
508
+ * FEC recovery, keyframe gating, and dedup from the assembler. */
509
+ onMseSample(packetId: number, cb: (sample: CmafBlockSample) => void, catalogTrackName?: string): void;
510
+ /** Register an init segment callback for a track's MSE assembler. */
511
+ onMseInitSegment(packetId: number, cb: (init: Uint8Array) => void, catalogTrackName?: string): void;
512
+ /** Build and emit init segment for a track's MSE assembler from catalog config. */
513
+ emitMseInit(packetId: number, catalogTrackName?: string): void;
514
+ /** Mark a video track as synchronized by an external path.
515
+ * This opens the MMTP/FEC pre-sync gates without waiting for a multicast
516
+ * keyframe, for MSE timelines already seeded by MoQ with the same track. */
517
+ markExternalVideoSync(packetId?: number, catalogTrackName?: string): void;
518
+ /** Register callback for FEC blocks when the first source symbol arrives. */
519
+ onFecBlockStarted(cb: (sbn: number, packetId: number) => void): void;
520
+ /** Register a diagnostic callback for FEC blocks that fail. A failure is
521
+ * not a decoder instruction: act on `RoutedFrameMeta.gapBefore`. */
522
+ onFecBlockFailed(cb: (sbn: number, packetId: number, catalogTrackName: string | undefined, blockClass: BlockClass) => void): void;
523
+ /**
524
+ * Register a TrackRole for a specific packetId.
525
+ *
526
+ * D-26: Enables per-role block-complete fanout — delta-role packetIds fire
527
+ * onDeltaBlockComplete when their FEC block completes or fails.
528
+ * Composite callback preserved: legacy onVideoFrame/onAudioFrame still fire
529
+ * (MEMORY.md "prevents callback stealing").
530
+ *
531
+ * Valid roles: 'base' | 'delta' | 'repair' | 'single'.
532
+ * Throws on unknown role (error on bad init, CLAUDE.md).
533
+ */
534
+ setPacketIdRole(packetId: number, role: TrackRole): void;
535
+ /** Replace catalog-derived repair ownership before a catalog reconfiguration. */
536
+ clearRepairPacketIdOwners(): void;
537
+ /** Bind one dedicated repair-track PID to its authoritative media PID. */
538
+ setRepairPacketIdOwner(repairPacketId: number, ownerPacketId: number): void;
539
+ /**
540
+ * Register callback fired when a delta-track FEC block completes or fails.
541
+ *
542
+ * @param cb - (packetId, failed) — packetId identifies the delta track,
543
+ * failed=false means clean/recovered, failed=true means unrecoverable.
544
+ *
545
+ * Called from both onBlockComplete (failed=false) and onBlockFailed (failed=true)
546
+ * for every packetId registered with role='delta' via setPacketIdRole().
547
+ */
548
+ onDeltaBlockComplete(cb: (packetId: number, failed: boolean) => void): void;
549
+ /** Update framerate — delegates to FECManager for timeout refinement. */
550
+ setFramerate(fps: number): void;
551
+ /** Set FEC block mapper (created when FEC config becomes known via configureFec). */
552
+ setFecMapper(mapper: FecBlockMapper, packetId?: number): void;
553
+ registerManifestTrack(context: ManifestTrackContext): void;
554
+ feedManifestFrame(trackName: string, frame: Uint8Array): void;
555
+ setManifestAuthMode(mode: ManifestAuthMode): void;
556
+ /**
557
+ * Main entry point: feed a raw MMTP packet for processing.
558
+ *
559
+ * Source packets are played immediately AND fed to FECManager for recovery.
560
+ * Repair packets are fed to FECManager only (no direct playback).
561
+ */
562
+ /**
563
+ * Feed one MMTP source packet.
564
+ *
565
+ * `source` is REQUIRED. It used to default to "multicast", which meant any
566
+ * caller that forgot it silently attributed its bytes to a multicast socket
567
+ * they may never have crossed — and that attribution is what the physical-
568
+ * delivery evidence path is built on. Absence is not multicast; say which.
569
+ */
570
+ feedPacket(packet: Uint8Array, source: "multicast" | "moq", manifestIdentity?: ManifestObjectIdentity, ingress?: MmtpIngressContext): void;
571
+ /**
572
+ * Feed a reliable MoQ duplicate of a source packet that the multicast leg
573
+ * also carries, during make-before-break overlap.
574
+ *
575
+ * The copy is parsed for playback (attributed to "moq") so a pending
576
+ * multicast decoder can warm. For an FEC-tagged packet the router keeps a
577
+ * per-symbol (SBN/ESI) parse ledger, so whichever of it and its multicast
578
+ * twin arrives first is parsed and the second is not. The MFU reassembler
579
+ * cannot be that dedup: complete (FI=0) MFUs bypass its #emitted set.
580
+ *
581
+ * The ledger exists only where a symbol coordinate does: a packet with no
582
+ * FEC payload ID, or a router with no FEC manager, has none, so it and its
583
+ * twin are BOTH parsed. On an audio track that delivers the sample twice
584
+ * (#emitDirectSourceAudio counts the regression and still emits). The
585
+ * intended deployment is safe because the multicast leg is FEC-protected,
586
+ * so its media packets carry the ID; the untagged timing packets
587
+ * (init/moof) take this path too, where a re-parse is benign. Do not feed
588
+ * untagged media through here.
589
+ *
590
+ * The copy never enters FEC
591
+ * accounting: no `feedSymbolFromSource`, `trackBlock` or
592
+ * `feedSourceSymbol`. Block completion and the repair deadline therefore
593
+ * follow the multicast leg alone, and a multicast erasure still starves its
594
+ * block and requests repair. Feeding the copy through `feedPacket` instead
595
+ * would let it close the block, hiding exactly the loss repair exists for.
596
+ *
597
+ * MoQ unicast fallback is not an overlap copy: it is the only source, so it
598
+ * uses `feedPacket(packet, "moq")` and counts toward completion.
599
+ */
600
+ feedOverlapCopy(packet: Uint8Array, ingress?: MmtpIngressContext): void;
601
+ /**
602
+ * Feed a repair packet from MoQ (reliable QUIC) — parses MMTP repair
603
+ * header and delegates to FECManager for FEC recovery.
604
+ */
605
+ feedRepairPacket(packet: Uint8Array, ownerPacketIdHint?: number, catalogTrackName?: string): void;
606
+ /** Route a recovered FEC block through the parser + dedup pipeline.
607
+ * Sync WASM decoders return K fixed-width source symbols concatenated. */
608
+ routeRecoveredBlock(blockId: number, data: Uint8Array, packetId: number, catalogTrackName?: string): void;
609
+ /** Route a single recovered source symbol through the parser + dedup pipeline.
610
+ * Worker-backed decoders emit one padded source symbol per frame event. */
611
+ routeRecoveredSymbol(blockId: number, data: Uint8Array, packetId: number, esi?: number, catalogTrackName?: string): void;
612
+ /** Cancel the active keyframe loss timer.
613
+ * Call on failbackToMoq to prevent a stale timer from firing
614
+ * onKeyframeLost after multicast is no longer the active source. */
615
+ cancelKeyframeLostTimer(): void;
616
+ /** Emit parser frames buffered for a finite input before teardown. */
617
+ flush(): void;
618
+ /** Drop one rendition's parser/router/CMAF epoch without touching peers. */
619
+ resetTrack(packetId: number, catalogTrackName: string): void;
620
+ /**
621
+ * Retire one packet ID, drop-only: remove every registration of it (media
622
+ * kind, codec, frame/packet/init callbacks, FEC mapper, role, repair
623
+ * ownership) and every stream state kept for it (sync gates, emission
624
+ * cursors, duplicate ledgers, queued recovered frames, MSE assemblers,
625
+ * parser buffers and authored timing, MFU reassembly per catalog stream).
626
+ * Nothing buffered is delivered, as on live dispose. A dedicated repair
627
+ * packet ID that this packet ID alone owned loses its repair role with it.
628
+ *
629
+ * Afterwards the packet ID is unknown to the router: its packets and
630
+ * frames are dropped until it is registered again. FEC state lives in the
631
+ * FEC manager and is released there (FECManager.releasePacket).
632
+ */
633
+ retirePacketId(packetId: number): void;
634
+ /**
635
+ * Stage an in-place switch from one video stream to another, committed at
636
+ * a RAP of the incoming stream without leaving the multicast group.
637
+ *
638
+ * Until the commit the outgoing stream (`from`) is delivered as usual and
639
+ * the incoming stream (`to`) is not: its packets are parsed and feed FEC,
640
+ * so its first RAP arrives FEC-protected, but none of its frames, and not
641
+ * its init, reach any callback or MSE assembler. Incoming deltas before its
642
+ * first RAP are dropped. When that RAP arrives:
643
+ *
644
+ * - if the outgoing stream already delivered a frame at or past the RAP's
645
+ * presentation time, the switch commits on it (`outgoing-ahead`);
646
+ * - otherwise the RAP and the incoming frames after it are held, and the
647
+ * switch commits when the outgoing stream is about to deliver a frame at
648
+ * or past the RAP (`outgoing-reached-rap`): that outgoing frame, and every
649
+ * later one, is never delivered, so the splice is exact. If the incoming
650
+ * stream reaches its next RAP first, the outgoing stream is a GOP or more
651
+ * behind: the switch commits on the held RAP and delivers the held GOP
652
+ * and then the newer RAP (`outgoing-overdue`), the smallest gap left once
653
+ * the outgoing stream stops. The hold is bounded by the incoming stream's
654
+ * own RAP cadence, so no timer is involved.
655
+ *
656
+ * The commit is one synchronous transition inside the frame path: the
657
+ * outgoing stream's already-admitted frames are released (its queued FEC
658
+ * gap fills only up to the RAP, since recovery can queue a frame ahead of
659
+ * the source cursor; its MSE assembler's ordering queue whole, as
660
+ * CmafBlockAssembler.flush has no bound, so on the MSE path a recovered
661
+ * outgoing frame at or past the RAP can still be emitted), its packet ID
662
+ * is retired
663
+ * (retirePacketId), `onCommit` runs, and then the incoming stream's newest
664
+ * init and its RAP are delivered, followed by any held frames. No outgoing
665
+ * frame is delivered after the commit and no incoming frame before it. If
666
+ * `onCommit` throws, `to` is retired too and none of it is delivered.
667
+ *
668
+ * Both packet IDs must be registered video streams; the commit reads RAPs.
669
+ * Admission (the transport allow-list and ingress tracks) is the caller's:
670
+ * MulticastManager.switchRendition drives both.
671
+ */
672
+ stageStreamSwitch(options: StreamSwitchOptions): StagedStreamSwitch;
673
+ /** Live teardown is drop-only. Finite inputs must opt into a final flush. */
674
+ dispose(options?: {
675
+ flush?: boolean;
676
+ }): void;
677
+ }
678
+ export {};
679
+ //# sourceMappingURL=mmtp-router.d.ts.map