@webex/plugin-meetings 3.0.0-beta.122 → 3.0.0-beta.124

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.
@@ -1731,6 +1731,13 @@ export default class Meeting extends StatelessWebexPlugin {
1731
1731
  * @returns {void}
1732
1732
  */
1733
1733
  private checkMediaConnection;
1734
+ /**
1735
+ * Method to enable or disable the 'Music mode' effect on audio track
1736
+ *
1737
+ * @param {boolean} shouldEnableMusicMode
1738
+ * @returns {Promise}
1739
+ */
1740
+ enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1734
1741
  /**
1735
1742
  * Publishes specified local tracks in the meeting
1736
1743
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.122",
3
+ "version": "3.0.0-beta.124",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -32,12 +32,12 @@
32
32
  "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
33
33
  },
34
34
  "devDependencies": {
35
- "@webex/plugin-meetings": "3.0.0-beta.122",
36
- "@webex/test-helper-chai": "3.0.0-beta.122",
37
- "@webex/test-helper-mocha": "3.0.0-beta.122",
38
- "@webex/test-helper-mock-webex": "3.0.0-beta.122",
39
- "@webex/test-helper-retry": "3.0.0-beta.122",
40
- "@webex/test-helper-test-users": "3.0.0-beta.122",
35
+ "@webex/plugin-meetings": "3.0.0-beta.124",
36
+ "@webex/test-helper-chai": "3.0.0-beta.124",
37
+ "@webex/test-helper-mocha": "3.0.0-beta.124",
38
+ "@webex/test-helper-mock-webex": "3.0.0-beta.124",
39
+ "@webex/test-helper-retry": "3.0.0-beta.124",
40
+ "@webex/test-helper-test-users": "3.0.0-beta.124",
41
41
  "chai": "^4.3.4",
42
42
  "chai-as-promised": "^7.1.1",
43
43
  "jsdom-global": "3.0.2",
@@ -46,19 +46,19 @@
46
46
  "typescript": "^4.7.4"
47
47
  },
48
48
  "dependencies": {
49
- "@webex/common": "3.0.0-beta.122",
49
+ "@webex/common": "3.0.0-beta.124",
50
50
  "@webex/internal-media-core": "1.38.1",
51
- "@webex/internal-plugin-conversation": "3.0.0-beta.122",
52
- "@webex/internal-plugin-device": "3.0.0-beta.122",
53
- "@webex/internal-plugin-llm": "3.0.0-beta.122",
54
- "@webex/internal-plugin-mercury": "3.0.0-beta.122",
55
- "@webex/internal-plugin-metrics": "3.0.0-beta.122",
56
- "@webex/internal-plugin-support": "3.0.0-beta.122",
57
- "@webex/internal-plugin-user": "3.0.0-beta.122",
58
- "@webex/media-helpers": "3.0.0-beta.122",
59
- "@webex/plugin-people": "3.0.0-beta.122",
60
- "@webex/plugin-rooms": "3.0.0-beta.122",
61
- "@webex/webex-core": "3.0.0-beta.122",
51
+ "@webex/internal-plugin-conversation": "3.0.0-beta.124",
52
+ "@webex/internal-plugin-device": "3.0.0-beta.124",
53
+ "@webex/internal-plugin-llm": "3.0.0-beta.124",
54
+ "@webex/internal-plugin-mercury": "3.0.0-beta.124",
55
+ "@webex/internal-plugin-metrics": "3.0.0-beta.124",
56
+ "@webex/internal-plugin-support": "3.0.0-beta.124",
57
+ "@webex/internal-plugin-user": "3.0.0-beta.124",
58
+ "@webex/media-helpers": "3.0.0-beta.124",
59
+ "@webex/plugin-people": "3.0.0-beta.124",
60
+ "@webex/plugin-rooms": "3.0.0-beta.124",
61
+ "@webex/webex-core": "3.0.0-beta.124",
62
62
  "ampersand-collection": "^2.0.2",
63
63
  "bowser": "^2.11.0",
64
64
  "btoa": "^1.2.1",
@@ -7565,6 +7565,32 @@ export default class Meeting extends StatelessWebexPlugin {
7565
7565
  throw new Error('Webrtc media connection is missing, call addMedia() first');
7566
7566
  }
7567
7567
 
7568
+ /**
7569
+ * Method to enable or disable the 'Music mode' effect on audio track
7570
+ *
7571
+ * @param {boolean} shouldEnableMusicMode
7572
+ * @returns {Promise}
7573
+ */
7574
+ async enableMusicMode(shouldEnableMusicMode: boolean) {
7575
+ this.checkMediaConnection();
7576
+
7577
+ if (!this.isMultistream) {
7578
+ throw new Error('enableMusicMode() only supported with multistream');
7579
+ }
7580
+
7581
+ if (shouldEnableMusicMode) {
7582
+ await this.mediaProperties.webrtcMediaConnection.setCodecParameters(MediaType.AudioMain, {
7583
+ maxaveragebitrate: '64000',
7584
+ maxplaybackrate: '48000',
7585
+ });
7586
+ } else {
7587
+ await this.mediaProperties.webrtcMediaConnection.deleteCodecParameters(MediaType.AudioMain, [
7588
+ 'maxaveragebitrate',
7589
+ 'maxplaybackrate',
7590
+ ]);
7591
+ }
7592
+ }
7593
+
7568
7594
  /**
7569
7595
  * Publishes specified local tracks in the meeting
7570
7596
  *
@@ -4126,6 +4126,43 @@ describe('plugin-meetings', () => {
4126
4126
  });
4127
4127
  });
4128
4128
 
4129
+ describe('#enableMusicMode', () => {
4130
+ beforeEach(() => {
4131
+ meeting.isMultistream = true;
4132
+ meeting.mediaProperties.webrtcMediaConnection = {
4133
+ setCodecParameters: sinon.stub().resolves({}),
4134
+ deleteCodecParameters: sinon.stub().resolves({}),
4135
+ };
4136
+ });
4137
+ [
4138
+ {shouldEnableMusicMode: true},
4139
+ {shouldEnableMusicMode: false},
4140
+ ].forEach(({shouldEnableMusicMode}) => {
4141
+ it(`fails if there is no media connection for shouldEnableMusicMode: ${shouldEnableMusicMode}`, async () => {
4142
+ meeting.mediaProperties.webrtcMediaConnection = undefined;
4143
+ await assert.isRejected(meeting.enableMusicMode(shouldEnableMusicMode));
4144
+ });
4145
+ });
4146
+
4147
+ it('should set the codec parameters when shouldEnableMusicMode is true', async () => {
4148
+ await meeting.enableMusicMode(true);
4149
+ assert.calledOnceWithExactly(meeting.mediaProperties.webrtcMediaConnection.setCodecParameters, MediaType.AudioMain, {
4150
+ maxaveragebitrate: '64000',
4151
+ maxplaybackrate: '48000',
4152
+ });
4153
+ assert.notCalled(meeting.mediaProperties.webrtcMediaConnection.deleteCodecParameters);
4154
+ });
4155
+
4156
+ it('should set the codec parameters when shouldEnableMusicMode is false', async () => {
4157
+ await meeting.enableMusicMode(false);
4158
+ assert.calledOnceWithExactly(meeting.mediaProperties.webrtcMediaConnection.deleteCodecParameters, MediaType.AudioMain, [
4159
+ 'maxaveragebitrate',
4160
+ 'maxplaybackrate',
4161
+ ]);
4162
+ assert.notCalled(meeting.mediaProperties.webrtcMediaConnection.setCodecParameters);
4163
+ });
4164
+ });
4165
+
4129
4166
  describe('Public Event Triggers', () => {
4130
4167
  let sandbox;
4131
4168
  const {ENDED} = CONSTANTS;