@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,14 +1,17 @@
|
|
|
1
1
|
import type { Timestamp } from '@amazon/vinyl-util';
|
|
2
2
|
import type { TrackUri } from '../track/Track';
|
|
3
|
+
import type { ContentType } from './MediaQualityMetadata';
|
|
3
4
|
/**
|
|
4
5
|
* The stage of the track-load journey a {@link LoadSpanMeasurement} describes.
|
|
5
6
|
*
|
|
6
7
|
* - `manifest`: fetching and parsing the DASH/HLS manifest.
|
|
8
|
+
* - `keySetup`: the EME/CDM setup, from session creation to the CDM's first
|
|
9
|
+
* license message. Precedes and is contiguous with `license`.
|
|
7
10
|
* - `license`: the DRM license request/response exchange.
|
|
8
11
|
* - `initSegment`: fetching the initialization segment.
|
|
9
12
|
* - `firstSegment`: fetching the first media segment.
|
|
10
13
|
*/
|
|
11
|
-
export type LoadSpanKind = 'manifest' | 'license' | 'initSegment' | 'firstSegment';
|
|
14
|
+
export type LoadSpanKind = 'manifest' | 'keySetup' | 'license' | 'initSegment' | 'firstSegment';
|
|
12
15
|
/**
|
|
13
16
|
* A timed span for one stage of a track load.
|
|
14
17
|
*
|
|
@@ -35,6 +38,17 @@ export interface LoadSpanMeasurement {
|
|
|
35
38
|
* buffering DRM info is set).
|
|
36
39
|
*/
|
|
37
40
|
readonly trackUri?: TrackUri;
|
|
41
|
+
/**
|
|
42
|
+
* The MIME type of the content this span was measured for, when known. Set
|
|
43
|
+
* for DRM `license` spans so a certificate exchange and the per-content-type
|
|
44
|
+
* license exchanges are distinguishable.
|
|
45
|
+
*/
|
|
46
|
+
readonly mimeType?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The content type this span was measured for, when known. Set alongside
|
|
49
|
+
* {@link mimeType} for DRM `license` spans.
|
|
50
|
+
*/
|
|
51
|
+
readonly contentType?: ContentType;
|
|
38
52
|
}
|
|
39
53
|
/**
|
|
40
54
|
* A {@link LoadSpanMeasurement} attributed to the track it was measured for.
|
|
@@ -34,10 +34,6 @@ export interface StreamingEventMap {
|
|
|
34
34
|
* The last segment has finished appending.
|
|
35
35
|
*/
|
|
36
36
|
readonly bufferingEnded: AnyRecord;
|
|
37
|
-
/**
|
|
38
|
-
* The buffer went from empty to holding data, or back to empty.
|
|
39
|
-
*/
|
|
40
|
-
readonly hasDataChange: ChangeEvent<boolean>;
|
|
41
37
|
/**
|
|
42
38
|
* Dispatched when a streaming error occurs.
|
|
43
39
|
*/
|
|
@@ -97,7 +93,6 @@ export declare const ALL_STREAMING_EVENTS: readonly [
|
|
|
97
93
|
"bufferingQualityChange",
|
|
98
94
|
"playbackQualityChange",
|
|
99
95
|
"bufferingEnded",
|
|
100
|
-
"hasDataChange",
|
|
101
96
|
"error",
|
|
102
97
|
"reset",
|
|
103
98
|
"qualitiesChange",
|
|
@@ -45,10 +45,6 @@ export interface BufferingControllerEventMap {
|
|
|
45
45
|
* The last segment has finished appending.
|
|
46
46
|
*/
|
|
47
47
|
readonly bufferingEnded: AnyRecord;
|
|
48
|
-
/**
|
|
49
|
-
* The buffer went from empty to holding data, or back to empty.
|
|
50
|
-
*/
|
|
51
|
-
readonly hasDataChange: ChangeEvent<boolean>;
|
|
52
48
|
/**
|
|
53
49
|
* A codec the browser reported as supported failed to decode on append and
|
|
54
50
|
* has been denylisted. Dispatched instead of `error` so the media can be
|
|
@@ -84,10 +80,6 @@ export interface BufferingController extends ReadonlyEventHost<BufferingControll
|
|
|
84
80
|
* True if the stream has buffered the last segment.
|
|
85
81
|
*/
|
|
86
82
|
readonly bufferingEnded: boolean;
|
|
87
|
-
/**
|
|
88
|
-
* True while the buffer holds any data (false when empty or cleared).
|
|
89
|
-
*/
|
|
90
|
-
readonly hasData: boolean;
|
|
91
83
|
/**
|
|
92
84
|
* Begins buffering.
|
|
93
85
|
*/
|
|
@@ -164,7 +156,6 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
|
|
|
164
156
|
private reopen;
|
|
165
157
|
private _error;
|
|
166
158
|
private _bufferingEnded;
|
|
167
|
-
private _hasData;
|
|
168
159
|
private readonly queue;
|
|
169
160
|
private disposer;
|
|
170
161
|
private _active;
|
|
@@ -225,8 +216,6 @@ export declare class BufferingControllerImpl extends EventHostImpl<BufferingCont
|
|
|
225
216
|
*/
|
|
226
217
|
private get mediaSourceClosed();
|
|
227
218
|
get bufferingEnded(): boolean;
|
|
228
|
-
get hasData(): boolean;
|
|
229
|
-
private setHasData;
|
|
230
219
|
private readonly handleError;
|
|
231
220
|
/**
|
|
232
221
|
* Attempts to recover from a SourceBuffer decode/append failure caused by a
|
|
@@ -3,12 +3,14 @@ import type { MediaQualityMetadata } from './MediaQualityMetadata';
|
|
|
3
3
|
import type { FilterPredicate, FilterPredicateAsync, Maybe } from '@amazon/vinyl-util';
|
|
4
4
|
/**
|
|
5
5
|
* Filters qualities in a MediaTimeline using a synchronous predicate.
|
|
6
|
-
* If filtering
|
|
6
|
+
* If filtering drops an audio or video stream to zero in any period, throws via
|
|
7
|
+
* `throwError`.
|
|
7
8
|
*/
|
|
8
9
|
export declare function filterTimelineQualities(filter: Maybe<FilterPredicate<MediaQualityMetadata>>, throwError: () => never, timeline: MediaTimeline): MediaTimeline;
|
|
9
10
|
/**
|
|
10
11
|
* Filters qualities in a MediaTimeline using an asynchronous predicate.
|
|
11
|
-
* If filtering
|
|
12
|
+
* If filtering drops an audio or video stream to zero in any period, throws via
|
|
13
|
+
* `throwError`.
|
|
12
14
|
*/
|
|
13
15
|
export declare function filterTimelineQualitiesAsync(filter: FilterPredicateAsync<MediaQualityMetadata>, throwError: () => never, timeline: MediaTimeline): Promise<MediaTimeline>;
|
|
14
16
|
/**
|
|
@@ -20,13 +20,17 @@ export interface DashMediaQualityMetadataResolverDeps {
|
|
|
20
20
|
}
|
|
21
21
|
export declare function createMediaQualityMetadataFromDashRepresentation(representation: RepresentationType, deps: DashMediaQualityMetadataResolverDeps): MediaQualityMetadata;
|
|
22
22
|
/**
|
|
23
|
-
* Estimates the total bandwidth a representation
|
|
24
|
-
*
|
|
23
|
+
* Estimates the total bandwidth a representation uses alongside sibling content
|
|
24
|
+
* types, pairing it with the cheapest sibling rendition in its proportional
|
|
25
|
+
* bucket.
|
|
25
26
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* sibling
|
|
29
|
-
*
|
|
27
|
+
* Each content type's sorted list is split into as many buckets as this
|
|
28
|
+
* representation's own list has tiers; the representation is paired with the
|
|
29
|
+
* cheapest sibling rendition in the matching bucket. A stream with few tiers
|
|
30
|
+
* therefore stays selected across the span of a finer sibling's tiers (e.g. the
|
|
31
|
+
* top audio across the top half of video tiers) rather than being pinned to a
|
|
32
|
+
* single endpoint — with video [v1..v4] and audio [a1,a2], a1's bucket is
|
|
33
|
+
* v1..v2 so a1 pairs with v2, and a2's bucket is v3..v4 so a2 pairs with v4.
|
|
30
34
|
*/
|
|
31
35
|
export declare function estimatePeakBandwidth(representation: RepresentationType, contentType: ContentType): number;
|
|
32
36
|
/**
|
|
@@ -109,7 +109,7 @@ export declare function createDashFactories(options: Maybe<DashInitOptions>): (d
|
|
|
109
109
|
readonly manifestTransformed: ObservableValue<Promise<DashManifestData>>;
|
|
110
110
|
readonly options: ObservableValue<Pick<VinylOptions, "text">>;
|
|
111
111
|
}) => SidecarTextTrackController;
|
|
112
|
-
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "
|
|
112
|
+
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "text" | "audio" | "abr" | "allowedContentTypes">>>;
|
|
113
113
|
playbackController: import("@amazon/vinyl-di").Factory<PlaybackController>;
|
|
114
114
|
playbackSource: import("@amazon/vinyl-di").Factory<PlaybackSource>;
|
|
115
115
|
drmKeySystemResolver: import("@amazon/vinyl-di").Factory<DrmKeySystemResolver>;
|
|
@@ -36,6 +36,12 @@ export declare function calculatePeriodTimeRange(period: PeriodType): PeriodRang
|
|
|
36
36
|
*
|
|
37
37
|
* In a static presentation, the first period SHALL start at the zero point of the MPD timeline (with a
|
|
38
38
|
* Period@start value of 0 seconds).
|
|
39
|
+
*
|
|
40
|
+
* When `Period@start` is absent, the start is derived from the sum of the
|
|
41
|
+
* preceding periods' `Period@duration` values, per the PeriodStart derivation
|
|
42
|
+
* in ISO/IEC 23009-1 §5.3.2.1. This is common in on-demand manifests that
|
|
43
|
+
* declare only per-period durations (no explicit `@start`, no
|
|
44
|
+
* `MPD@mediaPresentationDuration`).
|
|
39
45
|
*/
|
|
40
46
|
export declare function calculatePeriodStart(period: PeriodType): number;
|
|
41
47
|
/**
|
|
@@ -3,6 +3,10 @@ import type { MediaFormatMetadata } from '../../streaming/MediaQualityMetadata';
|
|
|
3
3
|
export declare function throwMimeTypesUnsupported(): never;
|
|
4
4
|
/**
|
|
5
5
|
* Returns true when the media's codec and container is supported.
|
|
6
|
+
*
|
|
7
|
+
* Both ISO-BMFF (MP4/fMP4) and WebM containers are supported: the DASH
|
|
8
|
+
* `SegmentBase` indexer reads ISO-BMFF `sidx` boxes or WebM EBML `Cues` as
|
|
9
|
+
* appropriate, and MSE appends each to a matching SourceBuffer.
|
|
6
10
|
*/
|
|
7
11
|
export declare function canPlayMimeType(deps: {
|
|
8
12
|
readonly capabilities: Capabilities;
|
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
import type { MediaQualityMetadata } from '../../streaming/MediaQualityMetadata';
|
|
2
2
|
import type { Capabilities } from '../../client/Capabilities';
|
|
3
3
|
export declare function throwSamplingRatesUnsupported(): never;
|
|
4
|
+
export interface AudioSampleRateRangeOptions {
|
|
5
|
+
readonly capabilities: Capabilities;
|
|
6
|
+
/**
|
|
7
|
+
* An explicit maximum sampling rate that takes precedence over the
|
|
8
|
+
* platform's `AudioContext`-reported output rate when set.
|
|
9
|
+
*/
|
|
10
|
+
readonly maxSampleRate?: number | null;
|
|
11
|
+
/** An optional minimum sampling-rate floor. */
|
|
12
|
+
readonly minSampleRate?: number | null;
|
|
13
|
+
}
|
|
4
14
|
/**
|
|
5
|
-
* Returns true when the media's sampling rate is supported.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
15
|
+
* Returns true when the media's sampling rate is within the supported range.
|
|
16
|
+
* Only audio content types are gated; every other content type passes through.
|
|
17
|
+
*
|
|
18
|
+
* The upper bound is `maxSampleRate` when set, otherwise the platform's
|
|
19
|
+
* `AudioContext`-reported output rate (Firefox is hard-capped at 48kHz, which it
|
|
20
|
+
* cannot decode beyond via MSE). The optional lower bound is `minSampleRate`.
|
|
21
|
+
* Both bounds are soft, and soft *together*: when no audio rendition sits in the
|
|
22
|
+
* acceptable `[minSampleRate, maxSampleRate]` band, a single fallback is kept so
|
|
23
|
+
* playback is never stranded — the highest rate the ceiling can decode, or, when
|
|
24
|
+
* every rate is above the ceiling, the lowest. This holds even when renditions
|
|
25
|
+
* straddle an empty band (some below the floor, some above the ceiling). Only
|
|
26
|
+
* audio renditions count toward the fallback — a co-present video quality (no
|
|
27
|
+
* audio rate) never influences it. Firefox is the exception: its 48kHz cap is
|
|
28
|
+
* hard, with no fallback.
|
|
9
29
|
*/
|
|
10
|
-
export declare function
|
|
11
|
-
readonly capabilities: Capabilities;
|
|
12
|
-
}, metadata: MediaQualityMetadata, _index: number, array: ArrayLike<MediaQualityMetadata>): boolean;
|
|
30
|
+
export declare function withinAudioSampleRateRange(options: AudioSampleRateRangeOptions, metadata: MediaQualityMetadata, _index: number, array: ArrayLike<MediaQualityMetadata>): boolean;
|
|
13
31
|
//# sourceMappingURL=sampleRateFilter.d.ts.map
|
|
@@ -98,7 +98,7 @@ export declare function createHlsFactories(options: Maybe<HlsInitOptions>): (dep
|
|
|
98
98
|
readonly manifestTransformed: ObservableValue<Promise<HlsManifestData>>;
|
|
99
99
|
readonly options: ObservableValue<Pick<VinylOptions, "text">>;
|
|
100
100
|
}) => SidecarTextTrackController;
|
|
101
|
-
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "
|
|
101
|
+
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "text" | "audio" | "abr" | "allowedContentTypes">>>;
|
|
102
102
|
playbackController: import("@amazon/vinyl-di").Factory<PlaybackController>;
|
|
103
103
|
playbackSource: import("@amazon/vinyl-di").Factory<PlaybackSource>;
|
|
104
104
|
drmKeySystemResolver: import("@amazon/vinyl-di").Factory<DrmKeySystemResolver>;
|
|
@@ -15,15 +15,6 @@ import type { TextTrackController } from '../../text/TextTrack';
|
|
|
15
15
|
import type { TrackConfigOptions } from '../TrackFactory';
|
|
16
16
|
import type { TrackAds } from '../../ad/AdBreakInfo';
|
|
17
17
|
import type { VinylOptions } from '../../vinyl/VinylOptions';
|
|
18
|
-
/**
|
|
19
|
-
* How long to wait after all streams have data before checking whether a seek
|
|
20
|
-
* is still stuck, in seconds.
|
|
21
|
-
*/
|
|
22
|
-
export declare const SEEKING_STALL_TIME_CHECK = 0.1;
|
|
23
|
-
/**
|
|
24
|
-
* How far to nudge the playhead, in seconds, to recover a stuck seek.
|
|
25
|
-
*/
|
|
26
|
-
export declare const PLAYHEAD_NUDGE = 0.05;
|
|
27
18
|
export type MseTrackDeps = TrackBaseDeps & {
|
|
28
19
|
readonly contentTypesValue: ContentTypesValue;
|
|
29
20
|
readonly contentStreamFactory: (contentType: ContentType) => ContentStream;
|
|
@@ -55,7 +46,6 @@ export declare class MseTrack extends TrackBase {
|
|
|
55
46
|
protected readonly deps: MseTrackDeps;
|
|
56
47
|
get textTrackController(): (TextTrackController | null);
|
|
57
48
|
private readonly streams;
|
|
58
|
-
private stallNudgeTimer;
|
|
59
49
|
private readonly disposeAbort;
|
|
60
50
|
private lastPreloadOptions;
|
|
61
51
|
private readonly allFetchedRanges;
|
|
@@ -130,13 +120,6 @@ export declare class MseTrack extends TrackBase {
|
|
|
130
120
|
private getStream;
|
|
131
121
|
private clearStreams;
|
|
132
122
|
get bufferingEnded(): boolean;
|
|
133
|
-
/**
|
|
134
|
-
* A seek only completes once every stream has data at the target, but on
|
|
135
|
-
* some platforms the element can stay stuck `seeking` even after that. Once
|
|
136
|
-
* all streams hold data, if we're still seeking a moment later, nudge the
|
|
137
|
-
* playhead to prod the element into completing the seek.
|
|
138
|
-
*/
|
|
139
|
-
private checkStalledSeek;
|
|
140
123
|
private setContentTypes;
|
|
141
124
|
dispose(): void;
|
|
142
125
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts the container subtype from a MIME type, lowercased — the portion
|
|
3
|
+
* after the `/`, ignoring any parameters. For example
|
|
4
|
+
* `video/webm; codecs="vp9"` → `webm` and `audio/mp4` → `mp4`. Returns an empty
|
|
5
|
+
* string when the MIME type has no subtype.
|
|
6
|
+
*/
|
|
7
|
+
export declare function mimeSubtype(mimeType: string): string;
|
|
8
|
+
//# sourceMappingURL=mimeType.d.ts.map
|
|
@@ -67,6 +67,11 @@ export declare class VinylPlayer<TrackLoadOptionsType extends TrackLoadOptions =
|
|
|
67
67
|
* @see createVinylPlayer
|
|
68
68
|
*/
|
|
69
69
|
protected constructor(factories: Factories<VinylDeps<TrackLoadOptionsType, OptionsType>>);
|
|
70
|
+
/**
|
|
71
|
+
* Logs each republished load span once at the verbose level, formatting its
|
|
72
|
+
* bounds as ISO date strings and its duration in milliseconds.
|
|
73
|
+
*/
|
|
74
|
+
protected initializeLoadSpanLogging(): void;
|
|
70
75
|
protected redispatchSubControllerEvents(): void;
|
|
71
76
|
/**
|
|
72
77
|
* Certain track events are redispatched on the player for the current track.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CapabilitiesImplDeps } from '../client/CapabilitiesImpl';
|
|
2
2
|
import { CapabilitiesImpl } from '../client/CapabilitiesImpl';
|
|
3
|
-
import type { Merge, PartialDeep
|
|
3
|
+
import type { Merge, PartialDeep } from '@amazon/vinyl-util';
|
|
4
4
|
import { noop } from '@amazon/vinyl-util';
|
|
5
5
|
import type { PlaybackControllerImplDeps, PlaybackControllerImplOptions } from '../playback/PlaybackControllerImpl';
|
|
6
6
|
import { PlaybackControllerImpl } from '../playback/PlaybackControllerImpl';
|
|
@@ -9,7 +9,6 @@ import { PlaybackSourceImpl } from '../playback/PlaybackSourceImpl';
|
|
|
9
9
|
import type { VinylTrackFactoryDeps } from '../track/createVinylTrackFactories';
|
|
10
10
|
import type { TrackControllerImplDeps, TrackControllerImplOptions } from '../track/TrackController';
|
|
11
11
|
import { TrackControllerImpl } from '../track/TrackController';
|
|
12
|
-
import type { VinylPatchOptions } from './VinylPatchOptions';
|
|
13
12
|
import type { QualitySelectorImplOptions } from '../streaming/abr/QualitySelectorImpl';
|
|
14
13
|
import type { AdControllerImplDeps, AdControllerImplOptions } from '../ad/AdControllerImpl';
|
|
15
14
|
import { AdControllerImpl } from '../ad/AdControllerImpl';
|
|
@@ -44,11 +43,6 @@ export interface VinylDependencyOptions {
|
|
|
44
43
|
* `'hidden'`; without one they render natively. See `TextTrackRenderer`.
|
|
45
44
|
*/
|
|
46
45
|
readonly textTrackRenderer?: TextTrackRenderer;
|
|
47
|
-
/**
|
|
48
|
-
* Flags for patches that should be applied browser-specifically.
|
|
49
|
-
* These will be defaulted based on the user-agent.
|
|
50
|
-
*/
|
|
51
|
-
readonly patches?: PartialDeep<VinylPatchOptions>;
|
|
52
46
|
/**
|
|
53
47
|
* Configuration for the track controller.
|
|
54
48
|
*/
|
|
@@ -85,12 +79,7 @@ export interface VinylDependencyOptions {
|
|
|
85
79
|
*/
|
|
86
80
|
export declare function createVinylFactories(options: VinylDependencyOptions): {
|
|
87
81
|
options: (_deps: import("@amazon/vinyl-util").AnyRecord, add: import("@amazon/vinyl-util").AddDisposable) => import("@amazon/vinyl-observable").MutableValue<VinylOptions>;
|
|
88
|
-
|
|
89
|
-
media: (deps: {
|
|
90
|
-
readonly patchedMedia: {
|
|
91
|
-
readonly patched: HTMLMediaElement;
|
|
92
|
-
};
|
|
93
|
-
}) => HTMLMediaElement;
|
|
82
|
+
media: () => HTMLMediaElement;
|
|
94
83
|
textTrackProvider: (deps: {
|
|
95
84
|
readonly media: HTMLMediaElement;
|
|
96
85
|
}) => MediaTextTrackProvider;
|
|
@@ -156,7 +145,7 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
|
|
|
156
145
|
readonly manifestTransformed: ObservableValue<Promise<import("..").DashManifestData>>;
|
|
157
146
|
readonly options: ObservableValue<Pick<VinylOptions, "text">>;
|
|
158
147
|
}) => import("..").SidecarTextTrackController;
|
|
159
|
-
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "
|
|
148
|
+
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "text" | "audio" | "abr" | "allowedContentTypes">>>;
|
|
160
149
|
playbackController: import("@amazon/vinyl-di").Factory<import("..").PlaybackController>;
|
|
161
150
|
playbackSource: import("@amazon/vinyl-di").Factory<import("..").PlaybackSource>;
|
|
162
151
|
drmKeySystemResolver: import("@amazon/vinyl-di").Factory<import("..").DrmKeySystemResolver>;
|
|
@@ -168,7 +157,9 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
|
|
|
168
157
|
textTrackRenderer: import("@amazon/vinyl-di").Factory<TextTrackRenderer | null>;
|
|
169
158
|
adController: import("@amazon/vinyl-di").Factory<import("..").AdController>;
|
|
170
159
|
};
|
|
171
|
-
createHlsFactories: (deps: import("..").HlsFactoryDeps) => (loadOptions: import("..").HlsTrackLoadOptions
|
|
160
|
+
createHlsFactories: (deps: import("..").HlsFactoryDeps) => (loadOptions: import("..").HlsTrackLoadOptions /**
|
|
161
|
+
* Configuration for adaptive bitrate switching.
|
|
162
|
+
*/) => {
|
|
172
163
|
baseContentTypesValue: typeof import("..").createHlsContentTypesValue;
|
|
173
164
|
contentTypesValue: typeof import("..").createAllowedContentTypesValue;
|
|
174
165
|
manifestProvider: () => import("..").HlsManifestProvider;
|
|
@@ -211,7 +202,7 @@ export declare function createVinylFactories(options: VinylDependencyOptions): {
|
|
|
211
202
|
readonly manifestTransformed: ObservableValue<Promise<import("..").HlsManifestData>>;
|
|
212
203
|
readonly options: ObservableValue<Pick<VinylOptions, "text">>;
|
|
213
204
|
}) => import("..").SidecarTextTrackController;
|
|
214
|
-
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "
|
|
205
|
+
options: import("@amazon/vinyl-di").Factory<ObservableValue<Pick<VinylOptions, "text" | "audio" | "abr" | "allowedContentTypes">>>;
|
|
215
206
|
playbackController: import("@amazon/vinyl-di").Factory<import("..").PlaybackController>;
|
|
216
207
|
playbackSource: import("@amazon/vinyl-di").Factory<import("..").PlaybackSource>;
|
|
217
208
|
drmKeySystemResolver: import("@amazon/vinyl-di").Factory<import("..").DrmKeySystemResolver>;
|
|
@@ -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.
|
|
@@ -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
|
|
@@ -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;
|
|
@@ -194,6 +194,19 @@ export interface PlaybackControllerEventMap {
|
|
|
194
194
|
* true and the media is seeking a new position.
|
|
195
195
|
*/
|
|
196
196
|
readonly seeking: AnyRecord;
|
|
197
|
+
/**
|
|
198
|
+
* Fired when the play head has been detected as frozen while playing — i.e. no `timeUpdate`
|
|
199
|
+
* was observed for longer than the stall threshold. Only emitted once playback has actually
|
|
200
|
+
* been observed (a `playing` event), so it is not emitted during initial loading or while
|
|
201
|
+
* awaiting a seek. Each stall is bracketed by a `stallEntered`/{@link stallEnded} pair.
|
|
202
|
+
*/
|
|
203
|
+
readonly stallEntered: AnyRecord;
|
|
204
|
+
/**
|
|
205
|
+
* Fired when a stall (see {@link stallEntered}) has ended, for any reason. `started` is the
|
|
206
|
+
* time of the last `timeUpdate` observed before the play head froze, and `duration` is the
|
|
207
|
+
* total number of seconds the play head was frozen.
|
|
208
|
+
*/
|
|
209
|
+
readonly stallEnded: OperationCompletedEvent<StallEndedReason>;
|
|
197
210
|
/**
|
|
198
211
|
* Fired when the time indicated by the currentTime attribute has been updated.
|
|
199
212
|
*/
|
|
@@ -241,6 +254,19 @@ export declare const waitedReasons: readonly [
|
|
|
241
254
|
WaitedReason.EMPTIED,
|
|
242
255
|
WaitedReason.SEEKING
|
|
243
256
|
];
|
|
257
|
+
/**
|
|
258
|
+
* Reasons a stall (see {@link PlaybackControllerEventMap.stallEntered}) has ended.
|
|
259
|
+
*/
|
|
260
|
+
export declare enum StallEndedReason {
|
|
261
|
+
/** The play head advanced again — playback resumed. */
|
|
262
|
+
PLAYING = "playing",
|
|
263
|
+
/** Playback was paused. */
|
|
264
|
+
PAUSE = "pause",
|
|
265
|
+
/** A seek started. */
|
|
266
|
+
SEEKING = "seeking",
|
|
267
|
+
/** The media was emptied (e.g. unloaded/reloaded). */
|
|
268
|
+
EMPTIED = "emptied"
|
|
269
|
+
}
|
|
244
270
|
export declare const ALL_PLAYBACK_STATE_EVENTS: readonly [
|
|
245
271
|
"abort",
|
|
246
272
|
"canPlay",
|
|
@@ -267,6 +293,8 @@ export declare const ALL_PLAYBACK_STATE_EVENTS: readonly [
|
|
|
267
293
|
"resize",
|
|
268
294
|
"seeked",
|
|
269
295
|
"seeking",
|
|
296
|
+
"stallEntered",
|
|
297
|
+
"stallEnded",
|
|
270
298
|
"timeUpdate",
|
|
271
299
|
"volumeChange",
|
|
272
300
|
"waited",
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export interface StallDetectorOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Called when playback resumes without emitting a `playing` event (or after the detector
|
|
4
|
+
* revived it), so the caller can announce playback.
|
|
5
|
+
*/
|
|
6
|
+
readonly fabricatePlaying: () => void;
|
|
7
|
+
/** Poll interval in seconds. Default: 0.25 */
|
|
8
|
+
readonly pollInterval?: number;
|
|
9
|
+
/** Seconds the play head must be frozen before recovering. Default: 0.75 */
|
|
10
|
+
readonly stallThreshold?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Don't nudge this close to the end of buffered data; a freeze there is a
|
|
13
|
+
* legitimate wait for more data. Seconds. Default: 0.5
|
|
14
|
+
*/
|
|
15
|
+
readonly bufferEndMargin?: number;
|
|
16
|
+
/** Seconds to nudge the play head forward to prod a resume. Default: 0.1 */
|
|
17
|
+
readonly stallSkip?: number;
|
|
18
|
+
/** Max recovery attempts before giving up. Default: 3 */
|
|
19
|
+
readonly maxAttempts?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Nudge even when the playhead isn't inside a buffered range. Some WebKit versions leave a
|
|
22
|
+
* seek perpetually pending (no `seeked`) with a stale empty `buffered` even though data is
|
|
23
|
+
* appended; re-issuing the seek via a nudge can complete it. Off by default (only nudge over
|
|
24
|
+
* genuinely buffered data). Default: false
|
|
25
|
+
*/
|
|
26
|
+
readonly nudgeUnbuffered?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Watches a media element after a seek/play and drives it back into a playing state. Some WebKit
|
|
30
|
+
* versions stall: the play head freezes inside buffered data and playback never resumes (often with
|
|
31
|
+
* a stale low readyState). This polls the play head and, while the element should be advancing:
|
|
32
|
+
*
|
|
33
|
+
* - if it's frozen inside buffered data, nudges currentTime forward to prod a resume;
|
|
34
|
+
* - if there's no data at the playhead, waits (it's legitimately buffering, or between sources).
|
|
35
|
+
*
|
|
36
|
+
* When the play head progresses it calls {@link StallDetectorOptions.fabricatePlaying} if playback
|
|
37
|
+
* resumed without a `playing` event (or after the detector revived it), then stops. It also stops
|
|
38
|
+
* on pause/ended/emptied or after {@link StallDetectorOptions.maxAttempts}.
|
|
39
|
+
*
|
|
40
|
+
* Start it after a seek or play only when playback is intended — a paused element won't advance.
|
|
41
|
+
*/
|
|
42
|
+
export declare function createStallDetector(media: HTMLMediaElement, options: StallDetectorOptions): () => void;
|
|
43
|
+
//# sourceMappingURL=createStallDetector.d.ts.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Timestamp } from '@amazon/vinyl-util';
|
|
2
|
+
import type { ReadonlyPlaybackController } from './ReadonlyPlaybackController';
|
|
3
|
+
import { StallEndedReason } from './ReadonlyPlaybackController';
|
|
4
|
+
export interface StallMonitorOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Seconds the play head must be frozen (no `timeUpdate`) while playing before a stall is
|
|
7
|
+
* reported. Default: 1
|
|
8
|
+
*/
|
|
9
|
+
readonly stallThreshold?: number;
|
|
10
|
+
/**
|
|
11
|
+
* How often (seconds) the play head freeze is checked. Default: 0.25
|
|
12
|
+
*/
|
|
13
|
+
readonly pollInterval?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface StallEndedInfo {
|
|
16
|
+
/** Time of the last `timeUpdate` observed before the play head froze. */
|
|
17
|
+
readonly started: Timestamp;
|
|
18
|
+
/** Time the stall ended. */
|
|
19
|
+
readonly ended: Timestamp;
|
|
20
|
+
/** Total seconds the play head was frozen. */
|
|
21
|
+
readonly duration: number;
|
|
22
|
+
/** Why the stall ended. */
|
|
23
|
+
readonly reason: StallEndedReason;
|
|
24
|
+
}
|
|
25
|
+
export interface StallMonitorCallbacks {
|
|
26
|
+
/** Called when a stall is first detected. */
|
|
27
|
+
readonly onStallEntered: () => void;
|
|
28
|
+
/** Called when a detected stall ends. */
|
|
29
|
+
readonly onStallEnded: (info: StallEndedInfo) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Watches a {@link ReadonlyPlaybackController} for stalls while playing: the play head freezing
|
|
33
|
+
* (no `timeUpdate`) for longer than {@link StallMonitorOptions.stallThreshold} seconds.
|
|
34
|
+
*
|
|
35
|
+
* Detection only runs once playback has actually been observed (a `playing` event) and is
|
|
36
|
+
* suspended on `pause`/`seeking`/`emptied` until playback is observed again — so a stall is never
|
|
37
|
+
* reported during initial loading or while awaiting a seek. A detected stall ends when the play
|
|
38
|
+
* head advances again (`playing`) or playback stops for another reason (`pause`/`seeking`/
|
|
39
|
+
* `emptied`); {@link StallEndedInfo.duration} is measured from the last `timeUpdate` before the
|
|
40
|
+
* freeze, so it reflects the full frozen time rather than only the time past the threshold.
|
|
41
|
+
*
|
|
42
|
+
* Returns a function that stops the monitor.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createStallMonitor(controller: ReadonlyPlaybackController, callbacks: StallMonitorCallbacks, options?: StallMonitorOptions): () => void;
|
|
45
|
+
//# sourceMappingURL=createStallMonitor.d.ts.map
|