@amazon/vinyl 1.2.0 → 2.0.4

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 (653) hide show
  1. package/dist/index.cjs +9225 -6633
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.js +9080 -6435
  4. package/dist/index.js.map +4 -4
  5. package/dist/test/benchmark.es5.js +266 -253
  6. package/dist/test/benchmark.js +3256 -3190
  7. package/dist/test/benchmark.js.map +4 -4
  8. package/dist/test/integ.es5.js +1404 -1093
  9. package/dist/test/integ.js +45924 -33873
  10. package/dist/test/integ.js.map +4 -4
  11. package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
  12. package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
  13. package/dist/types/current/ad/AdController.d.ts +229 -0
  14. package/dist/types/current/ad/AdController.d.ts.map +1 -0
  15. package/dist/types/current/ad/AdController.js +19 -0
  16. package/dist/types/current/ad/AdControllerImpl.d.ts +146 -0
  17. package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
  18. package/dist/types/current/ad/AdControllerImpl.js +705 -0
  19. package/dist/types/current/ad/AdError.d.ts +6 -0
  20. package/dist/types/current/ad/AdError.d.ts.map +1 -0
  21. package/dist/types/current/ad/AdError.js +14 -0
  22. package/dist/types/current/ad/AdsProvider.d.ts +28 -0
  23. package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
  24. package/dist/types/current/ad/AdsProvider.js +5 -0
  25. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  26. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
  27. package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
  28. package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
  29. package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
  30. package/dist/types/current/ad/discoverHlsInterstitials.js +246 -0
  31. package/dist/types/current/drm/DrmController.d.ts +29 -4
  32. package/dist/types/current/drm/DrmController.d.ts.map +1 -1
  33. package/dist/types/current/drm/DrmControllerImpl.d.ts +13 -4
  34. package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
  35. package/dist/types/current/drm/DrmControllerImpl.js +85 -14
  36. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  37. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts.map +1 -1
  38. package/dist/types/current/drm/util/unpackPlayReadyChallenge.js +5 -0
  39. package/dist/types/current/index.d.ts +151 -126
  40. package/dist/types/current/index.d.ts.map +1 -1
  41. package/dist/types/current/index.js +151 -126
  42. package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -0
  43. package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
  44. package/dist/types/current/playback/PlaybackControllerImpl.js +44 -5
  45. package/dist/types/current/playback/PlaybackSource.d.ts +1 -1
  46. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts +6 -1
  47. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
  48. package/dist/types/current/playback/ReadonlyPlaybackController.js +1 -0
  49. package/dist/types/current/streaming/ContentStream.d.ts +8 -1
  50. package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
  51. package/dist/types/current/streaming/ContentStream.js +19 -2
  52. package/dist/types/current/streaming/LoadMetric.d.ts +58 -0
  53. package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
  54. package/dist/types/current/streaming/LoadMetric.js +5 -0
  55. package/dist/types/current/streaming/ManifestController.d.ts +16 -1
  56. package/dist/types/current/streaming/ManifestController.d.ts.map +1 -1
  57. package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
  58. package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
  59. package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
  60. package/dist/types/current/streaming/MediaQualityMetadata.d.ts +16 -0
  61. package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
  62. package/dist/types/current/streaming/MediaQualityMetadata.js +6 -0
  63. package/dist/types/current/streaming/MediaTimeline.d.ts +6 -0
  64. package/dist/types/current/streaming/MediaTimeline.d.ts.map +1 -1
  65. package/dist/types/current/streaming/SegmentController.d.ts +5 -0
  66. package/dist/types/current/streaming/SegmentController.d.ts.map +1 -1
  67. package/dist/types/current/streaming/SegmentControllerImpl.d.ts +12 -0
  68. package/dist/types/current/streaming/SegmentControllerImpl.d.ts.map +1 -1
  69. package/dist/types/current/streaming/SegmentControllerImpl.js +67 -10
  70. package/dist/types/current/streaming/StreamingEventMap.d.ts +38 -1
  71. package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
  72. package/dist/types/current/streaming/StreamingEventMap.js +4 -0
  73. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  74. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts.map +1 -1
  75. package/dist/types/current/streaming/abr/QualitySelectorImpl.js +39 -4
  76. package/dist/types/current/streaming/buffering/BufferingController.d.ts +37 -0
  77. package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
  78. package/dist/types/current/streaming/buffering/BufferingController.js +79 -3
  79. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts +16 -11
  80. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
  81. package/dist/types/current/streaming/buffering/MediaSourceController.js +76 -51
  82. package/dist/types/current/streaming/buffering/SourceBufferController.d.ts.map +1 -1
  83. package/dist/types/current/streaming/buffering/SourceBufferController.js +5 -2
  84. package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
  85. package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
  86. package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
  87. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
  88. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
  89. package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
  90. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  91. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
  92. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +32 -1
  93. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  94. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
  95. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
  96. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  97. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts.map +1 -1
  98. package/dist/types/current/streaming/mediaTimelineLanguageFilter.js +61 -16
  99. package/dist/types/current/text/SidecarTextTrackController.d.ts +91 -0
  100. package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
  101. package/dist/types/current/text/SidecarTextTrackController.js +237 -0
  102. package/dist/types/current/text/SidecarTextTrackLoader.d.ts +60 -0
  103. package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
  104. package/dist/types/current/text/SidecarTextTrackLoader.js +144 -0
  105. package/dist/types/current/text/TextTrack.d.ts +125 -0
  106. package/dist/types/current/text/TextTrack.d.ts.map +1 -0
  107. package/dist/types/current/text/TextTrack.js +9 -0
  108. package/dist/types/current/text/VttCueStyle.d.ts +41 -0
  109. package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
  110. package/dist/types/current/text/VttCueStyle.js +45 -0
  111. package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
  112. package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
  113. package/dist/types/current/text/discoverDashTextTracks.js +109 -0
  114. package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
  115. package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
  116. package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
  117. package/dist/types/current/text/parseWebVtt.d.ts +46 -0
  118. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
  119. package/dist/types/current/text/parseWebVtt.js +120 -0
  120. package/dist/types/current/text/pickPreferredTextTrack.d.ts +14 -0
  121. package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
  122. package/dist/types/current/text/pickPreferredTextTrack.js +68 -0
  123. package/dist/types/current/track/SeekRange.d.ts +9 -0
  124. package/dist/types/current/track/SeekRange.d.ts.map +1 -0
  125. package/dist/types/current/track/SeekRange.js +5 -0
  126. package/dist/types/current/track/Track.d.ts +50 -7
  127. package/dist/types/current/track/Track.d.ts.map +1 -1
  128. package/dist/types/current/track/TrackBase.d.ts +30 -29
  129. package/dist/types/current/track/TrackBase.d.ts.map +1 -1
  130. package/dist/types/current/track/TrackBase.js +68 -16
  131. package/dist/types/current/track/TrackController.d.ts +100 -36
  132. package/dist/types/current/track/TrackController.d.ts.map +1 -1
  133. package/dist/types/current/track/TrackController.js +368 -115
  134. package/dist/types/current/track/TrackFactory.d.ts +23 -3
  135. package/dist/types/current/track/TrackFactory.d.ts.map +1 -1
  136. package/dist/types/current/track/TrackFactory.js +9 -3
  137. package/dist/types/current/track/dash/DashManifestController.d.ts +1 -40
  138. package/dist/types/current/track/dash/DashManifestController.d.ts.map +1 -1
  139. package/dist/types/current/track/dash/DashManifestController.js +1 -79
  140. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
  141. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +13 -0
  142. package/dist/types/current/track/dash/DashTrack.d.ts +4 -5
  143. package/dist/types/current/track/dash/DashTrack.d.ts.map +1 -1
  144. package/dist/types/current/track/dash/DashTrack.js +3 -5
  145. package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts.map +1 -1
  146. package/dist/types/current/track/dash/buildDashMediaTimeline.js +3 -2
  147. package/dist/types/current/track/dash/createDashContentTypesValue.js +2 -2
  148. package/dist/types/current/track/dash/createDashFactories.d.ts +39 -12
  149. package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
  150. package/dist/types/current/track/dash/createDashFactories.js +33 -5
  151. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts +0 -5
  152. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts.map +1 -1
  153. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
  154. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +2 -1
  155. package/dist/types/current/track/dash/util/mpd.d.ts +10 -0
  156. package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
  157. package/dist/types/current/track/dash/util/mpd.js +16 -0
  158. package/dist/types/current/track/hls/HlsManifestController.d.ts +1 -25
  159. package/dist/types/current/track/hls/HlsManifestController.d.ts.map +1 -1
  160. package/dist/types/current/track/hls/HlsManifestController.js +1 -68
  161. package/dist/types/{ts3.7/track/hls/HlsManifestProvider.d.ts → current/track/hls/HlsManifestData.d.ts} +4 -6
  162. package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
  163. package/dist/types/current/track/hls/HlsManifestData.js +5 -0
  164. package/dist/types/current/track/hls/HlsMediaQualityMetadataResolver.js +9 -6
  165. package/dist/types/current/track/hls/HlsTrack.d.ts +5 -6
  166. package/dist/types/current/track/hls/HlsTrack.d.ts.map +1 -1
  167. package/dist/types/current/track/hls/HlsTrack.js +3 -5
  168. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  169. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
  170. package/dist/types/current/track/hls/buildHlsMediaTimeline.js +134 -67
  171. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  172. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts.map +1 -1
  173. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts +1 -1
  174. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts.map +1 -1
  175. package/dist/types/current/track/hls/createHlsFactories.d.ts +40 -13
  176. package/dist/types/current/track/hls/createHlsFactories.d.ts.map +1 -1
  177. package/dist/types/current/track/hls/createHlsFactories.js +35 -6
  178. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
  179. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
  180. package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
  181. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  182. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
  183. package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +22 -3
  184. package/dist/types/current/track/hls/index.d.ts +1 -1
  185. package/dist/types/current/track/hls/index.d.ts.map +1 -1
  186. package/dist/types/current/track/hls/index.js +1 -1
  187. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
  188. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
  189. package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
  190. package/dist/types/current/track/mse/MseTrack.d.ts +66 -8
  191. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  192. package/dist/types/current/track/mse/MseTrack.js +216 -52
  193. package/dist/types/current/track/source/SourceObjectTrack.d.ts +2 -2
  194. package/dist/types/current/track/source/SourceObjectTrack.d.ts.map +1 -1
  195. package/dist/types/current/track/source/SourceTrack.d.ts +2 -2
  196. package/dist/types/current/track/source/SourceTrack.d.ts.map +1 -1
  197. package/dist/types/current/track/source/SourceTrack.js +1 -2
  198. package/dist/types/current/track/source/SourceTrackBase.d.ts +7 -5
  199. package/dist/types/current/track/source/SourceTrackBase.d.ts.map +1 -1
  200. package/dist/types/current/track/source/SourceTrackBase.js +26 -9
  201. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  202. package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
  203. package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
  204. package/dist/types/current/util/media/codecOverrides.js +37 -0
  205. package/dist/types/current/util/media/codecSupport.d.ts +6 -0
  206. package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
  207. package/dist/types/current/util/media/codecSupport.js +17 -0
  208. package/dist/types/current/util/media/mediaSource.d.ts +5 -0
  209. package/dist/types/current/util/media/mediaSource.d.ts.map +1 -1
  210. package/dist/types/current/util/media/mediaSource.js +6 -1
  211. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  212. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts.map +1 -1
  213. package/dist/types/current/vinyl/VinylDeps.d.ts +5 -0
  214. package/dist/types/current/vinyl/VinylDeps.d.ts.map +1 -1
  215. package/dist/types/current/vinyl/VinylOptions.d.ts +68 -4
  216. package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
  217. package/dist/types/current/vinyl/VinylOptions.js +17 -2
  218. package/dist/types/current/vinyl/VinylPlayer.d.ts +63 -4
  219. package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
  220. package/dist/types/current/vinyl/VinylPlayer.js +216 -36
  221. package/dist/types/current/vinyl/createVinylFactories.d.ts +55 -12
  222. package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
  223. package/dist/types/current/vinyl/createVinylFactories.js +4 -0
  224. package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
  225. package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
  226. package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +146 -0
  227. package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
  228. package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
  229. package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  230. package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
  231. package/dist/types/ts3.7/drm/DrmController.d.ts +29 -4
  232. package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +13 -4
  233. package/dist/types/ts3.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  234. package/dist/types/ts3.7/index.d.ts +151 -126
  235. package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -0
  236. package/dist/types/ts3.7/playback/PlaybackSource.d.ts +1 -1
  237. package/dist/types/ts3.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  238. package/dist/types/ts3.7/streaming/ContentStream.d.ts +8 -1
  239. package/dist/types/ts3.7/streaming/LoadMetric.d.ts +58 -0
  240. package/dist/types/ts3.7/streaming/ManifestController.d.ts +16 -1
  241. package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
  242. package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +19 -0
  243. package/dist/types/ts3.7/streaming/MediaTimeline.d.ts +6 -0
  244. package/dist/types/ts3.7/streaming/SegmentController.d.ts +5 -0
  245. package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +12 -0
  246. package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +42 -1
  247. package/dist/types/ts3.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  248. package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +37 -0
  249. package/dist/types/ts3.7/streaming/buffering/MediaSourceController.d.ts +16 -11
  250. package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
  251. package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  252. package/dist/types/ts3.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  253. package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  254. package/dist/types/ts3.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  255. package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +91 -0
  256. package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +60 -0
  257. package/dist/types/ts3.7/text/TextTrack.d.ts +129 -0
  258. package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
  259. package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
  260. package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
  261. package/dist/types/ts3.7/text/parseWebVtt.d.ts +46 -0
  262. package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +14 -0
  263. package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
  264. package/dist/types/ts3.7/track/Track.d.ts +50 -7
  265. package/dist/types/ts3.7/track/TrackBase.d.ts +21 -29
  266. package/dist/types/ts3.7/track/TrackController.d.ts +102 -37
  267. package/dist/types/ts3.7/track/TrackFactory.d.ts +22 -2
  268. package/dist/types/ts3.7/track/dash/DashManifestController.d.ts +1 -36
  269. package/dist/types/ts3.7/track/dash/DashTrack.d.ts +4 -5
  270. package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +39 -12
  271. package/dist/types/ts3.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  272. package/dist/types/ts3.7/track/dash/util/mpd.d.ts +10 -0
  273. package/dist/types/ts3.7/track/hls/HlsManifestController.d.ts +1 -22
  274. package/dist/types/{current/track/hls/HlsManifestProvider.d.ts → ts3.7/track/hls/HlsManifestData.d.ts} +4 -6
  275. package/dist/types/ts3.7/track/hls/HlsTrack.d.ts +5 -6
  276. package/dist/types/ts3.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  277. package/dist/types/ts3.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  278. package/dist/types/ts3.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  279. package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +40 -13
  280. package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  281. package/dist/types/ts3.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  282. package/dist/types/ts3.7/track/hls/index.d.ts +1 -1
  283. package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  284. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +65 -7
  285. package/dist/types/ts3.7/track/source/SourceObjectTrack.d.ts +2 -2
  286. package/dist/types/ts3.7/track/source/SourceTrack.d.ts +2 -2
  287. package/dist/types/ts3.7/track/source/SourceTrackBase.d.ts +7 -5
  288. package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
  289. package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
  290. package/dist/types/ts3.7/util/media/mediaSource.d.ts +5 -0
  291. package/dist/types/ts3.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  292. package/dist/types/ts3.7/vinyl/VinylDeps.d.ts +5 -0
  293. package/dist/types/ts3.7/vinyl/VinylOptions.d.ts +68 -4
  294. package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +33 -4
  295. package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +55 -12
  296. package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
  297. package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
  298. package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +146 -0
  299. package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
  300. package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
  301. package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  302. package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
  303. package/dist/types/ts4.1/drm/DrmController.d.ts +29 -4
  304. package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +13 -4
  305. package/dist/types/ts4.1/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  306. package/dist/types/ts4.1/index.d.ts +151 -126
  307. package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -0
  308. package/dist/types/ts4.1/playback/PlaybackSource.d.ts +1 -1
  309. package/dist/types/ts4.1/playback/ReadonlyPlaybackController.d.ts +6 -0
  310. package/dist/types/ts4.1/streaming/ContentStream.d.ts +8 -1
  311. package/dist/types/ts4.1/streaming/LoadMetric.d.ts +58 -0
  312. package/dist/types/ts4.1/streaming/ManifestController.d.ts +16 -1
  313. package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
  314. package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +19 -0
  315. package/dist/types/ts4.1/streaming/MediaTimeline.d.ts +6 -0
  316. package/dist/types/ts4.1/streaming/SegmentController.d.ts +5 -0
  317. package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +12 -0
  318. package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +42 -1
  319. package/dist/types/ts4.1/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  320. package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +37 -0
  321. package/dist/types/ts4.1/streaming/buffering/MediaSourceController.d.ts +16 -11
  322. package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
  323. package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
  324. package/dist/types/ts4.1/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  325. package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  326. package/dist/types/ts4.1/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  327. package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +92 -0
  328. package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +60 -0
  329. package/dist/types/ts4.1/text/TextTrack.d.ts +129 -0
  330. package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
  331. package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
  332. package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
  333. package/dist/types/ts4.1/text/parseWebVtt.d.ts +46 -0
  334. package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +14 -0
  335. package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
  336. package/dist/types/ts4.1/track/Track.d.ts +50 -7
  337. package/dist/types/ts4.1/track/TrackBase.d.ts +21 -29
  338. package/dist/types/ts4.1/track/TrackController.d.ts +102 -37
  339. package/dist/types/ts4.1/track/TrackFactory.d.ts +22 -2
  340. package/dist/types/ts4.1/track/dash/DashManifestController.d.ts +1 -36
  341. package/dist/types/ts4.1/track/dash/DashTrack.d.ts +4 -5
  342. package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +39 -12
  343. package/dist/types/ts4.1/track/dash/createSegmentControllerFactory.d.ts +0 -5
  344. package/dist/types/ts4.1/track/dash/util/mpd.d.ts +10 -0
  345. package/dist/types/ts4.1/track/hls/HlsManifestController.d.ts +1 -22
  346. package/dist/types/ts4.1/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  347. package/dist/types/ts4.1/track/hls/HlsTrack.d.ts +5 -6
  348. package/dist/types/ts4.1/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  349. package/dist/types/ts4.1/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  350. package/dist/types/ts4.1/track/hls/createHlsContentTypesValue.d.ts +1 -1
  351. package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +41 -13
  352. package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
  353. package/dist/types/ts4.1/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  354. package/dist/types/ts4.1/track/hls/index.d.ts +1 -1
  355. package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
  356. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +65 -7
  357. package/dist/types/ts4.1/track/source/SourceObjectTrack.d.ts +2 -2
  358. package/dist/types/ts4.1/track/source/SourceTrack.d.ts +2 -2
  359. package/dist/types/ts4.1/track/source/SourceTrackBase.d.ts +7 -5
  360. package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
  361. package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
  362. package/dist/types/ts4.1/util/media/mediaSource.d.ts +5 -0
  363. package/dist/types/ts4.1/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  364. package/dist/types/ts4.1/vinyl/VinylDeps.d.ts +5 -0
  365. package/dist/types/ts4.1/vinyl/VinylOptions.d.ts +68 -4
  366. package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +33 -4
  367. package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +56 -12
  368. package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
  369. package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
  370. package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +146 -0
  371. package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
  372. package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
  373. package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  374. package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
  375. package/dist/types/ts4.7/drm/DrmController.d.ts +29 -4
  376. package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +13 -4
  377. package/dist/types/ts4.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  378. package/dist/types/ts4.7/index.d.ts +151 -126
  379. package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -0
  380. package/dist/types/ts4.7/playback/PlaybackSource.d.ts +1 -1
  381. package/dist/types/ts4.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  382. package/dist/types/ts4.7/streaming/ContentStream.d.ts +8 -1
  383. package/dist/types/ts4.7/streaming/LoadMetric.d.ts +58 -0
  384. package/dist/types/ts4.7/streaming/ManifestController.d.ts +16 -1
  385. package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
  386. package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +19 -0
  387. package/dist/types/ts4.7/streaming/MediaTimeline.d.ts +6 -0
  388. package/dist/types/ts4.7/streaming/SegmentController.d.ts +5 -0
  389. package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +12 -0
  390. package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +42 -1
  391. package/dist/types/ts4.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
  392. package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +37 -0
  393. package/dist/types/ts4.7/streaming/buffering/MediaSourceController.d.ts +16 -11
  394. package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
  395. package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  396. package/dist/types/ts4.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
  397. package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  398. package/dist/types/ts4.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
  399. package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +91 -0
  400. package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +60 -0
  401. package/dist/types/ts4.7/text/TextTrack.d.ts +129 -0
  402. package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
  403. package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
  404. package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
  405. package/dist/types/ts4.7/text/parseWebVtt.d.ts +46 -0
  406. package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +14 -0
  407. package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
  408. package/dist/types/ts4.7/track/Track.d.ts +50 -7
  409. package/dist/types/ts4.7/track/TrackBase.d.ts +30 -29
  410. package/dist/types/ts4.7/track/TrackController.d.ts +102 -37
  411. package/dist/types/ts4.7/track/TrackFactory.d.ts +23 -3
  412. package/dist/types/ts4.7/track/dash/DashManifestController.d.ts +1 -40
  413. package/dist/types/ts4.7/track/dash/DashTrack.d.ts +4 -5
  414. package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +39 -12
  415. package/dist/types/ts4.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  416. package/dist/types/ts4.7/track/dash/util/mpd.d.ts +10 -0
  417. package/dist/types/ts4.7/track/hls/HlsManifestController.d.ts +1 -25
  418. package/dist/types/ts4.7/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  419. package/dist/types/ts4.7/track/hls/HlsTrack.d.ts +5 -6
  420. package/dist/types/ts4.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
  421. package/dist/types/ts4.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  422. package/dist/types/ts4.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  423. package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +40 -13
  424. package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  425. package/dist/types/ts4.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  426. package/dist/types/ts4.7/track/hls/index.d.ts +1 -1
  427. package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  428. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +66 -8
  429. package/dist/types/ts4.7/track/source/SourceObjectTrack.d.ts +2 -2
  430. package/dist/types/ts4.7/track/source/SourceTrack.d.ts +2 -2
  431. package/dist/types/ts4.7/track/source/SourceTrackBase.d.ts +7 -5
  432. package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
  433. package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
  434. package/dist/types/ts4.7/util/media/mediaSource.d.ts +5 -0
  435. package/dist/types/ts4.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  436. package/dist/types/ts4.7/vinyl/VinylDeps.d.ts +5 -0
  437. package/dist/types/ts4.7/vinyl/VinylOptions.d.ts +68 -4
  438. package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +63 -4
  439. package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +55 -12
  440. package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
  441. package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
  442. package/dist/unit/types/current/ad/AdController.test.js +10 -0
  443. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
  444. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
  445. package/dist/unit/types/current/ad/AdControllerImpl.test.js +1456 -0
  446. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
  447. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
  448. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
  449. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
  450. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
  451. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +756 -0
  452. package/dist/unit/types/current/drm/DrmControllerImpl.test.js +205 -4
  453. package/dist/unit/types/current/index.d.ts +117 -98
  454. package/dist/unit/types/current/index.d.ts.map +1 -1
  455. package/dist/unit/types/current/index.js +117 -98
  456. package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +92 -3
  457. package/dist/unit/types/current/streaming/ContentStream.test.js +11 -0
  458. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
  459. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
  460. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
  461. package/dist/unit/types/current/streaming/MediaTimeline.test.js +2 -0
  462. package/dist/unit/types/current/streaming/MseTrack.test.js +478 -14
  463. package/dist/unit/types/current/streaming/SegmentControllerImpl.test.js +66 -0
  464. package/dist/unit/types/current/streaming/StreamingEventMap.test.js +2 -2
  465. package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +110 -0
  466. package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +123 -21
  467. package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +37 -10
  468. package/dist/unit/types/current/streaming/buffering/SourceBufferController.test.js +4 -0
  469. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
  470. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
  471. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
  472. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
  473. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
  474. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
  475. package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +144 -2
  476. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
  477. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
  478. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
  479. package/dist/unit/types/current/streaming/mediaTimelineFilter.test.js +9 -0
  480. package/dist/unit/types/current/streaming/mediaTimelineLanguageFilter.test.js +92 -3
  481. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
  482. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
  483. package/dist/unit/types/current/text/SidecarTextTrackController.test.js +587 -0
  484. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
  485. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
  486. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +336 -0
  487. package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
  488. package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
  489. package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
  490. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
  491. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
  492. package/dist/unit/types/current/text/discoverDashTextTracks.test.js +199 -0
  493. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
  494. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
  495. package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
  496. package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
  497. package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
  498. package/dist/unit/types/current/text/parseWebVtt.test.js +212 -0
  499. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
  500. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
  501. package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +67 -0
  502. package/dist/unit/types/current/track/TrackBase.test.js +50 -5
  503. package/dist/unit/types/current/track/TrackController.test.js +712 -109
  504. package/dist/unit/types/current/track/TrackFactory.test.js +13 -25
  505. package/dist/unit/types/current/track/dash/createDashContentStreamFactories.test.js +1 -0
  506. package/dist/unit/types/current/track/dash/createDashFactories.test.js +63 -2
  507. package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +1 -0
  508. package/dist/unit/types/current/track/dash/util/mpd.test.js +24 -1
  509. package/dist/unit/types/current/track/hls/HlsManifestController.test.js +4 -4
  510. package/dist/unit/types/current/track/hls/HlsMediaQualityMetadataResolver.test.js +4 -2
  511. package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +260 -14
  512. package/dist/unit/types/current/track/hls/createHlsContentStreamFactories.test.js +1 -0
  513. package/dist/unit/types/current/track/hls/createHlsFactories.test.js +182 -4
  514. package/dist/unit/types/current/track/hls/createUrlHlsManifestProvider.test.js +19 -0
  515. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
  516. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
  517. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
  518. package/dist/unit/types/current/track/source/SourceTrack.test.js +5 -0
  519. package/dist/unit/types/current/track/source/SourceTrackBase.test.js +24 -3
  520. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  521. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
  522. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
  523. package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
  524. package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
  525. package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
  526. package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
  527. package/dist/unit/types/current/util/media/mediaSource.test.js +6 -0
  528. package/dist/unit/types/current/vinyl/VinylPlayer.test.js +177 -75
  529. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
  530. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
  531. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
  532. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
  533. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
  534. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +263 -0
  535. package/dist/vinylTestUtil/index.js +2393 -2232
  536. package/dist/vinylTestUtil/index.js.map +4 -4
  537. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts +14 -0
  538. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts.map +1 -1
  539. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.js +49 -30
  540. package/dist/vinylTestUtil/types/current/index.d.ts +53 -51
  541. package/dist/vinylTestUtil/types/current/index.d.ts.map +1 -1
  542. package/dist/vinylTestUtil/types/current/index.js +53 -51
  543. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
  544. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
  545. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
  546. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts +8 -1
  547. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts.map +1 -1
  548. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.js +15 -0
  549. package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +12 -12
  550. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts +2 -2
  551. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts.map +1 -1
  552. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts +7 -1
  553. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts.map +1 -1
  554. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.js +12 -0
  555. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts +3 -3
  556. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts.map +1 -1
  557. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.js +1 -0
  558. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  559. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
  560. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +17 -1
  561. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts +2 -1
  562. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts.map +1 -1
  563. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.js +1 -0
  564. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  565. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts.map +1 -1
  566. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.js +1 -0
  567. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  568. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts.map +1 -1
  569. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.js +2 -1
  570. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
  571. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
  572. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
  573. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts +13 -4
  574. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts.map +1 -1
  575. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.js +11 -0
  576. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts +3 -2
  577. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts.map +1 -1
  578. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.js +2 -1
  579. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  580. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
  581. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +8 -1
  582. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  583. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
  584. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +6 -1
  585. package/dist/vinylTestUtil/types/current/player/createVinylSuite.d.ts.map +1 -1
  586. package/dist/vinylTestUtil/types/current/player/createVinylSuite.js +18 -7
  587. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  588. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.d.ts.map +1 -1
  589. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.js +1 -1
  590. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.d.ts.map +1 -1
  591. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.js +5 -2
  592. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlays.js +3 -3
  593. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.d.ts.map +1 -1
  594. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.js +11 -7
  595. package/dist/vinylTestUtil/types/ts3.7/assets/vinylTestAssets.d.ts +14 -0
  596. package/dist/vinylTestUtil/types/ts3.7/index.d.ts +53 -51
  597. package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
  598. package/dist/vinylTestUtil/types/ts3.7/mock/dash/MockDashManifestController.d.ts +8 -1
  599. package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +12 -12
  600. package/dist/vinylTestUtil/types/ts3.7/mock/drm/MockDrmController.d.ts +2 -2
  601. package/dist/vinylTestUtil/types/ts3.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  602. package/dist/vinylTestUtil/types/ts3.7/mock/hls/mockHlsManifest.d.ts +3 -3
  603. package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  604. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockContentStream.d.ts +2 -1
  605. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  606. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  607. package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
  608. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrack.d.ts +13 -4
  609. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrackController.d.ts +3 -2
  610. package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  611. package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  612. package/dist/vinylTestUtil/types/ts4.1/assets/vinylTestAssets.d.ts +14 -0
  613. package/dist/vinylTestUtil/types/ts4.1/index.d.ts +53 -51
  614. package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
  615. package/dist/vinylTestUtil/types/ts4.1/mock/dash/MockDashManifestController.d.ts +8 -1
  616. package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +12 -12
  617. package/dist/vinylTestUtil/types/ts4.1/mock/drm/MockDrmController.d.ts +2 -2
  618. package/dist/vinylTestUtil/types/ts4.1/mock/hls/MockHlsManifestController.d.ts +7 -1
  619. package/dist/vinylTestUtil/types/ts4.1/mock/hls/mockHlsManifest.d.ts +3 -3
  620. package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  621. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockContentStream.d.ts +2 -1
  622. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  623. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  624. package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
  625. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrack.d.ts +13 -4
  626. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrackController.d.ts +3 -2
  627. package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  628. package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  629. package/dist/vinylTestUtil/types/ts4.7/assets/vinylTestAssets.d.ts +14 -0
  630. package/dist/vinylTestUtil/types/ts4.7/index.d.ts +53 -51
  631. package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
  632. package/dist/vinylTestUtil/types/ts4.7/mock/dash/MockDashManifestController.d.ts +8 -1
  633. package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +12 -12
  634. package/dist/vinylTestUtil/types/ts4.7/mock/drm/MockDrmController.d.ts +2 -2
  635. package/dist/vinylTestUtil/types/ts4.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  636. package/dist/vinylTestUtil/types/ts4.7/mock/hls/mockHlsManifest.d.ts +3 -3
  637. package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
  638. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockContentStream.d.ts +2 -1
  639. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  640. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
  641. package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
  642. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrack.d.ts +13 -4
  643. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrackController.d.ts +3 -2
  644. package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
  645. package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
  646. package/docs/ADS.md +264 -0
  647. package/docs/USAGE.md +142 -9
  648. package/package.json +18 -18
  649. package/dist/types/current/track/hls/HlsManifestProvider.d.ts.map +0 -1
  650. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts +0 -2
  651. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts.map +0 -1
  652. package/dist/unit/types/current/track/dash/DashManifestController.test.js +0 -186
  653. /package/dist/types/current/{track/hls/HlsManifestProvider.js → ad/AdBreakInfo.js} +0 -0
