camerakit-android icon indicating copy to clipboard operation
camerakit-android copied to clipboard

setParameters failed

Open platinum7919 opened this issue 7 years ago • 7 comments

Got the follow exception when starting the camera on Galaxy s6 SM-G925I (cameraKit 0.13.1)

06-19 10:37:15.328 2936-2936/com.charaku.popsical.tv D/RecorderActivity: onEvent:  CameraKitError
06-19 10:37:15.328 2936-2936/com.charaku.popsical.tv E/RecorderActivity: setParameters failed
    java.lang.RuntimeException: setParameters failed
        at android.hardware.Camera.native_setParameters(Native Method)
        at android.hardware.Camera.setParameters(Camera.java:1940)
        at com.wonderkiln.camerakit.Camera1.adjustCameraParameters(Camera1.java:804)
        at com.wonderkiln.camerakit.Camera1.adjustCameraParameters(Camera1.java:779)
        at com.wonderkiln.camerakit.Camera1.openCamera(Camera1.java:671)
        at com.wonderkiln.camerakit.Camera1.start(Camera1.java:124)
        at com.wonderkiln.camerakit.CameraView$2.run(CameraView.java:266)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.os.HandlerThread.run(HandlerThread.java:61)

platinum7919 avatar Jun 19 '18 02:06 platinum7919

I was playing around with the source and noticed that the crash stops after I disable the invertPreviewSizes inside Camer1.getPreviewResolution

  //boolean invertPreviewSizes = (this.mCameraInfo.orientation + this.mDeviceOrientation) % 180 == 90;
  boolean invertPreviewSizes = false;

The problem is that the preview will then be stretched in portrait mode (front camera). Perhaps this means that the size from getSupportedPreviewSizes cannot just be inverted manually like that.

Anyway I end up with the following.

In Camera1.java

    Size getPreviewResolution() {
        return getPreviewResolution(false);
    }
    Size getPreviewResolution(boolean oriented) {
        ....

        boolean invertPreviewSizes = oriented && (this.mCameraInfo.orientation + this.mDeviceOrientation) % 180 == 90;
        return this.mPreviewSize != null && invertPreviewSizes ? new Size(this.mPreviewSize.getHeight(), this.mPreviewSize.getWidth()) : this.mPreviewSize;
    }

...

    protected void adjustCameraParameters(int currentTry) {
        boolean haveToReadjust = false;
        Parameters resolutionLess = this.mCamera.getParameters();
        Size previewRes = this.getPreviewResolution();
        Size orientedPreviewRes = this.getPreviewResolution(true);
        
        if (previewRes != null && orientedPreviewRes != null) {
            this.mPreview.setPreviewParameters(orientedPreviewRes.getWidth(), orientedPreviewRes.getHeight(), this.mCameraParameters.getPreviewFormat());
            this.mCameraParameters.setPreviewSize(previewRes.getWidth(), previewRes.getHeight());

            try {
                this.mCamera.setParameters(this.mCameraParameters);
                resolutionLess = this.mCameraParameters;
            } catch (Exception var9) {
                this.notifyErrorListener(var9);
                this.mCameraParameters = resolutionLess;
            }
        } else {
            haveToReadjust = true;
        }
        ....
    }

Basically separating preview size from camera preview size

platinum7919 avatar Jun 25 '18 02:06 platinum7919

@platinum7919 Thanks for the issue and for looking into this. We have been working hard on CameraKit version 1.0.0 which has many stability and use-ability improvements over 0.13.x. It is currently in a stable Beta, take a look at the notes here #318.

Could you test your implementation on 1.0.0 and let me know if the problem persists? Thank you!

emersoncloud avatar Jul 02 '18 14:07 emersoncloud

I used 0.13.x, some mobile record video error , I find the error messsages 'setParameters failed'. so i can't record .

koala99 avatar Jul 05 '18 19:07 koala99

0.13.5 +1

musicode avatar Mar 08 '19 09:03 musicode

0.13.4 +1, 'setParameters failed' on record video attempt

anathefish avatar May 31 '19 12:05 anathefish

+1

Shailevy avatar Jun 04 '19 16:06 Shailevy

+1 on 0.13.5. Just seeing the "setParameters failed" msg wrapped in a RuntimeException logged under the CameraKitEventListener#onError(CameraKitError) callback. Unable to record video

blvckcoded avatar Jan 22 '20 18:01 blvckcoded