{"version":3,"names":["VideoDimensions","constructor","params","_defineProperty","width","height","exports","VideoEncoderConfiguration","dimensions","frameRate","minFrameRate","bitrate","minBitrate","orientationMode","degradationPrefer","mirrorMode","BeautyOptions","lighteningContrastLevel","lighteningLevel","smoothnessLevel","rednessLevel","sharpnessLevel","AgoraImage","url","x","y","zOrder","alpha","TranscodingUser","uid","audioChannel","Color","red","green","blue","LiveTranscoding","transcodingUsers","videoBitrate","videoFramerate","lowLatency","videoGop","watermark","watermarkList","backgroundImage","backgroundImageList","audioSampleRate","audioBitrate","audioChannels","audioCodecProfile","videoCodecProfile","videoCodecType","backgroundColor","userConfigExtraInfo","metadata","advancedFeatures","ChannelMediaInfo","channelName","token","ChannelMediaRelayConfiguration","srcInfo","destInfos","LastmileProbeConfig","probeUplink","probeDownlink","expectedUplinkBitrate","expectedDownlinkBitrate","Rectangle","WatermarkOptions","visibleInPreview","positionInLandscapeMode","positionInPortraitMode","LiveInjectStreamConfig","RhythmPlayerConfig","beatsPerMeasure","beatsPerMinute","publish","CameraCapturerConfiguration","preference","captureWidth","captureHeight","cameraDirection","ChannelMediaOptions","autoSubscribeAudio","autoSubscribeVideo","publishLocalAudio","publishLocalVideo","EncryptionConfig","encryptionMode","encryptionKey","encryptionKdfSalt","ClientRoleOptions","audienceLatencyLevel","LogConfig","filePath","fileSize","level","DataStreamConfig","syncWithAudio","ordered","RtcEngineContext","appId","areaCode","logConfig","RtcEngineConfig","AudioRecordingConfiguration","recordingQuality","recordingPosition","recordingSampleRate","recordingChannel","VirtualBackgroundSource","backgroundSourceType","color","source","blur_degree","EchoTestConfiguration","enableAudio","enableVideo","channelId","MediaRecorderConfiguration","storagePath","containerFormat","streamType","maxDurationMs","recorderInfoUpdateInterval","ContentInspectModule","ContentInspectConfig","LocalAccessPointConfiguration","VideoDenoiserOptions","LowLightEnhanceOptions","ColorEnhanceOptions","ScreenCaptureParameters","ScreenVideoParameters","ScreenAudioParameters","SpatialAudioParams"],"sources":["Classes.ts"],"sourcesContent":["import type {\r\n AreaCode,\r\n AudienceLatencyLevelType,\r\n AudioChannel,\r\n AudioCodecProfileType,\r\n AudioRecordingPosition,\r\n AudioRecordingQuality,\r\n AudioSampleRateType,\r\n CameraCaptureOutputPreference,\r\n CameraDirection,\r\n CaptureBrightnessLevelType,\r\n DegradationPreference,\r\n EncryptionMode,\r\n ExperiencePoorReason,\r\n ExperienceQualityType,\r\n LastmileProbeResultState,\r\n LighteningContrastLevel,\r\n LogLevel,\r\n NetworkQuality,\r\n VideoCodecProfileType,\r\n VideoCodecType,\r\n VideoFrameRate,\r\n VideoMirrorMode,\r\n VideoOutputOrientationMode,\r\n VideoQualityAdaptIndication,\r\n VideoStreamType,\r\n VirtualBackgroundBlurDegree,\r\n VirtualBackgroundSourceType,\r\n VideoCodecTypeForStream,\r\n VideoContentHint,\r\n} from './Enums';\r\n\r\n/**\r\n * The user information, including the user ID and user account.\r\n */\r\nexport interface UserInfo {\r\n /**\r\n * The user ID of a user.\r\n */\r\n uid: number;\r\n /**\r\n * The user account of a user.\r\n */\r\n userAccount: string;\r\n}\r\n\r\n/**\r\n * The video resolution.\r\n */\r\nexport class VideoDimensions {\r\n /**\r\n * The width (px) of the video encoding resolution.\r\n */\r\n width?: number;\r\n /**\r\n * The height (px) of the video encoding resolution.\r\n */\r\n height?: number;\r\n\r\n constructor(params?: { width?: number; height?: number }) {\r\n if (params) {\r\n this.width = params.width;\r\n this.height = params.height;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Definition of VideoEncoderConfiguration.\r\n */\r\nexport class VideoEncoderConfiguration {\r\n /**\r\n * The video frame dimensions (px), which is used to specify the video quality and measured by the total number of pixels along a\r\n * frame's width and height. The default value is 640 × 360.\r\n * You can customize the dimension, or select from the following list:\r\n * \r\n *\r\n * **Note**\r\n * \r\n *\r\n */\r\n dimensions?: VideoDimensions;\r\n /**\r\n * The video frame rate (fps). The default value is 15. Users can either set the frame rate manually or choose from the following options.\r\n * We do not recommend setting this to a value greater than 30.\r\n */\r\n frameRate?: VideoFrameRate;\r\n /**\r\n * The minimum video encoder frame rate (fps). The default value is Min(-1) (the SDK uses the lowest encoder frame rate).\r\n */\r\n minFrameRate?: VideoFrameRate;\r\n /**\r\n * Bitrate of the video (Kbps). Refer to the table below and set your bitrate. If you set a bitrate beyond the proper range, the SDK automatically adjusts it to a value within the range.\r\n * You can also choose from the following options:\r\n * - [`Standard`]{@link BitRate.Standard}: (Recommended) The standard bitrate mode. In this mode, the bitrates differ between the `LiveBroadcasting` and `Communication` profiles:\r\n * - In the `Communication` profile, the video bitrate is the same as the base bitrate.\r\n * - In the `LiveBroadcasting` profile, the video bitrate is twice the base bitrate.\r\n * - [`Compatible`]{@link BitRate.Compatible}: The compatible bitrate mode. In this mode, the bitrate stays the same regardless of the profile. If you choose this mode for the `LiveBroadcasting` profile, the video frame rate may be lower than the set value.\r\n *\r\n * Agora uses different video codecs for different profiles to optimize the user experience. For example, the Communication profile prioritizes the smoothness while the `LiveBroadcasting` profile prioritizes the video quality (a higher bitrate). Therefore, We recommend setting this parameter as [`Standard`]{@link BitRate.Standard}.\r\n *\r\n * **Video Bitrate Table**\r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n *
ResolutionFrame rate

(fps)

Base Bitrate

(Kbps, for Communication)

Live Bitrate

(Kbps, for Live Broadcasting)

160*1201565130
120*1201550100
320*18015140280
180*18015100200
240*18015120240
320*24015200400
240*24015140280
424*24015220440
640*36015400800
360*36015260520
640*360306001200
360*36030400800
480*36015320640
480*36030490980
640*480155001000
480*48015400800
640*480307501500
480*480306001200
848*480156101220
848*480309301860
640*48010400800
1280*7201511302260
1280*7203017103420
960*720159101820
960*7203013802760
\r\n *\r\n * **Note**\r\n *\r\n * The base bitrate in this table applies to the Communication profile.\r\n * The `LiveBroadcasting` profile generally requires a higher bitrate for better video quality.\r\n * We recommend setting the bitrate mode as [`Standard`]{@link BitRate.Standard}. You can also set the bitrate as the base bitrate value × 2.\r\n */\r\n bitrate?: number;\r\n /**\r\n * The minimum encoding bitrate (Kbps). The Agora SDK automatically adjusts the encoding bitrate to adapt to the network conditions. Using a value greater than the default value forces the video encoder to output high-quality images but may cause more packet loss and hence sacrifice the smoothness of the video transmission. That said, unless you have special requirements for image quality,\r\n * Agora does not recommend changing this value.\r\n */\r\n minBitrate?: number;\r\n /**\r\n * The orientation mode.\r\n */\r\n orientationMode?: VideoOutputOrientationMode;\r\n /**\r\n * The video encoding degradation preference under limited bandwidth.\r\n */\r\n degradationPrefer?: DegradationPreference;\r\n /**\r\n * Sets the mirror mode of the published local video stream.\r\n */\r\n mirrorMode?: VideoMirrorMode;\r\n\r\n constructor(params?: {\r\n dimensions?: VideoDimensions;\r\n frameRate?: VideoFrameRate;\r\n minFrameRate?: VideoFrameRate;\r\n bitrate?: number;\r\n minBitrate?: number;\r\n orientationMode?: VideoOutputOrientationMode;\r\n degradationPrefer?: DegradationPreference;\r\n mirrorMode?: VideoMirrorMode;\r\n }) {\r\n if (params) {\r\n this.dimensions = params.dimensions;\r\n this.frameRate = params.frameRate;\r\n this.minFrameRate = params.minFrameRate;\r\n this.bitrate = params.bitrate;\r\n this.minBitrate = params.minBitrate;\r\n this.orientationMode = params.orientationMode;\r\n this.degradationPrefer = params.degradationPrefer;\r\n this.mirrorMode = params.mirrorMode;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Sets the image enhancement options.\r\n */\r\nexport class BeautyOptions {\r\n /**\r\n * The contrast level, often used in conjunction with `lighteningLevel`.\r\n * The higher the value, the greater the contrast level. See [`LighteningContrastLevel`]{@link LighteningContrastLevel}.\r\n */\r\n lighteningContrastLevel?: LighteningContrastLevel;\r\n /**\r\n * The brightening level, in the range [0.0,1.0], where 0.0 means the original brightening. The default value is 0.6. The higher the value, the greater the brightening level.\r\n */\r\n lighteningLevel?: number;\r\n /**\r\n * The smoothness level, in the range [0.0,1.0], where 0.0 means the original smoothness.\r\n * The default value is 0.5. The higher the value, the greater the smoothness level.\r\n */\r\n smoothnessLevel?: number;\r\n /**\r\n * The redness level, in the range [0.0,1.0], where 0.0 means the original redness.\r\n * The default value is 0.1. The higher the value, the greater the redness level.\r\n */\r\n rednessLevel?: number;\r\n /**\r\n * The sharpness level, in the range [0.0,1.0], where 0.0 means the original sharpness.\r\n * The default value is 0.3. The higher the value, the greater the sharpness level.\r\n *\r\n * @since v3.6.2\r\n */\r\n sharpnessLevel?: number;\r\n\r\n constructor(params?: {\r\n lighteningContrastLevel?: LighteningContrastLevel;\r\n lighteningLevel?: number;\r\n smoothnessLevel?: number;\r\n rednessLevel?: number;\r\n sharpnessLevel?: number;\r\n }) {\r\n if (params) {\r\n this.lighteningContrastLevel = params.lighteningContrastLevel;\r\n this.lighteningLevel = params.lighteningLevel;\r\n this.smoothnessLevel = params.smoothnessLevel;\r\n this.rednessLevel = params.rednessLevel;\r\n this.sharpnessLevel = params.sharpnessLevel;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Agora image properties. A class for setting the properties of the watermark and background images.\r\n */\r\nexport class AgoraImage {\r\n /**\r\n * HTTP/HTTPS URL address of the image on the broadcasting video. The maximum length of this parameter is 1024 bytes.\r\n */\r\n url: string;\r\n /**\r\n * Position of the image on the upper left of the broadcasting video on the horizontal axis.\r\n */\r\n x?: number;\r\n /**\r\n * Position of the image on the upper left of the broadcasting video on the vertical axis.\r\n */\r\n y?: number;\r\n /**\r\n * Width of the image on the broadcasting video.\r\n */\r\n width?: number;\r\n /**\r\n * Height of the image on the broadcasting video.\r\n */\r\n height?: number;\r\n /**\r\n * The layer number of the watermark or background image.\r\n *\r\n * When you use the watermark array to add a watermark or multiple watermarks, you must pass a value to `zOrder` in the range [1,255];\r\n * otherwise, the SDK reports an error. In other cases, `zOrder` can optionally be passed in the range [0,255],\r\n * with 0 being the default value. `0` means the bottom layer and `255` means the top layer.\r\n *\r\n * @since v3.6.2\r\n */\r\n zOrder?: number;\r\n /**\r\n * The transparency of the watermark or background image. The value range is [0.0,1.0]:\r\n * - `0.0`: Completely transparent.\r\n * - `1.0`: (Default) Opaque.\r\n *\r\n * @since v3.6.2\r\n */\r\n alpha?: number;\r\n\r\n constructor(\r\n url: string,\r\n params?: {\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n zOrder?: number;\r\n alpha?: number;\r\n }\r\n ) {\r\n this.url = url;\r\n if (params) {\r\n this.x = params.x;\r\n this.y = params.y;\r\n this.width = params.width;\r\n this.height = params.height;\r\n this.zOrder = params.zOrder;\r\n this.alpha = params.alpha;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The transcodingUser class, which defines the audio and video properties in the CDN live. Agora supports a maximum of 17 transcoding users in a CDN live streaming channel.\r\n */\r\nexport class TranscodingUser {\r\n /**\r\n * ID of the user in the CDN live streaming.\r\n */\r\n uid: number;\r\n /**\r\n * Horizontal position of the video frame of the user from the top left corner of the CDN live streaming.\r\n */\r\n x?: number;\r\n /**\r\n * Vertical position of the video frame of the user from the top left corner of the CDN live streaming.\r\n */\r\n y?: number;\r\n /**\r\n * Width of the video frame of the user on the CDN live streaming. The default value is 360.\r\n */\r\n width?: number;\r\n /**\r\n * Height of the video frame of the user on the CDN live streaming. The default value is 640.\r\n */\r\n height?: number;\r\n /**\r\n * Layer position of video frame of the user on the CDN live streaming. The value ranges between 0 and 100. From v2.3.0, Agora SDK supports setting zOrder as 0. The smallest value is 0 (default value), which means that the video frame is at the bottom layer. The biggest value is 100, which means that the video frame is at the top layer.\r\n */\r\n zOrder?: number;\r\n /**\r\n * The transparency of the video frame of the user in the CDN live streaming that ranges between 0.0 and 1.0. 0.0 means that the video frame is completely transparent and 1.0 means opaque. The default value is 1.0.\r\n */\r\n alpha?: number;\r\n /**\r\n * The audio channel ranging between 0 and 5. The default value is 0.\r\n *\r\n * - 0: (default) Supports dual channels. Depends on the upstream of the broadcaster.\r\n * - 1: The audio stream of the broadcaster uses the FL audio channel. If the broadcaster’s upstream uses multiple audio channels, these channels are mixed into mono first.\r\n * - 2: The audio stream of the broadcaster uses the FC audio channel. If the broadcaster’s upstream uses multiple audio channels, these channels are mixed into mono first.\r\n * - 3: The audio stream of the broadcaster uses the FR audio channel. If the broadcaster’s upstream uses multiple audio channels, these channels are mixed into mono first.\r\n * - 4: The audio stream of the broadcaster uses the BL audio channel. If the broadcaster’s upstream uses multiple audio channels, these channels are mixed into mono first.\r\n * - 5: The audio stream of the broadcaster uses the BR audio channel. If the broadcaster’s upstream uses multiple audio channels, these channels are mixed into mono first.\r\n *\r\n * **Note**\r\n *\r\n * Special players are needed if `audioChannel` is not set as 0.\r\n */\r\n audioChannel?: AudioChannel;\r\n\r\n constructor(\r\n uid: number,\r\n params?: {\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n zOrder?: number;\r\n alpha?: number;\r\n audioChannel?: AudioChannel;\r\n }\r\n ) {\r\n this.uid = uid;\r\n if (params) {\r\n this.x = params.x;\r\n this.y = params.y;\r\n this.width = params.width;\r\n this.height = params.height;\r\n this.zOrder = params.zOrder;\r\n this.alpha = params.alpha;\r\n this.audioChannel = params.audioChannel;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Color for [`VirtualBackgroundSource`]{@link VirtualBackgroundSource}\r\n */\r\nexport class Color {\r\n /**\r\n * Red value (0 - 255)\r\n */\r\n red: number;\r\n /**\r\n * Green value (0 - 255)\r\n */\r\n green: number;\r\n /**\r\n * Blue value (0 - 255)\r\n */\r\n blue: number;\r\n\r\n /**\r\n * Create a color for [`VirtualBackgroundSource`]{@link VirtualBackgroundSource}\r\n * @param red Red value (0 - 255)\r\n * @param green Green value (0 - 255)\r\n * @param blue Blue value (0 - 255)\r\n */\r\n constructor(red: number, green: number, blue: number) {\r\n this.red = red;\r\n this.green = green;\r\n this.blue = blue;\r\n }\r\n}\r\n\r\n/**\r\n * A class for managing user-specific CDN live audio/video transcoding settings.\r\n */\r\nexport class LiveTranscoding {\r\n /**\r\n * Width (pixel) of the video. The default value is 360.\r\n * - When pushing video streams to the CDN, the value range of `width` is [64,1920]. If the value is less than 64, Agora server automatically adjusts it to 64; if the value is greater than 1920, Agora server automatically adjusts it to 1920.\r\n * - If you push audio streams to the CDN, set the value of width × height to 0 × 0.\r\n */\r\n width?: number;\r\n /**\r\n * Height (pixel) of the video. The default value is 640.\r\n * - When pushing video streams to the CDN, the value range of `height` is [64,1080]. If the value is less than 64, Agora server automatically adjusts it to 64; if the value is greater than 1080, Agora server automatically adjusts it to 1080.\r\n * - If you push audio streams to the CDN, set the value of width × height to 0 × 0.\r\n */\r\n height?: number;\r\n /**\r\n * Bitrate (Kbps) of the CDN live output video stream. The default value is 400. Set this parameter according to the Video Bitrate Table. If you set a bitrate beyond the proper range,\r\n * the SDK automatically adapts it to a value within the range.\r\n */\r\n videoBitrate?: number;\r\n /**\r\n * Frame rate (fps) of the CDN live output video stream.\r\n * The value range is [0,30]. The default value is 15. Agora adjusts all values over 30 to 30.\r\n */\r\n videoFramerate?: VideoFrameRate;\r\n /**\r\n * @deprecated\r\n * - `true`: Low latency with unassured quality.\r\n * - `false`: (Default) High latency with assured quality.\r\n */\r\n lowLatency?: boolean;\r\n /**\r\n * Gop of the video frames in the CDN live stream. The default value is 30 fps.\r\n */\r\n videoGop?: number;\r\n /**\r\n * The watermark on the live video. The image format must be PNG.\r\n */\r\n watermark?: AgoraImage;\r\n /**\r\n * The array of watermarks on the live video. You can use `watermarkList` to add one or more watermarks.\r\n * The image format must be PNG.\r\n *\r\n * The total number of watermarks and background images on the live video must be greater than or equal to 0 and less than or equal to 10.\r\n *\r\n * @since v3.6.2\r\n */\r\n watermarkList?: AgoraImage[];\r\n /**\r\n * The background image on the live video. The format must be in the PNG format.\r\n */\r\n backgroundImage?: AgoraImage;\r\n /**\r\n * The array of background images on the live video. You can use `backgroundImageList` to add one or more background images. The image format must be PNG.\r\n * The total number of watermarks and background images on the live video must be greater than or equal to 0 and less than or equal to 10.\r\n *\r\n * @since v3.6.2\r\n */\r\n backgroundImageList?: AgoraImage[];\r\n /**\r\n * Self-defined audio-sample rate: AudioSampleRateType.\r\n */\r\n audioSampleRate?: AudioSampleRateType;\r\n /**\r\n * Bitrate (Kbps) of the CDN live audio output stream. The default value is 48 and the highest value is 128.\r\n */\r\n audioBitrate?: number;\r\n /**\r\n * The number of audio channels for the CDN live stream.\r\n *\r\n * Agora recommends choosing 1 (mono), or 2 (stereo) audio channels. Special players are required if you choose 3, 4, or 5.\r\n * - 1: (Default) Mono\r\n * - 2: Stereo\r\n * - 3: Three audio channels\r\n * - 4: Four audio channels\r\n * - 5: Five audio channels\r\n */\r\n audioChannels?: AudioChannel;\r\n /**\r\n * Audio codec profile type: AudioCodecProfileType. Set it as LC-AAC or HE-AAC. The default value is LC-AAC.\r\n */\r\n audioCodecProfile?: AudioCodecProfileType;\r\n /**\r\n * Video codec profile type: VideoCodecProfileType. Set it as BASELINE, MAIN, or HIGH (default). If you set this parameter to other values, Agora adjusts it to the default value HIGH.\r\n */\r\n videoCodecProfile?: VideoCodecProfileType;\r\n /**\r\n * The video codec type of the output video stream.\r\n *\r\n * @since v3.2.0\r\n */\r\n videoCodecType?: VideoCodecTypeForStream;\r\n /**\r\n * Sets the background color.\r\n */\r\n backgroundColor?: Color;\r\n /**\r\n * Reserved property. Extra user-defined information to send the Supplemental Enhancement Information (SEI) for the H.264/H.265 video stream to the CDN live client. Maximum length: 4096 Bytes.\r\n */\r\n userConfigExtraInfo?: string;\r\n /**\r\n * The metadata sent to the CDN live client.\r\n *\r\n * @deprecated This property is deprecated.\r\n */\r\n metadata?: string;\r\n /**\r\n * An TranscodingUser object managing the user layout configuration in the CDN live stream. Agora supports a maximum of 17 transcoding users in a CDN live stream channel.\r\n */\r\n transcodingUsers: TranscodingUser[];\r\n /**\r\n * @ignore\r\n */\r\n advancedFeatures?: Map;\r\n\r\n constructor(\r\n transcodingUsers: TranscodingUser[],\r\n params?: {\r\n width?: number;\r\n height?: number;\r\n videoBitrate?: number;\r\n videoFramerate?: VideoFrameRate;\r\n lowLatency?: boolean;\r\n videoGop?: number;\r\n watermark?: AgoraImage;\r\n watermarkList?: AgoraImage[];\r\n backgroundImage?: AgoraImage;\r\n backgroundImageList?: AgoraImage[];\r\n audioSampleRate?: AudioSampleRateType;\r\n audioBitrate?: number;\r\n audioChannels?: AudioChannel;\r\n audioCodecProfile?: AudioCodecProfileType;\r\n videoCodecProfile?: VideoCodecProfileType;\r\n videoCodecType?: VideoCodecTypeForStream;\r\n backgroundColor?: Color;\r\n userConfigExtraInfo?: string;\r\n metadata?: string;\r\n advancedFeatures?: Map;\r\n }\r\n ) {\r\n if (params) {\r\n this.width = params.width;\r\n this.height = params.height;\r\n this.videoBitrate = params.videoBitrate;\r\n this.videoFramerate = params.videoFramerate;\r\n this.lowLatency = params.lowLatency;\r\n this.videoGop = params.videoGop;\r\n this.watermark = params.watermark;\r\n this.watermarkList = params.watermarkList;\r\n this.backgroundImage = params.backgroundImage;\r\n this.backgroundImageList = params.backgroundImageList;\r\n this.audioSampleRate = params.audioSampleRate;\r\n this.audioBitrate = params.audioBitrate;\r\n this.audioChannels = params.audioChannels;\r\n this.audioCodecProfile = params.audioCodecProfile;\r\n this.videoCodecProfile = params.videoCodecProfile;\r\n this.videoCodecType = params.videoCodecType;\r\n this.backgroundColor = params.backgroundColor;\r\n this.userConfigExtraInfo = params.userConfigExtraInfo;\r\n this.metadata = params.metadata;\r\n this.advancedFeatures = params.advancedFeatures;\r\n }\r\n this.transcodingUsers = transcodingUsers;\r\n }\r\n}\r\n\r\n/**\r\n * The ChannelMediaInfo class.\r\n */\r\nexport class ChannelMediaInfo {\r\n /**\r\n * The channel name.\r\n */\r\n channelName: string;\r\n /**\r\n * The token that enables the user to join the channel.\r\n */\r\n token?: string;\r\n /**\r\n * The user ID.\r\n */\r\n uid: number;\r\n\r\n constructor(channelName: string, uid: number, params?: { token?: string }) {\r\n this.channelName = channelName;\r\n if (params) {\r\n this.token = params.token;\r\n }\r\n this.uid = uid;\r\n }\r\n}\r\n\r\n/**\r\n * The ChannelMediaRelayConfiguration class.\r\n */\r\nexport class ChannelMediaRelayConfiguration {\r\n /**\r\n * The information of the source channel: [`ChannelMediaInfo`]{@link ChannelMediaInfo}. It contains the following members:\r\n * - `channelName`: The name of the source channel. The default value is null, which means the SDK applies the name of the current channel.\r\n * - `uid`: ID of the host whose media stream you want to relay. The default value is 0, which means the SDK generates a random UID. You must set it as 0.\r\n * - `token`: The token for joining the source channel. It is generated with the `channelName` and `uid` you set in `srcInfo`.\r\n * - If you have not enabled the App Certificate, set this parameter as the default value null, which means the SDK applies the App ID.\r\n * - If you have enabled the App Certificate, you must use the token generated with the `channelName` and `uid`, and the `uid` must be set as 0.\r\n */\r\n srcInfo: ChannelMediaInfo;\r\n /**\r\n * The information of the destination channel: [`ChannelMediaInfo`]{@link ChannelMediaInfo}. It contains the following members:\r\n * - `channelName`: The name of the destination channel.\r\n * - `uid`: ID of the host in the destination channel. The value ranges from 0 to (232-1). To avoid UID conflicts, this uid must be different from any other UIDs in the destination channel. The default value is 0, which means the SDK generates a random UID.\r\n * - `token`: The token for joining the source channel. It is generated with the `channelName` and `uid` you set in `destInfo`.\r\n * - If you have not enabled the App Certificate, set this parameter as the default value null, which means the SDK applies the App ID.\r\n * - If you have enabled the App Certificate, you must use the token generated with the `channelName` and `uid`, and the `uid` must be set as 0.\r\n */\r\n destInfos: ChannelMediaInfo[];\r\n\r\n constructor(srcInfo: ChannelMediaInfo, destInfos: ChannelMediaInfo[]) {\r\n this.srcInfo = srcInfo;\r\n this.destInfos = destInfos;\r\n }\r\n}\r\n\r\n/**\r\n * Lastmile probe configuration.\r\n */\r\nexport class LastmileProbeConfig {\r\n /**\r\n * Whether to probe uplink of lastmile. i.e., audience don't need probe uplink bandwidth.\r\n */\r\n probeUplink: boolean;\r\n /**\r\n * Whether to probe downlink of lastmile.\r\n */\r\n probeDownlink: boolean;\r\n /**\r\n * The expected maximum sending bitrate in bps in range of [100000,5000000]. It is recommended to set this value according to the required bitrate of selected video profile.\r\n */\r\n expectedUplinkBitrate: number;\r\n /**\r\n * The expected maximum receive bitrate in bps in range of [100000,5000000].\r\n */\r\n expectedDownlinkBitrate: number;\r\n\r\n constructor(\r\n probeUplink: boolean,\r\n probeDownlink: boolean,\r\n expectedUplinkBitrate: number,\r\n expectedDownlinkBitrate: number\r\n ) {\r\n this.probeUplink = probeUplink;\r\n this.probeDownlink = probeDownlink;\r\n this.expectedUplinkBitrate = expectedUplinkBitrate;\r\n this.expectedDownlinkBitrate = expectedDownlinkBitrate;\r\n }\r\n}\r\n\r\n/**\r\n * The position and size of the watermark image.\r\n */\r\nexport class Rectangle {\r\n /**\r\n * The horizontal offset from the top-left corner.\r\n */\r\n x?: number;\r\n /**\r\n * The vertical offset from the top-left corner.\r\n */\r\n y?: number;\r\n /**\r\n * The width (pixels) of the watermark image.\r\n */\r\n width?: number;\r\n /**\r\n * The height (pixels) of the watermark image.\r\n */\r\n height?: number;\r\n\r\n constructor(params?: {\r\n x?: number;\r\n y?: number;\r\n width?: number;\r\n height?: number;\r\n }) {\r\n if (params) {\r\n this.x = params.x;\r\n this.y = params.y;\r\n this.width = params.width;\r\n this.height = params.height;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Agora watermark options. A class for setting the properties of watermark.\r\n */\r\nexport class WatermarkOptions {\r\n /**\r\n * Sets whether or not the watermark image is visible in the local video preview:\r\n * - `true`: (Default) The watermark image is visible in preview.\r\n * - `false`: The watermark image is not visible in preview.\r\n */\r\n visibleInPreview?: boolean;\r\n /**\r\n * The watermark position in the landscape mode.\r\n */\r\n positionInLandscapeMode?: Rectangle;\r\n /**\r\n * The watermark position in the portrait mode.\r\n */\r\n positionInPortraitMode?: Rectangle;\r\n\r\n constructor(params?: {\r\n visibleInPreview?: boolean;\r\n positionInLandscapeMode?: Rectangle;\r\n positionInPortraitMode?: Rectangle;\r\n }) {\r\n if (params) {\r\n this.visibleInPreview = params.visibleInPreview;\r\n this.positionInLandscapeMode = params.positionInLandscapeMode;\r\n this.positionInPortraitMode = params.positionInPortraitMode;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Configuration of the imported live interactive voice or video stream.\r\n */\r\nexport class LiveInjectStreamConfig {\r\n /**\r\n * Width (pixels) of the added stream to the live interactive streaming. The default value is 0, which is the same width as the original stream.\r\n */\r\n width?: number;\r\n /**\r\n * Height (pixels) of the added stream to the live interactive streaming. The default value is 0, which is the same height as the original stream.\r\n */\r\n height?: number;\r\n /**\r\n * Video GOP of the added stream to the live interactive streaming. The default value is 30 frames.\r\n */\r\n videoGop?: number;\r\n /**\r\n * Video frame rate of the added stream to the live interactive streaming. The default value is 15 fps.\r\n */\r\n videoFramerate?: VideoFrameRate;\r\n /**\r\n * Video bitrate of the added stream to the live interactive streaming. The default value is 400 Kbps.\r\n *\r\n * **Note**\r\n *\r\n * The setting of the video bitrate is closely linked to the resolution. If you set the video bitrate beyond a reasonable range, the SDK sets it within a reasonable range instead.\r\n */\r\n videoBitrate?: number;\r\n /**\r\n * Audio sample rate of the added stream to the live interactive streaming. The default value is 44100 Hz.\r\n *\r\n * **Note**\r\n *\r\n * We recommend you use the default value and not reset it.\r\n */\r\n audioSampleRate?: AudioSampleRateType;\r\n /**\r\n * Audio bitrate of the added stream to the live interactive streaming. The default value is 48 Kbps.\r\n *\r\n * **Note**\r\n *\r\n * We recommend you use the default value and not reset it.\r\n */\r\n audioBitrate?: number;\r\n /**\r\n * Audio channels to add into the live streaming. The value ranges between 1 and 2. The default value is 1.\r\n *\r\n * **Note**\r\n *\r\n * We recommend you use the default value and not reset it.\r\n */\r\n audioChannels?: AudioChannel;\r\n\r\n constructor(params?: {\r\n width?: number;\r\n height?: number;\r\n videoGop?: number;\r\n videoFramerate?: VideoFrameRate;\r\n videoBitrate?: number;\r\n audioSampleRate?: AudioSampleRateType;\r\n audioBitrate?: number;\r\n audioChannels?: AudioChannel;\r\n }) {\r\n if (params) {\r\n this.width = params.width;\r\n this.height = params.height;\r\n this.videoGop = params.videoGop;\r\n this.videoFramerate = params.videoFramerate;\r\n this.videoBitrate = params.videoBitrate;\r\n this.audioSampleRate = params.audioSampleRate;\r\n this.audioBitrate = params.audioBitrate;\r\n this.audioChannels = params.audioChannels;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The metronome configuration, which is set in [`startRhythmPlayer`]{@link startRhythmPlayer} or [`configRhythmPlayer`]{@link configRhythmPlayer}.\r\n *\r\n * @since v3.4.2\r\n */\r\nexport class RhythmPlayerConfig {\r\n /**\r\n * The number of beats per measure. The range is 1 to 9. The default value is 4, which means that each measure contains one downbeat and three upbeats.\r\n */\r\n beatsPerMeasure?: number;\r\n /**\r\n * Tempo (beats per minute). The range is 60 to 360. The default value is 60, which means that the metronome plays 60 beats in one minute.\r\n */\r\n beatsPerMinute?: number;\r\n /**\r\n * Whether to publish the sound of the metronome to remote users:\r\n * - `true`: (Default) Publish. Both the local user and remote users can hear the metronome.\r\n * - `false`: Do not publish. Only the local user can hear the metronome.\r\n */\r\n publish?: boolean;\r\n\r\n constructor(params?: {\r\n beatsPerMeasure?: number;\r\n beatsPerMinute?: number;\r\n publish?: boolean;\r\n }) {\r\n if (params) {\r\n this.beatsPerMeasure = params.beatsPerMeasure;\r\n this.beatsPerMinute = params.beatsPerMinute;\r\n this.publish = params.publish;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The definition of CameraCapturerConfiguration.\r\n */\r\nexport class CameraCapturerConfiguration {\r\n /**\r\n * The camera capture preference.\r\n */\r\n preference?: CameraCaptureOutputPreference;\r\n /**\r\n * The width (px) of the video image captured by the local camera. To customize the width of the video image, set `preference` as [`Manual`]{@link CameraCaptureOutputPreference.Manual} first, and then use `captureWidth`.\r\n *\r\n * @since v3.3.1.\r\n */\r\n captureWidth?: number;\r\n /**\r\n * The height (px) of the video image captured by the local camera. To customize the height of the video image, set `preference` as [`Manual`]{@link CameraCaptureOutputPreference.Manual} first, and then use `captureHeight`.\r\n *\r\n * @since v3.3.1.\r\n */\r\n captureHeight?: number;\r\n /**\r\n * The camera direction.\r\n */\r\n cameraDirection?: CameraDirection;\r\n\r\n constructor(params?: {\r\n preference?: CameraCaptureOutputPreference;\r\n captureWidth?: number;\r\n captureHeight?: number;\r\n cameraDirection?: CameraDirection;\r\n }) {\r\n if (params) {\r\n this.preference = params.preference;\r\n this.captureWidth = params.captureWidth;\r\n this.captureHeight = params.captureHeight;\r\n this.cameraDirection = params.cameraDirection;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The channel media options.\r\n */\r\nexport class ChannelMediaOptions {\r\n /**\r\n * Determines whether to subscribe to audio streams when the user joins the channel.\r\n * - `true`: (Default) Subscribe.\r\n * - `false`: Do not subscribe.\r\n *\r\n * This member serves a similar function to the [`muteAllRemoteAudioStreams`]{@link RtcEngine.muteAllRemoteAudioStreams} method. After joining the channel, you can call the `muteAllRemoteAudioStreams` method to set whether to subscribe to audio streams in the channel.\r\n */\r\n autoSubscribeAudio?: boolean;\r\n /**\r\n * Determines whether to subscribe to video streams when the user joins the channel.\r\n * - `true`: (Default) Subscribe.\r\n * - `false`: Do not subscribe.\r\n *\r\n * This member serves a similar function to the [`muteAllRemoteVideoStreams`]{@link RtcEngine.muteAllRemoteVideoStreams} method. After joining the channel, you can call the `muteAllRemoteVideoStreams` method to set whether to subscribe to audio streams in the channel.\r\n */\r\n autoSubscribeVideo?: boolean;\r\n /**\r\n * Determines whether to publish the local audio stream when the user joins a channel:\r\n * - `true`: (Default) Publish.\r\n * - `false`: Do not publish.\r\n *\r\n * This member serves a similar function to the [`muteLocalAudioStream`]{@link RtcEngine.muteLocalAudioStream} method.\r\n * After the user joins the channel, you can call the `muteLocalAudioStream` method to set whether to publish the local audio stream in the channel.\r\n *\r\n * @since v3.4.5\r\n */\r\n publishLocalAudio?: boolean;\r\n /**\r\n * Determines whether to publish the local video stream when the user joins a channel:\r\n * - `true`: (Default) Publish.\r\n * - `false`: Do not publish.\r\n *\r\n * This member serves a similar function to the [`muteLocalVideoStream`]{@link RtcEngine.muteLocalVideoStream} method.\r\n * After the user joins the channel, you can call the `muteLocalVideoStream` method to set whether to publish the local video stream in the channel.\r\n *\r\n * @since v3.4.5\r\n */\r\n publishLocalVideo?: boolean;\r\n\r\n constructor(params?: {\r\n autoSubscribeAudio?: boolean;\r\n autoSubscribeVideo?: boolean;\r\n publishLocalAudio?: boolean;\r\n publishLocalVideo?: boolean;\r\n }) {\r\n if (params) {\r\n this.autoSubscribeAudio = params.autoSubscribeAudio;\r\n this.autoSubscribeVideo = params.autoSubscribeVideo;\r\n this.publishLocalAudio = params.publishLocalAudio;\r\n this.publishLocalVideo = params.publishLocalVideo;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Definition of `EncryptionConfig`.\r\n *\r\n * @since v3.1.2.\r\n */\r\nexport class EncryptionConfig {\r\n /**\r\n * Encryption mode. The default encryption mode is `AES128GCM2`.\r\n * See [`EncryptionMode`]{@link EncryptionMode}.\r\n */\r\n encryptionMode?: EncryptionMode;\r\n /**\r\n * Encryption key in string type with unlimited length. Agora recommends using a 32-byte key.\r\n *\r\n * **Note**\r\n *\r\n * If you do not set an encryption key or set it as null, you cannot use the built-in encryption, and the SDK returns [`InvalidArgument(2)`]{@link ErrorCode.InvalidArgument}.\r\n */\r\n encryptionKey?: string;\r\n /**\r\n * The salt with the length of 32 bytes. Agora recommends using OpenSSL to generate the salt on your server.\r\n * For details, see *Media Stream Encryption*.\r\n *\r\n * @since v3.4.5\r\n *\r\n * Note: This parameter is only valid when you set the encryption mode as `AES128GCM2` or `AES256GCM2`.\r\n * Ensure that this parameter meets the following requirements:\r\n * - Android: This parameter is not 0.\r\n * - iOS: This parameter is not nil or 0, and the data length is 32 bytes.\r\n */\r\n encryptionKdfSalt?: number[];\r\n\r\n constructor(params?: {\r\n encryptionMode?: EncryptionMode;\r\n encryptionKey?: string;\r\n encryptionKdfSalt?: number[];\r\n }) {\r\n if (params) {\r\n this.encryptionMode = params.encryptionMode;\r\n this.encryptionKey = params.encryptionKey;\r\n this.encryptionKdfSalt = params.encryptionKdfSalt;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Statistics of the call.\r\n */\r\nexport interface RtcStats {\r\n /**\r\n * Call duration in seconds, represented by an aggregate value.\r\n */\r\n duration: number;\r\n /**\r\n * Total number of bytes transmitted, represented by an aggregate value.\r\n */\r\n txBytes: number;\r\n /**\r\n * Total number of bytes received, represented by an aggregate value.\r\n */\r\n rxBytes: number;\r\n /**\r\n * Total number of audio bytes sent (bytes), represented by an aggregate value.\r\n */\r\n txAudioBytes: number;\r\n /**\r\n * Total number of video bytes sent (bytes), represented by an aggregate value.\r\n */\r\n txVideoBytes: number;\r\n /**\r\n * Total number of audio bytes received (bytes), represented by an aggregate value.\r\n */\r\n rxAudioBytes: number;\r\n /**\r\n * Total number of video bytes received (bytes), represented by an aggregate value.\r\n */\r\n rxVideoBytes: number;\r\n /**\r\n * Transmission bitrate in Kbps, represented by an instantaneous value.\r\n */\r\n txKBitRate: number;\r\n /**\r\n * Receive bitrate (Kbps), represented by an instantaneous value.\r\n */\r\n rxKBitRate: number;\r\n /**\r\n * The transmission bitrate of the audio packet (Kbps), represented by an instantaneous value.\r\n */\r\n txAudioKBitRate: number;\r\n /**\r\n * Audio receive bitrate (Kbps), represented by an instantaneous value.\r\n */\r\n rxAudioKBitRate: number;\r\n /**\r\n * Video transmission bitrate (Kbps), represented by an instantaneous value.\r\n */\r\n txVideoKBitRate: number;\r\n /**\r\n * Video receive bitrate (Kbps), represented by an instantaneous value.\r\n */\r\n rxVideoKBitRate: number;\r\n /**\r\n * The number of users in the channel.\r\n * - `COMMUNICATION` profile: The number of users in the channel.\r\n * - `LiveBroadcasting` profile:\r\n * - If the local user is an audience member: The number of users in the channel = The number of hosts in the channel + 1.\r\n * - If the local user is a host: The number of users in the channel = The number of hosts in the channel.\r\n */\r\n userCount: number;\r\n /**\r\n * Client-server latency.\r\n */\r\n lastmileDelay: number;\r\n /**\r\n * The packet loss rate (%) from the local client to Agora's edge server, before network countermeasures.\r\n */\r\n txPacketLossRate: number;\r\n /**\r\n * The packet loss rate (%) from Agora's edge server to the local client, before network countermeasures.\r\n */\r\n rxPacketLossRate: number;\r\n /**\r\n * System CPU usage (%).\r\n *\r\n * **Note**\r\n *\r\n * - The `cpuTotalUsage` reported in the `LeaveChannel` callback is always 0.\r\n * - As of Android 8.1, you might not be able to get the CPU usage from this attribute due to system limitations.\r\n */\r\n cpuTotalUsage: number;\r\n /**\r\n * Application CPU usage (%).\r\n *\r\n * **Note**\r\n *\r\n * - The `cpuAppUsage` reported in the `LeaveChannel` callback is always 0.\r\n * - - As of Android 8.1, you might not be able to get the CPU usage from this attribute due to system limitations.\r\n */\r\n cpuAppUsage: number;\r\n /**\r\n * The round-trip time delay from the client to the local router.\r\n *\r\n * **Note**\r\n * (iOS only) Since v3.1.2, this parameter is disabled by default. See [FAQ](https://docs.agora.io/en/faq/local_network_privacy) for details. If you need to enable this parameter, contact support@agora.io.\r\n */\r\n gatewayRtt: number;\r\n /**\r\n * The memory usage ratio of the app (%).\r\n *\r\n * **Note**\r\n *\r\n * This value is for reference only. Due to system limitations, you may not get the value of this member.\r\n */\r\n memoryAppUsageRatio: number;\r\n /**\r\n * The memory usage ratio of the system (%).\r\n *\r\n * **Note**\r\n *\r\n * This value is for reference only. Due to system limitations, you may not get the value of this member.\r\n */\r\n memoryTotalUsageRatio: number;\r\n /**\r\n * The memory usage of the app (KB).\r\n *\r\n * **Note**\r\n *\r\n * This value is for reference only. Due to system limitations, you may not get the value of this member.\r\n */\r\n memoryAppUsageInKbytes: number;\r\n}\r\n\r\n/**\r\n * Properties of the audio volume information. An array containing the user ID and volume information for each speaker.\r\n */\r\nexport interface AudioVolumeInfo {\r\n /**\r\n * The user ID of the speaker. The uid of the local user is 0.\r\n */\r\n uid: number;\r\n /**\r\n * The sum of the voice volume and audio-mixing volume of the speaker. The value ranges between 0 (lowest volume) and 255 (highest volume).\r\n */\r\n volume: number;\r\n /**\r\n * Voice activity status of the local user.\r\n * - 0: The local user is not speaking.\r\n * - 1: The local user is speaking.\r\n *\r\n * **Note**\r\n * - The `vad` parameter cannot report the voice activity status of the remote users. In the remote users' callback, `vad` is always 1.\r\n * - Ensure that you set `report_vad(true)` in the [`enableAudioVolumeIndication`]{@link RtcEngine.enableAudioVolumeIndication} method to enable the voice activity detection of the local user.\r\n */\r\n vad: number;\r\n /**\r\n * The channel ID, which indicates which channel the speaker is in.\r\n */\r\n channelId: string;\r\n}\r\n\r\n/**\r\n * The rectangular area.\r\n */\r\nexport interface Rect {\r\n /**\r\n * The horizontal coordinate of the left side of the rectangular area.\r\n */\r\n left: number;\r\n /**\r\n * The vertical coordinate of the upper side of the rectangular area.\r\n */\r\n top: number;\r\n /**\r\n * The horizontal coordinate of the right side of the rectangular area.\r\n */\r\n right: number;\r\n /**\r\n * The vertical coordinate of the bottom side of the rectangular area.\r\n */\r\n bottom: number;\r\n}\r\n\r\n/**\r\n * The one-way last-mile probe result.\r\n */\r\nexport interface LastmileProbeOneWayResult {\r\n /**\r\n * The packet loss rate (%).\r\n */\r\n packetLossRate: number;\r\n /**\r\n * The network jitter (ms).\r\n */\r\n jitter: number;\r\n /**\r\n * The estimated available bandwidth (bps).\r\n */\r\n availableBandwidth: number;\r\n}\r\n\r\n/**\r\n * Statistics of the lastmile probe.\r\n */\r\nexport interface LastmileProbeResult {\r\n /**\r\n * The state of the probe test.\r\n */\r\n state: LastmileProbeResultState;\r\n /**\r\n * The round-trip delay time (ms).\r\n */\r\n rtt: number;\r\n /**\r\n * The uplink last-mile network report.\r\n */\r\n uplinkReport: LastmileProbeOneWayResult;\r\n /**\r\n * The downlink last-mile network report.\r\n */\r\n downlinkReport: LastmileProbeOneWayResult;\r\n}\r\n\r\n/**\r\n * Statistics of the local audio stream.\r\n */\r\nexport interface LocalAudioStats {\r\n /**\r\n * The number of channels.\r\n */\r\n numChannels: number;\r\n /**\r\n * The sample rate (Hz).\r\n */\r\n sentSampleRate: number;\r\n /**\r\n * The average sending bitrate (Kbps).\r\n */\r\n sentBitrate: number;\r\n /**\r\n * The video packet loss rate (%) from the local client to the Agora edge server before applying the anti-packet loss strategies.\r\n *\r\n * @since v3.1.2.\r\n */\r\n txPacketLossRate: number;\r\n}\r\n\r\n/**\r\n * Statistics of the local video.\r\n */\r\nexport interface LocalVideoStats {\r\n /**\r\n * Bitrate (Kbps) sent in the reported interval, which does not include the bitrate of the re-transmission video after the packet loss.\r\n */\r\n sentBitrate: number;\r\n /**\r\n * Frame rate (fps) sent in the reported interval, which does not include the frame rate of the re-transmission video after the packet loss.\r\n */\r\n sentFrameRate: number;\r\n /**\r\n * The encoder output frame rate (fps) of the local video.\r\n */\r\n encoderOutputFrameRate: number;\r\n /**\r\n * The renderer output frame rate (fps) of the local video.\r\n */\r\n rendererOutputFrameRate: number;\r\n /**\r\n * The target bitrate (Kbps) of the current encoder. This value is estimated by the SDK based on the current network conditions.\r\n */\r\n targetBitrate: number;\r\n /**\r\n * The target frame rate (fps) of the current encoder.\r\n */\r\n targetFrameRate: number;\r\n /**\r\n * Quality change of the local video in terms of target frame rate and target bit rate since last count.\r\n */\r\n qualityAdaptIndication: VideoQualityAdaptIndication;\r\n /**\r\n * The encoding bitrate (Kbps), which does not include the bitrate of the re-transmission video after packet loss.\r\n */\r\n encodedBitrate: number;\r\n /**\r\n * The width of the encoding frame (px).\r\n */\r\n encodedFrameWidth: number;\r\n /**\r\n * The height of the encoding frame (px).\r\n */\r\n encodedFrameHeight: number;\r\n /**\r\n * The value of the sent frame rate, represented by an aggregate value.\r\n */\r\n encodedFrameCount: number;\r\n /**\r\n * The codec type of the local video.\r\n */\r\n codecType: VideoCodecType;\r\n /**\r\n * The video packet loss rate (%) from the local client to the Agora edge server before applying the anti-packet loss strategies.\r\n *\r\n * @since v3.1.2.\r\n */\r\n txPacketLossRate: number;\r\n /**\r\n * The capture frame rate (fps) of the local video.\r\n *\r\n * @since v3.1.2.\r\n */\r\n captureFrameRate: number;\r\n /**\r\n * The brightness level of the video image captured by the local camera. See [`CaptureBrightnessLevelType`]{@link CaptureBrightnessLevelType}.\r\n *\r\n * @since v3.3.1.\r\n */\r\n captureBrightnessLevel: CaptureBrightnessLevelType;\r\n}\r\n\r\n/**\r\n * Statistics of the remote audio.\r\n */\r\nexport interface RemoteAudioStats {\r\n /**\r\n * User ID of the user sending the audio streams.\r\n */\r\n uid: number;\r\n /**\r\n * Audio quality received by the user.\r\n */\r\n quality: NetworkQuality;\r\n /**\r\n * Network delay (ms) from the sender to the receiver.\r\n */\r\n networkTransportDelay: number;\r\n /**\r\n * Network delay (ms) from the receiver to the jitter buffer.\r\n *\r\n * **Note**\r\n *\r\n * When the receiver is an audience member and `AudienceLatencyLevelType` is `1`, this parameter does not take effect.\r\n */\r\n jitterBufferDelay: number;\r\n /**\r\n * Packet loss rate in the reported interval.\r\n */\r\n audioLossRate: number;\r\n /**\r\n * The number of channels.\r\n */\r\n numChannels: number;\r\n /**\r\n * The sample rate (Hz) of the received audio stream in the reported interval.\r\n */\r\n receivedSampleRate: number;\r\n /**\r\n * The average bitrate (Kbps) of the received audio stream in the reported interval.\r\n */\r\n receivedBitrate: number;\r\n /**\r\n * The total freeze time (ms) of the remote audio stream after the remote user joins the channel. In the reported interval, audio freeze occurs when the audio frame loss rate reaches 4%. totalFrozenTime = The audio freeze time × 2 × 1000 (ms).\r\n */\r\n totalFrozenTime: number;\r\n /**\r\n * The total audio freeze time as a percentage (%) of the total time when the audio is available.\r\n */\r\n frozenRate: number;\r\n /**\r\n * The total time (ms) when the remote user in the `Communication` profile or the remote broadcaster in the `LiveBroadcasting` profile neither stops sending the audio stream nor disables the audio module after joining the channel.\r\n */\r\n totalActiveTime: number;\r\n /**\r\n * The total active time (ms) of the remote audio stream after the remote user publish the audio stream.\r\n *\r\n * @since v3.1.2.\r\n *\r\n */\r\n publishDuration: number;\r\n /**\r\n * Quality of experience (QoE) of the local user when receiving a remote audio stream. See [`ExperienceQualityType`]{@link ExperienceQualityType}.\r\n *\r\n * @since 3.3.1.\r\n */\r\n qoeQuality: ExperienceQualityType;\r\n /**\r\n * The reason for poor QoE of the local user when receiving a remote audio stream. See [`ExperiencePoorReason`]{@link ExperiencePoorReason}.\r\n *\r\n * @since 3.3.1.\r\n */\r\n qualityChangedReason: ExperiencePoorReason;\r\n /**\r\n * The quality of the remote audio stream as determined by the Agora real-time audio MOS (Mean Opinion Score) measurement method in the reported interval. The return value ranges from 0 to 500. Dividing the return value by 100 gets the MOS score, which ranges from 0 to 5. The higher the score, the better the audio quality.\r\n *\r\n * @since v3.3.1.\r\n *\r\n * The subjective perception of audio quality corresponding to the Agora\r\n * real-time audio MOS scores is as follows:\r\n *\r\n * | MOS score | Perception of audio quality |\r\n * |-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|\r\n * | Greater than 4 | Excellent. The audio sounds clear and smooth. |\r\n * | From 3.5 to 4 | Good. The audio has some perceptible impairment, but still sounds clear. |\r\n * | From 3 to 3.5 | Fair. The audio freezes occasionally and requires attentive listening. |\r\n * | From 2.5 to 3 | Poor. The audio sounds choppy and requires considerable effort to understand. |\r\n * | From 2 to 2.5 | Bad. The audio has occasional noise. Consecutive audio dropouts occur, resulting in some information loss. The users can communicate only with difficulty. |\r\n * | Less than 2 | Very bad. The audio has persistent noise. Consecutive audio dropouts are frequent, resulting in severe information loss. Communication is nearly impossible. |\r\n *\r\n */\r\n mosValue: number;\r\n}\r\n\r\n/**\r\n * Statistics of the remote video.\r\n */\r\nexport interface RemoteVideoStats {\r\n /**\r\n * User ID of the user sending the video streams.\r\n */\r\n uid: number;\r\n /**\r\n * @deprecated\r\n *\r\n * Time delay (ms). In scenarios where audio and video is synchronized, you can use the value\r\n * of `networkTransportDelay` and `jitterBufferDelay`\r\n * in [`RemoteAudioStats`]{@link RemoteAudioStats} to know the delay statistics of the remote video.\r\n */\r\n delay: number;\r\n /**\r\n * Width (pixels) of the remote video.\r\n */\r\n width: number;\r\n /**\r\n * Height (pixels) of the remote video.\r\n */\r\n height: number;\r\n /**\r\n * Bitrate (Kbps) received in the reported interval.\r\n */\r\n receivedBitrate: number;\r\n /**\r\n * The decoder output frame rate (fps) of the remote video.\r\n */\r\n decoderOutputFrameRate: number;\r\n /**\r\n * The renderer output frame rate (fps) of the remote video.\r\n */\r\n rendererOutputFrameRate: number;\r\n /**\r\n * Packet loss rate (%) of the remote video stream after network countermeasures.\r\n */\r\n packetLossRate: number;\r\n /**\r\n * Video stream type (high-stream or low-stream).\r\n */\r\n rxStreamType: VideoStreamType;\r\n /**\r\n * The total freeze time (ms) of the remote video stream after the remote user joins the channel.\r\n *\r\n * In a video session where the frame rate is set to no less than 5 fps, video freeze occurs when the time interval between two adjacent\r\n * renderable video frames is more than 500 ms.\r\n */\r\n totalFrozenTime: number;\r\n /**\r\n * The total video freeze time (`totalFrozenTime`) as a percentage (%) of the total active time of the remote video stream (`totalActiveTime`).\r\n */\r\n frozenRate: number;\r\n /**\r\n * The total time (ms) when the remote user in the Communication profile or the remote broadcaster in the Live-broadcast profile neither stops sending the video stream nor disables the video module after joining the channel.\r\n */\r\n totalActiveTime: number;\r\n /**\r\n * The total publish duration (ms) of the remote video stream.\r\n *\r\n * @since v3.1.2.\r\n *\r\n */\r\n publishDuration: number;\r\n}\r\n\r\n/**\r\n * The information of the detected human face.\r\n */\r\nexport interface FacePositionInfo {\r\n /**\r\n * The x coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin,\r\n * the x coordinate represents the relative lateral displacement of the top left corner of the human face to the origin.\r\n */\r\n x: number;\r\n /**\r\n * The y coordinate (px) of the human face in the local video. Taking the top left corner of the captured video as the origin,\r\n * the y coordinate represents the relative longitudinal displacement of the top left corner of the human face to the origin.\r\n */\r\n y: number;\r\n /**\r\n * The width (px) of the human face in the captured video.\r\n */\r\n width: number;\r\n /**\r\n * The height (px) of the human face in the captured video.\r\n */\r\n height: number;\r\n /**\r\n * The distance (cm) between the human face and the screen.\r\n */\r\n distance: number;\r\n}\r\n\r\n/**\r\n * The detailed options of a user.\r\n *\r\n * @since v3.2.0.\r\n */\r\nexport class ClientRoleOptions {\r\n /**\r\n * The latency level of an audience member in a live interactive streaming. See {@link AudienceLatencyLevelType}.\r\n */\r\n audienceLatencyLevel?: AudienceLatencyLevelType;\r\n\r\n constructor(params?: { audienceLatencyLevel?: AudienceLatencyLevelType }) {\r\n if (params) {\r\n this.audienceLatencyLevel = params.audienceLatencyLevel;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Log file configurations.\r\n *\r\n * @since v3.3.1.\r\n */\r\nexport class LogConfig {\r\n /**\r\n * The absolute path of log files. The default file path is as follows:\r\n * - Android: `/storage/emulated/0/Android/data//files/agorasdk.log`\r\n * - iOS: `App Sandbox/Library/caches/agorasdk.log`\r\n * Ensure that the directory for the log files exists and is writable. You can use this parameter to rename the log files.\r\n */\r\n filePath?: string;\r\n /**\r\n * The size (KB) of a log file. The default value is 1024 KB. If you set `fileSize` to 1024 KB, the SDK outputs at most 5 MB log files; if you set it to less than 1024 KB, the setting is invalid, and the maximum size of a log file is still 1024 KB.\r\n */\r\n fileSize?: number;\r\n /**\r\n * The output log level of the SDK.\r\n *\r\n * For example, if you set the log level to `WARN`, the SDK outputs the logs within levels `FATAL`, `ERROR`, and `WARN`.\r\n *\r\n * See [`LogLevel`]{@link enum LogLevel}.\r\n */\r\n level?: LogLevel;\r\n\r\n constructor(params?: {\r\n filePath?: string;\r\n fileSize?: number;\r\n level?: LogLevel;\r\n }) {\r\n if (params) {\r\n this.filePath = params.filePath;\r\n this.fileSize = params.fileSize;\r\n this.level = params.level;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The configurations for the data stream.\r\n *\r\n * @since v3.3.1\r\n *\r\n * | `syncWithAudio` | `ordered` | SDK behaviors |\r\n * | :-------------- | :-------- | :----------------------------------------------------------- |\r\n * | `false` | `false` | The SDK triggers the `StreamMessage` callback immediately after the receiver receives a data packet. |\r\n * | `true` | `false` |
  • If the data packet delay is within the audio delay, the SDK triggers the StreamMessage callback when the synchronized audio packet is played out
  • If the data packet delay exceeds the audio delay, the SDK triggers the StreamMessage callback as soon as the data packet is received. In this case, the data packet is not synchronized with the audio packet.
. |\r\n * | `false` | `true` |
  • If the delay of a data packet is within five seconds, the SDK corrects the order of the data packet.
  • If the delay of a data packet exceeds five seconds, the SDK discards the data packet.
|\r\n * | `true` | `true` |
  • If the delay of a data packet is within the audio delay, the SDK corrects the order of the data packet.
  • If the delay of a data packet exceeds the audio delay, the SDK discards this data packet.
|\r\n */\r\nexport class DataStreamConfig {\r\n /**\r\n * Whether to synchronize the data packet with the published audio packet.\r\n * - `true`: Synchronize the data packet with the audio packet.\r\n * - `false`: Do not synchronize the data packet with the audio packet.\r\n *\r\n * When you set the data packet to synchronize with the audio, then if the data packet delay is within the audio delay range, the SDK triggers the [`StreamMessage`]{@link RtcEngineEvents.StreamMessage} callback when the synchronized audio packet is played out. Do not set this parameter as `true` if you need the receiver to receive the data packet immediately. Agora recommends that you set this parameter to `true` only when you need to implement specific functions, for example lyric synchronization.\r\n */\r\n syncWithAudio: boolean;\r\n /**\r\n * Whether the SDK guarantees that the receiver receives the data in the sent order.\r\n * - `true`: Guarantee that the receiver receives the data in the sent order.\r\n * - `false`: Do not guarantee that the receiver receives the data in the sent order.\r\n *\r\n * Do not set this parameter to `true` if you need the receiver to receive the data immediately.\r\n */\r\n ordered: boolean;\r\n\r\n constructor(syncWithAudio: boolean, ordered: boolean) {\r\n this.syncWithAudio = syncWithAudio;\r\n this.ordered = ordered;\r\n }\r\n}\r\n\r\n/**\r\n * Configurations for the [`RtcEngine`]{@link RtcEngine}.\r\n *\r\n * @since v3.4.5\r\n */\r\nexport class RtcEngineContext {\r\n /**\r\n * The App ID issued to you by Agora. See [How to get the App ID](https://docs.agora.io/en/Agora%20Platform/token#get-an-app-id).\r\n * Only users in apps with the same App ID can join the same channel and communicate with each other. Use an App ID to create only\r\n * one `IRtcEngine` instance. To change your App ID, call `release` to destroy the current `IRtcEngine` instance and then call `createAgoraRtcEngine`\r\n * and `initialize` to create an `IRtcEngine` instance with the new App ID.\r\n */\r\n appId: string;\r\n /**\r\n * The region for connection. This advanced feature applies to scenarios that have regional restrictions.\r\n *\r\n * For the regions that Agora supports, see [`AreaCode`]{@link AreaCode}. The area codes support bitwise operation.\r\n *\r\n * After specifying the region, the SDK connects to the Agora servers within that region.\r\n *\r\n */\r\n areaCode?: AreaCode[];\r\n /**\r\n * The configuration of the log files that the SDK outputs. See [`LogConfig`]{@link LogConfig}.\r\n *\r\n * By default, the SDK outputs five log files, `agorasdk.log`, `agorasdk_1.log`, `agorasdk_2.log`, `agorasdk_3.log`, `agorasdk_4.log`, each with a default size of 1024 KB. These log files are encoded in UTF-8. The SDK writes the latest logs in `agorasdk.log`. When `agorasdk.log` is full, the SDK deletes the log file with the earliest modification time among the other four, renames `agorasdk.log` to the name of the deleted log file, and creates a new `agorasdk.log` to record latest logs.\r\n *\r\n * The log file records all log data for the SDK’s operation. Ensure that the directory for the log file exists and is writable.\r\n */\r\n logConfig?: LogConfig;\r\n\r\n constructor(\r\n appId: string,\r\n params?: { areaCode?: AreaCode[]; logConfig?: LogConfig }\r\n ) {\r\n this.appId = appId;\r\n if (params) {\r\n this.areaCode = params.areaCode;\r\n this.logConfig = params.logConfig;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n *\r\n * Configurations for the [`RtcEngine`]{@link RtcEngine}.\r\n *\r\n * @deprecated As of v3.4.5, this class is deprecated. Use [`RtcEngineContext`]{@link RtcEngineContext} instead.\r\n *\r\n * @since v3.3.1\r\n */\r\nexport class RtcEngineConfig extends RtcEngineContext {}\r\n\r\n/**\r\n * Recording configuration, which is set in [`startAudioRecordingWithConfig`]{@link startAudioRecordingWithConfig}.\r\n */\r\nexport class AudioRecordingConfiguration {\r\n /**\r\n *\r\n * The absolute path (including the filename extensions) of the recording file. For example:\r\n * - On Android: `/sdcard/emulated/0/audio.aac`.\r\n * - On iOS: `/var/mobile/Containers/Data/audio.aac`.\r\n *\r\n * **Note**\r\n * Ensure that the path you specify exists and is writable.\r\n */\r\n filePath: string;\r\n /**\r\n * Audio recording quality. See [`AudioRecordingQuality`]{@link AudioRecordingQuality}.\r\n *\r\n * **Note** This parameter applies to AAC files only.\r\n */\r\n recordingQuality?: AudioRecordingQuality;\r\n /**\r\n * Recording content. See [`AudioRecordingPosition`]{@link AudioRecordingPosition}.\r\n */\r\n recordingPosition?: AudioRecordingPosition;\r\n /**\r\n * Recording sample rate (Hz). The following values are supported:\r\n * - 16000\r\n * - (Default) 32000\r\n * - 44100\r\n * - 48000\r\n *\r\n * **Note**\r\n * If this parameter is set to `44100` or `48000`, for better recording effects, Agora recommends recording WAV files or AAC files whose `recordingQuality` is `Medium` or `High`.\r\n *\r\n */\r\n recordingSampleRate?: AudioSampleRateType;\r\n /**\r\n * The recorded audio channel. The following values are supported:\r\n * - `1`: (Default) Mono channel.\r\n * - `2`: Dual channel.\r\n *\r\n * @since v3.6.2\r\n */\r\n recordingChannel?: number;\r\n\r\n constructor(\r\n filePath: string,\r\n params?: {\r\n recordingQuality?: AudioRecordingQuality;\r\n recordingPosition?: AudioRecordingPosition;\r\n recordingSampleRate?: AudioSampleRateType;\r\n recordingChannel?: number;\r\n }\r\n ) {\r\n this.filePath = filePath;\r\n if (params) {\r\n this.recordingQuality = params.recordingQuality;\r\n this.recordingPosition = params.recordingPosition;\r\n this.recordingSampleRate = params.recordingSampleRate;\r\n this.recordingChannel = params.recordingChannel;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The custom background image.\r\n *\r\n * @since v3.5.0.3\r\n */\r\nexport class VirtualBackgroundSource {\r\n /**\r\n * The type of the custom background image. See [`VirtualBackgroundSourceType`]{@link VirtualBackgroundSourceType}.\r\n */\r\n backgroundSourceType?: VirtualBackgroundSourceType;\r\n /**\r\n * The color of the custom background image.\r\n * The format is a hexadecimal integer defined by RGB, without the # sign, such as 0xFFB6C1 for light pink.\r\n * The default value is 0xFFFFFF, which signifies white. The value range is [0x000000,0xffffff]. If the value is invalid, the SDK replaces the original background image with a white background image.\r\n *\r\n * **Note**\r\n * This parameter takes effect only when the type of the custom background image is `Color`.\r\n */\r\n color?: Color;\r\n /**\r\n * The local absolute path of the custom background image. PNG and JPG formats are supported.\r\n * If the path is invalid, the SDK replaces the original background image with a white background image.\r\n *\r\n * **Note**\r\n * This parameter takes effect only when the type of the custom background image is `Img`.\r\n */\r\n source?: string;\r\n /**\r\n * The degree of blurring applied to the custom background image. See [`VirtualBackgroundBlurDegree`]{@link VirtualBackgroundBlurDegree}.\r\n *\r\n * **Since** v3.5.2\r\n */\r\n blur_degree?: VirtualBackgroundBlurDegree;\r\n\r\n constructor(params?: {\r\n backgroundSourceType?: VirtualBackgroundSourceType;\r\n color?: Color;\r\n source?: string;\r\n blur_degree?: VirtualBackgroundBlurDegree;\r\n }) {\r\n if (params) {\r\n this.backgroundSourceType = params.backgroundSourceType;\r\n this.color = params.color;\r\n this.source = params.source;\r\n this.blur_degree = params.blur_degree;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * The information of an audio file, which is reported in [`RequestAudioFileInfo`]{@link RequestAudioFileInfo}.\r\n *\r\n * @since v3.5.2\r\n */\r\nexport interface AudioFileInfo {\r\n /** The file path.\r\n */\r\n filePath: string;\r\n /** The file duration (ms).\r\n */\r\n durationMs: number;\r\n}\r\n\r\n/**\r\n * The configuration of the audio call loop test.\r\n *\r\n * @since v3.5.2\r\n */\r\nexport class EchoTestConfiguration {\r\n /**\r\n * Whether to enable the audio device for the call loop test:\r\n * - true: (Default) Enables the audio device. To test the audio device, set this parameter as `true`.\r\n * - false: Disables the audio device.\r\n */\r\n enableAudio?: boolean;\r\n /**\r\n * Reversed for future use.\r\n */\r\n enableVideo?: boolean;\r\n /**\r\n * The token used to secure the audio call loop test. If you do not enable App Certificate in Agora\r\n * Console, you do not need to pass a value in this parameter; if you have enabled App Certificate in Agora Console,\r\n * you must pass a token in this parameter, the `uid` used when you generate the token must be 0xFFFFFFFF, and the\r\n * channel name used must be the channel name that identifies each audio loop tested. For server-side\r\n * token generation, see [Authenticate Your Users with Tokens](https://docs.agora.io/en/Interactive%20Broadcast/token_server?platform=All%20Platforms).\r\n */\r\n token?: string;\r\n /**\r\n * The channel name that identifies each audio call loop. To ensure proper loop test functionality, the\r\n * channel name passed in to identify each loop test cannot be the same when users of the same project (App ID)\r\n * perform audio call loop tests on different devices.\r\n */\r\n channelId?: string;\r\n\r\n constructor(params?: {\r\n enableAudio?: boolean;\r\n enableVideo?: boolean;\r\n token?: string;\r\n channelId?: string;\r\n }) {\r\n if (params) {\r\n this.enableAudio = params.enableAudio;\r\n this.enableVideo = params.enableVideo;\r\n this.token = params.token;\r\n this.channelId = params.channelId;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Configurations for the local audio and video recording.\r\n *\r\n * @since v3.6.2\r\n */\r\nexport class MediaRecorderConfiguration {\r\n /**\r\n * The absolute path (including the filename extensions) for the recording file.\r\n * For example:\r\n * - Android: `/storage/emulated/0/Android/data//files/example.mp4`\r\n * - iOS: `/App Sandbox/Library/Caches/example.mp4`\r\n *\r\n * **Note**\r\n * Ensure that the specified path exists and is writable.\r\n */\r\n storagePath: string;\r\n /**\r\n * The format of the recording file. The SDK currently supports only `1`, which is MP4 format.\r\n */\r\n containerFormat: number;\r\n /**\r\n * The recording content:\r\n * - `0x1`: Only audio.\r\n * - `0x2`: Only video.\r\n * - `0x3`: (Default) Audio and video.\r\n */\r\n streamType: number;\r\n /**\r\n * The maximum recording duration, in milliseconds. The default value is `120000`.\r\n */\r\n maxDurationMs: number;\r\n /**\r\n * The interval (ms) of updating the recording information.\r\n * The value range is [1000,10000]. Based on the set value of `recorderInfoUpdateInterval`,\r\n * the SDK triggers the [`RecorderInfoUpdated`]{@link RtcEngineEvents.RecorderInfoUpdated} callback to report the updated recording information.\r\n */\r\n recorderInfoUpdateInterval: number;\r\n\r\n constructor(\r\n storagePath: string,\r\n containerFormat: number,\r\n streamType: number,\r\n maxDurationMs: number,\r\n recorderInfoUpdateInterval: number\r\n ) {\r\n this.storagePath = storagePath;\r\n this.containerFormat = containerFormat;\r\n this.streamType = streamType;\r\n this.maxDurationMs = maxDurationMs;\r\n this.recorderInfoUpdateInterval = recorderInfoUpdateInterval;\r\n }\r\n}\r\n\r\n/**\r\n * @ignore For future use\r\n */\r\nexport class ContentInspectModule {\r\n type?: number;\r\n interval?: number;\r\n}\r\n\r\n/**\r\n * @ignore For future use\r\n */\r\nexport class ContentInspectConfig {\r\n extraInfo?: string;\r\n modules?: ContentInspectModule[];\r\n moduleCount?: number;\r\n}\r\n\r\n/**\r\n * @ignore For future use\r\n */\r\nexport class LocalAccessPointConfiguration {\r\n ipList?: string[];\r\n domainList?: string[];\r\n verifyDomainName?: string;\r\n mode?: number;\r\n}\r\n\r\n/**\r\n * The video noise reduction options.\r\n *\r\n * @since v3.6.2\r\n */\r\nexport class VideoDenoiserOptions {\r\n /**\r\n * The video noise reduction mode:\r\n * - `0`: (Default) Automatic mode. The SDK automatically enables or disables the video noise reduction feature according to the ambient light.\r\n * - `1`: Manual mode. Users need to enable or disable the video noise reduction feature manually.\r\n */\r\n denoiserMode?: number;\r\n /**\r\n * The video noise reduction level:\r\n *\r\n * - `0`: (Default) Promotes video quality during video noise reduction.\r\n * `0` balances performance consumption and video noise reduction quality.\r\n * The performance consumption is moderate, the video noise reduction speed is moderate,\r\n * and the overall video quality is optimal.\r\n * - `1`: Promotes reducing performance consumption during video noise reduction.\r\n * `1` prioritizes reducing performance consumption over video noise reduction quality.\r\n * The performance consumption is lower, and the video noise reduction speed is faster.\r\n * To avoid a noticeable shadowing effect (shadows trailing behind moving objects) in the processed video,\r\n * Agora recommends that you use `1` when the camera is fixed.\r\n * - `2`: Enhanced video noise reduction. `2` prioritizes video noise reduction quality over reducing\r\n * performance consumption. The performance consumption is higher, the video noise reduction speed is slower,\r\n * and the video noise reduction quality is better. If `0` is not enough for your video noise reduction needs, you can use `2`.\r\n */\r\n denoiserLevel?: number;\r\n}\r\n\r\n/**\r\n * The low-light enhancement options.\r\n *\r\n * @since v3.6.2\r\n */\r\nexport class LowLightEnhanceOptions {\r\n /**\r\n * The low-light enhancement mode:\r\n *\r\n * - `0`: (Default) Automatic mode. The SDK automatically enables or disables the low-light enhancement feature according\r\n * to the ambient light to compensate for the lighting level or prevent overexposure, as necessary.\r\n * - `1`: Manual mode. Users need to enable or disable the low-light enhancement feature manually.\r\n */\r\n lowlightEnhanceMode?: number;\r\n /**\r\n * The low-light enhancement level:\r\n *\r\n * - `0`: (Default) Promotes video quality during low-light enhancement. It processes the brightness, details,\r\n * and noise of the video image. The performance consumption is moderate, the processing speed is moderate, and\r\n * the overall video quality is optimal.\r\n * - `1`: Promotes performance during low-light enhancement. It processes the brightness and details of the video image.\r\n * The processing speed is faster.\r\n */\r\n lowlightEnhanceLevel?: number;\r\n}\r\n\r\n/**\r\n * The color enhancement options.\r\n *\r\n * @since v3.6.2\r\n */\r\nexport class ColorEnhanceOptions {\r\n /**\r\n * The level of color enhancement.\r\n * The value range is [0.0,1.0]. `0.0` means no color enhancement is applied to the video.\r\n * The higher the value, the higher the level of color enhancement.\r\n * The default value is `0.5` on Android and `0.0` on iOS.\r\n */\r\n strengthLevel?: number;\r\n /**\r\n * The level of skin tone protection.\r\n * The value range is [0.0,1.0].\r\n * `0.0` means no skin tone protection.\r\n * The higher the value, the higher the level of skin tone protection.\r\n * The default value is `1.0`. When the level of color enhancement is higher,\r\n * the portrait skin tone can be significantly distorted, so you need to set the level of skin\r\n * tone protection; when the level of skin tone protection is higher, the color enhancement effect\r\n * can be slightly reduced. Therefore, to get the best color enhancement effect, Agora recommends\r\n * that you adjust strengthLevel and skinProtectLevel to get the most appropriate values.\r\n */\r\n skinProtectLevel?: number;\r\n}\r\n\r\n/**\r\n * Information for the recording file.\r\n *\r\n * @since v3.6.2\r\n */\r\nexport interface RecorderInfo {\r\n /**\r\n * The absolute path of the recording file.\r\n */\r\n fileName: string;\r\n /**\r\n * The recording duration, in milliseconds.\r\n */\r\n durationMs: number;\r\n /**\r\n * The size in bytes of the recording file.\r\n */\r\n fileSize: number;\r\n}\r\n\r\n/**\r\n * @ignore For future user\r\n */\r\nexport interface WlAccStats {\r\n e2eDelayPercent: number;\r\n frozenRatioPercent: number;\r\n lossRatePercent: number;\r\n}\r\n\r\n/**\r\n * The configuration of the screen sharing.\r\n *\r\n * @since v3.7.0\r\n */\r\nexport class ScreenCaptureParameters {\r\n /**\r\n * Determines whether to capture system audio during screen sharing:\r\n * - `true`: Capture.\r\n * - `false`: (Default) Do not capture.\r\n *\r\n * **Note**\r\n * On Android, due to system limitations, capturing system audio is only available for Android API level 29\r\n * and later (that is, Android 10 and later).\r\n */\r\n captureAudio?: boolean;\r\n /**\r\n * The audio configuration for the shared screen stream. See [`ScreenAudioParameters`]{@link ScreenAudioParameters}.\r\n *\r\n * **Note**\r\n * This parameter is only available for scenarios where `captureAudio` is `true`.\r\n */\r\n audioParams?: ScreenAudioParameters;\r\n /**\r\n * Determines whether to capture the screen during screen sharing:\r\n * - `true`: Capture.\r\n * - `false`: (Default) Do not capture.\r\n *\r\n * **Note**\r\n * On Android, due to system limitations, screen capture is only available for Android API level 21\r\n * and later (that is, Android 5 and later).\r\n */\r\n captureVideo?: boolean;\r\n /**\r\n * The video configuration for the shared screen stream. See [`ScreenVideoParameters`]{@link ScreenVideoParameters}.\r\n *\r\n * **Note**\r\n * This parameter is only available for scenarios where `captureVideo` is `false`.\r\n */\r\n videoParams?: ScreenVideoParameters;\r\n}\r\n\r\n/**\r\n * The video configuration for the shared screen stream.\r\n *\r\n * Only available for scenarios where `captureVideo` is `true`.\r\n *\r\n * @since v3.7.0\r\n */\r\nexport class ScreenVideoParameters {\r\n /**\r\n * The video encoding bitrate (Kbps). For recommended values,\r\n * see [Recommended video profiles](https://docs.agora.io/en/Interactive%20Broadcast/game_streaming_video_profile?platform=Android#recommended-video-profiles).\r\n */\r\n bitrate?: number;\r\n /**\r\n * The video encoding frame rate (fps). The default value is 15. For recommended values,\r\n * see [Recommended video profiles](https://docs.agora.io/en/Interactive%20Broadcast/game_streaming_video_profile?platform=Android#recommended-video-profiles).\r\n */\r\n frameRate?: number;\r\n /**\r\n * The video encoding resolution. The default value is 1280 × 720. For recommended values,\r\n * see [Recommended video profiles](https://docs.agora.io/en/Interactive%20Broadcast/game_streaming_video_profile?platform=Android#recommended-video-profiles).\r\n *\r\n * If the aspect ratio is different between `dimensions` and the screen, the SDK adjusts the video encoding resolution according to the\r\n * following rules (using an example value for `dimensions` of 1280 × 720):\r\n * - When the width and height of the screen are both lower than those of `dimensions`, the SDK uses the resolution of the screen for video encoding.\r\n * For example, if the screen is 640 × 360, the SDK uses 640 × 360 for video encoding.\r\n * - When either the width or height of the screen is higher than that of `dimension`, the SDK uses the maximum values that do not exceed those of `dimensions`\r\n * while maintaining the aspect ratio of the screen for video encoding. For example, if the screen is 2000 × 1500, the SDK uses 960 × 720 for video encoding.\r\n *\r\n * **Note**\r\n * - The billing of the screen sharing stream is based on the value of `dimensions`.\r\n * When you do not pass in a value, Agora bills you at 1280 × 720; when you pass a value in,\r\n * Agora bills you at that value. For details, see [Pricing for Real-time Communication](https://docs.agora.io/en/Interactive%20Broadcast/billing_rtc?platform=React%20Native).\r\n * - This value does not indicate the orientation mode of the output ratio. For how to set the video orientation, see [`VideoOutputOrientationMode`]{@link VideoOutputOrientationMode}.\r\n * - Whether the SDK can support a resolution at 720P depends on the performance of the device. If you set 720P but the device cannot support it, the video frame rate can be lower.\r\n */\r\n dimensions?: VideoDimensions;\r\n /**\r\n * The content hint of the screen sharing. See [`VideoContentHint`]{@link VideoContentHint}.\r\n */\r\n contentHint?: VideoContentHint;\r\n}\r\n\r\n/**\r\n * The audio configuration for the shared screen stream.\r\n *\r\n * Only available for scenarios where `captureAudio` is `true`.\r\n *\r\n * @since v3.7.0\r\n */\r\nexport class ScreenAudioParameters {\r\n /**\r\n * The audio sample rate (Hz). The default value is 16000.\r\n */\r\n sampleRate?: number;\r\n /**\r\n * The number of audio channels. The default value is 2, indicating dual channels.\r\n */\r\n channels?: number;\r\n /**\r\n * The volume of the captured system audio. The value range is [0,100]. The default value is 100.\r\n */\r\n captureSignalVolume?: number;\r\n /**\r\n * Determines whether to capture the audio played by the current application:\r\n * - `true`: Capture.\r\n * - `false`: (Default) Do not capture.\r\n */\r\n allowCaptureCurrentApp?: boolean;\r\n}\r\n\r\n/**\r\n * @ignore Contact support@agora.io.\r\n *\r\n * @since v3.7.0\r\n */\r\nexport class SpatialAudioParams {\r\n speaker_azimuth?: number;\r\n speaker_elevation?: number;\r\n speaker_distance?: number;\r\n speaker_orientation?: number;\r\n enable_blur?: boolean;\r\n enable_air_absorb?: boolean;\r\n}\r\n"],"mappings":";;;;;;;;;AAgCA;AACA;AACA;;AAYA;AACA;AACA;AACO,MAAMA,eAAe,CAAC;EAU3BC,WAAWA,CAACC,MAA4C,EAAE;IAT1D;AACF;AACA;IAFEC,eAAA;IAIA;AACF;AACA;IAFEA,eAAA;IAME,IAAID,MAAM,EAAE;MACV,IAAI,CAACE,KAAK,GAAGF,MAAM,CAACE,KAAK;MACzB,IAAI,CAACC,MAAM,GAAGH,MAAM,CAACG,MAAM;IAC7B;EACF;AACF;;AAEA;AACA;AACA;AAFAC,OAAA,CAAAN,eAAA,GAAAA,eAAA;AAGO,MAAMO,yBAAyB,CAAC;EA4OrCN,WAAWA,CAACC,MASX,EAAE;IApPH;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA7BEC,eAAA;IA+BA;AACF;AACA;AACA;IAHEA,eAAA;IAKA;AACF;AACA;IAFEA,eAAA;IAIA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IA/KEA,eAAA;IAiLA;AACF;AACA;AACA;IAHEA,eAAA;IAKA;AACF;AACA;IAFEA,eAAA;IAIA;AACF;AACA;IAFEA,eAAA;IAIA;AACF;AACA;IAFEA,eAAA;IAeE,IAAID,MAAM,EAAE;MACV,IAAI,CAACM,UAAU,GAAGN,MAAM,CAACM,UAAU;MACnC,IAAI,CAACC,SAAS,GAAGP,MAAM,CAACO,SAAS;MACjC,IAAI,CAACC,YAAY,GAAGR,MAAM,CAACQ,YAAY;MACvC,IAAI,CAACC,OAAO,GAAGT,MAAM,CAACS,OAAO;MAC7B,IAAI,CAACC,UAAU,GAAGV,MAAM,CAACU,UAAU;MACnC,IAAI,CAACC,eAAe,GAAGX,MAAM,CAACW,eAAe;MAC7C,IAAI,CAACC,iBAAiB,GAAGZ,MAAM,CAACY,iBAAiB;MACjD,IAAI,CAACC,UAAU,GAAGb,MAAM,CAACa,UAAU;IACrC;EACF;AACF;;AAEA;AACA;AACA;AAFAT,OAAA,CAAAC,yBAAA,GAAAA,yBAAA;AAGO,MAAMS,aAAa,CAAC;EA4BzBf,WAAWA,CAACC,MAMX,EAAE;IAjCH;AACF;AACA;AACA;IAHEC,eAAA;IAKA;AACF;AACA;IAFEA,eAAA;IAIA;AACF;AACA;AACA;IAHEA,eAAA;IAKA;AACF;AACA;AACA;IAHEA,eAAA;IAKA;AACF;AACA;AACA;AACA;AACA;IALEA,eAAA;IAeE,IAAID,MAAM,EAAE;MACV,IAAI,CAACe,uBAAuB,GAAGf,MAAM,CAACe,uBAAuB;MAC7D,IAAI,CAACC,eAAe,GAAGhB,MAAM,CAACgB,eAAe;MAC7C,IAAI,CAACC,eAAe,GAAGjB,MAAM,CAA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","ignoreList":[]}