@amazon/vinyl 1.1.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (857) hide show
  1. package/dist/index.cjs +9043 -6375
  2. package/dist/index.cjs.map +4 -4
  3. package/dist/index.js +9314 -6592
  4. package/dist/index.js.map +4 -4
  5. package/dist/test/benchmark.es5.js +298 -348
  6. package/dist/test/benchmark.js +2820 -3212
  7. package/dist/test/benchmark.js.map +4 -4
  8. package/dist/test/integ.es5.js +1621 -933
  9. package/dist/test/integ.js +49633 -36792
  10. package/dist/test/integ.js.map +4 -4
  11. package/dist/test/jasmineHtml.es5.js +8 -8
  12. package/dist/test/jasmineHtml.js +8 -4
  13. package/dist/test/jasmineHtml.js.map +3 -3
  14. package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
  15. package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
  16. package/dist/types/current/ad/AdController.d.ts +229 -0
  17. package/dist/types/current/ad/AdController.d.ts.map +1 -0
  18. package/dist/types/current/ad/AdController.js +19 -0
  19. package/dist/types/current/ad/AdControllerImpl.d.ts +146 -0
  20. package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
  21. package/dist/types/current/ad/AdControllerImpl.js +705 -0
  22. package/dist/types/current/ad/AdError.d.ts +6 -0
  23. package/dist/types/current/ad/AdError.d.ts.map +1 -0
  24. package/dist/types/current/ad/AdError.js +14 -0
  25. package/dist/types/current/ad/AdsProvider.d.ts +28 -0
  26. package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
  27. package/dist/types/current/ad/AdsProvider.js +5 -0
  28. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  29. package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
  30. package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
  31. package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
  32. package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
  33. package/dist/types/current/ad/discoverHlsInterstitials.js +246 -0
  34. package/dist/types/current/client/Capabilities.d.ts.map +1 -1
  35. package/dist/types/current/client/CapabilitiesImpl.d.ts.map +1 -1
  36. package/dist/types/current/drm/DrmController.d.ts +31 -6
  37. package/dist/types/current/drm/DrmController.d.ts.map +1 -1
  38. package/dist/types/current/drm/DrmControllerImpl.d.ts +15 -6
  39. package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
  40. package/dist/types/current/drm/DrmControllerImpl.js +92 -21
  41. package/dist/types/current/drm/DrmKeySystemResolver.d.ts +1 -1
  42. package/dist/types/current/drm/DrmKeySystemResolver.d.ts.map +1 -1
  43. package/dist/types/current/drm/DrmKeySystemResolver.js +1 -1
  44. package/dist/types/current/drm/DrmOptions.d.ts +1 -1
  45. package/dist/types/current/drm/DrmOptions.d.ts.map +1 -1
  46. package/dist/types/current/drm/DrmOptions.js +1 -1
  47. package/dist/types/current/drm/commonEme/CommonEme.d.ts +2 -2
  48. package/dist/types/current/drm/commonEme/CommonEme.d.ts.map +1 -1
  49. package/dist/types/current/drm/commonEme/CommonEmeFactory.d.ts +1 -1
  50. package/dist/types/current/drm/commonEme/CommonEmeFactory.d.ts.map +1 -1
  51. package/dist/types/current/drm/commonEme/MsCommonEme.d.ts +1 -1
  52. package/dist/types/current/drm/commonEme/MsCommonEme.d.ts.map +1 -1
  53. package/dist/types/current/drm/commonEme/MsCommonEme.js +1 -1
  54. package/dist/types/current/drm/commonEme/StandardCommonEme.d.ts +1 -1
  55. package/dist/types/current/drm/commonEme/StandardCommonEme.d.ts.map +1 -1
  56. package/dist/types/current/drm/commonEme/WebKitCommonEme.d.ts +2 -2
  57. package/dist/types/current/drm/commonEme/WebKitCommonEme.d.ts.map +1 -1
  58. package/dist/types/current/drm/commonEme/WebKitCommonEme.js +1 -1
  59. package/dist/types/current/drm/commonEme/createDrmErrorHandler.js +1 -1
  60. package/dist/types/current/drm/licenseProvider/LicenseProvider.d.ts +1 -1
  61. package/dist/types/current/drm/licenseProvider/LicenseProvider.d.ts.map +1 -1
  62. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  63. package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts.map +1 -1
  64. package/dist/types/current/drm/util/unpackPlayReadyChallenge.js +5 -0
  65. package/dist/types/current/global/environment.d.ts +6 -2
  66. package/dist/types/current/global/environment.d.ts.map +1 -1
  67. package/dist/types/current/global/environment.js +4 -3
  68. package/dist/types/current/global/initializeVinylGlobal.js +1 -1
  69. package/dist/types/current/index.d.ts +151 -126
  70. package/dist/types/current/index.d.ts.map +1 -1
  71. package/dist/types/current/index.js +151 -126
  72. package/dist/types/current/patch/media/MediaElementPatchOptions.js +1 -1
  73. package/dist/types/current/patch/media/patchMediaElement.js +1 -1
  74. package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
  75. package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts.map +1 -1
  76. package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
  77. package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts.map +1 -1
  78. package/dist/types/current/playback/PlaybackControllerImpl.d.ts +2 -1
  79. package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
  80. package/dist/types/current/playback/PlaybackControllerImpl.js +48 -9
  81. package/dist/types/current/playback/PlaybackSource.d.ts +1 -1
  82. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts +6 -1
  83. package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
  84. package/dist/types/current/playback/ReadonlyPlaybackController.js +1 -0
  85. package/dist/types/current/playback/error/ReportableMediaError.js +1 -1
  86. package/dist/types/current/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
  87. package/dist/types/current/playback/logging/playbackStateLoggingHandler.d.ts.map +1 -1
  88. package/dist/types/current/playback/logging/playbackStateLoggingHandler.js +1 -1
  89. package/dist/types/current/playback/nextHasMetadata.d.ts +1 -1
  90. package/dist/types/current/playback/nextHasMetadata.d.ts.map +1 -1
  91. package/dist/types/current/streaming/ContentStream.d.ts +12 -5
  92. package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
  93. package/dist/types/current/streaming/ContentStream.js +19 -2
  94. package/dist/types/current/streaming/ContentStreamingOptions.d.ts +2 -2
  95. package/dist/types/current/streaming/ContentStreamingOptions.d.ts.map +1 -1
  96. package/dist/types/current/streaming/LoadMetric.d.ts +58 -0
  97. package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
  98. package/dist/types/current/streaming/LoadMetric.js +5 -0
  99. package/dist/types/current/streaming/ManifestController.d.ts +16 -1
  100. package/dist/types/current/streaming/ManifestController.d.ts.map +1 -1
  101. package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
  102. package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
  103. package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
  104. package/dist/types/current/streaming/MediaQualityMetadata.d.ts +18 -2
  105. package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
  106. package/dist/types/current/streaming/MediaQualityMetadata.js +7 -1
  107. package/dist/types/current/streaming/MediaTimeline.d.ts +12 -5
  108. package/dist/types/current/streaming/MediaTimeline.d.ts.map +1 -1
  109. package/dist/types/current/streaming/SegmentController.d.ts +7 -7
  110. package/dist/types/current/streaming/SegmentController.d.ts.map +1 -1
  111. package/dist/types/current/streaming/SegmentControllerImpl.d.ts +17 -6
  112. package/dist/types/current/streaming/SegmentControllerImpl.d.ts.map +1 -1
  113. package/dist/types/current/streaming/SegmentControllerImpl.js +72 -25
  114. package/dist/types/current/streaming/SegmentReference.d.ts +1 -1
  115. package/dist/types/current/streaming/SegmentReference.d.ts.map +1 -1
  116. package/dist/types/current/streaming/StreamingEventMap.d.ts +39 -2
  117. package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
  118. package/dist/types/current/streaming/StreamingEventMap.js +4 -0
  119. package/dist/types/current/streaming/abr/QualitySelector.d.ts +1 -1
  120. package/dist/types/current/streaming/abr/QualitySelector.d.ts.map +1 -1
  121. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts +46 -3
  122. package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts.map +1 -1
  123. package/dist/types/current/streaming/abr/QualitySelectorImpl.js +46 -5
  124. package/dist/types/current/streaming/buffering/BufferingController.d.ts +40 -13
  125. package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
  126. package/dist/types/current/streaming/buffering/BufferingController.js +80 -27
  127. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts +52 -21
  128. package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
  129. package/dist/types/current/streaming/buffering/MediaSourceController.js +126 -44
  130. package/dist/types/current/streaming/buffering/SourceBufferController.d.ts +1 -1
  131. package/dist/types/current/streaming/buffering/SourceBufferController.d.ts.map +1 -1
  132. package/dist/types/current/streaming/buffering/SourceBufferController.js +5 -2
  133. package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
  134. package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
  135. package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
  136. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
  137. package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
  138. package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
  139. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts +5 -2
  140. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
  141. package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +34 -3
  142. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  143. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
  144. package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
  145. package/dist/types/current/streaming/mediaTimelineFilter.d.ts +3 -3
  146. package/dist/types/current/streaming/mediaTimelineFilter.d.ts.map +1 -1
  147. package/dist/types/current/streaming/mediaTimelineFilter.js +1 -1
  148. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts +25 -7
  149. package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts.map +1 -1
  150. package/dist/types/current/streaming/mediaTimelineLanguageFilter.js +61 -16
  151. package/dist/types/current/streaming/util/segment.d.ts +1 -1
  152. package/dist/types/current/streaming/util/segment.d.ts.map +1 -1
  153. package/dist/types/current/text/SidecarTextTrackController.d.ts +91 -0
  154. package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
  155. package/dist/types/current/text/SidecarTextTrackController.js +237 -0
  156. package/dist/types/current/text/SidecarTextTrackLoader.d.ts +60 -0
  157. package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
  158. package/dist/types/current/text/SidecarTextTrackLoader.js +144 -0
  159. package/dist/types/current/text/TextTrack.d.ts +125 -0
  160. package/dist/types/current/text/TextTrack.d.ts.map +1 -0
  161. package/dist/types/current/text/TextTrack.js +9 -0
  162. package/dist/types/current/text/VttCueStyle.d.ts +41 -0
  163. package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
  164. package/dist/types/current/text/VttCueStyle.js +45 -0
  165. package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
  166. package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
  167. package/dist/types/current/text/discoverDashTextTracks.js +109 -0
  168. package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
  169. package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
  170. package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
  171. package/dist/types/current/text/parseWebVtt.d.ts +46 -0
  172. package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
  173. package/dist/types/current/text/parseWebVtt.js +120 -0
  174. package/dist/types/current/text/pickPreferredTextTrack.d.ts +14 -0
  175. package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
  176. package/dist/types/current/text/pickPreferredTextTrack.js +68 -0
  177. package/dist/types/current/track/AutoResetController.d.ts +37 -12
  178. package/dist/types/current/track/AutoResetController.d.ts.map +1 -1
  179. package/dist/types/current/track/AutoResetController.js +38 -28
  180. package/dist/types/current/track/SeekRange.d.ts +9 -0
  181. package/dist/types/current/track/SeekRange.d.ts.map +1 -0
  182. package/dist/types/current/track/SeekRange.js +5 -0
  183. package/dist/types/current/track/Track.d.ts +50 -7
  184. package/dist/types/current/track/Track.d.ts.map +1 -1
  185. package/dist/types/current/track/TrackBase.d.ts +30 -29
  186. package/dist/types/current/track/TrackBase.d.ts.map +1 -1
  187. package/dist/types/current/track/TrackBase.js +68 -16
  188. package/dist/types/current/track/TrackController.d.ts +102 -38
  189. package/dist/types/current/track/TrackController.d.ts.map +1 -1
  190. package/dist/types/current/track/TrackController.js +368 -115
  191. package/dist/types/current/track/TrackFactory.d.ts +24 -4
  192. package/dist/types/current/track/TrackFactory.d.ts.map +1 -1
  193. package/dist/types/current/track/TrackFactory.js +9 -3
  194. package/dist/types/current/track/createSegmentDataProvider.d.ts.map +1 -1
  195. package/dist/types/current/track/createVinylTrackFactories.d.ts +5 -5
  196. package/dist/types/current/track/createVinylTrackFactories.d.ts.map +1 -1
  197. package/dist/types/current/track/createVinylTrackFactories.js +4 -4
  198. package/dist/types/current/track/dash/DashManifestController.d.ts +1 -40
  199. package/dist/types/current/track/dash/DashManifestController.d.ts.map +1 -1
  200. package/dist/types/current/track/dash/DashManifestController.js +1 -79
  201. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
  202. package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +14 -1
  203. package/dist/types/current/track/dash/DashTrack.d.ts +6 -7
  204. package/dist/types/current/track/dash/DashTrack.d.ts.map +1 -1
  205. package/dist/types/current/track/dash/DashTrack.js +4 -6
  206. package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts +2 -2
  207. package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts.map +1 -1
  208. package/dist/types/current/track/dash/buildDashMediaTimeline.js +4 -3
  209. package/dist/types/current/track/dash/createDashContentStreamFactories.d.ts.map +1 -1
  210. package/dist/types/current/track/dash/createDashContentTypesValue.d.ts +2 -2
  211. package/dist/types/current/track/dash/createDashContentTypesValue.d.ts.map +1 -1
  212. package/dist/types/current/track/dash/createDashContentTypesValue.js +2 -2
  213. package/dist/types/current/track/dash/createDashFactories.d.ts +50 -23
  214. package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
  215. package/dist/types/current/track/dash/createDashFactories.js +40 -12
  216. package/dist/types/current/track/dash/createDashManifestProvider.d.ts +1 -1
  217. package/dist/types/current/track/dash/createDashManifestProvider.d.ts.map +1 -1
  218. package/dist/types/current/track/dash/createDashManifestProvider.js +1 -1
  219. package/dist/types/current/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
  220. package/dist/types/current/track/dash/createDefaultDashManifestTransformer.d.ts.map +1 -1
  221. package/dist/types/current/track/dash/createDefaultDashManifestTransformer.js +1 -1
  222. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts +0 -5
  223. package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts.map +1 -1
  224. package/dist/types/current/track/dash/manifestTransformUtils.d.ts +1 -1
  225. package/dist/types/current/track/dash/manifestTransformUtils.d.ts.map +1 -1
  226. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
  227. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
  228. package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +5 -4
  229. package/dist/types/current/track/dash/urlDashManifestProvider.d.ts +1 -1
  230. package/dist/types/current/track/dash/urlDashManifestProvider.d.ts.map +1 -1
  231. package/dist/types/current/track/dash/util/mimeType.d.ts.map +1 -1
  232. package/dist/types/current/track/dash/util/mimeType.js +1 -1
  233. package/dist/types/current/track/dash/util/mpd.d.ts +13 -2
  234. package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
  235. package/dist/types/current/track/dash/util/mpd.js +29 -3
  236. package/dist/types/current/track/dash/util/uriResolution.js +1 -1
  237. package/dist/types/current/track/filters/keySystemFilter.d.ts.map +1 -1
  238. package/dist/types/current/track/filters/resourceTypeFilter.d.ts.map +1 -1
  239. package/dist/types/current/track/filters/sampleRateFilter.d.ts.map +1 -1
  240. package/dist/types/current/track/hls/HlsManifestController.d.ts +1 -25
  241. package/dist/types/current/track/hls/HlsManifestController.d.ts.map +1 -1
  242. package/dist/types/current/track/hls/HlsManifestController.js +1 -68
  243. package/dist/types/{ts3.7/track/hls/HlsManifestProvider.d.ts → current/track/hls/HlsManifestData.d.ts} +4 -6
  244. package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
  245. package/dist/types/current/track/hls/HlsManifestData.js +5 -0
  246. package/dist/types/current/track/hls/HlsMediaQualityMetadataResolver.js +9 -6
  247. package/dist/types/current/track/hls/HlsTrack.d.ts +5 -6
  248. package/dist/types/current/track/hls/HlsTrack.d.ts.map +1 -1
  249. package/dist/types/current/track/hls/HlsTrack.js +3 -5
  250. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts +10 -3
  251. package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
  252. package/dist/types/current/track/hls/buildHlsMediaTimeline.js +150 -81
  253. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  254. package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts.map +1 -1
  255. package/dist/types/current/track/hls/createHlsContentStreamFactories.d.ts.map +1 -1
  256. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts +1 -1
  257. package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts.map +1 -1
  258. package/dist/types/current/track/hls/createHlsFactories.d.ts +40 -13
  259. package/dist/types/current/track/hls/createHlsFactories.d.ts.map +1 -1
  260. package/dist/types/current/track/hls/createHlsFactories.js +35 -6
  261. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
  262. package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
  263. package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
  264. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  265. package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
  266. package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +22 -3
  267. package/dist/types/current/track/hls/index.d.ts +1 -1
  268. package/dist/types/current/track/hls/index.d.ts.map +1 -1
  269. package/dist/types/current/track/hls/index.js +1 -1
  270. package/dist/types/current/track/hls/util/hlsSegmentTime.d.ts +1 -1
  271. package/dist/types/current/track/hls/util/hlsSegmentTime.d.ts.map +1 -1
  272. package/dist/types/current/track/hls/util/hlsSegmentTime.js +1 -1
  273. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
  274. package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
  275. package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
  276. package/dist/types/current/track/mse/MseTrack.d.ts +67 -9
  277. package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
  278. package/dist/types/current/track/mse/MseTrack.js +216 -51
  279. package/dist/types/current/track/mse/codec.d.ts.map +1 -1
  280. package/dist/types/current/track/source/FixedPlaybackQuality.d.ts +1 -1
  281. package/dist/types/current/track/source/FixedPlaybackQuality.d.ts.map +1 -1
  282. package/dist/types/current/track/source/SourceObjectTrack.d.ts +5 -5
  283. package/dist/types/current/track/source/SourceObjectTrack.d.ts.map +1 -1
  284. package/dist/types/current/track/source/SourceObjectTrack.js +2 -2
  285. package/dist/types/current/track/source/SourceTrack.d.ts +5 -5
  286. package/dist/types/current/track/source/SourceTrack.d.ts.map +1 -1
  287. package/dist/types/current/track/source/SourceTrack.js +3 -4
  288. package/dist/types/current/track/source/SourceTrackBase.d.ts +8 -6
  289. package/dist/types/current/track/source/SourceTrackBase.d.ts.map +1 -1
  290. package/dist/types/current/track/source/SourceTrackBase.js +27 -10
  291. package/dist/types/current/tsconfig.tsbuildinfo +1 -1
  292. package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
  293. package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
  294. package/dist/types/current/util/media/codecOverrides.js +37 -0
  295. package/dist/types/current/util/media/codecSupport.d.ts +6 -0
  296. package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
  297. package/dist/types/current/util/media/codecSupport.js +17 -0
  298. package/dist/types/current/util/media/mediaSource.d.ts +5 -0
  299. package/dist/types/current/util/media/mediaSource.d.ts.map +1 -1
  300. package/dist/types/current/util/media/mediaSource.js +6 -1
  301. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  302. package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts.map +1 -1
  303. package/dist/types/current/vinyl/VinylDeps.d.ts +6 -1
  304. package/dist/types/current/vinyl/VinylDeps.d.ts.map +1 -1
  305. package/dist/types/current/vinyl/VinylOptions.d.ts +68 -4
  306. package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
  307. package/dist/types/current/vinyl/VinylOptions.js +17 -2
  308. package/dist/types/current/vinyl/VinylPatchOptions.d.ts.map +1 -1
  309. package/dist/types/current/vinyl/VinylPlayer.d.ts +89 -6
  310. package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
  311. package/dist/types/current/vinyl/VinylPlayer.js +234 -39
  312. package/dist/types/current/vinyl/createVinylFactories.d.ts +64 -23
  313. package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
  314. package/dist/types/current/vinyl/createVinylFactories.js +6 -2
  315. package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
  316. package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
  317. package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +146 -0
  318. package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
  319. package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
  320. package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  321. package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
  322. package/dist/types/ts3.7/drm/DrmController.d.ts +31 -6
  323. package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +15 -6
  324. package/dist/types/ts3.7/drm/DrmKeySystemResolver.d.ts +1 -1
  325. package/dist/types/ts3.7/drm/DrmOptions.d.ts +1 -1
  326. package/dist/types/ts3.7/drm/commonEme/CommonEme.d.ts +2 -2
  327. package/dist/types/ts3.7/drm/commonEme/CommonEmeFactory.d.ts +1 -1
  328. package/dist/types/ts3.7/drm/commonEme/MsCommonEme.d.ts +1 -1
  329. package/dist/types/ts3.7/drm/commonEme/StandardCommonEme.d.ts +1 -1
  330. package/dist/types/ts3.7/drm/commonEme/WebKitCommonEme.d.ts +2 -2
  331. package/dist/types/ts3.7/drm/licenseProvider/LicenseProvider.d.ts +1 -1
  332. package/dist/types/ts3.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  333. package/dist/types/ts3.7/global/environment.d.ts +6 -2
  334. package/dist/types/ts3.7/index.d.ts +151 -126
  335. package/dist/types/ts3.7/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
  336. package/dist/types/ts3.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
  337. package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +2 -1
  338. package/dist/types/ts3.7/playback/PlaybackSource.d.ts +1 -1
  339. package/dist/types/ts3.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  340. package/dist/types/ts3.7/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
  341. package/dist/types/ts3.7/playback/nextHasMetadata.d.ts +1 -1
  342. package/dist/types/ts3.7/streaming/ContentStream.d.ts +12 -5
  343. package/dist/types/ts3.7/streaming/ContentStreamingOptions.d.ts +2 -2
  344. package/dist/types/ts3.7/streaming/LoadMetric.d.ts +58 -0
  345. package/dist/types/ts3.7/streaming/ManifestController.d.ts +16 -1
  346. package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
  347. package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +21 -2
  348. package/dist/types/ts3.7/streaming/MediaTimeline.d.ts +12 -5
  349. package/dist/types/ts3.7/streaming/SegmentController.d.ts +7 -7
  350. package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +17 -6
  351. package/dist/types/ts3.7/streaming/SegmentReference.d.ts +1 -1
  352. package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +43 -2
  353. package/dist/types/ts3.7/streaming/abr/QualitySelector.d.ts +1 -1
  354. package/dist/types/ts3.7/streaming/abr/QualitySelectorImpl.d.ts +46 -3
  355. package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +40 -13
  356. package/dist/types/ts3.7/streaming/buffering/MediaSourceController.d.ts +52 -21
  357. package/dist/types/ts3.7/streaming/buffering/SourceBufferController.d.ts +1 -1
  358. package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
  359. package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  360. package/dist/types/ts3.7/streaming/createDefaultMediaTimelineTransformer.d.ts +5 -2
  361. package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  362. package/dist/types/ts3.7/streaming/mediaTimelineFilter.d.ts +3 -3
  363. package/dist/types/ts3.7/streaming/mediaTimelineLanguageFilter.d.ts +25 -7
  364. package/dist/types/ts3.7/streaming/util/segment.d.ts +1 -1
  365. package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +91 -0
  366. package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +60 -0
  367. package/dist/types/ts3.7/text/TextTrack.d.ts +129 -0
  368. package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
  369. package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
  370. package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
  371. package/dist/types/ts3.7/text/parseWebVtt.d.ts +46 -0
  372. package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +14 -0
  373. package/dist/types/ts3.7/track/AutoResetController.d.ts +37 -12
  374. package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
  375. package/dist/types/ts3.7/track/Track.d.ts +50 -7
  376. package/dist/types/ts3.7/track/TrackBase.d.ts +21 -29
  377. package/dist/types/ts3.7/track/TrackController.d.ts +104 -39
  378. package/dist/types/ts3.7/track/TrackFactory.d.ts +23 -3
  379. package/dist/types/ts3.7/track/createVinylTrackFactories.d.ts +5 -5
  380. package/dist/types/ts3.7/track/dash/DashManifestController.d.ts +1 -36
  381. package/dist/types/ts3.7/track/dash/DashTrack.d.ts +6 -7
  382. package/dist/types/ts3.7/track/dash/buildDashMediaTimeline.d.ts +2 -2
  383. package/dist/types/ts3.7/track/dash/createDashContentTypesValue.d.ts +2 -2
  384. package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +50 -23
  385. package/dist/types/ts3.7/track/dash/createDashManifestProvider.d.ts +1 -1
  386. package/dist/types/ts3.7/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
  387. package/dist/types/ts3.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  388. package/dist/types/ts3.7/track/dash/manifestTransformUtils.d.ts +1 -1
  389. package/dist/types/ts3.7/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
  390. package/dist/types/ts3.7/track/dash/urlDashManifestProvider.d.ts +1 -1
  391. package/dist/types/ts3.7/track/dash/util/mpd.d.ts +13 -2
  392. package/dist/types/ts3.7/track/hls/HlsManifestController.d.ts +1 -22
  393. package/dist/types/{current/track/hls/HlsManifestProvider.d.ts → ts3.7/track/hls/HlsManifestData.d.ts} +4 -6
  394. package/dist/types/ts3.7/track/hls/HlsTrack.d.ts +5 -6
  395. package/dist/types/ts3.7/track/hls/buildHlsMediaTimeline.d.ts +10 -3
  396. package/dist/types/ts3.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  397. package/dist/types/ts3.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  398. package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +40 -13
  399. package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  400. package/dist/types/ts3.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  401. package/dist/types/ts3.7/track/hls/index.d.ts +1 -1
  402. package/dist/types/ts3.7/track/hls/util/hlsSegmentTime.d.ts +1 -1
  403. package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  404. package/dist/types/ts3.7/track/mse/MseTrack.d.ts +66 -8
  405. package/dist/types/ts3.7/track/source/FixedPlaybackQuality.d.ts +1 -1
  406. package/dist/types/ts3.7/track/source/SourceObjectTrack.d.ts +5 -5
  407. package/dist/types/ts3.7/track/source/SourceTrack.d.ts +5 -5
  408. package/dist/types/ts3.7/track/source/SourceTrackBase.d.ts +8 -6
  409. package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
  410. package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
  411. package/dist/types/ts3.7/util/media/mediaSource.d.ts +5 -0
  412. package/dist/types/ts3.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  413. package/dist/types/ts3.7/vinyl/VinylDeps.d.ts +6 -1
  414. package/dist/types/ts3.7/vinyl/VinylOptions.d.ts +68 -4
  415. package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +51 -6
  416. package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +64 -23
  417. package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
  418. package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
  419. package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +146 -0
  420. package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
  421. package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
  422. package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  423. package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
  424. package/dist/types/ts4.1/drm/DrmController.d.ts +31 -6
  425. package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +15 -6
  426. package/dist/types/ts4.1/drm/DrmKeySystemResolver.d.ts +1 -1
  427. package/dist/types/ts4.1/drm/DrmOptions.d.ts +1 -1
  428. package/dist/types/ts4.1/drm/commonEme/CommonEme.d.ts +2 -2
  429. package/dist/types/ts4.1/drm/commonEme/CommonEmeFactory.d.ts +1 -1
  430. package/dist/types/ts4.1/drm/commonEme/MsCommonEme.d.ts +1 -1
  431. package/dist/types/ts4.1/drm/commonEme/StandardCommonEme.d.ts +1 -1
  432. package/dist/types/ts4.1/drm/commonEme/WebKitCommonEme.d.ts +2 -2
  433. package/dist/types/ts4.1/drm/licenseProvider/LicenseProvider.d.ts +1 -1
  434. package/dist/types/ts4.1/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  435. package/dist/types/ts4.1/global/environment.d.ts +6 -2
  436. package/dist/types/ts4.1/index.d.ts +151 -126
  437. package/dist/types/ts4.1/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
  438. package/dist/types/ts4.1/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
  439. package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +2 -1
  440. package/dist/types/ts4.1/playback/PlaybackSource.d.ts +1 -1
  441. package/dist/types/ts4.1/playback/ReadonlyPlaybackController.d.ts +6 -0
  442. package/dist/types/ts4.1/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
  443. package/dist/types/ts4.1/playback/nextHasMetadata.d.ts +1 -1
  444. package/dist/types/ts4.1/streaming/ContentStream.d.ts +12 -5
  445. package/dist/types/ts4.1/streaming/ContentStreamingOptions.d.ts +2 -2
  446. package/dist/types/ts4.1/streaming/LoadMetric.d.ts +58 -0
  447. package/dist/types/ts4.1/streaming/ManifestController.d.ts +16 -1
  448. package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
  449. package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +21 -2
  450. package/dist/types/ts4.1/streaming/MediaTimeline.d.ts +12 -5
  451. package/dist/types/ts4.1/streaming/SegmentController.d.ts +7 -7
  452. package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +17 -6
  453. package/dist/types/ts4.1/streaming/SegmentReference.d.ts +1 -1
  454. package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +43 -2
  455. package/dist/types/ts4.1/streaming/abr/QualitySelector.d.ts +1 -1
  456. package/dist/types/ts4.1/streaming/abr/QualitySelectorImpl.d.ts +46 -3
  457. package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +40 -13
  458. package/dist/types/ts4.1/streaming/buffering/MediaSourceController.d.ts +52 -21
  459. package/dist/types/ts4.1/streaming/buffering/SourceBufferController.d.ts +1 -1
  460. package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
  461. package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
  462. package/dist/types/ts4.1/streaming/createDefaultMediaTimelineTransformer.d.ts +5 -2
  463. package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  464. package/dist/types/ts4.1/streaming/mediaTimelineFilter.d.ts +3 -3
  465. package/dist/types/ts4.1/streaming/mediaTimelineLanguageFilter.d.ts +25 -7
  466. package/dist/types/ts4.1/streaming/util/segment.d.ts +1 -1
  467. package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +92 -0
  468. package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +60 -0
  469. package/dist/types/ts4.1/text/TextTrack.d.ts +129 -0
  470. package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
  471. package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
  472. package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
  473. package/dist/types/ts4.1/text/parseWebVtt.d.ts +46 -0
  474. package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +14 -0
  475. package/dist/types/ts4.1/track/AutoResetController.d.ts +37 -12
  476. package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
  477. package/dist/types/ts4.1/track/Track.d.ts +50 -7
  478. package/dist/types/ts4.1/track/TrackBase.d.ts +21 -29
  479. package/dist/types/ts4.1/track/TrackController.d.ts +104 -39
  480. package/dist/types/ts4.1/track/TrackFactory.d.ts +23 -3
  481. package/dist/types/ts4.1/track/createVinylTrackFactories.d.ts +5 -5
  482. package/dist/types/ts4.1/track/dash/DashManifestController.d.ts +1 -36
  483. package/dist/types/ts4.1/track/dash/DashTrack.d.ts +6 -7
  484. package/dist/types/ts4.1/track/dash/buildDashMediaTimeline.d.ts +2 -2
  485. package/dist/types/ts4.1/track/dash/createDashContentTypesValue.d.ts +2 -2
  486. package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +50 -23
  487. package/dist/types/ts4.1/track/dash/createDashManifestProvider.d.ts +1 -1
  488. package/dist/types/ts4.1/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
  489. package/dist/types/ts4.1/track/dash/createSegmentControllerFactory.d.ts +0 -5
  490. package/dist/types/ts4.1/track/dash/manifestTransformUtils.d.ts +1 -1
  491. package/dist/types/ts4.1/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
  492. package/dist/types/ts4.1/track/dash/urlDashManifestProvider.d.ts +1 -1
  493. package/dist/types/ts4.1/track/dash/util/mpd.d.ts +13 -2
  494. package/dist/types/ts4.1/track/hls/HlsManifestController.d.ts +1 -22
  495. package/dist/types/ts4.1/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  496. package/dist/types/ts4.1/track/hls/HlsTrack.d.ts +5 -6
  497. package/dist/types/ts4.1/track/hls/buildHlsMediaTimeline.d.ts +10 -3
  498. package/dist/types/ts4.1/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  499. package/dist/types/ts4.1/track/hls/createHlsContentTypesValue.d.ts +1 -1
  500. package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +41 -13
  501. package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
  502. package/dist/types/ts4.1/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  503. package/dist/types/ts4.1/track/hls/index.d.ts +1 -1
  504. package/dist/types/ts4.1/track/hls/util/hlsSegmentTime.d.ts +1 -1
  505. package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
  506. package/dist/types/ts4.1/track/mse/MseTrack.d.ts +67 -9
  507. package/dist/types/ts4.1/track/source/FixedPlaybackQuality.d.ts +1 -1
  508. package/dist/types/ts4.1/track/source/SourceObjectTrack.d.ts +6 -6
  509. package/dist/types/ts4.1/track/source/SourceTrack.d.ts +6 -6
  510. package/dist/types/ts4.1/track/source/SourceTrackBase.d.ts +9 -7
  511. package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
  512. package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
  513. package/dist/types/ts4.1/util/media/mediaSource.d.ts +5 -0
  514. package/dist/types/ts4.1/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  515. package/dist/types/ts4.1/vinyl/VinylDeps.d.ts +6 -1
  516. package/dist/types/ts4.1/vinyl/VinylOptions.d.ts +68 -4
  517. package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +51 -6
  518. package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +65 -23
  519. package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
  520. package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
  521. package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +146 -0
  522. package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
  523. package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
  524. package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
  525. package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
  526. package/dist/types/ts4.7/drm/DrmController.d.ts +31 -6
  527. package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +15 -6
  528. package/dist/types/ts4.7/drm/DrmKeySystemResolver.d.ts +1 -1
  529. package/dist/types/ts4.7/drm/DrmOptions.d.ts +1 -1
  530. package/dist/types/ts4.7/drm/commonEme/CommonEme.d.ts +2 -2
  531. package/dist/types/ts4.7/drm/commonEme/CommonEmeFactory.d.ts +1 -1
  532. package/dist/types/ts4.7/drm/commonEme/MsCommonEme.d.ts +1 -1
  533. package/dist/types/ts4.7/drm/commonEme/StandardCommonEme.d.ts +1 -1
  534. package/dist/types/ts4.7/drm/commonEme/WebKitCommonEme.d.ts +2 -2
  535. package/dist/types/ts4.7/drm/licenseProvider/LicenseProvider.d.ts +1 -1
  536. package/dist/types/ts4.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
  537. package/dist/types/ts4.7/global/environment.d.ts +6 -2
  538. package/dist/types/ts4.7/index.d.ts +151 -126
  539. package/dist/types/ts4.7/patch/media/patches/createPreventStallsPatch.d.ts +1 -1
  540. package/dist/types/ts4.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +1 -1
  541. package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +2 -1
  542. package/dist/types/ts4.7/playback/PlaybackSource.d.ts +1 -1
  543. package/dist/types/ts4.7/playback/ReadonlyPlaybackController.d.ts +6 -0
  544. package/dist/types/ts4.7/playback/logging/playbackStateLoggingHandler.d.ts +1 -1
  545. package/dist/types/ts4.7/playback/nextHasMetadata.d.ts +1 -1
  546. package/dist/types/ts4.7/streaming/ContentStream.d.ts +12 -5
  547. package/dist/types/ts4.7/streaming/ContentStreamingOptions.d.ts +2 -2
  548. package/dist/types/ts4.7/streaming/LoadMetric.d.ts +58 -0
  549. package/dist/types/ts4.7/streaming/ManifestController.d.ts +16 -1
  550. package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
  551. package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +21 -2
  552. package/dist/types/ts4.7/streaming/MediaTimeline.d.ts +12 -5
  553. package/dist/types/ts4.7/streaming/SegmentController.d.ts +7 -7
  554. package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +17 -6
  555. package/dist/types/ts4.7/streaming/SegmentReference.d.ts +1 -1
  556. package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +43 -2
  557. package/dist/types/ts4.7/streaming/abr/QualitySelector.d.ts +1 -1
  558. package/dist/types/ts4.7/streaming/abr/QualitySelectorImpl.d.ts +46 -3
  559. package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +40 -13
  560. package/dist/types/ts4.7/streaming/buffering/MediaSourceController.d.ts +52 -21
  561. package/dist/types/ts4.7/streaming/buffering/SourceBufferController.d.ts +1 -1
  562. package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
  563. package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
  564. package/dist/types/ts4.7/streaming/createDefaultMediaTimelineTransformer.d.ts +5 -2
  565. package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
  566. package/dist/types/ts4.7/streaming/mediaTimelineFilter.d.ts +3 -3
  567. package/dist/types/ts4.7/streaming/mediaTimelineLanguageFilter.d.ts +25 -7
  568. package/dist/types/ts4.7/streaming/util/segment.d.ts +1 -1
  569. package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +91 -0
  570. package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +60 -0
  571. package/dist/types/ts4.7/text/TextTrack.d.ts +129 -0
  572. package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
  573. package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
  574. package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
  575. package/dist/types/ts4.7/text/parseWebVtt.d.ts +46 -0
  576. package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +14 -0
  577. package/dist/types/ts4.7/track/AutoResetController.d.ts +37 -12
  578. package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
  579. package/dist/types/ts4.7/track/Track.d.ts +50 -7
  580. package/dist/types/ts4.7/track/TrackBase.d.ts +30 -29
  581. package/dist/types/ts4.7/track/TrackController.d.ts +104 -39
  582. package/dist/types/ts4.7/track/TrackFactory.d.ts +24 -4
  583. package/dist/types/ts4.7/track/createVinylTrackFactories.d.ts +5 -5
  584. package/dist/types/ts4.7/track/dash/DashManifestController.d.ts +1 -40
  585. package/dist/types/ts4.7/track/dash/DashTrack.d.ts +6 -7
  586. package/dist/types/ts4.7/track/dash/buildDashMediaTimeline.d.ts +2 -2
  587. package/dist/types/ts4.7/track/dash/createDashContentTypesValue.d.ts +2 -2
  588. package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +50 -23
  589. package/dist/types/ts4.7/track/dash/createDashManifestProvider.d.ts +1 -1
  590. package/dist/types/ts4.7/track/dash/createDefaultDashManifestTransformer.d.ts +1 -1
  591. package/dist/types/ts4.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
  592. package/dist/types/ts4.7/track/dash/manifestTransformUtils.d.ts +1 -1
  593. package/dist/types/ts4.7/track/dash/timeline/DashRepresentationSegmentProvider.d.ts +3 -3
  594. package/dist/types/ts4.7/track/dash/urlDashManifestProvider.d.ts +1 -1
  595. package/dist/types/ts4.7/track/dash/util/mpd.d.ts +13 -2
  596. package/dist/types/ts4.7/track/hls/HlsManifestController.d.ts +1 -25
  597. package/dist/types/ts4.7/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
  598. package/dist/types/ts4.7/track/hls/HlsTrack.d.ts +5 -6
  599. package/dist/types/ts4.7/track/hls/buildHlsMediaTimeline.d.ts +10 -3
  600. package/dist/types/ts4.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
  601. package/dist/types/ts4.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
  602. package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +40 -13
  603. package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
  604. package/dist/types/ts4.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
  605. package/dist/types/ts4.7/track/hls/index.d.ts +1 -1
  606. package/dist/types/ts4.7/track/hls/util/hlsSegmentTime.d.ts +1 -1
  607. package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
  608. package/dist/types/ts4.7/track/mse/MseTrack.d.ts +67 -9
  609. package/dist/types/ts4.7/track/source/FixedPlaybackQuality.d.ts +1 -1
  610. package/dist/types/ts4.7/track/source/SourceObjectTrack.d.ts +5 -5
  611. package/dist/types/ts4.7/track/source/SourceTrack.d.ts +5 -5
  612. package/dist/types/ts4.7/track/source/SourceTrackBase.d.ts +8 -6
  613. package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
  614. package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
  615. package/dist/types/ts4.7/util/media/mediaSource.d.ts +5 -0
  616. package/dist/types/ts4.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
  617. package/dist/types/ts4.7/vinyl/VinylDeps.d.ts +6 -1
  618. package/dist/types/ts4.7/vinyl/VinylOptions.d.ts +68 -4
  619. package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +89 -6
  620. package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +64 -23
  621. package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
  622. package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
  623. package/dist/unit/types/current/ad/AdController.test.js +10 -0
  624. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
  625. package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
  626. package/dist/unit/types/current/ad/AdControllerImpl.test.js +1456 -0
  627. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
  628. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
  629. package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
  630. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
  631. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
  632. package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +756 -0
  633. package/dist/unit/types/current/drm/DrmControllerImpl.test.js +205 -4
  634. package/dist/unit/types/current/index.d.ts +117 -98
  635. package/dist/unit/types/current/index.d.ts.map +1 -1
  636. package/dist/unit/types/current/index.js +117 -98
  637. package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +92 -3
  638. package/dist/unit/types/current/streaming/ContentStream.test.js +11 -0
  639. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
  640. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
  641. package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
  642. package/dist/unit/types/current/streaming/MediaTimeline.test.js +8 -1
  643. package/dist/unit/types/current/streaming/MseTrack.test.js +482 -14
  644. package/dist/unit/types/current/streaming/SegmentControllerImpl.test.js +69 -33
  645. package/dist/unit/types/current/streaming/StreamingEventMap.test.js +2 -2
  646. package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +183 -0
  647. package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +123 -61
  648. package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +133 -26
  649. package/dist/unit/types/current/streaming/buffering/SourceBufferController.test.js +4 -0
  650. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
  651. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
  652. package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
  653. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
  654. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
  655. package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
  656. package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +150 -2
  657. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
  658. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
  659. package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
  660. package/dist/unit/types/current/streaming/mediaTimelineFilter.test.js +11 -0
  661. package/dist/unit/types/current/streaming/mediaTimelineLanguageFilter.test.js +99 -3
  662. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
  663. package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
  664. package/dist/unit/types/current/text/SidecarTextTrackController.test.js +587 -0
  665. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
  666. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
  667. package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +336 -0
  668. package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
  669. package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
  670. package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
  671. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
  672. package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
  673. package/dist/unit/types/current/text/discoverDashTextTracks.test.js +199 -0
  674. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
  675. package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
  676. package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
  677. package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
  678. package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
  679. package/dist/unit/types/current/text/parseWebVtt.test.js +212 -0
  680. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
  681. package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
  682. package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +67 -0
  683. package/dist/unit/types/current/track/AutoResetController.test.js +134 -22
  684. package/dist/unit/types/current/track/TrackBase.test.js +50 -5
  685. package/dist/unit/types/current/track/TrackController.test.js +712 -109
  686. package/dist/unit/types/current/track/TrackFactory.test.js +13 -25
  687. package/dist/unit/types/current/track/dash/createDashContentStreamFactories.test.js +6 -1
  688. package/dist/unit/types/current/track/dash/createDashFactories.test.js +63 -2
  689. package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +6 -1
  690. package/dist/unit/types/current/track/dash/util/mpd.test.js +53 -1
  691. package/dist/unit/types/current/track/hls/HlsManifestController.test.js +4 -4
  692. package/dist/unit/types/current/track/hls/HlsMediaQualityMetadataResolver.test.js +4 -2
  693. package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +276 -22
  694. package/dist/unit/types/current/track/hls/createHlsContentStreamFactories.test.js +6 -1
  695. package/dist/unit/types/current/track/hls/createHlsFactories.test.js +182 -4
  696. package/dist/unit/types/current/track/hls/createUrlHlsManifestProvider.test.js +19 -0
  697. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
  698. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
  699. package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
  700. package/dist/unit/types/current/track/source/SourceTrack.test.js +5 -0
  701. package/dist/unit/types/current/track/source/SourceTrackBase.test.js +24 -3
  702. package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
  703. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
  704. package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
  705. package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
  706. package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
  707. package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
  708. package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
  709. package/dist/unit/types/current/util/media/mediaSource.test.js +6 -0
  710. package/dist/unit/types/current/vinyl/VinylPlayer.test.js +212 -75
  711. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
  712. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
  713. package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
  714. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
  715. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
  716. package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +263 -0
  717. package/dist/vinylTestUtil/index.js +2375 -2208
  718. package/dist/vinylTestUtil/index.js.map +4 -4
  719. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts +14 -0
  720. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts.map +1 -1
  721. package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.js +49 -30
  722. package/dist/vinylTestUtil/types/current/index.d.ts +53 -51
  723. package/dist/vinylTestUtil/types/current/index.d.ts.map +1 -1
  724. package/dist/vinylTestUtil/types/current/index.js +53 -51
  725. package/dist/vinylTestUtil/types/current/media/FrequencyAnalyzer.js +1 -1
  726. package/dist/vinylTestUtil/types/current/mediaSource/ControlledMediaSource.d.ts.map +1 -1
  727. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
  728. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
  729. package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
  730. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts +8 -1
  731. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts.map +1 -1
  732. package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.js +15 -0
  733. package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +24 -24
  734. package/dist/vinylTestUtil/types/current/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
  735. package/dist/vinylTestUtil/types/current/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
  736. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts +2 -2
  737. package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts.map +1 -1
  738. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts +7 -1
  739. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts.map +1 -1
  740. package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.js +12 -0
  741. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts +3 -3
  742. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts.map +1 -1
  743. package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.js +1 -0
  744. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +14 -6
  745. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
  746. package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +24 -8
  747. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts +2 -1
  748. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts.map +1 -1
  749. package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.js +1 -0
  750. package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.d.ts +0 -1
  751. package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.d.ts.map +1 -1
  752. package/dist/vinylTestUtil/types/current/mock/streaming/MockSegmentController.js +0 -1
  753. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  754. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts.map +1 -1
  755. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.js +1 -0
  756. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -2
  757. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts.map +1 -1
  758. package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.js +2 -2
  759. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
  760. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
  761. package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
  762. package/dist/vinylTestUtil/types/current/mock/track/MockAutoResetController.d.ts +1 -0
  763. package/dist/vinylTestUtil/types/current/mock/track/MockAutoResetController.d.ts.map +1 -1
  764. package/dist/vinylTestUtil/types/current/mock/track/MockAutoResetController.js +1 -0
  765. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts +13 -4
  766. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts.map +1 -1
  767. package/dist/vinylTestUtil/types/current/mock/track/MockTrack.js +11 -0
  768. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts +3 -2
  769. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts.map +1 -1
  770. package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.js +2 -1
  771. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +11 -5
  772. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
  773. package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +19 -8
  774. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +9 -5
  775. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
  776. package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +17 -8
  777. package/dist/vinylTestUtil/types/current/player/createVinylSuite.d.ts.map +1 -1
  778. package/dist/vinylTestUtil/types/current/player/createVinylSuite.js +19 -8
  779. package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
  780. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.d.ts.map +1 -1
  781. package/dist/vinylTestUtil/types/current/util/playback/eventPromises.js +1 -1
  782. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.d.ts.map +1 -1
  783. package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.js +6 -3
  784. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlays.js +5 -5
  785. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.d.ts.map +1 -1
  786. package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.js +12 -9
  787. package/dist/vinylTestUtil/types/ts3.7/assets/vinylTestAssets.d.ts +14 -0
  788. package/dist/vinylTestUtil/types/ts3.7/index.d.ts +53 -51
  789. package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
  790. package/dist/vinylTestUtil/types/ts3.7/mock/dash/MockDashManifestController.d.ts +8 -1
  791. package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +24 -24
  792. package/dist/vinylTestUtil/types/ts3.7/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
  793. package/dist/vinylTestUtil/types/ts3.7/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
  794. package/dist/vinylTestUtil/types/ts3.7/mock/drm/MockDrmController.d.ts +2 -2
  795. package/dist/vinylTestUtil/types/ts3.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  796. package/dist/vinylTestUtil/types/ts3.7/mock/hls/mockHlsManifest.d.ts +3 -3
  797. package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +14 -6
  798. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockContentStream.d.ts +2 -1
  799. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockSegmentController.d.ts +0 -1
  800. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  801. package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -2
  802. package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
  803. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockAutoResetController.d.ts +1 -0
  804. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrack.d.ts +13 -4
  805. package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrackController.d.ts +3 -2
  806. package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +11 -5
  807. package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +9 -5
  808. package/dist/vinylTestUtil/types/ts4.1/assets/vinylTestAssets.d.ts +14 -0
  809. package/dist/vinylTestUtil/types/ts4.1/index.d.ts +53 -51
  810. package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
  811. package/dist/vinylTestUtil/types/ts4.1/mock/dash/MockDashManifestController.d.ts +8 -1
  812. package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +24 -24
  813. package/dist/vinylTestUtil/types/ts4.1/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
  814. package/dist/vinylTestUtil/types/ts4.1/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
  815. package/dist/vinylTestUtil/types/ts4.1/mock/drm/MockDrmController.d.ts +2 -2
  816. package/dist/vinylTestUtil/types/ts4.1/mock/hls/MockHlsManifestController.d.ts +7 -1
  817. package/dist/vinylTestUtil/types/ts4.1/mock/hls/mockHlsManifest.d.ts +3 -3
  818. package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +14 -6
  819. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockContentStream.d.ts +2 -1
  820. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockSegmentController.d.ts +0 -1
  821. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  822. package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -2
  823. package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
  824. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockAutoResetController.d.ts +1 -0
  825. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrack.d.ts +13 -4
  826. package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrackController.d.ts +3 -2
  827. package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +11 -5
  828. package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +9 -5
  829. package/dist/vinylTestUtil/types/ts4.7/assets/vinylTestAssets.d.ts +14 -0
  830. package/dist/vinylTestUtil/types/ts4.7/index.d.ts +53 -51
  831. package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
  832. package/dist/vinylTestUtil/types/ts4.7/mock/dash/MockDashManifestController.d.ts +8 -1
  833. package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +24 -24
  834. package/dist/vinylTestUtil/types/ts4.7/mock/dom/ms/MockMSMediaKeySession.d.ts +2 -2
  835. package/dist/vinylTestUtil/types/ts4.7/mock/dom/webkit/MockWebKitMediaKeySession.d.ts +2 -2
  836. package/dist/vinylTestUtil/types/ts4.7/mock/drm/MockDrmController.d.ts +2 -2
  837. package/dist/vinylTestUtil/types/ts4.7/mock/hls/MockHlsManifestController.d.ts +7 -1
  838. package/dist/vinylTestUtil/types/ts4.7/mock/hls/mockHlsManifest.d.ts +3 -3
  839. package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +14 -6
  840. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockContentStream.d.ts +2 -1
  841. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockSegmentController.d.ts +0 -1
  842. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
  843. package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -2
  844. package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
  845. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockAutoResetController.d.ts +1 -0
  846. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrack.d.ts +13 -4
  847. package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrackController.d.ts +3 -2
  848. package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +11 -5
  849. package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +9 -5
  850. package/docs/ADS.md +264 -0
  851. package/docs/USAGE.md +175 -9
  852. package/package.json +19 -21
  853. package/dist/types/current/track/hls/HlsManifestProvider.d.ts.map +0 -1
  854. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts +0 -2
  855. package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts.map +0 -1
  856. package/dist/unit/types/current/track/dash/DashManifestController.test.js +0 -186
  857. /package/dist/types/current/{track/hls/HlsManifestProvider.js → ad/AdBreakInfo.js} +0 -0
