@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.3.0 → 0.3.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 (172) hide show
  1. package/dist/commonjs/AFK/AFKController.js +109 -109
  2. package/dist/commonjs/Config/Config.js +559 -559
  3. package/dist/commonjs/Config/SettingBase.js +98 -98
  4. package/dist/commonjs/Config/SettingFlag.js +49 -49
  5. package/dist/commonjs/Config/SettingNumber.js +83 -83
  6. package/dist/commonjs/Config/SettingOption.js +84 -84
  7. package/dist/commonjs/Config/SettingText.js +42 -42
  8. package/dist/commonjs/DataChannel/DataChannelController.js +106 -106
  9. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +94 -94
  10. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +18 -18
  11. package/dist/commonjs/DataChannel/DataChannelSender.js +43 -43
  12. package/dist/commonjs/DataChannel/InitialSettings.js +41 -41
  13. package/dist/commonjs/DataChannel/LatencyTestResults.js +60 -60
  14. package/dist/commonjs/FreezeFrame/FreezeFrame.js +93 -93
  15. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +95 -95
  16. package/dist/commonjs/Inputs/GamepadController.js +188 -188
  17. package/dist/commonjs/Inputs/GamepadTypes.js +21 -21
  18. package/dist/commonjs/Inputs/IInputController.js +2 -2
  19. package/dist/commonjs/Inputs/InputClassesFactory.js +96 -96
  20. package/dist/commonjs/Inputs/KeyCodes.js +112 -112
  21. package/dist/commonjs/Inputs/KeyboardController.js +137 -137
  22. package/dist/commonjs/Inputs/MouseButtons.js +28 -28
  23. package/dist/commonjs/Inputs/MouseController.js +97 -97
  24. package/dist/commonjs/Inputs/MouseControllerHovering.js +93 -93
  25. package/dist/commonjs/Inputs/MouseControllerLocked.js +153 -153
  26. package/dist/commonjs/Inputs/SpecialKeyCodes.js +19 -19
  27. package/dist/commonjs/Inputs/TouchController.js +123 -123
  28. package/dist/commonjs/Inputs/TouchController.js.map +1 -1
  29. package/dist/commonjs/Inputs/TouchControllerFake.js +91 -91
  30. package/dist/commonjs/Inputs/XRGamepadController.js +124 -124
  31. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +252 -252
  32. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +10 -10
  33. package/dist/commonjs/PeerConnectionController/CandidateStat.js +10 -10
  34. package/dist/commonjs/PeerConnectionController/CodecStats.js +10 -10
  35. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +10 -10
  36. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +22 -22
  37. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +10 -10
  38. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +16 -16
  39. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +584 -584
  40. package/dist/commonjs/PeerConnectionController/SessionStats.js +10 -10
  41. package/dist/commonjs/PeerConnectionController/StreamStats.js +10 -10
  42. package/dist/commonjs/PixelStreaming/PixelStreaming.js +607 -607
  43. package/dist/commonjs/UI/OnScreenKeyboard.js +82 -82
  44. package/dist/commonjs/UeInstanceMessage/ResponseController.js +38 -38
  45. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +120 -120
  46. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +210 -210
  47. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +49 -49
  48. package/dist/commonjs/Util/EventEmitter.js +386 -386
  49. package/dist/commonjs/Util/FileUtil.js +108 -108
  50. package/dist/commonjs/Util/IURLSearchParams.js +25 -25
  51. package/dist/commonjs/Util/InputCoordTranslator.js +49 -49
  52. package/dist/commonjs/Util/RTCUtils.js +40 -40
  53. package/dist/commonjs/VideoPlayer/StreamController.js +67 -67
  54. package/dist/commonjs/VideoPlayer/VideoPlayer.js +177 -177
  55. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1221 -1221
  56. package/dist/commonjs/WebXR/WebXRController.js +335 -335
  57. package/dist/commonjs/pixelstreamingfrontend.js +70 -70
  58. package/dist/esm/AFK/AFKController.js +105 -105
  59. package/dist/esm/Config/Config.js +551 -551
  60. package/dist/esm/Config/SettingBase.js +94 -94
  61. package/dist/esm/Config/SettingFlag.js +45 -45
  62. package/dist/esm/Config/SettingNumber.js +79 -79
  63. package/dist/esm/Config/SettingOption.js +80 -80
  64. package/dist/esm/Config/SettingText.js +38 -38
  65. package/dist/esm/DataChannel/DataChannelController.js +102 -102
  66. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +90 -90
  67. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +14 -14
  68. package/dist/esm/DataChannel/DataChannelSender.js +39 -39
  69. package/dist/esm/DataChannel/InitialSettings.js +34 -34
  70. package/dist/esm/DataChannel/LatencyTestResults.js +56 -56
  71. package/dist/esm/FreezeFrame/FreezeFrame.js +89 -89
  72. package/dist/esm/FreezeFrame/FreezeFrameController.js +91 -91
  73. package/dist/esm/Inputs/GamepadController.js +184 -184
  74. package/dist/esm/Inputs/GamepadTypes.js +17 -17
  75. package/dist/esm/Inputs/IInputController.js +1 -1
  76. package/dist/esm/Inputs/InputClassesFactory.js +91 -91
  77. package/dist/esm/Inputs/KeyCodes.js +109 -109
  78. package/dist/esm/Inputs/KeyboardController.js +133 -133
  79. package/dist/esm/Inputs/MouseButtons.js +23 -23
  80. package/dist/esm/Inputs/MouseController.js +93 -93
  81. package/dist/esm/Inputs/MouseControllerHovering.js +89 -89
  82. package/dist/esm/Inputs/MouseControllerLocked.js +149 -149
  83. package/dist/esm/Inputs/SpecialKeyCodes.js +15 -15
  84. package/dist/esm/Inputs/TouchController.js +119 -119
  85. package/dist/esm/Inputs/TouchController.js.map +1 -1
  86. package/dist/esm/Inputs/TouchControllerFake.js +87 -87
  87. package/dist/esm/Inputs/XRGamepadController.js +120 -120
  88. package/dist/esm/PeerConnectionController/AggregatedStats.js +248 -248
  89. package/dist/esm/PeerConnectionController/CandidatePairStats.js +6 -6
  90. package/dist/esm/PeerConnectionController/CandidateStat.js +6 -6
  91. package/dist/esm/PeerConnectionController/CodecStats.js +6 -6
  92. package/dist/esm/PeerConnectionController/DataChannelStats.js +6 -6
  93. package/dist/esm/PeerConnectionController/InboundRTPStats.js +16 -16
  94. package/dist/esm/PeerConnectionController/InboundTrackStats.js +6 -6
  95. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +11 -11
  96. package/dist/esm/PeerConnectionController/PeerConnectionController.js +580 -580
  97. package/dist/esm/PeerConnectionController/SessionStats.js +6 -6
  98. package/dist/esm/PeerConnectionController/StreamStats.js +6 -6
  99. package/dist/esm/PixelStreaming/PixelStreaming.js +603 -603
  100. package/dist/esm/UI/OnScreenKeyboard.js +78 -78
  101. package/dist/esm/UeInstanceMessage/ResponseController.js +34 -34
  102. package/dist/esm/UeInstanceMessage/SendMessageController.js +116 -116
  103. package/dist/esm/UeInstanceMessage/StreamMessageController.js +205 -205
  104. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +45 -45
  105. package/dist/esm/Util/EventEmitter.js +345 -345
  106. package/dist/esm/Util/FileUtil.js +103 -103
  107. package/dist/esm/Util/IURLSearchParams.js +21 -21
  108. package/dist/esm/Util/InputCoordTranslator.js +45 -45
  109. package/dist/esm/Util/RTCUtils.js +36 -36
  110. package/dist/esm/VideoPlayer/StreamController.js +63 -63
  111. package/dist/esm/VideoPlayer/VideoPlayer.js +173 -173
  112. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1217 -1217
  113. package/dist/esm/WebXR/WebXRController.js +331 -331
  114. package/dist/esm/pixelstreamingfrontend.js +24 -24
  115. package/dist/types/AFK/AFKController.d.ts +38 -38
  116. package/dist/types/Config/Config.d.ts +220 -220
  117. package/dist/types/Config/SettingBase.d.ts +43 -43
  118. package/dist/types/Config/SettingFlag.d.ts +24 -24
  119. package/dist/types/Config/SettingNumber.d.ts +41 -41
  120. package/dist/types/Config/SettingOption.d.ts +41 -41
  121. package/dist/types/Config/SettingText.d.ts +21 -21
  122. package/dist/types/DataChannel/DataChannelController.d.ts +59 -59
  123. package/dist/types/DataChannel/DataChannelLatencyTestController.d.ts +25 -25
  124. package/dist/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  125. package/dist/types/DataChannel/DataChannelSender.d.ts +21 -21
  126. package/dist/types/DataChannel/InitialSettings.d.ts +44 -44
  127. package/dist/types/DataChannel/LatencyTestResults.d.ts +31 -31
  128. package/dist/types/FreezeFrame/FreezeFrame.d.ts +36 -36
  129. package/dist/types/FreezeFrame/FreezeFrameController.d.ts +37 -37
  130. package/dist/types/Inputs/GamepadController.d.ts +61 -61
  131. package/dist/types/Inputs/GamepadTypes.d.ts +15 -15
  132. package/dist/types/Inputs/IInputController.d.ts +16 -16
  133. package/dist/types/Inputs/InputClassesFactory.d.ts +53 -53
  134. package/dist/types/Inputs/KeyCodes.d.ts +5 -5
  135. package/dist/types/Inputs/KeyboardController.d.ts +34 -34
  136. package/dist/types/Inputs/MouseButtons.d.ts +22 -22
  137. package/dist/types/Inputs/MouseController.d.ts +40 -40
  138. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -26
  139. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -31
  140. package/dist/types/Inputs/SpecialKeyCodes.d.ts +14 -14
  141. package/dist/types/Inputs/TouchController.d.ts +28 -28
  142. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -29
  143. package/dist/types/Inputs/XRGamepadController.d.ts +15 -15
  144. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +82 -82
  145. package/dist/types/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  146. package/dist/types/PeerConnectionController/CandidateStat.d.ts +13 -13
  147. package/dist/types/PeerConnectionController/CodecStats.d.ts +14 -14
  148. package/dist/types/PeerConnectionController/DataChannelStats.d.ts +15 -15
  149. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  150. package/dist/types/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  151. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  152. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  153. package/dist/types/PeerConnectionController/SessionStats.d.ts +8 -8
  154. package/dist/types/PeerConnectionController/StreamStats.d.ts +9 -9
  155. package/dist/types/PixelStreaming/PixelStreaming.d.ts +271 -271
  156. package/dist/types/UI/OnScreenKeyboard.d.ts +30 -30
  157. package/dist/types/UeInstanceMessage/ResponseController.d.ts +19 -19
  158. package/dist/types/UeInstanceMessage/SendMessageController.d.ts +18 -18
  159. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  160. package/dist/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  161. package/dist/types/Util/EventEmitter.d.ts +429 -429
  162. package/dist/types/Util/FileUtil.d.ts +32 -32
  163. package/dist/types/Util/IURLSearchParams.d.ts +9 -9
  164. package/dist/types/Util/InputCoordTranslator.d.ts +29 -29
  165. package/dist/types/Util/RTCUtils.d.ts +8 -8
  166. package/dist/types/VideoPlayer/StreamController.d.ts +22 -22
  167. package/dist/types/VideoPlayer/VideoPlayer.d.ts +78 -78
  168. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  169. package/dist/types/WebXR/WebXRController.d.ts +42 -42
  170. package/dist/types/pixelstreamingfrontend.d.ts +23 -23
  171. package/package.json +45 -45
  172. package/src/Inputs/TouchController.ts +3 -3
