react-native-vision-camera/package/android
Marc Rousavy 9add0eb571
feat: Use C++ OpenGL GPU VideoPipeline again (#1836)
1. Reverts 4e96eb77e0 (PR #1789) to bring the C++ OpenGL GPU Pipeline back.
2. Fixes the "initHybrid JNI not found" error by loading the native JNI/C++ library in `VideoPipeline.kt`.

This PR has two downsides:

1. `pixelFormat="yuv"` does not work on Android. OpenGL only works in RGB
2. OpenGL rendering is fast, but it has an overhead. I think for Camera -> Video Recording we shouldn't be using an entire OpenGL rendering pipeline.

The original plan was to use something similar to how it works on iOS by just passing GPU buffers around, but the android.media APIs just aren't as advanced yet. `ImageReader`/`ImageWriter` is way too buggy and doesn't really work with `MediaRecorder`/`MediaCodec`.

This sucks, I hope in the future we can use something like `AHardwareBuffer`s.
2023-09-22 17:22:31 +02:00
..
.settings chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
gradle/wrapper chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
src/main feat: Use C++ OpenGL GPU VideoPipeline again (#1836) 2023-09-22 17:22:31 +02:00
.editorconfig feat: New JS API for useCameraDevice and useCameraFormat and much faster getAvailableCameraDevices() (#1784) 2023-09-21 11:20:33 +02:00
.project chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
build.gradle chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
CMakeLists.txt feat: Use C++ OpenGL GPU VideoPipeline again (#1836) 2023-09-22 17:22:31 +02:00
gradle.properties chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
gradlew chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
gradlew.bat chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
README.md chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00
settings.gradle chore: Move everything into package/ (#1745) 2023-09-01 18:15:28 +02:00

android

This folder contains the Android-platform-specific code for react-native-vision-camera.

Prerequesites

  1. Install ktlint
    brew install ktlint
    

Getting Started

It is recommended that you work on the code using the Example project (example/android/), since that always includes the React Native header files, plus you can easily test changes that way.

You can however still edit the library project here by opening this folder with Android Studio.

Committing

Before committing, make sure that you're not violating the Kotlin codestyles. To do that, run the following command:

yarn check-android

This will also try to automatically fix any errors by re-formatting the Kotlin code.