# Qualify devices and effects

> Build a repeatable physical-device matrix for frame rate, memory, battery, thermals, lifecycle, recording, and streaming before release.

> For AI agents: the complete documentation index is at https://nosmai.com/llms/effects.txt

Product: Nosmai Effects
Group: guide
Source: https://nosmai.com/docs/effects/guides/performance/qualify-devices/

## Prerequisites

- A signed build using the final native and wrapper versions
- The exact effects, camera resolution, recording, and streaming configuration
  intended for release
- At least one lower-tier supported Android device, one current Android device,
  and one older supported iPhone
- A stable room-temperature starting condition and repeatable session duration

## Define the test cases

Run each device through the same workload sequence:

1. Preview with no active effect.
2. One lightweight LUT or colour package.
3. One face-tracked beauty or AR package.
4. Background segmentation.
5. Processed recording.
6. The production streaming handoff.

Record the authored package identifier and version. Two packages in the same
category can have materially different GPU and inference cost.

## Capture the matrix

[Download the device-matrix CSV template](/downloads/nosmai-effects-device-matrix-template.csv)
and create one row for every device, effect, and workload combination. Keep raw
measurements separate from conclusions so later releases can be compared with
the same fields.

| Field | Record |
| --- | --- |
| Device | Model, OS, chipset, RAM, ABI, battery health if known |
| Input | Camera, resolution, target FPS, front or back, lighting |
| Workload | Package ID, enabled beauty/background features, recording or provider |
| Frame rate | Average, low interval, visible stutter, and time to first processed frame |
| Memory | Baseline, steady state, peak, and value after cleanup |
| Thermal | Initial state, throttling transition, temperature or platform state, and time |
| Battery | Start/end percentage and fixed-duration session length |
| Lifecycle | Navigation loops, background/foreground, lock/unlock, rotation, camera switch |
| Outcome | Pass, conditional pass, fail, logs, and reproduction steps |

## Run long enough to expose throttling

Warm the app with the target workload and continue for the same fixed duration
on every device. A short cold-device run does not represent sustained live
streaming. Do not compare devices that began at materially different thermal or
battery states without recording that difference.

## Set release thresholds

Define thresholds from the product experience rather than publishing one
universal SDK number. At minimum specify acceptable frame rate, maximum startup
delay, memory recovery after cleanup, recording success, camera lifecycle
success rate, and whether thermal throttling is allowed during the target
session length.

Nosmai targets 30 FPS under supported conditions, but does not claim one
certified accuracy, battery, thermal, or memory value for every device and
effect. Report measured values with their complete test configuration.

## Verify cleanup and recovery

Repeat open, close, background, foreground, camera switch, recording stop, and
provider teardown. Memory should stabilize rather than grow with every cycle,
and only one camera owner should exist. Preserve logs for failed cycles after
redacting credentials and private service details.

## Common errors

| Mistake | Why it invalidates the result | Fix |
| --- | --- | --- |
| Comparing different effects as one benchmark | Pass count and inference requirements vary by package | Run the same package version on every device |
| Testing a debug build | Tooling and assertions distort size and timing | Use the signed release configuration |
| Reporting only average FPS | Long stalls and thermal drops disappear in the mean | Include low intervals, session duration, and thermal transition |

## Next steps

- [Optimize lower-tier devices](/docs/effects/guides/performance/optimize-lower-tier-devices/)
- [Reduce application size](/docs/effects/guides/performance/reduce-app-size/)
- [Review limits and performance](/docs/effects/limits-and-performance/)

## References

- [Platform support](/docs/effects/platform-support/)
- [Off-screen rendering](/docs/effects/concepts/off-screen-rendering/)
