@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.4.8 → 1.0.2

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.
Files changed (127) hide show
  1. package/dist/cjs/Config/Config.js +4 -0
  2. package/dist/cjs/Config/Config.js.map +1 -1
  3. package/dist/cjs/Config/SettingBase.js +1 -3
  4. package/dist/cjs/Config/SettingBase.js.map +1 -1
  5. package/dist/cjs/Config/SettingFlag.js +1 -3
  6. package/dist/cjs/Config/SettingFlag.js.map +1 -1
  7. package/dist/cjs/Config/SettingNumber.js +1 -3
  8. package/dist/cjs/Config/SettingNumber.js.map +1 -1
  9. package/dist/cjs/Config/SettingOption.js +2 -6
  10. package/dist/cjs/Config/SettingOption.js.map +1 -1
  11. package/dist/cjs/Config/SettingText.js +1 -3
  12. package/dist/cjs/Config/SettingText.js.map +1 -1
  13. package/dist/cjs/Inputs/GamepadController.js +0 -2
  14. package/dist/cjs/Inputs/GamepadController.js.map +1 -1
  15. package/dist/cjs/Inputs/KeyboardController.js +14 -6
  16. package/dist/cjs/Inputs/KeyboardController.js.map +1 -1
  17. package/dist/cjs/PeerConnectionController/AggregatedStats.js +103 -45
  18. package/dist/cjs/PeerConnectionController/AggregatedStats.js.map +1 -1
  19. package/dist/cjs/PeerConnectionController/InboundRTPStats.js.map +1 -1
  20. package/dist/cjs/PeerConnectionController/LatencyCalculator.js +290 -0
  21. package/dist/cjs/PeerConnectionController/LatencyCalculator.js.map +1 -0
  22. package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js +11 -7
  23. package/dist/cjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
  24. package/dist/cjs/PeerConnectionController/PeerConnectionController.js +53 -19
  25. package/dist/cjs/PeerConnectionController/PeerConnectionController.js.map +1 -1
  26. package/dist/cjs/PixelStreaming/PixelStreaming.js +21 -3
  27. package/dist/cjs/PixelStreaming/PixelStreaming.js.map +1 -1
  28. package/dist/cjs/UI/OnScreenKeyboard.js +4 -1
  29. package/dist/cjs/UI/OnScreenKeyboard.js.map +1 -1
  30. package/dist/cjs/Util/EventEmitter.js +31 -1
  31. package/dist/cjs/Util/EventEmitter.js.map +1 -1
  32. package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js +20 -4
  33. package/dist/cjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  34. package/dist/cjs/__test__/mockMediaStream.js +100 -0
  35. package/dist/cjs/__test__/mockMediaStream.js.map +1 -0
  36. package/dist/cjs/__test__/mockRTCPeerConnection.js +252 -0
  37. package/dist/cjs/__test__/mockRTCPeerConnection.js.map +1 -0
  38. package/dist/cjs/__test__/mockRTCRtpReceiver.js +26 -0
  39. package/dist/cjs/__test__/mockRTCRtpReceiver.js.map +1 -0
  40. package/dist/cjs/__test__/mockWebSocket.js +109 -0
  41. package/dist/cjs/__test__/mockWebSocket.js.map +1 -0
  42. package/dist/cjs/pixelstreamingfrontend.js +4 -2
  43. package/dist/cjs/pixelstreamingfrontend.js.map +1 -1
  44. package/dist/esm/Config/Config.js +4 -0
  45. package/dist/esm/Config/Config.js.map +1 -1
  46. package/dist/esm/Config/SettingBase.js +1 -3
  47. package/dist/esm/Config/SettingBase.js.map +1 -1
  48. package/dist/esm/Config/SettingFlag.js +1 -3
  49. package/dist/esm/Config/SettingFlag.js.map +1 -1
  50. package/dist/esm/Config/SettingNumber.js +1 -3
  51. package/dist/esm/Config/SettingNumber.js.map +1 -1
  52. package/dist/esm/Config/SettingOption.js +2 -6
  53. package/dist/esm/Config/SettingOption.js.map +1 -1
  54. package/dist/esm/Config/SettingText.js +1 -3
  55. package/dist/esm/Config/SettingText.js.map +1 -1
  56. package/dist/esm/Inputs/GamepadController.js +0 -2
  57. package/dist/esm/Inputs/GamepadController.js.map +1 -1
  58. package/dist/esm/Inputs/KeyboardController.js +14 -6
  59. package/dist/esm/Inputs/KeyboardController.js.map +1 -1
  60. package/dist/esm/PeerConnectionController/AggregatedStats.js +104 -46
  61. package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -1
  62. package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -1
  63. package/dist/esm/PeerConnectionController/LatencyCalculator.js +284 -0
  64. package/dist/esm/PeerConnectionController/LatencyCalculator.js.map +1 -0
  65. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +8 -4
  66. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -1
  67. package/dist/esm/PeerConnectionController/PeerConnectionController.js +52 -18
  68. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -1
  69. package/dist/esm/PixelStreaming/PixelStreaming.js +22 -4
  70. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -1
  71. package/dist/esm/UI/OnScreenKeyboard.js +4 -1
  72. package/dist/esm/UI/OnScreenKeyboard.js.map +1 -1
  73. package/dist/esm/Util/EventEmitter.js +27 -0
  74. package/dist/esm/Util/EventEmitter.js.map +1 -1
  75. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +20 -4
  76. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -1
  77. package/dist/esm/__test__/mockMediaStream.js +92 -0
  78. package/dist/esm/__test__/mockMediaStream.js.map +1 -0
  79. package/dist/esm/__test__/mockRTCPeerConnection.js +242 -0
  80. package/dist/esm/__test__/mockRTCPeerConnection.js.map +1 -0
  81. package/dist/esm/__test__/mockRTCRtpReceiver.js +21 -0
  82. package/dist/esm/__test__/mockRTCRtpReceiver.js.map +1 -0
  83. package/dist/esm/__test__/mockWebSocket.js +103 -0
  84. package/dist/esm/__test__/mockWebSocket.js.map +1 -0
  85. package/dist/esm/pixelstreamingfrontend.js +2 -1
  86. package/dist/esm/pixelstreamingfrontend.js.map +1 -1
  87. package/dist/types/Config/Config.d.ts +1 -0
  88. package/dist/types/Inputs/KeyboardController.d.ts +1 -1
  89. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +18 -7
  90. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +88 -85
  91. package/dist/types/PeerConnectionController/LatencyCalculator.d.ts +87 -0
  92. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +46 -12
  93. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +17 -3
  94. package/dist/types/PixelStreaming/PixelStreaming.d.ts +16 -3
  95. package/dist/types/Util/EventEmitter.d.ts +34 -1
  96. package/dist/types/VideoPlayer/VideoPlayer.d.ts +1 -1
  97. package/dist/types/__test__/mockMediaStream.d.ts +49 -0
  98. package/dist/types/__test__/mockRTCPeerConnection.d.ts +134 -0
  99. package/dist/types/__test__/mockRTCRtpReceiver.d.ts +3 -0
  100. package/dist/types/__test__/mockWebSocket.d.ts +33 -0
  101. package/dist/types/pixelstreamingfrontend.d.ts +2 -1
  102. package/eslint.config.mjs +52 -0
  103. package/package.json +13 -14
  104. package/src/Config/Config.ts +14 -0
  105. package/src/Config/SettingBase.ts +1 -1
  106. package/src/Config/SettingFlag.ts +1 -1
  107. package/src/Config/SettingNumber.ts +1 -1
  108. package/src/Config/SettingOption.ts +2 -2
  109. package/src/Config/SettingText.ts +1 -1
  110. package/src/Inputs/GamepadController.ts +2 -2
  111. package/src/Inputs/KeyboardController.ts +13 -7
  112. package/src/PeerConnectionController/AggregatedStats.ts +111 -52
  113. package/src/PeerConnectionController/InboundRTPStats.ts +88 -85
  114. package/src/PeerConnectionController/LatencyCalculator.ts +392 -0
  115. package/src/PeerConnectionController/OutBoundRTPStats.ts +46 -12
  116. package/src/PeerConnectionController/PeerConnectionController.ts +72 -19
  117. package/src/PixelStreaming/PixelStreaming.ts +29 -4
  118. package/src/UI/OnScreenKeyboard.ts +5 -1
  119. package/src/Util/EventEmitter.ts +48 -0
  120. package/src/VideoPlayer/VideoPlayer.ts +1 -1
  121. package/src/WebRtcPlayer/WebRtcPlayerController.ts +23 -5
  122. package/src/__test__/mockRTCPeerConnection.ts +1 -1
  123. package/src/pixelstreamingfrontend.ts +2 -1
  124. package/tsconfig.base.json +2 -2
  125. package/.eslintignore +0 -12
  126. package/.eslintrc.js +0 -20
  127. package/.prettierrc.json +0 -7
