Термин
Reference frame
Ранее декодированный кадр, который декодер держит и может использовать для inter-prediction. Кодеки разрешают несколько reference-кадров на кадр.
Reference frame – ранее декодированный кадр, который кодек может использовать для предсказания будущих кадров. Когда P-кадр говорит «этот блок похож на блок 200 мс назад, чуть сдвинутый влево», «кадр 200 мс назад» – это reference. Reference-кадры живут в памяти декодера (в `dpb` – Decoded Picture Buffer) до тех пор, пока могут понадобиться будущим кадрам, а затем отбрасываются, освобождая место под новые.
Современные кодеки разрешают несколько reference-кадров одновременно – H.264 до 16 в High profile, у HEVC аналогично, у AV1 до 8 именованных references. Энкодер свободно выбирает, какой из них (или какие два, для B-кадров) лучше совпадает с блоком, который он пытается закодировать. Больше вариантов references – лучшее prediction, меньшие residuals, меньшие файлы. Trade-off: каждый держимый активным reference-кадр потребляет память декодера, и поэтому ограничения `level` накладывают потолок на максимальное число references для каждой ступени разрешения.
Для продуктовой команды две практические идеи про reference-кадры. Первое: encoder-пресеты вроде `slow` и `veryslow` используют больше references и находят лучшие совпадения; это часть причины, по которой медленные пресеты лучше сжимают. Второе: «интеллект» кодека в значительной мере живёт в выборе reference frame – выбор правильного reference из пула из 16 кандидатов – ключевая часть mode decision, и именно здесь современные ИИ-driven-энкодеры (и традиционные психовизуальные эвристики) делают умные выборы, которых не сделала бы простая математика. Если когда-нибудь видеопайплайн загадочно начинает выдавать меньшие файлы при том же VMAF после обновления энкодера – обычно ответственны улучшения в выборе reference frames.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.