@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
@@ -2,37 +2,52 @@
2
2
  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- import { createDisposer, DomEventHost, ErrorLevel, ErrorOrigin, EventHostImpl, logDebug, ReportableError, toJson, toLowerCase, } from '@amazon/vinyl-util';
5
+ import { closeTo, createDisposer, DomEventHost, ErrorLevel, ErrorOrigin, EventHostImpl, IllegalStateError, isSilentError, logDebug, logWarn, ReportableError, toJson, toLowerCase, } from '@amazon/vinyl-util';
6
+ import { LIVE_DURATION } from '../../playback/PlaybackController';
7
+ import { nextSourceBufferIdle } from '../../util/media/sourceBuffer';
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;
6
14
  export class MediaSourceControllerImpl extends EventHostImpl {
15
+ deps;
7
16
  get [Symbol.toStringTag]() {
8
17
  return 'MediaSourceControllerImpl';
9
18
  }
10
- sourceBufferCount = 0;
11
- mediaSource;
12
- disposer = createDisposer();
19
+ sourceBuffers = new Set();
20
+ mediaSource = null;
21
+ objectUrl = null;
22
+ activateDisposer = null;
13
23
  contentTypes = null;
24
+ durationSet = false;
25
+ /**
26
+ * Token for the in-flight duration update; used to discard stale results when
27
+ * the timeline changes or the source closes mid-fetch.
28
+ */
29
+ durationToken = 0;
14
30
  constructor(deps) {
15
31
  super();
16
- this.mediaSource = deps.mediaSourceFactory();
17
- this.initializeEvents();
18
- this.disposer.add(deps.contentTypesValue.onData((value) => {
19
- this.contentTypes = null;
20
- value
21
- .then((contentTypes) => {
22
- this.contentTypes = contentTypes;
23
- this.checkReady();
24
- })
25
- .catch((error) => {
26
- this.dispatch('error', {
27
- target: this,
28
- error: error,
29
- });
30
- });
31
- }));
32
+ this.deps = deps;
33
+ }
34
+ get active() {
35
+ return this.activateDisposer != null;
32
36
  }
33
- initializeEvents() {
34
- const domEvents = new DomEventHost(this.mediaSource);
35
- // Re-dispatch html media element events exposed on the playback controller as empty events.
37
+ activate() {
38
+ this.activateDisposer = createDisposer();
39
+ const add = this.activateDisposer.add;
40
+ const mediaSource = this.deps.mediaSourceFactory();
41
+ this.mediaSource = mediaSource;
42
+ const domEvents = add(new DomEventHost(mediaSource));
43
+ domEvents.on('sourceopen', () => {
44
+ this.refreshDuration().catch(this.errorHandler);
45
+ });
46
+ domEvents.on('sourceclose', () => {
47
+ this.durationSet = false;
48
+ ++this.durationToken;
49
+ });
50
+ // Redispatch events from the media source:
36
51
  for (const key of [
37
52
  'sourceClose',
38
53
  'sourceOpen',
@@ -40,17 +55,86 @@ export class MediaSourceControllerImpl extends EventHostImpl {
40
55
  ]) {
41
56
  domEvents.on(toLowerCase(key), () => this.dispatch(key, {}));
42
57
  }
58
+ add(this.deps.mediaTimelineTransformed.onData(() => {
59
+ this.refreshDuration().catch(this.errorHandler);
60
+ }));
61
+ // React to content type changes (fires immediately with the current
62
+ // value and again whenever the timeline reveals new content types).
63
+ add(this.deps.contentTypesValue.onData((contentTypesPromise) => {
64
+ // The pending content types are unknown until the new promise
65
+ // resolves, so the controller is not ready to append until then.
66
+ this.contentTypes = null;
67
+ contentTypesPromise
68
+ .then((contentTypes) => {
69
+ if (this.deps.contentTypesValue.value !==
70
+ contentTypesPromise)
71
+ return; // Stale
72
+ this.contentTypes = contentTypes;
73
+ this.checkReady();
74
+ })
75
+ .catch(this.errorHandler);
76
+ }));
77
+ this.objectUrl = URL.createObjectURL(mediaSource);
78
+ return this.objectUrl;
79
+ }
80
+ deactivate() {
81
+ if (!this.active)
82
+ return;
83
+ this.activateDisposer.dispose();
84
+ this.activateDisposer = null;
85
+ // Invalidate any in-flight refreshDuration so its continuation returns
86
+ // at the token check rather than setting duration (and logging) after
87
+ // deactivation.
88
+ ++this.durationToken;
89
+ try {
90
+ URL.revokeObjectURL(this.objectUrl);
91
+ }
92
+ catch (error) {
93
+ logWarn(this, 'error revoking object url', error);
94
+ }
43
95
  }
44
- get duration() {
45
- return this.mediaSource.duration;
96
+ get sourceBufferCount() {
97
+ return this.sourceBuffers.size;
46
98
  }
47
- set duration(value) {
48
- this.mediaSource.duration = value;
99
+ errorHandler = (error) => {
100
+ if (isSilentError(error))
101
+ return;
102
+ this.dispatch('error', {
103
+ target: this,
104
+ error,
105
+ });
106
+ };
107
+ /**
108
+ * Sets the duration on the media source from the current media timeline.
109
+ * Live streams use LIVE_DURATION since not all browsers support +Infinity duration.
110
+ *
111
+ * MSE throws InvalidStateError if duration is set while any source buffer is updating,
112
+ * so we wait for all tracked source buffers to be idle first.
113
+ */
114
+ async refreshDuration() {
115
+ const mediaSource = this.mediaSource;
116
+ const timelinePromise = this.deps.mediaTimelineTransformed.value;
117
+ const token = ++this.durationToken;
118
+ const timeline = await timelinePromise;
119
+ const duration = await timeline.getDuration();
120
+ const value = duration === Infinity ? LIVE_DURATION : duration + DURATION_PADDING;
121
+ await Promise.all(Array.from(this.sourceBuffers, nextSourceBufferIdle));
122
+ if (token !== this.durationToken ||
123
+ mediaSource.readyState !== 'open' ||
124
+ closeTo(mediaSource.duration, value, 0.1))
125
+ return;
126
+ logDebug(this, `setting duration: ${value}`);
127
+ mediaSource.duration = value;
128
+ this.durationSet = true;
129
+ this.checkReady();
49
130
  }
50
131
  get readyState() {
51
- return this.mediaSource.readyState;
132
+ return this.mediaSource?.readyState ?? 'closed';
52
133
  }
53
134
  createSourceBuffer(contentType, mimeType) {
135
+ if (!this.active) {
136
+ throw new IllegalStateError('cannot create a source buffer when not active');
137
+ }
54
138
  const mediaSource = this.mediaSource;
55
139
  logDebug(this, 'create source buffer', contentType, mimeType, mediaSource.readyState, 'sourceBufferCount:', this.sourceBufferCount);
56
140
  let sourceBuffer;
@@ -61,22 +145,22 @@ export class MediaSourceControllerImpl extends EventHostImpl {
61
145
  throw new MediaSourceError('error creating source buffer', error);
62
146
  }
63
147
  sourceBuffer.mode = 'sequence';
64
- ++this.sourceBufferCount;
148
+ this.sourceBuffers.add(sourceBuffer);
65
149
  this.checkReady();
66
- const dispose = () => {
67
- logDebug(this, 'removing source buffer from media source', mediaSource.readyState);
68
- if (mediaSource.readyState !== 'closed') {
69
- mediaSource.removeSourceBuffer(sourceBuffer);
70
- }
71
- --this.sourceBufferCount;
72
- };
73
150
  return {
74
151
  value: sourceBuffer,
75
- dispose,
152
+ dispose: () => {
153
+ logDebug(this, 'removing source buffer from media source', mediaSource.readyState);
154
+ if (mediaSource.readyState !== 'closed') {
155
+ mediaSource.removeSourceBuffer(sourceBuffer);
156
+ }
157
+ this.sourceBuffers.delete(sourceBuffer);
158
+ },
76
159
  };
77
160
  }
78
161
  /**
79
- * Emits a 'readyToAppend' event if all source buffers have been created.
162
+ * Emits a 'readyToAppend' event if all source buffers have been created and the duration
163
+ * has been applied to the media source.
80
164
  */
81
165
  checkReady = () => {
82
166
  if (this.readyToAppend)
@@ -84,17 +168,15 @@ export class MediaSourceControllerImpl extends EventHostImpl {
84
168
  };
85
169
  endOfStream(error) {
86
170
  logDebug(this, 'endOfStream, error:', error);
87
- this.mediaSource.endOfStream(error);
88
- }
89
- createUrl() {
90
- return URL.createObjectURL(this.mediaSource);
171
+ this.mediaSource?.endOfStream(error);
91
172
  }
92
173
  get readyToAppend() {
93
- return this.contentTypes?.size === this.sourceBufferCount;
174
+ return (this.durationSet &&
175
+ this.contentTypes?.size === this.sourceBufferCount);
94
176
  }
95
177
  dispose() {
96
178
  super.dispose();
97
- this.disposer.dispose();
179
+ this.deactivate();
98
180
  }
99
181
  }
100
182
  export class MediaSourceError extends ReportableError {
@@ -1,6 +1,6 @@
1
1
  import { type Disposable, type LogTarget, type ReadonlyRanges, type Task } from '@amazon/vinyl-util';
2
2
  import type { MediaSourceController } from './MediaSourceController';
3
- import type { ContentType } from '../../streaming/MediaQualityMetadata';
3
+ import type { ContentType } from '../MediaQualityMetadata';
4
4
  export declare const APPEND_WINDOW_START_OFFSET = 0.05;
5
5
  export declare const APPEND_WINDOW_END_OFFSET = 0.01;
6
6
  export declare const READY_TO_APPEND_TIMEOUT = 30;
@@ -1 +1 @@
1
- {"version":3,"file":"SourceBufferController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/SourceBufferController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SourceBufferController.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/SourceBufferController.ts"],"names":[],"mappings":"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"}
@@ -17,15 +17,18 @@ export const READY_TO_APPEND_TIMEOUT = 30;
17
17
  export class SourceBufferControllerImpl {
18
18
  contentType;
19
19
  get [Symbol.toStringTag]() {
20
- return 'SourceBufferController';
20
+ return `SourceBuffer_${this.contentType}`;
21
21
  }
22
22
  sourceBufferRef = null;
23
23
  mimeType = null;
24
24
  queue = createTaskQueue();
25
- logPrefix = createLogPrefix(this);
25
+ // Assigned in the constructor body: a field initializer runs before the
26
+ // contentType param-property, so it would capture `undefined`.
27
+ logPrefix;
26
28
  mediaSourceController;
27
29
  constructor(deps, contentType) {
28
30
  this.contentType = contentType;
31
+ this.logPrefix = createLogPrefix(`SourceBuffer_${contentType}`);
29
32
  logDebug(this, 'constructed, contentType:', contentType);
30
33
  this.mediaSourceController = deps.mediaSourceController;
31
34
  }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Records every codec in the given mimeType as denylisted. Returns true if any
3
+ * codec was newly added (i.e. was not already denylisted), false if all codecs
4
+ * were already present. The return value lets callers bound retry loops: a
5
+ * repeat failure for an already-denylisted codec should not trigger another
6
+ * fallback attempt.
7
+ */
8
+ export declare function denylistCodecsFromMimeType(mimeType: string): boolean;
9
+ /**
10
+ * Returns true when any codec in the given mimeType has been denylisted.
11
+ */
12
+ export declare function isMimeTypeDenylisted(mimeType: string): boolean;
13
+ /**
14
+ * Returns the currently denylisted codec strings (lowercased). Primarily for
15
+ * diagnostics and testing.
16
+ */
17
+ export declare function getDenylistedCodecs(): readonly string[];
18
+ /**
19
+ * Clears the runtime codec denylist. Intended for tests and for re-detecting
20
+ * support (e.g. after an environment change).
21
+ */
22
+ export declare function clearCodecDenylist(): void;
23
+ //# sourceMappingURL=codecDenylist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codecDenylist.d.ts","sourceRoot":"","sources":["../../../../../src/streaming/buffering/codecDenylist.ts"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,MAAM,EAAE,CAEvD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -0,0 +1,62 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { extractCodecs } from '../../util/media/codecSupport';
6
+ /**
7
+ * A runtime denylist of media codecs that failed to decode after a SourceBuffer
8
+ * append, despite the browser reporting them as supported.
9
+ *
10
+ * Some browsers report a codec as supported via `MediaSource.isTypeSupported`
11
+ * yet fail to decode it (e.g. HEVC on Chromium without a platform decoder),
12
+ * surfacing as an append/decode error only once media is fed to the
13
+ * SourceBuffer. When that happens, the failing codec is recorded here so that
14
+ * quality selection avoids it and playback can fall back to a codec that does
15
+ * decode.
16
+ *
17
+ * This mirrors the runtime {@link getSourceBufferQuota} learning: it is a
18
+ * process-wide singleton learned from real append failures, with a reset hook
19
+ * for tests and re-detection. Entries are the individual RFC 6381 codec
20
+ * strings (e.g. `hvc1.2.20000000.L123.B0`), stored lowercased.
21
+ */
22
+ const denylistedCodecs = new Set();
23
+ /**
24
+ * Records every codec in the given mimeType as denylisted. Returns true if any
25
+ * codec was newly added (i.e. was not already denylisted), false if all codecs
26
+ * were already present. The return value lets callers bound retry loops: a
27
+ * repeat failure for an already-denylisted codec should not trigger another
28
+ * fallback attempt.
29
+ */
30
+ export function denylistCodecsFromMimeType(mimeType) {
31
+ const codecs = extractCodecs(mimeType);
32
+ let added = false;
33
+ for (const codec of codecs) {
34
+ const lower = codec.toLowerCase();
35
+ if (!denylistedCodecs.has(lower)) {
36
+ denylistedCodecs.add(lower);
37
+ added = true;
38
+ }
39
+ }
40
+ return added;
41
+ }
42
+ /**
43
+ * Returns true when any codec in the given mimeType has been denylisted.
44
+ */
45
+ export function isMimeTypeDenylisted(mimeType) {
46
+ const codecs = extractCodecs(mimeType);
47
+ return codecs.some((c) => denylistedCodecs.has(c.toLowerCase()));
48
+ }
49
+ /**
50
+ * Returns the currently denylisted codec strings (lowercased). Primarily for
51
+ * diagnostics and testing.
52
+ */
53
+ export function getDenylistedCodecs() {
54
+ return [...denylistedCodecs];
55
+ }
56
+ /**
57
+ * Clears the runtime codec denylist. Intended for tests and for re-detecting
58
+ * support (e.g. after an environment change).
59
+ */
60
+ export function clearCodecDenylist() {
61
+ denylistedCodecs.clear();
62
+ }
@@ -0,0 +1,30 @@
1
+ import type { RestrictableContentType } from './MediaQualityMetadata';
2
+ import type { ContentTypesValue } from './ContentTypesValue';
3
+ import type { ObservableValue } from '@amazon/vinyl-observable';
4
+ export interface AllowedContentTypesValueDeps {
5
+ /**
6
+ * The unfiltered content types present in the manifest.
7
+ */
8
+ readonly baseContentTypesValue: ContentTypesValue;
9
+ /**
10
+ * The player options. The `allowedContentTypes` allow list restricts which
11
+ * media content types are streamed; `null` means no restriction.
12
+ */
13
+ readonly options: ObservableValue<{
14
+ readonly allowedContentTypes: readonly RestrictableContentType[] | null;
15
+ }>;
16
+ }
17
+ /**
18
+ * Wraps a {@link ContentTypesValue} with the `allowedContentTypes` allow list
19
+ * from the player options. When the allow list is set, only media content
20
+ * types (`'audio'`, `'video'`) in the list are emitted; other media streams
21
+ * are ignored. When it is `null`, the underlying content types pass through
22
+ * unchanged. Text is never restricted by the allow list and always passes
23
+ * through (captions are governed by caption selection).
24
+ *
25
+ * Because the result is derived from the `allowedContentTypes` option via
26
+ * {@link combineData}, changing the option re-emits a newly filtered set, which
27
+ * reloads the track using only the allowed content types.
28
+ */
29
+ export declare function createAllowedContentTypesValue(deps: AllowedContentTypesValueDeps): ContentTypesValue;
30
+ //# sourceMappingURL=createAllowedContentTypesValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAllowedContentTypesValue.d.ts","sourceRoot":"","sources":["../../../../src/streaming/createAllowedContentTypesValue.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAER,uBAAuB,EAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAI/D,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,iBAAiB,CAAA;IAEjD;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;QAC9B,QAAQ,CAAC,mBAAmB,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI,CAAA;KAC1E,CAAC,CAAA;CACL;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,8BAA8B,CAC1C,IAAI,EAAE,4BAA4B,GACnC,iBAAiB,CAOnB"}
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { combineData } from '@amazon/vinyl-observable';
6
+ /**
7
+ * Wraps a {@link ContentTypesValue} with the `allowedContentTypes` allow list
8
+ * from the player options. When the allow list is set, only media content
9
+ * types (`'audio'`, `'video'`) in the list are emitted; other media streams
10
+ * are ignored. When it is `null`, the underlying content types pass through
11
+ * unchanged. Text is never restricted by the allow list and always passes
12
+ * through (captions are governed by caption selection).
13
+ *
14
+ * Because the result is derived from the `allowedContentTypes` option via
15
+ * {@link combineData}, changing the option re-emits a newly filtered set, which
16
+ * reloads the track using only the allowed content types.
17
+ */
18
+ export function createAllowedContentTypesValue(deps) {
19
+ return combineData({
20
+ contentTypes: deps.baseContentTypesValue,
21
+ allowedContentTypes: deps.options.pick('allowedContentTypes'),
22
+ }).map(async ({ contentTypes, allowedContentTypes }) => {
23
+ return filterContentTypes(await contentTypes, allowedContentTypes);
24
+ });
25
+ }
26
+ /**
27
+ * Returns the subset of `contentTypes` permitted by the `allowedContentTypes`
28
+ * allow list. A `null` allow list permits everything. Text always passes
29
+ * through regardless of the allow list.
30
+ */
31
+ function filterContentTypes(contentTypes, allowedContentTypes) {
32
+ if (allowedContentTypes == null)
33
+ return contentTypes;
34
+ const allowed = new Set(allowedContentTypes);
35
+ const filtered = new Set();
36
+ for (const contentType of contentTypes) {
37
+ // Text is not subject to the allow list; keep it regardless.
38
+ if (contentType === 'text' || allowed.has(contentType)) {
39
+ filtered.add(contentType);
40
+ }
41
+ }
42
+ return filtered;
43
+ }
@@ -1,13 +1,16 @@
1
1
  import type { ObservableValue } from '@amazon/vinyl-observable';
2
2
  import type { Capabilities } from '../client/Capabilities';
3
3
  import type { DrmController } from '../drm/DrmController';
4
- import type { MediaTimeline } from '../streaming/MediaTimeline';
4
+ import type { MediaTimeline } from './MediaTimeline';
5
+ import type { CodecOverrides } from '../util/media/codecOverrides';
5
6
  export interface DefaultMediaTimelineTransformerDeps {
6
7
  readonly capabilities: Capabilities;
7
8
  readonly drmController: DrmController;
8
9
  readonly mediaTimeline: ObservableValue<Promise<MediaTimeline>>;
9
10
  readonly options: ObservableValue<{
10
- readonly preferredAudioLanguage: string | null;
11
+ readonly preferredAudioLanguage: string | readonly string[] | null;
12
+ readonly preferDescriptiveAudio?: boolean;
13
+ readonly codecOverrides?: CodecOverrides;
11
14
  }>;
12
15
  }
13
16
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"createDefaultMediaTimelineTransformer.d.ts","sourceRoot":"","sources":["../../../../src/streaming/createDefaultMediaTimelineTransformer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAoB9D,MAAM,WAAW,mCAAmC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;QAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;KACjD,CAAC,CAAA;CACL;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,mCAAmC,GAC1C,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAqCzC"}
1
+ {"version":3,"file":"createDefaultMediaTimelineTransformer.d.ts","sourceRoot":"","sources":["../../../../src/streaming/createDefaultMediaTimelineTransformer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAuBpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAGlE,MAAM,WAAW,mCAAmC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;QAC9B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;QAClE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;QACzC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;KAC3C,CAAC,CAAA;CACL;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,CACjD,IAAI,EAAE,mCAAmC,GAC1C,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CA6EzC"}
@@ -3,27 +3,58 @@
3
3
  * SPDX-License-Identifier: Apache-2.0
4
4
  */
5
5
  import { combineData } from '@amazon/vinyl-observable';
6
- import { filterTimelineQualities, filterTimelineQualitiesAsync, } from '../streaming/mediaTimelineFilter';
7
- import { createLanguageFilter } from '../streaming/mediaTimelineLanguageFilter';
6
+ import { filterTimelineQualities, filterTimelineQualitiesAsync, } from './mediaTimelineFilter';
7
+ import { createLanguageFilter } from './mediaTimelineLanguageFilter';
8
+ import { createAudioDescriptionFilter, throwNoPlayableAudio, } from './mediaTimelineAccessibilityFilter';
8
9
  import { canPlayMimeType, throwMimeTypesUnsupported, } from '../track/filters/resourceTypeFilter';
9
10
  import { canPlayKeySystem, throwKeySystemsUnsupported, } from '../track/filters/keySystemFilter';
10
11
  import { supportsAudioSamplingRate, throwSamplingRatesUnsupported, } from '../track/filters/sampleRateFilter';
11
12
  import { throwLanguagesUnsupported } from '../track/filters/languageFilter';
13
+ import { resolveCodecOverride } from '../util/media/codecOverrides';
12
14
  /**
13
15
  * The default media timeline transformer filters out unplayable qualities
14
16
  * and applies language preferences. Shared by Dash and HLS.
15
17
  */
16
18
  export function createDefaultMediaTimelineTransformer(deps) {
19
+ /**
20
+ * Applies explicit codec overrides on top of browser support detection.
21
+ * An `'allow'`/`'deny'` override for a quality's codec supersedes
22
+ * {@link canPlayMimeType}; otherwise the browser's support check is used.
23
+ */
24
+ function canPlayWithOverrides(quality, codecOverrides) {
25
+ if (quality.mimeType) {
26
+ const override = resolveCodecOverride(quality.mimeType, codecOverrides);
27
+ if (override === 'allow')
28
+ return true;
29
+ if (override === 'deny')
30
+ return false;
31
+ }
32
+ return canPlayMimeType(deps, quality);
33
+ }
17
34
  async function transformTimeline(timeline) {
18
- let t = filterTimelineQualities((quality) => canPlayMimeType(deps, quality), throwMimeTypesUnsupported, timeline);
35
+ const codecOverrides = deps.options.value.codecOverrides;
36
+ let t = filterTimelineQualities((quality) => canPlayWithOverrides(quality, codecOverrides), throwMimeTypesUnsupported, timeline);
19
37
  t = await filterTimelineQualitiesAsync((quality) => canPlayKeySystem(deps, quality), throwKeySystemsUnsupported, t);
20
38
  t = filterTimelineQualities((quality, index, array) => supportsAudioSamplingRate(deps, quality, index, array), throwSamplingRatesUnsupported, t);
39
+ // Resolve audio-description eligibility BEFORE the language filter.
40
+ // Description renditions are an accessibility opt-in, not general audio,
41
+ // so they must be gated out (unless opted in via preferDescriptiveAudio)
42
+ // before language selection runs. Otherwise a description rendition
43
+ // whose language tag happens to score higher than the main audio's
44
+ // (e.g. a described 'en' beating a main 'en-US') could win language
45
+ // selection and evict the main audio, stranding the listener on
46
+ // described audio they never opted into. With this gate first, the
47
+ // language filter only ever picks among eligible (main, or opted-in
48
+ // description) renditions.
49
+ t = filterTimelineQualities(createAudioDescriptionFilter(deps.options.value.preferDescriptiveAudio ?? false), throwNoPlayableAudio, t);
21
50
  t = filterTimelineQualities(createLanguageFilter(deps.options.value.preferredAudioLanguage, 'audio'), throwLanguagesUnsupported, t);
22
51
  return t;
23
52
  }
24
53
  return combineData({
25
54
  timeline: deps.mediaTimeline,
26
55
  preferredAudioLanguage: deps.options.pick('preferredAudioLanguage'),
56
+ preferDescriptiveAudio: deps.options.pick('preferDescriptiveAudio'),
57
+ codecOverrides: deps.options.pick('codecOverrides'),
27
58
  }).map(async ({ timeline }) => {
28
59
  return transformTimeline(await timeline);
29
60
  });
@@ -0,0 +1,35 @@
1
+ import type { MediaQualityMetadata } from './MediaQualityMetadata';
2
+ import type { FilterPredicate } from '@amazon/vinyl-util';
3
+ /**
4
+ * Thrown if the audio-description filter ever emptied a period's audio. The
5
+ * filter keeps at least one audio rendition per period by design, so this is a
6
+ * defensive guard rather than an expected path.
7
+ */
8
+ export declare function throwNoPlayableAudio(): never;
9
+ /**
10
+ * Characteristics that mark an audio rendition as an audio description (a.k.a.
11
+ * described video / DVS) — narration of on-screen action for viewers who cannot
12
+ * see it. HLS signals this with the `public.accessibility.describes-video`
13
+ * CHARACTERISTIC; DASH with a `description` Role. Such renditions must not be
14
+ * chosen as the default audio; they are an accessibility opt-in.
15
+ */
16
+ export declare const AUDIO_DESCRIPTION_CHARACTERISTICS: readonly string[];
17
+ /**
18
+ * Whether an audio quality is an audio-description rendition.
19
+ */
20
+ export declare function isAudioDescription(quality: MediaQualityMetadata): boolean;
21
+ /**
22
+ * Creates a filter that keeps audio-description renditions out of (or, when
23
+ * opted in, restricts audio to) the audio selection.
24
+ *
25
+ * - `preferDescription: false` (default): drop audio-description renditions
26
+ * from each period *when a non-description audio alternative exists*, so the
27
+ * main audio is chosen by default instead of the description track. If a
28
+ * period has only description audio, it is kept (playback is never stranded).
29
+ * - `preferDescription: true`: keep only description renditions when the period
30
+ * has any; otherwise keep all (again, never strand playback).
31
+ *
32
+ * Non-audio qualities are always kept.
33
+ */
34
+ export declare function createAudioDescriptionFilter(preferDescription: boolean): FilterPredicate<MediaQualityMetadata>;
35
+ //# sourceMappingURL=mediaTimelineAccessibilityFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaTimelineAccessibilityFilter.d.ts","sourceRoot":"","sources":["../../../../src/streaming/mediaTimelineAccessibilityFilter.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAGzD;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,KAAK,CAE5C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iCAAiC,EAAE,SAAS,MAAM,EAG9D,CAAA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAIzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CACxC,iBAAiB,EAAE,OAAO,GAC3B,eAAe,CAAC,oBAAoB,CAAC,CA8BvC"}
@@ -0,0 +1,75 @@
1
+ /*
2
+ * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ * SPDX-License-Identifier: Apache-2.0
4
+ */
5
+ import { MediaUnsupportedError, memoize } from '@amazon/vinyl-util';
6
+ /**
7
+ * Thrown if the audio-description filter ever emptied a period's audio. The
8
+ * filter keeps at least one audio rendition per period by design, so this is a
9
+ * defensive guard rather than an expected path.
10
+ */
11
+ export function throwNoPlayableAudio() {
12
+ throw new MediaUnsupportedError('No playable audio rendition', 'audio');
13
+ }
14
+ /**
15
+ * Characteristics that mark an audio rendition as an audio description (a.k.a.
16
+ * described video / DVS) — narration of on-screen action for viewers who cannot
17
+ * see it. HLS signals this with the `public.accessibility.describes-video`
18
+ * CHARACTERISTIC; DASH with a `description` Role. Such renditions must not be
19
+ * chosen as the default audio; they are an accessibility opt-in.
20
+ */
21
+ export const AUDIO_DESCRIPTION_CHARACTERISTICS = [
22
+ 'public.accessibility.describes-video',
23
+ 'description',
24
+ ];
25
+ /**
26
+ * Whether an audio quality is an audio-description rendition.
27
+ */
28
+ export function isAudioDescription(quality) {
29
+ return quality.characteristics.some((c) => AUDIO_DESCRIPTION_CHARACTERISTICS.includes(c));
30
+ }
31
+ /**
32
+ * Creates a filter that keeps audio-description renditions out of (or, when
33
+ * opted in, restricts audio to) the audio selection.
34
+ *
35
+ * - `preferDescription: false` (default): drop audio-description renditions
36
+ * from each period *when a non-description audio alternative exists*, so the
37
+ * main audio is chosen by default instead of the description track. If a
38
+ * period has only description audio, it is kept (playback is never stranded).
39
+ * - `preferDescription: true`: keep only description renditions when the period
40
+ * has any; otherwise keep all (again, never strand playback).
41
+ *
42
+ * Non-audio qualities are always kept.
43
+ */
44
+ export function createAudioDescriptionFilter(preferDescription) {
45
+ // Per period (per unique array reference): does it have description audio,
46
+ // and does it have non-description ("main") audio?
47
+ const periodFlags = memoize((array) => {
48
+ let hasDescription = false;
49
+ let hasMain = false;
50
+ for (const quality of Array.from(array)) {
51
+ if (quality.contentType !== 'audio')
52
+ continue;
53
+ if (isAudioDescription(quality))
54
+ hasDescription = true;
55
+ else
56
+ hasMain = true;
57
+ }
58
+ return { hasDescription, hasMain };
59
+ }, (array) => array, 1);
60
+ return (quality, _index, array) => {
61
+ if (quality.contentType !== 'audio')
62
+ return true;
63
+ const { hasDescription, hasMain } = periodFlags(array);
64
+ if (preferDescription) {
65
+ // Nothing to prefer; keep all rather than strand playback.
66
+ if (!hasDescription)
67
+ return true;
68
+ return isAudioDescription(quality);
69
+ }
70
+ // No main alternative; keep all rather than strand playback.
71
+ if (!hasMain)
72
+ return true;
73
+ return !isAudioDescription(quality);
74
+ };
75
+ }