@@ -1,7 +1,7 @@
1
- import type { PrefetchState, QualitySelector } from '../../streaming/abr/QualitySelector';
2
- import { type Disposable, type LogTarget } from '@amazon/vinyl-util';
1
+ import type { PrefetchState, QualitySelector } from './QualitySelector';
2
+ import { type Disposable, type LogTarget, type Maybe } from '@amazon/vinyl-util';
3
3
  import { type ObjectSchema } from '@amazon/vinyl-validation';
4
- import type { MediaQualityMetadata } from '../../streaming/MediaQualityMetadata';
4
+ import type { MediaQualityMetadata } from '../MediaQualityMetadata';
5
5
  import type { ObservableValue } from '@amazon/vinyl-observable';
6
6
  export interface QualitySelectorImplOptions {
7
7
  /**
@@ -52,6 +52,46 @@ export interface QualitySelectorImplOptions {
52
52
  * Default: false
53
53
  */
54
54
  readonly restrictDecoderChangeOnAudioAbrUp?: boolean;
55
+ /**
56
+ * Maximum bandwidth in bits per second a quality may use to be selectable.
57
+ *
58
+ * Soft cap: if no qualities fit within the limit (including when set to 0),
59
+ * the quality with the lowest bandwidth is selected so playback is still
60
+ * possible.
61
+ *
62
+ * Has no effect when {@link strategy} is {@link AbrStrategy.LOWEST} or
63
+ * {@link AbrStrategy.HIGHEST}, since those strategies pin the selection
64
+ * regardless of bandwidth.
65
+ *
66
+ * Default: null (no limit).
67
+ */
68
+ readonly maxBandwidth?: Maybe<number>;
69
+ /**
70
+ * Maximum video height, in pixels, a quality may have to be selectable.
71
+ * Mirrors Shaka's `restrictions.maxHeight`.
72
+ *
73
+ * Only affects video qualities; audio (and other non-video) qualities are
74
+ * never restricted by resolution. Qualities with an unknown height (null)
75
+ * are treated as within the cap.
76
+ *
77
+ * Soft cap: if no video quality fits within the resolution limit, the
78
+ * quality with the smallest bandwidth is selected so video still plays.
79
+ *
80
+ * Has no effect when {@link strategy} is {@link AbrStrategy.LOWEST} or
81
+ * {@link AbrStrategy.HIGHEST}, since those strategies pin the selection
82
+ * regardless of resolution.
83
+ *
84
+ * Default: null (no limit).
85
+ */
86
+ readonly maxHeight?: Maybe<number>;
87
+ /**
88
+ * Maximum video width, in pixels, a quality may have to be selectable.
89
+ * Mirrors Shaka's `restrictions.maxWidth`. Behaves like {@link maxHeight}
90
+ * but constrains the width dimension.
91
+ *
92
+ * Default: null (no limit).
93
+ */
94
+ readonly maxWidth?: Maybe<number>;
55
95
  }
