Термин
RDO
Процесс выбора энкодером режимов кодирования (размер блока, prediction, QP) путём минимизации совместной стоимости bitrate и distortion.
RDO – Rate-Distortion Optimisation – центральный движок принятия решений внутри современного энкодера. Для каждого блока каждого кадра у энкодера есть сотни возможных способов закодировать его: какой режим prediction, какой размер блока, какое преобразование, какая квантизация. RDO пробует комбинации и выбирает ту, что минимизирует совместный показатель «потраченные биты» плюс «введённая визуальная ошибка». Одни комбинации стоят больше бит, но выглядят лучше; другие экономят биты, но хуже выглядят – RDO находит sweet spot.
Математически он считает одно число стоимости: J = D + λ·R, где D – визуальная distortion от данного выбора, R – количество требуемых бит, а λ («лямбда») – коэффициент перевода одного в другое. Большая λ предпочитает меньше бит даже ценой большей distortion (сценарии низкого bitrate); маленькая λ предпочитает качество (сценарии высокого bitrate). Энкодер считает J для множества кандидатных способов кодирования и оставляет минимальный. Это звучит просто, но умножьте на миллионы блоков в минуту видео – и понятно, почему медленные пресеты так долго работают.
Для продуктовых команд RDO – источник двух важных фактов. Первый: «медленные пресеты сжимают лучше» – это прямое следствие RDO, медленный пресет оценивает больше кандидатных кодирований и находит лучшие компромиссы. Второй: энкодеры, тонко настраивающие RDO под перцептивное качество (используя SSIM или VMAF как метрику distortion вместо сырой попиксельной ошибки), выдают визуально лучшее видео при том же bitrate. Per-title encoding у Netflix, психовизуальный тюнинг AV1 и продвинутые перцептивные режимы HEVC – всё это вариации темы «сделать RDO умнее насчёт того, что реально видят люди».
Считаете параметры для своего продукта?
Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.