@whereby.com/media 1.27.0 → 1.29.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.
@@ -1649,31 +1649,6 @@ class RtcStream {
1649
1649
  }
1650
1650
  }
1651
1651
 
1652
- const lowPixelCount = 320 * 180;
1653
- const lowBitratePerPixel = 150000 / lowPixelCount;
1654
- const highPixelCount = 1280 * 720;
1655
- const highBitratePerPixel = 1000000 / highPixelCount;
1656
- const bitrateChangePerPixel = (highBitratePerPixel - lowBitratePerPixel) / (highPixelCount - lowPixelCount);
1657
- function getOptimalBitrate(width, height, frameRate) {
1658
- let targetPixelCount = width * height;
1659
- if (targetPixelCount < lowPixelCount)
1660
- targetPixelCount = lowPixelCount;
1661
- if (targetPixelCount > highPixelCount)
1662
- targetPixelCount = highPixelCount;
1663
- let targetBitratePerPixel = lowBitratePerPixel;
1664
- if (targetPixelCount > highPixelCount)
1665
- targetBitratePerPixel = highBitratePerPixel;
1666
- else if (targetPixelCount > lowPixelCount) {
1667
- targetBitratePerPixel += (targetPixelCount - lowPixelCount) * bitrateChangePerPixel;
1668
- }
1669
- let targetBitrate = width * height * targetBitratePerPixel;
1670
- if (frameRate <= 15)
1671
- targetBitrate = targetBitrate * 0.7;
1672
- else if (frameRate <= 24)
1673
- targetBitrate = targetBitrate * 0.9;
1674
- return targetBitrate;
1675
- }
1676
-
1677
1652
  const word = "[a-fA-F\\d:]";
1678
1653
  const boundry = (options) => options && options.includeBoundaries ? `(?:(?<=\\s|^)(?=${word})|(?<=${word})(?=\\s|$))` : "";
1679
1654
  const v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
@@ -2528,25 +2503,29 @@ const VIDEO_SETTINGS_VP9 = {
2528
2503
  codecOptions: {
2529
2504
  videoGoogleStartBitrate: 500,
2530
2505
  },
2531
- encodings: [{ scalabilityMode: "L3T2_KEY", maxBitrate: 1650000 }],
2506
+ encodings: [{ scalabilityMode: "L3T2", maxBitrate: 1000000 }],
2507
+ };
2508
+ const VIDEO_SETTINGS_VP9_KEY = {
2509
+ codecOptions: {
2510
+ videoGoogleStartBitrate: 500,
2511
+ },
2512
+ encodings: [{ scalabilityMode: "L3T2_KEY", maxBitrate: 1250000 }],
2532
2513
  };
2533
2514
  const VIDEO_SETTINGS_VP9_LOW_BANDWIDTH = {
2534
2515
  codecOptions: {
2535
2516
  videoGoogleStartBitrate: 500,
2536
2517
  },
2537
- encodings: [{ scalabilityMode: "L2T2_KEY", maxBitrate: 800000 }],
2518
+ encodings: [{ scalabilityMode: "L2T2", maxBitrate: 500000 }],
2519
+ };
2520
+ const VIDEO_SETTINGS_VP9_LOW_BANDWIDTH_KEY = {
2521
+ codecOptions: {
2522
+ videoGoogleStartBitrate: 500,
2523
+ },
2524
+ encodings: [{ scalabilityMode: "L2T2_KEY", maxBitrate: 650000 }],
2538
2525
  };
2539
2526
  const SCREEN_SHARE_SETTINGS = {
2540
2527
  encodings: [{}],
2541
2528
  };
