@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
@@ -76,6 +76,7 @@ describe('SegmentControllerImpl', () => {
76
76
  },
77
77
  ],
78
78
  minBufferTime: 10,
79
+ getAdBreaks: () => Promise.resolve([]),
79
80
  getDuration: () => Promise.resolve(100),
80
81
  };
81
82
  const mockQualitySelector = {
@@ -115,6 +116,16 @@ describe('SegmentControllerImpl', () => {
115
116
  expect(segmentProvider.options).toEqual(expectedOptions);
116
117
  segmentProvider.dispose();
117
118
  });
119
+ it('tags its logPrefix with the content type, not undefined', () => {
120
+ // Regression: the tag reads a param-property assigned after super(), so
121
+ // logPrefix is set in the constructor body, not an eager _undefined.
122
+ const audio = new SegmentControllerImpl(mockDeps, 'audio');
123
+ const video = new SegmentControllerImpl(mockDeps, 'video');
124
+ expect(audio.logPrefix).toMatch(/^Segment_audio\//);
125
+ expect(video.logPrefix).toMatch(/^Segment_video\//);
126
+ audio.dispose();
127
+ video.dispose();
128
+ });
118
129
  describe('activate and deactivate', () => {
119
130
  it('changes active state', () => {
120
131
  segmentController.activate();
@@ -231,6 +242,7 @@ describe('SegmentControllerImpl', () => {
231
242
  },
232
243
  ],
233
244
  minBufferTime: 10,
245
+ getAdBreaks: () => Promise.resolve([]),
234
246
  getDuration: () => Promise.resolve(110),
235
247
  };
236
248
  timelineData.value = Promise.resolve(extendedTimeline);
@@ -277,6 +289,18 @@ describe('SegmentControllerImpl', () => {
277
289
  await clock.tick(PREFETCH_POLL_THROTTLE);
278
290
  expect(segmentProvider.getSegment).not.toHaveBeenCalled();
279
291
  });
292
+ describe('but the controller is disposed', () => {
293
+ it('does not log the error or set the error state', () => {
294
+ // A prefetch error can settle after teardown, e.g. when
295
+ // dispose() runs between the failure resolving and this
296
+ // handler being invoked. A disposed controller should stay
297
+ // quiet rather than log a now-irrelevant failure.
298
+ segmentController.dispose();
299
+ segmentController['prefetchErrorHandler'](error);
300
+ expect(loggerRef.value.error).not.toHaveBeenCalled();
301
+ expect(segmentController.error).toBeNull();
302
+ });
303
+ });
280
304
  });
281
305
  describe('and the error is silent', () => {
282
306
  let mockSegmentReference;
@@ -332,6 +356,7 @@ describe('SegmentControllerImpl', () => {
332
356
  },
333
357
  ],
334
358
  minBufferTime: 10,
359
+ getAdBreaks: () => Promise.resolve([]),
335
360
  getDuration: () => Promise.resolve(100),
336
361
  });
337
362
  // segmentController is for 'audio', but only 'video' qualities exist
@@ -508,6 +533,47 @@ describe('SegmentControllerImpl', () => {
508
533
  });
509
534
  });
510
535
  });
