Выпуск SVT-AV1 4.2.0, кодировщика для формата видео AV1

Опубликован выпуск библиотеки SVT-AV1 4.2.0 (Scalable Video Technology AV1) c реализациями кодировщика и декодировщика формата кодирования видео AV1, для ускорения которых задействованы присутствующие в процессорах x86_64 и ARM расширения для аппаратного распараллеливания вычислений. Проект создан компанией Intel в партнёрстве с Netflix с целью достижения уровня производительности, пригодного для перекодирования видео на лету и применения в сервисах, отдающих видео по запросу (VOD). В настоящее время разработка ведётся под эгидой альянса Open Media (AOMedia), курирующего развитие формата кодирования видео AV1. Ранее проект развивался в рамках проекта OpenVisualCloud, который также разрабатывает кодировщики SVT-HEVC и SVT-VP9. Код распространяется под лицензией BSD.

SVT-AV1 может быть собран для систем на базе любых архитектур, для которых имеется компилятор с поддержкой стандарта C99, но наилучшая производительность достигается на системах x86_64, для которых применяются ассемблерные оптимизации на базе инструкций SIMD (желательно наличие в CPU поддержки AVX2, но в качестве минимума достаточно и SSE2). Потребление памяти зависит от числа задействованных при кодировании процессорных ядер, регулируемых опцией «—lp». Из-за усложнения применяемых в AV1 алгоритмов, для кодирования данного формата требуется существенно больше ресурсов, чем для других форматов.

Среди изменений в новом выпуске SVT-AV1:

  • Реализован новый режим оптимизации TUNE-VMAF, позволяющий экономить до 15% битрейта при том же уровне визуального качества в соответствии с метрикой VMAF, оценивающей человеческое восприятие, и незначительном уменьшении качества по метрике PSNR, оценивающей точность воспроизведения исходных данных на уровне пикселей.
  • Реализован однопоточный режим кодирования, который можно использовать с режимом случайного доступа (Random Access).
  • В пресетах M3-M5 проведена оптимизация компромиссов качество/скорость при кодировании в режиме случайного доступа.
  • Добавлены новые опции командной строки: —cqp, —enable-intrabc, —hbd-mds, —enable-kf-tf.
  • Добавлена поддержка вывода в raw-формате OBU в дополнение к ранее поддерживаемому формату IVF.
  • Проведена оптимизация компромиссов качество/скорость при кодировании в режиме «—rtc» (Real-Time Communications), а также повышена эффективность сжатия и снижено потребление памяти при кодировании в низких разрешениях. Добавлены параметры «—max-intra-bitrate-pct» и «—max-inter-bitrate-pct».
  • Добавлен режим кодирования в реальном времени с постоянным битрейтаом — CBR (Constant Bitrate), реализованный с использованием фильтра Калмана и поддерживающий цикличное обновление с размазыванием сложных изменений по нескольким кадрам и перекодирование кадров с худшим качеством, если они не укладываются в заданный битрейт.
  • В режиме «—rtc» добавлена поддержка динамического изменения настроек битрейта и пресетов на лету.
  • Добавлен API для управления опорными кадрами, поддерживающий LTR (Long-Term Reference) и двухуровневую структуру наборов опорных кадров (RPS, Reference Picture Set).
  • Переработана реализация энтропийного кодирования, в которой обеспечена прямая запись в буфер сегментов (tile-buffer), упрощён арифметический кодер и реализовано отсечение остаточных данных после квантования.
  • Добавлены новые оптимизации CDEF (Constrained Directional Enhancement Filter) для исключения размытия в областях смены контраста, MD (Mode Decision) и ME (Motion Estimation) для быстрой обработки статичных объектов.
  • Оптимизировано определение наличия на видео изображения с содержимым экрана для применения специфичных методов кодирования для сохранения чёткости текста.
  • Добавлена сборочная опция ENABLE_STACK_PROTECTOR для отключения
    флага «-fstack-protector», позволяющая убрать накладные расходы на проверку переполнения стека.

  • Добавлены дополнительные оптимизации для архитектуры ARM и задействованы расширенные инструкции NEON для ускорения вычислений.

Источник: http://www.opennet.ru/opennews/art.shtml?num=65903