From 97f9d747c0f16ad50c3ea5242120dca8b5035e5e Mon Sep 17 00:00:00 2001 From: Jaya Allamsetty <54324652+jallamsetty1@users.noreply.github.com> Date: Mon, 3 Jul 2023 18:25:44 -0400 Subject: [PATCH] fix(config): Remove the deprecated configs. (#13500) * fix(config): Remove the deprecated configs. Add the new codec selection settings for desktop and mobile endpoints. * fix(config): Use the new codec selection settings for RN. * Address review comments. * chore(deps) Update lib-jitsi-meet@latest. https://github.com/jitsi/lib-jitsi-meet/compare/v1649.0.0+17ade96a...v1652.0.0+90da4884. --- config.js | 59 +++++++++++-------- package-lock.json | 10 ++-- package.json | 2 +- react/features/base/config/configType.ts | 9 ++- react/features/base/config/configWhitelist.ts | 1 - react/features/base/config/reducer.ts | 12 ---- 6 files changed, 45 insertions(+), 48 deletions(-) diff --git a/config.js b/config.js index 24a0cb531f9de..2d2740e4dec53 100644 --- a/config.js +++ b/config.js @@ -427,25 +427,9 @@ var config = { // Specify the settings for video quality optimizations on the client. // videoQuality: { - // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified - // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the - // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. - // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. - // disabledCodec: 'H264', - // - // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, - // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only - // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the - // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this - // // to take effect. - // preferredCodec: 'VP8', // - // // Provides a way to enforce the preferred codec for the conference even when the conference has endpoints - // // that do not support the preferred codec. For example, older versions of Safari do not support VP9 yet. - // // This will result in Safari not being able to decode video from endpoints sending VP9 video. - // // When set to false, the conference falls back to VP8 whenever there is an endpoint that doesn't support the - // // preferred codec and goes back to the preferred codec when that endpoint leaves. - // enforcePreferredCodec: false, + // // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264' ], // // // Provides a way to configure the maximum bitrates that will be enforced on the simulcast streams for // // video tracks. The keys in the object represent the type of the stream (LD, SD or HD) and the values @@ -485,6 +469,24 @@ var config = { // 720: 'high', // }, // + // // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based endpoint + // mobileCodecPreferenceOrder: [ 'VP8', 'VP9', 'H264' ], + // + // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // // Provides a way to prevent a video codec from being negotiated on the JVB connection. The codec specified + // // here will be removed from the list of codecs present in the SDP answer generated by the client. If the + // // same codec is specified for both the disabled and preferred option, the disable settings will prevail. + // // Note that 'VP8' cannot be disabled since it's a mandatory codec, the setting will be ignored in this case. + // disabledCodec: 'H264', + // + // // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // // Provides a way to set a preferred video codec for the JVB connection. If 'H264' is specified here, + // // simulcast will be automatically disabled since JVB doesn't support H264 simulcast yet. This will only + // // rearrange the the preference order of the codecs in the SDP answer generated by the browser only if the + // // preferred codec specified here is present. Please ensure that the JVB offers the specified codec for this + // // to take effect. + // preferredCodec: 'VP8', + // // }, // Notification timeouts @@ -935,12 +937,12 @@ var config = { // If not set, the effective value is 'all'. // iceTransportPolicy: 'all', - // Provides a way to set the video codec preference on the p2p connection. Acceptable - // codec values are 'VP8', 'VP9' and 'H264'. - // preferredCodec: 'H264', - - // Provides a way to prevent a video codec from being negotiated on the p2p connection. - // disabledCodec: '', + // Provides a way to set the codec preference on mobile devices, both on RN and mobile browser based + // endpoints. + // mobileCodecPreferenceOrder: [ 'H264', 'VP8', 'VP9' ], + // + // Provides a way to set the codec preference on desktop based endpoints. + // codecPreferenceOrder: [ 'VP9', 'VP8', 'H264 ], // How long we're going to wait, before going back to P2P after the 3rd // participant has left the conference (to filter out page reload). @@ -952,6 +954,15 @@ var config = { // { urls: 'stun:jitsi-meet.example.com:3478' }, { urls: 'stun:meet-jit-si-turnrelay.jitsi.net:443' }, ], + + // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // Provides a way to set the video codec preference on the p2p connection. Acceptable + // codec values are 'VP8', 'VP9' and 'H264'. + // preferredCodec: 'H264', + + // DEPRECATED! Use `codecPreferenceOrder/mobileCodecPreferenceOrder` instead. + // Provides a way to prevent a video codec from being negotiated on the p2p connection. + // disabledCodec: '', }, analytics: { diff --git a/package-lock.json b/package-lock.json index 645a156055036..7716bea6e2f30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,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/v1649.0.0+17ade96a/lib-jitsi-meet.tgz", + "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1652.0.0+90da4884/lib-jitsi-meet.tgz", "lodash": "4.17.21", "moment": "2.29.4", "moment-duration-format": "2.2.2", @@ -12762,8 +12762,8 @@ }, "node_modules/lib-jitsi-meet": { "version": "0.0.0", - "resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1649.0.0+17ade96a/lib-jitsi-meet.tgz", - "integrity": "sha512-87/CvxF4ySp+PFaJVE3rFMh6nlQ9iQD3tghY/EUL4BabsbDFUtTOoDmoCR6ekqluBmHU59KMbDFHQ5aY1iGhJw==", + "resolved": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1652.0.0+90da4884/lib-jitsi-meet.tgz", + "integrity": "sha512-QLXzAvGwQLpqpQmnbW9wOeScEf3WoBH+osLywzil6FAMsf3URoHR4jFLmkSUAvoxsLbpUSI1ziFFIprbYPnWuQ==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -29260,8 +29260,8 @@ } }, "lib-jitsi-meet": { - "version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1649.0.0+17ade96a/lib-jitsi-meet.tgz", - "integrity": "sha512-87/CvxF4ySp+PFaJVE3rFMh6nlQ9iQD3tghY/EUL4BabsbDFUtTOoDmoCR6ekqluBmHU59KMbDFHQ5aY1iGhJw==", + "version": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1652.0.0+90da4884/lib-jitsi-meet.tgz", + "integrity": "sha512-QLXzAvGwQLpqpQmnbW9wOeScEf3WoBH+osLywzil6FAMsf3URoHR4jFLmkSUAvoxsLbpUSI1ziFFIprbYPnWuQ==", "requires": { "@jitsi/js-utils": "2.0.0", "@jitsi/logger": "2.0.0", diff --git a/package.json b/package.json index fdd17cb58b6ed..e0809b6a90077 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,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/v1649.0.0+17ade96a/lib-jitsi-meet.tgz", + "lib-jitsi-meet": "https://github.com/jitsi/lib-jitsi-meet/releases/download/v1652.0.0+90da4884/lib-jitsi-meet.tgz", "lodash": "4.17.21", "moment": "2.29.4", "moment-duration-format": "2.2.2", diff --git a/react/features/base/config/configType.ts b/react/features/base/config/configType.ts index a99b9421a76b6..62b868d438d6f 100644 --- a/react/features/base/config/configType.ts +++ b/react/features/base/config/configType.ts @@ -441,10 +441,10 @@ export interface IConfig { opusMaxAverageBitrate?: number; p2p?: { backToP2PDelay?: number; - disabledCodec?: string; + codecPreferenceOrder?: Array; enabled?: boolean; iceTransportPolicy?: string; - preferredCodec?: string; + mobileCodecPreferenceOrder?: Array; stunServers?: Array<{ urls: string; }>; }; participantsPane?: { @@ -545,8 +545,7 @@ export interface IConfig { useHostPageLocalStorage?: boolean; useTurnUdp?: boolean; videoQuality?: { - disabledCodec?: string; - enforcePreferredCodec?: boolean; + codecPreferenceOrder?: Array; maxBitratesVideo?: { [key: string]: { high?: number; @@ -557,8 +556,8 @@ export interface IConfig { minHeightForQualityLvl?: { [key: number]: string; }; + mobileCodecPreferenceOrder?: Array; persist?: boolean; - preferredCodec?: string; }; webhookProxyUrl?: string; webrtcIceTcpDisable?: boolean; diff --git a/react/features/base/config/configWhitelist.ts b/react/features/base/config/configWhitelist.ts index e2d4960a0ed48..39d108afb22b9 100644 --- a/react/features/base/config/configWhitelist.ts +++ b/react/features/base/config/configWhitelist.ts @@ -195,7 +195,6 @@ export default [ 'p2p', 'participantsPane', 'pcStatsInterval', - 'preferredCodec', 'prejoinConfig', 'prejoinPageEnabled', 'recordingService', diff --git a/react/features/base/config/reducer.ts b/react/features/base/config/reducer.ts index 142c275a15b87..415560f5b2dee 100644 --- a/react/features/base/config/reducer.ts +++ b/react/features/base/config/reducer.ts @@ -43,18 +43,6 @@ const INITIAL_NON_RN_STATE: IConfig = { * @type {Object} */ const INITIAL_RN_STATE: IConfig = { - // FIXME: Mobile codecs should probably be configurable separately, rather - // FIXME: than requiring this override here... - - p2p: { - disabledCodec: 'vp9', - preferredCodec: 'h264' - }, - - videoQuality: { - disabledCodec: 'vp9', - preferredCodec: 'vp8' - } }; /**