Low FPS with Camera2 API

I am experiencing a low frame rate per second with the new Camera2 API. In particular, despite choosing the maximum FPS range (30.30) from

characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);

and install it with

mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, bestFPSRange);

I get much lower average performance with high resolution images on both tested devices (Samsung S5 and Xperia Z3 Compact). Here is how I set up OnImageAvailableListener:

int format = ImageFormat.YUV_420_888;
Size largest = map.getOutputSizes(format)[0];
Log.d("Images", "sizes: " + Arrays.toString(map.getOutputSizes(format)));
mImageReader = ImageReader.newInstance(largest.getWidth(), largest.getHeight(), format,
        /* maxImages */50);
mImageReader.setOnImageAvailableListener(new OnImageAvailableListener() {

    private int  frames      = 0;
    private long initialTime = SystemClock.elapsedRealtimeNanos();

    @Override
    public void onImageAvailable(ImageReader reader) {
        reader.acquireLatestImage().close();
        frames++;
        if ((frames % 30) == 0) {
            long currentTime = SystemClock.elapsedRealtimeNanos();
            long fps = Math.round(frames * 1e9 / (currentTime - initialTime));
            Log.d("Image", "frame# : " + frames + ", approximately " + fps + " fps");
            frames = 0;
            initialTime = SystemClock.elapsedRealtimeNanos();
        }
    }
}, mBackgroundHandler);

, if FPS 30 . , (1920x1080), fps 15-20 . , , 30fps , , API , 30fps . ?

TEMPLATE (, TEMPLATE_PREVIEW) (, ImageFormat.YUV_420_888). ?

+7
1

S5 Z3 Compact LEGACY. LEGACY,

Samsung Galaxy S5

Xperia Z3 Compact

HTC One M9

Huawei Mate S

( 15 ) 1080p. , LG G4, . 30 . , api camera2 , .

+1

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


All Articles