agora-electron-sdk 4.3.0-dev.1 → 4.3.1-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +11 -4
  2. package/gulpfile.js +11 -4
  3. package/js/Private/AgoraBase.js +121 -24
  4. package/js/Private/AgoraMediaBase.js +15 -3
  5. package/js/Private/IAgoraRtcEngine.js +3 -3
  6. package/js/Private/impl/AgoraMediaBaseImpl.js +11 -1
  7. package/js/Private/impl/IAgoraMediaEngineImpl.js +28 -0
  8. package/js/Private/impl/IAgoraMediaPlayerImpl.js +2 -2
  9. package/js/Private/impl/IAgoraMusicContentCenterImpl.js +1 -1
  10. package/js/Private/impl/IAgoraRtcEngineExImpl.js +37 -0
  11. package/js/Private/impl/IAgoraRtcEngineImpl.js +123 -11
  12. package/js/Private/impl/IAudioDeviceManagerImpl.js +2 -2
  13. package/js/Private/internal/IrisApiEngine.js +6 -0
  14. package/js/Private/internal/MediaEngineInternal.js +25 -5
  15. package/js/Private/internal/MediaPlayerInternal.js +0 -6
  16. package/js/Private/internal/MusicContentCenterInternal.js +0 -4
  17. package/js/Private/internal/RtcEngineExInternal.js +10 -14
  18. package/js/Private/ti/AgoraMediaBase-ti.js +5 -1
  19. package/js/Private/ti/IAgoraRtcEngine-ti.js +1 -0
  20. package/package.json +5 -3
  21. package/scripts/buildJS.js +3 -3
  22. package/scripts/clean.js +6 -35
  23. package/scripts/downloadPrebuild.js +50 -3
  24. package/scripts/synclib.js +32 -12
  25. package/scripts/util.js +29 -0
  26. package/ts/Private/AgoraBase.ts +146 -33
  27. package/ts/Private/AgoraMediaBase.ts +77 -47
  28. package/ts/Private/IAgoraLog.ts +1 -1
  29. package/ts/Private/IAgoraMediaEngine.ts +35 -5
  30. package/ts/Private/IAgoraMediaPlayer.ts +10 -1
  31. package/ts/Private/IAgoraRtcEngine.ts +147 -102
  32. package/ts/Private/IAgoraRtcEngineEx.ts +39 -4
  33. package/ts/Private/IAudioDeviceManager.ts +2 -2
  34. package/ts/Private/extension/IAgoraMediaEngineExtension.ts +3 -1
  35. package/ts/Private/impl/AgoraMediaBaseImpl.ts +15 -0
  36. package/ts/Private/impl/IAgoraMediaEngineImpl.ts +37 -0
  37. package/ts/Private/impl/IAgoraMediaPlayerImpl.ts +2 -2
  38. package/ts/Private/impl/IAgoraMusicContentCenterImpl.ts +1 -1
  39. package/ts/Private/impl/IAgoraRtcEngineExImpl.ts +53 -0
  40. package/ts/Private/impl/IAgoraRtcEngineImpl.ts +153 -11
  41. package/ts/Private/impl/IAudioDeviceManagerImpl.ts +2 -2
  42. package/ts/Private/internal/IrisApiEngine.ts +11 -1
  43. package/ts/Private/internal/MediaEngineInternal.ts +31 -0
  44. package/ts/Private/internal/MediaPlayerInternal.ts +0 -14
  45. package/ts/Private/internal/MusicContentCenterInternal.ts +0 -7
  46. package/ts/Private/internal/RtcEngineExInternal.ts +9 -28
  47. package/ts/Private/ti/AgoraMediaBase-ti.ts +5 -0
  48. package/ts/Private/ti/IAgoraRtcEngine-ti.ts +1 -0
  49. package/types/Private/AgoraBase.d.ts +146 -36
  50. package/types/Private/AgoraBase.d.ts.map +1 -1
  51. package/types/Private/AgoraMediaBase.d.ts +77 -48
  52. package/types/Private/AgoraMediaBase.d.ts.map +1 -1
  53. package/types/Private/IAgoraLog.d.ts +1 -1
  54. package/types/Private/IAgoraMediaEngine.d.ts +33 -6
  55. package/types/Private/IAgoraMediaEngine.d.ts.map +1 -1
  56. package/types/Private/IAgoraMediaPlayer.d.ts +10 -1
  57. package/types/Private/IAgoraMediaPlayer.d.ts.map +1 -1
  58. package/types/Private/IAgoraRtcEngine.d.ts +132 -103
  59. package/types/Private/IAgoraRtcEngine.d.ts.map +1 -1
  60. package/types/Private/IAgoraRtcEngineEx.d.ts +33 -4
  61. package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -1
  62. package/types/Private/IAudioDeviceManager.d.ts +2 -2
  63. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts +2 -2
  64. package/types/Private/extension/IAgoraMediaEngineExtension.d.ts.map +1 -1
  65. package/types/Private/impl/AgoraMediaBaseImpl.d.ts +2 -1
  66. package/types/Private/impl/AgoraMediaBaseImpl.d.ts.map +1 -1
  67. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts +5 -1
  68. package/types/Private/impl/IAgoraMediaEngineImpl.d.ts.map +1 -1
  69. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts +4 -0
  70. package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts.map +1 -1
  71. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts +18 -1
  72. package/types/Private/impl/IAgoraRtcEngineImpl.d.ts.map +1 -1
  73. package/types/Private/internal/IrisApiEngine.d.ts +3 -2
  74. package/types/Private/internal/IrisApiEngine.d.ts.map +1 -1
  75. package/types/Private/internal/MediaEngineInternal.d.ts +4 -1
  76. package/types/Private/internal/MediaEngineInternal.d.ts.map +1 -1
  77. package/types/Private/internal/MediaPlayerInternal.d.ts +0 -2
  78. package/types/Private/internal/MediaPlayerInternal.d.ts.map +1 -1
  79. package/types/Private/internal/MusicContentCenterInternal.d.ts.map +1 -1
  80. package/types/Private/internal/RtcEngineExInternal.d.ts +1 -5
  81. package/types/Private/internal/RtcEngineExInternal.d.ts.map +1 -1
  82. package/types/Private/ti/AgoraMediaBase-ti.d.ts +1 -0
  83. package/types/Private/ti/AgoraMediaBase-ti.d.ts.map +1 -1
  84. package/types/Private/ti/IAgoraRtcEngine-ti.d.ts.map +1 -1