@@ -2,10 +2,19 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { TrackBase, } from '../TrackBase';
6
- import { Abort, equalDeep, IntersectionRanges, logDebug, redispatchEvents, } from '@amazon/vinyl-util';
5
+ import { TrackBase } from '../TrackBase';
6
+ import { Abort, equalDeep, first, IntersectionRanges, logDebug, noop, redispatchEvents, } from '@amazon/vinyl-util';
7
7
  import { createContainer } from '@amazon/vinyl-di';
8
8
  import { getMediaPeriodAtTime, } from '../../streaming/MediaTimeline';
9
+ /**
10
+ * How long to wait after all streams have data before checking whether a seek
11
+ * is still stuck, in seconds.
12
+ */
13
+ export const SEEKING_STALL_TIME_CHECK = 0.1;
14
+ /**
15
+ * How far to nudge the playhead, in seconds, to recover a stuck seek.
16
+ */
17
+ export const PLAYHEAD_NUDGE = 0.05;
9
18
  /**
10
19
  * An MseTrack uses media source extensions for streaming.
11
20
  */
@@ -13,10 +22,17 @@ export class MseTrack extends TrackBase {
13
22
  get [Symbol.toStringTag]() {
14
23
  return 'MseTrack';
15
24
  }
25
+ get textTrackController() {
26
+ // Reading a dep on a disposed track throws DisposedError (its DI
27
+ // container's lazies are disposed); a stale reference has no controller.
28
+ if (this.disposed)
29
+ return null;
30
+ return this.deps.textTrackController ?? null;
31
+ }
16
32
  streams = [];
33
+ stallNudgeTimer = null;
17
34
  disposeAbort = new Abort();
18
35
  lastPreloadOptions = null;
19
- activateOptions = null;
20
36
  allFetchedRanges = [];
21
37
  _fetchedRanges = new IntersectionRanges(this.allFetchedRanges, { useCache: true });
22
38
  _contentTypes = new Set();
@@ -34,49 +50,95 @@ export class MseTrack extends TrackBase {
34
50
  this.deps = deps;
35
51
  add(deps.contentTypesValue.onData((contentTypesPromise) => {
36
52
  contentTypesPromise
37
- .then((contentTypes) => {
38
- if (this.disposer.disposed)
39
- return;
40
- if (equalDeep(this.contentTypes, contentTypes))
41
- return; // no-op
42
- logDebug(this, 'content types:', contentTypes);
43
- this.clearStreams();
44
- for (const contentType of contentTypes) {
45
- this.createStream(contentType);
46
- }
47
- // Sets the content types and dispatches a change event:
48
- this.contentTypes = contentTypes;
49
- })
53
+ .then((value) => this.setContentTypes(value))
50
54
  .catch(this.errorHandler);
51
55
  }));
52
56
  // DRM
53
57
  this.on('streamingQualityChange', (event) => {
54
- if (this.activateOptions) {
55
- this.deps.drmController.initializeForPlayback(event.current, this.disposeAbort);
58
+ if (this.active) {
59
+ this.deps.drmController.initializeForPlayback(event.current, {
60
+ trackUri: this.uri,
61
+ abort: this.disposeAbort,
62
+ });
56
63
  }
57
64
  });
58
65
  this.on('bufferingQualityChange', (event) => {
59
- this.deps.drmController.setBufferingDrmInfo(event.current, this.disposeAbort);
66
+ // Keep the DRM info while a stream's buffering transiently clears
67
+ // (a seek or reaching the end): with multiple encrypted streams, an
68
+ // `encrypted` event from another stream still (re)appending its init
69
+ // segment needs it. The info is cleared on deactivation instead.
70
+ if (event.current == null)
71
+ return;
72
+ this.deps.drmController.setBufferingDrmInfo(event.current, {
73
+ trackUri: this.uri,
74
+ abort: this.disposeAbort,
75
+ });
60
76
  });
61
- // Listen for timeline changes to update qualities.
77
+ // Listen for timeline changes to update qualities seek ranges and ads.
62
78
  add(deps.mediaTimelineTransformed.onData(() => {
63
79
  this._cachedPeriod = null;
64
80
  this.updateQualities();
81
+ this.updateSeekRanges();
82
+ this.dispatch('adsChange', {});
65
83
  }));
66
84
  add(deps.mediaTimeline.onData(() => {
67
85
  this._cachedPeriod = null;
68
86
  this.updateQualitiesUnfiltered();
69
87
  }));
88
+ // Surface the manifest fetch span alongside the streams' segment spans,
89
+ // attributing it to this track at the source.
90
+ add(deps.manifestController.on('loadSpanMeasured', (measurement) => this.dispatchLoadSpan(measurement)));
91
+ // Audio/stream selection options: a change (never the initial value)
92
+ // re-filters the timeline, so rebuild this track's streams in place.
93
+ add(deps.preferredAudioLanguage.onData((_value, previous) => {
94
+ if (previous !== undefined)
95
+ this.reloadStreams();
96
+ }));
97
+ add(deps.allowedContentTypes.onData((_value, previous) => {
98
+ if (previous !== undefined)
99
+ this.reloadStreams();
100
+ }));
101
+ add(deps.preferDescriptiveAudio.onData((_value, previous) => {
102
+ if (previous !== undefined)
103
+ this.reloadStreams();
104
+ }));
105
+ // A resolution-restriction change re-selects a quality from the same
106
+ // streams, so clearing the buffer is enough — no rebuild is needed.
107
+ add(deps.abr.onData((value, previous) => {
108
+ if (previous === undefined)
109
+ return;
110
+ if (value.maxHeight !== previous.maxHeight ||
111
+ value.maxWidth !== previous.maxWidth) {
112
+ this.clearPrefetch();
113
+ }
114
+ }));
115
+ }
116
+ /**
117
+ * Clears this track's buffers and rebuilds its streams so a changed
118
+ * audio/language/content-type selection applies immediately.
119
+ * {@link reset} with `hard` safely no-ops the rebuild for an inactive
120
+ * (cached) track.
121
+ */
122
+ reloadStreams() {
123
+ this.clearPrefetch();
124
+ this.reset(/* hard */ true);
125
+ }
126
+ /**
127
+ * Re-dispatches a sub-controller's load span stamped with this track's uri,
128
+ * so the span attributes to the track that owns it at the source.
129
+ */
130
+ dispatchLoadSpan(measurement) {
131
+ this.dispatch('loadSpanMeasured', {
132
+ ...measurement,
133
+ trackUri: this.uri,
134
+ });
70
135
  }
71
136
  /**
72
137
  * Updates the cached qualities list from the transformed timeline for the current period.
73
138
  */
74
139
  updateQualities() {
75
- const time = this.deps.playbackController.currentTime;
76
- this.deps.mediaTimelineTransformed.value
77
- .then((timeline) => {
78
- if (this.disposer.disposed)
79
- return;
140
+ this.withTimeline(this.deps.mediaTimelineTransformed, (timeline) => {
141
+ const time = this.deps.playbackController.currentTime;
80
142
  const period = getMediaPeriodAtTime(timeline, time);
81
143
  this._cachedPeriod = period;
82
144
  const newQualities = period
@@ -92,18 +154,21 @@ export class MseTrack extends TrackBase {
92
154
  });
93
155
  }
94
156
  }
95
- })
96
- .catch(this.errorHandler);
157
+ });
158
+ }
159
+ async getAds() {
160
+ const timeline = await this.deps.mediaTimeline.value;
161
+ return {
162
+ trackUri: this.uri,
163
+ adBreaks: await timeline.getAdBreaks(),
164
+ };
97
165
  }
