diff --git a/dita/RTC-NG/config/keys-rtc-ng-links-unity.ditamap b/dita/RTC-NG/config/keys-rtc-ng-links-unity.ditamap
index c97ac5625e2..8eace1386e0 100644
--- a/dita/RTC-NG/config/keys-rtc-ng-links-unity.ditamap
+++ b/dita/RTC-NG/config/keys-rtc-ng-links-unity.ditamap
@@ -4,6 +4,7 @@
Keys RTC NG Unity Links
+
diff --git a/markdown/RTC 4.x/release-notes/en-US/framework/release_electron_ng.md b/markdown/RTC 4.x/release-notes/en-US/framework/release_electron_ng.md
index fe978c37ab8..eb6c8116dc9 100644
--- a/markdown/RTC 4.x/release-notes/en-US/framework/release_electron_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/framework/release_electron_ng.md
@@ -1,3 +1,86 @@
+## v4.2.3
+
+v4.2.3 was released on September xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - An optional parameter `serverConfig` is added in `ContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **ID3D11Texture2D Rendering**
+
+ As of this release, the SDK supports video formats of type ID3D11Texture2D, improving the rendering effect of video frames in game scenarios. You can set **format** to `VideoTextureId3d11texture2d` when pushing external raw video frames to the SDK by calling `pushVideoFrame`. By setting the **d3d11_texture_2d** and **texture_slice_index** properties, you can determine the ID3D11Texture2D texture object to use.
+
+3. **Local video status error code update**
+
+ In order to help users understand the exact reasons for local video errors in screen sharing scenarios, the following sets of enumerations have been added to the `onLocalVideoStateChanged` callback:
+
+ - `LocalVideoStreamErrorScreenCapturePaused`(23): Screen capture has been paused. Common scenarios for reporting this error code: The current screen may have been switched to a secure desktop, such as a UAC dialog box or Winlogon desktop.
+ - `LocalVideoStreamErrorScreenCaptureResumed`(24): Screen capture has resumed from the paused state.
+ - `LocalVideoStreamErrorScreenCaptureWindowHidden`(25): The window being captured on the current screen is in a hidden state and is not visible on the current screen.
+ - `LocalVideoStreamErrorScreenCaptureWindowRecoverFromHidden`(26): The window for screen capture has been restored from the hidden state.
+ - `LocalVideoStreamErrorScreenCaptureWindowRecoverFromMinimized`(27): The window for screen capture has been restored from the minimized state.
+
+4. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meet the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code `-4: ErrNotSupported` is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+2. **Screen sharing scenario optimization**
+
+ This release optimizes the performance and encoding efficiency in ultra-high-definition (4K, 60 fps) game sharing scenarios, effectively reducing the system resource usage during screen sharing.
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `setPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional crashes and dropped frames occurred in screen sharing scenarios. (macOS)
+- Occasional crashes when joining a channel. (macOS)
+- When calling the `playEffect` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- Calling `takeSnapshotEx` once receives the `onSnapshotTaken` callback for multiple times.
+
+#### API changes
+
+**Added**
+
+- `enableContentInspectEx`
+- `contentInspectImageModeration` in `ContentInspectType`
+- `serverConfig` in `ContentInspectConfig`
+- `onLocalVideoStateChanged` adds the following enumerations:
+
+ - `LocalVideoStreamErrorScreenCapturePaused`
+ - `LocalVideoStreamErrorScreenCaptureResumed`
+ - `LocalVideoStreamErrorScreenCaptureWindowHidden`
+ - `LocalVideoStreamErrorScreenCaptureWindowRecoverFromHidden`
+ - `LocalVideoStreamErrorScreenCaptureWindowRecoverFromMinimized`
+
+- `d3d11_texture_2d` and `texture_slice_index` in `ExternalVideoFrame`
+
+- `VideoTextureId3d11texture2d` in `VideoPixelFormat`
+- `isFeatureAvailableOnDevice`
+- `FeatureType`
+
## v4.2.2
v4.2.2 was released on July xx, 2023.
@@ -20,7 +103,7 @@ v4.2.2 was released on July xx, 2023.
In this release, the `backgroundColor` member has been added to `VideoCanvas`, which allows you to customize the background color of the video canvas when setting the properties of local or remote video display.
-4. **Publishing video streams from different sources** (Windows, macOS)
+4. **Publishing video streams from different sources**
This release adds the following members in `ChannelMediaOptions` to allow you publish video streams captured from the third and fourth camera or screen:
@@ -136,7 +219,7 @@ This release optimizes the APIs for camera and screen capture function. As of v4
- The `VideoInputStreams` in `LocalTranscoderConfiguration` is changed to `videoInputStreams`.
- The `MediaSourceType` in `TranscodingVideoStream` is changed to `VideoSourceType`.
-**5. Virtual sound card (macOS)**
+**5. Virtual sound card (macOS)**
As of v4.2.0, Agora supports third-party virtual sound cards. You can use a third-party virtual sound card as the audio input or output device for the SDK. You can use the `stateChanged` callback to see whether the current input or output device selected by the SDK is a virtual sound card.
@@ -198,7 +281,7 @@ This release adds the `startMediaRenderingTracing` and `startMediaRenderingTraci
Agora recommends that you use this method in conjunction with the UI settings, such as buttons and sliders, in your app. For example, call this method when the user clicks **Join Channel** button and then get the indicators in the video frame rendering process through the `onVideoRenderingTracingResult` callback. This enables developers to optimize the indicators and improve the user experience.
-#### Improvements
+#### Improvements
**1. Voice changer**
diff --git a/markdown/RTC 4.x/release-notes/en-US/framework/release_flutter_ng.md b/markdown/RTC 4.x/release-notes/en-US/framework/release_flutter_ng.md
index b3ff2e53e49..d3837fbea87 100644
--- a/markdown/RTC 4.x/release-notes/en-US/framework/release_flutter_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/framework/release_flutter_ng.md
@@ -1,3 +1,86 @@
+## v6.2.3
+
+v6.2.3 was released on September xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - The `contentInspectImageModeration` enumeration is added in `ContentInspectType` which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them.
+ - An optional parameter `serverConfig` is added in `ContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **ID3D11Texture2D Rendering (Windows)**
+
+ As of this release, the SDK supports video formats of type ID3D11Texture2D, improving the rendering effect of video frames in game scenarios. You can set `format` to `VIDEO_TEXTURE_ID3D11TEXTURE2D` when pushing external raw video frames to the SDK by calling `pushVideoFrame`. By setting the `textureSliceIndex` property, you can determine the ID3D11Texture2D texture object to use.
+
+3. **Local video status error code update (Windows, macOS)**
+
+ In order to help users understand the exact reasons for local video errors in screen sharing scenarios, the following sets of enumerations have been added to the `onLocalVideoStateChanged` callback:
+
+ - `localVideoStreamErrorScreenCapturePaused`(23): Screen capture has been paused. Common scenarios for reporting this error code: The current screen may have been switched to a secure desktop, such as a UAC dialog box or Winlogon desktop.
+ - `localVideoStreamErrorScreenCaptureResumed`(24): Screen capture has resumed from the paused state.
+ - `localVideoStreamErrorScreenCaptureWindowHidden`(25): The window being captured on the current screen is in a hidden state and is not visible on the current screen.
+ - `localVideoStreamErrorScreenCaptureWindowRecoverFromHidden`(26): The window for screen capture has been restored from the hidden state.
+ - `localVideoStreamErrorScreenCaptureWindowRecoverFromMinimized`(27): The window for screen capture has been restored from the minimized state.
+
+4. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meets the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code `-4:errNotSupported` is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+2. **Screen sharing scenario optimization**
+
+ This release optimizes the performance and encoding efficiency in ultra-high-definition (4K, 60 fps) game sharing scenarios, effectively reducing the system resource usage during screen sharing. (Windows)
+
+**Other Improvements**
+
+This release optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional crashes and dropped frames occurred in screen sharing scenarios. (Windows)
+- Occasional crashes when joining a channel. (macOS)
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `playEffect` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- When the host called the `startAudioMixing` method to play music, sometimes the host couldn't hear the music while the remote users could hear it. (Android)
+- Occasional crashes occurred on certain Android devices. (Android)
+- Calling `takeSnapshotEx` once receives the `onSnapshotTaken` callback for multiple times.
+- In channels joined by calling `joinChannelEx` exclusively, calling `setEnableSpeakerphone` is unable to switch audio route from the speaker to the headphone. (Android)
+
+#### API changes
+
+**Added**
+
+- The following enumerations in `onLocalVideoStateChanged` (Windows, macOS):
+ - `localVideoStreamErrorScreenCapturePaused`
+ - `localVideoStreamErrorScreenCaptureResumed`
+ - `localVideoStreamErrorScreenCaptureWindowHidden`
+ - `localVideoStreamErrorScreenCaptureWindowRecoverFromHidden`
+ - `localVideoStreamErrorScreenCaptureWindowRecoverFromMinimized`
+- ``textureSliceIndex` members in `ExternalVideoFrame`. (Windows)
+- `videoTextureId3d11texture2d` in `VideoPixelFormat`. (Windows)
+- `enableContentInspectEx`
+- `contentInspectImageModeration` in `ContentInspectType`.
+- `serverConfig` in `ContentInspectConfig`
+- `isFeatureAvailableOnDevice`
+- `FeatureType`
+
+
## v6.2.2
v6.2.2 was released on July xx, 2023.
diff --git a/markdown/RTC 4.x/release-notes/en-US/framework/release_rn_ng.md b/markdown/RTC 4.x/release-notes/en-US/framework/release_rn_ng.md
index 56d119245b7..b154e04e8b6 100644
--- a/markdown/RTC 4.x/release-notes/en-US/framework/release_rn_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/framework/release_rn_ng.md
@@ -1,3 +1,125 @@
+## v4.2.3
+
+v4.2.3 was released on September xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - An optional parameter `serverConfig` is added in `ContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meet the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code `-4: ErrNotSupported` is returned, indicating the device does not support the feature.
+
+3. **Wildcard token**
+
+ This release introduces wildcard tokens. Agora supports setting the channel name used for generating a token as a wildcard character. The token generated can be used to join any channel if you use the same user id. In scenarios involving multiple channels, such as switching between different channels, using a wildcard token can avoid repeated application of tokens every time users joining a new channel, which reduces the pressure on your token server. See [Wildcard tokens](https://docportal.shengwang.cn/cn/live-streaming-premium-4.x/wildcard_token?platform=All%20Platforms).
+
+ All 4.x SDKs support using wildcard tokens.
+
+4. **Preloading channels**
+
+ This release adds `preloadChannel` and `preloadChannelWithUserAccount` methods, which allows a user whose role is set as audience to preload channels before joining one. 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.
+
+ When preloading more than one channels, Agora recommends that you use a wildcard token for preloading to avoid repeated application of tokens every time you joining a new channel, thus saving the time for switching between channels. See [Wildcard tokens](https://docportal.shengwang.cn/cn/live-streaming-premium-4.x/wildcard_token?platform=All%20Platforms).
+
+5. **Customized background color of video canvas**
+
+ In this release, the `backgroundColor` member has been added to `VideoCanvas`, which allows you to customize the background color of the video canvas when setting the properties of local or remote video display.
+
+
+#### Improvements
+
+1. **Improved camera capture effect**
+
+ This release has improved camera capture effect in the following aspects:
+
+ 1. Support for camera exposure adjustment
+
+ This release adds `isCameraExposureSupported` to query whether the device supports exposure adjustment and `setCameraExposureFactor` to set the exposure ratio of the camera.
+
+ 2. Optimization of default camera selection (iOS)
+
+ Since this release, the default camera selection behavior of the SDK is aligned with that of the iOS system camera. If the device has multiple rear cameras, better shooting perspectives, zooming capabilities, low-light performance, and depth sensing can be achieved during video capture, thereby improving the quality of video capture.
+
+
+2. **Virtual Background Algorithm Upgrade**
+
+ This version has upgraded the portrait segmentation algorithm of the virtual background, which comprehensively improves the accuracy of portrait segmentation, the smoothness of the portrait edge with the virtual background, and the fit of the edge when the person moves. In addition, it optimizes the precision of the person's edge in scenarios such as meetings, offices, homes, and under backlight or weak light conditions.
+
+ This version reduces the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+3. **Screen sharing scenario optimization**
+
+ This release also optimizes the video encoding configuration in screen sharing scenarios. When users customize the `width` and `height` properties of the video, the SDK rounds down the actual encoding resolution while maintaining the aspect ratio of the video and the screen, ensuring that the final encoding resolution does not exceed the user-defined encoding resolution, thereby improving the accuracy of billing for screen sharing streams.
+
+4. **Channel media relay**
+
+ The number of target channels for media relay has been increased to 6. When calling `startOrUpdateChannelMediaRelay` and `startOrUpdateChannelMediaRelayEx`, you can specify up to 6 target channels.
+
+5. **Enhancement in video codec query capability**
+
+ To improve the video codec query capability, this release adds the `codecLevels` member in `CodecCapInfo`. After successfully calling `queryCodecCapability`, you can obtain the hardware and software decoding capability levels of the device for H.264 and H.265 video formats through `codecLevels`.
+
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `setPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+- To improve the switching experience between multiple audio routes, this release adds the `setRouteInCommunicationMode` method. This method can switch the audio route from a Bluetooth headphone to the earpiece, wired headphone or speaker in communication volume mode ([`MODE_IN_COMMUNICATION`](https://developer.android.google.cn/reference/kotlin/android/media/AudioManager?hl=en#mode_in_communication)). (Android)
+- The SDK automacially adjusts the frame rate of the sending end based on the screen sharing scenario. Especially in document sharing scenarios, this feature avoids exceeding the expected video bitrate on the sending end to improve transmission efficiency and reduce network burden.
+- To help users understand the reasons for more types of remote video state changes, the `remoteVideoStateReasonCodecNotSupport` enumeration has been added to the `onRemoteVideoStateChanged` callback, indicating that the local video decoder does not support decoding the received remote video stream.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `playEffect` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- Calling `takeSnapshotEx` once receives the `onSnapshotTaken` callback for multiple times.
+- When the host called the `startAudioMixing` method to play music, sometimes the host couldn't hear the music while the remote users could hear it. (Android)
+- Occasional crashes occurred on certain Android devices. (Android)
+- In channels joined by calling `joinChannelEx` exclusively, calling `setEnableSpeakerphone` is unable to switch audio route from the speaker to the headphone. (Android)
+- Occasionally, noise occurred when the local user listened to their own and remote audio after joining the channel. (macOS)
+- Slow channel reconnection after the connection was interrupted due to network reasons.
+- In screen sharing scenarios, the delay of seeing the shared screen was occasionally higher than expected on some devices.
+- In custom video capturing scenarios, `setBeautyEffectOptions`, `setLowlightEnhanceOptions`, `setVideoDenoiserOptions`, and `setColorEnhanceOptions` could not load extensions automatically.
+
+
+#### API changes
+
+**Added**
+
+- `enableContentInspectEx`
+- `contentInspectImageModeration` in `ContentInspectType`
+- `serverConfig` in `ContentInspectConfig`
+- `isFeatureAvailableOnDevice`
+- `FeatureType`
+- `setCameraExposureFactor`
+- `isCameraExposureSupported`
+- `preloadChannel`
+- `preloadChannelWithUserAccount`
+- `updatePreloadChannelToken`
+- `setRouteInCommunicationMode` (Android)
+- `CodecCapLevels`
+- `VideoCodecCapabilityLevel`
+- `backgroundColor` in `VideoCanvas`
+- `codecLevels` in `CodecCapInfo`
+- `remoteVideoStateReasonCodecNotSupport` in `RemoteVideoStateReason`
+
+
+
## v4.2.1
This version was released on June 21, 2023.
diff --git a/markdown/RTC 4.x/release-notes/en-US/framework/release_unity_ng.md b/markdown/RTC 4.x/release-notes/en-US/framework/release_unity_ng.md
index 43b72f1d3f9..1c7f294a3f0 100644
--- a/markdown/RTC 4.x/release-notes/en-US/framework/release_unity_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/framework/release_unity_ng.md
@@ -1,3 +1,88 @@
+## v4.2.3
+
+v4.2.3 was released on October xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - The `CONTENT_INSPECT_IMAGE_MODERATION` enumeration is added in `CONTENT_INSPECT_TYPE` which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them.
+ - An optional parameter `serverConfig` is added in `ContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `EnableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **ID3D11Texture2D Rendering** (Windows)
+
+ As of this release, the SDK supports video formats of type ID3D11Texture2D, improving the rendering effect of video frames in game scenarios. You can set `format` to `VIDEO_TEXTURE_ID3D11TEXTURE2D` when pushing external raw video frames to the SDK by calling `PushVideoFrame`. By setting the `d3d11_texture_2d` and `texture_slice_index` properties, you can determine the ID3D11Texture2D texture object to use.
+
+3. **Local video status error code update** (Windows, macOS)
+
+ In order to help users understand the exact reasons for local video errors in screen sharing scenarios, the following sets of enumerations have been added to the `OnLocalVideoStateChanged` callback:
+
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED`(23): Screen capture has been paused. Common scenarios for reporting this error code: The current screen may have been switched to a secure desktop, such as a UAC dialog box or Winlogon desktop.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED`(24): Screen capture has resumed from the paused state.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN`(25): The window being captured on the current screen is in a hidden state and is not visible on the current screen.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN`(26): The window for screen capture has been restored from the hidden state.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED`(27): The window for screen capture has been restored from the minimized state.
+
+4. **Check device support for advanced features**
+
+ This version adds the `IsFeatureAvailableOnDevice` method to check whether the capability of the current device meets the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `EnableVirtualBackground` and `SetBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code `-4:ERR_NOT_SUPPORTED` is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+2. **Screen sharing scenario optimization**
+
+ This release optimizes the performance and encoding efficiency in ultra-high-definition (4K, 60 fps) game sharing scenarios, effectively reducing the system resource usage during screen sharing.
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `SetPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional crashes and dropped frames occurred in screen sharing scenarios. (Windows)
+- Occasional crashes when joining a channel. (macOS)
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `PlayEffect` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- When the host called the `StartAudioMixing` [2/2] method to play music, sometimes the host couldn't hear the music while the remote users could hear it. (Android)
+- Occasional crashes occurred on certain Android devices. (Android)
+- Calling `TakeSnapshotEx` once receives the `OnSnapshotTaken` callback for multiple times.
+- In channels joined by calling `JoinChannelEx` exclusively, calling `SetEnableSpeakerphone` is unable to switch audio route from the speaker to the headphone. (Android)
+
+#### API changes
+
+**Added**
+
+- The following enumerations in `OnLocalVideoStateChanged`: (Windows, macOS)
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED`
+- `d3d11_texture_2d` and `texture_slice_index` members in `ExternalVideoFrame` (Windows)
+- `VIDEO_TEXTURE_ID3D11TEXTURE2D` in `VIDEO_PIXEL_FORMAT` (Windows)
+- `EnableContentInspectEx`
+- `CONTENT_INSPECT_IMAGE_MODERATION` in `CONTENT_INSPECT_TYPE`
+- `serverConfig` in `ContentInspectConfig`
+- `IsFeatureAvailableOnDevice`
+- `FeatureType`
+
## v4.2.2
This version was released on July, xx, 2023.
@@ -20,7 +105,7 @@ The following methods in the `IAudioFrameObserver` class are deleted:
The following methods in the `IVideoFrameObserver` class are deleted:
-- `GetVideoFormatPreference`: Use the newly-added `formatPreference` parameter in `RegisterVideoFrameObserver`.
+- `GetVideoFormatPreference`: Use the newly-added `formatPreference` parameter in `RegisterVideoFrameObserver`.
- `GetObservedFramePosition`: Use the newly-added `position` parameter in `RegisterVideoFrameObserver`.
3. **Metadata**
@@ -95,7 +180,7 @@ This release fixed the following issues:
- Occasionally, noise occurred when the local user listened to their own and remote audio after joining the channel. (macOS)
- Slow channel reconnection after the connection was interrupted due to network reasons.
- In screen sharing scenarios, the delay of seeing the shared screen was occasionally higher than expected on some devices.
-- In custom video capturing scenarios, `SetBeautyEffectOptions`, `SetLowlightEnhanceOptions`, `SetVideoDenoiserOptions`, and `SetColorEnhanceOptions` could not load extensions automatically.
+- In custom video capturing scenarios, `SetBeautyEffectOptions`, `SetLowlightEnhanceOptions`, `SetVideoDenoiserOptions`, and `SetColorEnhanceOptions` could not load extensions automatically.
- In multi-device audio recording scenarios, after repeatedly plugging and unplugging or enabling/disabling the audio recording device, no sound could be heard occasionally when calling the `StartRecordingDeviceTest` to start an audio capturing device test. (Windows)
#### API changes
@@ -120,7 +205,7 @@ This release fixed the following issues:
- `REMOTE_VIDEO_STATE_REASON_CODEC_NOT_SUPPORT` in `REMOTE_VIDEO_STATE_REASON`
- `SetMaxMetadataSize`
- `SendMetadata`
-- `position` parameter in `RegisterAudioFrameObserver`
+- `position` parameter in `RegisterAudioFrameObserver`
- `formatPreference` and `position` parameters in `RegisterVideoFrameObserver`
**Deleted**
@@ -322,8 +407,8 @@ This release fixed the following issues:
**Windows**
-- When using Agora Media Player to play RTSP video streams, the video images sometimes appeared pixelated.
-- Adding an alpha channel to an image in PNG or GIF format failed when the local client mixed video streams.
+- When using Agora Media Player to play RTSP video streams, the video images sometimes appeared pixelated.
+- Adding an alpha channel to an image in PNG or GIF format failed when the local client mixed video streams.
- After joining the channel, remote users saw a watermark even though the watermark was deleted.
- If a watermark was added after starting screen sharing, the watermark did not display the screen.
- When joining a channel and accessing an external camera, calling `SetDevice` to specify the video capture device as the external camera did not take effect.
@@ -331,29 +416,29 @@ This release fixed the following issues:
**Android**
-- Occasional crashes occur on Android devices when users joining or leaving a channel.
-- Occational failure when enabling in-ear monitoring.
-- Occational echo.
-- Crashes occurred after users set the video resolution as 3840 × 2160 and started CDN streaming on Xiaomi Redmi 9A devices.
-- In real-time chorus scenarios, remote users heard noises and echoes when an OPPO R11 device joined the channel in loudspeaker mode.
-- When the playback of the local music finished, the `OnAudioMixingFinished` callback was not properly triggered.
-- When using a video frame observer, the first video frame was occasionally missed on the receiver's end.
-- When sharing screens in scenarios involving multiple channels, remote users occasionally saw black screens.
-- Switching to the rear camera with the virtual background enabled occasionally caused the background to be inverted.
-- Abnormal client status caused by an exception in the `OnRemoteAudioStateChanged` callback.
+- Occasional crashes occur on Android devices when users joining or leaving a channel.
+- Occational failure when enabling in-ear monitoring.
+- Occational echo.
+- Crashes occurred after users set the video resolution as 3840 × 2160 and started CDN streaming on Xiaomi Redmi 9A devices.
+- In real-time chorus scenarios, remote users heard noises and echoes when an OPPO R11 device joined the channel in loudspeaker mode.
+- When the playback of the local music finished, the `OnAudioMixingFinished` callback was not properly triggered.
+- When using a video frame observer, the first video frame was occasionally missed on the receiver's end.
+- When sharing screens in scenarios involving multiple channels, remote users occasionally saw black screens.
+- Switching to the rear camera with the virtual background enabled occasionally caused the background to be inverted.
+- Abnormal client status caused by an exception in the `OnRemoteAudioStateChanged` callback.
**iOS**
-- Occasional loss of the `OnFirstRemoteVideoFrame` callback during channel media relay.
-- The receiver actively subscribed to the high-quality stream but unexpectedly received a low-quality stream.
+- Occasional loss of the `OnFirstRemoteVideoFrame` callback during channel media relay.
+- The receiver actively subscribed to the high-quality stream but unexpectedly received a low-quality stream.
- Abnormal client status cased by an exception in the `OnRemoteAudioStateChanged` callback.
**macOS**
-- The receiver was receiving the low-quality stream originally, and automatically switched to high-quality stream after a few seconds.
-- Occasional screen jittering during screen sharing.
-- The receiver was receiving the low-quality stream originally, and automatically switched to high-quality stream after a few seconds.
-- Occasional screen jittering during screen sharing.
+- The receiver was receiving the low-quality stream originally, and automatically switched to high-quality stream after a few seconds.
+- Occasional screen jittering during screen sharing.
+- The receiver was receiving the low-quality stream originally, and automatically switched to high-quality stream after a few seconds.
+- Occasional screen jittering during screen sharing.
- If the rendering view of the player was set as a UIViewController's view, the video was zoomed from the bottom-left corner to the middle of the screen when entering full-screen mode.
- When joining a channel and accessing an external camera, calling `SetDevice` to specify the video capture device as the external camera did not take effect.
@@ -361,13 +446,13 @@ This release fixed the following issues:
- When the host frequently switching the user role between broadcaster and audience in a short period of time, the audience members cannot hear the audio of the host.
- Playing audio files with a sample rate of 48 kHz failed.
-- When there were multiple video streams in a channel, calling some video enhancement APIs occasionally failed.
+- When there were multiple video streams in a channel, calling some video enhancement APIs occasionally failed.
#### API changes
**Added**
-- `StartCameraCapture`
+- `StartCameraCapture`
- `StopCameraCapture`
- `StartScreenCapture`[2/2] (Windows,macOS)
- `StopScreenCapture`[2/2] (Windows,macOS)
@@ -421,4 +506,4 @@ This release fixed the following issues:
- `OnApiCallExecuted`
- `PublishCustomAudioTrackEnableAec ` in` ChannelMediaOptions`
- `EnableRemoteSuperResolution`
-- `superResolutionType` in `RemoteVideoStats`
\ No newline at end of file
+- `superResolutionType` in `RemoteVideoStats`
\ No newline at end of file
diff --git a/markdown/RTC 4.x/release-notes/en-US/native/release_android_ng.md b/markdown/RTC 4.x/release-notes/en-US/native/release_android_ng.md
index c15a2bf2969..10e918923e2 100644
--- a/markdown/RTC 4.x/release-notes/en-US/native/release_android_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/native/release_android_ng.md
@@ -45,10 +45,9 @@ This release fixed the following issues:
- When using the H.265 encoding mode, when a Web client joined the interactivity, it caused a redundant `onUserEnableLocalVideo` callback on the native side: when the host called `enableLocalVideo (true)`, the receiving end first received a `onUserEnableLocalVideo` callback (with `enabled` as `false`) before receiving a `onUserEnableLocalVideo` callback (with `enabled` as `true`).
- Occasional failure of joining a channel when the local system time was not set correctly.
-- When calling the `playEffect [2/2]` method to play two audio files using the same `soundId`, the first audio file was somtimes played repeatedly.
+- When calling the `playEffect [2/2]` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
- When the host called the `startAudioMixing [2/2]` method to play music, sometimes the host couldn't hear the music while the remote users could hear it.
-- Occasional crashes occured on certain Android devices.
-- Loading music lists failed when the local system time was not correct.
+- Occasional crashes occurred on certain Android devices.
- Calling `takeSnapshotEx` once receives the `onSnapshotTaken` callback for multiple times.
- In channels joined by calling `joinChannelEx` exclusively, calling `setEnableSpeakerphone` is unable to switch audio route from the speaker to the headphone.
@@ -168,7 +167,7 @@ If you use the features mentioned in this section, ensure that you modify the im
**1. Video data acquisition**
- The `onCaptureVideoFrame` and `onPreEncodeVideoFrame` callbacks are added with a new parameter called `sourceType`, which is used to indicate the specific video source type.
-- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
+- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
- `onScreenCaptureVideoFrame`
- `onPreEncodeScreenVideoFrame`
diff --git a/markdown/RTC 4.x/release-notes/en-US/native/release_ios_ng.md b/markdown/RTC 4.x/release-notes/en-US/native/release_ios_ng.md
index c793bb8864e..d9b3a0bd287 100644
--- a/markdown/RTC 4.x/release-notes/en-US/native/release_ios_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/native/release_ios_ng.md
@@ -1,3 +1,57 @@
+
+## v4.2.3
+
+v4.2.3 was released on September xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - The `AgoraContentInspectTypeImageModeration` enumeration is added in `AgoraContentInspectType` which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them.
+ - An optional parameter `serverConfig` is added in `AgoraContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meets the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code -4 is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `setPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `playEffect [3/3]` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- Calling `takeSnapshotEx` once receives the `snapshotTaken` callback for multiple times.
+
+#### API changes
+
+**Added**
+
+- `enableContentInspectEx`
+- `AgoraContentInspectTypeImageModeration` in `AgoraContentInspectType`.
+- `serverConfig` in `AgoraContentInspectConfig`
+- `isFeatureAvailableOnDevice`
+- `AgoraFeatureType`
## v4.2.2
v4.2.2 was released on July xx, 2023.
@@ -125,7 +179,7 @@ This release optimizes the APIs for camera and screen capture function. As of v4
**2. Video data acquisition**
- The `onCaptureVideoFrame` and `onPreEncodeVideoFrame` callbacks are added with a new parameter called `sourceType`, which is used to indicate the specific video source type.
-- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
+- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
- `onScreenCaptureVideoFrame`
- `onPreEncodeScreenVideoFrame`
diff --git a/markdown/RTC 4.x/release-notes/en-US/native/release_mac_ng.md b/markdown/RTC 4.x/release-notes/en-US/native/release_mac_ng.md
index 742ab1d2b48..5af316e5515 100644
--- a/markdown/RTC 4.x/release-notes/en-US/native/release_mac_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/native/release_mac_ng.md
@@ -1,3 +1,60 @@
+## v4.2.3
+
+v4.2.3 was released on September xx, 2023.
+
+###
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - The `AgoraContentInspectTypeImageModeration` enumeration is added in `AgoraContentInspectType` which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them.
+ - An optional parameter `serverConfig` is added in `AgoraContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meets the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code -4 is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `setPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional crashes when joining a channel.
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `playEffect [3/3]` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- Calling `takeSnapshotEx` once receives the `snapshotTaken` callback for multiple times.
+
+#### API changes
+
+**Added**
+
+- `enableContentInspectEx`
+- `AgoraContentInspectTypeImageModeration` in `AgoraContentInspectType`.
+- `serverConfig` in `AgoraContentInspectConfig`
+- `isFeatureAvailableOnDevice`
+- `AgoraFeatureType`
+
## v4.2.2
v4.2.2 was released on July xx, 2023.
@@ -114,7 +171,7 @@ If you use the features mentioned in this section, ensure that you modify the im
**1. Video data acquisition**
- The `onCaptureVideoFrame` and `onPreEncodeVideoFrame` callbacks are added with a new parameter called `sourceType`, which is used to indicate the specific video source type.
-- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
+- The following callbacks are deleted. Get the video source type through the `sourceType` parameter in the `onPreEncodeVideoFrame` and `onCaptureVideoFrame` callbacks.
- `onScreenCaptureVideoFrame`
- `onPreEncodeScreenVideoFrame`
diff --git a/markdown/RTC 4.x/release-notes/en-US/native/release_windows_ng.md b/markdown/RTC 4.x/release-notes/en-US/native/release_windows_ng.md
index 0e2d2d1f98f..497a379cc81 100644
--- a/markdown/RTC 4.x/release-notes/en-US/native/release_windows_ng.md
+++ b/markdown/RTC 4.x/release-notes/en-US/native/release_windows_ng.md
@@ -1,3 +1,84 @@
+## v4.2.3
+
+v4.2.3 was released on October xx, 2023.
+
+#### New features
+
+1. **Update video screenshot and upload**
+
+ To facilitate the integration of third-party video moderation services from Agora Extensions Marketplace, this version has the following changes:
+
+ - The `CONTENT_INSPECT_IMAGE_MODERATION` enumeration is added in `CONTENT_INSPECT_TYPE` which means using video moderation extensions from Agora Extensions Marketplace to take video screenshots and upload them.
+ - An optional parameter `serverConfig` is added in `ContentInspectConfig`, which is for server-side configuration related to video screenshot and upload via extensions from Agora Extensions Marketplace. By configuring this parameter, you can integrate multiple third-party moderation extensions and achieve flexible control over extension switches and other features. For more details, please contact [technical support](mailto:support@agora.io).
+
+ In addition, this version also introduces the `enableContentInspectEx` method, which supports taking screenshots for multiple video streams and uploading them.
+
+2. **ID3D11Texture2D Rendering**
+
+ As of this release, the SDK supports video formats of type ID3D11Texture2D, improving the rendering effect of video frames in game scenarios. You can set `format` to `VIDEO_TEXTURE_ID3D11TEXTURE2D` when pushing external raw video frames to the SDK by calling `pushVideoFrame`. By setting the `d3d11_texture_2d` and `texture_slice_index` properties, you can determine the ID3D11Texture2D texture object to use.
+
+3. **Local video status error code update**
+
+ In order to help users understand the exact reasons for local video errors in screen sharing scenarios, the following sets of enumerations have been added to the `onLocalVideoStateChanged` callback:
+
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED`(23): Screen capture has been paused. Common scenarios for reporting this error code: The current screen may have been switched to a secure desktop, such as a UAC dialog box or Winlogon desktop.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED`(24): Screen capture has resumed from the paused state.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN`(25): The window being captured on the current screen is in a hidden state and is not visible on the current screen.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN`(26): The window for screen capture has been restored from the hidden state.
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED`(27): The window for screen capture has been restored from the minimized state.
+
+4. **Check device support for advanced features**
+
+ This version adds the `isFeatureAvailableOnDevice` method to check whether the capability of the current device meets the requirements of the specified advanced feature, such as virtual background and image enhancement.
+
+ Before using advanced features, you can check whether the current device supports these features based on the call result. This helps to avoid performance degradation or unavailable features when enabling advanced features on low-end devices. Based on the return value of this method, you can decide whether to display or enable the corresponding feature button, or notify the user when the device's capabilities are insufficient.
+
+ In addition, since this version, calling `enableVirtualBackground` and `setBeautyEffectOptions` automatically triggers a test on the capability of the current device. When the device is considered underperformed, the error code `-4:ERR_NOT_SUPPORTED` is returned, indicating the device does not support the feature.
+
+#### Improvements
+
+1. **Optimize virtual background memory usage**
+
+ This version has upgraded the virtual background algorithm, reducing the memory usage of the virtual background feature. Compared to the previous version, the memory consumption of the app during the use of the virtual background feature on low-end devices has been reduced by approximately 4% to 10% (specific values may vary depending on the device model and platform).
+
+2. **Screen sharing scenario optimization**
+
+ This release optimizes the performance and encoding efficiency in ultra-high-definition (4K, 60 fps) game sharing scenarios, effectively reducing the system resource usage during screen sharing.
+
+**Other Improvements**
+
+This release includes the following additional improvements:
+
+- Optimizes the logic of handling invalid parameters. When you call the `setPlaybackSpeed` method to set the playback speed of audio files, if you pass an invalid parameter, the SDK returns the error code -2, which means that you need to reset the parameter.
+- Optimizes the logic of Token parsing, in order to prevent an app from crash when an invalid token is passed in.
+
+#### Issues fixed
+
+This release fixed the following issues:
+
+- Occasional crashes and dropped frames occurred in screen sharing scenarios.
+- Occasional failure of joining a channel when the local system time was not set correctly.
+- When calling the `playEffect` method to play two audio files using the same `soundId`, the first audio file was sometimes played repeatedly.
+- Calling `takeSnapshotEx` once receives the `onSnapshotTaken` callback for multiple times.
+
+#### API changes
+
+**Added**
+
+- The following enumerations in `onLocalVideoStateChanged`:
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_PAUSED`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_RESUMED`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_HIDDEN`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_HIDDEN`
+ - `LOCAL_VIDEO_STREAM_ERROR_SCREEN_CAPTURE_WINDOW_RECOVER_FROM_MINIMIZED`
+- `d3d11_texture_2d` and `texture_slice_index` members in `ExternalVideoFrame`.
+- `VIDEO_TEXTURE_ID3D11TEXTURE2D` in `VIDEO_PIXEL_FORMAT`.
+- `enableContentInspectEx`
+- `CONTENT_INSPECT_IMAGE_MODERATION` in `CONTENT_INSPECT_TYPE`.
+- `serverConfig` in `ContentInspectConfig`
+- `isFeatureAvailableOnDevice`
+- `FeatureType`
+
## v4.2.2
v4.2.2 was released on July xx, 2023.
@@ -20,7 +101,7 @@ v4.2.2 was released on July xx, 2023.
In this release, the `backgroundColor` member has been added to `VideoCanvas`, which allows you to customize the background color of the video canvas when setting the properties of local or remote video display.
-4. **Publishing video streams from different sources**
+4. **Publishing video streams from different sources**
This release adds the following members in `ChannelMediaOptions` to allow you publish video streams captured from the third and fourth camera or screen:
@@ -56,8 +137,8 @@ This release fixed the following issues:
- Slow channel reconnection after the connection was interrupted due to network reasons.
- In screen sharing scenarios, the delay of seeing the shared screen was occasionally higher than expected on some devices.
-- In custom video capturing scenarios, `setBeautyEffectOptions`, `setLowlightEnhanceOptions`, `setVideoDenoiserOptions`, and `setColorEnhanceOptions` could not load extensions automatically.
-- In multi-device audio recording scenarios, after repeatedly plugging and unplugging or enabling/disabling the audio recording device, no sound could be heard occasionally when calling the `startRecordingDeviceTest` to start an audio capturing device test.
+- In custom video capturing scenarios, `setBeautyEffectOptions`, `setLowlightEnhanceOptions`, `setVideoDenoiserOptions`, and `setColorEnhanceOptions` could not load extensions automatically.
+- In multi-device audio recording scenarios, after repeatedly plugging and unplugging or enabling/disabling the audio recording device, no sound could be heard occasionally when calling the `startRecordingDeviceTest` to start an audio capturing device test.
#### API changes
@@ -92,7 +173,7 @@ This version fixed the following issues:
- Inability to join channels caused by SDK's incompatibility with some older versions of AccessToken.
- After the sending end called `setAINSMode` to activate AI noise reduction, occasional echo was observed by the receiving end.
- Brief noise occurred while playing media files using the media player.
-- When the sending end mixed and published two streams of video captured by two cameras locally, the video from the second camera was occasionally missing on the receiving end.
+- When the sending end mixed and published two streams of video captured by two cameras locally, the video from the second camera was occasionally missing on the receiving end.
## v4.2.0
@@ -141,9 +222,9 @@ This release optimizes the APIs for camera and screen capture function. As of v4
- `registerAudioFrameObserver` [1/2] and `registerAudioFrameObserver`[2/2] in `IMediaPlayer`
- `enableDualStreamMode`[1/2] and `enableDualStreamMode`[2/2] are depredated. Use `setDualStreamMode`[1/2] and `setDualStreamMode`[2/2] instead.
- `startChannelMediaRelay`, `updateChannelMediaRelay`, `startChannelMediaRelayEx` and `updateChannelMediaRelayEx` are deprecated. Use `startOrUpdateChannelMediaRelay` and `startOrUpdateChannelMediaRelayEx` instead.
-- `OnRecordAudioEncodedFrame` is renamed to `onRecordAudioEncodedFrame`
-- `OnPlaybackAudioEncodedFrame` is renamed to `onPlaybackAudioEncodedFrame`
-- `OnMixedAudioEncodedFrame` is renamed to `onPlaybackAudioEncodedFrame`
+- `OnRecordAudioEncodedFrame` is renamed to `onRecordAudioEncodedFrame`
+- `OnPlaybackAudioEncodedFrame` is renamed to `onPlaybackAudioEncodedFrame`
+- `OnMixedAudioEncodedFrame` is renamed to `onPlaybackAudioEncodedFrame`
#### New features