56
96
  export declare enum AbrStrategy {
57
97
  /**
@@ -82,6 +122,9 @@ export declare const defaultQualitySelectorImplOptions: {
82
122
  readonly bandwidthMultiplierLow: 0.4;
83
123
  readonly bandwidthMultiplierHigh: 0.9;
84
124
  readonly restrictDecoderChangeOnAudioAbrUp: false;
125
+ readonly maxBandwidth: null;
126
+ readonly maxHeight: null;
127
+ readonly maxWidth: null;
85
128
  };
86
129
  export interface QualitySelectorImplDeps {
87
130
  readonly options: ObservableValue<QualitySelectorImplOptions>;
@@ -1 +1 @@
1
- {"version":3,"file":"QualitySelectorImpl.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/abr/QualitySelectorImpl.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACR,aAAa,EACb,eAAe,EAClB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAIH,KAAK,UAAU,EAEf,KAAK,SAAS,EAEjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAKH,KAAK,YAAY,EACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,MAAM,WAAW,0BAA0B;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAErC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEzC;;;;;;OAMG;IACH,QAAQ,CAAC,iCAAiC,CAAC,EAAE,OAAO,CAAA;CACvD;AAED,oBAAY,WAAW;IACnB;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,OAAO,YAAY;IAEnB;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,KAAK,UAAU;CAClB;AAED,eAAO,MAAM,mCAAmC,EAAE,YAAY,CAAC,0BAA0B,CAQnF,CAAA;AAEN,eAAO,MAAM,iCAAiC;;;;;;;CAOC,CAAA;AAE/C,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAA;CAChE;AAED,qBAAa,mBACT,YAAW,eAAe,EAAE,SAAS,EAAE,UAAU;IAEjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,QAAQ,CAAC,SAAS,SAAwB;IAC1C,OAAO,CAAC,QAAQ,CACqB;IAErC,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,IAAI,EAAE,uBAAuB;IASzC,IAAI,OAAO,IAAI,QAAQ,CAAC,0BAA0B,CAAC,CAElD;IAED,aAAa,CACT,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,aAAa,EAAE,aAAa,GAC7B,MAAM;IA0GT,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO;CAGV"}
1
+ {"version":3,"file":"QualitySelectorImpl.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/abr/QualitySelectorImpl.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAIH,KAAK,UAAU,EAEf,KAAK,SAAS,EAEd,KAAK,KAAK,EACb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAKH,KAAK,YAAY,EACpB,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,MAAM,WAAW,0BAA0B;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAErC;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAEpC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAA;IAE/B;;;;;;;;;OASG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAExC;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAEzC;;;;;;OAMG;IACH,QAAQ,CAAC,iCAAiC,CAAC,EAAE,OAAO,CAAA;IAEpD;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAErC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAElC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACpC;AAED,oBAAY,WAAW;IACnB;;OAEG;IACH,MAAM,WAAW;IAEjB;;OAEG;IACH,OAAO,YAAY;IAEnB;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,KAAK,UAAU;CAClB;AAED,eAAO,MAAM,mCAAmC,EAAE,YAAY,CAAC,0BAA0B,CAWnF,CAAA;AAEN,eAAO,MAAM,iCAAiC;;;;;;;;;;CAUC,CAAA;AAE/C,MAAM,WAAW,uBAAuB;IACpC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAA;CAChE;AAED,qBAAa,mBACT,YAAW,eAAe,EAAE,SAAS,EAAE,UAAU;IAEjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,QAAQ,CAAC,SAAS,SAAwB;IAC1C,OAAO,CAAC,QAAQ,CACqB;IAErC,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,IAAI,EAAE,uBAAuB;IASzC,IAAI,OAAO,IAAI,QAAQ,CAAC,0BAA0B,CAAC,CAElD;IAED,aAAa,CACT,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,aAAa,EAAE,aAAa,GAC7B,MAAM;IAoJT,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO;CAGV"}
@@ -33,6 +33,9 @@ export const qualitySelectorImplOptionsValidator = object({
33
33
  bandwidthMultiplierLow: number().optional(),
34
34
  bandwidthMultiplierHigh: number().optional(),
35
35
  restrictDecoderChangeOnAudioAbrUp: boolean().optional(),
36
+ maxBandwidth: number().maybe().optional(),
37
+ maxHeight: number().maybe().optional(),
38
+ maxWidth: number().maybe().optional(),
36
39
  });
37
40
  export const defaultQualitySelectorImplOptions = {
38
41
  highBufferThreshold: 15,
@@ -41,6 +44,9 @@ export const defaultQualitySelectorImplOptions = {
41
44
  bandwidthMultiplierLow: 0.4,
42
45
  bandwidthMultiplierHigh: 0.9,
43
46
  restrictDecoderChangeOnAudioAbrUp: false,
47
+ maxBandwidth: null,
48
+ maxHeight: null,
49
+ maxWidth: null,
44
50
  };
45
51
  export class QualitySelectorImpl {
46
52
  get [Symbol.toStringTag]() {
@@ -59,7 +65,18 @@ export class QualitySelectorImpl {
59
65
  return this._options;
60
66
  }
61
67
  selectQuality(qualities, prefetchState) {
62
- const { strategy, highBufferThreshold, lowBufferThreshold, bandwidthMultiplierLow, bandwidthMultiplierHigh, restrictDecoderChangeOnAudioAbrUp, } = this.options;
68
+ const { strategy, highBufferThreshold, lowBufferThreshold, bandwidthMultiplierLow, bandwidthMultiplierHigh, restrictDecoderChangeOnAudioAbrUp, maxBandwidth, maxHeight, maxWidth, } = this.options;
69
+ // A video quality is within the resolution cap when both its width and
70
+ // height are at or below the configured maxima. Non-video qualities and
71
+ // qualities with an unknown dimension are never restricted, mirroring
72
+ // Shaka's restrictions.maxWidth/maxHeight (which only apply to video).
73
+ const withinResolution = (quality) => quality.contentType !== 'video' ||
74
+ ((maxHeight == null ||
75
+ quality.height == null ||
76
+ quality.height <= maxHeight) &&
77
+ (maxWidth == null ||
78
+ quality.width == null ||
79
+ quality.width <= maxWidth));
63
80
  const previousQuality = prefetchState.previousQuality;
64
81
  // previousIndex will be -1 if the previously playing quality is not within the current qualities list.
65
82
  const previousIndex = previousQuality == null
@@ -92,9 +109,13 @@ export class QualitySelectorImpl {
92
109
  // Choose bandwidth based on pessimistic network information.
93
110
  // If the track is active, take the lesser of the latest recorded bandwidth stat and the weighted
94
111
  // average to allow for fast ABR-down in variable conditions.
95
- const bandwidth = (prefetchState.active
112
+ let bandwidth = (prefetchState.active
96
113
  ? Math.min(bandwidthEstimate.ewmaLow, bandwidthEstimate.latest)
97
114
  : bandwidthEstimate.ewmaLow) * bandwidthMultiplier;
115
+ // Apply the maxBandwidth cap as a soft upper bound on the bandwidth budget.
116
+ if (maxBandwidth != null && maxBandwidth < bandwidth) {
117
+ bandwidth = maxBandwidth;
118
+ }
98
119
  let restrictDecoderId = null;
99
120
  let restrictSwitchingGroupIds = null;
100
121
  if (previousQuality && previousIndex >= 0) {
@@ -107,14 +128,20 @@ export class QualitySelectorImpl {
107
128
  if (previousQuality.bandwidthTotal &&
108
129
  bandwidth < previousQuality.bandwidthTotal) {
109
130
  // Measured bandwidth lower than current streaming bandwidth.
110
- if (fetchedTime >= highBufferThreshold) {
131
+ if (fetchedTime >= highBufferThreshold &&
132
+ withinResolution(previousQuality)) {
111
133
  // Do not ABR-down inter-track when there is ample fetched data.
134
+ // Skipped if the previous quality now exceeds the resolution
135
+ // cap, so a lowered cap takes effect promptly.
112
136
  return previousIndex;
113
137
  }
114
138
  }
115
139
  else {
116
- if (fetchedTime < lowBufferThreshold) {
140
+ if (fetchedTime < lowBufferThreshold &&
141
+ withinResolution(previousQuality)) {
117
142
  // Do not ABR-up inter-track when there is not enough fetched data.
143
+ // Skipped if the previous quality now exceeds the resolution
144
+ // cap, so a lowered cap takes effect promptly.
118
145
  return previousIndex;
119
146
  }
120
147
  // Measured bandwidth is at least current streaming bandwidth.
@@ -133,10 +160,24 @@ export class QualitySelectorImpl {
133
160
  if (restrictDecoderId != null &&
134
161
  quality.decoderId !== restrictDecoderId)
135
162
  return false;
163
+ // Exclude video qualities above the resolution cap.
164
+ if (!withinResolution(quality))
165
+ return false;
136
166
  return (quality.bandwidthTotal == null ||
137
167
  quality.bandwidthTotal <= bandwidth);
138
168
  });
139
- return index === -1 ? qualities.length - 1 : index;
169
+ if (index !== -1)
170
+ return index;
171
+ // No quality fit the bandwidth budget (and resolution cap). Prefer the
172
+ // smallest quality that still satisfies the resolution cap so a video
173
+ // above the cap is never selected while a compliant option exists; if
174
+ // none satisfy the cap, fall back to the overall smallest so video
175
+ // still plays.
176
+ for (let i = qualities.length - 1; i >= 0; i--) {
177
+ if (withinResolution(qualities[i]))
178
+ return i;
179
+ }
180
+ return qualities.length - 1;
140
181
  }
141
182
  get disposed() {
142
183
  return this.disposer.disposed;
@@ -1,17 +1,12 @@
1
1
  import { type AnyRecord, type Clearable, type Disposable, EventHostImpl, type ReadonlyEventHost } from '@amazon/vinyl-util';
2
2
  import type { ReadonlyPlaybackController } from '../../playback/ReadonlyPlaybackController';
3
3
  import type { SourceBufferController } from './SourceBufferController';
4
- import type { ReadonlySegmentController } from '../../streaming/SegmentController';
4
+ import type { ReadonlySegmentController } from '../SegmentController';
5
5
  import type { BasicErrorEvent } from '../../event/BasicErrorEvent';
6
6
  import type { ChangeEvent } from '../../event/ChangeEvent';
7
- import type { ContentType, MediaQualityMetadata } from '../../streaming/MediaQualityMetadata';
8
- import { type MediaSourceController } from '../../streaming/buffering/MediaSourceController';
9
- /**
10
- * Chrome 52 has decoding errors when duration is set to the mediaPresentationDuration.
11
- * Adds a slight padding as a workaround.
12
- * @private
13
- */
14
- export declare const DURATION_PADDING = 0.1;
7
+ import type { ContentType, MediaQualityMetadata } from '../MediaQualityMetadata';
8
+ import type { CodecUnsupportedEvent } from '../StreamingEventMap';
9
+ import { type MediaSourceController } from './MediaSourceController';
15
10
  /**
16
11
  * The interval to throttle polling the buffer.
17
12
  * Reset after a seek.
@@ -49,6 +44,16 @@ export interface BufferingControllerEventMap {
49
44
  * The last segment has finished appending.
50
45
  */
51
46
  readonly bufferingEnded: AnyRecord;
47
+ /**
48
+ * The buffer went from empty to holding data, or back to empty.
49
+ */
50
+ readonly hasDataChange: ChangeEvent<boolean>;
51
+ /**
52
+ * A codec the browser reported as supported failed to decode on append and
53
+ * has been denylisted. Dispatched instead of `error` so the media can be
54
+ * reloaded and fall back to a codec that decodes.
55
+ */
56
+ readonly codecUnsupported: CodecUnsupportedEvent;
52
57
  }
