From 9f4faae7a6d3d65d8b5565dd80452b791104b91f Mon Sep 17 00:00:00 2001 From: Mihaela Dumitru Date: Wed, 26 Apr 2023 17:48:59 +0300 Subject: [PATCH] feat(external-api) support assumed bandwidth bps command + ljm update (#13275) --- modules/API/API.js | 23 ++++++++++++++++++++++- modules/API/constants.js | 7 +++++++ modules/API/external/external_api.js | 1 + package-lock.json | 10 +++++----- package.json | 4 ++-- react/features/base/conference/reducer.ts | 1 + 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/modules/API/API.js b/modules/API/API.js index 91778b95ac..8e23ad4943 100644 --- a/modules/API/API.js +++ b/modules/API/API.js @@ -115,7 +115,11 @@ import { muteAllParticipants } from '../../react/features/video-menu/actions'; import { setVideoQuality } from '../../react/features/video-quality/actions'; import { getJitsiMeetTransport } from '../transport'; -import { API_ID, ENDPOINT_TEXT_MESSAGE_NAME } from './constants'; +import { + API_ID, + ASSUMED_BANDWIDTH_BPS, + ENDPOINT_TEXT_MESSAGE_NAME +} from './constants'; const logger = Logger.getLogger(__filename); @@ -310,6 +314,23 @@ function initCommands() { APP.store.dispatch(sendTones(tones, duration, pause)); }, + 'set-assumed-bandwidth-bps': value => { + logger.debug('Set assumed bandwidth bps command received', value); + + if (typeof value !== 'number' || isNaN(value)) { + logger.error('Assumed bandwidth bps must be a number.'); + + return; + } + + const { conference } = APP.store.getState()['features/base/conference']; + + if (conference) { + conference.setAssumedBandwidthBps(value < ASSUMED_BANDWIDTH_BPS + ? ASSUMED_BANDWIDTH_BPS + : value); + } + }, 'set-follow-me': value => { logger.debug('Set follow me command received'); diff --git a/modules/API/constants.js b/modules/API/constants.js index 9212979ca2..d06e281215 100644 --- a/modules/API/constants.js +++ b/modules/API/constants.js @@ -15,3 +15,10 @@ export const API_ID = parseURLParams(window.location).jitsi_meet_external_api_id * The payload name for the datachannel/endpoint text message event. */ export const ENDPOINT_TEXT_MESSAGE_NAME = 'endpoint-text-message'; + +/** + * The min value that can be set for the assumed bandwidth. + * Setting it to this value means not assuming any bandwidth, + * but rather allowing the estimations to take place. + */ +export const ASSUMED_BANDWIDTH_BPS = -1; diff --git a/modules/API/external/external_api.js b/modules/API/external/external_api.js index 79f36834c4..329b0528f4 100644 --- a/modules/API/external/external_api.js +++ b/modules/API/external/external_api.js @@ -59,6 +59,7 @@ const commands = { sendEndpointTextMessage: 'send-endpoint-text-message', sendParticipantToRoom: 'send-participant-to-room', sendTones: 'send-tones', + setAssumedBandwidthBps: 'set-assumed-bandwidth-bps', setFollowMe: 'set-follow-me', setLargeVideoParticipant: 'set-large-video-participant', setMediaEncryptionKey: 'set-media-encryption-key', diff --git a/package-lock.json b/package-lock.json index cfe6720caa..d9d9fbf0f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -68,7 +68,7 @@ "js-md5": "0.6.1", "js-sha512": "0.8.0", "jwt-decode": "2.2.0", - "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1620.0.0+7f0012f7/lib-jitsi-meet.tgz", + "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1623.0.0+c520877a/lib-jitsi-meet.tgz", "lodash": "4.17.21", "moment": "2.29.4", "moment-duration-format": "2.2.2", @@ -13388,8 +13388,8 @@ }, "node_modules/lib-jitsi-meet": { "version": "0.0.0", - "resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1620.0.0+7f0012f7/lib-jitsi-meet.tgz", - "integrity": "sha512-F3vOUwD/ys5dGtswR3C5IK8JPDOG+71J+nhkEDLotkni/Zws8KHzf8Ye332UuetUjCTGJP3CbRFe9yJdYERe7g==", + "resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1623.0.0+c520877a/lib-jitsi-meet.tgz", + "integrity": "sha512-dMNFJOfL3xFeh+HsZ4HoyWQY3ARU0Sz5tacIhEtg2Y2KJXGkAih+d8agHSZVAkTCU5S8JmX75q0gPc3MNZ5kWg==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -30454,8 +30454,8 @@ } }, "lib-jitsi-meet": { - "version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1620.0.0+7f0012f7/lib-jitsi-meet.tgz", - "integrity": "sha512-F3vOUwD/ys5dGtswR3C5IK8JPDOG+71J+nhkEDLotkni/Zws8KHzf8Ye332UuetUjCTGJP3CbRFe9yJdYERe7g==", + "version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1623.0.0+c520877a/lib-jitsi-meet.tgz", + "integrity": "sha512-dMNFJOfL3xFeh+HsZ4HoyWQY3ARU0Sz5tacIhEtg2Y2KJXGkAih+d8agHSZVAkTCU5S8JmX75q0gPc3MNZ5kWg==", "requires": { "@jitsi/js-utils": "2.0.0", "@jitsi/logger": "2.0.0", diff --git a/package.json b/package.json index b80306d10e..df213bef86 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "js-md5": "0.6.1", "js-sha512": "0.8.0", "jwt-decode": "2.2.0", - "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1620.0.0+7f0012f7/lib-jitsi-meet.tgz", + "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1623.0.0+c520877a/lib-jitsi-meet.tgz", "lodash": "4.17.21", "moment": "2.29.4", "moment-duration-format": "2.2.2", @@ -183,7 +183,7 @@ }, "overrides": { "strophe.js@1.6.0": { - "@xmldom/xmldom": "0.8.7" + "@xmldom/xmldom": "0.8.7" } }, "engines": { diff --git a/react/features/base/conference/reducer.ts b/react/features/base/conference/reducer.ts index 0d0557b401..6d4b568f80 100644 --- a/react/features/base/conference/reducer.ts +++ b/react/features/base/conference/reducer.ts @@ -104,6 +104,7 @@ export interface IJitsiConference { sendTextMessage: Function; sendTones: Function; sessionId: string; + setAssumedBandwidthBps: (value: number) => void; setDesktopSharingFrameRate: Function; setDisplayName: Function; setLocalParticipantProperty: Function;