fcr-core
Version:
Core APIs for building online scenes
155 lines (151 loc) • 5.29 kB
JavaScript
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));
};