UNPKG

fcr-core

Version:

Core APIs for building online scenes

155 lines (151 loc) 5.29 kB
import "core-js/modules/es.json.stringify.js"; import "core-js/modules/esnext.set.add-all.js"; import "core-js/modules/esnext.set.delete-all.js"; import "core-js/modules/esnext.set.difference.v2.js"; import "core-js/modules/esnext.set.difference.js"; import "core-js/modules/esnext.set.every.js"; import "core-js/modules/esnext.set.filter.js"; import "core-js/modules/esnext.set.find.js"; import "core-js/modules/esnext.set.intersection.v2.js"; import "core-js/modules/esnext.set.intersection.js"; import "core-js/modules/esnext.set.is-disjoint-from.v2.js"; import "core-js/modules/esnext.set.is-disjoint-from.js"; import "core-js/modules/esnext.set.is-subset-of.v2.js"; import "core-js/modules/esnext.set.is-subset-of.js"; import "core-js/modules/esnext.set.is-superset-of.v2.js"; import "core-js/modules/esnext.set.is-superset-of.js"; import "core-js/modules/esnext.set.join.js"; import "core-js/modules/esnext.set.map.js"; import "core-js/modules/esnext.set.reduce.js"; import "core-js/modules/esnext.set.some.js"; import "core-js/modules/esnext.set.symmetric-difference.v2.js"; import "core-js/modules/esnext.set.symmetric-difference.js"; import "core-js/modules/esnext.set.union.v2.js"; import "core-js/modules/esnext.set.union.js"; import { FcrApplicationPlatform, getPlatform, isBoolean, isNumber } from '../imports'; const DEFAULT_LOG_FILE_SIZE = 512; /** RTC preset parameters configuration mapping table */ const RTC_PRESET_PARAMS_MAP = { [FcrApplicationPlatform.WINDOWS]: [{ 'rtc.video.default_hw_decoder_thres': 921600 }, { 'rtc.video.h264_hw_min_res_level': 4 }], [FcrApplicationPlatform.MACOS]: [{ 'che.video.screenCaptureMode': 1 }, { 'che.video.screen_disable_frame_transparent_check': true }, { 'rtc.video.h264_hw_min_res_level': 4 }], [FcrApplicationPlatform.WEB_DESKTOP]: [{ RESTRICTION_SET_PLAYBACK_DEVICE: false }], [FcrApplicationPlatform.HARMONY]: [{ 'engine.video.enable_hw_encoder': false }] }; /** HARMONY or ELECTRON common parameters */ const HARMONY_OR_ELECTRON_COMMON_PARAMS = [ // audio parameters settings { 'che.audio.bitrate_level': 1 }, { 'che.audio.reset_apm_capture_state_for_microphone_track': false }, // video parameters settings { 'rtc.video.new_complexity': true }, { 'rtc.video.default_complexity': 1027 }, { 'che.video.videoCodecIndex': 1 }, { 'che.video.minQP': 21 }, { 'rtc.video.enable_doc_screen_share_sr': true }, { 'rtc.video.enable_pvc': false }, { 'rtc.video.enable_sr': { enabled: false, mode: 2 } }, { 'che.video.brightness_detection_enable': false }, { 'che.video.lowest_dev_score_4_seg': 0 }, { 'che.video.lowest_dev_score_4_beauty': 0 }, { 'rtc.video.downMaxRetryTimes': 5 }, { 'rtc.video.low_stream_enable_hw_encoder': false }, { 'rtc.video.enable_minor_stream_intra_request': true }]; /** ELECTRON common parameters */ const ELECTRON_COMMON_PARAMS = [ // video parameters settings { 'rtc.video.color_space_enable': true }, { 'rtc.video.videoFullrange': 1 }, { 'rtc.video.matrixCoefficients': 5 }]; /** ELECTRON platforms set */ const ELECTRON_PLATFORMS = new Set([FcrApplicationPlatform.WINDOWS, FcrApplicationPlatform.MACOS, FcrApplicationPlatform.LINUX]); /** HARMONY or ELECTRON platforms set */ const HARMONY_OR_ELECTRON_PLATFORMS = new Set([FcrApplicationPlatform.HARMONY, ...ELECTRON_PLATFORMS]); export const isTrueValue = value => { return value === 'true' || !!value; }; export const getCoreIpList = parameters => { return parameters?.core?.coreIpList; }; export const getEasemobChatIpList = parameters => { return parameters?.core?.easemobChatIpList; }; export const getEasemobRestIpList = parameters => { return parameters?.core?.easemobRestIpList; }; export const getScribbleForgeIpList = parameters => { return parameters?.core?.scribbleForgeIpList; }; export const isEndpointRegionDisabled = parameters => { return isTrueValue(parameters?.core?.disableEndpointRegion); }; export const getNeedLogUpload = parameters => { if (isBoolean(parameters?.core?.needLogUpload)) { return parameters.core.needLogUpload; } return true; }; export const getCoreLogFileSize = parameters => { if (!isNumber(parameters?.core?.coreLogFileSize)) { return DEFAULT_LOG_FILE_SIZE; } return parameters.core.coreLogFileSize; }; export const getEasemobLogFileSize = parameters => { if (!isNumber(parameters?.core?.easemobLogFileSize)) { return DEFAULT_LOG_FILE_SIZE; } return parameters.core.easemobLogFileSize; }; export const getNetlessLogFileSize = parameters => { if (!isNumber(parameters?.core?.netlessLogFileSize)) { return DEFAULT_LOG_FILE_SIZE; } return parameters.core.netlessLogFileSize; }; /** desktop platforms set */ const DESKTOP_PLATFORMS = new Set([FcrApplicationPlatform.WINDOWS, FcrApplicationPlatform.MACOS]); export const getRtcPresetParameters = () => { const platform = getPlatform(); const platformParams = RTC_PRESET_PARAMS_MAP[platform] ?? []; const electronParams = ELECTRON_PLATFORMS.has(platform) ? ELECTRON_COMMON_PARAMS : []; const harmonyOrElectronParams = HARMONY_OR_ELECTRON_PLATFORMS.has(platform) ? HARMONY_OR_ELECTRON_COMMON_PARAMS : []; return [...platformParams, ...electronParams, ...harmonyOrElectronParams].map(p => JSON.stringify(p)); };