Camera: Add PreviewFrameScheduler to address preview jitter
The ideal viewfinder user experience is that frames are presented to the user in the same cadence as outputed by the camera sensor. However, the processing latency between frames could vary, due to factors such as CPU load, difference in request settings, etc. This frame processing latency results in variation in presentation of frames to the user. Improve the user experience by: 1. Cache preview buffers in PreviewFrameScheduler. 2. For each choreographer callback, queue the oldest preview buffer, with the best matching presentation timestamp. Frame N's presentation timestamp is the choreographer timeline timestamp closest to (Frame N-1's presentation time + capture interval between frame N-1 and N). 3. Maintain at most 2 queue-able buffers. If a 3rd preview buffer becomes available, queue it to the buffer queue right away. Test: Run GoogleCamera video mode and observe smoother viewfinder Test: Observe surfaceflinger trace when running viewfinder Test: Camera CTS Bug: 200306379 Change-Id: I791c841aaded2acd112de8f7e99a131443b21e11
Loading
Please register or sign in to comment