@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.2.1 → 0.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.
Files changed (298) hide show
  1. package/dist/commonjs/AFK/AFKController.js +110 -0
  2. package/dist/commonjs/AFK/AFKController.js.map +1 -0
  3. package/dist/commonjs/Config/Config.js +560 -0
  4. package/dist/commonjs/Config/Config.js.map +1 -0
  5. package/dist/commonjs/Config/SettingBase.js +99 -0
  6. package/dist/commonjs/Config/SettingBase.js.map +1 -0
  7. package/dist/commonjs/Config/SettingFlag.js +50 -0
  8. package/dist/commonjs/Config/SettingFlag.js.map +1 -0
  9. package/dist/commonjs/Config/SettingNumber.js +84 -0
  10. package/dist/commonjs/Config/SettingNumber.js.map +1 -0
  11. package/dist/commonjs/Config/SettingOption.js +85 -0
  12. package/dist/commonjs/Config/SettingOption.js.map +1 -0
  13. package/dist/commonjs/Config/SettingText.js +43 -0
  14. package/dist/commonjs/Config/SettingText.js.map +1 -0
  15. package/dist/commonjs/DataChannel/DataChannelController.js +107 -0
  16. package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -0
  17. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +95 -0
  18. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  19. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +19 -0
  20. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  21. package/dist/commonjs/DataChannel/DataChannelSender.js +44 -0
  22. package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -0
  23. package/dist/commonjs/DataChannel/InitialSettings.js +42 -0
  24. package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -0
  25. package/dist/commonjs/DataChannel/LatencyTestResults.js +61 -0
  26. package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -0
  27. package/dist/commonjs/FreezeFrame/FreezeFrame.js +94 -0
  28. package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -0
  29. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +96 -0
  30. package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -0
  31. package/dist/commonjs/Inputs/GamepadController.js +189 -0
  32. package/dist/commonjs/Inputs/GamepadController.js.map +1 -0
  33. package/dist/commonjs/Inputs/GamepadTypes.js +22 -0
  34. package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -0
  35. package/dist/commonjs/Inputs/IInputController.js +3 -0
  36. package/dist/commonjs/Inputs/IInputController.js.map +1 -0
  37. package/dist/commonjs/Inputs/InputClassesFactory.js +97 -0
  38. package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -0
  39. package/dist/commonjs/Inputs/KeyCodes.js +113 -0
  40. package/dist/commonjs/Inputs/KeyCodes.js.map +1 -0
  41. package/dist/commonjs/Inputs/KeyboardController.js +138 -0
  42. package/dist/commonjs/Inputs/KeyboardController.js.map +1 -0
  43. package/dist/commonjs/Inputs/MouseButtons.js +29 -0
  44. package/dist/commonjs/Inputs/MouseButtons.js.map +1 -0
  45. package/dist/commonjs/Inputs/MouseController.js +98 -0
  46. package/dist/commonjs/Inputs/MouseController.js.map +1 -0
  47. package/dist/commonjs/Inputs/MouseControllerHovering.js +94 -0
  48. package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -0
  49. package/dist/commonjs/Inputs/MouseControllerLocked.js +154 -0
  50. package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -0
  51. package/dist/commonjs/Inputs/SpecialKeyCodes.js +20 -0
  52. package/dist/commonjs/Inputs/SpecialKeyCodes.js.map +1 -0
  53. package/dist/commonjs/Inputs/TouchController.js +124 -0
  54. package/dist/commonjs/Inputs/TouchController.js.map +1 -0
  55. package/dist/commonjs/Inputs/TouchControllerFake.js +92 -0
  56. package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -0
  57. package/dist/commonjs/Inputs/XRGamepadController.js +125 -0
  58. package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -0
  59. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +253 -0
  60. package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -0
  61. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +11 -0
  62. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js.map +1 -0
  63. package/dist/commonjs/PeerConnectionController/CandidateStat.js +11 -0
  64. package/dist/commonjs/PeerConnectionController/CandidateStat.js.map +1 -0
  65. package/dist/commonjs/PeerConnectionController/CodecStats.js +11 -0
  66. package/dist/commonjs/PeerConnectionController/CodecStats.js.map +1 -0
  67. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +11 -0
  68. package/dist/commonjs/PeerConnectionController/DataChannelStats.js.map +1 -0
  69. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +23 -0
  70. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js.map +1 -0
  71. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +11 -0
  72. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js.map +1 -0
  73. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +17 -0
  74. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  75. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +585 -0
  76. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
  77. package/dist/commonjs/PeerConnectionController/SessionStats.js +11 -0
  78. package/dist/commonjs/PeerConnectionController/SessionStats.js.map +1 -0
  79. package/dist/commonjs/PeerConnectionController/StreamStats.js +11 -0
  80. package/dist/commonjs/PeerConnectionController/StreamStats.js.map +1 -0
  81. package/dist/commonjs/PixelStreaming/PixelStreaming.js +608 -0
  82. package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -0
  83. package/dist/commonjs/UI/OnScreenKeyboard.js +83 -0
  84. package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -0
  85. package/dist/commonjs/UeInstanceMessage/ResponseController.js +39 -0
  86. package/dist/commonjs/UeInstanceMessage/ResponseController.js.map +1 -0
  87. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +121 -0
  88. package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -0
  89. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +211 -0
  90. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -0
  91. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +50 -0
  92. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  93. package/dist/commonjs/Util/EventEmitter.js +387 -0
  94. package/dist/commonjs/Util/EventEmitter.js.map +1 -0
  95. package/dist/commonjs/Util/FileUtil.js +109 -0
  96. package/dist/commonjs/Util/FileUtil.js.map +1 -0
  97. package/dist/commonjs/Util/IURLSearchParams.js +26 -0
  98. package/dist/commonjs/Util/IURLSearchParams.js.map +1 -0
  99. package/dist/commonjs/Util/InputCoordTranslator.js +50 -0
  100. package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -0
  101. package/dist/commonjs/Util/RTCUtils.js +41 -0
  102. package/dist/commonjs/Util/RTCUtils.js.map +1 -0
  103. package/dist/commonjs/VideoPlayer/StreamController.js +68 -0
  104. package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -0
  105. package/dist/commonjs/VideoPlayer/VideoPlayer.js +178 -0
  106. package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -0
  107. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1224 -0
  108. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  109. package/dist/commonjs/WebXR/WebXRController.js +361 -0
  110. package/dist/commonjs/WebXR/WebXRController.js.map +1 -0
  111. package/dist/commonjs/pixelstreamingfrontend.js +71 -0
  112. package/dist/commonjs/pixelstreamingfrontend.js.map +1 -0
  113. package/dist/esm/AFK/AFKController.js +106 -0
  114. package/dist/esm/AFK/AFKController.js.map +1 -0
  115. package/dist/esm/Config/Config.js +552 -0
  116. package/dist/esm/Config/Config.js.map +1 -0
  117. package/dist/esm/Config/SettingBase.js +95 -0
  118. package/dist/esm/Config/SettingBase.js.map +1 -0
  119. package/dist/esm/Config/SettingFlag.js +46 -0
  120. package/dist/esm/Config/SettingFlag.js.map +1 -0
  121. package/dist/esm/Config/SettingNumber.js +80 -0
  122. package/dist/esm/Config/SettingNumber.js.map +1 -0
  123. package/dist/esm/Config/SettingOption.js +81 -0
  124. package/dist/esm/Config/SettingOption.js.map +1 -0
  125. package/dist/esm/Config/SettingText.js +39 -0
  126. package/dist/esm/Config/SettingText.js.map +1 -0
  127. package/dist/esm/DataChannel/DataChannelController.js +103 -0
  128. package/dist/esm/DataChannel/DataChannelController.js.map +1 -0
  129. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +91 -0
  130. package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  131. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +15 -0
  132. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  133. package/dist/esm/DataChannel/DataChannelSender.js +40 -0
  134. package/dist/esm/DataChannel/DataChannelSender.js.map +1 -0
  135. package/dist/esm/DataChannel/InitialSettings.js +35 -0
  136. package/dist/esm/DataChannel/InitialSettings.js.map +1 -0
  137. package/dist/esm/DataChannel/LatencyTestResults.js +57 -0
  138. package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -0
  139. package/dist/esm/FreezeFrame/FreezeFrame.js +90 -0
  140. package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -0
  141. package/dist/esm/FreezeFrame/FreezeFrameController.js +92 -0
  142. package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -0
  143. package/dist/esm/Inputs/GamepadController.js +185 -0
  144. package/dist/esm/Inputs/GamepadController.js.map +1 -0
  145. package/dist/esm/Inputs/GamepadTypes.js +18 -0
  146. package/dist/esm/Inputs/GamepadTypes.js.map +1 -0
  147. package/dist/esm/Inputs/IInputController.js +2 -0
  148. package/dist/esm/Inputs/IInputController.js.map +1 -0
  149. package/dist/esm/Inputs/InputClassesFactory.js +92 -0
  150. package/dist/esm/Inputs/InputClassesFactory.js.map +1 -0
  151. package/dist/esm/Inputs/KeyCodes.js +110 -0
  152. package/dist/esm/Inputs/KeyCodes.js.map +1 -0
  153. package/dist/esm/Inputs/KeyboardController.js +134 -0
  154. package/dist/esm/Inputs/KeyboardController.js.map +1 -0
  155. package/dist/esm/Inputs/MouseButtons.js +24 -0
  156. package/dist/esm/Inputs/MouseButtons.js.map +1 -0
  157. package/dist/esm/Inputs/MouseController.js +94 -0
  158. package/dist/esm/Inputs/MouseController.js.map +1 -0
  159. package/dist/esm/Inputs/MouseControllerHovering.js +90 -0
  160. package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -0
  161. package/dist/esm/Inputs/MouseControllerLocked.js +150 -0
  162. package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -0
  163. package/dist/esm/Inputs/SpecialKeyCodes.js +16 -0
  164. package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -0
  165. package/dist/esm/Inputs/TouchController.js +120 -0
  166. package/dist/esm/Inputs/TouchController.js.map +1 -0
  167. package/dist/esm/Inputs/TouchControllerFake.js +88 -0
  168. package/dist/esm/Inputs/TouchControllerFake.js.map +1 -0
  169. package/dist/esm/Inputs/XRGamepadController.js +121 -0
  170. package/dist/esm/Inputs/XRGamepadController.js.map +1 -0
  171. package/dist/esm/PeerConnectionController/AggregatedStats.js +249 -0
  172. package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -0
  173. package/dist/esm/PeerConnectionController/CandidatePairStats.js +7 -0
  174. package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -0
  175. package/dist/esm/PeerConnectionController/CandidateStat.js +7 -0
  176. package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -0
  177. package/dist/esm/PeerConnectionController/CodecStats.js +7 -0
  178. package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -0
  179. package/dist/esm/PeerConnectionController/DataChannelStats.js +7 -0
  180. package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -0
  181. package/dist/esm/PeerConnectionController/InboundRTPStats.js +17 -0
  182. package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -0
  183. package/dist/esm/PeerConnectionController/InboundTrackStats.js +7 -0
  184. package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -0
  185. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +12 -0
  186. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  187. package/dist/esm/PeerConnectionController/PeerConnectionController.js +581 -0
  188. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -0
  189. package/dist/esm/PeerConnectionController/SessionStats.js +7 -0
  190. package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -0
  191. package/dist/esm/PeerConnectionController/StreamStats.js +7 -0
  192. package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -0
  193. package/dist/esm/PixelStreaming/PixelStreaming.js +604 -0
  194. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -0
  195. package/dist/esm/UI/OnScreenKeyboard.js +79 -0
  196. package/dist/esm/UI/OnScreenKeyboard.js.map +1 -0
  197. package/dist/esm/UeInstanceMessage/ResponseController.js +35 -0
  198. package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -0
  199. package/dist/esm/UeInstanceMessage/SendMessageController.js +117 -0
  200. package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -0
  201. package/dist/esm/UeInstanceMessage/StreamMessageController.js +206 -0
  202. package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -0
  203. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +46 -0
  204. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  205. package/dist/esm/Util/EventEmitter.js +346 -0
  206. package/dist/esm/Util/EventEmitter.js.map +1 -0
  207. package/dist/esm/Util/FileUtil.js +104 -0
  208. package/dist/esm/Util/FileUtil.js.map +1 -0
  209. package/dist/esm/Util/IURLSearchParams.js +22 -0
  210. package/dist/esm/Util/IURLSearchParams.js.map +1 -0
  211. package/dist/esm/Util/InputCoordTranslator.js +46 -0
  212. package/dist/esm/Util/InputCoordTranslator.js.map +1 -0
  213. package/dist/esm/Util/RTCUtils.js +37 -0
  214. package/dist/esm/Util/RTCUtils.js.map +1 -0
  215. package/dist/esm/VideoPlayer/StreamController.js +64 -0
  216. package/dist/esm/VideoPlayer/StreamController.js.map +1 -0
  217. package/dist/esm/VideoPlayer/VideoPlayer.js +174 -0
  218. package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -0
  219. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1220 -0
  220. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  221. package/dist/esm/WebXR/WebXRController.js +357 -0
  222. package/dist/esm/WebXR/WebXRController.js.map +1 -0
  223. package/dist/esm/pixelstreamingfrontend.js +25 -0
  224. package/dist/esm/pixelstreamingfrontend.js.map +1 -0
  225. package/{types → dist/types}/AFK/AFKController.d.ts +38 -38
  226. package/{types → dist/types}/Config/Config.d.ts +220 -220
  227. package/{types → dist/types}/Config/SettingBase.d.ts +43 -43
  228. package/{types → dist/types}/Config/SettingFlag.d.ts +24 -24
  229. package/{types → dist/types}/Config/SettingNumber.d.ts +41 -41
  230. package/{types → dist/types}/Config/SettingOption.d.ts +41 -34
  231. package/{types → dist/types}/Config/SettingText.d.ts +21 -21
  232. package/{types → dist/types}/DataChannel/DataChannelController.d.ts +59 -59
  233. package/{types → dist/types}/DataChannel/DataChannelLatencyTestController.d.ts +25 -26
  234. package/{types → dist/types}/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  235. package/{types → dist/types}/DataChannel/DataChannelSender.d.ts +21 -21
  236. package/{types → dist/types}/DataChannel/InitialSettings.d.ts +44 -44
  237. package/{types → dist/types}/DataChannel/LatencyTestResults.d.ts +31 -31
  238. package/{types → dist/types}/FreezeFrame/FreezeFrame.d.ts +36 -36
  239. package/{types → dist/types}/FreezeFrame/FreezeFrameController.d.ts +37 -37
  240. package/{types → dist/types}/Inputs/GamepadController.d.ts +61 -61
  241. package/{types → dist/types}/Inputs/GamepadTypes.d.ts +15 -15
  242. package/{types → dist/types}/Inputs/IInputController.d.ts +16 -16
  243. package/{types → dist/types}/Inputs/InputClassesFactory.d.ts +53 -53
  244. package/{types → dist/types}/Inputs/KeyCodes.d.ts +5 -5
  245. package/{types → dist/types}/Inputs/KeyboardController.d.ts +34 -34
  246. package/{types → dist/types}/Inputs/MouseButtons.d.ts +22 -22
  247. package/{types → dist/types}/Inputs/MouseController.d.ts +40 -40
  248. package/{types → dist/types}/Inputs/MouseControllerHovering.d.ts +26 -26
  249. package/{types → dist/types}/Inputs/MouseControllerLocked.d.ts +31 -31
  250. package/{types → dist/types}/Inputs/SpecialKeyCodes.d.ts +14 -14
  251. package/{types → dist/types}/Inputs/TouchController.d.ts +28 -28
  252. package/{types → dist/types}/Inputs/TouchControllerFake.d.ts +29 -29
  253. package/{types → dist/types}/Inputs/XRGamepadController.d.ts +15 -15
  254. package/{types → dist/types}/PeerConnectionController/AggregatedStats.d.ts +82 -84
  255. package/{types → dist/types}/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  256. package/{types → dist/types}/PeerConnectionController/CandidateStat.d.ts +13 -13
  257. package/{types → dist/types}/PeerConnectionController/CodecStats.d.ts +14 -14
  258. package/{types → dist/types}/PeerConnectionController/DataChannelStats.d.ts +15 -15
  259. package/{types → dist/types}/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  260. package/{types → dist/types}/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  261. package/{types → dist/types}/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  262. package/{types → dist/types}/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  263. package/{types → dist/types}/PeerConnectionController/SessionStats.d.ts +8 -8
  264. package/{types → dist/types}/PeerConnectionController/StreamStats.d.ts +9 -9
  265. package/{types → dist/types}/PixelStreaming/PixelStreaming.d.ts +271 -271
  266. package/{types → dist/types}/UI/OnScreenKeyboard.d.ts +30 -30
  267. package/{types → dist/types}/UeInstanceMessage/ResponseController.d.ts +19 -19
  268. package/{types → dist/types}/UeInstanceMessage/SendMessageController.d.ts +18 -18
  269. package/{types → dist/types}/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  270. package/{types → dist/types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  271. package/{types → dist/types}/Util/EventEmitter.d.ts +429 -429
  272. package/{types → dist/types}/Util/FileUtil.d.ts +32 -32
  273. package/{types → dist/types}/Util/IURLSearchParams.d.ts +9 -9
  274. package/{types → dist/types}/Util/InputCoordTranslator.d.ts +29 -29
  275. package/{types → dist/types}/Util/RTCUtils.d.ts +8 -8
  276. package/{types → dist/types}/VideoPlayer/StreamController.d.ts +22 -22
  277. package/{types → dist/types}/VideoPlayer/VideoPlayer.d.ts +78 -78
  278. package/{types → dist/types}/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  279. package/{types → dist/types}/WebXR/WebXRController.d.ts +42 -42
  280. package/{types → dist/types}/pixelstreamingfrontend.d.ts +23 -22
  281. package/package.json +10 -14
  282. package/readme.md +9 -1
  283. package/src/Config/Config.ts +74 -25
  284. package/src/Config/SettingNumber.ts +13 -5
  285. package/src/Config/SettingOption.ts +31 -13
  286. package/src/DataChannel/DataChannelLatencyTestController.ts +6 -6
  287. package/src/PeerConnectionController/AggregatedStats.ts +26 -27
  288. package/src/PeerConnectionController/PeerConnectionController.ts +38 -9
  289. package/src/WebRtcPlayer/WebRtcPlayerController.ts +1 -1
  290. package/src/pixelstreamingfrontend.ts +7 -1
  291. package/tsconfig.cjs.json +9 -0
  292. package/tsconfig.esm.json +7 -0
  293. package/tsconfig.json +4 -6
  294. package/dist/lib-pixelstreamingfrontend.esm.js +0 -1
  295. package/dist/lib-pixelstreamingfrontend.js +0 -1
  296. package/webpack.common.js +0 -35
  297. package/webpack.dev.js +0 -35
  298. package/webpack.prod.js +0 -36
@@ -0,0 +1,79 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /**
3
+ * Class for handling on screen keyboard usage
4
+ */
5
+ export class OnScreenKeyboard {
6
+ /**
7
+ *
8
+ * @param videoElementParent The div element the video player is injected into
9
+ */
10
+ constructor(videoElementParent) {
11
+ this.editTextButton = null;
12
+ this.hiddenInput = null;
13
+ if ('ontouchstart' in document.documentElement) {
14
+ this.createOnScreenKeyboardHelpers(videoElementParent);
15
+ }
16
+ }
17
+ /**
18
+ * An override for unquantizeAndDenormalizeUnsigned
19
+ * @param x the x axis point
20
+ * @param y the y axis point
21
+ * @returns unquantizeAndDenormalizeUnsigned object
22
+ */
23
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
24
+ unquantizeAndDenormalizeUnsigned(x, y) {
25
+ return null;
26
+ }
27
+ /**
28
+ * Creates on screen keyboard helpers
29
+ * @param videoElementParent The div element the video player i injected into
30
+ */
31
+ createOnScreenKeyboardHelpers(videoElementParent) {
32
+ if (!this.hiddenInput) {
33
+ this.hiddenInput = document.createElement('input');
34
+ this.hiddenInput.id = 'hiddenInput';
35
+ this.hiddenInput.maxLength = 0;
36
+ // Set inline style so that users not using the UI library
37
+ // will still have this element display correctly
38
+ this.hiddenInput.style.position = 'absolute';
39
+ this.hiddenInput.style.left = '-10%';
40
+ this.hiddenInput.style.width = '0px';
41
+ this.hiddenInput.style.opacity = '0';
42
+ videoElementParent.appendChild(this.hiddenInput);
43
+ }
44
+ if (!this.editTextButton) {
45
+ this.editTextButton = document.createElement('button');
46
+ this.editTextButton.id = 'editTextButton';
47
+ this.editTextButton.innerHTML = 'edit text';
48
+ videoElementParent.appendChild(this.editTextButton);
49
+ // Hide the 'edit text' button.
50
+ this.editTextButton.style.display = 'none';
51
+ this.editTextButton.addEventListener('touchend', (event) => {
52
+ // Show the on-screen keyboard.
53
+ this.hiddenInput.focus();
54
+ event.preventDefault();
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Shows the on screen keyboard
60
+ * @param command the command received via the data channel containing keyboard positions
61
+ */
62
+ showOnScreenKeyboard(command) {
63
+ if (command.showOnScreenKeyboard) {
64
+ // Show the 'edit text' button.
65
+ this.editTextButton.style.display = 'default';
66
+ // Place the 'edit text' button near the UE input widget.
67
+ const pos = this.unquantizeAndDenormalizeUnsigned(command.x, command.y);
68
+ this.editTextButton.style.top = pos.y.toString() + 'px';
69
+ this.editTextButton.style.left = (pos.x - 40).toString() + 'px';
70
+ }
71
+ else {
72
+ // Hide the 'edit text' button.
73
+ this.editTextButton.style.display = 'none';
74
+ // Hide the on-screen keyboard.
75
+ this.hiddenInput.blur();
76
+ }
77
+ }
78
+ }
79
+ //# sourceMappingURL=OnScreenKeyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnScreenKeyboard.js","sourceRoot":"","sources":["../../../src/UI/OnScreenKeyboard.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAIlD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAUzB;;;OAGG;IACH,YAAY,kBAA+B;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,cAAc,IAAI,QAAQ,CAAC,eAAe,EAAE;YAC5C,IAAI,CAAC,6BAA6B,CAAC,kBAAkB,CAAC,CAAC;SAC1D;IACL,CAAC;IAED;;;;;OAKG;IACH,6DAA6D;IAC7D,gCAAgC,CAAC,CAAS,EAAE,CAAS;QACjD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAAC,kBAA+B;QACzD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC;YACpC,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;YAE/B,0DAA0D;YAC1D,kDAAkD;YAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAErC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACpD;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,gBAAgB,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,WAAW,CAAC;YAC5C,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEpD,+BAA+B;YAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAE3C,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC9D,+BAA+B;gBAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACzB,KAAK,CAAC,cAAc,EAAE,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED;;;OAGG;IACH,oBAAoB,CAAC,OAAY;QAC7B,IAAI,OAAO,CAAC,oBAAoB,EAAE;YAC9B,+BAA+B;YAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;YAC9C,yDAAyD;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;YACxD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;SACnE;aAAM;YACH,+BAA+B;YAC/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAC3C,+BAA+B;YAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;IACL,CAAC;CACJ"}
@@ -0,0 +1,35 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
3
+ export class ResponseController {
4
+ constructor() {
5
+ this.responseEventListeners = new Map();
6
+ }
7
+ /**
8
+ * Add a response event listener to the response map
9
+ * @param name - The name of the response
10
+ * @param listener - The method to be activated when the response is selected
11
+ */
12
+ addResponseEventListener(name, listener) {
13
+ this.responseEventListeners.set(name, listener);
14
+ }
15
+ /**
16
+ * Remove a response event listener to the response map
17
+ * @param name - The name of the response
18
+ */
19
+ removeResponseEventListener(name) {
20
+ this.responseEventListeners.delete(name);
21
+ }
22
+ /**
23
+ * Handle a response when receiving one form the streamer
24
+ * @param message - Data received from the data channel with the command in question
25
+ */
26
+ onResponse(message) {
27
+ Logger.Info('DataChannelReceiveMessageType.Response');
28
+ const responses = new TextDecoder('utf-16').decode(message.slice(1));
29
+ Logger.Info(responses);
30
+ this.responseEventListeners.forEach((listener) => {
31
+ listener(responses);
32
+ });
33
+ }
34
+ }
35
+ //# sourceMappingURL=ResponseController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResponseController.js","sourceRoot":"","sources":["../../../src/UeInstanceMessage/ResponseController.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAEtE,MAAM,OAAO,kBAAkB;IAA/B;QACI,2BAAsB,GAA4C,IAAI,GAAG,EAAE,CAAC;IAgChF,CAAC;IA9BG;;;;OAIG;IACH,wBAAwB,CAAC,IAAY,EAAE,QAAoC;QACvE,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,2BAA2B,CAAC,IAAY;QACpC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,UAAU,CAAC,OAAoB;QAC3B,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAErE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,QAAoC,EAAE,EAAE;YACzE,QAAQ,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
@@ -0,0 +1,117 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
3
+ export class SendMessageController {
4
+ /**
5
+ * @param dataChannelSender - Data channel instance
6
+ * @param toStreamerMessagesMapProvider - Stream Messages instance
7
+ */
8
+ constructor(dataChannelSender, toStreamerMessagesMapProvider) {
9
+ this.dataChannelSender = dataChannelSender;
10
+ this.toStreamerMessagesMapProvider = toStreamerMessagesMapProvider;
11
+ }
12
+ /**
13
+ * Send a message to the streamer through the data channel
14
+ * @param messageType - the type of message we are sending
15
+ * @param messageData - the message data we are sending over the data channel
16
+ * @returns - nil
17
+ */
18
+ sendMessageToStreamer(messageType, messageData) {
19
+ if (messageData === undefined) {
20
+ messageData = [];
21
+ }
22
+ const toStreamerMessages = this.toStreamerMessagesMapProvider.toStreamerMessages;
23
+ const messageFormat = toStreamerMessages.get(messageType);
24
+ if (messageFormat === undefined) {
25
+ Logger.Error(`Attempted to send a message to the streamer with message type: ${messageType}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);
26
+ return;
27
+ }
28
+ if (messageFormat.structure && messageData && messageFormat.structure.length !== messageData.length) {
29
+ Logger.Error(`Provided message data doesn't match expected layout. Expected [ ${messageFormat.structure
30
+ .map((element) => {
31
+ switch (element) {
32
+ case 'uint8':
33
+ case 'uint16':
34
+ case 'int16':
35
+ case 'float':
36
+ case 'double':
37
+ return 'number';
38
+ case 'string':
39
+ return 'string';
40
+ }
41
+ })
42
+ .toString()} ] but received [ ${messageData.map((element) => typeof element).toString()} ]`);
43
+ return;
44
+ }
45
+ let byteLength = 0;
46
+ const textEncoder = new TextEncoder();
47
+ // One loop to calculate the length in bytes of all of the provided data
48
+ messageData.forEach((element, idx) => {
49
+ const type = messageFormat.structure[idx];
50
+ switch (type) {
51
+ case 'uint8':
52
+ byteLength += 1;
53
+ break;
54
+ case 'uint16':
55
+ byteLength += 2;
56
+ break;
57
+ case 'int16':
58
+ byteLength += 2;
59
+ break;
60
+ case 'float':
61
+ byteLength += 4;
62
+ break;
63
+ case 'double':
64
+ byteLength += 8;
65
+ break;
66
+ case 'string':
67
+ // 2 bytes for string length
68
+ byteLength += 2;
69
+ // 2 bytes per characters
70
+ byteLength += 2 * textEncoder.encode(element).length;
71
+ break;
72
+ }
73
+ });
74
+ const data = new DataView(new ArrayBuffer(byteLength + 1));
75
+ data.setUint8(0, messageFormat.id);
76
+ let byteOffset = 1;
77
+ messageData.forEach((element, idx) => {
78
+ const type = messageFormat.structure[idx];
79
+ switch (type) {
80
+ case 'uint8':
81
+ data.setUint8(byteOffset, element);
82
+ byteOffset += 1;
83
+ break;
84
+ case 'uint16':
85
+ data.setUint16(byteOffset, element, true);
86
+ byteOffset += 2;
87
+ break;
88
+ case 'int16':
89
+ data.setInt16(byteOffset, element, true);
90
+ byteOffset += 2;
91
+ break;
92
+ case 'float':
93
+ data.setFloat32(byteOffset, element, true);
94
+ byteOffset += 4;
95
+ break;
96
+ case 'double':
97
+ data.setFloat64(byteOffset, element, true);
98
+ byteOffset += 8;
99
+ break;
100
+ case 'string':
101
+ data.setUint16(byteOffset, element.length, true);
102
+ byteOffset += 2;
103
+ for (let i = 0; i < element.length; i++) {
104
+ data.setUint16(byteOffset, element.charCodeAt(i), true);
105
+ byteOffset += 2;
106
+ }
107
+ break;
108
+ }
109
+ });
110
+ if (!this.dataChannelSender.canSend()) {
111
+ Logger.Info(`Data channel cannot send yet, skipping sending message: ${messageType} - ${new Uint8Array(data.buffer)}`);
112
+ return;
113
+ }
114
+ this.dataChannelSender.sendData(data.buffer);
115
+ }
116
+ }
117
+ //# sourceMappingURL=SendMessageController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SendMessageController.js","sourceRoot":"","sources":["../../../src/UeInstanceMessage/SendMessageController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
3
+ export class ToStreamerMessage {
4
+ }
5
+ export class StreamMessageController {
6
+ constructor() {
7
+ this.toStreamerHandlers = new Map();
8
+ this.fromStreamerHandlers = new Map();
9
+ this.toStreamerMessages = new Map();
10
+ this.fromStreamerMessages = new Map();
11
+ }
12
+ /**
13
+ * Populate the Default message protocol
14
+ */
15
+ populateDefaultProtocol() {
16
+ /*
17
+ * Control Messages. Range = 0..49.
18
+ */
19
+ this.toStreamerMessages.set('IFrameRequest', {
20
+ id: 0,
21
+ structure: []
22
+ });
23
+ this.toStreamerMessages.set('RequestQualityControl', {
24
+ id: 1,
25
+ structure: []
26
+ });
27
+ this.toStreamerMessages.set('FpsRequest', {
28
+ id: 2,
29
+ structure: []
30
+ });
31
+ this.toStreamerMessages.set('AverageBitrateRequest', {
32
+ id: 3,
33
+ structure: []
34
+ });
35
+ this.toStreamerMessages.set('StartStreaming', {
36
+ id: 4,
37
+ structure: []
38
+ });
39
+ this.toStreamerMessages.set('StopStreaming', {
40
+ id: 5,
41
+ structure: []
42
+ });
43
+ this.toStreamerMessages.set('LatencyTest', {
44
+ id: 6,
45
+ structure: ['string']
46
+ });
47
+ this.toStreamerMessages.set('RequestInitialSettings', {
48
+ id: 7,
49
+ structure: []
50
+ });
51
+ this.toStreamerMessages.set('TestEcho', {
52
+ id: 8,
53
+ structure: []
54
+ });
55
+ this.toStreamerMessages.set('DataChannelLatencyTest', {
56
+ id: 9,
57
+ structure: []
58
+ });
59
+ /*
60
+ * Input Messages. Range = 50..89.
61
+ */
62
+ // Generic Input Messages. Range = 50..59.
63
+ this.toStreamerMessages.set('UIInteraction', {
64
+ id: 50,
65
+ structure: ['string']
66
+ });
67
+ this.toStreamerMessages.set('Command', {
68
+ id: 51,
69
+ structure: ['string']
70
+ });
71
+ // Keyboard Input Message. Range = 60..69.
72
+ this.toStreamerMessages.set('KeyDown', {
73
+ id: 60,
74
+ // keyCode isRepeat
75
+ structure: ['uint8', 'uint8']
76
+ });
77
+ this.toStreamerMessages.set('KeyUp', {
78
+ id: 61,
79
+ // keyCode
80
+ structure: ['uint8']
81
+ });
82
+ this.toStreamerMessages.set('KeyPress', {
83
+ id: 62,
84
+ // charcode
85
+ structure: ['uint16']
86
+ });
87
+ // Mouse Input Messages. Range = 70..79.
88
+ this.toStreamerMessages.set('MouseEnter', {
89
+ id: 70,
90
+ structure: []
91
+ });
92
+ this.toStreamerMessages.set('MouseLeave', {
93
+ id: 71,
94
+ structure: []
95
+ });
96
+ this.toStreamerMessages.set('MouseDown', {
97
+ id: 72,
98
+ // button x y
99
+ structure: ['uint8', 'uint16', 'uint16']
100
+ });
101
+ this.toStreamerMessages.set('MouseUp', {
102
+ id: 73,
103
+ // button x y
104
+ structure: ['uint8', 'uint16', 'uint16']
105
+ });
106
+ this.toStreamerMessages.set('MouseMove', {
107
+ id: 74,
108
+ // x y deltaX deltaY
109
+ structure: ['uint16', 'uint16', 'int16', 'int16']
110
+ });
111
+ this.toStreamerMessages.set('MouseWheel', {
112
+ id: 75,
113
+ // delta x y
114
+ structure: ['int16', 'uint16', 'uint16']
115
+ });
116
+ this.toStreamerMessages.set('MouseDouble', {
117
+ id: 76,
118
+ // button x y
119
+ structure: ['uint8', 'uint16', 'uint16']
120
+ });
121
+ // Touch Input Messages. Range = 80..89.
122
+ this.toStreamerMessages.set('TouchStart', {
123
+ id: 80,
124
+ // numtouches(1) x y idx force valid
125
+ structure: ['uint8', 'uint16', 'uint16', 'uint8', 'uint8', 'uint8']
126
+ });
127
+ this.toStreamerMessages.set('TouchEnd', {
128
+ id: 81,
129
+ // numtouches(1) x y idx force valid
130
+ structure: ['uint8', 'uint16', 'uint16', 'uint8', 'uint8', 'uint8']
131
+ });
132
+ this.toStreamerMessages.set('TouchMove', {
133
+ id: 82,
134
+ // numtouches(1) x y idx force valid
135
+ structure: ['uint8', 'uint16', 'uint16', 'uint8', 'uint8', 'uint8']
136
+ });
137
+ // Gamepad Input Messages. Range = 90..99
138
+ this.toStreamerMessages.set('GamepadConnected', {
139
+ id: 93,
140
+ structure: []
141
+ });
142
+ this.toStreamerMessages.set('GamepadButtonPressed', {
143
+ id: 90,
144
+ // ctrlerId button isRepeat
145
+ structure: ['uint8', 'uint8', 'uint8']
146
+ });
147
+ this.toStreamerMessages.set('GamepadButtonReleased', {
148
+ id: 91,
149
+ // ctrlerId button isRepeat(0)
150
+ structure: ['uint8', 'uint8', 'uint8']
151
+ });
152
+ this.toStreamerMessages.set('GamepadAnalog', {
153
+ id: 92,
154
+ // ctrlerId button analogValue
155
+ structure: ['uint8', 'uint8', 'double']
156
+ });
157
+ this.toStreamerMessages.set('GamepadDisconnected', {
158
+ id: 94,
159
+ // ctrlerId
160
+ structure: ['uint8']
161
+ });
162
+ this.fromStreamerMessages.set(0, 'QualityControlOwnership');
163
+ this.fromStreamerMessages.set(1, 'Response');
164
+ this.fromStreamerMessages.set(2, 'Command');
165
+ this.fromStreamerMessages.set(3, 'FreezeFrame');
166
+ this.fromStreamerMessages.set(4, 'UnfreezeFrame');
167
+ this.fromStreamerMessages.set(5, 'VideoEncoderAvgQP');
168
+ this.fromStreamerMessages.set(6, 'LatencyTest');
169
+ this.fromStreamerMessages.set(7, 'InitialSettings');
170
+ this.fromStreamerMessages.set(8, 'FileExtension');
171
+ this.fromStreamerMessages.set(9, 'FileMimeType');
172
+ this.fromStreamerMessages.set(10, 'FileContents');
173
+ this.fromStreamerMessages.set(11, 'TestEcho');
174
+ this.fromStreamerMessages.set(12, 'InputControlOwnership');
175
+ this.fromStreamerMessages.set(13, 'GamepadResponse');
176
+ this.fromStreamerMessages.set(14, 'DataChannelLatencyTest');
177
+ this.fromStreamerMessages.set(255, 'Protocol');
178
+ }
179
+ /**
180
+ * Register a message handler
181
+ * @param messageDirection - the direction of the message; toStreamer or fromStreamer
182
+ * @param messageType - the type of the message
183
+ * @param messageHandler - the function or method to be executed when this handler is called
184
+ */
185
+ registerMessageHandler(messageDirection, messageType, messageHandler) {
186
+ switch (messageDirection) {
187
+ case MessageDirection.ToStreamer:
188
+ this.toStreamerHandlers.set(messageType, messageHandler);
189
+ break;
190
+ case MessageDirection.FromStreamer:
191
+ this.fromStreamerHandlers.set(messageType, messageHandler);
192
+ break;
193
+ default:
194
+ Logger.Info(`Unknown message direction ${messageDirection}`);
195
+ }
196
+ }
197
+ }
198
+ /**
199
+ * The enum for message directions
200
+ */
201
+ export var MessageDirection;
202
+ (function (MessageDirection) {
203
+ MessageDirection[MessageDirection["ToStreamer"] = 0] = "ToStreamer";
204
+ MessageDirection[MessageDirection["FromStreamer"] = 1] = "FromStreamer";
205
+ })(MessageDirection || (MessageDirection = {}));
206
+ //# sourceMappingURL=StreamMessageController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamMessageController.js","sourceRoot":"","sources":["../../../src/UeInstanceMessage/StreamMessageController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ export class ToStreamerMessagesController {
3
+ /**
4
+ * @param sendMessageController - Stream message controller instance
5
+ */
6
+ constructor(sendMessageController) {
7
+ this.sendMessageController = sendMessageController;
8
+ }
9
+ /**
10
+ * Send Request to Take Quality Control to the UE Instance
11
+ */
12
+ SendRequestQualityControl() {
13
+ this.sendMessageController.sendMessageToStreamer('RequestQualityControl');
14
+ }
15
+ /**
16
+ * Send Max FPS Request to the UE Instance
17
+ */
18
+ SendMaxFpsRequest() {
19
+ this.sendMessageController.sendMessageToStreamer('FpsRequest');
20
+ }
21
+ /**
22
+ * Send Average Bitrate Request to the UE Instance
23
+ */
24
+ SendAverageBitrateRequest() {
25
+ this.sendMessageController.sendMessageToStreamer('AverageBitrateRequest');
26
+ }
27
+ /**
28
+ * Send a Start Streaming Message to the UE Instance
29
+ */
30
+ SendStartStreaming() {
31
+ this.sendMessageController.sendMessageToStreamer('StartStreaming');
32
+ }
33
+ /**
34
+ * Send a Stop Streaming Message to the UE Instance
35
+ */
36
+ SendStopStreaming() {
37
+ this.sendMessageController.sendMessageToStreamer('StopStreaming');
38
+ }
39
+ /**
40
+ * Send a Request Initial Settings to the UE Instance
41
+ */
42
+ SendRequestInitialSettings() {
43
+ this.sendMessageController.sendMessageToStreamer('RequestInitialSettings');
44
+ }
45
+ }
46
+ //# sourceMappingURL=ToStreamerMessagesController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToStreamerMessagesController.js","sourceRoot":"","sources":["../../../src/UeInstanceMessage/ToStreamerMessagesController.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAIlD,MAAM,OAAO,4BAA4B;IAGrC;;OAEG;IACH,YAAY,qBAA4C;QACpD,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,yBAAyB;QACrB,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,yBAAyB;QACrB,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,iBAAiB;QACb,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,0BAA0B;QACtB,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;IAC/E,CAAC;CACJ"}