@@ -0,0 +1,242 @@
1
+ const spyFunctions = {
2
+ constructorSpy: null,
3
+ closeSpy: null,
4
+ setRemoteDescriptionSpy: null,
5
+ setLocalDescriptionSpy: null,
6
+ createAnswerSpy: null,
7
+ addTransceiverSpy: null,
8
+ addIceCandidateSpy: null,
9
+ sendDataSpy: null,
10
+ };
11
+ const triggerFunctions = {
12
+ triggerIceConnectionStateChange: null,
13
+ triggerOnTrack: null,
14
+ triggerOnIceCandidate: null,
15
+ triggerOnDataChannel: null
16
+ };
17
+ export class MockRTCPeerConnectionImpl {
18
+ constructor(config) {
19
+ var _a;
20
+ this._dataChannels = [];
21
+ this.connectionState = "new";
22
+ this.iceConnectionState = "new";
23
+ (_a = spyFunctions.constructorSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, config);
24
+ triggerFunctions.triggerIceConnectionStateChange = this.triggerIceConnectionStateChange.bind(this);
25
+ triggerFunctions.triggerOnTrack = this.triggerOnTrack.bind(this);
26
+ triggerFunctions.triggerOnIceCandidate = this.triggerOnIceCandidate.bind(this);
27
+ triggerFunctions.triggerOnDataChannel =
28
+ this.triggerOnDataChannel.bind(this);
29
+ }
30
+ addIceCandidate(candidate, successCallback, failureCallback) {
31
+ var _a, _b;
32
+ if (this.iceConnectionState !== "connected" && this.iceConnectionState !== "completed") {
33
+ this.iceConnectionState = "checking";
34
+ }
35
+ (_a = this.oniceconnectionstatechange) === null || _a === void 0 ? void 0 : _a.call(this, new Event("iceconnectionstatechange"));
36
+ (_b = spyFunctions.addIceCandidateSpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, candidate);
37
+ return Promise.resolve();
38
+ }
39
+ addTrack(track, ...streams) {
40
+ throw new Error("Method not implemented.");
41
+ }
42
+ addTransceiver(trackOrKind, init) {
43
+ var _a;
44
+ (_a = spyFunctions.addTransceiverSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, trackOrKind, init);
45
+ return {};
46
+ }
47
+ createAnswer(successCallback, failureCallback) {
48
+ var _a;
49
+ (_a = spyFunctions.createAnswerSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions);
50
+ const res = {
51
+ type: "answer",
52
+ sdp: "v=0\r\no=- 5791786663981007547 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 98\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:z0li\r\na=ice-pwd:DkbG5Q3dFSIygDc47cms4TGA\r\na=ice-options:trickle\r\na=fingerprint:sha-256 F9:5B:3C:AB:89:88:0E:1B:2E:63:B3:D2:B8:92:59:E2:3A:46:B6:85:09:F4:50:0E:72:4F:9F:70:6D:5F:BD:1A\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 H264/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:98 H264/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:z0li\r\na=ice-pwd:DkbG5Q3dFSIygDc47cms4TGA\r\na=ice-options:trickle\r\na=fingerprint:sha-256 F9:5B:3C:AB:89:88:0E:1B:2E:63:B3:D2:B8:92:59:E2:3A:46:B6:85:09:F4:50:0E:72:4F:9F:70:6D:5F:BD:1A\r\na=setup:active\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:110 telephone-event/48000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:z0li\r\na=ice-pwd:DkbG5Q3dFSIygDc47cms4TGA\r\na=ice-options:trickle\r\na=fingerprint:sha-256 F9:5B:3C:AB:89:88:0E:1B:2E:63:B3:D2:B8:92:59:E2:3A:46:B6:85:09:F4:50:0E:72:4F:9F:70:6D:5F:BD:1A\r\na=setup:active\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"
53
+ };
54
+ return Promise.resolve(res);
55
+ }
56
+ createDataChannel(label, dataChannelDict) {
57
+ const dataChannel = new RTCDataChannel();
58
+ this._dataChannels.push(dataChannel);
59
+ return dataChannel;
60
+ }
61
+ createOffer(successCallback, failureCallback, options) {
62
+ throw new Error("Method not implemented.");
63
+ }
64
+ getConfiguration() {
65
+ throw new Error("Method not implemented.");
66
+ }
67
+ getReceivers() {
68
+ return [];
69
+ }
70
+ getSenders() {
71
+ throw new Error("Method not implemented.");
72
+ }
73
+ getStats(selector) {
74
+ const stats = {
75
+ forEach: function (callbackfn) {
76
+ callbackfn({
77
+ type: 'candidate-pair',
78
+ bytesReceived: 123,
79
+ });
80
+ callbackfn({
81
+ type: 'local-candidate',
82
+ address: 'mock-address',
83
+ });
84
+ },
85
+ };
86
+ return Promise.resolve(stats);
87
+ }
88
+ getTransceivers() {
89
+ return [];
90
+ }
91
+ removeTrack(sender) {
92
+ throw new Error("Method not implemented.");
93
+ }
94
+ restartIce() {
95
+ throw new Error("Method not implemented.");
96
+ }
97
+ setConfiguration(configuration) {
98
+ throw new Error("Method not implemented.");
99
+ }
100
+ setLocalDescription(description, successCallback, failureCallback) {
101
+ var _a;
102
+ (_a = spyFunctions.setLocalDescriptionSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, description);
103
+ return Promise.resolve();
104
+ }
105
+ setRemoteDescription(description, successCallback, failureCallback) {
106
+ var _a;
107
+ (_a = spyFunctions.setRemoteDescriptionSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, description);
108
+ return Promise.resolve();
109
+ }
110
+ addEventListener(type, listener, options) {
111
+ throw new Error("Method not implemented.");
112
+ }
113
+ removeEventListener(type, listener, options) {
114
+ throw new Error("Method not implemented.");
115
+ }
116
+ dispatchEvent(event) {
117
+ throw new Error("Method not implemented.");
118
+ }
119
+ static generateCertificate(keygenAlgorithm) {
120
+ throw new Error("Method not implemented.");
121
+ }
122
+ close() {
123
+ var _a, _b, _c;
124
+ this.connectionState = "closed";
125
+ this.iceConnectionState = "closed";
126
+ (_a = this.onconnectionstatechange) === null || _a === void 0 ? void 0 : _a.call(this, new Event(this.connectionState));
127
+ (_b = this.oniceconnectionstatechange) === null || _b === void 0 ? void 0 : _b.call(this, new Event(this.iceConnectionState));
128
+ this._dataChannels.forEach((channel) => channel.close());
129
+ (_c = spyFunctions.closeSpy) === null || _c === void 0 ? void 0 : _c.call(spyFunctions);
130
+ }
131
+ triggerIceConnectionStateChange(state) {
132
+ var _a;
133
+ this.iceConnectionState = state;
134
+ const event = new Event(state);
135
+ (_a = this.oniceconnectionstatechange) === null || _a === void 0 ? void 0 : _a.call(this, event);
136
+ }
137
+ triggerOnTrack(data) {
138
+ var _a;
139
+ const event = new RTCTrackEvent('track', data);
140
+ (_a = this.ontrack) === null || _a === void 0 ? void 0 : _a.call(this, event);
141
+ }
142
+ triggerOnIceCandidate(data) {
143
+ var _a;
144
+ const event = new RTCPeerConnectionIceEvent('icecandidate', data);
145
+ (_a = this.onicecandidate) === null || _a === void 0 ? void 0 : _a.call(this, event);
146
+ }
147
+ triggerOnDataChannel(data) {
148
+ var _a;
149
+ this._dataChannels.push(data.channel);
150
+ const event = new RTCDataChannelEvent('datachannel', data);
151
+ (_a = this.ondatachannel) === null || _a === void 0 ? void 0 : _a.call(this, event);
152
+ }
153
+ }
154
+ export class MockRTCIceCandidateImpl {
155
+ constructor(options) {
156
+ this.candidate = (options === null || options === void 0 ? void 0 : options.candidate) || "";
157
+ this.sdpMid = (options === null || options === void 0 ? void 0 : options.sdpMid) || null;
158
+ this.sdpMLineIndex = (options === null || options === void 0 ? void 0 : options.sdpMLineIndex) || null;
159
+ this.usernameFragment = (options === null || options === void 0 ? void 0 : options.usernameFragment) || null;
160
+ }
161
+ toJSON() {
162
+ throw new Error("Method not implemented.");
163
+ }
164
+ }
165
+ export class MockRTCDataChannelImpl {
166
+ constructor() {
167
+ this.readyState = "open";
168
+ }
169
+ close() {
170
+ var _a;
171
+ (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this, new Event('close'));
172
+ }
173
+ send(data) {
174
+ var _a;
175
+ (_a = spyFunctions.sendDataSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, data);
176
+ }
177
+ addEventListener(type, listener, options) {
178
+ throw new Error("Method not implemented.");
179
+ }
180
+ removeEventListener(type, listener, options) {
181
+ throw new Error("Method not implemented.");
182
+ }
183
+ dispatchEvent(event) {
184
+ var _a;
185
+ if (event.type === 'message') {
186
+ (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, event);
187
+ }
188
+ return true;
189
+ }
190
+ }
191
+ export class MockRTCDataChannelEventImpl extends Event {
192
+ constructor(name, data) {
193
+ super(name, data);
194
+ this.channel = data.channel;
195
+ }
196
+ }
197
+ export class MockRTCTrackEventImpl extends Event {
198
+ constructor(name, data) {
199
+ super(name, data);
200
+ this.receiver = data.receiver;
201
+ this.streams = data.streams || [];
202
+ this.track = data.track;
203
+ this.transceiver = data.transceiver;
204
+ }
205
+ }
206
+ const originalRTCPeerConnection = global.RTCPeerConnection;
207
+ const originalRTCIceCandidate = global.RTCIceCandidate;
208
+ const originalRTCDataChannel = global.RTCDataChannel;
209
+ const originalRTCDataChannelEvent = global.RTCDataChannelEvent;
210
+ const originalRTCTrackEvent = global.RTCTrackEvent;
211
+ export const mockRTCPeerConnection = () => {
212
+ spyFunctions.constructorSpy = jest.fn();
213
+ spyFunctions.closeSpy = jest.fn();
214
+ spyFunctions.setRemoteDescriptionSpy = jest.fn();
215
+ spyFunctions.setLocalDescriptionSpy = jest.fn();
216
+ spyFunctions.createAnswerSpy = jest.fn();
217
+ spyFunctions.addTransceiverSpy = jest.fn();
218
+ spyFunctions.addIceCandidateSpy = jest.fn();
219
+ spyFunctions.sendDataSpy = jest.fn();
220
+ global.RTCPeerConnection = MockRTCPeerConnectionImpl;
221
+ global.RTCIceCandidate = MockRTCIceCandidateImpl;
222
+ global.RTCDataChannel = MockRTCDataChannelImpl;
223
+ global.RTCDataChannelEvent = MockRTCDataChannelEventImpl;
224
+ global.RTCTrackEvent = MockRTCTrackEventImpl;
225
+ return [spyFunctions, triggerFunctions];
226
+ };
227
+ export const unmockRTCPeerConnection = () => {
228
+ global.RTCPeerConnection = originalRTCPeerConnection;
229
+ global.RTCIceCandidate = originalRTCIceCandidate;
230
+ global.RTCDataChannel = originalRTCDataChannel;
231
+ global.RTCDataChannelEvent = originalRTCDataChannelEvent;
232
+ global.RTCTrackEvent = originalRTCTrackEvent;
233
+ spyFunctions.constructorSpy = null;
234
+ spyFunctions.closeSpy = null;
235
+ spyFunctions.setRemoteDescriptionSpy = null;
236
+ spyFunctions.setLocalDescriptionSpy = null;
237
+ spyFunctions.createAnswerSpy = null;
238
+ spyFunctions.addTransceiverSpy = null;
239
+ spyFunctions.addIceCandidateSpy = null;
240
+ spyFunctions.sendDataSpy = null;
241
+ };
242
+ //# sourceMappingURL=mockRTCPeerConnection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockRTCPeerConnection.js","sourceRoot":"","sources":["../../../src/__test__/mockRTCPeerConnection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ export const mockRTCRtpReceiverImpl = {
2
+ prototype: jest.fn(),
3
+ getCapabilities: () => ({
4
+ codecs: [
5
+ {
6
+ clockRate: 60,
7
+ mimeType: "testMimeType",
8
+ sdpFmtpLine: "AV1"
9
+ }
10
+ ],
11
+ headerExtensions: []
12
+ })
13
+ };
14
+ const originalRTCRtpReceiver = global.RTCRtpReceiver;
15
+ export const mockRTCRtpReceiver = () => {
16
+ global.RTCRtpReceiver = mockRTCRtpReceiverImpl;
17
+ };
18
+ export const unmockRTCRtpReceiver = () => {
19
+ global.RTCRtpReceiver = originalRTCRtpReceiver;
20
+ };
21
+ //# sourceMappingURL=mockRTCRtpReceiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockRTCRtpReceiver.js","sourceRoot":"","sources":["../../../src/__test__/mockRTCRtpReceiver.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE;IACpB,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;QACpB,MAAM,EAAE;YACJ;gBACI,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,cAAc;gBACxB,WAAW,EAAE,KAAK;aACrB;SACa;QAClB,gBAAgB,EAAE,EAAuC;KAC5D,CAAC;CACkC,CAAC;AAEzC,MAAM,sBAAsB,GAAG,MAAM,CAAC,cAAc,CAAC;AACrD,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACnC,MAAM,CAAC,cAAc,GAAG,sBAAsB,CAAC;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACrC,MAAM,CAAC,cAAc,GAAG,sBAAsB,CAAC;AACnD,CAAC,CAAA"}
@@ -0,0 +1,103 @@
1
+ const spyFunctions = {
2
+ constructorSpy: null,
3
+ openSpy: null,
4
+ errorSpy: null,
5
+ closeSpy: null,
6
+ messageSpy: null,
7
+ messageBinarySpy: null,
8
+ sendSpy: null
9
+ };
10
+ const triggerFunctions = {
11
+ triggerOnOpen: null,
12
+ triggerOnError: null,
13
+ triggerOnClose: null,
14
+ triggerOnMessage: null,
15
+ triggerOnMessageBinary: null,
16
+ triggerRemoteClose: null
17
+ };
18
+ export class MockWebSocketImpl extends WebSocket {
19
+ constructor(url, protocols) {
20
+ var _a;
21
+ super(url, protocols);
22
+ this._readyState = this.OPEN;
23
+ (_a = spyFunctions.constructorSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, this.url);
24
+ triggerFunctions.triggerOnOpen = this.triggerOnOpen.bind(this);
25
+ triggerFunctions.triggerOnError = this.triggerOnError.bind(this);
26
+ triggerFunctions.triggerOnClose = this.triggerOnClose.bind(this);
27
+ triggerFunctions.triggerOnMessage = this.triggerOnMessage.bind(this);
28
+ triggerFunctions.triggerOnMessageBinary = this.triggerOnMessageBinary.bind(this);
29
+ triggerFunctions.triggerRemoteClose = this.triggerRemoteClose.bind(this);
30
+ }
31
+ get readyState() {
32
+ return this._readyState;
33
+ }
34
+ close(code, reason) {
35
+ super.close(code, reason);
36
+ this._readyState = this.CLOSED;
37
+ this.triggerOnClose({ code, reason });
38
+ }
39
+ send(data) {
40
+ var _a;
41
+ (_a = spyFunctions.sendSpy) === null || _a === void 0 ? void 0 : _a.call(spyFunctions, data);
42
+ }
43
+ triggerOnOpen() {
44
+ var _a, _b;
45
+ const event = new Event('open');
46
+ (_a = this.onopen) === null || _a === void 0 ? void 0 : _a.call(this, event);
47
+ (_b = spyFunctions.openSpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, event);
48
+ }
49
+ triggerOnError() {
50
+ var _a, _b;
51
+ const event = new Event('error');
52
+ (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, event);
53
+ (_b = spyFunctions.errorSpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, event);
54
+ }
55
+ triggerOnClose(closeReason) {
56
+ var _a, _b;
57
+ const reason = closeReason !== null && closeReason !== void 0 ? closeReason : { code: 1, reason: 'mock reason' };
58
+ const event = new CloseEvent('close', reason);
59
+ (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this, event);
60
+ (_b = spyFunctions.closeSpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, event);
61
+ }
62
+ triggerRemoteClose(code, reason) {
63
+ this.close(code, reason);
64
+ }
65
+ triggerOnMessage(message) {
66
+ var _a, _b;
67
+ const data = JSON.stringify(message);
68
+ const event = new MessageEvent('message', { data });
69
+ (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, event);
70
+ (_b = spyFunctions.messageSpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, event);
71
+ }
72
+ triggerOnMessageBinary(message) {
73
+ var _a, _b;
74
+ const data = message !== null && message !== void 0 ? message : new Blob([JSON.stringify({ type: 'test' })], {
75
+ type: 'application/json'
76
+ });
77
+ const event = new MessageEvent('messagebinary', { data });
78
+ (_a = this.onmessagebinary) === null || _a === void 0 ? void 0 : _a.call(this, event);
79
+ (_b = spyFunctions.messageBinarySpy) === null || _b === void 0 ? void 0 : _b.call(spyFunctions, event);
80
+ }
81
+ }
82
+ const originalWebSocket = WebSocket;
83
+ export const mockWebSocket = () => {
84
+ spyFunctions.constructorSpy = jest.fn();
85
+ spyFunctions.openSpy = jest.fn();
86
+ spyFunctions.errorSpy = jest.fn();
87
+ spyFunctions.closeSpy = jest.fn();
88
+ spyFunctions.messageSpy = jest.fn();
89
+ spyFunctions.messageBinarySpy = jest.fn();
90
+ spyFunctions.sendSpy = jest.fn();
91
+ global.WebSocket = MockWebSocketImpl;
92
+ return [spyFunctions, triggerFunctions];
93
+ };
94
+ export const unmockWebSocket = () => {
95
+ global.WebSocket = originalWebSocket;
96
+ spyFunctions.constructorSpy = null;
97
+ spyFunctions.openSpy = null;
98
+ spyFunctions.errorSpy = null;
99
+ spyFunctions.closeSpy = null;
100
+ spyFunctions.messageSpy = null;
101
+ spyFunctions.messageBinarySpy = null;
102
+ };
103
+ //# sourceMappingURL=mockWebSocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockWebSocket.js","sourceRoot":"","sources":["../../../src/__test__/mockWebSocket.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,8 @@ export { CandidatePairStats } from './PeerConnectionController/CandidatePairStat
18
18
  export { CandidateStat } from './PeerConnectionController/CandidateStat';
