@yang__yj/pixelstreaming-core 1.0.0 → 1.0.1

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 (237) hide show
  1. package/.cspell.json +48 -0
  2. package/.eslintignore +8 -0
  3. package/.eslintrc.js +8 -0
  4. package/.prettierignore +0 -0
  5. package/.prettierrc.json +6 -0
  6. package/coverage/clover.xml +3480 -0
  7. package/coverage/coverage-final.json +62 -0
  8. package/coverage/lcov-report/base.css +224 -0
  9. package/coverage/lcov-report/block-navigation.js +87 -0
  10. package/coverage/lcov-report/favicon.png +0 -0
  11. package/coverage/lcov-report/index.html +356 -0
  12. package/coverage/lcov-report/prettify.css +1 -0
  13. package/coverage/lcov-report/prettify.js +2 -0
  14. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  15. package/coverage/lcov-report/sorter.js +196 -0
  16. package/coverage/lcov-report/src/AFK/AFKController.ts.html +559 -0
  17. package/coverage/lcov-report/src/AFK/index.html +116 -0
  18. package/coverage/lcov-report/src/Config/Config.ts.html +2764 -0
  19. package/coverage/lcov-report/src/Config/SettingBase.ts.html +280 -0
  20. package/coverage/lcov-report/src/Config/SettingFlag.ts.html +382 -0
  21. package/coverage/lcov-report/src/Config/SettingNumber.ts.html +418 -0
  22. package/coverage/lcov-report/src/Config/SettingOption.ts.html +424 -0
  23. package/coverage/lcov-report/src/Config/SettingText.ts.html +331 -0
  24. package/coverage/lcov-report/src/Config/index.html +191 -0
  25. package/coverage/lcov-report/src/DataChannel/DataChannelController.ts.html +499 -0
  26. package/coverage/lcov-report/src/DataChannel/DataChannelSender.ts.html +262 -0
  27. package/coverage/lcov-report/src/DataChannel/InitialSettings.ts.html +268 -0
  28. package/coverage/lcov-report/src/DataChannel/LatencyTestResults.ts.html +313 -0
  29. package/coverage/lcov-report/src/DataChannel/index.html +161 -0
  30. package/coverage/lcov-report/src/FreezeFrame/FreezeFrame.ts.html +427 -0
  31. package/coverage/lcov-report/src/FreezeFrame/FreezeFrameController.ts.html +427 -0
  32. package/coverage/lcov-report/src/FreezeFrame/index.html +131 -0
  33. package/coverage/lcov-report/src/Inputs/FakeTouchController.ts.html +682 -0
  34. package/coverage/lcov-report/src/Inputs/GamepadController.ts.html +985 -0
  35. package/coverage/lcov-report/src/Inputs/HoveringMouseEvents.ts.html +688 -0
  36. package/coverage/lcov-report/src/Inputs/InputClassesFactory.ts.html +505 -0
  37. package/coverage/lcov-report/src/Inputs/KeyboardController.ts.html +1048 -0
  38. package/coverage/lcov-report/src/Inputs/LockedMouseEvents.ts.html +946 -0
  39. package/coverage/lcov-report/src/Inputs/MouseButtons.ts.html +160 -0
  40. package/coverage/lcov-report/src/Inputs/MouseController.ts.html +1171 -0
  41. package/coverage/lcov-report/src/Inputs/SpecialKeyCodes.ts.html +133 -0
  42. package/coverage/lcov-report/src/Inputs/TouchController.ts.html +712 -0
  43. package/coverage/lcov-report/src/Inputs/XRGamepadController.ts.html +463 -0
  44. package/coverage/lcov-report/src/Inputs/index.html +266 -0
  45. package/coverage/lcov-report/src/Logger/Logger.ts.html +325 -0
  46. package/coverage/lcov-report/src/Logger/index.html +116 -0
  47. package/coverage/lcov-report/src/PeerConnectionController/AggregatedStats.ts.html +1018 -0
  48. package/coverage/lcov-report/src/PeerConnectionController/CandidatePairStats.ts.html +136 -0
  49. package/coverage/lcov-report/src/PeerConnectionController/CandidateStat.ts.html +124 -0
  50. package/coverage/lcov-report/src/PeerConnectionController/DataChannelStats.ts.html +136 -0
  51. package/coverage/lcov-report/src/PeerConnectionController/InboundRTPStats.ts.html +547 -0
  52. package/coverage/lcov-report/src/PeerConnectionController/OutBoundRTPStats.ts.html +163 -0
  53. package/coverage/lcov-report/src/PeerConnectionController/PeerConnectionController.ts.html +1795 -0
  54. package/coverage/lcov-report/src/PeerConnectionController/SessionStats.ts.html +115 -0
  55. package/coverage/lcov-report/src/PeerConnectionController/StreamStats.ts.html +118 -0
  56. package/coverage/lcov-report/src/PeerConnectionController/index.html +236 -0
  57. package/coverage/lcov-report/src/PixelStreaming/PixelStreaming.ts.html +2269 -0
  58. package/coverage/lcov-report/src/PixelStreaming/index.html +116 -0
  59. package/coverage/lcov-report/src/UI/OnScreenKeyboard.ts.html +376 -0
  60. package/coverage/lcov-report/src/UI/index.html +116 -0
  61. package/coverage/lcov-report/src/UeInstanceMessage/ResponseController.ts.html +226 -0
  62. package/coverage/lcov-report/src/UeInstanceMessage/SendDescriptorController.ts.html +346 -0
  63. package/coverage/lcov-report/src/UeInstanceMessage/SendMessageController.ts.html +364 -0
  64. package/coverage/lcov-report/src/UeInstanceMessage/StreamMessageController.ts.html +862 -0
  65. package/coverage/lcov-report/src/UeInstanceMessage/ToStreamerMessagesController.ts.html +271 -0
  66. package/coverage/lcov-report/src/UeInstanceMessage/TwoWayMap.ts.html +241 -0
  67. package/coverage/lcov-report/src/UeInstanceMessage/index.html +191 -0
  68. package/coverage/lcov-report/src/Util/CoordinateConverter.ts.html +952 -0
  69. package/coverage/lcov-report/src/Util/EventEmitter.ts.html +1705 -0
  70. package/coverage/lcov-report/src/Util/EventListenerTracker.ts.html +172 -0
  71. package/coverage/lcov-report/src/Util/FileUtil.ts.html +505 -0
  72. package/coverage/lcov-report/src/Util/WebGLUtils.ts.html +232 -0
  73. package/coverage/lcov-report/src/Util/WebXRUtils.ts.html +160 -0
  74. package/coverage/lcov-report/src/Util/index.html +191 -0
  75. package/coverage/lcov-report/src/VideoPlayer/StreamController.ts.html +349 -0
  76. package/coverage/lcov-report/src/VideoPlayer/VideoPlayer.ts.html +799 -0
  77. package/coverage/lcov-report/src/VideoPlayer/index.html +131 -0
  78. package/coverage/lcov-report/src/WebRtcPlayer/WebRtcPlayerController.ts.html +6199 -0
  79. package/coverage/lcov-report/src/WebRtcPlayer/index.html +116 -0
  80. package/coverage/lcov-report/src/WebSockets/MessageReceive.ts.html +352 -0
  81. package/coverage/lcov-report/src/WebSockets/MessageSend.ts.html +604 -0
  82. package/coverage/lcov-report/src/WebSockets/SignallingProtocol.ts.html +622 -0
  83. package/coverage/lcov-report/src/WebSockets/WebSocketController.ts.html +844 -0
  84. package/coverage/lcov-report/src/WebSockets/index.html +161 -0
  85. package/coverage/lcov-report/src/WebXR/WebXRController.ts.html +1042 -0
  86. package/coverage/lcov-report/src/WebXR/index.html +116 -0
  87. package/coverage/lcov-report/src/__test__/index.html +161 -0
  88. package/coverage/lcov-report/src/__test__/mockMediaStream.ts.html +457 -0
  89. package/coverage/lcov-report/src/__test__/mockRTCPeerConnection.ts.html +1126 -0
  90. package/coverage/lcov-report/src/__test__/mockRTCRtpReceiver.ts.html +151 -0
  91. package/coverage/lcov-report/src/__test__/mockWebSocket.ts.html +475 -0
  92. package/coverage/lcov-report/src/index.html +116 -0
  93. package/coverage/lcov-report/src/pixelstreamingfrontend.ts.html +232 -0
  94. package/coverage/lcov.info +6458 -0
  95. package/jest.config.js +18 -0
  96. package/package.json +46 -18
  97. package/readme.md +15 -0
  98. package/src/AFK/AFKController.test.ts +162 -0
  99. package/src/AFK/AFKController.ts +158 -0
  100. package/src/Config/Config.test.ts +222 -0
  101. package/src/Config/Config.ts +909 -0
  102. package/src/Config/SettingBase.ts +65 -0
  103. package/src/Config/SettingFlag.ts +99 -0
  104. package/src/Config/SettingNumber.ts +111 -0
  105. package/src/Config/SettingOption.ts +124 -0
  106. package/src/Config/SettingText.ts +82 -0
  107. package/src/DataChannel/DataChannelController.ts +138 -0
  108. package/src/DataChannel/DataChannelLatencyTestController.ts +129 -0
  109. package/src/DataChannel/DataChannelLatencyTestResults.ts +67 -0
  110. package/src/DataChannel/DataChannelSender.ts +59 -0
  111. package/src/DataChannel/InitialSettings.ts +61 -0
  112. package/src/DataChannel/LatencyTestResults.ts +76 -0
  113. package/src/FreezeFrame/FreezeFrame.ts +114 -0
  114. package/src/FreezeFrame/FreezeFrameController.ts +114 -0
  115. package/src/Inputs/FakeTouchController.ts +199 -0
  116. package/src/Inputs/GamepadController.ts +300 -0
  117. package/src/Inputs/GamepadTypes.ts +10 -0
  118. package/src/Inputs/HoveringMouseEvents.ts +192 -0
  119. package/src/Inputs/IMouseEvents.ts +64 -0
  120. package/src/Inputs/ITouchController.ts +29 -0
  121. package/src/Inputs/InputClassesFactory.ts +140 -0
  122. package/src/Inputs/KeyboardController.ts +318 -0
  123. package/src/Inputs/LockedMouseEvents.ts +287 -0
  124. package/src/Inputs/MouseButtons.ts +25 -0
  125. package/src/Inputs/MouseController.ts +362 -0
  126. package/src/Inputs/SpecialKeyCodes.ts +16 -0
  127. package/src/Inputs/TouchController.ts +253 -0
  128. package/src/Inputs/XRGamepadController.ts +126 -0
  129. package/src/Logger/Logger.ts +80 -0
  130. package/src/PeerConnectionController/AggregatedStats.ts +311 -0
  131. package/src/PeerConnectionController/CandidatePairStats.ts +17 -0
  132. package/src/PeerConnectionController/CandidateStat.ts +13 -0
  133. package/src/PeerConnectionController/CodecStats.ts +19 -0
  134. package/src/PeerConnectionController/DataChannelStats.ts +17 -0
  135. package/src/PeerConnectionController/InboundRTPStats.ts +154 -0
  136. package/src/PeerConnectionController/InboundTrackStats.ts +34 -0
  137. package/src/PeerConnectionController/OutBoundRTPStats.ts +26 -0
  138. package/src/PeerConnectionController/PeerConnectionController.ts +563 -0
  139. package/src/PeerConnectionController/SessionStats.ts +10 -0
  140. package/src/PeerConnectionController/StreamStats.ts +11 -0
  141. package/src/PixelStreaming/PixelStreaming.test.ts +624 -0
  142. package/src/PixelStreaming/PixelStreaming.ts +847 -0
  143. package/src/UI/OnScreenKeyboard.ts +97 -0
  144. package/src/UeInstanceMessage/ResponseController.ts +47 -0
  145. package/src/UeInstanceMessage/SendMessageController.ts +154 -0
  146. package/src/UeInstanceMessage/StreamMessageController.ts +233 -0
  147. package/src/UeInstanceMessage/ToStreamerMessagesController.ts +62 -0
  148. package/src/Util/CoordinateConverter.ts +289 -0
  149. package/src/Util/EventEmitter.ts +595 -0
  150. package/src/Util/EventListenerTracker.ts +29 -0
  151. package/src/Util/FileUtil.ts +140 -0
  152. package/src/Util/RTCUtils.ts +41 -0
  153. package/src/Util/WebGLUtils.ts +49 -0
  154. package/src/Util/WebXRUtils.ts +25 -0
  155. package/src/VideoPlayer/StreamController.ts +89 -0
  156. package/src/VideoPlayer/VideoPlayer.ts +246 -0
  157. package/src/WebRtcPlayer/WebRtcPlayerController.ts +2144 -0
  158. package/src/WebSockets/MessageReceive.ts +89 -0
  159. package/src/WebSockets/MessageSend.ts +185 -0
  160. package/src/WebSockets/SignallingProtocol.ts +180 -0
  161. package/src/WebSockets/WebSocketController.ts +267 -0
  162. package/src/WebXR/WebXRController.ts +319 -0
  163. package/src/__test__/mockMediaStream.ts +124 -0
  164. package/src/__test__/mockRTCPeerConnection.ts +347 -0
  165. package/src/__test__/mockRTCRtpReceiver.ts +22 -0
  166. package/src/__test__/mockWebSocket.ts +130 -0
  167. package/src/pixelstreamingfrontend.ts +50 -0
  168. package/tsconfig.jest.json +8 -0
  169. package/tsconfig.json +24 -0
  170. package/webpack.common.js +35 -0
  171. package/webpack.dev.js +35 -0
  172. package/webpack.prod.js +36 -0
  173. package/yang__yj-pixelstreaming-core-1.0.1.tgz +0 -0
  174. /package/{library/dist → dist}/lib-pixelstreamingfrontend.esm.js +0 -0
  175. /package/{library/dist → dist}/lib-pixelstreamingfrontend.js +0 -0
  176. /package/{library/types → types}/AFK/AFKController.d.ts +0 -0
  177. /package/{library/types → types}/Config/Config.d.ts +0 -0
  178. /package/{library/types → types}/Config/SettingBase.d.ts +0 -0
  179. /package/{library/types → types}/Config/SettingFlag.d.ts +0 -0
  180. /package/{library/types → types}/Config/SettingNumber.d.ts +0 -0
  181. /package/{library/types → types}/Config/SettingOption.d.ts +0 -0
  182. /package/{library/types → types}/Config/SettingText.d.ts +0 -0
  183. /package/{library/types → types}/DataChannel/DataChannelController.d.ts +0 -0
  184. /package/{library/types → types}/DataChannel/DataChannelSender.d.ts +0 -0
  185. /package/{library/types → types}/DataChannel/InitialSettings.d.ts +0 -0
  186. /package/{library/types → types}/DataChannel/LatencyTestResults.d.ts +0 -0
  187. /package/{library/types → types}/FreezeFrame/FreezeFrame.d.ts +0 -0
  188. /package/{library/types → types}/FreezeFrame/FreezeFrameController.d.ts +0 -0
  189. /package/{library/types → types}/Inputs/FakeTouchController.d.ts +0 -0
  190. /package/{library/types → types}/Inputs/GamepadController.d.ts +0 -0
  191. /package/{library/types → types}/Inputs/GamepadTypes.d.ts +0 -0
  192. /package/{library/types → types}/Inputs/HoveringMouseEvents.d.ts +0 -0
  193. /package/{library/types → types}/Inputs/IMouseEvents.d.ts +0 -0
  194. /package/{library/types → types}/Inputs/ITouchController.d.ts +0 -0
  195. /package/{library/types → types}/Inputs/InputClassesFactory.d.ts +0 -0
  196. /package/{library/types → types}/Inputs/KeyboardController.d.ts +0 -0
  197. /package/{library/types → types}/Inputs/LockedMouseEvents.d.ts +0 -0
  198. /package/{library/types → types}/Inputs/MouseButtons.d.ts +0 -0
  199. /package/{library/types → types}/Inputs/MouseController.d.ts +0 -0
  200. /package/{library/types → types}/Inputs/SpecialKeyCodes.d.ts +0 -0
  201. /package/{library/types → types}/Inputs/TouchController.d.ts +0 -0
  202. /package/{library/types → types}/Inputs/XRGamepadController.d.ts +0 -0
  203. /package/{library/types → types}/Logger/Logger.d.ts +0 -0
  204. /package/{library/types → types}/PeerConnectionController/AggregatedStats.d.ts +0 -0
  205. /package/{library/types → types}/PeerConnectionController/CandidatePairStats.d.ts +0 -0
  206. /package/{library/types → types}/PeerConnectionController/CandidateStat.d.ts +0 -0
  207. /package/{library/types → types}/PeerConnectionController/CodecStats.d.ts +0 -0
  208. /package/{library/types → types}/PeerConnectionController/DataChannelStats.d.ts +0 -0
  209. /package/{library/types → types}/PeerConnectionController/InboundRTPStats.d.ts +0 -0
  210. /package/{library/types → types}/PeerConnectionController/InboundTrackStats.d.ts +0 -0
  211. /package/{library/types → types}/PeerConnectionController/OutBoundRTPStats.d.ts +0 -0
  212. /package/{library/types → types}/PeerConnectionController/PeerConnectionController.d.ts +0 -0
  213. /package/{library/types → types}/PeerConnectionController/SessionStats.d.ts +0 -0
  214. /package/{library/types → types}/PeerConnectionController/StreamStats.d.ts +0 -0
  215. /package/{library/types → types}/PixelStreaming/PixelStreaming.d.ts +0 -0
  216. /package/{library/types → types}/UI/OnScreenKeyboard.d.ts +0 -0
  217. /package/{library/types → types}/UeInstanceMessage/ResponseController.d.ts +0 -0
  218. /package/{library/types → types}/UeInstanceMessage/SendDescriptorController.d.ts +0 -0
  219. /package/{library/types → types}/UeInstanceMessage/SendMessageController.d.ts +0 -0
  220. /package/{library/types → types}/UeInstanceMessage/StreamMessageController.d.ts +0 -0
  221. /package/{library/types → types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +0 -0
  222. /package/{library/types → types}/UeInstanceMessage/TwoWayMap.d.ts +0 -0
  223. /package/{library/types → types}/Util/CoordinateConverter.d.ts +0 -0
  224. /package/{library/types → types}/Util/EventEmitter.d.ts +0 -0
  225. /package/{library/types → types}/Util/EventListenerTracker.d.ts +0 -0
  226. /package/{library/types → types}/Util/FileUtil.d.ts +0 -0
  227. /package/{library/types → types}/Util/WebGLUtils.d.ts +0 -0
  228. /package/{library/types → types}/Util/WebXRUtils.d.ts +0 -0
  229. /package/{library/types → types}/VideoPlayer/StreamController.d.ts +0 -0
  230. /package/{library/types → types}/VideoPlayer/VideoPlayer.d.ts +0 -0
  231. /package/{library/types → types}/WebRtcPlayer/WebRtcPlayerController.d.ts +0 -0
  232. /package/{library/types → types}/WebSockets/MessageReceive.d.ts +0 -0
  233. /package/{library/types → types}/WebSockets/MessageSend.d.ts +0 -0
  234. /package/{library/types → types}/WebSockets/SignallingProtocol.d.ts +0 -0
  235. /package/{library/types → types}/WebSockets/WebSocketController.d.ts +0 -0
  236. /package/{library/types → types}/WebXR/WebXRController.d.ts +0 -0
  237. /package/{library/types → types}/pixelstreamingfrontend.d.ts +0 -0
@@ -0,0 +1,595 @@
1
+ import {
2
+ FlagsIds,
3
+ NumericParametersIds,
4
+ OptionParametersIds,
5
+ TextParametersIds
6
+ } from '../Config/Config';
7
+ import { LatencyTestResults } from '../DataChannel/LatencyTestResults';
8
+ import { AggregatedStats } from '../PeerConnectionController/AggregatedStats';
9
+ import { InitialSettings } from '../pixelstreamingfrontend';
10
+ import { MessageStreamerList } from '../WebSockets/MessageReceive';
11
+ import { SettingFlag } from '../Config/SettingFlag';
12
+ import { SettingNumber } from '../Config/SettingNumber';
13
+ import { SettingText } from '../Config/SettingText';
14
+ import { SettingOption } from '../Config/SettingOption';
15
+ import {
16
+ DataChannelLatencyTestResponse,
17
+ DataChannelLatencyTestResult
18
+ } from "../DataChannel/DataChannelLatencyTestResults";
19
+
20
+ /**
21
+ * An event that is emitted when AFK disconnect is about to happen.
22
+ * Can be cancelled by calling the callback function provided as part of the event.
23
+ */
24
+ export class AfkWarningActivateEvent extends Event {
25
+ readonly type: 'afkWarningActivate';
26
+ readonly data: {
27
+ /** How many seconds until the session is disconnected */
28
+ countDown: number;
29
+ /** Callback function that needs to be called if you wish to cancel the AFK disconnect timeout. */
30
+ dismissAfk: () => void;
31
+ };
32
+ constructor(data: AfkWarningActivateEvent['data']) {
33
+ super('afkWarningActivate');
34
+ this.data = data;
35
+ }
36
+ }
37
+
38
+ /**
39
+ * An event that is emitted when the AFK disconnect countdown is updated.
40
+ */
41
+ export class AfkWarningUpdateEvent extends Event {
42
+ readonly type: 'afkWarningUpdate';
43
+ readonly data: {
44
+ /** How many seconds until the session is disconnected */
45
+ countDown: number
46
+ };
47
+ constructor(data: AfkWarningUpdateEvent['data']) {
48
+ super('afkWarningUpdate');
49
+ this.data = data;
50
+ }
51
+ }
52
+
53
+ /**
54
+ * An event that is emitted when AFK warning is deactivated.
55
+ */
56
+ export class AfkWarningDeactivateEvent extends Event {
57
+ readonly type: 'afkWarningDeactivate';
58
+ constructor() {
59
+ super('afkWarningDeactivate');
60
+ }
61
+ }
62
+
63
+ /**
64
+ * An event that is emitted when AFK countdown reaches 0 and the user is disconnected.
65
+ */
66
+ export class AfkTimedOutEvent extends Event {
67
+ readonly type: 'afkTimedOut';
68
+ constructor() {
69
+ super('afkTimedOut');
70
+ }
71
+ }
72
+
73
+ /**
74
+ * An event that is emitted when we receive new video quality value.
75
+ */
76
+ export class VideoEncoderAvgQPEvent extends Event {
77
+ readonly type: 'videoEncoderAvgQP';
78
+ readonly data: {
79
+ /** Average video quality value */
80
+ avgQP: number
81
+ };
82
+ constructor(data: VideoEncoderAvgQPEvent['data']) {
83
+ super('videoEncoderAvgQP');
84
+ this.data = data;
85
+ }
86
+ }
87
+
88
+ /**
89
+ * An event that is emitted after a WebRtc connection has been negotiated.
90
+ */
91
+ export class WebRtcSdpEvent extends Event {
92
+ readonly type: 'webRtcSdp';
93
+ constructor() {
94
+ super('webRtcSdp');
95
+ }
96
+ }
97
+
98
+ /**
99
+ * An event that is emitted when auto connecting.
100
+ */
101
+ export class WebRtcAutoConnectEvent extends Event {
102
+ readonly type: 'webRtcAutoConnect';
103
+ constructor() {
104
+ super('webRtcAutoConnect');
105
+ }
106
+ }
107
+
108
+ /**
109
+ * An event that is emitted when sending a WebRtc offer.
110
+ */
111
+ export class WebRtcConnectingEvent extends Event {
112
+ readonly type: 'webRtcConnecting';
113
+ constructor() {
114
+ super('webRtcConnecting');
115
+ }
116
+ }
117
+
118
+ /**
119
+ * An event that is emitted when WebRtc connection has been established.
120
+ */
121
+ export class WebRtcConnectedEvent extends Event {
122
+ readonly type: 'webRtcConnected';
123
+ constructor() {
124
+ super('webRtcConnected');
125
+ }
126
+ }
127
+
128
+ /**
129
+ * An event that is emitted if WebRtc connection has failed.
130
+ */
131
+ export class WebRtcFailedEvent extends Event {
132
+ readonly type: 'webRtcFailed';
133
+ constructor() {
134
+ super('webRtcFailed');
135
+ }
136
+ }
137
+
138
+ /**
139
+ * An event that is emitted if WebRtc connection is disconnected.
140
+ */
141
+ export class WebRtcDisconnectedEvent extends Event {
142
+ readonly type: 'webRtcDisconnected';
143
+ readonly data: {
144
+ /** Message describing the disconnect reason */
145
+ eventString: string;
146
+ /** true if the user is able to reconnect, false if disconnected because of unrecoverable reasons like not able to connect to the signaling server */
147
+ allowClickToReconnect: boolean;
148
+ };
149
+ constructor(data: WebRtcDisconnectedEvent['data']) {
150
+ super('webRtcDisconnected');
151
+ this.data = data;
152
+ }
153
+ }
154
+
155
+ /**
156
+ * An event that is emitted when RTCDataChannel is opened.
157
+ */
158
+ export class DataChannelOpenEvent extends Event {
159
+ readonly type: 'dataChannelOpen';
160
+ readonly data: {
161
+ /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
162
+ label: string;
163
+ /** RTCDataChannel onOpen event */
164
+ event: Event
165
+ };
166
+ constructor(data: DataChannelOpenEvent['data']) {
167
+ super('dataChannelOpen');
168
+ this.data = data;
169
+ }
170
+ }
171
+
172
+ /**
173
+ * An event that is emitted when RTCDataChannel is closed.
174
+ */
175
+ export class DataChannelCloseEvent extends Event {
176
+ readonly type: 'dataChannelClose';
177
+ readonly data: {
178
+ /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
179
+ label: string;
180
+ /** RTCDataChannel onClose event */
181
+ event: Event
182
+ };
183
+ constructor(data: DataChannelCloseEvent['data']) {
184
+ super('dataChannelClose');
185
+ this.data = data;
186
+ }
187
+ }
188
+
189
+ /**
190
+ * An event that is emitted on RTCDataChannel errors.
191
+ */
192
+ export class DataChannelErrorEvent extends Event {
193
+ readonly type: 'dataChannelError';
194
+ readonly data: {
195
+ /** Data channel label. One of 'datachannel', 'send-datachannel', 'recv-datachannel' */
196
+ label: string;
197
+ /** RTCDataChannel onError event */
198
+ event: Event
199
+ };
200
+ constructor(data: DataChannelErrorEvent['data']) {
201
+ super('dataChannelError');
202
+ this.data = data;
203
+ }
204
+ }
205
+
206
+ /**
207
+ * An event that is emitted when the video stream has been initialized.
208
+ */
209
+ export class VideoInitializedEvent extends Event {
210
+ readonly type: 'videoInitialized';
211
+ constructor() {
212
+ super('videoInitialized');
213
+ }
214
+ }
215
+
216
+ /**
217
+ * An event that is emitted when video stream loading starts.
218
+ */
219
+ export class StreamLoadingEvent extends Event {
220
+ readonly type: 'streamLoading';
221
+ constructor() {
222
+ super('streamLoading');
223
+ }
224
+ }
225
+
226
+ /**
227
+ * An event that is emitted when video stream loading has finished.
228
+ */
229
+ export class StreamPreConnectEvent extends Event {
230
+ readonly type: 'streamConnect';
231
+ constructor() {
232
+ super('streamConnect');
233
+ }
234
+ }
235
+
236
+ /**
237
+ * An event that is emitted when video stream has stopped.
238
+ */
239
+ export class StreamPreDisconnectEvent extends Event {
240
+ readonly type: 'streamDisconnect';
241
+ constructor() {
242
+ super('streamDisconnect');
243
+ }
244
+ }
245
+
246
+ /**
247
+ * An event that is emitted when video stream is reconnecting.
248
+ */
249
+ export class StreamReconnectEvent extends Event {
250
+ readonly type: 'streamReconnect';
251
+ constructor() {
252
+ super('streamReconnect');
253
+ }
254
+ }
255
+
256
+ /**
257
+ * An event that is emitted if there are errors loading the video stream.
258
+ */
259
+ export class PlayStreamErrorEvent extends Event {
260
+ readonly type: 'playStreamError';
261
+ readonly data: {
262
+ /** Error message */
263
+ message: string
264
+ };
265
+ constructor(data: PlayStreamErrorEvent['data']) {
266
+ super('playStreamError');
267
+ this.data = data;
268
+ }
269
+ }
270
+
271
+ /**
272
+ * An event that is emitted before trying to start video playback.
273
+ */
274
+ export class PlayStreamEvent extends Event {
275
+ readonly type: 'playStream';
276
+ constructor() {
277
+ super('playStream');
278
+ }
279
+ }
280
+
281
+ /**
282
+ * An event that is emitted if the browser rejects video playback. Can happen for example if
283
+ * video auto-play without user interaction is refused by the browser.
284
+ */
285
+ export class PlayStreamRejectedEvent extends Event {
286
+ readonly type: 'playStreamRejected';
287
+ readonly data: {
288
+ /** Rejection reason */
289
+ reason: unknown
290
+ };
291
+ constructor(data: PlayStreamRejectedEvent['data']) {
292
+ super('playStreamRejected');
293
+ this.data = data;
294
+ }
295
+ }
296
+
297
+ /**
298
+ * An event that is emitted when receiving a full FreezeFrame image from UE.
299
+ */
300
+ export class LoadFreezeFrameEvent extends Event {
301
+ readonly type: 'loadFreezeFrame';
302
+ readonly data: {
303
+ /** true if should show click-to-play overlay, not the freeze frame contents */
304
+ shouldShowPlayOverlay: boolean;
305
+ /** true if the received image is valid */
306
+ isValid: boolean;
307
+ /** Image data. Can be e.g. displayed by encoding as a data url. */
308
+ jpegData?: Uint8Array;
309
+ };
310
+ constructor(data: LoadFreezeFrameEvent['data']) {
311
+ super('loadFreezeFrame');
312
+ this.data = data;
313
+ }
314
+ }
315
+
316
+ /**
317
+ * An event that is emitted when receiving UnfreezeFrame message from UE and video playback is about to be resumed.
318
+ */
319
+ export class HideFreezeFrameEvent extends Event {
320
+ readonly type: 'hideFreezeFrame';
321
+ constructor() {
322
+ super('hideFreezeFrame');
323
+ }
324
+ }
325
+
326
+ /**
327
+ * An event that is emitted when receiving WebRTC statistics.
328
+ */
329
+ export class StatsReceivedEvent extends Event {
330
+ readonly type: 'statsReceived';
331
+ readonly data: {
332
+ /** Statistics object */
333
+ aggregatedStats: AggregatedStats
334
+ };
335
+ constructor(data: StatsReceivedEvent['data']) {
336
+ super('statsReceived');
337
+ this.data = data;
338
+ }
339
+ }
340
+
341
+ /**
342
+ * An event that is emitted when streamer list changes.
343
+ */
344
+ export class StreamerListMessageEvent extends Event {
345
+ readonly type: 'streamerListMessage';
346
+ readonly data: {
347
+ /** Streamer list message containing an array of streamer ids */
348
+ messageStreamerList: MessageStreamerList;
349
+ /** Auto-selected streamer from the list, or null if unable to auto-select and user should be prompted to select */
350
+ autoSelectedStreamerId: string;
351
+ /** Wanted streamer id from various configurations. */
352
+ wantedStreamerId: string;
353
+ };
354
+ constructor(data: StreamerListMessageEvent['data']) {
355
+ super('streamerListMessage');
356
+ this.data = data;
357
+ }
358
+ }
359
+
360
+ /**
361
+ * An event that is emitted when receiving latency test results.
362
+ */
363
+ export class LatencyTestResultEvent extends Event {
364
+ readonly type: 'latencyTestResult';
365
+ readonly data: {
366
+ /** Latency test result object */
367
+ latencyTimings: LatencyTestResults
368
+ };
369
+ constructor(data: LatencyTestResultEvent['data']) {
370
+ super('latencyTestResult');
371
+ this.data = data;
372
+ }
373
+ }
374
+
375
+ /**
376
+ * An event that is emitted when receiving data channel latency test response from server.
377
+ * This event is handled by DataChannelLatencyTestController
378
+ */
379
+ export class DataChannelLatencyTestResponseEvent extends Event {
380
+ readonly type: 'dataChannelLatencyTestResponse';
381
+ readonly data: {
382
+ /** Latency test result object */
383
+ response: DataChannelLatencyTestResponse
384
+ };
385
+ constructor(data: DataChannelLatencyTestResponseEvent['data']) {
386
+ super('dataChannelLatencyTestResponse');
387
+ this.data = data;
388
+ }
389
+ }
390
+
391
+ /**
392
+ * An event that is emitted when data channel latency test results are ready.
393
+ */
394
+ export class DataChannelLatencyTestResultEvent extends Event {
395
+ readonly type: 'dataChannelLatencyTestResult';
396
+ readonly data: {
397
+ /** Latency test result object */
398
+ result: DataChannelLatencyTestResult
399
+ };
400
+ constructor(data: DataChannelLatencyTestResultEvent['data']) {
401
+ super('dataChannelLatencyTestResult');
402
+ this.data = data;
403
+ }
404
+ }
405
+
406
+ /**
407
+ * An event that is emitted when receiving initial settings from UE.
408
+ */
409
+ export class InitialSettingsEvent extends Event {
410
+ readonly type: 'initialSettings';
411
+ readonly data: {
412
+ /** Initial settings from UE */
413
+ settings: InitialSettings
414
+ };
415
+ constructor(data: InitialSettingsEvent['data']) {
416
+ super('initialSettings');
417
+ this.data = data;
418
+ }
419
+ }
420
+
421
+ export type SettingsData =
422
+ | {
423
+ /** Flag id */
424
+ id: FlagsIds;
425
+ type: 'flag';
426
+ /** Flag value */
427
+ value: boolean;
428
+ /** SettingFlag object */
429
+ target: SettingFlag;
430
+ }
431
+ | {
432
+ /** Numeric setting id */
433
+ id: NumericParametersIds;
434
+ type: 'number';
435
+ /** Numeric setting value */
436
+ value: number;
437
+ /** SettingNumber object */
438
+ target: SettingNumber;
439
+ }
440
+ | {
441
+ /** Text setting id */
442
+ id: TextParametersIds;
443
+ type: 'text';
444
+ /** Text setting value */
445
+ value: string;
446
+ /** SettingText object */
447
+ target: SettingText;
448
+ }
449
+ | {
450
+ /** Option setting id */
451
+ id: OptionParametersIds;
452
+ type: 'option';
453
+ /** Option setting selected value */
454
+ value: string;
455
+ /** SettingOption object */
456
+ target: SettingOption;
457
+ };
458
+
459
+ /**
460
+ * An event that is emitted when PixelStreaming settings change.
461
+ */
462
+ export class SettingsChangedEvent extends Event {
463
+ readonly type: 'settingsChanged';
464
+ readonly data: SettingsData;
465
+ constructor(data: SettingsChangedEvent['data']) {
466
+ super('settingsChanged');
467
+ this.data = data;
468
+ }
469
+ }
470
+
471
+ /**
472
+ * Event emitted when an XR Session starts
473
+ */
474
+ export class XrSessionStartedEvent extends Event {
475
+ readonly type: 'xrSessionStarted';
476
+ constructor() {
477
+ super('xrSessionStarted');
478
+ }
479
+ }
480
+
481
+ /**
482
+ * Event emitted when an XR Session ends
483
+ */
484
+ export class XrSessionEndedEvent extends Event {
485
+ readonly type: 'xrSessionEnded';
486
+ constructor() {
487
+ super('xrSessionEnded');
488
+ }
489
+ }
490
+
491
+ export type XrFrameData = {
492
+ /** The frame timestamp */
493
+ time: DOMHighResTimeStamp;
494
+ /** The XRFrame */
495
+ frame: XRFrame;
496
+ };
497
+
498
+ /**
499
+ * Event emitted when an XR Frame is complete
500
+ */
501
+ export class XrFrameEvent extends Event {
502
+ readonly type: 'xrFrame';
503
+ readonly data: XrFrameData
504
+ constructor(data: XrFrameEvent['data']) {
505
+ super('xrFrame');
506
+ this.data = data;
507
+ }
508
+ }
509
+
510
+ /**
511
+ * An event that is emitted when receiving a player count from the signalling server
512
+ */
513
+ export class PlayerCountEvent extends Event {
514
+ readonly type: 'playerCount';
515
+ readonly data: {
516
+ /** count object */
517
+ count: number
518
+ };
519
+ constructor(data: PlayerCountEvent['data']) {
520
+ super('playerCount');
521
+ this.data = data;
522
+ }
523
+ }
524
+
525
+ export type PixelStreamingEvent =
526
+ | AfkWarningActivateEvent
527
+ | AfkWarningUpdateEvent
528
+ | AfkWarningDeactivateEvent
529
+ | AfkTimedOutEvent
530
+ | VideoEncoderAvgQPEvent
531
+ | WebRtcSdpEvent
532
+ | WebRtcAutoConnectEvent
533
+ | WebRtcConnectingEvent
534
+ | WebRtcConnectedEvent
535
+ | WebRtcFailedEvent
536
+ | WebRtcDisconnectedEvent
537
+ | DataChannelOpenEvent
538
+ | DataChannelCloseEvent
539
+ | DataChannelErrorEvent
540
+ | VideoInitializedEvent
541
+ | StreamLoadingEvent
542
+ | StreamPreConnectEvent
543
+ | StreamReconnectEvent
544
+ | StreamPreDisconnectEvent
545
+ | PlayStreamErrorEvent
546
+ | PlayStreamEvent
547
+ | PlayStreamRejectedEvent
548
+ | LoadFreezeFrameEvent
549
+ | HideFreezeFrameEvent
550
+ | StatsReceivedEvent
551
+ | StreamerListMessageEvent
552
+ | LatencyTestResultEvent
553
+ | DataChannelLatencyTestResponseEvent
554
+ | DataChannelLatencyTestResultEvent
555
+ | InitialSettingsEvent
556
+ | SettingsChangedEvent
557
+ | XrSessionStartedEvent
558
+ | XrSessionEndedEvent
559
+ | XrFrameEvent
560
+ | PlayerCountEvent;
561
+
562
+ export class EventEmitter extends EventTarget {
563
+ /**
564
+ * Dispatch a new event.
565
+ * @param e event
566
+ * @returns
567
+ */
568
+ public dispatchEvent(e: PixelStreamingEvent): boolean {
569
+ return super.dispatchEvent(e);
570
+ }
571
+
572
+ /**
573
+ * Register an event handler.
574
+ * @param type event name
575
+ * @param listener event handler function
576
+ */
577
+ public addEventListener<
578
+ T extends PixelStreamingEvent['type'],
579
+ E extends PixelStreamingEvent & { type: T }
580
+ >(type: T, listener: (e: Event & E) => void) {
581
+ super.addEventListener(type, listener);
582
+ }
583
+
584
+ /**
585
+ * Remove an event handler.
586
+ * @param type event name
587
+ * @param listener event handler function
588
+ */
589
+ public removeEventListener<
590
+ T extends PixelStreamingEvent['type'],
591
+ E extends PixelStreamingEvent & { type: T }
592
+ >(type: T, listener: (e: Event & E) => void) {
593
+ super.removeEventListener(type, listener);
594
+ }
595
+ }
@@ -0,0 +1,29 @@
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+
3
+ export type UnregisterFunction = () => void;
4
+
5
+ export class EventListenerTracker {
6
+ private unregisterCallbacks: UnregisterFunction[];
7
+
8
+ constructor() {
9
+ this.unregisterCallbacks = [];
10
+ }
11
+
12
+ /**
13
+ * Add a new callback that is executed when unregisterAll is called.
14
+ * @param callback
15
+ */
16
+ addUnregisterCallback(callback: UnregisterFunction) {
17
+ this.unregisterCallbacks.push(callback);
18
+ }
19
+
20
+ /**
21
+ * Execute all callbacks and clear the list.
22
+ */
23
+ unregisterAll() {
24
+ for (const callback of this.unregisterCallbacks) {
25
+ callback();
26
+ }
27
+ this.unregisterCallbacks = [];
28
+ }
29
+ }