@amazon/vinyl 3.0.1 → 3.2.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 +1103 -1042
- package/dist/index.cjs.map +4 -4
- package/dist/index.js +810 -739
- package/dist/index.js.map +4 -4
- package/dist/test/benchmark.js.map +2 -2
- package/dist/test/integ.es5.js +394 -388
- package/dist/test/integ.js +2626 -2032
- package/dist/test/integ.js.map +4 -4
- package/dist/test/jasmine.css +50 -3
- package/dist/test/jasmineHtml.es5.js +195 -155
- package/dist/test/jasmineHtml.js +2938 -1833
- package/dist/test/jasmineHtml.js.map +3 -3
- package/dist/types/current/ad/AdControllerImpl.d.ts.map +1 -1
- package/dist/types/current/ad/AdControllerImpl.js +4 -1
- package/dist/types/current/ad/discoverHlsInterstitials.d.ts.map +1 -1
- package/dist/types/current/ad/discoverHlsInterstitials.js +2 -2
- package/dist/types/current/drm/DrmControllerImpl.d.ts +19 -1
- package/dist/types/current/drm/DrmControllerImpl.d.ts.map +1 -1
- package/dist/types/current/drm/DrmControllerImpl.js +101 -58
- package/dist/types/current/drm/licenseProvider/defaultLicenseProvider.d.ts.map +1 -1
- package/dist/types/current/drm/licenseProvider/defaultLicenseProvider.js +2 -2
- package/dist/types/current/index.d.ts +3 -6
- package/dist/types/current/index.d.ts.map +1 -1
- package/dist/types/current/index.js +3 -6
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts +15 -0
- package/dist/types/current/playback/PlaybackControllerImpl.d.ts.map +1 -1
- package/dist/types/current/playback/PlaybackControllerImpl.js +100 -9
- package/dist/types/current/playback/ReadonlyPlaybackController.d.ts +27 -1
- package/dist/types/current/playback/ReadonlyPlaybackController.d.ts.map +1 -1
- package/dist/types/current/playback/ReadonlyPlaybackController.js +16 -0
- package/dist/types/current/playback/createStallDetector.d.ts +43 -0
- package/dist/types/current/playback/createStallDetector.d.ts.map +1 -0
- package/dist/types/current/playback/createStallDetector.js +101 -0
- package/dist/types/current/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/current/playback/createStallMonitor.d.ts.map +1 -0
- package/dist/types/current/playback/createStallMonitor.js +94 -0
- package/dist/types/current/streaming/AudioOptions.d.ts +27 -0
- package/dist/types/current/streaming/AudioOptions.d.ts.map +1 -1
- package/dist/types/current/streaming/AudioOptions.js +5 -1
- package/dist/types/current/streaming/ContentStream.d.ts +0 -5
- package/dist/types/current/streaming/ContentStream.d.ts.map +1 -1
- package/dist/types/current/streaming/ContentStream.js +0 -4
- package/dist/types/current/streaming/LoadMetric.d.ts +15 -1
- package/dist/types/current/streaming/LoadMetric.d.ts.map +1 -1
- package/dist/types/current/streaming/StreamingEventMap.d.ts +1 -5
- package/dist/types/current/streaming/StreamingEventMap.d.ts.map +1 -1
- package/dist/types/current/streaming/StreamingEventMap.js +0 -1
- package/dist/types/current/streaming/buffering/BufferingController.d.ts +0 -11
- package/dist/types/current/streaming/buffering/BufferingController.d.ts.map +1 -1
- package/dist/types/current/streaming/buffering/BufferingController.js +0 -13
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.d.ts.map +1 -1
- package/dist/types/current/streaming/createDefaultMediaTimelineTransformer.js +13 -4
- package/dist/types/current/streaming/mediaTimelineFilter.d.ts +4 -2
- package/dist/types/current/streaming/mediaTimelineFilter.d.ts.map +1 -1
- package/dist/types/current/streaming/mediaTimelineFilter.js +23 -8
- package/dist/types/current/text/SidecarTextTrackLoader.d.ts.map +1 -1
- package/dist/types/current/text/SidecarTextTrackLoader.js +4 -4
- package/dist/types/current/text/TextTrack.d.ts.map +1 -1
- package/dist/types/current/track/TrackController.d.ts.map +1 -1
- package/dist/types/current/track/TrackController.js +8 -2
- package/dist/types/current/track/createSegmentDataProvider.d.ts.map +1 -1
- package/dist/types/current/track/createSegmentDataProvider.js +6 -3
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts +10 -6
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.d.ts.map +1 -1
- package/dist/types/current/track/dash/DashMediaQualityMetadataResolver.js +13 -8
- package/dist/types/current/track/dash/createDashFactories.d.ts +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.d.ts.map +1 -1
- package/dist/types/current/track/dash/timeline/DashRepresentationSegmentProvider.js +71 -3
- package/dist/types/current/track/dash/urlDashManifestProvider.js +2 -2
- package/dist/types/current/track/dash/util/mpd.d.ts +6 -0
- package/dist/types/current/track/dash/util/mpd.d.ts.map +1 -1
- package/dist/types/current/track/dash/util/mpd.js +24 -3
- package/dist/types/current/track/filters/resourceTypeFilter.d.ts +4 -0
- package/dist/types/current/track/filters/resourceTypeFilter.d.ts.map +1 -1
- package/dist/types/current/track/filters/resourceTypeFilter.js +4 -0
- package/dist/types/current/track/filters/sampleRateFilter.d.ts +25 -7
- package/dist/types/current/track/filters/sampleRateFilter.d.ts.map +1 -1
- package/dist/types/current/track/filters/sampleRateFilter.js +52 -24
- package/dist/types/current/track/hls/createHlsFactories.d.ts +1 -1
- package/dist/types/current/track/hls/createUrlHlsManifestProvider.d.ts.map +1 -1
- package/dist/types/current/track/hls/createUrlHlsManifestProvider.js +3 -3
- package/dist/types/current/track/mse/MseTrack.d.ts +0 -17
- package/dist/types/current/track/mse/MseTrack.d.ts.map +1 -1
- package/dist/types/current/track/mse/MseTrack.js +1 -45
- package/dist/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/types/current/util/media/mimeType.d.ts +8 -0
- package/dist/types/current/util/media/mimeType.d.ts.map +1 -0
- package/dist/types/current/util/media/mimeType.js +13 -0
- package/dist/types/current/vinyl/VinylPlayer.d.ts +5 -0
- package/dist/types/current/vinyl/VinylPlayer.d.ts.map +1 -1
- package/dist/types/current/vinyl/VinylPlayer.js +23 -1
- package/dist/types/current/vinyl/createVinylFactories.d.ts +7 -16
- package/dist/types/current/vinyl/createVinylFactories.d.ts.map +1 -1
- package/dist/types/current/vinyl/createVinylFactories.js +2 -12
- package/dist/types/ts3.7/drm/DrmControllerImpl.d.ts +19 -1
- package/dist/types/ts3.7/index.d.ts +3 -6
- package/dist/types/ts3.7/playback/PlaybackControllerImpl.d.ts +15 -0
- package/dist/types/ts3.7/playback/ReadonlyPlaybackController.d.ts +28 -0
- package/dist/types/ts3.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts3.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts3.7/streaming/AudioOptions.d.ts +27 -0
- package/dist/types/ts3.7/streaming/ContentStream.d.ts +0 -5
- package/dist/types/ts3.7/streaming/LoadMetric.d.ts +15 -1
- package/dist/types/ts3.7/streaming/StreamingEventMap.d.ts +0 -5
- package/dist/types/ts3.7/streaming/buffering/BufferingController.d.ts +0 -11
- package/dist/types/ts3.7/streaming/mediaTimelineFilter.d.ts +4 -2
- package/dist/types/ts3.7/track/dash/DashMediaQualityMetadataResolver.d.ts +10 -6
- package/dist/types/ts3.7/track/dash/createDashFactories.d.ts +1 -1
- package/dist/types/ts3.7/track/dash/util/mpd.d.ts +6 -0
- package/dist/types/ts3.7/track/filters/resourceTypeFilter.d.ts +4 -0
- package/dist/types/ts3.7/track/filters/sampleRateFilter.d.ts +25 -7
- package/dist/types/ts3.7/track/hls/createHlsFactories.d.ts +1 -1
- package/dist/types/ts3.7/track/mse/MseTrack.d.ts +0 -17
- package/dist/types/ts3.7/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts3.7/vinyl/VinylPlayer.d.ts +5 -0
- package/dist/types/ts3.7/vinyl/createVinylFactories.d.ts +7 -16
- package/dist/types/ts4.1/drm/DrmControllerImpl.d.ts +19 -1
- package/dist/types/ts4.1/index.d.ts +3 -6
- package/dist/types/ts4.1/playback/PlaybackControllerImpl.d.ts +15 -0
- package/dist/types/ts4.1/playback/ReadonlyPlaybackController.d.ts +28 -0
- package/dist/types/ts4.1/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.1/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.1/streaming/AudioOptions.d.ts +27 -0
- package/dist/types/ts4.1/streaming/ContentStream.d.ts +0 -5
- package/dist/types/ts4.1/streaming/LoadMetric.d.ts +15 -1
- package/dist/types/ts4.1/streaming/StreamingEventMap.d.ts +0 -5
- package/dist/types/ts4.1/streaming/buffering/BufferingController.d.ts +0 -11
- package/dist/types/ts4.1/streaming/mediaTimelineFilter.d.ts +4 -2
- package/dist/types/ts4.1/track/dash/DashMediaQualityMetadataResolver.d.ts +10 -6
- package/dist/types/ts4.1/track/dash/createDashFactories.d.ts +1 -1
- package/dist/types/ts4.1/track/dash/util/mpd.d.ts +6 -0
- package/dist/types/ts4.1/track/filters/resourceTypeFilter.d.ts +4 -0
- package/dist/types/ts4.1/track/filters/sampleRateFilter.d.ts +25 -7
- package/dist/types/ts4.1/track/hls/createHlsFactories.d.ts +1 -1
- package/dist/types/ts4.1/track/mse/MseTrack.d.ts +0 -17
- package/dist/types/ts4.1/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.1/vinyl/VinylPlayer.d.ts +5 -0
- package/dist/types/ts4.1/vinyl/createVinylFactories.d.ts +7 -16
- package/dist/types/ts4.7/drm/DrmControllerImpl.d.ts +19 -1
- package/dist/types/ts4.7/index.d.ts +3 -6
- package/dist/types/ts4.7/playback/PlaybackControllerImpl.d.ts +15 -0
- package/dist/types/ts4.7/playback/ReadonlyPlaybackController.d.ts +28 -0
- package/dist/types/ts4.7/playback/createStallDetector.d.ts +43 -0
- package/dist/types/ts4.7/playback/createStallMonitor.d.ts +45 -0
- package/dist/types/ts4.7/streaming/AudioOptions.d.ts +27 -0
- package/dist/types/ts4.7/streaming/ContentStream.d.ts +0 -5
- package/dist/types/ts4.7/streaming/LoadMetric.d.ts +15 -1
- package/dist/types/ts4.7/streaming/StreamingEventMap.d.ts +0 -5
- package/dist/types/ts4.7/streaming/buffering/BufferingController.d.ts +0 -11
- package/dist/types/ts4.7/streaming/mediaTimelineFilter.d.ts +4 -2
- package/dist/types/ts4.7/track/dash/DashMediaQualityMetadataResolver.d.ts +10 -6
- package/dist/types/ts4.7/track/dash/createDashFactories.d.ts +1 -1
- package/dist/types/ts4.7/track/dash/util/mpd.d.ts +6 -0
- package/dist/types/ts4.7/track/filters/resourceTypeFilter.d.ts +4 -0
- package/dist/types/ts4.7/track/filters/sampleRateFilter.d.ts +25 -7
- package/dist/types/ts4.7/track/hls/createHlsFactories.d.ts +1 -1
- package/dist/types/ts4.7/track/mse/MseTrack.d.ts +0 -17
- package/dist/types/ts4.7/util/media/mimeType.d.ts +8 -0
- package/dist/types/ts4.7/vinyl/VinylPlayer.d.ts +5 -0
- package/dist/types/ts4.7/vinyl/createVinylFactories.d.ts +7 -16
- package/dist/unit/types/current/ad/AdControllerImpl.test.js +27 -1
- package/dist/unit/types/current/drm/DrmControllerImpl.test.js +146 -9
- package/dist/unit/types/current/index.d.ts +3 -4
- package/dist/unit/types/current/index.d.ts.map +1 -1
- package/dist/unit/types/current/index.js +3 -4
- package/dist/unit/types/current/playback/PlaybackControllerImpl.test.js +165 -0
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallDetector.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallDetector.test.js +163 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts +2 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.d.ts.map +1 -0
- package/dist/unit/types/current/playback/createStallMonitor.test.js +125 -0
- package/dist/unit/types/current/streaming/ContentStream.test.js +0 -11
- package/dist/unit/types/current/streaming/MseTrack.test.js +49 -73
- package/dist/unit/types/current/streaming/abr/QualitySelectorImpl.test.js +1 -1
- package/dist/unit/types/current/streaming/buffering/BufferingController.test.js +0 -21
- package/dist/unit/types/current/streaming/createDefaultMediaTimelineTransformer.test.js +133 -0
- package/dist/unit/types/current/streaming/mediaTimelineFilter.test.js +60 -54
- package/dist/unit/types/current/track/TrackController.test.js +61 -1
- package/dist/unit/types/current/track/createSegmentDataProvider.test.js +18 -0
- package/dist/unit/types/current/track/dash/DashMediaQualityMetadataResolver.test.js +46 -14
- package/dist/unit/types/current/track/dash/createSegmentControllerFactory.test.js +1 -0
- package/dist/unit/types/current/track/dash/timeline/DashRepresentationSegmentProvider.test.js +114 -0
- package/dist/unit/types/current/track/dash/util/mpd.test.js +37 -0
- package/dist/unit/types/current/track/filters/resourceTypeFilter.test.js +7 -0
- package/dist/unit/types/current/track/filters/sampleRateFilter.test.js +211 -34
- package/dist/unit/types/current/track/source/SourceObjectTrack.test.js +1 -1
- package/dist/unit/types/current/tsconfig.tsbuildinfo +1 -1
- package/dist/unit/types/current/util/media/mimeType.test.d.ts +2 -0
- package/dist/unit/types/current/util/media/mimeType.test.d.ts.map +1 -0
- package/dist/unit/types/current/util/media/mimeType.test.js +22 -0
- package/dist/unit/types/current/vinyl/VinylPlayer.test.js +33 -2
- package/dist/unit/types/current/vinyl/createVinylFactories.test.js +2 -36
- package/dist/vinylTestUtil/index.js +6 -4
- package/dist/vinylTestUtil/index.js.map +2 -2
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts +1 -0
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/assets/vinylTestAssets.js +1 -0
- package/dist/vinylTestUtil/types/current/media/FrequencyAnalyzer.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/MockContentStream.js +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts +0 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.d.ts.map +1 -1
- package/dist/vinylTestUtil/types/current/mock/streaming/buffering/MockBufferingController.js +0 -1
- package/dist/vinylTestUtil/types/current/tsconfig.tsbuildinfo +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 +9 -1
- package/dist/vinylTestUtil/types/ts3.7/assets/vinylTestAssets.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/MockContentStream.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts3.7/mock/streaming/buffering/MockBufferingController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.1/assets/vinylTestAssets.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/MockContentStream.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.1/mock/streaming/buffering/MockBufferingController.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.7/assets/vinylTestAssets.d.ts +1 -0
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/MockContentStream.d.ts +0 -1
- package/dist/vinylTestUtil/types/ts4.7/mock/streaming/buffering/MockBufferingController.d.ts +0 -1
- package/docs/USAGE.md +29 -0
- package/package.json +11 -10
- package/dist/types/current/patch/media/HtmlMediaElementPatch.d.ts +0 -3
- package/dist/types/current/patch/media/HtmlMediaElementPatch.d.ts.map +0 -1
- package/dist/types/current/patch/media/HtmlMediaElementPatch.js +0 -5
- package/dist/types/current/patch/media/MediaElementPatchOptions.d.ts +0 -19
- package/dist/types/current/patch/media/MediaElementPatchOptions.d.ts.map +0 -1
- package/dist/types/current/patch/media/MediaElementPatchOptions.js +0 -16
- package/dist/types/current/patch/media/patchMediaElement.d.ts +0 -9
- package/dist/types/current/patch/media/patchMediaElement.d.ts.map +0 -1
- package/dist/types/current/patch/media/patchMediaElement.js +0 -15
- package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts +0 -17
- package/dist/types/current/patch/media/patches/createPreventStallsPatch.d.ts.map +0 -1
- package/dist/types/current/patch/media/patches/createPreventStallsPatch.js +0 -55
- package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +0 -26
- package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts.map +0 -1
- package/dist/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.js +0 -218
- package/dist/types/current/vinyl/VinylPatchOptions.d.ts +0 -10
- package/dist/types/current/vinyl/VinylPatchOptions.d.ts.map +0 -1
- package/dist/types/current/vinyl/VinylPatchOptions.js +0 -11
- package/dist/types/ts3.7/patch/media/HtmlMediaElementPatch.d.ts +0 -3
- package/dist/types/ts3.7/patch/media/MediaElementPatchOptions.d.ts +0 -19
- package/dist/types/ts3.7/patch/media/patchMediaElement.d.ts +0 -9
- package/dist/types/ts3.7/patch/media/patches/createPreventStallsPatch.d.ts +0 -17
- package/dist/types/ts3.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +0 -26
- package/dist/types/ts3.7/vinyl/VinylPatchOptions.d.ts +0 -10
- package/dist/types/ts4.1/patch/media/HtmlMediaElementPatch.d.ts +0 -3
- package/dist/types/ts4.1/patch/media/MediaElementPatchOptions.d.ts +0 -19
- package/dist/types/ts4.1/patch/media/patchMediaElement.d.ts +0 -9
- package/dist/types/ts4.1/patch/media/patches/createPreventStallsPatch.d.ts +0 -17
- package/dist/types/ts4.1/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +0 -26
- package/dist/types/ts4.1/vinyl/VinylPatchOptions.d.ts +0 -10
- package/dist/types/ts4.7/patch/media/HtmlMediaElementPatch.d.ts +0 -3
- package/dist/types/ts4.7/patch/media/MediaElementPatchOptions.d.ts +0 -19
- package/dist/types/ts4.7/patch/media/patchMediaElement.d.ts +0 -9
- package/dist/types/ts4.7/patch/media/patches/createPreventStallsPatch.d.ts +0 -17
- package/dist/types/ts4.7/patch/media/patches/createUnreliablePlaybackEventsPatch.d.ts +0 -26
- package/dist/types/ts4.7/vinyl/VinylPatchOptions.d.ts +0 -10
- package/dist/unit/types/current/patch/media/MediaElementPatchOptions.test.d.ts +0 -2
- package/dist/unit/types/current/patch/media/MediaElementPatchOptions.test.d.ts.map +0 -1
- package/dist/unit/types/current/patch/media/MediaElementPatchOptions.test.js +0 -17
- package/dist/unit/types/current/patch/media/patchMediaElement.test.d.ts +0 -2
- package/dist/unit/types/current/patch/media/patchMediaElement.test.d.ts.map +0 -1
- package/dist/unit/types/current/patch/media/patchMediaElement.test.js +0 -36
- package/dist/unit/types/current/patch/media/patches/createPreventStallsPatch.test.d.ts +0 -2
- package/dist/unit/types/current/patch/media/patches/createPreventStallsPatch.test.d.ts.map +0 -1
- package/dist/unit/types/current/patch/media/patches/createPreventStallsPatch.test.js +0 -93
- package/dist/unit/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.test.d.ts +0 -2
- package/dist/unit/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.test.d.ts.map +0 -1
- package/dist/unit/types/current/patch/media/patches/createUnreliablePlaybackEventsPatch.test.js +0 -423
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/ad/AdControllerImpl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AdControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/ad/AdControllerImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -173,7 +173,7 @@ export class AdControllerImpl extends EventHostImpl {
|
|
|
173
173
|
*/
|
|
174
174
|
providerInterrupted() {
|
|
175
175
|
const provider = this.adsProvider;
|
|
176
|
-
return () => provider !== this.adsProvider;
|
|
176
|
+
return () => this.disposed || provider !== this.adsProvider;
|
|
177
177
|
}
|
|
178
178
|
setAdsProvider(provider) {
|
|
179
179
|
if (this.adsProvider === provider)
|
|
@@ -623,6 +623,9 @@ export class AdControllerImpl extends EventHostImpl {
|
|
|
623
623
|
*/
|
|
624
624
|
dispose() {
|
|
625
625
|
super.dispose();
|
|
626
|
+
// Tear down the ads-provider subscription so a late adsChange can't
|
|
627
|
+
// re-run ad discovery (and log) after dispose.
|
|
628
|
+
this.adsProviderSub?.();
|
|
626
629
|
this.disposer.dispose();
|
|
627
630
|
// Detach any active break so currentAd/currentAdBreak read null after
|
|
628
631
|
// dispose, even if a break's ad list resolves late (startAd is already
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discoverHlsInterstitials.d.ts","sourceRoot":"","sources":["../../../../src/ad/discoverHlsInterstitials.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"discoverHlsInterstitials.d.ts","sourceRoot":"","sources":["../../../../src/ad/discoverHlsInterstitials.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAU9E,OAAO,KAAK,EAER,WAAW,EAMd,MAAM,eAAe,CAAA;AActB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACf,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAChC,OAAO,CAAC,WAAW,CAAC,CAmDtB"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
5
|
import { HLS_INTERSTITIAL_CLASS } from '@amazon/vinyl-hls-parser';
|
|
6
|
-
import { memoize, requestWithRetry, resolveUrl, } from '@amazon/vinyl-util';
|
|
6
|
+
import { memoize, readResponseBody, requestWithRetry, resolveUrl, } from '@amazon/vinyl-util';
|
|
7
7
|
/**
|
|
8
8
|
* How close to the start or end of content a break must be to be classified as
|
|
9
9
|
* a pre-roll or post-roll rather than a mid-roll, in seconds.
|
|
@@ -215,7 +215,7 @@ function resolveHlsAssetContent({ range, startTime, duration, baseUrl, }) {
|
|
|
215
215
|
async function resolveHlsAssetList({ assetListUrl, rangeId, startTime, baseUrl, }) {
|
|
216
216
|
const url = resolveUrl(assetListUrl, baseUrl);
|
|
217
217
|
const response = await requestWithRetry(url);
|
|
218
|
-
const json = await response
|
|
218
|
+
const json = await readResponseBody(response, 'json');
|
|
219
219
|
const assets = json.ASSETS ?? [];
|
|
220
220
|
const ads = assets.map((asset, i) => {
|
|
221
221
|
return {
|
|
@@ -2,7 +2,7 @@ import { EventHostImpl, type Maybe } from '@amazon/vinyl-util';
|
|
|
2
2
|
import { type DrmOptions } from './DrmOptions';
|
|
3
3
|
import type { DrmController, DrmControllerEventMap, DrmKeySystemSupport, DrmPlaybackOptions } from './DrmController';
|
|
4
4
|
import type { CommonEme, CommonMediaKeyMessageEvent, CommonMediaKeys, CommonMediaKeySession } from './commonEme/CommonEme';
|
|
5
|
-
import type { MediaFormatMetadata } from '../streaming/MediaQualityMetadata';
|
|
5
|
+
import type { ContentType, MediaFormatMetadata } from '../streaming/MediaQualityMetadata';
|
|
6
6
|
import type { TrackUri } from '../track/Track';
|
|
7
7
|
/**
|
|
8
8
|
* The number of seconds a license request will be allowed before timing out.
|
|
@@ -30,6 +30,13 @@ export interface DrmControllerMessageProps {
|
|
|
30
30
|
* to their own track.
|
|
31
31
|
*/
|
|
32
32
|
readonly trackUri: TrackUri | null;
|
|
33
|
+
/**
|
|
34
|
+
* The MIME and content type of the session's content, captured at creation
|
|
35
|
+
* so the license span can distinguish the certificate exchange from the
|
|
36
|
+
* per-content-type license exchanges.
|
|
37
|
+
*/
|
|
38
|
+
readonly mimeType: string;
|
|
39
|
+
readonly contentType: ContentType | null;
|
|
33
40
|
}
|
|
34
41
|
export declare class DrmControllerImpl extends EventHostImpl<DrmControllerEventMap> implements DrmController {
|
|
35
42
|
private readonly deps;
|
|
@@ -44,6 +51,8 @@ export declare class DrmControllerImpl extends EventHostImpl<DrmControllerEventM
|
|
|
44
51
|
private bufferingTrackUri;
|
|
45
52
|
private sessionAbort;
|
|
46
53
|
private pendingMessageProps;
|
|
54
|
+
private keySetupSpanArmed;
|
|
55
|
+
private keySetupSpanStart;
|
|
47
56
|
private readonly disposer;
|
|
48
57
|
constructor(deps: DrmControllerImplDeps, options?: Maybe<Partial<DrmOptions>>);
|
|
49
58
|
configure(options: Maybe<Partial<DrmOptions>>): void;
|
|
@@ -64,7 +73,16 @@ export declare class DrmControllerImpl extends EventHostImpl<DrmControllerEventM
|
|
|
64
73
|
* The new session will be added to the current sessions list.
|
|
65
74
|
*/
|
|
66
75
|
private maybeCreateSession;
|
|
76
|
+
/**
|
|
77
|
+
* Captures the key-setup span start at the top of the session-creation path
|
|
78
|
+
* (before media keys are attached), latching so only the first session of
|
|
79
|
+
* the current track load is measured.
|
|
80
|
+
*/
|
|
81
|
+
private markKeySetupStart;
|
|
82
|
+
private dispatchLoadSpan;
|
|
67
83
|
initializeForPlayback(drmInfo: MediaFormatMetadata | null, options?: DrmPlaybackOptions): void;
|
|
84
|
+
/** True when the manifest carried pssh (sessions come from it, not events). */
|
|
85
|
+
private manifestProvidesInitData;
|
|
68
86
|
setBufferingDrmInfo(drmInfo: MediaFormatMetadata | null, options?: DrmPlaybackOptions): void;
|
|
69
87
|
/**
|
|
70
88
|
* If the drm metadata contains initialization data for the current key system, create a new session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrmControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/drm/DrmControllerImpl.ts"],"names":[],"mappings":"AAKA,OAAO,EAUH,aAAa,EAMb,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"DrmControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/drm/DrmControllerImpl.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,10 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
35
35
|
bufferingTrackUri = null;
|
|
36
36
|
sessionAbort = null;
|
|
37
37
|
pendingMessageProps = null;
|
|
38
|
+
// Armed per track load; latches on the first session so only the
|
|
39
|
+
// critical-path session's EME/CDM setup is measured.
|
|
40
|
+
keySetupSpanArmed = true;
|
|
41
|
+
keySetupSpanStart = null;
|
|
38
42
|
disposer = createDisposer();
|
|
39
43
|
constructor(deps, options) {
|
|
40
44
|
super();
|
|
@@ -93,6 +97,12 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
93
97
|
handleEncryptedEvent = (event) => {
|
|
94
98
|
if (this.disposed)
|
|
95
99
|
return;
|
|
100
|
+
// Manifest pssh drives sessions; ignore redundant in-band events.
|
|
101
|
+
if (this.manifestProvidesInitData()) {
|
|
102
|
+
logDebug(this, 'ignoring encrypted event; manifest provides pssh');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
;
|
|
96
106
|
(async () => {
|
|
97
107
|
const { initData, initDataType } = event;
|
|
98
108
|
if (!initData) {
|
|
@@ -154,6 +164,7 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
154
164
|
if (!hasMimeType(drmInfo)) {
|
|
155
165
|
throw new DrmError('Encrypted content must have a mimeType.');
|
|
156
166
|
}
|
|
167
|
+
this.markKeySetupStart();
|
|
157
168
|
const mediaKeys = await this.attachMediaKeys(drmInfo);
|
|
158
169
|
this.abortIfDisposed();
|
|
159
170
|
// Resolve server certificate from configuration
|
|
@@ -162,35 +173,68 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
162
173
|
const licenseServerOptionsProvider = keySystemOptions?.licenseServer;
|
|
163
174
|
const licenseServerOptions = await resolveValueProvider(licenseServerOptionsProvider ?? {});
|
|
164
175
|
this.abortIfDisposed();
|
|
165
|
-
const
|
|
176
|
+
const certBytes = toCertBytes(licenseServerOptions.serverCertificate);
|
|
177
|
+
if (certBytes) {
|
|
178
|
+
await mediaKeys.setServerCertificate(certBytes);
|
|
179
|
+
this.abortIfDisposed();
|
|
180
|
+
}
|
|
181
|
+
// Transform before matching/creating so the reuse check compares the
|
|
182
|
+
// same (transformed) bytes the CDM gets. Identity except FairPlay.
|
|
183
|
+
const transform = keySystemOptions?.initDataTransformer ??
|
|
184
|
+
defaultInitDataTransformer(mediaKeys.keySystem, certBytes);
|
|
185
|
+
const transformedInitData = transform(bufferToByteArray(initData), initDataType, drmInfo);
|
|
186
|
+
const existingSession = this.getSessionByInitData(transformedInitData);
|
|
166
187
|
if (existingSession) {
|
|
167
188
|
logDebug(this, 'reusing session');
|
|
168
189
|
return existingSession;
|
|
169
190
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
const newSession = this.createNewSession({
|
|
192
|
+
mediaKeys,
|
|
193
|
+
initData: transformedInitData,
|
|
194
|
+
initDataType,
|
|
195
|
+
drmInfo,
|
|
196
|
+
trackUri,
|
|
197
|
+
});
|
|
198
|
+
this.sessions.push(newSession);
|
|
199
|
+
this.dispatch('sessionCreate', {
|
|
200
|
+
initDataType: newSession.initDataType,
|
|
201
|
+
mimeType: newSession.mimeType,
|
|
202
|
+
});
|
|
203
|
+
newSession.on('closed', () => this.closeSession(newSession));
|
|
204
|
+
abort?.onAborted(() => {
|
|
205
|
+
if (this.disposed)
|
|
206
|
+
return;
|
|
207
|
+
logDebug(this, 'abort session');
|
|
208
|
+
this.closeSession(newSession);
|
|
209
|
+
});
|
|
210
|
+
return newSession;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Captures the key-setup span start at the top of the session-creation path
|
|
214
|
+
* (before media keys are attached), latching so only the first session of
|
|
215
|
+
* the current track load is measured.
|
|
216
|
+
*/
|
|
217
|
+
markKeySetupStart() {
|
|
218
|
+
if (!this.keySetupSpanArmed)
|
|
219
|
+
return;
|
|
220
|
+
this.keySetupSpanArmed = false;
|
|
221
|
+
this.keySetupSpanStart = Date.now();
|
|
222
|
+
}
|
|
223
|
+
dispatchLoadSpan(kind, startTime, endTime, messageProps) {
|
|
224
|
+
this.dispatch('loadSpanMeasured', {
|
|
225
|
+
kind,
|
|
226
|
+
startTime,
|
|
227
|
+
endTime,
|
|
228
|
+
mimeType: messageProps.mimeType,
|
|
229
|
+
// Attributed at the source to the session's track; omitted (not set
|
|
230
|
+
// to undefined) when unknown, per exactOptionalPropertyTypes.
|
|
231
|
+
...(messageProps.trackUri != null && {
|
|
232
|
+
trackUri: messageProps.trackUri,
|
|
233
|
+
}),
|
|
234
|
+
...(messageProps.contentType != null && {
|
|
235
|
+
contentType: messageProps.contentType,
|
|
236
|
+
}),
|
|
237
|
+
});
|
|
194
238
|
}
|
|
195
239
|
initializeForPlayback(drmInfo, options) {
|
|
196
240
|
logDebug(this, 'initializeForPlayback', drmInfo);
|
|
@@ -198,6 +242,11 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
198
242
|
this.createSessionFromInitData(drmInfo, options?.trackUri ?? null, options?.abort).catch(this.handleError);
|
|
199
243
|
}
|
|
200
244
|
}
|
|
245
|
+
/** True when the manifest carried pssh (sessions come from it, not events). */
|
|
246
|
+
manifestProvidesInitData() {
|
|
247
|
+
return (this.drmInfo?.contentProtections.some((cP) => cP.pssh != null) ??
|
|
248
|
+
false);
|
|
249
|
+
}
|
|
201
250
|
setBufferingDrmInfo(drmInfo, options) {
|
|
202
251
|
logDebug(this, 'setBufferingDrmInfo', drmInfo);
|
|
203
252
|
// Reset 'encrypted' error reporting
|
|
@@ -205,6 +254,9 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
205
254
|
this.drmInfo = drmInfo;
|
|
206
255
|
this.bufferingTrackUri = options?.trackUri ?? null;
|
|
207
256
|
this.sessionAbort = options?.abort ?? null;
|
|
257
|
+
// Re-arm so the new track load's first session is measured.
|
|
258
|
+
this.keySetupSpanArmed = true;
|
|
259
|
+
this.keySetupSpanStart = null;
|
|
208
260
|
}
|
|
209
261
|
/**
|
|
210
262
|
* If the drm metadata contains initialization data for the current key system, create a new session.
|
|
@@ -215,6 +267,7 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
215
267
|
this.handleError(new DrmError('DRM not supported.'));
|
|
216
268
|
return;
|
|
217
269
|
}
|
|
270
|
+
this.markKeySetupStart();
|
|
218
271
|
const mediaKeys = await this.attachMediaKeys(drmInfo);
|
|
219
272
|
const drmProtection = drmInfo.contentProtections.find((cP) => {
|
|
220
273
|
return cP.keySystem === mediaKeys.keySystem;
|
|
@@ -325,26 +378,10 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
325
378
|
/**
|
|
326
379
|
* Creates a new key session and adds a message handler.
|
|
327
380
|
*/
|
|
328
|
-
|
|
329
|
-
const {
|
|
330
|
-
let initData = options.initData;
|
|
331
|
-
const certBytes = serverCertificate
|
|
332
|
-
? typeof serverCertificate === 'string'
|
|
333
|
-
? base64ToByteArray(serverCertificate)
|
|
334
|
-
: bufferToByteArray(serverCertificate)
|
|
335
|
-
: null;
|
|
336
|
-
if (certBytes) {
|
|
337
|
-
await mediaKeys.setServerCertificate(certBytes);
|
|
338
|
-
}
|
|
339
|
-
// Default initDataTransformer handles FAIR_PLAY_1_0 by packing the
|
|
340
|
-
// skd init data with the content ID and server certificate.
|
|
341
|
-
// FAIR_PLAY_1_0 always uses initDataType 'skd', so the default
|
|
342
|
-
// does not need to explicitly check initDataType.
|
|
343
|
-
const transform = initDataTransformer ??
|
|
344
|
-
defaultInitDataTransformer(mediaKeys.keySystem, certBytes);
|
|
345
|
-
initData = transform(bufferToByteArray(initData), initDataType, drmInfo);
|
|
381
|
+
createNewSession(options) {
|
|
382
|
+
const { mediaKeys, initData, initDataType, drmInfo, trackUri } = options;
|
|
346
383
|
this.abortIfDisposed();
|
|
347
|
-
logDebug(this, 'createSession', drmInfo.mimeType, initDataType);
|
|
384
|
+
logDebug(this, 'createSession', drmInfo.mimeType, initDataType, drmInfo);
|
|
348
385
|
const session = mediaKeys.createSession(drmInfo.mimeType, initDataType, initData);
|
|
349
386
|
session.on('message', (event) => {
|
|
350
387
|
withTimeout(this.messageHandler({
|
|
@@ -354,6 +391,8 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
354
391
|
// Captured per session, so a concurrent preloaded track's
|
|
355
392
|
// license exchange keeps its own attribution.
|
|
356
393
|
trackUri: trackUri,
|
|
394
|
+
mimeType: drmInfo.mimeType,
|
|
395
|
+
contentType: drmInfo.contentType,
|
|
357
396
|
}), LICENSE_TIMEOUT, { message: LICENSE_TIMEOUT_MESSAGE }).catch(this.handleError);
|
|
358
397
|
});
|
|
359
398
|
session.on('error', (event) => {
|
|
@@ -371,7 +410,13 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
371
410
|
this.pendingMessageProps = messageProps;
|
|
372
411
|
const keySystem = mediaKeys.keySystem;
|
|
373
412
|
logDebug(this, 'message', keySystem, event.message.byteLength);
|
|
374
|
-
|
|
413
|
+
// The CDM's first message ends the setup span; it is contiguous with the
|
|
414
|
+
// license round-trip measured below.
|
|
415
|
+
if (this.keySetupSpanStart != null) {
|
|
416
|
+
this.dispatchLoadSpan('keySetup', this.keySetupSpanStart, Date.now(), messageProps);
|
|
417
|
+
this.keySetupSpanStart = null;
|
|
418
|
+
}
|
|
419
|
+
const keySystemOptions = this.options.keySystems[keySystem] ?? this.options.keySystems['*'];
|
|
375
420
|
const licenseServerOptionsProvider = keySystemOptions?.licenseServer;
|
|
376
421
|
// Get the license server configuration for the current key system.
|
|
377
422
|
const licenseServerOptions = clone(await resolveValueProvider(licenseServerOptionsProvider)) ??
|
|
@@ -390,16 +435,9 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
390
435
|
}
|
|
391
436
|
const licenseSpanStart = Date.now();
|
|
392
437
|
const key = await this.licenseProvider(keySystem, licenseServerOptions, challenge);
|
|
393
|
-
this.
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
endTime: Date.now(),
|
|
397
|
-
// Attributed at the source to the session's track; omitted (not set
|
|
398
|
-
// to undefined) when unknown, per exactOptionalPropertyTypes.
|
|
399
|
-
...(messageProps.trackUri != null && {
|
|
400
|
-
trackUri: messageProps.trackUri,
|
|
401
|
-
}),
|
|
402
|
-
});
|
|
438
|
+
if (this.disposed)
|
|
439
|
+
return;
|
|
440
|
+
this.dispatchLoadSpan('license', licenseSpanStart, Date.now(), messageProps);
|
|
403
441
|
this.pendingMessageProps = null;
|
|
404
442
|
if (session.disposed)
|
|
405
443
|
return;
|
|
@@ -498,9 +536,7 @@ export class DrmControllerImpl extends EventHostImpl {
|
|
|
498
536
|
this.disposer.dispose();
|
|
499
537
|
}
|
|
500
538
|
getSessionByInitData(initData) {
|
|
501
|
-
return (this.sessions.find((session) =>
|
|
502
|
-
return buffersEqual(session.initData, initData);
|
|
503
|
-
}) ?? null);
|
|
539
|
+
return (this.sessions.find((session) => buffersEqual(session.initData, initData)) ?? null);
|
|
504
540
|
}
|
|
505
541
|
/**
|
|
506
542
|
* Sort the key systems first by their priority, then by the presence of a license uri.
|
|
@@ -519,6 +555,13 @@ const messageEventValidator = object({
|
|
|
519
555
|
function hasMimeType(drmInfo) {
|
|
520
556
|
return drmInfo.mimeType != null;
|
|
521
557
|
}
|
|
558
|
+
function toCertBytes(serverCertificate) {
|
|
559
|
+
if (!serverCertificate)
|
|
560
|
+
return null;
|
|
561
|
+
return typeof serverCertificate === 'string'
|
|
562
|
+
? base64ToByteArray(serverCertificate)
|
|
563
|
+
: bufferToByteArray(serverCertificate);
|
|
564
|
+
}
|
|
522
565
|
/**
|
|
523
566
|
* Default initDataTransformer. For FAIR_PLAY_1_0, packs the skd init data
|
|
524
567
|
* with the extracted content ID and server certificate into the format
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultLicenseProvider.d.ts","sourceRoot":"","sources":["../../../../../src/drm/licenseProvider/defaultLicenseProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"defaultLicenseProvider.d.ts","sourceRoot":"","sources":["../../../../../src/drm/licenseProvider/defaultLicenseProvider.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAA;AAE9E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAqBpC,CAAA"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
* SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
*/
|
|
5
|
-
import { requestWithRetry, ValidationError } from '@amazon/vinyl-util';
|
|
5
|
+
import { readResponseBody, requestWithRetry, ValidationError, } from '@amazon/vinyl-util';
|
|
6
6
|
/**
|
|
7
7
|
* A basic LicenseProvider which uses the configuration set for the current key system,
|
|
8
8
|
* transmits a challenge as the body, and returns an array buffer.
|
|
@@ -24,5 +24,5 @@ export const defaultLicenseProvider = async (keySystem, serverOptions, challenge
|
|
|
24
24
|
...serverOptions.init,
|
|
25
25
|
body: challenge,
|
|
26
26
|
}, { abort });
|
|
27
|
-
return await res
|
|
27
|
+
return await readResponseBody(res, 'arrayBuffer');
|
|
28
28
|
};
|
|
@@ -38,11 +38,8 @@ export * from './global/environment';
|
|
|
38
38
|
export * from './global/globalRef';
|
|
39
39
|
export * from './global/initializeVinylGlobal';
|
|
40
40
|
export * from './global/PlayerRegistry';
|
|
41
|
-
export * from './
|
|
42
|
-
export * from './
|
|
43
|
-
export * from './patch/media/patches/createPreventStallsPatch';
|
|
44
|
-
export * from './patch/media/patches/createUnreliablePlaybackEventsPatch';
|
|
45
|
-
export * from './patch/media/patchMediaElement';
|
|
41
|
+
export * from './playback/createStallDetector';
|
|
42
|
+
export * from './playback/createStallMonitor';
|
|
46
43
|
export * from './playback/error/InvalidSeekError';
|
|
47
44
|
export * from './playback/error/ReportableMediaError';
|
|
48
45
|
export * from './playback/logging/mediaErrorToJson';
|
|
@@ -150,12 +147,12 @@ export * from './util/media/codecOverrides';
|
|
|
150
147
|
export * from './util/media/codecSupport';
|
|
151
148
|
export * from './util/media/getAudioContext';
|
|
152
149
|
export * from './util/media/mediaSource';
|
|
150
|
+
export * from './util/media/mimeType';
|
|
153
151
|
export * from './util/media/sourceBuffer';
|
|
154
152
|
export * from './vinyl/createVinylFactories';
|
|
155
153
|
export * from './vinyl/playerConfigFactory';
|
|
156
154
|
export * from './vinyl/ReadonlyPlaybackStreamingState';
|
|
157
155
|
export * from './vinyl/VinylDeps';
|
|
158
156
|
export * from './vinyl/VinylOptions';
|
|
159
|
-
export * from './vinyl/VinylPatchOptions';
|
|
160
157
|
export * from './vinyl/VinylPlayer';
|
|
161
158
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA;AACrC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,mCAAmC,CAAA;AACjD,cAAc,+BAA+B,CAAA;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,4BAA4B,CAAA;AAC1C,cAAc,2BAA2B,CAAA;AACzC,cAAc,kCAAkC,CAAA;AAChD,cAAc,uCAAuC,CAAA;AACrD,cAAc,mCAAmC,CAAA;AACjD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,8CAA8C,CAAA;AAC5D,cAAc,uCAAuC,CAAA;AACrD,cAAc,0CAA0C,CAAA;AACxD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,qCAAqC,CAAA;AACnD,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gCAAgC,CAAA;AAC9C,cAAc,yBAAyB,CAAA;AACvC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,8 @@ export * from './global/environment';
|
|
|
38
38
|
export * from './global/globalRef';
|
|
39
39
|
export * from './global/initializeVinylGlobal';
|
|
40
40
|
export * from './global/PlayerRegistry';
|
|
41
|
-
export * from './
|
|
42
|
-
export * from './
|
|
43
|
-
export * from './patch/media/patches/createPreventStallsPatch';
|
|
44
|
-
export * from './patch/media/patches/createUnreliablePlaybackEventsPatch';
|
|
45
|
-
export * from './patch/media/patchMediaElement';
|
|
41
|
+
export * from './playback/createStallDetector';
|
|
42
|
+
export * from './playback/createStallMonitor';
|
|
46
43
|
export * from './playback/error/InvalidSeekError';
|
|
47
44
|
export * from './playback/error/ReportableMediaError';
|
|
48
45
|
export * from './playback/logging/mediaErrorToJson';
|
|
@@ -150,11 +147,11 @@ export * from './util/media/codecOverrides';
|
|
|
150
147
|
export * from './util/media/codecSupport';
|
|
151
148
|
export * from './util/media/getAudioContext';
|
|
152
149
|
export * from './util/media/mediaSource';
|
|
150
|
+
export * from './util/media/mimeType';
|
|
153
151
|
export * from './util/media/sourceBuffer';
|
|
154
152
|
export * from './vinyl/createVinylFactories';
|
|
155
153
|
export * from './vinyl/playerConfigFactory';
|
|
156
154
|
export * from './vinyl/ReadonlyPlaybackStreamingState';
|
|
157
155
|
export * from './vinyl/VinylDeps';
|
|
158
156
|
export * from './vinyl/VinylOptions';
|
|
159
|
-
export * from './vinyl/VinylPatchOptions';
|
|
160
157
|
export * from './vinyl/VinylPlayer';
|
|
@@ -29,12 +29,19 @@ export interface PlaybackControllerImplOptions {
|
|
|
29
29
|
* Default: 30
|
|
30
30
|
*/
|
|
31
31
|
readonly seekTimeout: number;
|
|
32
|
+
/**
|
|
33
|
+
* The number of seconds the play head must be frozen while playing before a stall is reported
|
|
34
|
+
* via the `stallEntered`/`stallEnded` events.
|
|
35
|
+
* Default: 1
|
|
36
|
+
*/
|
|
37
|
+
readonly stallThreshold: number;
|
|
32
38
|
}
|
|
33
39
|
export declare const defaultPlaybackControllerImplOptions: {
|
|
34
40
|
readonly loopTimeAffordance: 2;
|
|
35
41
|
readonly minSeekableBuffer: -1;
|
|
36
42
|
readonly playTimeout: 30;
|
|
37
43
|
readonly seekTimeout: 30;
|
|
44
|
+
readonly stallThreshold: 1;
|
|
38
45
|
};
|
|
39
46
|
/**
|
|
40
47
|
* Safari and Edge Legacy cannot reliably seek close to the end of a seekable range.
|
|
@@ -57,6 +64,7 @@ export declare class PlaybackControllerImpl extends EventHostImpl<PlaybackContro
|
|
|
57
64
|
private _seeking;
|
|
58
65
|
private _waiting;
|
|
59
66
|
private _seekId;
|
|
67
|
+
private stopStallDetection;
|
|
60
68
|
private userVolume;
|
|
61
69
|
private _pendingPlay;
|
|
62
70
|
private playAbort;
|
|
@@ -153,6 +161,13 @@ export declare class PlaybackControllerImpl extends EventHostImpl<PlaybackContro
|
|
|
153
161
|
pause(): void;
|
|
154
162
|
private get pendingPlay();
|
|
155
163
|
private set pendingPlay(value);
|
|
164
|
+
/**
|
|
165
|
+
* Starts (or restarts) the stall detector: recovers a play head that stays frozen when it
|
|
166
|
+
* should be advancing — some WebKit versions never resume after a seek or a play, e.g. after a
|
|
167
|
+
* buffer-flushing seek. Superseded by the next seek/play and stopped on dispose.
|
|
168
|
+
* @private
|
|
169
|
+
*/
|
|
170
|
+
private startStallDetection;
|
|
156
171
|
play(): Promise<void>;
|
|
157
172
|
get canPlay(): boolean;
|
|
158
173
|
get canPlayThrough(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PlaybackControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/playback/PlaybackControllerImpl.ts"],"names":[],"mappings":"AAKA,OAAO,EAWH,aAAa,EAUb,KAAK,cAAc,EAKtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EACH,KAAK,0BAA0B,EAC/B,kBAAkB,EAGrB,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"PlaybackControllerImpl.d.ts","sourceRoot":"","sources":["../../../../src/playback/PlaybackControllerImpl.ts"],"names":[],"mappings":"AAKA,OAAO,EAWH,aAAa,EAUb,KAAK,cAAc,EAKtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAiB,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EACH,KAAK,0BAA0B,EAC/B,kBAAkB,EAGrB,MAAM,8BAA8B,CAAA;AAOrC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAA;AAGjG,MAAM,WAAW,6BAA6B;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IAEnC;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAElC;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAClC;AAED,eAAO,MAAM,oCAAoC;;;;;;CAMC,CAAA;AAElD;;;;GAIG;AACH,wBAAgB,2BAA2B,UAE1C;AAiBD,MAAM,WAAW,0BAA0B;IACvC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,QAAQ,CAAC,+BAA+B,EAAE,+BAA+B,CAAA;CAC5E;AAED,qBAAa,sBACT,SAAQ,aAAa,CAAC,0BAA0B,CAChD,YAAW,kBAAkB;IAE7B,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAiC;IACjF,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,MAAM,CAEjC;IAED,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkB;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAQ;IAGxB,OAAO,CAAC,OAAO,CAAI;IAGnB,OAAO,CAAC,kBAAkB,CAA4B;IAGtD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,YAAY,CAAc;IAElC,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAA;gBAG3C,IAAI,EAAE,0BAA0B,EAChC,OAAO,CAAC,EAAE,OAAO,CAAC,6BAA6B,CAAC;IAiEpD;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IASxB;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IA6B7B;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IAiB9B;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;IAyDjC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,cAAc;IAiCtB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB;IAoB7B,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAGpC;IAED,IAAI,QAAQ,IAAI,MAAM,CAIrB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAExB;IAED,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAGtB;IAED,IAAI,KAAK,IAAI,OAAO,CAEnB;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,EAGvB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,CAAC,KAAK,EAAE,MAAM,EAG7B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAGhC;IAED,IAAI,UAAU,IAAI,kBAAkB,CAEnC;IAED,IAAI,QAAQ,IAAI,cAAc,CAE7B;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAIvB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,KAAK,IAAI,IAAI;IAWb,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,QAMtB;IAED;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAU3B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCrB,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAEK,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6H1D;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAyBvC,KAAK;IAUL;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,OAAO;CAGV;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,GAAG,GACZ,MAAM,IAAI;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAEvC"}
|