@blockcast/mmt-container 0.1.0-main.0399efef1f07

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 (694) hide show
  1. package/README.md +432 -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 +93 -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/browser-runtime.js +20087 -0
  22. package/dist/browser-runtime.js.map +7 -0
  23. package/dist/carp-catalog.d.ts +318 -0
  24. package/dist/carp-catalog.d.ts.map +1 -0
  25. package/dist/carp-catalog.js +873 -0
  26. package/dist/carp-catalog.js.map +7 -0
  27. package/dist/catalog-fec-params.d.ts +202 -0
  28. package/dist/catalog-fec-params.d.ts.map +1 -0
  29. package/dist/catalog-fec-params.js +568 -0
  30. package/dist/catalog-fec-params.js.map +7 -0
  31. package/dist/catalog-network-source.d.ts +19 -0
  32. package/dist/catalog-network-source.d.ts.map +1 -0
  33. package/dist/catalog-network-source.js +22 -0
  34. package/dist/catalog-network-source.js.map +7 -0
  35. package/dist/catalog-validator.d.ts +18 -0
  36. package/dist/catalog-validator.d.ts.map +1 -0
  37. package/dist/catalog-validator.js +7747 -0
  38. package/dist/catalog-validator.js.map +7 -0
  39. package/dist/cmaf-block-assembler.d.ts +217 -0
  40. package/dist/cmaf-block-assembler.d.ts.map +1 -0
  41. package/dist/cmaf-block-assembler.js +1769 -0
  42. package/dist/cmaf-block-assembler.js.map +7 -0
  43. package/dist/cmaf-group-batcher.d.ts +38 -0
  44. package/dist/cmaf-group-batcher.d.ts.map +1 -0
  45. package/dist/cmaf-group-batcher.js +195 -0
  46. package/dist/cmaf-group-batcher.js.map +7 -0
  47. package/dist/cmcd-producer.d.ts +104 -0
  48. package/dist/cmcd-producer.d.ts.map +1 -0
  49. package/dist/cmcd-producer.js +207 -0
  50. package/dist/cmcd-producer.js.map +7 -0
  51. package/dist/codec-utils.d.ts +248 -0
  52. package/dist/codec-utils.d.ts.map +1 -0
  53. package/dist/codec-utils.js +1268 -0
  54. package/dist/codec-utils.js.map +7 -0
  55. package/dist/fec-codec.d.ts +32 -0
  56. package/dist/fec-codec.d.ts.map +1 -0
  57. package/dist/fec-codec.js +47 -0
  58. package/dist/fec-codec.js.map +7 -0
  59. package/dist/fec-manager.d.ts +307 -0
  60. package/dist/fec-manager.d.ts.map +1 -0
  61. package/dist/fec-manager.js +1530 -0
  62. package/dist/fec-manager.js.map +7 -0
  63. package/dist/fec-starvation-detector.d.ts +59 -0
  64. package/dist/fec-starvation-detector.d.ts.map +1 -0
  65. package/dist/fec-starvation-detector.js +75 -0
  66. package/dist/fec-starvation-detector.js.map +7 -0
  67. package/dist/fec-worker-setup.d.ts +88 -0
  68. package/dist/fec-worker-setup.d.ts.map +1 -0
  69. package/dist/fec-worker-setup.js +614 -0
  70. package/dist/fec-worker-setup.js.map +7 -0
  71. package/dist/fmp4-completion.d.ts +30 -0
  72. package/dist/fmp4-completion.d.ts.map +1 -0
  73. package/dist/fmp4-completion.js +21 -0
  74. package/dist/fmp4-completion.js.map +7 -0
  75. package/dist/fmp4-reader.d.ts +37 -0
  76. package/dist/fmp4-reader.d.ts.map +1 -0
  77. package/dist/fmp4-reader.js +100 -0
  78. package/dist/fmp4-reader.js.map +7 -0
  79. package/dist/index.d.ts +47 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +380 -0
  82. package/dist/index.js.map +7 -0
  83. package/dist/iso-bmff-timing.d.ts +78 -0
  84. package/dist/iso-bmff-timing.d.ts.map +1 -0
  85. package/dist/iso-bmff-timing.js +618 -0
  86. package/dist/iso-bmff-timing.js.map +7 -0
  87. package/dist/loc.d.ts +68 -0
  88. package/dist/loc.d.ts.map +1 -0
  89. package/dist/loc.js +143 -0
  90. package/dist/loc.js.map +7 -0
  91. package/dist/manifest-auth-plan.d.ts +30 -0
  92. package/dist/manifest-auth-plan.d.ts.map +1 -0
  93. package/dist/manifest-auth-plan.js +1285 -0
  94. package/dist/manifest-auth-plan.js.map +7 -0
  95. package/dist/media-router.d.ts +251 -0
  96. package/dist/media-router.d.ts.map +1 -0
  97. package/dist/media-router.js +624 -0
  98. package/dist/media-router.js.map +7 -0
  99. package/dist/mfu-reassembler.d.ts +396 -0
  100. package/dist/mfu-reassembler.d.ts.map +1 -0
  101. package/dist/mfu-reassembler.js +3085 -0
  102. package/dist/mfu-reassembler.js.map +7 -0
  103. package/dist/mfu-reassembly-policy.d.ts +24 -0
  104. package/dist/mfu-reassembly-policy.d.ts.map +1 -0
  105. package/dist/mfu-reassembly-policy.js +99 -0
  106. package/dist/mfu-reassembly-policy.js.map +7 -0
  107. package/dist/mmtp-container-parser.d.ts +434 -0
  108. package/dist/mmtp-container-parser.d.ts.map +1 -0
  109. package/dist/mmtp-container-parser.js +6164 -0
  110. package/dist/mmtp-container-parser.js.map +7 -0
  111. package/dist/mmtp-container-parser.no-modules.js +8999 -0
  112. package/dist/mmtp-container-parser.no-modules.js.map +7 -0
  113. package/dist/mmtp-decode-pipeline.d.ts +132 -0
  114. package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
  115. package/dist/mmtp-decode-pipeline.js +6413 -0
  116. package/dist/mmtp-decode-pipeline.js.map +7 -0
  117. package/dist/mmtp-router.d.ts +390 -0
  118. package/dist/mmtp-router.d.ts.map +1 -0
  119. package/dist/mmtp-router.js +9242 -0
  120. package/dist/mmtp-router.js.map +7 -0
  121. package/dist/mmtp-to-cmaf.d.ts +181 -0
  122. package/dist/mmtp-to-cmaf.d.ts.map +1 -0
  123. package/dist/mmtp-to-cmaf.js +802 -0
  124. package/dist/mmtp-to-cmaf.js.map +7 -0
  125. package/dist/multicast-auth-catalog.d.ts +115 -0
  126. package/dist/multicast-auth-catalog.d.ts.map +1 -0
  127. package/dist/multicast-auth-catalog.js +202 -0
  128. package/dist/multicast-auth-catalog.js.map +7 -0
  129. package/dist/multicast-input.d.ts +107 -0
  130. package/dist/multicast-input.d.ts.map +1 -0
  131. package/dist/multicast-input.js +256 -0
  132. package/dist/multicast-input.js.map +7 -0
  133. package/dist/multicast-manager.d.ts +369 -0
  134. package/dist/multicast-manager.d.ts.map +1 -0
  135. package/dist/multicast-manager.js +13400 -0
  136. package/dist/multicast-manager.js.map +7 -0
  137. package/dist/multicast-transport.d.ts +61 -0
  138. package/dist/multicast-transport.d.ts.map +1 -0
  139. package/dist/multicast-transport.js +1665 -0
  140. package/dist/multicast-transport.js.map +7 -0
  141. package/dist/multicast-unwrap.d.ts +57 -0
  142. package/dist/multicast-unwrap.d.ts.map +1 -0
  143. package/dist/multicast-unwrap.js +384 -0
  144. package/dist/multicast-unwrap.js.map +7 -0
  145. package/dist/no-modules.d.ts +9 -0
  146. package/dist/no-modules.d.ts.map +1 -0
  147. package/dist/no-modules.js +8965 -0
  148. package/dist/no-modules.js.map +7 -0
  149. package/dist/phase14-catalog-override.d.ts +126 -0
  150. package/dist/phase14-catalog-override.d.ts.map +1 -0
  151. package/dist/phase14-catalog-override.js +155 -0
  152. package/dist/phase14-catalog-override.js.map +7 -0
  153. package/dist/repair-fetch.d.ts +58 -0
  154. package/dist/repair-fetch.d.ts.map +1 -0
  155. package/dist/repair-fetch.js +127 -0
  156. package/dist/repair-fetch.js.map +7 -0
  157. package/dist/repair-layers.d.ts +141 -0
  158. package/dist/repair-layers.d.ts.map +1 -0
  159. package/dist/repair-layers.js +303 -0
  160. package/dist/repair-layers.js.map +7 -0
  161. package/dist/sample-combiner.d.ts +212 -0
  162. package/dist/sample-combiner.d.ts.map +1 -0
  163. package/dist/sample-combiner.js +616 -0
  164. package/dist/sample-combiner.js.map +7 -0
  165. package/dist/signaling.d.ts +29 -0
  166. package/dist/signaling.d.ts.map +1 -0
  167. package/dist/signaling.js +232 -0
  168. package/dist/signaling.js.map +7 -0
  169. package/dist/source-auth.d.ts +2 -0
  170. package/dist/source-auth.d.ts.map +1 -0
  171. package/dist/source-auth.js +1238 -0
  172. package/dist/source-auth.js.map +7 -0
  173. package/dist/switching-set-alignment.d.ts +61 -0
  174. package/dist/switching-set-alignment.d.ts.map +1 -0
  175. package/dist/switching-set-alignment.js +85 -0
  176. package/dist/switching-set-alignment.js.map +7 -0
  177. package/dist/timestamp-codec.d.ts +34 -0
  178. package/dist/timestamp-codec.d.ts.map +1 -0
  179. package/dist/timestamp-codec.js +456 -0
  180. package/dist/timestamp-codec.js.map +7 -0
  181. package/dist/track-pipeline-setup.d.ts +72 -0
  182. package/dist/track-pipeline-setup.d.ts.map +1 -0
  183. package/dist/track-pipeline-setup.js +306 -0
  184. package/dist/track-pipeline-setup.js.map +7 -0
  185. package/dist/track-pipeline.d.ts +121 -0
  186. package/dist/track-pipeline.d.ts.map +1 -0
  187. package/dist/track-pipeline.js +229 -0
  188. package/dist/track-pipeline.js.map +7 -0
  189. package/dist/track-session.d.ts +398 -0
  190. package/dist/track-session.d.ts.map +1 -0
  191. package/dist/track-session.js +767 -0
  192. package/dist/track-session.js.map +7 -0
  193. package/dist/transport-pool.d.ts +69 -0
  194. package/dist/transport-pool.d.ts.map +1 -0
  195. package/dist/transport-pool.js +88 -0
  196. package/dist/transport-pool.js.map +7 -0
  197. package/dist/wasm-mfu-reassembler.d.ts +92 -0
  198. package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
  199. package/dist/wasm-mfu-reassembler.js +2139 -0
  200. package/dist/wasm-mfu-reassembler.js.map +7 -0
  201. package/dist/wasm-mmtp-container-parser.d.ts +10 -0
  202. package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
  203. package/dist/wasm-mmtp-container-parser.js +6418 -0
  204. package/dist/wasm-mmtp-container-parser.js.map +7 -0
  205. package/node_modules/@blockcast/fec-worker/README.md +213 -0
  206. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  207. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +87 -0
  208. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
  209. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +279 -0
  210. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
  211. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +252 -0
  212. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
  213. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
  214. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
  215. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
  216. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
  217. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +565 -0
  218. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
  219. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
  220. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
  221. package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
  222. package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
  223. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
  224. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
  225. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +349 -0
  226. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
  227. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
  228. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
  229. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
  230. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
  231. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +179 -0
  232. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
  233. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +47 -0
  234. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
  235. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
  236. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
  237. package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
  238. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
  239. package/node_modules/@blockcast/fec-worker/package.json +59 -0
  240. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +319 -0
  241. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +268 -0
  242. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1048 -0
  243. package/node_modules/@blockcast/fec-worker/src/index.ts +32 -0
  244. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +558 -0
  245. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
  246. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +194 -0
  247. package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
  248. package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  249. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  250. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  251. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  252. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  253. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  254. package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  255. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  256. package/node_modules/@blockcast/mmt-base/README.md +120 -0
  257. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  258. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
  259. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  260. package/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
  261. package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  262. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +276 -0
  263. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  264. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +645 -0
  265. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  266. package/node_modules/@blockcast/mmt-base/package.json +49 -0
  267. package/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
  268. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +899 -0
  269. package/node_modules/@blockcast/mmt-fec/README.md +270 -0
  270. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  271. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +82 -0
  272. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
  273. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +296 -0
  274. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
  275. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +72 -0
  276. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
  277. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +192 -0
  278. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
  279. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
  280. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
  281. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
  282. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
  283. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
  284. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
  285. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
  286. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
  287. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +185 -0
  288. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
  289. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +273 -0
  290. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
  291. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +22 -0
  292. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
  293. package/node_modules/@blockcast/mmt-fec/dist/index.js +22 -0
  294. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
  295. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
  296. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
  297. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
  298. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
  299. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +172 -0
  300. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
  301. package/node_modules/@blockcast/mmt-fec/dist/oti.js +254 -0
  302. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
  303. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
  304. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
  305. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
  306. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
  307. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  308. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  309. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  310. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  311. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  312. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  313. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  314. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  315. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +120 -0
  316. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  317. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
  318. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  319. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
  320. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  321. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +276 -0
  322. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  323. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +645 -0
  324. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  325. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
  326. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
  327. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +899 -0
  328. package/node_modules/@blockcast/mmt-fec/package.json +79 -0
  329. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +371 -0
  330. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +277 -0
  331. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
  332. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
  333. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +332 -0
  334. package/node_modules/@blockcast/mmt-fec/src/index.ts +77 -0
  335. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
  336. package/node_modules/@blockcast/mmt-fec/src/oti.ts +317 -0
  337. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
  338. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  339. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
  340. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
  341. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
  342. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
  343. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
  344. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
  345. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
  346. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
  347. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
  348. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
  349. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
  350. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
  351. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +99 -0
  352. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
  353. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +492 -0
  354. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
  355. package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
  356. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
  357. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
  358. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
  359. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +669 -0
  360. package/node_modules/@noble/hashes/LICENSE +21 -0
  361. package/node_modules/@noble/hashes/README.md +521 -0
  362. package/node_modules/@noble/hashes/_assert.d.ts +17 -0
  363. package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
  364. package/node_modules/@noble/hashes/_assert.js +18 -0
  365. package/node_modules/@noble/hashes/_assert.js.map +1 -0
  366. package/node_modules/@noble/hashes/_blake.d.ts +14 -0
  367. package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
  368. package/node_modules/@noble/hashes/_blake.js +50 -0
  369. package/node_modules/@noble/hashes/_blake.js.map +1 -0
  370. package/node_modules/@noble/hashes/_md.d.ts +51 -0
  371. package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
  372. package/node_modules/@noble/hashes/_md.js +162 -0
  373. package/node_modules/@noble/hashes/_md.js.map +1 -0
  374. package/node_modules/@noble/hashes/_u64.d.ts +55 -0
  375. package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
  376. package/node_modules/@noble/hashes/_u64.js +90 -0
  377. package/node_modules/@noble/hashes/_u64.js.map +1 -0
  378. package/node_modules/@noble/hashes/argon2.d.ts +32 -0
  379. package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
  380. package/node_modules/@noble/hashes/argon2.js +401 -0
  381. package/node_modules/@noble/hashes/argon2.js.map +1 -0
  382. package/node_modules/@noble/hashes/blake1.d.ts +106 -0
  383. package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
  384. package/node_modules/@noble/hashes/blake1.js +459 -0
  385. package/node_modules/@noble/hashes/blake1.js.map +1 -0
  386. package/node_modules/@noble/hashes/blake2.d.ts +116 -0
  387. package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
  388. package/node_modules/@noble/hashes/blake2.js +420 -0
  389. package/node_modules/@noble/hashes/blake2.js.map +1 -0
  390. package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
  391. package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
  392. package/node_modules/@noble/hashes/blake2b.js +14 -0
  393. package/node_modules/@noble/hashes/blake2b.js.map +1 -0
  394. package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
  395. package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
  396. package/node_modules/@noble/hashes/blake2s.js +24 -0
  397. package/node_modules/@noble/hashes/blake2s.js.map +1 -0
  398. package/node_modules/@noble/hashes/blake3.d.ts +54 -0
  399. package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
  400. package/node_modules/@noble/hashes/blake3.js +255 -0
  401. package/node_modules/@noble/hashes/blake3.js.map +1 -0
  402. package/node_modules/@noble/hashes/crypto.d.ts +2 -0
  403. package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
  404. package/node_modules/@noble/hashes/crypto.js +5 -0
  405. package/node_modules/@noble/hashes/crypto.js.map +1 -0
  406. package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
  407. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
  408. package/node_modules/@noble/hashes/cryptoNode.js +18 -0
  409. package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
  410. package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
  411. package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
  412. package/node_modules/@noble/hashes/eskdf.js +166 -0
  413. package/node_modules/@noble/hashes/eskdf.js.map +1 -0
  414. package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
  415. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
  416. package/node_modules/@noble/hashes/esm/_assert.js +15 -0
  417. package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
  418. package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
  419. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
  420. package/node_modules/@noble/hashes/esm/_blake.js +45 -0
  421. package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
  422. package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
  423. package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
  424. package/node_modules/@noble/hashes/esm/_md.js +155 -0
  425. package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
  426. package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
  427. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
  428. package/node_modules/@noble/hashes/esm/_u64.js +67 -0
  429. package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
  430. package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
  431. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
  432. package/node_modules/@noble/hashes/esm/argon2.js +392 -0
  433. package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
  434. package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
  435. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
  436. package/node_modules/@noble/hashes/esm/blake1.js +452 -0
  437. package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
  438. package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
  439. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
  440. package/node_modules/@noble/hashes/esm/blake2.js +413 -0
  441. package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
  442. package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
  443. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
  444. package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
  445. package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
  446. package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
  447. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
  448. package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
  449. package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
  450. package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
  451. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
  452. package/node_modules/@noble/hashes/esm/blake3.js +251 -0
  453. package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
  454. package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
  455. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
  456. package/node_modules/@noble/hashes/esm/crypto.js +2 -0
  457. package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
  458. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
  459. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
  460. package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
  461. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
  462. package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
  463. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
  464. package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
  465. package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
  466. package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
  467. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
  468. package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
  469. package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
  470. package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
  471. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
  472. package/node_modules/@noble/hashes/esm/hmac.js +86 -0
  473. package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
  474. package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
  475. package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
  476. package/node_modules/@noble/hashes/esm/index.js +33 -0
  477. package/node_modules/@noble/hashes/esm/index.js.map +1 -0
  478. package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
  479. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
  480. package/node_modules/@noble/hashes/esm/legacy.js +281 -0
  481. package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
  482. package/node_modules/@noble/hashes/esm/package.json +10 -0
  483. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
  484. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
  485. package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
  486. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
  487. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
  488. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
  489. package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
  490. package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
  491. package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
  492. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
  493. package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
  494. package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
  495. package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
  496. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
  497. package/node_modules/@noble/hashes/esm/sha1.js +11 -0
  498. package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
  499. package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
  500. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
  501. package/node_modules/@noble/hashes/esm/sha2.js +375 -0
  502. package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
  503. package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
  504. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
  505. package/node_modules/@noble/hashes/esm/sha256.js +20 -0
  506. package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
  507. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
  508. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
  509. package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
  510. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
  511. package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
  512. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
  513. package/node_modules/@noble/hashes/esm/sha3.js +234 -0
  514. package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
  515. package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
  516. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
  517. package/node_modules/@noble/hashes/esm/sha512.js +26 -0
  518. package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
  519. package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
  520. package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
  521. package/node_modules/@noble/hashes/esm/utils.js +281 -0
  522. package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
  523. package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
  524. package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
  525. package/node_modules/@noble/hashes/hkdf.js +88 -0
  526. package/node_modules/@noble/hashes/hkdf.js.map +1 -0
  527. package/node_modules/@noble/hashes/hmac.d.ts +35 -0
  528. package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
  529. package/node_modules/@noble/hashes/hmac.js +91 -0
  530. package/node_modules/@noble/hashes/hmac.js.map +1 -0
  531. package/node_modules/@noble/hashes/index.d.ts +1 -0
  532. package/node_modules/@noble/hashes/index.d.ts.map +1 -0
  533. package/node_modules/@noble/hashes/index.js +33 -0
  534. package/node_modules/@noble/hashes/index.js.map +1 -0
  535. package/node_modules/@noble/hashes/legacy.d.ts +71 -0
  536. package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
  537. package/node_modules/@noble/hashes/legacy.js +287 -0
  538. package/node_modules/@noble/hashes/legacy.js.map +1 -0
  539. package/node_modules/@noble/hashes/package.json +266 -0
  540. package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
  541. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
  542. package/node_modules/@noble/hashes/pbkdf2.js +101 -0
  543. package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
  544. package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
  545. package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
  546. package/node_modules/@noble/hashes/ripemd160.js +16 -0
  547. package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
  548. package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
  549. package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
  550. package/node_modules/@noble/hashes/scrypt.js +232 -0
  551. package/node_modules/@noble/hashes/scrypt.js.map +1 -0
  552. package/node_modules/@noble/hashes/sha1.d.ts +11 -0
  553. package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
  554. package/node_modules/@noble/hashes/sha1.js +14 -0
  555. package/node_modules/@noble/hashes/sha1.js.map +1 -0
  556. package/node_modules/@noble/hashes/sha2.d.ts +159 -0
  557. package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
  558. package/node_modules/@noble/hashes/sha2.js +384 -0
  559. package/node_modules/@noble/hashes/sha2.js.map +1 -0
  560. package/node_modules/@noble/hashes/sha256.d.ts +20 -0
  561. package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
  562. package/node_modules/@noble/hashes/sha256.js +23 -0
  563. package/node_modules/@noble/hashes/sha256.js.map +1 -0
  564. package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
  565. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
  566. package/node_modules/@noble/hashes/sha3-addons.js +402 -0
  567. package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
  568. package/node_modules/@noble/hashes/sha3.d.ts +53 -0
  569. package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
  570. package/node_modules/@noble/hashes/sha3.js +239 -0
  571. package/node_modules/@noble/hashes/sha3.js.map +1 -0
  572. package/node_modules/@noble/hashes/sha512.d.ts +26 -0
  573. package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
  574. package/node_modules/@noble/hashes/sha512.js +29 -0
  575. package/node_modules/@noble/hashes/sha512.js.map +1 -0
  576. package/node_modules/@noble/hashes/src/_assert.ts +22 -0
  577. package/node_modules/@noble/hashes/src/_blake.ts +50 -0
  578. package/node_modules/@noble/hashes/src/_md.ts +176 -0
  579. package/node_modules/@noble/hashes/src/_u64.ts +91 -0
  580. package/node_modules/@noble/hashes/src/argon2.ts +497 -0
  581. package/node_modules/@noble/hashes/src/blake1.ts +534 -0
  582. package/node_modules/@noble/hashes/src/blake2.ts +486 -0
  583. package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
  584. package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
  585. package/node_modules/@noble/hashes/src/blake3.ts +272 -0
  586. package/node_modules/@noble/hashes/src/crypto.ts +9 -0
  587. package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
  588. package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
  589. package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
  590. package/node_modules/@noble/hashes/src/hmac.ts +94 -0
  591. package/node_modules/@noble/hashes/src/index.ts +31 -0
  592. package/node_modules/@noble/hashes/src/legacy.ts +293 -0
  593. package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
  594. package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
  595. package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
  596. package/node_modules/@noble/hashes/src/sha1.ts +10 -0
  597. package/node_modules/@noble/hashes/src/sha2.ts +402 -0
  598. package/node_modules/@noble/hashes/src/sha256.ts +24 -0
  599. package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
  600. package/node_modules/@noble/hashes/src/sha3.ts +258 -0
  601. package/node_modules/@noble/hashes/src/sha512.ts +34 -0
  602. package/node_modules/@noble/hashes/src/utils.ts +395 -0
  603. package/node_modules/@noble/hashes/utils.d.ts +161 -0
  604. package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
  605. package/node_modules/@noble/hashes/utils.js +313 -0
  606. package/node_modules/@noble/hashes/utils.js.map +1 -0
  607. package/package.json +203 -0
  608. package/schemas/catalog.schema.json +360 -0
  609. package/src/align.ts +239 -0
  610. package/src/audio-init-parser.ts +189 -0
  611. package/src/audio-ring-buffer.ts +120 -0
  612. package/src/authored-timing.ts +63 -0
  613. package/src/carp-catalog.ts +845 -0
  614. package/src/catalog-fec-params.ts +535 -0
  615. package/src/catalog-network-source.ts +49 -0
  616. package/src/catalog-validator.ts +34 -0
  617. package/src/cmaf-block-assembler.ts +1167 -0
  618. package/src/cmaf-group-batcher.ts +104 -0
  619. package/src/cmcd-producer.ts +334 -0
  620. package/src/codec-utils.ts +1611 -0
  621. package/src/fec-codec.ts +61 -0
  622. package/src/fec-manager.ts +2081 -0
  623. package/src/fec-starvation-detector.ts +128 -0
  624. package/src/fec-worker-setup.ts +213 -0
  625. package/src/fmp4-completion.ts +47 -0
  626. package/src/fmp4-reader.ts +112 -0
  627. package/src/index.ts +486 -0
  628. package/src/iso-bmff-timing.ts +813 -0
  629. package/src/loc.ts +181 -0
  630. package/src/manifest-auth-plan.ts +107 -0
  631. package/src/media-router.ts +795 -0
  632. package/src/mfu-reassembler.ts +3741 -0
  633. package/src/mfu-reassembly-policy.ts +134 -0
  634. package/src/mmtp-container-parser.ts +1836 -0
  635. package/src/mmtp-decode-pipeline.ts +389 -0
  636. package/src/mmtp-router.ts +3136 -0
  637. package/src/mmtp-to-cmaf.ts +1024 -0
  638. package/src/multicast-auth-catalog.ts +340 -0
  639. package/src/multicast-input.ts +439 -0
  640. package/src/multicast-manager.ts +1720 -0
  641. package/src/multicast-transport.ts +321 -0
  642. package/src/multicast-unwrap.ts +132 -0
  643. package/src/no-modules.ts +20 -0
  644. package/src/phase14-catalog-override.ts +336 -0
  645. package/src/repair-fetch.ts +238 -0
  646. package/src/repair-layers.ts +490 -0
  647. package/src/sample-combiner.ts +938 -0
  648. package/src/signaling.ts +78 -0
  649. package/src/source-auth.ts +1 -0
  650. package/src/switching-set-alignment.ts +109 -0
  651. package/src/timestamp-codec.ts +265 -0
  652. package/src/track-pipeline-setup.ts +189 -0
  653. package/src/track-pipeline.ts +332 -0
  654. package/src/track-session.ts +994 -0
  655. package/src/transport-pool.ts +128 -0
  656. package/src/wasm-mfu-reassembler.ts +389 -0
  657. package/src/wasm-mmtp-container-parser.ts +23 -0
  658. package/test-vectors/align.json +199 -0
  659. package/test-vectors/catalog/README.md +40 -0
  660. package/test-vectors/catalog/negative/fec-enhancement-repair-removed.json +27 -0
  661. package/test-vectors/catalog/negative/fec-repair-layer-geometry.json +32 -0
  662. package/test-vectors/catalog/negative/fec-repair-layer-missing-symbols.json +30 -0
  663. package/test-vectors/catalog/negative/fec-repair-multiple-depends.json +31 -0
  664. package/test-vectors/catalog/negative/fec-repair-overlay-with-layer.json +33 -0
  665. package/test-vectors/catalog/negative/fec-repair-priority-out-of-band.json +23 -0
  666. package/test-vectors/catalog/negative/fec-repair-source-symbols-without-scope.json +32 -0
  667. package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
  668. package/test-vectors/catalog/negative/media-track-repair-layer.json +16 -0
  669. package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
  670. package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
  671. package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
  672. package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
  673. package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
  674. package/test-vectors/catalog/negative/network-source-object.json +25 -0
  675. package/test-vectors/catalog/negative/raptorq-source-symbols-over-max.json +23 -0
  676. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +26 -0
  677. package/test-vectors/catalog/negative/repair-track-legacy-shape.json +19 -0
  678. package/test-vectors/catalog/negative/track-role-empty.json +16 -0
  679. package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
  680. package/test-vectors/catalog/positive/fec-layered-repair.json +104 -0
  681. package/test-vectors/catalog/positive/fec-multicast.json +51 -0
  682. package/test-vectors/catalog/positive/flat-av.json +30 -0
  683. package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
  684. package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
  685. package/test-vectors/catalog/positive/track-role.json +49 -0
  686. package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
  687. package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
  688. package/test-vectors/catalog-multicast-auth-v1.json +26 -0
  689. package/test-vectors/catalog-validation.json +148 -0
  690. package/test-vectors/catalog-validator-public-api.mjs +25 -0
  691. package/test-vectors/generate-source-auth-fixture.mjs +114 -0
  692. package/test-vectors/source-auth-v1.json +61 -0
  693. package/test-vectors/source-contiguity-v1.json +131 -0
  694. package/test-vectors/subsample-placement-v1.json +230 -0