@@ -1,109 +1,109 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.FileTemplate = exports.FileUtil = void 0;
5
- const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
- /**
7
- * Utility function for populate file information from byte buffers.
8
- */
9
- class FileUtil {
10
- /**
11
- * Processes a files extension when received over data channel
12
- * @param view - the file extension data
13
- */
14
- static setExtensionFromBytes(view, file) {
15
- // Reset file if we got a file message and we are not "receiving" it yet
16
- if (!file.receiving) {
17
- file.mimetype = '';
18
- file.extension = '';
19
- file.receiving = true;
20
- file.valid = false;
21
- file.size = 0;
22
- file.data = [];
23
- file.timestampStart = new Date().getTime();
24
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
25
- }
26
- const extensionAsString = new TextDecoder('utf-16').decode(view.slice(1));
27
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(extensionAsString);
28
- file.extension = extensionAsString;
29
- }
30
- /**
31
- * Processes a files mime type when received over data channel
32
- * @param view - the file mime type data
33
- */
34
- static setMimeTypeFromBytes(view, file) {
35
- // Reset file if we got a file message and we are not "receiving" it yet
36
- if (!file.receiving) {
37
- file.mimetype = '';
38
- file.extension = '';
39
- file.receiving = true;
40
- file.valid = false;
41
- file.size = 0;
42
- file.data = [];
43
- file.timestampStart = new Date().getTime();
44
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
45
- }
46
- const mimeAsString = new TextDecoder('utf-16').decode(view.slice(1));
47
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(mimeAsString);
48
- file.mimetype = mimeAsString;
49
- }
50
- /**
51
- * Processes a files contents when received over data channel
52
- * @param view - the file contents data
53
- */
54
- static setContentsFromBytes(view, file) {
55
- // If we haven't received the initial setup instructions, return
56
- if (!file.receiving)
57
- return;
58
- // Extract the total size of the file (across all chunks)
59
- file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
60
- 16379 /* The maximum number of payload bits per message*/);
61
- // Get the file part of the payload
62
- const fileBytes = view.slice(1 + 4);
63
- // Append to existing data that holds the file
64
- file.data.push(fileBytes);
65
- // Uncomment for debug
66
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
67
- if (file.data.length === file.size) {
68
- file.receiving = false;
69
- file.valid = true;
70
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received complete file');
71
- const transferDuration = new Date().getTime() - file.timestampStart;
72
- const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
73
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
74
- // File reconstruction
75
- /**
76
- * Example code to reconstruct the file
77
- *
78
- * This code reconstructs the received data into the original file based on the mime type and extension provided and then downloads the reconstructed file
79
- */
80
- const received = new Blob(file.data, { type: file.mimetype });
81
- const a = document.createElement('a');
82
- a.setAttribute('href', URL.createObjectURL(received));
83
- a.setAttribute('download', `transfer.${file.extension}`);
84
- document.body.append(a);
85
- // if you are so inclined to make it auto-download, do something like: a.click();
86
- a.remove();
87
- }
88
- else if (file.data.length > file.size) {
89
- file.receiving = false;
90
- lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
91
- }
92
- }
93
- }
94
- exports.FileUtil = FileUtil;
95
- /**
96
- * A class that represents a template for a downloaded file
97
- */
98
- class FileTemplate {
99
- constructor() {
100
- this.mimetype = '';
101
- this.extension = '';
102
- this.receiving = false;
103
- this.size = 0;
104
- this.data = [];
105
- this.valid = false;
106
- }
107
- }
108
- exports.FileTemplate = FileTemplate;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FileTemplate = exports.FileUtil = void 0;
5
+ const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
+ /**
7
+ * Utility function for populate file information from byte buffers.
8
+ */
9
+ class FileUtil {
10
+ /**
11
+ * Processes a files extension when received over data channel
12
+ * @param view - the file extension data
13
+ */
14
+ static setExtensionFromBytes(view, file) {
15
+ // Reset file if we got a file message and we are not "receiving" it yet
16
+ if (!file.receiving) {
17
+ file.mimetype = '';
18
+ file.extension = '';
19
+ file.receiving = true;
20
+ file.valid = false;
21
+ file.size = 0;
22
+ file.data = [];
23
+ file.timestampStart = new Date().getTime();
24
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
25
+ }
26
+ const extensionAsString = new TextDecoder('utf-16').decode(view.slice(1));
27
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(extensionAsString);
28
+ file.extension = extensionAsString;
29
+ }
30
+ /**
31
+ * Processes a files mime type when received over data channel
32
+ * @param view - the file mime type data
33
+ */
34
+ static setMimeTypeFromBytes(view, file) {
35
+ // Reset file if we got a file message and we are not "receiving" it yet
36
+ if (!file.receiving) {
37
+ file.mimetype = '';
38
+ file.extension = '';
39
+ file.receiving = true;
40
+ file.valid = false;
41
+ file.size = 0;
42
+ file.data = [];
43
+ file.timestampStart = new Date().getTime();
44
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
45
+ }
46
+ const mimeAsString = new TextDecoder('utf-16').decode(view.slice(1));
47
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(mimeAsString);
48
+ file.mimetype = mimeAsString;
49
+ }
50
+ /**
51
+ * Processes a files contents when received over data channel
52
+ * @param view - the file contents data
53
+ */
54
+ static setContentsFromBytes(view, file) {
55
+ // If we haven't received the initial setup instructions, return
56
+ if (!file.receiving)
57
+ return;
58
+ // Extract the total size of the file (across all chunks)
59
+ file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
60
+ 16379 /* The maximum number of payload bits per message*/);
61
+ // Get the file part of the payload
62
+ const fileBytes = view.slice(1 + 4);
63
+ // Append to existing data that holds the file
64
+ file.data.push(fileBytes);
65
+ // Uncomment for debug
66
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
67
+ if (file.data.length === file.size) {
68
+ file.receiving = false;
69
+ file.valid = true;
70
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received complete file');
71
+ const transferDuration = new Date().getTime() - file.timestampStart;
72
+ const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
73
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
74
+ // File reconstruction
75
+ /**
76
+ * Example code to reconstruct the file
77
+ *
78
+ * This code reconstructs the received data into the original file based on the mime type and extension provided and then downloads the reconstructed file
79
+ */
80
+ const received = new Blob(file.data, { type: file.mimetype });
81
+ const a = document.createElement('a');
82
+ a.setAttribute('href', URL.createObjectURL(received));
83
+ a.setAttribute('download', `transfer.${file.extension}`);
84
+ document.body.append(a);
85
+ // if you are so inclined to make it auto-download, do something like: a.click();
86
+ a.remove();
87
+ }
88
+ else if (file.data.length > file.size) {
89
+ file.receiving = false;
90
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
91
+ }
92
+ }
93
+ }
94
+ exports.FileUtil = FileUtil;
95
+ /**
96
+ * A class that represents a template for a downloaded file
97
+ */
98
+ class FileTemplate {
99
+ constructor() {
100
+ this.mimetype = '';
101
+ this.extension = '';
102
+ this.receiving = false;
103
+ this.size = 0;
104
+ this.data = [];
105
+ this.valid = false;
106
+ }
107
+ }
108
+ exports.FileTemplate = FileTemplate;
109
109
  //# sourceMappingURL=FileUtil.js.map
