Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🐛 device?.supportsParallelVideoProcessing is true but library fails to init frameProcessor #315

Closed
3 of 4 tasks
Kypsis opened this issue Aug 2, 2021 · 14 comments · Fixed by #1466
Closed
3 of 4 tasks
Labels
🤖 android Issue affects the Android platform 🐛 bug Something isn't working

Comments

@Kypsis
Copy link

Kypsis commented Aug 2, 2021

What were you trying to do?

I wanted to use frameprocessor form the current version of react-native-vision-camera/example.

What happened instead?

device?.supportsParallelVideoProcessing returns true but the frameProcessor fails to initialize with the following error:

[device/parallel-video-processing-not-supported: [device/parallel-video-processing-not-supported] The given LEGACY Camera device does not support parallel video processing ('video={true}' + 'frameProcessor={...}'). Disable either 'video' or 'frameProcessor'. To find out if a device supports parallel video processing, check the 'supportsParallelVideoProcessing' property on the CameraDevice. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/lifecycle#the-supportsparallelvideoprocessing-prop for more information.]

Relevant log output

2021-08-02 12:10:51.419 2057-2210/com.mrousavy.camera.example I/VisionCamera: Initializing FrameProcessorRuntimeManager...
2021-08-02 12:10:51.419 2057-2210/com.mrousavy.camera.example I/VisionCamera: Initializing Vision JS-Runtime...
2021-08-02 12:10:51.422 2057-2210/com.mrousavy.camera.example I/VisionCamera: Initialized Vision JS-Runtime!
2021-08-02 12:10:51.422 2057-2210/com.mrousavy.camera.example I/FrameProcessorRuntime: Installing Frame Processor Plugins...
2021-08-02 12:10:51.422 2057-2210/com.mrousavy.camera.example I/VisionCamera: Installing Frame Processor Plugin "__example_plugin"...
2021-08-02 12:10:51.422 2057-2210/com.mrousavy.camera.example I/FrameProcessorRuntime: Successfully installed 1 Frame Processor Plugins!
2021-08-02 12:10:51.552 2057-2205/com.mrousavy.camera.example I/ReactNativeJNI: received didPause for reason: 0 in state: RunningDetached
2021-08-02 12:10:51.653 2057-2205/com.mrousavy.camera.example D/SoLoader: About to load: libreactnativeblob.so
2021-08-02 12:10:51.654 2057-2205/com.mrousavy.camera.example D/SoLoader: libreactnativeblob.so not found on /data/data/com.mrousavy.camera.example/lib-main
2021-08-02 12:10:51.654 2057-2205/com.mrousavy.camera.example D/SoLoader: libreactnativeblob.so found on /data/app/~~Yf7ywxPn_Ow2NM3XralC6Q==/com.mrousavy.camera.example-RTQSI8aRZxUVTrUL7tpKWg==/lib/arm64
2021-08-02 12:10:51.654 2057-2205/com.mrousavy.camera.example D/SoLoader: Not resolving dependencies for libreactnativeblob.so
2021-08-02 12:10:51.655 2057-2205/com.mrousavy.camera.example D/SoLoader: Loaded: libreactnativeblob.so
2021-08-02 12:10:51.684 2057-2206/com.mrousavy.camera.example I/WebViewFactory: Loading com.google.android.webview version 92.0.4515.115 (code 451511533)
2021-08-02 12:10:51.706 2057-2206/com.mrousavy.camera.example W/.camera.exampl: Accessing hidden method Landroid/os/Trace;->isTagEnabled(J)Z (greylist, reflection, allowed)
2021-08-02 12:10:51.706 2057-2206/com.mrousavy.camera.example W/.camera.exampl: Accessing hidden method Landroid/os/Trace;->traceBegin(JLjava/lang/String;)V (greylist, reflection, allowed)
2021-08-02 12:10:51.706 2057-2206/com.mrousavy.camera.example W/.camera.exampl: Accessing hidden method Landroid/os/Trace;->traceEnd(J)V (greylist, reflection, allowed)
2021-08-02 12:10:51.706 2057-2206/com.mrousavy.camera.example W/.camera.exampl: Accessing hidden method Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V (greylist, reflection, allowed)
2021-08-02 12:10:51.706 2057-2206/com.mrousavy.camera.example W/.camera.exampl: Accessing hidden method Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V (greylist, reflection, allowed)
2021-08-02 12:10:51.709 2057-2206/com.mrousavy.camera.example I/cr_WVCFactoryProvider: Loaded version=92.0.4515.115 minSdkVersion=29 isBundle=true multiprocess=true packageId=2
2021-08-02 12:10:51.724 2057-2206/com.mrousavy.camera.example I/cr_LibraryLoader: Successfully loaded native library
2021-08-02 12:10:51.725 2057-2206/com.mrousavy.camera.example I/cr_CachingUmaRecorder: Flushed 7 samples from 7 histograms.
2021-08-02 12:10:52.007 2057-2205/com.mrousavy.camera.example I/VisionCamera: Installing JSI bindings...
2021-08-02 12:10:52.007 2057-2205/com.mrousavy.camera.example I/VisionCamera: Finished installing JSI bindings!
2021-08-02 12:10:52.050 1753-2127/? D/ConnectivityService: NetReassign [no changes]
2021-08-02 12:10:52.431 2057-2057/com.mrousavy.camera.example D/SoLoader: About to load: libyoga.so
2021-08-02 12:10:52.432 2057-2057/com.mrousavy.camera.example D/SoLoader: libyoga.so not found on /data/data/com.mrousavy.camera.example/lib-main
2021-08-02 12:10:52.432 2057-2057/com.mrousavy.camera.example D/SoLoader: libyoga.so found on /data/app/~~Yf7ywxPn_Ow2NM3XralC6Q==/com.mrousavy.camera.example-RTQSI8aRZxUVTrUL7tpKWg==/lib/arm64
2021-08-02 12:10:52.432 2057-2057/com.mrousavy.camera.example D/SoLoader: Not resolving dependencies for libyoga.so
2021-08-02 12:10:52.433 2057-2057/com.mrousavy.camera.example D/SoLoader: Loaded: libyoga.so
2021-08-02 12:10:52.438 2057-2205/com.mrousavy.camera.example I/ReactNativeJS: Running "CameraPage" with {"initialProps":{"componentId":"Component1"},"rootTag":1}
2021-08-02 12:10:52.562 1753-1753/? W/WindowManager: removeWindowToken: Attempted to remove non-existing token: android.os.Binder@a49ed1e
2021-08-02 12:10:52.640 2057-2205/com.mrousavy.camera.example I/ReactNativeJS: re-rendering camera page without active camera
2021-08-02 12:10:52.824 2057-2057/com.mrousavy.camera.example I/ReactNative: [GESTURE HANDLER] Initialize gesture handler for root view com.reactnativenavigation.react.ReactView{90fcc62 V.E...... ......ID 0,0-1080,2296 #1}
2021-08-02 12:10:52.841 2057-2057/com.mrousavy.camera.example D/ExtenderVersion: No versioning extender found. Falling back to default.
2021-08-02 12:10:52.859 2057-2228/com.mrousavy.camera.example I/CameraManagerGlobal: Connecting to camera service
2021-08-02 12:10:52.861 1151-2072/? W/ServiceManager: Permission failure: android.permission.CAMERA_OPEN_CLOSE_LISTENER from uid=10378 pid=2057
2021-08-02 12:10:52.875 2057-2228/com.mrousavy.camera.example D/CameraRepository: Added camera: 0
2021-08-02 12:10:52.891 2057-2228/com.mrousavy.camera.example I/Camera2CameraInfo: Device Level: INFO_SUPPORTED_HARDWARE_LEVEL_FULL
2021-08-02 12:10:52.892 2057-2228/com.mrousavy.camera.example D/CameraRepository: Added camera: 1
2021-08-02 12:10:52.893 2057-2228/com.mrousavy.camera.example I/Camera2CameraInfo: Device Level: INFO_SUPPORTED_HARDWARE_LEVEL_FULL
2021-08-02 12:10:52.893 2057-2228/com.mrousavy.camera.example D/CameraValidator: Verifying camera lens facing on sunfish, lensFacingInteger: null
2021-08-02 12:10:53.014 2057-2057/com.mrousavy.camera.example W/CameraView: CameraViewModule::getAvailableCameraDevices took: 226 ms
2021-08-02 12:10:53.060 2057-2205/com.mrousavy.camera.example I/ReactNativeJS: Re-rendering camera page with active camera. Device: "back (0)" (4000x2000 @ 30fps)
2021-08-02 12:10:53.094 1003-1003/? I/sensors-hal: [hal]flush_physical_sensor:320, android.sensor.accelerometer/11
2021-08-02 12:10:53.094 1003-1003/? I/sensors-hal: [hal]flush_physical_sensor:326, android.sensor.accelerometer/11 completed
2021-08-02 12:10:53.095 2057-2057/com.mrousavy.camera.example D/CameraView: Lifecycle went from INITIALIZED -> CREATED (isActive: true | isAttachedToWindow: false)
2021-08-02 12:10:53.129 2057-2205/com.mrousavy.camera.example I/ReactNativeJS: Re-rendering camera page with active camera. Device: "back (0)" (4000x2000 @ 30fps)
2021-08-02 12:10:53.165 2057-2057/com.mrousavy.camera.example D/CameraView: Lifecycle went from CREATED -> RESUMED (isActive: true | isAttachedToWindow: true)
2021-08-02 12:10:53.176 3308-3332/? D/DeviceStateHelper: Audo mode: 0
2021-08-02 12:10:53.178 3308-3332/? D/DeviceStateHelper: Audo mode: 0
2021-08-02 12:10:53.185 2057-2057/com.mrousavy.camera.example D/CameraView: Lifecycle went from RESUMED -> RESUMED (isActive: true | isAttachedToWindow: true)
2021-08-02 12:10:53.185 2057-2057/com.mrousavy.camera.example I/CameraView: Configuring session...
2021-08-02 12:10:53.186 2057-2057/com.mrousavy.camera.example I/CameraView: Configuring session with Camera ID 0 and custom format...
2021-08-02 12:10:53.192 2057-2057/com.mrousavy.camera.example I/CameraView: Using custom format - photo: 1920x1080, video: 1920x1080 @ 30 FPS
2021-08-02 12:10:53.192 2057-2057/com.mrousavy.camera.example I/CameraView: Setting AE_TARGET_FPS_RANGE to 30-30, and SENSOR_FRAME_DURATION to 0
2021-08-02 12:10:53.192 2057-2057/com.mrousavy.camera.example I/CameraView: Adding VideoCapture use-case...
2021-08-02 12:10:53.196 2057-2205/com.mrousavy.camera.example I/VisionCamera: Setting new Frame Processor...
2021-08-02 12:10:53.197 2057-2205/com.mrousavy.camera.example D/FrameProcessorRuntime: finding view 25...
2021-08-02 12:10:53.197 2057-2205/com.mrousavy.camera.example D/FrameProcessorRuntime: found view 25! is null: false
2021-08-02 12:10:53.197 2057-2205/com.mrousavy.camera.example I/VisionCamera: Found CameraView!
2021-08-02 12:10:53.197 2057-2205/com.mrousavy.camera.example I/VisionCamera: Adapting Shareable value from function (conversion to worklet)...
2021-08-02 12:10:53.197 2057-2205/com.mrousavy.camera.example I/VisionCamera: Successfully created worklet!
2021-08-02 12:10:53.200 2057-2210/com.mrousavy.camera.example I/VisionCamera: Frame Processor set!
2021-08-02 12:10:53.201 2057-2057/com.mrousavy.camera.example I/CameraView: Tried to add photo use-case (`photo={true}`) but the Camera device only supports a single use-case at a time. Falling back to Snapshot capture.
2021-08-02 12:10:53.202 2057-2057/com.mrousavy.camera.example I/CameraView: Adding ImageAnalysis use-case...
2021-08-02 12:10:53.207 2057-2057/com.mrousavy.camera.example I/CameraView: Attaching 2 use-cases...
2021-08-02 12:10:53.220 2057-2057/com.mrousavy.camera.example E/CameraView: Failed to configure session: No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases. Existing surfaces: [] New configs: [androidx.camera.core.impl.PreviewConfig@1956282, androidx.camera.core.impl.ImageAnalysisConfig@1a7b1d0, androidx.camera.core.impl.VideoCaptureConfig@32abd93]
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example E/CameraView: update() threw: [device/parallel-video-processing-not-supported] The given LEGACY Camera device does not support parallel video processing (`video={true}` + `frameProcessor={...}`). Disable either `video` or `frameProcessor`. To find out if a device supports parallel video processing, check the `supportsParallelVideoProcessing` property on the CameraDevice. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/lifecycle#the-supportsparallelvideoprocessing-prop for more information.
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example E/CameraView: invokeOnError(...):
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err: com.mrousavy.camera.ParallelVideoProcessingNotSupportedError: [device/parallel-video-processing-not-supported] The given LEGACY Camera device does not support parallel video processing (`video={true}` + `frameProcessor={...}`). Disable either `video` or `frameProcessor`. To find out if a device supports parallel video processing, check the `supportsParallelVideoProcessing` property on the CameraDevice. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/lifecycle#the-supportsparallelvideoprocessing-prop for more information.
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at com.mrousavy.camera.CameraView.configureSession(CameraView.kt:442)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at com.mrousavy.camera.CameraView.access$configureSession(CameraView.kt:62)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at com.mrousavy.camera.CameraView$update$1$1.invokeSuspend(CameraView.kt:275)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at android.os.Handler.handleCallback(Handler.java:938)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at android.os.Looper.loop(Looper.java:223)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7664)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
2021-08-02 12:10:53.225 2057-2057/com.mrousavy.camera.example W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err: Caused by: java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases. Existing surfaces: [] New configs: [androidx.camera.core.impl.PreviewConfig@1956282, androidx.camera.core.impl.ImageAnalysisConfig@1a7b1d0, androidx.camera.core.impl.VideoCaptureConfig@32abd93]
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err:     at androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:278)
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err:     at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:457)
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err:     at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:289)
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err:     at com.mrousavy.camera.CameraView.configureSession(CameraView.kt:427)
2021-08-02 12:10:53.226 2057-2057/com.mrousavy.camera.example W/System.err: 	... 11 more
2021-08-02 12:10:53.250 2057-2205/com.mrousavy.camera.example E/ReactNativeJS: { [device/parallel-video-processing-not-supported: [device/parallel-video-processing-not-supported] The given LEGACY Camera device does not support parallel video processing (`video={true}` + `frameProcessor={...}`). Disable either `video` or `frameProcessor`. To find out if a device supports parallel video processing, check the `supportsParallelVideoProcessing` property on the CameraDevice. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/lifecycle#the-supportsparallelvideoprocessing-prop for more information.]
      name: 'device/parallel-video-processing-not-supported',
      _code: 'device/parallel-video-processing-not-supported',
      _message: '[device/parallel-video-processing-not-supported] The given LEGACY Camera device does not support parallel video processing (`video={true}` + `frameProcessor={...}`). Disable either `video` or `frameProcessor`. To find out if a device supports parallel video processing, check the `supportsParallelVideoProcessing` property on the CameraDevice. See https://mrousavy.github.io/react-native-vision-camera/docs/guides/lifecycle#the-supportsparallelvideoprocessing-prop for more information.',
      _cause: 
       { stacktrace: 'java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases. Existing surfaces: [] New configs: [androidx.camera.core.impl.PreviewConfig@1956282, androidx.camera.core.impl.ImageAnalysisConfig@1a7b1d0, androidx.camera.core.impl.VideoCaptureConfig@32abd93]\n\tat androidx.camera.lifecycle.LifecycleCameraRepository.bindToLifecycleCamera(LifecycleCameraRepository.java:278)\n\tat androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:457)\n\tat androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:289)\n\tat com.mrousavy.camera.CameraView.configureSession(CameraView.kt:427)\n\tat com.mrousavy.camera.CameraView.access$configureSession(CameraView.kt:62)\n\tat com.mrousavy.camera.CameraView$update$1$1.invokeSuspend(CameraView.kt:275)\n\tat kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)\n\tat kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)\n\tat android.os.Handler.handleCallback(Handler.java:938)\n\tat android.os.Handler.dispatchMessage(Handler.java:99)\n\tat android.os.Looper.loop(Looper.java:223)\n\tat android.app.ActivityThread.main(ActivityThread.java:7664)\n\tat java.lang.reflect.Method.invoke(Native Method)\n\tat com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)\n\tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)\n',
         message: 'No supported surface combination is found for camera device - Id : 0.  May be attempting to bind too many use cases. Existing surfaces: [] New configs: [androidx.camera.core.impl.PreviewConfig@1956282, androidx.camera.core.impl.ImageAnalysisConfig@1a7b1d0, androidx.camera.core.impl.VideoCaptureConfig@32abd93]' } }
2021-08-02 12:10:53.383 2057-2247/com.mrousavy.camera.example D/SoLoader: About to load: libimagepipeline.so
2021-08-02 12:10:53.384 2057-2247/com.mrousavy.camera.example D/SoLoader: libimagepipeline.so not found on /data/data/com.mrousavy.camera.example/lib-main
2021-08-02 12:10:53.384 2057-2247/com.mrousavy.camera.example D/SoLoader: libimagepipeline.so found on /data/app/~~Yf7ywxPn_Ow2NM3XralC6Q==/com.mrousavy.camera.example-RTQSI8aRZxUVTrUL7tpKWg==/lib/arm64
2021-08-02 12:10:53.385 2057-2247/com.mrousavy.camera.example D/SoLoader: Not resolving dependencies for libimagepipeline.so
2021-08-02 12:10:53.386 2057-2247/com.mrousavy.camera.example D/SoLoader: Loaded: libimagepipeline.so

Device

Pixel 4a

VisionCamera Version

latest master

Additional information

@Kypsis Kypsis added the 🐛 bug Something isn't working label Aug 2, 2021
@mrousavy
Copy link
Owner

mrousavy commented Aug 2, 2021

Hi! Thanks for the bug report. Could you try opening Android Studio and place a breakpoint in that line:

if (hardwareLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {

Then as soon as the breakpoint gets hit, please tell me what value the hardwareLevel value has by hovering over it with your mouse

@mrousavy
Copy link
Owner

mrousavy commented Aug 2, 2021

You're just running the example/ right? Everything works fine if you disable photo and/or video?

@Kypsis
Copy link
Author

Kypsis commented Aug 2, 2021

Screenshot 2021-08-02 at 13 12 36

I'm indeed only running the example and it only works if I disable video. Disabling photo or audio or any combination not video does not work.

@naqibhishamuddin
Copy link

Hi, @mrousavy @Kypsis are there any updates on this issue 🐛 ? Thank you 🙌🏻

@mrousavy
Copy link
Owner

Hi! Sorry, no update from my side, I've been really busy with contracting. I'd love to review and merge a PR that fixes this, not entirely sure what's causing this but I can give pointers if you want to debug this.

@HorbachAndrii
Copy link

I have the same issue for Android 11 Xiaomi Redmi Note 8 Pro

@HorbachAndrii
Copy link

@Kypsis did you resolve the problem?

@TuJobs
Copy link

TuJobs commented Jun 2, 2022

+1 same issue for Oppo A1k

@TuJobs
Copy link

TuJobs commented Jun 4, 2022

+1 samsung s22 ultral
+1 samsung s22+
i think samsung device have this problem.

@HorbachAndrii
Copy link

@TuJobs what react-native version are you using?

@TuJobs
Copy link

TuJobs commented Jun 6, 2022

@HorbachAndrii it's react-native": "0.68.2

@TensionCoding
Copy link

I am running into this same problem on a Google Pixel 6a with the example app. Has there been any movement on this?

@venura-atlasopen
Copy link

@TuJobs @TensionCoding did you resolve the problem? I am having it running the example app.

@mrousavy
Copy link
Owner

Hey! I've rewritten the entire Android codebase of VisionCamera from CameraX to Camera2 in the efforts of ✨ VisionCamera V3.

I just now completed the Camera2 rewrite and I believe the core structure is running, but there might be some edge cases to iron out. Can you try and test the PR #1674 for me to see if you can still reproduce this issue here?

Here's an instruction on how you can test that: #1674 (comment)

If the issue cannot be reproduced with that version/PR anymore, then hoorayy, I fixed it! 🎉
Otherwise please let me know and I'll keep this issue open to keep track of it.

Thank you!

rrr-core added a commit to rrr-core/vision-camera that referenced this issue Jul 11, 2024
See mrousavy/react-native-vision-camera#1376

## Breaking Changes

* Frame Processors are now **synchronous**. Previously they ran on a
separate Thread. If you want to run something on a separate Thread now,
use `runAsync` inside a Frame Processor
* Frame Processor Plugins are no longer in the global object with the
`__` prefix, but rather stored directly in the `FrameProcessorPlugins`
object exported by react-native-vision-camera. (e.g. replace
`__scanQRCodes(frame)` with `FrameProcessorPlugins.scanQRCodes(frame)`)
* `frameProcessorFps` no longer exists. Use `runAtTargetFps` inside a
Frame Processor to throttle some calls.
* `onFrameProcessorPerformanceSuggestionAvailable` no longer exists. Use
the FPS display (`enableFpsGraph={true}`) to see how your Frame
Processor performs over time. This is more in-line with how React Native
works (Dev Tools / Perf Monitor)
* VisionCamera V3 will not work on RN 0.70 or below. You need to use RN
0.71. This is because the build script got way simpler and smaller,
making it faster to build and way less error prone. Backwards
compatibility is just too complex here.
* Reanimated is no longer used as a Worklet Runtime. Instead,
VisionCamera now uses
[react-native-worklets-core](https://github.com/margelo/react-native-worklets-core).

## Progress

You can test the latest V3 release by creating a new RN project with RN
0.71 and installing VisionCamera + RNWorklets:

```sh
yarn add react-native-vision-camera@3.0.0-rc.5
yarn add react-native-worklets-core
yarn add @shopify/react-native-skia
```

Things to test:

* TensorFlow Lite plugin to load any `.tflite` model!! ✨ (see [this PR
for more
info](mrousavy/react-native-vision-camera#1633),
will be a separate library soon)
* Drawing onto a Frame using Skia!! 🎉 
* Using `frame.toArrayBuffer()` to get the Frame's byte content in JS
* New Android build script. This should drastically speed up the build
time! 💨
* New Worklet library. This replaces Reanimated Worklets. Should be
faster and more stable :)
* New synchronous Frame Processors. Should be faster :)
* `runAtTargetFps` and `runAsync` in Frame Processors
* Using HostObjects or HostFunctions (like models from PyTorch) inside a
Frame Processor. This will probably require a few native bindings on
PyTorch's end to make the integration work (cc @raedle)

Overall V3 is close to completion. I have a few things to do the coming
days so not sure how much work I can put into this. **If anyone wants to
support the development of v3, I'd appreciate donations / sponsors:
https://github.com/sponsors/mrousavy** ❤️ :)


## Related issues 

features

- resolves
mrousavy/react-native-vision-camera#1376
- fixes
mrousavy/react-native-vision-camera#281
- resolves
mrousavy/react-native-vision-camera#211
- resolves
mrousavy/react-native-vision-camera#130
- resolves
mrousavy/react-native-vision-camera#117
- fixes mrousavy/react-native-vision-camera#76
- resolves
mrousavy/react-native-vision-camera#75
- resolves
mrousavy/react-native-vision-camera#562
- resolves
mrousavy/react-native-vision-camera#565
- fixes
mrousavy/react-native-vision-camera#570
- fixes
mrousavy/react-native-vision-camera#287
- resolves
mrousavy/react-native-vision-camera#311
- fixes
mrousavy/react-native-vision-camera#315
- resolves
mrousavy/react-native-vision-camera#323
- fixes
mrousavy/react-native-vision-camera#340
- fixes
mrousavy/react-native-vision-camera#354
- resolves
mrousavy/react-native-vision-camera#420
- fixes
mrousavy/react-native-vision-camera#434
- fixes
mrousavy/react-native-vision-camera#452
- fixes
mrousavy/react-native-vision-camera#496
- fixes
mrousavy/react-native-vision-camera#497
- resolves
mrousavy/react-native-vision-camera#499
- fixes
mrousavy/react-native-vision-camera#516
- fixes
mrousavy/react-native-vision-camera#527
- fixes
mrousavy/react-native-vision-camera#542
- fixes
mrousavy/react-native-vision-camera#548
- fixes
mrousavy/react-native-vision-camera#561
- fixes
mrousavy/react-native-vision-camera#740
- fixes
mrousavy/react-native-vision-camera#770


...and then pretty much every Android issue lol

- fixes
mrousavy/react-native-vision-camera#1675
(**maybe**, please test @PrernaBudhraja)
- fixes
mrousavy/react-native-vision-camera#1671

.. maybe also (not tested):

- fixes
mrousavy/react-native-vision-camera#1698
- fixes
mrousavy/react-native-vision-camera#1687
- fixes
mrousavy/react-native-vision-camera#1685
- fixes
mrousavy/react-native-vision-camera#1681
- fixes
mrousavy/react-native-vision-camera#1650
- fixes
mrousavy/react-native-vision-camera#1646
- fixes
mrousavy/react-native-vision-camera#1635
- fixes
mrousavy/react-native-vision-camera#1631
- fixes
mrousavy/react-native-vision-camera#1621
- fixes
mrousavy/react-native-vision-camera#1615
- fixes
mrousavy/react-native-vision-camera#1612
- fixes
mrousavy/react-native-vision-camera#1605
- fixes
mrousavy/react-native-vision-camera#1599
- fixes
mrousavy/react-native-vision-camera#1585
- fixes
mrousavy/react-native-vision-camera#1581
- fixes
mrousavy/react-native-vision-camera#1569
- fixes
mrousavy/react-native-vision-camera#1568
- fixes
mrousavy/react-native-vision-camera#1565
- fixes
mrousavy/react-native-vision-camera#1561
- fixes
mrousavy/react-native-vision-camera#1558
- fixes
mrousavy/react-native-vision-camera#1554
- fixes
mrousavy/react-native-vision-camera#1551
- fixes
mrousavy/react-native-vision-camera#1547
- fixes
mrousavy/react-native-vision-camera#1543
- fixes
mrousavy/react-native-vision-camera#1538
- fixes
mrousavy/react-native-vision-camera#1536
- fixes
mrousavy/react-native-vision-camera#1534
- fixes
mrousavy/react-native-vision-camera#1528
- fixes
mrousavy/react-native-vision-camera#1520
- fixes
mrousavy/react-native-vision-camera#1498
- fixes
mrousavy/react-native-vision-camera#1489
- fixes
mrousavy/react-native-vision-camera#1477
- fixes
mrousavy/react-native-vision-camera#1474
- fixes
mrousavy/react-native-vision-camera#1463
- fixes
mrousavy/react-native-vision-camera#1462
- fixes
mrousavy/react-native-vision-camera#1449
- fixes
mrousavy/react-native-vision-camera#1443
- fixes
mrousavy/react-native-vision-camera#1437
- fixes
mrousavy/react-native-vision-camera#1431
- fixes
mrousavy/react-native-vision-camera#1429
- fixes
mrousavy/react-native-vision-camera#1427
- fixes
mrousavy/react-native-vision-camera#1423
- fixes
mrousavy/react-native-vision-camera#1416
- fixes
mrousavy/react-native-vision-camera#1407
- fixes
mrousavy/react-native-vision-camera#1403
- fixes
mrousavy/react-native-vision-camera#1402
- fixes
mrousavy/react-native-vision-camera#1398
- fixes
mrousavy/react-native-vision-camera#1396
- fixes
mrousavy/react-native-vision-camera#1395
- fixes
mrousavy/react-native-vision-camera#1379
- fixes
mrousavy/react-native-vision-camera#1377
- fixes
mrousavy/react-native-vision-camera#1374
- fixes
mrousavy/react-native-vision-camera#1373
- fixes
mrousavy/react-native-vision-camera#1365
- fixes
mrousavy/react-native-vision-camera#1356
- fixes
mrousavy/react-native-vision-camera#1353
- fixes
mrousavy/react-native-vision-camera#1352
- fixes
mrousavy/react-native-vision-camera#1351
- fixes
mrousavy/react-native-vision-camera#1343
- fixes
mrousavy/react-native-vision-camera#1340
- fixes
mrousavy/react-native-vision-camera#1334
- fixes
mrousavy/react-native-vision-camera#1330
- fixes
mrousavy/react-native-vision-camera#1322
- fixes
mrousavy/react-native-vision-camera#1296
- fixes
mrousavy/react-native-vision-camera#1283
- fixes
mrousavy/react-native-vision-camera#1260
- fixes
mrousavy/react-native-vision-camera#1253
- fixes
mrousavy/react-native-vision-camera#1251
- fixes
mrousavy/react-native-vision-camera#1245
- fixes
mrousavy/react-native-vision-camera#1238
- fixes
mrousavy/react-native-vision-camera#1227
- fixes
mrousavy/react-native-vision-camera#1226
- fixes
mrousavy/react-native-vision-camera#1225
- fixes
mrousavy/react-native-vision-camera#1222
- fixes
mrousavy/react-native-vision-camera#1211
- fixes
mrousavy/react-native-vision-camera#1208
- fixes
mrousavy/react-native-vision-camera#1193
- fixes
mrousavy/react-native-vision-camera#1191
- fixes
mrousavy/react-native-vision-camera#1184
- fixes
mrousavy/react-native-vision-camera#1164
- fixes
mrousavy/react-native-vision-camera#1143
- fixes
mrousavy/react-native-vision-camera#1128
- fixes
mrousavy/react-native-vision-camera#1122
- fixes
mrousavy/react-native-vision-camera#1120
- fixes
mrousavy/react-native-vision-camera#1110
- fixes
mrousavy/react-native-vision-camera#1097
- fixes
mrousavy/react-native-vision-camera#1081
- fixes
mrousavy/react-native-vision-camera#1080
- fixes
mrousavy/react-native-vision-camera#1064
- fixes
mrousavy/react-native-vision-camera#1053
- fixes
mrousavy/react-native-vision-camera#1047
- fixes
mrousavy/react-native-vision-camera#1044
- fixes
mrousavy/react-native-vision-camera#1032
- fixes
mrousavy/react-native-vision-camera#1026
- fixes
mrousavy/react-native-vision-camera#1023
- fixes
mrousavy/react-native-vision-camera#1015
- fixes
mrousavy/react-native-vision-camera#1012
- fixes
mrousavy/react-native-vision-camera#997
- fixes
mrousavy/react-native-vision-camera#960
- fixes
mrousavy/react-native-vision-camera#959
- fixes
mrousavy/react-native-vision-camera#954
- fixes
mrousavy/react-native-vision-camera#946
- fixes
mrousavy/react-native-vision-camera#945
- fixes
mrousavy/react-native-vision-camera#922
- fixes
mrousavy/react-native-vision-camera#908
- fixes
mrousavy/react-native-vision-camera#907
- fixes
mrousavy/react-native-vision-camera#868
- fixes
mrousavy/react-native-vision-camera#855
- fixes
mrousavy/react-native-vision-camera#834
- fixes
mrousavy/react-native-vision-camera#793
- fixes
mrousavy/react-native-vision-camera#779
- fixes
mrousavy/react-native-vision-camera#746
- fixes
mrousavy/react-native-vision-camera#740
- fixes
mrousavy/react-native-vision-camera#727
- fixes
mrousavy/react-native-vision-camera#671
- fixes
mrousavy/react-native-vision-camera#613
- fixes
mrousavy/react-native-vision-camera#595
- fixes
mrousavy/react-native-vision-camera#588
- fixes
mrousavy/react-native-vision-camera#570
- fixes
mrousavy/react-native-vision-camera#569
- fixes
mrousavy/react-native-vision-camera#542
- fixes
mrousavy/react-native-vision-camera#516
- fixes
mrousavy/react-native-vision-camera#515
- fixes
mrousavy/react-native-vision-camera#434
- fixes
mrousavy/react-native-vision-camera#354
- fixes
mrousavy/react-native-vision-camera#323
- fixes
mrousavy/react-native-vision-camera#315
- fixes
mrousavy/react-native-vision-camera#281
- fixes
mrousavy/react-native-vision-camera#211
- fixes mrousavy/react-native-vision-camera#76
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🤖 android Issue affects the Android platform 🐛 bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants