Короткое определение

Фильтр, применяемый при декодировании до сохранения кадра как reference. Улучшает и визуальное качество, и качество последующих prediction.

In-loop filter – этап чистки, работающий внутри декодера как часть декодирования каждого кадра – не на финальной картинке для экрана, а до того как кадр сохранится как reference для предсказания будущих кадров. «Loop» в названии – это цикл декодирования: каждый декодированный кадр становится строительным блоком для следующего, и in-loop-фильтр следит, чтобы каждый такой блок был максимально чистым перед повторным использованием.

Почему это различие важно: обычный post-processing-фильтр просто делает отображаемую картинку красивее. In-loop-фильтр также улучшает и сжатие – потому что более чистые reference-кадры дают более чистые predictions, что даёт меньшие residual, что даёт меньшие файлы. Один и тот же in-loop-фильтр обязан работать идентично в любом compliant-декодере (включая декодер внутри энкодера на этапе кодирования), чтобы энкодер и декодер точно одинаково «видели» каждый reference-кадр. Если бы они расходились, predictions начинали бы дрейфовать и видео постепенно разваливалось бы.

Современные кодеки накладывают несколько in-loop-фильтров. У HEVC – deblocking + SAO. У AV1 – deblocking + CDEF + Loop Restoration. У VVC – deblocking + SAO + ALF. Каждый фильтр целится в свои артефакты: deblocking сглаживает границы блоков, SAO снижает ошибки на границах и полосах, CDEF сохраняет границы и убирает ringing, ALF применяет content-adaptive denoising. Для продуктовой команды in-loop-фильтры – невидимая сантехника, тут нечего настраивать, но они объясняют, почему каждое поколение кодеков требует больше вычислений и даёт заметно более чистое видео при том же bitrate, чем предыдущее.

Считаете параметры для своего продукта?

Поможем собрать энкодер-леддер и посчитать стоимость доставки – до старта разработки.