@blockcast/mmt-container 0.3.0 → 0.4.0-main.1cd3cdea89da

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 +14814 -14255
  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 +52 -30
  30. package/dist/fec-manager.d.ts.map +1 -1
  31. package/dist/fec-manager.js +338 -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 +14 -11
  54. package/dist/mmtp-container-parser.d.ts.map +1 -1
  55. package/dist/mmtp-container-parser.js +126 -99
  56. package/dist/mmtp-container-parser.js.map +4 -4
  57. package/dist/mmtp-container-parser.no-modules.js +151 -108
  58. package/dist/mmtp-container-parser.no-modules.js.map +4 -4
  59. package/dist/mmtp-decode-pipeline.js +126 -99
  60. package/dist/mmtp-decode-pipeline.js.map +4 -4
  61. package/dist/mmtp-router.d.ts +51 -29
  62. package/dist/mmtp-router.d.ts.map +1 -1
  63. package/dist/mmtp-router.js +260 -326
  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 +72 -6
  68. package/dist/multicast-manager.d.ts.map +1 -1
  69. package/dist/multicast-manager.js +882 -673
  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 +147 -106
  78. package/dist/no-modules.js.map +4 -4
  79. package/dist/repair-fetch.d.ts +116 -21
  80. package/dist/repair-fetch.d.ts.map +1 -1
  81. package/dist/repair-fetch.js +114 -34
  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 +126 -99
  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 +457 -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 +106 -20
  113. package/src/mmtp-router.ts +189 -330
  114. package/src/multicast-manager.ts +265 -86
  115. package/src/multicast-transport.ts +16 -9
  116. package/src/repair-fetch.ts +273 -43
  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,258 +0,0 @@