53
58
  export interface BufferingController extends ReadonlyEventHost<BufferingControllerEventMap>, Clearable, Disposable {
54
59
  /**
@@ -78,6 +83,10 @@ export interface BufferingController extends ReadonlyEventHost<BufferingControll
78
83
  * True if the stream has buffered the last segment.
79
84
  */
80
85
  readonly bufferingEnded: boolean;
86
+ /**
87
+ * True while the buffer holds any data (false when empty or cleared).
88
+ */
89
+ readonly hasData: boolean;
81
90
  /**
82
91
  * Begins buffering.
83
92
  */
@@ -130,6 +139,7 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
130
139
  readonly deps: BufferingControllerImplDeps;
131
140
  readonly contentType: ContentType;
132
141
  get [Symbol.toStringTag](): string;
142
+ readonly logPrefix: string;
133
143
  readonly options: BufferingControllerImplOptions;
134
144
  private readonly mediaSourceController;
135
145
  private readonly playbackController;
@@ -153,6 +163,7 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
153
163
  private reopen;
154
164
  private _error;
155
165
  private _bufferingEnded;
166
+ private _hasData;
156
167
  private readonly queue;
157
168
  private disposer;
158
169
  private _active;
@@ -170,10 +181,6 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
170
181
  * Returns true if there are active operations.
171
182
  */
172
183
  get busy(): boolean;
173
- /**
174
- * Enqueues a duration update.
175
- */
176
- private refreshDuration;
177
184
  /**
178
185
  * Resets the throttle and polls the buffer on the next frame.
179
186
  */
@@ -231,12 +238,32 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
231
238
  * Returns true if the last segment has been appended.
232
239
  */
233
240
  get bufferingEnded(): boolean;
241
+ get hasData(): boolean;
242
+ private setHasData;
234
243
  private readonly handleError;
244
+ /**
245
+ * Attempts to recover from a SourceBuffer decode/append failure caused by a
246
+ * codec the browser reported as supported but cannot actually decode.
247
+ *
248
+ * Denylists the failing quality's codec so subsequent quality selection
249
+ * avoids it, then clears and retries. Returns true when a fallback was
250
+ * initiated (the caller should not enter an error state), false otherwise.
251
+ *
252
+ * Guards against loops: recovery only proceeds when the codec was newly
253
+ * denylisted. A repeat failure for an already-denylisted codec (e.g. a
254
+ * single-codec stream with no alternative) returns false and falls through
255
+ * to the normal error path, so playback errors out rather than looping.
256
+ */
257
+ private tryCodecFallback;
235
258
  /**
236
259
  * Returns the amount of time buffered at the current media position.
237
260
  * @private
238
261
  */
239
262
  getBufferedTime(): number;
263
+ /**
264
+ * Returns true if the playhead has become disconnected from the continuous buffer.
265
+ */
266
+ private needsBufferClear;
240
267
  /**
241
268
  * Cancels any currently buffering fragments and clears the source buffer.
242
269
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BufferingController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/BufferingController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BufferingController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/BufferingController.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,10 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { createAbortSlot, createDisposer, createTaskQueue, EventHostImpl, getLogLevel, isSilentError, LinkedList, logDebug, LogLevel, logVerbose, logWarn, throttle, } from '@amazon/vinyl-util';
6
- import { LIVE_DURATION } from '../../playback/PlaybackController';
7
- import { SEGMENT_START_AFFORDANCE } from '../../streaming/SegmentController';
8
- /**
9
- * Chrome 52 has decoding errors when duration is set to the mediaPresentationDuration.
10
- * Adds a slight padding as a workaround.
11
- * @private
12
- */
13
- export const DURATION_PADDING = 0.1;
5
+ import { createAbortSlot, createDisposer, createLogPrefix, createTaskQueue, EventHostImpl, getLogLevel, isSilentError, LinkedList, logDebug, LogLevel, logVerbose, logWarn, throttle, } from '@amazon/vinyl-util';
6
+ import { SEGMENT_START_AFFORDANCE } from '../SegmentController';
7
+ import { SourceBufferError } from './error/SourceBufferError';
8
+ import { denylistCodecsFromMimeType } from './codecDenylist';
14
9
  /**
15
10
  * The interval to throttle polling the buffer.
16
11
  * Reset after a seek.
@@ -65,8 +60,11 @@ export class BufferingControllerImpl extends EventHostImpl {
65
60
  deps;
66
61
  contentType;
67
62
  get [Symbol.toStringTag]() {
68
- return 'BufferingControllerImpl';
63
+ return `Buffering_${this.contentType}`;
69
64
  }
65
+ // Assigned in the constructor body: a field initializer runs before the
66
+ // contentType param-property, so it would capture `undefined`.
67
+ logPrefix;
70
68
  options;
71
69
  mediaSourceController;
72
70
  playbackController;
@@ -90,6 +88,7 @@ export class BufferingControllerImpl extends EventHostImpl {
90
88
  reopen = false;
91
89
  _error = null;
92
90
  _bufferingEnded = false;
91
+ _hasData = false;
93
92
  queue = createTaskQueue();
94
93
  disposer = createDisposer();
95
94
  _active = false;
@@ -99,6 +98,7 @@ export class BufferingControllerImpl extends EventHostImpl {
99
98
  super();
100
99
  this.deps = deps;
101
100
  this.contentType = contentType;
101
+ this.logPrefix = createLogPrefix(`Buffering_${contentType}`);
102
102
  this.options = {
103
103
  ...defaultBufferingControllerOptions,
104
104
  ...options,
@@ -124,11 +124,11 @@ export class BufferingControllerImpl extends EventHostImpl {
124
124
  this.sourceBufferController = add(this.deps.sourceBufferControllerFactory());
125
125
  add(this.playbackController.on('timeUpdate', this.pollBuffer));
126
126
  add(this.playbackController.on('seeking', () => {
127
- this.clear();
127
+ this.reopen = true; // prevents a no-op when 'ended'
128
+ this.pollBufferImmediate();
128
129
  }));
129
130
  const onMediaSourceOpen = () => {
130
131
  logDebug(this, 'media source opened');
131
- this.refreshDuration();
132
132
  this.pollBufferImmediate();
133
133
  };
134
134
  if (this.mediaSourceOpen) {
@@ -139,7 +139,6 @@ export class BufferingControllerImpl extends EventHostImpl {
139
139
  }
140
140
  add(this.segmentController.on('change', () => {
141
141
  this.reopen = true;
142
- this.refreshDuration();
143
142
  this.pollBufferImmediate();
144
143
  }));
145
144
  }
@@ -169,24 +168,12 @@ export class BufferingControllerImpl extends EventHostImpl {
169
168
  get busy() {
170
169
  return this.queue.running > 0;
171
170
  }
172
- /**
173
- * Enqueues a duration update.
174
- */
175
- refreshDuration() {
176
- this.sourceBufferController.enqueue(async () => {
177
- if (!this.mediaSourceOpen)
178
- return; // Cannot set duration when media source is not open.
179
- const duration = await this.segmentController.getDuration();
180
- // For live streams, set the duration to LIVE_DURATION; not all browsers support +Infinity duration.
181
- const newDuration = duration == null ? LIVE_DURATION : duration + DURATION_PADDING;
182
- logDebug(this, `setting duration: ${newDuration}`);
183
- this.mediaSourceController.duration = newDuration;
184
- }).catch(this.handleError);
185
- }
186
171
  /**
187
172
  * Resets the throttle and polls the buffer on the next frame.
188
173
  */
189
174
  pollBufferImmediate = () => {
175
+ if (!this.active)
176
+ return;
190
177
  this.pollBuffer.reset();
191
178
  setTimeout(() => {
192
179
  if (this.active)
@@ -207,6 +194,10 @@ export class BufferingControllerImpl extends EventHostImpl {
207
194
  if (!this.shouldAppend())
208
195
  return;
209
196
  this.reopen = false;
197
+ if (this.needsBufferClear()) {
198
+ this.clear(); // After the clear, the buffer state will reset and re-poll.
199
+ return;
200
+ }
210
201
  this.queue
211
202
  .enqueue(() => this.appendNext())
212
203
  .catch(this.handleError)
@@ -304,6 +295,7 @@ export class BufferingControllerImpl extends EventHostImpl {
304
295
  }
305
296
  if (!tail)
306
297
  this.refreshHead(); // Update quality immediately if buffer was empty
298
+ this.setHasData(true);
307
299
  }
308
300
  abortCurrentSegment() {
309
301
  this.segmentAbort.abort();
@@ -391,6 +383,16 @@ export class BufferingControllerImpl extends EventHostImpl {
391
383
  get bufferingEnded() {
392
384
  return this._bufferingEnded;
393
385
  }
386
+ get hasData() {
387
+ return this._hasData;
388
+ }
389
+ setHasData(value) {
390
+ if (this._hasData === value)
391
+ return;
392
+ const previous = this._hasData;
393
+ this._hasData = value;
394
+ this.dispatch('hasDataChange', { previous, current: value });
395
+ }
394
396
  handleError = (error) => {
395
397
  if ('name' in error && error.name === 'QuotaExceededError') {
396
398
  const contentType = this.bufferingQuality?.contentType;
@@ -407,6 +409,11 @@ export class BufferingControllerImpl extends EventHostImpl {
407
409
  }
408
410
  }
409
411
  }
412
+ if (this.tryCodecFallback(error)) {
413
+ // The failing codec was denylisted and playback will retry with a
414
+ // different quality; do not enter an error state.
415
+ return;
416
+ }
410
417
  if (!isSilentError(error)) {
411
418
  // Set this controller to an error state. If in an error state, buffering will
412
419
  // not continue.
@@ -417,6 +424,38 @@ export class BufferingControllerImpl extends EventHostImpl {
417
424
  });
418
425
  }
419
426
  };
427
+ /**
428
+ * Attempts to recover from a SourceBuffer decode/append failure caused by a
429
+ * codec the browser reported as supported but cannot actually decode.
430
+ *
431
+ * Denylists the failing quality's codec so subsequent quality selection
432
+ * avoids it, then clears and retries. Returns true when a fallback was
433
+ * initiated (the caller should not enter an error state), false otherwise.
434
+ *
435
+ * Guards against loops: recovery only proceeds when the codec was newly
436
+ * denylisted. A repeat failure for an already-denylisted codec (e.g. a
437
+ * single-codec stream with no alternative) returns false and falls through
438
+ * to the normal error path, so playback errors out rather than looping.
439
+ */
440
+ tryCodecFallback(error) {
441
+ if (!(error instanceof SourceBufferError))
442
+ return false;
443
+ const quality = this.bufferingQuality;
444
+ const mimeType = quality?.mimeType;
445
+ const contentType = quality?.contentType;
446
+ if (!mimeType || !contentType)
447
+ return false;
448
+ // denylistCodecsFromMimeType returns false if all codecs were already
449
+ // denylisted, which bounds recovery to one attempt per codec.
450
+ if (!denylistCodecsFromMimeType(mimeType))
451
+ return false;
452
+ logWarn(this, 'SourceBuffer append failed; denylisting codec and requesting reload:', mimeType);
453
+ // A decode failure poisons the MediaSource, so in-place recovery is not
454
+ // possible. Signal a recoverable codec failure; the player reloads the
455
+ // track, and the denylist steers selection to a codec that decodes.
456
+ this.dispatch('codecUnsupported', { mimeType, contentType });
457
+ return true;
458
+ }
420
459
  /**
421
460
  * Returns the amount of time buffered at the current media position.
422
461
  * @private
@@ -430,6 +469,19 @@ export class BufferingControllerImpl extends EventHostImpl {
430
469
  return 0;
431
470
  return range[1] - time;
432
471
  }
472
+ /**
473
+ * Returns true if the playhead has become disconnected from the continuous buffer.
474
+ */
475
+ needsBufferClear() {
476
+ const buffered = this.sourceBufferController.buffered;
477
+ if (buffered.empty)
478
+ return false;
479
+ const time = this.playbackController.currentTime;
480
+ // The source buffer allows multiple ranges, but buffering produces a
481
+ // single contiguous range in practice.
482
+ const range = buffered.ranges[0];
483
+ return time < range[0] - 0.01 || time > range[1] + 0.5;
484
+ }
433
485
  /**
434
486
  * Cancels any currently buffering fragments and clears the source buffer.
435
487
  */
@@ -460,6 +512,7 @@ export class BufferingControllerImpl extends EventHostImpl {
460
512
  this._bufferingEnded = false;
461
513
  this.bufferingQuality = null;
462
514
  this.playbackQuality = null;
515
+ this.setHasData(false);
463
516
  }
464
517
  /**
465
518
  * Finish any partial appends and clear the source buffer.
@@ -1,7 +1,15 @@
1
1
  import { type AnyRecord, type Disposable, EventHostImpl, type Json, type LogTarget, type ReadonlyEventHost, ReportableError } from '@amazon/vinyl-util';
2
- import type { ContentTypesValue } from '../../streaming/ContentTypesValue';
2
+ import type { ObservableValue } from '@amazon/vinyl-observable';
3
+ import type { ContentTypesValue } from '../ContentTypesValue';
3
4
  import type { BasicErrorEvent } from '../../event/BasicErrorEvent';
4
- import type { ContentType } from '../../streaming/MediaQualityMetadata';
5
+ import type { ContentType } from '../MediaQualityMetadata';
6
+ import type { MediaTimeline } from '../MediaTimeline';
7
+ /**
8
+ * Chrome 52 has decoding errors when duration is set to the mediaPresentationDuration.
9
+ * Adds a slight padding as a workaround.
10
+ * @private
11
+ */
12
+ export declare const DURATION_PADDING = 0.1;
5
13
  export interface SourceBufferRef extends Disposable {
6
14
  /**
7
15
  * The source buffer.
@@ -22,7 +30,8 @@ export interface MediaSourceControllerEventMap {
22
30
  */
23
31
  readonly sourceOpen: AnyRecord;
24
32
  /**
25
- * All source buffers have been created and data may be appended.
33
+ * All source buffers have been created, the media source duration has been set, and data
34
+ * may be appended.
26
35
  */
27
36
  readonly readyToAppend: AnyRecord;
28
37
  /**
@@ -35,20 +44,12 @@ export interface ReadonlyMediaSourceController extends ReadonlyEventHost<MediaSo
35
44
  * Returns the parent media source ready state.
36
45
  */
37
46
  readonly readyState: ReadyState;
38
- /**
39
- * Gets the media source's duration.
40
- */
41
- readonly duration: number;
42
47
  /**
43
48
  * True if all source buffers have been created and data may be appended.
44
49
  */
45
50
  readonly readyToAppend: boolean;
46
51
  }
47
52
  export interface MediaSourceController extends ReadonlyMediaSourceController {
48
- /**
49
- * Sets/gets the media source's duration.
50
- */
51
- duration: number;
52
53
  /**
53
54
  * Constructs a new SourceBuffer with the given content type and mime type.
54
55
  */
@@ -59,9 +60,17 @@ export interface MediaSourceController extends ReadonlyMediaSourceController {
59
60
  */
60
61
  endOfStream(error?: EndOfStreamError): void;
61
62
  /**
62
- * Creates an Object URL to use as the source for this stream.
63
+ * Creates the internal media source.
64
+ * Returns an Object URL to use as the source for this stream.
65
+ *
66
+ * Implementation note:
67
+ * Only the first
68
+ */
69
+ activate(): string;
70
+ /**
71
+ * Deactivates the controller, disposing underlying resources.
63
72
  */
64
- createUrl(): string;
73
+ deactivate(): void;
65
74
  }
66
75
  export interface MediaSourceControllerImplDeps {
67
76
  /**
@@ -72,25 +81,47 @@ export interface MediaSourceControllerImplDeps {
72
81
  * Provides the streams that must be created before appending.
73
82
  */
74
83
  readonly contentTypesValue: ContentTypesValue;
84
+ /**
85
+ * The media timeline used to determine duration.
86
+ */
87
+ readonly mediaTimelineTransformed: ObservableValue<Promise<MediaTimeline>>;
75
88
  }
76
89
  export declare class MediaSourceControllerImpl extends EventHostImpl<MediaSourceControllerEventMap> implements MediaSourceController, LogTarget {
90
+ private readonly deps;
77
91
  get [Symbol.toStringTag](): string;
78
- private sourceBufferCount;
79
- private readonly mediaSource;
80
- private readonly disposer;
92
+ private readonly sourceBuffers;
93
+ private mediaSource;
94
+ private objectUrl;
95
+ private activateDisposer;
81
96
  private contentTypes;
97
+ private durationSet;
98
+ /**
99
+ * Token for the in-flight duration update; used to discard stale results when
100
+ * the timeline changes or the source closes mid-fetch.
101
+ */
102
+ private durationToken;
82
103
  constructor(deps: MediaSourceControllerImplDeps);
83
- private initializeEvents;
84
- get duration(): number;
85
- set duration(value: number);
104
+ get active(): boolean;
105
+ activate(): string;
106
+ deactivate(): void;
107
+ private get sourceBufferCount();
108
+ private readonly errorHandler;
109
+ /**
110
+ * Sets the duration on the media source from the current media timeline.
111
+ * Live streams use LIVE_DURATION since not all browsers support +Infinity duration.
112
+ *
113
+ * MSE throws InvalidStateError if duration is set while any source buffer is updating,
114
+ * so we wait for all tracked source buffers to be idle first.
115
+ */
116
+ private refreshDuration;
86
117
  get readyState(): ReadyState;
87
118
  createSourceBuffer(contentType: ContentType, mimeType: string): SourceBufferRef;
88
119
  /**
89
- * Emits a 'readyToAppend' event if all source buffers have been created.
120
+ * Emits a 'readyToAppend' event if all source buffers have been created and the duration
121
+ * has been applied to the media source.
90
122
  */
91
123
  private readonly checkReady;
92
124
  endOfStream(error?: EndOfStreamError): void;
93
- createUrl(): string;
94
125
  get readyToAppend(): boolean;
95
126
  dispose(): void;
96
127
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MediaSourceController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/MediaSourceController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaSourceController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/MediaSourceController.ts"],"names":[],"mappings":"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"}