Nosmai  Effects Nosmai  Moderation Nosmai Try-ons coming soon
Docs menu Off-screen rendering
Concept

Off-screen rendering

Use processed frame output when another camera, encoder, WebRTC stack, or live-streaming SDK needs the Nosmai-rendered result.

SDK version iOS/Android 3.0.4 · Flutter bridge 1.0.2 Updated Aug 22, 2026 Time 8 min

When to use it

Use off-screen rendering when Nosmai does not own the final display or media transport. Common cases include a custom camera source, a WebRTC encoder, a video-call SDK, or a server upload pipeline that already consumes native frames.

Off-screen rendering from a camera or external source to preview, recording, and streaming consumers

Supported native paths

PlatformInput or outputFormat
Android external inputSynchronous processed planesDirect planar I420 buffers with explicit strides
Android camera outputCPU callback or shared GPU textureSDK frame metadata or EGL-shared texture
iOS external inputSubmitted pixel or sample bufferskCVPixelFormatType_32BGRA
iOS camera outputProcessed live-frame callbackCVPixelBufferRef
FlutterMaintained provider bridgeNative GPU texture on Android and CVPixelBuffer on iOS
React NativeBounded analysis sampling onlyBase64 i420, rgba8888, bgra8888, or nv12

React Native sampling is limited to 1 through 5 FPS and is not a live-streaming transport. The public Flutter API does not accept arbitrary external I420 or pixel-buffer input.

Frame ownership

Real-time output needs clear ownership:

  1. Keep at most one expensive operation in progress.
  2. Keep the newest waiting frame instead of building a queue.
  3. Preserve the input timestamp for the downstream encoder.
  4. Retain an iOS output buffer only when the consumer outlives the callback.
  5. Return every Android texture slot after sampling it.
  6. Clear callbacks before releasing the camera or graphics context.

Preview and processed output

Android provides PREVIEW_ONLY, STREAMING_ONLY, and DUAL_OUTPUT render modes. iOS provides a live processed-frame callback while the normal camera is running. Dual output costs more than preview alone, so measure the combined effect and encoder load on target hardware.

Streaming compatibility

ConsumerStatusRoute
AgoraVerifiedNative and Flutter guides
LiveKitVerifiedNative and Flutter guides
Raw WebRTCVerified on native Android and iOSNative guides and examples
Other video SDKsIntegration-dependentUse a custom video source that accepts the documented native format

Do not describe an untested provider as verified. Format, orientation, timestamp, and buffer ownership must be validated with the exact provider version used by the application.

Next steps

References

Was this page helpful?

Your response helps us prioritize documentation improvements.

Nosmai

An AR and AI company. Founded on the idea that the next decade of software will be visual, and that the tools for it should be within reach of anyone building.

Newsletter

Product updates and release notes. No spam.

© 2026 nosmai, inc · all rights reserved