@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.3

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.
@@ -79,12 +79,13 @@ var MediaRequestManager = /*#__PURE__*/function () {
79
79
  key: "sendRequests",
80
80
  value: function sendRequests() {
81
81
  var wcmeMediaRequests = []; // todo: check how many streams we're asking for and what resolution and introduce some limits (spark-377701)
82
- // map all the client media requests to wcme media requests
82
+
83
+ var maxPayloadBitsPerSecond = 10 * 1000 * 1000; // map all the client media requests to wcme media requests
83
84
 
84
85
  (0, _values.default)(this.clientRequests).forEach(function (mr) {
85
86
  wcmeMediaRequests.push(new _internalMediaCore.MediaConnection.MediaRequest(mr.policyInfo.policy === 'active-speaker' ? _internalMediaCore.MediaConnection.Policy.ActiveSpeaker : _internalMediaCore.MediaConnection.Policy.ReceiverSelected, mr.policyInfo.policy === 'active-speaker' ? new _internalMediaCore.MediaConnection.ActiveSpeakerInfo(mr.policyInfo.priority, mr.policyInfo.crossPriorityDuplication, mr.policyInfo.crossPolicyDuplication, mr.policyInfo.preferLiveVideo) : new _internalMediaCore.MediaConnection.ReceiverSelectedInfo(mr.policyInfo.csi), mr.receiveSlots.map(function (receiveSlot) {
86
87
  return receiveSlot.wcmeReceiveSlot;
87
- }), mr.codecInfo && [new _internalMediaCore.MediaConnection.CodecInfo(0x80, new _internalMediaCore.MediaConnection.H264Codec(mr.codecInfo.maxFs || CODEC_DEFAULTS.h264.maxFs, mr.codecInfo.maxFps || CODEC_DEFAULTS.h264.maxFps, mr.codecInfo.maxMbps || CODEC_DEFAULTS.h264.maxMbps, mr.codecInfo.maxWidth, mr.codecInfo.maxHeight))]));
88
+ }), maxPayloadBitsPerSecond, mr.codecInfo && [new _internalMediaCore.MediaConnection.CodecInfo(0x80, new _internalMediaCore.MediaConnection.H264Codec(mr.codecInfo.maxFs || CODEC_DEFAULTS.h264.maxFs, mr.codecInfo.maxFps || CODEC_DEFAULTS.h264.maxFps, mr.codecInfo.maxMbps || CODEC_DEFAULTS.h264.maxMbps, mr.codecInfo.maxWidth, mr.codecInfo.maxHeight))]));
88
89
  });
89
90
  this.sendMediaRequestsCallback(wcmeMediaRequests);
90
91
  this.resetInactiveReceiveSlots();
