@videojs/spf 10.0.0-beta.30 → 10.0.0-beta.32

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 (520) hide show
  1. package/dist/default/core/actors/create-machine-actor.js +23 -25
  2. package/dist/default/core/actors/create-machine-actor.js.map +1 -1
  3. package/dist/default/core/actors/create-transition-actor.js +7 -9
  4. package/dist/default/core/actors/create-transition-actor.js.map +1 -1
  5. package/dist/default/core/composition/create-composition.js +26 -29
  6. package/dist/default/core/composition/create-composition.js.map +1 -1
  7. package/dist/default/core/composition/share-signals.js +12 -17
  8. package/dist/default/core/composition/share-signals.js.map +1 -1
  9. package/dist/default/core/machine.js +3 -4
  10. package/dist/default/core/machine.js.map +1 -1
  11. package/dist/default/core/reactors/create-machine-reactor.js +20 -19
  12. package/dist/default/core/reactors/create-machine-reactor.js.map +1 -1
  13. package/dist/default/core/signals/effect.js +24 -4
  14. package/dist/default/core/signals/effect.js.map +1 -1
  15. package/dist/default/core/signals/primitives.js +10 -14
  16. package/dist/default/core/signals/primitives.js.map +1 -1
  17. package/dist/default/core/signals/when.js +6 -8
  18. package/dist/default/core/signals/when.js.map +1 -1
  19. package/dist/default/core/tasks/delayed-reschedule.js +7 -11
  20. package/dist/default/core/tasks/delayed-reschedule.js.map +1 -1
  21. package/dist/default/core/tasks/task.js +59 -82
  22. package/dist/default/core/tasks/task.js.map +1 -1
  23. package/dist/default/hls.js +3 -1
  24. package/dist/default/index.js +2 -3
  25. package/dist/default/index.js.map +1 -1
  26. package/dist/default/media/abr/quality-selection.js +3 -7
  27. package/dist/default/media/abr/quality-selection.js.map +1 -1
  28. package/dist/default/media/buffer/back-buffer.js +15 -19
  29. package/dist/default/media/buffer/back-buffer.js.map +1 -1
  30. package/dist/default/media/buffer/forward-buffer.js +32 -41
  31. package/dist/default/media/buffer/forward-buffer.js.map +1 -1
  32. package/dist/default/media/dom/capabilities.js +26 -37
  33. package/dist/default/media/dom/capabilities.js.map +1 -1
  34. package/dist/default/media/dom/mse/append-segment.js +3 -5
  35. package/dist/default/media/dom/mse/append-segment.js.map +1 -1
  36. package/dist/default/media/dom/mse/buffer-flusher.js +5 -5
  37. package/dist/default/media/dom/mse/buffer-flusher.js.map +1 -1
  38. package/dist/default/media/dom/mse/duration.js +23 -31
  39. package/dist/default/media/dom/mse/duration.js.map +1 -1
  40. package/dist/default/media/dom/mse/end-of-stream.js +3 -6
  41. package/dist/default/media/dom/mse/end-of-stream.js.map +1 -1
  42. package/dist/default/media/dom/mse/mediasource-setup.js +65 -81
  43. package/dist/default/media/dom/mse/mediasource-setup.js.map +1 -1
  44. package/dist/default/media/dom/screen.js +37 -54
  45. package/dist/default/media/dom/screen.js.map +1 -1
  46. package/dist/default/media/dom/text/resolve-vtt-segment.js.map +1 -1
  47. package/dist/default/media/dom/text/text-track-slots.js +15 -23
  48. package/dist/default/media/dom/text/text-track-slots.js.map +1 -1
  49. package/dist/default/media/errors.js +25 -34
  50. package/dist/default/media/errors.js.map +1 -1
  51. package/dist/default/media/hls/parse-attributes.js +9 -26
  52. package/dist/default/media/hls/parse-attributes.js.map +1 -1
  53. package/dist/default/media/hls/parse-media-playlist.js +25 -33
  54. package/dist/default/media/hls/parse-media-playlist.js.map +1 -1
  55. package/dist/default/media/hls/parse-multivariant.js +3 -3
  56. package/dist/default/media/hls/parse-multivariant.js.map +1 -1
  57. package/dist/default/media/hls/reload-policy.js +19 -27
  58. package/dist/default/media/hls/reload-policy.js.map +1 -1
  59. package/dist/default/media/hls/resolve-url.js +1 -3
  60. package/dist/default/media/hls/resolve-url.js.map +1 -1
  61. package/dist/default/media/live-window.js +9 -13
  62. package/dist/default/media/live-window.js.map +1 -1
  63. package/dist/default/media/media-tracks/media-tracks.js +12 -17
  64. package/dist/default/media/media-tracks/media-tracks.js.map +1 -1
  65. package/dist/default/media/mp4/box.js +4 -5
  66. package/dist/default/media/mp4/box.js.map +1 -1
  67. package/dist/default/media/mp4/timestamp-origin.js +30 -42
  68. package/dist/default/media/mp4/timestamp-origin.js.map +1 -1
  69. package/dist/default/media/primitives/resolution.js +5 -8
  70. package/dist/default/media/primitives/resolution.js.map +1 -1
  71. package/dist/default/media/primitives/select-tracks.js +24 -34
  72. package/dist/default/media/primitives/select-tracks.js.map +1 -1
  73. package/dist/default/media/text/parse-vtt-timestamp-map.js +6 -8
  74. package/dist/default/media/text/parse-vtt-timestamp-map.js.map +1 -1
  75. package/dist/default/media/text/resolve-vtt-metadata.js +8 -9
  76. package/dist/default/media/text/resolve-vtt-metadata.js.map +1 -1
  77. package/dist/default/media/types/index.js +10 -18
  78. package/dist/default/media/types/index.js.map +1 -1
  79. package/dist/default/media/utils/cdn.js +10 -16
  80. package/dist/default/media/utils/cdn.js.map +1 -1
  81. package/dist/default/media/utils/preload.js +4 -6
  82. package/dist/default/media/utils/preload.js.map +1 -1
  83. package/dist/default/media/utils/track-selection.js +10 -14
  84. package/dist/default/media/utils/track-selection.js.map +1 -1
  85. package/dist/default/media/utils/tracks.js +56 -54
  86. package/dist/default/media/utils/tracks.js.map +1 -1
  87. package/dist/default/network/bandwidth-estimator.js +18 -19
  88. package/dist/default/network/bandwidth-estimator.js.map +1 -1
  89. package/dist/default/network/chunked-stream-iterable.js +4 -6
  90. package/dist/default/network/chunked-stream-iterable.js.map +1 -1
  91. package/dist/default/network/ewma.js +22 -25
  92. package/dist/default/network/ewma.js.map +1 -1
  93. package/dist/default/network/fetch.js +30 -37
  94. package/dist/default/network/fetch.js.map +1 -1
  95. package/dist/default/playback/actors/dom/segment-loader.js +28 -44
  96. package/dist/default/playback/actors/dom/segment-loader.js.map +1 -1
  97. package/dist/default/playback/actors/dom/source-buffer.js.map +1 -1
  98. package/dist/default/playback/actors/dom/text-tracks.js.map +1 -1
  99. package/dist/default/playback/actors/text-track-segment-loader.js +24 -35
  100. package/dist/default/playback/actors/text-track-segment-loader.js.map +1 -1
  101. package/dist/default/playback/adapters/hls-audio/adapter.js +23 -31
  102. package/dist/default/playback/adapters/hls-audio/adapter.js.map +1 -1
  103. package/dist/default/playback/adapters/hls-audio/media.js.map +1 -1
  104. package/dist/default/playback/adapters/hls-background-video/adapter.js +50 -70
  105. package/dist/default/playback/adapters/hls-background-video/adapter.js.map +1 -1
  106. package/dist/default/playback/adapters/hls-background-video/host.js +12 -16
  107. package/dist/default/playback/adapters/hls-background-video/host.js.map +1 -1
  108. package/dist/default/playback/adapters/hls-background-video/media.js +5 -8
  109. package/dist/default/playback/adapters/hls-background-video/media.js.map +1 -1
  110. package/dist/default/playback/adapters/hls-video/adapter.js +43 -60
  111. package/dist/default/playback/adapters/hls-video/adapter.js.map +1 -1
  112. package/dist/default/playback/adapters/hls-video/error-surface.js +13 -18
  113. package/dist/default/playback/adapters/hls-video/error-surface.js.map +1 -1
  114. package/dist/default/playback/adapters/hls-video/media-tracks.js +4 -5
  115. package/dist/default/playback/adapters/hls-video/media-tracks.js.map +1 -1
  116. package/dist/default/playback/adapters/hls-video/media.js.map +1 -1
  117. package/dist/default/playback/adapters/mux-audio/media.js +8 -12
  118. package/dist/default/playback/adapters/mux-audio/media.js.map +1 -1
  119. package/dist/default/playback/adapters/mux-video/adapter.js +25 -33
  120. package/dist/default/playback/adapters/mux-video/adapter.js.map +1 -1
  121. package/dist/default/playback/adapters/mux-video/media.js +7 -9
  122. package/dist/default/playback/adapters/mux-video/media.js.map +1 -1
  123. package/dist/default/playback/behaviors/calculate-presentation-duration.js +5 -8
  124. package/dist/default/playback/behaviors/calculate-presentation-duration.js.map +1 -1
  125. package/dist/default/playback/behaviors/collect-errors.js +39 -52
  126. package/dist/default/playback/behaviors/collect-errors.js.map +1 -1
  127. package/dist/default/playback/behaviors/derive-cdn-priority.js +16 -23
  128. package/dist/default/playback/behaviors/derive-cdn-priority.js.map +1 -1
  129. package/dist/default/playback/behaviors/dom/airplay.js +38 -61
  130. package/dist/default/playback/behaviors/dom/airplay.js.map +1 -1
  131. package/dist/default/playback/behaviors/dom/apply-start-position.js +23 -35
  132. package/dist/default/playback/behaviors/dom/apply-start-position.js.map +1 -1
  133. package/dist/default/playback/behaviors/dom/end-of-stream.js +11 -16
  134. package/dist/default/playback/behaviors/dom/end-of-stream.js.map +1 -1
  135. package/dist/default/playback/behaviors/dom/load-segments.js +27 -39
  136. package/dist/default/playback/behaviors/dom/load-segments.js.map +1 -1
  137. package/dist/default/playback/behaviors/dom/recover-end-stall.js +21 -26
  138. package/dist/default/playback/behaviors/dom/recover-end-stall.js.map +1 -1
  139. package/dist/default/playback/behaviors/dom/seek-to-live-edge.js +41 -60
  140. package/dist/default/playback/behaviors/dom/seek-to-live-edge.js.map +1 -1
  141. package/dist/default/playback/behaviors/dom/setup-buffer-actors.js +50 -74
  142. package/dist/default/playback/behaviors/dom/setup-buffer-actors.js.map +1 -1
  143. package/dist/default/playback/behaviors/dom/setup-mediasource.js +29 -43
  144. package/dist/default/playback/behaviors/dom/setup-mediasource.js.map +1 -1
  145. package/dist/default/playback/behaviors/dom/setup-text-track-actors.js.map +1 -1
  146. package/dist/default/playback/behaviors/dom/sync-live-seekable-range.js +3 -4
  147. package/dist/default/playback/behaviors/dom/sync-live-seekable-range.js.map +1 -1
  148. package/dist/default/playback/behaviors/dom/sync-text-tracks.js +30 -45
  149. package/dist/default/playback/behaviors/dom/sync-text-tracks.js.map +1 -1
  150. package/dist/default/playback/behaviors/dom/track-current-time.js +9 -11
  151. package/dist/default/playback/behaviors/dom/track-current-time.js.map +1 -1
  152. package/dist/default/playback/behaviors/dom/track-load-triggers.js +24 -32
  153. package/dist/default/playback/behaviors/dom/track-load-triggers.js.map +1 -1
  154. package/dist/default/playback/behaviors/dom/track-playback-rate.js +6 -8
  155. package/dist/default/playback/behaviors/dom/track-playback-rate.js.map +1 -1
  156. package/dist/default/playback/behaviors/dom/track-player-resolution.js +10 -14
  157. package/dist/default/playback/behaviors/dom/track-player-resolution.js.map +1 -1
  158. package/dist/default/playback/behaviors/dom/track-screen-resolution.js +8 -9
  159. package/dist/default/playback/behaviors/dom/track-screen-resolution.js.map +1 -1
  160. package/dist/default/playback/behaviors/dom/update-mediasource-duration.js +28 -43
  161. package/dist/default/playback/behaviors/dom/update-mediasource-duration.js.map +1 -1
  162. package/dist/default/playback/behaviors/establish-start-media-time.js +32 -42
  163. package/dist/default/playback/behaviors/establish-start-media-time.js.map +1 -1
  164. package/dist/default/playback/behaviors/resolve-presentation.js +13 -22
  165. package/dist/default/playback/behaviors/resolve-presentation.js.map +1 -1
  166. package/dist/default/playback/behaviors/resolve-track.js +5 -12
  167. package/dist/default/playback/behaviors/resolve-track.js.map +1 -1
  168. package/dist/default/playback/behaviors/select-tracks.js +77 -104
  169. package/dist/default/playback/behaviors/select-tracks.js.map +1 -1
  170. package/dist/default/playback/behaviors/setup-failover-monitor.js +11 -16
  171. package/dist/default/playback/behaviors/setup-failover-monitor.js.map +1 -1
  172. package/dist/default/playback/behaviors/sync-preload.js +9 -13
  173. package/dist/default/playback/behaviors/sync-preload.js.map +1 -1
  174. package/dist/default/playback/behaviors/track-switching.js +189 -173
  175. package/dist/default/playback/behaviors/track-switching.js.map +1 -1
  176. package/dist/default/playback/engines/hls/engine-audio-only.js +20 -24
  177. package/dist/default/playback/engines/hls/engine-audio-only.js.map +1 -1
  178. package/dist/default/playback/engines/hls/engine-background-video.js +22 -27
  179. package/dist/default/playback/engines/hls/engine-background-video.js.map +1 -1
  180. package/dist/default/playback/engines/hls/engine.js +22 -25
  181. package/dist/default/playback/engines/hls/engine.js.map +1 -1
  182. package/dist/default/playback/primitives/error-messages.js +16 -25
  183. package/dist/default/playback/primitives/error-messages.js.map +1 -1
  184. package/dist/default/playback/primitives/failover-fetch.js +9 -14
  185. package/dist/default/playback/primitives/failover-fetch.js.map +1 -1
  186. package/dist/default/playback/primitives/head-peek.js +7 -10
  187. package/dist/default/playback/primitives/head-peek.js.map +1 -1
  188. package/dist/default/playback/primitives/live-window.js +12 -15
  189. package/dist/default/playback/primitives/live-window.js.map +1 -1
  190. package/dist/default/playback/primitives/relocation-pipelines.js +34 -46
  191. package/dist/default/playback/primitives/relocation-pipelines.js.map +1 -1
  192. package/dist/default/playback/primitives/report-track-conditions.js +26 -38
  193. package/dist/default/playback/primitives/report-track-conditions.js.map +1 -1
  194. package/dist/default/playback/primitives/segment-load-pipeline.js +15 -15
  195. package/dist/default/playback/primitives/segment-load-pipeline.js.map +1 -1
  196. package/dist/default/playback/primitives/selection-rules.js +65 -36
  197. package/dist/default/playback/primitives/selection-rules.js.map +1 -1
  198. package/dist/default/playback/primitives/text-segment-load-pipeline.js +4 -5
  199. package/dist/default/playback/primitives/text-segment-load-pipeline.js.map +1 -1
  200. package/dist/default/playback/primitives/track-types.js +10 -18
  201. package/dist/default/playback/primitives/track-types.js.map +1 -1
  202. package/dist/dev/core/actors/actor.d.ts +4 -4
  203. package/dist/dev/core/actors/actor.d.ts.map +1 -1
  204. package/dist/dev/core/actors/create-machine-actor.d.ts +38 -47
  205. package/dist/dev/core/actors/create-machine-actor.d.ts.map +1 -1
  206. package/dist/dev/core/actors/create-machine-actor.js +23 -25
  207. package/dist/dev/core/actors/create-machine-actor.js.map +1 -1
  208. package/dist/dev/core/actors/create-transition-actor.d.ts +11 -15
  209. package/dist/dev/core/actors/create-transition-actor.d.ts.map +1 -1
  210. package/dist/dev/core/actors/create-transition-actor.js +7 -9
  211. package/dist/dev/core/actors/create-transition-actor.js.map +1 -1
  212. package/dist/dev/core/composition/create-composition.d.ts +70 -102
  213. package/dist/dev/core/composition/create-composition.d.ts.map +1 -1
  214. package/dist/dev/core/composition/create-composition.js +26 -29
  215. package/dist/dev/core/composition/create-composition.js.map +1 -1
  216. package/dist/dev/core/composition/share-signals.d.ts +17 -24
  217. package/dist/dev/core/composition/share-signals.d.ts.map +1 -1
  218. package/dist/dev/core/composition/share-signals.js +12 -17
  219. package/dist/dev/core/composition/share-signals.js.map +1 -1
  220. package/dist/dev/core/machine.d.ts +4 -4
  221. package/dist/dev/core/machine.js +3 -4
  222. package/dist/dev/core/machine.js.map +1 -1
  223. package/dist/dev/core/reactors/create-machine-reactor.d.ts +33 -39
  224. package/dist/dev/core/reactors/create-machine-reactor.d.ts.map +1 -1
  225. package/dist/dev/core/reactors/create-machine-reactor.js +20 -19
  226. package/dist/dev/core/reactors/create-machine-reactor.js.map +1 -1
  227. package/dist/dev/core/signals/effect.d.ts +3 -4
  228. package/dist/dev/core/signals/effect.d.ts.map +1 -1
  229. package/dist/dev/core/signals/effect.js +24 -4
  230. package/dist/dev/core/signals/effect.js.map +1 -1
  231. package/dist/dev/core/signals/primitives.d.ts +10 -12
  232. package/dist/dev/core/signals/primitives.d.ts.map +1 -1
  233. package/dist/dev/core/signals/primitives.js +10 -14
  234. package/dist/dev/core/signals/primitives.js.map +1 -1
  235. package/dist/dev/core/signals/when.js +6 -8
  236. package/dist/dev/core/signals/when.js.map +1 -1
  237. package/dist/dev/core/tasks/delayed-reschedule.js +7 -11
  238. package/dist/dev/core/tasks/delayed-reschedule.js.map +1 -1
  239. package/dist/dev/core/tasks/task.d.ts +51 -73
  240. package/dist/dev/core/tasks/task.d.ts.map +1 -1
  241. package/dist/dev/core/tasks/task.js +59 -82
  242. package/dist/dev/core/tasks/task.js.map +1 -1
  243. package/dist/dev/hls.d.ts +3 -1
  244. package/dist/dev/hls.js +3 -1
  245. package/dist/dev/index.d.ts +2 -3
  246. package/dist/dev/index.d.ts.map +1 -1
  247. package/dist/dev/index.js +2 -3
  248. package/dist/dev/index.js.map +1 -1
  249. package/dist/dev/media/abr/quality-selection.d.ts +7 -10
  250. package/dist/dev/media/abr/quality-selection.d.ts.map +1 -1
  251. package/dist/dev/media/abr/quality-selection.js +3 -7
  252. package/dist/dev/media/abr/quality-selection.js.map +1 -1
  253. package/dist/dev/media/buffer/back-buffer.d.ts +2 -7
  254. package/dist/dev/media/buffer/back-buffer.d.ts.map +1 -1
  255. package/dist/dev/media/buffer/back-buffer.js +15 -19
  256. package/dist/dev/media/buffer/back-buffer.js.map +1 -1
  257. package/dist/dev/media/buffer/forward-buffer.d.ts +2 -7
  258. package/dist/dev/media/buffer/forward-buffer.d.ts.map +1 -1
  259. package/dist/dev/media/buffer/forward-buffer.js +32 -41
  260. package/dist/dev/media/buffer/forward-buffer.js.map +1 -1
  261. package/dist/dev/media/dom/capabilities.js +26 -37
  262. package/dist/dev/media/dom/capabilities.js.map +1 -1
  263. package/dist/dev/media/dom/mse/append-segment.d.ts +3 -5
  264. package/dist/dev/media/dom/mse/append-segment.d.ts.map +1 -1
  265. package/dist/dev/media/dom/mse/append-segment.js +3 -5
  266. package/dist/dev/media/dom/mse/append-segment.js.map +1 -1
  267. package/dist/dev/media/dom/mse/buffer-flusher.d.ts +5 -5
  268. package/dist/dev/media/dom/mse/buffer-flusher.js +5 -5
  269. package/dist/dev/media/dom/mse/buffer-flusher.js.map +1 -1
  270. package/dist/dev/media/dom/mse/duration.js +23 -31
  271. package/dist/dev/media/dom/mse/duration.js.map +1 -1
  272. package/dist/dev/media/dom/mse/end-of-stream.js +3 -6
  273. package/dist/dev/media/dom/mse/end-of-stream.js.map +1 -1
  274. package/dist/dev/media/dom/mse/mediasource-setup.js +65 -81
  275. package/dist/dev/media/dom/mse/mediasource-setup.js.map +1 -1
  276. package/dist/dev/media/dom/screen.d.ts.map +1 -1
  277. package/dist/dev/media/dom/screen.js +37 -54
  278. package/dist/dev/media/dom/screen.js.map +1 -1
  279. package/dist/dev/media/dom/text/resolve-vtt-segment.d.ts.map +1 -1
  280. package/dist/dev/media/dom/text/resolve-vtt-segment.js.map +1 -1
  281. package/dist/dev/media/dom/text/text-track-slots.d.ts +10 -16
  282. package/dist/dev/media/dom/text/text-track-slots.d.ts.map +1 -1
  283. package/dist/dev/media/dom/text/text-track-slots.js +15 -23
  284. package/dist/dev/media/dom/text/text-track-slots.js.map +1 -1
  285. package/dist/dev/media/errors.d.ts +32 -46
  286. package/dist/dev/media/errors.d.ts.map +1 -1
  287. package/dist/dev/media/errors.js +25 -34
  288. package/dist/dev/media/errors.js.map +1 -1
  289. package/dist/dev/media/hls/parse-attributes.js +9 -26
  290. package/dist/dev/media/hls/parse-attributes.js.map +1 -1
  291. package/dist/dev/media/hls/parse-media-playlist.js +25 -33
  292. package/dist/dev/media/hls/parse-media-playlist.js.map +1 -1
  293. package/dist/dev/media/hls/parse-multivariant.js +3 -3
  294. package/dist/dev/media/hls/parse-multivariant.js.map +1 -1
  295. package/dist/dev/media/hls/reload-policy.js +19 -27
  296. package/dist/dev/media/hls/reload-policy.js.map +1 -1
  297. package/dist/dev/media/hls/resolve-url.js +1 -3
  298. package/dist/dev/media/hls/resolve-url.js.map +1 -1
  299. package/dist/dev/media/live-window.js +9 -13
  300. package/dist/dev/media/live-window.js.map +1 -1
  301. package/dist/dev/media/media-tracks/media-tracks.d.ts +8 -13
  302. package/dist/dev/media/media-tracks/media-tracks.d.ts.map +1 -1
  303. package/dist/dev/media/media-tracks/media-tracks.js +12 -17
  304. package/dist/dev/media/media-tracks/media-tracks.js.map +1 -1
  305. package/dist/dev/media/mp4/box.js +4 -5
  306. package/dist/dev/media/mp4/box.js.map +1 -1
  307. package/dist/dev/media/mp4/timestamp-origin.js +30 -42
  308. package/dist/dev/media/mp4/timestamp-origin.js.map +1 -1
  309. package/dist/dev/media/primitives/resolution.d.ts +6 -8
  310. package/dist/dev/media/primitives/resolution.d.ts.map +1 -1
  311. package/dist/dev/media/primitives/resolution.js +5 -8
  312. package/dist/dev/media/primitives/resolution.js.map +1 -1
  313. package/dist/dev/media/primitives/select-tracks.js +24 -34
  314. package/dist/dev/media/primitives/select-tracks.js.map +1 -1
  315. package/dist/dev/media/text/parse-vtt-timestamp-map.js +6 -8
  316. package/dist/dev/media/text/parse-vtt-timestamp-map.js.map +1 -1
  317. package/dist/dev/media/text/resolve-vtt-metadata.js +8 -9
  318. package/dist/dev/media/text/resolve-vtt-metadata.js.map +1 -1
  319. package/dist/dev/media/types/index.d.ts +106 -177
  320. package/dist/dev/media/types/index.d.ts.map +1 -1
  321. package/dist/dev/media/types/index.js +10 -18
  322. package/dist/dev/media/types/index.js.map +1 -1
  323. package/dist/dev/media/utils/cdn.d.ts +4 -6
  324. package/dist/dev/media/utils/cdn.d.ts.map +1 -1
  325. package/dist/dev/media/utils/cdn.js +10 -16
  326. package/dist/dev/media/utils/cdn.js.map +1 -1
  327. package/dist/dev/media/utils/preload.js +4 -6
  328. package/dist/dev/media/utils/preload.js.map +1 -1
  329. package/dist/dev/media/utils/track-selection.js +10 -14
  330. package/dist/dev/media/utils/track-selection.js.map +1 -1
  331. package/dist/dev/media/utils/tracks.js +56 -54
  332. package/dist/dev/media/utils/tracks.js.map +1 -1
  333. package/dist/dev/network/bandwidth-estimator.d.ts +7 -9
  334. package/dist/dev/network/bandwidth-estimator.d.ts.map +1 -1
  335. package/dist/dev/network/bandwidth-estimator.js +18 -19
  336. package/dist/dev/network/bandwidth-estimator.js.map +1 -1
  337. package/dist/dev/network/chunked-stream-iterable.js +4 -6
  338. package/dist/dev/network/chunked-stream-iterable.js.map +1 -1
  339. package/dist/dev/network/ewma.js +22 -25
  340. package/dist/dev/network/ewma.js.map +1 -1
  341. package/dist/dev/network/fetch.js +30 -37
  342. package/dist/dev/network/fetch.js.map +1 -1
  343. package/dist/dev/playback/actors/dom/segment-loader.d.ts +7 -11
  344. package/dist/dev/playback/actors/dom/segment-loader.d.ts.map +1 -1
  345. package/dist/dev/playback/actors/dom/segment-loader.js +28 -44
  346. package/dist/dev/playback/actors/dom/segment-loader.js.map +1 -1
  347. package/dist/dev/playback/actors/dom/source-buffer.d.ts +5 -7
  348. package/dist/dev/playback/actors/dom/source-buffer.d.ts.map +1 -1
  349. package/dist/dev/playback/actors/dom/source-buffer.js.map +1 -1
  350. package/dist/dev/playback/actors/dom/text-tracks.js.map +1 -1
  351. package/dist/dev/playback/actors/text-track-segment-loader.d.ts +10 -16
  352. package/dist/dev/playback/actors/text-track-segment-loader.d.ts.map +1 -1
  353. package/dist/dev/playback/actors/text-track-segment-loader.js +24 -35
  354. package/dist/dev/playback/actors/text-track-segment-loader.js.map +1 -1
  355. package/dist/dev/playback/actors/text-tracks.d.ts +5 -8
  356. package/dist/dev/playback/actors/text-tracks.d.ts.map +1 -1
  357. package/dist/dev/playback/adapters/hls-audio/adapter.d.ts +11 -14
  358. package/dist/dev/playback/adapters/hls-audio/adapter.d.ts.map +1 -1
  359. package/dist/dev/playback/adapters/hls-audio/adapter.js +23 -31
  360. package/dist/dev/playback/adapters/hls-audio/adapter.js.map +1 -1
  361. package/dist/dev/playback/adapters/hls-audio/media.d.ts.map +1 -1
  362. package/dist/dev/playback/adapters/hls-audio/media.js.map +1 -1
  363. package/dist/dev/playback/adapters/hls-background-video/adapter.d.ts +28 -39
  364. package/dist/dev/playback/adapters/hls-background-video/adapter.d.ts.map +1 -1
  365. package/dist/dev/playback/adapters/hls-background-video/adapter.js +50 -70
  366. package/dist/dev/playback/adapters/hls-background-video/adapter.js.map +1 -1
  367. package/dist/dev/playback/adapters/hls-background-video/host.d.ts +12 -16
  368. package/dist/dev/playback/adapters/hls-background-video/host.d.ts.map +1 -1
  369. package/dist/dev/playback/adapters/hls-background-video/host.js +12 -16
  370. package/dist/dev/playback/adapters/hls-background-video/host.js.map +1 -1
  371. package/dist/dev/playback/adapters/hls-background-video/media.d.ts +5 -8
  372. package/dist/dev/playback/adapters/hls-background-video/media.d.ts.map +1 -1
  373. package/dist/dev/playback/adapters/hls-background-video/media.js +5 -8
  374. package/dist/dev/playback/adapters/hls-background-video/media.js.map +1 -1
  375. package/dist/dev/playback/adapters/hls-video/adapter.d.ts +12 -14
  376. package/dist/dev/playback/adapters/hls-video/adapter.d.ts.map +1 -1
  377. package/dist/dev/playback/adapters/hls-video/adapter.js +43 -60
  378. package/dist/dev/playback/adapters/hls-video/adapter.js.map +1 -1
  379. package/dist/dev/playback/adapters/hls-video/error-surface.d.ts +4 -5
  380. package/dist/dev/playback/adapters/hls-video/error-surface.d.ts.map +1 -1
  381. package/dist/dev/playback/adapters/hls-video/error-surface.js +13 -18
  382. package/dist/dev/playback/adapters/hls-video/error-surface.js.map +1 -1
  383. package/dist/dev/playback/adapters/hls-video/media-tracks.d.ts +4 -5
  384. package/dist/dev/playback/adapters/hls-video/media-tracks.d.ts.map +1 -1
  385. package/dist/dev/playback/adapters/hls-video/media-tracks.js +4 -5
  386. package/dist/dev/playback/adapters/hls-video/media-tracks.js.map +1 -1
  387. package/dist/dev/playback/adapters/hls-video/media.d.ts.map +1 -1
  388. package/dist/dev/playback/adapters/hls-video/media.js.map +1 -1
  389. package/dist/dev/playback/adapters/mux-audio/media.d.ts +8 -12
  390. package/dist/dev/playback/adapters/mux-audio/media.d.ts.map +1 -1
  391. package/dist/dev/playback/adapters/mux-audio/media.js +8 -12
  392. package/dist/dev/playback/adapters/mux-audio/media.js.map +1 -1
  393. package/dist/dev/playback/adapters/mux-video/adapter.d.ts +9 -11
  394. package/dist/dev/playback/adapters/mux-video/adapter.d.ts.map +1 -1
  395. package/dist/dev/playback/adapters/mux-video/adapter.js +25 -33
  396. package/dist/dev/playback/adapters/mux-video/adapter.js.map +1 -1
  397. package/dist/dev/playback/adapters/mux-video/media.d.ts +7 -9
  398. package/dist/dev/playback/adapters/mux-video/media.d.ts.map +1 -1
  399. package/dist/dev/playback/adapters/mux-video/media.js +7 -9
  400. package/dist/dev/playback/adapters/mux-video/media.js.map +1 -1
  401. package/dist/dev/playback/behaviors/calculate-presentation-duration.d.ts +5 -8
  402. package/dist/dev/playback/behaviors/calculate-presentation-duration.d.ts.map +1 -1
  403. package/dist/dev/playback/behaviors/calculate-presentation-duration.js +5 -8
  404. package/dist/dev/playback/behaviors/calculate-presentation-duration.js.map +1 -1
  405. package/dist/dev/playback/behaviors/collect-errors.d.ts +2 -0
  406. package/dist/dev/playback/behaviors/collect-errors.js +39 -52
  407. package/dist/dev/playback/behaviors/collect-errors.js.map +1 -1
  408. package/dist/dev/playback/behaviors/derive-cdn-priority.js +16 -23
  409. package/dist/dev/playback/behaviors/derive-cdn-priority.js.map +1 -1
  410. package/dist/dev/playback/behaviors/dom/airplay.js +38 -61
  411. package/dist/dev/playback/behaviors/dom/airplay.js.map +1 -1
  412. package/dist/dev/playback/behaviors/dom/apply-start-position.js +23 -35
  413. package/dist/dev/playback/behaviors/dom/apply-start-position.js.map +1 -1
  414. package/dist/dev/playback/behaviors/dom/end-of-stream.js +11 -16
  415. package/dist/dev/playback/behaviors/dom/end-of-stream.js.map +1 -1
  416. package/dist/dev/playback/behaviors/dom/load-segments.d.ts +5 -8
  417. package/dist/dev/playback/behaviors/dom/load-segments.d.ts.map +1 -1
  418. package/dist/dev/playback/behaviors/dom/load-segments.js +27 -39
  419. package/dist/dev/playback/behaviors/dom/load-segments.js.map +1 -1
  420. package/dist/dev/playback/behaviors/dom/recover-end-stall.js +21 -26
  421. package/dist/dev/playback/behaviors/dom/recover-end-stall.js.map +1 -1
  422. package/dist/dev/playback/behaviors/dom/seek-to-live-edge.js +41 -60
  423. package/dist/dev/playback/behaviors/dom/seek-to-live-edge.js.map +1 -1
  424. package/dist/dev/playback/behaviors/dom/setup-buffer-actors.js +50 -74
  425. package/dist/dev/playback/behaviors/dom/setup-buffer-actors.js.map +1 -1
  426. package/dist/dev/playback/behaviors/dom/setup-mediasource.js +29 -43
  427. package/dist/dev/playback/behaviors/dom/setup-mediasource.js.map +1 -1
  428. package/dist/dev/playback/behaviors/dom/setup-text-track-actors.d.ts +3 -3
  429. package/dist/dev/playback/behaviors/dom/setup-text-track-actors.d.ts.map +1 -1
  430. package/dist/dev/playback/behaviors/dom/setup-text-track-actors.js.map +1 -1
  431. package/dist/dev/playback/behaviors/dom/sync-live-seekable-range.js +3 -4
  432. package/dist/dev/playback/behaviors/dom/sync-live-seekable-range.js.map +1 -1
  433. package/dist/dev/playback/behaviors/dom/sync-text-tracks.js +30 -45
  434. package/dist/dev/playback/behaviors/dom/sync-text-tracks.js.map +1 -1
  435. package/dist/dev/playback/behaviors/dom/track-current-time.d.ts +2 -2
  436. package/dist/dev/playback/behaviors/dom/track-current-time.d.ts.map +1 -1
  437. package/dist/dev/playback/behaviors/dom/track-current-time.js +9 -11
  438. package/dist/dev/playback/behaviors/dom/track-current-time.js.map +1 -1
  439. package/dist/dev/playback/behaviors/dom/track-load-triggers.d.ts +6 -12
  440. package/dist/dev/playback/behaviors/dom/track-load-triggers.d.ts.map +1 -1
  441. package/dist/dev/playback/behaviors/dom/track-load-triggers.js +24 -32
  442. package/dist/dev/playback/behaviors/dom/track-load-triggers.js.map +1 -1
  443. package/dist/dev/playback/behaviors/dom/track-playback-rate.d.ts +2 -2
  444. package/dist/dev/playback/behaviors/dom/track-playback-rate.d.ts.map +1 -1
  445. package/dist/dev/playback/behaviors/dom/track-playback-rate.js +6 -8
  446. package/dist/dev/playback/behaviors/dom/track-playback-rate.js.map +1 -1
  447. package/dist/dev/playback/behaviors/dom/track-player-resolution.d.ts.map +1 -1
  448. package/dist/dev/playback/behaviors/dom/track-player-resolution.js +10 -14
  449. package/dist/dev/playback/behaviors/dom/track-player-resolution.js.map +1 -1
  450. package/dist/dev/playback/behaviors/dom/track-screen-resolution.js +8 -9
  451. package/dist/dev/playback/behaviors/dom/track-screen-resolution.js.map +1 -1
  452. package/dist/dev/playback/behaviors/dom/update-mediasource-duration.js +28 -43
  453. package/dist/dev/playback/behaviors/dom/update-mediasource-duration.js.map +1 -1
  454. package/dist/dev/playback/behaviors/establish-start-media-time.d.ts +15 -19
  455. package/dist/dev/playback/behaviors/establish-start-media-time.d.ts.map +1 -1
  456. package/dist/dev/playback/behaviors/establish-start-media-time.js +32 -42
  457. package/dist/dev/playback/behaviors/establish-start-media-time.js.map +1 -1
  458. package/dist/dev/playback/behaviors/resolve-presentation.d.ts.map +1 -1
  459. package/dist/dev/playback/behaviors/resolve-presentation.js +13 -22
  460. package/dist/dev/playback/behaviors/resolve-presentation.js.map +1 -1
  461. package/dist/dev/playback/behaviors/resolve-track.js +5 -12
  462. package/dist/dev/playback/behaviors/resolve-track.js.map +1 -1
  463. package/dist/dev/playback/behaviors/select-tracks.d.ts +28 -39
  464. package/dist/dev/playback/behaviors/select-tracks.d.ts.map +1 -1
  465. package/dist/dev/playback/behaviors/select-tracks.js +77 -104
  466. package/dist/dev/playback/behaviors/select-tracks.js.map +1 -1
  467. package/dist/dev/playback/behaviors/setup-failover-monitor.d.ts +1 -4
  468. package/dist/dev/playback/behaviors/setup-failover-monitor.d.ts.map +1 -1
  469. package/dist/dev/playback/behaviors/setup-failover-monitor.js +11 -16
  470. package/dist/dev/playback/behaviors/setup-failover-monitor.js.map +1 -1
  471. package/dist/dev/playback/behaviors/sync-preload.js +9 -13
  472. package/dist/dev/playback/behaviors/sync-preload.js.map +1 -1
  473. package/dist/dev/playback/behaviors/track-switching.d.ts +110 -0
  474. package/dist/dev/playback/behaviors/track-switching.d.ts.map +1 -0
  475. package/dist/dev/playback/behaviors/track-switching.js +189 -173
  476. package/dist/dev/playback/behaviors/track-switching.js.map +1 -1
  477. package/dist/dev/playback/engines/hls/engine-audio-only.d.ts +59 -72
  478. package/dist/dev/playback/engines/hls/engine-audio-only.d.ts.map +1 -1
  479. package/dist/dev/playback/engines/hls/engine-audio-only.js +20 -24
  480. package/dist/dev/playback/engines/hls/engine-audio-only.js.map +1 -1
  481. package/dist/dev/playback/engines/hls/engine-background-video.d.ts +51 -78
  482. package/dist/dev/playback/engines/hls/engine-background-video.d.ts.map +1 -1
  483. package/dist/dev/playback/engines/hls/engine-background-video.js +22 -27
  484. package/dist/dev/playback/engines/hls/engine-background-video.js.map +1 -1
  485. package/dist/dev/playback/engines/hls/engine.d.ts +115 -155
  486. package/dist/dev/playback/engines/hls/engine.d.ts.map +1 -1
  487. package/dist/dev/playback/engines/hls/engine.js +22 -25
  488. package/dist/dev/playback/engines/hls/engine.js.map +1 -1
  489. package/dist/dev/playback/primitives/derive-start-media-time.d.ts +3 -3
  490. package/dist/dev/playback/primitives/derive-start-media-time.d.ts.map +1 -1
  491. package/dist/dev/playback/primitives/error-messages.js +16 -25
  492. package/dist/dev/playback/primitives/error-messages.js.map +1 -1
  493. package/dist/dev/playback/primitives/failover-fetch.js +9 -14
  494. package/dist/dev/playback/primitives/failover-fetch.js.map +1 -1
  495. package/dist/dev/playback/primitives/head-peek.js +7 -10
  496. package/dist/dev/playback/primitives/head-peek.js.map +1 -1
  497. package/dist/dev/playback/primitives/live-window.js +12 -15
  498. package/dist/dev/playback/primitives/live-window.js.map +1 -1
  499. package/dist/dev/playback/primitives/relocation-pipelines.js +34 -46
  500. package/dist/dev/playback/primitives/relocation-pipelines.js.map +1 -1
  501. package/dist/dev/playback/primitives/report-track-conditions.d.ts +1 -4
  502. package/dist/dev/playback/primitives/report-track-conditions.d.ts.map +1 -1
  503. package/dist/dev/playback/primitives/report-track-conditions.js +26 -38
  504. package/dist/dev/playback/primitives/report-track-conditions.js.map +1 -1
  505. package/dist/dev/playback/primitives/segment-load-pipeline.js +15 -15
  506. package/dist/dev/playback/primitives/segment-load-pipeline.js.map +1 -1
  507. package/dist/dev/playback/primitives/selection-rules.d.ts +45 -17
  508. package/dist/dev/playback/primitives/selection-rules.d.ts.map +1 -1
  509. package/dist/dev/playback/primitives/selection-rules.js +65 -36
  510. package/dist/dev/playback/primitives/selection-rules.js.map +1 -1
  511. package/dist/dev/playback/primitives/source-buffer-messages.d.ts +6 -9
  512. package/dist/dev/playback/primitives/source-buffer-messages.d.ts.map +1 -1
  513. package/dist/dev/playback/primitives/text-segment-load-pipeline.d.ts +20 -29
  514. package/dist/dev/playback/primitives/text-segment-load-pipeline.d.ts.map +1 -1
  515. package/dist/dev/playback/primitives/text-segment-load-pipeline.js +4 -5
  516. package/dist/dev/playback/primitives/text-segment-load-pipeline.js.map +1 -1
  517. package/dist/dev/playback/primitives/text-track-messages.d.ts.map +1 -1
  518. package/dist/dev/playback/primitives/track-types.js +10 -18
  519. package/dist/dev/playback/primitives/track-types.js.map +1 -1
  520. package/package.json +25 -28
