Baseline
Nosmai Effects targets 30 FPS for normal real-time use. The SDK performs face tracking and effects with GPU acceleration. Actual performance depends on the device, input resolution, active package, recording or streaming load, and thermal state.
FPS is the number of video images processed each second. GPU acceleration uses the device's graphics processor to draw the result. Thermal state describes device heat; a hot device may reduce processing speed.
Nosmai does not publish one universal tracking-accuracy, battery, or thermal number because it would not represent every device and effect. Run a device matrix with the final application settings before release.
Platform limits
| Platform | Minimum | Important limit |
|---|---|---|
| iOS | iOS 15, physical arm64 device | Current framework has no Simulator slice |
| Android | API 24, physical arm64-v8a or armeabi-v7a device, Java 11 | x86 and x86_64 emulator ABIs are not included |
| Flutter | Flutter 3.22 and Dart 3 | Inherits native iOS and Android hardware limits |
| React Native | React Native 0.81.5, React 19.1, New Architecture | Android baseline is API 24 for the stable package |
| Web preview | Secure context, WebGL 2, WebAssembly, Web Crypto | Feature and browser parity is still limited |
Published artifact sizes
An artifact is the library file a developer adds to the app. Its file size is not the same as the final increase users download from an app store.
| Artifact | Published size | Meaning |
|---|---|---|
Android 3.0.5 AAR | 59,140,732 bytes (56.4 MiB) | Contains both supported ARM ABIs before App Bundle optimization |
iOS v3.0.5 framework release ZIP | Framework bundle: 34,207,000 bytes (32.6 MiB); ZIP: 22,661,254 bytes (21.6 MiB) | Uncompressed framework size and compressed distribution size, not final App Store increase |
Flutter 1.0.3 | Small Dart and native bridge package | Native AAR and CocoaPod are resolved separately |
React Native 1.0.0 | About 226.1 kB packed and 1.1 MB unpacked | Native AAR and CocoaPod are resolved separately |
The store download increase is not equal to an artifact's archive size. App Bundle ABI delivery, compression, shared dependencies, and symbols all affect the final number. Measure a signed production build with App Store Connect or Play Console tools.
Workload cost
From lighter to heavier in typical use:
- Color or LUT filter
- Skin retouching
- Face-tracked makeup or mask
- Background segmentation
- Recording or dual output
- Live streaming with an active face effect
This is guidance, not a fixed benchmark. An authored package can contain multiple passes and may cost more than another package in the same category.
Performance-aware behaviour
The native runtime can use selective inference, frame skipping, and a reduced recording workload on measured lower-tier Android devices. When a consumer is slower than the producer, keep the newest frame rather than accumulating latency.
QA device matrix
For each target device record:
- model, OS, chipset, RAM, and ABI
- camera resolution and target FPS
- active effect or package identifier
- average and low frame rate
- memory before and during the session
- battery change over a fixed duration
- thermal status and visible throttling
- preview-only, recording, and streaming results
- foreground, background, lock, rotation, and repeated navigation
Test at least one lower-tier supported Android device, one current Android device, and an older supported iPhone. A short cold-device test is not enough to reveal thermal throttling.
Size and performance recommendations
- Download Cloud Filters only when they are needed.
- Start at 720p and 30 FPS, then increase only after measurement.
- Keep one camera preview and one effects session active.
- Avoid per-frame JPEG, PNG,
Bitmap,UIImage, or base64 conversion. - Prefer native GPU texture output for high-rate streaming.
- Test every authored package instead of assuming equal cost.