@@ -1 +1 @@
1
- {"version":3,"names":["CODEC_DEFAULTS","h264","maxFs","maxFps","maxMbps","MediaRequestManager","sendMediaRequestsCallback","counter","clientRequests","slotsActiveInLastMediaRequest","activeSlots","forEach","request","receiveSlots","slot","id","slotId","LoggerProxy","logger","info","resetSourceState","wcmeMediaRequests","mr","push","MC","MediaRequest","policyInfo","policy","Policy","ActiveSpeaker","ReceiverSelected","ActiveSpeakerInfo","priority","crossPriorityDuplication","crossPolicyDuplication","preferLiveVideo","ReceiverSelectedInfo","csi","map","receiveSlot","wcmeReceiveSlot","codecInfo","CodecInfo","H264Codec","maxWidth","maxHeight","resetInactiveReceiveSlots","mediaRequest","commit","newId","requestId","sendRequests"],"sources":["mediaRequestManager.ts"],"sourcesContent":["/* eslint-disable require-jsdoc */\nimport {MediaConnection as MC} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {ReceiveSlot, ReceiveSlotId} from './receiveSlot';\n\nexport interface ActiveSpeakerPolicyInfo {\n policy: 'active-speaker';\n priority: number;\n crossPriorityDuplication: boolean;\n crossPolicyDuplication: boolean;\n preferLiveVideo: boolean;\n}\n\nexport interface ReceiverSelectedPolicyInfo {\n policy: 'receiver-selected';\n csi: number;\n}\n\nexport type PolicyInfo = ActiveSpeakerPolicyInfo | ReceiverSelectedPolicyInfo;\n\nexport interface H264CodecInfo {\n codec: 'h264';\n maxFs?: number;\n maxFps?: number;\n maxMbps?: number;\n maxWidth?: number;\n maxHeight?: number;\n}\n\nexport type CodecInfo = H264CodecInfo; // we'll add AV1 here in the future when it's available\n\nexport interface MediaRequest {\n policyInfo: PolicyInfo;\n receiveSlots: Array<ReceiveSlot>;\n codecInfo?: CodecInfo;\n}\n\nexport type MediaRequestId = string;\n\nconst CODEC_DEFAULTS = {\n h264: {\n maxFs: 8192,\n maxFps: 3000,\n maxMbps: 245760,\n },\n};\n\ntype SendMediaRequestsCallback = (mediaRequests: MC.MediaRequest[]) => void;\n\nexport class MediaRequestManager {\n private sendMediaRequestsCallback: SendMediaRequestsCallback;\n\n private counter;\n\n private clientRequests: {[key: MediaRequestId]: MediaRequest};\n\n private slotsActiveInLastMediaRequest: {[key: ReceiveSlotId]: ReceiveSlot};\n\n constructor(sendMediaRequestsCallback: SendMediaRequestsCallback) {\n this.sendMediaRequestsCallback = sendMediaRequestsCallback;\n this.counter = 0;\n this.clientRequests = {};\n this.slotsActiveInLastMediaRequest = {};\n }\n\n private resetInactiveReceiveSlots() {\n const activeSlots: {[key: ReceiveSlotId]: ReceiveSlot} = {};\n\n // create a map of all currently used slot ids\n Object.values(this.clientRequests).forEach((request) =>\n request.receiveSlots.forEach((slot) => {\n activeSlots[slot.id] = slot;\n })\n );\n\n // when we stop using some receive slots and they are not included in the new media request,\n // we will never get a 'no source' notification for them, so we reset their state,\n // so that the client doesn't try to display their video anymore\n for (const [slotId, slot] of Object.entries(this.slotsActiveInLastMediaRequest)) {\n if (!(slotId in activeSlots)) {\n LoggerProxy.logger.info(\n `multistream:mediaRequestManager --> resetting sourceState to \"no source\" for slot ${slot.id}`\n );\n slot.resetSourceState();\n }\n }\n\n this.slotsActiveInLastMediaRequest = activeSlots;\n }\n\n private sendRequests() {\n const wcmeMediaRequests: MC.MediaRequest[] = [];\n\n // todo: check how many streams we're asking for and what resolution and introduce some limits (spark-377701)\n\n // map all the client media requests to wcme media requests\n Object.values(this.clientRequests).forEach((mr) => {\n wcmeMediaRequests.push(\n new MC.MediaRequest(\n mr.policyInfo.policy === 'active-speaker'\n ? MC.Policy.ActiveSpeaker\n : MC.Policy.ReceiverSelected,\n mr.policyInfo.policy === 'active-speaker'\n ? new MC.ActiveSpeakerInfo(\n mr.policyInfo.priority,\n mr.policyInfo.crossPriorityDuplication,\n mr.policyInfo.crossPolicyDuplication,\n mr.policyInfo.preferLiveVideo\n )\n : new MC.ReceiverSelectedInfo(mr.policyInfo.csi),\n mr.receiveSlots.map((receiveSlot) => receiveSlot.wcmeReceiveSlot),\n mr.codecInfo && [\n new MC.CodecInfo(\n 0x80,\n new MC.H264Codec(\n mr.codecInfo.maxFs || CODEC_DEFAULTS.h264.maxFs,\n mr.codecInfo.maxFps || CODEC_DEFAULTS.h264.maxFps,\n mr.codecInfo.maxMbps || CODEC_DEFAULTS.h264.maxMbps,\n mr.codecInfo.maxWidth,\n mr.codecInfo.maxHeight\n )\n ),\n ]\n )\n );\n });\n\n this.sendMediaRequestsCallback(wcmeMediaRequests);\n\n this.resetInactiveReceiveSlots();\n }\n\n public addRequest(mediaRequest: MediaRequest, commit = true): MediaRequestId {\n // eslint-disable-next-line no-plusplus\n const newId = `${this.counter++}`;\n\n this.clientRequests[newId] = mediaRequest;\n\n if (commit) {\n this.commit();\n }\n\n return newId;\n }\n\n public cancelRequest(requestId: MediaRequestId, commit = true) {\n delete this.clientRequests[requestId];\n\n if (commit) {\n this.commit();\n }\n }\n\n public commit() {\n return this.sendRequests();\n }\n\n public reset() {\n this.clientRequests = {};\n this.slotsActiveInLastMediaRequest = {};\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["CODEC_DEFAULTS","h264","maxFs","maxFps","maxMbps","MediaRequestManager","sendMediaRequestsCallback","counter","clientRequests","slotsActiveInLastMediaRequest","activeSlots","forEach","request","receiveSlots","slot","id","slotId","LoggerProxy","logger","info","resetSourceState","wcmeMediaRequests","maxPayloadBitsPerSecond","mr","push","MC","MediaRequest","policyInfo","policy","Policy","ActiveSpeaker","ReceiverSelected","ActiveSpeakerInfo","priority","crossPriorityDuplication","crossPolicyDuplication","preferLiveVideo","ReceiverSelectedInfo","csi","map","receiveSlot","wcmeReceiveSlot","codecInfo","CodecInfo","H264Codec","maxWidth","maxHeight","resetInactiveReceiveSlots","mediaRequest","commit","newId","requestId","sendRequests"],"sources":["mediaRequestManager.ts"],"sourcesContent":["/* eslint-disable require-jsdoc */\nimport {MediaConnection as MC} from '@webex/internal-media-core';\n\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {ReceiveSlot, ReceiveSlotId} from './receiveSlot';\n\nexport interface ActiveSpeakerPolicyInfo {\n policy: 'active-speaker';\n priority: number;\n crossPriorityDuplication: boolean;\n crossPolicyDuplication: boolean;\n preferLiveVideo: boolean;\n}\n\nexport interface ReceiverSelectedPolicyInfo {\n policy: 'receiver-selected';\n csi: number;\n}\n\nexport type PolicyInfo = ActiveSpeakerPolicyInfo | ReceiverSelectedPolicyInfo;\n\nexport interface H264CodecInfo {\n codec: 'h264';\n maxFs?: number;\n maxFps?: number;\n maxMbps?: number;\n maxWidth?: number;\n maxHeight?: number;\n}\n\nexport type CodecInfo = H264CodecInfo; // we'll add AV1 here in the future when it's available\n\nexport interface MediaRequest {\n policyInfo: PolicyInfo;\n receiveSlots: Array<ReceiveSlot>;\n codecInfo?: CodecInfo;\n}\n\nexport type MediaRequestId = string;\n\nconst CODEC_DEFAULTS = {\n h264: {\n maxFs: 8192,\n maxFps: 3000,\n maxMbps: 245760,\n },\n};\n\ntype SendMediaRequestsCallback = (mediaRequests: MC.MediaRequest[]) => void;\n\nexport class MediaRequestManager {\n private sendMediaRequestsCallback: SendMediaRequestsCallback;\n\n private counter;\n\n private clientRequests: {[key: MediaRequestId]: MediaRequest};\n\n private slotsActiveInLastMediaRequest: {[key: ReceiveSlotId]: ReceiveSlot};\n\n constructor(sendMediaRequestsCallback: SendMediaRequestsCallback) {\n this.sendMediaRequestsCallback = sendMediaRequestsCallback;\n this.counter = 0;\n this.clientRequests = {};\n this.slotsActiveInLastMediaRequest = {};\n }\n\n private resetInactiveReceiveSlots() {\n const activeSlots: {[key: ReceiveSlotId]: ReceiveSlot} = {};\n\n // create a map of all currently used slot ids\n Object.values(this.clientRequests).forEach((request) =>\n request.receiveSlots.forEach((slot) => {\n activeSlots[slot.id] = slot;\n })\n );\n\n // when we stop using some receive slots and they are not included in the new media request,\n // we will never get a 'no source' notification for them, so we reset their state,\n // so that the client doesn't try to display their video anymore\n for (const [slotId, slot] of Object.entries(this.slotsActiveInLastMediaRequest)) {\n if (!(slotId in activeSlots)) {\n LoggerProxy.logger.info(\n `multistream:mediaRequestManager --> resetting sourceState to \"no source\" for slot ${slot.id}`\n );\n slot.resetSourceState();\n }\n }\n\n this.slotsActiveInLastMediaRequest = activeSlots;\n }\n\n private sendRequests() {\n const wcmeMediaRequests: MC.MediaRequest[] = [];\n\n // todo: check how many streams we're asking for and what resolution and introduce some limits (spark-377701)\n const maxPayloadBitsPerSecond = 10 * 1000 * 1000;\n\n // map all the client media requests to wcme media requests\n Object.values(this.clientRequests).forEach((mr) => {\n wcmeMediaRequests.push(\n new MC.MediaRequest(\n mr.policyInfo.policy === 'active-speaker'\n ? MC.Policy.ActiveSpeaker\n : MC.Policy.ReceiverSelected,\n mr.policyInfo.policy === 'active-speaker'\n ? new MC.ActiveSpeakerInfo(\n mr.policyInfo.priority,\n mr.policyInfo.crossPriorityDuplication,\n mr.policyInfo.crossPolicyDuplication,\n mr.policyInfo.preferLiveVideo\n )\n : new MC.ReceiverSelectedInfo(mr.policyInfo.csi),\n mr.receiveSlots.map((receiveSlot) => receiveSlot.wcmeReceiveSlot),\n maxPayloadBitsPerSecond,\n mr.codecInfo && [\n new MC.CodecInfo(\n 0x80,\n new MC.H264Codec(\n mr.codecInfo.maxFs || CODEC_DEFAULTS.h264.maxFs,\n mr.codecInfo.maxFps || CODEC_DEFAULTS.h264.maxFps,\n mr.codecInfo.maxMbps || CODEC_DEFAULTS.h264.maxMbps,\n mr.codecInfo.maxWidth,\n mr.codecInfo.maxHeight\n )\n ),\n ]\n )\n );\n });\n\n this.sendMediaRequestsCallback(wcmeMediaRequests);\n\n this.resetInactiveReceiveSlots();\n }\n\n public addRequest(mediaRequest: MediaRequest, commit = true): MediaRequestId {\n // eslint-disable-next-line no-plusplus\n const newId = `${this.counter++}`;\n\n this.clientRequests[newId] = mediaRequest;\n\n if (commit) {\n this.commit();\n }\n\n return newId;\n }\n\n public cancelRequest(requestId: MediaRequestId, commit = true) {\n delete this.clientRequests[requestId];\n\n if (commit) {\n this.commit();\n }\n }\n\n public commit() {\n return this.sendRequests();\n }\n\n public reset() {\n this.clientRequests = {};\n this.slotsActiveInLastMediaRequest = {};\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.3",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -28,12 +28,12 @@
28
28
  ]
29
29
  },
