@blockcast/mmt-container 0.1.0-main.149f78a4adae

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 (678) 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 +148 -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 +17109 -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 +549 -0
  26. package/dist/carp-catalog.js.map +7 -0
  27. package/dist/catalog-fec-params.d.ts +82 -0
  28. package/dist/catalog-fec-params.d.ts.map +1 -0
  29. package/dist/catalog-fec-params.js +66 -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 +168 -0
  40. package/dist/cmaf-block-assembler.d.ts.map +1 -0
  41. package/dist/cmaf-block-assembler.js +1755 -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 +235 -0
  52. package/dist/codec-utils.d.ts.map +1 -0
  53. package/dist/codec-utils.js +1225 -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 +266 -0
  60. package/dist/fec-manager.d.ts.map +1 -0
  61. package/dist/fec-manager.js +1447 -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 +76 -0
  68. package/dist/fec-worker-setup.d.ts.map +1 -0
  69. package/dist/fec-worker-setup.js +603 -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 +330 -0
  82. package/dist/index.js.map +7 -0
  83. package/dist/iso-bmff-timing.d.ts +47 -0
  84. package/dist/iso-bmff-timing.d.ts.map +1 -0
  85. package/dist/iso-bmff-timing.js +526 -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 +1267 -0
  94. package/dist/manifest-auth-plan.js.map +7 -0
  95. package/dist/media-router.d.ts +338 -0
  96. package/dist/media-router.d.ts.map +1 -0
  97. package/dist/media-router.js +802 -0
  98. package/dist/media-router.js.map +7 -0
  99. package/dist/mfu-reassembler.d.ts +264 -0
  100. package/dist/mfu-reassembler.d.ts.map +1 -0
  101. package/dist/mfu-reassembler.js +2668 -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 +304 -0
  108. package/dist/mmtp-container-parser.d.ts.map +1 -0
  109. package/dist/mmtp-container-parser.js +5378 -0
  110. package/dist/mmtp-container-parser.js.map +7 -0
  111. package/dist/mmtp-container-parser.no-modules.js +7853 -0
  112. package/dist/mmtp-container-parser.no-modules.js.map +7 -0
  113. package/dist/mmtp-decode-pipeline.d.ts +96 -0
  114. package/dist/mmtp-decode-pipeline.d.ts.map +1 -0
  115. package/dist/mmtp-decode-pipeline.js +5589 -0
  116. package/dist/mmtp-decode-pipeline.js.map +7 -0
  117. package/dist/mmtp-router.d.ts +383 -0
  118. package/dist/mmtp-router.d.ts.map +1 -0
  119. package/dist/mmtp-router.js +8384 -0
  120. package/dist/mmtp-router.js.map +7 -0
  121. package/dist/mmtp-to-cmaf.d.ts +166 -0
  122. package/dist/mmtp-to-cmaf.d.ts.map +1 -0
  123. package/dist/mmtp-to-cmaf.js +781 -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 +330 -0
  134. package/dist/multicast-manager.d.ts.map +1 -0
  135. package/dist/multicast-manager.js +11032 -0
  136. package/dist/multicast-manager.js.map +7 -0
  137. package/dist/multicast-transport.d.ts +62 -0
  138. package/dist/multicast-transport.d.ts.map +1 -0
  139. package/dist/multicast-transport.js +338 -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 +7819 -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 +117 -0
  156. package/dist/repair-fetch.js.map +7 -0
  157. package/dist/sample-combiner.d.ts +182 -0
  158. package/dist/sample-combiner.d.ts.map +1 -0
  159. package/dist/sample-combiner.js +571 -0
  160. package/dist/sample-combiner.js.map +7 -0
  161. package/dist/signaling.d.ts +29 -0
  162. package/dist/signaling.d.ts.map +1 -0
  163. package/dist/signaling.js +232 -0
  164. package/dist/signaling.js.map +7 -0
  165. package/dist/source-auth.d.ts +2 -0
  166. package/dist/source-auth.d.ts.map +1 -0
  167. package/dist/source-auth.js +1220 -0
  168. package/dist/source-auth.js.map +7 -0
  169. package/dist/switching-set-alignment.d.ts +61 -0
  170. package/dist/switching-set-alignment.d.ts.map +1 -0
  171. package/dist/switching-set-alignment.js +85 -0
  172. package/dist/switching-set-alignment.js.map +7 -0
  173. package/dist/timestamp-codec.d.ts +34 -0
  174. package/dist/timestamp-codec.d.ts.map +1 -0
  175. package/dist/timestamp-codec.js +456 -0
  176. package/dist/timestamp-codec.js.map +7 -0
  177. package/dist/track-pipeline-setup.d.ts +72 -0
  178. package/dist/track-pipeline-setup.d.ts.map +1 -0
  179. package/dist/track-pipeline-setup.js +306 -0
  180. package/dist/track-pipeline-setup.js.map +7 -0
  181. package/dist/track-pipeline.d.ts +121 -0
  182. package/dist/track-pipeline.d.ts.map +1 -0
  183. package/dist/track-pipeline.js +229 -0
  184. package/dist/track-pipeline.js.map +7 -0
  185. package/dist/track-session.d.ts +269 -0
  186. package/dist/track-session.d.ts.map +1 -0
  187. package/dist/track-session.js +597 -0
  188. package/dist/track-session.js.map +7 -0
  189. package/dist/transport-pool.d.ts +69 -0
  190. package/dist/transport-pool.d.ts.map +1 -0
  191. package/dist/transport-pool.js +88 -0
  192. package/dist/transport-pool.js.map +7 -0
  193. package/dist/wasm-mfu-reassembler.d.ts +81 -0
  194. package/dist/wasm-mfu-reassembler.d.ts.map +1 -0
  195. package/dist/wasm-mfu-reassembler.js +1915 -0
  196. package/dist/wasm-mfu-reassembler.js.map +7 -0
  197. package/dist/wasm-mmtp-container-parser.d.ts +10 -0
  198. package/dist/wasm-mmtp-container-parser.d.ts.map +1 -0
  199. package/dist/wasm-mmtp-container-parser.js +5635 -0
  200. package/dist/wasm-mmtp-container-parser.js.map +7 -0
  201. package/node_modules/@blockcast/fec-worker/README.md +213 -0
  202. package/node_modules/@blockcast/fec-worker/dist/.build-stamp +0 -0
  203. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts +80 -0
  204. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.d.ts.map +1 -0
  205. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js +270 -0
  206. package/node_modules/@blockcast/fec-worker/dist/fec-worker-client.js.map +1 -0
  207. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts +252 -0
  208. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.d.ts.map +1 -0
  209. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js +11 -0
  210. package/node_modules/@blockcast/fec-worker/dist/fec-worker-types.js.map +1 -0
  211. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts +14 -0
  212. package/node_modules/@blockcast/fec-worker/dist/fec-worker.d.ts.map +1 -0
  213. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js +565 -0
  214. package/node_modules/@blockcast/fec-worker/dist/fec-worker.js.map +7 -0
  215. package/node_modules/@blockcast/fec-worker/dist/index.d.ts +10 -0
  216. package/node_modules/@blockcast/fec-worker/dist/index.d.ts.map +1 -0
  217. package/node_modules/@blockcast/fec-worker/dist/index.js +8 -0
  218. package/node_modules/@blockcast/fec-worker/dist/index.js.map +1 -0
  219. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts +20 -0
  220. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.d.ts.map +1 -0
  221. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js +349 -0
  222. package/node_modules/@blockcast/fec-worker/dist/shred-fec-worker.js.map +7 -0
  223. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts +104 -0
  224. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.d.ts.map +1 -0
  225. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js +181 -0
  226. package/node_modules/@blockcast/fec-worker/dist/shred-worker-client.js.map +1 -0
  227. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts +179 -0
  228. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.d.ts.map +1 -0
  229. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js +47 -0
  230. package/node_modules/@blockcast/fec-worker/dist/shred-worker-types.js.map +1 -0
  231. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts +9 -0
  232. package/node_modules/@blockcast/fec-worker/dist/transfer.d.ts.map +1 -0
  233. package/node_modules/@blockcast/fec-worker/dist/transfer.js +13 -0
  234. package/node_modules/@blockcast/fec-worker/dist/transfer.js.map +1 -0
  235. package/node_modules/@blockcast/fec-worker/package.json +59 -0
  236. package/node_modules/@blockcast/fec-worker/src/fec-worker-client.ts +309 -0
  237. package/node_modules/@blockcast/fec-worker/src/fec-worker-types.ts +268 -0
  238. package/node_modules/@blockcast/fec-worker/src/fec-worker.ts +1048 -0
  239. package/node_modules/@blockcast/fec-worker/src/index.ts +32 -0
  240. package/node_modules/@blockcast/fec-worker/src/shred-fec-worker.ts +558 -0
  241. package/node_modules/@blockcast/fec-worker/src/shred-worker-client.ts +222 -0
  242. package/node_modules/@blockcast/fec-worker/src/shred-worker-types.ts +194 -0
  243. package/node_modules/@blockcast/fec-worker/src/transfer.ts +12 -0
  244. package/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  245. package/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  246. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  247. package/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  248. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  249. package/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  250. package/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  251. package/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  252. package/node_modules/@blockcast/mmt-base/README.md +120 -0
  253. package/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  254. package/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
  255. package/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  256. package/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
  257. package/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  258. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +275 -0
  259. package/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  260. package/node_modules/@blockcast/mmt-base/dist/mmtp.js +644 -0
  261. package/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  262. package/node_modules/@blockcast/mmt-base/package.json +49 -0
  263. package/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
  264. package/node_modules/@blockcast/mmt-base/src/mmtp.ts +898 -0
  265. package/node_modules/@blockcast/mmt-fec/README.md +270 -0
  266. package/node_modules/@blockcast/mmt-fec/dist/.build-stamp +0 -0
  267. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts +80 -0
  268. package/node_modules/@blockcast/mmt-fec/dist/block-manager.d.ts.map +1 -0
  269. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js +294 -0
  270. package/node_modules/@blockcast/mmt-fec/dist/block-manager.js.map +1 -0
  271. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts +72 -0
  272. package/node_modules/@blockcast/mmt-fec/dist/block-processor.d.ts.map +1 -0
  273. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js +192 -0
  274. package/node_modules/@blockcast/mmt-fec/dist/block-processor.js.map +1 -0
  275. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts +46 -0
  276. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.d.ts.map +1 -0
  277. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js +96 -0
  278. package/node_modules/@blockcast/mmt-fec/dist/cmaf-recovery.js.map +1 -0
  279. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts +33 -0
  280. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.d.ts.map +1 -0
  281. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js +57 -0
  282. package/node_modules/@blockcast/mmt-fec/dist/cmaf-symbols.js.map +1 -0
  283. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts +185 -0
  284. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.d.ts.map +1 -0
  285. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js +273 -0
  286. package/node_modules/@blockcast/mmt-fec/dist/fec-block-mapper.js.map +1 -0
  287. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts +22 -0
  288. package/node_modules/@blockcast/mmt-fec/dist/index.d.ts.map +1 -0
  289. package/node_modules/@blockcast/mmt-fec/dist/index.js +22 -0
  290. package/node_modules/@blockcast/mmt-fec/dist/index.js.map +1 -0
  291. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts +20 -0
  292. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.d.ts.map +1 -0
  293. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js +28 -0
  294. package/node_modules/@blockcast/mmt-fec/dist/loc-symbols.js.map +1 -0
  295. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts +174 -0
  296. package/node_modules/@blockcast/mmt-fec/dist/oti.d.ts.map +1 -0
  297. package/node_modules/@blockcast/mmt-fec/dist/oti.js +256 -0
  298. package/node_modules/@blockcast/mmt-fec/dist/oti.js.map +1 -0
  299. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts +41 -0
  300. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.d.ts.map +1 -0
  301. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js +81 -0
  302. package/node_modules/@blockcast/mmt-fec/dist/reorder-buffer.js.map +1 -0
  303. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/README.md +181 -0
  304. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/.build-stamp +0 -0
  305. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts +57 -0
  306. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.d.ts.map +1 -0
  307. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js +115 -0
  308. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/dist/index.js.map +1 -0
  309. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/package.json +50 -0
  310. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-alta-parse/src/index.ts +136 -0
  311. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/README.md +120 -0
  312. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/.build-stamp +0 -0
  313. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts +2 -0
  314. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.d.ts.map +1 -0
  315. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js +2 -0
  316. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/index.js.map +1 -0
  317. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts +275 -0
  318. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.d.ts.map +1 -0
  319. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js +644 -0
  320. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/dist/mmtp.js.map +1 -0
  321. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/package.json +49 -0
  322. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/index.ts +1 -0
  323. package/node_modules/@blockcast/mmt-fec/node_modules/@blockcast/mmt-base/src/mmtp.ts +898 -0
  324. package/node_modules/@blockcast/mmt-fec/package.json +79 -0
  325. package/node_modules/@blockcast/mmt-fec/src/block-manager.ts +369 -0
  326. package/node_modules/@blockcast/mmt-fec/src/block-processor.ts +277 -0
  327. package/node_modules/@blockcast/mmt-fec/src/cmaf-recovery.ts +127 -0
  328. package/node_modules/@blockcast/mmt-fec/src/cmaf-symbols.ts +68 -0
  329. package/node_modules/@blockcast/mmt-fec/src/fec-block-mapper.ts +332 -0
  330. package/node_modules/@blockcast/mmt-fec/src/index.ts +77 -0
  331. package/node_modules/@blockcast/mmt-fec/src/loc-symbols.ts +34 -0
  332. package/node_modules/@blockcast/mmt-fec/src/oti.ts +319 -0
  333. package/node_modules/@blockcast/mmt-fec/src/reorder-buffer.ts +101 -0
  334. package/node_modules/@blockcast/mmt-manifest-verify/dist/.build-stamp +0 -0
  335. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts +28 -0
  336. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.d.ts.map +1 -0
  337. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js +128 -0
  338. package/node_modules/@blockcast/mmt-manifest-verify/dist/admission.js.map +1 -0
  339. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts +4 -0
  340. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.d.ts.map +1 -0
  341. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js +4 -0
  342. package/node_modules/@blockcast/mmt-manifest-verify/dist/index.js.map +1 -0
  343. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts +37 -0
  344. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.d.ts.map +1 -0
  345. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js +179 -0
  346. package/node_modules/@blockcast/mmt-manifest-verify/dist/source-auth.js.map +1 -0
  347. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts +90 -0
  348. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.d.ts.map +1 -0
  349. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js +462 -0
  350. package/node_modules/@blockcast/mmt-manifest-verify/dist/verifier.js.map +1 -0
  351. package/node_modules/@blockcast/mmt-manifest-verify/package.json +45 -0
  352. package/node_modules/@blockcast/mmt-manifest-verify/src/admission.ts +171 -0
  353. package/node_modules/@blockcast/mmt-manifest-verify/src/index.ts +3 -0
  354. package/node_modules/@blockcast/mmt-manifest-verify/src/source-auth.ts +230 -0
  355. package/node_modules/@blockcast/mmt-manifest-verify/src/verifier.ts +636 -0
  356. package/node_modules/@noble/hashes/LICENSE +21 -0
  357. package/node_modules/@noble/hashes/README.md +521 -0
  358. package/node_modules/@noble/hashes/_assert.d.ts +17 -0
  359. package/node_modules/@noble/hashes/_assert.d.ts.map +1 -0
  360. package/node_modules/@noble/hashes/_assert.js +18 -0
  361. package/node_modules/@noble/hashes/_assert.js.map +1 -0
  362. package/node_modules/@noble/hashes/_blake.d.ts +14 -0
  363. package/node_modules/@noble/hashes/_blake.d.ts.map +1 -0
  364. package/node_modules/@noble/hashes/_blake.js +50 -0
  365. package/node_modules/@noble/hashes/_blake.js.map +1 -0
  366. package/node_modules/@noble/hashes/_md.d.ts +51 -0
  367. package/node_modules/@noble/hashes/_md.d.ts.map +1 -0
  368. package/node_modules/@noble/hashes/_md.js +162 -0
  369. package/node_modules/@noble/hashes/_md.js.map +1 -0
  370. package/node_modules/@noble/hashes/_u64.d.ts +55 -0
  371. package/node_modules/@noble/hashes/_u64.d.ts.map +1 -0
  372. package/node_modules/@noble/hashes/_u64.js +90 -0
  373. package/node_modules/@noble/hashes/_u64.js.map +1 -0
  374. package/node_modules/@noble/hashes/argon2.d.ts +32 -0
  375. package/node_modules/@noble/hashes/argon2.d.ts.map +1 -0
  376. package/node_modules/@noble/hashes/argon2.js +401 -0
  377. package/node_modules/@noble/hashes/argon2.js.map +1 -0
  378. package/node_modules/@noble/hashes/blake1.d.ts +106 -0
  379. package/node_modules/@noble/hashes/blake1.d.ts.map +1 -0
  380. package/node_modules/@noble/hashes/blake1.js +459 -0
  381. package/node_modules/@noble/hashes/blake1.js.map +1 -0
  382. package/node_modules/@noble/hashes/blake2.d.ts +116 -0
  383. package/node_modules/@noble/hashes/blake2.d.ts.map +1 -0
  384. package/node_modules/@noble/hashes/blake2.js +420 -0
  385. package/node_modules/@noble/hashes/blake2.js.map +1 -0
  386. package/node_modules/@noble/hashes/blake2b.d.ts +11 -0
  387. package/node_modules/@noble/hashes/blake2b.d.ts.map +1 -0
  388. package/node_modules/@noble/hashes/blake2b.js +14 -0
  389. package/node_modules/@noble/hashes/blake2b.js.map +1 -0
  390. package/node_modules/@noble/hashes/blake2s.d.ts +20 -0
  391. package/node_modules/@noble/hashes/blake2s.d.ts.map +1 -0
  392. package/node_modules/@noble/hashes/blake2s.js +24 -0
  393. package/node_modules/@noble/hashes/blake2s.js.map +1 -0
  394. package/node_modules/@noble/hashes/blake3.d.ts +54 -0
  395. package/node_modules/@noble/hashes/blake3.d.ts.map +1 -0
  396. package/node_modules/@noble/hashes/blake3.js +255 -0
  397. package/node_modules/@noble/hashes/blake3.js.map +1 -0
  398. package/node_modules/@noble/hashes/crypto.d.ts +2 -0
  399. package/node_modules/@noble/hashes/crypto.d.ts.map +1 -0
  400. package/node_modules/@noble/hashes/crypto.js +5 -0
  401. package/node_modules/@noble/hashes/crypto.js.map +1 -0
  402. package/node_modules/@noble/hashes/cryptoNode.d.ts +2 -0
  403. package/node_modules/@noble/hashes/cryptoNode.d.ts.map +1 -0
  404. package/node_modules/@noble/hashes/cryptoNode.js +18 -0
  405. package/node_modules/@noble/hashes/cryptoNode.js.map +1 -0
  406. package/node_modules/@noble/hashes/eskdf.d.ts +47 -0
  407. package/node_modules/@noble/hashes/eskdf.d.ts.map +1 -0
  408. package/node_modules/@noble/hashes/eskdf.js +166 -0
  409. package/node_modules/@noble/hashes/eskdf.js.map +1 -0
  410. package/node_modules/@noble/hashes/esm/_assert.d.ts +17 -0
  411. package/node_modules/@noble/hashes/esm/_assert.d.ts.map +1 -0
  412. package/node_modules/@noble/hashes/esm/_assert.js +15 -0
  413. package/node_modules/@noble/hashes/esm/_assert.js.map +1 -0
  414. package/node_modules/@noble/hashes/esm/_blake.d.ts +14 -0
  415. package/node_modules/@noble/hashes/esm/_blake.d.ts.map +1 -0
  416. package/node_modules/@noble/hashes/esm/_blake.js +45 -0
  417. package/node_modules/@noble/hashes/esm/_blake.js.map +1 -0
  418. package/node_modules/@noble/hashes/esm/_md.d.ts +51 -0
  419. package/node_modules/@noble/hashes/esm/_md.d.ts.map +1 -0
  420. package/node_modules/@noble/hashes/esm/_md.js +155 -0
  421. package/node_modules/@noble/hashes/esm/_md.js.map +1 -0
  422. package/node_modules/@noble/hashes/esm/_u64.d.ts +55 -0
  423. package/node_modules/@noble/hashes/esm/_u64.d.ts.map +1 -0
  424. package/node_modules/@noble/hashes/esm/_u64.js +67 -0
  425. package/node_modules/@noble/hashes/esm/_u64.js.map +1 -0
  426. package/node_modules/@noble/hashes/esm/argon2.d.ts +32 -0
  427. package/node_modules/@noble/hashes/esm/argon2.d.ts.map +1 -0
  428. package/node_modules/@noble/hashes/esm/argon2.js +392 -0
  429. package/node_modules/@noble/hashes/esm/argon2.js.map +1 -0
  430. package/node_modules/@noble/hashes/esm/blake1.d.ts +106 -0
  431. package/node_modules/@noble/hashes/esm/blake1.d.ts.map +1 -0
  432. package/node_modules/@noble/hashes/esm/blake1.js +452 -0
  433. package/node_modules/@noble/hashes/esm/blake1.js.map +1 -0
  434. package/node_modules/@noble/hashes/esm/blake2.d.ts +116 -0
  435. package/node_modules/@noble/hashes/esm/blake2.d.ts.map +1 -0
  436. package/node_modules/@noble/hashes/esm/blake2.js +413 -0
  437. package/node_modules/@noble/hashes/esm/blake2.js.map +1 -0
  438. package/node_modules/@noble/hashes/esm/blake2b.d.ts +11 -0
  439. package/node_modules/@noble/hashes/esm/blake2b.d.ts.map +1 -0
  440. package/node_modules/@noble/hashes/esm/blake2b.js +11 -0
  441. package/node_modules/@noble/hashes/esm/blake2b.js.map +1 -0
  442. package/node_modules/@noble/hashes/esm/blake2s.d.ts +20 -0
  443. package/node_modules/@noble/hashes/esm/blake2s.d.ts.map +1 -0
  444. package/node_modules/@noble/hashes/esm/blake2s.js +21 -0
  445. package/node_modules/@noble/hashes/esm/blake2s.js.map +1 -0
  446. package/node_modules/@noble/hashes/esm/blake3.d.ts +54 -0
  447. package/node_modules/@noble/hashes/esm/blake3.d.ts.map +1 -0
  448. package/node_modules/@noble/hashes/esm/blake3.js +251 -0
  449. package/node_modules/@noble/hashes/esm/blake3.js.map +1 -0
  450. package/node_modules/@noble/hashes/esm/crypto.d.ts +2 -0
  451. package/node_modules/@noble/hashes/esm/crypto.d.ts.map +1 -0
  452. package/node_modules/@noble/hashes/esm/crypto.js +2 -0
  453. package/node_modules/@noble/hashes/esm/crypto.js.map +1 -0
  454. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts +2 -0
  455. package/node_modules/@noble/hashes/esm/cryptoNode.d.ts.map +1 -0
  456. package/node_modules/@noble/hashes/esm/cryptoNode.js +15 -0
  457. package/node_modules/@noble/hashes/esm/cryptoNode.js.map +1 -0
  458. package/node_modules/@noble/hashes/esm/eskdf.d.ts +47 -0
  459. package/node_modules/@noble/hashes/esm/eskdf.d.ts.map +1 -0
  460. package/node_modules/@noble/hashes/esm/eskdf.js +160 -0
  461. package/node_modules/@noble/hashes/esm/eskdf.js.map +1 -0
  462. package/node_modules/@noble/hashes/esm/hkdf.d.ts +36 -0
  463. package/node_modules/@noble/hashes/esm/hkdf.d.ts.map +1 -0
  464. package/node_modules/@noble/hashes/esm/hkdf.js +82 -0
  465. package/node_modules/@noble/hashes/esm/hkdf.js.map +1 -0
  466. package/node_modules/@noble/hashes/esm/hmac.d.ts +35 -0
  467. package/node_modules/@noble/hashes/esm/hmac.d.ts.map +1 -0
  468. package/node_modules/@noble/hashes/esm/hmac.js +86 -0
  469. package/node_modules/@noble/hashes/esm/hmac.js.map +1 -0
  470. package/node_modules/@noble/hashes/esm/index.d.ts +2 -0
  471. package/node_modules/@noble/hashes/esm/index.d.ts.map +1 -0
  472. package/node_modules/@noble/hashes/esm/index.js +33 -0
  473. package/node_modules/@noble/hashes/esm/index.js.map +1 -0
  474. package/node_modules/@noble/hashes/esm/legacy.d.ts +71 -0
  475. package/node_modules/@noble/hashes/esm/legacy.d.ts.map +1 -0
  476. package/node_modules/@noble/hashes/esm/legacy.js +281 -0
  477. package/node_modules/@noble/hashes/esm/legacy.js.map +1 -0
  478. package/node_modules/@noble/hashes/esm/package.json +10 -0
  479. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts +23 -0
  480. package/node_modules/@noble/hashes/esm/pbkdf2.d.ts.map +1 -0
  481. package/node_modules/@noble/hashes/esm/pbkdf2.js +97 -0
  482. package/node_modules/@noble/hashes/esm/pbkdf2.js.map +1 -0
  483. package/node_modules/@noble/hashes/esm/ripemd160.d.ts +13 -0
  484. package/node_modules/@noble/hashes/esm/ripemd160.d.ts.map +1 -0
  485. package/node_modules/@noble/hashes/esm/ripemd160.js +13 -0
  486. package/node_modules/@noble/hashes/esm/ripemd160.js.map +1 -0
  487. package/node_modules/@noble/hashes/esm/scrypt.d.ts +34 -0
  488. package/node_modules/@noble/hashes/esm/scrypt.d.ts.map +1 -0
  489. package/node_modules/@noble/hashes/esm/scrypt.js +228 -0
  490. package/node_modules/@noble/hashes/esm/scrypt.js.map +1 -0
  491. package/node_modules/@noble/hashes/esm/sha1.d.ts +11 -0
  492. package/node_modules/@noble/hashes/esm/sha1.d.ts.map +1 -0
  493. package/node_modules/@noble/hashes/esm/sha1.js +11 -0
  494. package/node_modules/@noble/hashes/esm/sha1.js.map +1 -0
  495. package/node_modules/@noble/hashes/esm/sha2.d.ts +159 -0
  496. package/node_modules/@noble/hashes/esm/sha2.d.ts.map +1 -0
  497. package/node_modules/@noble/hashes/esm/sha2.js +375 -0
  498. package/node_modules/@noble/hashes/esm/sha2.js.map +1 -0
  499. package/node_modules/@noble/hashes/esm/sha256.d.ts +20 -0
  500. package/node_modules/@noble/hashes/esm/sha256.d.ts.map +1 -0
  501. package/node_modules/@noble/hashes/esm/sha256.js +20 -0
  502. package/node_modules/@noble/hashes/esm/sha256.js.map +1 -0
  503. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts +142 -0
  504. package/node_modules/@noble/hashes/esm/sha3-addons.d.ts.map +1 -0
  505. package/node_modules/@noble/hashes/esm/sha3-addons.js +393 -0
  506. package/node_modules/@noble/hashes/esm/sha3-addons.js.map +1 -0
  507. package/node_modules/@noble/hashes/esm/sha3.d.ts +53 -0
  508. package/node_modules/@noble/hashes/esm/sha3.d.ts.map +1 -0
  509. package/node_modules/@noble/hashes/esm/sha3.js +234 -0
  510. package/node_modules/@noble/hashes/esm/sha3.js.map +1 -0
  511. package/node_modules/@noble/hashes/esm/sha512.d.ts +26 -0
  512. package/node_modules/@noble/hashes/esm/sha512.d.ts.map +1 -0
  513. package/node_modules/@noble/hashes/esm/sha512.js +26 -0
  514. package/node_modules/@noble/hashes/esm/sha512.js.map +1 -0
  515. package/node_modules/@noble/hashes/esm/utils.d.ts +161 -0
  516. package/node_modules/@noble/hashes/esm/utils.d.ts.map +1 -0
  517. package/node_modules/@noble/hashes/esm/utils.js +281 -0
  518. package/node_modules/@noble/hashes/esm/utils.js.map +1 -0
  519. package/node_modules/@noble/hashes/hkdf.d.ts +36 -0
  520. package/node_modules/@noble/hashes/hkdf.d.ts.map +1 -0
  521. package/node_modules/@noble/hashes/hkdf.js +88 -0
  522. package/node_modules/@noble/hashes/hkdf.js.map +1 -0
  523. package/node_modules/@noble/hashes/hmac.d.ts +35 -0
  524. package/node_modules/@noble/hashes/hmac.d.ts.map +1 -0
  525. package/node_modules/@noble/hashes/hmac.js +91 -0
  526. package/node_modules/@noble/hashes/hmac.js.map +1 -0
  527. package/node_modules/@noble/hashes/index.d.ts +1 -0
  528. package/node_modules/@noble/hashes/index.d.ts.map +1 -0
  529. package/node_modules/@noble/hashes/index.js +33 -0
  530. package/node_modules/@noble/hashes/index.js.map +1 -0
  531. package/node_modules/@noble/hashes/legacy.d.ts +71 -0
  532. package/node_modules/@noble/hashes/legacy.d.ts.map +1 -0
  533. package/node_modules/@noble/hashes/legacy.js +287 -0
  534. package/node_modules/@noble/hashes/legacy.js.map +1 -0
  535. package/node_modules/@noble/hashes/package.json +266 -0
  536. package/node_modules/@noble/hashes/pbkdf2.d.ts +23 -0
  537. package/node_modules/@noble/hashes/pbkdf2.d.ts.map +1 -0
  538. package/node_modules/@noble/hashes/pbkdf2.js +101 -0
  539. package/node_modules/@noble/hashes/pbkdf2.js.map +1 -0
  540. package/node_modules/@noble/hashes/ripemd160.d.ts +13 -0
  541. package/node_modules/@noble/hashes/ripemd160.d.ts.map +1 -0
  542. package/node_modules/@noble/hashes/ripemd160.js +16 -0
  543. package/node_modules/@noble/hashes/ripemd160.js.map +1 -0
  544. package/node_modules/@noble/hashes/scrypt.d.ts +34 -0
  545. package/node_modules/@noble/hashes/scrypt.d.ts.map +1 -0
  546. package/node_modules/@noble/hashes/scrypt.js +232 -0
  547. package/node_modules/@noble/hashes/scrypt.js.map +1 -0
  548. package/node_modules/@noble/hashes/sha1.d.ts +11 -0
  549. package/node_modules/@noble/hashes/sha1.d.ts.map +1 -0
  550. package/node_modules/@noble/hashes/sha1.js +14 -0
  551. package/node_modules/@noble/hashes/sha1.js.map +1 -0
  552. package/node_modules/@noble/hashes/sha2.d.ts +159 -0
  553. package/node_modules/@noble/hashes/sha2.d.ts.map +1 -0
  554. package/node_modules/@noble/hashes/sha2.js +384 -0
  555. package/node_modules/@noble/hashes/sha2.js.map +1 -0
  556. package/node_modules/@noble/hashes/sha256.d.ts +20 -0
  557. package/node_modules/@noble/hashes/sha256.d.ts.map +1 -0
  558. package/node_modules/@noble/hashes/sha256.js +23 -0
  559. package/node_modules/@noble/hashes/sha256.js.map +1 -0
  560. package/node_modules/@noble/hashes/sha3-addons.d.ts +142 -0
  561. package/node_modules/@noble/hashes/sha3-addons.d.ts.map +1 -0
  562. package/node_modules/@noble/hashes/sha3-addons.js +402 -0
  563. package/node_modules/@noble/hashes/sha3-addons.js.map +1 -0
  564. package/node_modules/@noble/hashes/sha3.d.ts +53 -0
  565. package/node_modules/@noble/hashes/sha3.d.ts.map +1 -0
  566. package/node_modules/@noble/hashes/sha3.js +239 -0
  567. package/node_modules/@noble/hashes/sha3.js.map +1 -0
  568. package/node_modules/@noble/hashes/sha512.d.ts +26 -0
  569. package/node_modules/@noble/hashes/sha512.d.ts.map +1 -0
  570. package/node_modules/@noble/hashes/sha512.js +29 -0
  571. package/node_modules/@noble/hashes/sha512.js.map +1 -0
  572. package/node_modules/@noble/hashes/src/_assert.ts +22 -0
  573. package/node_modules/@noble/hashes/src/_blake.ts +50 -0
  574. package/node_modules/@noble/hashes/src/_md.ts +176 -0
  575. package/node_modules/@noble/hashes/src/_u64.ts +91 -0
  576. package/node_modules/@noble/hashes/src/argon2.ts +497 -0
  577. package/node_modules/@noble/hashes/src/blake1.ts +534 -0
  578. package/node_modules/@noble/hashes/src/blake2.ts +486 -0
  579. package/node_modules/@noble/hashes/src/blake2b.ts +10 -0
  580. package/node_modules/@noble/hashes/src/blake2s.ts +20 -0
  581. package/node_modules/@noble/hashes/src/blake3.ts +272 -0
  582. package/node_modules/@noble/hashes/src/crypto.ts +9 -0
  583. package/node_modules/@noble/hashes/src/cryptoNode.ts +15 -0
  584. package/node_modules/@noble/hashes/src/eskdf.ts +187 -0
  585. package/node_modules/@noble/hashes/src/hkdf.ts +88 -0
  586. package/node_modules/@noble/hashes/src/hmac.ts +94 -0
  587. package/node_modules/@noble/hashes/src/index.ts +31 -0
  588. package/node_modules/@noble/hashes/src/legacy.ts +293 -0
  589. package/node_modules/@noble/hashes/src/pbkdf2.ts +122 -0
  590. package/node_modules/@noble/hashes/src/ripemd160.ts +12 -0
  591. package/node_modules/@noble/hashes/src/scrypt.ts +257 -0
  592. package/node_modules/@noble/hashes/src/sha1.ts +10 -0
  593. package/node_modules/@noble/hashes/src/sha2.ts +402 -0
  594. package/node_modules/@noble/hashes/src/sha256.ts +24 -0
  595. package/node_modules/@noble/hashes/src/sha3-addons.ts +499 -0
  596. package/node_modules/@noble/hashes/src/sha3.ts +258 -0
  597. package/node_modules/@noble/hashes/src/sha512.ts +34 -0
  598. package/node_modules/@noble/hashes/src/utils.ts +395 -0
  599. package/node_modules/@noble/hashes/utils.d.ts +161 -0
  600. package/node_modules/@noble/hashes/utils.d.ts.map +1 -0
  601. package/node_modules/@noble/hashes/utils.js +313 -0
  602. package/node_modules/@noble/hashes/utils.js.map +1 -0
  603. package/package.json +203 -0
  604. package/schemas/catalog.schema.json +283 -0
  605. package/src/align.ts +235 -0
  606. package/src/audio-init-parser.ts +189 -0
  607. package/src/audio-ring-buffer.ts +120 -0
  608. package/src/authored-timing.ts +63 -0
  609. package/src/carp-catalog.ts +776 -0
  610. package/src/catalog-fec-params.ts +167 -0
  611. package/src/catalog-network-source.ts +49 -0
  612. package/src/catalog-validator.ts +34 -0
  613. package/src/cmaf-block-assembler.ts +1058 -0
  614. package/src/cmaf-group-batcher.ts +104 -0
  615. package/src/cmcd-producer.ts +329 -0
  616. package/src/codec-utils.ts +1539 -0
  617. package/src/fec-codec.ts +61 -0
  618. package/src/fec-manager.ts +1939 -0
  619. package/src/fec-starvation-detector.ts +128 -0
  620. package/src/fec-worker-setup.ts +177 -0
  621. package/src/fmp4-completion.ts +47 -0
  622. package/src/fmp4-reader.ts +112 -0
  623. package/src/index.ts +443 -0
  624. package/src/iso-bmff-timing.ts +688 -0
  625. package/src/loc.ts +181 -0
  626. package/src/manifest-auth-plan.ts +107 -0
  627. package/src/media-router.ts +1185 -0
  628. package/src/mfu-reassembler.ts +2842 -0
  629. package/src/mfu-reassembly-policy.ts +134 -0
  630. package/src/mmtp-container-parser.ts +1498 -0
  631. package/src/mmtp-decode-pipeline.ts +315 -0
  632. package/src/mmtp-router.ts +3027 -0
  633. package/src/mmtp-to-cmaf.ts +956 -0
  634. package/src/multicast-auth-catalog.ts +340 -0
  635. package/src/multicast-input.ts +439 -0
  636. package/src/multicast-manager.ts +1503 -0
  637. package/src/multicast-transport.ts +320 -0
  638. package/src/multicast-unwrap.ts +132 -0
  639. package/src/no-modules.ts +20 -0
  640. package/src/phase14-catalog-override.ts +336 -0
  641. package/src/repair-fetch.ts +217 -0
  642. package/src/sample-combiner.ts +846 -0
  643. package/src/signaling.ts +78 -0
  644. package/src/source-auth.ts +1 -0
  645. package/src/switching-set-alignment.ts +109 -0
  646. package/src/timestamp-codec.ts +265 -0
  647. package/src/track-pipeline-setup.ts +189 -0
  648. package/src/track-pipeline.ts +332 -0
  649. package/src/track-session.ts +778 -0
  650. package/src/transport-pool.ts +128 -0
  651. package/src/wasm-mfu-reassembler.ts +372 -0
  652. package/src/wasm-mmtp-container-parser.ts +23 -0
  653. package/test-vectors/align.json +199 -0
  654. package/test-vectors/catalog/README.md +25 -0
  655. package/test-vectors/catalog/negative/legacy-selection-params.json +15 -0
  656. package/test-vectors/catalog/negative/missing-mmtp-fields.json +12 -0
  657. package/test-vectors/catalog/negative/multicast-auth-padded-key.json +37 -0
  658. package/test-vectors/catalog/negative/multicast-auth-reused-track-format.json +53 -0
  659. package/test-vectors/catalog/negative/multicast-auth-trailing-pad-bits.json +37 -0
  660. package/test-vectors/catalog/negative/multicast-endpoint-missing-protocol-and-source.json +24 -0
  661. package/test-vectors/catalog/negative/network-source-object.json +25 -0
  662. package/test-vectors/catalog/negative/raptorq-unaligned-symbol.json +26 -0
  663. package/test-vectors/catalog/negative/repair-track-legacy-shape.json +18 -0
  664. package/test-vectors/catalog/negative/track-role-empty.json +16 -0
  665. package/test-vectors/catalog/negative/track-role-non-string.json +16 -0
  666. package/test-vectors/catalog/positive/fec-multicast.json +51 -0
  667. package/test-vectors/catalog/positive/flat-av.json +30 -0
  668. package/test-vectors/catalog/positive/multicast-auth-rotation.json +55 -0
  669. package/test-vectors/catalog/positive/ticks-and-mixed-timescales.json +39 -0
  670. package/test-vectors/catalog/positive/track-role.json +49 -0
  671. package/test-vectors/catalog/releases/moqcast-native-v16-v1/catalog.json +65 -0
  672. package/test-vectors/catalog/releases/moqcast-native-v16-v1.archive.sha256 +1 -0
  673. package/test-vectors/catalog-multicast-auth-v1.json +26 -0
  674. package/test-vectors/catalog-validation.json +148 -0
  675. package/test-vectors/catalog-validator-public-api.mjs +25 -0
  676. package/test-vectors/generate-source-auth-fixture.mjs +114 -0
  677. package/test-vectors/source-auth-v1.json +61 -0
  678. package/test-vectors/subsample-placement-v1.json +230 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/cmcd-producer.ts"],
