android / android/camera-samples
fps reduces when image analysis usecase is applied
- Dominant language
- Kotlin
- Stars
- 5.5k
- Forks
- 2.4k
- PR merge metrics
- No merged PRs in 30d
Description
I'm testing on
TECNO POP 2F (b1f)
CPU Core-Count = 4
RAM = 1.00G
Internal Storage = 16GB
Screen Resolution = 960 X 480
I'm using the CameraXBasic Example
The camera preview gets laggy only when the ImageAnalysis use case is applied.
I observed that without the imageAnalysis usecase the frame per seconds is approximately 10 on this device even tho the device will support up to 30fps (Range(lower=30, upper=30)
*Below are the supported fps Range*
Lower => 20, Upper => 20
Lower => 24, Upper => 24
Lower => 5, Upper => 30
Lower => 30, Upper => 30
When ImageAnalsis usecase is applied the fps drops to approximately 3fps
I/BufferQueueProducer: [ImageReader-864x480f23m4-18676-0](this:0x98965000,id:0,api:4,p:18676,c:18676) queueBuffer: fps=2.50 dur=1199.65 max=416.04 min=384.55
And i think this makes the CameraPreview Lag.
Are there any optimization techniques that can be applied to avoid making the preview lag?
I've attempted setting the fps myself but i don't think that has any effect
e.g
```kotlin
val builder = ImageAnalysis.Builder()
// We request aspect ratio but no resolution
.setTargetAspectRatio(screenAspectRatio)
// Set initial target rotation, we will have to call this again if rotation changes
// during the lifecycle of this use case
.setTargetRotation(rotation)
// The analyzer can then be assigned to the instance
val camera2Interop = Camera2Interop.Extender(builder)
// camera2Interop.setCaptureRequestOption(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF)
camera2Interop.setCaptureRequestOption(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE, Range(30, 30))
```
Contributor guide
Research direction
Start with the CameraXBasic Example and its ImageAnalysis use case, reproducing the preview on the listed TECNO POP 2F with and without analysis. Inspect the ImageAnalysis.Builder configuration and compare the reported frame rates; done requires identifying a confirmed cause and documenting or testing a change that prevents the preview from dropping to about 3 fps.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- mobile, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100