@@ -0,0 +1,618 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
9
+ var __privateWrapper = (obj, member, setter, getter) => ({
10
+ set _(value) {
11
+ __privateSet(obj, member, value, setter);
12
+ },
13
+ get _() {
14
+ return __privateGet(obj, member, getter);
15
+ }
16
+ });
17
+
18
+ // src/iso-bmff-timing.ts
19
+ var U64_MAX = 0xffffffffffffffffn;
20
+ var I64_MIN = -0x8000000000000000n;
21
+ var I64_MAX = 0x7fffffffffffffffn;
22
+ var MICROSECONDS_PER_SECOND = 1000000n;
23
+ var TFHD_BASE_DATA_OFFSET_PRESENT = 1;
24
+ var TFHD_SAMPLE_DESCRIPTION_INDEX_PRESENT = 2;
25
+ var TFHD_DEFAULT_SAMPLE_DURATION_PRESENT = 8;
26
+ var TFHD_DEFAULT_SAMPLE_SIZE_PRESENT = 16;
27
+ var TFHD_DEFAULT_SAMPLE_FLAGS_PRESENT = 32;
28
+ var TFHD_DURATION_IS_EMPTY = 65536;
29
+ var TFHD_DEFAULT_BASE_IS_MOOF = 131072;
30
+ var TFHD_KNOWN_FLAGS = TFHD_BASE_DATA_OFFSET_PRESENT | TFHD_SAMPLE_DESCRIPTION_INDEX_PRESENT | TFHD_DEFAULT_SAMPLE_DURATION_PRESENT | TFHD_DEFAULT_SAMPLE_SIZE_PRESENT | TFHD_DEFAULT_SAMPLE_FLAGS_PRESENT | TFHD_DURATION_IS_EMPTY | TFHD_DEFAULT_BASE_IS_MOOF;
31
+ var TRUN_DATA_OFFSET_PRESENT = 1;
32
+ var TRUN_FIRST_SAMPLE_FLAGS_PRESENT = 4;
33
+ var TRUN_SAMPLE_DURATION_PRESENT = 256;
34
+ var TRUN_SAMPLE_SIZE_PRESENT = 512;
35
+ var TRUN_SAMPLE_FLAGS_PRESENT = 1024;
36
+ var TRUN_SAMPLE_CTS_OFFSET_PRESENT = 2048;
37
+ var TRUN_KNOWN_FLAGS = TRUN_DATA_OFFSET_PRESENT | TRUN_FIRST_SAMPLE_FLAGS_PRESENT | TRUN_SAMPLE_DURATION_PRESENT | TRUN_SAMPLE_SIZE_PRESENT | TRUN_SAMPLE_FLAGS_PRESENT | TRUN_SAMPLE_CTS_OFFSET_PRESENT;
38
+ function view(data) {
39
+ return new DataView(data.buffer, data.byteOffset, data.byteLength);
40
+ }
41
+ function boxType(data, offset) {
42
+ return String.fromCharCode(
43
+ data[offset],
44
+ data[offset + 1],
45
+ data[offset + 2],
46
+ data[offset + 3]
47
+ );
48
+ }
49
+ function readU64(data, offset) {
50
+ if (offset < 0 || offset + 8 > data.length) return null;
51
+ const dataView = view(data);
52
+ return BigInt(dataView.getUint32(offset, false)) << 32n | BigInt(dataView.getUint32(offset + 4, false));
53
+ }
54
+ function parseBox(data, start, limit) {
55
+ if (start < 0 || limit > data.length || start + 8 > limit) return null;
56
+ const dataView = view(data);
57
+ const shortSize = dataView.getUint32(start, false);
58
+ let headerSize = 8;
59
+ let size;
60
+ if (shortSize === 0) {
61
+ size = limit - start;
62
+ } else if (shortSize === 1) {
63
+ if (start + 16 > limit) return null;
64
+ const extendedSize = readU64(data, start + 8);
65
+ if (extendedSize === null || extendedSize > BigInt(Number.MAX_SAFE_INTEGER)) return null;
66
+ headerSize = 16;
67
+ size = Number(extendedSize);
68
+ } else {
69
+ size = shortSize;
70
+ }
71
+ if (size < headerSize || start + size > limit) return null;
72
+ return {
73
+ type: boxType(data, start + 4),
74
+ start,
75
+ bodyStart: start + headerSize,
76
+ end: start + size
77
+ };
78
+ }
79
+ function parseBoxes(data, start, end) {
80
+ if (start < 0 || end < start || end > data.length) return null;
81
+ const boxes = [];
82
+ let offset = start;
83
+ while (offset < end) {
84
+ const box = parseBox(data, offset, end);
85
+ if (!box || box.end <= offset) return null;
86
+ boxes.push(box);
87
+ offset = box.end;
88
+ }
89
+ return offset === end ? boxes : null;
90
+ }
91
+ function children(data, parent) {
92
+ return parseBoxes(data, parent.bodyStart, parent.end);
93
+ }
94
+ function exactlyOne(boxes, type) {
95
+ const matches = boxes.filter((box) => box.type === type);
96
+ return matches.length === 1 ? matches[0] : null;
97
+ }
98
+ function parseFullBox(data, box) {
99
+ if (box.bodyStart + 4 > box.end) return null;
100
+ const versionAndFlags = view(data).getUint32(box.bodyStart, false);
101
+ return {
102
+ version: versionAndFlags >>> 24,
103
+ flags: versionAndFlags & 16777215,
104
+ bodyStart: box.bodyStart + 4
105
+ };
106
+ }
107
+ function parseTkhdTrackId(data, box) {
108
+ const full = parseFullBox(data, box);
109
+ if (!full || full.flags & ~15) return null;
110
+ const bodyLength = box.end - full.bodyStart;
111
+ const trackIdOffset = full.version === 0 ? full.bodyStart + 8 : full.version === 1 ? full.bodyStart + 16 : -1;
112
+ const expectedBodyLength = full.version === 0 ? 80 : full.version === 1 ? 92 : -1;
113
+ if (trackIdOffset < 0 || bodyLength !== expectedBodyLength) return null;
114
+ return view(data).getUint32(trackIdOffset, false);
115
+ }
116
+ function parseMdhdTimescale(data, box) {
117
+ const full = parseFullBox(data, box);
118
+ if (!full || full.flags !== 0) return null;
119
+ const bodyLength = box.end - full.bodyStart;
120
+ const timescaleOffset = full.version === 0 ? full.bodyStart + 8 : full.version === 1 ? full.bodyStart + 16 : -1;
121
+ const expectedBodyLength = full.version === 0 ? 20 : full.version === 1 ? 32 : -1;
122
+ if (timescaleOffset < 0 || bodyLength !== expectedBodyLength) return null;
123
+ return view(data).getUint32(timescaleOffset, false);
124
+ }
125
+ function parseHandlerType(data, box) {
126
+ const full = parseFullBox(data, box);
127
+ if (!full || full.version !== 0 || full.flags !== 0 || full.bodyStart + 20 > box.end) {
128
+ return null;
129
+ }
130
+ return boxType(data, full.bodyStart + 4);
131
+ }
132
+ function editListHasEntries(data, box) {
133
+ const full = parseFullBox(data, box);
134
+ if (!full || full.flags !== 0 || full.version !== 0 && full.version !== 1) return null;
135
+ if (full.bodyStart + 4 > box.end) return null;
136
+ const entryCount = view(data).getUint32(full.bodyStart, false);
137
+ const entrySize = full.version === 0 ? 12 : 20;
138
+ const expectedEnd = full.bodyStart + 4 + entryCount * entrySize;
139
+ if (!Number.isSafeInteger(expectedEnd) || expectedEnd !== box.end) return null;
140
+ return entryCount !== 0;
141
+ }
142
+ function parseTrack(data, trak) {
143
+ const trakChildren = children(data, trak);
144
+ if (!trakChildren) return null;
145
+ const tkhd = exactlyOne(trakChildren, "tkhd");
146
+ const mdia = exactlyOne(trakChildren, "mdia");
147
+ if (!tkhd || !mdia) return null;
148
+ const trackId = parseTkhdTrackId(data, tkhd);
149
+ if (trackId === null || trackId === 0) return null;
150
+ const mdiaChildren = children(data, mdia);
151
+ if (!mdiaChildren) return null;
152
+ const mdhd = exactlyOne(mdiaChildren, "mdhd");
153
+ const hdlr = exactlyOne(mdiaChildren, "hdlr");
154
+ if (!mdhd || !hdlr) return null;
155
+ const timescale = parseMdhdTimescale(data, mdhd);
156
+ const handlerType = parseHandlerType(data, hdlr);
157
+ if (timescale === null || timescale === 0 || handlerType === null) return null;
158
+ const edtsBoxes = trakChildren.filter((box) => box.type === "edts");
159
+ if (edtsBoxes.length > 1) return null;
160
+ let hasEdits = false;
161
+ if (edtsBoxes.length === 1) {
162
+ const edtsChildren = children(data, edtsBoxes[0]);
163
+ if (!edtsChildren) return null;
164
+ const editLists = edtsChildren.filter((box) => box.type === "elst");
165
+ if (editLists.length > 1) return null;
166
+ if (editLists.length === 1) {
167
+ const result = editListHasEntries(data, editLists[0]);
168
+ if (result === null) return null;
169
+ hasEdits = result;
170
+ }
171
+ }
172
+ return { trackId, handlerType, timescale, hasEdits };
173
+ }
174
+ function parseTrex(data, box) {
175
+ const full = parseFullBox(data, box);
176
+ if (!full || full.version !== 0 || full.flags !== 0 || box.end - full.bodyStart !== 20) {
177
+ return null;
178
+ }
179
+ const dataView = view(data);
180
+ const trackId = dataView.getUint32(full.bodyStart, false);
181
+ const defaultSampleDuration = dataView.getUint32(full.bodyStart + 8, false);
182
+ const defaultSampleSize = dataView.getUint32(full.bodyStart + 12, false);
183
+ return {
184
+ trackId,
185
+ timescale: 0,
186
+ ...defaultSampleDuration === 0 ? {} : { defaultSampleDuration },
187
+ ...defaultSampleSize === 0 ? {} : { defaultSampleSize }
188
+ };
189
+ }
190
+ function parseIsoBmffInitializationTiming(data) {
191
+ const topLevel = parseBoxes(data, 0, data.length);
192
+ if (!topLevel) return null;
193
+ const ftyp = exactlyOne(topLevel, "ftyp");
194
+ const moov = exactlyOne(topLevel, "moov");
195
+ if (!ftyp || !moov || ftyp.start > moov.start) return null;
196
+ if (topLevel.some((box) => box.type === "moof" || box.type === "mdat")) return null;
197
+ const moovChildren = children(data, moov);
198
+ if (!moovChildren) return null;
199
+ const parsedTracks = [];
200
+ for (const trak of moovChildren.filter((box) => box.type === "trak")) {
201
+ const parsed = parseTrack(data, trak);
202
+ if (!parsed) return null;
203
+ parsedTracks.push(parsed);
204
+ }
205
+ const mediaTracks = parsedTracks.filter(
206
+ (track) => track.handlerType === "vide" || track.handlerType === "soun"
207
+ );
208
+ if (mediaTracks.length !== 1) return null;
209
+ const mediaTrack = mediaTracks[0];
210
+ if (mediaTrack.hasEdits) return null;
211
+ const mvex = exactlyOne(moovChildren, "mvex");
212
+ if (!mvex) return null;
213
+ const mvexChildren = children(data, mvex);
214
+ if (!mvexChildren) return null;
215
+ const trexEntries = [];
216
+ for (const trexBox of mvexChildren.filter((box) => box.type === "trex")) {
217
+ const trex2 = parseTrex(data, trexBox);
218
+ if (!trex2) return null;
219
+ trexEntries.push(trex2);
220
+ }
221
+ const matchingTrex = trexEntries.filter((trex2) => trex2.trackId === mediaTrack.trackId);
222
+ if (matchingTrex.length !== 1) return null;
223
+ const trex = matchingTrex[0];
224
+ return {
225
+ trackId: mediaTrack.trackId,
226
+ timescale: mediaTrack.timescale,
227
+ ...trex.defaultSampleDuration === void 0 ? {} : { defaultSampleDuration: trex.defaultSampleDuration },
228
+ ...trex.defaultSampleSize === void 0 ? {} : { defaultSampleSize: trex.defaultSampleSize }
229
+ };
230
+ }
231
+ function parseMfhdSequence(data, box) {
232
+ const full = parseFullBox(data, box);
233
+ if (!full || full.version !== 0 || full.flags !== 0 || box.end - full.bodyStart !== 4) {
234
+ return null;
235
+ }
236
+ return view(data).getUint32(full.bodyStart, false);
237
+ }
238
+ function parseTfhd(data, box) {
239
+ const full = parseFullBox(data, box);
240
+ if (!full || full.version !== 0 || (full.flags & ~TFHD_KNOWN_FLAGS) !== 0) return null;
241
+ if ((full.flags & TFHD_BASE_DATA_OFFSET_PRESENT) !== 0 || (full.flags & TFHD_DEFAULT_BASE_IS_MOOF) === 0 || (full.flags & TFHD_DURATION_IS_EMPTY) !== 0) {
242
+ return null;
243
+ }
244
+ const dataView = view(data);
245
+ let offset = full.bodyStart;
246
+ if (offset + 4 > box.end) return null;
247
+ const trackId = dataView.getUint32(offset, false);
248
+ offset += 4;
249
+ if ((full.flags & TFHD_SAMPLE_DESCRIPTION_INDEX_PRESENT) !== 0) {
250
+ if (offset + 4 > box.end) return null;
251
+ offset += 4;
252
+ }
253
+ let defaultSampleDuration;
254
+ if ((full.flags & TFHD_DEFAULT_SAMPLE_DURATION_PRESENT) !== 0) {
255
+ if (offset + 4 > box.end) return null;
256
+ defaultSampleDuration = dataView.getUint32(offset, false);
257
+ offset += 4;
258
+ }
259
+ let defaultSampleSize;
260
+ if ((full.flags & TFHD_DEFAULT_SAMPLE_SIZE_PRESENT) !== 0) {
261
+ if (offset + 4 > box.end) return null;
262
+ defaultSampleSize = dataView.getUint32(offset, false);
263
+ offset += 4;
264
+ }
265
+ if ((full.flags & TFHD_DEFAULT_SAMPLE_FLAGS_PRESENT) !== 0) {
266
+ if (offset + 4 > box.end) return null;
267
+ offset += 4;
268
+ }
269
+ if (offset !== box.end) return null;
270
+ return {
271
+ trackId,
272
+ ...defaultSampleDuration === void 0 ? {} : { defaultSampleDuration },
273
+ ...defaultSampleSize === void 0 ? {} : { defaultSampleSize }
274
+ };
275
+ }
276
+ function parseTfdt(data, box) {
277
+ const full = parseFullBox(data, box);
278
+ if (!full || full.flags !== 0) return null;
279
+ if (full.version === 0 && box.end - full.bodyStart === 4) {
280
+ return BigInt(view(data).getUint32(full.bodyStart, false));
281
+ }
282
+ if (full.version === 1 && box.end - full.bodyStart === 8) {
283
+ return readU64(data, full.bodyStart);
284
+ }
285
+ return null;
286
+ }
287
+ function parseMdatLayout(data, offset) {
288
+ if (offset < 0 || offset + 8 > data.length || boxType(data, offset + 4) !== "mdat") return null;
289
+ const dataView = view(data);
290
+ const shortSize = dataView.getUint32(offset, false);
291
+ let headerSize = 8;
292
+ let declaredSize;
293
+ if (shortSize === 0) {
294
+ return null;
295
+ } else if (shortSize === 1) {
296
+ const extended = readU64(data, offset + 8);
297
+ if (extended === null) return null;
298
+ headerSize = 16;
299
+ declaredSize = extended;
300
+ } else {
301
+ declaredSize = BigInt(shortSize);
302
+ }
303
+ if (declaredSize < BigInt(headerSize) || declaredSize < BigInt(data.length - offset)) {
304
+ return null;
305
+ }
306
+ const declaredEnd = BigInt(offset) + declaredSize;
307
+ if (declaredEnd > U64_MAX) return null;
308
+ return { dataStart: BigInt(offset + headerSize), declaredEnd };
309
+ }
310
+ function resolvedDefault(entryValue, tfhdValue, trexValue) {
311
+ const value = entryValue ?? tfhdValue ?? trexValue;
312
+ return value === void 0 || value === 0 ? null : value;
313
+ }
314
+ function parseTrunSamples(data, box, moofStart, baseDecodeTime, tfhd, track, mdat, maxSamples) {
315
+ const full = parseFullBox(data, box);
316
+ if (!full || full.version !== 0 && full.version !== 1 || (full.flags & ~TRUN_KNOWN_FLAGS) !== 0 || (full.flags & TRUN_DATA_OFFSET_PRESENT) === 0 || (full.flags & TRUN_FIRST_SAMPLE_FLAGS_PRESENT) !== 0 && (full.flags & TRUN_SAMPLE_FLAGS_PRESENT) !== 0) {
317
+ return null;
318
+ }
319
+ const dataView = view(data);
320
+ let offset = full.bodyStart;
321
+ if (offset + 8 > box.end) return null;
322
+ const sampleCount = dataView.getUint32(offset, false);
323
+ offset += 4;
324
+ if (sampleCount === 0 || sampleCount > maxSamples) return null;
325
+ const relativeDataOffset = dataView.getInt32(offset, false);
326
+ offset += 4;
327
+ if (relativeDataOffset < 0) return null;
328
+ const dataOffset = BigInt(relativeDataOffset);
329
+ const absoluteDataOffset = BigInt(moofStart) + dataOffset;
330
+ if (absoluteDataOffset > BigInt(data.length) || absoluteDataOffset < mdat.dataStart) return null;
331
+ if ((full.flags & TRUN_FIRST_SAMPLE_FLAGS_PRESENT) !== 0) {
332
+ if (offset + 4 > box.end) return null;
333
+ offset += 4;
334
+ }
335
+ let decodeTime = baseDecodeTime;
336
+ let bytePosition = dataOffset;
337
+ const samples = [];
338
+ for (let index = 0; index < sampleCount; index++) {
339
+ let entryDuration;
340
+ if ((full.flags & TRUN_SAMPLE_DURATION_PRESENT) !== 0) {
341
+ if (offset + 4 > box.end) return null;
342
+ entryDuration = dataView.getUint32(offset, false);
343
+ offset += 4;
344
+ }
345
+ let entrySize;
346
+ if ((full.flags & TRUN_SAMPLE_SIZE_PRESENT) !== 0) {
347
+ if (offset + 4 > box.end) return null;
348
+ entrySize = dataView.getUint32(offset, false);
349
+ offset += 4;
350
+ }
351
+ if ((full.flags & TRUN_SAMPLE_FLAGS_PRESENT) !== 0) {
352
+ if (offset + 4 > box.end) return null;
353
+ offset += 4;
354
+ }
355
+ let compositionOffset = 0;
356
+ if ((full.flags & TRUN_SAMPLE_CTS_OFFSET_PRESENT) !== 0) {
357
+ if (offset + 4 > box.end) return null;
358
+ compositionOffset = full.version === 1 ? dataView.getInt32(offset, false) : dataView.getUint32(offset, false);
359
+ offset += 4;
360
+ }
361
+ if (offset > box.end) return null;
362
+ const duration = resolvedDefault(
363
+ entryDuration,
364
+ tfhd.defaultSampleDuration,
365
+ track.defaultSampleDuration
366
+ );
367
+ const size = resolvedDefault(entrySize, tfhd.defaultSampleSize, track.defaultSampleSize);
368
+ if (duration === null || size === null) return null;
369
+ const sampleEnd = bytePosition + BigInt(size);
370
+ const absoluteSampleEnd = BigInt(moofStart) + sampleEnd;
371
+ if (absoluteSampleEnd > mdat.declaredEnd || absoluteSampleEnd > U64_MAX) return null;
372
+ const presentationTime = decodeTime + BigInt(compositionOffset);
373
+ if (presentationTime < I64_MIN || presentationTime > I64_MAX) return null;
374
+ samples.push({
375
+ decodeTime,
376
+ presentationTime,
377
+ duration,
378
+ timescale: track.timescale,
379
+ size,
380
+ bytePosition
381
+ });
382
+ decodeTime += BigInt(duration);
383
+ if (decodeTime > U64_MAX) return null;
384
+ bytePosition = sampleEnd;
385
+ }
386
+ return offset === box.end ? samples : null;
387
+ }
388
+ function parseIsoBmffMovieFragmentTiming(data, track, maxSamples) {
389
+ if (!Number.isInteger(maxSamples) || maxSamples <= 0) return null;
390
+ const first = parseBox(data, 0, data.length);
391
+ if (!first) return null;
392
+ const moof = first.type === "styp" ? parseBox(data, first.end, data.length) : first;
393
+ if (!moof || moof.type !== "moof" || moof.end >= data.length) return null;
394
+ const moofChildren = children(data, moof);
395
+ if (!moofChildren) return null;
396
+ const mfhd = exactlyOne(moofChildren, "mfhd");
397
+ const traf = exactlyOne(moofChildren, "traf");
398
+ if (!mfhd || !traf) return null;
399
+ const movieFragmentSequenceNumber = parseMfhdSequence(data, mfhd);
400
+ if (movieFragmentSequenceNumber === null || movieFragmentSequenceNumber === 0) return null;
401
+ const trafChildren = children(data, traf);
402
+ if (!trafChildren) return null;
403
+ const tfhdBox = exactlyOne(trafChildren, "tfhd");
404
+ const tfdtBox = exactlyOne(trafChildren, "tfdt");
405
+ const trunBox = exactlyOne(trafChildren, "trun");
406
+ if (!tfhdBox || !tfdtBox || !trunBox) return null;
407
+ const tfhd = parseTfhd(data, tfhdBox);
408
+ const baseDecodeTime = parseTfdt(data, tfdtBox);
409
+ if (!tfhd || tfhd.trackId !== track.trackId || baseDecodeTime === null) return null;
410
+ const mdat = parseMdatLayout(data, moof.end);
411
+ if (!mdat) return null;
412
+ const samples = parseTrunSamples(
413
+ data,
414
+ trunBox,
415
+ moof.start,
416
+ baseDecodeTime,
417
+ tfhd,
418
+ track,
419
+ mdat,
420
+ maxSamples
421
+ );
422
+ if (!samples) return null;
423
+ return { movieFragmentSequenceNumber, samples };
424
+ }
425
+ function sameTrack(a, b) {
426
+ return a.trackId === b.trackId && a.timescale === b.timescale && a.defaultSampleDuration === b.defaultSampleDuration && a.defaultSampleSize === b.defaultSampleSize;
427
+ }
428
+ function sameSample(a, b) {
429
+ return a.decodeTime === b.decodeTime && a.presentationTime === b.presentationTime && a.duration === b.duration && a.timescale === b.timescale && a.size === b.size && a.bytePosition === b.bytePosition;
430
+ }
431
+ var _track, _fragments, _pendingSamples, _evictedSamples, _lastMovieFragmentRejection, _IsoBmffTimingResolver_instances, evictOldestFragment_fn, clearSlot_fn;
432
+ var IsoBmffTimingResolver = class {
433
+ constructor(maxPendingSamples) {
434
+ this.maxPendingSamples = maxPendingSamples;
435
+ __privateAdd(this, _IsoBmffTimingResolver_instances);
436
+ __privateAdd(this, _track, null);
437
+ __privateAdd(this, _fragments, /* @__PURE__ */ new Map());
438
+ __privateAdd(this, _pendingSamples, 0);
439
+ __privateAdd(this, _evictedSamples, 0);
440
+ __privateAdd(this, _lastMovieFragmentRejection, null);
441
+ if (!Number.isInteger(maxPendingSamples) || maxPendingSamples <= 0) {
442
+ throw new Error("[IsoBmffTimingResolver] maxPendingSamples must be a positive integer");
443
+ }
444
+ }
445
+ get pendingSampleCount() {
446
+ return __privateGet(this, _pendingSamples);
447
+ }
448
+ /**
449
+ * Slots reclaimed by window displacement rather than by delivery or
450
+ * abandonment. Deliberately separate from the combiner's own release count:
451
+ * "nobody ever saw this sample" and "the combiner gave up on it" are
452
+ * different failures with different owners, and one number cannot say which.
453
+ */
454
+ get evictedSampleCount() {
455
+ return __privateGet(this, _evictedSamples);
456
+ }
457
+ /** Typed reason for the most recent rejected movie fragment. */
458
+ get lastMovieFragmentRejection() {
459
+ return __privateGet(this, _lastMovieFragmentRejection);
460
+ }
461
+ addInitialization(data) {
462
+ const timing = parseIsoBmffInitializationTiming(data);
463
+ if (!timing) return false;
464
+ if (__privateGet(this, _track)) return sameTrack(__privateGet(this, _track), timing);
465
+ __privateSet(this, _track, timing);
466
+ return true;
467
+ }
468
+ addMovieFragment(mpuSequenceNumber, data, additionalSampleLimit = this.maxPendingSamples) {
469
+ __privateSet(this, _lastMovieFragmentRejection, null);
470
+ if (!Number.isInteger(additionalSampleLimit) || additionalSampleLimit < 0) {
471
+ __privateSet(this, _lastMovieFragmentRejection, "invalid");
472
+ return false;
473
+ }
474
+ if (!__privateGet(this, _track) || !isU32(mpuSequenceNumber)) {
475
+ __privateSet(this, _lastMovieFragmentRejection, "invalid");
476
+ return false;
477
+ }
478
+ const parsed = parseIsoBmffMovieFragmentTiming(
479
+ data,
480
+ __privateGet(this, _track),
481
+ this.maxPendingSamples
482
+ );
483
+ if (!parsed) {
484
+ __privateSet(this, _lastMovieFragmentRejection, "invalid");
485
+ return false;
486
+ }
487
+ const key = fragmentKey(mpuSequenceNumber, parsed.movieFragmentSequenceNumber);
488
+ const existing = __privateGet(this, _fragments).get(key);
489
+ if (existing) {
490
+ return existing.length === parsed.samples.length && existing.every(
491
+ (sample, index) => sample !== null && sameSample(sample, parsed.samples[index])
492
+ );
493
+ }
494
+ let freed = 0;
495
+ while (__privateGet(this, _fragments).size > 0 && (__privateGet(this, _pendingSamples) + parsed.samples.length > this.maxPendingSamples || parsed.samples.length - freed > additionalSampleLimit)) {
496
+ freed += __privateMethod(this, _IsoBmffTimingResolver_instances, evictOldestFragment_fn).call(this);
497
+ }
498
+ if (parsed.samples.length - freed > additionalSampleLimit) {
499
+ __privateSet(this, _lastMovieFragmentRejection, "budget");
500
+ return false;
501
+ }
502
+ if (__privateGet(this, _pendingSamples) + parsed.samples.length > this.maxPendingSamples) {
503
+ __privateSet(this, _lastMovieFragmentRejection, "budget");
504
+ return false;
505
+ }
506
+ __privateGet(this, _fragments).set(key, [...parsed.samples]);
507
+ __privateSet(this, _pendingSamples, __privateGet(this, _pendingSamples) + parsed.samples.length);
508
+ return true;
509
+ }
510
+ sampleTiming(mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber) {
511
+ if (!isU32(mpuSequenceNumber) || !isU32(movieFragmentSequenceNumber) || movieFragmentSequenceNumber === 0 || !isU32(sampleNumber) || sampleNumber === 0) {
512
+ return null;
513
+ }
514
+ const samples = __privateGet(this, _fragments).get(
515
+ fragmentKey(mpuSequenceNumber, movieFragmentSequenceNumber)
516
+ );
517
+ return samples?.[sampleNumber - 1] ?? null;
518
+ }
519
+ consumeSample(mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber, expected) {
520
+ const samples = __privateGet(this, _fragments).get(
521
+ fragmentKey(mpuSequenceNumber, movieFragmentSequenceNumber)
522
+ );
523
+ const sample = samples?.[sampleNumber - 1];
524
+ if (!sample || !sameSample(sample, expected)) return false;
525
+ return __privateMethod(this, _IsoBmffTimingResolver_instances, clearSlot_fn).call(this, mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber);
526
+ }
527
+ /**
528
+ * Free the budget slot of a sample that will never be delivered.
529
+ *
530
+ * `consumeSample` is the delivery path and is the only decrement on a
531
+ * healthy stream. A sample whose data units never complete is never
532
+ * delivered; window displacement in `addMovieFragment` eventually reclaims
533
+ * it, but only after it has aged out of the whole window. This path frees
534
+ * the slot as soon as the combiner knows the sample is gone, so the budget
535
+ * tracks what is actually in flight rather than what has merely aged.
536
+ *
537
+ * The caller is whoever abandoned the sample, so the release is driven by
538
+ * the abandonment itself rather than by a timer, an LRU, or an age bound --
539
+ * the slot is freed exactly when its sample provably cannot arrive, which
540
+ * is a protocol event the combiner already detects and counts.
541
+ *
542
+ * Deliberately takes no `expected` timing: the caller is discarding, not
543
+ * matching, and requiring it would make the release fail exactly when the
544
+ * timing entry is the thing being reclaimed. Returns false when the slot
545
+ * was already freed, so a double release cannot drive the count negative.
546
+ */
547
+ releaseSample(mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber) {
548
+ return __privateMethod(this, _IsoBmffTimingResolver_instances, clearSlot_fn).call(this, mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber);
549
+ }
550
+ reset() {
551
+ __privateSet(this, _track, null);
552
+ __privateGet(this, _fragments).clear();
553
+ __privateSet(this, _pendingSamples, 0);
554
+ }
555
+ };
556
+ _track = new WeakMap();
557
+ _fragments = new WeakMap();
558
+ _pendingSamples = new WeakMap();
559
+ _evictedSamples = new WeakMap();
560
+ _lastMovieFragmentRejection = new WeakMap();
561
+ _IsoBmffTimingResolver_instances = new WeakSet();
562
+ /**
563
+ * Drop the oldest pending fragment whole and return the slots it held.
564
+ *
565
+ * Oldest is insertion order, which for a moof stream is arrival order, so
566
+ * this is the least-recently-declared timing -- the entries least likely to
567
+ * still have data units in flight.
568
+ */
569
+ evictOldestFragment_fn = function() {
570
+ const oldest = __privateGet(this, _fragments).keys().next().value;
571
+ if (oldest === void 0) return 0;
572
+ const samples = __privateGet(this, _fragments).get(oldest);
573
+ let live = 0;
574
+ for (const sample of samples) if (sample !== null) live++;
575
+ __privateGet(this, _fragments).delete(oldest);
576
+ __privateSet(this, _pendingSamples, __privateGet(this, _pendingSamples) - live);
577
+ __privateSet(this, _evictedSamples, __privateGet(this, _evictedSamples) + live);
578
+ return live;
579
+ };
580
+ /** Null one slot, decrement the budget, and drop the fragment when empty. */
581
+ clearSlot_fn = function(mpuSequenceNumber, movieFragmentSequenceNumber, sampleNumber) {
582
+ if (!isU32(mpuSequenceNumber) || !isU32(movieFragmentSequenceNumber) || movieFragmentSequenceNumber === 0 || !isU32(sampleNumber) || sampleNumber === 0) {
583
+ return false;
584
+ }
585
+ const key = fragmentKey(mpuSequenceNumber, movieFragmentSequenceNumber);
586
+ const samples = __privateGet(this, _fragments).get(key);
587
+ const index = sampleNumber - 1;
588
+ if (!samples || !samples[index]) return false;
589
+ samples[index] = null;
590
+ __privateWrapper(this, _pendingSamples)._--;
591
+ if (samples.every((value) => value === null)) __privateGet(this, _fragments).delete(key);
592
+ return true;
593
+ };
594
+ function fragmentKey(mpuSequenceNumber, movieFragmentSequenceNumber) {
595
+ return `${mpuSequenceNumber}:${movieFragmentSequenceNumber}`;
596
+ }
597
+ function isU32(value) {
598
+ return Number.isInteger(value) && value >= 0 && value <= 4294967295;
599
+ }
600
+ function mediaTicksToMicroseconds(ticks, timescale) {
601
+ if (!Number.isInteger(timescale) || timescale <= 0) return null;
602
+ const numerator = ticks * MICROSECONDS_PER_SECOND;
603
+ const scale = BigInt(timescale);
604
+ const whole = numerator / scale;
605
+ const remainder = numerator % scale;
606
+ if (whole < BigInt(Number.MIN_SAFE_INTEGER) || whole > BigInt(Number.MAX_SAFE_INTEGER)) {
607
+ return null;
608
+ }
609
+ const result = Number(whole) + Number(remainder) / timescale;
610
+ return Number.isFinite(result) ? result : null;
611
+ }
612
+ export {
613
+ IsoBmffTimingResolver,
614
+ mediaTicksToMicroseconds,
615
+ parseIsoBmffInitializationTiming,
616
+ parseIsoBmffMovieFragmentTiming
617
+ };
618
+ //# sourceMappingURL=iso-bmff-timing.js.map