Slow focus on Nexus 6 using Camera2 API

I ran into a problem with slow focus on Nexus 6. I am developing a camera application and now I am using the camera API2.

For applications, we create a preview request with 2 surfaces - SurfaceView (viewfinder) - YUV ImageReader surface (to use data when calculating hstogram)

And there is a critical point! If you just add only the surface of the viewfinder, focusing happens as usual. But with these 2 surfaces, focusing is very slow with the visual steps of moving the lens!

The code is pretty standard written in google docs:

mImageReaderPreviewYUV = ImageReader.newInstance(previewWidth, previewHeight, ImageFormat.YUV_420_888, 2);


previewRequestBuilder = camDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
previewRequestBuilder.addTarget(getCameraSurface()); //Add surface of SurfaceView
previewRequestBuilder.addTarget(mImageReaderPreviewYUV); //Add ImageReader

mCaptureSession.setRepeatingRequest(previewRequestBuilder.build(), captureCallback null);
+4
source share
2

logcat - ? (~ 30 ), ?

, Image ImageReader ( ) 30 , 30 .

, ImageReaderListener.onImageAvailable(ImageReader reader), :

public class TestImageListener extends ImageReaderListener {
    public void onImageAvailable(ImageReader reader) {
        Image img = reader.acquireNextImage();
        img.close();
    }
  }
  ...
  mImageReaderPreviewYUV.setOnImageAvailableListener(new TestImageListener());

, . ImageReader, nus reader.acquireLatestImage() .

+3

N6, , - ImageReader :

previewRequestBuilder = camDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
previewRequestBuilder.addTarget(mImageReaderPreviewYUV); //Add ImageReader
previewRequestBuilder.addTarget(getCameraSurface()); //Add surface of SurfaceView

N4/5.0.1, .

0

Source: https://habr.com/ru/post/1569186/


All Articles