@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.1.3 → 0.2.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/.eslintrc.js +1 -1
- package/.prettierrc.json +1 -0
- package/dist/lib-pixelstreamingfrontend.esm.js +1 -1
- package/dist/lib-pixelstreamingfrontend.js +1 -1
- package/package.json +6 -5
- package/src/AFK/AFKController.ts +10 -32
- package/src/Config/Config.ts +179 -201
- package/src/Config/SettingBase.ts +61 -2
- package/src/Config/SettingFlag.ts +10 -48
- package/src/Config/SettingNumber.ts +10 -28
- package/src/Config/SettingOption.ts +13 -46
- package/src/Config/SettingText.ts +9 -37
- package/src/DataChannel/DataChannelController.ts +6 -26
- package/src/DataChannel/DataChannelLatencyTestController.ts +38 -33
- package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
- package/src/DataChannel/DataChannelSender.ts +5 -15
- package/src/DataChannel/LatencyTestResults.ts +5 -15
- package/src/FreezeFrame/FreezeFrame.ts +7 -19
- package/src/FreezeFrame/FreezeFrameController.ts +3 -14
- package/src/Inputs/GamepadController.ts +123 -221
- package/src/Inputs/GamepadTypes.ts +23 -0
- package/src/Inputs/IInputController.ts +17 -0
- package/src/Inputs/InputClassesFactory.ts +38 -45
- package/src/Inputs/KeyCodes.ts +114 -0
- package/src/Inputs/KeyboardController.ts +49 -232
- package/src/Inputs/MouseController.ts +71 -297
- package/src/Inputs/MouseControllerHovering.ts +118 -0
- package/src/Inputs/MouseControllerLocked.ts +194 -0
- package/src/Inputs/TouchController.ts +49 -105
- package/src/Inputs/TouchControllerFake.ts +132 -0
- package/src/Inputs/XRGamepadController.ts +35 -44
- package/src/PeerConnectionController/AggregatedStats.ts +26 -54
- package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
- package/src/PeerConnectionController/CandidateStat.ts +1 -1
- package/src/PeerConnectionController/PeerConnectionController.ts +217 -164
- package/src/PixelStreaming/PixelStreaming.ts +174 -226
- package/src/UI/OnScreenKeyboard.ts +14 -9
- package/src/UeInstanceMessage/ResponseController.ts +6 -15
- package/src/UeInstanceMessage/SendMessageController.ts +16 -18
- package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
- package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
- package/src/Util/EventEmitter.ts +17 -22
- package/src/Util/FileUtil.ts +11 -34
- package/src/Util/IURLSearchParams.ts +25 -0
- package/src/Util/InputCoordTranslator.ts +73 -0
- package/src/Util/RTCUtils.ts +23 -15
- package/src/VideoPlayer/StreamController.ts +6 -23
- package/src/VideoPlayer/VideoPlayer.ts +9 -30
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
- package/src/WebXR/WebXRController.ts +82 -94
- package/src/pixelstreamingfrontend.ts +6 -10
- package/types/AFK/AFKController.d.ts +0 -1
- package/types/Config/Config.d.ts +6 -5
- package/types/Config/SettingBase.d.ts +13 -0
- package/types/Config/SettingFlag.d.ts +1 -10
- package/types/Config/SettingNumber.d.ts +1 -5
- package/types/Config/SettingOption.d.ts +1 -10
- package/types/Config/SettingText.d.ts +1 -9
- package/types/DataChannel/DataChannelLatencyTestController.d.ts +1 -1
- package/types/Inputs/GamepadController.d.ts +22 -46
- package/types/Inputs/GamepadTypes.d.ts +7 -0
- package/types/Inputs/IInputController.d.ts +16 -0
- package/types/Inputs/InputClassesFactory.d.ts +7 -8
- package/types/Inputs/KeyCodes.d.ts +5 -0
- package/types/Inputs/KeyboardController.d.ts +17 -45
- package/types/Inputs/MouseController.d.ts +33 -68
- package/types/Inputs/MouseControllerHovering.d.ts +26 -0
- package/types/Inputs/MouseControllerLocked.d.ts +31 -0
- package/types/Inputs/TouchController.d.ts +19 -44
- package/types/Inputs/TouchControllerFake.d.ts +29 -0
- package/types/Inputs/XRGamepadController.d.ts +0 -7
- package/types/PeerConnectionController/PeerConnectionController.d.ts +10 -1
- package/types/PixelStreaming/PixelStreaming.d.ts +14 -2
- package/types/UI/OnScreenKeyboard.d.ts +2 -2
- package/types/Util/EventEmitter.d.ts +1 -1
- package/types/Util/IURLSearchParams.d.ts +9 -0
- package/types/Util/InputCoordTranslator.d.ts +29 -0
- package/types/VideoPlayer/StreamController.d.ts +0 -2
- package/types/WebRtcPlayer/WebRtcPlayerController.d.ts +19 -17
- package/types/pixelstreamingfrontend.d.ts +1 -1
- package/src/Inputs/FakeTouchController.ts +0 -199
- package/src/Inputs/HoveringMouseEvents.ts +0 -192
- package/src/Inputs/IMouseEvents.ts +0 -64
- package/src/Inputs/ITouchController.ts +0 -29
- package/src/Inputs/LockedMouseEvents.ts +0 -287
- package/src/Util/CoordinateConverter.ts +0 -290
- package/src/Util/EventListenerTracker.ts +0 -29
- package/types/Inputs/FakeTouchController.d.ts +0 -61
- package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
- package/types/Inputs/IMouseEvents.d.ts +0 -53
- package/types/Inputs/ITouchController.d.ts +0 -24
- package/types/Inputs/LockedMouseEvents.d.ts +0 -80
- package/types/Util/CoordinateConverter.d.ts +0 -100
- package/types/Util/EventListenerTracker.d.ts +0 -14
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
2
|
|
|
3
|
-
import { MouseController } from '../Inputs/MouseController';
|
|
4
3
|
import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
5
4
|
import { VideoPlayer } from './VideoPlayer';
|
|
6
5
|
|
|
@@ -10,7 +9,6 @@ import { VideoPlayer } from './VideoPlayer';
|
|
|
10
9
|
export class StreamController {
|
|
11
10
|
videoElementProvider: VideoPlayer;
|
|
12
11
|
audioElement: HTMLAudioElement;
|
|
13
|
-
mouseController: MouseController;
|
|
14
12
|
|
|
15
13
|
/**
|
|
16
14
|
* @param videoElementProvider Video Player instance
|
|
@@ -26,11 +24,7 @@ export class StreamController {
|
|
|
26
24
|
* @param rtcTrackEvent - RTC Track Event
|
|
27
25
|
*/
|
|
28
26
|
handleOnTrack(rtcTrackEvent: RTCTrackEvent) {
|
|
29
|
-
Logger.
|
|
30
|
-
Logger.GetStackTrace(),
|
|
31
|
-
'handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams),
|
|
32
|
-
6
|
|
33
|
-
);
|
|
27
|
+
Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
|
|
34
28
|
// Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
|
|
35
29
|
// Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
|
|
36
30
|
if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
|
|
@@ -40,15 +34,13 @@ export class StreamController {
|
|
|
40
34
|
const videoElement = this.videoElementProvider.getVideoElement();
|
|
41
35
|
|
|
42
36
|
if (rtcTrackEvent.track) {
|
|
43
|
-
Logger.
|
|
44
|
-
Logger.GetStackTrace(),
|
|
37
|
+
Logger.Info(
|
|
45
38
|
'Got track - ' +
|
|
46
39
|
rtcTrackEvent.track.kind +
|
|
47
40
|
' id=' +
|
|
48
41
|
rtcTrackEvent.track.id +
|
|
49
42
|
' readyState=' +
|
|
50
|
-
rtcTrackEvent.track.readyState
|
|
51
|
-
6
|
|
43
|
+
rtcTrackEvent.track.readyState
|
|
52
44
|
);
|
|
53
45
|
}
|
|
54
46
|
|
|
@@ -60,10 +52,7 @@ export class StreamController {
|
|
|
60
52
|
videoElement.srcObject !== rtcTrackEvent.streams[0]
|
|
61
53
|
) {
|
|
62
54
|
videoElement.srcObject = rtcTrackEvent.streams[0];
|
|
63
|
-
Logger.
|
|
64
|
-
Logger.GetStackTrace(),
|
|
65
|
-
'Set video source from video track ontrack.'
|
|
66
|
-
);
|
|
55
|
+
Logger.Info('Set video source from video track ontrack.');
|
|
67
56
|
return;
|
|
68
57
|
}
|
|
69
58
|
}
|
|
@@ -80,16 +69,10 @@ export class StreamController {
|
|
|
80
69
|
return;
|
|
81
70
|
}
|
|
82
71
|
// video element has some other media stream that is not associated with this audio track
|
|
83
|
-
else if (
|
|
84
|
-
videoElement.srcObject &&
|
|
85
|
-
videoElement.srcObject !== audioMediaStream
|
|
86
|
-
) {
|
|
72
|
+
else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
|
|
87
73
|
// create a new audio element
|
|
88
74
|
this.audioElement.srcObject = audioMediaStream;
|
|
89
|
-
Logger.
|
|
90
|
-
Logger.GetStackTrace(),
|
|
91
|
-
'Created new audio element to play separate audio stream.'
|
|
92
|
-
);
|
|
75
|
+
Logger.Info('Created new audio element to play separate audio stream.');
|
|
93
76
|
}
|
|
94
77
|
}
|
|
95
78
|
}
|
|
@@ -43,9 +43,7 @@ export class VideoPlayer {
|
|
|
43
43
|
videoElementParent.appendChild(this.videoElement);
|
|
44
44
|
|
|
45
45
|
this.onResizePlayerCallback = () => {
|
|
46
|
-
console.log(
|
|
47
|
-
'Resolution changed, restyling player, did you forget to override this function?'
|
|
48
|
-
);
|
|
46
|
+
console.log('Resolution changed, restyling player, did you forget to override this function?');
|
|
49
47
|
};
|
|
50
48
|
this.onMatchViewportResolutionCallback = () => {
|
|
51
49
|
console.log(
|
|
@@ -69,12 +67,10 @@ export class VideoPlayer {
|
|
|
69
67
|
|
|
70
68
|
// set resize events to the windows if it is resized or its orientation is changed
|
|
71
69
|
window.addEventListener('resize', () => this.resizePlayerStyle(), true);
|
|
72
|
-
window.addEventListener('orientationchange', () =>
|
|
73
|
-
this.onOrientationChange()
|
|
74
|
-
);
|
|
70
|
+
window.addEventListener('orientationchange', () => this.onOrientationChange());
|
|
75
71
|
}
|
|
76
72
|
|
|
77
|
-
public setAudioElement(audioElement: HTMLAudioElement)
|
|
73
|
+
public setAudioElement(audioElement: HTMLAudioElement): void {
|
|
78
74
|
this.audioElement = audioElement;
|
|
79
75
|
}
|
|
80
76
|
|
|
@@ -83,12 +79,8 @@ export class VideoPlayer {
|
|
|
83
79
|
* @returns A promise for if playing the video was successful or not.
|
|
84
80
|
*/
|
|
85
81
|
play(): Promise<void> {
|
|
86
|
-
this.videoElement.muted = this.config.isFlagEnabled(
|
|
87
|
-
|
|
88
|
-
);
|
|
89
|
-
this.videoElement.autoplay = this.config.isFlagEnabled(
|
|
90
|
-
Flags.AutoPlayVideo
|
|
91
|
-
);
|
|
82
|
+
this.videoElement.muted = this.config.isFlagEnabled(Flags.StartVideoMuted);
|
|
83
|
+
this.videoElement.autoplay = this.config.isFlagEnabled(Flags.AutoPlayVideo);
|
|
92
84
|
return this.videoElement.play();
|
|
93
85
|
}
|
|
94
86
|
|
|
@@ -103,20 +95,14 @@ export class VideoPlayer {
|
|
|
103
95
|
* @returns - whether the video element is playing.
|
|
104
96
|
*/
|
|
105
97
|
isVideoReady(): boolean {
|
|
106
|
-
return
|
|
107
|
-
this.videoElement.readyState !== undefined &&
|
|
108
|
-
this.videoElement.readyState > 0
|
|
109
|
-
);
|
|
98
|
+
return this.videoElement.readyState !== undefined && this.videoElement.readyState > 0;
|
|
110
99
|
}
|
|
111
100
|
|
|
112
101
|
/**
|
|
113
102
|
* @returns True if the video element has a valid video source (srcObject).
|
|
114
103
|
*/
|
|
115
104
|
hasVideoSource(): boolean {
|
|
116
|
-
return
|
|
117
|
-
this.videoElement.srcObject !== undefined &&
|
|
118
|
-
this.videoElement.srcObject !== null
|
|
119
|
-
);
|
|
105
|
+
return this.videoElement.srcObject !== undefined && this.videoElement.srcObject !== null;
|
|
120
106
|
}
|
|
121
107
|
|
|
122
108
|
/**
|
|
@@ -231,16 +217,9 @@ export class VideoPlayer {
|
|
|
231
217
|
|
|
232
218
|
this.lastTimeResized = new Date().getTime();
|
|
233
219
|
} else {
|
|
234
|
-
Logger.
|
|
235
|
-
Logger.GetStackTrace(),
|
|
236
|
-
'Resizing too often - skipping',
|
|
237
|
-
6
|
|
238
|
-
);
|
|
220
|
+
Logger.Info('Resizing too often - skipping');
|
|
239
221
|
clearTimeout(this.resizeTimeoutHandle);
|
|
240
|
-
this.resizeTimeoutHandle = window.setTimeout(
|
|
241
|
-
() => this.updateVideoStreamSize(),
|
|
242
|
-
100
|
|
243
|
-
);
|
|
222
|
+
this.resizeTimeoutHandle = window.setTimeout(() => this.updateVideoStreamSize(), 100);
|
|
244
223
|
}
|
|
245
224
|
}
|
|
246
225
|
}
|