Објавување на SVT-AV1 2.0 енкодер и dav1d 1.4 декодер за видео формат AV1

Објавено е издавањето на библиотеката SVT-AV1 2.0 (Scalable Video Technology AV1) со имплементации на енкодерот и декодерот на форматот за кодирање видео AV1, за чие забрзување се користат средствата за хардверско паралелно пресметување присутни во современите процесори на Intel. Проектот е создаден од Интел во партнерство со Netflix со цел да се постигне ниво на перформанси погодно за транскодирање на видео при летот и употреба во услугите за видео на барање (VOD). Во моментов, развојот се спроведува под покровителство на Алијансата за отворени медиуми (AOMedia), која го надгледува развојот на форматот за кодирање видео AV1. Претходно, проектот беше развиен во рамките на проектот OpenVisualCloud, кој исто така ги развива енкодерите SVT-HEVC и SVT-VP9. Кодот се дистрибуира под лиценцата BSD.

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

Меѓу промените во новото издание на SVT-AV1:

  • Осуществлён переход на новую нумерацию версий, в соответствии с которой первая цифра в версии будет меняться при каждом изменении API/ABI.
  • Внесены изменения в API, связанные с переходом к индикации завершения потока (EOS — End Of Stream) в последнем кадре вместо использования пустого кадра, что позволило исключить задержку на ожидание лишнего кадра. Изменение API уже отражено в кодовой базе FFmpeg.
  • Удалён трёхпроходный режим переменного битрейта (3-pass VBR), вместо которого теперь используется механизм многопроходного VBR. Многопроходный режим VBR сведён к выполнению двух проходов для обеспечения интеграции с FFmpeg.
  • В кодировщик добавлены оптимизации, в результате которых эффективность сжатия пресетов M9-M13 повысилась на 1-4%, а потребление памяти в пресете M5 снизилась на 20-35% в режиме LP 8 и на 1-5% в других режимах. Потребление памяти в остальных пресетах уменьшилось на 1-5%.
  • Проведена оптимизация компромиссов качество/скорость для пресетов, выставляющих высокий уровень качества. Работа пресета MR, предоставляющего эталонное качество, ускорена на 100%.
  • В функции, написанные только на языке Си, добавлены оптимизации, специфичные для архитектуры ARM.

Дополнительно можно отметить выпуск проекта dav1d 1.4.1, в рамках которого сообщества VideoLAN и FFmpeg развивают библиотеку с реализацией альтернативного свободного декодировщика формата кодирования видео AV1. Библиотека dav1d поддерживает все возможности AV1, включая расширенные виды субдискретизации и все заявленные в спецификации параметры управления глубиной цвета (8, 10 и 12 бит). Ключевой особенностью dav1d является ориентация на достижение максимально возможной производительности декодирования и обеспечение качественной работы в многопоточном режиме. Код проекта написан на языке C (C99) с ассемблерными вставками (NASM/GAS) и распространяется под лицензией BSD. Реализована поддержка архитектур x86, x86_64, ARMv7 и ARMv8, и операционных систем FreeBSD, Linux, Windows, macOS, Android и iOS.

Версия dav1d 1.4 примечательна поддержкой новых архитектур Loongarch и RISC-V, а также задействованием дополнительных оптимизаций на базе инструкций AVX-512, ускорением работы фильтров 6tap на системах ARM, повышением эффективности многопоточной работы и сокращением размера бинарных данных на системах ARM64, ARM32 и RISC-V. Устранена уязвимость CVE-2024-1580, приводившая к записи в область вне границ буфера из-за целочисленного переполнения при обработке кадров очень большого размера.

Извор: opennet.ru

Додадете коментар