@vindral/web-sdk 2.0.14 → 2.0.18
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/index.d.ts +59 -21
- package/package.json +1 -1
- package/web-sdk.esm.js +1 -1
- package/web-sdk.umd.js +1 -1
package/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ interface BaseCodedSample {
|
|
|
7
7
|
timescale: number;
|
|
8
8
|
duration: number;
|
|
9
9
|
data: ArrayBuffer;
|
|
10
|
+
compositionTimeOffset?: number;
|
|
10
11
|
}
|
|
11
12
|
interface CodedAudioSample extends BaseCodedSample {
|
|
12
13
|
type: "audio";
|
|
@@ -181,6 +182,7 @@ export interface PlaybackSource {
|
|
|
181
182
|
playbackRate?: number;
|
|
182
183
|
isActivated: boolean;
|
|
183
184
|
readonly seekTime: number;
|
|
185
|
+
readonly paused: boolean;
|
|
184
186
|
readonly isSeeking: boolean;
|
|
185
187
|
play(initiator: PlayInitiator): Promise<void>;
|
|
186
188
|
}
|
|
@@ -189,6 +191,7 @@ interface MediaElementOptions {
|
|
|
189
191
|
muted: boolean;
|
|
190
192
|
type: "audio" | "video";
|
|
191
193
|
logger: Logger;
|
|
194
|
+
poster?: string;
|
|
192
195
|
}
|
|
193
196
|
interface NeedsUserInputContext {
|
|
194
197
|
forAudio: boolean;
|
|
@@ -206,7 +209,7 @@ declare class MediaElement extends Emitter<MediaElementEvents> {
|
|
|
206
209
|
private _userProvidedMuted;
|
|
207
210
|
private _userHasProvidedInput;
|
|
208
211
|
isActivated: boolean;
|
|
209
|
-
constructor({ type, autoplay, muted, logger }: MediaElementOptions);
|
|
212
|
+
constructor({ type, autoplay, muted, logger, poster }: MediaElementOptions);
|
|
210
213
|
attach: (container: HTMLElement) => void;
|
|
211
214
|
get seekTime(): number;
|
|
212
215
|
get isSeeking(): boolean;
|
|
@@ -281,6 +284,7 @@ declare class PlaybackModule {
|
|
|
281
284
|
}
|
|
282
285
|
declare type Direction = "upgrade" | "downgrade" | "double downgrade" | "reconnect";
|
|
283
286
|
interface QualityOfServiceConfig {
|
|
287
|
+
cooldownTime: number;
|
|
284
288
|
maxBufferingEvents: {
|
|
285
289
|
last10Seconds: number;
|
|
286
290
|
last30Seconds: number;
|
|
@@ -300,6 +304,9 @@ interface QualityOfServiceConfig {
|
|
|
300
304
|
interface AdaptivityEvents {
|
|
301
305
|
["adapt level"]: Readonly<Direction>;
|
|
302
306
|
}
|
|
307
|
+
interface AdaptivityStatistics {
|
|
308
|
+
isAbrEnabled: boolean;
|
|
309
|
+
}
|
|
303
310
|
interface QualityOfServiceSource {
|
|
304
311
|
getMetrics(): Metrics;
|
|
305
312
|
getLevelStats(level: RenditionLevel): PerLevelStats | undefined;
|
|
@@ -317,7 +324,6 @@ declare class AdaptivityModule {
|
|
|
317
324
|
private logger;
|
|
318
325
|
private isSuspended;
|
|
319
326
|
private lastAdaptTime;
|
|
320
|
-
private cooldownTime;
|
|
321
327
|
isEnabled: boolean;
|
|
322
328
|
constructor(emitter: Emitter<AdaptivityEvents>, logger: Logger, qualityOfServiceSource: QualityOfServiceSource, config: Partial<QualityOfServiceConfig>);
|
|
323
329
|
static create: (emitter: Emitter<AdaptivityEvents>, logger: Logger, qualityOfServiceSource: QualityOfServiceSource, config?: Partial<QualityOfServiceConfig>) => AdaptivityModule;
|
|
@@ -326,6 +332,7 @@ declare class AdaptivityModule {
|
|
|
326
332
|
suspend: () => void;
|
|
327
333
|
unsuspend: () => void;
|
|
328
334
|
reset: () => void;
|
|
335
|
+
getStatistics: () => AdaptivityStatistics;
|
|
329
336
|
isQoSOk: (renditionLevel: RenditionLevel) => boolean;
|
|
330
337
|
private onBufferState;
|
|
331
338
|
private onAdaptedLevel;
|
|
@@ -368,6 +375,7 @@ declare class AudioPlayerModule {
|
|
|
368
375
|
get isSeeking(): boolean;
|
|
369
376
|
get muted(): boolean;
|
|
370
377
|
set muted(muted: boolean);
|
|
378
|
+
get paused(): boolean;
|
|
371
379
|
get currentTime(): number;
|
|
372
380
|
set currentTime(currentTime: number);
|
|
373
381
|
constructor(emitter: Emitter<AudioPlayerModuleListeners, AudioPlayerModuleEvents>, logger: Logger, clockSource: ClockSource, muted: boolean);
|
|
@@ -441,6 +449,7 @@ interface ConnectionStatistics {
|
|
|
441
449
|
estimatedBandwidth: number;
|
|
442
450
|
edgeUrl?: string;
|
|
443
451
|
connectCount: number;
|
|
452
|
+
connectionAttemptCount: number;
|
|
444
453
|
}
|
|
445
454
|
declare class ConnectionModule {
|
|
446
455
|
private static PING_INTERVAL;
|
|
@@ -480,7 +489,7 @@ declare class ConnectionModule {
|
|
|
480
489
|
private onTransportChange;
|
|
481
490
|
disconnect: (reason?: string) => void;
|
|
482
491
|
reconnect: (reason: string) => void;
|
|
483
|
-
private
|
|
492
|
+
private cleanupPingIntervals;
|
|
484
493
|
private sendPing;
|
|
485
494
|
}
|
|
486
495
|
interface Size {
|
|
@@ -803,6 +812,9 @@ interface MseModuleListeners {
|
|
|
803
812
|
["init segment"]: Readonly<InitSegment>;
|
|
804
813
|
["coded sample"]: Readonly<CodedSample>;
|
|
805
814
|
}
|
|
815
|
+
interface MseModuleStatistics {
|
|
816
|
+
quotaErrorCount: number;
|
|
817
|
+
}
|
|
806
818
|
declare class MseModule {
|
|
807
819
|
private logger;
|
|
808
820
|
private timers;
|
|
@@ -814,9 +826,11 @@ declare class MseModule {
|
|
|
814
826
|
private autoRecoverFromMediaErrors;
|
|
815
827
|
private pendingSamples;
|
|
816
828
|
private isWorkingOnPendingSamples;
|
|
829
|
+
private quotaErrorCount;
|
|
817
830
|
constructor(logger: Logger, emitter: Emitter<MseModuleListeners, MseModuleEvents>, mediaElement: HTMLMediaElement, tracks: Track[]);
|
|
818
831
|
static create: (logger: Logger, emitter: Emitter<MseModuleListeners, MseModuleEvents>, mediaElement: HTMLMediaElement, tracks: Track[]) => Promise<MseModule>;
|
|
819
832
|
unload: () => void;
|
|
833
|
+
getStatistics: () => MseModuleStatistics;
|
|
820
834
|
private open;
|
|
821
835
|
getBuffer: (type: Type) => TimeRange[];
|
|
822
836
|
init: (initSegment: Readonly<InitSegment>) => void;
|
|
@@ -868,6 +882,7 @@ interface QualityOfServiceModuleStatistics {
|
|
|
868
882
|
};
|
|
869
883
|
}
|
|
870
884
|
declare class QualityOfServiceModule {
|
|
885
|
+
private readonly minBufferFullnessLengthForRegression;
|
|
871
886
|
private logger;
|
|
872
887
|
private emitter;
|
|
873
888
|
private timers;
|
|
@@ -923,12 +938,14 @@ declare class SubscriptionModule {
|
|
|
923
938
|
private currentSubscription;
|
|
924
939
|
private _isSwitchingSubscription;
|
|
925
940
|
private pendingSubscriptionTimeoutId?;
|
|
941
|
+
private burstMs;
|
|
926
942
|
private constructor();
|
|
927
943
|
unload: () => void;
|
|
928
944
|
static create: (logger: Logger, emitter: Emitter<SubscriptionModuleListeners>, subscription: Subscription) => SubscriptionModule;
|
|
929
945
|
isSwitchingSubscription: () => boolean;
|
|
930
946
|
getTargetSubscription: () => Subscription;
|
|
931
947
|
getCurrentSubscription: () => Subscription;
|
|
948
|
+
enableBurst: (bufferTimeMs: number) => void;
|
|
932
949
|
setSize: (size: Readonly<Size>) => void;
|
|
933
950
|
setVideoConstraint: (constraint: VideoConstraint) => void;
|
|
934
951
|
setAudioConstraint: (constraint: AudioConstraint) => void;
|
|
@@ -938,6 +955,7 @@ declare class SubscriptionModule {
|
|
|
938
955
|
setLanguage: (language: string | undefined) => void;
|
|
939
956
|
setVideoCodec: (videoCodec: VideoCodec | undefined) => void;
|
|
940
957
|
setAudioCodec: (audioCodec: AudioCodec | undefined) => void;
|
|
958
|
+
private setBurst;
|
|
941
959
|
private onSubscriptionChanged;
|
|
942
960
|
private scheduleSubscriptionChange;
|
|
943
961
|
}
|
|
@@ -964,8 +982,9 @@ interface BufferSource {
|
|
|
964
982
|
interface SyncModuleStatistics {
|
|
965
983
|
drift: number | undefined;
|
|
966
984
|
driftAdjustmentCount: number;
|
|
967
|
-
|
|
985
|
+
timeshiftDriftAdjustmentCount: number;
|
|
968
986
|
discardedTimeInfoCount: number;
|
|
987
|
+
seekTime: number;
|
|
969
988
|
}
|
|
970
989
|
declare class SyncModule {
|
|
971
990
|
private emitter;
|
|
@@ -973,25 +992,29 @@ declare class SyncModule {
|
|
|
973
992
|
private playbackSource;
|
|
974
993
|
private bufferSource;
|
|
975
994
|
private lastSeekTime;
|
|
976
|
-
readonly seekCooldownTime =
|
|
995
|
+
readonly seekCooldownTime = 1000;
|
|
996
|
+
readonly seekTimeoutTime = 5000;
|
|
977
997
|
readonly syncMaxBehind: number;
|
|
978
998
|
readonly syncMaxBehindMultiplierStep = 1;
|
|
979
|
-
readonly syncMaxBehindIncreaseEvery =
|
|
980
|
-
readonly syncMaxBehindMaximumAllowed =
|
|
999
|
+
readonly syncMaxBehindIncreaseEvery = 3;
|
|
1000
|
+
readonly syncMaxBehindMaximumAllowed = 2000;
|
|
981
1001
|
syncMaxBehindMultiplier: number;
|
|
982
1002
|
readonly syncMaxAhead = 150;
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
1003
|
+
timeshiftSync: {
|
|
1004
|
+
enabled: boolean;
|
|
1005
|
+
maxBehind: number;
|
|
1006
|
+
multiplier: number;
|
|
1007
|
+
maxBehindAllowed: number;
|
|
1008
|
+
overshoot: number;
|
|
1009
|
+
minOvershootAllowed: number;
|
|
1010
|
+
maxOvershootAllowed: number;
|
|
988
1011
|
};
|
|
989
|
-
readonly maxTimeSyncDifferenceTolerance =
|
|
1012
|
+
readonly maxTimeSyncDifferenceTolerance = 150;
|
|
990
1013
|
private timers;
|
|
991
1014
|
private rtt;
|
|
992
1015
|
private channelSyncInfo;
|
|
993
1016
|
private driftAdjustmentsCount;
|
|
994
|
-
private
|
|
1017
|
+
private timeshiftDriftAdjustmentCount;
|
|
995
1018
|
private timestampOffset?;
|
|
996
1019
|
private currentChannelId?;
|
|
997
1020
|
private highestSeenTimestamps;
|
|
@@ -1004,34 +1027,38 @@ declare class SyncModule {
|
|
|
1004
1027
|
suspend: () => void;
|
|
1005
1028
|
unsuspend: () => void;
|
|
1006
1029
|
activateSyncAdjustments: () => void;
|
|
1007
|
-
static create: (emitter: Emitter<SyncModuleListeners, SyncModuleEvents>, logger: Logger, playbackSource: PlaybackSource, bufferSource: BufferSource,
|
|
1030
|
+
static create: (emitter: Emitter<SyncModuleListeners, SyncModuleEvents>, logger: Logger, playbackSource: PlaybackSource, bufferSource: BufferSource, isTimeshiftSyncEnabled: boolean) => SyncModule;
|
|
1008
1031
|
reset: () => void;
|
|
1009
1032
|
getTimeshiftOffset: () => number;
|
|
1010
1033
|
getCurrentChannelId: () => string | undefined;
|
|
1011
1034
|
updateChannelSyncInfo(channelId: string, syncInfo: SyncInfo): void;
|
|
1035
|
+
private tryApplySyncInfo;
|
|
1012
1036
|
getLiveEdgeTime: (channelId: string) => number | undefined;
|
|
1013
1037
|
getLiveEdgeTimeLatencyAdjusted: (channelId: string) => number | undefined;
|
|
1014
1038
|
getWallclockTime: (channelId: string) => number | undefined;
|
|
1015
1039
|
getWallclockTimeLatencyAdjusted: (channelId: string) => number | undefined;
|
|
1016
1040
|
get serverCurrentTime(): number;
|
|
1041
|
+
get channelCurrentTime(): number;
|
|
1017
1042
|
processSample: <T extends SyncSample>(sample: T) => T;
|
|
1018
1043
|
getStatistics: () => SyncModuleStatistics;
|
|
1019
1044
|
get drift(): number | undefined;
|
|
1020
1045
|
private updateRtt;
|
|
1021
1046
|
isPlaybackSourceReadyToSeek: () => boolean;
|
|
1047
|
+
private isSeeking;
|
|
1022
1048
|
private isAllowedToSync;
|
|
1023
1049
|
private isSeekCooldownExpired;
|
|
1050
|
+
private isSeekTimeoutExpired;
|
|
1051
|
+
private currentTimeshiftMaxBehind;
|
|
1024
1052
|
private currentSyncMaxBehind;
|
|
1053
|
+
private currentSyncMaxAhead;
|
|
1054
|
+
private tryTimeshiftSync;
|
|
1025
1055
|
private onSync;
|
|
1026
|
-
playbackRateSync: (drift: number, playbackRate: number) => [
|
|
1027
|
-
boolean,
|
|
1028
|
-
number
|
|
1029
|
-
];
|
|
1030
1056
|
}
|
|
1031
1057
|
declare const defaultOptions: {
|
|
1032
1058
|
sizeBasedResolutionCapEnabled: boolean;
|
|
1033
1059
|
pictureInPictureEnabled: boolean;
|
|
1034
1060
|
abrEnabled: boolean;
|
|
1061
|
+
burstEnabled: boolean;
|
|
1035
1062
|
mseEnabled: boolean;
|
|
1036
1063
|
mseOpusEnabled: boolean;
|
|
1037
1064
|
muted: boolean;
|
|
@@ -1043,6 +1070,7 @@ declare const defaultOptions: {
|
|
|
1043
1070
|
maxAudioBitRate: number;
|
|
1044
1071
|
tags: string[];
|
|
1045
1072
|
media: Media;
|
|
1073
|
+
posterEnabled: boolean;
|
|
1046
1074
|
reconnectHandler: (state: ReconnectState) => Promise<boolean> | boolean;
|
|
1047
1075
|
advanced: {
|
|
1048
1076
|
wasmDecodingConstraint: Partial<VideoConstraint>;
|
|
@@ -1117,6 +1145,7 @@ export declare class Vindral extends Emitter<PublicVindralEvents> {
|
|
|
1117
1145
|
get serverEdgeTime(): number | undefined;
|
|
1118
1146
|
get serverWallclockTime(): number | undefined;
|
|
1119
1147
|
get currentTime(): number;
|
|
1148
|
+
get channelCurrentTime(): number;
|
|
1120
1149
|
get targetBufferTime(): number;
|
|
1121
1150
|
set targetBufferTime(bufferTimeMs: number);
|
|
1122
1151
|
get playbackLatency(): number | undefined;
|
|
@@ -1145,6 +1174,7 @@ export declare class Vindral extends Emitter<PublicVindralEvents> {
|
|
|
1145
1174
|
get timeSpentBuffering(): number;
|
|
1146
1175
|
get timeActive(): number;
|
|
1147
1176
|
getOptions: () => Options & typeof defaultOptions;
|
|
1177
|
+
getThumbnailUrl: () => string;
|
|
1148
1178
|
updateAuthenticationToken: (token: string) => void;
|
|
1149
1179
|
connect: () => void;
|
|
1150
1180
|
getCastOptions: () => Options;
|
|
@@ -1203,6 +1233,7 @@ declare class TelemetryModule {
|
|
|
1203
1233
|
private unsentLines;
|
|
1204
1234
|
private retries;
|
|
1205
1235
|
private errorCount;
|
|
1236
|
+
private statsCount;
|
|
1206
1237
|
private constructor();
|
|
1207
1238
|
unload: () => void;
|
|
1208
1239
|
static create: (logger: Logger, emitter: Emitter<TelemetryModuleListeners, unknown>, options: TelemetryModuleOptions, statisticsSource: TelemetryStatisticsSource) => TelemetryModule;
|
|
@@ -1306,12 +1337,14 @@ export interface Options {
|
|
|
1306
1337
|
maxBufferTime?: number;
|
|
1307
1338
|
sizeBasedResolutionCapEnabled?: boolean;
|
|
1308
1339
|
pictureInPictureEnabled?: boolean;
|
|
1340
|
+
burstEnabled?: boolean;
|
|
1309
1341
|
mseEnabled?: boolean;
|
|
1310
1342
|
mseOpusEnabled?: boolean;
|
|
1311
1343
|
abrEnabled?: boolean;
|
|
1312
1344
|
maxSize?: Size;
|
|
1313
1345
|
maxAudioBitRate?: number;
|
|
1314
1346
|
maxVideoBitRate?: number;
|
|
1347
|
+
posterEnabled?: boolean;
|
|
1315
1348
|
muted?: boolean;
|
|
1316
1349
|
reconnectHandler?: (state: ReconnectState) => Promise<boolean> | boolean;
|
|
1317
1350
|
tags?: string[];
|
|
@@ -1372,12 +1405,16 @@ interface AudioRenditionProps {
|
|
|
1372
1405
|
channels: number;
|
|
1373
1406
|
sampleRate: number;
|
|
1374
1407
|
}
|
|
1408
|
+
interface CodecProps {
|
|
1409
|
+
codec: Codec;
|
|
1410
|
+
codecString?: string;
|
|
1411
|
+
}
|
|
1375
1412
|
export declare type VideoRendition = VideoRenditionProps & RenditionProps;
|
|
1376
1413
|
export declare type AudioRendition = AudioRenditionProps & RenditionProps;
|
|
1377
1414
|
export declare type Rendition = VideoRendition | AudioRendition;
|
|
1378
1415
|
export declare const isVideoRendition: (rendition: Readonly<Rendition>) => rendition is VideoRendition;
|
|
1379
1416
|
export declare const isAudioRendition: (rendition: Readonly<Rendition>) => rendition is AudioRendition;
|
|
1380
|
-
export declare const getMimeType: (rendition: Readonly<
|
|
1417
|
+
export declare const getMimeType: (rendition: Readonly<CodecProps>) => string;
|
|
1381
1418
|
interface AudioConstraint {
|
|
1382
1419
|
bitRate: number;
|
|
1383
1420
|
codec?: AudioCodec;
|
|
@@ -1396,6 +1433,7 @@ interface Subscription {
|
|
|
1396
1433
|
channelId: string;
|
|
1397
1434
|
video: VideoConstraint;
|
|
1398
1435
|
audio: AudioConstraint;
|
|
1436
|
+
burstMs?: number;
|
|
1399
1437
|
meta?: Record<string, string>;
|
|
1400
1438
|
initiator?: SubscriptionInitiator;
|
|
1401
1439
|
}
|
|
@@ -1531,6 +1569,7 @@ export declare class CastSender extends Emitter<CastSenderEvents> {
|
|
|
1531
1569
|
init: () => Promise<void>;
|
|
1532
1570
|
start: () => Promise<void>;
|
|
1533
1571
|
stop: () => void;
|
|
1572
|
+
getReceiverName: () => string | undefined;
|
|
1534
1573
|
private onGCastApiAvailable;
|
|
1535
1574
|
private send;
|
|
1536
1575
|
private onMessage;
|
|
@@ -1538,7 +1577,6 @@ export declare class CastSender extends Emitter<CastSenderEvents> {
|
|
|
1538
1577
|
private onSessionStateChanged;
|
|
1539
1578
|
private getInstance;
|
|
1540
1579
|
private getSession;
|
|
1541
|
-
private getReceiverName;
|
|
1542
1580
|
private castLibrariesAdded;
|
|
1543
1581
|
private verifyCastLibraries;
|
|
1544
1582
|
}
|
package/package.json
CHANGED