@@ -1,26 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IURLSearchParams = void 0;
4
- /**
5
- * A case insensitive, partial implementation of URLSearchParams
6
- */
7
- class IURLSearchParams {
8
- constructor(search) {
9
- this._urlParams = {};
10
- const urlParams = new URLSearchParams(search);
11
- for (const [name, value] of urlParams) {
12
- this._urlParams[name.toLowerCase()] = value;
13
- }
14
- }
15
- has(name) {
16
- return name.toLowerCase() in this._urlParams;
17
- }
18
- get(name) {
19
- if (this.has(name)) {
20
- return this._urlParams[name.toLowerCase()];
21
- }
22
- return null;
23
- }
24
- }
25
- exports.IURLSearchParams = IURLSearchParams;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IURLSearchParams = void 0;
4
+ /**
5
+ * A case insensitive, partial implementation of URLSearchParams
6
+ */
7
+ class IURLSearchParams {
8
+ constructor(search) {
9
+ this._urlParams = {};
10
+ const urlParams = new URLSearchParams(search);
11
+ for (const [name, value] of urlParams) {
12
+ this._urlParams[name.toLowerCase()] = value;
13
+ }
14
+ }
15
+ has(name) {
16
+ return name.toLowerCase() in this._urlParams;
17
+ }
18
+ get(name) {
19
+ if (this.has(name)) {
20
+ return this._urlParams[name.toLowerCase()];
21
+ }
22
+ return null;
23
+ }
24
+ }
25
+ exports.IURLSearchParams = IURLSearchParams;
26
26
  //# sourceMappingURL=IURLSearchParams.js.map
