Go to file
Marc Rousavy 375e894038
feat: Complete iOS Codebase rewrite (#1647)
* Make Frame Processors an extra subspec

* Update VisionCamera.podspec

* Make optional

* Make VisionCamera compile without Skia

* Fix

* Add skia again

* Update VisionCamera.podspec

* Make VisionCamera build without Frame Processors

* Rename error to `system/frame-processors-unavailable`

* Fix Frame Processor returning early

* Remove `preset`, FP partial rewrite

* Only warn on frame drop

* Fix wrong queue

* fix: Run on CameraQueue again

* Update CameraView.swift

* fix: Activate audio session asynchronously on audio queue

* Update CameraView+RecordVideo.swift

* Update PreviewView.h

* Cleanups

* Cleanup

* fix cast

* feat: Add LiDAR Depth Camera support

* Upgrade Ruby

* Add vector icons type

* Update Gemfile.lock

* fix: Stop queues on deinit

* Also load `builtInTrueDepthCamera`

* Update CameraViewManager.swift

* Update SkImageHelpers.mm

* Extract FrameProcessorCallback to FrameProcessor

Holds more context now :)

* Rename to .m

* fix: Add `RCTLog` import

* Create SkiaFrameProcessor

* Update CameraBridge.h

* Call Frame Processor

* Fix defines

* fix: Allow deleting callback funcs

* fix Skia build

* batch

* Just call `setSkiaFrameProcessor`

* Rewrite in Swift

* Pass `SkiaRenderer`

* Fix Import

* Move `PreviewView` to Swift

* Fix Layer

* Set Skia Canvas to Frame Host Object

* Make `DrawableFrameHostObject` subclass

* Fix TS types

* Use same MTLDevice and apply scale

* Make getter

* Extract `setTorch` and `Preview`

* fix: Fix nil metal device

* Don't wait for session stop in deinit

* Use main pixel ratio

* Use unique_ptr for Render Contexts

* fix: Fix SkiaPreviewDisplayLink broken after deinit

* inline `getTextureCache`

* Update CameraPage.tsx

* chore: Format iOS

* perf: Allow MTLLayer to be optimized for only frame buffers

* Add RN Video types

* fix: Fix Frame Processors if guard

* Find nodeModules recursively

* Create `Frame.isDrawable`

* Add `cocoapods-check` dependency
2023-07-20 15:30:04 +02:00
.github feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
.vscode VSCode settings 2021-02-20 17:13:02 +01:00
android fix: Fix Worklets imports 2023-07-03 22:32:08 +02:00
cpp fix: Improve C++ safety by attaching Cache Invalidator to jsi::Runtime's lifecycle (#1488) 2023-02-21 15:44:43 +01:00
docs feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
example feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
ios feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
scripts fix: Improve C++ safety by attaching Cache Invalidator to jsi::Runtime's lifecycle (#1488) 2023-02-21 15:44:43 +01:00
src feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
.eslintrc.js chore: Upgrade Skia to new Ganesh Rendering Pipeline and RN to 0.72 (#1638) 2023-07-03 12:40:07 +02:00
.gitignore feat: Add React Native 0.66 support (#490) 2021-10-05 12:22:14 +02:00
app.plugin.js feat: Expo support (#260) 2021-07-07 14:55:25 +02:00
CODE_OF_CONDUCT.md chore: Move to /mrousavy/ (#224) 2021-06-21 22:42:46 +02:00
CONTRIBUTING.md Update CONTRIBUTING.md 2021-10-05 15:01:26 +02:00
LICENSE chore: Move to /mrousavy/ (#224) 2021-06-21 22:42:46 +02:00
package.json feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
README.md Add VisionCamera V3 link to README 2022-12-06 15:45:52 +01:00
tsconfig.json feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
VisionCamera.podspec feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00
yarn.lock feat: Complete iOS Codebase rewrite (#1647) 2023-07-20 15:30:04 +02:00

Vision Camera



📸 The Camera library that sees the vision.
npm i react-native-vision-camera
npx pod-install
Buy Me a Coffee at ko-fi.com



‼️‼️‼️‼️‼️ VisionCamera V3 ‼️‼️‼️‼️‼️

See this discussion for the latest upcoming version of VisionCamera

Documentation

Features

  • Photo, Video and Snapshot capture
  • Customizable devices and multi-cameras (smoothly zoom out to "fish-eye" camera)
  • Customizable FPS
  • Frame Processors (JS worklets to run QR-Code scanning, facial recognition, AI object detection, realtime video chats, ...)
  • Smooth zooming (Reanimated)
  • Fast pause and resume
  • HDR & Night modes

See the example app

Example

function App() {
  const devices = useCameraDevices('wide-angle-camera')
  const device = devices.back

  if (device == null) return <LoadingView />
  return (
    <Camera
      style={StyleSheet.absoluteFill}
      device={device}
      isActive={true}
    />
  )
}

Adopting at scale

This library helped you? Consider sponsoring!

VisionCamera is provided as is, I work on it in my free time.

If you're integrating VisionCamera in a production app, consider funding this project and contact me to receive premium enterprise support, help with issues, prioritize bugfixes, request features, help at integrating VisionCamera and/or Frame Processors, and more.


🚀 Get started by setting up permissions!