2542
- const SCREEN_SHARE_SETTINGS_LOW_BANDWIDTH = {
2543
- encodings: [
2544
- {
2545
- maxBitrate: 600000,
2546
- maxFramerate: 2,
2547
- },
2548
- ],
2549
- };
2550
2529
  const SCREEN_SHARE_SIMULCAST_SETTINGS = {
2551
2530
  encodings: [
2552
2531
  { scaleResolutionDownBy: 2, dtx: true, maxBitrate: 500000 },
@@ -2567,54 +2546,95 @@ const SCREEN_SHARE_SETTINGS_VP9 = {
2567
2546
  encodings: [{ dtx: true }],
2568
2547
  };
2569
2548
  const getMediaSettings = (kind, isScreenShare, features, isSomeoneAlreadyPresenting = false) => {
2570
- const { lowDataModeEnabled, simulcastScreenshareOn, lowBandwidth, vp9On } = features;
2549
+ const { lowDataModeEnabled, simulcastScreenshareOn, vp9On, svcKeyScalabilityModeOn } = features;
2571
2550
  if (kind === "audio") {
2572
2551
  return AUDIO_SETTINGS;
2573
2552
  }
2553
+ const isChrome = adapterRaw.browserDetails.browser === "chrome";
2554
+ const isVp9Available = isChrome && vp9On;
2574
2555
  if (isScreenShare) {
2575
- if (isSomeoneAlreadyPresenting) {
2576
- if (vp9On)
2577
- return ADDITIONAL_SCREEN_SHARE_SETTINGS_VP9;
2578
- return ADDITIONAL_SCREEN_SHARE_SETTINGS;
2579
- }
2580
- if (lowBandwidth && !vp9On)
2581
- return SCREEN_SHARE_SETTINGS_LOW_BANDWIDTH;
2582
- if (vp9On)
2583
- return SCREEN_SHARE_SETTINGS_VP9;
2584
- if (simulcastScreenshareOn)
2585
- return SCREEN_SHARE_SIMULCAST_SETTINGS;
2586
- return SCREEN_SHARE_SETTINGS;
2556
+ return getScreenShareMediaSettings({
2557
+ isVp9Available,
2558
+ isSomeoneAlreadyPresenting,
2559
+ simulcastScreenshareOn,
2560
+ });
2587
2561
  }
2588
2562
  else {
2589
- if (lowBandwidth) {
2590
- if (vp9On)
2591
- return VIDEO_SETTINGS_VP9_LOW_BANDWIDTH;
2592
- return VIDEO_SETTINGS_SD;
2563
+ return getCameraMediaSettings({
2564
+ lowBandwidth: lowDataModeEnabled,
2565
+ isVp9Available,
2566
+ svcKeyScalabilityModeOn,
2567
+ });
2568
+ }
2569
+ };
2570
+ const getCameraMediaSettings = ({ lowBandwidth, isVp9Available, svcKeyScalabilityModeOn, }) => {
2571
+ if (lowBandwidth) {
2572
+ if (isVp9Available) {
2573
+ if (svcKeyScalabilityModeOn)
2574
+ return VIDEO_SETTINGS_VP9_LOW_BANDWIDTH_KEY;
2575
+ return VIDEO_SETTINGS_VP9_LOW_BANDWIDTH;
2593
2576
  }
2594
- if (vp9On)
2595
- return VIDEO_SETTINGS_VP9;
2596
- if (lowDataModeEnabled)
2597
- return VIDEO_SETTINGS_SD;
2598
- return VIDEO_SETTINGS_HD;
2577
+ return VIDEO_SETTINGS_SD;
2599
2578
  }
2579
+ if (isVp9Available) {
2580
+ if (svcKeyScalabilityModeOn)
2581
+ return VIDEO_SETTINGS_VP9_KEY;
2582
+ return VIDEO_SETTINGS_VP9;
2583
+ }
2584
+ return VIDEO_SETTINGS_HD;
2585
+ };
2586
+ const getScreenShareMediaSettings = ({ isVp9Available, isSomeoneAlreadyPresenting, simulcastScreenshareOn, }) => {
2587
+ if (isSomeoneAlreadyPresenting) {
2588
+ if (isVp9Available)
2589
+ return ADDITIONAL_SCREEN_SHARE_SETTINGS_VP9;
2590
+ return ADDITIONAL_SCREEN_SHARE_SETTINGS;
2591
+ }
2592
+ if (isVp9Available)
2593
+ return SCREEN_SHARE_SETTINGS_VP9;
2594
+ if (simulcastScreenshareOn)
2595
+ return SCREEN_SHARE_SIMULCAST_SETTINGS;
2596
+ return SCREEN_SHARE_SETTINGS;
2600
2597
  };
2598
+ var PrioritizableCodec;
2599
+ (function (PrioritizableCodec) {
2600
+ PrioritizableCodec["H264"] = "video/h264";
2601
+ PrioritizableCodec["VP9"] = "video/vp9";
2602
+ })(PrioritizableCodec || (PrioritizableCodec = {}));
2601
2603
  const modifyMediaCapabilities = (routerRtpCapabilities, features) => {
2602
2604
  const { vp9On, h264On } = features;
2603
- if (vp9On) {
2604
- const { preferredPayloadType } = routerRtpCapabilities.codecs.find((codec) => codec.mimeType.toLowerCase() === "video/vp9");
2605
- const { preferredPayloadType: aptPreferredPayloadType } = routerRtpCapabilities.codecs.find((codec) => codec.mimeType.toLowerCase() === "video/rtx" && codec.parameters.apt === preferredPayloadType);
2606
- routerRtpCapabilities.codecs = routerRtpCapabilities.codecs.filter((codec) => codec.kind === "audio" ||
2607
- codec.preferredPayloadType === preferredPayloadType ||
2608
- codec.preferredPayloadType === aptPreferredPayloadType);
2605
+ const isChrome = adapterRaw.browserDetails.browser === "chrome";
2606
+ if (!(routerRtpCapabilities === null || routerRtpCapabilities === void 0 ? void 0 : routerRtpCapabilities.codecs)) {
2607
+ return routerRtpCapabilities;
2608
+ }
2609
+ if (vp9On && isChrome) {
2610
+ const sorted = prioritizeRouterRtpCapabilitiesCodecs(routerRtpCapabilities.codecs, PrioritizableCodec.VP9);
2611
+ return Object.assign(Object.assign({}, routerRtpCapabilities), { codecs: sorted });
2609
2612
  }
2610
2613
  else if (h264On) {
2611
- const { preferredPayloadType } = routerRtpCapabilities.codecs.find((codec) => codec.mimeType.toLowerCase() === "video/h264");
2612
- const { preferredPayloadType: aptPreferredPayloadType } = routerRtpCapabilities.codecs.find((codec) => codec.mimeType.toLowerCase() === "video/rtx" && codec.parameters.apt === preferredPayloadType);
2613
- routerRtpCapabilities.codecs = routerRtpCapabilities.codecs.filter((codec) => codec.kind === "audio" ||
2614
- codec.preferredPayloadType === preferredPayloadType ||
2615
- codec.preferredPayloadType === aptPreferredPayloadType);
2614
+ const sorted = prioritizeRouterRtpCapabilitiesCodecs(routerRtpCapabilities.codecs, PrioritizableCodec.H264);
2615
+ return Object.assign(Object.assign({}, routerRtpCapabilities), { codecs: sorted });
2616
2616
  }
2617
+ return routerRtpCapabilities;
2617
2618
  };
2619
+ function prioritizeRouterRtpCapabilitiesCodecs(codecs, preferredCodec) {
2620
+ const preferredCodecEntry = codecs.find(({ mimeType }) => mimeType.toLowerCase() === preferredCodec);
2621
+ if (!preferredCodecEntry) {
2622
+ return codecs;
2623
+ }
2624
+ return [...codecs].sort((left, right) => {
2625
+ if (left.mimeType.toLowerCase() === preferredCodec) {
2626
+ return -1;
2627
+ }
2628
+ if (left.mimeType.toLowerCase() === "video/rtx" &&
2629
+ left.parameters.apt === preferredCodecEntry.preferredPayloadType) {
2630
+ if (right.mimeType.toLowerCase() === preferredCodec) {
2631
+ return 1;
2632
+ }
2633
+ return -1;
2634
+ }
2635
+ return 0;
2636
+ });
2637
+ }
2618
2638
  function getPreferredOrder(availableCodecs, { vp9On, av1On }) {
2619
2639
  if (vp9On) {
2620
2640
  availableCodecs.unshift("video/vp9");
@@ -3928,12 +3948,12 @@ class P2pRtcManager {
3928
3948
  if (numPeers > 7) {
3929
3949
  numPeers = 7;
3930
3950
  }
3931
- let bandwidth = this._features.bandwidth
3951
+ const bandwidth = this._features.bandwidth
3932
3952
  ? parseInt(this._features.bandwidth, 10)
3933
3953
  : {
3934
- 1: this._features.lowBandwidth ? 768 : 0,
3935
- 2: this._features.highP2PBandwidth && !this._features.lowBandwidth ? 768 : 384,
3936
- 3: this._features.highP2PBandwidth && !this._features.lowBandwidth ? 512 : 256,
3954
+ 1: 0,
3955
+ 2: 384,
3956
+ 3: 256,
3937
3957
  4: 192,
3938
3958
  5: 128,
3939
3959
  6: 128,
@@ -3942,22 +3962,6 @@ class P2pRtcManager {
3942
3962
  if (bandwidth === undefined) {
3943
3963
  return 0;
3944
3964
  }
3945
- if (this._features.adjustBitratesFromResolution) {
3946
- const cameraStream = this._getLocalCameraStream();
3947
- if (cameraStream) {
3948
- const cameraTrack = cameraStream && cameraStream.getVideoTracks()[0];
3949
- if (cameraTrack) {
3950
- const { width, height, frameRate } = cameraTrack.getSettings();
3951
- if (width && height && frameRate) {
3952
- const optimalBandwidth = Math.round(getOptimalBitrate(width, height, frameRate) / 1000);
3953
- bandwidth = Math.min(optimalBandwidth, bandwidth || optimalBandwidth);
3954
- }
3955
- }
3956
- }
3957
- }
3958
- if (this._features.higherP2PBitrates && !this._features.lowBandwidth) {
3959
- bandwidth = bandwidth * 1.5;
3960
- }
3961
3965
  this._forEachPeerConnection((session) => {
3962
3966
  session.changeBandwidth(bandwidth);
3963
3967
  });
@@ -5220,9 +5224,9 @@ class VegaRtcManager {
5220
5224
  try {
5221
5225
  const { routerRtpCapabilities } = yield this._vegaConnection.request("getCapabilities");
5222
5226
  if (!this._routerRtpCapabilities) {
5223
- modifyMediaCapabilities(routerRtpCapabilities, Object.assign(Object.assign({}, this._features), { vp9On: this._features.sfuVp9On }));
5224
- this._routerRtpCapabilities = routerRtpCapabilities;
5225
- yield ((_a = this._mediasoupDevice) === null || _a === void 0 ? void 0 : _a.load({ routerRtpCapabilities }));
5227
+ const modifiedCapabilities = modifyMediaCapabilities(routerRtpCapabilities, Object.assign(Object.assign({}, this._features), { vp9On: this._features.sfuVp9On }));
5228
+ this._routerRtpCapabilities = modifiedCapabilities;
5229
+ yield ((_a = this._mediasoupDevice) === null || _a === void 0 ? void 0 : _a.load({ routerRtpCapabilities: modifiedCapabilities }));
5226
5230
  }
5227
5231
  this._vegaConnection.message("setCapabilities", {
5228
5232
  rtpCapabilities: (_b = this._mediasoupDevice) === null || _b === void 0 ? void 0 : _b.rtpCapabilities,
@@ -5576,7 +5580,7 @@ class VegaRtcManager {
5576
5580
  return;
5577
5581
  }
5578
5582
  this._webcamProducerPromise = (() => __awaiter(this, void 0, void 0, function* () {
5579
- var _b, _c;
5583
+ var _b;
5580
5584
  try {
5581
5585
  const currentPaused = this._webcamPaused;
5582
5586
  const producer = yield this._sendTransport.produce(Object.assign(Object.assign({ track: this._webcamTrack, disableTrackOnPause: false, stopTracks: false }, getMediaSettings("video", false, Object.assign(Object.assign({}, this._features), { vp9On: this._features.sfuVp9On }))), { appData: {
@@ -5614,9 +5618,6 @@ class VegaRtcManager {
5614
5618
  this._stopProducer(this._webcamProducer);
5615
5619
  this._webcamProducer = null;
5616
5620
  }
5617
- if (this._features.lowBandwidth && this._screenVideoTrack) {
5618
- (_c = this._webcamProducer) === null || _c === void 0 ? void 0 : _c.setMaxSpatialLayer(0);
5619
- }
5620
5621
  }
5621
5622
  }))();
5622
5623
  });
@@ -5675,7 +5676,6 @@ class VegaRtcManager {
5675
5676
  return __awaiter(this, void 0, void 0, function* () {
5676
5677
  logger$3.info("_internalSendScreenVideo()");
5677
5678
  this._screenVideoProducerPromise = (() => __awaiter(this, void 0, void 0, function* () {
5678
- var _a, _b;
5679
5679
  try {
5680
5680
  if (!this._screenVideoTrack || !this._sendTransport || this._screenVideoProducer) {
5681
5681
  this._screenVideoProducerPromise = null;
@@ -5701,9 +5701,6 @@ class VegaRtcManager {
5701
5701
  });
5702
5702
  if (this._screenVideoTrack !== this._screenVideoProducer.track)
5703
5703
  yield this._replaceScreenVideoTrack();
5704
- if (this._features.lowBandwidth) {
5705
- (_a = this._webcamProducer) === null || _a === void 0 ? void 0 : _a.setMaxSpatialLayer(0);
5706
- }
5707
5704
  }
5708
5705
  catch (error) {
5709
5706
  logger$3.error("screenVideoProducer failed:%o", error);
@@ -5713,9 +5710,6 @@ class VegaRtcManager {
5713
5710
  if (!this._screenVideoTrack) {
5714
5711
  yield this._stopProducer(this._screenVideoProducer);
5715
5712
  this._screenVideoProducer = null;
5716
- if (this._features.lowBandwidth) {
5717
- (_b = this._webcamProducer) === null || _b === void 0 ? void 0 : _b.setMaxSpatialLayer(Number.MAX_VALUE);
5718
- }
5719
5713
  }
5720
5714
  }
5721
5715
  }))();
@@ -5881,7 +5875,6 @@ class VegaRtcManager {
5881
5875
  }
5882
5876
  }
5883
5877
  removeStream(streamId, _stream, requestedByClientId) {
5884
- var _a;
5885
5878
  logger$3.info("removeStream() [streamId:%s, requestedByClientId:%s]", streamId, requestedByClientId);
5886
5879
  this._emitToSignal(PROTOCOL_REQUESTS.STOP_SCREENSHARE, {
5887
5880
  streamId: OUTBOUND_SCREEN_OUTBOUND_STREAM_ID,
@@ -5893,9 +5886,6 @@ class VegaRtcManager {
5893
5886
  this._stopProducer(this._screenAudioProducer);
5894
5887
  this._screenAudioProducer = null;
5895
5888
  this._screenAudioTrack = null;
5896
- if (this._features.lowBandwidth) {
5897
- (_a = this._webcamProducer) === null || _a === void 0 ? void 0 : _a.setMaxSpatialLayer(Number.MAX_VALUE);
5898
- }
5899
5889
  }
5900
5890
  _onMicAnalyserScoreUpdated(data) {
5901
5891
  var _a, _b;
@@ -7335,9 +7325,9 @@ class BandwidthTester extends EventEmitter {
7335
7325
  try {
7336
7326
  const { routerRtpCapabilities } = yield this._vegaConnection.request("getCapabilities");
7337
7327
  if (!this._routerRtpCapabilities) {
7338
- modifyMediaCapabilities(routerRtpCapabilities, this._features);
7339
- this._routerRtpCapabilities = routerRtpCapabilities;
7340
- yield ((_a = this._mediasoupDevice) === null || _a === void 0 ? void 0 : _a.load({ routerRtpCapabilities }));
7328
+ const modifiedCapabilities = modifyMediaCapabilities(routerRtpCapabilities, Object.assign(Object.assign({}, this._features), { vp9On: this._features.sfuVp9On }));
7329
+ this._routerRtpCapabilities = modifiedCapabilities;
7330
+ yield ((_a = this._mediasoupDevice) === null || _a === void 0 ? void 0 : _a.load({ routerRtpCapabilities: modifiedCapabilities }));
7341
7331
  }
7342
7332
  this._vegaConnection.message("setCapabilities", {
7343
7333
  rtpCapabilities: (_b = this._mediasoupDevice) === null || _b === void 0 ? void 0 : _b.rtpCapabilities,
@@ -7998,5 +7988,5 @@ var RtcEventNames;
7998
7988
  RtcEventNames["stream_added"] = "stream_added";
7999
7989
  })(RtcEventNames || (RtcEventNames = {}));
8000
7990
 
8001
- export { BandwidthTester, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, RtcStream, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDevice, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getOptimalBitrate, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, turnServerOverride, variance };
7991
+ export { ADDITIONAL_SCREEN_SHARE_SETTINGS, ADDITIONAL_SCREEN_SHARE_SETTINGS_VP9, AUDIO_SETTINGS, BandwidthTester, EVENTS, KNOCK_MESSAGES, KalmanFilter, Logger, MAXIMUM_TURN_BANDWIDTH, MAXIMUM_TURN_BANDWIDTH_UNLIMITED, MEDIA_JITTER_BUFFER_TARGET, NoDevicesError, P2pRtcManager, PROTOCOL_ERRORS, PROTOCOL_EVENTS, PROTOCOL_REQUESTS, PROTOCOL_RESPONSES, RELAY_MESSAGES, ReconnectManager, RtcEventNames, RtcManagerDispatcher, RtcStream, SCREEN_SHARE_SETTINGS, SCREEN_SHARE_SETTINGS_VP9, SCREEN_SHARE_SIMULCAST_SETTINGS, STREAM_TYPES, ServerSocket, Session, SfuV2Parser, TYPES, VIDEO_SETTINGS_HD, VIDEO_SETTINGS_SD, VIDEO_SETTINGS_VP9, VIDEO_SETTINGS_VP9_KEY, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH, VIDEO_SETTINGS_VP9_LOW_BANDWIDTH_KEY, VegaConnection, VegaMediaQualityMonitor, VegaRtcManager, addAbsCaptureTimeExtMap, addExtMap, assert, buildDeviceList, calculateStd, captureAudioSsrcMetrics, captureCandidatePairInfoMetrics, captureCommonSsrcMetrics, captureSsrcInfo, captureVideoSsrcMetrics, changeMediaDirection, cleanSdp, compareLocalDevices, createACFCalculator, createMicAnalyser, createWorker, deprioritizeH264, detectMicrophoneNotWorking, enumerate, external_stun_servers, filterMidExtension, filterMsidSemantic, fromLocation, generateByteString, getConstraints, getCurrentPeerConnections, getDeviceData, getDisplayMedia, getIssuesAndMetrics, getMediaConstraints, getMediaSettings, getMediasoupDevice, getNumFailedStatsReports, getNumFailedTrackSsrcLookups, getNumMissingTrackSsrcLookups, getPeerConnectionIndex, getStats, getStream, getUpdatedDevices, getUpdatedStats, getUserMedia, hasGetDisplayMedia, ipRegex, isMobile, isRelayed, maybeRejectNoH264, maybeTurnOnly, modifyMediaCapabilities, removePeerConnection, replaceSSRCs, replaceTracksInStream, rtcManagerEvents, rtcStats, setClientProvider, setCodecPreferenceSDP, setPeerConnectionsForTests, setVideoBandwidthUsingSetParameters, sortCodecs, standardDeviation, startPerformanceMonitor, stopStreamTracks, subscribeIssues, subscribeStats, turnServerOverride, variance };
8002
7992
  //# sourceMappingURL=legacy-esm.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whereby.com/media",
3
3
  "description": "Media library for Whereby",
4
- "version": "1.27.0",
4
+ "version": "1.29.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {