mattebox 0.1.0

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 (471) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +106 -0
  3. package/dist/cdn/mattebox.dash-drm.min.js +2 -0
  4. package/dist/cdn/mattebox.dash.min.js +2 -0
  5. package/dist/cdn/mattebox.dual-drm.min.js +2 -0
  6. package/dist/cdn/mattebox.dual-ts-drm.min.js +3 -0
  7. package/dist/cdn/mattebox.dual-ts.min.js +3 -0
  8. package/dist/cdn/mattebox.dual.min.js +2 -0
  9. package/dist/cdn/mattebox.hls-drm.min.js +2 -0
  10. package/dist/cdn/mattebox.hls-ts-drm.min.js +3 -0
  11. package/dist/cdn/mattebox.hls-ts.min.js +3 -0
  12. package/dist/cdn/mattebox.hls.min.js +2 -0
  13. package/dist/cdn/mattebox.kernel.min.js +1 -0
  14. package/dist/cdn/mattebox.min.js +6 -0
  15. package/dist/cdn/transmux.worker.js +1 -0
  16. package/dist/containers/adts.d.ts +33 -0
  17. package/dist/containers/adts.d.ts.map +1 -0
  18. package/dist/containers/adts.js +66 -0
  19. package/dist/containers/adts.js.map +1 -0
  20. package/dist/containers/captions.d.ts +27 -0
  21. package/dist/containers/captions.d.ts.map +1 -0
  22. package/dist/containers/captions.js +36 -0
  23. package/dist/containers/captions.js.map +1 -0
  24. package/dist/containers/codec-probe/index.d.ts +35 -0
  25. package/dist/containers/codec-probe/index.d.ts.map +1 -0
  26. package/dist/containers/codec-probe/index.js +222 -0
  27. package/dist/containers/codec-probe/index.js.map +1 -0
  28. package/dist/containers/fmp4/writer.d.ts +62 -0
  29. package/dist/containers/fmp4/writer.d.ts.map +1 -0
  30. package/dist/containers/fmp4/writer.js +201 -0
  31. package/dist/containers/fmp4/writer.js.map +1 -0
  32. package/dist/containers/id3.d.ts +25 -0
  33. package/dist/containers/id3.d.ts.map +1 -0
  34. package/dist/containers/id3.js +75 -0
  35. package/dist/containers/id3.js.map +1 -0
  36. package/dist/containers/mp4-box/index.d.ts +79 -0
  37. package/dist/containers/mp4-box/index.d.ts.map +1 -0
  38. package/dist/containers/mp4-box/index.js +231 -0
  39. package/dist/containers/mp4-box/index.js.map +1 -0
  40. package/dist/containers/packed-audio/index.d.ts +7 -0
  41. package/dist/containers/packed-audio/index.d.ts.map +1 -0
  42. package/dist/containers/packed-audio/index.js +63 -0
  43. package/dist/containers/packed-audio/index.js.map +1 -0
  44. package/dist/containers/sei.d.ts +26 -0
  45. package/dist/containers/sei.d.ts.map +1 -0
  46. package/dist/containers/sei.js +100 -0
  47. package/dist/containers/sei.js.map +1 -0
  48. package/dist/containers/ts-transmux/demux.d.ts +49 -0
  49. package/dist/containers/ts-transmux/demux.d.ts.map +1 -0
  50. package/dist/containers/ts-transmux/demux.js +222 -0
  51. package/dist/containers/ts-transmux/demux.js.map +1 -0
  52. package/dist/containers/ts-transmux/h264.d.ts +48 -0
  53. package/dist/containers/ts-transmux/h264.d.ts.map +1 -0
  54. package/dist/containers/ts-transmux/h264.js +211 -0
  55. package/dist/containers/ts-transmux/h264.js.map +1 -0
  56. package/dist/containers/ts-transmux/index.d.ts +17 -0
  57. package/dist/containers/ts-transmux/index.d.ts.map +1 -0
  58. package/dist/containers/ts-transmux/index.js +34 -0
  59. package/dist/containers/ts-transmux/index.js.map +1 -0
  60. package/dist/containers/ts-transmux/runner.d.ts +23 -0
  61. package/dist/containers/ts-transmux/runner.d.ts.map +1 -0
  62. package/dist/containers/ts-transmux/runner.js +99 -0
  63. package/dist/containers/ts-transmux/runner.js.map +1 -0
  64. package/dist/containers/ts-transmux/transmux.d.ts +24 -0
  65. package/dist/containers/ts-transmux/transmux.d.ts.map +1 -0
  66. package/dist/containers/ts-transmux/transmux.js +212 -0
  67. package/dist/containers/ts-transmux/transmux.js.map +1 -0
  68. package/dist/containers/ts-transmux/transmux.worker.d.ts +2 -0
  69. package/dist/containers/ts-transmux/transmux.worker.d.ts.map +1 -0
  70. package/dist/containers/ts-transmux/transmux.worker.js +19 -0
  71. package/dist/containers/ts-transmux/transmux.worker.js.map +1 -0
  72. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/asyncToGenerator.js +27 -0
  73. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/defineProperty.js +12 -0
  74. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectSpread2.js +25 -0
  75. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutProperties.js +13 -0
  76. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/objectWithoutPropertiesLoose.js +12 -0
  77. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPrimitive.js +14 -0
  78. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/toPropertyKey.js +9 -0
  79. package/dist/es2015/_virtual/_@oxc-project_runtime@0.147.0/helpers/esm/typeof.js +11 -0
  80. package/dist/es2015/containers/adts.js +77 -0
  81. package/dist/es2015/containers/captions.js +36 -0
  82. package/dist/es2015/containers/codec-probe/index.js +220 -0
  83. package/dist/es2015/containers/fmp4/writer.js +165 -0
  84. package/dist/es2015/containers/id3.js +72 -0
  85. package/dist/es2015/containers/mp4-box/index.js +209 -0
  86. package/dist/es2015/containers/packed-audio/index.js +67 -0
  87. package/dist/es2015/containers/sei.js +79 -0
  88. package/dist/es2015/containers/ts-transmux/demux.js +211 -0
  89. package/dist/es2015/containers/ts-transmux/h264.js +204 -0
  90. package/dist/es2015/containers/ts-transmux/index.js +37 -0
  91. package/dist/es2015/containers/ts-transmux/runner.js +95 -0
  92. package/dist/es2015/containers/ts-transmux/transmux.js +210 -0
  93. package/dist/es2015/containers/ts-transmux/transmux.worker.js +26 -0
  94. package/dist/es2015/index.js +356 -0
  95. package/dist/es2015/kernel/append-queue.js +148 -0
  96. package/dist/es2015/kernel/bus.js +134 -0
  97. package/dist/es2015/kernel/context.js +92 -0
  98. package/dist/es2015/kernel/effects.js +62 -0
  99. package/dist/es2015/kernel/evictor.js +67 -0
  100. package/dist/es2015/kernel/lifecycle.js +122 -0
  101. package/dist/es2015/kernel/loader.js +108 -0
  102. package/dist/es2015/kernel/mime.js +20 -0
  103. package/dist/es2015/kernel/mse.js +426 -0
  104. package/dist/es2015/kernel/reducer.js +1051 -0
  105. package/dist/es2015/kernel/rendition-select.js +263 -0
  106. package/dist/es2015/kernel/scheduler.js +82 -0
  107. package/dist/es2015/kernel/sinks/metadata-sink.js +7 -0
  108. package/dist/es2015/kernel/sinks/mse-sink.js +31 -0
  109. package/dist/es2015/kernel/sinks/text-track-sink.js +167 -0
  110. package/dist/es2015/kernel/timeline.js +127 -0
  111. package/dist/es2015/kernel/trace.js +134 -0
  112. package/dist/es2015/kernel/track-registry.js +47 -0
  113. package/dist/es2015/kernel/transport.js +242 -0
  114. package/dist/es2015/kernel/watchdog.js +38 -0
  115. package/dist/es2015/presets/dash/index.js +9 -0
  116. package/dist/es2015/presets/dash-drm/index.js +13 -0
  117. package/dist/es2015/presets/define.js +45 -0
  118. package/dist/es2015/presets/dual/index.js +14 -0
  119. package/dist/es2015/presets/dual-drm/index.js +14 -0
  120. package/dist/es2015/presets/dual-ts/index.js +14 -0
  121. package/dist/es2015/presets/dual-ts-drm/index.js +15 -0
  122. package/dist/es2015/presets/full/index.js +28 -0
  123. package/dist/es2015/presets/hls/index.js +9 -0
  124. package/dist/es2015/presets/hls-drm/index.js +13 -0
  125. package/dist/es2015/presets/hls-ts/index.js +13 -0
  126. package/dist/es2015/presets/hls-ts-drm/index.js +14 -0
  127. package/dist/es2015/presets/kernel/index.js +10 -0
  128. package/dist/es2015/presets/storage.js +24 -0
  129. package/dist/es2015/presets/tiers.js +93 -0
  130. package/dist/es2015/protocols/dash-cmaf/index.js +161 -0
  131. package/dist/es2015/protocols/dash-cmaf/parse.js +491 -0
  132. package/dist/es2015/protocols/dash-live/index.js +192 -0
  133. package/dist/es2015/protocols/hls-cmaf/index.js +168 -0
  134. package/dist/es2015/protocols/hls-cmaf/lexer.js +72 -0
  135. package/dist/es2015/protocols/hls-cmaf/parse.js +457 -0
  136. package/dist/es2015/protocols/hls-live/index.js +296 -0
  137. package/dist/es2015/protocols/live-shared.js +29 -0
  138. package/dist/es2015/stages/abr/index.js +126 -0
  139. package/dist/es2015/stages/abr-cap-size/index.js +22 -0
  140. package/dist/es2015/stages/abr-persist/index.js +52 -0
  141. package/dist/es2015/stages/aes-128/index.js +76 -0
  142. package/dist/es2015/stages/alt-audio/index.js +80 -0
  143. package/dist/es2015/stages/cmaf-timing/index.js +55 -0
  144. package/dist/es2015/stages/cmcd/index.js +70 -0
  145. package/dist/es2015/stages/codec-probe/index.js +65 -0
  146. package/dist/es2015/stages/codec-switch/index.js +48 -0
  147. package/dist/es2015/stages/content-steering/index.js +179 -0
  148. package/dist/es2015/stages/drm-shared.js +18 -0
  149. package/dist/es2015/stages/eme-cenc/index.js +46 -0
  150. package/dist/es2015/stages/eme-core/index.js +237 -0
  151. package/dist/es2015/stages/eme-fairplay/index.js +52 -0
  152. package/dist/es2015/stages/meta-id3/index.js +37 -0
  153. package/dist/es2015/stages/mp4-box/index.js +27 -0
  154. package/dist/es2015/stages/nal-scan/index.js +121 -0
  155. package/dist/es2015/stages/pdt/index.js +34 -0
  156. package/dist/es2015/stages/recovery/index.js +283 -0
  157. package/dist/es2015/stages/text-cea608/decode.js +201 -0
  158. package/dist/es2015/stages/text-cea608/index.js +71 -0
  159. package/dist/es2015/stages/text-webvtt/index.js +82 -0
  160. package/dist/es2015/stages/text-webvtt/parse.js +60 -0
  161. package/dist/es2015/stages/text-webvtt-segmented/index.js +57 -0
  162. package/dist/es2015/stages/thumbnails/index.js +73 -0
  163. package/dist/index.d.ts +32 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +423 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/kernel/append-queue.d.ts +47 -0
  168. package/dist/kernel/append-queue.d.ts.map +1 -0
  169. package/dist/kernel/append-queue.js +180 -0
  170. package/dist/kernel/append-queue.js.map +1 -0
  171. package/dist/kernel/bus.d.ts +50 -0
  172. package/dist/kernel/bus.d.ts.map +1 -0
  173. package/dist/kernel/bus.js +147 -0
  174. package/dist/kernel/bus.js.map +1 -0
  175. package/dist/kernel/context.d.ts +45 -0
  176. package/dist/kernel/context.d.ts.map +1 -0
  177. package/dist/kernel/context.js +116 -0
  178. package/dist/kernel/context.js.map +1 -0
  179. package/dist/kernel/effects.d.ts +33 -0
  180. package/dist/kernel/effects.d.ts.map +1 -0
  181. package/dist/kernel/effects.js +65 -0
  182. package/dist/kernel/effects.js.map +1 -0
  183. package/dist/kernel/evictor.d.ts +46 -0
  184. package/dist/kernel/evictor.d.ts.map +1 -0
  185. package/dist/kernel/evictor.js +92 -0
  186. package/dist/kernel/evictor.js.map +1 -0
  187. package/dist/kernel/lifecycle.d.ts +41 -0
  188. package/dist/kernel/lifecycle.d.ts.map +1 -0
  189. package/dist/kernel/lifecycle.js +129 -0
  190. package/dist/kernel/lifecycle.js.map +1 -0
  191. package/dist/kernel/loader.d.ts +28 -0
  192. package/dist/kernel/loader.d.ts.map +1 -0
  193. package/dist/kernel/loader.js +126 -0
  194. package/dist/kernel/loader.js.map +1 -0
  195. package/dist/kernel/mime.d.ts +13 -0
  196. package/dist/kernel/mime.d.ts.map +1 -0
  197. package/dist/kernel/mime.js +18 -0
  198. package/dist/kernel/mime.js.map +1 -0
  199. package/dist/kernel/mse.d.ts +62 -0
  200. package/dist/kernel/mse.d.ts.map +1 -0
  201. package/dist/kernel/mse.js +490 -0
  202. package/dist/kernel/mse.js.map +1 -0
  203. package/dist/kernel/reducer.d.ts +39 -0
  204. package/dist/kernel/reducer.d.ts.map +1 -0
  205. package/dist/kernel/reducer.js +1316 -0
  206. package/dist/kernel/reducer.js.map +1 -0
  207. package/dist/kernel/rendition-select.d.ts +102 -0
  208. package/dist/kernel/rendition-select.d.ts.map +1 -0
  209. package/dist/kernel/rendition-select.js +295 -0
  210. package/dist/kernel/rendition-select.js.map +1 -0
  211. package/dist/kernel/scheduler.d.ts +57 -0
  212. package/dist/kernel/scheduler.d.ts.map +1 -0
  213. package/dist/kernel/scheduler.js +98 -0
  214. package/dist/kernel/scheduler.js.map +1 -0
  215. package/dist/kernel/sinks/metadata-sink.d.ts +7 -0
  216. package/dist/kernel/sinks/metadata-sink.d.ts.map +1 -0
  217. package/dist/kernel/sinks/metadata-sink.js +5 -0
  218. package/dist/kernel/sinks/metadata-sink.js.map +1 -0
  219. package/dist/kernel/sinks/mse-sink.d.ts +17 -0
  220. package/dist/kernel/sinks/mse-sink.d.ts.map +1 -0
  221. package/dist/kernel/sinks/mse-sink.js +20 -0
  222. package/dist/kernel/sinks/mse-sink.js.map +1 -0
  223. package/dist/kernel/sinks/text-track-sink.d.ts +45 -0
  224. package/dist/kernel/sinks/text-track-sink.d.ts.map +1 -0
  225. package/dist/kernel/sinks/text-track-sink.js +184 -0
  226. package/dist/kernel/sinks/text-track-sink.js.map +1 -0
  227. package/dist/kernel/timeline.d.ts +57 -0
  228. package/dist/kernel/timeline.d.ts.map +1 -0
  229. package/dist/kernel/timeline.js +203 -0
  230. package/dist/kernel/timeline.js.map +1 -0
  231. package/dist/kernel/trace.d.ts +42 -0
  232. package/dist/kernel/trace.d.ts.map +1 -0
  233. package/dist/kernel/trace.js +165 -0
  234. package/dist/kernel/trace.js.map +1 -0
  235. package/dist/kernel/track-registry.d.ts +22 -0
  236. package/dist/kernel/track-registry.d.ts.map +1 -0
  237. package/dist/kernel/track-registry.js +42 -0
  238. package/dist/kernel/track-registry.js.map +1 -0
  239. package/dist/kernel/transport.d.ts +90 -0
  240. package/dist/kernel/transport.d.ts.map +1 -0
  241. package/dist/kernel/transport.js +256 -0
  242. package/dist/kernel/transport.js.map +1 -0
  243. package/dist/kernel/watchdog.d.ts +35 -0
  244. package/dist/kernel/watchdog.d.ts.map +1 -0
  245. package/dist/kernel/watchdog.js +43 -0
  246. package/dist/kernel/watchdog.js.map +1 -0
  247. package/dist/presets/dash/index.d.ts +4 -0
  248. package/dist/presets/dash/index.d.ts.map +1 -0
  249. package/dist/presets/dash/index.js +8 -0
  250. package/dist/presets/dash/index.js.map +1 -0
  251. package/dist/presets/dash-drm/index.d.ts +4 -0
  252. package/dist/presets/dash-drm/index.d.ts.map +1 -0
  253. package/dist/presets/dash-drm/index.js +8 -0
  254. package/dist/presets/dash-drm/index.js.map +1 -0
  255. package/dist/presets/define.d.ts +36 -0
  256. package/dist/presets/define.d.ts.map +1 -0
  257. package/dist/presets/define.js +39 -0
  258. package/dist/presets/define.js.map +1 -0
  259. package/dist/presets/dual/index.d.ts +4 -0
  260. package/dist/presets/dual/index.d.ts.map +1 -0
  261. package/dist/presets/dual/index.js +9 -0
  262. package/dist/presets/dual/index.js.map +1 -0
  263. package/dist/presets/dual-drm/index.d.ts +4 -0
  264. package/dist/presets/dual-drm/index.d.ts.map +1 -0
  265. package/dist/presets/dual-drm/index.js +13 -0
  266. package/dist/presets/dual-drm/index.js.map +1 -0
  267. package/dist/presets/dual-ts/index.d.ts +4 -0
  268. package/dist/presets/dual-ts/index.d.ts.map +1 -0
  269. package/dist/presets/dual-ts/index.js +8 -0
  270. package/dist/presets/dual-ts/index.js.map +1 -0
  271. package/dist/presets/dual-ts-drm/index.d.ts +4 -0
  272. package/dist/presets/dual-ts-drm/index.d.ts.map +1 -0
  273. package/dist/presets/dual-ts-drm/index.js +14 -0
  274. package/dist/presets/dual-ts-drm/index.js.map +1 -0
  275. package/dist/presets/full/index.d.ts +4 -0
  276. package/dist/presets/full/index.d.ts.map +1 -0
  277. package/dist/presets/full/index.js +27 -0
  278. package/dist/presets/full/index.js.map +1 -0
  279. package/dist/presets/hls/index.d.ts +4 -0
  280. package/dist/presets/hls/index.d.ts.map +1 -0
  281. package/dist/presets/hls/index.js +8 -0
  282. package/dist/presets/hls/index.js.map +1 -0
  283. package/dist/presets/hls-drm/index.d.ts +4 -0
  284. package/dist/presets/hls-drm/index.d.ts.map +1 -0
  285. package/dist/presets/hls-drm/index.js +8 -0
  286. package/dist/presets/hls-drm/index.js.map +1 -0
  287. package/dist/presets/hls-ts/index.d.ts +4 -0
  288. package/dist/presets/hls-ts/index.d.ts.map +1 -0
  289. package/dist/presets/hls-ts/index.js +8 -0
  290. package/dist/presets/hls-ts/index.js.map +1 -0
  291. package/dist/presets/hls-ts-drm/index.d.ts +4 -0
  292. package/dist/presets/hls-ts-drm/index.d.ts.map +1 -0
  293. package/dist/presets/hls-ts-drm/index.js +13 -0
  294. package/dist/presets/hls-ts-drm/index.js.map +1 -0
  295. package/dist/presets/kernel/index.d.ts +4 -0
  296. package/dist/presets/kernel/index.d.ts.map +1 -0
  297. package/dist/presets/kernel/index.js +9 -0
  298. package/dist/presets/kernel/index.js.map +1 -0
  299. package/dist/presets/storage.d.ts +9 -0
  300. package/dist/presets/storage.d.ts.map +1 -0
  301. package/dist/presets/storage.js +24 -0
  302. package/dist/presets/storage.js.map +1 -0
  303. package/dist/presets/tiers.d.ts +22 -0
  304. package/dist/presets/tiers.d.ts.map +1 -0
  305. package/dist/presets/tiers.js +78 -0
  306. package/dist/presets/tiers.js.map +1 -0
  307. package/dist/protocols/dash-cmaf/index.d.ts +20 -0
  308. package/dist/protocols/dash-cmaf/index.d.ts.map +1 -0
  309. package/dist/protocols/dash-cmaf/index.js +176 -0
  310. package/dist/protocols/dash-cmaf/index.js.map +1 -0
  311. package/dist/protocols/dash-cmaf/parse.d.ts +24 -0
  312. package/dist/protocols/dash-cmaf/parse.d.ts.map +1 -0
  313. package/dist/protocols/dash-cmaf/parse.js +586 -0
  314. package/dist/protocols/dash-cmaf/parse.js.map +1 -0
  315. package/dist/protocols/dash-live/index.d.ts +4 -0
  316. package/dist/protocols/dash-live/index.d.ts.map +1 -0
  317. package/dist/protocols/dash-live/index.js +188 -0
  318. package/dist/protocols/dash-live/index.js.map +1 -0
  319. package/dist/protocols/hls-cmaf/index.d.ts +17 -0
  320. package/dist/protocols/hls-cmaf/index.d.ts.map +1 -0
  321. package/dist/protocols/hls-cmaf/index.js +189 -0
  322. package/dist/protocols/hls-cmaf/index.js.map +1 -0
  323. package/dist/protocols/hls-cmaf/lexer.d.ts +25 -0
  324. package/dist/protocols/hls-cmaf/lexer.d.ts.map +1 -0
  325. package/dist/protocols/hls-cmaf/lexer.js +81 -0
  326. package/dist/protocols/hls-cmaf/lexer.js.map +1 -0
  327. package/dist/protocols/hls-cmaf/parse.d.ts +57 -0
  328. package/dist/protocols/hls-cmaf/parse.d.ts.map +1 -0
  329. package/dist/protocols/hls-cmaf/parse.js +572 -0
  330. package/dist/protocols/hls-cmaf/parse.js.map +1 -0
  331. package/dist/protocols/hls-live/index.d.ts +4 -0
  332. package/dist/protocols/hls-live/index.d.ts.map +1 -0
  333. package/dist/protocols/hls-live/index.js +309 -0
  334. package/dist/protocols/hls-live/index.js.map +1 -0
  335. package/dist/protocols/live-shared.d.ts +21 -0
  336. package/dist/protocols/live-shared.d.ts.map +1 -0
  337. package/dist/protocols/live-shared.js +32 -0
  338. package/dist/protocols/live-shared.js.map +1 -0
  339. package/dist/stages/abr/index.d.ts +16 -0
  340. package/dist/stages/abr/index.d.ts.map +1 -0
  341. package/dist/stages/abr/index.js +176 -0
  342. package/dist/stages/abr/index.js.map +1 -0
  343. package/dist/stages/abr-cap-size/index.d.ts +8 -0
  344. package/dist/stages/abr-cap-size/index.d.ts.map +1 -0
  345. package/dist/stages/abr-cap-size/index.js +21 -0
  346. package/dist/stages/abr-cap-size/index.js.map +1 -0
  347. package/dist/stages/abr-persist/index.d.ts +8 -0
  348. package/dist/stages/abr-persist/index.d.ts.map +1 -0
  349. package/dist/stages/abr-persist/index.js +44 -0
  350. package/dist/stages/abr-persist/index.js.map +1 -0
  351. package/dist/stages/aes-128/index.d.ts +15 -0
  352. package/dist/stages/aes-128/index.d.ts.map +1 -0
  353. package/dist/stages/aes-128/index.js +78 -0
  354. package/dist/stages/aes-128/index.js.map +1 -0
  355. package/dist/stages/alt-audio/index.d.ts +4 -0
  356. package/dist/stages/alt-audio/index.d.ts.map +1 -0
  357. package/dist/stages/alt-audio/index.js +90 -0
  358. package/dist/stages/alt-audio/index.js.map +1 -0
  359. package/dist/stages/cmaf-timing/index.d.ts +3 -0
  360. package/dist/stages/cmaf-timing/index.d.ts.map +1 -0
  361. package/dist/stages/cmaf-timing/index.js +56 -0
  362. package/dist/stages/cmaf-timing/index.js.map +1 -0
  363. package/dist/stages/cmcd/index.d.ts +22 -0
  364. package/dist/stages/cmcd/index.d.ts.map +1 -0
  365. package/dist/stages/cmcd/index.js +92 -0
  366. package/dist/stages/cmcd/index.js.map +1 -0
  367. package/dist/stages/codec-probe/index.d.ts +9 -0
  368. package/dist/stages/codec-probe/index.d.ts.map +1 -0
  369. package/dist/stages/codec-probe/index.js +68 -0
  370. package/dist/stages/codec-probe/index.js.map +1 -0
  371. package/dist/stages/codec-switch/index.d.ts +6 -0
  372. package/dist/stages/codec-switch/index.d.ts.map +1 -0
  373. package/dist/stages/codec-switch/index.js +59 -0
  374. package/dist/stages/codec-switch/index.js.map +1 -0
  375. package/dist/stages/content-steering/index.d.ts +4 -0
  376. package/dist/stages/content-steering/index.d.ts.map +1 -0
  377. package/dist/stages/content-steering/index.js +174 -0
  378. package/dist/stages/content-steering/index.js.map +1 -0
  379. package/dist/stages/drm-shared.d.ts +46 -0
  380. package/dist/stages/drm-shared.d.ts.map +1 -0
  381. package/dist/stages/drm-shared.js +28 -0
  382. package/dist/stages/drm-shared.js.map +1 -0
  383. package/dist/stages/eme-cenc/index.d.ts +12 -0
  384. package/dist/stages/eme-cenc/index.d.ts.map +1 -0
  385. package/dist/stages/eme-cenc/index.js +53 -0
  386. package/dist/stages/eme-cenc/index.js.map +1 -0
  387. package/dist/stages/eme-core/index.d.ts +29 -0
  388. package/dist/stages/eme-core/index.d.ts.map +1 -0
  389. package/dist/stages/eme-core/index.js +244 -0
  390. package/dist/stages/eme-core/index.js.map +1 -0
  391. package/dist/stages/eme-fairplay/index.d.ts +20 -0
  392. package/dist/stages/eme-fairplay/index.d.ts.map +1 -0
  393. package/dist/stages/eme-fairplay/index.js +59 -0
  394. package/dist/stages/eme-fairplay/index.js.map +1 -0
  395. package/dist/stages/meta-id3/index.d.ts +14 -0
  396. package/dist/stages/meta-id3/index.d.ts.map +1 -0
  397. package/dist/stages/meta-id3/index.js +30 -0
  398. package/dist/stages/meta-id3/index.js.map +1 -0
  399. package/dist/stages/mp4-box/index.d.ts +3 -0
  400. package/dist/stages/mp4-box/index.d.ts.map +1 -0
  401. package/dist/stages/mp4-box/index.js +19 -0
  402. package/dist/stages/mp4-box/index.js.map +1 -0
  403. package/dist/stages/nal-scan/index.d.ts +3 -0
  404. package/dist/stages/nal-scan/index.d.ts.map +1 -0
  405. package/dist/stages/nal-scan/index.js +123 -0
  406. package/dist/stages/nal-scan/index.js.map +1 -0
  407. package/dist/stages/pdt/index.d.ts +14 -0
  408. package/dist/stages/pdt/index.d.ts.map +1 -0
  409. package/dist/stages/pdt/index.js +34 -0
  410. package/dist/stages/pdt/index.js.map +1 -0
  411. package/dist/stages/recovery/index.d.ts +16 -0
  412. package/dist/stages/recovery/index.d.ts.map +1 -0
  413. package/dist/stages/recovery/index.js +270 -0
  414. package/dist/stages/recovery/index.js.map +1 -0
  415. package/dist/stages/text-cea608/decode.d.ts +44 -0
  416. package/dist/stages/text-cea608/decode.d.ts.map +1 -0
  417. package/dist/stages/text-cea608/decode.js +225 -0
  418. package/dist/stages/text-cea608/decode.js.map +1 -0
  419. package/dist/stages/text-cea608/index.d.ts +3 -0
  420. package/dist/stages/text-cea608/index.d.ts.map +1 -0
  421. package/dist/stages/text-cea608/index.js +84 -0
  422. package/dist/stages/text-cea608/index.js.map +1 -0
  423. package/dist/stages/text-webvtt/index.d.ts +3 -0
  424. package/dist/stages/text-webvtt/index.d.ts.map +1 -0
  425. package/dist/stages/text-webvtt/index.js +82 -0
  426. package/dist/stages/text-webvtt/index.js.map +1 -0
  427. package/dist/stages/text-webvtt/parse.d.ts +19 -0
  428. package/dist/stages/text-webvtt/parse.d.ts.map +1 -0
  429. package/dist/stages/text-webvtt/parse.js +62 -0
  430. package/dist/stages/text-webvtt/parse.js.map +1 -0
  431. package/dist/stages/text-webvtt-segmented/index.d.ts +5 -0
  432. package/dist/stages/text-webvtt-segmented/index.d.ts.map +1 -0
  433. package/dist/stages/text-webvtt-segmented/index.js +63 -0
  434. package/dist/stages/text-webvtt-segmented/index.js.map +1 -0
  435. package/dist/stages/thumbnails/index.d.ts +34 -0
  436. package/dist/stages/thumbnails/index.d.ts.map +1 -0
  437. package/dist/stages/thumbnails/index.js +58 -0
  438. package/dist/stages/thumbnails/index.js.map +1 -0
  439. package/dist/types/error.d.ts +33 -0
  440. package/dist/types/error.d.ts.map +1 -0
  441. package/dist/types/error.js +7 -0
  442. package/dist/types/error.js.map +1 -0
  443. package/dist/types/facade.d.ts +104 -0
  444. package/dist/types/facade.d.ts.map +1 -0
  445. package/dist/types/facade.js +2 -0
  446. package/dist/types/facade.js.map +1 -0
  447. package/dist/types/ir.d.ts +238 -0
  448. package/dist/types/ir.d.ts.map +1 -0
  449. package/dist/types/ir.js +7 -0
  450. package/dist/types/ir.js.map +1 -0
  451. package/dist/types/kernel.d.ts +217 -0
  452. package/dist/types/kernel.d.ts.map +1 -0
  453. package/dist/types/kernel.js +2 -0
  454. package/dist/types/kernel.js.map +1 -0
  455. package/dist/types/messages.d.ts +288 -0
  456. package/dist/types/messages.d.ts.map +1 -0
  457. package/dist/types/messages.js +2 -0
  458. package/dist/types/messages.js.map +1 -0
  459. package/dist/types/quality.d.ts +108 -0
  460. package/dist/types/quality.d.ts.map +1 -0
  461. package/dist/types/quality.js +2 -0
  462. package/dist/types/quality.js.map +1 -0
  463. package/dist/types/sink.d.ts +27 -0
  464. package/dist/types/sink.d.ts.map +1 -0
  465. package/dist/types/sink.js +2 -0
  466. package/dist/types/sink.js.map +1 -0
  467. package/dist/types/stage.d.ts +139 -0
  468. package/dist/types/stage.d.ts.map +1 -0
  469. package/dist/types/stage.js +2 -0
  470. package/dist/types/stage.js.map +1 -0
  471. package/package.json +132 -0
