@3dsource/angular-unreal-module 0.0.133 → 0.0.134

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.
@@ -807,9 +807,12 @@ function OnOpenHandler() {
807
807
  */
808
808
  const keepMaxUntilReset = (reset$) => (source$) => merge(source$, reset$.pipe(map(() => null))).pipe(scan((max, value) => (value === null ? 0 : Math.max(max, value)), 0));
809
809
 
810
+ // Reused across every inbound data-channel message — instantiating a
811
+ // TextDecoder per call adds needless GC churn on a hot path.
812
+ const utf16Decoder = new TextDecoder('utf-16');
810
813
  function decodeData(anyData) {
811
814
  try {
812
- return new TextDecoder('utf-16').decode(anyData);
815
+ return utf16Decoder.decode(anyData);
813
816
  }
814
817
  catch {
815
818
  return '';
@@ -874,7 +877,6 @@ class DataFlowMonitor {
874
877
  },
875
878
  isDropDetected: true,
876
879
  dropPercentage,
877
- dataHistory: [...this.dataHistory],
878
880
  activeMedian: secondHalfMedian,
879
881
  quality: isRedFlag ? 'red' : 'orange',
880
882
  message: `Significant flow drop detected: ${dropPercentage.toFixed(2)}% (from ${firstHalfMedian} to ${secondHalfMedian})`,
@@ -889,7 +891,6 @@ class DataFlowMonitor {
889
891
  },
890
892
  isDropDetected: false,
891
893
  dropPercentage,
892
- dataHistory: [...this.dataHistory],
893
894
  activeMedian: secondHalfMedian,
894
895
  quality: 'lime',
895
896
  message: 'Stable flow',
@@ -1071,6 +1072,28 @@ function qpToQuality(VideoEncoderQP) {
1071
1072
  return quality;
1072
1073
  }
1073
1074
 
1075
+ /**
1076
+ * Base64-encodes a byte array.
1077
+ *
1078
+ * Builds the intermediate binary string in fixed-size chunks instead of
1079
+ * concatenating one character at a time. The naive `bytes.reduce((s, b) => s +
1080
+ * String.fromCharCode(b), '')` is O(n²) (each `+` re-copies the growing string)
1081
+ * and stalls the main thread for a full-resolution frame; chunking keeps it
1082
+ * O(n). The chunk size stays under the argument-count limit of
1083
+ * `String.fromCharCode.apply`/spread.
1084
+ *
1085
+ * @param bytes - The raw bytes to encode.
1086
+ * @returns The Base64 representation of `bytes`.
1087
+ */
1088
+ function uint8ToBase64(bytes) {
1089
+ const CHUNK_SIZE = 0x8000;
1090
+ let binary = '';
1091
+ for (let i = 0; i < bytes.length; i += CHUNK_SIZE) {
1092
+ binary += String.fromCharCode(...bytes.subarray(i, i + CHUNK_SIZE));
1093
+ }
1094
+ return btoa(binary);
1095
+ }
1096
+
1074
1097
  function fromResizeObserver(elem) {
1075
1098
  return new Observable((subscriber) => {
1076
1099
  const observer = new window.ResizeObserver((entries) => subscriber.next(entries));
@@ -2233,7 +2256,11 @@ class SignallingService extends SubService {
2233
2256
  dataString = JSON.stringify(data);
2234
2257
  }
2235
2258
  if (this.ws && this.ws.readyState === WS_OPEN_STATE) {
2236
- Logger.colored(...COLOR_CODES.TO_CIRRUS, JSON.parse(dataString));
2259
+ // Only parse-for-display when the logger would actually print — avoids a
2260
+ // JSON.parse on every outbound message in production (logger is a no-op).
2261
+ if (Logger.isDevMode) {
2262
+ Logger.colored(...COLOR_CODES.TO_CIRRUS, JSON.parse(dataString));
2263
+ }
2237
2264
  try {
2238
2265
  this.ws.send(dataString);
2239
2266
  }
@@ -2426,7 +2453,7 @@ class VideoService extends SubService {
2426
2453
  this.latencyTestTimings.SetUETimings(latencyTimings);
2427
2454
  }
2428
2455
  setEncoder(data) {
2429
- this.VideoEncoderQP = Number(new TextDecoder('utf-16').decode(data));
2456
+ this.VideoEncoderQP = Number(decodeData(data));
2430
2457
  }
2431
2458
  create() {
2432
2459
  if (!this.container) {
@@ -4064,7 +4091,7 @@ class FreezeFrameService extends SubService {
4064
4091
  if (!this.jpeg) {
4065
4092
  return;
4066
4093
  }
4067
- const base64 = btoa(this.jpeg?.reduce((data, byte) => data + String.fromCharCode(byte), ''));
4094
+ const base64 = uint8ToBase64(this.jpeg);
4068
4095
  this.freezeFrameOverlay.src = 'data:image/jpeg;base64,' + base64;
4069
4096
  this.store.dispatch(setFreezeFrame({
4070
4097
  dataUrl: this.freezeFrameOverlay.src,
@@ -4162,7 +4189,7 @@ class FileReceiverService extends SubService {
4162
4189
  this.resetOnStart();
4163
4190
  }
4164
4191
  //Logger.info(extensionAsString);
4165
- this.extension = new TextDecoder('utf-16').decode(view.slice(1));
4192
+ this.extension = decodeData(view.slice(1).buffer);
4166
4193
  }
4167
4194
  /**
4168
4195
  * Processes a file mime type when received over data channel
@@ -4173,7 +4200,7 @@ class FileReceiverService extends SubService {
4173
4200
  if (!this.receiving) {
4174
4201
  this.resetOnStart();
4175
4202
  }
4176
- const mimeAsString = new TextDecoder('utf-16').decode(view.slice(1));
4203
+ const mimeAsString = decodeData(view.slice(1).buffer);
4177
4204
  // Logger.info(mimeAsString);
4178
4205
  this.mimetype = mimeAsString;
4179
4206
  }
@@ -4353,8 +4380,10 @@ class AggregatorService extends SubService {
4353
4380
  break;
4354
4381
  }
4355
4382
  case ToClientMessage.Command: {
4356
- const command = JSON.parse(decodeData(anyData));
4357
- Logger.colored(...COLOR_CODES.FROM_UNREAL, command);
4383
+ // The parsed command is only used for the dev log — skip the work in prod.
4384
+ if (Logger.isDevMode) {
4385
+ Logger.colored(...COLOR_CODES.FROM_UNREAL, JSON.parse(decodeData(anyData)));
4386
+ }
4358
4387
  break;
4359
4388
  }
4360
4389
  case ToClientMessage.FileExtension:
@@ -4388,10 +4417,14 @@ class AggregatorService extends SubService {
4388
4417
  break;
4389
4418
  }
4390
4419
  case ToClientMessage.InitialSettings:
4391
- Logger.colored(...COLOR_CODES.FROM_UNREAL, 'InitialSettings message :', JSON.parse(decodeData(anyData)));
4420
+ if (Logger.isDevMode) {
4421
+ Logger.colored(...COLOR_CODES.FROM_UNREAL, 'InitialSettings message :', JSON.parse(decodeData(anyData)));
4422
+ }
4392
4423
  break;
4393
4424
  case ToClientMessage.Protocol:
4394
- Logger.colored(...COLOR_CODES.FROM_UNREAL, 'Protocol message :', JSON.parse(decodeData(anyData)));
4425
+ if (Logger.isDevMode) {
4426
+ Logger.colored(...COLOR_CODES.FROM_UNREAL, 'Protocol message :', JSON.parse(decodeData(anyData)));
4427
+ }
4395
4428
  break;
4396
4429
  case ToClientMessage.InputControlOwnership:
4397
4430
  Logger.colored(...COLOR_CODES.FROM_UNREAL, 'InputControlOwnership message :', anyData);
@@ -4538,6 +4571,17 @@ class InputService extends SubService {
4538
4571
  this.fingerIds = new Map();
4539
4572
  this.maxByteValue = 255;
4540
4573
  this.fingers = [...INITIAL_FINGER_IDS];
4574
+ // Reusable wire buffers. Input events fire at up to ~60 Hz; the data channel
4575
+ // copies the bytes synchronously on send (RTCDataChannel.send), so a single
4576
+ // buffer per message shape is safe and avoids per-event allocation/GC churn.
4577
+ this.mouseMoveView = new DataView(new ArrayBuffer(9));
4578
+ this.mouseButtonView = new DataView(new ArrayBuffer(6));
4579
+ this.mouseWheelView = new DataView(new ArrayBuffer(7));
4580
+ this.touchView = new DataView(new ArrayBuffer(9));
4581
+ this.keyPressView = new DataView(new ArrayBuffer(3));
4582
+ this.singleByteView = new DataView(new ArrayBuffer(1));
4583
+ this.keyDownBytes = new Uint8Array(3);
4584
+ this.keyUpBytes = new Uint8Array(2);
4541
4585
  this.offsetParams = {
4542
4586
  scaleX: 1,
4543
4587
  scaleY: 1,
@@ -4714,7 +4758,7 @@ class InputService extends SubService {
4714
4758
  const { x, y } = this.getTouchPositionWithOffset(touch);
4715
4759
  Logger.info(`F${finger}=(${x}, ${y})`);
4716
4760
  const coord = this.normalizeAndQuantizeUnsigned(x, y);
4717
- const data = new DataView(new ArrayBuffer(9));
4761
+ const data = this.touchView;
4718
4762
  data.setUint8(0, type);
4719
4763
  data.setUint8(1, numTouches);
4720
4764
  data.setUint16(byte, coord.x, true);
@@ -4769,7 +4813,7 @@ class InputService extends SubService {
4769
4813
  emitMouseMove(x, y, deltaX, deltaY) {
4770
4814
  const coord = this.normalizeAndQuantizeUnsigned(x, y);
4771
4815
  const delta = this.normalizeAndQuantizeSigned(deltaX, deltaY);
4772
- const data = new DataView(new ArrayBuffer(9));
4816
+ const data = this.mouseMoveView;
4773
4817
  data.setUint8(0, MessageType.MouseMove);
4774
4818
  data.setUint16(1, coord.x, true);
4775
4819
  data.setUint16(3, coord.y, true);
@@ -4779,7 +4823,7 @@ class InputService extends SubService {
4779
4823
  }
4780
4824
  emitMouseDown(button, x, y) {
4781
4825
  const coord = this.normalizeAndQuantizeUnsigned(x, y);
4782
- const data = new DataView(new ArrayBuffer(6));
4826
+ const data = this.mouseButtonView;
4783
4827
  data.setUint8(0, MessageType.MouseDown);
4784
4828
  data.setUint8(1, button);
4785
4829
  data.setUint16(2, coord.x, true);
@@ -4788,7 +4832,7 @@ class InputService extends SubService {
4788
4832
  }
4789
4833
  emitMouseUp(button, x, y) {
4790
4834
  const coord = this.normalizeAndQuantizeUnsigned(x, y);
4791
- const data = new DataView(new ArrayBuffer(6));
4835
+ const data = this.mouseButtonView;
4792
4836
  data.setUint8(0, MessageType.MouseUp);
4793
4837
  data.setUint8(1, button);
4794
4838
  data.setUint16(2, coord.x, true);
@@ -4797,7 +4841,7 @@ class InputService extends SubService {
4797
4841
  }
4798
4842
  emitMouseWheel(delta, x, y) {
4799
4843
  const coord = this.normalizeAndQuantizeUnsigned(x, y);
4800
- const data = new DataView(new ArrayBuffer(7));
4844
+ const data = this.mouseWheelView;
4801
4845
  data.setUint8(0, MessageType.MouseWheel);
4802
4846
  data.setInt16(1, delta, true);
4803
4847
  data.setUint16(3, coord.x, true);
@@ -4873,7 +4917,7 @@ class InputService extends SubService {
4873
4917
  .pipe(takeUntil$1(this.deactivatedVideoTrigger$))
4874
4918
  .subscribe((e) => {
4875
4919
  this.focusWindow();
4876
- const data = new DataView(new ArrayBuffer(1));
4920
+ const data = this.singleByteView;
4877
4921
  data.setUint8(0, MessageType.MouseEnter);
4878
4922
  this.sendInputData(data.buffer);
4879
4923
  this.pressMouseButtons(e.buttons, e.offsetX, e.offsetY);
@@ -4881,7 +4925,7 @@ class InputService extends SubService {
4881
4925
  fromEvent(htmlVideoElement, 'mouseleave')
4882
4926
  .pipe(takeUntil$1(this.deactivatedVideoTrigger$))
4883
4927
  .subscribe((e) => {
4884
- const data = new DataView(new ArrayBuffer(1));
4928
+ const data = this.singleByteView;
4885
4929
  data.setUint8(0, MessageType.MouseLeave);
4886
4930
  this.sendInputData(data.buffer);
4887
4931
  this.releaseMouseButtons(e.buttons, e.offsetX, e.offsetY);
@@ -4930,15 +4974,15 @@ class InputService extends SubService {
4930
4974
  if (isCtrlOrCommand && isPlusOrMinus) {
4931
4975
  return;
4932
4976
  }
4933
- this.sendInputData(new Uint8Array([
4934
- MessageType.KeyDown,
4935
- this.getKeyCode(e),
4936
- Number(e.repeat),
4937
- ]).buffer);
4977
+ const keyDown = this.keyDownBytes;
4978
+ keyDown[0] = MessageType.KeyDown;
4979
+ keyDown[1] = this.getKeyCode(e);
4980
+ keyDown[2] = Number(e.repeat);
4981
+ this.sendInputData(keyDown.buffer);
4938
4982
  // Backspace isn't a keypress in JS, but UE4 text-entry fields need it
4939
4983
  // to delete characters.
4940
4984
  if (e.keyCode === SpecialKeyCodes.BackSpace) {
4941
- const data = new DataView(new ArrayBuffer(3));
4985
+ const data = this.keyPressView;
4942
4986
  data.setUint8(0, MessageType.KeyPress);
4943
4987
  data.setUint16(1, SpecialKeyCodes.BackSpace, true);
4944
4988
  this.sendInputData(data.buffer);
@@ -4954,7 +4998,10 @@ class InputService extends SubService {
4954
4998
  if (filter(e)) {
4955
4999
  return;
4956
5000
  }
4957
- this.sendInputData(new Uint8Array([MessageType.KeyUp, this.getKeyCode(e)]).buffer);
5001
+ const keyUp = this.keyUpBytes;
5002
+ keyUp[0] = MessageType.KeyUp;
5003
+ keyUp[1] = this.getKeyCode(e);
5004
+ this.sendInputData(keyUp.buffer);
4958
5005
  if (this.options.suppressBrowserKeys &&
4959
5006
  this.isKeyCodeBrowserKey(e.keyCode)) {
4960
5007
  e.preventDefault();
@@ -4966,7 +5013,7 @@ class InputService extends SubService {
4966
5013
  if (filter(e)) {
4967
5014
  return;
4968
5015
  }
4969
- const data = new DataView(new ArrayBuffer(3));
5016
+ const data = this.keyPressView;
4970
5017
  data.setUint8(0, MessageType.KeyPress);
4971
5018
  data.setUint16(1, e.charCode, true);
4972
5019
  this.sendInputData(data.buffer);
@@ -7204,5 +7251,5 @@ function provideUnrealModule() {
7204
7251
  * Generated bundle index. Do not edit.
7205
7252
  */
7206
7253
 
7207
- export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LoadingProgressService, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_AUDIO_ID, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_RETRY_PER_INSTANCE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, commandCompleted, commandStarted, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToPercents, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeValuesUniversal, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsFullyConnected, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectUserInactivityDetected, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setUserInactivityTimeout, setViewportNotReady, setViewportReady, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, showUserInactivityTimeoutPopup, signalingRetryAttempted, smoothTransition, startStream, trackMixpanelEvent, trackTelemetryData, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
7254
+ export { AFKService, AUTO_HIGH_RESOLUTION_IDLE_MS, AfkTimeoutModalComponent, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DESTROY_DISCONNECT_REASONS, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFrameService, INNER_RETRY_LIMIT, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LoadingProgressService, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MIN_CONTAINER_SIZE, MessageType, MouseButton, MouseButtonsMask, OUTER_RETRY_DELAY, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_AUDIO_ID, STREAMING_VIDEO_ID, SafePipe, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryService, StreamStatusTelemetryService2, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_RETRY_PER_INSTANCE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, answerSent, changeStatusMainVideoOnScene, changeStreamResolutionAction, commandCompleted, commandStarted, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToPercents, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getResizeStudioValues, getResizeValuesUniversal, getRtcErrorMessage, iceConnectionFailed, initSignalling, instanceReady, keepMaxUntilReset, makeEven, pollingEnded, pollingStarted, provideUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, regionPingFetchEnd, regionPingFetchStart, regionResolved, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetUserInactivityTimeout, resetWarnTimeout, saveAnalyticsEvent, selectCirrusConnectionId, selectClientAndViewIds, selectCommandProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsFullyConnected, selectIsLoaderScreenVisible, selectIsVideoPlayingAndDataChannelConnected, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectUserInactivityDetected, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setUserInactivityTimeout, setViewportNotReady, setViewportReady, showLoadingProgress, showResumeStreamPopup, showUnrealErrorMessage, showUserInactivityTimeoutPopup, signalingRetryAttempted, smoothTransition, startStream, trackMixpanelEvent, trackTelemetryData, uint8ToBase64, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
7208
7255
  //# sourceMappingURL=3dsource-angular-unreal-module.mjs.map