google-ar / arcore-android-sdk

ARCore SDK for Android Studio
https://developers.google.com/ar
Other
4.96k stars 1.22k forks source link

Is it a bug in ArFrame_acquireCameraImage when using depth API? #1085

Open guofengw opened 4 years ago

guofengw commented 4 years ago

Hi team,

When i use depth API in Samsung devices, i find that some devices (e.g. Note10) are often fail to call ArFrame_acquireCameraImage, that means we can not get the CPU image. But at the same time, ArFrame_acquireDepthImage can return the depth image. So is it a bug?

I set AR_CAMERA_CONFIG_DEPTH_SENSOR_USAGE_DO_NOT_USE

devbridie commented 4 years ago

That seems like a bug to me. What ArStatus does ArFrame_acquireCameraImage return?

Also, please provide the following information:

guofengw commented 4 years ago

The ArStatus is -10, that means AR_ERROR_DEADLINE_EXCEEDED

ARCore: Packages: versionName=1.18.200603086 Hidden system packages: versionName=0 Active APEX packages: Inactive APEX packages: Factory APEX packages:

Output: samsung/z3qzcx/z3q:10/QP1A.190711.020/G9880ZCU2ATFF:user/release-keys samsung/beyondxks/beyondx:10/QP1A.190711.020/G977NKSU2BSL7:user/release-keys

agGitHub commented 4 years ago

Hi,

Same bug here that happens randomly on: Image rgbImage = frame.acquireCameraImage();

My app uses the Depth API and I do this frame.acquireCameraImage(); just after frame.acquireDepthImage();

 com.google.ar.core.exceptions.DeadlineExceededException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.google.ar.core.Session.throwExceptionFromArStatus(Session.java:100)
        at com.google.ar.core.Frame.nativeAcquireCameraImage(Native Method)
        at com.google.ar.core.Frame.acquireCameraImage(Frame.java:5)
        at com.google.ar.core.examples.java.common.rendering.DepthImage.drawIn3D(DepthImage.java:301)
        at com.google.ar.core.examples.java.helloar.HelloArActivity.onDrawFrame(HelloArActivity.java:487)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1573)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272)

Test device : Samsung S10+

Packages: versionName=1.18.200603086 Hidden system packages: versionName=0 Active APEX packages: Inactive APEX packages: Factory APEX packages:

samsung/beyond2lteeea/beyond2:10/QP1A.190711.020/G975FXXS7CTF3:user/release-keys

ntreepoint commented 4 years ago

Hi, Do you have some news on this issue? Same bug appears for me on a Samsung Galaxy S20 and a Huawei P20. frame.acquireCameraImage() returns after a while AR_ERROR_DEADLINE_EXCEEDED. In my application i use in both acquireCameraImage() and acquireDepthImage to get RGB and depth data for each frame. When i remove out the acquisition of depth data, the issue is not reproduced.

Samsung Galaxy S20; ARCore package version: versionName=1.18.200603086 Fingerprint: samsung/y2seea/y2s:10/QP1A.190711.020/G985FXXU3ATFG:user/release-keys Huawei P20; ARCore package version: versionName=1.18.200603036 Fingerprint: HUAWEI/EML-L29/HWEML:10/HUAWEIEML-L29/10.0.0.161C432:user/release-keys

devbridie commented 4 years ago

I'm not able to reproduce this bug. Does this modification trigger the behavior in your devices? If not, please provide a minimal working example of the bug using HelloAR.

tvandenzegel commented 4 years ago

@devbridie Yes, your modification triggers the behavior!

E/native: status.cc:161 DEADLINE_EXCEEDED: 
    ARCoreError: third_party/arcore/ar/core/cpu_image_manager.cc:274
     [type.googleapis.com/util.ErrorSpacePayload='ArStatusErrorSpace::AR_ERROR_DEADLINE_EXCEEDED']
E/HelloArActivity: Exception on the OpenGL thread
    com.google.ar.core.exceptions.DeadlineExceededException
        at java.lang.reflect.Constructor.newInstance0(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
        at com.google.ar.core.Session.throwExceptionFromArStatus(Session.java:100)
        at com.google.ar.core.Frame.nativeAcquireCameraImage(Native Method)
        at com.google.ar.core.Frame.acquireCameraImage(Frame.java:5)
        at com.google.ar.core.examples.java.common.rendering.Texture.updateWithDepthImageOnGlThread(Texture.java:82)
        at com.google.ar.core.examples.java.helloar.HelloArActivity.onDrawFrame(HelloArActivity.java:307)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1582)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1281)

Huawei P20; ARCore package version: versionName=1.18.200603036 Fingerprint: HUAWEI/EML-L29/HWEML:10/HUAWEIEML-L29/10.0.0.161C432:user/release-keys