30
30
  "devDependencies": {
31
- "@webex/plugin-meetings": "3.0.0-beta.2",
32
- "@webex/test-helper-chai": "3.0.0-beta.2",
33
- "@webex/test-helper-mocha": "3.0.0-beta.2",
34
- "@webex/test-helper-mock-webex": "3.0.0-beta.2",
35
- "@webex/test-helper-retry": "3.0.0-beta.2",
36
- "@webex/test-helper-test-users": "3.0.0-beta.2",
31
+ "@webex/plugin-meetings": "3.0.0-beta.3",
32
+ "@webex/test-helper-chai": "3.0.0-beta.3",
33
+ "@webex/test-helper-mocha": "3.0.0-beta.3",
34
+ "@webex/test-helper-mock-webex": "3.0.0-beta.3",
35
+ "@webex/test-helper-retry": "3.0.0-beta.3",
36
+ "@webex/test-helper-test-users": "3.0.0-beta.3",
37
37
  "chai": "^4.3.4",
38
38
  "chai-as-promised": "^7.1.1",
39
39
  "jsdom-global": "3.0.2",
@@ -41,18 +41,18 @@
41
41
  "typed-emitter": "^2.1.0"
42
42
  },
43
43
  "dependencies": {
44
- "@webex/common": "3.0.0-beta.2",
45
- "@webex/internal-media-core": "^0.0.16-beta",
46
- "@webex/internal-plugin-conversation": "3.0.0-beta.2",
47
- "@webex/internal-plugin-device": "3.0.0-beta.2",
48
- "@webex/internal-plugin-mercury": "3.0.0-beta.2",
49
- "@webex/internal-plugin-metrics": "3.0.0-beta.2",
50
- "@webex/internal-plugin-support": "3.0.0-beta.2",
51
- "@webex/internal-plugin-user": "3.0.0-beta.2",
52
- "@webex/plugin-people": "3.0.0-beta.2",
53
- "@webex/plugin-rooms": "3.0.0-beta.2",
44
+ "@webex/common": "3.0.0-beta.3",
45
+ "@webex/internal-media-core": "^0.0.17-beta",
46
+ "@webex/internal-plugin-conversation": "3.0.0-beta.3",
47
+ "@webex/internal-plugin-device": "3.0.0-beta.3",
48
+ "@webex/internal-plugin-mercury": "3.0.0-beta.3",
49
+ "@webex/internal-plugin-metrics": "3.0.0-beta.3",
50
+ "@webex/internal-plugin-support": "3.0.0-beta.3",
51
+ "@webex/internal-plugin-user": "3.0.0-beta.3",
52
+ "@webex/plugin-people": "3.0.0-beta.3",
53
+ "@webex/plugin-rooms": "3.0.0-beta.3",
54
54
  "@webex/ts-sdp": "^1.0.1",
55
- "@webex/webex-core": "3.0.0-beta.2",
55
+ "@webex/webex-core": "3.0.0-beta.3",
56
56
  "bowser": "^2.11.0",
57
57
  "btoa": "^1.2.1",
58
58
  "dotenv": "^4.0.0",
@@ -94,6 +94,7 @@ export class MediaRequestManager {
94
94
  const wcmeMediaRequests: MC.MediaRequest[] = [];
95
95
 
96
96
  // todo: check how many streams we're asking for and what resolution and introduce some limits (spark-377701)
97
+ const maxPayloadBitsPerSecond = 10 * 1000 * 1000;
97
98
 
98
99
  // map all the client media requests to wcme media requests
99
100
  Object.values(this.clientRequests).forEach((mr) => {
@@ -111,6 +112,7 @@ export class MediaRequestManager {
111
112
  )
112
113
  : new MC.ReceiverSelectedInfo(mr.policyInfo.csi),
113
114
  mr.receiveSlots.map((receiveSlot) => receiveSlot.wcmeReceiveSlot),
115
+ maxPayloadBitsPerSecond,
114
116
  mr.codecInfo && [
115
117
  new MC.CodecInfo(
116
118
  0x80,
@@ -15,6 +15,8 @@ type ExpectedReceiverSelected = {
15
15
  };
16
16
  type ExpectedRequest = ExpectedActiveSpeaker | ExpectedReceiverSelected;
17
17
 
18
+ const maxPayloadBitsPerSecond = 10 * 1000 * 1000; // for now we always send this fixed constant
19
+
18
20
  describe('MediaRequestManager', () => {
19
21
  const CROSS_PRIORITY_DUPLICATION = true;
20
22
  const CROSS_POLICY_DUPLICATION = true;
@@ -109,6 +111,7 @@ describe('MediaRequestManager', () => {
109
111
  preferLiveVideo: PREFER_LIVE_VIDEO,
110
112
  }),
111
113
  receiveSlots: expectedRequest.receiveSlots,
114
+ maxPayloadBitsPerSecond,
112
115
  codecInfos: [
113
116
  sinon.match({
114
117
  payloadType: 0x80,
@@ -126,6 +129,7 @@ describe('MediaRequestManager', () => {
126
129
  csi: expectedRequest.csi,
127
130
  }),
128
131
  receiveSlots: [expectedRequest.receiveSlot],
132
+ maxPayloadBitsPerSecond,
129
133
  codecInfos: [
130
134
  sinon.match({
131
135
  payloadType: 0x80,