@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,346 @@
1
+ /**
2
+ * An event that is emitted when AFK disconnect is about to happen.
3
+ * Can be cancelled by calling the callback function provided as part of the event.
4
+ */
5
+ export class AfkWarningActivateEvent extends Event {
6
+ constructor(data) {
7
+ super('afkWarningActivate');
8
+ this.data = data;
9
+ }
10
+ }
11
+ /**
12
+ * An event that is emitted when the AFK disconnect countdown is updated.
13
+ */
14
+ export class AfkWarningUpdateEvent extends Event {
15
+ constructor(data) {
16
+ super('afkWarningUpdate');
17
+ this.data = data;
18
+ }
19
+ }
20
+ /**
21
+ * An event that is emitted when AFK warning is deactivated.
22
+ */
23
+ export class AfkWarningDeactivateEvent extends Event {
24
+ constructor() {
25
+ super('afkWarningDeactivate');
26
+ }
27
+ }
28
+ /**
29
+ * An event that is emitted when AFK countdown reaches 0 and the user is disconnected.
30
+ */
31
+ export class AfkTimedOutEvent extends Event {
32
+ constructor() {
33
+ super('afkTimedOut');
34
+ }
35
+ }
36
+ /**
37
+ * An event that is emitted when we receive new video quality value.
38
+ */
39
+ export class VideoEncoderAvgQPEvent extends Event {
40
+ constructor(data) {
41
+ super('videoEncoderAvgQP');
42
+ this.data = data;
43
+ }
44
+ }
45
+ /**
46
+ * An event that is emitted after a WebRtc connection has been negotiated.
47
+ */
48
+ export class WebRtcSdpEvent extends Event {
49
+ constructor() {
50
+ super('webRtcSdp');
51
+ }
52
+ }
53
+ /**
54
+ * An event that is emitted when auto connecting.
55
+ */
56
+ export class WebRtcAutoConnectEvent extends Event {
57
+ constructor() {
58
+ super('webRtcAutoConnect');
59
+ }
60
+ }
61
+ /**
62
+ * An event that is emitted when sending a WebRtc offer.
63
+ */
64
+ export class WebRtcConnectingEvent extends Event {
65
+ constructor() {
66
+ super('webRtcConnecting');
67
+ }
68
+ }
69
+ /**
70
+ * An event that is emitted when WebRtc connection has been established.
71
+ */
72
+ export class WebRtcConnectedEvent extends Event {
73
+ constructor() {
74
+ super('webRtcConnected');
75
+ }
76
+ }
77
+ /**
78
+ * An event that is emitted if WebRtc connection has failed.
79
+ */
80
+ export class WebRtcFailedEvent extends Event {
81
+ constructor() {
82
+ super('webRtcFailed');
83
+ }
84
+ }
85
+ /**
86
+ * An event that is emitted if WebRtc connection is disconnected.
87
+ */
88
+ export class WebRtcDisconnectedEvent extends Event {
89
+ constructor(data) {
90
+ super('webRtcDisconnected');
91
+ this.data = data;
92
+ }
93
+ }
94
+ /**
95
+ * An event that is emitted when RTCDataChannel is opened.
96
+ */
97
+ export class DataChannelOpenEvent extends Event {
98
+ constructor(data) {
99
+ super('dataChannelOpen');
100
+ this.data = data;
101
+ }
102
+ }
103
+ /**
104
+ * An event that is emitted when RTCDataChannel is closed.
105
+ */
106
+ export class DataChannelCloseEvent extends Event {
107
+ constructor(data) {
108
+ super('dataChannelClose');
109
+ this.data = data;
110
+ }
111
+ }
112
+ /**
113
+ * An event that is emitted on RTCDataChannel errors.
114
+ */
115
+ export class DataChannelErrorEvent extends Event {
116
+ constructor(data) {
117
+ super('dataChannelError');
118
+ this.data = data;
119
+ }
120
+ }
121
+ /**
122
+ * An event that is emitted when the video stream has been initialized.
123
+ */
124
+ export class VideoInitializedEvent extends Event {
125
+ constructor() {
126
+ super('videoInitialized');
127
+ }
128
+ }
129
+ /**
130
+ * An event that is emitted when video stream loading starts.
131
+ */
132
+ export class StreamLoadingEvent extends Event {
133
+ constructor() {
134
+ super('streamLoading');
135
+ }
136
+ }
137
+ /**
138
+ * An event that is emitted when video stream loading has finished.
139
+ */
140
+ export class StreamPreConnectEvent extends Event {
141
+ constructor() {
142
+ super('streamConnect');
143
+ }
144
+ }
145
+ /**
146
+ * An event that is emitted when video stream has stopped.
147
+ */
148
+ export class StreamPreDisconnectEvent extends Event {
149
+ constructor() {
150
+ super('streamDisconnect');
151
+ }
152
+ }
153
+ /**
154
+ * An event that is emitted when video stream is reconnecting.
155
+ */
156
+ export class StreamReconnectEvent extends Event {
157
+ constructor() {
158
+ super('streamReconnect');
159
+ }
160
+ }
161
+ /**
162
+ * An event that is emitted if there are errors loading the video stream.
163
+ */
164
+ export class PlayStreamErrorEvent extends Event {
165
+ constructor(data) {
166
+ super('playStreamError');
167
+ this.data = data;
168
+ }
169
+ }
170
+ /**
171
+ * An event that is emitted before trying to start video playback.
172
+ */
173
+ export class PlayStreamEvent extends Event {
174
+ constructor() {
175
+ super('playStream');
176
+ }
177
+ }
178
+ /**
179
+ * An event that is emitted if the browser rejects video playback. Can happen for example if
180
+ * video auto-play without user interaction is refused by the browser.
181
+ */
182
+ export class PlayStreamRejectedEvent extends Event {
183
+ constructor(data) {
184
+ super('playStreamRejected');
185
+ this.data = data;
186
+ }
187
+ }
188
+ /**
189
+ * An event that is emitted when receiving a full FreezeFrame image from UE.
190
+ */
191
+ export class LoadFreezeFrameEvent extends Event {
192
+ constructor(data) {
193
+ super('loadFreezeFrame');
194
+ this.data = data;
195
+ }
196
+ }
197
+ /**
198
+ * An event that is emitted when receiving UnfreezeFrame message from UE and video playback is about to be resumed.
199
+ */
200
+ export class HideFreezeFrameEvent extends Event {
201
+ constructor() {
202
+ super('hideFreezeFrame');
203
+ }
204
+ }
205
+ /**
206
+ * An event that is emitted when receiving WebRTC statistics.
207
+ */
208
+ export class StatsReceivedEvent extends Event {
209
+ constructor(data) {
210
+ super('statsReceived');
211
+ this.data = data;
212
+ }
213
+ }
214
+ /**
215
+ * An event that is emitted when streamer list changes.
216
+ */
217
+ export class StreamerListMessageEvent extends Event {
218
+ constructor(data) {
219
+ super('streamerListMessage');
220
+ this.data = data;
221
+ }
222
+ }
223
+ /**
224
+ * An event that is emitted when a subscribed to streamer's id changes.
225
+ */
226
+ export class StreamerIDChangedMessageEvent extends Event {
227
+ constructor(data) {
228
+ super('StreamerIDChangedMessage');
229
+ this.data = data;
230
+ }
231
+ }
232
+ /**
233
+ * An event that is emitted when receiving latency test results.
234
+ */
235
+ export class LatencyTestResultEvent extends Event {
236
+ constructor(data) {
237
+ super('latencyTestResult');
238
+ this.data = data;
239
+ }
240
+ }
241
+ /**
242
+ * An event that is emitted when receiving data channel latency test response from server.
243
+ * This event is handled by DataChannelLatencyTestController
244
+ */
245
+ export class DataChannelLatencyTestResponseEvent extends Event {
246
+ constructor(data) {
247
+ super('dataChannelLatencyTestResponse');
248
+ this.data = data;
249
+ }
250
+ }
251
+ /**
252
+ * An event that is emitted when data channel latency test results are ready.
253
+ */
254
+ export class DataChannelLatencyTestResultEvent extends Event {
255
+ constructor(data) {
256
+ super('dataChannelLatencyTestResult');
257
+ this.data = data;
258
+ }
259
+ }
260
+ /**
261
+ * An event that is emitted when receiving initial settings from UE.
262
+ */
263
+ export class InitialSettingsEvent extends Event {
264
+ constructor(data) {
265
+ super('initialSettings');
266
+ this.data = data;
267
+ }
268
+ }
269
+ /**
270
+ * An event that is emitted when PixelStreaming settings change.
271
+ */
272
+ export class SettingsChangedEvent extends Event {
273
+ constructor(data) {
274
+ super('settingsChanged');
275
+ this.data = data;
276
+ }
277
+ }
278
+ /**
279
+ * Event emitted when an XR Session starts
280
+ */
281
+ export class XrSessionStartedEvent extends Event {
282
+ constructor() {
283
+ super('xrSessionStarted');
284
+ }
285
+ }
286
+ /**
287
+ * Event emitted when an XR Session ends
288
+ */
289
+ export class XrSessionEndedEvent extends Event {
290
+ constructor() {
291
+ super('xrSessionEnded');
292
+ }
293
+ }
294
+ /**
295
+ * Event emitted when an XR Frame is complete
296
+ */
297
+ export class XrFrameEvent extends Event {
298
+ constructor(data) {
299
+ super('xrFrame');
300
+ this.data = data;
301
+ }
302
+ }
303
+ /**
304
+ * An event that is emitted when receiving a player count from the signalling server
305
+ */
306
+ export class PlayerCountEvent extends Event {
307
+ constructor(data) {
308
+ super('playerCount');
309
+ this.data = data;
310
+ }
311
+ }
312
+ /**
313
+ * An event that is emitted when the webRTC connections is relayed over TCP.
314
+ */
315
+ export class WebRtcTCPRelayDetectedEvent extends Event {
316
+ constructor() {
317
+ super('webRtcTCPRelayDetected');
318
+ }
319
+ }
320
+ export class EventEmitter extends EventTarget {
321
+ /**
322
+ * Dispatch a new event.
323
+ * @param e event
324
+ * @returns
325
+ */
326
+ dispatchEvent(e) {
327
+ return super.dispatchEvent(e);
328
+ }
329
+ /**
330
+ * Register an event handler.
331
+ * @param type event name
332
+ * @param listener event handler function
333
+ */
334
+ addEventListener(type, listener) {
335
+ super.addEventListener(type, listener);
336
+ }
337
+ /**
338
+ * Remove an event handler.
339
+ * @param type event name
340
+ * @param listener event handler function
341
+ */
342
+ removeEventListener(type, listener) {
343
+ super.removeEventListener(type, listener);
344
+ }
345
+ }
346
+ //# sourceMappingURL=EventEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../../src/Util/EventEmitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
3
+ /**
4
+ * Utility function for populate file information from byte buffers.
5
+ */
6
+ export class FileUtil {
7
+ /**
8
+ * Processes a files extension when received over data channel
9
+ * @param view - the file extension data
10
+ */
11
+ static setExtensionFromBytes(view, file) {
12
+ // Reset file if we got a file message and we are not "receiving" it yet
13
+ if (!file.receiving) {
14
+ file.mimetype = '';
15
+ file.extension = '';
16
+ file.receiving = true;
17
+ file.valid = false;
18
+ file.size = 0;
19
+ file.data = [];
20
+ file.timestampStart = new Date().getTime();
21
+ Logger.Info('Received first chunk of file');
22
+ }
23
+ const extensionAsString = new TextDecoder('utf-16').decode(view.slice(1));
24
+ Logger.Info(extensionAsString);
25
+ file.extension = extensionAsString;
26
+ }
27
+ /**
28
+ * Processes a files mime type when received over data channel
29
+ * @param view - the file mime type data
30
+ */
31
+ static setMimeTypeFromBytes(view, file) {
32
+ // Reset file if we got a file message and we are not "receiving" it yet
33
+ if (!file.receiving) {
34
+ file.mimetype = '';
35
+ file.extension = '';
36
+ file.receiving = true;
37
+ file.valid = false;
38
+ file.size = 0;
39
+ file.data = [];
40
+ file.timestampStart = new Date().getTime();
41
+ Logger.Info('Received first chunk of file');
42
+ }
43
+ const mimeAsString = new TextDecoder('utf-16').decode(view.slice(1));
44
+ Logger.Info(mimeAsString);
45
+ file.mimetype = mimeAsString;
46
+ }
47
+ /**
48
+ * Processes a files contents when received over data channel
49
+ * @param view - the file contents data
50
+ */
51
+ static setContentsFromBytes(view, file) {
52
+ // If we haven't received the initial setup instructions, return
53
+ if (!file.receiving)
54
+ return;
55
+ // Extract the total size of the file (across all chunks)
56
+ file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
57
+ 16379 /* The maximum number of payload bits per message*/);
58
+ // Get the file part of the payload
59
+ const fileBytes = view.slice(1 + 4);
60
+ // Append to existing data that holds the file
61
+ file.data.push(fileBytes);
62
+ // Uncomment for debug
63
+ Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
64
+ if (file.data.length === file.size) {
65
+ file.receiving = false;
66
+ file.valid = true;
67
+ Logger.Info('Received complete file');
68
+ const transferDuration = new Date().getTime() - file.timestampStart;
69
+ const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
70
+ Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
71
+ // File reconstruction
72
+ /**
73
+ * Example code to reconstruct the file
74
+ *
75
+ * This code reconstructs the received data into the original file based on the mime type and extension provided and then downloads the reconstructed file
76
+ */
77
+ const received = new Blob(file.data, { type: file.mimetype });
78
+ const a = document.createElement('a');
79
+ a.setAttribute('href', URL.createObjectURL(received));
80
+ a.setAttribute('download', `transfer.${file.extension}`);
81
+ document.body.append(a);
82
+ // if you are so inclined to make it auto-download, do something like: a.click();
83
+ a.remove();
84
+ }
85
+ else if (file.data.length > file.size) {
86
+ file.receiving = false;
87
+ Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
88
+ }
89
+ }
90
+ }
91
+ /**
92
+ * A class that represents a template for a downloaded file
93
+ */
94
+ export class FileTemplate {
95
+ constructor() {
96
+ this.mimetype = '';
97
+ this.extension = '';
98
+ this.receiving = false;
99
+ this.size = 0;
100
+ this.data = [];
101
+ this.valid = false;
102
+ }
103
+ }
104
+ //# sourceMappingURL=FileUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * A case insensitive, partial implementation of URLSearchParams
3
+ */
4
+ export class IURLSearchParams {
5
+ constructor(search) {
6
+ this._urlParams = {};
7
+ const urlParams = new URLSearchParams(search);
8
+ for (const [name, value] of urlParams) {
9
+ this._urlParams[name.toLowerCase()] = value;
10
+ }
11
+ }
12
+ has(name) {
13
+ return name.toLowerCase() in this._urlParams;
14
+ }
15
+ get(name) {
16
+ if (this.has(name)) {
17
+ return this._urlParams[name.toLowerCase()];
18
+ }
19
+ return null;
20
+ }
21
+ }
22
+ //# sourceMappingURL=IURLSearchParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IURLSearchParams.js","sourceRoot":"","sources":["../../../src/Util/IURLSearchParams.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAGzB,YAAY,MAAc;QACtB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,CAAC;SAC/C;IACL,CAAC;IAEM,GAAG,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC;IACjD,CAAC;IAEM,GAAG,CAAC,IAAY;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -0,0 +1,46 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /**
3
+ * Converts coordinates from element relative coordinates to values normalized within the value range of a short (and back again)
4
+ */
5
+ export class InputCoordTranslator {
6
+ // we dont use a constructor here because the object is created and passed around to various locations
7
+ // possibly before this method is called.
8
+ reconfigure(playerSize, videoSize) {
9
+ const playerAspectRatio = playerSize.height / playerSize.width;
10
+ const videoAspectRatio = videoSize.height / videoSize.width;
11
+ this.playerIsLarger = playerAspectRatio > videoAspectRatio;
12
+ this.playerSize = playerSize;
13
+ this.ratio = this.playerIsLarger
14
+ ? playerAspectRatio / videoAspectRatio
15
+ : videoAspectRatio / playerAspectRatio;
16
+ }
17
+ translateUnsigned(x, y) {
18
+ const normalizedX = this.playerIsLarger
19
+ ? x / this.playerSize.width
20
+ : this.ratio * (x / this.playerSize.width - 0.5) + 0.5;
21
+ const normalizedY = this.playerIsLarger
22
+ ? this.ratio * (y / this.playerSize.height - 0.5) + 0.5
23
+ : y / this.playerSize.height;
24
+ if (normalizedX < 0.0 || normalizedX > 1.0 || normalizedY < 0.0 || normalizedY > 1.0) {
25
+ return { inRange: false, x: 65535, y: 65535 };
26
+ }
27
+ else {
28
+ return { inRange: true, x: normalizedX * 65536, y: normalizedY * 65536 };
29
+ }
30
+ }
31
+ translateSigned(x, y) {
32
+ const normalizedX = this.playerIsLarger
33
+ ? x / (0.5 * this.playerSize.width)
34
+ : (this.ratio * x) / (0.5 * this.playerSize.width);
35
+ const normalizedY = this.playerIsLarger
36
+ ? (this.ratio * y) / (0.5 * this.playerSize.height)
37
+ : y / (0.5 * this.playerSize.height);
38
+ return { x: normalizedX * 32767, y: normalizedY * 32767 };
39
+ }
40
+ untranslateUnsigned(x, y) {
41
+ const normalizedX = this.playerIsLarger ? x / 65536 : (x / 65536 - 0.5) / this.ratio + 0.5;
42
+ const normalizedY = this.playerIsLarger ? (y / 65536 - 0.5) / this.ratio + 0.5 : y / 65536;
43
+ return { x: normalizedX * this.playerSize.width, y: normalizedY * this.playerSize.height };
44
+ }
45
+ }
46
+ //# sourceMappingURL=InputCoordTranslator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputCoordTranslator.js","sourceRoot":"","sources":["../../../src/Util/InputCoordTranslator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export class RTCUtils {
2
+ static isVideoTransceiver(transceiver) {
3
+ return this.canTransceiverReceiveVideo(transceiver) || this.canTransceiverSendVideo(transceiver);
4
+ }
5
+ static canTransceiverReceiveVideo(transceiver) {
6
+ return (!!transceiver &&
7
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
8
+ transceiver.receiver &&
9
+ transceiver.receiver.track &&
10
+ transceiver.receiver.track.kind === 'video');
11
+ }
12
+ static canTransceiverSendVideo(transceiver) {
13
+ return (!!transceiver &&
14
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
15
+ transceiver.sender &&
16
+ transceiver.sender.track &&
17
+ transceiver.sender.track.kind === 'video');
18
+ }
19
+ static isAudioTransceiver(transceiver) {
20
+ return this.canTransceiverReceiveAudio(transceiver) || this.canTransceiverSendAudio(transceiver);
21
+ }
22
+ static canTransceiverReceiveAudio(transceiver) {
23
+ return (!!transceiver &&
24
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'recvonly') &&
25
+ transceiver.receiver &&
26
+ transceiver.receiver.track &&
27
+ transceiver.receiver.track.kind === 'audio');
28
+ }
29
+ static canTransceiverSendAudio(transceiver) {
30
+ return (!!transceiver &&
31
+ (transceiver.direction === 'sendrecv' || transceiver.direction === 'sendonly') &&
32
+ transceiver.sender &&
33
+ transceiver.sender.track &&
34
+ transceiver.sender.track.kind === 'audio');
35
+ }
36
+ }
37
+ //# sourceMappingURL=RTCUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTCUtils.js","sourceRoot":"","sources":["../../../src/Util/RTCUtils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAQ;IACjB,MAAM,CAAC,kBAAkB,CAAC,WAA0C;QAChE,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,WAA0C;QACxE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,QAAQ;YACpB,WAAW,CAAC,QAAQ,CAAC,KAAK;YAC1B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC9C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,WAA0C;QACrE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC5C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,WAA0C;QAChE,OAAO,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrG,CAAC;IAED,MAAM,CAAC,0BAA0B,CAAC,WAA0C;QACxE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,QAAQ;YACpB,WAAW,CAAC,QAAQ,CAAC,KAAK;YAC1B,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC9C,CAAC;IACN,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,WAA0C;QACrE,OAAO,CACH,CAAC,CAAC,WAAW;YACb,CAAC,WAAW,CAAC,SAAS,KAAK,UAAU,IAAI,WAAW,CAAC,SAAS,KAAK,UAAU,CAAC;YAC9E,WAAW,CAAC,MAAM;YAClB,WAAW,CAAC,MAAM,CAAC,KAAK;YACxB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAC5C,CAAC;IACN,CAAC;CACJ"}
@@ -0,0 +1,64 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
3
+ /**
4
+ * Video Player Controller handles the creation of the video HTML element and all handlers
5
+ */
6
+ export class StreamController {
7
+ /**
8
+ * @param videoElementProvider Video Player instance
9
+ */
10
+ constructor(videoElementProvider) {
11
+ this.videoElementProvider = videoElementProvider;
12
+ this.audioElement = document.createElement('Audio');
13
+ this.videoElementProvider.setAudioElement(this.audioElement);
14
+ }
15
+ /**
16
+ * Handles when the Peer connection has a track event
17
+ * @param rtcTrackEvent - RTC Track Event
18
+ */
19
+ handleOnTrack(rtcTrackEvent) {
20
+ Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
21
+ // Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
22
+ // Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
23
+ if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
24
+ return;
25
+ }
26
+ const videoElement = this.videoElementProvider.getVideoElement();
27
+ if (rtcTrackEvent.track) {
28
+ Logger.Info('Got track - ' +
29
+ rtcTrackEvent.track.kind +
30
+ ' id=' +
31
+ rtcTrackEvent.track.id +
32
+ ' readyState=' +
33
+ rtcTrackEvent.track.readyState);
34
+ }
35
+ if (rtcTrackEvent.track.kind == 'audio') {
36
+ this.CreateAudioTrack(rtcTrackEvent.streams[0]);
37
+ return;
38
+ }
39
+ else if (rtcTrackEvent.track.kind == 'video' &&
40
+ videoElement.srcObject !== rtcTrackEvent.streams[0]) {
41
+ videoElement.srcObject = rtcTrackEvent.streams[0];
42
+ Logger.Info('Set video source from video track ontrack.');
43
+ return;
44
+ }
45
+ }
46
+ /**
47
+ * Creates the audio device when receiving an RTCTrackEvent with the kind of "audio"
48
+ * @param audioMediaStream - Audio Media stream track
49
+ */
50
+ CreateAudioTrack(audioMediaStream) {
51
+ const videoElement = this.videoElementProvider.getVideoElement();
52
+ // do nothing the video has the same media stream as the audio track we have here (they are linked)
53
+ if (videoElement.srcObject == audioMediaStream) {
54
+ return;
55
+ }
56
+ // video element has some other media stream that is not associated with this audio track
57
+ else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
58
+ // create a new audio element
59
+ this.audioElement.srcObject = audioMediaStream;
60
+ Logger.Info('Created new audio element to play separate audio stream.');
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=StreamController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamController.js","sourceRoot":"","sources":["../../../src/VideoPlayer/StreamController.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAGtE;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAIzB;;OAEG;IACH,YAAY,oBAAiC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAqB,CAAC;QACxE,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,aAA4B;QACtC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACtE,kHAAkH;QAClH,kGAAkG;QAClG,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU,EAAE;YAC/E,OAAO;SACV;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,IAAI,aAAa,CAAC,KAAK,EAAE;YACrB,MAAM,CAAC,IAAI,CACP,cAAc;gBACV,aAAa,CAAC,KAAK,CAAC,IAAI;gBACxB,MAAM;gBACN,aAAa,CAAC,KAAK,CAAC,EAAE;gBACtB,cAAc;gBACd,aAAa,CAAC,KAAK,CAAC,UAAU,CACrC,CAAC;SACL;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,EAAE;YACrC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,OAAO;SACV;aAAM,IACH,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO;YACnC,YAAY,CAAC,SAAS,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EACrD;YACE,YAAY,CAAC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YAC1D,OAAO;SACV;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,gBAA6B;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,CAAC;QAEjE,mGAAmG;QACnG,IAAI,YAAY,CAAC,SAAS,IAAI,gBAAgB,EAAE;YAC5C,OAAO;SACV;QACD,yFAAyF;aACpF,IAAI,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS,KAAK,gBAAgB,EAAE;YAC5E,6BAA6B;YAC7B,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,gBAAgB,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;SAC3E;IACL,CAAC;CACJ"}