@@ -1,50 +1,50 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.InputCoordTranslator = void 0;
5
- /**
6
- * Converts coordinates from element relative coordinates to values normalized within the value range of a short (and back again)
7
- */
8
- class InputCoordTranslator {
9
- // we dont use a constructor here because the object is created and passed around to various locations
10
- // possibly before this method is called.
11
- reconfigure(playerSize, videoSize) {
12
- const playerAspectRatio = playerSize.height / playerSize.width;
13
- const videoAspectRatio = videoSize.height / videoSize.width;
14
- this.playerIsLarger = playerAspectRatio > videoAspectRatio;
15
- this.playerSize = playerSize;
16
- this.ratio = this.playerIsLarger
17
- ? playerAspectRatio / videoAspectRatio
18
- : videoAspectRatio / playerAspectRatio;
19
- }
20
- translateUnsigned(x, y) {
21
- const normalizedX = this.playerIsLarger
22
- ? x / this.playerSize.width
23
- : this.ratio * (x / this.playerSize.width - 0.5) + 0.5;
24
- const normalizedY = this.playerIsLarger
25
- ? this.ratio * (y / this.playerSize.height - 0.5) + 0.5
26
- : y / this.playerSize.height;
27
- if (normalizedX < 0.0 || normalizedX > 1.0 || normalizedY < 0.0 || normalizedY > 1.0) {
28
- return { inRange: false, x: 65535, y: 65535 };
29
- }
30
- else {
31
- return { inRange: true, x: normalizedX * 65536, y: normalizedY * 65536 };
32
- }
33
- }
34
- translateSigned(x, y) {
35
- const normalizedX = this.playerIsLarger
36
- ? x / (0.5 * this.playerSize.width)
37
- : (this.ratio * x) / (0.5 * this.playerSize.width);
38
- const normalizedY = this.playerIsLarger
39
- ? (this.ratio * y) / (0.5 * this.playerSize.height)
40
- : y / (0.5 * this.playerSize.height);
41
- return { x: normalizedX * 32767, y: normalizedY * 32767 };
42
- }
43
- untranslateUnsigned(x, y) {
44
- const normalizedX = this.playerIsLarger ? x / 65536 : (x / 65536 - 0.5) / this.ratio + 0.5;
45
- const normalizedY = this.playerIsLarger ? (y / 65536 - 0.5) / this.ratio + 0.5 : y / 65536;
46
- return { x: normalizedX * this.playerSize.width, y: normalizedY * this.playerSize.height };
47
- }
48
- }
49
- exports.InputCoordTranslator = InputCoordTranslator;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.InputCoordTranslator = void 0;
5
+ /**
6
+ * Converts coordinates from element relative coordinates to values normalized within the value range of a short (and back again)
7
+ */
8
+ class InputCoordTranslator {
9
+ // we dont use a constructor here because the object is created and passed around to various locations
10
+ // possibly before this method is called.
11
+ reconfigure(playerSize, videoSize) {
12
+ const playerAspectRatio = playerSize.height / playerSize.width;
13
+ const videoAspectRatio = videoSize.height / videoSize.width;
14
+ this.playerIsLarger = playerAspectRatio > videoAspectRatio;
15
+ this.playerSize = playerSize;
16
+ this.ratio = this.playerIsLarger
17
+ ? playerAspectRatio / videoAspectRatio
18
+ : videoAspectRatio / playerAspectRatio;
19
+ }
20
+ translateUnsigned(x, y) {
21
+ const normalizedX = this.playerIsLarger
22
+ ? x / this.playerSize.width
23
+ : this.ratio * (x / this.playerSize.width - 0.5) + 0.5;
24
+ const normalizedY = this.playerIsLarger
25
+ ? this.ratio * (y / this.playerSize.height - 0.5) + 0.5
26
+ : y / this.playerSize.height;
27
+ if (normalizedX < 0.0 || normalizedX > 1.0 || normalizedY < 0.0 || normalizedY > 1.0) {
28
+ return { inRange: false, x: 65535, y: 65535 };
29
+ }
30
+ else {
31
+ return { inRange: true, x: normalizedX * 65536, y: normalizedY * 65536 };
32
+ }
33
+ }
34
+ translateSigned(x, y) {
35
+ const normalizedX = this.playerIsLarger
36
+ ? x / (0.5 * this.playerSize.width)
37
+ : (this.ratio * x) / (0.5 * this.playerSize.width);
38
+ const normalizedY = this.playerIsLarger
39
+ ? (this.ratio * y) / (0.5 * this.playerSize.height)
40
+ : y / (0.5 * this.playerSize.height);
41
+ return { x: normalizedX * 32767, y: normalizedY * 32767 };
42
+ }
43
+ untranslateUnsigned(x, y) {
44
+ const normalizedX = this.playerIsLarger ? x / 65536 : (x / 65536 - 0.5) / this.ratio + 0.5;
45
+ const normalizedY = this.playerIsLarger ? (y / 65536 - 0.5) / this.ratio + 0.5 : y / 65536;
46
+ return { x: normalizedX * this.playerSize.width, y: normalizedY * this.playerSize.height };
47
+ }
48
+ }
49
+ exports.InputCoordTranslator = InputCoordTranslator;
50
50
  //# sourceMappingURL=InputCoordTranslator.js.map
