@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.1.4 → 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 (357) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.prettierrc.json +1 -0
  3. package/dist/commonjs/AFK/AFKController.js +110 -0
  4. package/dist/commonjs/AFK/AFKController.js.map +1 -0
  5. package/dist/commonjs/Config/Config.js +560 -0
  6. package/dist/commonjs/Config/Config.js.map +1 -0
  7. package/dist/commonjs/Config/SettingBase.js +99 -0
  8. package/dist/commonjs/Config/SettingBase.js.map +1 -0
  9. package/dist/commonjs/Config/SettingFlag.js +50 -0
  10. package/dist/commonjs/Config/SettingFlag.js.map +1 -0
  11. package/dist/commonjs/Config/SettingNumber.js +84 -0
  12. package/dist/commonjs/Config/SettingNumber.js.map +1 -0
  13. package/dist/commonjs/Config/SettingOption.js +85 -0
  14. package/dist/commonjs/Config/SettingOption.js.map +1 -0
  15. package/dist/commonjs/Config/SettingText.js +43 -0
  16. package/dist/commonjs/Config/SettingText.js.map +1 -0
  17. package/dist/commonjs/DataChannel/DataChannelController.js +107 -0
  18. package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -0
  19. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +95 -0
  20. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  21. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +19 -0
  22. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  23. package/dist/commonjs/DataChannel/DataChannelSender.js +44 -0
  24. package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -0
  25. package/dist/commonjs/DataChannel/InitialSettings.js +42 -0
  26. package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -0
  27. package/dist/commonjs/DataChannel/LatencyTestResults.js +61 -0
  28. package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -0
  29. package/dist/commonjs/FreezeFrame/FreezeFrame.js +94 -0
  30. package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -0
  31. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +96 -0
  32. package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -0
  33. package/dist/commonjs/Inputs/GamepadController.js +189 -0
  34. package/dist/commonjs/Inputs/GamepadController.js.map +1 -0
  35. package/dist/commonjs/Inputs/GamepadTypes.js +22 -0
  36. package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -0
  37. package/dist/commonjs/Inputs/IInputController.js +3 -0
  38. package/dist/commonjs/Inputs/IInputController.js.map +1 -0
  39. package/dist/commonjs/Inputs/InputClassesFactory.js +97 -0
  40. package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -0
  41. package/dist/commonjs/Inputs/KeyCodes.js +113 -0
  42. package/dist/commonjs/Inputs/KeyCodes.js.map +1 -0
  43. package/dist/commonjs/Inputs/KeyboardController.js +138 -0
  44. package/dist/commonjs/Inputs/KeyboardController.js.map +1 -0
  45. package/dist/commonjs/Inputs/MouseButtons.js +29 -0
  46. package/dist/commonjs/Inputs/MouseButtons.js.map +1 -0
  47. package/dist/commonjs/Inputs/MouseController.js +98 -0
  48. package/dist/commonjs/Inputs/MouseController.js.map +1 -0
  49. package/dist/commonjs/Inputs/MouseControllerHovering.js +94 -0
  50. package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -0
  51. package/dist/commonjs/Inputs/MouseControllerLocked.js +154 -0
  52. package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -0
  53. package/dist/commonjs/Inputs/SpecialKeyCodes.js +20 -0
  54. package/dist/commonjs/Inputs/SpecialKeyCodes.js.map +1 -0
  55. package/dist/commonjs/Inputs/TouchController.js +124 -0
  56. package/dist/commonjs/Inputs/TouchController.js.map +1 -0
  57. package/dist/commonjs/Inputs/TouchControllerFake.js +92 -0
  58. package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -0
  59. package/dist/commonjs/Inputs/XRGamepadController.js +125 -0
  60. package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -0
  61. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +253 -0
  62. package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -0
  63. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +11 -0
  64. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js.map +1 -0
  65. package/dist/commonjs/PeerConnectionController/CandidateStat.js +11 -0
  66. package/dist/commonjs/PeerConnectionController/CandidateStat.js.map +1 -0
  67. package/dist/commonjs/PeerConnectionController/CodecStats.js +11 -0
  68. package/dist/commonjs/PeerConnectionController/CodecStats.js.map +1 -0
  69. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +11 -0
  70. package/dist/commonjs/PeerConnectionController/DataChannelStats.js.map +1 -0
  71. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +23 -0
  72. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js.map +1 -0
  73. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +11 -0
  74. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js.map +1 -0
  75. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +17 -0
  76. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  77. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +585 -0
  78. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
  79. package/dist/commonjs/PeerConnectionController/SessionStats.js +11 -0
  80. package/dist/commonjs/PeerConnectionController/SessionStats.js.map +1 -0
  81. package/dist/commonjs/PeerConnectionController/StreamStats.js +11 -0
  82. package/dist/commonjs/PeerConnectionController/StreamStats.js.map +1 -0
  83. package/dist/commonjs/PixelStreaming/PixelStreaming.js +608 -0
  84. package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -0
  85. package/dist/commonjs/UI/OnScreenKeyboard.js +83 -0
  86. package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -0
  87. package/dist/commonjs/UeInstanceMessage/ResponseController.js +39 -0
  88. package/dist/commonjs/UeInstanceMessage/ResponseController.js.map +1 -0
  89. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +121 -0
  90. package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -0
  91. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +211 -0
  92. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -0
  93. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +50 -0
  94. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  95. package/dist/commonjs/Util/EventEmitter.js +387 -0
  96. package/dist/commonjs/Util/EventEmitter.js.map +1 -0
  97. package/dist/commonjs/Util/FileUtil.js +109 -0
  98. package/dist/commonjs/Util/FileUtil.js.map +1 -0
  99. package/dist/commonjs/Util/IURLSearchParams.js +26 -0
  100. package/dist/commonjs/Util/IURLSearchParams.js.map +1 -0
  101. package/dist/commonjs/Util/InputCoordTranslator.js +50 -0
  102. package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -0
  103. package/dist/commonjs/Util/RTCUtils.js +41 -0
  104. package/dist/commonjs/Util/RTCUtils.js.map +1 -0
  105. package/dist/commonjs/VideoPlayer/StreamController.js +68 -0
  106. package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -0
  107. package/dist/commonjs/VideoPlayer/VideoPlayer.js +178 -0
  108. package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -0
  109. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1224 -0
  110. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  111. package/dist/commonjs/WebXR/WebXRController.js +361 -0
  112. package/dist/commonjs/WebXR/WebXRController.js.map +1 -0
  113. package/dist/commonjs/pixelstreamingfrontend.js +71 -0
  114. package/dist/commonjs/pixelstreamingfrontend.js.map +1 -0
  115. package/dist/esm/AFK/AFKController.js +106 -0
  116. package/dist/esm/AFK/AFKController.js.map +1 -0
  117. package/dist/esm/Config/Config.js +552 -0
  118. package/dist/esm/Config/Config.js.map +1 -0
  119. package/dist/esm/Config/SettingBase.js +95 -0
  120. package/dist/esm/Config/SettingBase.js.map +1 -0
  121. package/dist/esm/Config/SettingFlag.js +46 -0
  122. package/dist/esm/Config/SettingFlag.js.map +1 -0
  123. package/dist/esm/Config/SettingNumber.js +80 -0
  124. package/dist/esm/Config/SettingNumber.js.map +1 -0
  125. package/dist/esm/Config/SettingOption.js +81 -0
  126. package/dist/esm/Config/SettingOption.js.map +1 -0
  127. package/dist/esm/Config/SettingText.js +39 -0
  128. package/dist/esm/Config/SettingText.js.map +1 -0
  129. package/dist/esm/DataChannel/DataChannelController.js +103 -0
  130. package/dist/esm/DataChannel/DataChannelController.js.map +1 -0
  131. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +91 -0
  132. package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  133. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +15 -0
  134. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  135. package/dist/esm/DataChannel/DataChannelSender.js +40 -0
  136. package/dist/esm/DataChannel/DataChannelSender.js.map +1 -0
  137. package/dist/esm/DataChannel/InitialSettings.js +35 -0
  138. package/dist/esm/DataChannel/InitialSettings.js.map +1 -0
  139. package/dist/esm/DataChannel/LatencyTestResults.js +57 -0
  140. package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -0
  141. package/dist/esm/FreezeFrame/FreezeFrame.js +90 -0
  142. package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -0
  143. package/dist/esm/FreezeFrame/FreezeFrameController.js +92 -0
  144. package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -0
  145. package/dist/esm/Inputs/GamepadController.js +185 -0
  146. package/dist/esm/Inputs/GamepadController.js.map +1 -0
  147. package/dist/esm/Inputs/GamepadTypes.js +18 -0
  148. package/dist/esm/Inputs/GamepadTypes.js.map +1 -0
  149. package/dist/esm/Inputs/IInputController.js +2 -0
  150. package/dist/esm/Inputs/IInputController.js.map +1 -0
  151. package/dist/esm/Inputs/InputClassesFactory.js +92 -0
  152. package/dist/esm/Inputs/InputClassesFactory.js.map +1 -0
  153. package/dist/esm/Inputs/KeyCodes.js +110 -0
  154. package/dist/esm/Inputs/KeyCodes.js.map +1 -0
  155. package/dist/esm/Inputs/KeyboardController.js +134 -0
  156. package/dist/esm/Inputs/KeyboardController.js.map +1 -0
  157. package/dist/esm/Inputs/MouseButtons.js +24 -0
  158. package/dist/esm/Inputs/MouseButtons.js.map +1 -0
  159. package/dist/esm/Inputs/MouseController.js +94 -0
  160. package/dist/esm/Inputs/MouseController.js.map +1 -0
  161. package/dist/esm/Inputs/MouseControllerHovering.js +90 -0
  162. package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -0
  163. package/dist/esm/Inputs/MouseControllerLocked.js +150 -0
  164. package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -0
  165. package/dist/esm/Inputs/SpecialKeyCodes.js +16 -0
  166. package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -0
  167. package/dist/esm/Inputs/TouchController.js +120 -0
  168. package/dist/esm/Inputs/TouchController.js.map +1 -0
  169. package/dist/esm/Inputs/TouchControllerFake.js +88 -0
  170. package/dist/esm/Inputs/TouchControllerFake.js.map +1 -0
  171. package/dist/esm/Inputs/XRGamepadController.js +121 -0
  172. package/dist/esm/Inputs/XRGamepadController.js.map +1 -0
  173. package/dist/esm/PeerConnectionController/AggregatedStats.js +249 -0
  174. package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -0
  175. package/dist/esm/PeerConnectionController/CandidatePairStats.js +7 -0
  176. package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -0
  177. package/dist/esm/PeerConnectionController/CandidateStat.js +7 -0
  178. package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -0
  179. package/dist/esm/PeerConnectionController/CodecStats.js +7 -0
  180. package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -0
  181. package/dist/esm/PeerConnectionController/DataChannelStats.js +7 -0
  182. package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -0
  183. package/dist/esm/PeerConnectionController/InboundRTPStats.js +17 -0
  184. package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -0
  185. package/dist/esm/PeerConnectionController/InboundTrackStats.js +7 -0
  186. package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -0
  187. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +12 -0
  188. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  189. package/dist/esm/PeerConnectionController/PeerConnectionController.js +581 -0
  190. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -0
  191. package/dist/esm/PeerConnectionController/SessionStats.js +7 -0
  192. package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -0
  193. package/dist/esm/PeerConnectionController/StreamStats.js +7 -0
  194. package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -0
  195. package/dist/esm/PixelStreaming/PixelStreaming.js +604 -0
  196. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -0
  197. package/dist/esm/UI/OnScreenKeyboard.js +79 -0
  198. package/dist/esm/UI/OnScreenKeyboard.js.map +1 -0
  199. package/dist/esm/UeInstanceMessage/ResponseController.js +35 -0
  200. package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -0
  201. package/dist/esm/UeInstanceMessage/SendMessageController.js +117 -0
  202. package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -0
  203. package/dist/esm/UeInstanceMessage/StreamMessageController.js +206 -0
  204. package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -0
  205. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +46 -0
  206. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  207. package/dist/esm/Util/EventEmitter.js +346 -0
  208. package/dist/esm/Util/EventEmitter.js.map +1 -0
  209. package/dist/esm/Util/FileUtil.js +104 -0
  210. package/dist/esm/Util/FileUtil.js.map +1 -0
  211. package/dist/esm/Util/IURLSearchParams.js +22 -0
  212. package/dist/esm/Util/IURLSearchParams.js.map +1 -0
  213. package/dist/esm/Util/InputCoordTranslator.js +46 -0
  214. package/dist/esm/Util/InputCoordTranslator.js.map +1 -0
  215. package/dist/esm/Util/RTCUtils.js +37 -0
  216. package/dist/esm/Util/RTCUtils.js.map +1 -0
  217. package/dist/esm/VideoPlayer/StreamController.js +64 -0
  218. package/dist/esm/VideoPlayer/StreamController.js.map +1 -0
  219. package/dist/esm/VideoPlayer/VideoPlayer.js +174 -0
  220. package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -0
  221. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1220 -0
  222. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  223. package/dist/esm/WebXR/WebXRController.js +357 -0
  224. package/dist/esm/WebXR/WebXRController.js.map +1 -0
  225. package/dist/esm/pixelstreamingfrontend.js +25 -0
  226. package/dist/esm/pixelstreamingfrontend.js.map +1 -0
  227. package/{types → dist/types}/AFK/AFKController.d.ts +38 -39
  228. package/{types → dist/types}/Config/Config.d.ts +220 -219
  229. package/{types → dist/types}/Config/SettingBase.d.ts +43 -30
  230. package/{types → dist/types}/Config/SettingFlag.d.ts +24 -33
  231. package/{types → dist/types}/Config/SettingNumber.d.ts +41 -45
  232. package/{types → dist/types}/Config/SettingOption.d.ts +41 -43
  233. package/{types → dist/types}/Config/SettingText.d.ts +21 -29
  234. package/{types → dist/types}/DataChannel/DataChannelController.d.ts +59 -59
  235. package/{types → dist/types}/DataChannel/DataChannelLatencyTestController.d.ts +25 -26
  236. package/{types → dist/types}/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  237. package/{types → dist/types}/DataChannel/DataChannelSender.d.ts +21 -21
  238. package/{types → dist/types}/DataChannel/InitialSettings.d.ts +44 -44
  239. package/{types → dist/types}/DataChannel/LatencyTestResults.d.ts +31 -31
  240. package/{types → dist/types}/FreezeFrame/FreezeFrame.d.ts +36 -36
  241. package/{types → dist/types}/FreezeFrame/FreezeFrameController.d.ts +37 -37
  242. package/dist/types/Inputs/GamepadController.d.ts +61 -0
  243. package/dist/types/Inputs/GamepadTypes.d.ts +15 -0
  244. package/dist/types/Inputs/IInputController.d.ts +16 -0
  245. package/{types → dist/types}/Inputs/InputClassesFactory.d.ts +53 -54
  246. package/dist/types/Inputs/KeyCodes.d.ts +5 -0
  247. package/dist/types/Inputs/KeyboardController.d.ts +34 -0
  248. package/{types → dist/types}/Inputs/MouseButtons.d.ts +22 -22
  249. package/dist/types/Inputs/MouseController.d.ts +40 -0
  250. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -0
  251. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -0
  252. package/{types → dist/types}/Inputs/SpecialKeyCodes.d.ts +14 -14
  253. package/dist/types/Inputs/TouchController.d.ts +28 -0
  254. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -0
  255. package/{types → dist/types}/Inputs/XRGamepadController.d.ts +15 -22
  256. package/{types → dist/types}/PeerConnectionController/AggregatedStats.d.ts +82 -84
  257. package/{types → dist/types}/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  258. package/{types → dist/types}/PeerConnectionController/CandidateStat.d.ts +13 -13
  259. package/{types → dist/types}/PeerConnectionController/CodecStats.d.ts +14 -14
  260. package/{types → dist/types}/PeerConnectionController/DataChannelStats.d.ts +15 -15
  261. package/{types → dist/types}/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  262. package/{types → dist/types}/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  263. package/{types → dist/types}/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  264. package/{types → dist/types}/PeerConnectionController/PeerConnectionController.d.ts +143 -140
  265. package/{types → dist/types}/PeerConnectionController/SessionStats.d.ts +8 -8
  266. package/{types → dist/types}/PeerConnectionController/StreamStats.d.ts +9 -9
  267. package/{types → dist/types}/PixelStreaming/PixelStreaming.d.ts +271 -259
  268. package/{types → dist/types}/UI/OnScreenKeyboard.d.ts +30 -30
  269. package/{types → dist/types}/UeInstanceMessage/ResponseController.d.ts +19 -19
  270. package/{types → dist/types}/UeInstanceMessage/SendMessageController.d.ts +18 -18
  271. package/{types → dist/types}/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  272. package/{types → dist/types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  273. package/{types → dist/types}/Util/EventEmitter.d.ts +429 -429
  274. package/{types → dist/types}/Util/FileUtil.d.ts +32 -32
  275. package/dist/types/Util/IURLSearchParams.d.ts +9 -0
  276. package/dist/types/Util/InputCoordTranslator.d.ts +29 -0
  277. package/{types → dist/types}/Util/RTCUtils.d.ts +8 -8
  278. package/{types → dist/types}/VideoPlayer/StreamController.d.ts +22 -24
  279. package/{types → dist/types}/VideoPlayer/VideoPlayer.d.ts +78 -78
  280. package/{types → dist/types}/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -377
  281. package/{types → dist/types}/WebXR/WebXRController.d.ts +42 -42
  282. package/{types → dist/types}/pixelstreamingfrontend.d.ts +23 -22
  283. package/package.json +14 -17
  284. package/readme.md +9 -1
  285. package/src/AFK/AFKController.ts +10 -32
  286. package/src/Config/Config.ts +232 -205
  287. package/src/Config/SettingBase.ts +61 -2
  288. package/src/Config/SettingFlag.ts +10 -48
  289. package/src/Config/SettingNumber.ts +23 -33
  290. package/src/Config/SettingOption.ts +41 -56
  291. package/src/Config/SettingText.ts +9 -37
  292. package/src/DataChannel/DataChannelController.ts +6 -26
  293. package/src/DataChannel/DataChannelLatencyTestController.ts +43 -38
  294. package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
  295. package/src/DataChannel/DataChannelSender.ts +5 -15
  296. package/src/DataChannel/LatencyTestResults.ts +5 -15
  297. package/src/FreezeFrame/FreezeFrame.ts +7 -19
  298. package/src/FreezeFrame/FreezeFrameController.ts +3 -14
  299. package/src/Inputs/GamepadController.ts +123 -221
  300. package/src/Inputs/GamepadTypes.ts +23 -0
  301. package/src/Inputs/IInputController.ts +17 -0
  302. package/src/Inputs/InputClassesFactory.ts +38 -45
  303. package/src/Inputs/KeyCodes.ts +114 -0
  304. package/src/Inputs/KeyboardController.ts +49 -232
  305. package/src/Inputs/MouseController.ts +71 -297
  306. package/src/Inputs/MouseControllerHovering.ts +118 -0
  307. package/src/Inputs/MouseControllerLocked.ts +194 -0
  308. package/src/Inputs/TouchController.ts +49 -105
  309. package/src/Inputs/TouchControllerFake.ts +132 -0
  310. package/src/Inputs/XRGamepadController.ts +35 -44
  311. package/src/PeerConnectionController/AggregatedStats.ts +46 -75
  312. package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
  313. package/src/PeerConnectionController/CandidateStat.ts +1 -1
  314. package/src/PeerConnectionController/PeerConnectionController.ts +214 -170
  315. package/src/PixelStreaming/PixelStreaming.ts +174 -226
  316. package/src/UI/OnScreenKeyboard.ts +14 -9
  317. package/src/UeInstanceMessage/ResponseController.ts +6 -15
  318. package/src/UeInstanceMessage/SendMessageController.ts +16 -18
  319. package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
  320. package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
  321. package/src/Util/EventEmitter.ts +17 -22
  322. package/src/Util/FileUtil.ts +11 -34
  323. package/src/Util/IURLSearchParams.ts +25 -0
  324. package/src/Util/InputCoordTranslator.ts +73 -0
  325. package/src/Util/RTCUtils.ts +23 -15
  326. package/src/VideoPlayer/StreamController.ts +6 -23
  327. package/src/VideoPlayer/VideoPlayer.ts +9 -30
  328. package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
  329. package/src/WebXR/WebXRController.ts +82 -94
  330. package/src/pixelstreamingfrontend.ts +8 -6
  331. package/tsconfig.cjs.json +9 -0
  332. package/tsconfig.esm.json +7 -0
  333. package/tsconfig.json +4 -6
  334. package/dist/lib-pixelstreamingfrontend.esm.js +0 -1
  335. package/dist/lib-pixelstreamingfrontend.js +0 -1
  336. package/src/Inputs/FakeTouchController.ts +0 -199
  337. package/src/Inputs/HoveringMouseEvents.ts +0 -192
  338. package/src/Inputs/IMouseEvents.ts +0 -64
  339. package/src/Inputs/ITouchController.ts +0 -29
  340. package/src/Inputs/LockedMouseEvents.ts +0 -287
  341. package/src/Util/CoordinateConverter.ts +0 -290
  342. package/src/Util/EventListenerTracker.ts +0 -29
  343. package/types/Inputs/FakeTouchController.d.ts +0 -61
  344. package/types/Inputs/GamepadController.d.ts +0 -85
  345. package/types/Inputs/GamepadTypes.d.ts +0 -8
  346. package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
  347. package/types/Inputs/IMouseEvents.d.ts +0 -53
  348. package/types/Inputs/ITouchController.d.ts +0 -24
  349. package/types/Inputs/KeyboardController.d.ts +0 -62
  350. package/types/Inputs/LockedMouseEvents.d.ts +0 -80
  351. package/types/Inputs/MouseController.d.ts +0 -75
  352. package/types/Inputs/TouchController.d.ts +0 -53
  353. package/types/Util/CoordinateConverter.d.ts +0 -100
  354. package/types/Util/EventListenerTracker.d.ts +0 -14
  355. package/webpack.common.js +0 -35
  356. package/webpack.dev.js +0 -35
  357. package/webpack.prod.js +0 -36
@@ -0,0 +1,581 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
12
+ import { OptionParameters, Flags } from '../Config/Config';
13
+ import { AggregatedStats } from './AggregatedStats';
14
+ import { parseRtpParameters, splitSections } from 'sdp';
15
+ import { RTCUtils } from '../Util/RTCUtils';
16
+ /**
17
+ * Handles the Peer Connection
18
+ */
19
+ export class PeerConnectionController {
20
+ /**
21
+ * Create a new RTC Peer Connection client
22
+ * @param options - Peer connection Options
23
+ * @param config - The config for our PS experience.
24
+ */
25
+ constructor(options, config, preferredCodec) {
26
+ this.config = config;
27
+ this.createPeerConnection(options, preferredCodec);
28
+ }
29
+ createPeerConnection(options, preferredCodec) {
30
+ // Set the ICE transport to relay if TURN enabled
31
+ if (this.config.isFlagEnabled(Flags.ForceTURN)) {
32
+ options.iceTransportPolicy = 'relay';
33
+ Logger.Info('Forcing TURN usage by setting ICE Transport Policy in peer connection config.');
34
+ }
35
+ // build a new peer connection with the options
36
+ this.peerConnection = new RTCPeerConnection(options);
37
+ this.peerConnection.onsignalingstatechange = (ev) => this.handleSignalStateChange(ev);
38
+ this.peerConnection.oniceconnectionstatechange = (ev) => this.handleIceConnectionStateChange(ev);
39
+ this.peerConnection.onicegatheringstatechange = (ev) => this.handleIceGatheringStateChange(ev);
40
+ this.peerConnection.ontrack = (ev) => this.handleOnTrack(ev);
41
+ this.peerConnection.onicecandidate = (ev) => this.handleIceCandidate(ev);
42
+ this.peerConnection.ondatachannel = (ev) => this.handleDataChannel(ev);
43
+ this.aggregatedStats = new AggregatedStats();
44
+ this.preferredCodec = preferredCodec;
45
+ this.updateCodecSelection = true;
46
+ }
47
+ /**
48
+ * Create an offer for the Web RTC handshake and send the offer to the signaling server via websocket
49
+ * @param offerOptions - RTC Offer Options
50
+ */
51
+ createOffer(offerOptions, config) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ Logger.Info('Create Offer');
54
+ const isLocalhostConnection = location.hostname === 'localhost' || location.hostname === '127.0.0.1';
55
+ const isHttpsConnection = location.protocol === 'https:';
56
+ let useMic = config.isFlagEnabled(Flags.UseMic);
57
+ let useCamera = config.isFlagEnabled(Flags.UseCamera);
58
+ if ((useMic || useCamera) && !(isLocalhostConnection || isHttpsConnection)) {
59
+ useMic = false;
60
+ useCamera = false;
61
+ Logger.Error('Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access.');
62
+ Logger.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'");
63
+ }
64
+ this.setupTransceiversAsync(useMic, useCamera).finally(() => {
65
+ var _a;
66
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.createOffer(offerOptions).then((offer) => {
67
+ var _a;
68
+ this.showTextOverlayConnecting();
69
+ offer.sdp = this.mungeSDP(offer.sdp, useMic);
70
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.setLocalDescription(offer);
71
+ this.onSendWebRTCOffer(offer);
72
+ }).catch(() => {
73
+ this.showTextOverlaySetupFailure();
74
+ });
75
+ });
76
+ });
77
+ }
78
+ /**
79
+ *
80
+ */
81
+ receiveOffer(offer, config) {
82
+ var _a;
83
+ return __awaiter(this, void 0, void 0, function* () {
84
+ Logger.Info('Receive Offer');
85
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.setRemoteDescription(offer).then(() => {
86
+ const isLocalhostConnection = location.hostname === 'localhost' || location.hostname === '127.0.0.1';
87
+ const isHttpsConnection = location.protocol === 'https:';
88
+ let useMic = config.isFlagEnabled(Flags.UseMic);
89
+ let useCamera = config.isFlagEnabled(Flags.UseCamera);
90
+ if ((useMic || useCamera) && !(isLocalhostConnection || isHttpsConnection)) {
91
+ useMic = false;
92
+ useCamera = false;
93
+ Logger.Error('Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access.');
94
+ Logger.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'");
95
+ }
96
+ // Add our list of preferred codecs, in order of preference
97
+ this.config.setOptionSettingOptions(OptionParameters.PreferredCodec, this.fuzzyIntersectUEAndBrowserCodecs(offer));
98
+ this.setupTransceiversAsync(useMic, useCamera).finally(() => {
99
+ var _a;
100
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.createAnswer().then((Answer) => {
101
+ var _a;
102
+ Answer.sdp = this.mungeSDP(Answer.sdp, useMic);
103
+ return (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.setLocalDescription(Answer);
104
+ }).then(() => {
105
+ var _a;
106
+ this.onSendWebRTCAnswer((_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.currentLocalDescription);
107
+ }).catch(() => {
108
+ Logger.Error('createAnswer() failed');
109
+ });
110
+ });
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * Set the Remote Descriptor from the signaling server to the RTC Peer Connection
116
+ * @param answer - RTC Session Descriptor from the Signaling Server
117
+ */
118
+ receiveAnswer(answer) {
119
+ var _a;
120
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.setRemoteDescription(answer);
121
+ // Add our list of preferred codecs, in order of preference
122
+ this.config.setOptionSettingOptions(OptionParameters.PreferredCodec, this.fuzzyIntersectUEAndBrowserCodecs(answer));
123
+ }
124
+ /**
125
+ * Generate Aggregated Stats and then fire a onVideo Stats event
126
+ */
127
+ generateStats() {
128
+ var _a, _b;
129
+ const audioPromise = this.audioTrack
130
+ ? (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.getStats(this.audioTrack).then((statsData) => {
131
+ this.aggregatedStats.processStats(statsData);
132
+ })
133
+ : Promise.resolve();
134
+ const videoPromise = this.videoTrack
135
+ ? (_b = this.peerConnection) === null || _b === void 0 ? void 0 : _b.getStats(this.videoTrack).then((statsData) => {
136
+ this.aggregatedStats.processStats(statsData);
137
+ })
138
+ : Promise.resolve();
139
+ Promise.allSettled([audioPromise, videoPromise]).then(() => {
140
+ this.onVideoStats(this.aggregatedStats);
141
+ // Update the preferred codec selection based on what was actually negotiated
142
+ if (this.updateCodecSelection && !!this.aggregatedStats.inboundVideoStats.codecId) {
143
+ // Construct the qualified codec name from the mimetype and fmtp
144
+ const codecStats = this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId);
145
+ const codecShortname = codecStats.mimeType.replace('video/', '');
146
+ let fullCodecName = codecShortname;
147
+ if (codecStats.sdpFmtpLine && codecStats.sdpFmtpLine.trim() !== '') {
148
+ fullCodecName = `${codecShortname} ${codecStats.sdpFmtpLine.trim()}`;
149
+ }
150
+ const allBrowserCodecs = this.config.getSettingOption(OptionParameters.PreferredCodec).options;
151
+ // The list of codecs directly contains the one that was negotiated, select that
152
+ if (allBrowserCodecs.includes(fullCodecName)) {
153
+ this.config.setOptionSettingValue(OptionParameters.PreferredCodec, fullCodecName);
154
+ return;
155
+ }
156
+ // If we couldn't match on the full name, try to match on just the codec shortname
157
+ const filteredList = allBrowserCodecs.filter((option) => option.indexOf(codecShortname) !== -1);
158
+ if (filteredList.length > 0) {
159
+ this.config.setOptionSettingValue(OptionParameters.PreferredCodec, filteredList[0]);
160
+ return;
161
+ }
162
+ }
163
+ });
164
+ }
165
+ /**
166
+ * Close The Peer Connection
167
+ */
168
+ close() {
169
+ if (this.peerConnection) {
170
+ this.peerConnection.close();
171
+ this.peerConnection = null;
172
+ }
173
+ }
174
+ /**
175
+ * Modify the Session Descriptor
176
+ * @param sdp - Session Descriptor as a string
177
+ * @param useMic - Is the microphone in use
178
+ * @returns A modified Session Descriptor
179
+ */
180
+ mungeSDP(sdp, useMic) {
181
+ let mungedSDP = sdp.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm, '$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r\n');
182
+ // set max bitrate to highest bitrate Opus supports
183
+ let audioSDP = 'maxaveragebitrate=510000;';
184
+ if (useMic) {
185
+ // set the max capture rate to 48khz (so we can send high quality audio from mic)
186
+ audioSDP += 'sprop-maxcapturerate=48000;';
187
+ }
188
+ // Force mono or stereo based on whether ?forceMono was passed or not
189
+ audioSDP += this.config.isFlagEnabled(Flags.ForceMonoAudio) ? 'stereo=0;' : 'stereo=1;';
190
+ // enable in-band forward error correction for opus audio
191
+ audioSDP += 'useinbandfec=1';
192
+ // We use the line 'useinbandfec=1' (which Opus uses) to set our Opus specific audio parameters.
193
+ mungedSDP = mungedSDP.replace('useinbandfec=1', audioSDP);
194
+ return mungedSDP;
195
+ }
196
+ /**
197
+ * When a Ice Candidate is received add to the RTC Peer Connection
198
+ * @param iceCandidate - RTC Ice Candidate from the Signaling Server
199
+ */
200
+ handleOnIce(iceCandidate) {
201
+ var _a;
202
+ Logger.Info('peerconnection handleOnIce');
203
+ // // if forcing TURN, reject any candidates not relay
204
+ if (this.config.isFlagEnabled(Flags.ForceTURN)) {
205
+ // check if no relay address is found, if so, we are assuming it means no TURN server
206
+ if (iceCandidate.candidate.indexOf('relay') < 0) {
207
+ Logger.Info(`Dropping candidate because it was not TURN relay. | Type= ${iceCandidate.type} | Protocol= ${iceCandidate.protocol} | Address=${iceCandidate.address} | Port=${iceCandidate.port} |`);
208
+ return;
209
+ }
210
+ }
211
+ (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.addIceCandidate(iceCandidate);
212
+ }
213
+ /**
214
+ * When the RTC Peer Connection Signaling server state Changes
215
+ * @param state - Signaling Server State Change Event
216
+ */
217
+ handleSignalStateChange(state) {
218
+ Logger.Info('signaling state change: ' + state);
219
+ }
220
+ /**
221
+ * Handle when the Ice Connection State Changes
222
+ * @param state - Ice Connection State
223
+ */
224
+ handleIceConnectionStateChange(state) {
225
+ Logger.Info('ice connection state change: ' + state);
226
+ this.onIceConnectionStateChange(state);
227
+ }
228
+ /**
229
+ * Handle when the Ice Gathering State Changes
230
+ * @param state - Ice Gathering State Change
231
+ */
232
+ handleIceGatheringStateChange(state) {
233
+ Logger.Info('ice gathering state change: ' + JSON.stringify(state));
234
+ }
235
+ /**
236
+ * Activates the onTrack method
237
+ * @param event - The webRtc track event
238
+ */
239
+ handleOnTrack(event) {
240
+ if (event.streams.length < 1 || event.streams[0].id == 'probator') {
241
+ return;
242
+ }
243
+ if (event.track.kind == 'video') {
244
+ this.videoTrack = event.track;
245
+ }
246
+ if (event.track.kind == 'audio') {
247
+ this.audioTrack = event.track;
248
+ }
249
+ this.onTrack(event);
250
+ }
251
+ /**
252
+ * Activates the onPeerIceCandidate
253
+ * @param event - The peer ice candidate
254
+ */
255
+ handleIceCandidate(event) {
256
+ this.onPeerIceCandidate(event);
257
+ }
258
+ /**
259
+ * Activates the onDataChannel
260
+ * @param event - The peer's data channel
261
+ */
262
+ handleDataChannel(event) {
263
+ this.onDataChannel(event);
264
+ }
265
+ /**
266
+ * An override method for onTrack for use outside of the PeerConnectionController
267
+ * @param trackEvent - The webRtc track event
268
+ */
269
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
270
+ onTrack(trackEvent) {
271
+ // Default Functionality: Do Nothing
272
+ }
273
+ /**
274
+ * An override method for onIceConnectionStateChange for use outside of the PeerConnectionController
275
+ * @param event - The webRtc iceconnectionstatechange event
276
+ */
277
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
278
+ onIceConnectionStateChange(event) {
279
+ // Default Functionality: Do Nothing
280
+ }
281
+ /**
282
+ * An override method for onPeerIceCandidate for use outside of the PeerConnectionController
283
+ * @param peerConnectionIceEvent - The peer ice candidate
284
+ */
285
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
286
+ onPeerIceCandidate(peerConnectionIceEvent) {
287
+ // Default Functionality: Do Nothing
288
+ }
289
+ /**
290
+ * An override method for onDataChannel for use outside of the PeerConnectionController
291
+ * @param datachannelEvent - The peer's data channel
292
+ */
293
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
294
+ onDataChannel(datachannelEvent) {
295
+ // Default Functionality: Do Nothing
296
+ }
297
+ /**
298
+ * Find the intersection between UE and browser codecs, with fuzzy matching if some parameters are mismatched.
299
+ * @param sdp The remote sdp
300
+ * @returns The intersection between browser supported codecs and ue supported codecs.
301
+ */
302
+ fuzzyIntersectUEAndBrowserCodecs(sdp) {
303
+ // We want to build an array of all supported codecs on both sides
304
+ const allSupportedCodecs = new Array();
305
+ const allUECodecs = this.parseAvailableCodecs(sdp);
306
+ const allBrowserCodecs = this.config.getSettingOption(OptionParameters.PreferredCodec).options;
307
+ for (const ueCodec of allUECodecs) {
308
+ // Check if browser codecs directly matches UE codec (with parameters and everything)
309
+ if (allBrowserCodecs.includes(ueCodec)) {
310
+ allSupportedCodecs.push(ueCodec);
311
+ continue;
312
+ }
313
+ // Otherwise check if browser codec at least contains a match for the UE codec name (without parameters).
314
+ else {
315
+ const ueCodecNameAndParams = ueCodec.split(' ');
316
+ const ueCodecName = ueCodecNameAndParams[0];
317
+ for (const browserCodec of allBrowserCodecs) {
318
+ if (browserCodec.includes(ueCodecName)) {
319
+ // We pass browser codec here as they option contain extra parameters.
320
+ allSupportedCodecs.push(browserCodec);
321
+ break;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ return allSupportedCodecs;
327
+ }
328
+ /**
329
+ * Setup tracks on the RTC Peer Connection
330
+ * @param useMic - is mic in use
331
+ * @param useCamera - is webcam in use
332
+ */
333
+ setupTransceiversAsync(useMic, useCamera) {
334
+ var _a, _b, _c, _d, _e, _f, _g, _h;
335
+ return __awaiter(this, void 0, void 0, function* () {
336
+ let hasVideoReceiver = false;
337
+ for (const transceiver of (_b = (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.getTransceivers()) !== null && _b !== void 0 ? _b : []) {
338
+ if (transceiver &&
339
+ transceiver.receiver &&
340
+ transceiver.receiver.track &&
341
+ transceiver.receiver.track.kind === 'video') {
342
+ hasVideoReceiver = true;
343
+ break;
344
+ }
345
+ }
346
+ // Setup a transceiver for sending webcam video to UE and receiving video from UE
347
+ if (!useCamera) {
348
+ if (!hasVideoReceiver) {
349
+ (_c = this.peerConnection) === null || _c === void 0 ? void 0 : _c.addTransceiver('video', { direction: 'recvonly' });
350
+ }
351
+ }
352
+ else {
353
+ yield this.setupVideoSender(hasVideoReceiver);
354
+ }
355
+ if (RTCRtpReceiver.getCapabilities && this.preferredCodec != '') {
356
+ for (const transceiver of (_e = (_d = this.peerConnection) === null || _d === void 0 ? void 0 : _d.getTransceivers()) !== null && _e !== void 0 ? _e : []) {
357
+ if (transceiver &&
358
+ transceiver.receiver &&
359
+ transceiver.receiver.track &&
360
+ transceiver.receiver.track.kind === 'video' &&
361
+ transceiver.setCodecPreferences) {
362
+ // Get our preferred codec from the codecs options drop down
363
+ const preferredRTPCodec = this.preferredCodec.split(' ');
364
+ const preferredRTCRtpCodecCapability = {
365
+ mimeType: 'video/' + preferredRTPCodec[0] /* Name */,
366
+ clockRate: 90000 /* All current video formats in browsers have 90khz clock rate */,
367
+ sdpFmtpLine: preferredRTPCodec[1] ? preferredRTPCodec[1] : ''
368
+ };
369
+ // Populate a list of codecs we will support with our preferred one in the first position
370
+ const ourSupportedCodecs = [preferredRTCRtpCodecCapability];
371
+ // Go through all codecs the browser supports and add them to the list (in any order)
372
+ RTCRtpReceiver.getCapabilities('video').codecs.forEach((browserSupportedCodec) => {
373
+ // Don't add our preferred codec again, but add everything else
374
+ if (browserSupportedCodec.mimeType != preferredRTCRtpCodecCapability.mimeType) {
375
+ ourSupportedCodecs.push(browserSupportedCodec);
376
+ }
377
+ else if ((browserSupportedCodec === null || browserSupportedCodec === void 0 ? void 0 : browserSupportedCodec.sdpFmtpLine) !=
378
+ (preferredRTCRtpCodecCapability === null || preferredRTCRtpCodecCapability === void 0 ? void 0 : preferredRTCRtpCodecCapability.sdpFmtpLine)) {
379
+ ourSupportedCodecs.push(browserSupportedCodec);
380
+ }
381
+ });
382
+ for (const codec of ourSupportedCodecs) {
383
+ if ((codec === null || codec === void 0 ? void 0 : codec.sdpFmtpLine) === undefined || codec.sdpFmtpLine === '') {
384
+ // We can't dynamically add members to the codec, so instead remove the field if it's empty
385
+ delete codec.sdpFmtpLine;
386
+ }
387
+ }
388
+ transceiver.setCodecPreferences(ourSupportedCodecs);
389
+ }
390
+ }
391
+ }
392
+ let hasAudioReceiver = false;
393
+ for (const transceiver of (_g = (_f = this.peerConnection) === null || _f === void 0 ? void 0 : _f.getTransceivers()) !== null && _g !== void 0 ? _g : []) {
394
+ if (transceiver &&
395
+ transceiver.receiver &&
396
+ transceiver.receiver.track &&
397
+ transceiver.receiver.track.kind === 'audio') {
398
+ hasAudioReceiver = true;
399
+ break;
400
+ }
401
+ }
402
+ // Setup a transceiver for sending mic audio to UE and receiving audio from UE
403
+ if (!useMic) {
404
+ if (!hasAudioReceiver) {
405
+ (_h = this.peerConnection) === null || _h === void 0 ? void 0 : _h.addTransceiver('audio', {
406
+ direction: 'recvonly'
407
+ });
408
+ }
409
+ }
410
+ else {
411
+ yield this.setupAudioSender(hasAudioReceiver);
412
+ }
413
+ });
414
+ }
415
+ setupVideoSender(hasVideoReceiver) {
416
+ var _a, _b, _c, _d;
417
+ return __awaiter(this, void 0, void 0, function* () {
418
+ // set the media send options
419
+ const mediaSendOptions = {
420
+ video: true
421
+ };
422
+ // Note using webcam on android chrome requires SSL or chrome://flags/ "unsafely-treat-insecure-origin-as-secure"
423
+ const stream = yield navigator.mediaDevices.getUserMedia(mediaSendOptions);
424
+ if (stream) {
425
+ if (hasVideoReceiver) {
426
+ for (const transceiver of (_b = (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.getTransceivers()) !== null && _b !== void 0 ? _b : []) {
427
+ if (RTCUtils.canTransceiverReceiveVideo(transceiver)) {
428
+ for (const track of stream.getTracks()) {
429
+ if (track.kind && track.kind == 'video') {
430
+ transceiver.sender.replaceTrack(track);
431
+ transceiver.direction = 'sendrecv';
432
+ }
433
+ }
434
+ }
435
+ }
436
+ }
437
+ else {
438
+ for (const track of stream.getTracks()) {
439
+ if (track.kind && track.kind == 'video') {
440
+ (_c = this.peerConnection) === null || _c === void 0 ? void 0 : _c.addTransceiver(track, {
441
+ direction: 'sendrecv'
442
+ });
443
+ }
444
+ }
445
+ }
446
+ }
447
+ else {
448
+ if (!hasVideoReceiver) {
449
+ (_d = this.peerConnection) === null || _d === void 0 ? void 0 : _d.addTransceiver('video', { direction: 'recvonly' });
450
+ }
451
+ }
452
+ });
453
+ }
454
+ setupAudioSender(hasAudioReceiver) {
455
+ var _a, _b, _c, _d;
456
+ return __awaiter(this, void 0, void 0, function* () {
457
+ // set the audio options based on mic usage
458
+ const audioOptions = {
459
+ autoGainControl: false,
460
+ channelCount: 1,
461
+ echoCancellation: false,
462
+ latency: 0,
463
+ noiseSuppression: false,
464
+ sampleRate: 48000,
465
+ sampleSize: 16,
466
+ volume: 1.0
467
+ };
468
+ // set the media send options
469
+ const mediaSendOptions = {
470
+ video: false,
471
+ audio: audioOptions
472
+ };
473
+ // Note using mic on android chrome requires SSL or chrome://flags/ "unsafely-treat-insecure-origin-as-secure"
474
+ const stream = yield navigator.mediaDevices.getUserMedia(mediaSendOptions);
475
+ if (stream) {
476
+ if (hasAudioReceiver) {
477
+ for (const transceiver of (_b = (_a = this.peerConnection) === null || _a === void 0 ? void 0 : _a.getTransceivers()) !== null && _b !== void 0 ? _b : []) {
478
+ if (RTCUtils.canTransceiverReceiveAudio(transceiver)) {
479
+ for (const track of stream.getTracks()) {
480
+ if (track.kind && track.kind == 'audio') {
481
+ transceiver.sender.replaceTrack(track);
482
+ transceiver.direction = 'sendrecv';
483
+ }
484
+ }
485
+ }
486
+ }
487
+ }
488
+ else {
489
+ for (const track of stream.getTracks()) {
490
+ if (track.kind && track.kind == 'audio') {
491
+ (_c = this.peerConnection) === null || _c === void 0 ? void 0 : _c.addTransceiver(track, {
492
+ direction: 'sendrecv'
493
+ });
494
+ }
495
+ }
496
+ }
497
+ }
498
+ else {
499
+ if (!hasAudioReceiver) {
500
+ (_d = this.peerConnection) === null || _d === void 0 ? void 0 : _d.addTransceiver('audio', {
501
+ direction: 'recvonly'
502
+ });
503
+ }
504
+ }
505
+ });
506
+ }
507
+ /**
508
+ * And override event for when the video stats are fired
509
+ * @param event - Aggregated Stats
510
+ */
511
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
512
+ onVideoStats(event) {
513
+ // Default Functionality: Do Nothing
514
+ }
515
+ /**
516
+ * Event to send the RTC offer to the Signaling server
517
+ * @param offer - RTC Offer
518
+ */
519
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
520
+ onSendWebRTCOffer(offer) {
521
+ // Default Functionality: Do Nothing
522
+ }
523
+ /**
524
+ * Event to send the RTC Answer to the Signaling server
525
+ * @param answer - RTC Answer
526
+ */
527
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
528
+ onSendWebRTCAnswer(answer) {
529
+ // Default Functionality: Do Nothing
530
+ }
531
+ /**
532
+ * An override for showing the Peer connection connecting Overlay
533
+ */
534
+ showTextOverlayConnecting() {
535
+ // Default Functionality: Do Nothing
536
+ }
537
+ /**
538
+ * An override for showing the Peer connection Failed overlay
539
+ */
540
+ showTextOverlaySetupFailure() {
541
+ // Default Functionality: Do Nothing
542
+ }
543
+ parseAvailableCodecs(rtcSessionDescription) {
544
+ // No point in updating the available codecs if on FF
545
+ if (!RTCRtpReceiver.getCapabilities)
546
+ return ['Only available on Chrome'];
547
+ const ueSupportedCodecs = [];
548
+ const sections = splitSections(rtcSessionDescription.sdp);
549
+ // discard the session information as we only want media related info
550
+ sections.shift();
551
+ sections.forEach((mediaSection) => {
552
+ const { codecs } = parseRtpParameters(mediaSection);
553
+ // Filter only for VPX / H26X / AV1
554
+ const matcher = /(VP\d|H26\d|AV1).*/;
555
+ codecs.forEach((c) => {
556
+ const str = c.name +
557
+ ' ' +
558
+ Object.keys(c.parameters || {})
559
+ .map((p) => p + '=' + c.parameters[p])
560
+ .join(';');
561
+ const match = matcher.exec(str);
562
+ if (match !== null) {
563
+ if (c.name == 'VP9') {
564
+ // UE answers don't specify profile but we know we want profile 0
565
+ c.parameters = {
566
+ 'profile-id': '0'
567
+ };
568
+ }
569
+ const codecStr = c.name +
570
+ ' ' +
571
+ Object.keys(c.parameters || {})
572
+ .map((p) => p + '=' + c.parameters[p])
573
+ .join(';');
574
+ ueSupportedCodecs.push(codecStr);
575
+ }
576
+ });
577
+ });
578
+ return ueSupportedCodecs;
579
+ }
580
+ }
581
+ //# sourceMappingURL=PeerConnectionController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeerConnectionController.js","sourceRoot":"","sources":["../../../src/PeerConnectionController/PeerConnectionController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /**
3
+ * Session statistics
4
+ */
5
+ export class SessionStats {
6
+ }
7
+ //# sourceMappingURL=SessionStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionStats.js","sourceRoot":"","sources":["../../../src/PeerConnectionController/SessionStats.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD;;GAEG;AACH,MAAM,OAAO,YAAY;CAIxB"}
@@ -0,0 +1,7 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /**
3
+ * Class to hold the stream stats data coming in from webRtc
4
+ */
5
+ export class StreamStats {
6
+ }
7
+ //# sourceMappingURL=StreamStats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamStats.js","sourceRoot":"","sources":["../../../src/PeerConnectionController/StreamStats.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD;;GAEG;AACH,MAAM,OAAO,WAAW;CAKvB"}