mrousavy / react-native-vision-camera

📸 A powerful, high-performance React Native Camera library.
https://react-native-vision-camera.com
MIT License
7.31k stars 1.07k forks source link

🐛 09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer: java.lang.IllegalStateException: maxImages (6) has already been acquired, call #close before acquiring more. #3205

Open TryRevilo opened 3 hours ago

TryRevilo commented 3 hours ago

What's happening?

App Crashes when I start Capturing Frames ie : in my Example below , when I set isActive to true

Reproduceable Code

<Camera
  ref={revCameraRef}
  style={StyleSheet.absoluteFill}
  device={revDevicesArr[revSelectedDeviceId]}
  isActive={isRevCameraActive}
  frameProcessor={revFrameProcessor}
/>

const revFrameProcessor = useFrameProcessor(frame => {
  'worklet';

  frame.close();
}, []);

Relevant log output

09-20 19:04:14.825   906 18275 E PDTblGen: [getTbl] dev(1) scenario(0) : Table is not generated. Please check error log during generating table (1st time lunch sensor mode(0))
09-20 19:04:14.825   906 18275 E PDTblGen:  (getTbl){#778:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/common/utils/PDTblGen/PDTblGen.cpp}
09-20 19:04:14.825   906 18275 E isp_mgr_bnr: apply(): Fail to Gen PDC Table, SensorDev(1), SensorMode(0), FrontBin(0)
09-20 19:04:14.825   906 18275 E isp_mgr_bnr:  (apply){#266:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/mt6765/isp_mgr/isp_mgr_bnr.cpp}
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer: Failed to acquire image.
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer: java.lang.IllegalStateException: maxImages (6) has already been acquired, call #close before acquiring more.
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at android.media.ImageReader.acquireNextImage(ImageReader.java:527)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy.acquireNextImage(AndroidImageReaderProxy.java:86)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy.acquireNextImage(SafeCloseImageReaderProxy.java:86)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.ImageAnalysisBlockingAnalyzer.acquireImage(ImageAnalysisBlockingAnalyzer.java:39)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.ImageAnalysisAbstractAnalyzer.onImageAvailable(ImageAnalysisAbstractAnalyzer.java:126)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy.lambda$setOnImageAvailableListener$1$androidx-camera-core-SafeCloseImageReaderProxy(SafeCloseImageReaderProxy.java:211)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy$$ExternalSyntheticLambda0.onImageAvailable(D8$$SyntheticClass:0)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy.lambda$setOnImageAvailableListener$0$androidx-camera-core-AndroidImageReaderProxy(AndroidImageReaderProxy.java:167)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-20 19:04:14.827 18105 18387 E ImageAnalysisAnalyzer:   at java.lang.Thread.run(Thread.java:923)
09-20 19:04:14.858   906 18275 E PDTblGen: [getTbl] dev(1) scenario(0) : Table is not generated. Please check error log during generating table (1st time lunch sensor mode(0))
09-20 19:04:14.858   906 18275 E PDTblGen:  (getTbl){#778:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/common/utils/PDTblGen/PDTblGen.cpp}
09-20 19:04:14.858   906 18275 E isp_mgr_bnr: apply(): Fail to Gen PDC Table, SensorDev(1), SensorMode(0), FrontBin(0)
09-20 19:04:14.858   906 18275 E isp_mgr_bnr:  (apply){#266:vendor/mediatek/proprietary/hardware/mtkcam/aaa/source/mt6765/isp_mgr/isp_mgr_bnr.cpp}
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer: Failed to acquire image.
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer: java.lang.IllegalStateException: maxImages (6) has already been acquired, call #close before acquiring more.
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at android.media.ImageReader.acquireNextImage(ImageReader.java:527)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy.acquireNextImage(AndroidImageReaderProxy.java:86)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy.acquireNextImage(SafeCloseImageReaderProxy.java:86)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.ImageAnalysisBlockingAnalyzer.acquireImage(ImageAnalysisBlockingAnalyzer.java:39)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.ImageAnalysisAbstractAnalyzer.onImageAvailable(ImageAnalysisAbstractAnalyzer.java:126)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy.lambda$setOnImageAvailableListener$1$androidx-camera-core-SafeCloseImageReaderProxy(SafeCloseImageReaderProxy.java:211)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.SafeCloseImageReaderProxy$$ExternalSyntheticLambda0.onImageAvailable(D8$$SyntheticClass:0)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy.lambda$setOnImageAvailableListener$0$androidx-camera-core-AndroidImageReaderProxy(AndroidImageReaderProxy.java:167)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at androidx.camera.core.AndroidImageReaderProxy$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
09-20 19:04:14.863 18105 18387 E ImageAnalysisAnalyzer:   at java.lang.Thread.run(Thread.java:923)

Camera Device

{
  "formats": [],
  "sensorOrientation": "landscape-left",
  "hardwareLevel": "full",
  "maxZoom": 10,
  "minZoom": 1,
  "maxExposure": 20,
  "supportsLowLightBoost": false,
  "neutralZoom": 1,
  "physicalDevices": [
    "wide-angle-camera"
  ],
  "supportsFocus": true,
  "supportsRawCapture": false,
  "isMultiCam": false,
  "minFocusDistance": 5,
  "minExposure": -20,
  "name": "0 (BACK) androidx.camera.camera2",
  "hasFlash": true,
  "hasTorch": true,
  "position": "back",
  "id": "0"
}

Device

Android

VisionCamera Version

"react-native-vision-camera": "^4.5.3",

Can you reproduce this issue in the VisionCamera Example app?

I didn't try (⚠️ your issue might get ignored & closed if you don't try this)

Additional information

maintenance-hans[bot] commented 3 hours ago

Guten Tag, Hans here! 🍻

It looks like you are encountering an issue with the image acquisition. Be sure you are closing each image properly before acquiring more, as indicated by the error message. From your log, it seems like you need to manage the images more carefully.

Also, you mentioned not trying to reproduce this issue in the VisionCamera Example app. This is important for us to help you. Please give it a try and see if you can replicate the issue there.

If it persists, make sure to provide detailed logs from adb logcat so that mrousavy can get a clearer picture of the problem.

And, if you find our work helpful, consider sponsoring the project here to support continued development!

Looking forward to your updates!

Note: If you think I made a mistake, please ping @mrousavy to take a look.

TryRevilo commented 3 hours ago

Hi @maintenance-hans . Thanks for the reply . How do I go about closing each image properly before acquiring more

maintenance-hans[bot] commented 3 hours ago
it ain't much, but it's honest work
TryRevilo commented 3 hours ago

I think I already am with :

const revFrameProcessor = useFrameProcessor(frame => {
  'worklet';

  frame.close();
}, []);