1
- /**
2
- * RFC 6330 Object Transmission Information (OTI) utilities.
3
- *
4
- * Shared OTI encoding/decoding for both moq-lib and moqtail players.
5
- * Eliminates duplicated OTI byte manipulation across codebases.
6
- */
7
- export interface OTIParams {
8
- /** Transfer length F (total source block size in bytes) */
9
- transferLength: number;
10
- /** Symbol size T (bytes per symbol) */
11
- symbolSize: number;
12
- /** Number of source blocks Z */
13
- sourceBlocks: number;
14
- /** Number of sub-blocks N */
15
- subBlocks: number;
16
- /** Symbol alignment Al */
17
- alignment: number;
18
- }
19
- /**
20
- * Build a 12-byte RFC 6330 Common + Scheme-Specific OTI from parameters.
21
- *
22
- * Wire format (per RFC 6330 §4.3.1 + §4.3.3):
23
- * byte 0: F high byte (bit 32 — transfer length is 40-bit)
24
- * bytes 1-4: F low 32 bits (big-endian)
25
- * byte 5: reserved (0)
26
- * bytes 6-7: T (symbol size, big-endian)
27
- * byte 8: Z (source blocks)
28
- * bytes 9-10: N (sub-blocks, big-endian)
29
- * byte 11: Al (alignment)
30
- */
31
- export declare function buildOTI(params: OTIParams): Uint8Array;
32
- /**
33
- * Build OTI from catalog FEC config (K and T).
34
- * F = K × T (interleaved encoder convention from FFmpeg moqenc_mmt.c).
35
- */
36
- export declare function buildOTIFromCatalog(K: number, T: number): Uint8Array;
37
- /**
38
- * Parse a 12-byte OTI into structured parameters.
39
- */
40
- export declare function parseOTI(oti: Uint8Array): OTIParams & {
41
- K: number;
42
- };
43
- /**
44
- * Resolve a catalog FEC block's span in milliseconds.
45
- *
46
- * The catalog carries exactly ONE interleave field: `interleaveDepthMs`, the
47
- * full FEC block span in MILLISECONDS (draft-ramadan-moq-fec §5.1). Receivers
48
- * derive D -- the MEDIA UNITS per block, not a block count -- with
49
- * `deriveFecInterleaveDepth`. Reading D as a block count is BLO-35597.
50
- *
51
- * Absent, non-finite or non-positive → undefined; callers treat that as
52
- * unconfigured and error rather than guess. Finiteness is checked separately
53
- * from `> 0` because `Infinity` satisfies `> 0`: a JSON catalog cannot spell
54
- * `Infinity`, but any overflowing literal (`1e999`) parses to it, and it would
55
- * then reach `fecBlockBudgetMs` as an unbounded span. The legacy
56
- * `interleaveDepth` frame-count key and
57
- * the `interleaveMs` alias were removed in the BLO-14526 clean cut — producers
58
- * emit milliseconds only, and there is deliberately NO fallback read.
59
- */
60
- export type FecInterleaveCatalog = {
61
- interleaveDepthMs?: number;
62
- };
63
- export declare function catalogFecInterleaveMs(fec: FecInterleaveCatalog | undefined): number | undefined;
64
- /**
65
- * Derive the integer FEC interleave depth D from a catalog block span and the
66
- * duration of one media unit.
67
- *
68
- * `interleaveDepthMs` is nearest-millisecond catalog signaling while media
69
- * unit durations are commonly fractional. Invert that quantization with
70
- * positive-value round-half-up semantics:
71
- *
72
- * D = max(1, floor(interleaveDepthMs / mediaUnitDurationMs + 0.5))
73
- *
74
- * `Math.ceil` is not equivalent: 4000 / 33.333 is slightly greater than 120,
75
- * but represents D=120 rather than D=121.
76
- */
77
- export declare function deriveFecInterleaveDepth(interleaveDepthMs: number, mediaUnitDurationMs: number): number;
78
- /**
79
- * Compute the full FEC block completion timeout from the catalog block span.
80
- *
81
- * The catalog's `interleaveDepthMs` IS the full FEC block span in
82
- * milliseconds (draft-ramadan-moq-fec §5.1): producers emit
83
- * D × unit-duration, and every symbol of a block — source and repair —
84
- * arrives within that span. The full-block timeout is therefore
85
- * K-INDEPENDENT:
86
- *
87
- * timeout = interleaveDepthMs * safetyFactor
88
- *
89
- * A caller that genuinely needs a per-sub-block deadline scales the block
90
- * span by K_sub / K. Never scale it by a symbol count: the span already
91
- * covers every symbol of the block.
92
- *
93
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
94
- * @param safetyFactor - Jitter margin (default 3.0)
95
- * @returns Timeout in milliseconds
96
- */
97
- export declare function computeFecTimeout(interleaveDepthMs: number, safetyFactor?: number): number;
98
- /**
99
- * Absolute deadline for one FEC block.
100
- *
101
- * deadline = firstAcceptedAtMs + interleaveDepthMs + reorderToleranceMs
102
- *
103
- * Two properties matter, and both are contract, not preference:
104
- *
105
- * 1. The anchor is an ABSOLUTE receiver-local timestamp of the first accepted
106
- * packet of the block -- not "now when we noticed", and not a duration a
107
- * caller starts counting at an unspecified moment. A relative timeout
108
- * cannot say WHEN a block was due, so it cannot yield playback latency and
109
- * it cannot be compared across two consumers that started their timers at
110
- * different instants.
111
- *
112
- * 2. The reorder/jitter allowance is ADDITIVE and SIGNALED, never a multiplier
113
- * on the span. Jitter is a property of the network path; the FEC block span
114
- * is a property of the encoder. Multiplying them couples two independent
115
- * quantities: at a 133ms video span a x3 factor grants 266ms of slack, and
116
- * at a 43ms audio span only 86ms -- for the same network. The tolerance
117
- * therefore arrives as its own catalog value and is added once.
118
- *
119
- * Both arguments are required. There is no default tolerance: a missing value
120
- * is an encoder/catalog bug and must surface at the boundary, not be papered
121
- * over with a constant here.
122
- *
123
- * @param firstAcceptedAtMs - Receiver-local ms timestamp of the block's first accepted packet
124
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
125
- * @param reorderToleranceMs - Declared jitter/reorder allowance in ms (catalog fec.reorderToleranceMs)
126
- * @returns Absolute receiver-local deadline in milliseconds
127
- */
128
- export declare function fecBlockDeadlineMs(params: {
129
- firstAcceptedAtMs: number;
130
- interleaveDepthMs: number;
131
- reorderToleranceMs: number;
132
- }): number;
133
- /**
134
- * Relative budget for one FEC block: span + declared tolerance.
135
- *
136
- * Only for consumers whose interface genuinely takes a duration (the WASM
137
- * reassembler's `timeoutMs`). Anything that can hold a timestamp should use
138
- * `fecBlockDeadlineMs` instead, so the anchor stays explicit and latency stays
139
- * extractable. This is deliberately NOT `span * factor` -- see the note on
140
- * `fecBlockDeadlineMs` for why the tolerance is additive.
141
- */
142
- export declare function fecBlockBudgetMs(interleaveDepthMs: number, reorderToleranceMs: number): number;
143
- /**
144
- * How many FEC blocks a receiver must retain, in SBN distance.
145
- *
146
- * THE ONE derivation of "the interleave horizon". Every site that retires a
147
- * block by SBN distance consumes this: the Worker/WASM decoder's retention
148
- * (`interleaveDepth` -> `cleanup_by_sbn`) and FECManager's ordered-relay
149
- * settlement horizon. They are not two quantities that happen to agree -- a
150
- * settlement that fires inside the decoder's retention kills a block the
151
- * decoder would still have recovered, so the invariant is:
152
- *
153
- * ordered-relay settlement must never fire on a block the decoder would
154
- * still accept -- manager horizon >= decoder retention.
155
- *
156
- * Deriving it twice is what broke it (BLO-35597): `deriveFecInterleaveDepth`
157
- * returns D, MEDIA UNITS per block, and reading that as a block count made the
158
- * two horizons disagree the moment either side moved. Add a consumer here
159
- * rather than re-deriving at the call site.
160
- *
161
- * The count is the blocks that can be in flight within one block's delivery
162
- * budget, plus the one being filled.
163
- *
164
- * That is DELIBERATELY two blocks of slack, not an exact minimum. The decoder
165
- * retains `depth + 1` blocks, not `depth` -- `cleanup_by_sbn` retires only
166
- * blocks strictly behind `current_sbn - interleave_depth`, so the newest block
167
- * and the `depth` behind it all survive. The smallest depth satisfying the
168
- * invariant is therefore `ceil(W/S) - 1`. The slack is bought on purpose: it
169
- * costs retained-block memory and the depth-scaled caps (`maxBlocks`,
170
- * `pendingVerifyCap` in fec-worker), and it buys headroom against a catalog
171
- * whose signaled span runs slightly short of the real one -- the failure this
172
- * whole issue is about. Do not "tighten" it to the minimum without a measured
173
- * reason; being one block short is what fails a block, being two long is not.
174
- *
175
- * The cost ceiling is relative, not absolute: the slack is always two blocks
176
- * of whatever the retention already is, so it scales with the geometry rather
177
- * than with the stream. On the live ISS 720p/33ms catalog that is two blocks
178
- * of six (a third of the buffer, the expensive end); at a 255-block retention
179
- * it is two of 255 (under 1%). If you come here to tighten it, the number to
180
- * weigh is the ratio at YOUR geometry -- tightening buys most where retention
181
- * is small, which is also where being one block short is most likely.
182
- *
183
- * @param deliveryWindowMs - The block's own delivery budget (computeFecDeliveryWindowMs / fecBlockBudgetMs)
184
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
185
- * @returns Block count in 2..=255 for every geometry a catalog can express.
186
- * The floor is 2, not 1: both inputs are guarded `> 0`, so `ceil(quotient)`
187
- * is `>= 1` and the result `>= 2`. A consumer branching on a `1` case is
188
- * reading a contract no real geometry produces. The one arithmetic exception
189
- * is a quotient that underflows to exactly `0` (`Number.MIN_VALUE` over
190
- * 33ms), which returns 1 -- reachable only by calling this directly with
191
- * values a catalog cannot produce. NOT a denormal INPUT specifically: the
192
- * underflow is a property of the QUOTIENT, so two normal operands reach it
193
- * too (`1e-300` over `1e308` returns 1; min normal is ~2.225e-308). Do not
194
- * re-narrow this to "a denormal" -- the guards below admit both of those.
195
- * That a catalog cannot produce such values is a proof, not a judgement
196
- * about plausible values: BOTH branches of `computeFecDeliveryWindowMs` are
197
- * `Math.ceil`-wrapped (one directly, the other via `fecBlockBudgetMs`), so
198
- * every catalog-derived `deliveryWindowMs` is an integer `>= 1`; the quotient
199
- * is then `>= 1/interleaveDepthMs`, which no FINITE span can push below
200
- * `Number.MIN_VALUE`. Documented rather than guarded -- a comparison on the
201
- * per-symbol path for an input the type can express and the system cannot
202
- * produce, and clamping would be the `Math.min(0xff, ...)` anti-pattern this
203
- * change removed.
204
- */
205
- export declare function deriveFecRetentionBlocks(deliveryWindowMs: number, interleaveDepthMs: number): number;
206
- /**
207
- * The ceiling the WASM decoder and the ISO/IEC 23008-1 AL-FEC signaling byte
208
- * both accept. One owner: do not re-state `0xff` against a block count
209
- * anywhere else.
210
- */
211
- export declare const MAX_FEC_RETENTION_BLOCKS = 255;
212
- /**
213
- * `deriveFecRetentionBlocks` without the throw: the block count, or `undefined`
214
- * when the geometry cannot define one.
215
- *
216
- * THIS is the arithmetic; the throwing variant is this plus a diagnosis of
217
- * which guard failed. Callers reached from a **per-symbol** path must use this
218
- * one. An out-of-range `timeoutMs` does not narrow back on its own, so there
219
- * the throwing variant is not a rare error but steady state, and it would
220
- * construct an `Error` with a stack capture and unwind it for every symbol on
221
- * the stream.
222
- */
223
- export declare function tryDeriveFecRetentionBlocks(deliveryWindowMs: number, interleaveDepthMs: number): number | undefined;
224
- /**
225
- * Playback latency for a block, from the same anchor the deadline uses.
226
- *
227
- * latency = presentedAtMs - firstAcceptedAtMs
228
- *
229
- * Both timestamps are receiver-local, so this needs NO publisher/receiver
230
- * clock agreement. That is the point of anchoring the deadline absolutely:
231
- * publisher-stamped media time and receiver BCTM disagree by roughly the
232
- * quantity we are trying to measure, which makes any cross-host subtraction
233
- * unusable at a 33ms target. This subtraction is immune to that skew.
234
- *
235
- * It measures first-accepted-packet to presentation. It is NOT glass-to-glass
236
- * and must not be reported as such -- capture and encode sit outside both
237
- * timestamps.
238
- */
239
- export declare function playbackLatencyMs(params: {
240
- presentedAtMs: number;
241
- firstAcceptedAtMs: number;
242
- }): number;
243
- /**
244
- * Extract FEC parameters from an MMTP repair packet.
245
- *
246
- * Per ISO/IEC 23008-1 Section C.5.3, the 13-byte Repair FEC Payload ID
247
- * follows the complete MMTP header, including optional C/X fields.
248
- *
249
- * Returns raw fields — caller passes directly to WASM add_repair(ss_start, ssb_length, rs_id, data).
250
- * No SBN/ESI derivation — the WASM decoder handles block assignment.
251
- */
252
- export declare function parseRepairPacket(packet: Uint8Array): {
253
- ssStart: number;
254
- ssbLength: number;
255
- rsId: number;
256
- repairData: Uint8Array;
257
- } | null;
258
- //# sourceMappingURL=oti.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oti.d.ts","sourceRoot":"","sources":["../src/oti.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,SAAS;IACzB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAwBtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,CAWpE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,GAAG;IAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAYnE;AAwBD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oBAAoB,GAAG;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,oBAAoB,GAAG,SAAS,GACnC,MAAM,GAAG,SAAS,CAGpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACvC,iBAAiB,EAAE,MAAM,EACzB,mBAAmB,EAAE,MAAM,GACzB,MAAM,CAQR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAChC,iBAAiB,EAAE,MAAM,EACzB,YAAY,GAAE,MAAY,GACxB,MAAM,CAkBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;CAC3B,GAAG,MAAM,CAMT;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAkB9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,wBAAwB,CACvC,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GACvB,MAAM,CAmCR;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,MAAO,CAAC;AAE7C;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,gBAAgB,EAAE,MAAM,EACxB,iBAAiB,EAAE,MAAM,GACvB,MAAM,GAAG,SAAS,CAKpB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAYtG;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;CACzE,GAAG,IAAI,CASP"}
@@ -1,382 +0,0 @@
1
- /**
2
- * RFC 6330 Object Transmission Information (OTI) utilities.
3
- *
4
- * Shared OTI encoding/decoding for both moq-lib and moqtail players.
5
- * Eliminates duplicated OTI byte manipulation across codebases.
6
- */
7
- import { parseMoqRepairFrame } from "@blockcast/mmt-base";
8
- /**
9
- * Build a 12-byte RFC 6330 Common + Scheme-Specific OTI from parameters.
10
- *
11
- * Wire format (per RFC 6330 §4.3.1 + §4.3.3):
12
- * byte 0: F high byte (bit 32 — transfer length is 40-bit)
13
- * bytes 1-4: F low 32 bits (big-endian)
14
- * byte 5: reserved (0)
15
- * bytes 6-7: T (symbol size, big-endian)
16
- * byte 8: Z (source blocks)
17
- * bytes 9-10: N (sub-blocks, big-endian)
18
- * byte 11: Al (alignment)
19
- */
20
- export function buildOTI(params) {
21
- const { transferLength: F, symbolSize: T, sourceBlocks: Z, subBlocks: N, alignment: Al, } = params;
22
- validateOTIFields(F, T, Z, N, Al);
23
- const oti = new Uint8Array(12);
24
- // F: 40-bit big-endian (byte 0 = high, bytes 1-4 = low 32)
25
- oti[0] = (F / 0x100000000) & 0xFF;
26
- oti[1] = (F >>> 24) & 0xFF;
27
- oti[2] = (F >>> 16) & 0xFF;
28
- oti[3] = (F >>> 8) & 0xFF;
29
- oti[4] = F & 0xFF;
30
- // byte 5: reserved
31
- oti[6] = (T >>> 8) & 0xFF;
32
- oti[7] = T & 0xFF;
33
- oti[8] = Z & 0xFF;
34
- oti[9] = (N >>> 8) & 0xFF;
35
- oti[10] = N & 0xFF;
36
- oti[11] = Al & 0xFF;
37
- return oti;
38
- }
39
- /**
40
- * Build OTI from catalog FEC config (K and T).
41
- * F = K × T (interleaved encoder convention from FFmpeg moqenc_mmt.c).
42
- */
43
- export function buildOTIFromCatalog(K, T) {
44
- if (!Number.isInteger(K) || K <= 0 || K > 56_403) {
45
- throw new Error(`K must be an integer in 1..56403 (got ${K})`);
46
- }
47
- return buildOTI({
48
- transferLength: K * T,
49
- symbolSize: T,
50
- sourceBlocks: 1,
51
- subBlocks: 1,
52
- alignment: 8,
53
- });
54
- }
55
- /**
56
- * Parse a 12-byte OTI into structured parameters.
57
- */
58
- export function parseOTI(oti) {
59
- if (oti.length !== 12)
60
- throw new Error(`OTI must be exactly 12 bytes (got ${oti.length})`);
61
- if (oti[5] !== 0)
62
- throw new Error(`OTI reserved byte 5 must be zero (got ${oti[5]})`);
63
- const F = ((oti[0] & 0xFF) * 0x100000000) +
64
- (((oti[1] << 24) | (oti[2] << 16) | (oti[3] << 8) | oti[4]) >>> 0);
65
- const T = (oti[6] << 8) | oti[7];
66
- const Z = oti[8];
67
- const N = (oti[9] << 8) | oti[10];
68
- const Al = oti[11];
69
- validateOTIFields(F, T, Z, N, Al);
70
- const K = Math.ceil(Math.ceil(F / T) / Z);
71
- return { transferLength: F, symbolSize: T, sourceBlocks: Z, subBlocks: N, alignment: Al, K };
72
- }
73
- function validateOTIFields(F, T, Z, N, Al) {
74
- if (!Number.isSafeInteger(F) || F <= 0 || F > 0xffffffffff) {
75
- throw new Error(`F must be a positive 40-bit integer (got ${F})`);
76
- }
77
- if (!Number.isInteger(T) || T <= 0 || T > 0xffff) {
78
- throw new Error(`T must be an integer in 1..65535 (got ${T})`);
79
- }
80
- if (!Number.isInteger(Z) || Z <= 0 || Z > 0xff) {
81
- throw new Error(`Z must be an integer in 1..255 (got ${Z})`);
82
- }
83
- if (!Number.isInteger(N) || N <= 0 || N > 0xffff) {
84
- throw new Error(`N must be an integer in 1..65535 (got ${N})`);
85
- }
86
- if (!Number.isInteger(Al) || Al <= 0 || Al > 0xff || T % Al !== 0) {
87
- throw new Error(`Al must be an integer in 1..255 that divides T (got Al=${Al}, T=${T})`);
88
- }
89
- const K = Math.ceil(Math.ceil(F / T) / Z);
90
- if (K > 56_403) {
91
- throw new Error(`OTI requires K=${K}, above the RFC 6330 systematic limit 56403`);
92
- }
93
- }
94
- export function catalogFecInterleaveMs(fec) {
95
- const ms = fec?.interleaveDepthMs;
96
- return typeof ms === "number" && ms > 0 && Number.isFinite(ms) ? ms : undefined;
97
- }
98
- /**
99
- * Derive the integer FEC interleave depth D from a catalog block span and the
100
- * duration of one media unit.
101
- *
102
- * `interleaveDepthMs` is nearest-millisecond catalog signaling while media
103
- * unit durations are commonly fractional. Invert that quantization with
104
- * positive-value round-half-up semantics:
105
- *
106
- * D = max(1, floor(interleaveDepthMs / mediaUnitDurationMs + 0.5))
107
- *
108
- * `Math.ceil` is not equivalent: 4000 / 33.333 is slightly greater than 120,
109
- * but represents D=120 rather than D=121.
110
- */
111
- export function deriveFecInterleaveDepth(interleaveDepthMs, mediaUnitDurationMs) {
112
- if (!Number.isFinite(interleaveDepthMs) || interleaveDepthMs <= 0) {
113
- throw new Error(`[FEC] interleaveDepthMs must be finite and > 0 (got ${interleaveDepthMs})`);
114
- }
115
- if (!Number.isFinite(mediaUnitDurationMs) || mediaUnitDurationMs <= 0) {
116
- throw new Error(`[FEC] mediaUnitDurationMs must be finite and > 0 (got ${mediaUnitDurationMs})`);
117
- }
118
- return Math.max(1, Math.floor(interleaveDepthMs / mediaUnitDurationMs + 0.5));
119
- }
120
- /**
121
- * Compute the full FEC block completion timeout from the catalog block span.
122
- *
123
- * The catalog's `interleaveDepthMs` IS the full FEC block span in
124
- * milliseconds (draft-ramadan-moq-fec §5.1): producers emit
125
- * D × unit-duration, and every symbol of a block — source and repair —
126
- * arrives within that span. The full-block timeout is therefore
127
- * K-INDEPENDENT:
128
- *
129
- * timeout = interleaveDepthMs * safetyFactor
130
- *
131
- * A caller that genuinely needs a per-sub-block deadline scales the block
132
- * span by K_sub / K. Never scale it by a symbol count: the span already
133
- * covers every symbol of the block.
134
- *
135
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
136
- * @param safetyFactor - Jitter margin (default 3.0)
137
- * @returns Timeout in milliseconds
138
- */
139
- export function computeFecTimeout(interleaveDepthMs, safetyFactor = 3.0) {
140
- // Finite, not merely > 0, and on BOTH arguments: the product is the caller's
141
- // expiry deadline, so a non-finite either side makes every `now > deadline`
142
- // comparison false and the block never expires -- strictly worse than
143
- // expiring late. `NaN <= 0` is false, so a bare `> 0` guard passes it
144
- // through. Both values reach here from JSON (the catalog span, and the
145
- // safety factor via test-vectors/catalog-validation.json), where an
146
- // overflowing literal such as `1e999` parses to Infinity -- JSON has no
147
- // Infinity literal, so there is no other way to spell it.
148
- if (!Number.isFinite(interleaveDepthMs) || interleaveDepthMs <= 0) {
149
- throw new Error(`[FEC] interleaveDepthMs must be a finite value > 0 (got ${interleaveDepthMs}ms). Fix encoder config.`);
150
- }
151
- if (!Number.isFinite(safetyFactor) || safetyFactor <= 0) {
152
- throw new Error(`[FEC] safetyFactor must be a finite value > 0 (got ${safetyFactor}). Fix encoder config.`);
153
- }
154
- // interleaveDepthMs IS the block span. K=4, D=4 at 30fps:
155
- // interleaveDepthMs = 133ms → timeout = ceil(133 * 3) = 399ms.
156
- return Math.ceil(interleaveDepthMs * safetyFactor);
157
- }
158
- /**
159
- * Absolute deadline for one FEC block.
160
- *
161
- * deadline = firstAcceptedAtMs + interleaveDepthMs + reorderToleranceMs
162
- *
163
- * Two properties matter, and both are contract, not preference:
164
- *
165
- * 1. The anchor is an ABSOLUTE receiver-local timestamp of the first accepted
166
- * packet of the block -- not "now when we noticed", and not a duration a
167
- * caller starts counting at an unspecified moment. A relative timeout
168
- * cannot say WHEN a block was due, so it cannot yield playback latency and
169
- * it cannot be compared across two consumers that started their timers at
170
- * different instants.
171
- *
172
- * 2. The reorder/jitter allowance is ADDITIVE and SIGNALED, never a multiplier
173
- * on the span. Jitter is a property of the network path; the FEC block span
174
- * is a property of the encoder. Multiplying them couples two independent
175
- * quantities: at a 133ms video span a x3 factor grants 266ms of slack, and
176
- * at a 43ms audio span only 86ms -- for the same network. The tolerance
177
- * therefore arrives as its own catalog value and is added once.
178
- *
179
- * Both arguments are required. There is no default tolerance: a missing value
180
- * is an encoder/catalog bug and must surface at the boundary, not be papered
181
- * over with a constant here.
182
- *
183
- * @param firstAcceptedAtMs - Receiver-local ms timestamp of the block's first accepted packet
184
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
185
- * @param reorderToleranceMs - Declared jitter/reorder allowance in ms (catalog fec.reorderToleranceMs)
186
- * @returns Absolute receiver-local deadline in milliseconds
187
- */
188
- export function fecBlockDeadlineMs(params) {
189
- const { firstAcceptedAtMs, interleaveDepthMs, reorderToleranceMs } = params;
190
- if (!Number.isFinite(firstAcceptedAtMs)) {
191
- throw new Error(`[FEC] firstAcceptedAtMs must be finite (got ${firstAcceptedAtMs}).`);
192
- }
193
- return firstAcceptedAtMs + fecBlockBudgetMs(interleaveDepthMs, reorderToleranceMs);
194
- }
195
- /**
196
- * Relative budget for one FEC block: span + declared tolerance.
197
- *
198
- * Only for consumers whose interface genuinely takes a duration (the WASM
199
- * reassembler's `timeoutMs`). Anything that can hold a timestamp should use
200
- * `fecBlockDeadlineMs` instead, so the anchor stays explicit and latency stays
201
- * extractable. This is deliberately NOT `span * factor` -- see the note on
202
- * `fecBlockDeadlineMs` for why the tolerance is additive.
203
- */
204
- export function fecBlockBudgetMs(interleaveDepthMs, reorderToleranceMs) {
205
- // Finite, not merely > 0: Infinity satisfies `> 0` and would yield an
206
- // infinite budget, which fecBlockDeadlineMs then turns into a deadline no
207
- // block can ever miss -- the eviction bound silently stops bounding. The
208
- // tolerance check below already required finiteness; this is the same bar
209
- // for the encoder's span.
210
- if (!Number.isFinite(interleaveDepthMs) || !(interleaveDepthMs > 0)) {
211
- throw new Error(`[FEC] interleaveDepthMs must be a finite value > 0 (got ${interleaveDepthMs}ms). Fix encoder config.`);
212
- }
213
- if (!(reorderToleranceMs >= 0) || !Number.isFinite(reorderToleranceMs)) {
214
- throw new Error(`[FEC] reorderToleranceMs must be a finite value >= 0 (got ${reorderToleranceMs}ms). ` +
215
- `It is a catalog value (fec.reorderToleranceMs), not a local default.`);
216
- }
217
- return Math.ceil(interleaveDepthMs + reorderToleranceMs);
218
- }
219
- /**
220
- * How many FEC blocks a receiver must retain, in SBN distance.
221
- *
222
- * THE ONE derivation of "the interleave horizon". Every site that retires a
223
- * block by SBN distance consumes this: the Worker/WASM decoder's retention
224
- * (`interleaveDepth` -> `cleanup_by_sbn`) and FECManager's ordered-relay
225
- * settlement horizon. They are not two quantities that happen to agree -- a
226
- * settlement that fires inside the decoder's retention kills a block the
227
- * decoder would still have recovered, so the invariant is:
228
- *
229
- * ordered-relay settlement must never fire on a block the decoder would
230
- * still accept -- manager horizon >= decoder retention.
231
- *
232
- * Deriving it twice is what broke it (BLO-35597): `deriveFecInterleaveDepth`
233
- * returns D, MEDIA UNITS per block, and reading that as a block count made the
234
- * two horizons disagree the moment either side moved. Add a consumer here
235
- * rather than re-deriving at the call site.
236
- *
237
- * The count is the blocks that can be in flight within one block's delivery
238
- * budget, plus the one being filled.
239
- *
240
- * That is DELIBERATELY two blocks of slack, not an exact minimum. The decoder
241
- * retains `depth + 1` blocks, not `depth` -- `cleanup_by_sbn` retires only
242
- * blocks strictly behind `current_sbn - interleave_depth`, so the newest block
243
- * and the `depth` behind it all survive. The smallest depth satisfying the
244
- * invariant is therefore `ceil(W/S) - 1`. The slack is bought on purpose: it
245
- * costs retained-block memory and the depth-scaled caps (`maxBlocks`,
246
- * `pendingVerifyCap` in fec-worker), and it buys headroom against a catalog
247
- * whose signaled span runs slightly short of the real one -- the failure this
248
- * whole issue is about. Do not "tighten" it to the minimum without a measured
249
- * reason; being one block short is what fails a block, being two long is not.
250
- *
251
- * The cost ceiling is relative, not absolute: the slack is always two blocks
252
- * of whatever the retention already is, so it scales with the geometry rather
253
- * than with the stream. On the live ISS 720p/33ms catalog that is two blocks
254
- * of six (a third of the buffer, the expensive end); at a 255-block retention
255
- * it is two of 255 (under 1%). If you come here to tighten it, the number to
256
- * weigh is the ratio at YOUR geometry -- tightening buys most where retention
257
- * is small, which is also where being one block short is most likely.
258
- *
259
- * @param deliveryWindowMs - The block's own delivery budget (computeFecDeliveryWindowMs / fecBlockBudgetMs)
260
- * @param interleaveDepthMs - Full FEC block span in ms (catalog fec.interleaveDepthMs)
261
- * @returns Block count in 2..=255 for every geometry a catalog can express.
262
- * The floor is 2, not 1: both inputs are guarded `> 0`, so `ceil(quotient)`
263
- * is `>= 1` and the result `>= 2`. A consumer branching on a `1` case is
264
- * reading a contract no real geometry produces. The one arithmetic exception
265
- * is a quotient that underflows to exactly `0` (`Number.MIN_VALUE` over
266
- * 33ms), which returns 1 -- reachable only by calling this directly with
267
- * values a catalog cannot produce. NOT a denormal INPUT specifically: the
268
- * underflow is a property of the QUOTIENT, so two normal operands reach it
269
- * too (`1e-300` over `1e308` returns 1; min normal is ~2.225e-308). Do not
270
- * re-narrow this to "a denormal" -- the guards below admit both of those.
271
- * That a catalog cannot produce such values is a proof, not a judgement
272
- * about plausible values: BOTH branches of `computeFecDeliveryWindowMs` are
273
- * `Math.ceil`-wrapped (one directly, the other via `fecBlockBudgetMs`), so
274
- * every catalog-derived `deliveryWindowMs` is an integer `>= 1`; the quotient
275
- * is then `>= 1/interleaveDepthMs`, which no FINITE span can push below
276
- * `Number.MIN_VALUE`. Documented rather than guarded -- a comparison on the
277
- * per-symbol path for an input the type can express and the system cannot
278
- * produce, and clamping would be the `Math.min(0xff, ...)` anti-pattern this
279
- * change removed.
280
- */
281
- export function deriveFecRetentionBlocks(deliveryWindowMs, interleaveDepthMs) {
282
- const blocks = tryDeriveFecRetentionBlocks(deliveryWindowMs, interleaveDepthMs);
283
- if (blocks !== undefined)
284
- return blocks;
285
- // Undefined means one of three things. Re-test to say which -- this is the
286
- // throwing path, so the cost is irrelevant and the diagnosis is the point.
287
- if (!Number.isFinite(interleaveDepthMs) || !(interleaveDepthMs > 0)) {
288
- throw new Error(`[FEC] interleaveDepthMs must be a finite value > 0 (got ${interleaveDepthMs}ms). Fix encoder config.`);
289
- }
290
- if (!Number.isFinite(deliveryWindowMs) || !(deliveryWindowMs > 0)) {
291
- throw new Error(`[FEC] deliveryWindowMs must be a finite value > 0 (got ${deliveryWindowMs}ms). ` +
292
- `It is derived from catalog geometry, not a local default.`);
293
- }
294
- // Fail closed rather than clamp. 255 is the ceiling the WASM decoder and the
295
- // ISO/IEC 23008-1 AL-FEC signaling byte both accept; silently clamping to it
296
- // would hand back a retention SHORTER than the caller's own delivery window
297
- // -- the exact skew this function exists to remove, reintroduced invisibly
298
- // and only on out-of-range catalogs, where it is hardest to notice.
299
- //
300
- // This is the RESIDUAL, not a tested branch: it is reached by elimination
301
- // once the two guards above have failed to match. That is exact only while
302
- // `tryDeriveFecRetentionBlocks` returns `undefined` in exactly three places.
303
- // Add a fourth and this arm mis-diagnoses it as a ceiling violation AND
304
- // prints a computed block count that is not the reason -- so if you grow a
305
- // case there, add the matching arm here.
306
- throw new Error(`[FEC] retention of ${Math.ceil(deliveryWindowMs / interleaveDepthMs) + 1} blocks exceeds the 255 the decoder and the ` +
307
- `ISO/IEC 23008-1 AL-FEC signaling byte accept ` +
308
- `(deliveryWindowMs=${deliveryWindowMs}ms over interleaveDepthMs=${interleaveDepthMs}ms). ` +
309
- `Fix the catalog geometry: a span this short cannot carry a window this wide.`);
310
- }
311
- /**
312
- * The ceiling the WASM decoder and the ISO/IEC 23008-1 AL-FEC signaling byte
313
- * both accept. One owner: do not re-state `0xff` against a block count
314
- * anywhere else.
315
- */
316
- export const MAX_FEC_RETENTION_BLOCKS = 0xff;
317
- /**
318
- * `deriveFecRetentionBlocks` without the throw: the block count, or `undefined`
319
- * when the geometry cannot define one.
320
- *
321
- * THIS is the arithmetic; the throwing variant is this plus a diagnosis of
322
- * which guard failed. Callers reached from a **per-symbol** path must use this
323
- * one. An out-of-range `timeoutMs` does not narrow back on its own, so there
324
- * the throwing variant is not a rare error but steady state, and it would
325
- * construct an `Error` with a stack capture and unwind it for every symbol on
326
- * the stream.
327
- */
328
- export function tryDeriveFecRetentionBlocks(deliveryWindowMs, interleaveDepthMs) {
329
- if (!Number.isFinite(interleaveDepthMs) || !(interleaveDepthMs > 0))
330
- return undefined;
331
- if (!Number.isFinite(deliveryWindowMs) || !(deliveryWindowMs > 0))
332
- return undefined;
333
- const blocks = Math.ceil(deliveryWindowMs / interleaveDepthMs) + 1;
334
- return blocks > MAX_FEC_RETENTION_BLOCKS ? undefined : blocks;
335
- }
336
- /**
337
- * Playback latency for a block, from the same anchor the deadline uses.
338
- *
339
- * latency = presentedAtMs - firstAcceptedAtMs
340
- *
341
- * Both timestamps are receiver-local, so this needs NO publisher/receiver
342
- * clock agreement. That is the point of anchoring the deadline absolutely:
343
- * publisher-stamped media time and receiver BCTM disagree by roughly the
344
- * quantity we are trying to measure, which makes any cross-host subtraction
345
- * unusable at a 33ms target. This subtraction is immune to that skew.
346
- *
347
- * It measures first-accepted-packet to presentation. It is NOT glass-to-glass
348
- * and must not be reported as such -- capture and encode sit outside both
349
- * timestamps.
350
- */
351
- export function playbackLatencyMs(params) {
352
- const { presentedAtMs, firstAcceptedAtMs } = params;
353
- if (!Number.isFinite(presentedAtMs) || !Number.isFinite(firstAcceptedAtMs)) {
354
- throw new Error(`[FEC] playback latency needs two finite timestamps (got ${presentedAtMs}, ${firstAcceptedAtMs}).`);
355
- }
356
- if (presentedAtMs < firstAcceptedAtMs) {
357
- throw new Error(`[FEC] presentedAtMs ${presentedAtMs} precedes firstAcceptedAtMs ${firstAcceptedAtMs}; ` +
358
- `the two timestamps must come from one receiver-local clock.`);
359
- }
360
- return presentedAtMs - firstAcceptedAtMs;
361
- }
362
- /**
363
- * Extract FEC parameters from an MMTP repair packet.
364
- *
365
- * Per ISO/IEC 23008-1 Section C.5.3, the 13-byte Repair FEC Payload ID
366
- * follows the complete MMTP header, including optional C/X fields.
367
- *
368
- * Returns raw fields — caller passes directly to WASM add_repair(ss_start, ssb_length, rs_id, data).
369
- * No SBN/ESI derivation — the WASM decoder handles block assignment.
370
- */
371
- export function parseRepairPacket(packet) {
372
- const parsed = parseMoqRepairFrame(packet);
373
- if (!parsed)
374
- return null;
375
- return {
376
- ssStart: parsed.ssStart,
377
- ssbLength: parsed.ssbLength,
378
- rsId: parsed.rsId,
379
- repairData: parsed.symbolData,
380
- };
381
- }
382
- //# sourceMappingURL=oti.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oti.js","sourceRoot":"","sources":["../src/oti.ts"],"names":[],"mappings":"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"}