Skip to content

v0.5.0 — F8 Frame Processor port

Choose a tag to compare

@bhargavkanda bhargavkanda released this 25 May 06:00
· 212 commits to main since this release

Headline: Non-AR captures now drive through vision-camera's Frame Processor on the camera producer thread instead of takeSnapshot → JPEG → cache-file at 4 Hz. Native frame rate evaluation, lower latency to accept, zero per-frame disk thrash.

Included

  • F8.3 — iOS Frame Processor port. CVPixelBuffer end-to-end into IncrementalStitcher.consumeFrame (same entry point AR mode uses).
  • F8.4 — Android Frame Processor port. Y-plane → keyframe gate → inline JPEG encode on accept via YuvImageConverter. Full pixel-buffer parity (skip JPEG encode for live engines) is tracked as the v0.5.1 follow-up F8.6.
  • useFrameProcessorDriver hook — same {start, stop, frameProcessor, isRunning} shape as the legacy useIncrementalJSDriver. Default for non-AR captures.
  • <Camera legacyDriver={true}> prop — opt-out escape hatch back to the legacy path for one minor cycle.
  • Roll axis (gyro-Z) in the synthesised pose quaternion.
  • Vision-camera lifecycle errors (system/camera-is-restricted, screen-lock, app-switch) are filtered inside the SDK's <CameraView> instead of bubbling to host onError.
  • Compile-time Swift↔ObjC selector pin for the Frame Processor plugin, plus a dev-build runtime assert — drift breaks the build instead of the first non-AR frame at runtime.

Deprecated

useIncrementalJSDriver — works through v0.5; removed in v0.6. Emits a one-shot console.warn on start().

Installation

npm install react-native-image-stitcher@0.5.0

The postinstall script fetches the iOS xcframework + Android OpenCV SDK from this release's assets automatically. Total fetch: ~350 MB; cached locally after first install.

Tracked follow-ups (don't gate this release)

  • F8.6 (v0.5.1) — Android engine pixel-buffer refactor. Extract addFrameMat helper, add addFramePixelData path, wire RNSARCameraView to skip the per-frame JPEG encode. Saves ~30–50 ms per accepted frame. Deferred because the engine bodies are 400+ lines of complex AR-mode code that need A35 device verification before merge.

Verified

  • iPhone 17 Pro: non-AR capture produces real panorama JPGs, no leftover candidate JPEGs in cache dir.
  • Samsung Galaxy A35: non-AR capture produces real panoramas with EXIF-rotation thumbnails.
  • AR mode untouched on both platforms (static code audit confirms no AR codepaths modified).

See CHANGELOG.md for the full Added / Changed / Deprecated / Fixed surface.

Full Changelog: v0.4.1...v0.5.0