@@ -26,14 +26,13 @@ import { PlayerResolution } from "../../behaviors/dom/track-player-resolution.js
26
26
  /**
27
27
  * State shape for the HLS playback engine.
28
28
  *
29
- * This is the union of all state required by the behaviors composed into
30
- * the HLS engine. Each behavior declares its own state interface; this
31
- * type satisfies all of them.
29
+ * This is the union of all state required by the behaviors composed into the HLS engine. Each behavior declares its own
30
+ * state interface; this type satisfies all of them.
32
31
  */
33
32
  interface HlsVideoEngineState {
34
33
  /**
35
- * The presentation being played. A caller writes `{ url }`;
36
- * `resolvePresentation` parses the manifest and populates the rest.
34
+ * The presentation being played. A caller writes `{ url }`; `resolvePresentation` parses the manifest and populates
35
+ * the rest.
37
36
  */
38
37
  presentation?: MaybeResolvedPresentation;
39
38
  preload?: 'auto' | 'metadata' | 'none';
@@ -44,80 +43,63 @@ interface HlsVideoEngineState {
44
43
  mediaContainerData?: Record<string, MediaContainerData>;
45
44
  userVideoTrackSelection?: Partial<VideoTrack>;
46
45
  /**
47
- * Consumer-driven constraint narrowing the audio candidate set. Sibling
48
- * of `userVideoTrackSelection`. Partial-track shape — `{ language: 'es' }`,
49
- * `{ id: 'audio-en' }`, etc. `selectAudioTrack` reads this and re-picks
50
- * when it changes. Multi-language-audio Tier 2 programmatic-write path.
46
+ * Consumer-driven constraint narrowing the audio candidate set. Sibling of `userVideoTrackSelection`. Partial-track
47
+ * shape — `{ language: 'es' }`, `{ id: 'audio-en' }`, etc. `selectAudioTrack` reads this and re-picks when it
48
+ * changes. Multi-language-audio Tier 2 programmatic-write path.
51
49
  */
52
50
  userAudioTrackSelection?: Partial<AudioTrack>;
53
51
  /**
54
- * Consumer-driven *intent* for text selection, resolved into
55
- * `selectedTextTrackId` by `switchTextTrack`. A language-based partial
56
- * (`{ language: 'es' }`) selects captions, `'off'` disables them, and absence
57
- * means auto (the engine's `preferredSubtitleLanguage` / DEFAULT-track policy).
58
- * Also the write path for the DOM caption UI (via `syncTextTracks`); unlike the
59
- * resolved id it persists across source changes (sticky preference).
52
+ * Consumer-driven _intent_ for text selection, resolved into `selectedTextTrackId` by `switchTextTrack`. A
53
+ * language-based partial (`{ language: 'es' }`) selects captions, `'off'` disables them, and absence means auto (the
54
+ * engine's `preferredSubtitleLanguage` / DEFAULT-track policy). Also the write path for the DOM caption UI (via
55
+ * `syncTextTracks`); unlike the resolved id it persists across source changes (sticky preference).
60
56
  */
61
57
  userTextTrackSelection?: Partial<TextTrack> | 'off';
62
58
  /**
63
- * The CDNs the source is served from (track-URL origins), in manifest
64
- * priority order most-preferred first (mirrors HLS content steering's
65
- * `PATHWAY-PRIORITY`). Owned by `deriveCdnPriority`, read by
66
- * `track-switching`'s `preferActiveCdn` scope, which narrows to the
67
- * highest-priority CDN with surviving tracks so video / audio / text stay on
68
- * one host. Only meaningful for redundant-stream sources; a single-CDN source
69
- * has one entry.
59
+ * The CDNs the source is served from (track-URL origins), in manifest priority order — most-preferred first (mirrors
60
+ * HLS content steering's `PATHWAY-PRIORITY`). Owned by `deriveCdnPriority`, read by `track-switching`'s
61
+ * `preferActiveCdn` scope, which narrows to the highest-priority CDN with surviving tracks so video / audio / text
62
+ * stay on one host. Only meaningful for redundant-stream sources; a single-CDN source has one entry.
70
63
  */
71
64
  cdnPriority?: string[];
72
65
  /**
73
- * CDN ids (origins) currently in failover cooldown — written by the CDN
74
- * monitor when a host fails too often, read by `track-switching`'s
75
- * `excludeFailedCdns` hard constraint, which prunes their tracks so the
76
- * active-CDN scope falls to the next CDN in `cdnPriority`. Empty / absent
77
- * means all CDNs are eligible.
66
+ * CDN ids (origins) currently in failover cooldown — written by the CDN monitor when a host fails too often, read by
67
+ * `track-switching`'s `excludeFailedCdns` hard constraint, which prunes their tracks so the active-CDN scope falls to
68
+ * the next CDN in `cdnPriority`. Empty / absent means all CDNs are eligible.
78
69
  */
79
70
  failedCdns?: string[];
80
71
  /**
81
- * Conditions reported during playback, in the order encountered — appended by
82
- * whichever behavior detects one (`emitError`), owned and cleared per source by
83
- * `collectErrors`. Carries no severity: which of these is fatal is decided
84
- * above the engine, at the adapter. See
85
- * `internal/design/spf/features/errors.md`.
72
+ * Conditions reported during playback, in the order encountered — appended by whichever behavior detects one
73
+ * (`emitError`), owned and cleared per source by `collectErrors`. Carries no severity: which of these is fatal is
74
+ * decided above the engine, at the adapter. See `internal/design/spf/features/errors.md`.
86
75
  */
87
76
  errors?: SvtaError[];
88
77
  currentTime?: number;
89
78
  /**
90
- * The player element's rendered pixel dimensions, or `undefined` where there
91
- * is nothing to measure. Written by `trackPlayerResolution`, read by the
92
- * `playerResolutionCap` selection rule — which treats `undefined` as
93
- * "don't cap".
79
+ * The player element's rendered pixel dimensions, or `undefined` where there is nothing to measure. Written by
80
+ * `trackPlayerResolution`, read by the `playerResolutionCap` selection rule — which treats `undefined` as "don't
81
+ * cap".
94
82
  */
95
83
  playerResolution?: PlayerResolution;
96
84
  loadActivated?: boolean;
97
85
  /**
98
- * One-shot command: start the current source at this position
99
- * (presentation-timeline seconds). Written by consumers or by
100
- * `setupAirPlay`'s session-end snapshot; consumed (cleared) by
101
- * `applyStartPosition` once the element seeks. See
86
+ * One-shot command: start the current source at this position (presentation-timeline seconds). Written by consumers
87
+ * or by `setupAirPlay`'s session-end snapshot; consumed (cleared) by `applyStartPosition` once the element seeks. See
102
88
  * `behaviors/dom/apply-start-position.ts`.
103
89
  */
104
90
  startPosition?: number;
105
91
  /**
106
- * Intent-level loading policy: initiate no new loading work while `true`.
107
- * Written by `setupAirPlay` (the only behavior declaring the key) while a
108
- * remote-playback session owns presentation; observed by the
109
- * `loadXSegments` dispatchers (park in `'dormant'`) and by
110
- * `setupMediaSource` (a pending rebuild waits). See
92
+ * Intent-level loading policy: initiate no new loading work while `true`. Written by `setupAirPlay` (the only
93
+ * behavior declaring the key) while a remote-playback session owns presentation; observed by the `loadXSegments`
94
+ * dispatchers (park in `'dormant'`) and by `setupMediaSource` (a pending rebuild waits). See
111
95
  * `SegmentLoadingState['loadingSuspended']`.
112
96
  */
113
97
  loadingSuspended?: boolean;
114
98
  /**
115
- * Author intent for the AirPlay/remote-playback picker, written by the media
116
- * adapter's `disableRemotePlayback` IDL property. `true` is an explicit
117
- * opt-out: `setupAirPlay` reads it at attach and sets nothing up, leaving the
118
- * element's remote playback disabled. Distinct from the underlying
119
- * `<video>.disableRemotePlayback`, which stays programmatically managed
120
- * (ManagedMediaSource / AirPlay).
99
+ * Author intent for the AirPlay/remote-playback picker, written by the media adapter's `disableRemotePlayback` IDL
100
+ * property. `true` is an explicit opt-out: `setupAirPlay` reads it at attach and sets nothing up, leaving the
101
+ * element's remote playback disabled. Distinct from the underlying `<video>.disableRemotePlayback`, which stays
102
+ * programmatically managed (ManagedMediaSource / AirPlay).
121
103
  */
122
104
  disableRemotePlayback?: boolean;
123
105
  }
@@ -137,10 +119,8 @@ interface HlsVideoEngineContext {
137
119
  textTrackSegmentLoaderActor?: TextTrackSegmentLoaderActor;
138
120
  }
139
121
  /**
140
- * The composition signal refs handed to `onSignalsReady` callers — the
141
- * canonical way to drive the engine externally (writes) or observe its
142
- * state (reads) without touching `composition.state` / `composition.context`
143
- * directly.
122
+ * The composition signal refs handed to `onSignalsReady` callers — the canonical way to drive the engine externally
123
+ * (writes) or observe its state (reads) without touching `composition.state` / `composition.context` directly.
144
124
  */
145
125
  type HlsVideoEngineSignals = {
146
126
  state: StateSignals<HlsVideoEngineState>;
@@ -149,29 +129,34 @@ type HlsVideoEngineSignals = {
149
129
  /**
150
130
  * Configuration for the HLS playback engine.
151
131
  *
152
- * Each option is consumed by the appropriate behavior — the engine itself
153
- * has no config beyond what its behaviors read.
132
+ * Each option is consumed by the appropriate behavior — the engine itself has no config beyond what its behaviors read.
154
133
  */
155
134
  interface HlsVideoEngineConfig extends ShareSignalsConfig<HlsVideoEngineState, HlsVideoEngineContext> {
156
135
  /**
157
- * Bandwidth estimate in bps to use before enough samples have been
158
- * collected. Default: `DEFAULT_INITIAL_BANDWIDTH` (5 Mbps).
136
+ * Bandwidth estimate in bps to use before enough samples have been collected. Default: `DEFAULT_INITIAL_BANDWIDTH` (5
137
+ * Mbps).
159
138
  */
160
139
  initialBandwidth?: number;
161
140
  /**
162
- * Codec capability probe injected into `track-switching`'s
163
- * `excludeUnplayableTracks` constraint drops renditions the environment
164
- * can't decode before selection. Defaults to the `MediaSource.isTypeSupported`
165
- * -backed `canPlayTrack`; supply your own to override (e.g. force-exclude a
166
- * codec).
141
+ * Codec capability probe injected into `track-switching`'s `excludeUnplayableTracks` constraint — drops renditions
142
+ * the environment can't decode before selection. Defaults to the `MediaSource.isTypeSupported` -backed
143
+ * `canPlayTrack`; supply your own to override (e.g. force-exclude a codec).
167
144
  */
168
145
  canPlayTrack?: CanPlayTrack;
169
146
  /**
170
- * Conditions reported about each rendition as it resolves the *causes* behind
171
- * a later verdict, and the copy a verdict reuses when they agree. Defaults to
172
- * {@link reportUnsupportedTrackConditions}, which reports non-fMP4 containers
173
- * and encryption; supply your own to report a different set (a provider that
174
- * never ships MPEG-TS can drop that check) or `() => []` to report nothing.
147
+ * Codec families (RFC 6381 4CCs, e.g. `'avc1'` / `'hvc1'` / `'mp4a'`) the initial video/audio picks prefer on a
148
+ * mixed-codec source, read by the `preferCodecFamilies` selection scope. SPF implements no
149
+ * `SourceBuffer.changeType()`, so the initial pick's codec family is sticky for the source's lifetime
150
+ * (`stickToSelectedCodecs`); this decides which family that is. Soft a source with no preferred-family rendition is
151
+ * unaffected. Defaults to `DEFAULT_PREFERRED_CODECS` (AVC + AAC, the broadest-decode pair); pass `[]` to disable and
152
+ * let ABR pick the initial family (it then still can't leave it mid-stream).
153
+ */
154
+ preferredCodecs?: string[];
155
+ /**
156
+ * Conditions reported about each rendition as it resolves — the _causes_ behind a later verdict, and the copy a
157
+ * verdict reuses when they agree. Defaults to {@link reportUnsupportedTrackConditions}, which reports non-fMP4
158
+ * containers and encryption; supply your own to report a different set (a provider that never ships MPEG-TS can drop
159
+ * that check) or `() => []` to report nothing.
175
160
  */
176
161
  reportUnsupportedTrackConditions?: ReportUnsupportedTrackConditions;
177
162
  preferredAudioLanguage?: string;
@@ -179,149 +164,124 @@ interface HlsVideoEngineConfig extends ShareSignalsConfig<HlsVideoEngineState, H
179
164
  includeForcedTracks?: boolean;
180
165
  enableDefaultTrack?: boolean;
181
166
  /**
182
- * Resolver that turns a text-track segment fetch into VTT cues.
183
- * Defaults to the DOM-bound `resolveVttSegment` resolver, which uses an
184
- * offscreen `<track>` element to parse WebVTT.
167
+ * Resolver that turns a text-track segment fetch into VTT cues. Defaults to the DOM-bound `resolveVttSegment`
168
+ * resolver, which uses an offscreen `<track>` element to parse WebVTT.
185
169
  */
186
170
  resolveTextTrackSegment?: TextTrackSegmentResolver<VTTCue>;
187
171
  /**
188
- * Resolver for `presentation.duration`. Defaults to picking the first
189
- * resolved selected track's duration (video preferred, audio fallback)
190
- * appropriate for VoD and audio-only. Live engines should supply a
191
- * resolver that returns `Number.POSITIVE_INFINITY` once the presentation
192
- * is established as live; downstream `updateMediaSourceDuration` propagates
193
- * that value to `mediaSource.duration` per the MSE spec.
172
+ * Resolver for `presentation.duration`. Defaults to picking the first resolved selected track's duration (video
173
+ * preferred, audio fallback) appropriate for VoD and audio-only. Live engines should supply a resolver that returns
174
+ * `Number.POSITIVE_INFINITY` once the presentation is established as live; downstream `updateMediaSourceDuration`
175
+ * propagates that value to `mediaSource.duration` per the MSE spec.
194
176
  */
195
177
  resolveDuration?: PresentationDurationResolver;
196
178
  /**
197
- * Manifest parser handed to `resolvePresentation`. Defaults to the HLS
198
- * multivariant-playlist parser; supply your own for alternate format
199
- * support without forking the engine.
179
+ * Manifest parser handed to `resolvePresentation`. Defaults to the HLS multivariant-playlist parser; supply your own
180
+ * for alternate format support without forking the engine.
200
181
  */
201
182
  parsePresentation?: ParsePresentation;
202
183
  /**
203
- * Allocate SPF-owned text-track slots on the media element. Defaults to
204
- * the standard `<track>`-element implementation in
205
- * `media/dom/text/text-track-slots`.
184
+ * Allocate SPF-owned text-track slots on the media element. Defaults to the standard `<track>`-element implementation
185
+ * in `media/dom/text/text-track-slots`.
206
186
  */
207
187
  addSubtitlesTracksToMedia?: typeof addSubtitlesTracksToMedia;
208
188
  /**
209
- * Return the SPF-owned subtitle/caption `TextTrack` currently in showing
210
- * mode. Defaults to the standard selector-based implementation in
211
- * `media/dom/text/text-track-slots`.
189
+ * Return the SPF-owned subtitle/caption `TextTrack` currently in showing mode. Defaults to the standard
190
+ * selector-based implementation in `media/dom/text/text-track-slots`.
212
191
  */
213
192
  getShowingSubtitlesTrackFromMedia?: typeof getShowingSubtitlesTrackFromMedia;
214
193
  /**
215
- * Evict all SPF-owned text-track slots from the media element. Defaults to
216
- * the standard selector-based implementation in
217
- * `media/dom/text/text-track-slots`.
194
+ * Evict all SPF-owned text-track slots from the media element. Defaults to the standard selector-based implementation
195
+ * in `media/dom/text/text-track-slots`.
218
196
  */
219
197
  removeAllSubtitlesTracksFromMedia?: typeof removeAllSubtitlesTracksFromMedia;
220
198
  /**
221
- * Forward-buffer tuning. `bufferDuration` controls how far ahead of the
222
- * playhead segments are loaded (and where forward-flush kicks in).
223
- * Defaults: see `DEFAULT_FORWARD_BUFFER_CONFIG` (30 seconds). Threaded to
224
- * segment-loader actors (v/a + text) at construction time and to
225
- * `loadXSegments` dispatchers for the load-message range.
199
+ * Forward-buffer tuning. `bufferDuration` controls how far ahead of the playhead segments are loaded (and where
200
+ * forward-flush kicks in). Defaults: see `DEFAULT_FORWARD_BUFFER_CONFIG` (30 seconds). Threaded to segment-loader
201
+ * actors (v/a + text) at construction time and to `loadXSegments` dispatchers for the load-message range.
226
202
  */
227
203
  forwardBuffer?: Partial<ForwardBufferConfig>;
228
204
  /**
229
- * Back-buffer tuning. `keepSegments` controls how many segments stay
230
- * behind the playhead before eviction. Defaults: see
231
- * `DEFAULT_BACK_BUFFER_CONFIG` (2 segments). Threaded to the v/a
232
- * segment-loader actor only (text tracks don't use back-buffer eviction).
205
+ * Back-buffer tuning. `keepSegments` controls how many segments stay behind the playhead before eviction. Defaults:
206
+ * see `DEFAULT_BACK_BUFFER_CONFIG` (2 segments). Threaded to the v/a segment-loader actor only (text tracks don't use
207
+ * back-buffer eviction).
233
208
  */
234
209
  backBuffer?: Partial<BackBufferConfig>;
235
210
  /**
236
- * Bandwidth-estimator tuning. Overrides any field of `BandwidthConfig`
237
- * (`fastHalfLife`, `slowHalfLife`, `minTotalBytes`, `minBytes`,
238
- * `minDuration`). `bandwidth.minTotalBytes` supersedes the flat
239
- * `minTotalBytes` field above. Defaults: see `DEFAULT_BANDWIDTH_CONFIG`.
211
+ * Bandwidth-estimator tuning. Overrides any field of `BandwidthConfig` (`fastHalfLife`, `slowHalfLife`,
212
+ * `minTotalBytes`, `minBytes`, `minDuration`). `bandwidth.minTotalBytes` supersedes the flat `minTotalBytes` field
213
+ * above. Defaults: see `DEFAULT_BANDWIDTH_CONFIG`.
240
214
  */
241
215
  bandwidth?: Partial<BandwidthConfig>;
242
216
  /**
243
- * Quality-selection tuning. `safetyMargin` is the bandwidth-headroom
244
- * multiplier used by `selectQuality`; `upgradeMargin` is the hysteresis
245
- * ratio gating ABR upgrades. Defaults: `DEFAULT_QUALITY_CONFIG` (0.85 / 1.15).
217
+ * Quality-selection tuning. `safetyMargin` is the bandwidth-headroom multiplier used by `selectQuality`;
218
+ * `upgradeMargin` is the hysteresis ratio gating ABR upgrades. Defaults: `DEFAULT_QUALITY_CONFIG` (0.85 / 1.15).
246
219
  */
247
220
  quality?: Partial<QualityConfig>;
248
221
  /**
249
- * Whether video renditions are capped to the player element's rendered size.
250
- * Read by `trackPlayerResolution`; `false` measures nothing, which leaves the
251
- * `playerResolutionCap` rule inert. Defaults to `true`.
222
+ * Whether video renditions are capped to the player element's rendered size. Read by `trackPlayerResolution`; `false`
223
+ * measures nothing, which leaves the `playerResolutionCap` rule inert. Defaults to `true`.
252
224
  */
253
225
  capRenditionToPlayerSize?: boolean;
254
- /**
255
- * Whether `state.playerResolution` is reported in device pixels. Read by
256
- * `trackPlayerResolution`; defaults to `true`.
257
- */
226
+ /** Whether `state.playerResolution` is reported in device pixels. Read by `trackPlayerResolution`; defaults to `true`. */
258
227
  useDevicePixelRatio?: boolean;
259
228
  /**
260
- * Multi-CDN failover monitor tuning. `cooldownMs` is how long a CDN stays
261
- * excluded after a failed fetch trips it. Defaults:
262
- * `DEFAULT_FAILOVER_MONITOR_CONFIG` (300s). Only meaningful for redundant-stream
263
- * sources.
229
+ * Multi-CDN failover monitor tuning. `cooldownMs` is how long a CDN stays excluded after a failed fetch trips it.
230
+ * Defaults: `DEFAULT_FAILOVER_MONITOR_CONFIG` (300s). Only meaningful for redundant-stream sources.
264
231
  */
265
232
  failover?: Partial<FailoverMonitorConfig>;
266
233
  /**
267
- * How to derive a CDN grouping key from a track URL — used to build
268
- * `cdnPriority`, to record the failover trip in `failedCdns`, and by the
269
- * track-switching CDN scope + failover constraint. One function, read by all of
270
- * them, so the keys stay comparable. Defaults to the URL origin; override to
271
- * key on something else (e.g. Mux's `cdn=` query param).
234
+ * How to derive a CDN grouping key from a track URL — used to build `cdnPriority`, to record the failover trip in
235
+ * `failedCdns`, and by the track-switching CDN scope + failover constraint. One function, read by all of them, so the
236
+ * keys stay comparable. Defaults to the URL origin; override to key on something else (e.g. Mux's `cdn=` query
237
+ * param).
272
238
  */
273
239
  getCdnId?: GetCdnId;
274
240
  /**
275
- * Non-zero-PTS relocation (spike): the reduce seam consumed by the
276
- * `establishStartMediaTime` reactor. Defaults to per-track own origin (Tier 1);
277
- * a Tier-2 variant returns the shared `min` across selected A/V. Relocation is
278
- * composed into the standard engine below — see the marked block — so this only
279
- * needs setting to swap the tier policy. See
280
- * `internal/design/spf/presentation-timeline-model.md`.
241
+ * Non-zero-PTS relocation (spike): the reduce seam consumed by the `establishStartMediaTime` reactor. Defaults to
242
+ * per-track own origin (Tier 1); a Tier-2 variant returns the shared `min` across selected A/V. Relocation is
243
+ * composed into the standard engine below — see the marked block so this only needs setting to swap the tier
244
+ * policy. See `internal/design/spf/presentation-timeline-model.md`.
281
245
  */
282
246
  deriveStartMediaTime?: DeriveStartMediaTime;
283
247
  /**
284
- * Proximity window (seconds) for the `recoverEndStall` behavior — how close the
285
- * playhead must be to the reachable buffered end for a `waiting` to be treated as the
286
- * end-of-stream freeze and nudged to `ended`. Defaults to `0.2`. See
287
- * `behaviors/dom/recover-end-stall`.
248
+ * Proximity window (seconds) for the `recoverEndStall` behavior — how close the playhead must be to the reachable
249
+ * buffered end for a `waiting` to be treated as the end-of-stream freeze and nudged to `ended`. Defaults to `0.2`.
250
+ * See `behaviors/dom/recover-end-stall`.
288
251
  */
289
252
  endStallNudgeWindow?: number;
290
253
  /**
291
- * Live media-playlist re-run policy for the resolve* loaders' `RecurringRunner`:
292
- * returns a promise that resolves when the playlist should reload, or `null` to
293
- * stop. Defaults to `mediaPlaylistReloadDelay` (target-duration cadence, half on
294
- * an unchanged window, stop on `#EXT-X-ENDLIST`) composed with a cancellable
295
- * `sleep`. Inert for VoD (a complete playlist stops it after the first resolve).
296
- * Override to tune live reload timing.
254
+ * Live media-playlist re-run policy for the resolve* loaders' `RecurringRunner`: returns a promise that resolves when
255
+ * the playlist should reload, or `null` to stop. Defaults to `mediaPlaylistReloadDelay` (target-duration cadence,
256
+ * half on an unchanged window, stop on `#EXT-X-ENDLIST`) composed with a cancellable `sleep`. Inert for VoD (a
257
+ * complete playlist stops it after the first resolve). Override to tune live reload timing.
297
258
  */
298
259
  reschedule?: Reschedule<ResolvedTrack>;
299
260
  }
300
261
  /**
301
262
  * Create an HLS playback engine.
302
263
  *
303
- * Composes SPF behaviors into a reactive pipeline for HLS playback over MSE:
304
- * manifest resolution, track selection, ABR, segment loading, and
305
- * end-of-stream coordination.
264
+ * Composes SPF behaviors into a reactive pipeline for HLS playback over MSE: manifest resolution, track selection, ABR,
265
+ * segment loading, and end-of-stream coordination.
306
266
  *
307
267
  * @example
308
- * ```ts
309
- * let signals: HlsVideoEngineSignals;
310
- * const engine = createHlsVideoEngine({
311
- * initialBandwidth: 2_000_000,
312
- * preferredAudioLanguage: 'en',
313
- * onSignalsReady: (refs) => {
314
- * signals = refs;
315
- * },
316
- * });
268
+ * ```ts
269
+ * let signals: HlsVideoEngineSignals;
270
+ * const engine = createHlsVideoEngine({
271
+ * initialBandwidth: 2_000_000,
272
+ * preferredAudioLanguage: 'en',
273
+ * onSignalsReady: (refs) => {
274
+ * signals = refs;
275
+ * },
276
+ * });
317
277
  *
318
- * signals.context.mediaElement.set(videoEl);
319
- * signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
278
+ * signals.context.mediaElement.set(videoEl);
279
+ * signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
320
280
  *
321
- * videoEl.play();
281
+ * videoEl.play();
322
282
  *
323
- * await engine.destroy();
324
- * ```
283
+ * await engine.destroy();
284
+ * ```;
325
285
  */
326
286
  declare function createHlsVideoEngine(config?: HlsVideoEngineConfig): Composition<HlsVideoEngineState, HlsVideoEngineContext>;
327
287
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","names":[],"sources":["../../../../../src/playback/engines/hls/engine.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6FiB;;;;;EAKf,eAAe;EACf;EACA;EACA;EACA;EACA,iBAAiB;EAGjB,qBAAqB,eAAe;EACpC,0BAA0B,QAAQ;;;;;;;EAOlC,0BAA0B,QAAQ;;;;;;;;;EASlC,yBAAyB,QAAQ;;;;;;;;;;EAUjC;;;;;;;;EAQA;;;;;;;;EAQA,SAAS;EACT;;;;;;;EAOA,mBAAmB;EACnB;;;;;;;;EAQA;;;;;;;;;EASA;;;;;;;;;EASA;;;;;;;UAQe;EACf,eAAe;EACf,cAAc;EACd,mBAAmB;EACnB,mBAAmB;EACnB,0BAA0B;EAC1B,0BAA0B;EAC1B,kBAAkB;EAClB,8BAA8B;;;;;;;;KASpB;EACV,OAAO,aAAa;EACpB,SAAS,eAAe;;;;;;;;UAST,6BAA6B,mBAAmB,qBAAqB;;;;;EAKpF;;;;;;;;EAQA,eAAe;;;;;;;;EAQf,mCAAmC;EACnC;EACA;EACA;EACA;;;;;;EAMA,0BAA0B,yBAAyB;;;;;;;;;EASnD,kBAAkB;;;;;;EAMlB,oBAAoB;;;;;;EAMpB,mCAAmC;;;;;;EAMnC,2CAA2C;;;;;;EAM3C,2CAA2C;;;;;;;;EAQ3C,gBAAgB,QAAQ;;;;;;;EAOxB,aAAa,QAAQ;;;;;;;EAOrB,YAAY,QAAQ;;;;;;EAMpB,UAAU,QAAQ;;;;;;EAMlB;;;;;EAKA;;;;;;;EAOA,WAAW,QAAQ;;;;;;;;EAQnB,WAAW;;;;;;;;;EASX,uBAAuB;;;;;;;EAOvB;;;;;;;;;EASA,aAAa,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiDV,qBACd,SAAQ,uBACP,YAAY,qBAAqB"}
1
+ {"version":3,"file":"engine.d.ts","names":[],"sources":["../../../../../src/playback/engines/hls/engine.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4FiB;;;;;EAKf,eAAe;EACf;EACA;EACA;EACA;EACA,iBAAiB;EAGjB,qBAAqB,eAAe;EACpC,0BAA0B,QAAQ;;;;;;EAMlC,0BAA0B,QAAQ;;;;;;;EAOlC,yBAAyB,QAAQ;;;;;;;EAOjC;;;;;;EAMA;;;;;;EAMA,SAAS;EACT;;;;;;EAMA,mBAAmB;EACnB;;;;;;EAMA;;;;;;;EAOA;;;;;;;EAOA;;;;;;;UAQe;EACf,eAAe;EACf,cAAc;EACd,mBAAmB;EACnB,mBAAmB;EACnB,0BAA0B;EAC1B,0BAA0B;EAC1B,kBAAkB;EAClB,8BAA8B;;;;;;KAOpB;EACV,OAAO,aAAa;EACpB,SAAS,eAAe;;;;;;;UAQT,6BAA6B,mBAAmB,qBAAqB;;;;;EAKpF;;;;;;EAMA,eAAe;;;;;;;;;EASf;;;;;;;EAOA,mCAAmC;EACnC;EACA;EACA;EACA;;;;;EAKA,0BAA0B,yBAAyB;;;;;;;EAOnD,kBAAkB;;;;;EAKlB,oBAAoB;;;;;EAKpB,mCAAmC;;;;;EAKnC,2CAA2C;;;;;EAK3C,2CAA2C;;;;;;EAM3C,gBAAgB,QAAQ;;;;;;EAMxB,aAAa,QAAQ;;;;;;EAMrB,YAAY,QAAQ;;;;;EAKpB,UAAU,QAAQ;;;;;EAKlB;;EAEA;;;;;EAKA,WAAW,QAAQ;;;;;;;EAOnB,WAAW;;;;;;;EAOX,uBAAuB;;;;;;EAMvB;;;;;;;EAOA,aAAa,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CV,qBACd,SAAQ,uBACP,YAAY,qBAAqB"}
@@ -6,6 +6,8 @@ import { setupTextTrackActors } from "../../behaviors/dom/setup-text-track-actor
6
6
  import { trackCurrentTime } from "../../behaviors/dom/track-current-time.js";
7
7
  import { trackLoadTriggers } from "../../behaviors/dom/track-load-triggers.js";
8
8
  import { deriveSharedMinStartMediaTime, establishStartMediaTime, gateFirstParseOnAnchor } from "../../behaviors/establish-start-media-time.js";
9
+ import { collectErrors } from "../../behaviors/collect-errors.js";
10
+ import { switchAudioTrack, switchTextTrack, switchVideoTrack } from "../../behaviors/track-switching.js";
9
11
  import { delayedReschedule } from "../../../core/tasks/delayed-reschedule.js";
10
12
  import { attachMediaSourceAsSourceElement } from "../../../media/dom/mse/mediasource-setup.js";
11
13
  import { canPlayTrack } from "../../../media/dom/capabilities.js";
@@ -14,7 +16,6 @@ import { parseMultivariantPlaylist } from "../../../media/hls/parse-multivariant
14
16
  import { mediaPlaylistReloadDelay, resolveLiveLatency } from "../../../media/hls/reload-policy.js";
15
17
  import { getResolvedSelectedTrackDuration } from "../../../media/utils/track-selection.js";
16
18
  import { calculatePresentationDuration } from "../../behaviors/calculate-presentation-duration.js";
17
- import { collectErrors } from "../../behaviors/collect-errors.js";
18
19
  import { deriveCdnPriority } from "../../behaviors/derive-cdn-priority.js";
19
20
  import { setupAirPlay } from "../../behaviors/dom/airplay.js";
20
21
  import { applyStartPosition } from "../../behaviors/dom/apply-start-position.js";
@@ -31,17 +32,14 @@ import { resolvePresentation } from "../../behaviors/resolve-presentation.js";
31
32
  import { resolveAudioTrack, resolveTextTrack, resolveVideoTrack } from "../../behaviors/resolve-track.js";
32
33
  import { setupFailoverMonitor } from "../../behaviors/setup-failover-monitor.js";
33
34
  import { syncPreload } from "../../behaviors/sync-preload.js";
34
- import { switchAudioTrack, switchTextTrack, switchVideoTrack } from "../../behaviors/track-switching.js";
35
35
  import { relocatingTextPipelines, relocationPipelinesFor } from "../../primitives/relocation-pipelines.js";
36
36
  import { reportUnsupportedTrackConditions } from "../../primitives/report-track-conditions.js";
37
37
  //#region src/playback/engines/hls/engine.ts
38
38
  /**
39
- * Generic `shareSignals` instantiated against the HLS engine's full state
40
- * and context captures composition signal refs into the consumer's
41
- * `onSignalsReady` callback at setup time, and materializes input slots that no
42
- * composed behavior produces: `user*TrackSelection` (track-switching only reads
43
- * them). `failedCdns` is owned by `setupFailoverMonitor`, so it's already
44
- * materialized and reachable on the `onSignalsReady` refs without being listed
39
+ * Generic `shareSignals` instantiated against the HLS engine's full state and context — captures composition signal
40
+ * refs into the consumer's `onSignalsReady` callback at setup time, and materializes input slots that no composed
41
+ * behavior produces: `user*TrackSelection` (track-switching only reads them). `failedCdns` is owned by
42
+ * `setupFailoverMonitor`, so it's already materialized and reachable on the `onSignalsReady` refs without being listed
45
43
  * here.
46
44
  */
47
45
  const shareSignals = makeShareSignals([
@@ -53,28 +51,27 @@ const shareSignals = makeShareSignals([
53
51
  /**
54
52
  * Create an HLS playback engine.
55
53
  *
56
- * Composes SPF behaviors into a reactive pipeline for HLS playback over MSE:
57
- * manifest resolution, track selection, ABR, segment loading, and
58
- * end-of-stream coordination.
54
+ * Composes SPF behaviors into a reactive pipeline for HLS playback over MSE: manifest resolution, track selection, ABR,
55
+ * segment loading, and end-of-stream coordination.
59
56
  *
60
57
  * @example
61
- * ```ts
62
- * let signals: HlsVideoEngineSignals;
63
- * const engine = createHlsVideoEngine({
64
- * initialBandwidth: 2_000_000,
65
- * preferredAudioLanguage: 'en',
66
- * onSignalsReady: (refs) => {
67
- * signals = refs;
68
- * },
69
- * });
58
+ * ```ts
59
+ * let signals: HlsVideoEngineSignals;
60
+ * const engine = createHlsVideoEngine({
61
+ * initialBandwidth: 2_000_000,
62
+ * preferredAudioLanguage: 'en',
63
+ * onSignalsReady: (refs) => {
64
+ * signals = refs;
65
+ * },
66
+ * });
70
67
  *
71
- * signals.context.mediaElement.set(videoEl);
72
- * signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
68
+ * signals.context.mediaElement.set(videoEl);
69
+ * signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
73
70
  *
74
- * videoEl.play();
71
+ * videoEl.play();
75
72
  *
76
- * await engine.destroy();
77
- * ```
73
+ * await engine.destroy();
74
+ * ```;
78
75
  */
79
76
  function createHlsVideoEngine(config = {}) {
80
77
  const deriveStartMediaTime = config.deriveStartMediaTime ?? deriveSharedMinStartMediaTime;