98
166
  /**
99
167
  * Updates the cached unfiltered qualities list from the raw timeline for the current period.
100
168
  */
101
169
  updateQualitiesUnfiltered() {
102
- const time = this.deps.playbackController.currentTime;
103
- this.deps.mediaTimeline.value
104
- .then((timeline) => {
105
- if (this.disposer.disposed)
106
- return;
170
+ this.withTimeline(this.deps.mediaTimeline, (timeline) => {
171
+ const time = this.deps.playbackController.currentTime;
107
172
  const period = getMediaPeriodAtTime(timeline, time);
108
173
  const newQualities = period
109
174
  ? period.qualities.map((q) => q.metadata)
@@ -118,6 +183,38 @@ export class MseTrack extends TrackBase {
118
183
  });
119
184
  }
120
185
  }
186
+ });
187
+ }
188
+ updateSeekRanges() {
189
+ this.withTimeline(this.deps.mediaTimelineTransformed, (timeline, interrupted) => {
190
+ timeline
191
+ .getDuration()
192
+ .then((duration) => {
193
+ if (interrupted())
194
+ return;
195
+ const start = first(timeline.periods)?.startTime ?? 0;
196
+ this.setSeekRange({
197
+ start,
198
+ end: start + duration,
199
+ });
200
+ })
201
+ .catch(this.errorHandler);
202
+ });
203
+ }
204
+ /**
205
+ * Invokes a callback when the given timeline promise resolves and was not
206
+ * interrupted by that timeline changing or the track being disposed.
207
+ *
208
+ * Pass `mediaTimelineTransformed` for the playable (filtered) view or
209
+ * `mediaTimeline` for the raw, unfiltered view.
210
+ */
211
+ withTimeline(timelineSource, callback) {
212
+ const timelinePromise = timelineSource.value;
213
+ const interrupted = () => this.disposed || timelinePromise !== timelineSource.value;
214
+ timelinePromise
215
+ .then((timeline) => {
216
+ if (!interrupted())
217
+ callback(timeline, interrupted);
121
218
  })
122
219
  .catch(this.errorHandler);
123
220
  }
