@videojs/spf 10.0.0-beta.30 → 10.0.0-beta.32
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/default/core/actors/create-machine-actor.js +23 -25
- package/dist/default/core/actors/create-machine-actor.js.map +1 -1
- package/dist/default/core/actors/create-transition-actor.js +7 -9
- package/dist/default/core/actors/create-transition-actor.js.map +1 -1
- package/dist/default/core/composition/create-composition.js +26 -29
- package/dist/default/core/composition/create-composition.js.map +1 -1
- package/dist/default/core/composition/share-signals.js +12 -17
- package/dist/default/core/composition/share-signals.js.map +1 -1
- package/dist/default/core/machine.js +3 -4
- package/dist/default/core/machine.js.map +1 -1
- package/dist/default/core/reactors/create-machine-reactor.js +20 -19
- package/dist/default/core/reactors/create-machine-reactor.js.map +1 -1
- package/dist/default/core/signals/effect.js +24 -4
- package/dist/default/core/signals/effect.js.map +1 -1
- package/dist/default/core/signals/primitives.js +10 -14
- package/dist/default/core/signals/primitives.js.map +1 -1
- package/dist/default/core/signals/when.js +6 -8
- package/dist/default/core/signals/when.js.map +1 -1
- package/dist/default/core/tasks/delayed-reschedule.js +7 -11
- package/dist/default/core/tasks/delayed-reschedule.js.map +1 -1
- package/dist/default/core/tasks/task.js +59 -82
- package/dist/default/core/tasks/task.js.map +1 -1
- package/dist/default/hls.js +3 -1
- package/dist/default/index.js +2 -3
- package/dist/default/index.js.map +1 -1
- package/dist/default/media/abr/quality-selection.js +3 -7
- package/dist/default/media/abr/quality-selection.js.map +1 -1
- package/dist/default/media/buffer/back-buffer.js +15 -19
- package/dist/default/media/buffer/back-buffer.js.map +1 -1
- package/dist/default/media/buffer/forward-buffer.js +32 -41
- package/dist/default/media/buffer/forward-buffer.js.map +1 -1
- package/dist/default/media/dom/capabilities.js +26 -37
- package/dist/default/media/dom/capabilities.js.map +1 -1
- package/dist/default/media/dom/mse/append-segment.js +3 -5
- package/dist/default/media/dom/mse/append-segment.js.map +1 -1
- package/dist/default/media/dom/mse/buffer-flusher.js +5 -5
- package/dist/default/media/dom/mse/buffer-flusher.js.map +1 -1
- package/dist/default/media/dom/mse/duration.js +23 -31
- package/dist/default/media/dom/mse/duration.js.map +1 -1
- package/dist/default/media/dom/mse/end-of-stream.js +3 -6
- package/dist/default/media/dom/mse/end-of-stream.js.map +1 -1
- package/dist/default/media/dom/mse/mediasource-setup.js +65 -81
- package/dist/default/media/dom/mse/mediasource-setup.js.map +1 -1
- package/dist/default/media/dom/screen.js +37 -54
- package/dist/default/media/dom/screen.js.map +1 -1
- package/dist/default/media/dom/text/resolve-vtt-segment.js.map +1 -1
- package/dist/default/media/dom/text/text-track-slots.js +15 -23
- package/dist/default/media/dom/text/text-track-slots.js.map +1 -1
- package/dist/default/media/errors.js +25 -34
- package/dist/default/media/errors.js.map +1 -1
- package/dist/default/media/hls/parse-attributes.js +9 -26
- package/dist/default/media/hls/parse-attributes.js.map +1 -1
- package/dist/default/media/hls/parse-media-playlist.js +25 -33
- package/dist/default/media/hls/parse-media-playlist.js.map +1 -1
- package/dist/default/media/hls/parse-multivariant.js +3 -3
- package/dist/default/media/hls/parse-multivariant.js.map +1 -1
- package/dist/default/media/hls/reload-policy.js +19 -27
- package/dist/default/media/hls/reload-policy.js.map +1 -1
- package/dist/default/media/hls/resolve-url.js +1 -3
- package/dist/default/media/hls/resolve-url.js.map +1 -1
- package/dist/default/media/live-window.js +9 -13
- package/dist/default/media/live-window.js.map +1 -1
- package/dist/default/media/media-tracks/media-tracks.js +12 -17
- package/dist/default/media/media-tracks/media-tracks.js.map +1 -1
- package/dist/default/media/mp4/box.js +4 -5
- package/dist/default/media/mp4/box.js.map +1 -1
- package/dist/default/media/mp4/timestamp-origin.js +30 -42
- package/dist/default/media/mp4/timestamp-origin.js.map +1 -1
- package/dist/default/media/primitives/resolution.js +5 -8
- package/dist/default/media/primitives/resolution.js.map +1 -1
- package/dist/default/media/primitives/select-tracks.js +24 -34
- package/dist/default/media/primitives/select-tracks.js.map +1 -1
- package/dist/default/media/text/parse-vtt-timestamp-map.js +6 -8
- package/dist/default/media/text/parse-vtt-timestamp-map.js.map +1 -1
- package/dist/default/media/text/resolve-vtt-metadata.js +8 -9
- package/dist/default/media/text/resolve-vtt-metadata.js.map +1 -1
- package/dist/default/media/types/index.js +10 -18
- package/dist/default/media/types/index.js.map +1 -1
- package/dist/default/media/utils/cdn.js +10 -16
- package/dist/default/media/utils/cdn.js.map +1 -1
- package/dist/default/media/utils/preload.js +4 -6
- package/dist/default/media/utils/preload.js.map +1 -1
- package/dist/default/media/utils/track-selection.js +10 -14
- package/dist/default/media/utils/track-selection.js.map +1 -1
- package/dist/default/media/utils/tracks.js +56 -54
- package/dist/default/media/utils/tracks.js.map +1 -1
- package/dist/default/network/bandwidth-estimator.js +18 -19
- package/dist/default/network/bandwidth-estimator.js.map +1 -1
- package/dist/default/network/chunked-stream-iterable.js +4 -6
- package/dist/default/network/chunked-stream-iterable.js.map +1 -1
- package/dist/default/network/ewma.js +22 -25
- package/dist/default/network/ewma.js.map +1 -1
- package/dist/default/network/fetch.js +30 -37
- package/dist/default/network/fetch.js.map +1 -1
- package/dist/default/playback/actors/dom/segment-loader.js +28 -44
- package/dist/default/playback/actors/dom/segment-loader.js.map +1 -1
- package/dist/default/playback/actors/dom/source-buffer.js.map +1 -1
- package/dist/default/playback/actors/dom/text-tracks.js.map +1 -1
- package/dist/default/playback/actors/text-track-segment-loader.js +24 -35
- package/dist/default/playback/actors/text-track-segment-loader.js.map +1 -1
- package/dist/default/playback/adapters/hls-audio/adapter.js +23 -31
- package/dist/default/playback/adapters/hls-audio/adapter.js.map +1 -1
- package/dist/default/playback/adapters/hls-audio/media.js.map +1 -1
- package/dist/default/playback/adapters/hls-background-video/adapter.js +50 -70
- package/dist/default/playback/adapters/hls-background-video/adapter.js.map +1 -1
- package/dist/default/playback/adapters/hls-background-video/host.js +12 -16
- package/dist/default/playback/adapters/hls-background-video/host.js.map +1 -1
- package/dist/default/playback/adapters/hls-background-video/media.js +5 -8
- package/dist/default/playback/adapters/hls-background-video/media.js.map +1 -1
- package/dist/default/playback/adapters/hls-video/adapter.js +43 -60
- package/dist/default/playback/adapters/hls-video/adapter.js.map +1 -1
- package/dist/default/playback/adapters/hls-video/error-surface.js +13 -18
- package/dist/default/playback/adapters/hls-video/error-surface.js.map +1 -1
- package/dist/default/playback/adapters/hls-video/media-tracks.js +4 -5
- package/dist/default/playback/adapters/hls-video/media-tracks.js.map +1 -1
- package/dist/default/playback/adapters/hls-video/media.js.map +1 -1
- package/dist/default/playback/adapters/mux-audio/media.js +8 -12
- package/dist/default/playback/adapters/mux-audio/media.js.map +1 -1
- package/dist/default/playback/adapters/mux-video/adapter.js +25 -33
- package/dist/default/playback/adapters/mux-video/adapter.js.map +1 -1
- package/dist/default/playback/adapters/mux-video/media.js +7 -9
- package/dist/default/playback/adapters/mux-video/media.js.map +1 -1
- package/dist/default/playback/behaviors/calculate-presentation-duration.js +5 -8
- package/dist/default/playback/behaviors/calculate-presentation-duration.js.map +1 -1
- package/dist/default/playback/behaviors/collect-errors.js +39 -52
- package/dist/default/playback/behaviors/collect-errors.js.map +1 -1
- package/dist/default/playback/behaviors/derive-cdn-priority.js +16 -23
- package/dist/default/playback/behaviors/derive-cdn-priority.js.map +1 -1
- package/dist/default/playback/behaviors/dom/airplay.js +38 -61
- package/dist/default/playback/behaviors/dom/airplay.js.map +1 -1
- package/dist/default/playback/behaviors/dom/apply-start-position.js +23 -35
- package/dist/default/playback/behaviors/dom/apply-start-position.js.map +1 -1
- package/dist/default/playback/behaviors/dom/end-of-stream.js +11 -16
- package/dist/default/playback/behaviors/dom/end-of-stream.js.map +1 -1
- package/dist/default/playback/behaviors/dom/load-segments.js +27 -39
- package/dist/default/playback/behaviors/dom/load-segments.js.map +1 -1
- package/dist/default/playback/behaviors/dom/recover-end-stall.js +21 -26
- package/dist/default/playback/behaviors/dom/recover-end-stall.js.map +1 -1
- package/dist/default/playback/behaviors/dom/seek-to-live-edge.js +41 -60
- package/dist/default/playback/behaviors/dom/seek-to-live-edge.js.map +1 -1
- package/dist/default/playback/behaviors/dom/setup-buffer-actors.js +50 -74
- package/dist/default/playback/behaviors/dom/setup-buffer-actors.js.map +1 -1
- package/dist/default/playback/behaviors/dom/setup-mediasource.js +29 -43
- package/dist/default/playback/behaviors/dom/setup-mediasource.js.map +1 -1
- package/dist/default/playback/behaviors/dom/setup-text-track-actors.js.map +1 -1
- package/dist/default/playback/behaviors/dom/sync-live-seekable-range.js +3 -4
- package/dist/default/playback/behaviors/dom/sync-live-seekable-range.js.map +1 -1
- package/dist/default/playback/behaviors/dom/sync-text-tracks.js +30 -45
- package/dist/default/playback/behaviors/dom/sync-text-tracks.js.map +1 -1
- package/dist/default/playback/behaviors/dom/track-current-time.js +9 -11
- package/dist/default/playback/behaviors/dom/track-current-time.js.map +1 -1
- package/dist/default/playback/behaviors/dom/track-load-triggers.js +24 -32
- package/dist/default/playback/behaviors/dom/track-load-triggers.js.map +1 -1
- package/dist/default/playback/behaviors/dom/track-playback-rate.js +6 -8
- package/dist/default/playback/behaviors/dom/track-playback-rate.js.map +1 -1
- package/dist/default/playback/behaviors/dom/track-player-resolution.js +10 -14
- package/dist/default/playback/behaviors/dom/track-player-resolution.js.map +1 -1
- package/dist/default/playback/behaviors/dom/track-screen-resolution.js +8 -9
- package/dist/default/playback/behaviors/dom/track-screen-resolution.js.map +1 -1
- package/dist/default/playback/behaviors/dom/update-mediasource-duration.js +28 -43
- package/dist/default/playback/behaviors/dom/update-mediasource-duration.js.map +1 -1
- package/dist/default/playback/behaviors/establish-start-media-time.js +32 -42
- package/dist/default/playback/behaviors/establish-start-media-time.js.map +1 -1
- package/dist/default/playback/behaviors/resolve-presentation.js +13 -22
- package/dist/default/playback/behaviors/resolve-presentation.js.map +1 -1
- package/dist/default/playback/behaviors/resolve-track.js +5 -12
- package/dist/default/playback/behaviors/resolve-track.js.map +1 -1
- package/dist/default/playback/behaviors/select-tracks.js +77 -104
- package/dist/default/playback/behaviors/select-tracks.js.map +1 -1
- package/dist/default/playback/behaviors/setup-failover-monitor.js +11 -16
- package/dist/default/playback/behaviors/setup-failover-monitor.js.map +1 -1
- package/dist/default/playback/behaviors/sync-preload.js +9 -13
- package/dist/default/playback/behaviors/sync-preload.js.map +1 -1
- package/dist/default/playback/behaviors/track-switching.js +189 -173
- package/dist/default/playback/behaviors/track-switching.js.map +1 -1
- package/dist/default/playback/engines/hls/engine-audio-only.js +20 -24
- package/dist/default/playback/engines/hls/engine-audio-only.js.map +1 -1
- package/dist/default/playback/engines/hls/engine-background-video.js +22 -27
- package/dist/default/playback/engines/hls/engine-background-video.js.map +1 -1
- package/dist/default/playback/engines/hls/engine.js +22 -25
- package/dist/default/playback/engines/hls/engine.js.map +1 -1
- package/dist/default/playback/primitives/error-messages.js +16 -25
- package/dist/default/playback/primitives/error-messages.js.map +1 -1
- package/dist/default/playback/primitives/failover-fetch.js +9 -14
- package/dist/default/playback/primitives/failover-fetch.js.map +1 -1
- package/dist/default/playback/primitives/head-peek.js +7 -10
- package/dist/default/playback/primitives/head-peek.js.map +1 -1
- package/dist/default/playback/primitives/live-window.js +12 -15
- package/dist/default/playback/primitives/live-window.js.map +1 -1
- package/dist/default/playback/primitives/relocation-pipelines.js +34 -46
- package/dist/default/playback/primitives/relocation-pipelines.js.map +1 -1
- package/dist/default/playback/primitives/report-track-conditions.js +26 -38
- package/dist/default/playback/primitives/report-track-conditions.js.map +1 -1
- package/dist/default/playback/primitives/segment-load-pipeline.js +15 -15
- package/dist/default/playback/primitives/segment-load-pipeline.js.map +1 -1
- package/dist/default/playback/primitives/selection-rules.js +65 -36
- package/dist/default/playback/primitives/selection-rules.js.map +1 -1
- package/dist/default/playback/primitives/text-segment-load-pipeline.js +4 -5
- package/dist/default/playback/primitives/text-segment-load-pipeline.js.map +1 -1
- package/dist/default/playback/primitives/track-types.js +10 -18
- package/dist/default/playback/primitives/track-types.js.map +1 -1
- package/dist/dev/core/actors/actor.d.ts +4 -4
- package/dist/dev/core/actors/actor.d.ts.map +1 -1
- package/dist/dev/core/actors/create-machine-actor.d.ts +38 -47
- package/dist/dev/core/actors/create-machine-actor.d.ts.map +1 -1
- package/dist/dev/core/actors/create-machine-actor.js +23 -25
- package/dist/dev/core/actors/create-machine-actor.js.map +1 -1
- package/dist/dev/core/actors/create-transition-actor.d.ts +11 -15
- package/dist/dev/core/actors/create-transition-actor.d.ts.map +1 -1
- package/dist/dev/core/actors/create-transition-actor.js +7 -9
- package/dist/dev/core/actors/create-transition-actor.js.map +1 -1
- package/dist/dev/core/composition/create-composition.d.ts +70 -102
- package/dist/dev/core/composition/create-composition.d.ts.map +1 -1
- package/dist/dev/core/composition/create-composition.js +26 -29
- package/dist/dev/core/composition/create-composition.js.map +1 -1
- package/dist/dev/core/composition/share-signals.d.ts +17 -24
- package/dist/dev/core/composition/share-signals.d.ts.map +1 -1
- package/dist/dev/core/composition/share-signals.js +12 -17
- package/dist/dev/core/composition/share-signals.js.map +1 -1
- package/dist/dev/core/machine.d.ts +4 -4
- package/dist/dev/core/machine.js +3 -4
- package/dist/dev/core/machine.js.map +1 -1
- package/dist/dev/core/reactors/create-machine-reactor.d.ts +33 -39
- package/dist/dev/core/reactors/create-machine-reactor.d.ts.map +1 -1
- package/dist/dev/core/reactors/create-machine-reactor.js +20 -19
- package/dist/dev/core/reactors/create-machine-reactor.js.map +1 -1
- package/dist/dev/core/signals/effect.d.ts +3 -4
- package/dist/dev/core/signals/effect.d.ts.map +1 -1
- package/dist/dev/core/signals/effect.js +24 -4
- package/dist/dev/core/signals/effect.js.map +1 -1
- package/dist/dev/core/signals/primitives.d.ts +10 -12
- package/dist/dev/core/signals/primitives.d.ts.map +1 -1
- package/dist/dev/core/signals/primitives.js +10 -14
- package/dist/dev/core/signals/primitives.js.map +1 -1
- package/dist/dev/core/signals/when.js +6 -8
- package/dist/dev/core/signals/when.js.map +1 -1
- package/dist/dev/core/tasks/delayed-reschedule.js +7 -11
- package/dist/dev/core/tasks/delayed-reschedule.js.map +1 -1
- package/dist/dev/core/tasks/task.d.ts +51 -73
- package/dist/dev/core/tasks/task.d.ts.map +1 -1
- package/dist/dev/core/tasks/task.js +59 -82
- package/dist/dev/core/tasks/task.js.map +1 -1
- package/dist/dev/hls.d.ts +3 -1
- package/dist/dev/hls.js +3 -1
- package/dist/dev/index.d.ts +2 -3
- package/dist/dev/index.d.ts.map +1 -1
- package/dist/dev/index.js +2 -3
- package/dist/dev/index.js.map +1 -1
- package/dist/dev/media/abr/quality-selection.d.ts +7 -10
- package/dist/dev/media/abr/quality-selection.d.ts.map +1 -1
- package/dist/dev/media/abr/quality-selection.js +3 -7
- package/dist/dev/media/abr/quality-selection.js.map +1 -1
- package/dist/dev/media/buffer/back-buffer.d.ts +2 -7
- package/dist/dev/media/buffer/back-buffer.d.ts.map +1 -1
- package/dist/dev/media/buffer/back-buffer.js +15 -19
- package/dist/dev/media/buffer/back-buffer.js.map +1 -1
- package/dist/dev/media/buffer/forward-buffer.d.ts +2 -7
- package/dist/dev/media/buffer/forward-buffer.d.ts.map +1 -1
- package/dist/dev/media/buffer/forward-buffer.js +32 -41
- package/dist/dev/media/buffer/forward-buffer.js.map +1 -1
- package/dist/dev/media/dom/capabilities.js +26 -37
- package/dist/dev/media/dom/capabilities.js.map +1 -1
- package/dist/dev/media/dom/mse/append-segment.d.ts +3 -5
- package/dist/dev/media/dom/mse/append-segment.d.ts.map +1 -1
- package/dist/dev/media/dom/mse/append-segment.js +3 -5
- package/dist/dev/media/dom/mse/append-segment.js.map +1 -1
- package/dist/dev/media/dom/mse/buffer-flusher.d.ts +5 -5
- package/dist/dev/media/dom/mse/buffer-flusher.js +5 -5
- package/dist/dev/media/dom/mse/buffer-flusher.js.map +1 -1
- package/dist/dev/media/dom/mse/duration.js +23 -31
- package/dist/dev/media/dom/mse/duration.js.map +1 -1
- package/dist/dev/media/dom/mse/end-of-stream.js +3 -6
- package/dist/dev/media/dom/mse/end-of-stream.js.map +1 -1
- package/dist/dev/media/dom/mse/mediasource-setup.js +65 -81
- package/dist/dev/media/dom/mse/mediasource-setup.js.map +1 -1
- package/dist/dev/media/dom/screen.d.ts.map +1 -1
- package/dist/dev/media/dom/screen.js +37 -54
- package/dist/dev/media/dom/screen.js.map +1 -1
- package/dist/dev/media/dom/text/resolve-vtt-segment.d.ts.map +1 -1
- package/dist/dev/media/dom/text/resolve-vtt-segment.js.map +1 -1
- package/dist/dev/media/dom/text/text-track-slots.d.ts +10 -16
- package/dist/dev/media/dom/text/text-track-slots.d.ts.map +1 -1
- package/dist/dev/media/dom/text/text-track-slots.js +15 -23
- package/dist/dev/media/dom/text/text-track-slots.js.map +1 -1
- package/dist/dev/media/errors.d.ts +32 -46
- package/dist/dev/media/errors.d.ts.map +1 -1
- package/dist/dev/media/errors.js +25 -34
- package/dist/dev/media/errors.js.map +1 -1
- package/dist/dev/media/hls/parse-attributes.js +9 -26
- package/dist/dev/media/hls/parse-attributes.js.map +1 -1
- package/dist/dev/media/hls/parse-media-playlist.js +25 -33
- package/dist/dev/media/hls/parse-media-playlist.js.map +1 -1
- package/dist/dev/media/hls/parse-multivariant.js +3 -3
- package/dist/dev/media/hls/parse-multivariant.js.map +1 -1
- package/dist/dev/media/hls/reload-policy.js +19 -27
- package/dist/dev/media/hls/reload-policy.js.map +1 -1
- package/dist/dev/media/hls/resolve-url.js +1 -3
- package/dist/dev/media/hls/resolve-url.js.map +1 -1
- package/dist/dev/media/live-window.js +9 -13
- package/dist/dev/media/live-window.js.map +1 -1
- package/dist/dev/media/media-tracks/media-tracks.d.ts +8 -13
- package/dist/dev/media/media-tracks/media-tracks.d.ts.map +1 -1
- package/dist/dev/media/media-tracks/media-tracks.js +12 -17
- package/dist/dev/media/media-tracks/media-tracks.js.map +1 -1
- package/dist/dev/media/mp4/box.js +4 -5
- package/dist/dev/media/mp4/box.js.map +1 -1
- package/dist/dev/media/mp4/timestamp-origin.js +30 -42
- package/dist/dev/media/mp4/timestamp-origin.js.map +1 -1
- package/dist/dev/media/primitives/resolution.d.ts +6 -8
- package/dist/dev/media/primitives/resolution.d.ts.map +1 -1
- package/dist/dev/media/primitives/resolution.js +5 -8
- package/dist/dev/media/primitives/resolution.js.map +1 -1
- package/dist/dev/media/primitives/select-tracks.js +24 -34
- package/dist/dev/media/primitives/select-tracks.js.map +1 -1
- package/dist/dev/media/text/parse-vtt-timestamp-map.js +6 -8
- package/dist/dev/media/text/parse-vtt-timestamp-map.js.map +1 -1
- package/dist/dev/media/text/resolve-vtt-metadata.js +8 -9
- package/dist/dev/media/text/resolve-vtt-metadata.js.map +1 -1
- package/dist/dev/media/types/index.d.ts +106 -177
- package/dist/dev/media/types/index.d.ts.map +1 -1
- package/dist/dev/media/types/index.js +10 -18
- package/dist/dev/media/types/index.js.map +1 -1
- package/dist/dev/media/utils/cdn.d.ts +4 -6
- package/dist/dev/media/utils/cdn.d.ts.map +1 -1
- package/dist/dev/media/utils/cdn.js +10 -16
- package/dist/dev/media/utils/cdn.js.map +1 -1
- package/dist/dev/media/utils/preload.js +4 -6
- package/dist/dev/media/utils/preload.js.map +1 -1
- package/dist/dev/media/utils/track-selection.js +10 -14
- package/dist/dev/media/utils/track-selection.js.map +1 -1
- package/dist/dev/media/utils/tracks.js +56 -54
- package/dist/dev/media/utils/tracks.js.map +1 -1
- package/dist/dev/network/bandwidth-estimator.d.ts +7 -9
- package/dist/dev/network/bandwidth-estimator.d.ts.map +1 -1
- package/dist/dev/network/bandwidth-estimator.js +18 -19
- package/dist/dev/network/bandwidth-estimator.js.map +1 -1
- package/dist/dev/network/chunked-stream-iterable.js +4 -6
- package/dist/dev/network/chunked-stream-iterable.js.map +1 -1
- package/dist/dev/network/ewma.js +22 -25
- package/dist/dev/network/ewma.js.map +1 -1
- package/dist/dev/network/fetch.js +30 -37
- package/dist/dev/network/fetch.js.map +1 -1
- package/dist/dev/playback/actors/dom/segment-loader.d.ts +7 -11
- package/dist/dev/playback/actors/dom/segment-loader.d.ts.map +1 -1
- package/dist/dev/playback/actors/dom/segment-loader.js +28 -44
- package/dist/dev/playback/actors/dom/segment-loader.js.map +1 -1
- package/dist/dev/playback/actors/dom/source-buffer.d.ts +5 -7
- package/dist/dev/playback/actors/dom/source-buffer.d.ts.map +1 -1
- package/dist/dev/playback/actors/dom/source-buffer.js.map +1 -1
- package/dist/dev/playback/actors/dom/text-tracks.js.map +1 -1
- package/dist/dev/playback/actors/text-track-segment-loader.d.ts +10 -16
- package/dist/dev/playback/actors/text-track-segment-loader.d.ts.map +1 -1
- package/dist/dev/playback/actors/text-track-segment-loader.js +24 -35
- package/dist/dev/playback/actors/text-track-segment-loader.js.map +1 -1
- package/dist/dev/playback/actors/text-tracks.d.ts +5 -8
- package/dist/dev/playback/actors/text-tracks.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-audio/adapter.d.ts +11 -14
- package/dist/dev/playback/adapters/hls-audio/adapter.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-audio/adapter.js +23 -31
- package/dist/dev/playback/adapters/hls-audio/adapter.js.map +1 -1
- package/dist/dev/playback/adapters/hls-audio/media.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-audio/media.js.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/adapter.d.ts +28 -39
- package/dist/dev/playback/adapters/hls-background-video/adapter.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/adapter.js +50 -70
- package/dist/dev/playback/adapters/hls-background-video/adapter.js.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/host.d.ts +12 -16
- package/dist/dev/playback/adapters/hls-background-video/host.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/host.js +12 -16
- package/dist/dev/playback/adapters/hls-background-video/host.js.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/media.d.ts +5 -8
- package/dist/dev/playback/adapters/hls-background-video/media.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-background-video/media.js +5 -8
- package/dist/dev/playback/adapters/hls-background-video/media.js.map +1 -1
- package/dist/dev/playback/adapters/hls-video/adapter.d.ts +12 -14
- package/dist/dev/playback/adapters/hls-video/adapter.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-video/adapter.js +43 -60
- package/dist/dev/playback/adapters/hls-video/adapter.js.map +1 -1
- package/dist/dev/playback/adapters/hls-video/error-surface.d.ts +4 -5
- package/dist/dev/playback/adapters/hls-video/error-surface.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-video/error-surface.js +13 -18
- package/dist/dev/playback/adapters/hls-video/error-surface.js.map +1 -1
- package/dist/dev/playback/adapters/hls-video/media-tracks.d.ts +4 -5
- package/dist/dev/playback/adapters/hls-video/media-tracks.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-video/media-tracks.js +4 -5
- package/dist/dev/playback/adapters/hls-video/media-tracks.js.map +1 -1
- package/dist/dev/playback/adapters/hls-video/media.d.ts.map +1 -1
- package/dist/dev/playback/adapters/hls-video/media.js.map +1 -1
- package/dist/dev/playback/adapters/mux-audio/media.d.ts +8 -12
- package/dist/dev/playback/adapters/mux-audio/media.d.ts.map +1 -1
- package/dist/dev/playback/adapters/mux-audio/media.js +8 -12
- package/dist/dev/playback/adapters/mux-audio/media.js.map +1 -1
- package/dist/dev/playback/adapters/mux-video/adapter.d.ts +9 -11
- package/dist/dev/playback/adapters/mux-video/adapter.d.ts.map +1 -1
- package/dist/dev/playback/adapters/mux-video/adapter.js +25 -33
- package/dist/dev/playback/adapters/mux-video/adapter.js.map +1 -1
- package/dist/dev/playback/adapters/mux-video/media.d.ts +7 -9
- package/dist/dev/playback/adapters/mux-video/media.d.ts.map +1 -1
- package/dist/dev/playback/adapters/mux-video/media.js +7 -9
- package/dist/dev/playback/adapters/mux-video/media.js.map +1 -1
- package/dist/dev/playback/behaviors/calculate-presentation-duration.d.ts +5 -8
- package/dist/dev/playback/behaviors/calculate-presentation-duration.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/calculate-presentation-duration.js +5 -8
- package/dist/dev/playback/behaviors/calculate-presentation-duration.js.map +1 -1
- package/dist/dev/playback/behaviors/collect-errors.d.ts +2 -0
- package/dist/dev/playback/behaviors/collect-errors.js +39 -52
- package/dist/dev/playback/behaviors/collect-errors.js.map +1 -1
- package/dist/dev/playback/behaviors/derive-cdn-priority.js +16 -23
- package/dist/dev/playback/behaviors/derive-cdn-priority.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/airplay.js +38 -61
- package/dist/dev/playback/behaviors/dom/airplay.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/apply-start-position.js +23 -35
- package/dist/dev/playback/behaviors/dom/apply-start-position.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/end-of-stream.js +11 -16
- package/dist/dev/playback/behaviors/dom/end-of-stream.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/load-segments.d.ts +5 -8
- package/dist/dev/playback/behaviors/dom/load-segments.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/load-segments.js +27 -39
- package/dist/dev/playback/behaviors/dom/load-segments.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/recover-end-stall.js +21 -26
- package/dist/dev/playback/behaviors/dom/recover-end-stall.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/seek-to-live-edge.js +41 -60
- package/dist/dev/playback/behaviors/dom/seek-to-live-edge.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/setup-buffer-actors.js +50 -74
- package/dist/dev/playback/behaviors/dom/setup-buffer-actors.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/setup-mediasource.js +29 -43
- package/dist/dev/playback/behaviors/dom/setup-mediasource.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/setup-text-track-actors.d.ts +3 -3
- package/dist/dev/playback/behaviors/dom/setup-text-track-actors.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/setup-text-track-actors.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/sync-live-seekable-range.js +3 -4
- package/dist/dev/playback/behaviors/dom/sync-live-seekable-range.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/sync-text-tracks.js +30 -45
- package/dist/dev/playback/behaviors/dom/sync-text-tracks.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-current-time.d.ts +2 -2
- package/dist/dev/playback/behaviors/dom/track-current-time.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-current-time.js +9 -11
- package/dist/dev/playback/behaviors/dom/track-current-time.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-load-triggers.d.ts +6 -12
- package/dist/dev/playback/behaviors/dom/track-load-triggers.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-load-triggers.js +24 -32
- package/dist/dev/playback/behaviors/dom/track-load-triggers.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-playback-rate.d.ts +2 -2
- package/dist/dev/playback/behaviors/dom/track-playback-rate.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-playback-rate.js +6 -8
- package/dist/dev/playback/behaviors/dom/track-playback-rate.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-player-resolution.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-player-resolution.js +10 -14
- package/dist/dev/playback/behaviors/dom/track-player-resolution.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/track-screen-resolution.js +8 -9
- package/dist/dev/playback/behaviors/dom/track-screen-resolution.js.map +1 -1
- package/dist/dev/playback/behaviors/dom/update-mediasource-duration.js +28 -43
- package/dist/dev/playback/behaviors/dom/update-mediasource-duration.js.map +1 -1
- package/dist/dev/playback/behaviors/establish-start-media-time.d.ts +15 -19
- package/dist/dev/playback/behaviors/establish-start-media-time.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/establish-start-media-time.js +32 -42
- package/dist/dev/playback/behaviors/establish-start-media-time.js.map +1 -1
- package/dist/dev/playback/behaviors/resolve-presentation.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/resolve-presentation.js +13 -22
- package/dist/dev/playback/behaviors/resolve-presentation.js.map +1 -1
- package/dist/dev/playback/behaviors/resolve-track.js +5 -12
- package/dist/dev/playback/behaviors/resolve-track.js.map +1 -1
- package/dist/dev/playback/behaviors/select-tracks.d.ts +28 -39
- package/dist/dev/playback/behaviors/select-tracks.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/select-tracks.js +77 -104
- package/dist/dev/playback/behaviors/select-tracks.js.map +1 -1
- package/dist/dev/playback/behaviors/setup-failover-monitor.d.ts +1 -4
- package/dist/dev/playback/behaviors/setup-failover-monitor.d.ts.map +1 -1
- package/dist/dev/playback/behaviors/setup-failover-monitor.js +11 -16
- package/dist/dev/playback/behaviors/setup-failover-monitor.js.map +1 -1
- package/dist/dev/playback/behaviors/sync-preload.js +9 -13
- package/dist/dev/playback/behaviors/sync-preload.js.map +1 -1
- package/dist/dev/playback/behaviors/track-switching.d.ts +110 -0
- package/dist/dev/playback/behaviors/track-switching.d.ts.map +1 -0
- package/dist/dev/playback/behaviors/track-switching.js +189 -173
- package/dist/dev/playback/behaviors/track-switching.js.map +1 -1
- package/dist/dev/playback/engines/hls/engine-audio-only.d.ts +59 -72
- package/dist/dev/playback/engines/hls/engine-audio-only.d.ts.map +1 -1
- package/dist/dev/playback/engines/hls/engine-audio-only.js +20 -24
- package/dist/dev/playback/engines/hls/engine-audio-only.js.map +1 -1
- package/dist/dev/playback/engines/hls/engine-background-video.d.ts +51 -78
- package/dist/dev/playback/engines/hls/engine-background-video.d.ts.map +1 -1
- package/dist/dev/playback/engines/hls/engine-background-video.js +22 -27
- package/dist/dev/playback/engines/hls/engine-background-video.js.map +1 -1
- package/dist/dev/playback/engines/hls/engine.d.ts +115 -155
- package/dist/dev/playback/engines/hls/engine.d.ts.map +1 -1
- package/dist/dev/playback/engines/hls/engine.js +22 -25
- package/dist/dev/playback/engines/hls/engine.js.map +1 -1
- package/dist/dev/playback/primitives/derive-start-media-time.d.ts +3 -3
- package/dist/dev/playback/primitives/derive-start-media-time.d.ts.map +1 -1
- package/dist/dev/playback/primitives/error-messages.js +16 -25
- package/dist/dev/playback/primitives/error-messages.js.map +1 -1
- package/dist/dev/playback/primitives/failover-fetch.js +9 -14
- package/dist/dev/playback/primitives/failover-fetch.js.map +1 -1
- package/dist/dev/playback/primitives/head-peek.js +7 -10
- package/dist/dev/playback/primitives/head-peek.js.map +1 -1
- package/dist/dev/playback/primitives/live-window.js +12 -15
- package/dist/dev/playback/primitives/live-window.js.map +1 -1
- package/dist/dev/playback/primitives/relocation-pipelines.js +34 -46
- package/dist/dev/playback/primitives/relocation-pipelines.js.map +1 -1
- package/dist/dev/playback/primitives/report-track-conditions.d.ts +1 -4
- package/dist/dev/playback/primitives/report-track-conditions.d.ts.map +1 -1
- package/dist/dev/playback/primitives/report-track-conditions.js +26 -38
- package/dist/dev/playback/primitives/report-track-conditions.js.map +1 -1
- package/dist/dev/playback/primitives/segment-load-pipeline.js +15 -15
- package/dist/dev/playback/primitives/segment-load-pipeline.js.map +1 -1
- package/dist/dev/playback/primitives/selection-rules.d.ts +45 -17
- package/dist/dev/playback/primitives/selection-rules.d.ts.map +1 -1
- package/dist/dev/playback/primitives/selection-rules.js +65 -36
- package/dist/dev/playback/primitives/selection-rules.js.map +1 -1
- package/dist/dev/playback/primitives/source-buffer-messages.d.ts +6 -9
- package/dist/dev/playback/primitives/source-buffer-messages.d.ts.map +1 -1
- package/dist/dev/playback/primitives/text-segment-load-pipeline.d.ts +20 -29
- package/dist/dev/playback/primitives/text-segment-load-pipeline.d.ts.map +1 -1
- package/dist/dev/playback/primitives/text-segment-load-pipeline.js +4 -5
- package/dist/dev/playback/primitives/text-segment-load-pipeline.js.map +1 -1
- package/dist/dev/playback/primitives/text-track-messages.d.ts.map +1 -1
- package/dist/dev/playback/primitives/track-types.js +10 -18
- package/dist/dev/playback/primitives/track-types.js.map +1 -1
- package/package.json +25 -28
|
@@ -26,14 +26,13 @@ import { PlayerResolution } from "../../behaviors/dom/track-player-resolution.js
|
|
|
26
26
|
/**
|
|
27
27
|
* State shape for the HLS playback engine.
|
|
28
28
|
*
|
|
29
|
-
* This is the union of all state required by the behaviors composed into
|
|
30
|
-
*
|
|
31
|
-
* type satisfies all of them.
|
|
29
|
+
* This is the union of all state required by the behaviors composed into the HLS engine. Each behavior declares its own
|
|
30
|
+
* state interface; this type satisfies all of them.
|
|
32
31
|
*/
|
|
33
32
|
interface HlsVideoEngineState {
|
|
34
33
|
/**
|
|
35
|
-
* The presentation being played. A caller writes `{ url }`;
|
|
36
|
-
*
|
|
34
|
+
* The presentation being played. A caller writes `{ url }`; `resolvePresentation` parses the manifest and populates
|
|
35
|
+
* the rest.
|
|
37
36
|
*/
|
|
38
37
|
presentation?: MaybeResolvedPresentation;
|
|
39
38
|
preload?: 'auto' | 'metadata' | 'none';
|
|
@@ -44,80 +43,63 @@ interface HlsVideoEngineState {
|
|
|
44
43
|
mediaContainerData?: Record<string, MediaContainerData>;
|
|
45
44
|
userVideoTrackSelection?: Partial<VideoTrack>;
|
|
46
45
|
/**
|
|
47
|
-
* Consumer-driven constraint narrowing the audio candidate set. Sibling
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* when it changes. Multi-language-audio Tier 2 programmatic-write path.
|
|
46
|
+
* Consumer-driven constraint narrowing the audio candidate set. Sibling of `userVideoTrackSelection`. Partial-track
|
|
47
|
+
* shape — `{ language: 'es' }`, `{ id: 'audio-en' }`, etc. `selectAudioTrack` reads this and re-picks when it
|
|
48
|
+
* changes. Multi-language-audio Tier 2 programmatic-write path.
|
|
51
49
|
*/
|
|
52
50
|
userAudioTrackSelection?: Partial<AudioTrack>;
|
|
53
51
|
/**
|
|
54
|
-
* Consumer-driven
|
|
55
|
-
* `
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
* Also the write path for the DOM caption UI (via `syncTextTracks`); unlike the
|
|
59
|
-
* resolved id it persists across source changes (sticky preference).
|
|
52
|
+
* Consumer-driven _intent_ for text selection, resolved into `selectedTextTrackId` by `switchTextTrack`. A
|
|
53
|
+
* language-based partial (`{ language: 'es' }`) selects captions, `'off'` disables them, and absence means auto (the
|
|
54
|
+
* engine's `preferredSubtitleLanguage` / DEFAULT-track policy). Also the write path for the DOM caption UI (via
|
|
55
|
+
* `syncTextTracks`); unlike the resolved id it persists across source changes (sticky preference).
|
|
60
56
|
*/
|
|
61
57
|
userTextTrackSelection?: Partial<TextTrack> | 'off';
|
|
62
58
|
/**
|
|
63
|
-
* The CDNs the source is served from (track-URL origins), in manifest
|
|
64
|
-
*
|
|
65
|
-
* `
|
|
66
|
-
*
|
|
67
|
-
* highest-priority CDN with surviving tracks so video / audio / text stay on
|
|
68
|
-
* one host. Only meaningful for redundant-stream sources; a single-CDN source
|
|
69
|
-
* has one entry.
|
|
59
|
+
* The CDNs the source is served from (track-URL origins), in manifest priority order — most-preferred first (mirrors
|
|
60
|
+
* HLS content steering's `PATHWAY-PRIORITY`). Owned by `deriveCdnPriority`, read by `track-switching`'s
|
|
61
|
+
* `preferActiveCdn` scope, which narrows to the highest-priority CDN with surviving tracks so video / audio / text
|
|
62
|
+
* stay on one host. Only meaningful for redundant-stream sources; a single-CDN source has one entry.
|
|
70
63
|
*/
|
|
71
64
|
cdnPriority?: string[];
|
|
72
65
|
/**
|
|
73
|
-
* CDN ids (origins) currently in failover cooldown — written by the CDN
|
|
74
|
-
*
|
|
75
|
-
* `
|
|
76
|
-
* active-CDN scope falls to the next CDN in `cdnPriority`. Empty / absent
|
|
77
|
-
* means all CDNs are eligible.
|
|
66
|
+
* CDN ids (origins) currently in failover cooldown — written by the CDN monitor when a host fails too often, read by
|
|
67
|
+
* `track-switching`'s `excludeFailedCdns` hard constraint, which prunes their tracks so the active-CDN scope falls to
|
|
68
|
+
* the next CDN in `cdnPriority`. Empty / absent means all CDNs are eligible.
|
|
78
69
|
*/
|
|
79
70
|
failedCdns?: string[];
|
|
80
71
|
/**
|
|
81
|
-
* Conditions reported during playback, in the order encountered — appended by
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* above the engine, at the adapter. See
|
|
85
|
-
* `internal/design/spf/features/errors.md`.
|
|
72
|
+
* Conditions reported during playback, in the order encountered — appended by whichever behavior detects one
|
|
73
|
+
* (`emitError`), owned and cleared per source by `collectErrors`. Carries no severity: which of these is fatal is
|
|
74
|
+
* decided above the engine, at the adapter. See `internal/design/spf/features/errors.md`.
|
|
86
75
|
*/
|
|
87
76
|
errors?: SvtaError[];
|
|
88
77
|
currentTime?: number;
|
|
89
78
|
/**
|
|
90
|
-
* The player element's rendered pixel dimensions, or `undefined` where there
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
* "don't cap".
|
|
79
|
+
* The player element's rendered pixel dimensions, or `undefined` where there is nothing to measure. Written by
|
|
80
|
+
* `trackPlayerResolution`, read by the `playerResolutionCap` selection rule — which treats `undefined` as "don't
|
|
81
|
+
* cap".
|
|
94
82
|
*/
|
|
95
83
|
playerResolution?: PlayerResolution;
|
|
96
84
|
loadActivated?: boolean;
|
|
97
85
|
/**
|
|
98
|
-
* One-shot command: start the current source at this position
|
|
99
|
-
*
|
|
100
|
-
* `setupAirPlay`'s session-end snapshot; consumed (cleared) by
|
|
101
|
-
* `applyStartPosition` once the element seeks. See
|
|
86
|
+
* One-shot command: start the current source at this position (presentation-timeline seconds). Written by consumers
|
|
87
|
+
* or by `setupAirPlay`'s session-end snapshot; consumed (cleared) by `applyStartPosition` once the element seeks. See
|
|
102
88
|
* `behaviors/dom/apply-start-position.ts`.
|
|
103
89
|
*/
|
|
104
90
|
startPosition?: number;
|
|
105
91
|
/**
|
|
106
|
-
* Intent-level loading policy: initiate no new loading work while `true`.
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* `loadXSegments` dispatchers (park in `'dormant'`) and by
|
|
110
|
-
* `setupMediaSource` (a pending rebuild waits). See
|
|
92
|
+
* Intent-level loading policy: initiate no new loading work while `true`. Written by `setupAirPlay` (the only
|
|
93
|
+
* behavior declaring the key) while a remote-playback session owns presentation; observed by the `loadXSegments`
|
|
94
|
+
* dispatchers (park in `'dormant'`) and by `setupMediaSource` (a pending rebuild waits). See
|
|
111
95
|
* `SegmentLoadingState['loadingSuspended']`.
|
|
112
96
|
*/
|
|
113
97
|
loadingSuspended?: boolean;
|
|
114
98
|
/**
|
|
115
|
-
* Author intent for the AirPlay/remote-playback picker, written by the media
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
119
|
-
* `<video>.disableRemotePlayback`, which stays programmatically managed
|
|
120
|
-
* (ManagedMediaSource / AirPlay).
|
|
99
|
+
* Author intent for the AirPlay/remote-playback picker, written by the media adapter's `disableRemotePlayback` IDL
|
|
100
|
+
* property. `true` is an explicit opt-out: `setupAirPlay` reads it at attach and sets nothing up, leaving the
|
|
101
|
+
* element's remote playback disabled. Distinct from the underlying `<video>.disableRemotePlayback`, which stays
|
|
102
|
+
* programmatically managed (ManagedMediaSource / AirPlay).
|
|
121
103
|
*/
|
|
122
104
|
disableRemotePlayback?: boolean;
|
|
123
105
|
}
|
|
@@ -137,10 +119,8 @@ interface HlsVideoEngineContext {
|
|
|
137
119
|
textTrackSegmentLoaderActor?: TextTrackSegmentLoaderActor;
|
|
138
120
|
}
|
|
139
121
|
/**
|
|
140
|
-
* The composition signal refs handed to `onSignalsReady` callers — the
|
|
141
|
-
*
|
|
142
|
-
* state (reads) without touching `composition.state` / `composition.context`
|
|
143
|
-
* directly.
|
|
122
|
+
* The composition signal refs handed to `onSignalsReady` callers — the canonical way to drive the engine externally
|
|
123
|
+
* (writes) or observe its state (reads) without touching `composition.state` / `composition.context` directly.
|
|
144
124
|
*/
|
|
145
125
|
type HlsVideoEngineSignals = {
|
|
146
126
|
state: StateSignals<HlsVideoEngineState>;
|
|
@@ -149,29 +129,34 @@ type HlsVideoEngineSignals = {
|
|
|
149
129
|
/**
|
|
150
130
|
* Configuration for the HLS playback engine.
|
|
151
131
|
*
|
|
152
|
-
* Each option is consumed by the appropriate behavior — the engine itself
|
|
153
|
-
* has no config beyond what its behaviors read.
|
|
132
|
+
* Each option is consumed by the appropriate behavior — the engine itself has no config beyond what its behaviors read.
|
|
154
133
|
*/
|
|
155
134
|
interface HlsVideoEngineConfig extends ShareSignalsConfig<HlsVideoEngineState, HlsVideoEngineContext> {
|
|
156
135
|
/**
|
|
157
|
-
* Bandwidth estimate in bps to use before enough samples have been
|
|
158
|
-
*
|
|
136
|
+
* Bandwidth estimate in bps to use before enough samples have been collected. Default: `DEFAULT_INITIAL_BANDWIDTH` (5
|
|
137
|
+
* Mbps).
|
|
159
138
|
*/
|
|
160
139
|
initialBandwidth?: number;
|
|
161
140
|
/**
|
|
162
|
-
* Codec capability probe injected into `track-switching`'s
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
* -backed `canPlayTrack`; supply your own to override (e.g. force-exclude a
|
|
166
|
-
* codec).
|
|
141
|
+
* Codec capability probe injected into `track-switching`'s `excludeUnplayableTracks` constraint — drops renditions
|
|
142
|
+
* the environment can't decode before selection. Defaults to the `MediaSource.isTypeSupported` -backed
|
|
143
|
+
* `canPlayTrack`; supply your own to override (e.g. force-exclude a codec).
|
|
167
144
|
*/
|
|
168
145
|
canPlayTrack?: CanPlayTrack;
|
|
169
146
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
147
|
+
* Codec families (RFC 6381 4CCs, e.g. `'avc1'` / `'hvc1'` / `'mp4a'`) the initial video/audio picks prefer on a
|
|
148
|
+
* mixed-codec source, read by the `preferCodecFamilies` selection scope. SPF implements no
|
|
149
|
+
* `SourceBuffer.changeType()`, so the initial pick's codec family is sticky for the source's lifetime
|
|
150
|
+
* (`stickToSelectedCodecs`); this decides which family that is. Soft — a source with no preferred-family rendition is
|
|
151
|
+
* unaffected. Defaults to `DEFAULT_PREFERRED_CODECS` (AVC + AAC, the broadest-decode pair); pass `[]` to disable and
|
|
152
|
+
* let ABR pick the initial family (it then still can't leave it mid-stream).
|
|
153
|
+
*/
|
|
154
|
+
preferredCodecs?: string[];
|
|
155
|
+
/**
|
|
156
|
+
* Conditions reported about each rendition as it resolves — the _causes_ behind a later verdict, and the copy a
|
|
157
|
+
* verdict reuses when they agree. Defaults to {@link reportUnsupportedTrackConditions}, which reports non-fMP4
|
|
158
|
+
* containers and encryption; supply your own to report a different set (a provider that never ships MPEG-TS can drop
|
|
159
|
+
* that check) or `() => []` to report nothing.
|
|
175
160
|
*/
|
|
176
161
|
reportUnsupportedTrackConditions?: ReportUnsupportedTrackConditions;
|
|
177
162
|
preferredAudioLanguage?: string;
|
|
@@ -179,149 +164,124 @@ interface HlsVideoEngineConfig extends ShareSignalsConfig<HlsVideoEngineState, H
|
|
|
179
164
|
includeForcedTracks?: boolean;
|
|
180
165
|
enableDefaultTrack?: boolean;
|
|
181
166
|
/**
|
|
182
|
-
* Resolver that turns a text-track segment fetch into VTT cues.
|
|
183
|
-
*
|
|
184
|
-
* offscreen `<track>` element to parse WebVTT.
|
|
167
|
+
* Resolver that turns a text-track segment fetch into VTT cues. Defaults to the DOM-bound `resolveVttSegment`
|
|
168
|
+
* resolver, which uses an offscreen `<track>` element to parse WebVTT.
|
|
185
169
|
*/
|
|
186
170
|
resolveTextTrackSegment?: TextTrackSegmentResolver<VTTCue>;
|
|
187
171
|
/**
|
|
188
|
-
* Resolver for `presentation.duration`. Defaults to picking the first
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* is established as live; downstream `updateMediaSourceDuration` propagates
|
|
193
|
-
* that value to `mediaSource.duration` per the MSE spec.
|
|
172
|
+
* Resolver for `presentation.duration`. Defaults to picking the first resolved selected track's duration (video
|
|
173
|
+
* preferred, audio fallback) — appropriate for VoD and audio-only. Live engines should supply a resolver that returns
|
|
174
|
+
* `Number.POSITIVE_INFINITY` once the presentation is established as live; downstream `updateMediaSourceDuration`
|
|
175
|
+
* propagates that value to `mediaSource.duration` per the MSE spec.
|
|
194
176
|
*/
|
|
195
177
|
resolveDuration?: PresentationDurationResolver;
|
|
196
178
|
/**
|
|
197
|
-
* Manifest parser handed to `resolvePresentation`. Defaults to the HLS
|
|
198
|
-
*
|
|
199
|
-
* support without forking the engine.
|
|
179
|
+
* Manifest parser handed to `resolvePresentation`. Defaults to the HLS multivariant-playlist parser; supply your own
|
|
180
|
+
* for alternate format support without forking the engine.
|
|
200
181
|
*/
|
|
201
182
|
parsePresentation?: ParsePresentation;
|
|
202
183
|
/**
|
|
203
|
-
* Allocate SPF-owned text-track slots on the media element. Defaults to
|
|
204
|
-
*
|
|
205
|
-
* `media/dom/text/text-track-slots`.
|
|
184
|
+
* Allocate SPF-owned text-track slots on the media element. Defaults to the standard `<track>`-element implementation
|
|
185
|
+
* in `media/dom/text/text-track-slots`.
|
|
206
186
|
*/
|
|
207
187
|
addSubtitlesTracksToMedia?: typeof addSubtitlesTracksToMedia;
|
|
208
188
|
/**
|
|
209
|
-
* Return the SPF-owned subtitle/caption `TextTrack` currently in showing
|
|
210
|
-
*
|
|
211
|
-
* `media/dom/text/text-track-slots`.
|
|
189
|
+
* Return the SPF-owned subtitle/caption `TextTrack` currently in showing mode. Defaults to the standard
|
|
190
|
+
* selector-based implementation in `media/dom/text/text-track-slots`.
|
|
212
191
|
*/
|
|
213
192
|
getShowingSubtitlesTrackFromMedia?: typeof getShowingSubtitlesTrackFromMedia;
|
|
214
193
|
/**
|
|
215
|
-
* Evict all SPF-owned text-track slots from the media element. Defaults to
|
|
216
|
-
*
|
|
217
|
-
* `media/dom/text/text-track-slots`.
|
|
194
|
+
* Evict all SPF-owned text-track slots from the media element. Defaults to the standard selector-based implementation
|
|
195
|
+
* in `media/dom/text/text-track-slots`.
|
|
218
196
|
*/
|
|
219
197
|
removeAllSubtitlesTracksFromMedia?: typeof removeAllSubtitlesTracksFromMedia;
|
|
220
198
|
/**
|
|
221
|
-
* Forward-buffer tuning. `bufferDuration` controls how far ahead of the
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
* segment-loader actors (v/a + text) at construction time and to
|
|
225
|
-
* `loadXSegments` dispatchers for the load-message range.
|
|
199
|
+
* Forward-buffer tuning. `bufferDuration` controls how far ahead of the playhead segments are loaded (and where
|
|
200
|
+
* forward-flush kicks in). Defaults: see `DEFAULT_FORWARD_BUFFER_CONFIG` (30 seconds). Threaded to segment-loader
|
|
201
|
+
* actors (v/a + text) at construction time and to `loadXSegments` dispatchers for the load-message range.
|
|
226
202
|
*/
|
|
227
203
|
forwardBuffer?: Partial<ForwardBufferConfig>;
|
|
228
204
|
/**
|
|
229
|
-
* Back-buffer tuning. `keepSegments` controls how many segments stay
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
* segment-loader actor only (text tracks don't use back-buffer eviction).
|
|
205
|
+
* Back-buffer tuning. `keepSegments` controls how many segments stay behind the playhead before eviction. Defaults:
|
|
206
|
+
* see `DEFAULT_BACK_BUFFER_CONFIG` (2 segments). Threaded to the v/a segment-loader actor only (text tracks don't use
|
|
207
|
+
* back-buffer eviction).
|
|
233
208
|
*/
|
|
234
209
|
backBuffer?: Partial<BackBufferConfig>;
|
|
235
210
|
/**
|
|
236
|
-
* Bandwidth-estimator tuning. Overrides any field of `BandwidthConfig`
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
* `minTotalBytes` field above. Defaults: see `DEFAULT_BANDWIDTH_CONFIG`.
|
|
211
|
+
* Bandwidth-estimator tuning. Overrides any field of `BandwidthConfig` (`fastHalfLife`, `slowHalfLife`,
|
|
212
|
+
* `minTotalBytes`, `minBytes`, `minDuration`). `bandwidth.minTotalBytes` supersedes the flat `minTotalBytes` field
|
|
213
|
+
* above. Defaults: see `DEFAULT_BANDWIDTH_CONFIG`.
|
|
240
214
|
*/
|
|
241
215
|
bandwidth?: Partial<BandwidthConfig>;
|
|
242
216
|
/**
|
|
243
|
-
* Quality-selection tuning. `safetyMargin` is the bandwidth-headroom
|
|
244
|
-
*
|
|
245
|
-
* ratio gating ABR upgrades. Defaults: `DEFAULT_QUALITY_CONFIG` (0.85 / 1.15).
|
|
217
|
+
* Quality-selection tuning. `safetyMargin` is the bandwidth-headroom multiplier used by `selectQuality`;
|
|
218
|
+
* `upgradeMargin` is the hysteresis ratio gating ABR upgrades. Defaults: `DEFAULT_QUALITY_CONFIG` (0.85 / 1.15).
|
|
246
219
|
*/
|
|
247
220
|
quality?: Partial<QualityConfig>;
|
|
248
221
|
/**
|
|
249
|
-
* Whether video renditions are capped to the player element's rendered size.
|
|
250
|
-
*
|
|
251
|
-
* `playerResolutionCap` rule inert. Defaults to `true`.
|
|
222
|
+
* Whether video renditions are capped to the player element's rendered size. Read by `trackPlayerResolution`; `false`
|
|
223
|
+
* measures nothing, which leaves the `playerResolutionCap` rule inert. Defaults to `true`.
|
|
252
224
|
*/
|
|
253
225
|
capRenditionToPlayerSize?: boolean;
|
|
254
|
-
/**
|
|
255
|
-
* Whether `state.playerResolution` is reported in device pixels. Read by
|
|
256
|
-
* `trackPlayerResolution`; defaults to `true`.
|
|
257
|
-
*/
|
|
226
|
+
/** Whether `state.playerResolution` is reported in device pixels. Read by `trackPlayerResolution`; defaults to `true`. */
|
|
258
227
|
useDevicePixelRatio?: boolean;
|
|
259
228
|
/**
|
|
260
|
-
* Multi-CDN failover monitor tuning. `cooldownMs` is how long a CDN stays
|
|
261
|
-
*
|
|
262
|
-
* `DEFAULT_FAILOVER_MONITOR_CONFIG` (300s). Only meaningful for redundant-stream
|
|
263
|
-
* sources.
|
|
229
|
+
* Multi-CDN failover monitor tuning. `cooldownMs` is how long a CDN stays excluded after a failed fetch trips it.
|
|
230
|
+
* Defaults: `DEFAULT_FAILOVER_MONITOR_CONFIG` (300s). Only meaningful for redundant-stream sources.
|
|
264
231
|
*/
|
|
265
232
|
failover?: Partial<FailoverMonitorConfig>;
|
|
266
233
|
/**
|
|
267
|
-
* How to derive a CDN grouping key from a track URL — used to build
|
|
268
|
-
* `
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
* key on something else (e.g. Mux's `cdn=` query param).
|
|
234
|
+
* How to derive a CDN grouping key from a track URL — used to build `cdnPriority`, to record the failover trip in
|
|
235
|
+
* `failedCdns`, and by the track-switching CDN scope + failover constraint. One function, read by all of them, so the
|
|
236
|
+
* keys stay comparable. Defaults to the URL origin; override to key on something else (e.g. Mux's `cdn=` query
|
|
237
|
+
* param).
|
|
272
238
|
*/
|
|
273
239
|
getCdnId?: GetCdnId;
|
|
274
240
|
/**
|
|
275
|
-
* Non-zero-PTS relocation (spike): the reduce seam consumed by the
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
* needs setting to swap the tier policy. See
|
|
280
|
-
* `internal/design/spf/presentation-timeline-model.md`.
|
|
241
|
+
* Non-zero-PTS relocation (spike): the reduce seam consumed by the `establishStartMediaTime` reactor. Defaults to
|
|
242
|
+
* per-track own origin (Tier 1); a Tier-2 variant returns the shared `min` across selected A/V. Relocation is
|
|
243
|
+
* composed into the standard engine below — see the marked block — so this only needs setting to swap the tier
|
|
244
|
+
* policy. See `internal/design/spf/presentation-timeline-model.md`.
|
|
281
245
|
*/
|
|
282
246
|
deriveStartMediaTime?: DeriveStartMediaTime;
|
|
283
247
|
/**
|
|
284
|
-
* Proximity window (seconds) for the `recoverEndStall` behavior — how close the
|
|
285
|
-
*
|
|
286
|
-
* end-
|
|
287
|
-
* `behaviors/dom/recover-end-stall`.
|
|
248
|
+
* Proximity window (seconds) for the `recoverEndStall` behavior — how close the playhead must be to the reachable
|
|
249
|
+
* buffered end for a `waiting` to be treated as the end-of-stream freeze and nudged to `ended`. Defaults to `0.2`.
|
|
250
|
+
* See `behaviors/dom/recover-end-stall`.
|
|
288
251
|
*/
|
|
289
252
|
endStallNudgeWindow?: number;
|
|
290
253
|
/**
|
|
291
|
-
* Live media-playlist re-run policy for the resolve* loaders' `RecurringRunner`:
|
|
292
|
-
*
|
|
293
|
-
* stop
|
|
294
|
-
*
|
|
295
|
-
* `sleep`. Inert for VoD (a complete playlist stops it after the first resolve).
|
|
296
|
-
* Override to tune live reload timing.
|
|
254
|
+
* Live media-playlist re-run policy for the resolve* loaders' `RecurringRunner`: returns a promise that resolves when
|
|
255
|
+
* the playlist should reload, or `null` to stop. Defaults to `mediaPlaylistReloadDelay` (target-duration cadence,
|
|
256
|
+
* half on an unchanged window, stop on `#EXT-X-ENDLIST`) composed with a cancellable `sleep`. Inert for VoD (a
|
|
257
|
+
* complete playlist stops it after the first resolve). Override to tune live reload timing.
|
|
297
258
|
*/
|
|
298
259
|
reschedule?: Reschedule<ResolvedTrack>;
|
|
299
260
|
}
|
|
300
261
|
/**
|
|
301
262
|
* Create an HLS playback engine.
|
|
302
263
|
*
|
|
303
|
-
* Composes SPF behaviors into a reactive pipeline for HLS playback over MSE:
|
|
304
|
-
*
|
|
305
|
-
* end-of-stream coordination.
|
|
264
|
+
* Composes SPF behaviors into a reactive pipeline for HLS playback over MSE: manifest resolution, track selection, ABR,
|
|
265
|
+
* segment loading, and end-of-stream coordination.
|
|
306
266
|
*
|
|
307
267
|
* @example
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
314
|
-
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
268
|
+
* ```ts
|
|
269
|
+
* let signals: HlsVideoEngineSignals;
|
|
270
|
+
* const engine = createHlsVideoEngine({
|
|
271
|
+
* initialBandwidth: 2_000_000,
|
|
272
|
+
* preferredAudioLanguage: 'en',
|
|
273
|
+
* onSignalsReady: (refs) => {
|
|
274
|
+
* signals = refs;
|
|
275
|
+
* },
|
|
276
|
+
* });
|
|
317
277
|
*
|
|
318
|
-
*
|
|
319
|
-
*
|
|
278
|
+
* signals.context.mediaElement.set(videoEl);
|
|
279
|
+
* signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
|
|
320
280
|
*
|
|
321
|
-
*
|
|
281
|
+
* videoEl.play();
|
|
322
282
|
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
283
|
+
* await engine.destroy();
|
|
284
|
+
* ```;
|
|
325
285
|
*/
|
|
326
286
|
declare function createHlsVideoEngine(config?: HlsVideoEngineConfig): Composition<HlsVideoEngineState, HlsVideoEngineContext>;
|
|
327
287
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","names":[],"sources":["../../../../../src/playback/engines/hls/engine.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"engine.d.ts","names":[],"sources":["../../../../../src/playback/engines/hls/engine.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4FiB;;;;;EAKf,eAAe;EACf;EACA;EACA;EACA;EACA,iBAAiB;EAGjB,qBAAqB,eAAe;EACpC,0BAA0B,QAAQ;;;;;;EAMlC,0BAA0B,QAAQ;;;;;;;EAOlC,yBAAyB,QAAQ;;;;;;;EAOjC;;;;;;EAMA;;;;;;EAMA,SAAS;EACT;;;;;;EAMA,mBAAmB;EACnB;;;;;;EAMA;;;;;;;EAOA;;;;;;;EAOA;;;;;;;UAQe;EACf,eAAe;EACf,cAAc;EACd,mBAAmB;EACnB,mBAAmB;EACnB,0BAA0B;EAC1B,0BAA0B;EAC1B,kBAAkB;EAClB,8BAA8B;;;;;;KAOpB;EACV,OAAO,aAAa;EACpB,SAAS,eAAe;;;;;;;UAQT,6BAA6B,mBAAmB,qBAAqB;;;;;EAKpF;;;;;;EAMA,eAAe;;;;;;;;;EASf;;;;;;;EAOA,mCAAmC;EACnC;EACA;EACA;EACA;;;;;EAKA,0BAA0B,yBAAyB;;;;;;;EAOnD,kBAAkB;;;;;EAKlB,oBAAoB;;;;;EAKpB,mCAAmC;;;;;EAKnC,2CAA2C;;;;;EAK3C,2CAA2C;;;;;;EAM3C,gBAAgB,QAAQ;;;;;;EAMxB,aAAa,QAAQ;;;;;;EAMrB,YAAY,QAAQ;;;;;EAKpB,UAAU,QAAQ;;;;;EAKlB;;EAEA;;;;;EAKA,WAAW,QAAQ;;;;;;;EAOnB,WAAW;;;;;;;EAOX,uBAAuB;;;;;;EAMvB;;;;;;;EAOA,aAAa,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA8CV,qBACd,SAAQ,uBACP,YAAY,qBAAqB"}
|
|
@@ -6,6 +6,8 @@ import { setupTextTrackActors } from "../../behaviors/dom/setup-text-track-actor
|
|
|
6
6
|
import { trackCurrentTime } from "../../behaviors/dom/track-current-time.js";
|
|
7
7
|
import { trackLoadTriggers } from "../../behaviors/dom/track-load-triggers.js";
|
|
8
8
|
import { deriveSharedMinStartMediaTime, establishStartMediaTime, gateFirstParseOnAnchor } from "../../behaviors/establish-start-media-time.js";
|
|
9
|
+
import { collectErrors } from "../../behaviors/collect-errors.js";
|
|
10
|
+
import { switchAudioTrack, switchTextTrack, switchVideoTrack } from "../../behaviors/track-switching.js";
|
|
9
11
|
import { delayedReschedule } from "../../../core/tasks/delayed-reschedule.js";
|
|
10
12
|
import { attachMediaSourceAsSourceElement } from "../../../media/dom/mse/mediasource-setup.js";
|
|
11
13
|
import { canPlayTrack } from "../../../media/dom/capabilities.js";
|
|
@@ -14,7 +16,6 @@ import { parseMultivariantPlaylist } from "../../../media/hls/parse-multivariant
|
|
|
14
16
|
import { mediaPlaylistReloadDelay, resolveLiveLatency } from "../../../media/hls/reload-policy.js";
|
|
15
17
|
import { getResolvedSelectedTrackDuration } from "../../../media/utils/track-selection.js";
|
|
16
18
|
import { calculatePresentationDuration } from "../../behaviors/calculate-presentation-duration.js";
|
|
17
|
-
import { collectErrors } from "../../behaviors/collect-errors.js";
|
|
18
19
|
import { deriveCdnPriority } from "../../behaviors/derive-cdn-priority.js";
|
|
19
20
|
import { setupAirPlay } from "../../behaviors/dom/airplay.js";
|
|
20
21
|
import { applyStartPosition } from "../../behaviors/dom/apply-start-position.js";
|
|
@@ -31,17 +32,14 @@ import { resolvePresentation } from "../../behaviors/resolve-presentation.js";
|
|
|
31
32
|
import { resolveAudioTrack, resolveTextTrack, resolveVideoTrack } from "../../behaviors/resolve-track.js";
|
|
32
33
|
import { setupFailoverMonitor } from "../../behaviors/setup-failover-monitor.js";
|
|
33
34
|
import { syncPreload } from "../../behaviors/sync-preload.js";
|
|
34
|
-
import { switchAudioTrack, switchTextTrack, switchVideoTrack } from "../../behaviors/track-switching.js";
|
|
35
35
|
import { relocatingTextPipelines, relocationPipelinesFor } from "../../primitives/relocation-pipelines.js";
|
|
36
36
|
import { reportUnsupportedTrackConditions } from "../../primitives/report-track-conditions.js";
|
|
37
37
|
//#region src/playback/engines/hls/engine.ts
|
|
38
38
|
/**
|
|
39
|
-
* Generic `shareSignals` instantiated against the HLS engine's full state
|
|
40
|
-
*
|
|
41
|
-
* `
|
|
42
|
-
*
|
|
43
|
-
* them). `failedCdns` is owned by `setupFailoverMonitor`, so it's already
|
|
44
|
-
* materialized and reachable on the `onSignalsReady` refs without being listed
|
|
39
|
+
* Generic `shareSignals` instantiated against the HLS engine's full state and context — captures composition signal
|
|
40
|
+
* refs into the consumer's `onSignalsReady` callback at setup time, and materializes input slots that no composed
|
|
41
|
+
* behavior produces: `user*TrackSelection` (track-switching only reads them). `failedCdns` is owned by
|
|
42
|
+
* `setupFailoverMonitor`, so it's already materialized and reachable on the `onSignalsReady` refs without being listed
|
|
45
43
|
* here.
|
|
46
44
|
*/
|
|
47
45
|
const shareSignals = makeShareSignals([
|
|
@@ -53,28 +51,27 @@ const shareSignals = makeShareSignals([
|
|
|
53
51
|
/**
|
|
54
52
|
* Create an HLS playback engine.
|
|
55
53
|
*
|
|
56
|
-
* Composes SPF behaviors into a reactive pipeline for HLS playback over MSE:
|
|
57
|
-
*
|
|
58
|
-
* end-of-stream coordination.
|
|
54
|
+
* Composes SPF behaviors into a reactive pipeline for HLS playback over MSE: manifest resolution, track selection, ABR,
|
|
55
|
+
* segment loading, and end-of-stream coordination.
|
|
59
56
|
*
|
|
60
57
|
* @example
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
58
|
+
* ```ts
|
|
59
|
+
* let signals: HlsVideoEngineSignals;
|
|
60
|
+
* const engine = createHlsVideoEngine({
|
|
61
|
+
* initialBandwidth: 2_000_000,
|
|
62
|
+
* preferredAudioLanguage: 'en',
|
|
63
|
+
* onSignalsReady: (refs) => {
|
|
64
|
+
* signals = refs;
|
|
65
|
+
* },
|
|
66
|
+
* });
|
|
70
67
|
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
68
|
+
* signals.context.mediaElement.set(videoEl);
|
|
69
|
+
* signals.state.presentation.set({ url: 'https://example.com/stream.m3u8' });
|
|
73
70
|
*
|
|
74
|
-
*
|
|
71
|
+
* videoEl.play();
|
|
75
72
|
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
73
|
+
* await engine.destroy();
|
|
74
|
+
* ```;
|
|
78
75
|
*/
|
|
79
76
|
function createHlsVideoEngine(config = {}) {
|
|
80
77
|
const deriveStartMediaTime = config.deriveStartMediaTime ?? deriveSharedMinStartMediaTime;
|