Термин
Mode decision
Выбор какого режима prediction и какого block partition использовать для каждой области кадра – управляется RDO.
Mode decision – процесс внутри энкодера, выбирающий как закодировать каждый блок: какой режим prediction (intra или inter), какое разбиение блока (один 64×64, или четыре 32×32, или шестнадцать 16×16 и т. д.), какой reference-кадр, какое преобразование, какая квантизация. Современные кодеки предлагают сотни допустимых комбинаций на блок, и энкодер должен выбрать одну. Mode decision – место, где живёт почти всё процессорное время энкодера и почти вся его дифференциация по качеству.
Механизм концептуально прост: для каждого кандидатного режима энкодер считает `lagrangian-cost` (rate плюс distortion, взвешенные λ), а затем оставляет режим с наименьшей стоимостью. Комбинаторный взрыв – практическая проблема: сотни режимов умножить на миллионы блоков в минуту видео, исчерпывающая оценка слишком медленная. Поэтому реальные энкодеры используют хитро спроектированные сокращения – сначала пробуют небольшой набор перспективных режимов, отсекают ветки, которые выглядят хуже текущего лидера, пропускают режимы, маловероятно полезные для данного типа контента. Медленные пресеты оценивают больше кандидатов и находят лучшие совпадения; быстрые пресеты оценивают меньше и дают чуть бо́льшие файлы.
Для продуктовой команды mode decision – механизм за encoder presets. Когда вы задаёте `x264 -preset slow` против `x264 -preset ultrafast`, вы по факту выбираете, насколько исчерпывающе энкодер оценивает mode decisions. Разница в сжатии между пресетами обычно 20–40 %; разница во времени кодирования – в 5–10 раз. Mode decision – также место, где конкурируют коммерческие энкодеры: их заявленные преимущества по эффективности над open-source-энкодерами почти всегда – это более умные (и более секретные) mode-decision-эвристики, а не новые инструменты кодирования.
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.