@bitmovin/player-web-x 10.2.0-beta.13 → 10.2.0-beta.15
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/bundles/playerx-bitmovin-v8-core.js +2 -2
- package/bundles/playerx-bitmovin-v8.js +2 -2
- package/bundles/playerx-core.js +2 -2
- package/bundles/playerx-dash.js +2 -2
- package/bundles/playerx-hls-ts-audio.js +2 -2
- package/bundles/playerx-hls.js +2 -2
- package/bundles/playerx-playback.js +2 -2
- package/bundles/playerx-tv.js +2 -2
- package/package.json +1 -1
- package/packages/playerx-adaptation.package.js +2 -2
- package/packages/playerx-advertising-api.package.js +2 -2
- package/packages/playerx-advertising-base.package.js +2 -2
- package/packages/playerx-advertising-bitmovin.package.js +2 -2
- package/packages/playerx-analytics.package.js +1 -1
- package/packages/playerx-bitmovin-advertising-bundle.package.js +2 -2
- package/packages/playerx-bitmovin-source-api.package.js +2 -2
- package/packages/playerx-bitmovin-ui.package.js +2 -2
- package/packages/playerx-bitmovin-v8-core.package.js +2 -2
- package/packages/playerx-bitmovin-v8-static-api.package.js +2 -2
- package/packages/playerx-bitmovin-video-element-utils.package.js +2 -2
- package/packages/playerx-capabilities.package.js +2 -2
- package/packages/playerx-container-mp4.package.js +2 -2
- package/packages/playerx-container-ts.package.js +2 -2
- package/packages/playerx-core.package.js +2 -2
- package/packages/playerx-dash-manifest-technology.package.js +2 -2
- package/packages/playerx-dash-manifest.package.js +2 -2
- package/packages/playerx-dash-parsing.package.js +2 -2
- package/packages/playerx-dash-translation.package.js +2 -2
- package/packages/playerx-dash.package.js +2 -2
- package/packages/playerx-data.package.js +2 -2
- package/packages/playerx-event-bus.package.js +1 -1
- package/packages/playerx-hls-manifest-technology.package.js +2 -2
- package/packages/playerx-hls-manifest.package.js +2 -2
- package/packages/playerx-hls-parsing.package.js +2 -2
- package/packages/playerx-hls-translation.package.js +2 -2
- package/packages/playerx-hls.package.js +2 -2
- package/packages/playerx-media-state.package.d.ts +1 -0
- package/packages/playerx-media-state.package.js +10 -0
- package/packages/playerx-mse-playback.package.js +2 -2
- package/packages/playerx-mse-presentation.package.js +2 -2
- package/packages/playerx-native-playback.package.js +2 -2
- package/packages/playerx-native-presentation.package.js +2 -2
- package/packages/playerx-network.package.js +2 -2
- package/packages/playerx-no-adaptation.package.js +2 -2
- package/packages/playerx-playback-api.package.js +2 -2
- package/packages/playerx-playback-technology.package.js +2 -2
- package/packages/playerx-playback.package.js +2 -2
- package/packages/playerx-player-api.package.js +2 -2
- package/packages/playerx-segment-processing.package.js +2 -2
- package/packages/playerx-source.package.js +2 -2
- package/packages/playerx-sources-api.package.js +2 -2
- package/packages/playerx-stream-data-structure.package.js +2 -2
- package/packages/playerx-streaming.package.js +1 -1
- package/packages/playerx-subtitle-api.package.js +2 -2
- package/packages/playerx-subtitle-base.package.js +2 -2
- package/packages/playerx-subtitle-format-detection.package.js +1 -1
- package/packages/playerx-subtitle-native-renderer.package.js +2 -2
- package/packages/playerx-subtitles.package.js +2 -2
- package/packages/playerx-trick-play.package.js +2 -2
- package/packages/playerx-ts-transmuxer.package.js +2 -2
- package/packages/playerx-tv.package.js +1 -1
- package/packages/playerx-ui.package.js +2 -2
- package/packages/playerx-video-element-controller.package.d.ts +1 -0
- package/packages/playerx-video-element-controller.package.js +10 -0
- package/packages/playerx-view-mode.package.js +2 -2
- package/packages/playerx-web-vtt.package.js +2 -2
- package/playerx-framework-utils.js +1 -1
- package/types/Types.d.ts +3 -0
- package/types/bundles/BitmovinV8.bundle.d.ts +1 -1
- package/types/bundles/Dash.bundle.d.ts +1 -1
- package/types/bundles/Hls.bundle.d.ts +1 -1
- package/types/bundles/HlsTsAudio.bundle.d.ts +1 -1
- package/types/bundles/Playback.bundle.d.ts +1 -1
- package/types/bundles/Tv.bundle.d.ts +1 -1
- package/types/packages/adaptation/AdaptationAlgorithm.d.ts +4 -0
- package/types/packages/adaptation/StartupQuality.d.ts +5 -0
- package/types/packages/adaptation/Types.d.ts +7 -11
- package/types/packages/adaptation/WishDataAtom.d.ts +9 -2
- package/types/packages/advertising/BitmovinAdvertisingBundle.package.d.ts +1 -1
- package/types/packages/advertising/api/AdvertisingApi.package.d.ts +1 -1
- package/types/packages/advertising/api/AdvertisingEvents.d.ts +45 -6
- package/types/packages/advertising/api/Types.d.ts +110 -11
- package/types/packages/advertising/api/api-conversion/AdApiCache.d.ts +14 -0
- package/types/packages/advertising/api/content-source/AdBreakAtom.d.ts +19 -0
- package/types/packages/advertising/api/content-source/Types.d.ts +36 -0
- package/types/packages/advertising/base/AdExtension.d.ts +11 -0
- package/types/packages/advertising/base/AdIconAtom.d.ts +20 -0
- package/types/packages/advertising/base/AdIconPosition.d.ts +8 -0
- package/types/packages/advertising/base/AdPosition.d.ts +1 -0
- package/types/packages/advertising/base/AdQuartile.d.ts +5 -0
- package/types/packages/advertising/base/AdResource.d.ts +16 -0
- package/types/packages/advertising/base/AdSchedule.d.ts +2 -2
- package/types/packages/advertising/base/AdTagAtom.d.ts +1 -1
- package/types/packages/advertising/base/AdType.d.ts +4 -0
- package/types/packages/advertising/base/BaseAdAtom.d.ts +27 -5
- package/types/packages/advertising/base/{BaseAdBreakAtom.d.ts → BaseAdPodAtom.d.ts} +8 -6
- package/types/packages/advertising/base/BaseAdPodState.d.ts +7 -0
- package/types/packages/advertising/base/BaseAdState.d.ts +7 -0
- package/types/packages/advertising/base/ClickThroughAtom.d.ts +11 -0
- package/types/packages/advertising/base/CompanionAdAtom.d.ts +18 -0
- package/types/packages/advertising/base/Types.d.ts +19 -29
- package/types/packages/advertising/bitmovin/Types.d.ts +17 -10
- package/types/packages/capabilities/Types.d.ts +1 -1
- package/types/packages/container/container-mp4/ContainerMp4.package.d.ts +2 -0
- package/types/packages/container/container-ts/ContainerTs.package.d.ts +3 -1
- package/types/packages/container/ts-transmuxer/TsTransmuxer.package.d.ts +2 -0
- package/types/packages/core/Constants.d.ts +7 -0
- package/types/packages/core/Types.d.ts +3 -2
- package/types/packages/core/metrics/MetricsAtom.d.ts +1 -1
- package/types/packages/{adaptation → core/state}/RingBufferAtom.d.ts +2 -2
- package/types/packages/core/state/StateMachineAtom.d.ts +13 -12
- package/types/packages/core/state/state-effect/Types.d.ts +2 -2
- package/types/packages/core/technology/Types.d.ts +2 -2
- package/types/packages/data/Types.d.ts +7 -1
- package/types/packages/manifest/dash/parsing/Errors.d.ts +1 -1
- package/types/packages/manifest/dash/root/Types.d.ts +3 -1
- package/types/packages/manifest/dash/technology/Types.d.ts +2 -1
- package/types/packages/manifest/hls/parsing/Constants.d.ts +47 -0
- package/types/packages/manifest/hls/parsing/Errors.d.ts +1 -1
- package/types/packages/manifest/hls/parsing/Types.d.ts +5 -48
- package/types/packages/manifest/hls/parsing/m3u8/TranslatorStream.d.ts +1 -0
- package/types/packages/manifest/hls/root/Hls.package.d.ts +6 -1
- package/types/packages/manifest/hls/technology/Types.d.ts +2 -1
- package/types/packages/manifest/hls/translation/HlsTranslation.package.d.ts +5 -0
- package/types/packages/manifest/hls/translation/Types.d.ts +10 -11
- package/types/packages/manifest/hls/translation/segments/StreamHelpers.d.ts +14 -0
- package/types/packages/manifest/hls/translation/stream/TracksToSelectionGroups.d.ts +6 -0
- package/types/packages/manifest/hls/translation/stream/UnknownTrackToMediaTrackTranslator.d.ts +4 -0
- package/types/packages/media-state/MediaInfoAtoms.d.ts +18 -0
- package/types/packages/media-state/MediaState.d.ts +10 -0
- package/types/packages/media-state/MediaState.package.d.ts +22 -0
- package/types/packages/media-state/MediaStateAtom.d.ts +16 -0
- package/types/packages/media-state/MediaStateTransitionType.d.ts +11 -0
- package/types/packages/media-state/SeekRestrictionAtom.d.ts +2 -0
- package/types/packages/media-state/Types.d.ts +48 -0
- package/types/packages/media-state/controllers/video-element/Types.d.ts +32 -0
- package/types/packages/media-state/controllers/video-element/VideoElementController.package.d.ts +15 -0
- package/types/packages/network/HttpRequestMethod.d.ts +5 -0
- package/types/packages/network/HttpRequestType.d.ts +11 -0
- package/types/packages/network/HttpResponseType.d.ts +7 -0
- package/types/packages/network/NetworkAtom.d.ts +15 -0
- package/types/packages/network/NetworkTask.d.ts +8 -7
- package/types/packages/network/Types.d.ts +17 -26
- package/types/packages/playback/play-pause/Types.d.ts +0 -3
- package/types/packages/playback/volume/Types.d.ts +2 -4
- package/types/packages/playback-api/play-pause-api/Types.d.ts +4 -3
- package/types/packages/playback-api/playback-api-events/Types.d.ts +11 -8
- package/types/packages/playback-api/time-api/Types.d.ts +4 -5
- package/types/packages/playback-technology/PlaybackTechnologyEntryType.d.ts +4 -0
- package/types/packages/playback-technology/Types.d.ts +6 -6
- package/types/packages/player-api/PlayerApi.package.d.ts +2 -0
- package/types/packages/player-api/PlayerEvent.d.ts +3 -0
- package/types/packages/player-api/Types.d.ts +4 -4
- package/types/packages/presentation/mse/playback-technology/Types.d.ts +2 -1
- package/types/packages/presentation/mse/playback-technology/atoms/MsePresentationStateAtom.d.ts +1 -4
- package/types/packages/presentation/mse/presentation/MsePresentation.package.d.ts +4 -2
- package/types/packages/presentation/mse/presentation/Types.d.ts +6 -0
- package/types/packages/presentation/native/NativePlayback.package.d.ts +1 -2
- package/types/packages/presentation/native/playback-technology/Types.d.ts +2 -1
- package/types/packages/segment-processing/SegmentProcessing.package.d.ts +2 -1
- package/types/packages/segment-processing/SegmentProcessorType.d.ts +7 -0
- package/types/packages/segment-processing/Types.d.ts +10 -10
- package/types/packages/source/SourceReference.d.ts +1 -1
- package/types/packages/source/atoms/PlaybackConfigAtom.d.ts +2 -2
- package/types/packages/source/atoms/SourceConfigAtom.d.ts +2 -0
- package/types/packages/sources-api/SourcesApiEvent.d.ts +7 -0
- package/types/packages/sources-api/Types.d.ts +4 -8
- package/types/packages/stream-data-structure/Types.d.ts +1 -0
- package/types/packages/stream-data-structure/segment/Exports.d.ts +3 -3
- package/types/packages/stream-data-structure/segment/SegmentAtom.d.ts +11 -2
- package/types/packages/stream-data-structure/segment/SegmentDataAtom.d.ts +1 -7
- package/types/packages/stream-data-structure/segment/SegmentUtils.d.ts +3 -2
- package/types/packages/stream-data-structure/selection-group/SelectionGroupAtom.d.ts +1 -2
- package/types/packages/stream-data-structure/track/Exports.d.ts +6 -1
- package/types/packages/stream-data-structure/track/TrackAtom.d.ts +19 -4
- package/types/packages/stream-data-structure/track/TrackTypeGuards.d.ts +3 -1
- package/types/packages/stream-data-structure/track/TypeDetection.d.ts +25 -0
- package/types/packages/stream-data-structure/track/TypeDetectionTypeGuards.d.ts +4 -0
- package/types/packages/streaming/Streaming.package.d.ts +2 -2
- package/types/packages/streaming/Types.d.ts +3 -2
- package/types/packages/subtitles/subtitle-api/SubtitleEvent.d.ts +9 -0
- package/types/packages/subtitles/subtitle-api/Types.d.ts +3 -9
- package/types/packages/trick-play/TrickPlay.package.d.ts +2 -1
- package/types/packages/v8-compat/BitmovinUi.package.d.ts +4 -4
- package/types/packages/v8-compat/BitmovinV8Core.package.d.ts +16 -4
- package/types/packages/v8-compat/BitmovinV8StaticApi.package.d.ts +8 -5
- package/types/packages/v8-compat/apis/SourceApis.d.ts +5 -0
- package/types/packages/v8-compat/apis/SubtitleApi.d.ts +5 -0
- package/types/packages/v8-compat/enums/AdditionalPlayerExportNames.d.ts +9 -0
- package/types/packages/v8-compat/enums/PlayerExports.d.ts +0 -7
- package/types/packages/v8-compat/event-handling/EventDispatcher.d.ts +11 -0
- package/types/packages/v8-compat/source-api/BitmovinSourceApi.package.d.ts +10 -4
- package/types/packages/v8-compat/video-element/BitmovinVideoElementUtils.package.d.ts +4 -4
- package/types/packages/view-mode/Types.d.ts +4 -6
- package/types/packages/view-mode/ViewMode.d.ts +5 -0
- package/types/packages/view-mode/ViewMode.package.d.ts +2 -0
- package/types/packages/view-mode/ViewModeAtom.d.ts +1 -1
- package/types/packages/core/FrameworkError.d.ts +0 -4
- package/types/packages/core/network/NetworkAtom.d.ts +0 -21
- package/types/packages/playback/playback-state/Types.d.ts +0 -41
- package/types/packages/playback/video-element-state/SeekRestrictionAtom.d.ts +0 -2
- package/types/packages/playback/video-element-state/Types.d.ts +0 -32
- package/types/packages/playback/video-element-state/VideoElementStateAtom.d.ts +0 -58
- package/types/packages/presentation/native/Types.d.ts +0 -12
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ByteRange } from '../../../stream-data-structure/segment/SegmentAtom';
|
|
2
|
+
import type { MetadataType, PlaylistType, TagType } from './Constants';
|
|
2
3
|
import type { HlsParsingError, MissingM3uTagError } from './Errors';
|
|
4
|
+
export type { HlsEncryptionMethod } from './Constants';
|
|
5
|
+
export type { MetadataType } from './Constants';
|
|
6
|
+
export type { TagType } from './Constants';
|
|
7
|
+
export type { PlaylistType } from './Constants';
|
|
3
8
|
interface StartTagAttributes {
|
|
4
9
|
timeOffset: number;
|
|
5
10
|
precise: boolean;
|
|
@@ -20,11 +25,6 @@ export interface Scte35 {
|
|
|
20
25
|
attributes?: Scte35TagAttributes;
|
|
21
26
|
type: MetadataType.SCTE;
|
|
22
27
|
}
|
|
23
|
-
export declare enum HlsEncryptionMethod {
|
|
24
|
-
NONE = "NONE",
|
|
25
|
-
AES_128 = "AES-128",
|
|
26
|
-
SAMPLE_AES = "SAMPLE-AES"
|
|
27
|
-
}
|
|
28
28
|
export interface SegmentEncryptionInfo {
|
|
29
29
|
uri: string;
|
|
30
30
|
method: string;
|
|
@@ -152,14 +152,6 @@ export interface MediaPlaylist extends Playlist {
|
|
|
152
152
|
map?: MapInformation;
|
|
153
153
|
}
|
|
154
154
|
export type HlsManifest = MultivariantPlaylist | MediaPlaylist;
|
|
155
|
-
export declare enum MetadataType {
|
|
156
|
-
CUETAG = "CUETAG",
|
|
157
|
-
DATERANGE = "DATERANGE",
|
|
158
|
-
CUSTOM = "CUSTOM",
|
|
159
|
-
SCTE = "SCTE",
|
|
160
|
-
ID3 = "ID3",
|
|
161
|
-
EMSG = "EMSG"
|
|
162
|
-
}
|
|
163
155
|
export interface HlsTag {
|
|
164
156
|
name: string;
|
|
165
157
|
attributes?: {
|
|
@@ -167,40 +159,6 @@ export interface HlsTag {
|
|
|
167
159
|
};
|
|
168
160
|
value?: string;
|
|
169
161
|
}
|
|
170
|
-
export declare enum TagType {
|
|
171
|
-
M3u = "m3u",
|
|
172
|
-
AllowCache = "allow-cache",
|
|
173
|
-
ByteRange = "byterange",
|
|
174
|
-
EndList = "endlist",
|
|
175
|
-
Inf = "inf",
|
|
176
|
-
Key = "key",
|
|
177
|
-
MediaSequence = "media-sequence",
|
|
178
|
-
DiscontinuitySequence = "discontinuity-sequence",
|
|
179
|
-
PlaylistType = "playlist-type",
|
|
180
|
-
StreamInf = "stream-inf",
|
|
181
|
-
IframeStreamInf = "i-frame-stream-inf",
|
|
182
|
-
Media = "media",
|
|
183
|
-
Start = "start",
|
|
184
|
-
Discontinuity = "discontinuity",
|
|
185
|
-
DateTime = "date-time",
|
|
186
|
-
TargetDuration = "targetduration",
|
|
187
|
-
Map = "map",
|
|
188
|
-
IndependentSegments = "independent-segments",
|
|
189
|
-
SessionData = "session-data",
|
|
190
|
-
SessionKey = "session-key",
|
|
191
|
-
CueOut = "cue-out",
|
|
192
|
-
CueOutCont = "cue-out-cont",
|
|
193
|
-
CueIn = "cue-in",
|
|
194
|
-
Scte35 = "scte35",
|
|
195
|
-
DateRange = "daterange",
|
|
196
|
-
Version = "version",
|
|
197
|
-
Uri = "uri",
|
|
198
|
-
Unknown = "unknown"
|
|
199
|
-
}
|
|
200
|
-
export declare enum PlaylistType {
|
|
201
|
-
Vod = "VOD",
|
|
202
|
-
Event = "EVENT"
|
|
203
|
-
}
|
|
204
162
|
export type BaseTag<T extends TagType> = {
|
|
205
163
|
tagType: T;
|
|
206
164
|
};
|
|
@@ -269,4 +227,3 @@ export declare enum HlsParsingExportNames {
|
|
|
269
227
|
ParsingFunctions = "hls-parsing-functions",
|
|
270
228
|
Errors = "hls-parsing-errors"
|
|
271
229
|
}
|
|
272
|
-
export {};
|
|
@@ -26,6 +26,7 @@ export declare class TranslatorStream extends Stream<string, Tag> {
|
|
|
26
26
|
private translateM3u;
|
|
27
27
|
private translateAllowCache;
|
|
28
28
|
private translateByteRange;
|
|
29
|
+
private resolveImplicitByteRangeOffset;
|
|
29
30
|
private translateEndList;
|
|
30
31
|
private translateInf;
|
|
31
32
|
private translateKey;
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
import type { ContextHaving } from '../../../../../framework-types/execution-context/Types';
|
|
14
14
|
import type { NamedTask, Task } from '../../../../../framework-types/task/Types';
|
|
15
15
|
import type { EmptyObject } from '../../../../Types';
|
|
16
|
-
import
|
|
16
|
+
import { AdaptationExportNames } from '../../../adaptation/Types';
|
|
17
17
|
import type { Constants } from '../../../core/Constants';
|
|
18
18
|
import type { MetricsAtom } from '../../../core/metrics/MetricsAtom';
|
|
19
19
|
import type { CoreEffects, CoreStateAtoms } from '../../../core/Types';
|
|
20
20
|
import { CoreExportNames } from '../../../core/Types';
|
|
21
21
|
import type { CoreUtils } from '../../../core/utils/Types';
|
|
22
22
|
import type { NetworkTask } from '../../../network/NetworkTask';
|
|
23
|
+
import type { HttpRequestMethod, HttpResponseType } from '../../../network/Types';
|
|
23
24
|
import { NetworkExportNames } from '../../../network/Types';
|
|
24
25
|
import type { SourceStateAtom } from '../../../source/atoms/SourceStateAtom';
|
|
25
26
|
import { SourceExportNames } from '../../../source/Types';
|
|
@@ -32,6 +33,7 @@ import { HlsParsingExportNames } from '../parsing/Types';
|
|
|
32
33
|
import { HlsTechState } from '../technology/Types';
|
|
33
34
|
import type { HlsMultivariantPlaylistTranslatorTask } from '../translation/manifests/HlsMultivariantPlaylistTranslatorTask';
|
|
34
35
|
import type { HlsVariantTranslationTask } from '../translation/manifests/HlsVariantTranslationTask';
|
|
36
|
+
import type { HlsTranslationUtils } from '../translation/Types';
|
|
35
37
|
import { HlsTranslationExportNames } from '../translation/Types';
|
|
36
38
|
import { HlsPackageExportNames } from './Types';
|
|
37
39
|
type HlsDependencies = {
|
|
@@ -41,11 +43,14 @@ type HlsDependencies = {
|
|
|
41
43
|
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
42
44
|
[SourceExportNames.SourceState]: SourceStateAtom;
|
|
43
45
|
[NetworkExportNames.NetworkTask]: typeof NetworkTask;
|
|
46
|
+
[NetworkExportNames.HttpRequestMethod]: typeof HttpRequestMethod;
|
|
47
|
+
[NetworkExportNames.HttpResponseType]: typeof HttpResponseType;
|
|
44
48
|
[AdaptationExportNames.Metrics]: MetricsAtom;
|
|
45
49
|
[HlsParsingExportNames.ParsingTask]: typeof HlsParsingTask;
|
|
46
50
|
[HlsParsingExportNames.ParsingFunctions]: typeof HlsParsingFunctions;
|
|
47
51
|
[HlsTranslationExportNames.HlsVariantTranslator]: typeof HlsVariantTranslationTask;
|
|
48
52
|
[HlsTranslationExportNames.HlsMultivariantTranslator]: typeof HlsMultivariantPlaylistTranslatorTask;
|
|
53
|
+
[HlsTranslationExportNames.HlsTranslationUtils]: HlsTranslationUtils;
|
|
49
54
|
} & StreamDataStructurePackageExports & StreamingStateType & HlsTechState;
|
|
50
55
|
type ManifestLoadTaskType = NamedTask<Task<HlsPackageContext, SourceStateAtom, void>>;
|
|
51
56
|
export type HlsExports = {
|
|
@@ -3,7 +3,7 @@ import type { ContextHaving } from '../../../../../framework-types/execution-con
|
|
|
3
3
|
import type { Constants } from '../../../core/Constants';
|
|
4
4
|
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../../core/Types';
|
|
5
5
|
import type { CoreUtils } from '../../../core/utils/Types';
|
|
6
|
-
import type { ManifestTechnologyEntry, PlaybackTechnologyComponent } from '../../../playback-technology/Types';
|
|
6
|
+
import type { ManifestTechnologyEntry, PlaybackTechnologyComponent, PlaybackTechnologyEntryType, PlaybackTechnologyExportNames } from '../../../playback-technology/Types';
|
|
7
7
|
import type { Resource } from '../../../source/atoms/SourceConfigAtom';
|
|
8
8
|
import type { StreamDataStructureStream } from '../../../stream-data-structure/stream/Exports';
|
|
9
9
|
import type { createStreamingStateAtom, StreamingStateAtom } from '../../../streaming/atoms/StreamingStateAtom';
|
|
@@ -20,6 +20,7 @@ export interface HlsTechStateData {
|
|
|
20
20
|
export type HlsManifestTechnologyExports = EmptyObject;
|
|
21
21
|
export type HlsManifestTechnologyDependencies = {
|
|
22
22
|
[PlaybackTechnologyComponent]: PlaybackTechnologyComponent;
|
|
23
|
+
[PlaybackTechnologyExportNames.EntryType]: typeof PlaybackTechnologyEntryType;
|
|
23
24
|
[CoreExportNames.Constants]: Constants;
|
|
24
25
|
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
25
26
|
[CoreExportNames.CoreEffects]: CoreEffects;
|
|
@@ -14,18 +14,23 @@ import { CoreExportNames } from '../../../core/Types';
|
|
|
14
14
|
import type { CoreUtils } from '../../../core/utils/Types';
|
|
15
15
|
import type { StreamDataStructurePackageExports } from '../../../stream-data-structure/Types';
|
|
16
16
|
import type { ContextWithState } from '../../../Types';
|
|
17
|
+
import type { HlsParsingFunctions } from '../parsing/HlsParsingFunctions';
|
|
18
|
+
import { HlsParsingExportNames } from '../parsing/Types';
|
|
17
19
|
import { HlsMultivariantPlaylistTranslatorTask } from './manifests/HlsMultivariantPlaylistTranslatorTask';
|
|
18
20
|
import { HlsVariantTranslationTask } from './manifests/HlsVariantTranslationTask';
|
|
21
|
+
import type { HlsTranslationUtils } from './Types';
|
|
19
22
|
import { HlsTranslationExportNames } from './Types';
|
|
20
23
|
type Dependencies = {
|
|
21
24
|
[CoreExportNames.Utils]: CoreUtils;
|
|
22
25
|
[CoreExportNames.Constants]: Constants;
|
|
23
26
|
[CoreExportNames.CoreEffects]: CoreEffects;
|
|
24
27
|
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
28
|
+
[HlsParsingExportNames.ParsingFunctions]: typeof HlsParsingFunctions;
|
|
25
29
|
} & StreamDataStructurePackageExports;
|
|
26
30
|
export type HlsTranslationPackageExports = {
|
|
27
31
|
[HlsTranslationExportNames.HlsVariantTranslator]: typeof HlsVariantTranslationTask;
|
|
28
32
|
[HlsTranslationExportNames.HlsMultivariantTranslator]: typeof HlsMultivariantPlaylistTranslatorTask;
|
|
33
|
+
[HlsTranslationExportNames.HlsTranslationUtils]: HlsTranslationUtils;
|
|
29
34
|
};
|
|
30
35
|
export type HlsTranslationPackageContext = ContextHaving<Dependencies, HlsTranslationPackageExports, ContextWithState>;
|
|
31
36
|
export declare const HlsTranslationPackage: import("../../../../../framework-types/package-api/Package").Package<Dependencies, HlsTranslationPackageExports, EmptyObject>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}): rendition is {
|
|
5
|
-
attributes: RenditionAttributes & {
|
|
6
|
-
URI: string;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
export declare function getReferencedAudioGroupId(variant: Variant): string | undefined;
|
|
10
|
-
export declare function getReferencedVideoGroupId(variant: Variant): string | undefined;
|
|
1
|
+
import type { maybeSetSelectionGroupContainerFormat } from './segments/StreamHelpers';
|
|
2
|
+
import type { addTrackToSelectionGroup } from './stream/TracksToSelectionGroups';
|
|
3
|
+
import type { translateUnknownTrackToMediaTrack } from './stream/UnknownTrackToMediaTrackTranslator';
|
|
11
4
|
export declare enum HlsTranslationExportNames {
|
|
12
5
|
HlsMultivariantTranslator = "hls-multivariant-translator",
|
|
13
|
-
HlsVariantTranslator = "hls-variant-translator"
|
|
6
|
+
HlsVariantTranslator = "hls-variant-translator",
|
|
7
|
+
HlsTranslationUtils = "hls-translation-utils"
|
|
14
8
|
}
|
|
9
|
+
export type HlsTranslationUtils = {
|
|
10
|
+
addTrackToSelectionGroup: typeof addTrackToSelectionGroup;
|
|
11
|
+
maybeSetSelectionGroupContainerFormat: typeof maybeSetSelectionGroupContainerFormat;
|
|
12
|
+
translateUnknownTrackToMediaTrack: typeof translateUnknownTrackToMediaTrack;
|
|
13
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SegmentAtom } from '../../../../stream-data-structure/segment/SegmentAtom';
|
|
2
|
+
import type { SelectionGroupAtom } from '../../../../stream-data-structure/selection-group/SelectionGroupAtom';
|
|
3
|
+
import type { StreamAtom } from '../../../../stream-data-structure/stream/StreamAtom';
|
|
4
|
+
import type { AudioTrackAtom, MediaTrackAtom, SubtitleTrackAtom, TrackAtom, VideoTrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
|
|
5
|
+
import type { SegmentEntry } from '../../parsing/Types';
|
|
6
|
+
import type { HlsTranslationPackageContext } from '../HlsTranslation.package';
|
|
7
|
+
export declare function createSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom): import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").UnknownSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").AudioSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").VideoSelectionGroupAtom | import("../../../../stream-data-structure/selection-group/SelectionGroupAtom").SubtitleSelectionGroupAtom;
|
|
8
|
+
export declare function findOrCreateSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom, selectionGroups: readonly SelectionGroupAtom[]): SelectionGroupAtom;
|
|
9
|
+
export declare function createTrack(context: HlsTranslationPackageContext, variantUrl: string, stream: StreamAtom, discontinuitySequenceNumber: number, referenceTrack?: TrackAtom): AudioTrackAtom | VideoTrackAtom | SubtitleTrackAtom | import("../../../../stream-data-structure/track/TrackAtom").UnknownTrackAtom;
|
|
10
|
+
export declare function findTracksOfVariant(context: HlsTranslationPackageContext, stream: StreamAtom, variantUrl: string): TrackAtom[];
|
|
11
|
+
export declare function findOrCreateTrack(context: HlsTranslationPackageContext, variantUrl: string, segment: SegmentEntry, stream: StreamAtom, referenceTrack?: TrackAtom): TrackAtom;
|
|
12
|
+
export declare function hasSegment(track: MediaTrackAtom, segment: SegmentEntry): boolean;
|
|
13
|
+
export declare function isMatchingSegment(segment: SegmentAtom, entry: SegmentEntry): boolean;
|
|
14
|
+
export declare function maybeSetSelectionGroupContainerFormat(context: HlsTranslationPackageContext, selectionGroup: SelectionGroupAtom): void;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ArrayAtom } from '../../../../core/state/ArrayStateAtom';
|
|
2
|
+
import type { SelectionGroupsAtom } from '../../../../stream-data-structure/stream/StreamAtom';
|
|
3
|
+
import type { TrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
|
|
4
|
+
import type { HlsTranslationPackageContext } from '../HlsTranslation.package';
|
|
5
|
+
export declare function tracksToSelectionGroups(context: HlsTranslationPackageContext, tracks: ArrayAtom<TrackAtom>): SelectionGroupsAtom;
|
|
6
|
+
export declare function addTrackToSelectionGroup(context: HlsTranslationPackageContext, track: TrackAtom, selectionGroups: SelectionGroupsAtom): void;
|
package/types/packages/manifest/hls/translation/stream/UnknownTrackToMediaTrackTranslator.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { UnknownTrackAtom } from '../../../../stream-data-structure/track/TrackAtom';
|
|
2
|
+
import type { TypeDetection } from '../../../../stream-data-structure/track/TypeDetection';
|
|
3
|
+
import type { HlsPackageContext } from '../../root/Hls.package';
|
|
4
|
+
export declare function translateUnknownTrackToMediaTrack(context: HlsPackageContext, track: UnknownTrackAtom, detection: TypeDetection): import("../../../../stream-data-structure/track/TrackAtom").AudioTrackAtom | import("../../../../stream-data-structure/track/TrackAtom").VideoTrackAtom | undefined;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ContextHaving } from '../../../framework-types/execution-context/Types';
|
|
2
|
+
import type { EmptyObject } from '../../Types';
|
|
3
|
+
import type { PrimitiveAtom } from '../core/state/PrimitiveAtom';
|
|
4
|
+
import { type CoreStateAtoms, CoreExportNames } from '../core/Types';
|
|
5
|
+
import type { ContextWithState } from '../Types';
|
|
6
|
+
export type MediaInfo = {
|
|
7
|
+
currentTime: PrimitiveAtom<number | undefined>;
|
|
8
|
+
duration: PrimitiveAtom<number | undefined>;
|
|
9
|
+
volume: PrimitiveAtom<number | undefined>;
|
|
10
|
+
muted: PrimitiveAtom<boolean | undefined>;
|
|
11
|
+
playbackRate: PrimitiveAtom<number | undefined>;
|
|
12
|
+
error: PrimitiveAtom<Error | undefined>;
|
|
13
|
+
};
|
|
14
|
+
type ContextT = ContextHaving<{
|
|
15
|
+
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
16
|
+
}, EmptyObject, ContextWithState>;
|
|
17
|
+
export declare function createMediaInfo(context: ContextT): MediaInfo;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation MediaState.package
|
|
3
|
+
*
|
|
4
|
+
* Owns the per-source media state slot. Tech-agnostic: a controller (e.g.
|
|
5
|
+
* `VideoElementController` for HTMLVideoElement)
|
|
6
|
+
* is responsible for translating its underlying medium into transitions on
|
|
7
|
+
* `mediaState` and updates on `mediaInfo`.
|
|
8
|
+
*
|
|
9
|
+
* Exposes:
|
|
10
|
+
* - `MediaState` — `StateMachineAtom<MediaState>` for qualitative playback state
|
|
11
|
+
* (`Detached | Playing | Paused | Seeking | Stalled | Ended | Error`).
|
|
12
|
+
* - `MediaInfo` — per-scalar atoms (`currentTime`, `duration`, `volume`,
|
|
13
|
+
* `muted`, `playbackRate`, `error`).
|
|
14
|
+
* - `SeekRestriction` — whether seeking is allowed; seeded from the source's
|
|
15
|
+
* `preventSeeking` playback config.
|
|
16
|
+
*
|
|
17
|
+
* ### `MediaState` Package Dependency Graph
|
|
18
|
+
* <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 227.640625 49" style="max-width: 227.641px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#ccc;}#my-svg .error-icon{fill:#a44141;}#my-svg .error-text{fill:#ddd;stroke:#ddd;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:lightgrey;stroke:lightgrey;}#my-svg .marker.cross{stroke:lightgrey;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#ccc;}#my-svg .cluster-label text{fill:#F9FFFE;}#my-svg .cluster-label span,#my-svg p{color:#F9FFFE;}#my-svg .label text,#my-svg span,#my-svg p{fill:#ccc;color:#ccc;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#1f2020;stroke:#81B1DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:lightgrey;}#my-svg .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:lightgrey;fill:none;}#my-svg .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#my-svg .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#my-svg .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#my-svg .cluster text{fill:#F9FFFE;}#my-svg .cluster span,#my-svg p{color:#F9FFFE;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-MediaState LE-Source" id="L-MediaState-Source-0" d="M95.938,16.5L100.104,16.5C104.271,16.5,112.604,16.5,120.054,16.5C127.504,16.5,134.071,16.5,137.354,16.5L140.638,16.5"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(47.96875, 16.5)" data-id="MediaState" data-node="true" id="flowchart-MediaState-0" class="node default default flowchart-label"><rect height="33" width="95.9375" y="-16.5" x="-47.96875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-40.46875, -9)" style="" class="label"><rect/><foreignObject height="18" width="80.9375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">MediaState</span></div></foreignObject></g></g><g transform="translate(178.7890625, 16.5)" data-id="Source" data-node="true" id="flowchart-Source-1" class="node default default flowchart-label"><rect height="33" width="65.703125" y="-16.5" x="-32.8515625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-25.3515625, -9)" style="" class="label"><rect/><foreignObject height="18" width="50.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Source</span></div></foreignObject></g></g></g></g></g></svg>
|
|
19
|
+
*/
|
|
20
|
+
import type { MediaStatePackageDependencies, MediaStatePackageExports } from './Types';
|
|
21
|
+
export declare const MediaStatePackage: import("../../../framework-types/package-api/Package").Package<MediaStatePackageDependencies, MediaStatePackageExports, import("../../../framework-types/BaseTypes").EmptyObject>;
|
|
22
|
+
export default MediaStatePackage;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ContextHaving } from '../../../framework-types/execution-context/Types';
|
|
2
|
+
import type { EmptyObject } from '../../Types';
|
|
3
|
+
import type { BaseStateMachineContext, StateMachineAtom } from '../core/state/StateMachineAtom';
|
|
4
|
+
import type { CoreStateAtoms } from '../core/Types';
|
|
5
|
+
import { CoreExportNames } from '../core/Types';
|
|
6
|
+
import type { CoreUtils } from '../core/utils/Types';
|
|
7
|
+
import type { ContextWithState } from '../Types';
|
|
8
|
+
import { MediaState } from './MediaState';
|
|
9
|
+
import type { MediaStateTransition } from './Types';
|
|
10
|
+
export type MediaStateAtom = StateMachineAtom<MediaState, BaseStateMachineContext, MediaStateTransition>;
|
|
11
|
+
type ContextT = ContextHaving<{
|
|
12
|
+
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
13
|
+
[CoreExportNames.Utils]: CoreUtils;
|
|
14
|
+
}, EmptyObject, ContextWithState>;
|
|
15
|
+
export declare function createMediaStateMachineAtom(context: ContextT): MediaStateAtom;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum MediaStateTransitionType {
|
|
2
|
+
Detached = "detached",
|
|
3
|
+
Play = "play",
|
|
4
|
+
PlaybackPlaying = "playback-playing",
|
|
5
|
+
PlaybackPaused = "playback-paused",
|
|
6
|
+
SeekStarted = "seek-started",
|
|
7
|
+
SeekFinished = "seek-finished",
|
|
8
|
+
PlaybackStalled = "playback-stalled",
|
|
9
|
+
PlaybackEnded = "playback-ended",
|
|
10
|
+
ErrorOccurred = "error-occurred"
|
|
11
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { EmptyObject } from '../../../framework-types/BaseTypes';
|
|
2
|
+
import type { ContextHaving } from '../../../framework-types/execution-context/Types';
|
|
3
|
+
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../core/Types';
|
|
4
|
+
import type { CoreUtils } from '../core/utils/Types';
|
|
5
|
+
import type { SourceStateAtom } from '../source/atoms/SourceStateAtom';
|
|
6
|
+
import type { SourceExportNames } from '../source/Types';
|
|
7
|
+
import type { ContextWithState } from '../Types';
|
|
8
|
+
import type { MediaInfo } from './MediaInfoAtoms';
|
|
9
|
+
import type { MediaState } from './MediaState';
|
|
10
|
+
import type { MediaStateAtom } from './MediaStateAtom';
|
|
11
|
+
import type { MediaStateTransitionType } from './MediaStateTransitionType';
|
|
12
|
+
import type { SeekRestrictionAtom } from './SeekRestrictionAtom';
|
|
13
|
+
export type { MediaState } from './MediaState';
|
|
14
|
+
export type { MediaStateTransitionType } from './MediaStateTransitionType';
|
|
15
|
+
export type MediaStateTransition = {
|
|
16
|
+
type: MediaStateTransitionType;
|
|
17
|
+
paused: boolean;
|
|
18
|
+
ended: boolean;
|
|
19
|
+
seeking: boolean;
|
|
20
|
+
errored: boolean;
|
|
21
|
+
currentTime: number;
|
|
22
|
+
duration: number | undefined;
|
|
23
|
+
};
|
|
24
|
+
export declare enum MediaStateExportNames {
|
|
25
|
+
MediaStateAtom = "media-state-atom",
|
|
26
|
+
MediaState = "media-state",
|
|
27
|
+
MediaInfo = "media-info",
|
|
28
|
+
MediaStateTransitionType = "media-state-transition-type",
|
|
29
|
+
SeekRestriction = "seek-restriction"
|
|
30
|
+
}
|
|
31
|
+
export type MediaStatePackageDependencies = {
|
|
32
|
+
[SourceExportNames.SourceState]: SourceStateAtom;
|
|
33
|
+
[CoreExportNames.CoreEffects]: CoreEffects;
|
|
34
|
+
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
35
|
+
[CoreExportNames.Utils]: CoreUtils;
|
|
36
|
+
};
|
|
37
|
+
export type MediaStatePackageExports = {
|
|
38
|
+
[MediaStateExportNames.MediaStateAtom]: MediaStateAtom;
|
|
39
|
+
[MediaStateExportNames.MediaState]: typeof MediaState;
|
|
40
|
+
[MediaStateExportNames.MediaInfo]: MediaInfo;
|
|
41
|
+
[MediaStateExportNames.SeekRestriction]: SeekRestrictionAtom;
|
|
42
|
+
[MediaStateExportNames.MediaStateTransitionType]: typeof MediaStateTransitionType;
|
|
43
|
+
};
|
|
44
|
+
export type MediaStatePackageContext = ContextHaving<MediaStatePackageDependencies, MediaStatePackageExports, ContextWithState>;
|
|
45
|
+
export type MediaStatePackageApi = EmptyObject;
|
|
46
|
+
export type { MediaInfo } from './MediaInfoAtoms';
|
|
47
|
+
export type { MediaStateAtom } from './MediaStateAtom';
|
|
48
|
+
export type { SeekRestrictionAtom } from './SeekRestrictionAtom';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { EmptyObject } from '../../../../../framework-types/BaseTypes';
|
|
2
|
+
import type { ContextHaving } from '../../../../../framework-types/execution-context/Types';
|
|
3
|
+
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../../core/Types';
|
|
4
|
+
import type { CoreUtils } from '../../../core/utils/Types';
|
|
5
|
+
import type { TargetPlaybackState, TargetPlaybackStateAtom } from '../../../playback/play-pause/TargetPlaybackStateAtom';
|
|
6
|
+
import type { PlayPauseExportNames } from '../../../playback/play-pause/Types';
|
|
7
|
+
import type { TargetVolumeStateAtom } from '../../../playback/volume/TargetVolumeStateAtom';
|
|
8
|
+
import type { TargetVolumeState } from '../../../playback/volume/Types';
|
|
9
|
+
import type { SourceStateAtom } from '../../../source/atoms/SourceStateAtom';
|
|
10
|
+
import type { SourceExportNames } from '../../../source/Types';
|
|
11
|
+
import type { ContextWithState } from '../../../Types';
|
|
12
|
+
import type { MediaInfo } from '../../MediaInfoAtoms';
|
|
13
|
+
import type { MediaStateAtom } from '../../MediaStateAtom';
|
|
14
|
+
import type { SeekRestrictionAtom } from '../../SeekRestrictionAtom';
|
|
15
|
+
import type { MediaState, MediaStateExportNames, MediaStateTransitionType } from '../../Types';
|
|
16
|
+
export type VideoElementControllerPackageDependencies = {
|
|
17
|
+
[SourceExportNames.SourceState]: SourceStateAtom;
|
|
18
|
+
[MediaStateExportNames.MediaStateAtom]: MediaStateAtom;
|
|
19
|
+
[MediaStateExportNames.MediaInfo]: MediaInfo;
|
|
20
|
+
[MediaStateExportNames.SeekRestriction]: SeekRestrictionAtom;
|
|
21
|
+
[MediaStateExportNames.MediaStateTransitionType]: typeof MediaStateTransitionType;
|
|
22
|
+
[MediaStateExportNames.MediaState]: typeof MediaState;
|
|
23
|
+
[PlayPauseExportNames.TargetPlaybackState]: typeof TargetPlaybackState;
|
|
24
|
+
[PlayPauseExportNames.TargetPlaybackStateAtom]: TargetPlaybackStateAtom;
|
|
25
|
+
[TargetVolumeState]: TargetVolumeStateAtom;
|
|
26
|
+
[CoreExportNames.CoreEffects]: CoreEffects;
|
|
27
|
+
[CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
|
|
28
|
+
[CoreExportNames.Utils]: CoreUtils;
|
|
29
|
+
};
|
|
30
|
+
export type VideoElementControllerPackageExports = EmptyObject;
|
|
31
|
+
export type VideoElementControllerPackageApi = EmptyObject;
|
|
32
|
+
export type VideoElementControllerPackageContext = ContextHaving<VideoElementControllerPackageDependencies, VideoElementControllerPackageExports, ContextWithState>;
|
package/types/packages/media-state/controllers/video-element/VideoElementController.package.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation VideoElementController.package
|
|
3
|
+
*
|
|
4
|
+
* Per-source controller that bridges the HTMLVideoElement to the abstract
|
|
5
|
+
* `mediaState` / `mediaInfo` atoms (observation up) and to user-intent atoms —
|
|
6
|
+
* `targetPlaybackState`, `targetVolumeState`, `playback.playbackRate` — (action
|
|
7
|
+
* down). Reads the video element from `sourceState.video` and re-wires
|
|
8
|
+
* automatically on element swap / detach / re-attach.
|
|
9
|
+
*
|
|
10
|
+
* ### `VideoElementController` Package Dependency Graph
|
|
11
|
+
* <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -17.25 461.328125 84" style="max-width: 461.328px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#ccc;}#my-svg .error-icon{fill:#a44141;}#my-svg .error-text{fill:#ddd;stroke:#ddd;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:lightgrey;stroke:lightgrey;}#my-svg .marker.cross{stroke:lightgrey;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#ccc;}#my-svg .cluster-label text{fill:#F9FFFE;}#my-svg .cluster-label span,#my-svg p{color:#F9FFFE;}#my-svg .label text,#my-svg span,#my-svg p{fill:#ccc;color:#ccc;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#1f2020;stroke:#81B1DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:lightgrey;}#my-svg .edgePath .path{stroke:lightgrey;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:lightgrey;fill:none;}#my-svg .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#my-svg .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#my-svg .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#my-svg .cluster text{fill:#F9FFFE;}#my-svg .cluster span,#my-svg p{color:#F9FFFE;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"/><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-VideoElementController LE-Source" id="L-VideoElementController-Source-0" d="M166.715,0L173.71,-1.542C180.706,-3.083,194.697,-6.167,213.853,-7.708C233.01,-9.25,257.333,-9.25,281.656,-9.25C305.979,-9.25,330.302,-9.25,345.823,-7.755C361.344,-6.259,368.064,-3.268,371.423,-1.773L374.783,-0.278"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-VideoElementController LE-MediaState" id="L-VideoElementController-MediaState-0" d="M166.715,33L173.71,34.542C180.706,36.083,194.697,39.167,204.975,40.708C215.254,42.25,221.821,42.25,225.104,42.25L228.388,42.25"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-MediaState LE-Source" id="L-MediaState-Source-0" d="M329.625,42.25L333.792,42.25C337.958,42.25,346.292,42.25,353.818,40.755C361.344,39.259,368.064,36.268,371.423,34.773L374.783,33.278"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(91.84375, 16.5)" data-id="VideoElementController" data-node="true" id="flowchart-VideoElementController-0" class="node default default flowchart-label"><rect height="33" width="183.6875" y="-16.5" x="-91.84375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-84.34375, -9)" style="" class="label"><rect/><foreignObject height="18" width="168.6875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">VideoElementController</span></div></foreignObject></g></g><g transform="translate(412.4765625, 16.5)" data-id="Source" data-node="true" id="flowchart-Source-1" class="node default default flowchart-label"><rect height="33" width="65.703125" y="-16.5" x="-32.8515625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-25.3515625, -9)" style="" class="label"><rect/><foreignObject height="18" width="50.703125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">Source</span></div></foreignObject></g></g><g transform="translate(281.65625, 42.25)" data-id="MediaState" data-node="true" id="flowchart-MediaState-3" class="node default default flowchart-label"><rect height="33" width="95.9375" y="-16.5" x="-47.96875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-40.46875, -9)" style="" class="label"><rect/><foreignObject height="18" width="80.9375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">MediaState</span></div></foreignObject></g></g></g></g></g></svg>
|
|
12
|
+
*/
|
|
13
|
+
import type { VideoElementControllerPackageDependencies } from './Types';
|
|
14
|
+
export declare const VideoElementControllerPackage: import("../../../../../framework-types/package-api/Package").Package<VideoElementControllerPackageDependencies, import("../../../../../framework-types/BaseTypes").EmptyObject, import("../../../../../framework-types/BaseTypes").EmptyObject>;
|
|
15
|
+
export default VideoElementControllerPackage;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum HttpRequestType {
|
|
2
|
+
MANIFEST_HLS_MULTIVARIANT = "manifest/hls/multivariant",
|
|
3
|
+
MANIFEST_HLS_VARIANT = "manifest/hls/variant",
|
|
4
|
+
MEDIA_AUDIO = "media/audio",
|
|
5
|
+
MEDIA_VIDEO = "media/video",
|
|
6
|
+
MEDIA_SUBTITLES = "media/subtitles",
|
|
7
|
+
MEDIA_THUMBNAILS = "media/thumbnails",
|
|
8
|
+
MEDIA_SEGMENTINDEX = "media/segmentindex",
|
|
9
|
+
KEY_HLS_AES = "key/hls/aes",
|
|
10
|
+
TIME_SYNC = "time/sync"
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DataPackageContext } from '../data/Types';
|
|
2
|
+
import type { NetworkMessage } from './NetworkMessageTypes';
|
|
3
|
+
export type NetworkState = {
|
|
4
|
+
lastMessage: NetworkMessage;
|
|
5
|
+
};
|
|
6
|
+
export type NetworkAtom = ReturnType<typeof createNetworkAtom>;
|
|
7
|
+
export declare function createNetworkAtom(context: DataPackageContext): import("../core/state/Types").StateAtom<{
|
|
8
|
+
lastMessage: NetworkMessage;
|
|
9
|
+
}, {
|
|
10
|
+
requestOpened: (state: NetworkState, openedTimestamp: number) => boolean;
|
|
11
|
+
headersReceived: (state: NetworkState, headersReceivedTimestamp: number, contentLength: number) => boolean;
|
|
12
|
+
progress: (state: NetworkState, progressTimestamp: number, chunk: Uint8Array, loadedBytes: number, elapsedTime: number) => boolean;
|
|
13
|
+
error: (state: NetworkState, error: Error) => boolean;
|
|
14
|
+
done: (state: NetworkState, doneTimestamp: number) => boolean;
|
|
15
|
+
}>;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
1
|
+
import type { HttpResponseType } from './HttpResponseType';
|
|
2
|
+
import type { NetworkAtom } from './NetworkAtom';
|
|
3
|
+
import type { BaseRequestConfig, HttpResponse, NetworkPackageContext } from './Types';
|
|
3
4
|
export declare const NetworkTask: import("../../../framework-types/task/Types").NamedTask<(<T extends HttpResponseType>([baseConfig, networkAtom]: [BaseRequestConfig<T>, import("../core/state/Types").StateAtom<{
|
|
4
5
|
lastMessage: import("./NetworkMessageTypes").NetworkMessage;
|
|
5
6
|
}, {
|
|
6
|
-
requestOpened: (state: import("
|
|
7
|
-
headersReceived: (state: import("
|
|
8
|
-
progress: (state: import("
|
|
9
|
-
error: (state: import("
|
|
10
|
-
done: (state: import("
|
|
7
|
+
requestOpened: (state: import("./NetworkAtom").NetworkState, openedTimestamp: number) => boolean;
|
|
8
|
+
headersReceived: (state: import("./NetworkAtom").NetworkState, headersReceivedTimestamp: number, contentLength: number) => boolean;
|
|
9
|
+
progress: (state: import("./NetworkAtom").NetworkState, progressTimestamp: number, chunk: Uint8Array, loadedBytes: number, elapsedTime: number) => boolean;
|
|
10
|
+
error: (state: import("./NetworkAtom").NetworkState, error: Error) => boolean;
|
|
11
|
+
done: (state: import("./NetworkAtom").NetworkState, doneTimestamp: number) => boolean;
|
|
11
12
|
}> | undefined], context: NetworkPackageContext) => Promise<HttpResponse<HttpResponseType>>)>;
|
|
@@ -3,33 +3,22 @@ import type { BaseContext } from '../../../framework-types/Types';
|
|
|
3
3
|
import type { PartialRequired } from '../../Types';
|
|
4
4
|
import type { AdaptationExportNames } from '../adaptation/Types';
|
|
5
5
|
import type { MetricsAtom } from '../core/metrics/MetricsAtom';
|
|
6
|
-
import type { createNetworkAtom, NetworkAtom } from '../core/network/NetworkAtom';
|
|
7
6
|
import type { StateEffect } from '../core/state/state-effect/StateEffectFactory';
|
|
8
7
|
import type { CoreEffects, CoreExportNames } from '../core/Types';
|
|
9
8
|
import type { CoreUtils } from '../core/utils/Types';
|
|
10
9
|
import type { FetchTask } from './FetchTask';
|
|
10
|
+
import type { HttpRequestMethod } from './HttpRequestMethod';
|
|
11
|
+
import type { HttpRequestType } from './HttpRequestType';
|
|
12
|
+
import type { HttpResponseType } from './HttpResponseType';
|
|
13
|
+
import type { createNetworkAtom, NetworkAtom } from './NetworkAtom';
|
|
14
|
+
import type { NetworkMessageType } from './NetworkMessageTypes';
|
|
11
15
|
import type { NetworkTask } from './NetworkTask';
|
|
16
|
+
export type { HttpRequestMethod } from './HttpRequestMethod';
|
|
17
|
+
export type { HttpRequestType } from './HttpRequestType';
|
|
18
|
+
export type { HttpResponseType } from './HttpResponseType';
|
|
12
19
|
export interface HttpHeaders {
|
|
13
20
|
[fieldName: string]: string;
|
|
14
21
|
}
|
|
15
|
-
export declare enum HttpRequestType {
|
|
16
|
-
MANIFEST_HLS_MULTIVARIANT = "manifest/hls/multivariant",
|
|
17
|
-
MANIFEST_HLS_VARIANT = "manifest/hls/variant",
|
|
18
|
-
MEDIA_AUDIO = "media/audio",
|
|
19
|
-
MEDIA_VIDEO = "media/video",
|
|
20
|
-
MEDIA_SUBTITLES = "media/subtitles",
|
|
21
|
-
MEDIA_THUMBNAILS = "media/thumbnails",
|
|
22
|
-
MEDIA_SEGMENTINDEX = "media/segmentindex",
|
|
23
|
-
KEY_HLS_AES = "key/hls/aes",
|
|
24
|
-
TIME_SYNC = "time/sync"
|
|
25
|
-
}
|
|
26
|
-
export declare enum HttpResponseType {
|
|
27
|
-
ARRAYBUFFER = "arraybuffer",
|
|
28
|
-
BLOB = "blob",
|
|
29
|
-
DOCUMENT = "document",
|
|
30
|
-
JSON = "json",
|
|
31
|
-
TEXT = "text"
|
|
32
|
-
}
|
|
33
22
|
export type HttpRequestBody = ArrayBuffer | ArrayBufferView | Blob | FormData | string | Document | URLSearchParams;
|
|
34
23
|
export interface HttpResponseBodyTypeMap {
|
|
35
24
|
[HttpResponseType.ARRAYBUFFER]: ArrayBuffer;
|
|
@@ -38,11 +27,6 @@ export interface HttpResponseBodyTypeMap {
|
|
|
38
27
|
[HttpResponseType.JSON]: Record<string, unknown>;
|
|
39
28
|
[HttpResponseType.TEXT]: string;
|
|
40
29
|
}
|
|
41
|
-
export declare enum HttpRequestMethod {
|
|
42
|
-
GET = "GET",
|
|
43
|
-
POST = "POST",
|
|
44
|
-
HEAD = "HEAD"
|
|
45
|
-
}
|
|
46
30
|
export interface HttpTimingInformation {
|
|
47
31
|
sendTimestamp: number;
|
|
48
32
|
openedTimestamp: number;
|
|
@@ -85,13 +69,20 @@ export type NetworkDependencies = {
|
|
|
85
69
|
export declare enum NetworkExportNames {
|
|
86
70
|
NetworkAtom = "network-atom",
|
|
87
71
|
NetworkTask = "network-task",
|
|
88
|
-
FetchTask = "fetch-task"
|
|
72
|
+
FetchTask = "fetch-task",
|
|
73
|
+
HttpRequestType = "http-request-type",
|
|
74
|
+
HttpResponseType = "http-response-type",
|
|
75
|
+
HttpRequestMethod = "http-request-method",
|
|
76
|
+
NetworkMessageType = "network-message-type"
|
|
89
77
|
}
|
|
90
78
|
export type NetworkExports = {
|
|
91
79
|
[NetworkExportNames.NetworkAtom]: typeof createNetworkAtom;
|
|
92
80
|
[NetworkExportNames.NetworkTask]: typeof NetworkTask;
|
|
93
81
|
[NetworkExportNames.FetchTask]: typeof FetchTask;
|
|
82
|
+
[NetworkExportNames.HttpRequestType]: typeof HttpRequestType;
|
|
83
|
+
[NetworkExportNames.HttpResponseType]: typeof HttpResponseType;
|
|
84
|
+
[NetworkExportNames.HttpRequestMethod]: typeof HttpRequestMethod;
|
|
85
|
+
[NetworkExportNames.NetworkMessageType]: typeof NetworkMessageType;
|
|
94
86
|
};
|
|
95
87
|
type BaseExecutionContext = ContextHaving<NetworkDependencies, NetworkExports, BaseContext>;
|
|
96
88
|
export type NetworkPackageContext = ContextUsing<[StateEffect], BaseExecutionContext>;
|
|
97
|
-
export {};
|