@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.4.7 → 1.0.1
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/.lintstagedrc.mjs +7 -0
- package/dist/{commonjs → cjs}/Config/Config.js +8 -0
- package/dist/cjs/Config/Config.js.map +1 -0
- package/dist/{commonjs → cjs}/Config/SettingBase.js +1 -3
- package/dist/cjs/Config/SettingBase.js.map +1 -0
- package/dist/{commonjs → cjs}/Config/SettingFlag.js +1 -3
- package/dist/cjs/Config/SettingFlag.js.map +1 -0
- package/dist/{commonjs → cjs}/Config/SettingNumber.js +1 -3
- package/dist/cjs/Config/SettingNumber.js.map +1 -0
- package/dist/{commonjs → cjs}/Config/SettingOption.js +2 -6
- package/dist/cjs/Config/SettingOption.js.map +1 -0
- package/dist/{commonjs → cjs}/Config/SettingText.js +1 -3
- package/dist/cjs/Config/SettingText.js.map +1 -0
- package/dist/{commonjs → cjs}/Inputs/GamepadController.js +0 -2
- package/dist/cjs/Inputs/GamepadController.js.map +1 -0
- package/dist/{commonjs → cjs}/PeerConnectionController/AggregatedStats.js +103 -45
- package/dist/cjs/PeerConnectionController/AggregatedStats.js.map +1 -0
- package/dist/{commonjs → cjs}/PeerConnectionController/InboundRTPStats.js.map +1 -1
- package/dist/cjs/PeerConnectionController/LatencyCalculator.js +290 -0
- package/dist/cjs/PeerConnectionController/LatencyCalculator.js.map +1 -0
- package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js +21 -0
- package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
- package/dist/{commonjs → cjs}/PeerConnectionController/PeerConnectionController.js +53 -19
- package/dist/cjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
- package/dist/{commonjs → cjs}/PixelStreaming/PixelStreaming.js +24 -3
- package/dist/cjs/PixelStreaming/PixelStreaming.js.map +1 -0
- package/dist/{commonjs → cjs}/Util/EventEmitter.js +38 -1
- package/dist/cjs/Util/EventEmitter.js.map +1 -0
- package/dist/{commonjs → cjs}/WebRtcPlayer/WebRtcPlayerController.js +41 -5
- package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
- package/dist/cjs/__test__/mockMediaStream.js +100 -0
- package/dist/cjs/__test__/mockMediaStream.js.map +1 -0
- package/dist/cjs/__test__/mockRTCPeerConnection.js +252 -0
- package/dist/cjs/__test__/mockRTCPeerConnection.js.map +1 -0
- package/dist/cjs/__test__/mockRTCRtpReceiver.js +26 -0
- package/dist/cjs/__test__/mockRTCRtpReceiver.js.map +1 -0
- package/dist/cjs/__test__/mockWebSocket.js +109 -0
- package/dist/cjs/__test__/mockWebSocket.js.map +1 -0
- package/dist/{commonjs → cjs}/pixelstreamingfrontend.js +4 -2
- package/dist/{commonjs → cjs}/pixelstreamingfrontend.js.map +1 -1
- package/dist/esm/Config/Config.js +8 -0
- package/dist/esm/Config/Config.js.map +1 -1
- package/dist/esm/Config/SettingBase.js +1 -3
- package/dist/esm/Config/SettingBase.js.map +1 -1
- package/dist/esm/Config/SettingFlag.js +1 -3
- package/dist/esm/Config/SettingFlag.js.map +1 -1
- package/dist/esm/Config/SettingNumber.js +1 -3
- package/dist/esm/Config/SettingNumber.js.map +1 -1
- package/dist/esm/Config/SettingOption.js +2 -6
- package/dist/esm/Config/SettingOption.js.map +1 -1
- package/dist/esm/Config/SettingText.js +1 -3
- package/dist/esm/Config/SettingText.js.map +1 -1
- package/dist/esm/Inputs/GamepadController.js +0 -2
- package/dist/esm/Inputs/GamepadController.js.map +1 -1
- package/dist/esm/PeerConnectionController/AggregatedStats.js +104 -46
- package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/LatencyCalculator.js +284 -0
- package/dist/esm/PeerConnectionController/LatencyCalculator.js.map +1 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +8 -4
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
- package/dist/esm/PeerConnectionController/PeerConnectionController.js +52 -18
- package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
- package/dist/esm/PixelStreaming/PixelStreaming.js +25 -4
- package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
- package/dist/esm/Util/EventEmitter.js +33 -0
- package/dist/esm/Util/EventEmitter.js.map +1 -1
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +42 -6
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
- package/dist/esm/__test__/mockMediaStream.js +92 -0
- package/dist/esm/__test__/mockMediaStream.js.map +1 -0
- package/dist/esm/__test__/mockRTCPeerConnection.js +242 -0
- package/dist/esm/__test__/mockRTCPeerConnection.js.map +1 -0
- package/dist/esm/__test__/mockRTCRtpReceiver.js +21 -0
- package/dist/esm/__test__/mockRTCRtpReceiver.js.map +1 -0
- package/dist/esm/__test__/mockWebSocket.js +103 -0
- package/dist/esm/__test__/mockWebSocket.js.map +1 -0
- package/dist/esm/pixelstreamingfrontend.js +2 -1
- package/dist/esm/pixelstreamingfrontend.js.map +1 -1
- package/dist/types/Config/Config.d.ts +2 -0
- package/dist/types/PeerConnectionController/AggregatedStats.d.ts +18 -7
- package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +88 -85
- package/dist/types/PeerConnectionController/LatencyCalculator.d.ts +87 -0
- package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +46 -12
- package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +17 -3
- package/dist/types/PixelStreaming/PixelStreaming.d.ts +17 -3
- package/dist/types/Util/EventEmitter.d.ts +41 -1
- package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -1
- package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +4 -1
- package/dist/types/__test__/mockMediaStream.d.ts +49 -0
- package/dist/types/__test__/mockRTCPeerConnection.d.ts +134 -0
- package/dist/types/__test__/mockRTCRtpReceiver.d.ts +3 -0
- package/dist/types/__test__/mockWebSocket.d.ts +33 -0
- package/dist/types/pixelstreamingfrontend.d.ts +2 -1
- package/eslint.config.mjs +52 -0
- package/package.json +47 -45
- package/src/Config/Config.ts +30 -0
- package/src/Config/SettingBase.ts +1 -1
- package/src/Config/SettingFlag.ts +1 -1
- package/src/Config/SettingNumber.ts +1 -1
- package/src/Config/SettingOption.ts +2 -2
- package/src/Config/SettingText.ts +1 -1
- package/src/Inputs/GamepadController.ts +2 -2
- package/src/PeerConnectionController/AggregatedStats.ts +111 -52
- package/src/PeerConnectionController/InboundRTPStats.ts +88 -85
- package/src/PeerConnectionController/LatencyCalculator.ts +392 -0
- package/src/PeerConnectionController/OutBoundRTPStats.ts +46 -12
- package/src/PeerConnectionController/PeerConnectionController.ts +72 -19
- package/src/PixelStreaming/PixelStreaming.ts +34 -4
- package/src/Util/EventEmitter.ts +60 -0
- package/src/VideoPlayer/VideoPlayer.ts +1 -1
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +53 -7
- package/src/__test__/mockRTCPeerConnection.ts +1 -1
- package/src/pixelstreamingfrontend.ts +2 -1
- package/{tsconfig.json → tsconfig.base.json} +5 -3
- package/tsconfig.cjs.json +3 -5
- package/tsconfig.esm.json +3 -3
- package/tsconfig.jest.json +6 -6
- package/.eslintignore +0 -12
- package/.eslintrc.js +0 -20
- package/.prettierrc.json +0 -7
- package/dist/commonjs/Config/Config.js.map +0 -1
- package/dist/commonjs/Config/SettingBase.js.map +0 -1
- package/dist/commonjs/Config/SettingFlag.js.map +0 -1
- package/dist/commonjs/Config/SettingNumber.js.map +0 -1
- package/dist/commonjs/Config/SettingOption.js.map +0 -1
- package/dist/commonjs/Config/SettingText.js.map +0 -1
- package/dist/commonjs/Inputs/GamepadController.js.map +0 -1
- package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +0 -1
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +0 -17
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +0 -1
- package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +0 -1
- package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +0 -1
- package/dist/commonjs/Util/EventEmitter.js.map +0 -1
- package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +0 -1
- /package/dist/{commonjs → cjs}/AFK/AFKController.js +0 -0
- /package/dist/{commonjs → cjs}/AFK/AFKController.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelController.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelController.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelLatencyTestController.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelLatencyTestController.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelLatencyTestResults.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelLatencyTestResults.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelSender.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/DataChannelSender.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/InitialSettings.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/InitialSettings.js.map +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/LatencyTestResults.js +0 -0
- /package/dist/{commonjs → cjs}/DataChannel/LatencyTestResults.js.map +0 -0
- /package/dist/{commonjs → cjs}/FreezeFrame/FreezeFrame.js +0 -0
- /package/dist/{commonjs → cjs}/FreezeFrame/FreezeFrame.js.map +0 -0
- /package/dist/{commonjs → cjs}/FreezeFrame/FreezeFrameController.js +0 -0
- /package/dist/{commonjs → cjs}/FreezeFrame/FreezeFrameController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/GamepadTypes.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/GamepadTypes.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/IInputController.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/IInputController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/InputClassesFactory.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/InputClassesFactory.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/KeyCodes.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/KeyCodes.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/KeyboardController.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/KeyboardController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseButtons.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseButtons.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseController.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseControllerHovering.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseControllerHovering.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseControllerLocked.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/MouseControllerLocked.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/SpecialKeyCodes.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/SpecialKeyCodes.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/TouchController.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/TouchController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/TouchControllerFake.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/TouchControllerFake.js.map +0 -0
- /package/dist/{commonjs → cjs}/Inputs/XRGamepadController.js +0 -0
- /package/dist/{commonjs → cjs}/Inputs/XRGamepadController.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CandidatePairStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CandidatePairStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CandidateStat.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CandidateStat.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CodecStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/CodecStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/DataChannelStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/DataChannelStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/InboundRTPStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/InboundTrackStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/InboundTrackStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/SessionStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/SessionStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/StreamStats.js +0 -0
- /package/dist/{commonjs → cjs}/PeerConnectionController/StreamStats.js.map +0 -0
- /package/dist/{commonjs → cjs}/UI/OnScreenKeyboard.js +0 -0
- /package/dist/{commonjs → cjs}/UI/OnScreenKeyboard.js.map +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/ResponseController.js +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/ResponseController.js.map +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/SendMessageController.js +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/SendMessageController.js.map +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/StreamMessageController.js +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/StreamMessageController.js.map +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/ToStreamerMessagesController.js +0 -0
- /package/dist/{commonjs → cjs}/UeInstanceMessage/ToStreamerMessagesController.js.map +0 -0
- /package/dist/{commonjs → cjs}/Util/FileUtil.js +0 -0
- /package/dist/{commonjs → cjs}/Util/FileUtil.js.map +0 -0
- /package/dist/{commonjs → cjs}/Util/IURLSearchParams.js +0 -0
- /package/dist/{commonjs → cjs}/Util/IURLSearchParams.js.map +0 -0
- /package/dist/{commonjs → cjs}/Util/InputCoordTranslator.js +0 -0
- /package/dist/{commonjs → cjs}/Util/InputCoordTranslator.js.map +0 -0
- /package/dist/{commonjs → cjs}/Util/RTCUtils.js +0 -0
- /package/dist/{commonjs → cjs}/Util/RTCUtils.js.map +0 -0
- /package/dist/{commonjs → cjs}/VideoPlayer/StreamController.js +0 -0
- /package/dist/{commonjs → cjs}/VideoPlayer/StreamController.js.map +0 -0
- /package/dist/{commonjs → cjs}/VideoPlayer/VideoPlayer.js +0 -0
- /package/dist/{commonjs → cjs}/VideoPlayer/VideoPlayer.js.map +0 -0
- /package/dist/{commonjs → cjs}/WebXR/WebXRController.js +0 -0
- /package/dist/{commonjs → cjs}/WebXR/WebXRController.js.map +0 -0
|
@@ -8,6 +8,7 @@ import { WebXRController } from '../WebXR/WebXRController';
|
|
|
8
8
|
import { MessageDirection } from '../UeInstanceMessage/StreamMessageController';
|
|
9
9
|
import { DataChannelLatencyTestConfig, DataChannelLatencyTestController } from '../DataChannel/DataChannelLatencyTestController';
|
|
10
10
|
import { DataChannelLatencyTestResponse } from '../DataChannel/DataChannelLatencyTestResults';
|
|
11
|
+
import { LatencyInfo } from '../PeerConnectionController/LatencyCalculator';
|
|
11
12
|
export interface PixelStreamingOverrides {
|
|
12
13
|
/** The DOM element where Pixel Streaming video and user input event handlers are attached to.
|
|
13
14
|
* You can give an existing DOM element here. If not given, the library will create a new div element
|
|
@@ -109,15 +110,27 @@ export declare class PixelStreaming {
|
|
|
109
110
|
muteCamera(): void;
|
|
110
111
|
private setCameraMuted;
|
|
111
112
|
/**
|
|
112
|
-
*
|
|
113
|
+
* Internal function to emit an event when auto connecting occurs
|
|
113
114
|
*/
|
|
114
115
|
_onWebRtcAutoConnect(): void;
|
|
115
116
|
/**
|
|
116
|
-
*
|
|
117
|
+
* Internal function to emit an event for when SDP negotiation is fully finished.
|
|
117
118
|
*/
|
|
118
119
|
_onWebRtcSdp(): void;
|
|
119
120
|
/**
|
|
120
|
-
*
|
|
121
|
+
* Internal function to emit an SDP offer after it has been set.
|
|
122
|
+
*/
|
|
123
|
+
_onWebRtcSdpOffer(offer: RTCSessionDescriptionInit): void;
|
|
124
|
+
/**
|
|
125
|
+
* Internal function to emit an SDP answer after it has been set.
|
|
126
|
+
*/
|
|
127
|
+
_onWebRtcSdpAnswer(answer: RTCSessionDescriptionInit): void;
|
|
128
|
+
/**
|
|
129
|
+
* Internal function call to emit a `latencyCalculated` event.
|
|
130
|
+
*/
|
|
131
|
+
_onLatencyCalculated(latencyInfo: LatencyInfo): void;
|
|
132
|
+
/**
|
|
133
|
+
* Internal function to emits a StreamLoading event
|
|
121
134
|
*/
|
|
122
135
|
_onStreamLoading(): void;
|
|
123
136
|
/**
|
|
@@ -170,6 +183,7 @@ export declare class PixelStreaming {
|
|
|
170
183
|
*/
|
|
171
184
|
_onQualityControlOwnership(hasQualityOwnership: boolean): void;
|
|
172
185
|
_onPlayerCount(playerCount: number): void;
|
|
186
|
+
_onSubscribeFailed(message: string): void;
|
|
173
187
|
_setupWebRtcTCPRelayDetection(statsReceivedEvent: StatsReceivedEvent): void;
|
|
174
188
|
/**
|
|
175
189
|
* Request a connection latency test.
|
|
@@ -2,6 +2,7 @@ import { FlagsIds, NumericParametersIds, OptionParametersIds, TextParametersIds
|
|
|
2
2
|
import { LatencyTestResults } from '../DataChannel/LatencyTestResults';
|
|
3
3
|
import { AggregatedStats } from '../PeerConnectionController/AggregatedStats';
|
|
4
4
|
import { InitialSettings } from '../DataChannel/InitialSettings';
|
|
5
|
+
import { LatencyInfo } from '../PeerConnectionController/LatencyCalculator';
|
|
5
6
|
import { Messages } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
6
7
|
import { SettingFlag } from '../Config/SettingFlag';
|
|
7
8
|
import { SettingNumber } from '../Config/SettingNumber';
|
|
@@ -65,6 +66,28 @@ export declare class WebRtcSdpEvent extends Event {
|
|
|
65
66
|
readonly type: 'webRtcSdp';
|
|
66
67
|
constructor();
|
|
67
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* An event that is emitted after the SDP answer is set.
|
|
71
|
+
*/
|
|
72
|
+
export declare class WebRtcSdpAnswerEvent extends Event {
|
|
73
|
+
readonly type: 'webRtcSdpAnswer';
|
|
74
|
+
readonly data: {
|
|
75
|
+
/** The sdp answer */
|
|
76
|
+
sdp: RTCSessionDescriptionInit;
|
|
77
|
+
};
|
|
78
|
+
constructor(data: WebRtcSdpAnswerEvent['data']);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* An event that is emitted after the SDP offer is set.
|
|
82
|
+
*/
|
|
83
|
+
export declare class WebRtcSdpOfferEvent extends Event {
|
|
84
|
+
readonly type: 'webRtcSdpOffer';
|
|
85
|
+
readonly data: {
|
|
86
|
+
/** The sdp offer */
|
|
87
|
+
sdp: RTCSessionDescriptionInit;
|
|
88
|
+
};
|
|
89
|
+
constructor(data: WebRtcSdpOfferEvent['data']);
|
|
90
|
+
}
|
|
68
91
|
/**
|
|
69
92
|
* An event that is emitted when auto connecting.
|
|
70
93
|
*/
|
|
@@ -280,6 +303,16 @@ export declare class LatencyTestResultEvent extends Event {
|
|
|
280
303
|
};
|
|
281
304
|
constructor(data: LatencyTestResultEvent['data']);
|
|
282
305
|
}
|
|
306
|
+
/**
|
|
307
|
+
* An event that is emitted everytime latency is calculated using the WebRTC stats API.
|
|
308
|
+
*/
|
|
309
|
+
export declare class LatencyCalculatedEvent extends Event {
|
|
310
|
+
readonly type: 'latencyCalculated';
|
|
311
|
+
readonly data: {
|
|
312
|
+
latencyInfo: LatencyInfo;
|
|
313
|
+
};
|
|
314
|
+
constructor(data: LatencyCalculatedEvent['data']);
|
|
315
|
+
}
|
|
283
316
|
/**
|
|
284
317
|
* An event that is emitted when receiving data channel latency test response from server.
|
|
285
318
|
* This event is handled by DataChannelLatencyTestController
|
|
@@ -303,6 +336,13 @@ export declare class DataChannelLatencyTestResultEvent extends Event {
|
|
|
303
336
|
};
|
|
304
337
|
constructor(data: DataChannelLatencyTestResultEvent['data']);
|
|
305
338
|
}
|
|
339
|
+
export declare class SubscribeFailedEvent extends Event {
|
|
340
|
+
readonly type: 'subscribeFailed';
|
|
341
|
+
readonly data: {
|
|
342
|
+
message: string;
|
|
343
|
+
};
|
|
344
|
+
constructor(data: SubscribeFailedEvent['data']);
|
|
345
|
+
}
|
|
306
346
|
/**
|
|
307
347
|
* An event that is emitted when receiving initial settings from UE.
|
|
308
348
|
*/
|
|
@@ -401,7 +441,7 @@ export declare class WebRtcTCPRelayDetectedEvent extends Event {
|
|
|
401
441
|
readonly type: 'webRtcTCPRelayDetected';
|
|
402
442
|
constructor();
|
|
403
443
|
}
|
|
404
|
-
export type PixelStreamingEvent = AfkWarningActivateEvent | AfkWarningUpdateEvent | AfkWarningDeactivateEvent | AfkTimedOutEvent | VideoEncoderAvgQPEvent | WebRtcSdpEvent | WebRtcAutoConnectEvent | WebRtcConnectingEvent | WebRtcConnectedEvent | WebRtcFailedEvent | WebRtcDisconnectedEvent | DataChannelOpenEvent | DataChannelCloseEvent | DataChannelErrorEvent | VideoInitializedEvent | StreamLoadingEvent | StreamPreConnectEvent | StreamReconnectEvent | StreamPreDisconnectEvent | PlayStreamErrorEvent | PlayStreamEvent | PlayStreamRejectedEvent | LoadFreezeFrameEvent | HideFreezeFrameEvent | StatsReceivedEvent | StreamerListMessageEvent | StreamerIDChangedMessageEvent | LatencyTestResultEvent | DataChannelLatencyTestResponseEvent | DataChannelLatencyTestResultEvent | InitialSettingsEvent | SettingsChangedEvent | XrSessionStartedEvent | XrSessionEndedEvent | XrFrameEvent | PlayerCountEvent | WebRtcTCPRelayDetectedEvent;
|
|
444
|
+
export type PixelStreamingEvent = AfkWarningActivateEvent | AfkWarningUpdateEvent | AfkWarningDeactivateEvent | AfkTimedOutEvent | VideoEncoderAvgQPEvent | WebRtcSdpEvent | WebRtcSdpOfferEvent | WebRtcSdpAnswerEvent | WebRtcAutoConnectEvent | WebRtcConnectingEvent | WebRtcConnectedEvent | WebRtcFailedEvent | WebRtcDisconnectedEvent | DataChannelOpenEvent | DataChannelCloseEvent | DataChannelErrorEvent | VideoInitializedEvent | StreamLoadingEvent | StreamPreConnectEvent | StreamReconnectEvent | StreamPreDisconnectEvent | PlayStreamErrorEvent | PlayStreamEvent | PlayStreamRejectedEvent | LoadFreezeFrameEvent | HideFreezeFrameEvent | StatsReceivedEvent | StreamerListMessageEvent | StreamerIDChangedMessageEvent | LatencyCalculatedEvent | LatencyTestResultEvent | DataChannelLatencyTestResponseEvent | DataChannelLatencyTestResultEvent | SubscribeFailedEvent | InitialSettingsEvent | SettingsChangedEvent | XrSessionStartedEvent | XrSessionEndedEvent | XrFrameEvent | PlayerCountEvent | WebRtcTCPRelayDetectedEvent;
|
|
405
445
|
export declare class PixelStreamingEventEmitter extends EventTarget {
|
|
406
446
|
/**
|
|
407
447
|
* Dispatch a new event.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SignallingProtocol, ITransport, Messages } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
1
|
+
import { SignallingProtocol, ITransport, Messages, KeepaliveMonitor } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
2
2
|
import { StreamController } from '../VideoPlayer/StreamController';
|
|
3
3
|
import { FreezeFrameController } from '../FreezeFrame/FreezeFrameController';
|
|
4
4
|
import { AFKController } from '../AFK/AFKController';
|
|
@@ -66,6 +66,7 @@ export declare class WebRtcPlayerController {
|
|
|
66
66
|
subscribedStream: string;
|
|
67
67
|
signallingUrlBuilder: () => string;
|
|
68
68
|
autoJoinTimer: ReturnType<typeof setTimeout>;
|
|
69
|
+
keepalive: KeepaliveMonitor;
|
|
69
70
|
/**
|
|
70
71
|
*
|
|
71
72
|
* @param config - the frontend config object
|
|
@@ -180,10 +181,12 @@ export declare class WebRtcPlayerController {
|
|
|
180
181
|
* @param messageConfig - Config Message received from the signaling server
|
|
181
182
|
*/
|
|
182
183
|
handleOnConfigMessage(messageConfig: Messages.config): void;
|
|
184
|
+
handlePingMessage(pingMessage: Messages.ping): void;
|
|
183
185
|
/**
|
|
184
186
|
* Handles when the signalling server gives us the list of streamer ids.
|
|
185
187
|
*/
|
|
186
188
|
handleStreamerListMessage(messageStreamerList: Messages.streamerList): void;
|
|
189
|
+
handleSubscribeFailedMessage(subscribeFailedMessage: Messages.subscribeFailed): void;
|
|
187
190
|
handleStreamerIDChangedMessage(streamerIDChangedMessage: Messages.streamerIdChanged): void;
|
|
188
191
|
/**
|
|
189
192
|
* Handle the RTC Answer from the signaling server
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export declare class MockMediaStreamImpl implements MediaStream {
|
|
2
|
+
active: boolean;
|
|
3
|
+
id: string;
|
|
4
|
+
constructor(data?: MediaStream | MediaStreamTrack[]);
|
|
5
|
+
onaddtrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
|
|
6
|
+
onremovetrack: ((this: MediaStream, ev: MediaStreamTrackEvent) => any) | null;
|
|
7
|
+
addTrack(track: MediaStreamTrack): void;
|
|
8
|
+
clone(): MediaStream;
|
|
9
|
+
getAudioTracks(): MediaStreamTrack[];
|
|
10
|
+
getTrackById(trackId: string): MediaStreamTrack | null;
|
|
11
|
+
getTracks(): MediaStreamTrack[];
|
|
12
|
+
getVideoTracks(): MediaStreamTrack[];
|
|
13
|
+
removeTrack(track: MediaStreamTrack): void;
|
|
14
|
+
addEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
15
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
16
|
+
removeEventListener<K extends keyof MediaStreamEventMap>(type: K, listener: (this: MediaStream, ev: MediaStreamEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
|
|
17
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
|
|
18
|
+
dispatchEvent(event: Event): boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare class MockMediaStreamTrackImpl implements MediaStreamTrack {
|
|
21
|
+
contentHint: string;
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
id: string;
|
|
24
|
+
kind: string;
|
|
25
|
+
label: string;
|
|
26
|
+
muted: boolean;
|
|
27
|
+
readyState: MediaStreamTrackState;
|
|
28
|
+
constructor();
|
|
29
|
+
onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
|
|
30
|
+
onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
|
|
31
|
+
onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
|
|
32
|
+
applyConstraints(constraints?: MediaTrackConstraints | undefined): Promise<void>;
|
|
33
|
+
clone(): MediaStreamTrack;
|
|
34
|
+
getCapabilities(): MediaTrackCapabilities;
|
|
35
|
+
getConstraints(): MediaTrackConstraints;
|
|
36
|
+
getSettings(): MediaTrackSettings;
|
|
37
|
+
stop(): void;
|
|
38
|
+
addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
39
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
40
|
+
removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
|
|
41
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
|
|
42
|
+
dispatchEvent(event: Event): boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare const mockMediaStream: () => void;
|
|
45
|
+
export declare const unmockMediaStream: () => void;
|
|
46
|
+
export declare const mockHTMLMediaElement: (options: {
|
|
47
|
+
ableToPlay: boolean;
|
|
48
|
+
readyState?: number;
|
|
49
|
+
}) => void;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
export interface MockRTCPeerConnectionSpyFunctions {
|
|
2
|
+
constructorSpy: null | ((config: RTCConfiguration) => void);
|
|
3
|
+
closeSpy: null | (() => void);
|
|
4
|
+
setRemoteDescriptionSpy: null | ((description: RTCSessionDescriptionInit) => void);
|
|
5
|
+
setLocalDescriptionSpy: null | ((description: RTCLocalSessionDescriptionInit) => void);
|
|
6
|
+
createAnswerSpy: null | (() => void);
|
|
7
|
+
addTransceiverSpy: null | ((trackOrKind: string | MediaStreamTrack, init?: RTCRtpTransceiverInit | undefined) => void);
|
|
8
|
+
addIceCandidateSpy: null | ((candidate: RTCIceCandidateInit) => void);
|
|
9
|
+
sendDataSpy: null | ((data: ArrayBuffer) => void);
|
|
10
|
+
}
|
|
11
|
+
export interface MockRTCPeerConnectionTriggerFunctions {
|
|
12
|
+
triggerIceConnectionStateChange: null | ((state: RTCIceConnectionState) => void);
|
|
13
|
+
triggerOnTrack: null | ((data: RTCTrackEventInit) => void);
|
|
14
|
+
triggerOnIceCandidate: null | ((data: RTCPeerConnectionIceEventInit) => void);
|
|
15
|
+
triggerOnDataChannel: null | ((data: RTCDataChannelEventInit) => void);
|
|
16
|
+
}
|
|
17
|
+
export declare class MockRTCPeerConnectionImpl implements RTCPeerConnection {
|
|
18
|
+
canTrickleIceCandidates: boolean | null;
|
|
19
|
+
connectionState: RTCPeerConnectionState;
|
|
20
|
+
currentLocalDescription: RTCSessionDescription | null;
|
|
21
|
+
currentRemoteDescription: RTCSessionDescription | null;
|
|
22
|
+
iceConnectionState: RTCIceConnectionState;
|
|
23
|
+
iceGatheringState: RTCIceGatheringState;
|
|
24
|
+
localDescription: RTCSessionDescription | null;
|
|
25
|
+
pendingLocalDescription: RTCSessionDescription | null;
|
|
26
|
+
pendingRemoteDescription: RTCSessionDescription | null;
|
|
27
|
+
remoteDescription: RTCSessionDescription | null;
|
|
28
|
+
sctp: RTCSctpTransport | null;
|
|
29
|
+
signalingState: RTCSignalingState;
|
|
30
|
+
_dataChannels: RTCDataChannel[];
|
|
31
|
+
constructor(config: RTCConfiguration);
|
|
32
|
+
onconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
33
|
+
ondatachannel: ((this: RTCPeerConnection, ev: RTCDataChannelEvent) => any) | null;
|
|
34
|
+
onicecandidate: ((this: RTCPeerConnection, ev: RTCPeerConnectionIceEvent) => any) | null;
|
|
35
|
+
onicecandidateerror: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
36
|
+
oniceconnectionstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
37
|
+
onicegatheringstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
38
|
+
onnegotiationneeded: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
39
|
+
onsignalingstatechange: ((this: RTCPeerConnection, ev: Event) => any) | null;
|
|
40
|
+
ontrack: ((this: RTCPeerConnection, ev: RTCTrackEvent) => any) | null;
|
|
41
|
+
addIceCandidate(candidate?: RTCIceCandidateInit | undefined): Promise<void>;
|
|
42
|
+
addIceCandidate(candidate: RTCIceCandidateInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
|
|
43
|
+
addTrack(track: MediaStreamTrack, ...streams: MediaStream[]): RTCRtpSender;
|
|
44
|
+
addTransceiver(trackOrKind: string | MediaStreamTrack, init?: RTCRtpTransceiverInit | undefined): RTCRtpTransceiver;
|
|
45
|
+
createAnswer(options?: RTCAnswerOptions | undefined): Promise<RTCSessionDescriptionInit>;
|
|
46
|
+
createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
|
|
47
|
+
createDataChannel(label: string, dataChannelDict?: RTCDataChannelInit | undefined): RTCDataChannel;
|
|
48
|
+
createOffer(options?: RTCOfferOptions | undefined): Promise<RTCSessionDescriptionInit>;
|
|
49
|
+
createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback: RTCPeerConnectionErrorCallback, options?: RTCOfferOptions | undefined): Promise<void>;
|
|
50
|
+
getConfiguration(): RTCConfiguration;
|
|
51
|
+
getReceivers(): RTCRtpReceiver[];
|
|
52
|
+
getSenders(): RTCRtpSender[];
|
|
53
|
+
getStats(selector?: MediaStreamTrack | null | undefined): Promise<RTCStatsReport>;
|
|
54
|
+
getTransceivers(): RTCRtpTransceiver[];
|
|
55
|
+
removeTrack(sender: RTCRtpSender): void;
|
|
56
|
+
restartIce(): void;
|
|
57
|
+
setConfiguration(configuration?: RTCConfiguration | undefined): void;
|
|
58
|
+
setLocalDescription(description?: RTCLocalSessionDescriptionInit | undefined): Promise<void>;
|
|
59
|
+
setLocalDescription(description: RTCLocalSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
|
|
60
|
+
setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>;
|
|
61
|
+
setRemoteDescription(description: RTCSessionDescriptionInit, successCallback: VoidFunction, failureCallback: RTCPeerConnectionErrorCallback): Promise<void>;
|
|
62
|
+
addEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
63
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
64
|
+
removeEventListener<K extends keyof RTCPeerConnectionEventMap>(type: K, listener: (this: RTCPeerConnection, ev: RTCPeerConnectionEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
|
|
65
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
|
|
66
|
+
dispatchEvent(event: Event): boolean;
|
|
67
|
+
static generateCertificate(keygenAlgorithm: AlgorithmIdentifier): Promise<RTCCertificate>;
|
|
68
|
+
close(): void;
|
|
69
|
+
triggerIceConnectionStateChange(state: RTCIceConnectionState): void;
|
|
70
|
+
triggerOnTrack(data: RTCTrackEventInit): void;
|
|
71
|
+
triggerOnIceCandidate(data: RTCPeerConnectionIceEventInit): void;
|
|
72
|
+
triggerOnDataChannel(data: RTCDataChannelEventInit): void;
|
|
73
|
+
}
|
|
74
|
+
export declare class MockRTCIceCandidateImpl implements RTCIceCandidate {
|
|
75
|
+
address: string | null;
|
|
76
|
+
candidate: string;
|
|
77
|
+
component: RTCIceComponent | null;
|
|
78
|
+
foundation: string | null;
|
|
79
|
+
port: number | null;
|
|
80
|
+
priority: number | null;
|
|
81
|
+
protocol: RTCIceProtocol | null;
|
|
82
|
+
relatedAddress: string | null;
|
|
83
|
+
relatedPort: number | null;
|
|
84
|
+
sdpMLineIndex: number | null;
|
|
85
|
+
sdpMid: string | null;
|
|
86
|
+
tcpType: RTCIceTcpCandidateType | null;
|
|
87
|
+
type: RTCIceCandidateType | null;
|
|
88
|
+
usernameFragment: string | null;
|
|
89
|
+
constructor(options?: RTCIceCandidateInit);
|
|
90
|
+
toJSON(): RTCIceCandidateInit;
|
|
91
|
+
}
|
|
92
|
+
export declare class MockRTCDataChannelImpl implements RTCDataChannel {
|
|
93
|
+
binaryType: BinaryType;
|
|
94
|
+
bufferedAmount: number;
|
|
95
|
+
bufferedAmountLowThreshold: number;
|
|
96
|
+
id: number | null;
|
|
97
|
+
label: string;
|
|
98
|
+
maxPacketLifeTime: number | null;
|
|
99
|
+
maxRetransmits: number | null;
|
|
100
|
+
negotiated: boolean;
|
|
101
|
+
ordered: boolean;
|
|
102
|
+
protocol: string;
|
|
103
|
+
readyState: RTCDataChannelState;
|
|
104
|
+
constructor();
|
|
105
|
+
onbufferedamountlow: ((this: RTCDataChannel, ev: Event) => any) | null;
|
|
106
|
+
onclose: ((this: RTCDataChannel, ev: Event) => any) | null;
|
|
107
|
+
onclosing: ((this: RTCDataChannel, ev: Event) => any) | null;
|
|
108
|
+
onerror: ((this: RTCDataChannel, ev: Event) => any) | null;
|
|
109
|
+
onmessage: ((this: RTCDataChannel, ev: MessageEvent<any>) => any) | null;
|
|
110
|
+
onopen: ((this: RTCDataChannel, ev: Event) => any) | null;
|
|
111
|
+
close(): void;
|
|
112
|
+
send(data: string): void;
|
|
113
|
+
send(data: Blob): void;
|
|
114
|
+
send(data: ArrayBuffer): void;
|
|
115
|
+
send(data: ArrayBufferView): void;
|
|
116
|
+
addEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
117
|
+
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions | undefined): void;
|
|
118
|
+
removeEventListener<K extends keyof RTCDataChannelEventMap>(type: K, listener: (this: RTCDataChannel, ev: RTCDataChannelEventMap[K]) => any, options?: boolean | EventListenerOptions | undefined): void;
|
|
119
|
+
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions | undefined): void;
|
|
120
|
+
dispatchEvent(event: Event): boolean;
|
|
121
|
+
}
|
|
122
|
+
export declare class MockRTCDataChannelEventImpl extends Event implements RTCDataChannelEvent {
|
|
123
|
+
channel: RTCDataChannel;
|
|
124
|
+
constructor(name: string, data: RTCDataChannelEventInit);
|
|
125
|
+
}
|
|
126
|
+
export declare class MockRTCTrackEventImpl extends Event implements RTCTrackEvent {
|
|
127
|
+
receiver: RTCRtpReceiver;
|
|
128
|
+
streams: readonly MediaStream[];
|
|
129
|
+
track: MediaStreamTrack;
|
|
130
|
+
transceiver: RTCRtpTransceiver;
|
|
131
|
+
constructor(name: string, data: RTCTrackEventInit);
|
|
132
|
+
}
|
|
133
|
+
export declare const mockRTCPeerConnection: () => [MockRTCPeerConnectionSpyFunctions, MockRTCPeerConnectionTriggerFunctions];
|
|
134
|
+
export declare const unmockRTCPeerConnection: () => void;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BaseMessage } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
2
|
+
export interface MockWebSocketSpyFunctions {
|
|
3
|
+
constructorSpy: null | ((url: string) => void);
|
|
4
|
+
openSpy: null | ((event: Event) => void);
|
|
5
|
+
errorSpy: null | ((event: Event) => void);
|
|
6
|
+
closeSpy: null | ((event: CloseEvent) => void);
|
|
7
|
+
messageSpy: null | ((event: MessageEvent) => void);
|
|
8
|
+
messageBinarySpy: null | ((event: MessageEvent) => void);
|
|
9
|
+
sendSpy: null | ((data: string | Blob | ArrayBufferView | ArrayBufferLike) => void);
|
|
10
|
+
}
|
|
11
|
+
export interface MockWebSocketTriggerFunctions {
|
|
12
|
+
triggerOnOpen: null | (() => void);
|
|
13
|
+
triggerOnError: null | (() => void);
|
|
14
|
+
triggerOnClose: null | ((closeReason?: CloseEventInit) => void);
|
|
15
|
+
triggerOnMessage: null | ((message?: BaseMessage) => void);
|
|
16
|
+
triggerOnMessageBinary: null | ((message?: Blob) => void);
|
|
17
|
+
triggerRemoteClose: null | ((code?: number, reason?: string) => void);
|
|
18
|
+
}
|
|
19
|
+
export declare class MockWebSocketImpl extends WebSocket {
|
|
20
|
+
_readyState: number;
|
|
21
|
+
constructor(url: string | URL, protocols?: string | string[]);
|
|
22
|
+
get readyState(): number;
|
|
23
|
+
close(code?: number | undefined, reason?: string | undefined): void;
|
|
24
|
+
send(data: string | Blob | ArrayBufferView | ArrayBufferLike): void;
|
|
25
|
+
triggerOnOpen(): void;
|
|
26
|
+
triggerOnError(): void;
|
|
27
|
+
triggerOnClose(closeReason?: CloseEventInit): void;
|
|
28
|
+
triggerRemoteClose(code?: number, reason?: string): void;
|
|
29
|
+
triggerOnMessage(message: BaseMessage): void;
|
|
30
|
+
triggerOnMessageBinary(message?: Blob): void;
|
|
31
|
+
}
|
|
32
|
+
export declare const mockWebSocket: () => [MockWebSocketSpyFunctions, MockWebSocketTriggerFunctions];
|
|
33
|
+
export declare const unmockWebSocket: () => void;
|
|
@@ -17,7 +17,8 @@ export { CandidatePairStats } from './PeerConnectionController/CandidatePairStat
|
|
|
17
17
|
export { CandidateStat } from './PeerConnectionController/CandidateStat';
|
|
18
18
|
export { DataChannelStats } from './PeerConnectionController/DataChannelStats';
|
|
19
19
|
export { InboundAudioStats, InboundVideoStats } from './PeerConnectionController/InboundRTPStats';
|
|
20
|
-
export {
|
|
20
|
+
export { OutboundRTPStats, RemoteOutboundRTPStats } from './PeerConnectionController/OutBoundRTPStats';
|
|
21
|
+
export * from './PeerConnectionController/LatencyCalculator';
|
|
21
22
|
export * from './DataChannel/DataChannelLatencyTestResults';
|
|
22
23
|
export * from './Util/EventEmitter';
|
|
23
24
|
export * from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
|
+
import eslint from '@eslint/js';
|
|
3
|
+
import tseslint from 'typescript-eslint';
|
|
4
|
+
|
|
5
|
+
export default tseslint.config(
|
|
6
|
+
{
|
|
7
|
+
ignores: ["src/__test__/**/*.ts", "**/*.test.ts"],
|
|
8
|
+
},
|
|
9
|
+
eslint.configs.recommended,
|
|
10
|
+
tseslint.configs.recommendedTypeCheckedOnly,
|
|
11
|
+
{
|
|
12
|
+
languageOptions: {
|
|
13
|
+
parser: tseslint.parser,
|
|
14
|
+
parserOptions: {
|
|
15
|
+
project: 'tsconfig.base.json',
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
files: ["src/**/*.ts"],
|
|
19
|
+
rules: {
|
|
20
|
+
// TODO: when updating eslint a lot of issues suddently popped up
|
|
21
|
+
// these ignores should be turned off slowly and new issues should
|
|
22
|
+
// be addressed
|
|
23
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
24
|
+
"@typescript-eslint/no-unsafe-member-access": "off",
|
|
25
|
+
"@typescript-eslint/no-unsafe-call": "off",
|
|
26
|
+
"@typescript-eslint/no-unsafe-assignment": "off",
|
|
27
|
+
"@typescript-eslint/no-unsafe-argument": "off",
|
|
28
|
+
"@typescript-eslint/no-unsafe-return": "off",
|
|
29
|
+
"@typescript-eslint/no-floating-promises": "off",
|
|
30
|
+
"@typescript-eslint/restrict-plus-operands": "off",
|
|
31
|
+
"@typescript-eslint/unbound-method": "off",
|
|
32
|
+
"@typescript-eslint/no-duplicate-type-constituents": "off",
|
|
33
|
+
"@typescript-eslint/no-redundant-type-constituents": "off",
|
|
34
|
+
"@typescript-eslint/restrict-template-expressions": "off",
|
|
35
|
+
"@typescript-eslint/no-unnecessary-type-assertion": "off",
|
|
36
|
+
"@typescript-eslint/no-array-delete": "off",
|
|
37
|
+
"@typescript-eslint/no-unsafe-enum-comparison": "off",
|
|
38
|
+
"@typescript-eslint/require-await": "off",
|
|
39
|
+
"@typescript-eslint/no-base-to-string": "off",
|
|
40
|
+
"no-unused-vars": "off",
|
|
41
|
+
"@typescript-eslint/no-unused-vars": [
|
|
42
|
+
"error",
|
|
43
|
+
{
|
|
44
|
+
"argsIgnorePattern": "^_",
|
|
45
|
+
"varsIgnorePattern": "^_",
|
|
46
|
+
"caughtErrorsIgnorePattern": "^_"
|
|
47
|
+
}
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
|
package/package.json
CHANGED
|
@@ -1,45 +1,47 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Frontend library for Unreal Engine 5.5 Pixel Streaming",
|
|
5
|
-
"main": "dist/
|
|
6
|
-
"module": "dist/esm/pixelstreamingfrontend.js",
|
|
7
|
-
"types": "dist/types/pixelstreamingfrontend.d.ts",
|
|
8
|
-
"sideEffects": false,
|
|
9
|
-
"scripts": {
|
|
10
|
-
"
|
|
11
|
-
"build": "
|
|
12
|
-
"build
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"eslint": "^
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Frontend library for Unreal Engine 5.5 Pixel Streaming",
|
|
5
|
+
"main": "dist/cjs/pixelstreamingfrontend.js",
|
|
6
|
+
"module": "dist/esm/pixelstreamingfrontend.js",
|
|
7
|
+
"types": "dist/types/pixelstreamingfrontend.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"scripts": {
|
|
10
|
+
"clean": "rimraf ./dist",
|
|
11
|
+
"build:cjs": "tsc --project tsconfig.cjs.json",
|
|
12
|
+
"build:esm": "tsc --project tsconfig.esm.json",
|
|
13
|
+
"build": "npm run build:cjs && npm run build:esm",
|
|
14
|
+
"rebuild": "npm run clean && npm run build",
|
|
15
|
+
"watch": "nodemon -V -d 3 --watch src --watch ../../Common/dist -e \"ts,js,mjs,cjs,json\" --exec \"npm run build:cjs\"",
|
|
16
|
+
"lint": "eslint src",
|
|
17
|
+
"test": "jest --detectOpenHandles --coverage=true",
|
|
18
|
+
"spellcheck": "cspell \"{README.md,.github/*.md,src/**/*.ts}\""
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"@eslint/js": "^9.20.0",
|
|
22
|
+
"@types/jest": "^29.5.14",
|
|
23
|
+
"@types/webxr": "^0.5.21",
|
|
24
|
+
"cspell": "^8.17.3",
|
|
25
|
+
"eslint": "^9.20.0",
|
|
26
|
+
"jest": "^29.7.0",
|
|
27
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
28
|
+
"nodemon": "^3.1.9",
|
|
29
|
+
"rimraf": "^6.0.1",
|
|
30
|
+
"ts-jest": "^29.2.5",
|
|
31
|
+
"typescript": "^5.7.3",
|
|
32
|
+
"typescript-eslint": "^8.24.0"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.2.8",
|
|
36
|
+
"sdp": "^3.2.0"
|
|
37
|
+
},
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/EpicGamesExt/PixelStreamingInfrastructure.git"
|
|
41
|
+
},
|
|
42
|
+
"author": "Epic Games",
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|
package/src/Config/Config.ts
CHANGED
|
@@ -33,6 +33,7 @@ export class Flags {
|
|
|
33
33
|
static XRControllerInput = 'XRControllerInput' as const;
|
|
34
34
|
static WaitForStreamer = 'WaitForStreamer' as const;
|
|
35
35
|
static HideUI = 'HideUI' as const;
|
|
36
|
+
static EnableCaptureTimeExt = 'EnableCaptureTimeExt' as const;
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
export type FlagsKeys = Exclude<keyof typeof Flags, 'prototype'>;
|
|
@@ -59,6 +60,7 @@ export class NumericParameters {
|
|
|
59
60
|
static WebRTCMaxBitrate = 'WebRTCMaxBitrate' as const;
|
|
60
61
|
static MaxReconnectAttempts = 'MaxReconnectAttempts' as const;
|
|
61
62
|
static StreamerAutoJoinInterval = 'StreamerAutoJoinInterval' as const;
|
|
63
|
+
static KeepaliveDelay = 'KeepaliveDelay' as const;
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
export type NumericParametersKeys = Exclude<keyof typeof NumericParameters, 'prototype'>;
|
|
@@ -563,6 +565,19 @@ export class Config {
|
|
|
563
565
|
)
|
|
564
566
|
);
|
|
565
567
|
|
|
568
|
+
this.flags.set(
|
|
569
|
+
Flags.EnableCaptureTimeExt,
|
|
570
|
+
new SettingFlag(
|
|
571
|
+
Flags.EnableCaptureTimeExt,
|
|
572
|
+
'Enable abs-capture-time',
|
|
573
|
+
'Enables the abs-capture-time RTP header extension',
|
|
574
|
+
settings && Object.prototype.hasOwnProperty.call(settings, Flags.EnableCaptureTimeExt)
|
|
575
|
+
? settings[Flags.EnableCaptureTimeExt]
|
|
576
|
+
: true,
|
|
577
|
+
useUrlParams
|
|
578
|
+
)
|
|
579
|
+
);
|
|
580
|
+
|
|
566
581
|
/**
|
|
567
582
|
* Numeric parameters
|
|
568
583
|
*/
|
|
@@ -761,6 +776,21 @@ export class Config {
|
|
|
761
776
|
useUrlParams
|
|
762
777
|
)
|
|
763
778
|
);
|
|
779
|
+
|
|
780
|
+
this.numericParameters.set(
|
|
781
|
+
NumericParameters.KeepaliveDelay,
|
|
782
|
+
new SettingNumber(
|
|
783
|
+
NumericParameters.KeepaliveDelay,
|
|
784
|
+
'Connection Keepalive delay',
|
|
785
|
+
'Delay between keepalive pings to the signalling server.',
|
|
786
|
+
0 /*min*/,
|
|
787
|
+
900000 /*max*/,
|
|
788
|
+
settings && Object.prototype.hasOwnProperty.call(settings, NumericParameters.KeepaliveDelay)
|
|
789
|
+
? settings[NumericParameters.KeepaliveDelay]
|
|
790
|
+
: 30000 /*value*/,
|
|
791
|
+
useUrlParams
|
|
792
|
+
)
|
|
793
|
+
);
|
|
764
794
|
}
|
|
765
795
|
|
|
766
796
|
/**
|
|
@@ -18,7 +18,7 @@ export class SettingBase {
|
|
|
18
18
|
label: string,
|
|
19
19
|
description: string,
|
|
20
20
|
defaultSettingValue: unknown,
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
defaultOnChangeListener: (changedValue: unknown, setting: SettingBase) => void = () => {
|
|
23
23
|
/* Do nothing, to be overridden. */
|
|
24
24
|
}
|
|
@@ -16,7 +16,7 @@ export class SettingFlag<CustomIds extends string = FlagsIds> extends SettingBas
|
|
|
16
16
|
description: string,
|
|
17
17
|
defaultFlagValue: boolean,
|
|
18
18
|
useUrlParams: boolean,
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
defaultOnChangeListener: (changedValue: unknown, setting: SettingBase) => void = () => {
|
|
21
21
|
/* Do nothing, to be overridden. */
|
|
22
22
|
}
|
|
@@ -21,7 +21,7 @@ export class SettingNumber<CustomIds extends string = NumericParametersIds> exte
|
|
|
21
21
|
max: number | null,
|
|
22
22
|
defaultNumber: number,
|
|
23
23
|
useUrlParams: boolean,
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
defaultOnChangeListener: (changedValue: unknown, setting: SettingBase) => void = () => {
|
|
26
26
|
/* Do nothing, to be overridden. */
|
|
27
27
|
}
|