@vindral/web-sdk 2.0.15 → 2.0.16

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 CHANGED
@@ -182,6 +182,7 @@ export interface PlaybackSource {
182
182
  playbackRate?: number;
183
183
  isActivated: boolean;
184
184
  readonly seekTime: number;
185
+ readonly paused: boolean;
185
186
  readonly isSeeking: boolean;
186
187
  play(initiator: PlayInitiator): Promise<void>;
187
188
  }
@@ -369,6 +370,7 @@ declare class AudioPlayerModule {
369
370
  get isSeeking(): boolean;
370
371
  get muted(): boolean;
371
372
  set muted(muted: boolean);
373
+ get paused(): boolean;
372
374
  get currentTime(): number;
373
375
  set currentTime(currentTime: number);
374
376
  constructor(emitter: Emitter<AudioPlayerModuleListeners, AudioPlayerModuleEvents>, logger: Logger, clockSource: ClockSource, muted: boolean);
@@ -481,7 +483,7 @@ declare class ConnectionModule {
481
483
  private onTransportChange;
482
484
  disconnect: (reason?: string) => void;
483
485
  reconnect: (reason: string) => void;
484
- private cleanupOnDisconnect;
486
+ private cleanupPingIntervals;
485
487
  private sendPing;
486
488
  }
487
489
  interface Size {
@@ -924,12 +926,14 @@ declare class SubscriptionModule {
924
926
  private currentSubscription;
925
927
  private _isSwitchingSubscription;
926
928
  private pendingSubscriptionTimeoutId?;
929
+ private burstMs;
927
930
  private constructor();
928
931
  unload: () => void;
929
932
  static create: (logger: Logger, emitter: Emitter<SubscriptionModuleListeners>, subscription: Subscription) => SubscriptionModule;
930
933
  isSwitchingSubscription: () => boolean;
931
934
  getTargetSubscription: () => Subscription;
932
935
  getCurrentSubscription: () => Subscription;
936
+ enableBurst: (bufferTimeMs: number) => void;
933
937
  setSize: (size: Readonly<Size>) => void;
934
938
  setVideoConstraint: (constraint: VideoConstraint) => void;
935
939
  setAudioConstraint: (constraint: AudioConstraint) => void;
@@ -939,6 +943,7 @@ declare class SubscriptionModule {
939
943
  setLanguage: (language: string | undefined) => void;
940
944
  setVideoCodec: (videoCodec: VideoCodec | undefined) => void;
941
945
  setAudioCodec: (audioCodec: AudioCodec | undefined) => void;
946
+ private setBurst;
942
947
  private onSubscriptionChanged;
943
948
  private scheduleSubscriptionChange;
944
949
  }
@@ -965,8 +970,9 @@ interface BufferSource {
965
970
  interface SyncModuleStatistics {
966
971
  drift: number | undefined;
967
972
  driftAdjustmentCount: number;
968
- playbackRateAdjustmentCount: number;
973
+ timeshiftDriftAdjustmentCount: number;
969
974
  discardedTimeInfoCount: number;
975
+ seekTime: number;
970
976
  }
971
977
  declare class SyncModule {
972
978
  private emitter;
@@ -974,25 +980,29 @@ declare class SyncModule {
974
980
  private playbackSource;
975
981
  private bufferSource;
976
982
  private lastSeekTime;
977
- readonly seekCooldownTime = 5000;
983
+ readonly seekCooldownTime = 1000;
984
+ readonly seekTimeoutTime = 3000;
978
985
  readonly syncMaxBehind: number;
979
986
  readonly syncMaxBehindMultiplierStep = 1;
980
987
  readonly syncMaxBehindIncreaseEvery = 5;
981
988
  readonly syncMaxBehindMaximumAllowed = 1000;
982
989
  syncMaxBehindMultiplier: number;
983
990
  readonly syncMaxAhead = 150;
984
- readonly playbackRateSyncConstants: {
985
- readonly enabled: true;
986
- readonly maxBehind: 1000;
987
- readonly catchupRate: 1.05;
988
- readonly slowdownRate: 0.95;
991
+ timeshiftSync: {
992
+ enabled: boolean;
993
+ maxBehind: number;
994
+ multiplier: number;
995
+ maxBehindAllowed: number;
996
+ overshoot: number;
997
+ minOvershootAllowed: number;
998
+ maxOvershootAllowed: number;
989
999
  };
990
- readonly maxTimeSyncDifferenceTolerance = 20;
1000
+ readonly maxTimeSyncDifferenceTolerance = 150;
991
1001
  private timers;
992
1002
  private rtt;
993
1003
  private channelSyncInfo;
994
1004
  private driftAdjustmentsCount;
995
- private playbackRateAdjustmentCount;
1005
+ private timeshiftDriftAdjustmentCount;
996
1006
  private timestampOffset?;
997
1007
  private currentChannelId?;
998
1008
  private highestSeenTimestamps;
@@ -1005,11 +1015,12 @@ declare class SyncModule {
1005
1015
  suspend: () => void;
1006
1016
  unsuspend: () => void;
1007
1017
  activateSyncAdjustments: () => void;
1008
- static create: (emitter: Emitter<SyncModuleListeners, SyncModuleEvents>, logger: Logger, playbackSource: PlaybackSource, bufferSource: BufferSource, syncMaxBehind: number) => SyncModule;
1018
+ static create: (emitter: Emitter<SyncModuleListeners, SyncModuleEvents>, logger: Logger, playbackSource: PlaybackSource, bufferSource: BufferSource, isTimeshiftSyncEnabled: boolean) => SyncModule;
1009
1019
  reset: () => void;
1010
1020
  getTimeshiftOffset: () => number;
1011
1021
  getCurrentChannelId: () => string | undefined;
1012
1022
  updateChannelSyncInfo(channelId: string, syncInfo: SyncInfo): void;
1023
+ private tryApplySyncInfo;
1013
1024
  getLiveEdgeTime: (channelId: string) => number | undefined;
1014
1025
  getLiveEdgeTimeLatencyAdjusted: (channelId: string) => number | undefined;
1015
1026
  getWallclockTime: (channelId: string) => number | undefined;
@@ -1020,19 +1031,21 @@ declare class SyncModule {
1020
1031
  get drift(): number | undefined;
1021
1032
  private updateRtt;
1022
1033
  isPlaybackSourceReadyToSeek: () => boolean;
1034
+ private isSeeking;
1023
1035
  private isAllowedToSync;
1024
1036
  private isSeekCooldownExpired;
1037
+ private isSeekTimeoutExpired;
1038
+ private currentTimeshiftMaxBehind;
1025
1039
  private currentSyncMaxBehind;
1040
+ private currentSyncMaxAhead;
1041
+ private tryTimeshiftSync;
1026
1042
  private onSync;
1027
- playbackRateSync: (drift: number, playbackRate: number) => [
1028
- boolean,
1029
- number
1030
- ];
1031
1043
  }
1032
1044
  declare const defaultOptions: {
1033
1045
  sizeBasedResolutionCapEnabled: boolean;
1034
1046
  pictureInPictureEnabled: boolean;
1035
1047
  abrEnabled: boolean;
1048
+ burstEnabled: boolean;
1036
1049
  mseEnabled: boolean;
1037
1050
  mseOpusEnabled: boolean;
1038
1051
  muted: boolean;
@@ -1307,6 +1320,7 @@ export interface Options {
1307
1320
  maxBufferTime?: number;
1308
1321
  sizeBasedResolutionCapEnabled?: boolean;
1309
1322
  pictureInPictureEnabled?: boolean;
1323
+ burstEnabled?: boolean;
1310
1324
  mseEnabled?: boolean;
1311
1325
  mseOpusEnabled?: boolean;
1312
1326
  abrEnabled?: boolean;
@@ -1397,6 +1411,7 @@ interface Subscription {
1397
1411
  channelId: string;
1398
1412
  video: VideoConstraint;
1399
1413
  audio: AudioConstraint;
1414
+ burstMs?: number;
1400
1415
  meta?: Record<string, string>;
1401
1416
  initiator?: SubscriptionInitiator;
1402
1417
  }
@@ -1532,6 +1547,7 @@ export declare class CastSender extends Emitter<CastSenderEvents> {
1532
1547
  init: () => Promise<void>;
1533
1548
  start: () => Promise<void>;
1534
1549
  stop: () => void;
1550
+ getReceiverName: () => string | undefined;
1535
1551
  private onGCastApiAvailable;
1536
1552
  private send;
1537
1553
  private onMessage;
@@ -1539,7 +1555,6 @@ export declare class CastSender extends Emitter<CastSenderEvents> {
1539
1555
  private onSessionStateChanged;
1540
1556
  private getInstance;
1541
1557
  private getSession;
1542
- private getReceiverName;
1543
1558
  private castLibrariesAdded;
1544
1559
  private verifyCastLibraries;
1545
1560
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vindral/web-sdk",
3
- "version": "2.0.15",
3
+ "version": "2.0.16",
4
4
  "homepage": "https://vindral.com",
5
5
  "description": "Web SDK for viewing Vindral streams",
6
6
  "license": "SEE LICENSE IN https://www.vindral.com/terms-conditions",