@@ -133,13 +230,18 @@ export class MseTrack extends TrackBase {
133
230
  'streamingQualityChange',
134
231
  'bufferingQualityChange',
135
232
  'playbackQualityChange',
233
+ 'codecUnsupported',
136
234
  ]);
235
+ // Stamp the segment spans with this track's uri at the source rather
236
+ // than blindly redispatching the unattributed measurement.
237
+ stream.on('loadSpanMeasured', (measurement) => this.dispatchLoadSpan(measurement));
137
238
  stream.on('bufferingEnded', () => {
138
239
  if (this.bufferingEnded) {
139
240
  this.deps.mediaSourceController.endOfStream();
140
241
  this.dispatch('bufferingEnded', {});
141
242
  }
142
243
  });
244
+ stream.on('hasDataChange', () => this.checkStalledSeek());
143
245
  stream.on('fetchedRangesChange', () => {
144
246
  this._fetchedRanges.invalidate();
145
247
  });
@@ -157,13 +259,13 @@ export class MseTrack extends TrackBase {
157
259
  if (this.lastPreloadOptions) {
158
260
  stream.preload(this.lastPreloadOptions);
159
261
  }
160
- if (this.activateOptions) {
161
- stream.activate(this.activateOptions);
262
+ if (this.loadOptions) {
263
+ stream.activate(this.loadOptions);
162
264
  }
163
265
  }
164
266
  preload(trackOptions, loadOptions) {
165
267
  const options = {
166
- startTime: loadOptions.startTime,
268
+ startTime: loadOptions?.startTime,
167
269
  prefetchPriority: trackOptions.prefetchPriority,
168
270
  };
169
271
  this.lastPreloadOptions = options;
@@ -172,14 +274,6 @@ export class MseTrack extends TrackBase {
172
274
  get contentTypes() {
173
275
  return this._contentTypes;
174
276
  }
175
- set contentTypes(value) {
176
- const previous = this._contentTypes;
177
- this._contentTypes = value;
178
- this.dispatch('contentTypesChange', {
179
- previous,
180
- current: value,
181
- });
182
- }
183
277
  get qualities() {
184
278
  return this._qualities;
185
279
  }
@@ -202,24 +296,30 @@ export class MseTrack extends TrackBase {
202
296
  * Resets the track to recover from error states.
203
297
  * Resets both the segment controller and buffering controller to clear failed segments and error conditions.
204
298
  */
205
- reset() {
206
- if (!this.error) {
299
+ reset(hard = false) {
300
+ if (!hard && !this.error) {
207
301
  logDebug(this, 'reset no-op');
208
302
  return;
209
303
  }
304
+ super.reset(hard);
210
305
  this.deps.manifestController.reset();
211
306
  this.callOnStreams('reset');
212
- super.reset();
213
307
  }
214
308
  onActivated(loadOptions) {
215
- this.activateOptions = loadOptions;
309
+ // A disposed track's deps throw DisposedError on access; never touch them.
310
+ if (this.disposed)
311
+ return;
312
+ // Rebuild the DOM text track. The element's added TextTracks are
313
+ // dropped when the source is reset on deactivation (e.g. suspended for
314
+ // an ad), so the active selection must be re-rendered on reactivation.
315
+ this.deps.textTrackController?.resume();
216
316
  // AirPlay not supported using managed media sources
217
317
  this.deps.playbackSource.disableRemotePlayback = true;
218
318
  this.streams.forEach((stream) => {
219
- this.deps.drmController.initializeForPlayback(stream.streamingQuality, this.disposeAbort);
319
+ this.deps.drmController.initializeForPlayback(stream.streamingQuality, { trackUri: this.uri, abort: this.disposeAbort });
220
320
  });
221
321
  this.deps.playbackSource.src =
222
- this.deps.mediaSourceController.createUrl();
322
+ this.deps.mediaSourceController.activate();
223
323
  this.callOnStreams('activate', loadOptions);
224
324
  // Listen for timeUpdate to detect period changes.
225
325
  this.timeUpdateSub = this.deps.playbackController.on('timeUpdate', () => {
@@ -228,6 +328,7 @@ export class MseTrack extends TrackBase {
228
328
  if (cached &&
229
329
  time >= cached.startTime &&
230
330
  time < cached.endTime) {
331
+ // The period hasn't changed
231
332
  return;
232
333
  }
233
334
  this.updateQualities();
@@ -235,12 +336,25 @@ export class MseTrack extends TrackBase {
235
336
  });
236
337
  }
237
338
  onDeactivated() {
238
- this.activateOptions = null;
339
+ // A disposed track's deps throw DisposedError on access; never touch them.
340
+ if (this.disposed)
341
+ return;
239
342
  this.timeUpdateSub?.();
240
343
  this.timeUpdateSub = null;
241
344
  this.callOnStreams('deactivate');
345
+ // Streams' transient buffering clears no longer clear the DRM info, so
346
+ // clear it here now that the track is no longer buffering.
347
+ this.deps.drmController.setBufferingDrmInfo(null, {
348
+ trackUri: this.uri,
349
+ abort: this.disposeAbort,
350
+ });
351
+ // Tear down the DOM text track so its cues stop showing while this
352
+ // track is suspended (e.g. an ad playing over it). The selection is
353
+ // retained and re-rendered on reactivation via resume().
354
+ this.deps.textTrackController?.suspend();
242
355
  this.deps.playbackSource.src = null;
243
356
  this.deps.playbackSource.load();
357
+ this.deps.mediaSourceController.deactivate();
244
358
  }
245
359
  getStreamingQuality(contentType) {
246
360
  return this.getStream(contentType)?.streamingQuality ?? null;
@@ -272,10 +386,60 @@ export class MseTrack extends TrackBase {
272
386
  get bufferingEnded() {
273
387
  return this.streams.every((stream) => stream.bufferingEnded);
274
388
  }
389
+ /**
390
+ * A seek only completes once every stream has data at the target, but on
391
+ * some platforms the element can stay stuck `seeking` even after that. Once
392
+ * all streams hold data, if we're still seeking a moment later, nudge the
393
+ * playhead to prod the element into completing the seek.
394
+ */
395
+ checkStalledSeek() {
396
+ const { playbackController } = this.deps;
397
+ if (this.stallNudgeTimer !== null || !playbackController.seeking)
398
+ return;
399
+ if (!this.streams.length || !this.streams.every((s) => s.hasData)) {
400
+ return;
401
+ }
402
+ this.stallNudgeTimer = setTimeout(() => {
403
+ this.stallNudgeTimer = null;
404
+ if (this.disposed || !playbackController.seeking)
405
+ return;
406
+ if (!this.streams.every((s) => s.hasData))
407
+ return;
408
+ const from = playbackController.currentTime;
409
+ const to = from + PLAYHEAD_NUDGE;
410
+ // An internal recovery seek, not a user seek — logged so the two
411
+ // are distinguishable in playback traces.
412
+ logDebug(this, 'nudging playhead to recover a stalled seek', from, '->', to);
413
+ playbackController.seekTo(to, 0).catch(noop);
414
+ }, SEEKING_STALL_TIME_CHECK * 1000);
415
+ }
416
+ setContentTypes(contentTypes) {
417
+ if (this.disposed)
418
+ return;
419
+ const previous = this.contentTypes;
420
+ if (equalDeep(previous, contentTypes))
421
+ return; // no-op
422
+ logDebug(this, 'content types:', contentTypes);
423
+ if (previous.size) {
424
+ // Content types were previously set, hard reset this track
425
+ // so the media source is recreated
426
+ this.reset(/* hard */ true);
427
+ }
428
+ this.clearStreams();
429
+ for (const contentType of contentTypes) {
430
+ this.createStream(contentType);
431
+ }
432
+ // Sets the content types and dispatches a change event:
433
+ this._contentTypes = contentTypes;
434
+ this.dispatch('contentTypesChange', {
435
+ previous,
436
+ current: contentTypes,
437
+ });
438
+ }
275
439
  dispose() {
276
440
  logDebug(this, 'dispose');
277
- this.timeUpdateSub?.();
278
- this.timeUpdateSub = null;
441
+ if (this.stallNudgeTimer !== null)
442
+ clearTimeout(this.stallNudgeTimer);
279
443
  this.clearStreams();
280
444
  super.dispose();
281
445
  }
@@ -3,7 +3,7 @@ import type { TrackTypeId, TrackUri } from '../Track';
3
3
  import { type TrackBaseDeps } from '../TrackBase';
4
4
  import { type TrackFactory, type TrackLoadOptions } from '../TrackFactory';
5
5
  import { type Maybe } from '@amazon/vinyl-util';
6
- import { SourceTrackBase, type SourceTrackBaseOptions } from './SourceTrackBase';
6
+ import { SourceTrackBase, type SourceTrackConfigOptions } from './SourceTrackBase';
7
7
  /**
8
8
  * Dependencies for a SourceObjectTrack.
9
9
  */
@@ -20,7 +20,7 @@ export interface SourceObjectTrackLoadOptions extends TrackLoadOptions {
20
20
  * Configuration options for the SourceObjectTrack.
21
21
  * Will be provided on preload and activate.
22
22
  */
23
- readonly config?: Maybe<SourceTrackBaseOptions>;
23
+ readonly config?: Maybe<SourceTrackConfigOptions>;
24
24
  }
25
25
  export declare function createSourceObjectTrackFactory(deps: SourceObjectTrackDeps): TrackFactory<SourceObjectTrackLoadOptions>;
26
26
  export declare class SourceObjectTrack extends SourceTrackBase<MediaStream> {
@@ -1 +1 @@
1
- {"version":3,"file":"SourceObjectTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceObjectTrack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAExB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EACH,eAAe,EACf,KAAK,sBAAsB,EAE9B,MAAM,mBAAmB,CAAA;AAE1B;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IACxD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IAClE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CACxB,GAAG,EAAE,QAAQ,KACZ,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAA;IAEvC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;CAClD;AASD,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,qBAAqB,GAC5B,YAAY,CAAC,4BAA4B,CAAC,CAe5C;AAGD,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,WAAW,CAAC;IAS3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB;IARlD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAGG,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EACZ,IAAI,EAAE,qBAAqB;IAKlD,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW;IAIjC,SAAS,CAAC,QAAQ,IAAI,IAAI;CAI7B"}
1
+ {"version":3,"file":"SourceObjectTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceObjectTrack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAExB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EACH,eAAe,EACf,KAAK,wBAAwB,EAEhC,MAAM,mBAAmB,CAAA;AAE1B;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IACxD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,4BAA6B,SAAQ,gBAAgB;IAClE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CACxB,GAAG,EAAE,QAAQ,KACZ,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAAA;IAEvC;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;CACpD;AASD,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,qBAAqB,GAC5B,YAAY,CAAC,4BAA4B,CAAC,CAe5C;AAGD,qBAAa,iBAAkB,SAAQ,eAAe,CAAC,WAAW,CAAC;IAS3D,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,qBAAqB;IARlD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAGG,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,EACZ,IAAI,EAAE,qBAAqB;IAKlD,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW;IAIjC,SAAS,CAAC,QAAQ,IAAI,IAAI;CAI7B"}
@@ -2,7 +2,7 @@ import type { TrackTypeId, TrackUri } from '../Track';
2
2
  import { type TrackBaseDeps } from '../TrackBase';
3
3
  import { type TrackFactory, type TrackLoadOptions } from '../TrackFactory';
4
4
  import { type Maybe } from '@amazon/vinyl-util';
5
- import { SourceTrackBase, type SourceTrackBaseOptions } from './SourceTrackBase';
5
+ import { SourceTrackBase, type SourceTrackConfigOptions } from './SourceTrackBase';
6
6
  import type { PlaybackSource } from '../../playback/PlaybackSource';
7
7
  /**
8
8
  * Dependencies for a SourceTrack.
@@ -21,7 +21,7 @@ export interface SourceTrackLoadOptions extends TrackLoadOptions {
21
21
  * Configuration options for the SourceTrack.
22
22
  * Will be provided on preload and activate.
23
23
  */
24
- readonly config?: Maybe<SourceTrackBaseOptions>;
24
+ readonly config?: Maybe<SourceTrackConfigOptions>;
25
25
  }
26
26
  export declare function createSourceTrackFactory(deps: SourceTrackDeps): TrackFactory<SourceTrackLoadOptions>;
27
27
  export declare class SourceTrack extends SourceTrackBase<string> {
@@ -1 +1 @@
1
- {"version":3,"file":"SourceTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceTrack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAExB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAO5D,OAAO,EACH,eAAe,EACf,KAAK,sBAAsB,EAE9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAClD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IAEpB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;IAEzE;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;CAClD;AAUD,wBAAgB,wBAAwB,CACpC,IAAI,EAAE,eAAe,GACtB,YAAY,CAAC,sBAAsB,CAAC,CAiBtC;AAGD,qBAAa,WAAY,SAAQ,eAAe,CAAC,MAAM,CAAC;IAShD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe;IAR5C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAGG,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EACD,IAAI,EAAE,eAAe;IAK5C,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;IAI5B,SAAS,CAAC,QAAQ;CAIrB"}
1
+ {"version":3,"file":"SourceTrack.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceTrack.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAS,WAAW,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAExB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE5D,OAAO,EACH,eAAe,EAEf,KAAK,wBAAwB,EAChC,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAEnE;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,aAAa;IAClD,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;CAC1C;AAED,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;IAEpB;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;IAEzE;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAA;CACpD;AASD,wBAAgB,wBAAwB,CACpC,IAAI,EAAE,eAAe,GACtB,YAAY,CAAC,sBAAsB,CAAC,CAiBtC;AAGD,qBAAa,WAAY,SAAQ,eAAe,CAAC,MAAM,CAAC;IAShD,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe;IAR5C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;gBAGG,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,EACD,IAAI,EAAE,eAAe;IAK5C,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM;IAI5B,SAAS,CAAC,QAAQ;CAIrB"}
@@ -4,13 +4,12 @@
4
4
  */
5
5
  import { trackLoadOptionsValidator, } from '../TrackFactory';
6
6
  import { ErrorOrigin } from '@amazon/vinyl-util';
7
- import { func, isOneOf, string, } from '@amazon/vinyl-validation';
7
+ import { func, isOneOf } from '@amazon/vinyl-validation';
8
8
  import { SourceTrackBase, sourceTrackBaseOptionsValidator, } from './SourceTrackBase';
9
9
  const loadOptionsValidator = trackLoadOptionsValidator.extend({
10
10
  config: sourceTrackBaseOptionsValidator.maybe().optional(),
11
11
  srcProvider: func().maybe().optional(),
12
12
  type: isOneOf('src'),
13
- uri: string().notEmpty(),
14
13
  });
15
14
  export function createSourceTrackFactory(deps) {
16
15
  return {
@@ -1,23 +1,25 @@
1
- import { TrackBase, type TrackBaseDeps, type TrackBaseOptions } from '../TrackBase';
1
+ import { TrackBase, type TrackBaseDeps } from '../TrackBase';
2
2
  import type { TrackEventMap, TrackPreloadOptions, TrackTypeId, TrackUri } from '../Track';
3
3
  import { type Maybe, type ReadonlySet } from '@amazon/vinyl-util';
4
4
  import { type ContentType, type MediaQualityMetadata } from '../../streaming/MediaQualityMetadata';
5
5
  import type { ObjectSchema } from '@amazon/vinyl-validation';
6
- export interface SourceTrackBaseOptions extends TrackBaseOptions {
6
+ import { type TrackConfigOptions } from '../TrackFactory';
7
+ export interface SourceTrackConfigOptions extends TrackConfigOptions {
7
8
  /**
8
9
  * Quality metadata.
9
10
  * May be used to configure DRM (for native HLS), codec, or other track metadata.
10
11
  */
11
12
  readonly qualityMetadata?: Maybe<Partial<MediaQualityMetadata>>;
12
13
  }
13
- export declare const sourceTrackBaseOptionsValidator: ObjectSchema<SourceTrackBaseOptions>;
14
- export declare abstract class SourceTrackBase<SrcType, EventMap extends TrackEventMap = TrackEventMap, LoadOptionsType extends SourceTrackBaseOptions = SourceTrackBaseOptions> extends TrackBase<EventMap, LoadOptionsType> {
14
+ export declare const sourceTrackBaseOptionsValidator: ObjectSchema<SourceTrackConfigOptions>;
15
+ export declare abstract class SourceTrackBase<SrcType, EventMap extends TrackEventMap = TrackEventMap, TrackConfigOptions extends SourceTrackConfigOptions = SourceTrackConfigOptions> extends TrackBase<EventMap, TrackConfigOptions> {
15
16
  readonly src: Promise<SrcType>;
16
17
  protected readonly deps: TrackBaseDeps;
17
18
  private readonly fixedPlaybackQuality;
18
19
  private _resolvedSrc;
20
+ private activeSub;
19
21
  protected constructor(uri: TrackUri, type: TrackTypeId, src: Promise<SrcType>, deps: TrackBaseDeps);
20
- preload(trackOptions: TrackPreloadOptions, loadOptions: LoadOptionsType): void;
22
+ preload(trackOptions: TrackPreloadOptions, loadOptions: Maybe<TrackConfigOptions>): void;
21
23
  get contentTypes(): ReadonlySet<ContentType>;
22
24
  get qualities(): readonly MediaQualityMetadata[] | null;
23
25
  get qualitiesUnfiltered(): readonly MediaQualityMetadata[] | null;
@@ -1 +1 @@
1
- {"version":3,"file":"SourceTrackBase.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceTrackBase.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,SAAS,EACT,KAAK,aAAa,EAClB,KAAK,gBAAgB,EAExB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACX,MAAM,UAAU,CAAA;AAEjB,OAAO,EAEH,KAAK,KAAK,EACV,KAAK,WAAW,EAEnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAE5B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC5D;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAA;CAClE;AAED,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,sBAAsB,CAM3E,CAAA;AAKN,8BAAsB,eAAe,CACjC,OAAO,EACP,QAAQ,SAAS,aAAa,GAAG,aAAa,EAC9C,eAAe,SAAS,sBAAsB,GAAG,sBAAsB,CACzE,SAAQ,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;aAOtB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa;IAP1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAC3D,OAAO,CAAC,YAAY,CAAuB;IAE3C,SAAS,aACL,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACD,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAClB,IAAI,EAAE,aAAa;IA0B1C,OAAO,CAAC,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,eAAe;IAQvE,IAAI,YAAY,IAAI,WAAW,CAAC,WAAW,CAAC,CAE3C;IAED,IAAI,SAAS,IAAI,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAEtD;IAED,IAAI,mBAAmB,IAAI,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAEhE;IAED,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAI1E,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAI1E,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAIzE,WAAW,IAAI,IAAI;IASnB,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;IAEnC,aAAa,IAAI,IAAI;IAKrB,aAAa;CAIhB"}
1
+ {"version":3,"file":"SourceTrackBase.d.ts","sourceRoot":"","sources":["../../../../../src/track/source/SourceTrackBase.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACX,MAAM,UAAU,CAAA;AAEjB,OAAO,EAGH,KAAK,KAAK,EACV,KAAK,WAAW,EAGnB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EAE5B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EACH,KAAK,kBAAkB,EAE1B,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAChE;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAA;CAClE;AAED,eAAO,MAAM,+BAA+B,EAAE,YAAY,CAAC,wBAAwB,CAM7E,CAAA;AAKN,8BAAsB,eAAe,CACjC,OAAO,EACP,QAAQ,SAAS,aAAa,GAAG,aAAa,EAC9C,kBAAkB,SAAS,wBAAwB,GAC/C,wBAAwB,CAC9B,SAAQ,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;aAQzB,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,aAAa;IAR1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAC3D,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,SAAS,CAA2B;IAE5C,SAAS,aACL,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,WAAW,EACD,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,EAClB,IAAI,EAAE,aAAa;IA0B1C,OAAO,CACH,YAAY,EAAE,mBAAmB,EACjC,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC;IAS1C,IAAI,YAAY,IAAI,WAAW,CAAC,WAAW,CAAC,CAE3C;IAED,IAAI,SAAS,IAAI,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAEtD;IAED,IAAI,mBAAmB,IAAI,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAEhE;IAED,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAI1E,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAI1E,kBAAkB,CAAC,WAAW,EAAE,WAAW,GAAG,oBAAoB,GAAG,IAAI;IAIzE,WAAW,IAAI,IAAI;IAuBnB,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAC7C,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;IAEnC,aAAa,IAAI,IAAI;IAKrB,aAAa;CAIhB"}
@@ -2,11 +2,12 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { TrackBase, trackBaseOptionsValidator, } from '../TrackBase';
5
+ import { TrackBase } from '../TrackBase';
6
6
  import { FixedPlaybackQuality } from './FixedPlaybackQuality';
7
- import { logDebug, redispatchEvents, } from '@amazon/vinyl-util';
7
+ import { createDisposer, logDebug, redispatchEvents, } from '@amazon/vinyl-util';
8
8
  import { createEmptyMediaQualityMetadata, mediaQualityMetadataValidator, } from '../../streaming/MediaQualityMetadata';
9
- export const sourceTrackBaseOptionsValidator = trackBaseOptionsValidator.extend({
9
+ import { trackConfigOptionsValidator, } from '../TrackFactory';
10
+ export const sourceTrackBaseOptionsValidator = trackConfigOptionsValidator.extend({
10
11
  qualityMetadata: mediaQualityMetadataValidator
11
12
  .partial()
12
13
  .maybe()
@@ -18,6 +19,7 @@ export class SourceTrackBase extends TrackBase {
18
19
  deps;
19
20
  fixedPlaybackQuality;
20
21
  _resolvedSrc = null;
22
+ activeSub = null;
21
23
  constructor(uri, type, src, deps) {
22
24
  super(uri, type, deps);
23
25
  this.src = src;
@@ -32,7 +34,10 @@ export class SourceTrackBase extends TrackBase {
32
34
  .catch(this.errorHandler);
33
35
  this.fixedPlaybackQuality = add(new FixedPlaybackQuality(emptyMediaQualityMetadata, deps));
34
36
  this.fixedPlaybackQuality.on('bufferingQualityChange', (event) => {
35
- this.deps.drmController.setBufferingDrmInfo(event.current, this.drmSessionAbort.value);
37
+ this.deps.drmController.setBufferingDrmInfo(event.current, {
38
+ trackUri: this.uri,
39
+ abort: this.drmSessionAbort.value,
40
+ });
36
41
  });
37
42
  redispatchEvents(this, this.fixedPlaybackQuality, [
38
43
  'streamingQualityChange',
@@ -44,7 +49,7 @@ export class SourceTrackBase extends TrackBase {
44
49
  super.preload(trackOptions, loadOptions);
45
50
  this.fixedPlaybackQuality.fixedQuality = {
46
51
  ...emptyMediaQualityMetadata,
47
- ...loadOptions.qualityMetadata,
52
+ ...loadOptions?.qualityMetadata,
48
53
  };
49
54
  }
50
55
  get contentTypes() {
@@ -66,15 +71,27 @@ export class SourceTrackBase extends TrackBase {
66
71
  return this.fixedPlaybackQuality.getPlaybackQuality(contentType);
67
72
  }
68
73
  onActivated() {
74
+ const { add, dispose } = createDisposer();
75
+ this.activeSub = dispose;
76
+ add(this.deps.playbackController.on('durationChange', (event) => {
77
+ this.setSeekRange({
78
+ start: 0,
79
+ end: event.current,
80
+ });
81
+ }));
69
82
  this.fixedPlaybackQuality.activate();
70
- this.deps.drmController.initializeForPlayback(this.fixedPlaybackQuality.fixedQuality, this.drmSessionAbort.value);
83
+ this.deps.drmController.initializeForPlayback(this.fixedPlaybackQuality.fixedQuality, { trackUri: this.uri, abort: this.drmSessionAbort.value });
71
84
  if (this._resolvedSrc != null)
72
85
  this.setSrc(this._resolvedSrc);
86
+ add(() => {
87
+ if (this._resolvedSrc != null)
88
+ this.clearSrc();
89
+ this.fixedPlaybackQuality.deactivate();
90
+ });
73
91
  }
74
92
  onDeactivated() {
75
- if (this._resolvedSrc != null)
76
- this.clearSrc();
77
- this.fixedPlaybackQuality.deactivate();
93
+ this.activeSub?.();
94
+ this.activeSub = null;
78
95
  }
79
96
  clearPrefetch() {
80
97
  // Source tracks do not prefetch