# App size optimization (/en/realtime-media/broadcast-streaming/build/optimize-quality-and-connection/app-size-optimization)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<_PlatformTabsGroup groupMode="structured" canonicalPlatform="web" platforms="[&#x22;android&#x22;,&#x22;ios&#x22;,&#x22;macos&#x22;,&#x22;web&#x22;,&#x22;windows&#x22;,&#x22;electron&#x22;,&#x22;flutter&#x22;,&#x22;react-native&#x22;,&#x22;unity&#x22;]" showTabs="true">
  <_PlatformPanel platform="android">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="android" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Use the Lite SDK [#use-the-lite-sdk]

    Since version 4.4.0, Agora offers a Lite SDK that provides basic audio and video call functions in a smaller package size. If you only need to implement basic audio and video call functions, integrate the Lite SDK. For details see [SDKs](../../../sdks).

    The Lite SDK includes only the following extensions:

    * Video encoding extension
    * Video decoding extension

    Other extensions and related functions in the [Extension list](#extension-list) are not supported.

    ### Use the Voice SDK [#use-the-voice-sdk]

    Video SDK supports both audio and video functions, and the package size is large. If you only need to use audio features, best practice is to integrate the [Voice SDK](../../../sdks). For details, see [Voice SDK Quickstart](/en/realtime-media/voice/quickstart).

    ### Remove unnecessary extensions [#remove-unnecessary-extensions]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    #### Remove extensions when integrating manually [#remove-extensions-when-integrating-manually]

    When integrating through the [Direct download](../../../sdks) link, manually delete the extension files that you do not need to use.

    #### Remove extensions when integrating using Maven Central [#remove-extensions-when-integrating-using-maven-central]

    When integrating the Android SDK through Maven Central, you can modify the `/Gradle Scripts/build.gradle(Module: <projectname>.app)` file to specify the dynamic libraries you need to integrate and exclude extensions you do not need to use. For details on the correspondence between each file in the Android SDK and the fields in `dependencies`, see [implementation fields](#implementation-fields) for details.

    Refer to the following samples to include, all, none, or selected extensions.

    **Use all extensions**

    ```js
    dependencies {
     implementation 'io.agora.rtc:full-sdk:4.0.1'
     implementation 'io.agora.rtc:full-screen-sharing:4.0.1'
     // ...
    }
    ```

    **Don**

    ```js
    dependencies {
     implementation 'io.agora.rtc:full-rtc-basic:4.0.1'
     //...
    }
    ```

    **Use selected extensions**

    ```js
    dependencies {
     def agora_sdk_version = "4.3.0"
     // The following code contains $, so you must use double-quotes
     implementation "io.agora.rtc:full-rtc-basic:\${agora_sdk_version}"
     implementation "io.agora.rtc:full-ains:\${agora_sdk_version}"
     implementation "io.agora.rtc:audio-beauty:\${agora_sdk_version}"
     //...
    }
    ```

    ## Reference [#reference]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    <CalloutContainer type="warning">
      <CalloutDescription>
        To use the screen sharing extension on the Android platform, integrate both `libagora_screen_capture_extension.so` and `AgoraScreenShareExtension.aar`.
      </CalloutDescription>
    </CalloutContainer>

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Integrating extensions into your project [#integrating-extensions-into-your-project]

    When integrating the Android SDK through Maven Central, you can modify the `dependencies` field in the `/Gradle Scripts/build.gradle(Module: <projectname>.app)` file to specify the dynamic libraries you need to integrate. The correspondence between each file and `implementation` field in the SDK is detailed in the table below:

    **Android Video SDK**

    | File                                                                                                                                                                                                                                                                 | Category | `implementation` field                                     |
    | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :--------------------------------------------------------- |
    | * `agora-rtc-sdk.jar`
    * `libagora-rtc-sdk.so`
    * `libagora-fdkaac.so`
    * `libagora-ffmpeg.so`
    * `libagora-soundtouch.so`
    * `video_dec.so` (added since v4.6.2)
    * `libagora-core.so` (renamed to `libaosl.so` since v4.3.0; dependency since v4.5.0)
    * SDK header files | Required | `io.agora.rtc:full-rtc-basic`                              |
    | `libaosl.so` (dependency since v4.5.0)                                                                                                                                                                                                                               | Required | `io.agora.infra:aosl`                                      |
    | `libagora_ai_noise_suppression_extension.so`                                                                                                                                                                                                                         | Optional | `io.agora.rtc:ains`                                        |
    | `libagora_ai_noise_suppression_ll_extension.so`                                                                                                                                                                                                                      | Optional | `io.agora.rtc:ains-ll` (≥ v4.4.0)                          |
    | `libagora_audio_beauty_extension.so`                                                                                                                                                                                                                                 | Optional | `io.agora.rtc:audio-beauty`                                |
    | `libagora_clear_vision_extension.so`                                                                                                                                                                                                                                 | Optional | `io.agora.rtc:clear-vision`                                |
    | `libagora_content_inspect_extension.so`                                                                                                                                                                                                                              | Optional | `io.agora.rtc:full-content-inspect`                        |
    | `libagora_screen_capture_extension.so`                                                                                                                                                                                                                               | Optional | `io.agora.rtc:screen-capture`                              |
    | `AgoraScreenShareExtension.aar`                                                                                                                                                                                                                                      | Optional | `io.agora.rtc:full-screen-sharing`                         |
    | `libagora_segmentation_extension.so`                                                                                                                                                                                                                                 | Optional | `io.agora.rtc:full-virtual-background`                     |
    | `libagora_spatial_audio_extension.so`                                                                                                                                                                                                                                | Optional | `io.agora.rtc:spatial-audio`                               |
    | `libagora_pvc_extension.so`                                                                                                                                                                                                                                          | Optional | `io.agora.rtc:pvc` (\< v4.1.0)                             |
    | `libagora_super_resolution_extension.so`                                                                                                                                                                                                                             | Optional | `io.agora.rtc:full-super-resolution` (\< v4.1.1)           |
    | `libagora_drm_loader_extension.so`                                                                                                                                                                                                                                   | Optional | `io.agora.rtc:drm-loader` (v4.1.0 to v4.2.6)               |
    | `libagora_udrm3_extension.so`                                                                                                                                                                                                                                        | Optional | `io.agora.rtc:drm` (v4.1.0 to v4.2.6)                      |
    | `libagora_ai_echo_cancellation_extension.so`                                                                                                                                                                                                                         | Optional | `io.agora.rtc:aiaec` (≥ v4.1.0)                            |
    | `libagora_ai_echo_cancellation_ll_extension.so`                                                                                                                                                                                                                      | Optional | `io.agora.rtc:aiaec-ll` (≥ v4.4.0)                         |
    | `libagora_video_quality_analyzer_extension.so`                                                                                                                                                                                                                       | Optional | `io.agora.rtc:full-vqa` (≥ v4.1.0)                         |
    | `libagora_face_detection_extension.so`                                                                                                                                                                                                                               | Optional | `io.agora.rtc:full-face-detect` (≥ v4.1.1)                 |
    | `libagora_face_capture_extension.so`                                                                                                                                                                                                                                 | Optional | `io.agora.rtc:full-face-capture` (≥ v4.3.0)                |
    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`                                                                                                                                                                                                             | Optional | `io.agora.rtc:full-video-codec-enc` (≥ v4.2.0)             |
    | * `libagora_video_decoder_extension.so`
    * `video_dec.so`                                                                                                                                                                                                             | Optional | `io.agora.rtc:full-video-codec-dec` (v4.2.0 to v4.6.1)     |
    | `libagora_video_av1_encoder_extension.so`                                                                                                                                                                                                                            | Optional | `io.agora.rtc:full-video-av1-codec-enc` (≥ v4.3.0)         |
    | `libagora_video_av1_decoder_extension.so`                                                                                                                                                                                                                            | Optional | `io.agora.rtc:full-video-av1-codec-dec` (v4.3.0 to v4.6.1) |
    | `libagora_lip_sync_extension.so`                                                                                                                                                                                                                                     | Optional | `io.agora.rtc:full-lip-sync` (≥ v4.3.1)                    |

    **Android Voice SDK**

    | File                                                                                                                                                                                                    | Category | `implementation` field                |
    | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------- | :------------------------------------ |
    | * `agora-rtc-sdk.jar`
    * `libagora-rtc-sdk.so`
    * `libagora-fdkaac.so`
    * `libagora-soundtouch.so`
    * `libagora-core.so` (renamed to `libaosl.so` since v4.3.0; dependency since v4.5.0)
    * SDK header files | Required | `io.agora.rtc:voice-rtc-basic`        |
    | `libaosl.so` (dependency since v4.5.0)                                                                                                                                                                  | Required | `io.agora.infra:aosl`                 |
    | `libagora_ai_noise_suppression_extension.so`                                                                                                                                                            | Optional | `io.agora.rtc:ains`                   |
    | `libagora_ai_noise_suppression_ll_extension.so`                                                                                                                                                         | Optional | `io.agora.rtc:ains-ll` (≥ v4.4.0)     |
    | `libagora_audio_beauty_extension.so`                                                                                                                                                                    | Optional | `io.agora.rtc:audio-beauty`           |
    | `libagora_spatial_audio_extension.so`                                                                                                                                                                   | Optional | `io.agora.rtc:spatial-audio`          |
    | `libagora_drm_loader_extension.so`                                                                                                                                                                      | Optional | `io.agora.rtc:drm-loader` (≥ v4.1.0)  |
    | `libagora_udrm3_extension.so`                                                                                                                                                                           | Optional | `io.agora.rtc:drm` (v4.1.0 to v4.2.6) |
    | `libagora_ai_echo_cancellation_extension.so`                                                                                                                                                            | Optional | `io.agora.rtc:aiaec` (≥ v4.1.0)       |
    | `libagora_ai_echo_cancellation_ll_extension.so`                                                                                                                                                         | Optional | `io.agora.rtc:aiaec-ll` (≥ v4.4.0)    |

    ### Frequently asked questions [#frequently-asked-questions]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="ios">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="ios" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Use the Lite SDK [#use-the-lite-sdk-1]

    Since version 4.4.0, Agora offers a Lite SDK that provides basic audio and video call functions in a smaller package size. If you only need to implement basic audio and video call functions, integrate the Lite SDK. For details see [SDKs](../../../sdks).

    The Lite SDK includes only the following extensions:

    * Video encoding extension
    * Video decoding extension

    Other extensions and related functions in the [Extension list](#extension-list) are not supported.

    ### Use the Voice SDK [#use-the-voice-sdk-1]

    Video SDK supports both audio and video functions, and the package size is large. If you only need to use audio features, best practice is to integrate the [Voice SDK](../../../sdks). For details, see [Voice SDK Quickstart](/en/realtime-media/voice/quickstart).

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-1]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    #### Delete extensions when integrating using CocoaPods [#delete-extensions-when-integrating-using-cocoapods]

    When integrating the iOS or macOS SDK through CocoaPods, use the `subspecs` field in the Podfile to specify the dynamic libraries you need to integrate. This excludes extensions you do not need. For details about the corresponding relationship between dynamic libraries and `subspecs` field, see [subspecs field](#subspecs-field).

    Refer to the following samples to use all, none, or some extensions:

    **Use all extensions**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_iOS', '4.3.1'
    end
    ```

    **Don**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_iOS', '4.3.1', :subspecs => ['RtcBasic']
    end
    ```

    **Use some extensions**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_iOS', '4.3.1', :subspecs => ['RtcBasic', 'AINS', 'AudioBeauty']
    end
    ```

    <CalloutContainer type="info">
      <CalloutDescription>
        When using the above pod command, make sure that the SDK version you specify includes the extension you have selected, and that the `subspecs` field is correct, otherwise a pod installation error is reported. For example, if you use `pod 'AgoraRtcEngine_iOS', '4.0.0', :subspecs => ['RtcBasic', 'AgoraRtcAINS']`, an error is reported.
      </CalloutDescription>
    </CalloutContainer>

    ## Reference [#reference-1]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-1]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Integrating extensions into your project [#integrating-extensions-into-your-project-1]

    When integrating the iOS/macOS SDK through CocoaPods, you can use the `subspecs` field in the Podfile to specify the dynamic libraries you need to integrate to exclude the extensions you don't need to use. The correspondence between dynamic libraries and `subspecs` fields is detailed in the following table:

    **iOS Video SDK**

    | Dynamic Library                                                                                                                                                                                                                                                                                                                      | Category | `subspecs` field                      |
    | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :------------------------------------ |
    | * `AgoraRtcKit.xcframework`
    * `Agorafdkaac.xcframework`
    * `AgoraSoundTouch.xcframework`
    * `Agoraffmpeg.xcframework`
    * `video_dec.xcframework` (added since v4.6.2)
    * `AgoraCore.xcframework` (renamed to `aosl.xcframework` since v4.3.0; dependency since v4.5.0, see [AgoraInfra\_iOS](https://cocoapods.org/pods/AgoraInfra_iOS)) | Required | `RtcBasic`                            |
    | `AgoraAiNoiseSuppressionExtension.xcframework`                                                                                                                                                                                                                                                                                       | Optional | `AINS`                                |
    | `AgoraAiNoiseSuppressionLLExtension.xcframework`                                                                                                                                                                                                                                                                                     | Optional | `AINSLL` (≥ v4.4.0)                   |
    | `AgoraAudioBeautyExtension.xcframework`                                                                                                                                                                                                                                                                                              | Optional | `AudioBeauty`                         |
    | `AgoraClearVisionExtension.xcframework`                                                                                                                                                                                                                                                                                              | Optional | `ClearVision`                         |
    | `AgoraContentInspectExtension.xcframework`                                                                                                                                                                                                                                                                                           | Optional | `ContentInspect`                      |
    | `AgoraPvcExtension.xcframework`                                                                                                                                                                                                                                                                                                      | Optional | `PVC` (\< v4.1.0)                     |
    | `AgoraSpatialAudioExtension.xcframework`                                                                                                                                                                                                                                                                                             | Optional | `SpatialAudio`                        |
    | `AgoraVideoSegmentationExtension.xcframework`                                                                                                                                                                                                                                                                                        | Optional | `VirtualBackground`                   |
    | `AgoraAiEchoCancellationExtension.xcframework`                                                                                                                                                                                                                                                                                       | Optional | `AIAEC` (≥ v4.1.0)                    |
    | `AgoraAiEchoCancellationLLExtension.xcframework`                                                                                                                                                                                                                                                                                     | Optional | `AIAECLL` (≥ v4.4.0)                  |
    | `AgoraDrmLoaderExtension.xcframework`                                                                                                                                                                                                                                                                                                | Optional | `DRM` (≥ v4.1.0)                      |
    | `AgoraFaceDetectionExtension.xcframework`                                                                                                                                                                                                                                                                                            | Optional | `FaceDetection` (≥ v4.1.1)            |
    | `AgoraFaceCaptureExtension.xcframework`                                                                                                                                                                                                                                                                                              | Optional | `FaceCapture` (≥ v4.3.0)              |
    | `AgoraVideoQualityAnalyzerExtension.xcframework`                                                                                                                                                                                                                                                                                     | Optional | `VQA` (≥ v4.1.0)                      |
    | `AgoraReplayKitExtension.xcframework`                                                                                                                                                                                                                                                                                                | Optional | `ReplayKit`                           |
    | `AgoraSuperResolutionExtension.xcframework`                                                                                                                                                                                                                                                                                          | Optional | `SuperResolution` (\< v4.1.1)         |
    | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework`                                                                                                                                                                                                                                                                 | Optional | `VideoCodecEnc` (≥ v4.2.0)            |
    | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework`                                                                                                                                                                                                                                                                 | Optional | `VideoCodecDec` (v4.2.0 to v4.6.1)    |
    | `AgoraVideoAv1EncoderExtension.xcframework`                                                                                                                                                                                                                                                                                          | Optional | `VideoAv1CodecEnc` (≥ v4.3.0)         |
    | `AgoraVideoAv1DecoderExtension.xcframework`                                                                                                                                                                                                                                                                                          | Optional | `VideoAv1CodecDec` (v4.3.0 to v4.6.1) |
    | `AgoraLipSyncExtension.xcframework`                                                                                                                                                                                                                                                                                                  | Optional | `LipSync` (≥ v4.3.1)                  |

    **iOS Voice SDK**

    | Dynamic Library                                                                                                                                                                                                                                           | Category | `subspecs` field     |
    | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :------------------- |
    | * `AgoraRtcKit.xcframework`
    * `Agorafdkaac.xcframework`
    * `AgoraSoundTouch.xcframework`
    * `AgoraCore.xcframework` (renamed to `aosl.xcframework` since v4.3.0; dependency since v4.5.0, see [AgoraInfra\_iOS](https://cocoapods.org/pods/AgoraInfra_iOS)) | Required | `RtcBasic`           |
    | `AgoraAiNoiseSuppressionExtension.xcframework`                                                                                                                                                                                                            | Optional | `AINS`               |
    | `AgoraAiNoiseSuppressionLLExtension.xcframework`                                                                                                                                                                                                          | Optional | `AINSLL` (≥ v4.4.0)  |
    | `AgoraAudioBeautyExtension.xcframework`                                                                                                                                                                                                                   | Optional | `AudioBeauty`        |
    | `AgoraSpatialAudioExtension.xcframework`                                                                                                                                                                                                                  | Optional | `SpatialAudio`       |
    | `AgoraAiEchoCancellationExtension.xcframework`                                                                                                                                                                                                            | Optional | `AIAEC` (≥ v4.1.0)   |
    | `AgoraAiEchoCancellationLLExtension.xcframework`                                                                                                                                                                                                          | Optional | `AIAECLL` (≥ v4.4.0) |
    | `AgoraDrmLoaderExtension.xcframework`                                                                                                                                                                                                                     | Optional | `DRM` (≥ v4.1.0)     |

    ### Frequently asked questions [#frequently-asked-questions-1]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="macos">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="macos" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-2]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    #### Delete extensions when integrating using CocoaPods [#delete-extensions-when-integrating-using-cocoapods-1]

    When integrating the iOS or macOS SDK through CocoaPods, use the `subspecs` field in the Podfile to specify the dynamic libraries you need to integrate. This excludes extensions you do not need. For details about the corresponding relationship between dynamic libraries and `subspecs` field, see [subspecs field](#subspecs-field).

    Refer to the following samples to use all, none, or some extensions:

    **Use all extensions**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_macOS', '4.3.1'
    end
    ```

    **Don**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_macOS', '4.3.1', :subspecs => ['RtcBasic']
    end
    ```

    **Use some extensions**

    ```ruby
    # platform :ios, '9.0'
    target 'Your App' do
      pod 'AgoraRtcEngine_macOS', '4.3.1', :subspecs => ['RtcBasic', 'AINS', 'AudioBeauty']
    end
    ```

    <CalloutContainer type="info">
      <CalloutDescription>
        When using the above pod command, make sure that the SDK version you specify includes the extension you have selected, and that the `subspecs` field is correct, otherwise a pod installation error is reported. For example, if you use `pod 'AgoraRtcEngine_iOS', '4.0.0', :subspecs => ['RtcBasic', 'AgoraRtcAINS']`, an error is reported.
      </CalloutDescription>
    </CalloutContainer>

    ## Reference [#reference-2]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-2]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Integrating extensions into your project [#integrating-extensions-into-your-project-2]

    When integrating the iOS/macOS SDK through CocoaPods, you can use the `subspecs` field in the Podfile to specify the dynamic libraries you need to integrate to exclude the extensions you don't need to use. The correspondence between dynamic libraries and `subspecs` fields is detailed in the following table:

    | Dynamic Library                                                                                                                                                                                                                                                                                                                          | Category | `subspecs` field                      |
    | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | :------------------------------------ |
    | * `AgoraRtcKit.xcframework`
    * `Agorafdkaac.xcframework`
    * `AgoraSoundTouch.xcframework`
    * `Agoraffmpeg.xcframework`
    * `video_dec.xcframework` (added since v4.6.2)
    * `AgoraCore.xcframework` (renamed to `aosl.xcframework` since v4.3.0; dependency since v4.5.0, see [AgoraInfra\_macOS](https://cocoapods.org/pods/AgoraInfra_macOS)) | Required | `RtcBasic`                            |
    | `AgoraAiNoiseSuppressionExtension.xcframework`                                                                                                                                                                                                                                                                                           | Optional | `AINS`                                |
    | `AgoraAiNoiseSuppressionLLExtension.xcframework`                                                                                                                                                                                                                                                                                         | Optional | `AINSLL` (≥ v4.4.0)                   |
    | `AgoraAudioBeautyExtension.xcframework`                                                                                                                                                                                                                                                                                                  | Optional | `AudioBeauty`                         |
    | `AgoraClearVisionExtension.xcframework`                                                                                                                                                                                                                                                                                                  | Optional | `ClearVision`                         |
    | `AgoraContentInspectExtension.xcframework`                                                                                                                                                                                                                                                                                               | Optional | `ContentInspect`                      |
    | `AgoraPvcExtension.xcframework`                                                                                                                                                                                                                                                                                                          | Optional | `PVC` (\< v4.1.0)                     |
    | `AgoraSpatialAudioExtension.xcframework`                                                                                                                                                                                                                                                                                                 | Optional | `SpatialAudio`                        |
    | `AgoraVideoSegmentationExtension.xcframework`                                                                                                                                                                                                                                                                                            | Optional | `VirtualBackground`                   |
    | `AgoraAiEchoCancellationExtension.xcframework`                                                                                                                                                                                                                                                                                           | Optional | `AIAEC` (≥ v4.1.0)                    |
    | `AgoraAiEchoCancellationLLExtension.xcframework`                                                                                                                                                                                                                                                                                         | Optional | `AIAECLL` (≥ v4.4.0)                  |
    | `AgoraDrmLoaderExtension.xcframework`                                                                                                                                                                                                                                                                                                    | Optional | `DRM` (≥ v4.1.0)                      |
    | `AgoraFaceDetectionExtension.xcframework`                                                                                                                                                                                                                                                                                                | Optional | `FaceDetection` (≥ v4.1.1)            |
    | `AgoraFaceCaptureExtension.xcframework`                                                                                                                                                                                                                                                                                                  | Optional | `FaceCapture` (≥ v4.3.0)              |
    | `AgoraVideoQualityAnalyzerExtension.xcframework`                                                                                                                                                                                                                                                                                         | Optional | `VQA` (≥ v4.1.0)                      |
    | `AgoraScreenCaptureExtension.xcframework`                                                                                                                                                                                                                                                                                                | Optional | `ScreenCapture` (≥ v4.2.0)            |
    | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework`                                                                                                                                                                                                                                                                     | Optional | `VideoCodecEnc` (≥ v4.2.0)            |
    | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework`                                                                                                                                                                                                                                                                     | Optional | `VideoCodecDec` (v4.2.0 to v4.6.1)    |
    | `AgoraVideoAv1EncoderExtension.xcframework`                                                                                                                                                                                                                                                                                              | Optional | `VideoAv1CodecEnc` (≥ v4.3.0)         |
    | `AgoraVideoAv1DecoderExtension.xcframework`                                                                                                                                                                                                                                                                                              | Optional | `VideoAv1CodecDec` (v4.3.0 to v4.6.1) |
    | `AgoraLipSyncExtension.xcframework`                                                                                                                                                                                                                                                                                                      | Optional | `LipSync` (≥ v4.3.1)                  |

    ### Frequently asked questions [#frequently-asked-questions-2]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="web">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="web" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ## Reduce the app size [#reduce-the-app-size]

    To reduce the app size, implement the following strategies:

    ### Use tree shaking [#use-tree-shaking]

    In versions before v4.19.0, the `AgoraRTC` module is the entrance to all callable methods in the Web Video SDK. Even if you only use a part of the Video SDK's functionality, you still need to load the complete SDK, which may result in the app containing a lot of unused code.

    Starting from version 4.19.0, the Video SDK for Web has integrated [tree shaking](https://webpack.js.org/guides/tree-shaking/) support. Using tree shaking has the following advantages:

    * Only load the SDK features you actually use, unreferenced code is removed during the build process.
    * Reduce redundancy between SDK dependencies and your app dependencies.

    Starting from version 4.22.0, in addition to the core modules, the SDK also provides multiple independent service modules for optional use, such as media stream relay and live streaming, to meet the needs of different business use-cases.

    <CalloutContainer type="info">
      <CalloutDescription>
        The optimization effect of tree shaking is currently limited by the SDK architecture. Agora will continue to improve the tree shaking effect in future versions.
      </CalloutDescription>
    </CalloutContainer>

    To use tree shaking, follow these steps to integrate the SDK:

    1. Run the following command to install the latest SDK package using npm:

       ```bash
       npm install agora-rtc-sdk-ng
       ```

    2. Import all used methods, enumerations, constants, types, and so on by adding `/esm` at the end of the package name `agora-rtc-sdk-ng`:

       ```javascript
       // Example of correct reference citation method
       import { createClient } from "agora-rtc-sdk-ng/esm";
       // Import enum
       import { ConnectionDisconnectedReason } from "agora-rtc-sdk-ng/esm";
       // Import constant
       import { VERSION } from "agora-rtc-sdk-ng/esm";
       // Import type
       import type { ICameraVideoTrack } from "agora-rtc-sdk-ng/esm";
       ```

    3. Starting from version 4.23.0, you can integrate the functional modules you need as follows:

    **Plan B**

    ```js
    // Import core module
      import { AgoraRTC } from "agora-rtc-sdk-ng/esm";
      // Import Plan-B module
      import { PlanBConnectionService } from "agora-rtc-sdk-ng/services/planb-connection";

      AgoraRTC.use(PlanBConnectionService);
    ```

    **Content moderation**

    ```js
    // Import core module
      import { AgoraRTC } from "agora-rtc-sdk-ng/esm";
      // Import real-time moderation (content moderation) module
      import { ImageModerationService } from "agora-rtc-sdk-ng/services/image-moderation";
      import { ContentInspectService } from "agora-rtc-sdk-ng/services/content-inspect";

      AgoraRTC.use(ImageModerationService)
      .use(ContentInspectService);
    ```

    **Channel media relay**

    ```js
    // Import core module
      import { AgoraRTC } from "agora-rtc-sdk-ng/esm";
      // Import cross-channel media relay module
      import { ChannelMediaRelayService } from "agora-rtc-sdk-ng/services/channel-media-relay";

      AgoraRTC.use(ChannelMediaRelayService);
    ```

    **Live streaming**

    ```js
    // Import core module
      import { AgoraRTC } from "agora-rtc-sdk-ng/esm";
      // Import live streaming service module
      import { LiveStreamingService } from "agora-rtc-sdk-ng/services/live-streaming";

      AgoraRTC.use(LiveStreamingService);
    ```

    ## Reference [#reference-3]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Frequently asked questions [#frequently-asked-questions-3]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="windows">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="windows" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-3]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    #### Remove unused extensions [#remove-unused-extensions]

    When integrating through the [Direct download](/en/api-reference/sdks) link, manually delete the extension files that you do not need to use.

    ## Reference [#reference-4]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-3]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Frequently asked questions [#frequently-asked-questions-4]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="electron">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="electron" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Use the Voice SDK [#use-the-voice-sdk-2]

    Video SDK supports both audio and video functions, and the package size is large. If you only need to use audio features, best practice is to integrate the [Voice SDK](../../../sdks). For details, see [Voice SDK Quickstart](/en/realtime-media/voice/quickstart).

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-4]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    #### Remove extensions when integrating manually [#remove-extensions-when-integrating-manually-1]

    When integrating through the [Direct download](../../../sdks) link, manually delete the extension files that you do not need to use.

    ## Reference [#reference-5]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-4]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Frequently asked questions [#frequently-asked-questions-5]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="flutter">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="flutter" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-5]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    <CodeBlockTabs defaultValue="android">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="android">
          Android
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="ios-and-macos">
          iOS and macOS
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="android">
        If your target platform is Android, use Gradle's `packagingOptions.exclude` properties to exclude unnecessary extension dynamic libraries from the final `APK` or `AAR` file. Removing these files during the packaging process reduces the app size and improves app performance.

        In the `build.gradle` file in the project root directory, find the `android` configuration block. Under the module `packagingOptions`, use the `exclude` attribute to specify the extension dynamic libraries you want to exclude. Refer to the following example to exclude specific extensions:

        ```text
        android {
          // ...
          packagingOptions {
           // Exclude AI denoise extension for the armeabi-v7a architecture
           exclude 'lib/armeabi-v7a/libagora_ai_denoise_extension.so'
           // Exclude AI denoise extension for the arm64-v8a architecture
           exclude 'lib/arm64-v8a/libagora_ai_denoise_extension.so'
           // Exclude spatial audio extension for the armeabi-v7a architecture
           exclude 'lib/armeabi-v7a/libagora_spatial_audio_extension.so'
           // Exclude spatial audio extension for the arm64-v8a architecture
           exclude 'lib/arm64-v8a/libagora_spatial_audio_extension.so'
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="ios-and-macos">
        If your target platform is iOS or macOS, follow these steps to reduce the size of your app:

        1. Add the following script to the Podfile under the target section for the `agora_rtc_engine` dependency. This script marks unnecessary extensions as [weak frameworks](https://guides.cocoapods.org/syntax/podspec.html#weak_frameworks):

           ```ruby
           post_install do |installer|
            installer.pods_project.targets.each do |target|
             flutter_additional_ios_build_settings(target)

             targets_to_weaklink=['Pods-Runner', "agora_rtc_engine"]
             # Add more -weak_framework flags for other unnecessary extensions if needed
             frameworks_to_weaklink=["AgoraAiEchoCancellationExtension", "AgoraAiNoiseSuppressionExtension", "AgoraAudioBeautyExtension", "AgoraClearVisionExtension", "AgoraContentInspectExtension", "AgoraDrmLoaderExtension", "AgoraReplayKitExtension", "AgoraSpatialAudioExtension ", "AgoraSuperResolutionExtension", "AgoraVideoQualityAnalyzerExtension", "AgoraVideoSegmentationExtension"]

             next unless targets_to_weaklink.include?(target.name)

             target.build_configurations.each do |config|
              base_config_reference = config.base_configuration_reference
              unless base_config_reference. nil?
               xcconfig_path = base_config_reference.real_path
               xcconfig = File.read(xcconfig_path)
               frameworks_to_weaklink.each do |framework|
                xcconfig = xcconfig.gsub(/-framework "#{framework}"/, "-weak_framework \"#{framework}\"")
               end
               File.open(xcconfig_path, "w") { |file| file << xcconfig }
              end
             end
            end
           end
           ```

        2. To remove unnecessary extensions, follow these steps in Xcode:

        3. Navigate to the **Build Phases** tab.

        4. Click the `+` button at the bottom left corner of the **Build Phases** tab and select **New Run Script Phase**.

        5. Specify Shell as `/usr/bin/ruby` and replace the code part with the following script:

           ```bash
           $stderr.puts "Removing Unnecessary Frameworks"
           # The extensions listed in frameworks_to_weaklink here should match those in Step 1.
           frameworks_to_weaklink=["AgoraAiEchoCancellationExtension", "AgoraAiNoiseSuppressionExtension", "AgoraAudioBeautyExtension", "AgoraClearVisionExtension", "AgoraContentInspectExtension", "AgoraDrmLoaderExtension", "AgoraReplayKitExtension", "AgoraSpatialAudioExtension ", "AgoraSuperResolutionExtension", "AgoraVideoQualityAnalyzerExtension", "AgoraVideoSegmentationExtension"]
           for framework in frameworks_to_weaklink
             framework_path = "#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['FRAMEWORKS_FOLDER_PATH']}/#{framework}.framework"
             `rm -Rf "#{framework_path}"`
           end
           ```

        The following figure shows the required steps:

        ![reduce app size step 2](https://assets-docs.agora.io/images/video-sdk/reduce-app-size-flutter-step-2.png)
      </CodeBlockTab>
    </CodeBlockTabs>

    ## Reference [#reference-6]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-5]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Frequently asked questions [#frequently-asked-questions-6]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="react-native">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="react-native" />

    Reducing the app size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the app. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the app. For example, running the app on smart wearable devices with limited storage space.

    * The target user group of the app is located in underdeveloped areas. The poor network connectivity causes the app download time to be too long.

    This page shows you how to optimize the size of apps with integrated Video SDK.

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-6]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    <CodeBlockTabs defaultValue="android">
      <CodeBlockTabsList>
        <CodeBlockTabsTrigger value="android">
          Android
        </CodeBlockTabsTrigger>

        <CodeBlockTabsTrigger value="ios-and-macos">
          iOS and macOS
        </CodeBlockTabsTrigger>
      </CodeBlockTabsList>

      <CodeBlockTab value="android">
        If your target platform is Android, use Gradle's `packagingOptions.exclude` properties to exclude unnecessary extension dynamic libraries from the final `APK` or `AAR` file. Removing these files during the packaging process reduces the app size and improves app performance.

        In the `build.gradle` file in the project root directory, find the `android` configuration block. Under the module `packagingOptions`, use the `exclude` attribute to specify the extension dynamic libraries you want to exclude. Refer to the following example to exclude specific extensions:

        ```text
        android {
          // ...
          packagingOptions {
           // Exclude AI denoise extension for the armeabi-v7a architecture
           exclude 'lib/armeabi-v7a/libagora_ai_denoise_extension.so'
           // Exclude AI denoise extension for the arm64-v8a architecture
           exclude 'lib/arm64-v8a/libagora_ai_denoise_extension.so'
           // Exclude spatial audio extension for the armeabi-v7a architecture
           exclude 'lib/armeabi-v7a/libagora_spatial_audio_extension.so'
           // Exclude spatial audio extension for the arm64-v8a architecture
           exclude 'lib/arm64-v8a/libagora_spatial_audio_extension.so'
          }
        }
        ```
      </CodeBlockTab>

      <CodeBlockTab value="ios-and-macos">
        If your target platform is iOS or macOS, follow these steps to reduce the size of your app:

        1. Add the following script to the Podfile under the target section for the `agora_rtc_engine` dependency. This script marks unnecessary extensions as [weak frameworks](https://guides.cocoapods.org/syntax/podspec.html#weak_frameworks):

           ```ruby
           post_install do |installer|
            installer.pods_project.targets.each do |target|
             flutter_additional_ios_build_settings(target)

             targets_to_weaklink=['Pods-Runner', "agora_rtc_engine"]
             # Add more -weak_framework flags for other unnecessary extensions if needed
             frameworks_to_weaklink=["AgoraAiEchoCancellationExtension", "AgoraAiNoiseSuppressionExtension", "AgoraAudioBeautyExtension", "AgoraClearVisionExtension", "AgoraContentInspectExtension", "AgoraDrmLoaderExtension", "AgoraReplayKitExtension", "AgoraSpatialAudioExtension ", "AgoraSuperResolutionExtension", "AgoraVideoQualityAnalyzerExtension", "AgoraVideoSegmentationExtension"]

             next unless targets_to_weaklink.include?(target.name)

             target.build_configurations.each do |config|
              base_config_reference = config.base_configuration_reference
              unless base_config_reference. nil?
               xcconfig_path = base_config_reference.real_path
               xcconfig = File.read(xcconfig_path)
               frameworks_to_weaklink.each do |framework|
                xcconfig = xcconfig.gsub(/-framework "#{framework}"/, "-weak_framework \"#{framework}\"")
               end
               File.open(xcconfig_path, "w") { |file| file << xcconfig }
              end
             end
            end
           end
           ```

        2. To remove unnecessary extensions, follow these steps in Xcode:

        3. Navigate to the **Build Phases** tab.

        4. Click the `+` button at the bottom left corner of the **Build Phases** tab and select **New Run Script Phase**.

        5. Specify Shell as `/usr/bin/ruby` and replace the code part with the following script:

           ```bash
           $stderr.puts "Removing Unnecessary Frameworks"
           # The extensions listed in frameworks_to_weaklink here should match those in Step 1.
           frameworks_to_weaklink=["AgoraAiEchoCancellationExtension", "AgoraAiNoiseSuppressionExtension", "AgoraAudioBeautyExtension", "AgoraClearVisionExtension", "AgoraContentInspectExtension", "AgoraDrmLoaderExtension", "AgoraReplayKitExtension", "AgoraSpatialAudioExtension ", "AgoraSuperResolutionExtension", "AgoraVideoQualityAnalyzerExtension", "AgoraVideoSegmentationExtension"]
           for framework in frameworks_to_weaklink
             framework_path = "#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['FRAMEWORKS_FOLDER_PATH']}/#{framework}.framework"
             `rm -Rf "#{framework_path}"`
           end
           ```

        The following figure shows the required steps:

        ![reduce app size step 2](https://assets-docs.agora.io/images/video-sdk/reduce-app-size-flutter-step-2.png)
      </CodeBlockTab>
    </CodeBlockTabs>

    ## Reference [#reference-7]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-6]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `enableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Frequently asked questions [#frequently-asked-questions-7]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>

  <_PlatformPanel platform="unity">
    <_PlatformProcessedMarker groupMode="structured" canonicalPlatform="web" platform="unity" />

    Reducing the game size is of great significance in improving user experience. A smaller package size means that users consume less bandwidth and time to download the game. Consider the following use-cases where app size optimization is critical:

    * There are strict requirements on the size of the game. For example, running the game on smart wearable devices with limited storage space.

    * The target user group of the game is located in underdeveloped areas. The poor network connectivity causes the game download time to be too long.

    This page shows you how to optimize the size of games with integrated Video SDK.

    ### Use the Voice SDK [#use-the-voice-sdk-3]

    Video SDK supports both audio and video functions, and the package size is large. If you only need to use audio features, best practice is to integrate the [Voice SDK](../../../sdks). For details, see [Voice SDK Quickstart](/en/realtime-media/voice/quickstart).

    ### Remove unnecessary extensions [#remove-unnecessary-extensions-7]

    Video SDK provides optional extension dynamic libraries. The name of the extension is suffixed with `extension`. See the [extension list](#extension-list) for details on the function and size of the extensions. Refer to the following ways to exclude these extensions to reduce the size of the app.

    Open the `Assets/Agora-RTC-Plugin/Agora-Unity-RTC-SDK/Plugins` folder in Unity Editor. It contains dynamic libraries for iOS, macOS, Windows, and Android. As shown below:

    ![Reduce App Size](https://assets-docs.agora.io/images/video-sdk/unity-app-size-step1.png)

    * **Android**: If your target platform is Android, consider deleting the following files under the path `Android/AgoraRtcEngineKit.plugin/libs`:

      * `arm64-v8a/<*>_extension.so`
      * `armeabi-v7a/<*>_extension.so`
      * `x86/<*>_extension.so`
      * `x86_64/<*>_extension.so`

      Only delete these files if they are not required for your application to function correctly.

    * **iOS**: If your target platform is iOS, you can safely delete any unused `<*>Extension.framework` files located in the `iOS` folder of your project.

    * **macOS**: For macOS targets, you may delete any unused `<*>Extension.framework` files found in the `macOS/AgoraRtcWrapperUnity.bundle/Contents/Frameworks` path.

    * **Windows**: If targeting Windows, you have the option to delete `<*>extension.dll` or `<*>extension.dll.lib` files located in the `x86` or `x86_64` folder.

    Exercise caution when deleting files, and always make sure that any removals do not impact the functionality of your application.

    ### Delete files from the exported native project [#delete-files-from-the-exported-native-project]

    When exporting a native project from Unity for a target platform, the dynamic library corresponding to that platform is copied to the native project. To remove unnecessary files, delete the dynamic libraries ending with `extension` directly from the exported native project.

    ## Reference [#reference-8]

    This section contains content that completes the information in this page, or points you to documentation that explains other aspects to this product.

    ### Extension list [#extension-list-7]

    Refer to the following information for an introduction to each Video SDK extension and the increase in the size of your app after integration.

    <CalloutContainer type="info">
      <CalloutDescription>
        The information in this section is based on version 4.4.0 of the Video SDK.
      </CalloutDescription>
    </CalloutContainer>

    **AI Noise Suppression**

    The Video SDK supports a new version of AI noise suppression, which provides better vocal fidelity, cleaner noise suppression, and adds de-reverberation capabilities. After integrating the AI noise reduction extension, call the `setAINSMode` method to enable the AI noise reduction function and select the noise reduction mode.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_extension.so`   | 196                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_extension.so`   | 113                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_extension.so`   | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 165                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionExtension.xcframework` | 336                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_extension.dll`  | 372                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_extension.dll`  | 459                    |

    Since version 4.4.0, the SDK provides a low-latency AI noise suppression extension which reduces processing latency while maintaining a good denoising effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI noise suppression extension are independent of each other. You can choose to integrate the appropriate version according to your specific requirements. When calling the `setAINSMode` method to enable AI noise suppression, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_noise_suppression_ll_extension.so`  | 188                    |
    | Android  | armeabi-v7a  | `libagora_ai_noise_suppression_ll_extension.so`  | 111                    |
    | Android  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.so`  | 58                     |
    | Android  | x86          | `libagora_ai_noise_suppression_ll_extension.so`  | 57                     |
    | iOS      | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 156                    |
    | iOS      | armv7        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 44                     |
    | macOS    | arm64        | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 320                    |
    | macOS    | x86\_64      | `AgoraAiNoiseSuppressionLLExtension.xcframework` | 272                    |
    | Windows  | x86          | `libagora_ai_noise_suppression_ll_extension.dll` | 374                    |
    | Windows  | x86\_64      | `libagora_ai_noise_suppression_ll_extension.dll` | 462                    |

    **AI Echo Cancellation**

    Since version 4.1.0, the SDK provides an AI echo cancellation extension that preserves complete, clear, and smooth near-end human voice under poor echo-to-signal conditions. It significantly improves the system's echo cancellation and dual-talk performance, and brings users a more comfortable call and live broadcast experience. It is widely used in conferences, voice chats, karaoke, and other use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                   | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_extension.so`   | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_extension.so`   | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_extension.so`   | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationExtension.xcframework` | 496                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_extension.dll`  | 562                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_extension.dll`  | 738                    |

    Since version 4.4.0, the SDK provides a low-latency AI echo cancellation extension, which reduces processing latency while maintaining a good echo cancellation effect. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        The low-latency version and the regular version of the AI echo cancellation extension are independent of each other. Choose the appropriate version according to your requirements. When AI echo cancellation is enabled, the regular version of the extension is used by default. To switch to the low-latency version, please [contact technical support](mailto\:support@agora.io).
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_ai_echo_cancellation_ll_extension.so`  | 322                    |
    | Android  | armeabi-v7a  | `libagora_ai_echo_cancellation_ll_extension.so`  | 169                    |
    | Android  | x86          | `libagora_ai_echo_cancellation_ll_extension.so`  | 58                     |
    | Android  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.so`  | 56                     |
    | iOS      | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 287                    |
    | iOS      | armv7        | `AgoraAiEchoCancellationLLExtension.xcframework` | 10                     |
    | macOS    | arm64        | `AgoraAiEchoCancellationLLExtension.xcframework` | 576                    |
    | macOS    | x86\_64      | `AgoraAiEchoCancellationLLExtension.xcframework` | 480                    |
    | Windows  | x86          | `libagora_ai_echo_cancellation_ll_extension.dll` | 560                    |
    | Windows  | x86\_64      | `libagora_ai_echo_cancellation_ll_extension.dll` | 734                    |

    **Audio Beauty**

    The Audio Beauty extension provides a series of preset vocal effects, and also supports custom vocal effects through pitch, sound balance, and reverberation settings. It is widely used in voice chat, PK live broadcast, K song room, music radio, and other use-cases. After integrating the Audio Beauty extension, call the following methods to enable the desired audio effect:

    * `setVoiceBeautifierPreset`: Apply chat voice beautifier, singing voice beautifier, or timbre change
    * `setAudioEffectPreset`: Enable voice changing effects, music style effects, space shaping, electronic music effects.
    * `setVoiceConversionPreset`: Use basic voice conversion
    * `setLocalVoicePitch`, `setLocalVoiceEqualization`, `setLocalVoiceReverb`: Adjust the pitch, equalization and reverb effects to get the desired audio effect

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_audio_beauty_extension.so`    | 839                    |
    | Android  | armeabi-v7a  | `libagora_audio_beauty_extension.so`    | 749                    |
    | Android  | x86          | `libagora_audio_beauty_extension.so`    | 753                    |
    | Android  | x86\_64      | `libagora_audio_beauty_extension.so`    | 754                    |
    | iOS      | arm64        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | iOS      | armv7        | `AgoraAudioBeautyExtension.xcframework` | 650                    |
    | macOS    | arm64        | `AgoraAudioBeautyExtension.xcframework` | 1424                   |
    | macOS    | x86\_64      | `AgoraAudioBeautyExtension.xcframework` | 1440                   |
    | Windows  | x86          | `libagora_audio_beauty_extension.dll`   | 1756                   |
    | Windows  | x86\_64      | `libagora_audio_beauty_extension.dll`   | 1893                   |

    **Video Enhancement**

    The Video Enhancement extension provides basic beauty, video noise reduction, dark light enhancement, color enhancement, and other capabilities. After integrating the extension, call the following methods to enable the enhancement function you want:

    * `setBeautyEffectOptions`: Set basic beauty effects
    * `setVideoDenoiserOptions`: Set video de-noising
    * `setLowlightEnhanceOptions`: Set low-light enhancement options
    * `setColorEnhanceOptions`: Set color enhancement options

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_clear_vision_extension.so`    | 2133                   |
    | Android  | armeabi-v7a  | `libagora_clear_vision_extension.so`    | 1740                   |
    | Android  | x86          | `libagora_clear_vision_extension.so`    | 852                    |
    | Android  | x86\_64      | `libagora_clear_vision_extension.so`    | 868                    |
    | iOS      | arm64        | `AgoraClearVisionExtension.xcframework` | 2070                   |
    | iOS      | armv7        | `AgoraClearVisionExtension.xcframework` | 1903                   |
    | macOS    | arm64        | `AgoraClearVisionExtension.xcframework` | 3200                   |
    | macOS    | x86\_64      | `AgoraClearVisionExtension.xcframework` | 3264                   |
    | Windows  | x86          | `libagora_clear_vision_extension.dll`   | 3002                   |
    | Windows  | x86\_64      | `libagora_clear_vision_extension.dll`   | 3327                   |

    **Local Screenshot Upload**

    The Local Screenshot Upload extension enables you to take screenshots and upload videos sent by local users to meet the needs of video content moderation. After integrating the extension, call `enableContentInspect` to enable local screenshot upload.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                               | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_content_inspect_extensio.so`     | 1078                   |
    | Android  | armeabi-v7a  | `libagora_content_inspect_extensio.so`     | 971                    |
    | Android  | x86          | `libagora_content_inspect_extensio.so`     | 57                     |
    | Android  | x86\_64      | `libagora_content_inspect_extensio.so`     | 56                     |
    | iOS      | arm64        | `AgoraContentInspectExtension.xcframework` | 988                    |
    | iOS      | armv7        | `AgoraContentInspectExtension.xcframework` | 932                    |
    | macOS    | arm64        | `AgoraContentInspectExtension.xcframework` | 1296                   |
    | macOS    | x86\_64      | `AgoraContentInspectExtension.xcframework` | 1264                   |
    | Windows  | x86          | `libagora_content_inspect_extension.dll`   | 1386                   |
    | Windows  | x86\_64      | `libagora_content_inspect_extension.dll`   | 1542                   |

    **Perceptual Video Coding (PVC)**

    Perceptual Video Coding is a video encoding method that reduces bandwidth consumption while ensuring the same image quality. It improves video fluency in bandwidth-constrained use-cases and reduces data consumption in mobile network use-cases. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.0, the SDK statically compiles the PVC library by default and no longer provides an extension method. If you have previously integrated the PVC extension, delete the extension from the project dependencies and recompile the project after upgrading.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                    | App size increase (KB) |
    | :------- | :----------- | :------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_pvc_extension.so`     | 170                    |
    | Android  | armeabi-v7a  | `libagora_pvc_extension.so`     | 120                    |
    | iOS      | arm64        | `AgoraPvcExtension.xcframework` | 60                     |
    | iOS      | armv7        | `AgoraPvcExtension.xcframework` | 60                     |
    | macOS    | arm64        | `AgoraPvcExtension.xcframework` | 643                    |
    | macOS    | x86\_64      | `AgoraPvcExtension.xcframework` | 530                    |
    | Windows  | x86          | `libagora_pvc_extension.dll`    | 814                    |
    | Windows  | x86\_64      | `libagora_pvc_extension.dll`    | 974                    |

    **Spatial Audio**

    The Spatial Audio extension shapes the direction of the remote user's voice and simulates the propagation process of sound in 3D space. It enables the local user to hear the spatial audio of the remote user.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                             | App size increase (KB) |
    | :------- | :----------- | :--------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_spatial_audio_extension.so`    | 3120                   |
    | Android  | armeabi-v7a  | `libagora_spatial_audio_extension.so`    | 3037                   |
    | Android  | x86          | `libagora_spatial_audio_extension.so`    | 3032                   |
    | Android  | x86\_64      | `libagora_spatial_audio_extension.so`    | 3028                   |
    | iOS      | arm64        | `AgoraSpatialAudioExtension.xcframework` | 2956                   |
    | iOS      | armv7        | `AgoraSpatialAudioExtension.xcframework` | 2957                   |
    | macOS    | arm64        | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | macOS    | x86\_64      | `AgoraSpatialAudioExtension.xcframework` | 4960                   |
    | Windows  | x86          | `libagora_spatial_audio_extension.dll`   | 4279                   |
    | Windows  | x86\_64      | `libagora_spatial_audio_extension.dll`   | 4389                   |

    **Virtual Background**

    After integrating the Virtual Background extension, call `enableVirtualBackground` to enable the virtual background. Use a custom background image or green screen to replace the local user's original background, or blur the background.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                  | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_segmentation_extension.so`          | 1729                   |
    | Android  | armeabi-v7a  | `libagora_segmentation_extension.so`          | 1454                   |
    | iOS      | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 1720                   |
    | iOS      | armv7        | `AgoraVideoSegmentationExtension.xcframework` | 1616                   |
    | macOS    | arm64        | `AgoraVideoSegmentationExtension.xcframework` | 2560                   |
    | macOS    | x86\_64      | `AgoraVideoSegmentationExtension.xcframework` | 2768                   |
    | Windows  | x86          | `libagora_segmentation_extension.dll`         | 2159                   |
    | Windows  | x86\_64      | `libagora_segmentation_extension.dll`         | 2488                   |

    **Copyright Music**

    Since version 4.1.0, the SDK provides a copyrighted music extension (DRM, Data Rights Management) to implement functions related to playing copyrighted music in real-time interactive use-cases, such as retrieving music resources, obtaining music charts and chart details, preloading and playing music resources, downloading lyrics and posters, etc. For details, see [v4.1.0 release notes](../../reference/release-notes).

    <CalloutContainer type="warning">
      <CalloutDescription>
        * For Android SDK prior to 4.3.0, `libagora_drm_loader_extension.so` and `libagora_udrm3_extension.so` must be integrated to use the copyrighted music extension.
        * Since version 4.3.0, the SDK has removed the copyrighted music dynamic library. When the app uses the copyrighted music function, it is no longer necessary to introduce the copyrighted music dynamic library.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture  | Library name                                                         | App size increase (KB) |
    | :------- | :------------ | :------------------------------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a     | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1413                   |
    | Android  | armeabi-v7a   | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1014                   |
    | Android  | x86           | * `libagora_drm_loader_extension.so`
    * `libagora_udrm3_extension.so` | 1403                   |
    | Android  | x86\_64       | - `libagora_drm_loader_extension.so`
    - `libagora_udrm3_extension.so` | 1444                   |
    | iOS      | arm64 & armv7 | `AgoraDrmLoaderExtension.xcframework`                                | 1772                   |

    **Face Detection**

    Since version 4.1.1, the SDK provides a Face Detection extension, which uses an algorithm to identify faces or portraits, and uses higher quality encoding for the Region of Interest (ROI) area during the encoding process to achieve a clearer effect for faces or portraits. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="warning">
      <CalloutDescription>
        There is no dependency between the Face Detection extension and the `EnableFaceDetection` method. The latter uses the SDK's built-in functionality and does not require the Face Detection extension.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                              | App size increase (KB) |
    | :------- | :----------- | :---------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_detection_extension.so`    | 497                    |
    | Android  | armeabi-v7a  | `libagora_face_detection_extension.so`    | 332                    |
    | Android  | x86          | `libagora_face_detection_extension.so`    | 133                    |
    | Android  | x86\_64      | `libagora_face_detection_extension.so`    | 131                    |
    | iOS      | arm64        | `AgoraFaceDetectionExtension.xcframework` | 411                    |
    | iOS      | armv7        | `AgoraFaceDetectionExtension.xcframework` | 15                     |
    | macOS    | arm64        | `AgoraFaceDetectionExtension.xcframework` | 864                    |
    | macOS    | x86\_64      | `AgoraFaceDetectionExtension.xcframework` | 848                    |
    | Windows  | x86          | `libagora_face_detection_extension.dll`   | 867                    |
    | Windows  | x86\_64      | `libagora_face_detection_extension.dll`   | 1060                   |

    **Face Capture**

    Since version 4.3.0, the SDK provides a Face Capture extension for obtaining facial expressions, head rotation, head translation and other facial information. This information is useful to drive the expression changes and head displacement of virtual human characters.

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                            | App size increase (KB) |
    | :------- | :----------- | :-------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_face_capture_extension.so`    | 1377                   |
    | Android  | armeabi-v7a  | `libagora_face_capture_extension.so`    | 1082                   |
    | iOS      | armv7        | `AgoraFaceCaptureExtension.xcframework` | 1145                   |
    | iOS      | arm64        | `AgoraFaceCaptureExtension.xcframework` | 1306                   |
    | macOS    | arm64        | `AgoraFaceCaptureExtension.xcframework` | 2304                   |
    | macOS    | x86\_64      | `AgoraFaceCaptureExtension.xcframework` | 2480                   |
    | Windows  | x86          | `libagora_face_capture_extension.dll`   | 2322                   |
    | Windows  | x86\_64      | `libagora_face_capture_extension.dll`   | 2701                   |

    **Super Resolution**

    After integrating the Super Resolution extension, call `enableRemoteSuperResolution` to improve the image resolution of the remote video.

    <CalloutContainer type="warning">
      <CalloutDescription>
        Since version 4.1.1, the SDK statically compiles the Super Resolution library by default, and no longer provides an extension method. The `enableRemoteSuperResolution` API has been deleted from the SDK, and Super Resolution no longer requires calling the method to enable it. If you have previously integrated the Super Resolution extension, delete the extension from the project dependencies after upgrading and recompile the project.
      </CalloutDescription>
    </CalloutContainer>

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | -------- | ------------ | ------------------------------------------- | ---------------------- |
    | Android  | arm64-v8a    | `libagora_super_resolution_extension.so`    | 214                    |
    | Android  | armeabi-v7a  | `libagora_super_resolution_extension.so`    | 161                    |
    | iOS      | arm64        | `AgoraSuperResolutionExtension.xcframework` | 161                    |
    | iOS      | armv7        | `AgoraSuperResolutionExtension.xcframework` | 165                    |

    **Screen Sharing**

    The Screen Sharing extension enables a local user to share their screen contents with other users to improve communication efficiency. For details, see [Screen Sharing](screen-sharing).

    The library name and the size of the app after integration are shown in the following table:

    | Platform | Architecture  | Library name                              | App size increase (KB) |
    | -------- | ------------- | ----------------------------------------- | ---------------------- |
    | Android  | arm64         | `libagora_screen_capture_extension.so`    | 132                    |
    | Android  | armv7         | `libagora_screen_capture_extension.so`    | 93                     |
    | Android  | arm64 & armv7 | `AgoraScreenShareExtension.aar`           | 69                     |
    | iOS      | arm64         | `AgoraReplayKitExtension.xcframework`     | 67                     |
    | iOS      | armv7         | `AgoraReplayKitExtension.xcframework`     | 66                     |
    | macOS    | arm64         | `AgoraScreenCaptureExtension.xcframework` | 736                    |
    | macOS    | x86\_64       | `AgoraScreenCaptureExtension.xcframework` | 912                    |
    | Windows  | x86           | `libagora_screen_capture_extension.dll`   | 1080                   |
    | Windows  | x86\_64       | `libagora_screen_capture_extension.dll`   | 1244                   |

    **Video Quality Analyzer**

    Since version 4.1.0, the SDK provides a Video Quality Analyzer (VQA) extension, which simulates real-person subjective feelings to score video quality. To use this feature, please [contact technical support](mailto\:support@agora.io).

    The name of the extension for each platform and the increase in the size of your app after integration are as follows:

    | Platform | Architecture | Library name                                     | App size increase (KB) |
    | :------- | :----------- | :----------------------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_quality_analyzer_extension.so`   | 575                    |
    | Android  | armeabi-v7a  | `libagora_video_quality_analyzer_extension.so`   | 458                    |
    | Android  | x86          | `libagora_video_quality_analyzer_extension.so`   | 58                     |
    | Android  | x86\_64      | `libagora_video_quality_analyzer_extension.so`   | 57                     |
    | iOS      | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 547                    |
    | iOS      | armv7        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 480                    |
    | macOS    | arm64        | `AgoraVideoQualityAnalyzerExtension.xcframework` | 880                    |
    | macOS    | x86\_64      | `AgoraVideoQualityAnalyzerExtension.xcframework` | 976                    |
    | Windows  | x86          | `libagora_video_quality_analyzer_extension.dll`  | 873                    |
    | Windows  | x86\_64      | `libagora_video_quality_analyzer_extension.dll`  | 1046                   |

    **Video Encoding**

    Since version 4.2.0, the SDK provides a Video Encoding extension. Compared to the native SDK encoding solution, this extension provides more encoding options and helps you achieve faster and higher compression video encoding. To use this feature, please [contact technical support](mailto\:support@agora.io).

    <CalloutContainer type="info">
      <CalloutDescription>
        To use the Video Encoding extension, integrate **both** the libraries listed in the following table according to the target platform.
      </CalloutDescription>
    </CalloutContainer>

    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :------------------------------------------------------------------- | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 945                      |
    | Android    | armeabi-v7a    | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 873                      |
    | Android    | x86            | * `libagora_video_encoder_extension.so`
    * `video_enc.so`             | 1125                     |
    | Android    | x86\_64        | - `libagora_video_encoder_extension.so`
    - `video_enc.so`             | 1126                     |
    | iOS        | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 773                      |
    | iOS        | armv7          | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 788                      |
    | macOS      | arm64          | * `AgoraVideoEncoderExtension.xcframework`
    * `video_enc.xcframework` | 1504                     |
    | macOS      | x86\_64        | - `AgoraVideoEncoderExtension.xcframework`
    - `video_enc.xcframework` | 2020                     |
    | Windows    | x86            | * `libagora_video_encoder_extension.dll`
    * `video_enc.dll`           | 2501                     |
    | Windows    | x86\_64        | - `libagora_video_encoder_extension.dll`
    - `video_enc.dll`           | 2853                     |
    | Platform   | Architecture   | Library name                                                         | App size increase (KB)   |
    | :--------- | :------------- | :--------------------------------------------                        | :----------------------- |
    | Android    | arm64-v8a      | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 817                      |
    | Android    | armeabi-v7a    | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 763                      |
    | Android    | x86            | * `libagora_video_decoder_extension.so`
    * `video_dec.so`             | 952                      |
    | Android    | x86\_64        | - `libagora_video_decoder_extension.so`
    - `video_dec.so`             | 976                      |
    | iOS        | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 635                      |
    | iOS        | armv7          | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 662                      |
    | macOS      | arm64          | * `AgoraVideoDecoderExtension.xcframework`
    * `video_dec.xcframework` | 1296                     |
    | macOS      | x86\_64        | - `AgoraVideoDecoderExtension.xcframework`
    - `video_dec.xcframework` | 1848                     |
    | Windows    | x86            | * `libagora_video_decoder_extension.dll`
    * `video_dec.dll`           | 2115                     |
    | Windows    | x86\_64        | - `libagora_video_decoder_extension.dll`
    - `video_dec.dll`           | 2421                     |

    **AV1 Stream Encoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Encoding extension that enables encoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    Starting with v4.6.2, to improve the video decoding experience, the `av1_decoder` library has been moved to the SDK and is no longer supported for cropping in AV1 stream decoding plugins.

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_encoder_extension.so`   | 726                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_encoder_extension.so`   | 586                    |
    | Android  | x86          | `libagora_video_av1_encoder_extension.so`   | 922                    |
    | Android  | x86\_64      | `libagora_video_av1_encoder_extension.so`   | 929                    |
    | iOS      | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 579                    |
    | iOS      | armv7        | `AgoraVideoAv1EncoderExtension.xcframework` | 586                    |
    | macOS    | arm64        | `AgoraVideoAv1EncoderExtension.xcframework` | 944                    |
    | macOS    | x86\_64      | `AgoraVideoAv1EncoderExtension.xcframework` | 1616                   |
    | Windows  | x86          | `libagora_video_av1_encoder_extension.dll`  | 1877                   |
    | Windows  | x86\_64      | `libagora_video_av1_encoder_extension.dll`  | 2064                   |

    **AV1 Stream Decoding**

    Since version 4.3.0, the SDK includes an AV1 Stream Decoding extension that enables decoding of video streams in the AV1 format. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                                | App size increase (KB) |
    | :------- | :----------- | :------------------------------------------ | :--------------------- |
    | Android  | arm64-v8a    | `libagora_video_av1_decoder_extension.so`   | 528                    |
    | Android  | armeabi-v7a  | `libagora_video_av1_decoder_extension.so`   | 492                    |
    | Android  | x86          | `libagora_video_av1_decoder_extension.so`   | 606                    |
    | Android  | x86\_64      | `libagora_video_av1_decoder_extension.so`   | 584                    |
    | iOS      | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 376                    |
    | iOS      | armv7        | `AgoraVideoAv1DecoderExtension.xcframework` | 368                    |
    | macOS    | arm64        | `AgoraVideoAv1DecoderExtension.xcframework` | 1040                   |
    | macOS    | x86\_64      | `AgoraVideoAv1DecoderExtension.xcframework` | 2016                   |
    | Windows  | x86          | `libagora_video_av1_decoder_extension.dll`  | 1449                   |
    | Windows  | x86\_64      | `libagora_video_av1_decoder_extension.dll`  | 2289                   |

    **Voice Driver**

    Since version 4.3.1, the SDK provides a Voice Driver extension that converts voice information into facial information corresponding to the mouth shape. You use this information to drive the virtual human face to make the mouth shape change corresponding to the voice. To use this feature, please [contact technical support](mailto\:support@agora.io).

    | Platform | Architecture | Library name                        | App size increase (KB) |
    | :------- | :----------- | :---------------------------------- | :--------------------- |
    | Android  | arm64-v8a    | `libagora_lip_sync_extension.so`    | 5719                   |
    | Android  | armeabi-v7a  | `libagora_lip_sync_extension.so`    | 5644                   |
    | iOS      | arm64        | `AgoraLipSyncExtension.xcframework` | 5679                   |
    | iOS      | armv7        | `AgoraLipSyncExtension.xcframework` | 5654                   |
    | macOS    | arm64        | `AgoraLipSyncExtension.xcframework` | 6416                   |
    | macOS    | x86\_64      | `AgoraLipSyncExtension.xcframework` | 6528                   |
    | Windows  | x86          | `libagora_lip_sync_extension.dll`   | 6826                   |
    | Windows  | x86\_64      | `libagora_lip_sync_extension.dll`   | 7038                   |

    ### Frequently asked questions [#frequently-asked-questions-8]

    * [Why are dynamic libraries preferred over static libraries in the Video SDK](/en/api-reference/faq/integration/dynamic_or_static_library)

    <_PlatformProcessedMarker close="true" />
  </_PlatformPanel>
</_PlatformTabsGroup>
