@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 1.2.5 → 1.3.0
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/CHANGELOG.md +19 -2
- package/dist/cjs/AFK/AFKController.js +2 -2
- package/dist/cjs/AFK/AFKController.js.map +1 -1
- package/dist/cjs/Config/Config.js +19 -0
- package/dist/cjs/Config/Config.js.map +1 -1
- package/dist/cjs/DataChannel/DataChannelController.js +2 -2
- package/dist/cjs/DataChannel/DataChannelController.js.map +1 -1
- package/dist/cjs/DataChannel/DataChannelSender.js +2 -2
- package/dist/cjs/DataChannel/DataChannelSender.js.map +1 -1
- package/dist/cjs/Inputs/GamepadController.js +5 -6
- package/dist/cjs/Inputs/GamepadController.js.map +1 -1
- package/dist/cjs/Inputs/InputClassesFactory.js +3 -3
- package/dist/cjs/Inputs/InputClassesFactory.js.map +1 -1
- package/dist/cjs/Inputs/KeyCodes.js +13 -1
- package/dist/cjs/Inputs/KeyCodes.js.map +1 -1
- package/dist/cjs/Inputs/KeyboardController.js +12 -0
- package/dist/cjs/Inputs/KeyboardController.js.map +1 -1
- package/dist/cjs/Inputs/MouseController.js +2 -1
- package/dist/cjs/Inputs/MouseController.js.map +1 -1
- package/dist/cjs/Inputs/MouseControllerHovering.js +71 -6
- package/dist/cjs/Inputs/MouseControllerHovering.js.map +1 -1
- package/dist/cjs/Inputs/MouseControllerLocked.js +18 -3
- package/dist/cjs/Inputs/MouseControllerLocked.js.map +1 -1
- package/dist/cjs/PeerConnectionController/PeerConnectionController.js +71 -72
- package/dist/cjs/PeerConnectionController/PeerConnectionController.js.map +1 -1
- package/dist/cjs/PixelStreaming/PixelStreaming.js +25 -0
- package/dist/cjs/PixelStreaming/PixelStreaming.js.map +1 -1
- package/dist/cjs/UeInstanceMessage/SendMessageController.js +2 -3
- package/dist/cjs/UeInstanceMessage/SendMessageController.js.map +1 -1
- package/dist/cjs/UeInstanceMessage/StreamMessageController.js.map +1 -1
- package/dist/cjs/VideoPlayer/StreamController.js +3 -3
- package/dist/cjs/VideoPlayer/StreamController.js.map +1 -1
- package/dist/cjs/VideoPlayer/VideoPlayer.js +17 -6
- package/dist/cjs/VideoPlayer/VideoPlayer.js.map +1 -1
- package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js +2 -2
- package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
- package/dist/cjs/WebXR/WebXRController.js +5 -5
- package/dist/cjs/WebXR/WebXRController.js.map +1 -1
- package/dist/esm/AFK/AFKController.js +2 -2
- package/dist/esm/AFK/AFKController.js.map +1 -1
- package/dist/esm/Config/Config.js +19 -0
- package/dist/esm/Config/Config.js.map +1 -1
- package/dist/esm/DataChannel/DataChannelController.js +2 -2
- package/dist/esm/DataChannel/DataChannelController.js.map +1 -1
- package/dist/esm/DataChannel/DataChannelSender.js +2 -2
- package/dist/esm/DataChannel/DataChannelSender.js.map +1 -1
- package/dist/esm/Inputs/GamepadController.js +5 -6
- package/dist/esm/Inputs/GamepadController.js.map +1 -1
- package/dist/esm/Inputs/InputClassesFactory.js +3 -3
- package/dist/esm/Inputs/InputClassesFactory.js.map +1 -1
- package/dist/esm/Inputs/KeyCodes.js +13 -1
- package/dist/esm/Inputs/KeyCodes.js.map +1 -1
- package/dist/esm/Inputs/KeyboardController.js +12 -0
- package/dist/esm/Inputs/KeyboardController.js.map +1 -1
- package/dist/esm/Inputs/MouseController.js +2 -1
- package/dist/esm/Inputs/MouseController.js.map +1 -1
- package/dist/esm/Inputs/MouseControllerHovering.js +71 -6
- package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -1
- package/dist/esm/Inputs/MouseControllerLocked.js +18 -3
- package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -1
- package/dist/esm/PeerConnectionController/PeerConnectionController.js +71 -72
- package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
- package/dist/esm/PixelStreaming/PixelStreaming.js +25 -0
- package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
- package/dist/esm/UeInstanceMessage/SendMessageController.js +2 -3
- package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -1
- package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -1
- package/dist/esm/VideoPlayer/StreamController.js +3 -3
- package/dist/esm/VideoPlayer/StreamController.js.map +1 -1
- package/dist/esm/VideoPlayer/VideoPlayer.js +18 -7
- package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -1
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +2 -2
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
- package/dist/esm/WebXR/WebXRController.js +5 -5
- package/dist/esm/WebXR/WebXRController.js.map +1 -1
- package/dist/types/Config/Config.d.ts +8 -0
- package/dist/types/Inputs/InputClassesFactory.d.ts +1 -1
- package/dist/types/Inputs/MouseController.d.ts +3 -1
- package/dist/types/Inputs/MouseControllerHovering.d.ts +10 -1
- package/dist/types/Inputs/MouseControllerLocked.d.ts +2 -1
- package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +3 -3
- package/dist/types/PixelStreaming/PixelStreaming.d.ts +9 -1
- package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +3 -3
- package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -0
- package/eslint.config.mjs +1 -8
- package/package.json +4 -4
- package/src/AFK/AFKController.ts +2 -2
- package/src/Config/Config.ts +61 -9
- package/src/DataChannel/DataChannelController.ts +2 -2
- package/src/DataChannel/DataChannelSender.ts +2 -2
- package/src/Inputs/GamepadController.ts +5 -6
- package/src/Inputs/InputClassesFactory.ts +5 -3
- package/src/Inputs/KeyCodes.ts +13 -1
- package/src/Inputs/KeyboardController.ts +11 -1
- package/src/Inputs/MouseController.ts +5 -1
- package/src/Inputs/MouseControllerHovering.ts +79 -6
- package/src/Inputs/MouseControllerLocked.ts +20 -3
- package/src/PeerConnectionController/PeerConnectionController.ts +22 -22
- package/src/PixelStreaming/PixelStreaming.ts +26 -0
- package/src/UeInstanceMessage/SendMessageController.ts +2 -3
- package/src/UeInstanceMessage/StreamMessageController.ts +3 -3
- package/src/VideoPlayer/StreamController.ts +3 -3
- package/src/VideoPlayer/VideoPlayer.test.ts +141 -0
- package/src/VideoPlayer/VideoPlayer.ts +26 -10
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +2 -2
- package/src/WebXR/WebXRController.ts +5 -5
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
2
|
|
|
3
|
-
import { Config, Flags } from '../Config/Config';
|
|
3
|
+
import { Config, Flags, NumericParameters } from '../Config/Config';
|
|
4
4
|
import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -16,6 +16,9 @@ declare global {
|
|
|
16
16
|
* The video player html element
|
|
17
17
|
*/
|
|
18
18
|
export class VideoPlayer {
|
|
19
|
+
// Common H.264 maximum encoding dimension. Streams beyond this commonly fail to encode.
|
|
20
|
+
private static readonly maxEncoderDimension = 4096;
|
|
21
|
+
|
|
19
22
|
private config: Config;
|
|
20
23
|
private videoElement: HTMLVideoElement;
|
|
21
24
|
private audioElement?: HTMLAudioElement;
|
|
@@ -43,21 +46,21 @@ export class VideoPlayer {
|
|
|
43
46
|
videoElementParent.appendChild(this.videoElement);
|
|
44
47
|
|
|
45
48
|
this.onResizePlayerCallback = () => {
|
|
46
|
-
|
|
49
|
+
Logger.Warning('Resolution changed, restyling player, did you forget to override this function?');
|
|
47
50
|
};
|
|
48
51
|
this.onMatchViewportResolutionCallback = () => {
|
|
49
|
-
|
|
52
|
+
Logger.Warning(
|
|
50
53
|
'Resolution changed and match viewport resolution is turned on, did you forget to override this function?'
|
|
51
54
|
);
|
|
52
55
|
};
|
|
53
56
|
|
|
54
57
|
// set play for video (and audio)
|
|
55
58
|
this.videoElement.onclick = () => {
|
|
56
|
-
if (this.audioElement
|
|
57
|
-
this.audioElement.play();
|
|
59
|
+
if (this.audioElement !== undefined && this.audioElement.paused) {
|
|
60
|
+
void this.audioElement.play();
|
|
58
61
|
}
|
|
59
62
|
if (this.videoElement.paused) {
|
|
60
|
-
this.videoElement.play();
|
|
63
|
+
void this.videoElement.play();
|
|
61
64
|
}
|
|
62
65
|
};
|
|
63
66
|
|
|
@@ -222,10 +225,23 @@ export class VideoPlayer {
|
|
|
222
225
|
return;
|
|
223
226
|
}
|
|
224
227
|
|
|
225
|
-
this.
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
228
|
+
const viewportResolutionScale = this.config.hasNumericSetting(NumericParameters.ViewportResScale)
|
|
229
|
+
? this.config.getNumericSettingValue(NumericParameters.ViewportResScale)
|
|
230
|
+
: 1.0;
|
|
231
|
+
|
|
232
|
+
const scaledWidth = Math.round(videoElementParent.clientWidth * viewportResolutionScale);
|
|
233
|
+
const scaledHeight = Math.round(videoElementParent.clientHeight * viewportResolutionScale);
|
|
234
|
+
|
|
235
|
+
if (
|
|
236
|
+
scaledWidth > VideoPlayer.maxEncoderDimension ||
|
|
237
|
+
scaledHeight > VideoPlayer.maxEncoderDimension
|
|
238
|
+
) {
|
|
239
|
+
Logger.Warning(
|
|
240
|
+
`Requested stream resolution (${scaledWidth}x${scaledHeight}) exceeds the common H.264 encoder limit of ${VideoPlayer.maxEncoderDimension}x${VideoPlayer.maxEncoderDimension}; encoding may fail. Lower ViewportResScale or disable MatchViewportResolution.`
|
|
241
|
+
);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
this.onMatchViewportResolutionCallback(scaledWidth, scaledHeight);
|
|
229
245
|
|
|
230
246
|
this.lastTimeResized = new Date().getTime();
|
|
231
247
|
} else {
|
|
@@ -244,7 +244,7 @@ export class WebRtcPlayerController {
|
|
|
244
244
|
this.afkController.stopAfkWarningTimer();
|
|
245
245
|
|
|
246
246
|
// stop sending stats on interval if we have closed our connection
|
|
247
|
-
if (this.statsTimerHandle
|
|
247
|
+
if (this.statsTimerHandle) {
|
|
248
248
|
window.clearInterval(this.statsTimerHandle);
|
|
249
249
|
}
|
|
250
250
|
|
|
@@ -1952,7 +1952,7 @@ export class WebRtcPlayerController {
|
|
|
1952
1952
|
const mouseMode = this.config.isFlagEnabled(Flags.HoveringMouseMode)
|
|
1953
1953
|
? ControlSchemeType.HoveringMouse
|
|
1954
1954
|
: ControlSchemeType.LockedMouse;
|
|
1955
|
-
this.mouseController = this.inputClassesFactory.registerMouse(mouseMode);
|
|
1955
|
+
this.mouseController = this.inputClassesFactory.registerMouse(mouseMode, this.config);
|
|
1956
1956
|
}
|
|
1957
1957
|
}
|
|
1958
1958
|
|
|
@@ -56,14 +56,14 @@ export class WebXRController {
|
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
navigator.xr
|
|
59
|
+
void navigator.xr
|
|
60
60
|
/* Request immersive-vr session without any optional features. */
|
|
61
61
|
.requestSession('immersive-vr', { optionalFeatures: [] })
|
|
62
62
|
.then((session: XRSession) => {
|
|
63
63
|
this.onXrSessionStarted(session);
|
|
64
64
|
});
|
|
65
65
|
} else {
|
|
66
|
-
this.xrSession.end();
|
|
66
|
+
void this.xrSession.end();
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
|
|
@@ -265,11 +265,11 @@ export class WebXRController {
|
|
|
265
265
|
this.initShaders();
|
|
266
266
|
this.initBuffers();
|
|
267
267
|
|
|
268
|
-
session.requestReferenceSpace('local').then((refSpace) => {
|
|
268
|
+
void session.requestReferenceSpace('local').then((refSpace) => {
|
|
269
269
|
this.xrRefSpace = refSpace;
|
|
270
270
|
|
|
271
271
|
// Set up our base layer (i.e. a projection layer that fills the entire XR viewport).
|
|
272
|
-
this.xrSession.updateRenderState({
|
|
272
|
+
void this.xrSession.updateRenderState({
|
|
273
273
|
baseLayer: new XRWebGLLayer(this.xrSession, this.gl)
|
|
274
274
|
});
|
|
275
275
|
|
|
@@ -277,7 +277,7 @@ export class WebXRController {
|
|
|
277
277
|
if (this.xrSession.supportedFrameRates) {
|
|
278
278
|
for (const frameRate of this.xrSession.supportedFrameRates) {
|
|
279
279
|
if (frameRate == 90) {
|
|
280
|
-
session.updateTargetFrameRate(90);
|
|
280
|
+
void session.updateTargetFrameRate(90);
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
}
|