react-native-vision-camera/example
Marc Rousavy a7c137da07
feat: Skia for Android (#1731)
* feat: Call Skia Renderer

* Use default NativePreviewView for Skia

* Render to separate FBO

* It appears once

* Refactor a lot lol

* Pass width/height

* Read width/heights

* Update SkiaRenderer.cpp

* Read stencil/samples

* Use switch for target

* Clear full red

* Update VideoPipeline.cpp

* fix: Use `BorrowTextureFrom` instead of `AdoptTextureFrom`

* Get it to work

* Draw Camera Frame again (only works for first frame)

* glDisable(GL_BLEND)

* Use Frame Buffer again

* Simplify Skia offscreen surface creation

* fix: Get it to kinda work?

* fix: Remove `sampler2D` shader

Only the EXTERNAL_OES one kinda works

* Revert "fix: Remove `sampler2D` shader"

This reverts commit bf241a82f440f5a442f23a2b10329b813e7cdb3e.

* Revert "fix: Get it to kinda work?"

This reverts commit ea6a8784ad8dc7d05e8076591874f021b51dd84a.

* fix: Use Skia for rendering

* Simplify drawing code a lot

* Clean up drawing loop a bit more

* Some docs

* Update SkiaRenderer.cpp

* Surface

* try to use Matrix

* Use BottomLeft as a surface origin again

* Get actual surface dimensions

* Use 1x1 pbuffer instead

* Update SkiaRenderer.cpp

* Update SkiaRenderer.cpp

* feat: Implement Skia Frame Processor (#1735)

* feat: Implement JS Skia Frame Processor

* Update SkiaRenderer.cpp

* push

* Create Frame from C++

* compile

* Compile

* Update VideoPipeline.cpp

* Fix JNI local ref

* Use `HardwareBuffer` for implementation

* feat: Custom `Frame` implementation that uses CPU `ByteBuffer` (#1736)

* feat: Implement JS Skia Frame Processor

* Update SkiaRenderer.cpp

* push

* Create Frame from C++

* compile

* Compile

* Update VideoPipeline.cpp

* Fix JNI local ref

* Use `HardwareBuffer` for implementation

* try: Try to just create a CPU based ByteBuffer

* fix: Fix Java Type

* fix remaining errors

* try fixing FrameFactory

* Use `free`

* fix: Fix scene mode crash on some emulators

* fix: Fix scene mode crash on some emulators

* Fix getting pixels

* fix: Fix buffer not being freed

* Add some docs to `Frame`

* Test Skia again

* Use `getCurrentPresentationTime()`

* Remove `FrameFactory.cpp`

* Update VideoPipeline.h

* Update VideoPipeline.cpp
2023-09-01 10:43:19 +02:00
..
android feat: Skia for Android (#1731) 2023-09-01 10:43:19 +02:00
ios chore: Bump version 2023-08-24 15:54:17 +02:00
src feat: Skia for Android (#1731) 2023-09-01 10:43:19 +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
app.json Bootstrap 2021-02-19 16:07:53 +01:00
babel.config.js feat: Full Android rewrite (CameraX -> Camera2) (#1674) 2023-08-21 12:50:14 +02:00
clean.sh feat: Frame Processors for Android (#196) 2021-06-27 12:37:54 +02:00
index.js feat: Add React Native 0.66 support (#490) 2021-10-05 12:22:14 +02:00
metro.config.js feat: Full Android rewrite (CameraX -> Camera2) (#1674) 2023-08-21 12:50:14 +02:00
package.json feat: Full Android rewrite (CameraX -> Camera2) (#1674) 2023-08-21 12:50:14 +02:00
README.md chore: fix typo in README.md (#718) 2022-01-05 14:51:44 +01:00
tsconfig.json feat: Add React Native 0.66 support (#490) 2021-10-05 12:22:14 +02:00
yarn.lock feat: Full Android rewrite (CameraX -> Camera2) (#1674) 2023-08-21 12:50:14 +02:00

Vision Camera playground

Overview

This is a demo application featuring some of the many features of the Vision Camera:

  • Photo capture
  • Video capture
  • Flipping device (back camera <-> front camera)
  • Device filtering (ultra-wide-angle, wide-angle, telephoto, or even combined virtual multi-cameras)
  • Format filtering (targeting 60 FPS, best capture size, best matching aspect ratio, etc.)
  • Zooming using react-native-gesture-handler and react-native-reanimated
  • Smoothly switching between constituent camera devices (see demo on my Twitter)
  • HDR mode
  • Night mode
  • Flash for photo capture
  • Flash for video capture
  • Activating/Pausing the Camera but keeping it "warm"
  • Using the Example Frame Processor Plugin

Get started

To try the playground out for yourself, run the following commands:

git clone https://github.com/mrousavy/react-native-vision-camera
cd react-native-vision-camera
yarn bootstrap

iOS

  1. Open the example/ios/VisionCameraExample.xcworkspace file with Xcode
  2. Change signing configuration to your developer account
  3. Select your device in the devices drop-down
  4. Hit run

Android

  1. Open the example/android/ folder with Android Studio
  2. Select your device in the devices drop-down
  3. Hit run