@webex/internal-media-core 1.32.0 → 1.32.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.
package/dist/esm/index.js CHANGED
@@ -2394,6 +2394,198 @@ var off = (eventName, listener) => {
2394
2394
  eventEmitter.off(eventName, listener);
2395
2395
  };
2396
2396
 
2397
+ var bnrProcessor = {
2398
+ isModuleAdded: false,
2399
+ workletProcessorUrl: 'https://models.intelligence.webex.com/bnr/1.1.0/noise-reduction-effect.worklet.js'
2400
+ };
2401
+ function isValidTrack(track) {
2402
+ var supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
2403
+ var supportedSampleRates = [16000, 32000, 48000];
2404
+ if (supportedConstraints.sampleRate) {
2405
+ var settings = getTrackSettings(track);
2406
+ var {
2407
+ sampleRate
2408
+ } = settings;
2409
+ if (sampleRate && !supportedSampleRates.includes(sampleRate)) {
2410
+ var error = new Error("Sample rate of ".concat(sampleRate, " is not supported."));
2411
+ logger$5.error({
2412
+ ID: track.id,
2413
+ mediaType: MEDIA_STREAM_TRACK,
2414
+ action: 'isValidTrack()',
2415
+ description: error.message,
2416
+ error
2417
+ });
2418
+ throw error;
2419
+ } else {
2420
+ return true;
2421
+ }
2422
+ } else {
2423
+ var _error = new Error('Not supported');
2424
+ logger$5.info({
2425
+ ID: track.id,
2426
+ mediaType: MEDIA_STREAM_TRACK,
2427
+ action: 'isValidTrack()',
2428
+ description: _error.message,
2429
+ error: _error
2430
+ });
2431
+ return true;
2432
+ }
2433
+ }
2434
+ function loadProcessor() {
2435
+ return _loadProcessor.apply(this, arguments);
2436
+ }
2437
+ function _loadProcessor() {
2438
+ _loadProcessor = _asyncToGenerator(function* () {
2439
+ logger$5.info({
2440
+ mediaType: MEDIA_STREAM_TRACK,
2441
+ action: 'loadProcessor()',
2442
+ description: 'Creating and loading BNR module'
2443
+ });
2444
+ var audioContext = new AudioContext();
2445
+ bnrProcessor.isModuleAdded = true;
2446
+ bnrProcessor.audioContext = audioContext;
2447
+ yield audioContext.audioWorklet.addModule(bnrProcessor.workletProcessorUrl);
2448
+ bnrProcessor.workletNode = new AudioWorkletNode(audioContext, 'noise-reduction-worklet-processor');
2449
+ return audioContext;
2450
+ });
2451
+ return _loadProcessor.apply(this, arguments);
2452
+ }
2453
+ function enableBNR(_x) {
2454
+ return _enableBNR.apply(this, arguments);
2455
+ }
2456
+ function _enableBNR() {
2457
+ _enableBNR = _asyncToGenerator(function* (track) {
2458
+ logger$5.debug({
2459
+ ID: track.id,
2460
+ mediaType: MEDIA_STREAM_TRACK,
2461
+ action: 'enableBNR()',
2462
+ description: 'Called'
2463
+ });
2464
+ try {
2465
+ isValidTrack(track);
2466
+ var streamFromTrack = new MediaStream();
2467
+ streamFromTrack.addTrack(track);
2468
+ var workletNode;
2469
+ logger$5.info({
2470
+ ID: track.id,
2471
+ mediaType: MEDIA_STREAM_TRACK,
2472
+ action: 'enableBNR()',
2473
+ description: 'Checking if BNR module is present already'
2474
+ });
2475
+ var oldDestinationTrack = bnrProcessor.destinationTrack;
2476
+ if (oldDestinationTrack && track.id === oldDestinationTrack.id) {
2477
+ var oldTrackErrorMsg = 'BNR is enabled on the track already';
2478
+ var oldTrackError = new Error(oldTrackErrorMsg);
2479
+ logger$5.error({
2480
+ ID: track.id,
2481
+ mediaType: MEDIA_STREAM_TRACK,
2482
+ action: 'enableBNR()',
2483
+ description: oldTrackErrorMsg,
2484
+ error: oldTrackError
2485
+ });
2486
+ throw oldTrackError;
2487
+ }
2488
+ if (bnrProcessor.isModuleAdded) {
2489
+ logger$5.debug({
2490
+ ID: track.id,
2491
+ mediaType: MEDIA_STREAM_TRACK,
2492
+ action: 'enableBNR()',
2493
+ description: 'Disposing existing BNR module'
2494
+ });
2495
+ workletNode = bnrProcessor.workletNode;
2496
+ workletNode.port.postMessage('DISPOSE');
2497
+ }
2498
+ logger$5.info({
2499
+ ID: track.id,
2500
+ mediaType: MEDIA_STREAM_TRACK,
2501
+ action: 'enableBNR()',
2502
+ description: 'Creating worklet node, connecting source and destination streams'
2503
+ });
2504
+ var audioContext = yield loadProcessor();
2505
+ workletNode = bnrProcessor.workletNode;
2506
+ workletNode.port.postMessage('ENABLE');
2507
+ bnrProcessor.sourceNode = audioContext.createMediaStreamSource(streamFromTrack);
2508
+ bnrProcessor.sourceNode.connect(workletNode);
2509
+ bnrProcessor.destinationStream = audioContext.createMediaStreamDestination();
2510
+ workletNode.connect(bnrProcessor.destinationStream);
2511
+ logger$5.info({
2512
+ ID: track.id,
2513
+ mediaType: MEDIA_STREAM_TRACK,
2514
+ action: 'enableBNR()',
2515
+ description: 'Obtaining noise reduced track and returning'
2516
+ });
2517
+ var destinationStream = bnrProcessor.destinationStream.stream;
2518
+ var [destinationTrack] = destinationStream.getAudioTracks();
2519
+ bnrProcessor.destinationTrack = destinationTrack;
2520
+ return destinationTrack;
2521
+ } catch (error) {
2522
+ logger$5.error({
2523
+ ID: track.id,
2524
+ mediaType: MEDIA_STREAM_TRACK,
2525
+ action: 'enableBNR()',
2526
+ description: 'Error in enableBNR',
2527
+ error: error
2528
+ });
2529
+ throw error;
2530
+ }
2531
+ });
2532
+ return _enableBNR.apply(this, arguments);
2533
+ }
2534
+ function disableBNR() {
2535
+ logger$5.debug({
2536
+ mediaType: MEDIA_STREAM_TRACK,
2537
+ action: 'disableBNR()',
2538
+ description: 'Called'
2539
+ });
2540
+ try {
2541
+ var workletNode;
2542
+ logger$5.info({
2543
+ mediaType: MEDIA_STREAM_TRACK,
2544
+ action: 'disableBNR()',
2545
+ description: 'Checking if BNR is enabled before disabling'
2546
+ });
2547
+ if (!bnrProcessor.isModuleAdded) {
2548
+ var error = new Error('Can not disable as BNR is not enabled');
2549
+ logger$5.error({
2550
+ mediaType: MEDIA_STREAM_TRACK,
2551
+ action: 'disableBNR()',
2552
+ description: 'Can not disable as BNR is not enabled'
2553
+ });
2554
+ throw error;
2555
+ } else {
2556
+ logger$5.info({
2557
+ mediaType: MEDIA_STREAM_TRACK,
2558
+ action: 'disableBNR()',
2559
+ description: 'Using existing AudioWorkletNode for disabling BNR'
2560
+ });
2561
+ workletNode = bnrProcessor.workletNode;
2562
+ }
2563
+ workletNode.port.postMessage('DISPOSE');
2564
+ logger$5.info({
2565
+ mediaType: MEDIA_STREAM_TRACK,
2566
+ action: 'disableBNR()',
2567
+ description: 'Obtaining raw media stream track and removing bnr context'
2568
+ });
2569
+ var bnrDisabledStream = bnrProcessor.sourceNode.mediaStream;
2570
+ var [track] = bnrDisabledStream === null || bnrDisabledStream === void 0 ? void 0 : bnrDisabledStream.getAudioTracks();
2571
+ bnrProcessor.isModuleAdded = false;
2572
+ delete bnrProcessor.workletNode;
2573
+ delete bnrProcessor.audioContext;
2574
+ delete bnrProcessor.sourceNode;
2575
+ delete bnrProcessor.destinationStream;
2576
+ delete bnrProcessor.destinationTrack;
2577
+ return track;
2578
+ } catch (error) {
2579
+ logger$5.error({
2580
+ mediaType: MEDIA_STREAM_TRACK,
2581
+ action: 'disableBNR()',
2582
+ description: 'Error in disableBNR',
2583
+ error: error
2584
+ });
2585
+ throw error;
2586
+ }
2587
+ }
2588
+
2397
2589
  var ErrorCode;