4
+ "sourcesContent": ["/**\n * CmcdProducer \u2014 transport-agnostic CMCD telemetry producer.\n *\n * Maps FecTrackStats snapshots and TransportSnapshot state to x-bc-*\n * CMCD vendor keys (proto tags 70-99). Fires callbacks for two delivery\n * channels: MoQ SUBSCRIBE params and multicast HTTP POST.\n *\n * Does NOT call fetch() or write to QUIC directly \u2014 the player wiring\n * layer is responsible for attaching params to SUBSCRIBE or POSTing\n * the payload to the CDN CMCD endpoint.\n *\n * @see docs/superpowers/specs/2026-04-15-iwa-multicast-stack-design.md \u00A73.3\n * @see CDN+ Track D BLO-1044\n */\n\nimport type { FecTrackStats } from '@blockcast/fec-worker'\nimport type { ManifestVerificationStats } from '@blockcast/mmt-manifest-verify'\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\n/** Transport state snapshot, built by the player wiring layer from SocketPool. */\nexport interface TransportSnapshot {\n transport: 'native' | 'amt' | 'moq'\n /** IPv4/IPv6 multicast group address */\n multicastGroup?: string\n /** SSM source address */\n multicastSource?: string\n /** AMT relay address (omit when undefined) */\n amtRelay?: string\n}\n\n/** Transport transition event identifiers for x-bc-ct. */\nexport type TransportTransitionEvent = 'mc-start' | 'mc-to-uc' | 'amt-start'\n\n/**\n * Phase 14 play-mode state (D-12, x-bc-play-mode):\n * - `full` \u2014 base + delta both active\n * - `base-only` \u2014 delta fell back; base carries playback\n * - `single-track` \u2014 stream is not a multi-track switching set (legacy)\n */\nexport type PlayMode = 'full' | 'base-only' | 'single-track'\n\nconst PLAY_MODES: readonly PlayMode[] = ['full', 'base-only', 'single-track']\n\n/** CMCD vendor key map. Values are string, number, or boolean. */\nexport type CmcdParams = Record<string, string | number | boolean>\n\n/** Options for CmcdProducer construction. */\nexport interface CmcdProducerOptions {\n /** Fired on each snapshot and on transport transitions. Params for MoQ SUBSCRIBE. */\n onCmcdParams?: (params: CmcdParams) => void\n /** Fired on each snapshot and on transport transitions. RFC 9559 query-string for HTTP POST body. */\n onCmcdPost?: (payload: string) => void\n}\n\n/** Snapshot data passed to onSnapshot(). */\nexport interface SnapshotData {\n tracks: FecTrackStats[]\n timestampMs: number\n}\n\n/** Transport-only telemetry for receivers that do not own FEC track stats. */\nexport interface TransportOnlySnapshotData {\n transport: TransportSnapshot\n timestampMs: number\n playMode?: PlayMode\n switchMiscount?: number\n}\n\n// ---------------------------------------------------------------------------\n// Value sanitization (T-06-01: header injection mitigation)\n// ---------------------------------------------------------------------------\n\n/** Strip commas, newlines, and carriage returns from string values. */\nfunction sanitize(value: string): string {\n return value.replace(/[,\\r\\n]/g, '')\n}\n\n// ---------------------------------------------------------------------------\n// Key building (pure functions, no side effects)\n// ---------------------------------------------------------------------------\n\n/** Build FEC vendor keys from a FecTrackStats snapshot. */\nfunction buildFecParams(stats: FecTrackStats): CmcdParams {\n const params: CmcdParams = {}\n const cfg = stats.config\n\n params['x-bc-fec-algo'] = cfg.algorithm\n params['x-bc-fec-k'] = cfg.k\n params['x-bc-fec-p'] = cfg.repairCount\n params['x-bc-fec-recovery'] = parseFloat((stats.recoveryRate / 100).toFixed(4))\n\n // Green-fill (symbol underrun) \u2014 omit when 0\n if (stats.greenFillFrames > 0) {\n params['x-bc-scu'] = stats.greenFillFrames\n }\n\n // ALTA keys: omit entirely when altaEnabled is false (D-09)\n if (cfg.altaEnabled) {\n params['x-bc-alta-verified'] = stats.altaVerified > 0\n params['x-bc-alta-failures'] = stats.altaFailed\n }\n\n return params\n}\n\n/** Build transport vendor keys from a TransportSnapshot. */\nfunction buildTransportParams(snap: TransportSnapshot | undefined): CmcdParams {\n if (!snap) return {}\n\n const params: CmcdParams = {}\n params['x-bc-transport'] = snap.transport\n\n if (snap.multicastGroup != null) {\n params['x-bc-multicast-group'] = snap.multicastGroup\n }\n if (snap.multicastSource != null) {\n params['x-bc-multicast-source'] = snap.multicastSource\n }\n if (snap.amtRelay != null) {\n params['x-bc-amt-relay'] = snap.amtRelay\n }\n\n return params\n}\n\n// ---------------------------------------------------------------------------\n// Query-string serialization (RFC 9559 \u00A72)\n// ---------------------------------------------------------------------------\n\n/**\n * Serialize CmcdParams to RFC 9559 query-string format.\n * Keys sorted for deterministic output. String values sanitized.\n */\nfunction formatQueryString(params: CmcdParams): string {\n return Object.keys(params)\n .sort()\n .map(key => {\n const v = params[key]\n if (typeof v === 'string') return `${key}=${sanitize(v)}`\n return `${key}=${v}`\n })\n .join(',')\n}\n\n// ---------------------------------------------------------------------------\n// CmcdProducer\n// ---------------------------------------------------------------------------\n\nexport class CmcdProducer {\n #onCmcdParams: ((params: CmcdParams) => void) | undefined\n #onCmcdPost: ((payload: string) => void) | undefined\n #transport: TransportSnapshot | undefined\n #lastStats: FecTrackStats | undefined\n // Phase 14 state \u2014 Plan 03 Task 2 (D-12, D-15).\n #playMode: PlayMode | null = null\n #deltaFailRate: number | null = null\n #switchMiscount = 0\n #manifestStats: ManifestVerificationStats | null = null\n\n constructor(options: CmcdProducerOptions) {\n this.#onCmcdParams = options.onCmcdParams\n this.#onCmcdPost = options.onCmcdPost\n }\n\n /** Update the stored transport state. Called by player wiring layer. */\n updateTransport(snapshot: TransportSnapshot): void {\n this.#transport = snapshot\n }\n\n /**\n * Set the current play-mode. Emitted as `x-bc-play-mode` on subsequent\n * snapshots. Throws on any value outside {'full','base-only','single-track'}\n * (CLAUDE.md: error on bad init).\n */\n updatePlayMode(mode: PlayMode): void {\n if (typeof mode !== 'string' || !PLAY_MODES.includes(mode as PlayMode)) {\n throw new Error(\n `[CmcdProducer] invalid play-mode \"${String(mode)}\"; expected one of: ${PLAY_MODES.join(', ')}`,\n )\n }\n this.#playMode = mode\n }\n\n /**\n * Set the delta-track FEC block-failure rate (0..1 inclusive). Emitted as\n * `x-bc-delta-fail-rate` on snapshots when play-mode is 'full' or 'base-only'.\n * Omitted on single-track streams.\n */\n updateDeltaFailRate(rate: number): void {\n if (typeof rate !== 'number' || !Number.isFinite(rate) || rate < 0 || rate > 1) {\n throw new Error(\n `[CmcdProducer] invalid delta-fail-rate \"${String(rate)}\"; expected a finite number in [0, 1]`,\n )\n }\n this.#deltaFailRate = rate\n }\n\n /**\n * Bump the cumulative switching-set misalignment counter. Emitted as\n * `x-bc-switch-miscount` on snapshots when the counter is > 0.\n */\n incrementSwitchMiscount(): void {\n this.#switchMiscount += 1\n }\n\n updateManifestVerification(stats: ManifestVerificationStats): void {\n this.#manifestStats = stats\n }\n\n /**\n * One-shot emit of `x-bc-switch-drift-us` for a single misalignment event.\n * Does NOT mutate snapshot state \u2014 subsequent onSnapshot() calls will not\n * include the drift key until the next emitSwitchDrift(). Mirrors the\n * existing onTransition() pattern.\n */\n emitSwitchDrift(driftUs: number): void {\n if (\n typeof driftUs !== 'number' ||\n !Number.isFinite(driftUs) ||\n driftUs < 0\n ) {\n throw new Error(\n `[CmcdProducer] invalid drift-us \"${String(driftUs)}\"; expected a non-negative finite number`,\n )\n }\n const params: CmcdParams = {}\n if (this.#lastStats) Object.assign(params, buildFecParams(this.#lastStats))\n Object.assign(params, buildTransportParams(this.#transport))\n if (this.#switchMiscount > 0) params['x-bc-switch-miscount'] = this.#switchMiscount\n params['x-bc-switch-drift-us'] = driftUs\n this.#emit(params)\n }\n\n /**\n * Process a FecTrackStats snapshot. Finds the video track, builds\n * x-bc-* vendor keys, and fires both delivery callbacks.\n */\n onSnapshot(data: SnapshotData): void {\n // Find first video track; skip if none\n const videoTrack = data.tracks.find(t => t.config.trackType === 'video')\n if (!videoTrack) return\n\n this.#lastStats = videoTrack\n\n const params: CmcdParams = {\n ...buildFecParams(videoTrack),\n ...buildTransportParams(this.#transport),\n }\n\n if (this.#playMode !== null) {\n params['x-bc-play-mode'] = this.#playMode\n }\n\n // Delta-fail-rate is only meaningful when a delta track exists.\n if (\n this.#playMode !== null &&\n this.#playMode !== 'single-track' &&\n this.#deltaFailRate !== null\n ) {\n params['x-bc-delta-fail-rate'] = parseFloat(this.#deltaFailRate.toFixed(4))\n }\n\n if (this.#switchMiscount > 0) {\n params['x-bc-switch-miscount'] = this.#switchMiscount\n }\n if (this.#manifestStats) {\n params['x-bc-manifest-verified'] = this.#manifestStats.verified > 0\n params['x-bc-manifest-failures'] = Object.values(this.#manifestStats.failures)\n .reduce((total, count) => total + count, 0)\n }\n\n this.#emit(params)\n }\n\n /**\n * Emit transport state without inventing FEC metrics. Cadence is owned by\n * the caller because only the transport integration knows when state changed.\n */\n onTransportSnapshot(data: TransportOnlySnapshotData): void {\n if (!Number.isFinite(data.timestampMs) || data.timestampMs < 0) {\n throw new Error('[CmcdProducer] transport snapshot timestamp must be a non-negative finite number')\n }\n if (data.playMode !== undefined) this.updatePlayMode(data.playMode)\n if (\n data.switchMiscount !== undefined &&\n (!Number.isSafeInteger(data.switchMiscount) || data.switchMiscount < 0)\n ) {\n throw new Error('[CmcdProducer] transport snapshot switch-miscount must be a non-negative safe integer')\n }\n\n this.#transport = data.transport\n const params = buildTransportParams(data.transport)\n if (this.#playMode !== null) params['x-bc-play-mode'] = this.#playMode\n const switchMiscount = data.switchMiscount ?? this.#switchMiscount\n if (switchMiscount > 0) params['x-bc-switch-miscount'] = switchMiscount\n this.#emit(params)\n }\n\n /**\n * Signal a transport transition event. Fires an immediate out-of-band\n * emit with x-bc-ct set. The subsequent onSnapshot() will NOT include\n * x-bc-ct (one-shot).\n */\n onTransition(event: TransportTransitionEvent): void {\n const params: CmcdParams = {}\n\n // Include last known FEC stats if available\n if (this.#lastStats) {\n Object.assign(params, buildFecParams(this.#lastStats))\n }\n\n // Include transport state if available\n Object.assign(params, buildTransportParams(this.#transport))\n\n // Add the transition event key (one-shot)\n params['x-bc-ct'] = event\n\n this.#emit(params)\n }\n\n /** Fire both delivery callbacks with the given params. */\n #emit(params: CmcdParams): void {\n this.#onCmcdParams?.(params)\n this.#onCmcdPost?.(formatQueryString(params))\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,235 @@
1
+ /**
2
+ * H.264/AVC codec utilities for MMTP container format conversion.
3
+ *
4
+ * Shared between moq-lib (hang-mmt-fec) and moqtail players.
5
+ * Handles AVCC↔Annex-B conversion, SPS/PPS extraction, fallback avcC generation,
6
+ * and MMTP timestamp conversion.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ /** Result of extracting a video codec configuration record from an fMP4 init segment. */
11
+ export interface AvcCInfo {
12
+ codec: string;
13
+ description: Uint8Array;
14
+ }
15
+ /** Result of extracting AAC AudioSpecificConfig from an fMP4 init segment. */
16
+ export interface AacAscInfo {
17
+ /** Codec string like "mp4a.40.2" (AAC-LC). Derived from AOT in ASC[0] >> 3. */
18
+ codec: string;
19
+ /** AudioSpecificConfig bytes — what AudioDecoder.configure({description}) needs for raw AAC. */
20
+ description: Uint8Array;
21
+ }
22
+ /** SPS and PPS NAL units extracted from an avcC record. */
23
+ export interface SpsPps {
24
+ sps: Uint8Array;
25
+ pps: Uint8Array;
26
+ }
27
+ /** Options for fallback avcC generation. */
28
+ export interface FallbackAvcCOptions {
29
+ /** Codec string like "avc1.640033". Profile/constraint/level parsed from hex triplet. */
30
+ codec?: string;
31
+ /** Coded width in pixels. Used in SPS pic_width_in_mbs. */
32
+ width?: number;
33
+ /** Coded height in pixels. Used in SPS pic_height_in_map_units. */
34
+ height?: number;
35
+ }
36
+ /**
37
+ * Extract the codec configuration record (avcC/hvcC/av1C/vpcC) from
38
+ * an fMP4 init segment (moov box).
39
+ * MMTP FT=0 packets contain a complete fMP4: moov > trak > mdia > minf > stbl > stsd > sample entry > codec config.
40
+ *
41
+ * Walks every trak and returns the first supported video sample entry. This
42
+ * handles both per-track CMSF init segments and multiplexed ftyp+moov blobs
43
+ * where the audio trak may appear before video.
44
+ */
45
+ export declare function extractAvcCFromInitSegment(data: Uint8Array): AvcCInfo | undefined;
46
+ /**
47
+ * Generate a minimal avcC (AVCDecoderConfigurationRecord) from codec parameters.
48
+ * Parses "avc1.XXYYZZ" → profile_idc=0xXX, constraint_flags=0xYY, level_idc=0xZZ.
49
+ * Width/height are encoded in the SPS; if not provided, they're inferred from the
50
+ * H.264 level's max frame size (e.g. level 4.2 → 2048x1088).
51
+ * Used when late MoQ subscribers miss the FT=0 init segment (moov/avcC).
52
+ */
53
+ export declare function generateFallbackAvcC(options?: FallbackAvcCOptions | string): Uint8Array;
54
+ /**
55
+ * Extract raw SPS and PPS NAL unit bytes from an avcC (AVCDecoderConfigurationRecord).
56
+ * Returns the first SPS and first PPS found.
57
+ */
58
+ export declare function extractSpsPpsFromAvcC(avcC: Uint8Array): SpsPps | undefined;
59
+ /**
60
+ * Convert AVCC (4-byte NAL length prefixed) to Annex-B (start code prefixed).
61
+ * Prepends SPS/PPS NALs before keyframes.
62
+ */
63
+ export declare function avccToAnnexB(avccData: Uint8Array, isKeyframe: boolean, spsPps: SpsPps): Uint8Array;
64
+ /**
65
+ * Build an avcC record by parsing Annex-B data to extract SPS (NAL type 7) and PPS (NAL type 8).
66
+ * Returns the avcC record, or null if SPS/PPS not found.
67
+ */
68
+ export declare function extractCodecDescriptionFromAnnexB(data: Uint8Array): Uint8Array | null;
69
+ /**
70
+ * Derive codec string from avcC record (e.g. "avc1.640033").
71
+ */
72
+ export declare function codecStringFromAvcC(avcC: Uint8Array): string;
73
+ /** VPS/SPS/PPS NAL units extracted from an HEVC keyframe (raw NAL bytes, no start code/length prefix). */
74
+ export interface HevcParameterSets {
75
+ vps?: Uint8Array;
76
+ sps?: Uint8Array;
77
+ pps?: Uint8Array;
78
+ }
79
+ /** True for HEVC/H.265 codec strings (hev1.* / hvc1.*). */
80
+ export declare function isHevcCodec(codec: string): boolean;
81
+ /**
82
+ * Remove H.26x emulation-prevention bytes (0x03 after 0x00 0x00) from an RBSP so
83
+ * fixed-position fields (e.g. HEVC profile_tier_level) can be read by byte offset.
84
+ */
85
+ export declare function removeEmulationPrevention(rbsp: Uint8Array): Uint8Array;
86
+ /**
87
+ * Split an AVCC/hvcC bitstream (length-prefixed NAL units) into raw NAL byte slices.
88
+ * `lengthSize` is the NAL length prefix width (4 for FFmpeg LOC / fMP4 sample data).
89
+ */
90
+ export declare function splitAvccNalUnits(data: Uint8Array, lengthSize?: number): Uint8Array[];
91
+ /**
92
+ * True when `data` is exactly one or more length-prefixed NAL units.
93
+ *
94
+ * This is intentionally stricter than "starts with a plausible length": a
95
+ * H.264 AVCC access unit may begin with bytes `00 00 00 01` when the first
96
+ * NAL is a one-byte AUD. That byte pattern is also an Annex-B start code, so
97
+ * callers must prove the whole buffer is complete AVCC before falling back to
98
+ * Annex-B detection/conversion.
99
+ */
100
+ export declare function isCompleteAvccSample(data: Uint8Array, lengthSize?: number): boolean;
101
+ export type H264SampleFormat = 'avcc' | 'annexb' | 'raw-nal' | 'unknown';
102
+ export type H264NalUnitFormat = H264SampleFormat | 'partial-avcc';
103
+ export interface H264AvccSample {
104
+ data: Uint8Array;
105
+ format: H264SampleFormat;
106
+ }
107
+ export interface H264NalUnitSample {
108
+ nals: Uint8Array[];
109
+ format: H264NalUnitFormat;
110
+ }
111
+ /**
112
+ * Normalize a H.264 access unit/sample to length-prefixed AVCC for fMP4 mdat
113
+ * payloads. Already-AVCC samples are returned as-is. Annex-B and single raw
114
+ * NAL samples are converted one-way to AVCC at the MSE/fMP4 boundary.
115
+ */
116
+ export declare function normalizeH264SampleToAvcc(data: Uint8Array): H264AvccSample;
117
+ /**
118
+ * Split a H.264 access unit/sample into NAL units without changing its framing.
119
+ * Use this for routing, keyframe gates, and diagnostics. Conversion to AVCC is
120
+ * reserved for `normalizeH264SampleToAvcc` at the fMP4/MSE boundary.
121
+ */
122
+ export declare function splitH264SampleNalUnits(data: Uint8Array, options?: H264KeyframeDetectionOptions): H264NalUnitSample;
123
+ /**
124
+ * Extract HEVC VPS (type 32) / SPS (33) / PPS (34) NAL units from a keyframe access
125
+ * unit. Accepts either Annex-B (start-code delimited) or AVCC/hvcC (length-prefixed)
126
+ * framing — FFmpeg LOC delivers the latter.
127
+ */
128
+ export declare function extractHevcParameterSets(keyframe: Uint8Array): HevcParameterSets;
129
+ /**
130
+ * Build a minimal hvcC (HEVCDecoderConfigurationRecord, ISO 14496-15 §8.3.3.1) from
131
+ * VPS/SPS/PPS NAL units. The general profile_tier_level (12 bytes) is copied from the
132
+ * SPS (de-emulated); remaining fields use the common 4:2:0 / 8-bit / 4-byte-NAL-length
133
+ * defaults. Suitable as the `description` for a WebCodecs hvc1 VideoDecoderConfig.
134
+ *
135
+ * WebCodecs REQUIRES a description for length-prefixed HEVC — unlike H.264, Chrome will
136
+ * not self-configure HEVC from the bitstream (BLO-7764).
137
+ */
138
+ export declare function generateHvcCFromParameterSets(sets: HevcParameterSets): Uint8Array | null;
139
+ /**
140
+ * Build an hvcC `description` for a WebCodecs HEVC VideoDecoderConfig directly from a
141
+ * keyframe access unit (Annex-B or length-prefixed). Returns null if VPS/SPS/PPS aren't
142
+ * present in-band. HEVC analogue of {@link extractCodecDescriptionFromAnnexB}.
143
+ */
144
+ export declare function extractHevcCodecDescription(keyframe: Uint8Array): Uint8Array | null;
145
+ /**
146
+ * Strip non-VCL NAL units (VPS/SPS/PPS/SEI/AUD, type >= 32) from an HEVC access unit,
147
+ * returning only the VCL NAL units (type <= 31) as a 4-byte length-prefixed buffer.
148
+ *
149
+ * Required when decoding `hvc1` with an explicit hvcC `description`: WebCodecs rejects a
150
+ * sample whose data still carries in-band parameter sets ("Unable to determine size of
151
+ * bitstream buffer"). Accepts Annex-B or length-prefixed input. Returns the input
152
+ * unchanged if it already contains only VCL NALs (cheap no-op for delta frames).
153
+ */
154
+ export declare function hevcVclOnly(data: Uint8Array): Uint8Array;
155
+ /**
156
+ * Check if data starts with an Annex-B start code (00 00 01 or 00 00 00 01).
157
+ */
158
+ export declare function isAnnexB(data: Uint8Array): boolean;
159
+ /**
160
+ * Find the byte offset of the first Annex-B start code in data.
161
+ * Returns -1 if no start code found.
162
+ */
163
+ export declare function findAnnexBStartCode(data: Uint8Array): number;
164
+ /**
165
+ * Split Annex-B bitstream into NAL units.
166
+ * Returns array of NAL unit byte slices (without start codes).
167
+ */
168
+ export declare function splitAnnexBNalUnits(data: Uint8Array): Uint8Array[];
169
+ /**
170
+ * Convert Annex-B (start-code delimited) to AVCC (4-byte length prefixed).
171
+ * Optionally prepends SPS/PPS NALs for keyframes.
172
+ */
173
+ export declare function annexBToAvcc(data: Uint8Array, spsPps?: SpsPps): Uint8Array;
174
+ export interface H264KeyframeDetectionOptions {
175
+ /**
176
+ * Allow classifying a length-prefixed NAL when the declared NAL length runs
177
+ * beyond this buffer. MMTP routing can see only the first packet fragment of
178
+ * a sample, where the NAL header is present but the full NAL is not.
179
+ */
180
+ allowPartialAvcc?: boolean;
181
+ }
182
+ /**
183
+ * Classify H.264 keyframe status by scanning NAL units. Returns undefined when
184
+ * the payload is not H.264-classifiable. Handles Annex-B and AVCC formats.
185
+ */
186
+ export declare function classifyH264Keyframe(data: Uint8Array, options?: H264KeyframeDetectionOptions): boolean | undefined;
187
+ /**
188
+ * Detect H.264 keyframe by scanning for IDR/SPS or intra non-IDR slices.
189
+ * Handles both Annex-B and AVCC formats.
190
+ */
191
+ export declare function detectH264Keyframe(data: Uint8Array, options?: H264KeyframeDetectionOptions): boolean;
192
+ /**
193
+ * Convert MMTP timestamp (NTP short format) to monotonic microseconds.
194
+ * Per ISO 23008-1 §9.2.2 / RFC 5905: upper 16 bits = seconds (lower 16
195
+ * of NTP seconds), lower 16 bits = fractional seconds.
196
+ * Returns a monotonically increasing µs value within an ~18-hour window.
197
+ */
198
+ export declare function mmtpTimestampToMicros(rawTs: bigint | number): number;
199
+ /** Validate the CMSF/MMTP catalog initData contract: complete top-level ftyp+moov. */
200
+ export declare function isFmp4InitSegment(data: Uint8Array): boolean;
201
+ /**
202
+ * Prepend a 7-byte ADTS header to a raw AAC access unit.
203
+ *
204
+ * WebCodecs AudioDecoder configured WITHOUT an AudioSpecificConfig `description`
205
+ * expects ADTS-framed AAC. MMTP carries raw AAC (no ADTS sync), so this wrapper
206
+ * must be applied before calling `AudioDecoder.decode()`.
207
+ */
208
+ export declare function wrapAdtsFrame(raw: Uint8Array, sampleRate: number, channels: number): Uint8Array;
209
+ /**
210
+ * Extract AAC AudioSpecificConfig (ASC) from an fMP4 init segment.
211
+ *
212
+ * Walks moov > trak > mdia > minf > stbl > stsd > mp4a > esds, then descends
213
+ * the MPEG-4 descriptor chain (ES_Descriptor 0x03 > DecoderConfigDescriptor
214
+ * 0x04 > DecoderSpecificInfo 0x05) to return the ASC payload.
215
+ *
216
+ * Sibling of extractAvcCFromInitSegment, used by the same BLO-4830 / CMSF §3.1
217
+ * path: when the catalog initData is the full ftyp+moov, WebCodecs' AudioDecoder
218
+ * needs the raw ASC (~2 bytes for AAC-LC) as `description`, NOT the whole
219
+ * segment. Without this extraction the configure() succeeds but every decode()
220
+ * silently produces zero output (no error fires), exactly the symptom that
221
+ * shows up as "Audio continuity FAILED: energy unstable CV=1.00" in the
222
+ * 7-point E2E test (CV=1.00 is the meanEnergy=0 sentinel from audio-fft.mjs).
223
+ *
224
+ * Returns undefined when:
225
+ * - data has no ftyp/moov magic in the first 32 bytes
226
+ * - no mp4a sample entry exists in any trak's stbl
227
+ * - the esds descriptor chain doesn't yield a DecoderSpecificInfo
228
+ * - the ASC payload is shorter than 2 bytes (AOT + sampling-freq nibble)
229
+ *
230
+ * Walks every trak and returns the first AAC sample entry. This mirrors
231
+ * extractAvcCFromInitSegment so multiplexed ftyp+moov init blobs work
232
+ * regardless of track order.
233
+ */
234
+ export declare function extractAacAscFromInitSegment(data: Uint8Array): AacAscInfo | undefined;
235
+ //# sourceMappingURL=codec-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec-utils.d.ts","sourceRoot":"","sources":["../src/codec-utils.ts"],"names":[],"mappings":"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"}