@@ -0,0 +1,572 @@
1
+ import { lex } from './lexer.js';
2
+ function manifestError(reason) {
3
+ return {
4
+ category: 'manifest',
5
+ code: 'MANIFEST_PARSE_FAILED',
6
+ fatal: true,
7
+ recoverable: false,
8
+ context: { reason },
9
+ };
10
+ }
11
+ function resolve(uri, baseUrl) {
12
+ try {
13
+ return new URL(uri, baseUrl).href;
14
+ }
15
+ catch {
16
+ return uri;
17
+ }
18
+ }
19
+ /** n@o or n (continuing after the previous range). RFC 8216 §4.3.2.2. */
20
+ function parseByteRange(value, previousEnd) {
21
+ const [lengthText, offsetText] = value.split('@');
22
+ const length = Number(lengthText);
23
+ if (!Number.isFinite(length))
24
+ return null;
25
+ const start = offsetText !== undefined ? Number(offsetText) : previousEnd === null ? 0 : previousEnd + 1;
26
+ if (!Number.isFinite(start))
27
+ return null;
28
+ return { start, end: start + length - 1 };
29
+ }
30
+ /**
31
+ * METHOD=AES-128 as a segment key. Anything else (NONE, SAMPLE-AES, the
32
+ * FairPlay and Widevine forms) is not a segment key: NONE ends keying, the
33
+ * rest are DRM and go through `protectionFrom`.
34
+ */
35
+ function segmentKeyFrom(key, baseUrl) {
36
+ if (key.attributes.METHOD !== 'AES-128' || key.attributes.URI === undefined)
37
+ return null;
38
+ const iv = key.attributes.IV;
39
+ return {
40
+ method: 'AES-128',
41
+ uri: resolve(key.attributes.URI, baseUrl),
42
+ ...(iv !== undefined ? { iv: iv.replace(/^0x/i, '').toLowerCase().padStart(32, '0') } : {}),
43
+ };
44
+ }
45
+ function protectionFrom(key, baseUrl) {
46
+ const method = key.attributes.METHOD ?? '';
47
+ // AES-128 is full-segment encryption, a transform's job, not EME's.
48
+ if (method === '' || method === 'NONE' || method === 'AES-128')
49
+ return null;
50
+ return {
51
+ schemes: [
52
+ {
53
+ systemId: key.attributes.KEYFORMAT ?? null,
54
+ scheme: method.toLowerCase(),
55
+ keyId: key.attributes.KEYID ?? null,
56
+ licenseUrl: key.attributes.URI !== undefined ? resolve(key.attributes.URI, baseUrl) : null,
57
+ initData: null,
58
+ initDataType: null,
59
+ },
60
+ ],
61
+ };
62
+ }
63
+ const AUDIO_CODECS = /^(mp4a|ac-3|ec-3|opus|flac)/i;
64
+ /**
65
+ * Rewrites the legacy decimal AVC codec form some packagers still emit into
66
+ * the RFC 6381 hex form MSE demands. `avc1.66.30` (profile 66, level 30) is
67
+ * accepted by Firefox but rejected by Chrome's isTypeSupported, which is why a
68
+ * stream like Unified Streaming's plays audio but no video on one browser and
69
+ * nothing on the other. The constraint byte is not carried in this form, so it
70
+ * is emitted as zero; the real flags ride in the avcC the transmux writes.
71
+ */
72
+ export function normalizeAvcCodec(codec) {
73
+ const match = /^(avc1|avc3)\.(\d+)\.(\d+)$/.exec(codec);
74
+ if (match === null)
75
+ return codec;
76
+ const hex = (n) => (Number(n) & 0xff).toString(16).padStart(2, '0');
77
+ return `${match[1]}.${hex(Number(match[2]))}00${hex(Number(match[3]))}`;
78
+ }
79
+ function splitCodecs(value) {
80
+ if (value === undefined)
81
+ return { video: null, audio: null };
82
+ let video = null;
83
+ let audio = null;
84
+ for (const codec of value.split(',').map((c) => c.trim())) {
85
+ if (codec === '')
86
+ continue;
87
+ if (AUDIO_CODECS.test(codec)) {
88
+ audio = audio ?? codec;
89
+ }
90
+ else {
91
+ video = video ?? normalizeAvcCodec(codec);
92
+ }
93
+ }
94
+ return { video, audio };
95
+ }
96
+ /** parse a media playlist body into segments. */
97
+ export function parseMediaPlaylist(text, baseUrl) {
98
+ if (!text.trimStart().startsWith('#EXTM3U')) {
99
+ return { playlist: null, error: manifestError('missing #EXTM3U') };
100
+ }
101
+ const lines = lex(text);
102
+ const segments = [];
103
+ let init = null;
104
+ let targetDuration = 0;
105
+ let mediaSequence = 0;
106
+ let endlist = false;
107
+ let playlistType = null;
108
+ let protection = null;
109
+ let pendingKey = null;
110
+ let dateAnchor;
111
+ let pendingDate = null;
112
+ let pendingDuration = null;
113
+ let pendingRange = null;
114
+ let pendingDiscontinuity = false;
115
+ let previousRangeEnd = null;
116
+ let start = 0;
117
+ let seq = 0;
118
+ for (const line of lines) {
119
+ if (line.kind === 'tag') {
120
+ switch (line.name) {
121
+ case 'EXT-X-TARGETDURATION':
122
+ targetDuration = Number(line.value) || 0;
123
+ break;
124
+ case 'EXT-X-MEDIA-SEQUENCE':
125
+ mediaSequence = Number(line.value) || 0;
126
+ seq = mediaSequence;
127
+ break;
128
+ case 'EXT-X-PLAYLIST-TYPE':
129
+ playlistType = line.value;
130
+ break;
131
+ case 'EXT-X-ENDLIST':
132
+ endlist = true;
133
+ break;
134
+ case 'EXTINF': {
135
+ const comma = line.value.indexOf(',');
136
+ pendingDuration = Number(comma === -1 ? line.value : line.value.slice(0, comma));
137
+ break;
138
+ }
139
+ case 'EXT-X-BYTERANGE':
140
+ pendingRange = parseByteRange(line.value, previousRangeEnd);
141
+ break;
142
+ case 'EXT-X-DISCONTINUITY':
143
+ pendingDiscontinuity = true;
144
+ break;
145
+ case 'EXT-X-MAP': {
146
+ const uri = line.attributes.URI;
147
+ if (uri !== undefined) {
148
+ const range = line.attributes.BYTERANGE !== undefined
149
+ ? parseByteRange(line.attributes.BYTERANGE, null)
150
+ : null;
151
+ init = {
152
+ url: resolve(uri, baseUrl),
153
+ ...(range !== null ? { byteRange: range } : {}),
154
+ };
155
+ }
156
+ break;
157
+ }
158
+ case 'EXT-X-KEY':
159
+ // A key applies to every segment after it until the next key
160
+ // line; METHOD=NONE ends it.
161
+ pendingKey = segmentKeyFrom(line, baseUrl);
162
+ protection = protectionFrom(line, baseUrl) ?? protection;
163
+ break;
164
+ case 'EXT-X-PROGRAM-DATE-TIME': {
165
+ const parsed = Date.parse(line.value);
166
+ if (Number.isFinite(parsed))
167
+ pendingDate = parsed / 1000;
168
+ break;
169
+ }
170
+ default:
171
+ break;
172
+ }
173
+ continue;
174
+ }
175
+ // A URI line closes the pending EXTINF.
176
+ if (pendingDuration === null || !Number.isFinite(pendingDuration)) {
177
+ return { playlist: null, error: manifestError(`segment URI without EXTINF: ${line.uri}`) };
178
+ }
179
+ if (pendingDate !== null && dateAnchor === undefined) {
180
+ dateAnchor = { wallClock: pendingDate, presentationTime: start };
181
+ }
182
+ pendingDate = null;
183
+ segments.push({
184
+ seq,
185
+ start,
186
+ duration: pendingDuration,
187
+ url: resolve(line.uri, baseUrl),
188
+ ...(pendingRange !== null ? { byteRange: pendingRange } : {}),
189
+ ...(pendingDiscontinuity ? { discontinuity: true } : {}),
190
+ ...(pendingKey !== null ? { key: pendingKey } : {}),
191
+ });
192
+ previousRangeEnd = pendingRange !== null ? pendingRange.end : previousRangeEnd;
193
+ start += pendingDuration;
194
+ seq += 1;
195
+ pendingDuration = null;
196
+ pendingRange = null;
197
+ pendingDiscontinuity = false;
198
+ }
199
+ return {
200
+ playlist: {
201
+ segments,
202
+ init,
203
+ targetDuration,
204
+ mediaSequence,
205
+ endlist,
206
+ playlistType,
207
+ protection,
208
+ ...(dateAnchor !== undefined ? { dateAnchor } : {}),
209
+ },
210
+ error: null,
211
+ };
212
+ }
213
+ function mediaContentType(type) {
214
+ if (type === 'AUDIO')
215
+ return 'audio';
216
+ if (type === 'SUBTITLES')
217
+ return 'text';
218
+ // CLOSED-CAPTIONS have no URI (in-band); VIDEO alternates are rare.
219
+ return null;
220
+ }
221
+ /** parse either playlist form into a Presentation. Never throws. */
222
+ export function parse(text, baseUrl) {
223
+ if (!text.trimStart().startsWith('#EXTM3U')) {
224
+ return { presentation: null, error: manifestError('missing #EXTM3U') };
225
+ }
226
+ const lines = lex(text);
227
+ const isMultivariant = lines.some((line) => line.kind === 'tag' && line.name === 'EXT-X-STREAM-INF');
228
+ if (!isMultivariant) {
229
+ // A bare media playlist is a valid source: one video track, one rendition.
230
+ const media = parseMediaPlaylist(text, baseUrl);
231
+ if (media.playlist === null) {
232
+ return { presentation: null, error: media.error ?? manifestError('unparsable playlist') };
233
+ }
234
+ if (media.playlist.segments.length === 0) {
235
+ return {
236
+ presentation: null,
237
+ error: {
238
+ category: 'manifest',
239
+ code: 'MANIFEST_EMPTY',
240
+ fatal: true,
241
+ recoverable: false,
242
+ context: { reason: 'no variants and no segments' },
243
+ },
244
+ };
245
+ }
246
+ const duration = media.playlist.segments.reduce((sum, s) => sum + s.duration, 0);
247
+ // A bare playlist has no CODECS to say audio or video, but a packed-audio
248
+ // source names its segments .aac/.mp3/.ac3: an all-audio segment set is an
249
+ // audio presentation, so the buffer is audio/mp4, not a video buffer that
250
+ // would reject the AAC.
251
+ const audioOnly = media.playlist.segments.every((s) => /\.(aac|mp3|ac3|ec3|m4a)(\?|$)/i.test(s.url));
252
+ const contentType = audioOnly ? 'audio' : 'video';
253
+ const mimeType = audioOnly ? 'audio/mp4' : 'video/mp4';
254
+ const rendition = {
255
+ id: 'r-0',
256
+ bitrate: 0,
257
+ codecs: null,
258
+ mimeType,
259
+ segments: media.playlist.segments,
260
+ ...(media.playlist.init !== null ? { init: media.playlist.init } : {}),
261
+ };
262
+ return {
263
+ presentation: {
264
+ id: baseUrl,
265
+ isLive: !media.playlist.endlist,
266
+ ...(media.playlist.endlist ? { duration } : {}),
267
+ ...(media.playlist.endlist
268
+ ? {}
269
+ : {
270
+ live: {
271
+ updatePeriod: media.playlist.targetDuration || 4,
272
+ ...(media.playlist.dateAnchor !== undefined
273
+ ? { dateAnchor: media.playlist.dateAnchor }
274
+ : {}),
275
+ },
276
+ }),
277
+ periods: [
278
+ {
279
+ id: 'p0',
280
+ start: 0,
281
+ tracks: [
282
+ {
283
+ id: 'main',
284
+ contentType,
285
+ mimeType,
286
+ protection: media.playlist.protection,
287
+ renditions: [rendition],
288
+ },
289
+ ],
290
+ },
291
+ ],
292
+ couplings: [],
293
+ },
294
+ error: null,
295
+ };
296
+ }
297
+ // Multivariant: decompose variants, hoist media entries, record couplings.
298
+ const mediaEntries = [];
299
+ const variants = [];
300
+ let sessionProtection = null;
301
+ let steering;
302
+ let pendingStreamInf = null;
303
+ for (const line of lines) {
304
+ if (line.kind === 'tag') {
305
+ if (line.name === 'EXT-X-MEDIA') {
306
+ mediaEntries.push({
307
+ type: line.attributes.TYPE ?? '',
308
+ groupId: line.attributes['GROUP-ID'] ?? '',
309
+ name: line.attributes.NAME ?? '',
310
+ attributes: line.attributes,
311
+ uri: line.attributes.URI !== undefined ? resolve(line.attributes.URI, baseUrl) : null,
312
+ });
313
+ }
314
+ else if (line.name === 'EXT-X-STREAM-INF') {
315
+ pendingStreamInf = line;
316
+ }
317
+ else if (line.name === 'EXT-X-SESSION-KEY') {
318
+ sessionProtection = protectionFrom(line, baseUrl) ?? sessionProtection;
319
+ }
320
+ else if (line.name === 'EXT-X-CONTENT-STEERING') {
321
+ const serverUri = line.attributes['SERVER-URI'];
322
+ if (serverUri !== undefined) {
323
+ steering = {
324
+ serverUri: resolve(serverUri, baseUrl),
325
+ ...(line.attributes['PATHWAY-ID'] !== undefined
326
+ ? { defaultPathway: line.attributes['PATHWAY-ID'] }
327
+ : {}),
328
+ };
329
+ }
330
+ }
331
+ // EXT-X-I-FRAME-STREAM-INF is recognized and skipped; thumbnails later.
332
+ continue;
333
+ }
334
+ if (pendingStreamInf !== null) {
335
+ variants.push({ attributes: pendingStreamInf.attributes, uri: resolve(line.uri, baseUrl) });
336
+ pendingStreamInf = null;
337
+ }
338
+ }
339
+ if (variants.length === 0) {
340
+ return { presentation: null, error: manifestError('multivariant playlist with no variants') };
341
+ }
342
+ const renditions = [];
343
+ const audioOnlyVariants = [];
344
+ const couplings = [];
345
+ for (const variant of variants) {
346
+ const bandwidth = Number(variant.attributes.BANDWIDTH) || 0;
347
+ const resolution = variant.attributes.RESOLUTION;
348
+ const [width, height] = resolution !== undefined ? resolution.split('x').map((n) => Number(n)) : [];
349
+ const { video, audio } = splitCodecs(variant.attributes.CODECS);
350
+ // A STREAM-INF whose CODECS names an audio codec but no video codec is an
351
+ // audio-only rendition, not a low-bitrate video one. When the stream also
352
+ // has video (Apple's bipbop, Unified's Tears of Steel list one at the
353
+ // lowest bandwidth), it must not join the video track: the no-abr default
354
+ // picks the lowest bitrate and would open a video buffer with no codec,
355
+ // which Chrome refuses. When the whole presentation is audio (a radio or
356
+ // DVR audio stream), these variants are the presentation, so keep them
357
+ // aside and promote them to an audio track if no video variant appears.
358
+ if (video === null && audio !== null) {
359
+ audioOnlyVariants.push(variant);
360
+ continue;
361
+ }
362
+ // When the variant carries no separate audio group its segments are
363
+ // muxed, so the transmux emits one fMP4 with both tracks and the buffer
364
+ // must declare both codecs. With an audio group the audio is a separate
365
+ // buffer and only the video codec belongs here.
366
+ const hasAudioGroup = variant.attributes.AUDIO !== undefined;
367
+ const codecs = video !== null && !hasAudioGroup && audio !== null ? `${video}, ${audio}` : video;
368
+ const frameRate = Number(variant.attributes['FRAME-RATE']);
369
+ const pathway = variant.attributes['PATHWAY-ID'];
370
+ const id = pathway !== undefined ? `v-${bandwidth}-${pathway}` : `v-${bandwidth}`;
371
+ if (renditions.some((r) => r.id === id))
372
+ continue;
373
+ renditions.push({
374
+ id,
375
+ bitrate: bandwidth,
376
+ codecs,
377
+ mimeType: 'video/mp4',
378
+ segments: [],
379
+ playlistUrl: variant.uri,
380
+ ...(pathway !== undefined ? { pathway } : {}),
381
+ ...(width !== undefined && Number.isFinite(width) ? { width } : {}),
382
+ ...(height !== undefined && Number.isFinite(height) ? { height } : {}),
383
+ ...(Number.isFinite(frameRate) ? { frameRate } : {}),
384
+ });
385
+ const requires = {};
386
+ if (variant.attributes.AUDIO !== undefined)
387
+ requires.audio = variant.attributes.AUDIO;
388
+ if (variant.attributes.SUBTITLES !== undefined)
389
+ requires.text = variant.attributes.SUBTITLES;
390
+ if (Object.keys(requires).length > 0) {
391
+ couplings.push({ renditionId: id, requires });
392
+ }
393
+ }
394
+ const tracks = [];
395
+ if (renditions.length > 0) {
396
+ tracks.push({
397
+ id: 'video-main',
398
+ contentType: 'video',
399
+ mimeType: 'video/mp4',
400
+ protection: sessionProtection,
401
+ renditions,
402
+ });
403
+ }
404
+ else if (audioOnlyVariants.length > 0) {
405
+ // Pure audio presentation: the STREAM-INF variants are the audio
406
+ // renditions and there is no video track.
407
+ const audioRenditions = [];
408
+ for (const variant of audioOnlyVariants) {
409
+ const bandwidth = Number(variant.attributes.BANDWIDTH) || 0;
410
+ const id = `a-${bandwidth}`;
411
+ if (audioRenditions.some((r) => r.id === id))
412
+ continue;
413
+ const { audio } = splitCodecs(variant.attributes.CODECS);
414
+ audioRenditions.push({
415
+ id,
416
+ bitrate: bandwidth,
417
+ codecs: audio,
418
+ mimeType: 'audio/mp4',
419
+ segments: [],
420
+ playlistUrl: variant.uri,
421
+ });
422
+ }
423
+ tracks.push({
424
+ id: 'audio-main',
425
+ contentType: 'audio',
426
+ mimeType: 'audio/mp4',
427
+ protection: sessionProtection,
428
+ renditions: audioRenditions,
429
+ });
430
+ }
431
+ for (const entry of mediaEntries) {
432
+ const contentType = mediaContentType(entry.type);
433
+ if (contentType === null || entry.uri === null)
434
+ continue;
435
+ const { audio } = splitCodecs(variants.find((v) => v.attributes.AUDIO === entry.groupId)?.attributes.CODECS);
436
+ const mimeType = contentType === 'audio' ? 'audio/mp4' : 'text/vtt';
437
+ tracks.push({
438
+ id: `${entry.groupId}:${entry.name}`,
439
+ contentType,
440
+ mimeType,
441
+ protection: sessionProtection,
442
+ ...(entry.attributes.LANGUAGE !== undefined ? { lang: entry.attributes.LANGUAGE } : {}),
443
+ ...(entry.attributes.DEFAULT === 'YES' ? { role: 'main' } : { role: 'alternate' }),
444
+ renditions: [
445
+ {
446
+ id: `${entry.groupId}:${entry.name}`,
447
+ bitrate: 0,
448
+ codecs: contentType === 'audio' ? audio : null,
449
+ mimeType,
450
+ segments: [],
451
+ playlistUrl: entry.uri,
452
+ },
453
+ ],
454
+ });
455
+ }
456
+ return {
457
+ presentation: {
458
+ id: baseUrl,
459
+ // The variant playlist itself says nothing about liveness; the media
460
+ // playlist's ENDLIST decides. Assume VOD until a merge says otherwise.
461
+ isLive: false,
462
+ periods: [{ id: 'p0', start: 0, tracks }],
463
+ couplings,
464
+ ...(steering !== undefined ? { steering } : {}),
465
+ },
466
+ error: null,
467
+ };
468
+ }
469
+ /**
470
+ * The presentation-time shift that puts a refreshed live window back on the
471
+ * timeline the previous window established. parseMediaPlaylist numbers every
472
+ * window from zero, but playback needs one stable seq->time map across
473
+ * reloads: without it a sliding window keeps handing the newest segment the
474
+ * same low start, the buffer never advances past the first window, and live
475
+ * stalls with no recovery. The media sequence number shared by the old and new
476
+ * window fixes the offset; a fresh load (no prior segments) shifts by zero.
477
+ */
478
+ function timelineShift(previous, next) {
479
+ if (!Array.isArray(previous) || previous.length === 0 || next.length === 0)
480
+ return 0;
481
+ const prior = previous;
482
+ const startBySeq = new Map(prior.map((s) => [s.seq, s.start]));
483
+ for (const segment of next) {
484
+ const priorStart = startBySeq.get(segment.seq);
485
+ if (priorStart !== undefined)
486
+ return priorStart - segment.start;
487
+ }
488
+ // No shared sequence: the window slid entirely past what this rendition
489
+ // had, as happens to a rendition fetched at startup and reloaded only
490
+ // once a switch made it active. Extrapolate along the sequence numbers at
491
+ // the average segment duration (the playlist sync strategy in
492
+ // videojs-http-streaming), instead of restarting the rendition at zero
493
+ // and pulling the live window back to the beginning of time.
494
+ const last = prior[prior.length - 1];
495
+ const first = next[0];
496
+ const average = prior.reduce((sum, s) => sum + s.duration, 0) / prior.length;
497
+ return last.start + (first.seq - last.seq) * average - first.start;
498
+ }
499
+ /**
500
+ * Immutably merges a fetched media playlist into the rendition that
501
+ * referenced it. Duration, liveness, init, and protection all come from
502
+ * the media playlist; the presentation learns them here. On a live refresh
503
+ * the new window is rebased onto the running timeline first, so segment start
504
+ * times stay absolute across reloads.
505
+ */
506
+ export function mergePlaylist(presentation, renditionId, playlist) {
507
+ let previous = [];
508
+ for (const period of presentation.periods) {
509
+ for (const track of period.tracks) {
510
+ for (const rendition of track.renditions) {
511
+ if (rendition.id === renditionId)
512
+ previous = rendition.segments;
513
+ }
514
+ }
515
+ }
516
+ // A reload older than what is already known (a CDN edge behind another)
517
+ // must not pull the rendition's window backwards; keep the newer list.
518
+ const knownLast = Array.isArray(previous) ? previous[previous.length - 1] : undefined;
519
+ const incomingLast = playlist.segments[playlist.segments.length - 1];
520
+ if (knownLast !== undefined &&
521
+ incomingLast !== undefined &&
522
+ !playlist.endlist &&
523
+ incomingLast.seq < knownLast.seq) {
524
+ return presentation;
525
+ }
526
+ const shift = timelineShift(previous, playlist.segments);
527
+ const segments = shift === 0
528
+ ? playlist.segments
529
+ : playlist.segments.map((s) => ({ ...s, start: s.start + shift }));
530
+ const duration = segments.reduce((sum, s) => sum + s.duration, 0);
531
+ const dateAnchor = playlist.dateAnchor !== undefined
532
+ ? {
533
+ wallClock: playlist.dateAnchor.wallClock,
534
+ presentationTime: playlist.dateAnchor.presentationTime + shift,
535
+ }
536
+ : undefined;
537
+ const periods = presentation.periods.map((period) => ({
538
+ ...period,
539
+ tracks: period.tracks.map((track) => {
540
+ if (!track.renditions.some((r) => r.id === renditionId))
541
+ return track;
542
+ return {
543
+ ...track,
544
+ protection: track.protection ?? playlist.protection,
545
+ renditions: track.renditions.map((rendition) => rendition.id === renditionId
546
+ ? {
547
+ ...rendition,
548
+ segments,
549
+ ...(playlist.init !== null ? { init: playlist.init } : {}),
550
+ }
551
+ : rendition),
552
+ };
553
+ }),
554
+ }));
555
+ const knownDuration = presentation.duration ?? 0;
556
+ return {
557
+ ...presentation,
558
+ isLive: !playlist.endlist,
559
+ ...(playlist.endlist ? { duration: Math.max(knownDuration, duration) } : {}),
560
+ ...(playlist.endlist
561
+ ? {}
562
+ : {
563
+ live: {
564
+ ...presentation.live,
565
+ updatePeriod: playlist.targetDuration || 4,
566
+ ...(dateAnchor !== undefined ? { dateAnchor } : {}),
567
+ },
568
+ }),
569
+ periods,
570
+ };
571
+ }
572
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../src/protocols/hls-cmaf/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { Stage } from '../../types/stage.js';
2
+ /** The stage factory. Requires hls-cmaf; the loader enforces it. */
3
+ export default function hlsLive(): Stage;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocols/hls-live/index.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAgWlD,oEAAoE;AACpE,MAAM,CAAC,OAAO,UAAU,OAAO,IAAI,KAAK,CAUvC"}