536
+ describe('load span metrics', () => {
537
+ it('measures the first init and media segment fetch', async () => {
538
+ const spy = createEventSpy(segmentController, 'loadSpanMeasured');
539
+ await segmentController.getSegment(0);
540
+ await flushPromises();
541
+ expect(spy).toHaveBeenCalledWith(objectContaining({
542
+ kind: 'initSegment',
543
+ startTime: any(Number),
544
+ endTime: any(Number),
545
+ }));
546
+ expect(spy).toHaveBeenCalledWith(objectContaining({
547
+ kind: 'firstSegment',
548
+ startTime: any(Number),
549
+ endTime: any(Number),
550
+ }));
551
+ });
552
+ it('measures each span only once', async () => {
553
+ const spy = createEventSpy(segmentController, 'loadSpanMeasured');
554
+ await segmentController.getSegment(0);
555
+ await segmentController.getSegment(20);
556
+ await flushPromises();
557
+ const kinds = spy.calls.allArgs().map(([span]) => span.kind);
558
+ expect(kinds.filter((k) => k === 'initSegment').length).toBe(1);
559
+ expect(kinds.filter((k) => k === 'firstSegment').length).toBe(1);
560
+ });
561
+ it('re-arms after a failed fetch so a recovered load is measured', async () => {
562
+ let failCount = 0;
563
+ mockSegmentDataProvider.and.callFake(() => ++failCount <= 2
564
+ ? Promise.reject(new Error('failed segment'))
565
+ : Promise.resolve(new ArrayBuffer(0)));
566
+ const spy = createEventSpy(segmentController, 'loadSpanMeasured');
567
+ await expectAsync(segmentController.getSegment(0)).toBeRejected();
568
+ await flushPromises();
569
+ expect(spy).not.toHaveBeenCalled();
570
+ segmentController.reset();
571
+ await segmentController.getSegment(0);
572
+ await flushPromises();
573
+ expect(spy).toHaveBeenCalledWith(objectContaining({ kind: 'initSegment' }));
574
+ expect(spy).toHaveBeenCalledWith(objectContaining({ kind: 'firstSegment' }));
575
+ });
576
+ });
511
577
  describe('minBufferTime', () => {
512
578
  describe('when the requested time is within minBufferTime of the segment end', () => {
513
579
  describe('and there is a next segment', () => {
@@ -3,8 +3,8 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { expectTypeStrictlyEquals } from '@amazon/vinyl-util/browserTestUtil';
6
- describe('ALL_TRACK_EVENTS', () => {
7
- it('provides a comprehensive list of all track events', () => {
6
+ describe('ALL_STREAMING_EVENTS', () => {
7
+ it('provides a comprehensive list of all streaming events', () => {
8
8
  expectTypeStrictlyEquals(true);
9
9
  });
10
10
  });
@@ -639,6 +639,116 @@ describe('QualitySelectorImpl', () => {
639
639
  expect(selector.selectQuality(qualities, prefetchState)).toEqual(0);
640
640
  });
641
641
  });
642
+ describe('maxHeight / maxWidth', () => {
643
+ const videoQualities = [
644
+ {
645
+ ...createEmptyMediaQualityMetadata(),
646
+ contentType: 'video',
647
+ bandwidth: 1000,
648
+ bandwidthTotal: 1000,
649
+ width: 1920,
650
+ height: 1080,
651
+ qualityId: '1080p',
652
+ },
653
+ {
654
+ ...createEmptyMediaQualityMetadata(),
655
+ contentType: 'video',
656
+ bandwidth: 500,
657
+ bandwidthTotal: 500,
658
+ width: 1280,
659
+ height: 720,
660
+ qualityId: '720p',
661
+ },
662
+ {
663
+ ...createEmptyMediaQualityMetadata(),
664
+ contentType: 'video',
665
+ bandwidth: 100,
666
+ bandwidthTotal: 100,
667
+ width: 640,
668
+ height: 360,
669
+ qualityId: '360p',
670
+ },
671
+ ];
672
+ const prefetchState = {
673
+ fetchedTime: 0,
674
+ previousQuality: null,
675
+ active: false,
676
+ };
677
+ beforeEach(() => {
678
+ // Plenty of bandwidth for the highest quality.
679
+ metrics.estimatedDownlinkBandwidth.ewmaLow = 5000;
680
+ });
681
+ it('excludes video qualities above the max height', () => {
682
+ options.value = { ...options.value, maxHeight: 720 };
683
+ // 1080p is excluded; highest remaining is 720p (index 1).
684
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(1);
685
+ });
686
+ it('excludes video qualities above the max width', () => {
687
+ options.value = { ...options.value, maxWidth: 1280 };
688
+ // 1920-wide is excluded; highest remaining is 1280-wide (index 1).
689
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(1);
690
+ });
691
+ it('applies both width and height caps together', () => {
692
+ options.value = { ...options.value, maxWidth: 700, maxHeight: 400 };
693
+ // Only 360p (640x360) fits both caps.
694
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(2);
695
+ });
696
+ it('keeps the smallest quality when none fit within the cap', () => {
697
+ options.value = { ...options.value, maxHeight: 100 };
698
+ // No video fits; falls back to the smallest (last) quality so video
699
+ // still plays.
700
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(2);
701
+ });
702
+ it('treats null as no cap', () => {
703
+ options.value = {
704
+ ...options.value,
705
+ maxHeight: null,
706
+ maxWidth: null,
707
+ };
708
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(0);
709
+ });
710
+ it('does not restrict audio qualities by resolution', () => {
711
+ const audioQualities = videoQualities.map((q) => ({
712
+ ...q,
713
+ contentType: 'audio',
714
+ width: null,
715
+ height: null,
716
+ }));
717
+ options.value = { ...options.value, maxHeight: 100 };
718
+ // Audio ignores the resolution cap; highest is selected.
719
+ expect(selector.selectQuality(audioQualities, prefetchState)).toEqual(0);
720
+ });
721
+ it('treats qualities with unknown dimensions as within the cap', () => {
722
+ const unknownDims = videoQualities.map((q) => ({
723
+ ...q,
724
+ width: null,
725
+ height: null,
726
+ }));
727
+ options.value = { ...options.value, maxHeight: 100 };
728
+ // Unknown height cannot be filtered out; highest is selected.
729
+ expect(selector.selectQuality(unknownDims, prefetchState)).toEqual(0);
730
+ });
731
+ it('has no effect when strategy is HIGHEST', () => {
732
+ options.value = {
733
+ ...options.value,
734
+ strategy: AbrStrategy.HIGHEST,
735
+ maxHeight: 100,
736
+ };
737
+ // HIGHEST always returns 0, regardless of the cap.
738
+ expect(selector.selectQuality(videoQualities, prefetchState)).toEqual(0);
739
+ });
740
+ it('does not pin the previous quality when it exceeds a lowered cap', () => {
741
+ metrics.estimatedDownlinkBandwidth.ewmaLow = 5000;
742
+ options.value = { ...options.value, maxHeight: 720 };
743
+ // Previously on 1080p with ample buffer; the lowered cap forces a
744
+ // switch down rather than pinning the now-too-large previous quality.
745
+ expect(selector.selectQuality(videoQualities, {
746
+ fetchedTime: 100, // >= highBufferThreshold
747
+ previousQuality: videoQualities[0], // 1080p
748
+ active: true,
749
+ })).toEqual(1);
750
+ });
751
+ });
642
752
  describe('toString', () => {
643
753
  it('returns a string', () => {
644
754
  expect(selector.toString()).toContain('QualitySelectorImpl');
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { flushPromises, useMockTime } from '@amazon/vinyl-util/browserTestUtil';
6
6
  import { MockMediaSourceController, MockPlaybackController, MockSegmentController, MockSourceBufferController, } from '@amazon/vinyl/vinylTestUtil';
7
- import { BufferingControllerImpl, clearSourceBufferQuota, createEmptyMediaQualityMetadata, DEFAULT_MAX_APPEND_SIZE, getSourceBufferQuota, MIN_APPEND_SIZE, POLL_BUFFER_THROTTLE, QUOTA_REACHED_SCALE, SEGMENT_START_AFFORDANCE, } from '@amazon/vinyl';
7
+ import { BufferingControllerImpl, clearCodecDenylist, clearSourceBufferQuota, createEmptyMediaQualityMetadata, DEFAULT_MAX_APPEND_SIZE, getDenylistedCodecs, getSourceBufferQuota, MIN_APPEND_SIZE, POLL_BUFFER_THROTTLE, QUOTA_REACHED_SCALE, SEGMENT_START_AFFORDANCE, SourceBufferError, } from '@amazon/vinyl';
8
8
  import { Abort, AbortError, Deferred, floorToNearest, LogLevel, } from '@amazon/vinyl-util';
9
9
  import { createEventSpy, useMockLogger } from '@amazon/vinyl-util/testUtil';
10
10
  var any = jasmine.any;
@@ -226,6 +226,27 @@ describe('BufferingControllerImpl', () => {
226
226
  expect(sourceBufferController.buffered.ranges).toEqual([[40, 60]]);
227
227
  });
228
228
  });
229
+ describe('hasData', () => {
230
+ beforeEach(() => {
231
+ bufferingController = createBufferingController();
232
+ bufferingController.activate();
233
+ });
234
+ it('flips true when the buffer fills and false when cleared', async () => {
235
+ const spy = createEventSpy(bufferingController, 'hasDataChange');
236
+ expect(bufferingController.hasData).toBeFalse();
237
+ setSegmentList([1]);
238
+ await open();
239
+ expect(bufferingController.hasData).toBeTrue();
240
+ expect(spy).toHaveBeenCalledWith({ previous: false, current: true });
241
+ // Stop the segment provider so the post-clear re-poll can't re-fill.
242
+ segmentController.getSegment.and.returnValue(Promise.resolve(null));
243
+ spy.calls.reset();
244
+ bufferingController.clear();
245
+ await nextPollImmediate();
246
+ expect(bufferingController.hasData).toBeFalse();
247
+ expect(spy).toHaveBeenCalledWith({ previous: true, current: false });
248
+ });
249
+ });
229
250
  describe('when segments exceed max append size', () => {
230
251
  beforeEach(() => {
231
252
  bufferingController = createBufferingController({
@@ -451,6 +472,34 @@ describe('BufferingControllerImpl', () => {
451
472
  expect(segmentController.getSegment).toHaveBeenCalledTimes(1);
452
473
  });
453
474
  });
475
+ describe('then seeking to an unbuffered position', () => {
476
+ it('reopens buffering and appends from the new position', async () => {
477
+ // Replace the default controller with one that buffers ahead.
478
+ bufferingController.dispose();
479
+ // Buffer two segments, then the stream ends.
480
+ setSegmentList([1, 1]);
481
+ bufferingController = createBufferingController({
482
+ minBuffer: 100,
483
+ });
484
+ bufferingController.activate();
485
+ await open();
486
+ await clock.tick(0, 0, 0, 0);
487
+ expect(bufferingController.bufferingEnded).toBeTrue();
488
+ expect(sourceBufferController.buffered.ranges).toEqual([
489
+ [0, 20],
490
+ ]);
491
+ // More content becomes available; seek beyond the buffered range.
492
+ segmentController.getSegment.and.callFake((time) => Promise.resolve(createMockSegment(time)));
493
+ segmentController.getSegment.calls.reset();
494
+ playbackController.currentTime = 50;
495
+ playbackController.dispatch('seeking', {});
496
+ await clock.tick(0, 0, 0, 0);
497
+ // The reopen flag lets buffering resume despite the ended state.
498
+ expect(bufferingController.bufferingEnded).toBeFalse();
499
+ expect(segmentController.getSegment).toHaveBeenCalled();
500
+ expect(sourceBufferController.buffered.getRangeAt(50, 0.5)).not.toBeNull();
501
+ });
502
+ });
454
503
  });
455
504
  describe('when append throws a QuotaExceededError', () => {
456
505
  afterEach(() => {
@@ -502,6 +551,65 @@ describe('BufferingControllerImpl', () => {
502
551
  });
503
552
  });
504
553
  });
554
+ describe('when append fails to decode a codec (SourceBufferError)', () => {
555
+ afterEach(() => {
556
+ clearCodecDenylist();
557
+ });
558
+ /**
559
+ * Configures segments whose quality carries the given mimeType so the
560
+ * codec-fallback path (which reads bufferingQuality.mimeType) can run.
561
+ */
562
+ function setSegmentsWithMimeType(mimeType) {
563
+ const segments = Array.from({ length: 20 }, (_, i) => {
564
+ const segment = createMockSegment(i * 10, 1);
565
+ segment.quality.contentType = 'video';
566
+ segment.quality.mimeType = mimeType;
567
+ return Promise.resolve(segment);
568
+ });
569
+ segmentController.getSegment.and.returnValues(...segments, Promise.resolve(null));
570
+ segmentController.dispatch('change', {});
571
+ }
572
+ it('denylists the codec and emits codecUnsupported instead of erroring', async () => {
573
+ const mimeType = 'video/mp4; codecs="hvc1.1"';
574
+ setSegmentsWithMimeType(mimeType);
575
+ bufferingController = createBufferingController();
576
+ bufferingController.activate();
577
+ const codecUnsupported = createEventSpy(bufferingController, 'codecUnsupported');
578
+ sourceBufferController.append.and.rejectWith(new SourceBufferError());
579
+ await open();
580
+ expect(bufferingController.error).toBeNull();
581
+ expect(codecUnsupported).toHaveBeenCalledOnceWith({
582
+ mimeType,
583
+ contentType: 'video',
584
+ });
585
+ expect(getDenylistedCodecs()).toContain('hvc1.1');
586
+ });
587
+ it('errors when the failing quality has no mimeType', async () => {
588
+ // Default segments carry no mimeType, so the fallback cannot
589
+ // identify a codec and the error is fatal.
590
+ setSegmentList(Array(20).fill(1), 0, 'video');
591
+ bufferingController = createBufferingController();
592
+ bufferingController.activate();
593
+ sourceBufferController.append.and.rejectWith(new SourceBufferError());
594
+ await open();
595
+ expect(bufferingController.error).toBeInstanceOf(SourceBufferError);
596
+ expect(getDenylistedCodecs()).toEqual([]);
597
+ });
598
+ it('errors when the codec is already denylisted (no alternative)', async () => {
599
+ const mimeType = 'video/mp4; codecs="hvc1.1"';
600
+ setSegmentsWithMimeType(mimeType);
601
+ bufferingController = createBufferingController();
602
+ bufferingController.activate();
603
+ sourceBufferController.append.and.rejectWith(new SourceBufferError());
604
+ // First failure: recoverable (denylist + codecUnsupported).
605
+ await open();
606
+ expect(bufferingController.error).toBeNull();
607
+ // A repeat failure for the same, already-denylisted codec is not
608
+ // recoverable and falls through to the error state.
609
+ await clock.tick(...Array(5).fill(0));
610
+ expect(bufferingController.error).toBeInstanceOf(SourceBufferError);
611
+ });
612
+ });
505
613
  describe('when media source provided is already open', () => {
506
614
  it('polls on construction', async () => {
507
615
  await open();
@@ -543,11 +651,13 @@ describe('BufferingControllerImpl', () => {
543
651
  expect(bufferingController.playbackQuality?.qualityId).toBe('q1');
544
652
  expect(playbackQualityChange).toHaveBeenCalledTimes(1);
545
653
  playbackQualityChange.calls.reset();
546
- // time < 20 will still be q1
547
- await setTime(12);
654
+ // Playback advances while buffering stays ahead of the playhead
655
+ // (a playhead that outruns the buffer is treated as a disconnect
656
+ // and clears). time < 20 will still be q1.
657
+ await setTime(9);
548
658
  expect(playbackQualityChange).not.toHaveBeenCalled();
549
659
  // 20-30s will now be buffered but q1 is still playing
550
- await setTime(19);
660
+ await setTime(18);
551
661
  expect(playbackQualityChange).not.toHaveBeenCalled();
552
662
  // now moving onto q2
553
663
  await setTime(20);
@@ -595,12 +705,14 @@ describe('BufferingControllerImpl', () => {
595
705
  }),
596
706
  });
597
707
  playbackQualityChange.calls.reset();
598
- // Change back to the q1
708
+ // A backwards seek to a buffered position keeps the buffered
709
+ // data and does not trigger a quality change.
599
710
  await setTime(changeTime - 1);
600
711
  // A backwards time update can only happen after a seek
601
712
  playbackController.dispatch('seeking', {});
602
713
  await nextPollImmediate();
603
- expect(bufferingController.playbackQuality?.qualityId).toBe('q1');
714
+ expect(playbackQualityChange).not.toHaveBeenCalled();
715
+ expect(bufferingController.playbackQuality?.qualityId).toBe('q2');
604
716
  });
605
717
  });
606
718
  });
@@ -652,25 +764,15 @@ describe('BufferingControllerImpl', () => {
652
764
  }),
653
765
  });
654
766
  bufferingQualityChange.calls.reset();
655
- // Go back to time 0, buffering first quality
767
+ // A backwards seek to time 0 keeps the buffered data (no clear).
768
+ // The buffering frontier is unchanged, so bufferingQuality stays
769
+ // q2 and no change event fires.
656
770
  playbackController.currentTime = 0;
657
771
  playbackController.dispatch('seeking', {});
658
772
  await flushPromises();
659
- expect(bufferingQualityChange).toHaveBeenCalledOnceWith({
660
- previous: objectContaining({
661
- qualityId: 'q2',
662
- }),
663
- current: null,
664
- });
665
- bufferingQualityChange.calls.reset();
666
773
  await nextPollImmediate();
667
- expect(bufferingQualityChange).toHaveBeenCalledOnceWith({
668
- previous: null,
669
- current: objectContaining({
670
- qualityId: 'q1',
671
- }),
672
- });
673
- expect(bufferingController.bufferingQuality?.qualityId).toBe('q1');
774
+ expect(bufferingQualityChange).not.toHaveBeenCalled();
775
+ expect(bufferingController.bufferingQuality?.qualityId).toBe('q2');
674
776
  });
675
777
  });
676
778
  });
@@ -3,7 +3,7 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { DURATION_PADDING, LIVE_DURATION, MediaSourceControllerImpl, MediaSourceError, } from '@amazon/vinyl';
6
- import { AbortError, Deferred } from '@amazon/vinyl-util';
6
+ import { AbortError, Deferred, IllegalStateError, } from '@amazon/vinyl-util';
7
7
  import { flushPromises, implementEventFakes, mockEvent, MockMediaSource, MockSourceBuffer, } from '@amazon/vinyl-util/browserTestUtil';
8
8
  import { data } from '@amazon/vinyl-observable';
9
9
  var createSpy = jasmine.createSpy;
@@ -14,12 +14,14 @@ function createVodTimeline(duration = VOD_DURATION) {
14
14
  return {
15
15
  periods: [],
16
16
  minBufferTime: 0,
17
+ getAdBreaks: () => Promise.resolve([]),
17
18
  getDuration: () => Promise.resolve(duration),
18
19
  };
19
20
  }
20
21
  const liveTimeline = {
21
22
  periods: [],
22
23
  minBufferTime: 0,
24
+ getAdBreaks: () => Promise.resolve([]),
23
25
  getDuration: () => Promise.resolve(Infinity),
24
26
  };
25
27
  describe('MediaSourceControllerImpl', () => {
@@ -29,6 +31,7 @@ describe('MediaSourceControllerImpl', () => {
29
31
  let mockMediaSource;
30
32
  let deps;
31
33
  let controller;
34
+ let objectUrl;
32
35
  function open() {
33
36
  mockMediaSource.readyState = 'open';
34
37
  mockMediaSource.dispatchEvent(mockEvent('sourceopen'));
@@ -46,21 +49,46 @@ describe('MediaSourceControllerImpl', () => {
46
49
  contentTypesValue,
47
50
  mediaTimelineTransformed,
48
51
  };
52
+ // activate() now owns media source creation and the object URL, so the
53
+ // real URL APIs (which reject non-Blob args under Node) are stubbed.
54
+ spyOn(URL, 'createObjectURL').and.returnValue('blob:test-url');
55
+ spyOn(URL, 'revokeObjectURL');
49
56
  controller = new MediaSourceControllerImpl(deps);
57
+ objectUrl = controller.activate();
50
58
  });
51
59
  afterEach(() => {
52
60
  controller.dispose();
53
61
  });
54
- describe('constructor', () => {
62
+ describe('activate', () => {
55
63
  it('creates media source using factory', () => {
56
64
  expect(mediaSourceFactory).toHaveBeenCalledOnceWith();
57
65
  });
66
+ it('returns an object url for the media source', () => {
67
+ expect(URL.createObjectURL).toHaveBeenCalledWith(mockMediaSource);
68
+ expect(objectUrl).toBe('blob:test-url');
69
+ });
58
70
  });
59
71
  describe('readyState', () => {
60
72
  it('returns media source ready state', () => {
61
73
  mockMediaSource.readyState = 'open';
62
74
  expect(controller.readyState).toBe('open');
63
75
  });
76
+ it("returns 'closed' when there is no active media source", () => {
77
+ const freshController = new MediaSourceControllerImpl(deps);
78
+ expect(freshController.readyState).toBe('closed');
79
+ });
80
+ });
81
+ describe('deactivate', () => {
82
+ it('returns early and does not throw when never activated', () => {
83
+ const freshController = new MediaSourceControllerImpl(deps);
84
+ expect(() => freshController.deactivate()).not.toThrow();
85
+ expect(URL.revokeObjectURL).not.toHaveBeenCalled();
86
+ });
87
+ it('swallows errors thrown while revoking the object url', () => {
88
+ ;
89
+ URL.revokeObjectURL.and.throwError(new Error('revoke failed'));
90
+ expect(() => controller.deactivate()).not.toThrow();
91
+ });
64
92
  });
65
93
  describe('duration', () => {
66
94
  it('sets media source duration after sourceopen', async () => {
@@ -92,6 +120,7 @@ describe('MediaSourceControllerImpl', () => {
92
120
  mediaTimelineTransformed.value = Promise.resolve({
93
121
  periods: [],
94
122
  minBufferTime: 0,
123
+ getAdBreaks: () => Promise.resolve([]),
95
124
  getDuration: () => Promise.reject(error),
96
125
  });
97
126
  open();
@@ -106,6 +135,7 @@ describe('MediaSourceControllerImpl', () => {
106
135
  mediaTimelineTransformed.value = Promise.resolve({
107
136
  periods: [],
108
137
  minBufferTime: 0,
138
+ getAdBreaks: () => Promise.resolve([]),
109
139
  getDuration: () => Promise.reject(new AbortError()),
110
140
  });
111
141
  open();
@@ -117,6 +147,7 @@ describe('MediaSourceControllerImpl', () => {
117
147
  mediaTimelineTransformed.value = Promise.resolve({
118
148
  periods: [],
119
149
  minBufferTime: 0,
150
+ getAdBreaks: () => Promise.resolve([]),
120
151
  getDuration: () => deferred,
121
152
  });
122
153
  open();
@@ -186,6 +217,10 @@ describe('MediaSourceControllerImpl', () => {
186
217
  expect(readyToAppendSpy).toHaveBeenCalledTimes(1);
187
218
  });
188
219
  });
220
+ it('throws IllegalStateError when not active', () => {
221
+ const freshController = new MediaSourceControllerImpl(deps);
222
+ expect(() => freshController.createSourceBuffer('audio', 'audio/mp4')).toThrowError(IllegalStateError, 'cannot create a source buffer when not active');
223
+ });
189
224
  it('throws MediaSourceError when addSourceBuffer fails', () => {
190
225
  const error = new Error('test error');
191
226
  mockMediaSource.addSourceBuffer.and.throwError(error);
@@ -217,14 +252,6 @@ describe('MediaSourceControllerImpl', () => {
217
252
  expect(mockMediaSource.endOfStream).toHaveBeenCalledWith('decode');
218
253
  });
219
254
  });
220
- describe('createUrl', () => {
221
- it('creates object URL for media source', () => {
222
- spyOn(URL, 'createObjectURL').and.returnValue('blob:test-url');
223
- const url = controller.createUrl();
224
- expect(URL.createObjectURL).toHaveBeenCalledWith(mockMediaSource);
225
- expect(url).toBe('blob:test-url');
226
- });
227
- });
228
255
  });
229
256
  describe('MediaSourceError', () => {
230
257
  it('creates error with message and reason', () => {
@@ -96,6 +96,10 @@ describe('SourceBufferControllerImpl', () => {
96
96
  await flushPromises();
97
97
  expect(controller.isBusy()).withContext('isBusy').toBeFalse();
98
98
  });
99
+ it('tags with the content type, not undefined', () => {
100
+ expect(controller[Symbol.toStringTag]).toBe('SourceBuffer_audio');
101
+ expect(controller.logPrefix).toMatch(/^SourceBuffer_audio\//);
102
+ });
99
103
  describe('enqueue', () => {
100
104
  it('enqueues a task to execute when the source buffer is next idle', async () => {
101
105
  expect(await controller.enqueue(() => Promise.resolve(3))).toBe(3);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=codecDenylist.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codecDenylist.test.d.ts","sourceRoot":"","sources":["../../../../../../test/unit/streaming/buffering/codecDenylist.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,56 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { clearCodecDenylist, denylistCodecsFromMimeType, getDenylistedCodecs, isMimeTypeDenylisted, } from '@amazon/vinyl';
6
+ describe('codecDenylist', () => {
7
+ afterEach(() => {
8
+ clearCodecDenylist();
9
+ });
10
+ describe('denylistCodecsFromMimeType', () => {
11
+ it('adds codecs and returns true on first denylist', () => {
12
+ expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"')).toBeTrue();
13
+ expect(getDenylistedCodecs()).toContain('hvc1.1');
14
+ });
15
+ it('returns false when all codecs are already denylisted', () => {
16
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
17
+ expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"')).toBeFalse();
18
+ });
19
+ it('returns true when at least one codec is newly added', () => {
20
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
21
+ expect(denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1,ec-3"')).toBeTrue();
22
+ });
23
+ it('returns false for a mimeType with no codecs', () => {
24
+ expect(denylistCodecsFromMimeType('video/mp4')).toBeFalse();
25
+ });
26
+ it('stores codecs lowercased', () => {
27
+ denylistCodecsFromMimeType('video/mp4; codecs="HVC1.1"');
28
+ expect(getDenylistedCodecs()).toContain('hvc1.1');
29
+ });
30
+ });
31
+ describe('isMimeTypeDenylisted', () => {
32
+ it('returns true when a codec is denylisted', () => {
33
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
34
+ expect(isMimeTypeDenylisted('video/mp4; codecs="hvc1.1"')).toBeTrue();
35
+ });
36
+ it('is case-insensitive', () => {
37
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
38
+ expect(isMimeTypeDenylisted('video/mp4; codecs="HVC1.1"')).toBeTrue();
39
+ });
40
+ it('returns false when no codec is denylisted', () => {
41
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
42
+ expect(isMimeTypeDenylisted('video/mp4; codecs="avc1.64001f"')).toBeFalse();
43
+ });
44
+ it('returns false for a mimeType with no codecs', () => {
45
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
46
+ expect(isMimeTypeDenylisted('video/mp4')).toBeFalse();
47
+ });
48
+ });
49
+ describe('clearCodecDenylist', () => {
50
+ it('empties the denylist', () => {
51
+ denylistCodecsFromMimeType('video/mp4; codecs="hvc1.1"');
52
+ clearCodecDenylist();
53
+ expect(getDenylistedCodecs()).toEqual([]);
54
+ });
55
+ });
56
+ });
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=createAllowedContentTypesValue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAllowedContentTypesValue.test.d.ts","sourceRoot":"","sources":["../../../../../test/unit/streaming/createAllowedContentTypesValue.test.ts"],"names":[],"mappings":""}