@amazon/vinyl 1.2.0 → 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.
- package/dist/index.cjs +9225 -6633
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +9080 -6435
- package/dist/index.js.map +4 -4
- package/dist/test/benchmark.es5.js +266 -253
- package/dist/test/benchmark.js +3256 -3190
- package/dist/test/benchmark.js.map +4 -4
- package/dist/test/integ.es5.js +1404 -1093
- package/dist/test/integ.js +45924 -33873
- package/dist/test/integ.js.map +4 -4
- package/dist/types/current/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/current/ad/AdBreakInfo.d.ts.map +1 -0
- package/dist/types/current/ad/AdController.d.ts +229 -0
- package/dist/types/current/ad/AdController.d.ts.map +1 -0
- package/dist/types/current/ad/AdController.js +19 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts +146 -0
- package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -0
- package/dist/types/current/ad/AdControllerImpl.js +705 -0
- package/dist/types/current/ad/AdError.d.ts +6 -0
- package/dist/types/current/ad/AdError.d.ts.map +1 -0
- package/dist/types/current/ad/AdError.js +14 -0
- package/dist/types/current/ad/AdsProvider.d.ts +28 -0
- package/dist/types/current/ad/AdsProvider.d.ts.map +1 -0
- package/dist/types/current/ad/AdsProvider.js +5 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.d.ts.map +1 -0
- package/dist/types/current/ad/defaultAdLoadOptionsResolver.js +26 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -0
- package/dist/types/current/ad/discoverHlsInterstitials.js +246 -0
- package/dist/types/current/drm/DrmController.d.ts +29 -4
- package/dist/types/current/drm/DrmController.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.d.ts +13 -4
- package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.js +85 -14
- package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
- package/dist/types/current/drm/util/unpackPlayReadyChallenge.d.ts.map +1 -1
- package/dist/types/current/drm/util/unpackPlayReadyChallenge.js +5 -0
- package/dist/types/current/index.d.ts +151 -126
- package/dist/types/current/index.d.ts.map +1 -1
- package/dist/types/current/index.js +151 -126
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts +1 -0
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
- package/dist/types/current/playback/PlaybackControllerImpl.js +44 -5
- package/dist/types/current/playback/PlaybackSource.d.ts +1 -1
- package/dist/types/current/playback/ReadonlyPlaybackController.d.ts +6 -1
- package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
- package/dist/types/current/playback/ReadonlyPlaybackController.js +1 -0
- package/dist/types/current/streaming/ContentStream.d.ts +8 -1
- package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
- package/dist/types/current/streaming/ContentStream.js +19 -2
- package/dist/types/current/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -0
- package/dist/types/current/streaming/LoadMetric.js +5 -0
- package/dist/types/current/streaming/ManifestController.d.ts +16 -1
- package/dist/types/current/streaming/ManifestController.d.ts.map +1 -1
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/current/streaming/ManifestControllerImpl.d.ts.map +1 -0
- package/dist/types/current/streaming/ManifestControllerImpl.js +104 -0
- package/dist/types/current/streaming/MediaQualityMetadata.d.ts +16 -0
- package/dist/types/current/streaming/MediaQualityMetadata.d.ts.map +1 -1
- package/dist/types/current/streaming/MediaQualityMetadata.js +6 -0
- package/dist/types/current/streaming/MediaTimeline.d.ts +6 -0
- package/dist/types/current/streaming/MediaTimeline.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentController.d.ts +5 -0
- package/dist/types/current/streaming/SegmentController.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentControllerImpl.d.ts +12 -0
- package/dist/types/current/streaming/SegmentControllerImpl.d.ts.map +1 -1
- package/dist/types/current/streaming/SegmentControllerImpl.js +67 -10
- package/dist/types/current/streaming/StreamingEventMap.d.ts +38 -1
- package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
- package/dist/types/current/streaming/StreamingEventMap.js +4 -0
- package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts +28 -0
- package/dist/types/current/streaming/abr/QualitySelectorImpl.d.ts.map +1 -1
- package/dist/types/current/streaming/abr/QualitySelectorImpl.js +39 -4
- package/dist/types/current/streaming/buffering/BufferingController.d.ts +37 -0
- package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/BufferingController.js +79 -3
- package/dist/types/current/streaming/buffering/MediaSourceController.d.ts +16 -11
- package/dist/types/current/streaming/buffering/MediaSourceController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/MediaSourceController.js +76 -51
- package/dist/types/current/streaming/buffering/SourceBufferController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/SourceBufferController.js +5 -2
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/current/streaming/buffering/codecDenylist.d.ts.map +1 -0
- package/dist/types/current/streaming/buffering/codecDenylist.js +62 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.d.ts.map +1 -0
- package/dist/types/current/streaming/createAllowedContentTypesValue.js +43 -0
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +32 -1
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.d.ts.map +1 -0
- package/dist/types/current/streaming/mediaTimelineAccessibilityFilter.js +75 -0
- package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
- package/dist/types/current/streaming/mediaTimelineLanguageFilter.d.ts.map +1 -1
- package/dist/types/current/streaming/mediaTimelineLanguageFilter.js +61 -16
- package/dist/types/current/text/SidecarTextTrackController.d.ts +91 -0
- package/dist/types/current/text/SidecarTextTrackController.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackController.js +237 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts +60 -0
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -0
- package/dist/types/current/text/SidecarTextTrackLoader.js +144 -0
- package/dist/types/current/text/TextTrack.d.ts +125 -0
- package/dist/types/current/text/TextTrack.d.ts.map +1 -0
- package/dist/types/current/text/TextTrack.js +9 -0
- package/dist/types/current/text/VttCueStyle.d.ts +41 -0
- package/dist/types/current/text/VttCueStyle.d.ts.map +1 -0
- package/dist/types/current/text/VttCueStyle.js +45 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/current/text/discoverDashTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverDashTextTracks.js +109 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/current/text/discoverHlsTextTracks.d.ts.map +1 -0
- package/dist/types/current/text/discoverHlsTextTracks.js +49 -0
- package/dist/types/current/text/parseWebVtt.d.ts +46 -0
- package/dist/types/current/text/parseWebVtt.d.ts.map +1 -0
- package/dist/types/current/text/parseWebVtt.js +120 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts +14 -0
- package/dist/types/current/text/pickPreferredTextTrack.d.ts.map +1 -0
- package/dist/types/current/text/pickPreferredTextTrack.js +68 -0
- package/dist/types/current/track/SeekRange.d.ts +9 -0
- package/dist/types/current/track/SeekRange.d.ts.map +1 -0
- package/dist/types/current/track/SeekRange.js +5 -0
- package/dist/types/current/track/Track.d.ts +50 -7
- package/dist/types/current/track/Track.d.ts.map +1 -1
- package/dist/types/current/track/TrackBase.d.ts +30 -29
- package/dist/types/current/track/TrackBase.d.ts.map +1 -1
- package/dist/types/current/track/TrackBase.js +68 -16
- package/dist/types/current/track/TrackController.d.ts +100 -36
- package/dist/types/current/track/TrackController.d.ts.map +1 -1
- package/dist/types/current/track/TrackController.js +368 -115
- package/dist/types/current/track/TrackFactory.d.ts +23 -3
- package/dist/types/current/track/TrackFactory.d.ts.map +1 -1
- package/dist/types/current/track/TrackFactory.js +9 -3
- package/dist/types/current/track/dash/DashManifestController.d.ts +1 -40
- package/dist/types/current/track/dash/DashManifestController.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashManifestController.js +1 -79
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +13 -0
- package/dist/types/current/track/dash/DashTrack.d.ts +4 -5
- package/dist/types/current/track/dash/DashTrack.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashTrack.js +3 -5
- package/dist/types/current/track/dash/buildDashMediaTimeline.d.ts.map +1 -1
- package/dist/types/current/track/dash/buildDashMediaTimeline.js +3 -2
- package/dist/types/current/track/dash/createDashContentTypesValue.js +2 -2
- package/dist/types/current/track/dash/createDashFactories.d.ts +39 -12
- package/dist/types/current/track/dash/createDashFactories.d.ts.map +1 -1
- package/dist/types/current/track/dash/createDashFactories.js +33 -5
- package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts +0 -5
- package/dist/types/current/track/dash/createSegmentControllerFactory.d.ts.map +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +2 -1
- package/dist/types/current/track/dash/util/mpd.d.ts +10 -0
- package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
- package/dist/types/current/track/dash/util/mpd.js +16 -0
- package/dist/types/current/track/hls/HlsManifestController.d.ts +1 -25
- package/dist/types/current/track/hls/HlsManifestController.d.ts.map +1 -1
- package/dist/types/current/track/hls/HlsManifestController.js +1 -68
- package/dist/types/{ts3.7/track/hls/HlsManifestProvider.d.ts → current/track/hls/HlsManifestData.d.ts} +4 -6
- package/dist/types/current/track/hls/HlsManifestData.d.ts.map +1 -0
- package/dist/types/current/track/hls/HlsManifestData.js +5 -0
- package/dist/types/current/track/hls/HlsMediaQualityMetadataResolver.js +9 -6
- package/dist/types/current/track/hls/HlsTrack.d.ts +5 -6
- package/dist/types/current/track/hls/HlsTrack.d.ts.map +1 -1
- package/dist/types/current/track/hls/HlsTrack.js +3 -5
- package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts +8 -1
- package/dist/types/current/track/hls/buildHlsMediaTimeline.d.ts.map +1 -1
- package/dist/types/current/track/hls/buildHlsMediaTimeline.js +134 -67
- package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/current/track/hls/createDefaultHlsManifestTransformer.d.ts.map +1 -1
- package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts +1 -1
- package/dist/types/current/track/hls/createHlsContentTypesValue.d.ts.map +1 -1
- package/dist/types/current/track/hls/createHlsFactories.d.ts +40 -13
- package/dist/types/current/track/hls/createHlsFactories.d.ts.map +1 -1
- package/dist/types/current/track/hls/createHlsFactories.js +35 -6
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.d.ts.map +1 -0
- package/dist/types/current/track/hls/createHlsManifestProvider.js +9 -0
- package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
- package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
- package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +22 -3
- package/dist/types/current/track/hls/index.d.ts +1 -1
- package/dist/types/current/track/hls/index.d.ts.map +1 -1
- package/dist/types/current/track/hls/index.js +1 -1
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.d.ts.map +1 -0
- package/dist/types/current/track/inferLoadOptionsFromUri.js +55 -0
- package/dist/types/current/track/mse/MseTrack.d.ts +66 -8
- package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
- package/dist/types/current/track/mse/MseTrack.js +216 -52
- package/dist/types/current/track/source/SourceObjectTrack.d.ts +2 -2
- package/dist/types/current/track/source/SourceObjectTrack.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceTrack.d.ts +2 -2
- package/dist/types/current/track/source/SourceTrack.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceTrack.js +1 -2
- package/dist/types/current/track/source/SourceTrackBase.d.ts +7 -5
- package/dist/types/current/track/source/SourceTrackBase.d.ts.map +1 -1
- package/dist/types/current/track/source/SourceTrackBase.js +26 -9
- package/dist/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/types/current/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/current/util/media/codecOverrides.d.ts.map +1 -0
- package/dist/types/current/util/media/codecOverrides.js +37 -0
- package/dist/types/current/util/media/codecSupport.d.ts +6 -0
- package/dist/types/current/util/media/codecSupport.d.ts.map +1 -0
- package/dist/types/current/util/media/codecSupport.js +17 -0
- package/dist/types/current/util/media/mediaSource.d.ts +5 -0
- package/dist/types/current/util/media/mediaSource.d.ts.map +1 -1
- package/dist/types/current/util/media/mediaSource.js +6 -1
- package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
- package/dist/types/current/vinyl/ReadonlyPlaybackStreamingState.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylDeps.d.ts +5 -0
- package/dist/types/current/vinyl/VinylDeps.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylOptions.d.ts +68 -4
- package/dist/types/current/vinyl/VinylOptions.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylOptions.js +17 -2
- package/dist/types/current/vinyl/VinylPlayer.d.ts +63 -4
- package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylPlayer.js +216 -36
- package/dist/types/current/vinyl/createVinylFactories.d.ts +55 -12
- package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
- package/dist/types/current/vinyl/createVinylFactories.js +4 -0
- package/dist/types/ts3.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts3.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts3.7/ad/AdControllerImpl.d.ts +146 -0
- package/dist/types/ts3.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts3.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts3.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts3.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts3.7/drm/DrmController.d.ts +29 -4
- package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +13 -4
- package/dist/types/ts3.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
- package/dist/types/ts3.7/index.d.ts +151 -126
- package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +1 -0
- package/dist/types/ts3.7/playback/PlaybackSource.d.ts +1 -1
- package/dist/types/ts3.7/playback/ReadonlyPlaybackController.d.ts +6 -0
- package/dist/types/ts3.7/streaming/ContentStream.d.ts +8 -1
- package/dist/types/ts3.7/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts3.7/streaming/ManifestController.d.ts +16 -1
- package/dist/types/ts3.7/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts3.7/streaming/MediaQualityMetadata.d.ts +19 -0
- package/dist/types/ts3.7/streaming/MediaTimeline.d.ts +6 -0
- package/dist/types/ts3.7/streaming/SegmentController.d.ts +5 -0
- package/dist/types/ts3.7/streaming/SegmentControllerImpl.d.ts +12 -0
- package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +42 -1
- package/dist/types/ts3.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
- package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +37 -0
- package/dist/types/ts3.7/streaming/buffering/MediaSourceController.d.ts +16 -11
- package/dist/types/ts3.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts3.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts3.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
- package/dist/types/ts3.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts3.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
- package/dist/types/ts3.7/text/SidecarTextTrackController.d.ts +91 -0
- package/dist/types/ts3.7/text/SidecarTextTrackLoader.d.ts +60 -0
- package/dist/types/ts3.7/text/TextTrack.d.ts +129 -0
- package/dist/types/ts3.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts3.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts3.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts3.7/text/parseWebVtt.d.ts +46 -0
- package/dist/types/ts3.7/text/pickPreferredTextTrack.d.ts +14 -0
- package/dist/types/ts3.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts3.7/track/Track.d.ts +50 -7
- package/dist/types/ts3.7/track/TrackBase.d.ts +21 -29
- package/dist/types/ts3.7/track/TrackController.d.ts +102 -37
- package/dist/types/ts3.7/track/TrackFactory.d.ts +22 -2
- package/dist/types/ts3.7/track/dash/DashManifestController.d.ts +1 -36
- package/dist/types/ts3.7/track/dash/DashTrack.d.ts +4 -5
- package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +39 -12
- package/dist/types/ts3.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
- package/dist/types/ts3.7/track/dash/util/mpd.d.ts +10 -0
- package/dist/types/ts3.7/track/hls/HlsManifestController.d.ts +1 -22
- package/dist/types/{current/track/hls/HlsManifestProvider.d.ts → ts3.7/track/hls/HlsManifestData.d.ts} +4 -6
- package/dist/types/ts3.7/track/hls/HlsTrack.d.ts +5 -6
- package/dist/types/ts3.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
- package/dist/types/ts3.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts3.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
- package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +40 -13
- package/dist/types/ts3.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts3.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
- package/dist/types/ts3.7/track/hls/index.d.ts +1 -1
- package/dist/types/ts3.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts3.7/track/mse/MseTrack.d.ts +65 -7
- package/dist/types/ts3.7/track/source/SourceObjectTrack.d.ts +2 -2
- package/dist/types/ts3.7/track/source/SourceTrack.d.ts +2 -2
- package/dist/types/ts3.7/track/source/SourceTrackBase.d.ts +7 -5
- package/dist/types/ts3.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts3.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts3.7/util/media/mediaSource.d.ts +5 -0
- package/dist/types/ts3.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
- package/dist/types/ts3.7/vinyl/VinylDeps.d.ts +5 -0
- package/dist/types/ts3.7/vinyl/VinylOptions.d.ts +68 -4
- package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +33 -4
- package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +55 -12
- package/dist/types/ts4.1/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.1/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.1/ad/AdControllerImpl.d.ts +146 -0
- package/dist/types/ts4.1/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.1/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.1/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.1/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.1/drm/DrmController.d.ts +29 -4
- package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +13 -4
- package/dist/types/ts4.1/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
- package/dist/types/ts4.1/index.d.ts +151 -126
- package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +1 -0
- package/dist/types/ts4.1/playback/PlaybackSource.d.ts +1 -1
- package/dist/types/ts4.1/playback/ReadonlyPlaybackController.d.ts +6 -0
- package/dist/types/ts4.1/streaming/ContentStream.d.ts +8 -1
- package/dist/types/ts4.1/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts4.1/streaming/ManifestController.d.ts +16 -1
- package/dist/types/ts4.1/streaming/ManifestControllerImpl.d.ts +40 -0
- package/dist/types/ts4.1/streaming/MediaQualityMetadata.d.ts +19 -0
- package/dist/types/ts4.1/streaming/MediaTimeline.d.ts +6 -0
- package/dist/types/ts4.1/streaming/SegmentController.d.ts +5 -0
- package/dist/types/ts4.1/streaming/SegmentControllerImpl.d.ts +12 -0
- package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +42 -1
- package/dist/types/ts4.1/streaming/abr/QualitySelectorImpl.d.ts +28 -0
- package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +37 -0
- package/dist/types/ts4.1/streaming/buffering/MediaSourceController.d.ts +16 -11
- package/dist/types/ts4.1/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.1/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.1/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
- package/dist/types/ts4.1/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.1/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
- package/dist/types/ts4.1/text/SidecarTextTrackController.d.ts +92 -0
- package/dist/types/ts4.1/text/SidecarTextTrackLoader.d.ts +60 -0
- package/dist/types/ts4.1/text/TextTrack.d.ts +129 -0
- package/dist/types/ts4.1/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.1/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.1/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.1/text/parseWebVtt.d.ts +46 -0
- package/dist/types/ts4.1/text/pickPreferredTextTrack.d.ts +14 -0
- package/dist/types/ts4.1/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.1/track/Track.d.ts +50 -7
- package/dist/types/ts4.1/track/TrackBase.d.ts +21 -29
- package/dist/types/ts4.1/track/TrackController.d.ts +102 -37
- package/dist/types/ts4.1/track/TrackFactory.d.ts +22 -2
- package/dist/types/ts4.1/track/dash/DashManifestController.d.ts +1 -36
- package/dist/types/ts4.1/track/dash/DashTrack.d.ts +4 -5
- package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +39 -12
- package/dist/types/ts4.1/track/dash/createSegmentControllerFactory.d.ts +0 -5
- package/dist/types/ts4.1/track/dash/util/mpd.d.ts +10 -0
- package/dist/types/ts4.1/track/hls/HlsManifestController.d.ts +1 -22
- package/dist/types/ts4.1/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
- package/dist/types/ts4.1/track/hls/HlsTrack.d.ts +5 -6
- package/dist/types/ts4.1/track/hls/buildHlsMediaTimeline.d.ts +8 -1
- package/dist/types/ts4.1/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.1/track/hls/createHlsContentTypesValue.d.ts +1 -1
- package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +41 -13
- package/dist/types/ts4.1/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.1/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
- package/dist/types/ts4.1/track/hls/index.d.ts +1 -1
- package/dist/types/ts4.1/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.1/track/mse/MseTrack.d.ts +65 -7
- package/dist/types/ts4.1/track/source/SourceObjectTrack.d.ts +2 -2
- package/dist/types/ts4.1/track/source/SourceTrack.d.ts +2 -2
- package/dist/types/ts4.1/track/source/SourceTrackBase.d.ts +7 -5
- package/dist/types/ts4.1/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.1/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.1/util/media/mediaSource.d.ts +5 -0
- package/dist/types/ts4.1/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
- package/dist/types/ts4.1/vinyl/VinylDeps.d.ts +5 -0
- package/dist/types/ts4.1/vinyl/VinylOptions.d.ts +68 -4
- package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +33 -4
- package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +56 -12
- package/dist/types/ts4.7/ad/AdBreakInfo.d.ts +160 -0
- package/dist/types/ts4.7/ad/AdController.d.ts +243 -0
- package/dist/types/ts4.7/ad/AdControllerImpl.d.ts +146 -0
- package/dist/types/ts4.7/ad/AdError.d.ts +6 -0
- package/dist/types/ts4.7/ad/AdsProvider.d.ts +28 -0
- package/dist/types/ts4.7/ad/defaultAdLoadOptionsResolver.d.ts +12 -0
- package/dist/types/ts4.7/ad/discoverHlsInterstitials.d.ts +22 -0
- package/dist/types/ts4.7/drm/DrmController.d.ts +29 -4
- package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +13 -4
- package/dist/types/ts4.7/drm/util/unpackPlayReadyChallenge.d.ts +5 -0
- package/dist/types/ts4.7/index.d.ts +151 -126
- package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +1 -0
- package/dist/types/ts4.7/playback/PlaybackSource.d.ts +1 -1
- package/dist/types/ts4.7/playback/ReadonlyPlaybackController.d.ts +6 -0
- package/dist/types/ts4.7/streaming/ContentStream.d.ts +8 -1
- package/dist/types/ts4.7/streaming/LoadMetric.d.ts +58 -0
- package/dist/types/ts4.7/streaming/ManifestController.d.ts +16 -1
- package/dist/types/ts4.7/streaming/ManifestControllerImpl.d.ts +43 -0
- package/dist/types/ts4.7/streaming/MediaQualityMetadata.d.ts +19 -0
- package/dist/types/ts4.7/streaming/MediaTimeline.d.ts +6 -0
- package/dist/types/ts4.7/streaming/SegmentController.d.ts +5 -0
- package/dist/types/ts4.7/streaming/SegmentControllerImpl.d.ts +12 -0
- package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +42 -1
- package/dist/types/ts4.7/streaming/abr/QualitySelectorImpl.d.ts +28 -0
- package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +37 -0
- package/dist/types/ts4.7/streaming/buffering/MediaSourceController.d.ts +16 -11
- package/dist/types/ts4.7/streaming/buffering/codecDenylist.d.ts +23 -0
- package/dist/types/ts4.7/streaming/createAllowedContentTypesValue.d.ts +30 -0
- package/dist/types/ts4.7/streaming/createDefaultMediaTimelineTransformer.d.ts +4 -1
- package/dist/types/ts4.7/streaming/mediaTimelineAccessibilityFilter.d.ts +35 -0
- package/dist/types/ts4.7/streaming/mediaTimelineLanguageFilter.d.ts +24 -6
- package/dist/types/ts4.7/text/SidecarTextTrackController.d.ts +91 -0
- package/dist/types/ts4.7/text/SidecarTextTrackLoader.d.ts +60 -0
- package/dist/types/ts4.7/text/TextTrack.d.ts +129 -0
- package/dist/types/ts4.7/text/VttCueStyle.d.ts +41 -0
- package/dist/types/ts4.7/text/discoverDashTextTracks.d.ts +24 -0
- package/dist/types/ts4.7/text/discoverHlsTextTracks.d.ts +19 -0
- package/dist/types/ts4.7/text/parseWebVtt.d.ts +46 -0
- package/dist/types/ts4.7/text/pickPreferredTextTrack.d.ts +14 -0
- package/dist/types/ts4.7/track/SeekRange.d.ts +9 -0
- package/dist/types/ts4.7/track/Track.d.ts +50 -7
- package/dist/types/ts4.7/track/TrackBase.d.ts +30 -29
- package/dist/types/ts4.7/track/TrackController.d.ts +102 -37
- package/dist/types/ts4.7/track/TrackFactory.d.ts +23 -3
- package/dist/types/ts4.7/track/dash/DashManifestController.d.ts +1 -40
- package/dist/types/ts4.7/track/dash/DashTrack.d.ts +4 -5
- package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +39 -12
- package/dist/types/ts4.7/track/dash/createSegmentControllerFactory.d.ts +0 -5
- package/dist/types/ts4.7/track/dash/util/mpd.d.ts +10 -0
- package/dist/types/ts4.7/track/hls/HlsManifestController.d.ts +1 -25
- package/dist/types/ts4.7/track/hls/{HlsManifestProvider.d.ts → HlsManifestData.d.ts} +4 -6
- package/dist/types/ts4.7/track/hls/HlsTrack.d.ts +5 -6
- package/dist/types/ts4.7/track/hls/buildHlsMediaTimeline.d.ts +8 -1
- package/dist/types/ts4.7/track/hls/createDefaultHlsManifestTransformer.d.ts +1 -1
- package/dist/types/ts4.7/track/hls/createHlsContentTypesValue.d.ts +1 -1
- package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +40 -13
- package/dist/types/ts4.7/track/hls/createHlsManifestProvider.d.ts +6 -0
- package/dist/types/ts4.7/track/hls/createUrlHlsManifestProvider.d.ts +4 -4
- package/dist/types/ts4.7/track/hls/index.d.ts +1 -1
- package/dist/types/ts4.7/track/inferLoadOptionsFromUri.d.ts +15 -0
- package/dist/types/ts4.7/track/mse/MseTrack.d.ts +66 -8
- package/dist/types/ts4.7/track/source/SourceObjectTrack.d.ts +2 -2
- package/dist/types/ts4.7/track/source/SourceTrack.d.ts +2 -2
- package/dist/types/ts4.7/track/source/SourceTrackBase.d.ts +7 -5
- package/dist/types/ts4.7/util/media/codecOverrides.d.ts +33 -0
- package/dist/types/ts4.7/util/media/codecSupport.d.ts +6 -0
- package/dist/types/ts4.7/util/media/mediaSource.d.ts +5 -0
- package/dist/types/ts4.7/vinyl/ReadonlyPlaybackStreamingState.d.ts +9 -2
- package/dist/types/ts4.7/vinyl/VinylDeps.d.ts +5 -0
- package/dist/types/ts4.7/vinyl/VinylOptions.d.ts +68 -4
- package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +63 -4
- package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +55 -12
- package/dist/unit/types/current/ad/AdController.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdController.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdController.test.js +10 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/AdControllerImpl.test.js +1456 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts +2 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/defaultAdLoadOptionsResolver.test.js +56 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts +2 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.d.ts.map +1 -0
- package/dist/unit/types/current/ad/discoverHlsInterstitials.test.js +756 -0
- package/dist/unit/types/current/drm/DrmControllerImpl.test.js +205 -4
- package/dist/unit/types/current/index.d.ts +117 -98
- package/dist/unit/types/current/index.d.ts.map +1 -1
- package/dist/unit/types/current/index.js +117 -98
- package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +92 -3
- package/dist/unit/types/current/streaming/ContentStream.test.js +11 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/ManifestControllerImpl.test.js +197 -0
- package/dist/unit/types/current/streaming/MediaTimeline.test.js +2 -0
- package/dist/unit/types/current/streaming/MseTrack.test.js +478 -14
- package/dist/unit/types/current/streaming/SegmentControllerImpl.test.js +66 -0
- package/dist/unit/types/current/streaming/StreamingEventMap.test.js +2 -2
- package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +110 -0
- package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +123 -21
- package/dist/unit/types/current/streaming/buffering/MediaSourceController.test.js +37 -10
- package/dist/unit/types/current/streaming/buffering/SourceBufferController.test.js +4 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/buffering/codecDenylist.test.js +56 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/createAllowedContentTypesValue.test.js +77 -0
- package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +144 -2
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts +2 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.d.ts.map +1 -0
- package/dist/unit/types/current/streaming/mediaTimelineAccessibilityFilter.test.js +99 -0
- package/dist/unit/types/current/streaming/mediaTimelineFilter.test.js +9 -0
- package/dist/unit/types/current/streaming/mediaTimelineLanguageFilter.test.js +92 -3
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackController.test.js +587 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts +2 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/SidecarTextTrackLoader.test.js +336 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts +2 -0
- package/dist/unit/types/current/text/VttCueStyle.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/VttCueStyle.test.js +76 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverDashTextTracks.test.js +199 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/discoverHlsTextTracks.test.js +177 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts +2 -0
- package/dist/unit/types/current/text/parseWebVtt.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/parseWebVtt.test.js +212 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts +2 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.d.ts.map +1 -0
- package/dist/unit/types/current/text/pickPreferredTextTrack.test.js +67 -0
- package/dist/unit/types/current/track/TrackBase.test.js +50 -5
- package/dist/unit/types/current/track/TrackController.test.js +712 -109
- package/dist/unit/types/current/track/TrackFactory.test.js +13 -25
- package/dist/unit/types/current/track/dash/createDashContentStreamFactories.test.js +1 -0
- package/dist/unit/types/current/track/dash/createDashFactories.test.js +63 -2
- package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +1 -0
- package/dist/unit/types/current/track/dash/util/mpd.test.js +24 -1
- package/dist/unit/types/current/track/hls/HlsManifestController.test.js +4 -4
- package/dist/unit/types/current/track/hls/HlsMediaQualityMetadataResolver.test.js +4 -2
- package/dist/unit/types/current/track/hls/buildHlsMediaTimeline.test.js +260 -14
- package/dist/unit/types/current/track/hls/createHlsContentStreamFactories.test.js +1 -0
- package/dist/unit/types/current/track/hls/createHlsFactories.test.js +182 -4
- package/dist/unit/types/current/track/hls/createUrlHlsManifestProvider.test.js +19 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts +2 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.d.ts.map +1 -0
- package/dist/unit/types/current/track/inferLoadOptionsFromUri.test.js +165 -0
- package/dist/unit/types/current/track/source/SourceTrack.test.js +5 -0
- package/dist/unit/types/current/track/source/SourceTrackBase.test.js +24 -3
- package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecOverrides.test.js +42 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/codecSupport.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/codecSupport.test.js +26 -0
- package/dist/unit/types/current/util/media/mediaSource.test.js +6 -0
- package/dist/unit/types/current/vinyl/VinylPlayer.test.js +177 -75
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerAdBreaks.test.js +142 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts +2 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.d.ts.map +1 -0
- package/dist/unit/types/current/vinyl/VinylPlayerTextTracks.test.js +263 -0
- package/dist/vinylTestUtil/index.js +2393 -2232
- package/dist/vinylTestUtil/index.js.map +4 -4
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts +14 -0
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.js +49 -30
- package/dist/vinylTestUtil/types/current/index.d.ts +53 -51
- package/dist/vinylTestUtil/types/current/index.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/index.js +53 -51
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/ad/MockAdController.js +26 -0
- package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts +8 -1
- package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/dash/MockDashManifestController.js +15 -0
- package/dist/vinylTestUtil/types/current/mock/dash/mockDashManifest.d.ts +12 -12
- package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts +2 -2
- package/dist/vinylTestUtil/types/current/mock/drm/MockDrmController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts +7 -1
- package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/hls/MockHlsManifestController.js +12 -0
- package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts +3 -3
- package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/hls/mockHlsManifest.js +1 -0
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/player/MockVinylPlayerDependencies.js +17 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts +2 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.js +1 -0
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.js +1 -0
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockMediaSourceController.js +2 -1
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.d.ts.map +1 -0
- package/dist/vinylTestUtil/types/current/mock/text/MockTextTrackController.js +14 -0
- package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts +13 -4
- package/dist/vinylTestUtil/types/current/mock/track/MockTrack.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/MockTrack.js +11 -0
- package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts +3 -2
- package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/MockTrackController.js +2 -1
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts +6 -0
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/dash/createMockDashDependencies.js +8 -1
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/track/hls/createMockHlsDependencies.js +6 -1
- package/dist/vinylTestUtil/types/current/player/createVinylSuite.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/player/createVinylSuite.js +18 -7
- package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/eventPromises.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/eventPromises.js +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackCanSeek.js +5 -2
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlays.js +3 -3
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/util/playback/expectTrackPlaysUntil.js +11 -7
- package/dist/vinylTestUtil/types/ts3.7/assets/vinylTestAssets.d.ts +14 -0
- package/dist/vinylTestUtil/types/ts3.7/index.d.ts +53 -51
- package/dist/vinylTestUtil/types/ts3.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/dash/MockDashManifestController.d.ts +8 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/dash/mockDashManifest.d.ts +12 -12
- package/dist/vinylTestUtil/types/ts3.7/mock/drm/MockDrmController.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts3.7/mock/hls/MockHlsManifestController.d.ts +7 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/hls/mockHlsManifest.d.ts +3 -3
- package/dist/vinylTestUtil/types/ts3.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockContentStream.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrack.d.ts +13 -4
- package/dist/vinylTestUtil/types/ts3.7/mock/track/MockTrackController.d.ts +3 -2
- package/dist/vinylTestUtil/types/ts3.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
- package/dist/vinylTestUtil/types/ts4.1/assets/vinylTestAssets.d.ts +14 -0
- package/dist/vinylTestUtil/types/ts4.1/index.d.ts +53 -51
- package/dist/vinylTestUtil/types/ts4.1/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/dash/MockDashManifestController.d.ts +8 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/dash/mockDashManifest.d.ts +12 -12
- package/dist/vinylTestUtil/types/ts4.1/mock/drm/MockDrmController.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.1/mock/hls/MockHlsManifestController.d.ts +7 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/hls/mockHlsManifest.d.ts +3 -3
- package/dist/vinylTestUtil/types/ts4.1/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockContentStream.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrack.d.ts +13 -4
- package/dist/vinylTestUtil/types/ts4.1/mock/track/MockTrackController.d.ts +3 -2
- package/dist/vinylTestUtil/types/ts4.1/mock/track/dash/createMockDashDependencies.d.ts +6 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
- package/dist/vinylTestUtil/types/ts4.7/assets/vinylTestAssets.d.ts +14 -0
- package/dist/vinylTestUtil/types/ts4.7/index.d.ts +53 -51
- package/dist/vinylTestUtil/types/ts4.7/mock/ad/MockAdController.d.ts +15 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/dash/MockDashManifestController.d.ts +8 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/dash/mockDashManifest.d.ts +12 -12
- package/dist/vinylTestUtil/types/ts4.7/mock/drm/MockDrmController.d.ts +2 -2
- package/dist/vinylTestUtil/types/ts4.7/mock/hls/MockHlsManifestController.d.ts +7 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/hls/mockHlsManifest.d.ts +3 -3
- package/dist/vinylTestUtil/types/ts4.7/mock/player/MockVinylPlayerDependencies.d.ts +8 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockContentStream.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockBufferingController.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockMediaSourceController.d.ts +2 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/text/MockTextTrackController.d.ts +10 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrack.d.ts +13 -4
- package/dist/vinylTestUtil/types/ts4.7/mock/track/MockTrackController.d.ts +3 -2
- package/dist/vinylTestUtil/types/ts4.7/mock/track/dash/createMockDashDependencies.d.ts +6 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/track/hls/createMockHlsDependencies.d.ts +4 -0
- package/docs/ADS.md +264 -0
- package/docs/USAGE.md +142 -9
- package/package.json +16 -16
- package/dist/types/current/track/hls/HlsManifestProvider.d.ts.map +0 -1
- package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts +0 -2
- package/dist/unit/types/current/track/dash/DashManifestController.test.d.ts.map +0 -1
- package/dist/unit/types/current/track/dash/DashManifestController.test.js +0 -186
- /package/dist/types/current/{track/hls/HlsManifestProvider.js → ad/AdBreakInfo.js} +0 -0
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { countElements, createDisposer, EventHostImpl, first, getOrSet, logDebug, logInfo, LruCache, noop, } from '@amazon/vinyl-util';
|
|
5
|
+
import { countElements, createDisposer, EventHostImpl, first, getOrSet, IllegalStateError, logDebug, logError, logInfo, logVerbose, logWarn, LruCache, noop, resolveValueProvider, } from '@amazon/vinyl-util';
|
|
6
6
|
export const ALL_TRACK_CONTROLLER_EVENTS = [
|
|
7
|
-
'
|
|
8
|
-
'
|
|
7
|
+
'trackActivated',
|
|
8
|
+
'trackDeactivated',
|
|
9
9
|
'queueChange',
|
|
10
|
+
'trackEnded',
|
|
10
11
|
'queueEnded',
|
|
11
12
|
];
|
|
12
13
|
const defaultTrackControllerImplOptions = {
|
|
13
14
|
trackPrefetchCount: 2,
|
|
14
|
-
loadTimeout: 60,
|
|
15
15
|
preloadCapacity: 2,
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
@@ -29,47 +29,184 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
29
29
|
}
|
|
30
30
|
// When tracks are preloaded, the cache capacity may expand automatically to accommodate.
|
|
31
31
|
_autoPreloadCapacity = 0;
|
|
32
|
+
// The primary content track cache. Bounded by preloadCapacity + prefetch.
|
|
32
33
|
trackCache = new LruCache(0);
|
|
34
|
+
// A monotonically increasing id for a queue change, to allow for queue changes during events.
|
|
35
|
+
queueIdx = 0;
|
|
33
36
|
_queue = [];
|
|
37
|
+
// The current content track data in the queue. This will never represent an ad.
|
|
34
38
|
_current = null;
|
|
39
|
+
// The current Track, may be a content track or an ad track.
|
|
40
|
+
_currentTrack = null;
|
|
41
|
+
// The parent content track. Used as a reference to the track that initiated an ad break.
|
|
42
|
+
adParent = null;
|
|
43
|
+
// Current-track subscriptions (e.g. `error` → adController.failAd),
|
|
44
|
+
// re-bound per setCurrentTrack. Promote to a disposer if more are added.
|
|
45
|
+
currentTrackSub = null;
|
|
46
|
+
// Ad tracks keyed by parent content URI, kept out of the content cache.
|
|
47
|
+
// Pegged to the parent: disposed when the parent is evicted (see onEvict).
|
|
48
|
+
adTracksByParent = new Map();
|
|
35
49
|
disposer = createDisposer();
|
|
36
50
|
_options = defaultTrackControllerImplOptions;
|
|
37
|
-
trackEndedTimeoutId = null;
|
|
38
51
|
constructor(deps, initialOptions) {
|
|
39
52
|
super();
|
|
40
53
|
this.deps = deps;
|
|
41
54
|
const { add } = this.disposer;
|
|
55
|
+
const { playbackController } = deps;
|
|
42
56
|
this.trackCache.onEvicting = (track) => {
|
|
43
57
|
// Do not evict tracks within the prefetch range.
|
|
44
|
-
return (this.
|
|
58
|
+
return (this.getPrefetched().find((value) => value.uri === track.uri) ==
|
|
59
|
+
null);
|
|
45
60
|
};
|
|
46
61
|
this.trackCache.onEvict = (track) => {
|
|
47
62
|
logDebug(this, `Disposing track: ${track.uri}`);
|
|
63
|
+
// Ad tracks are pegged to their parent — disposing them here keeps
|
|
64
|
+
// them from outliving the content track they belong to.
|
|
65
|
+
this.disposeAdTracksFor(track.uri);
|
|
48
66
|
track.dispose();
|
|
49
67
|
return true;
|
|
50
68
|
};
|
|
51
|
-
add(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
69
|
+
add(playbackController.on('ended', this.onEnded));
|
|
70
|
+
this.initializeAdHandling();
|
|
71
|
+
this.configure(initialOptions);
|
|
72
|
+
}
|
|
73
|
+
initializeAdHandling() {
|
|
74
|
+
const { add } = this.disposer;
|
|
75
|
+
const { adController, adTrackLoadOptionsProvider, playbackController } = this.deps;
|
|
76
|
+
add(adController.on('adPreload', (event) => {
|
|
77
|
+
// The playhead is approaching a midroll/postroll break; warm its
|
|
78
|
+
// ad tracks for the current content track so they are ready on
|
|
79
|
+
// entry. Prerolls are already warmed by preloadPrerollAds.
|
|
80
|
+
const adParent = this.adParent;
|
|
81
|
+
if (adParent)
|
|
82
|
+
this.preloadBreakAds(adParent, event.adBreak);
|
|
83
|
+
}));
|
|
84
|
+
add(adController.on('adEntered', (event) => {
|
|
85
|
+
const adParent = this.adParent;
|
|
86
|
+
if (!adParent) {
|
|
87
|
+
logDebug(this, 'ad entered, no parent track');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const interrupted = () => this.adParent !== adParent ||
|
|
91
|
+
adController.currentAd !== event.ad;
|
|
92
|
+
if (event.ad.uri) {
|
|
93
|
+
// Infer the track load options from the ad.
|
|
94
|
+
adTrackLoadOptionsProvider(event.ad)
|
|
95
|
+
.then((adTrack) => {
|
|
96
|
+
if (!interrupted()) {
|
|
97
|
+
// set adTrack
|
|
98
|
+
this.setCurrentTrack(this.getOrCreateAdTrack(adParent.uri, adTrack), {
|
|
99
|
+
isAd: true,
|
|
100
|
+
checkPreroll: false,
|
|
101
|
+
config: {},
|
|
102
|
+
});
|
|
103
|
+
playbackController.play().catch(noop);
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
.catch((error) => {
|
|
107
|
+
if (!interrupted())
|
|
108
|
+
adController.failAd(error);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}));
|
|
112
|
+
add(adController.on('adBreakCompleted', (event) => {
|
|
113
|
+
logDebug(this, 'adBreakCompleted');
|
|
114
|
+
const adParent = this.adParent;
|
|
115
|
+
if (!adParent) {
|
|
116
|
+
logDebug(this, 'ad break completed, no parent track');
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (adController.currentAdBreak) {
|
|
120
|
+
logDebug(this, 'more adbreaks');
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (adParent.active) {
|
|
124
|
+
logDebug(this, 'no ads began');
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const adParentLoad = this._current;
|
|
128
|
+
const placement = event.adBreak.placement;
|
|
129
|
+
const isPreroll = placement === 'preroll';
|
|
130
|
+
const isPostroll = placement === 'postroll';
|
|
131
|
+
// A completed postroll marks the end of the whole track
|
|
132
|
+
// (content + postroll); preroll/midroll only resume content.
|
|
133
|
+
if (isPostroll) {
|
|
134
|
+
logDebug(this, 'trackEnded after postroll');
|
|
135
|
+
this.dispatch('trackEnded', { track: adParentLoad });
|
|
136
|
+
}
|
|
137
|
+
if (isPostroll && this.hasNext()) {
|
|
138
|
+
this.next();
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Overrides the config startTime to resume from the correct position.
|
|
142
|
+
const startTime = isPreroll
|
|
143
|
+
? adParentLoad.config?.startTime
|
|
144
|
+
: event.resumePosition;
|
|
145
|
+
// Resume the main track.
|
|
146
|
+
this.setCurrentTrack(adParent, {
|
|
147
|
+
config: {
|
|
148
|
+
...adParentLoad.config,
|
|
149
|
+
startTime,
|
|
150
|
+
},
|
|
151
|
+
isAd: false,
|
|
152
|
+
checkPreroll: false,
|
|
153
|
+
});
|
|
154
|
+
if (isPostroll) {
|
|
155
|
+
logInfo(this, 'queueEnded after postroll ad(s)');
|
|
156
|
+
this.dispatch('queueEnded', {});
|
|
58
157
|
}
|
|
59
158
|
else {
|
|
60
|
-
|
|
61
|
-
this.dispatch('queueEnded', {});
|
|
159
|
+
playbackController.play().catch(noop);
|
|
62
160
|
}
|
|
63
|
-
}
|
|
161
|
+
}
|
|
64
162
|
}));
|
|
65
|
-
this.configure(initialOptions);
|
|
66
163
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
164
|
+
/**
|
|
165
|
+
* The current track has ended naturally. On the next tick advance the queue or emit queue ended.
|
|
166
|
+
*/
|
|
167
|
+
onEnded = () => {
|
|
168
|
+
const { adController } = this.deps;
|
|
169
|
+
// `ended` fires for ad tracks too (they share the media element); an
|
|
170
|
+
// ad's end is the AdController's concern, the queue or content may be resumed on 'adBreakCompleted'
|
|
171
|
+
if (this.currentTrackIsAdTrack)
|
|
172
|
+
return;
|
|
173
|
+
const track = this._current;
|
|
174
|
+
if (!track) {
|
|
175
|
+
logWarn(this, 'an ended event was received with no current track');
|
|
176
|
+
return;
|
|
71
177
|
}
|
|
72
|
-
|
|
178
|
+
const interrupted = this.getQueueInterrupted();
|
|
179
|
+
adController
|
|
180
|
+
.enterPostroll()
|
|
181
|
+
.then((postroll) => {
|
|
182
|
+
if (postroll) {
|
|
183
|
+
// There is a pending postroll, do not advance the queue,
|
|
184
|
+
// a new adEntered event will fire.
|
|
185
|
+
logDebug(this, 'postroll entered');
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
// The content ended with no postroll: the track is done.
|
|
189
|
+
logDebug(this, 'trackEnded');
|
|
190
|
+
this.dispatch('trackEnded', { track });
|
|
191
|
+
// Adds a microtask delay to allow applications an opportunity to respond to 'ended' and 'trackEnded'
|
|
192
|
+
// events before the queue is advanced.
|
|
193
|
+
queueMicrotask(() => {
|
|
194
|
+
if (interrupted())
|
|
195
|
+
return;
|
|
196
|
+
if (this.hasNext()) {
|
|
197
|
+
this.next();
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
logInfo(this, 'queueEnded');
|
|
201
|
+
this.dispatch('queueEnded', {});
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
})
|
|
206
|
+
.catch((error) => {
|
|
207
|
+
logError(this, 'enterPostroll failed', error);
|
|
208
|
+
});
|
|
209
|
+
};
|
|
73
210
|
/**
|
|
74
211
|
* Returns the currently set configuration.
|
|
75
212
|
*/
|
|
@@ -106,7 +243,7 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
106
243
|
* Returns the subset of the queue that should be prefetched.
|
|
107
244
|
* @private
|
|
108
245
|
*/
|
|
109
|
-
|
|
246
|
+
getPrefetched() {
|
|
110
247
|
const tracks = [];
|
|
111
248
|
if (this._current)
|
|
112
249
|
tracks.push(this._current);
|
|
@@ -136,7 +273,7 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
136
273
|
this._preload(loadOptionsList);
|
|
137
274
|
}
|
|
138
275
|
_preload(loadOptionsList) {
|
|
139
|
-
const prefetched = this.
|
|
276
|
+
const prefetched = this.getPrefetched();
|
|
140
277
|
// Calculate the required preload capacity as the number of tracks requested that are not within the
|
|
141
278
|
// prefetch window. If this value is greater than the current preloadCapacity, increase the cache size.
|
|
142
279
|
const requiredPreloadCapacity = countElements(loadOptionsList, (loadOptions) => {
|
|
@@ -153,25 +290,77 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
153
290
|
trackPriority.value += loadOptionsList.length;
|
|
154
291
|
let priority = trackPriority.value;
|
|
155
292
|
for (const loadOptions of loadOptionsList) {
|
|
156
|
-
const track = this.getOrCreateTrack(loadOptions
|
|
293
|
+
const track = this.getOrCreateTrack(loadOptions);
|
|
294
|
+
const prefetchPriority = priority--;
|
|
295
|
+
logVerbose(this, `preloading track ${track.uri} with priority ${prefetchPriority}`);
|
|
157
296
|
track.preload({
|
|
158
|
-
prefetchPriority
|
|
297
|
+
prefetchPriority,
|
|
159
298
|
}, loadOptions.config ?? {});
|
|
299
|
+
this.preloadPrerollAds(track, prefetchPriority);
|
|
160
300
|
}
|
|
161
301
|
}
|
|
302
|
+
preloadPrerollAds(parentTrack, parentTrackPriority) {
|
|
303
|
+
parentTrack
|
|
304
|
+
.getAds()
|
|
305
|
+
.then(async (trackAds) => {
|
|
306
|
+
for (const [index, adBreak] of trackAds.adBreaks.entries()) {
|
|
307
|
+
if (adBreak.placement !== 'preroll')
|
|
308
|
+
continue;
|
|
309
|
+
const ads = await resolveValueProvider(adBreak.ads);
|
|
310
|
+
for (const ad of ads) {
|
|
311
|
+
await this.preloadAd({
|
|
312
|
+
parentTrack,
|
|
313
|
+
// A prefetch priority fractionally higher than the
|
|
314
|
+
// parent track (so a preroll is warmed before its
|
|
315
|
+
// content), later breaks slightly higher than earlier.
|
|
316
|
+
prefetchPriority: parentTrackPriority + (index + 1) / 1000,
|
|
317
|
+
ad,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
})
|
|
322
|
+
.catch((error) => {
|
|
323
|
+
// Preloading prerolls is best-effort: an ad-discovery, ad-list,
|
|
324
|
+
// or ad-options failure must not surface as an unhandled
|
|
325
|
+
// rejection (it just means the preroll isn't warmed up).
|
|
326
|
+
logVerbose(this, `preroll ad preload failed for ${parentTrack.uri}`, error);
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Warms the ad tracks for an approaching midroll/postroll break (driven by
|
|
331
|
+
* the ad controller's `adPreload`). Best-effort: an ad-list or ad-options
|
|
332
|
+
* failure is logged, not thrown. The break is imminent, so its ad tracks
|
|
333
|
+
* get a prefetch priority above the current content prefetch window.
|
|
334
|
+
*/
|
|
335
|
+
preloadBreakAds(parentTrack, adBreak) {
|
|
336
|
+
trackPriority.value += 1;
|
|
337
|
+
const prefetchPriority = trackPriority.value;
|
|
338
|
+
resolveValueProvider(adBreak.ads)
|
|
339
|
+
.then(async (ads) => {
|
|
340
|
+
for (const ad of ads) {
|
|
341
|
+
await this.preloadAd({ parentTrack, prefetchPriority, ad });
|
|
342
|
+
}
|
|
343
|
+
})
|
|
344
|
+
.catch((error) => {
|
|
345
|
+
logVerbose(this, `ad preload failed for break ${adBreak.id}`, error);
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
/** Preloads an ad for a parent track. Aborts if the parent track is disposed before the ad load options resolve. **/
|
|
349
|
+
async preloadAd({ parentTrack, prefetchPriority, ad, }) {
|
|
350
|
+
const { adTrackLoadOptionsProvider } = this.deps;
|
|
351
|
+
const loadOptions = await adTrackLoadOptionsProvider(ad);
|
|
352
|
+
if (parentTrack.disposed)
|
|
353
|
+
return;
|
|
354
|
+
logVerbose(this, `preloading ad id=${ad.id} uri=${ad.uri} priority=${prefetchPriority}`);
|
|
355
|
+
const adTrack = this.getOrCreateAdTrack(parentTrack.uri, loadOptions);
|
|
356
|
+
adTrack.preload({
|
|
357
|
+
prefetchPriority,
|
|
358
|
+
}, loadOptions.config ?? {});
|
|
359
|
+
}
|
|
162
360
|
load(...loadOptionsList) {
|
|
163
361
|
logDebug(this, `load ${loadOptionsList.length} items`);
|
|
164
362
|
loadOptionsList.forEach(this.validateLoadOptions);
|
|
165
|
-
this.
|
|
166
|
-
this._current = loadOptionsList[0] ?? null;
|
|
167
|
-
const previousQueue = this._queue;
|
|
168
|
-
this._queue = loadOptionsList.slice(1);
|
|
169
|
-
this._preload(this.prefetched);
|
|
170
|
-
this.activateCurrent();
|
|
171
|
-
this.dispatch('queueChange', {
|
|
172
|
-
previous: previousQueue,
|
|
173
|
-
current: this._queue,
|
|
174
|
-
});
|
|
363
|
+
this.setQueue(loadOptionsList[0], loadOptionsList.slice(1));
|
|
175
364
|
}
|
|
176
365
|
unload() {
|
|
177
366
|
this.load();
|
|
@@ -179,56 +368,30 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
179
368
|
enqueue(...loadOptionsList) {
|
|
180
369
|
logDebug(this, `enqueue ${loadOptionsList.length} items`);
|
|
181
370
|
loadOptionsList.forEach(this.validateLoadOptions);
|
|
182
|
-
|
|
183
|
-
this.
|
|
184
|
-
this._preload(this.prefetched);
|
|
185
|
-
if (this.currentTrack == null && this.hasNext())
|
|
371
|
+
this.setQueue(this._current, this._queue.concat(loadOptionsList));
|
|
372
|
+
if (this._currentTrack == null && this.hasNext())
|
|
186
373
|
this.next();
|
|
187
|
-
this.dispatch('queueChange', {
|
|
188
|
-
previous: previousQueue,
|
|
189
|
-
current: this._queue,
|
|
190
|
-
});
|
|
191
374
|
}
|
|
192
375
|
hasNext() {
|
|
193
376
|
return this._queue.length > 0;
|
|
194
377
|
}
|
|
195
378
|
next() {
|
|
196
|
-
this.clearTrackEndedTimeout();
|
|
197
379
|
const playbackController = this.deps.playbackController;
|
|
198
380
|
const shouldPlay = playbackController.ended || !playbackController.paused;
|
|
199
381
|
const next = first(this._queue);
|
|
200
|
-
|
|
201
|
-
this.
|
|
202
|
-
this._current = next ?? null;
|
|
203
|
-
logDebug(this, 'next, nextTrack:', this._current);
|
|
204
|
-
if (this.options.trackPrefetchCount > 0 &&
|
|
205
|
-
this._queue.length >= this.options.trackPrefetchCount) {
|
|
206
|
-
this._preload([this._queue[this.options.trackPrefetchCount - 1]]);
|
|
207
|
-
}
|
|
208
|
-
this.activateCurrent();
|
|
209
|
-
if (shouldPlay)
|
|
210
|
-
void playbackController.play().catch(noop);
|
|
211
|
-
this.dispatch('queueChange', {
|
|
212
|
-
previous: previousQueue,
|
|
213
|
-
current: this._queue,
|
|
214
|
-
});
|
|
382
|
+
logDebug(this, 'next, nextTrack:', next);
|
|
383
|
+
this.setQueue(next, this._queue.slice(1), { shouldPlay });
|
|
215
384
|
}
|
|
216
385
|
clearTrackCache() {
|
|
217
386
|
logDebug(this, 'clearTrackCache');
|
|
218
|
-
this.clearTrackEndedTimeout();
|
|
219
|
-
const previousQueue = this._queue;
|
|
220
|
-
this._queue = [];
|
|
221
387
|
this.trackCache.forEach((track) => {
|
|
388
|
+
this.disposeAdTracksFor(track.uri);
|
|
222
389
|
track.dispose();
|
|
223
390
|
});
|
|
224
391
|
this.trackCache.clear();
|
|
225
392
|
this._autoPreloadCapacity = 0;
|
|
226
393
|
this.checkCacheCapacity();
|
|
227
|
-
this.
|
|
228
|
-
this.dispatch('queueChange', {
|
|
229
|
-
previous: previousQueue,
|
|
230
|
-
current: this._queue,
|
|
231
|
-
});
|
|
394
|
+
this.setQueue(null, []);
|
|
232
395
|
}
|
|
233
396
|
clearPrefetch() {
|
|
234
397
|
for (const cachedTrack of this.trackCache.values()) {
|
|
@@ -236,72 +399,162 @@ export class TrackControllerImpl extends EventHostImpl {
|
|
|
236
399
|
}
|
|
237
400
|
}
|
|
238
401
|
clearQueue() {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
this._queue = [];
|
|
242
|
-
this.dispatch('queueChange', {
|
|
243
|
-
previous,
|
|
244
|
-
current: this._queue,
|
|
245
|
-
});
|
|
402
|
+
// Clears the upcoming queue without unloading the current track.
|
|
403
|
+
this.setQueue(this._current, []);
|
|
246
404
|
}
|
|
247
405
|
/**
|
|
248
406
|
* If the given track id is the current track or in the cache, returns that track.
|
|
249
407
|
* Otherwise, constructs a new track, adds it to the cache, and returns it.
|
|
250
408
|
*
|
|
251
|
-
* @param uri The unique resource identifier.
|
|
252
409
|
* @param loadOptions
|
|
253
410
|
* @private
|
|
254
411
|
*/
|
|
255
|
-
getOrCreateTrack(
|
|
256
|
-
return getOrSet(this.trackCache, uri, () =>
|
|
257
|
-
const newTrack = this.deps.trackFactory.createTrack(loadOptions);
|
|
258
|
-
this.trackCache.set(uri, newTrack);
|
|
259
|
-
return newTrack;
|
|
260
|
-
});
|
|
412
|
+
getOrCreateTrack(loadOptions) {
|
|
413
|
+
return getOrSet(this.trackCache, loadOptions.uri, () => this.deps.trackFactory.createTrack(loadOptions));
|
|
261
414
|
}
|
|
262
415
|
/**
|
|
263
|
-
*
|
|
416
|
+
* Gets the cached ad track, or creates a new one and sets it in the
|
|
417
|
+
* parent track mapping.
|
|
418
|
+
* When the parent track is disposed, this ad track will be as well.
|
|
419
|
+
*
|
|
420
|
+
* @param parentUri The URI of the parent track.
|
|
421
|
+
* @param loadOptions
|
|
422
|
+
* @private
|
|
264
423
|
*/
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
424
|
+
getOrCreateAdTrack(parentUri, loadOptions) {
|
|
425
|
+
const parentTracks = getOrSet(this.adTracksByParent, parentUri, () => new Map());
|
|
426
|
+
return getOrSet(parentTracks, loadOptions.uri, () => this.deps.trackFactory.createTrack(loadOptions));
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Sets the current track and following queue.
|
|
430
|
+
*
|
|
431
|
+
* If the given track is already current, it will be de-activated and re-activated and the
|
|
432
|
+
* trackDeactivated/trackActivated events will still be emitted. The same track may be in the
|
|
433
|
+
* queue multiple times.
|
|
434
|
+
*/
|
|
435
|
+
setQueue(current, queue, options) {
|
|
436
|
+
const { playbackController } = this.deps;
|
|
437
|
+
++this.queueIdx;
|
|
438
|
+
const interrupted = this.getQueueInterrupted();
|
|
439
|
+
const previousQueue = this._queue;
|
|
440
|
+
const previous = this._current;
|
|
441
|
+
if (previous !== current) {
|
|
442
|
+
// Update the pointers before materializing the track, so eviction
|
|
443
|
+
// protects the incoming track and its window, not the outgoing one.
|
|
444
|
+
this._current = current ?? null;
|
|
445
|
+
this._queue = queue;
|
|
446
|
+
this.setCurrentTrack(current ? this.getOrCreateTrack(current) : null, {
|
|
447
|
+
isAd: false,
|
|
448
|
+
checkPreroll: true,
|
|
449
|
+
config: current?.config,
|
|
450
|
+
});
|
|
451
|
+
if (options?.shouldPlay) {
|
|
452
|
+
// playback controller defers play until the new track is loaded
|
|
453
|
+
playbackController.play().catch(noop);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
// Current track unchanged but the queue may have (e.g. enqueue).
|
|
458
|
+
// Keep it in sync so hasNext()/next() work.
|
|
459
|
+
this._queue = queue;
|
|
460
|
+
}
|
|
461
|
+
this._preload(this.getPrefetched());
|
|
462
|
+
logDebug(this, `track change, previous: ${previous?.uri} current: ${current?.uri}`);
|
|
463
|
+
if (previousQueue !== queue) {
|
|
464
|
+
this.dispatch('queueChange', {
|
|
465
|
+
previous: previousQueue,
|
|
466
|
+
current: queue,
|
|
467
|
+
});
|
|
468
|
+
}
|
|
469
|
+
if (interrupted()) {
|
|
470
|
+
throw new IllegalStateError(`cannot change the queue on a 'queueChange' or 'trackDeactivated' event`);
|
|
270
471
|
}
|
|
271
|
-
this.setCurrentTrack(this.getOrCreateTrack(loadOptions.uri, loadOptions), loadOptions);
|
|
272
472
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
return this._currentTrack;
|
|
473
|
+
get currentTrackIsAdTrack() {
|
|
474
|
+
return this._currentTrack !== this.adParent;
|
|
276
475
|
}
|
|
277
476
|
/**
|
|
278
|
-
* Sets the
|
|
279
|
-
*
|
|
280
|
-
*
|
|
477
|
+
* Sets the active track.
|
|
478
|
+
* This may either be a content track created from `setQueue` or an ad track created from `adEntered`.
|
|
479
|
+
*
|
|
480
|
+
* @param newTrack
|
|
481
|
+
* @param options
|
|
482
|
+
* @private
|
|
281
483
|
*/
|
|
282
|
-
setCurrentTrack(
|
|
484
|
+
setCurrentTrack(newTrack, options) {
|
|
485
|
+
const { adController } = this.deps;
|
|
283
486
|
const previousTrack = this._currentTrack;
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
487
|
+
const previousWasActive = previousTrack?.active ?? false;
|
|
488
|
+
this._currentTrack = newTrack;
|
|
489
|
+
const interrupted = () => this._currentTrack !== newTrack;
|
|
490
|
+
previousTrack?.deactivate();
|
|
491
|
+
if (previousTrack && previousWasActive) {
|
|
492
|
+
this.dispatch('trackDeactivated', { track: previousTrack });
|
|
493
|
+
}
|
|
494
|
+
// Forward the active track's errors to the ad controller. When an ad
|
|
495
|
+
// track errors (fails to load or errors mid-playback), this fails the
|
|
496
|
+
// ad so the break advances rather than stalling on the broken ad; on a
|
|
497
|
+
// content track failAd is a no-op (the error still surfaces as a player
|
|
498
|
+
// error). Re-subscribed per track and torn down on the next change.
|
|
499
|
+
this.currentTrackSub?.();
|
|
500
|
+
this.currentTrackSub =
|
|
501
|
+
newTrack?.on('error', (event) => adController.failAd(event.error)) ?? null;
|
|
502
|
+
if (!options.isAd) {
|
|
503
|
+
this.adParent = newTrack;
|
|
504
|
+
adController.setAdsProvider(newTrack);
|
|
505
|
+
}
|
|
506
|
+
if (newTrack) {
|
|
507
|
+
const activate = () => {
|
|
508
|
+
if (interrupted())
|
|
509
|
+
return;
|
|
510
|
+
newTrack.activate(options.config ?? {});
|
|
511
|
+
this.dispatch('trackActivated', { track: newTrack });
|
|
512
|
+
};
|
|
513
|
+
if (options.isAd || !options.checkPreroll) {
|
|
514
|
+
activate(); // Ads cannot have prerolls.
|
|
515
|
+
}
|
|
516
|
+
else {
|
|
517
|
+
adController
|
|
518
|
+
.enterPreroll()
|
|
519
|
+
.then((preroll) => {
|
|
520
|
+
if (preroll)
|
|
521
|
+
return; // preroll entered
|
|
522
|
+
activate();
|
|
523
|
+
})
|
|
524
|
+
.catch((error) => {
|
|
525
|
+
logError(this, 'enterPreroll failed', error);
|
|
526
|
+
activate();
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Disposes all preloaded ad tracks belonging to the given parent content
|
|
533
|
+
* URI and drops the parent's entry from the ad map.
|
|
534
|
+
*/
|
|
535
|
+
disposeAdTracksFor(parentUri) {
|
|
536
|
+
const adTracks = this.adTracksByParent.get(parentUri);
|
|
537
|
+
if (!adTracks)
|
|
538
|
+
return;
|
|
539
|
+
this.adTracksByParent.delete(parentUri);
|
|
540
|
+
for (const track of adTracks.values())
|
|
541
|
+
track.dispose();
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Returns a callback that returns true if the queue has changed or the controller disposed.
|
|
545
|
+
*/
|
|
546
|
+
getQueueInterrupted() {
|
|
547
|
+
const idx = this.queueIdx;
|
|
548
|
+
return () => this.disposed || this.queueIdx !== idx;
|
|
549
|
+
}
|
|
550
|
+
get activeTrack() {
|
|
551
|
+
return this._currentTrack?.active ? this._currentTrack : null;
|
|
299
552
|
}
|
|
300
|
-
|
|
301
|
-
this.
|
|
553
|
+
reset(hard = false) {
|
|
554
|
+
this._currentTrack?.reset(hard);
|
|
302
555
|
}
|
|
303
|
-
|
|
304
|
-
this.
|
|
556
|
+
get disposed() {
|
|
557
|
+
return this.disposer.disposed;
|
|
305
558
|
}
|
|
306
559
|
dispose() {
|
|
307
560
|
logDebug(this, 'dispose');
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type
|
|
1
|
+
import { type Maybe, type ReadonlyRecord } from '@amazon/vinyl-util';
|
|
2
|
+
import { type ObjectSchema } from '@amazon/vinyl-validation';
|
|
3
3
|
import type { Track, TrackTypeId, TrackUri } from './Track';
|
|
4
|
+
import { type DrmOptions } from '../drm/DrmOptions';
|
|
4
5
|
export interface TrackLoadOptions {
|
|
5
6
|
/**
|
|
6
7
|
* The track type, used to map to a track factory.
|
|
@@ -13,8 +14,27 @@ export interface TrackLoadOptions {
|
|
|
13
14
|
/**
|
|
14
15
|
* The track configuration.
|
|
15
16
|
*/
|
|
16
|
-
readonly config?: Maybe<
|
|
17
|
+
readonly config?: Maybe<TrackConfigOptions>;
|
|
17
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* General configuration for tracks set in track load options.
|
|
21
|
+
*/
|
|
22
|
+
export interface TrackConfigOptions {
|
|
23
|
+
/**
|
|
24
|
+
* The time to seek to when the track has been activated.
|
|
25
|
+
* For MSE tracks this will affect pre-fetching.
|
|
26
|
+
*/
|
|
27
|
+
readonly startTime?: Maybe<number>;
|
|
28
|
+
/**
|
|
29
|
+
* Extra application data to associate with the track.
|
|
30
|
+
*/
|
|
31
|
+
readonly extra?: any;
|
|
32
|
+
/**
|
|
33
|
+
* DRM Configuration overrides for this track.
|
|
34
|
+
*/
|
|
35
|
+
readonly drm?: Partial<DrmOptions>;
|
|
36
|
+
}
|
|
37
|
+
export declare const trackConfigOptionsValidator: ObjectSchema<TrackConfigOptions>;
|
|
18
38
|
export declare const trackLoadOptionsValidator: ObjectSchema<TrackLoadOptions>;
|
|
19
39
|
/**
|
|
20
40
|
* Produces a new Track for the given configuration options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TrackFactory.d.ts","sourceRoot":"","sources":["../../../../src/track/TrackFactory.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TrackFactory.d.ts","sourceRoot":"","sources":["../../../../src/track/TrackFactory.ts"],"names":[],"mappings":"AAKA,OAAO,EAEH,KAAK,KAAK,EAEV,KAAK,cAAc,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAKH,KAAK,YAAY,EAGpB,MAAM,0BAA0B,CAAA;AAEjC,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,mBAAmB,CAAA;AAExE,MAAM,WAAW,gBAAgB;IAC7B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;IAE1B;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IAEtB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;IAElC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAA;IAEpB;;OAEG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAA;CACrC;AAED,eAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC,kBAAkB,CAKnE,CAAA;AAEN,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,gBAAgB,CAMpE,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,oBAAoB,SAAS,gBAAgB;IACvE;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAA;IAE7C;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,KAAK,CAAA;CACpD;AAED,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,YAAY,CAAC,GAAG,CAAC,IAC/D,CAAC,SAAS,YAAY,CAAC,MAAM,WAAW,CAAC,GAAG,WAAW,GAAG,KAAK,CAAA;AAEnE,MAAM,MAAM,2BAA2B,CACnC,CAAC,SAAS,cAAc,CAAC,WAAW,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC,IACrE,2BAA2B,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE3C,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAC3C,WAAW,EACX,YAAY,CAAC,gBAAgB,CAAC,CACjC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,kBAAkB,IAAI;IAChE,QAAQ,EAAE,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GACtE,CAAC,CAAC,CAAC,CAAC,GACJ,KAAK;CACd,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,kBAAkB,EAC3D,SAAS,EAAE,uBAAuB,CAAC,CAAC,CAAC,GACtC,YAAY,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,CAa9C"}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { ErrorOrigin, ownKeys } from '@amazon/vinyl-util';
|
|
6
|
-
import { isOneOf, object, string, } from '@amazon/vinyl-validation';
|
|
5
|
+
import { ErrorOrigin, ownKeys, } from '@amazon/vinyl-util';
|
|
6
|
+
import { any, isOneOf, number, object, string, } from '@amazon/vinyl-validation';
|
|
7
|
+
import { drmOptionsValidator } from '../drm/DrmOptions';
|
|
8
|
+
export const trackConfigOptionsValidator = object({
|
|
9
|
+
extra: any().optional(),
|
|
10
|
+
startTime: number().maybe().optional(),
|
|
11
|
+
drm: drmOptionsValidator.partial().optional(),
|
|
12
|
+
});
|
|
7
13
|
export const trackLoadOptionsValidator = object({
|
|
8
14
|
type: string(),
|
|
9
15
|
uri: string().notEmpty(),
|
|
10
|
-
config:
|
|
16
|
+
config: trackConfigOptionsValidator.maybe().optional(),
|
|
11
17
|
});
|
|
12
18
|
/**
|
|
13
19
|
* Given a map of TrackTypeId => TrackFactory, returns a track factory
|