19
19
  export { DataChannelStats } from './PeerConnectionController/DataChannelStats';
20
20
  export { InboundAudioStats, InboundVideoStats } from './PeerConnectionController/InboundRTPStats';
21
- export { OutBoundVideoStats } from './PeerConnectionController/OutBoundRTPStats';
21
+ export { OutboundRTPStats, RemoteOutboundRTPStats } from './PeerConnectionController/OutBoundRTPStats';
22
+ export * from './PeerConnectionController/LatencyCalculator';
22
23
  export * from './DataChannel/DataChannelLatencyTestResults';
23
24
  export * from './Util/EventEmitter';
24
25
  export * from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
@@ -1 +1 @@
1
- {"version":3,"file":"pixelstreamingfrontend.js","sourceRoot":"","sources":["../../src/pixelstreamingfrontend.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAA2B,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qBAAqB,CAAC;AACpC,cAAc,8CAA8C,CAAC"}
1
+ {"version":3,"file":"pixelstreamingfrontend.js","sourceRoot":"","sources":["../../src/pixelstreamingfrontend.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,cAAc,EAA2B,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,aAAa,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,cAAc,+BAA+B,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,cAAc,6BAA6B,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACvG,cAAc,8CAA8C,CAAC;AAC7D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,qBAAqB,CAAC;AACpC,cAAc,8CAA8C,CAAC"}
@@ -28,6 +28,7 @@ export declare class Flags {
28
28
  static XRControllerInput: "XRControllerInput";
29
29
  static WaitForStreamer: "WaitForStreamer";
30
30
  static HideUI: "HideUI";
31
+ static EnableCaptureTimeExt: "EnableCaptureTimeExt";
31
32
  }
32
33
  export type FlagsKeys = Exclude<keyof typeof Flags, 'prototype'>;
33
34
  export type FlagsIds = (typeof Flags)[FlagsKeys];
@@ -12,7 +12,7 @@ export declare class KeyboardController implements IInputController {
12
12
  onKeyDownListener: (event: KeyboardEvent) => void;
13
13
  onKeyUpListener: (event: KeyboardEvent) => void;
14
14
  onKeyPressListener: (event: KeyboardEvent) => void;
15
- onCompositionEndListener: (event: KeyboardEvent) => void;
15
+ onCompositionEndListener: (event: CompositionEvent) => void;
16
16
  constructor(streamMessageController: StreamMessageController, config: Config, activeKeys: ActiveKeys);
17
17
  register(): void;
18
18
  unregister(): void;
@@ -3,18 +3,24 @@ import { InboundTrackStats } from './InboundTrackStats';
3
3
  import { DataChannelStats } from './DataChannelStats';
4
4
  import { CandidateStat } from './CandidateStat';
5
5
  import { CandidatePairStats } from './CandidatePairStats';
6
- import { OutBoundRTPStats, OutBoundVideoStats } from './OutBoundRTPStats';
6
+ import { RemoteOutboundRTPStats, OutboundRTPStats } from './OutBoundRTPStats';
7
7
  import { SessionStats } from './SessionStats';
8
8
  import { StreamStats } from './StreamStats';
9
9
  import { CodecStats } from './CodecStats';
10
+ /**
11
+ * The Aggregated Stats that is generated from the RTC Stats Report
12
+ */
10
13
  export declare class AggregatedStats {
11
14
  inboundVideoStats: InboundVideoStats;
12
15
  inboundAudioStats: InboundAudioStats;
13
16
  candidatePairs: Array<CandidatePairStats>;
14
- DataChannelStats: DataChannelStats;
17
+ datachannelStats: DataChannelStats;
15
18
  localCandidates: Array<CandidateStat>;
16
19
  remoteCandidates: Array<CandidateStat>;
17
- outBoundVideoStats: OutBoundVideoStats;
20
+ outboundVideoStats: OutboundRTPStats;
21
+ outboundAudioStats: OutboundRTPStats;
22
+ remoteOutboundVideoStats: RemoteOutboundRTPStats;
23
+ remoteOutboundAudioStats: RemoteOutboundRTPStats;
18
24
  sessionStats: SessionStats;
19
25
  streamStats: StreamStats;
20
26
  codecs: Map<string, CodecStats>;
@@ -55,12 +61,17 @@ export declare class AggregatedStats {
55
61
  * Process the Inbound RTP Audio and Video Data
56
62
  * @param stat - inbound rtp stats
57
63
  */
58
- handleInBoundRTP(stat: InboundRTPStats): void;
64
+ handleInboundRTP(stat: InboundRTPStats): void;
59
65
  /**
60
- * Process the outbound RTP Audio and Video Data
61
- * @param stat - remote outbound stats
66
+ * Process the "local" outbound RTP Audio and Video stats.
67
+ * @param stat - local outbound rtp stats
62
68
  */
63
- handleRemoteOutBound(stat: OutBoundRTPStats): void;
69
+ handleLocalOutbound(stat: OutboundRTPStats): void;
70
+ /**
71
+ * Process the "remote" outbound RTP Audio and Video stats.
72
+ * @param stat - remote outbound rtp stats
73
+ */
74
+ handleRemoteOutbound(stat: RemoteOutboundRTPStats): void;
64
75
  /**
65
76
  * Process the Inbound Video Track Data
66
77
  * @param stat - video track stats