@@ -11,6 +11,8 @@ import {
11
11
  AudioSessionOperationRestriction,
12
12
  AudioVolumeInfo,
13
13
  BeautyOptions,
14
+ CameraFocalLengthType,
15
+ CameraStabilizationMode,
14
16
  CaptureBrightnessLevelType,
15
17
  ChannelMediaRelayConfiguration,
16
18
  ChannelMediaRelayError,
@@ -31,6 +33,7 @@ import {
31
33
  EncryptionConfig,
32
34
  EncryptionErrorType,
33
35
  ErrorCodeType,
36
+ FocalLengthInfo,
34
37
  HeadphoneEqualizerPreset,
35
38
  IAudioEncodedFrameObserver,
36
39
  LastmileProbeConfig,
@@ -547,6 +550,10 @@ export class RemoteAudioStats {
547
550
  * @ignore
548
551
  */
549
552
  rxAudioBytes?: number;
553
+ /**
554
+ * End-to-end audio delay (in milliseconds), which refers to the time from when the audio is captured by the remote user to when it is played by the local user.
555
+ */
556
+ e2eDelay?: number;
550
557
  }
551
558
 
552
559
  /**
@@ -816,11 +823,11 @@ export class PublisherConfiguration {
816
823
  */
817
824
  export enum CameraDirection {
818
825
  /**
819
- * The rear camera.
826
+ * 0: The rear camera.
820
827
  */
821
828
  CameraRear = 0,
822
829
  /**
823
- * The front camera.
830
+ * 1: (Default) The front camera.
824
831
  */
825
832
  CameraFront = 1,
826
833
  }
@@ -852,17 +859,25 @@ export class CameraCapturerConfiguration {
852
859
  */
853
860
  cameraDirection?: CameraDirection;
854
861
  /**
855
- * This method applies to Windows only. The ID of the camera. The maximum length is MaxDeviceIdLengthType.
862
+ * @ignore
863
+ */
864
+ cameraFocalLengthType?: CameraFocalLengthType;
865
+ /**
866
+ * The camera ID. The maximum length is MaxDeviceIdLengthType.
856
867
  */
857
868
  deviceId?: string;
858
869
  /**
859
- * The format of the video frame. See VideoFormat.
870
+ * @ignore
860
871
  */
861
- format?: VideoFormat;
872
+ cameraId?: string;
862
873
  /**
863
- * Whether to follow the video aspect ratio set in setVideoEncoderConfiguration : true : (Default) Follow the set video aspect ratio. The SDK crops the captured video according to the set video aspect ratio and synchronously changes the local preview screen and the video frame in onCaptureVideoFrame and onPreEncodeVideoFrame. false : Do not follow the system default audio playback device. The SDK does not change the aspect ratio of the captured video frame.
874
+ * (Optional) Whether to follow the video aspect ratio set in setVideoEncoderConfiguration : true : (Default) Follow the set video aspect ratio. The SDK crops the captured video according to the set video aspect ratio and synchronously changes the local preview screen and the video frame in onCaptureVideoFrame and onPreEncodeVideoFrame. false : Do not follow the system default audio playback device. The SDK does not change the aspect ratio of the captured video frame.
864
875
  */
865
876
  followEncodeDimensionRatio?: boolean;
877
+ /**
878
+ * (Optional) The format of the video frame. See VideoFormat.
879
+ */
880
+ format?: VideoFormat;
866
881
  }
867
882
 
868
883
  /**
@@ -1119,6 +1134,10 @@ export class ChannelMediaOptions {
1119
1134
  * @ignore
1120
1135
  */
1121
1136
  publishMixedAudioTrack?: boolean;
1137
+ /**
1138
+ * @ignore
1139
+ */
1140
+ publishLipSyncTrack?: boolean;
1122
1141
  /**
1123
1142
  * Whether to automatically subscribe to all remote audio streams when the user joins a channel: true : Subscribe to all remote audio streams. false : Do not automatically subscribe to any remote audio streams.
1124
1143
  */
@@ -1152,7 +1171,7 @@ export class ChannelMediaOptions {
1152
1171
  */
1153
1172
  channelProfile?: ChannelProfileType;
1154
1173
  /**
1155
- * @ignore
1174
+ * Delay (in milliseconds) for sending audio frames. You can use this parameter to set the delay of the audio frames that need to be sent, to ensure audio and video synchronization. To switch off the delay, set the value to 0.
1156
1175
  */
1157
1176
  audioDelayMs?: number;
1158
1177
  /**
@@ -1175,7 +1194,7 @@ export class ChannelMediaOptions {
1175
1194
  publishRhythmPlayerTrack?: boolean;
1176
1195
  /**
1177
1196
  * Whether to enable interactive mode: true : Enable interactive mode. Once this mode is enabled and the user role is set as audience, the user can receive remote video streams with low latency. false :Do not enable interactive mode. If this mode is disabled, the user receives the remote video streams in default settings.
1178
- * This parameter only applies to scenarios involving cohosting across channels. The cohosts need to call the joinChannelEx method to join the other host's channel as an audience member, and set isInteractiveAudience to true.
1197
+ * This parameter only applies to co-streaming scenarios. The cohosts need to call the joinChannelEx method to join the other host's channel as an audience member, and set isInteractiveAudience to true.
1179
1198
  * This parameter takes effect only when the user role is ClientRoleAudience.
1180
1199
  */
1181
1200
  isInteractiveAudience?: boolean;
@@ -1564,9 +1583,7 @@ export interface IRtcEngineEventHandler {
1564
1583
  /**
1565
1584
  * Occurs when the local video stream state changes.
1566
1585
  *
1567
- * When the state of the local video stream changes (including the state of the video capture and encoding), the SDK triggers this callback to report the current state. This callback indicates the state of the local video stream, including camera capturing and video encoding, and allows you to troubleshoot issues when exceptions occur. The SDK triggers the onLocalVideoStateChanged callback with the state code of LocalVideoStreamStateFailed and error code of LocalVideoStreamReasonCaptureFailure in the following situations:
1568
- * The app switches to the background, and the system gets the camera resource.
1569
- * The camera starts normally, but does not output video frames for four consecutive seconds. When the camera outputs the captured video frames, if the video frames are the same for 15 consecutive frames, the SDK triggers the onLocalVideoStateChanged callback with the state code of LocalVideoStreamStateCapturing and error code of LocalVideoStreamReasonCaptureFailure. Note that the video frame duplication detection is only available for video frames with a resolution greater than 200 × 200, a frame rate greater than or equal to 10 fps, and a bitrate less than 20 Kbps. For some device models, the SDK does not trigger this callback when the state of the local video changes while the local video capturing device is in use, so you have to make your own timeout judgment.
1586
+ * When the status of the local video changes, the SDK triggers this callback to report the current local video state and the reason for the state change.
1570
1587
  *
1571
1588
  * @param source The type of the video source. See VideoSourceType.
1572
1589
  * @param state The state of the local video, see LocalVideoStreamState.
@@ -1707,11 +1724,11 @@ export interface IRtcEngineEventHandler {
1707
1724
  /**
1708
1725
  * Occurs when a specific remote user enables/disables the local video capturing function.
1709
1726
  *
1710
- * The SDK triggers this callback when the remote user resumes or stops capturing the video stream by calling the enableLocalVideo method.
1727
+ * Deprecated: This callback is deprecated, use the following enumerations in the onRemoteVideoStateChanged callback: RemoteVideoStateStopped (0) and RemoteVideoStateReasonRemoteMuted (5). RemoteVideoStateDecoding (2) and RemoteVideoStateReasonRemoteUnmuted (6). The SDK triggers this callback when the remote user resumes or stops capturing the video stream by calling the enableLocalVideo method.
1711
1728
  *
1712
1729
  * @param connection The connection information. See RtcConnection.
1713
1730
  * @param remoteUid The user ID of the remote user.
1714
- * @param enabled Whether the specified remote user enables/disables the local video capturing function: true : The video module is enabled. Other users in the channel can see the video of this remote user. false : The video module is disabled. Other users in the channel can no longer receive the video stream from this remote user, while this remote user can still receive the video streams from other users.
1731
+ * @param enabled Whether the specified remote user enables/disables local video capturing: true : The video module is enabled. Other users in the channel can see the video of this remote user. false : The video module is disabled. Other users in the channel can no longer receive the video stream from this remote user, while this remote user can still receive the video streams from other users.
1715
1732
  */
1716
1733
  onUserEnableLocalVideo?(
1717
1734
  connection: RtcConnection,
@@ -1883,7 +1900,7 @@ export interface IRtcEngineEventHandler {
1883
1900
  * @param connection The connection information. See RtcConnection.
1884
1901
  * @param uid The ID of the remote user sending the message.
1885
1902
  * @param streamId The stream ID of the received message.
1886
- * @param code ErrorCodeType The error code.
1903
+ * @param code The error code. See ErrorCodeType.
1887
1904
  * @param missed The number of lost messages.
1888
1905
  * @param cached Number of incoming cached messages when the data stream is interrupted.
1889
1906
  */
@@ -2431,6 +2448,16 @@ export interface IRtcEngineEventHandler {
2431
2448
  layoutlist: VideoLayout[]
2432
2449
  ): void;
2433
2450
 
2451
+ /**
2452
+ * @ignore
2453
+ */
2454
+ onAudioMetadataReceived?(
2455
+ connection: RtcConnection,
2456
+ uid: number,
2457
+ metadata: string,
2458
+ length: number
2459
+ ): void;
2460
+
2434
2461
  /**
2435
2462
  * The event callback of the extension.
2436
2463
  *
@@ -2451,7 +2478,7 @@ export interface IRtcEngineEventHandler {
2451
2478
  /**
2452
2479
  * Occurs when the extension is enabled.
2453
2480
  *
2454
- * After a successful call of enableExtension (true), the extension triggers this callback.
2481
+ * The extension triggers this callback after it is successfully enabled.
2455
2482
  *
2456
2483
  * @param provider The name of the extension provider.
2457
2484
  * @param extension The name of the extension.
@@ -2461,7 +2488,7 @@ export interface IRtcEngineEventHandler {
2461
2488
  /**
2462
2489
  * Occurs when the extension is disabled.
2463
2490
  *
2464
- * After a successful call of enableExtension (false), this callback is triggered.
2491
+ * The extension triggers this callback after it is successfully destroyed.
2465
2492
  *
2466
2493
  * @param provider The name of the extension provider.
2467
2494
  * @param extension The name of the extension.
@@ -2471,7 +2498,7 @@ export interface IRtcEngineEventHandler {
2471
2498
  /**
2472
2499
  * Occurs when the extension runs incorrectly.
2473
2500
  *
2474
- * When calling enableExtension (true) fails or the extension runs in error, the extension triggers this callback and reports the error code and reason.
2501
+ * In case of extension enabling failure or runtime errors, the extension triggers this callback and reports the error code along with the reasons.
2475
2502
  *
2476
2503
  * @param provider The name of the extension provider.
2477
2504
  * @param extension The name of the extension.
@@ -2958,38 +2985,7 @@ export abstract class IRtcEngine {
2958
2985
  ): number;
2959
2986
 
2960
2987
  /**
2961
- * Preloads a channel with token, channelId, and userAccount.
2962
- *
2963
- * When audience members need to switch between different channels frequently, calling the method can help shortening the time of joining a channel, thus reducing the time it takes for audience members to hear and see the host. As it may take a while for the SDK to preload a channel, Agora recommends that you call this method as soon as possible after obtaining the channel name and user ID to join a channel. If you join a preloaded channel, leave it and want to rejoin the same channel, you do not need to call this method unless the token for preloading the channel expires.
2964
- * Failing to preload a channel does not mean that you can't join a channel, nor will it increase the time of joining a channel.
2965
- * One IRtcEngine instance supports preloading 20 channels at most. When exceeding this limit, the latest 20 preloaded channels take effect.
2966
- * When calling this method, ensure you set the user role as audience and do not set the audio scenario as AudioScenarioChorus, otherwise, this method does not take effect.
2967
- * You also need to make sure that the User Account, channel ID and token passed in for preloading are the same as the values passed in when joining the channel, otherwise, this method does not take effect.
2968
- *
2969
- * @param token The token generated on your server for authentication. When the token for preloading channels expires, you can update the token based on the number of channels you preload.
2970
- * When preloading one channel, calling this method to pass in the new token.
2971
- * When preloading more than one channels:
2972
- * If you use a wildcard token for all preloaded channels, call updatePreloadChannelToken to update the token. When generating a wildcard token, ensure the user ID is not set as 0.
2973
- * If you use different tokens to preload different channels, call this method to pass in your user ID, channel name and the new token.
2974
- * @param channelId The channel name that you want to preload. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters (89 characters in total):
2975
- * All lowercase English letters: a to z.
2976
- * All uppercase English letters: A to Z.
2977
- * All numeric characters: 0 to 9.
2978
- * Space
2979
- * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
2980
- * @param userAccount The user account. This parameter is used to identify the user in the channel for real-time audio and video engagement. You need to set and manage user accounts yourself and ensure that each user account in the same channel is unique. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported characters are (89 in total):
2981
- * The 26 lowercase English letters: a to z.
2982
- * The 26 uppercase English letters: A to Z.
2983
- * All numeric characters: 0 to 9.
2984
- * Space
2985
- * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
2986
- *
2987
- * @returns
2988
- * 0: Success.
2989
- * < 0: Failure.
2990
- * -2: The parameter is invalid. For example, the User Account is empty. You need to pass in a valid parameter and join the channel again.
2991
- * -7: The IRtcEngine object has not been initialized. You need to initialize the IRtcEngine object before calling this method.
2992
- * -102: The channel name is invalid. You need to pass in a valid channel name and join the channel again.
2988
+ * @ignore
2993
2989
  */
2994
2990
  abstract preloadChannelWithUserAccount(
2995
2991
  token: string,
@@ -3020,9 +3016,10 @@ export abstract class IRtcEngine {
3020
3016
  * The remote client: onUserJoined, if the user joining the channel is in the Communication profile or is a host in the Live-broadcasting profile. When the connection between the client and Agora's server is interrupted due to poor network conditions, the SDK tries reconnecting to the server. When the local client successfully rejoins the channel, the SDK triggers the onRejoinChannelSuccess callback on the local client.
3021
3017
  * This method allows users to join only one channel at a time.
3022
3018
  * Ensure that the app ID you use to generate the token is the same app ID that you pass in the initialize method; otherwise, you may fail to join the channel by token.
3019
+ * If you choose the Testing Mode (using an App ID for authentication) for your project and call this method to join a channel, you will automatically exit the channel after 24 hours.
3023
3020
  *
3024
3021
  * @param token The token generated on your server for authentication. If you need to join different channels at the same time or switch between channels, Agora recommends using a wildcard token so that you don't need to apply for a new token every time joining a channel.
3025
- * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:
3022
+ * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters (89 characters in total):
3026
3023
  * All lowercase English letters: a to z.
3027
3024
  * All uppercase English letters: A to Z.
3028
3025
  * All numeric characters: 0 to 9.
@@ -3171,10 +3168,7 @@ export abstract class IRtcEngine {
3171
3168
  /**
3172
3169
  * Enables the video module.
3173
3170
  *
3174
- * Call this method either before joining a channel or during a call. If this method is called before joining a channel, the call starts in the video mode; if called during a call, the audio call switches to a video call. Call disableVideo to disable the video mode. A successful call of this method triggers the onRemoteVideoStateChanged callback on the remote client.
3175
- * This method enables the internal engine and is valid after leaving the channel.
3176
- * Calling this method will reset the entire engine, resulting in a slow response time. Instead of callling this method, you can independently control a specific video module based on your actual needs using the following methods: enableLocalVideo : Whether to enable the camera to create the local video stream. muteLocalVideoStream : Whether to publish the local video stream. muteRemoteVideoStream : Whether to subscribe to and play the remote video stream. muteAllRemoteVideoStreams : Whether to subscribe to and play all remote video streams.
3177
- * A successful call of this method resets enableLocalVideo, muteRemoteVideoStream, and muteAllRemoteVideoStreams. Proceed it with caution.
3171
+ * The video module is disabled by default, call this method to enable it. If you need to disable the video module later, you need to call disableVideo.
3178
3172
  *
3179
3173
  * @returns
3180
3174
  * 0: Success.
@@ -3269,15 +3263,13 @@ export abstract class IRtcEngine {
3269
3263
  * Sets the image enhancement options.
3270
3264
  *
3271
3265
  * Enables or disables image enhancement, and sets the options.
3272
- * Call this method before calling enableVideo or startPreview.
3266
+ * Call this method after calling enableVideo or startPreview.
3273
3267
  * This method relies on the image enhancement dynamic library libagora_clear_vision_extension.dll. If the dynamic library is deleted, the function cannot be enabled normally.
3274
3268
  * This feature has high requirements on device performance. When calling this method, the SDK automatically checks the capabilities of the current device.
3275
3269
  *
3276
3270
  * @param enabled Whether to enable the image enhancement function: true : Enable the image enhancement function. false : (Default) Disable the image enhancement function.
3277
3271
  * @param options The image enhancement options. See BeautyOptions.
3278
- * @param type Type of media source. See MediaSourceType. In this method, this parameter supports only the following two settings:
3279
- * The default value is UnknownMediaSource.
3280
- * If you want to use the second camera to capture video, set this parameter to SecondaryCameraSource.
3272
+ * @param type Source type of the extension. See MediaSourceType.
3281
3273
  *
3282
3274
  * @returns
3283
3275
  * 0: Success.
@@ -3302,7 +3294,7 @@ export abstract class IRtcEngine {
3302
3294
  * When you use an external video source to implement custom video capture, or send an external video source to the SDK, Agora recommends using setExtensionProperty.
3303
3295
  * This method relies on the image enhancement dynamic library libagora_clear_vision_extension.dll. If the dynamic library is deleted, the function cannot be enabled normally.
3304
3296
  *
3305
- * @param enabled Whether to enable low-light enhancement function: true : Enable low-light enhancement function. false : (Default) Disable low-light enhancement function.
3297
+ * @param enabled Whether to enable low-light enhancement: true : Enable low-light enhancement. false : (Default) Disable low-light enhancement.
3306
3298
  * @param options The low-light enhancement options. See LowlightEnhanceOptions.
3307
3299
  * @param type The type of the video source. See MediaSourceType.
3308
3300
  *
@@ -3369,7 +3361,7 @@ export abstract class IRtcEngine {
3369
3361
  /**
3370
3362
  * Enables/Disables the virtual background.
3371
3363
  *
3372
- * The virtual background feature enables the local user to replace their original background with a static image, dynamic video, blurred background, or portrait-background segmentation to achieve picture-in-picture effect. Once the virtual background feature is enabled, all users in the channel can see the custom background. Call this method before calling enableVideo or startPreview.
3364
+ * The virtual background feature enables the local user to replace their original background with a static image, dynamic video, blurred background, or portrait-background segmentation to achieve picture-in-picture effect. Once the virtual background feature is enabled, all users in the channel can see the custom background. Call this method after calling enableVideo or startPreview.
3373
3365
  * This feature has high requirements on device performance. When calling this method, the SDK automatically checks the capabilities of the current device. Agora recommends you use virtual background on devices with the following processors:
3374
3366
  * Devices with an i5 CPU and better
3375
3367
  * Agora recommends that you use this feature in scenarios that meet the following conditions:
@@ -3634,7 +3626,7 @@ export abstract class IRtcEngine {
3634
3626
  /**
3635
3627
  * Sets the default video stream type to subscribe to.
3636
3628
  *
3637
- * The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sender side, which means the sender does not actively send low-quality video stream. The receiver can initiate a low-quality video stream request by calling this method, and the sender will automatically start sending low-quality video stream upon receiving the request. By default, users receive the high-quality video stream. Call this method if you want to switch to the low-quality video stream. The SDK will dynamically adjust the size of the corresponding video stream based on the size of the video window to save bandwidth and computing resources. The default aspect ratio of the low-quality video stream is the same as that of the high-quality video stream. According to the current aspect ratio of the high-quality video stream, the system will automatically allocate the resolution, frame rate, and bitrate of the low-quality video stream. Under limited network conditions, if the publisher does not disable the dual-stream mode using enableDualStreamMode (false), the receiver can choose to receive either the high-quality video stream, or the low-quality video stream. The high-quality video stream has a higher resolution and bitrate, while the low-quality video stream has a lower resolution and bitrate.
3629
+ * The SDK will dynamically adjust the size of the corresponding video stream based on the size of the video window to save bandwidth and computing resources. The default aspect ratio of the low-quality video stream is the same as that of the high-quality video stream. According to the current aspect ratio of the high-quality video stream, the system will automatically allocate the resolution, frame rate, and bitrate of the low-quality video stream. The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sending end, which means the sender does not actively send low-quality video stream. The receiver with the role of the host can initiate a low-quality video stream request by calling this method, and upon receiving the request, the sending end automatically starts sending the low-quality video stream.
3638
3630
  * Call this method before joining a channel. The SDK does not support changing the default subscribed video stream type after joining a channel.
3639
3631
  * If you call both this method and setRemoteVideoStreamType, the setting of setRemoteVideoStreamType takes effect.
3640
3632
  *
@@ -3663,7 +3655,11 @@ export abstract class IRtcEngine {
3663
3655
  /**
3664
3656
  * Sets the video stream type to subscribe to.
3665
3657
  *
3666
- * Under limited network conditions, if the publisher does not disable the dual-stream mode using enableDualStreamMode (false), the receiver can choose to receive either the high-quality video stream, or the low-quality video stream. The high-quality video stream has a higher resolution and bitrate, while the low-quality video stream has a lower resolution and bitrate. By default, users receive the high-quality video stream. Call this method if you want to switch to the low-quality video stream. The SDK will dynamically adjust the size of the corresponding video stream based on the size of the video window to save bandwidth and computing resources. The default aspect ratio of the low-quality video stream is the same as that of the high-quality video stream. According to the current aspect ratio of the high-quality video stream, the system will automatically allocate the resolution, frame rate, and bitrate of the low-quality video stream. The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sender side, which means the sender does not actively send low-quality video stream. The receiver can initiate a low-quality video stream request by calling this method, and the sender will automatically start sending low-quality video stream upon receiving the request. You can call this method either before or after joining a channel. If you call both setRemoteVideoStreamType and setRemoteDefaultVideoStreamType, the setting of setRemoteVideoStreamType takes effect.
3658
+ * The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sending end, which means the sender does not actively send low-quality video stream. The receiver with the role of the host can initiate a low-quality video stream request by calling this method, and upon receiving the request, the sending end automatically starts sending the low-quality video stream. The SDK will dynamically adjust the size of the corresponding video stream based on the size of the video window to save bandwidth and computing resources. The default aspect ratio of the low-quality video stream is the same as that of the high-quality video stream. According to the current aspect ratio of the high-quality video stream, the system will automatically allocate the resolution, frame rate, and bitrate of the low-quality video stream.
3659
+ * You can call this method either before or after joining a channel.
3660
+ * If the publisher has already called setDualStreamMode and set mode to DisableSimulcastStream (never send low-quality video stream), calling this method will not take effect, you should call setDualStreamMode again on the sending end and adjust the settings.
3661
+ * Calling this method on the receiving end of the audience role will not take effect.
3662
+ * If you call both setRemoteVideoStreamType and setRemoteDefaultVideoStreamType, the settings in setRemoteVideoStreamType take effect.
3667
3663
  *
3668
3664
  * @param uid The user ID.
3669
3665
  * @param streamType The video stream type, see VideoStreamType.
@@ -4093,6 +4089,22 @@ export abstract class IRtcEngine {
4093
4089
  */
4094
4090
  abstract setAudioMixingPitch(pitch: number): number;
4095
4091
 
4092
+ /**
4093
+ * Sets the playback speed of the current audio file.
4094
+ *
4095
+ * Ensure you call this method after calling startAudioMixing receiving the onAudioMixingStateChanged callback reporting the state as AudioMixingStatePlaying.
4096
+ *
4097
+ * @param speed The playback speed. Agora recommends that you set this to a value between 50 and 400, defined as follows:
4098
+ * 50: Half the original speed.
4099
+ * 100: The original speed.
4100
+ * 400: 4 times the original speed.
4101
+ *
4102
+ * @returns
4103
+ * 0: Success.
4104
+ * < 0: Failure.
4105
+ */
4106
+ abstract setAudioMixingPlaybackSpeed(speed: number): number;
4107
+
4096
4108
  /**
4097
4109
  * Retrieves the volume of the audio effects.
4098
4110
  *
@@ -4687,6 +4699,11 @@ export abstract class IRtcEngine {
4687
4699
  */
4688
4700
  abstract uploadLogFile(): string;
4689
4701
 
4702
+ /**
4703
+ * @ignore
4704
+ */
4705
+ abstract writeLog(level: LogLevel, fmt: string): number;
4706
+
4690
4707
  /**
4691
4708
  * Updates the display mode of the local video view.
4692
4709
  *
@@ -4766,7 +4783,7 @@ export abstract class IRtcEngine {
4766
4783
  /**
4767
4784
  * Sets dual-stream mode configuration on the sender side.
4768
4785
  *
4769
- * The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sender side, which means the sender does not actively send low-quality video stream. The receiver can initiate a low-quality video stream request by calling setRemoteVideoStreamType, and the sender then automatically starts sending low-quality video stream upon receiving the request.
4786
+ * The SDK defaults to enabling low-quality video stream adaptive mode (AutoSimulcastStream) on the sender side, which means the sender does not actively send low-quality video stream. The receiving end with the role of the host can initiate a low-quality video stream request by calling setRemoteVideoStreamType, and upon receiving the request, the sending end automatically starts sending low-quality stream.
4770
4787
  * If you want to modify this behavior, you can call this method and set mode to DisableSimulcastStream (never send low-quality video streams) or EnableSimulcastStream (always send low-quality video streams).
4771
4788
  * If you want to restore the default behavior after making changes, you can call this method again with mode set to AutoSimulcastStream. The difference and connection between this method and enableDualStreamMode is as follows:
4772
4789
  * When calling this method and setting mode to DisableSimulcastStream, it has the same effect as calling enableDualStreamMode and setting enabled to false.
@@ -5060,9 +5077,7 @@ export abstract class IRtcEngine {
5060
5077
  * @param provider The name of the extension provider.
5061
5078
  * @param extension The name of the extension.
5062
5079
  * @param enable Whether to enable the extension: true : Enable the extension. false : Disable the extension.
5063
- * @param type Type of media source. See MediaSourceType. In this method, this parameter supports only the following two settings:
5064
- * The default value is UnknownMediaSource.
5065
- * If you want to use the second camera to capture video, set this parameter to SecondaryCameraSource.
5080
+ * @param type Source type of the extension. See MediaSourceType.
5066
5081
  *
5067
5082
  * @returns
5068
5083
  * 0: Success.
@@ -5085,9 +5100,7 @@ export abstract class IRtcEngine {
5085
5100
  * @param extension The name of the extension.
5086
5101
  * @param key The key of the extension.
5087
5102
  * @param value The value of the extension key.
5088
- * @param type Type of media source. See MediaSourceType. In this method, this parameter supports only the following two settings:
5089
- * The default value is UnknownMediaSource.
5090
- * If you want to use the second camera to capture video, set this parameter to SecondaryCameraSource.
5103
+ * @param type Source type of the extension. See MediaSourceType.
5091
5104
  *
5092
5105
  * @returns
5093
5106
  * 0: Success.
@@ -5169,7 +5182,7 @@ export abstract class IRtcEngine {
5169
5182
  * You can call this method either before or after joining a channel.
5170
5183
  *
5171
5184
  * @param enabled Enables or disables in-ear monitoring. true : Enables in-ear monitoring. false : (Default) Disables in-ear monitoring.
5172
- * @param includeAudioFilters The audio filter of in-ear monitoring: See EarMonitoringFilterType.
5185
+ * @param includeAudioFilters The audio filter types of in-ear monitoring. See EarMonitoringFilterType.
5173
5186
  *
5174
5187
  * @returns
5175
5188
  * 0: Success.
@@ -5232,13 +5245,13 @@ export abstract class IRtcEngine {
5232
5245
  /**
5233
5246
  * Registers an extension.
5234
5247
  *
5235
- * After the extension is loaded, you can call this method to register the extension. This method applies to Windows only.
5248
+ * After the extension is loaded, you can call this method to register the extension.
5249
+ * Before calling this method, you need to call loadExtensionProvider to load the extension first.
5250
+ * For extensions external to the SDK (such as those from Extensions Marketplace and SDK Extensions), you need to call this method before calling setExtensionProperty.
5236
5251
  *
5237
5252
  * @param provider The name of the extension provider.
5238
5253
  * @param extension The name of the extension.
5239
- * @param type Type of media source. See MediaSourceType. In this method, this parameter supports only the following two settings:
5240
- * The default value is UnknownMediaSource.
5241
- * If you want to use the second camera to capture video, set this parameter to SecondaryCameraSource.
5254
+ * @param type Source type of the extension. See MediaSourceType.
5242
5255
  *
5243
5256
  * @returns
5244
5257
  * 0: Success.
@@ -5388,6 +5401,11 @@ export abstract class IRtcEngine {
5388
5401
  */
5389
5402
  abstract setCameraAutoExposureFaceModeEnabled(enabled: boolean): number;
5390
5403
 
5404
+ /**
5405
+ * @ignore
5406
+ */
5407
+ abstract setCameraStabilizationMode(mode: CameraStabilizationMode): number;
5408
+
5391
5409
  /**
5392
5410
  * @ignore
5393
5411
  */
@@ -5410,6 +5428,29 @@ export abstract class IRtcEngine {
5410
5428
  */
5411
5429
  abstract setRouteInCommunicationMode(route: number): number;
5412
5430
 
5431
+ /**
5432
+ * Check if the camera supports portrait center stage.
5433
+ *
5434
+ * This method applies to macOS only. Before calling enableCameraCenterStage to enable portrait center stage, it is recommended to call this method to check if the current device supports the feature.
5435
+ *
5436
+ * @returns
5437
+ * true : The current camera supports the portrait center stage. false : The current camera supports the portrait center stage.
5438
+ */
5439
+ abstract isCameraCenterStageSupported(): boolean;
5440
+
5441
+ /**
5442
+ * Enables or disables portrait center stage.
5443
+ *
5444
+ * The portrait center stage feature is off by default. You need to call this method to turn it on. If you need to disable this feature, you need to call this method again and set enabled to false. This method applies to macOS only.
5445
+ *
5446
+ * @param enabled Whether to enable the portrait center stage: true : Enable portrait center stage. false : Disable portrait center stage.
5447
+ *
5448
+ * @returns
5449
+ * 0: Success.
5450
+ * < 0: Failure.
5451
+ */
5452
+ abstract enableCameraCenterStage(enabled: boolean): number;
5453
+
5413
5454
  /**
5414
5455
  * Gets a list of shareable screens and windows.
5415
5456
  *
@@ -5482,15 +5523,7 @@ export abstract class IRtcEngine {
5482
5523
  ): number;
5483
5524
 
5484
5525
  /**
5485
- * Gets the audio device information.
5486
- *
5487
- * After calling this method, you can get whether the audio device supports ultra-low-latency capture and playback.
5488
- * You can call this method either before or after joining a channel.
5489
- *
5490
- * @returns
5491
- * The DeviceInfo object that identifies the audio device information.
5492
- * Not null: Success.
5493
- * Null: Failure.
5526
+ * @ignore
5494
5527
  */
5495
5528
  abstract getAudioDeviceInfo(): DeviceInfo;
5496
5529
 
@@ -5580,6 +5613,14 @@ export abstract class IRtcEngine {
5580
5613
  */
5581
5614
  abstract queryScreenCaptureCapability(): number;
5582
5615
 
5616
+ /**
5617
+ * @ignore
5618
+ */
5619
+ abstract queryCameraFocalLengthCapability(): {
5620
+ focalLengthInfos: FocalLengthInfo[];
5621
+ size: number;
5622
+ };
5623
+
5583
5624
  /**
5584
5625
  * Sets the screen sharing scenario.
5585
5626
  *
@@ -5607,7 +5648,7 @@ export abstract class IRtcEngine {
5607
5648
  /**
5608
5649
  * Retrieves the call ID.
5609
5650
  *
5610
- * When a user joins a channel on a client, a callId is generated to identify the call from the client. Some methods, such as rate and complain, must be called after the call ends to submit feedback to the SDK. These methods require the callId parameter. Call this method after joining a channel.
5651
+ * When a user joins a channel on a client, a callId is generated to identify the call from the client. You can call this method to get the callId parameter, and pass it in when calling methods such as rate and complain. Call this method after joining a channel.
5611
5652
  *
5612
5653
  * @returns
5613
5654
  * The current call ID, if the method succeeds.
@@ -5710,12 +5751,6 @@ export abstract class IRtcEngine {
5710
5751
  * Starts the local video mixing.
5711
5752
  *
5712
5753
  * After calling this method, you can merge multiple video streams into one video stream locally. For example, you can merge the video streams captured by the camera, screen sharing, media player, remote video, video files, images, etc. into one video stream, and then publish the mixed video stream to the channel.
5713
- * Local video mixing requires more CPU resources. Therefore, Agora recommends enabling this function on devices with higher performance.
5714
- * If you need to mix locally captured video streams, the SDK supports the following capture combinations:
5715
- * On the Windows platform, it supports up to 4 video streams captured by cameras + 4 screen sharing streams.
5716
- * On the macOS platform, it supports up to 4 video streams captured by cameras + 1 screen sharing stream.
5717
- * If you need to mix the locally collected video streams, you need to call this method after startCameraCapture or startScreenCaptureBySourceType.
5718
- * If you want to publish the mixed video stream to the channel, you need to set publishTranscodedVideoTrack in ChannelMediaOptions to true when calling joinChannel or updateChannelMediaOptions.
5719
5754
  *
5720
5755
  * @param config Configuration of the local video mixing, see LocalTranscoderConfiguration.
5721
5756
  * The maximum resolution of each video stream participating in the local video mixing is 4096 × 2160. If this limit is exceeded, video mixing does not take effect.
@@ -5849,11 +5884,11 @@ export abstract class IRtcEngine {
5849
5884
  abstract registerEventHandler(eventHandler: IRtcEngineEventHandler): boolean;
5850
5885
 
5851
5886
  /**
5852
- * Removes the specified callback handler.
5887
+ * Removes the specified callback events.
5853
5888
  *
5854
- * This method removes the specified callback handler. For callback events that you want to listen for only once, call this method to remove the relevant callback handler after you have received them.
5889
+ * You can call this method too remove all added callback events.
5855
5890
  *
5856
- * @param eventHandler The callback handler to be deleted. See IRtcEngineEventHandler.
5891
+ * @param eventHandler Callback events to be removed. See IRtcEngineEventHandler.
5857
5892
  *
5858
5893
  * @returns
5859
5894
  * true : Success. false : Failure.
@@ -5910,7 +5945,7 @@ export abstract class IRtcEngine {
5910
5945
  *
5911
5946
  * In scenarios requiring high security, Agora recommends calling this method to enable the built-in encryption before joining a channel. All users in the same channel must use the same encryption mode and encryption key. After the user leaves the channel, the SDK automatically disables the built-in encryption. To enable the built-in encryption, call this method before the user joins the channel again. If you enable the built-in encryption, you cannot use the Media Push function.
5912
5947
  *
5913
- * @param enabled Whether to enable built-in encryption: true : Enable the built-in encryption. false : Disable the built-in encryption.
5948
+ * @param enabled Whether to enable built-in encryption: true : Enable the built-in encryption. false : (Default) Disable the built-in encryption.
5914
5949
  * @param config Built-in encryption configurations. See EncryptionConfig.
5915
5950
  *
5916
5951
  * @returns
@@ -6131,18 +6166,19 @@ export abstract class IRtcEngine {
6131
6166
  /**
6132
6167
  * Joins the channel with a user account, and configures whether to automatically subscribe to audio or video streams after joining the channel.
6133
6168
  *
6134
- * This method allows a user to join the channel with the user account. After the user successfully joins the channel, the SDK triggers the following callbacks:
6169
+ * To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the ID of the user is set to the same parameter type.
6170
+ * If you choose the Testing Mode (using an App ID for authentication) for your project and call this method to join a channel, you will automatically exit the channel after 24 hours. This method allows a user to join the channel with the user account. After the user successfully joins the channel, the SDK triggers the following callbacks:
6135
6171
  * The local client: onLocalUserRegistered, onJoinChannelSuccess and onConnectionStateChanged callbacks.
6136
- * The remote client: The onUserJoined callback, if the user is in the COMMUNICATION profile, and the onUserInfoUpdated callback if the user is a host in the LIVE_BROADCASTING profile. Once a user joins the channel, the user subscribes to the audio and video streams of all the other users in the channel by default, giving rise to usage and billing calculation. To stop subscribing to a specified stream or all remote streams, call the corresponding mute methods. To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the ID of the user is set to the same parameter type.
6172
+ * The remote client: The onUserJoined callback, if the user is in the COMMUNICATION profile, and the onUserInfoUpdated callback if the user is a host in the LIVE_BROADCASTING profile. Once a user joins the channel, the user subscribes to the audio and video streams of all the other users in the channel by default, giving rise to usage and billing calculation. To stop subscribing to a specified stream or all remote streams, call the corresponding mute methods.
6137
6173
  *
6138
6174
  * @param token The token generated on your server for authentication. If you need to join different channels at the same time or switch between channels, Agora recommends using a wildcard token so that you don't need to apply for a new token every time joining a channel.
6139
- * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:
6175
+ * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters (89 characters in total):
6140
6176
  * All lowercase English letters: a to z.
6141
6177
  * All uppercase English letters: A to Z.
6142
6178
  * All numeric characters: 0 to 9.
6143
6179
  * Space
6144
6180
  * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
6145
- * @param userAccount The user account. This parameter is used to identify the user in the channel for real-time audio and video engagement. You need to set and manage user accounts yourself and ensure that each user account in the same channel is unique. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported characters are (89 in total):
6181
+ * @param userAccount The user account. This parameter is used to identify the user in the channel for real-time audio and video engagement. You need to set and manage user accounts yourself and ensure that each user account in the same channel is unique. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported characters are as follows(89 in total):
6146
6182
  * The 26 lowercase English letters: a to z.
6147
6183
  * The 26 uppercase English letters: A to Z.
6148
6184
  * All numeric characters: 0 to 9.
@@ -6176,13 +6212,13 @@ export abstract class IRtcEngine {
6176
6212
  * The remote client: The onUserJoined callback, if the user is in the COMMUNICATION profile, and the onUserInfoUpdated callback if the user is a host in the LIVE_BROADCASTING profile. Once a user joins the channel, the user subscribes to the audio and video streams of all the other users in the channel by default, giving rise to usage and billing calculation. To stop subscribing to a specified stream or all remote streams, call the corresponding mute methods. To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a user ID, then ensure all the other users use the user ID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the ID of the user is set to the same parameter type.
6177
6213
  *
6178
6214
  * @param token The token generated on your server for authentication. If you need to join different channels at the same time or switch between channels, Agora recommends using a wildcard token so that you don't need to apply for a new token every time joining a channel.
6179
- * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:
6215
+ * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters (89 characters in total):
6180
6216
  * All lowercase English letters: a to z.
6181
6217
  * All uppercase English letters: A to Z.
6182
6218
  * All numeric characters: 0 to 9.
6183
6219
  * Space
6184
6220
  * "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
6185
- * @param userAccount The user account. This parameter is used to identify the user in the channel for real-time audio and video engagement. You need to set and manage user accounts yourself and ensure that each user account in the same channel is unique. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported characters are (89 in total):
6221
+ * @param userAccount The user account. This parameter is used to identify the user in the channel for real-time audio and video engagement. You need to set and manage user accounts yourself and ensure that each user account in the same channel is unique. The maximum length of this parameter is 255 bytes. Ensure that you set this parameter and do not set it as null. Supported characters are as follows(89 in total):
6186
6222
  * The 26 lowercase English letters: a to z.
6187
6223
  * The 26 uppercase English letters: A to Z.
6188
6224
  * All numeric characters: 0 to 9.
@@ -6590,6 +6626,11 @@ export abstract class IRtcEngine {
6590
6626
  */
6591
6627
  abstract isFeatureAvailableOnDevice(type: FeatureType): boolean;
6592
6628
 
6629
+ /**
6630
+ * @ignore
6631
+ */
6632
+ abstract sendAudioMetadata(metadata: string, length: number): number;
6633
+
6593
6634
  /**
6594
6635
  * Starts screen capture.
6595
6636
  *
@@ -6740,7 +6781,7 @@ export abstract class IRtcEngine {
6740
6781
  * Destroys multiple video renderer objects at one time.
6741
6782
  *
6742
6783
  * @param sourceType The type of the video source. See VideoSourceType.
6743
- * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:
6784
+ * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters (89 characters in total):
6744
6785
  * All lowercase English letters: a to z.
6745
6786
  * All uppercase English letters: A to Z.
6746
6787
  * All numeric characters: 0 to 9.
@@ -7137,13 +7178,17 @@ export class VideoDeviceInfo {
7137
7178
  }
7138
7179
 
7139
7180
  /**
7140
- * The AudioDeviceInfo class that contains the ID and device name of the audio devices.
7181
+ * The AudioDeviceInfo class that contains the ID, name and type of the audio devices.
7141
7182
  */
7142
7183
  export class AudioDeviceInfo {
7143
7184
  /**
7144
7185
  * The device ID.
7145
7186
  */
7146
7187
  deviceId?: string;
7188
+ /**
7189
+ * Output parameter; indicates the type of audio devices, such as built-in, USB and HDMI.
7190
+ */
7191
+ deviceTypeName?: string;
7147
7192
  /**
7148
7193
  * The device name.
7149
7194
  */