По сути, вам нужно углубиться в концепцию FPS.
FPS X означает, что кадр отображается для отображения каждые 1 / X с, и он остается видимым на дисплее в течение 1 / X с. Обычно кадры обновляются на дисплее при каждой вертикальной синхронизации устройства отображения.
Теперь с помощью этой информации преобразование частоты кадров можно визуализировать как декодирование декодера во временное отображение на входном FPS, а сэмплер - отображение кадров на конечном дисплее на выходном FPS. Сэмплер производит выборку кадров с временного дисплея, на котором декодер обновляет кадры. Эта логика должна обеспечивать синхронизацию между декодером и сэмплером так, чтобы сэмплер не заканчивал выборкой частично обновленных кадров.
Эта логика работает как для уменьшения, так и для увеличения FPS.
Это может быть реализовано как одиночный буфер с синхронизированным доступом. Теперь позвольте декодеру записать в этот буфер на входном FPS, а сэмплер выберет кадр из этого буфера и отобразит на выходе fps.
Это обеспечит равномерное обновление экрана и отображение последнего доступного кадра при вертикальной синхронизации.