Что означает "FrameTimeNanos" в "Choreographer.FrameCallback"? Время HW_VSYNC или APP_VSYNC?
Я прочитал исходный код DispSync и так далее, но это слишком сложно.
Что я узнал, так это то, что FrameCallback запускается событием APP_VSYNC, которое может иметь временное смещение от HW_VSYNC. Итак, как я могу узнать точное время HW_VSYNC?
Если параметр времени FrameCallback сообщает время APP_VSYNC, где я могу получить значение смещения между HW_VSYNC и APP_VSYNC, чтобы я мог рассчитать время аппаратной синхронизации?
1 ответ
IIRC, временные метки, сообщаемые хореографом, являются APP_VSYNC
раз. Как отмечено в комментариях в Grafika's ScheduledSwapActivity:
* We coordinate with the display refresh using Choreographer. The SurfaceFlinger DispSync
* enhancements may cause the Choreographer-reported vsync time to be offset from the
* actual-reported vsync time (which may itself be slightly offset from the actual-actual
* vsync time). None of this is terribly important unless you care about A/V sync.
Если A/V-синхронизация является вашей целью, вы, вероятно, должны использовать setPresentationTime()
особенность. Смотрите комментарий выше doFrame() для дополнительных заметок.