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