@@ -1,41 +1,41 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RTCUtils = void 0;
4
- class RTCUtils {
5
- static isVideoTransceiver(transceiver) {
6
- return this.canTransceiverReceiveVideo(transceiver) || this.canTransceiverSendVideo(transceiver);
7
- }
8
- static canTransceiverReceiveVideo(transceiver) {
9
- return (!!transceiver &&
10
- (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
11
- transceiver.receiver &&
12
- transceiver.receiver.track &&
13
- transceiver.receiver.track.kind === 'video');
14
- }
15
- static canTransceiverSendVideo(transceiver) {
16
- return (!!transceiver &&
17
- (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
18
- transceiver.sender &&
19
- transceiver.sender.track &&
20
- transceiver.sender.track.kind === 'video');
21
- }
22
- static isAudioTransceiver(transceiver) {
23
- return this.canTransceiverReceiveAudio(transceiver) || this.canTransceiverSendAudio(transceiver);
24
- }
25
- static canTransceiverReceiveAudio(transceiver) {
26
- return (!!transceiver &&
27
- (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
28
- transceiver.receiver &&
29
- transceiver.receiver.track &&
30
- transceiver.receiver.track.kind === 'audio');
31
- }
32
- static canTransceiverSendAudio(transceiver) {
33
- return (!!transceiver &&
34
- (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
35
- transceiver.sender &&
36
- transceiver.sender.track &&
37
- transceiver.sender.track.kind === 'audio');
38
- }
39
- }
40
- exports.RTCUtils = RTCUtils;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RTCUtils = void 0;
4
+ class RTCUtils {
5
+ static isVideoTransceiver(transceiver) {
6
+ return this.canTransceiverReceiveVideo(transceiver) || this.canTransceiverSendVideo(transceiver);
7
+ }
8
+ static canTransceiverReceiveVideo(transceiver) {
9
+ return (!!transceiver &&
10
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
11
+ transceiver.receiver &&
12
+ transceiver.receiver.track &&
13
+ transceiver.receiver.track.kind === 'video');
14
+ }
15
+ static canTransceiverSendVideo(transceiver) {
16
+ return (!!transceiver &&
17
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
18
+ transceiver.sender &&
19
+ transceiver.sender.track &&
20
+ transceiver.sender.track.kind === 'video');
21
+ }
22
+ static isAudioTransceiver(transceiver) {
23
+ return this.canTransceiverReceiveAudio(transceiver) || this.canTransceiverSendAudio(transceiver);
24
+ }
25
+ static canTransceiverReceiveAudio(transceiver) {
26
+ return (!!transceiver &&
27
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
28
+ transceiver.receiver &&
29
+ transceiver.receiver.track &&
30
+ transceiver.receiver.track.kind === 'audio');
31
+ }
32
+ static canTransceiverSendAudio(transceiver) {
33
+ return (!!transceiver &&
34
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
35
+ transceiver.sender &&
36
+ transceiver.sender.track &&
37
+ transceiver.sender.track.kind === 'audio');
38
+ }
39
+ }
40
+ exports.RTCUtils = RTCUtils;
41
41
  //# sourceMappingURL=RTCUtils.js.map
@@ -1,68 +1,68 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.StreamController = void 0;
5
- const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
- /**
7
- * Video Player Controller handles the creation of the video HTML element and all handlers
8
- */
9
- class StreamController {
10
- /**
11
- * @param videoElementProvider Video Player instance
12
- */
13
- constructor(videoElementProvider) {
14
- this.videoElementProvider = videoElementProvider;
15
- this.audioElement = document.createElement('Audio');
16
- this.videoElementProvider.setAudioElement(this.audioElement);
17
- }
18
- /**
19
- * Handles when the Peer connection has a track event
20
- * @param rtcTrackEvent - RTC Track Event
21
- */
22
- handleOnTrack(rtcTrackEvent) {
23
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
24
- // Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
25
- // Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
26
- if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
27
- return;
28
- }
29
- const videoElement = this.videoElementProvider.getVideoElement();
30
- if (rtcTrackEvent.track) {
31
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Got track - ' +
32
- rtcTrackEvent.track.kind +
33
- ' id=' +
34
- rtcTrackEvent.track.id +
35
- ' readyState=' +
36
- rtcTrackEvent.track.readyState);
37
- }
38
- if (rtcTrackEvent.track.kind == 'audio') {
39
- this.CreateAudioTrack(rtcTrackEvent.streams[0]);
40
- return;
41
- }
42
- else if (rtcTrackEvent.track.kind == 'video' &&
43
- videoElement.srcObject !== rtcTrackEvent.streams[0]) {
44
- videoElement.srcObject = rtcTrackEvent.streams[0];
45
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Set video source from video track ontrack.');
46
- return;
47
- }
48
- }
49
- /**
50
- * Creates the audio device when receiving an RTCTrackEvent with the kind of "audio"
51
- * @param audioMediaStream - Audio Media stream track
52
- */
53
- CreateAudioTrack(audioMediaStream) {
54
- const videoElement = this.videoElementProvider.getVideoElement();
55
- // do nothing the video has the same media stream as the audio track we have here (they are linked)
56
- if (videoElement.srcObject == audioMediaStream) {
57
- return;
58
- }
59
- // video element has some other media stream that is not associated with this audio track
60
- else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
61
- // create a new audio element
62
- this.audioElement.srcObject = audioMediaStream;
63
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Created new audio element to play separate audio stream.');
64
- }
65
- }
66
- }
67
- exports.StreamController = StreamController;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StreamController = void 0;
5
+ const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
+ /**
7
+ * Video Player Controller handles the creation of the video HTML element and all handlers
8
+ */
9
+ class StreamController {
10
+ /**
11
+ * @param videoElementProvider Video Player instance
12
+ */
13
+ constructor(videoElementProvider) {
14
+ this.videoElementProvider = videoElementProvider;
15
+ this.audioElement = document.createElement('Audio');
16
+ this.videoElementProvider.setAudioElement(this.audioElement);
17
+ }
18
+ /**
19
+ * Handles when the Peer connection has a track event
20
+ * @param rtcTrackEvent - RTC Track Event
21
+ */
22
+ handleOnTrack(rtcTrackEvent) {
23
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
24
+ // Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
25
+ // Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
26
+ if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
27
+ return;
28
+ }
29
+ const videoElement = this.videoElementProvider.getVideoElement();
30
+ if (rtcTrackEvent.track) {
31
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Got track - ' +
32
+ rtcTrackEvent.track.kind +
33
+ ' id=' +
34
+ rtcTrackEvent.track.id +
35
+ ' readyState=' +
36
+ rtcTrackEvent.track.readyState);
37
+ }
38
+ if (rtcTrackEvent.track.kind == 'audio') {
39
+ this.CreateAudioTrack(rtcTrackEvent.streams[0]);
40
+ return;
41
+ }
42
+ else if (rtcTrackEvent.track.kind == 'video' &&
43
+ videoElement.srcObject !== rtcTrackEvent.streams[0]) {
44
+ videoElement.srcObject = rtcTrackEvent.streams[0];
45
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Set video source from video track ontrack.');
46
+ return;
47
+ }
48
+ }
49
+ /**
50
+ * Creates the audio device when receiving an RTCTrackEvent with the kind of "audio"
51
+ * @param audioMediaStream - Audio Media stream track
52
+ */
53
+ CreateAudioTrack(audioMediaStream) {
54
+ const videoElement = this.videoElementProvider.getVideoElement();
55
+ // do nothing the video has the same media stream as the audio track we have here (they are linked)
56
+ if (videoElement.srcObject == audioMediaStream) {
57
+ return;
58
+ }
59
+ // video element has some other media stream that is not associated with this audio track
60
+ else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
61
+ // create a new audio element
62
+ this.audioElement.srcObject = audioMediaStream;
63
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Created new audio element to play separate audio stream.');
64
+ }
65
+ }
66
+ }
67
+ exports.StreamController = StreamController;
68
68
  //# sourceMappingURL=StreamController.js.map