Camera: Avoid latency accumulation when syncing preview to vsync
Currently if the capture intervals deviate from vsync intervals by more than 5%, reset the captureToPresent offset. This could be problematic when the camera capture intervals switches frequently between within 5% threshold and outside 5% thread, because each time we reset the offset, it could increase resulting in the overall latency become larger and larger. - Distinguish between fixed FPS and variable FPS - For fixed FPS, if the frame duration is roughly aligned with display refresh rate, use the current logic by enforcing a minimum frame interval. - For variable FPS, or fixed FPS deviating from display refresh rate, simply find the closest timestamp in the vsync timeline. - If we fail to find a presentation timestamp larger than the previous frame, manually increase one vsync interval so that we don't drop frame. Test: Visually observe GoogleCamera 30/60/variable-fps video preview Test: Visually observe OpenCamera photo and video preview, Test: Camera CTS, PerformanceTest#testPreviewJitter* Bug: 245629333 Change-Id: I4529b4fb5d2d5efd2dc8acf64f74412fbcafd67f
Loading
Please register or sign in to comment