2398
2590
  (function (ErrorCode) {
2399
2591
  ErrorCode[ErrorCode["MediaConnectionError"] = 30001] = "MediaConnectionError";
@@ -14499,7 +14691,7 @@ var localTrackTypes = [{
14499
14691
  type: 'screenShareVideo',
14500
14692
  kind: 'video'
14501
14693
  }];
14502
- class MediaConnection$1 extends EventEmitter$3 {
14694
+ class MediaConnection extends EventEmitter$3 {
14503
14695
  constructor(mediaConnectionConfig, options, debugId) {
14504
14696
  super();
14505
14697
  _defineProperty(this, "id", void 0);
@@ -22904,7 +23096,7 @@ class RoapMediaConnection extends EventEmitter$3 {
22904
23096
  getLogger().error("".concat(this.id, ":").concat(action, " ").concat(description, " ").concat(getErrorDescription(error)));
22905
23097
  }
22906
23098
  createMediaConnection(mediaConnectionConfig, options, debugId) {
22907
- var mediaConnection = new MediaConnection$1(mediaConnectionConfig, options, debugId);
23099
+ var mediaConnection = new MediaConnection(mediaConnectionConfig, options, debugId);
22908
23100
  mediaConnection.on(Event$1.REMOTE_TRACK_ADDED, this.onRemoteTrack.bind(this));
22909
23101
  mediaConnection.on(Event$1.CONNECTION_STATE_CHANGED, this.onConnectionStateChanged.bind(this));
22910
23102
  mediaConnection.on(Event$1.DTMF_TONE_CHANGED, this.onDtmfToneChanged.bind(this));
@@ -23563,221 +23755,6 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
23563
23755
 
23564
23756
  var Errors = Error$1;
23565
23757
 
23566
- var MediaConnections = /*#__PURE__*/Object.freeze({
23567
- __proto__: null,
23568
- Errors: Errors,
23569
- get Event () { return Event$1; },
23570
- get ConnectionState () { return ConnectionState; },
23571
- get ErrorType () { return ErrorType; },
23572
- get RemoteTrackType () { return RemoteTrackType; },
23573
- RoapMediaConnection: RoapMediaConnection,
23574
- MediaRequest: MediaRequest,
23575
- ReceiveSlot: ReceiveSlot,
23576
- get ReceiveSlotEvents () { return ReceiveSlotEvents; },
23577
- ActiveSpeakerInfo: ActiveSpeakerInfo,
23578
- CodecInfo: CodecInfo,
23579
- H264Codec: H264Codec,
23580
- get MediaType () { return MediaType; },
23581
- get Policy () { return Policy; },
23582
- ReceiverSelectedInfo: ReceiverSelectedInfo,
23583
- MultistreamRoapMediaConnection: MultistreamRoapMediaConnection,
23584
- setLogger: setLogger,
23585
- getLogger: getLogger,
23586
- getErrorDescription: getErrorDescription
23587
- });
23588
-
23589
- var bnrProcessor = {
23590
- isModuleAdded: false,
23591
- workletProcessorUrl: 'https://models.intelligence.webex.com/bnr/1.1.0/noise-reduction-effect.worklet.js'
23592
- };
23593
- function isValidTrack(track) {
23594
- var supportedConstraints = navigator.mediaDevices.getSupportedConstraints();
23595
- var supportedSampleRates = [16000, 32000, 48000];
23596
- if (supportedConstraints.sampleRate) {
23597
- var settings = getTrackSettings(track);
23598
- var {
23599
- sampleRate
23600
- } = settings;
23601
- if (sampleRate && !supportedSampleRates.includes(sampleRate)) {
23602
- var error = new Error("Sample rate of ".concat(sampleRate, " is not supported."));
23603
- logger$5.error({
23604
- ID: track.id,
23605
- mediaType: MEDIA_STREAM_TRACK,
23606
- action: 'isValidTrack()',
23607
- description: error.message,
23608
- error
23609
- });
23610
- throw error;
23611
- } else {
23612
- return true;
23613
- }
23614
- } else {
23615
- var _error = new Error('Not supported');
23616
- logger$5.info({
23617
- ID: track.id,
23618
- mediaType: MEDIA_STREAM_TRACK,
23619
- action: 'isValidTrack()',
23620
- description: _error.message,
23621
- error: _error
23622
- });
23623
- return true;
23624
- }
23625
- }
23626
- function loadProcessor() {
23627
- return _loadProcessor.apply(this, arguments);
23628
- }
23629
- function _loadProcessor() {
23630
- _loadProcessor = _asyncToGenerator(function* () {
23631
- logger$5.info({
23632
- mediaType: MEDIA_STREAM_TRACK,
23633
- action: 'loadProcessor()',
23634
- description: 'Creating and loading BNR module'
23635
- });
23636
- var audioContext = new AudioContext();
23637
- bnrProcessor.isModuleAdded = true;
23638
- bnrProcessor.audioContext = audioContext;
23639
- yield audioContext.audioWorklet.addModule(bnrProcessor.workletProcessorUrl);
23640
- bnrProcessor.workletNode = new AudioWorkletNode(audioContext, 'noise-reduction-worklet-processor');
23641
- return audioContext;
23642
- });
23643
- return _loadProcessor.apply(this, arguments);
23644
- }
23645
- function enableBNR(_x) {
23646
- return _enableBNR.apply(this, arguments);
23647
- }
23648
- function _enableBNR() {
23649
- _enableBNR = _asyncToGenerator(function* (track) {
23650
- logger$5.debug({
23651
- ID: track.id,
23652
- mediaType: MEDIA_STREAM_TRACK,
23653
- action: 'enableBNR()',
23654
- description: 'Called'
23655
- });
23656
- try {
23657
- isValidTrack(track);
23658
- var streamFromTrack = new MediaStream();
23659
- streamFromTrack.addTrack(track);
23660
- var workletNode;
23661
- logger$5.info({
23662
- ID: track.id,
23663
- mediaType: MEDIA_STREAM_TRACK,
23664
- action: 'enableBNR()',
23665
- description: 'Checking if BNR module is present already'
23666
- });
23667
- var oldDestinationTrack = bnrProcessor.destinationTrack;
23668
- if (oldDestinationTrack && track.id === oldDestinationTrack.id) {
23669
- var oldTrackErrorMsg = 'BNR is enabled on the track already';
23670
- var oldTrackError = new Error(oldTrackErrorMsg);
23671
- logger$5.error({
23672
- ID: track.id,
23673
- mediaType: MEDIA_STREAM_TRACK,
23674
- action: 'enableBNR()',
23675
- description: oldTrackErrorMsg,
23676
- error: oldTrackError
23677
- });
23678
- throw oldTrackError;
23679
- }
23680
- if (bnrProcessor.isModuleAdded) {
23681
- logger$5.debug({
23682
- ID: track.id,
23683
- mediaType: MEDIA_STREAM_TRACK,
23684
- action: 'enableBNR()',
23685
- description: 'Disposing existing BNR module'
23686
- });
23687
- workletNode = bnrProcessor.workletNode;
23688
- workletNode.port.postMessage('DISPOSE');
23689
- }
23690
- logger$5.info({
23691
- ID: track.id,
23692
- mediaType: MEDIA_STREAM_TRACK,
23693
- action: 'enableBNR()',
23694
- description: 'Creating worklet node, connecting source and destination streams'
23695
- });
23696
- var audioContext = yield loadProcessor();
23697
- workletNode = bnrProcessor.workletNode;
23698
- workletNode.port.postMessage('ENABLE');
23699
- bnrProcessor.sourceNode = audioContext.createMediaStreamSource(streamFromTrack);
23700
- bnrProcessor.sourceNode.connect(workletNode);
23701
- bnrProcessor.destinationStream = audioContext.createMediaStreamDestination();
23702
- workletNode.connect(bnrProcessor.destinationStream);
23703
- logger$5.info({
23704
- ID: track.id,
23705
- mediaType: MEDIA_STREAM_TRACK,
23706
- action: 'enableBNR()',
23707
- description: 'Obtaining noise reduced track and returning'
23708
- });
23709
- var destinationStream = bnrProcessor.destinationStream.stream;
23710
- var [destinationTrack] = destinationStream.getAudioTracks();
23711
- bnrProcessor.destinationTrack = destinationTrack;
23712
- return destinationTrack;
23713
- } catch (error) {
23714
- logger$5.error({
23715
- ID: track.id,
23716
- mediaType: MEDIA_STREAM_TRACK,
23717
- action: 'enableBNR()',
23718
- description: 'Error in enableBNR',
23719
- error: error
23720
- });
23721
- throw error;
23722
- }
23723
- });
23724
- return _enableBNR.apply(this, arguments);
23725
- }
23726
- function disableBNR() {
23727
- logger$5.debug({
23728
- mediaType: MEDIA_STREAM_TRACK,
23729
- action: 'disableBNR()',
23730
- description: 'Called'
23731
- });
23732
- try {
23733
- var workletNode;
23734
- logger$5.info({
23735
- mediaType: MEDIA_STREAM_TRACK,
23736
- action: 'disableBNR()',
23737
- description: 'Checking if BNR is enabled before disabling'
23738
- });
23739
- if (!bnrProcessor.isModuleAdded) {
23740
- var error = new Error('Can not disable as BNR is not enabled');
23741
- logger$5.error({
23742
- mediaType: MEDIA_STREAM_TRACK,
23743
- action: 'disableBNR()',
23744
- description: 'Can not disable as BNR is not enabled'
23745
- });
23746
- throw error;
23747
- } else {
23748
- logger$5.info({
23749
- mediaType: MEDIA_STREAM_TRACK,
23750
- action: 'disableBNR()',
23751
- description: 'Using existing AudioWorkletNode for disabling BNR'
23752
- });
23753
- workletNode = bnrProcessor.workletNode;
23754
- }
23755
- workletNode.port.postMessage('DISPOSE');
23756
- logger$5.info({
23757
- mediaType: MEDIA_STREAM_TRACK,
23758
- action: 'disableBNR()',
23759
- description: 'Obtaining raw media stream track and removing bnr context'
23760
- });
23761
- var bnrDisabledStream = bnrProcessor.sourceNode.mediaStream;
23762
- var [track] = bnrDisabledStream === null || bnrDisabledStream === void 0 ? void 0 : bnrDisabledStream.getAudioTracks();
23763
- bnrProcessor.isModuleAdded = false;
23764
- delete bnrProcessor.workletNode;
23765
- delete bnrProcessor.audioContext;
23766
- delete bnrProcessor.sourceNode;
23767
- delete bnrProcessor.destinationStream;
23768
- delete bnrProcessor.destinationTrack;
23769
- return track;
23770
- } catch (error) {
23771
- logger$5.error({
23772
- mediaType: MEDIA_STREAM_TRACK,
23773
- action: 'disableBNR()',
23774
- description: 'Error in disableBNR',
23775
- error: error
23776
- });
23777
- throw error;
23778
- }
23779
- }
23780
-
23781
23758
  function isBrowserSupported() {
23782
23759
  var isSupported = false;
23783
23760
  logger$5.info({
@@ -23807,6 +23784,5 @@ var Media = {
23807
23784
  },
23808
23785
  isBrowserSupported
23809
23786
  };
23810
- var MediaConnection = MediaConnections;
23811
23787
 
23812
- export { Media, MediaConnection, isBrowserSupported };
23788
+ export { ActiveSpeakerInfo, CodecInfo, ConnectionState, ErrorType, Errors, Event$1 as Event, H264Codec, Media, MediaRequest, MediaType, MultistreamRoapMediaConnection, Policy, ReceiveSlot, ReceiveSlotEvents, ReceiverSelectedInfo, RemoteTrackType, RoapMediaConnection, getErrorDescription, getLogger, isBrowserSupported, setLogger };
@@ -1,6 +1,6 @@
1
1
  import * as MediaCore from './Media';
2
- import * as MediaConnections from './MediaConnection';
3
2
  import * as BNR from './Media/Effects/BNR';
3
+ export * from './MediaConnection';
4
4
  export declare function isBrowserSupported(): boolean;
5
5
  export declare const Media: {
6
6
  createAudioTrack: typeof MediaCore.createAudioTrack;
@@ -19,5 +19,4 @@ export declare const Media: {
19
19
  };
20
20
  isBrowserSupported: typeof isBrowserSupported;
21
21
  };
22
- export declare const MediaConnection: typeof MediaConnections;
23
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,gBAAgB,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAK3C,wBAAgB,kBAAkB,IAAI,OAAO,CAmB5C;AAGD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;CAgBjB,CAAC;AAGF,eAAO,MAAM,eAAe,yBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,SAAS,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAE3C,cAAc,mBAAmB,CAAC;AAKlC,wBAAgB,kBAAkB,IAAI,OAAO,CAmB5C;AAGD,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;CAgBjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/internal-media-core",
3
- "version": "1.32.0",
3
+ "version": "1.32.1",
4
4
  "files": [
5
5
  "dist/cjs",
6
6
  "dist/esm",