Опубликован выпуск библиотеки SVT-AV1 4.3.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:
- Проведена оптимизация компромиссов качество/скорость для всех пресетов, позволившая снизить нагрузку на CPU на 5-8% при сохранении того же уровня качества, а также сократить время кодирования на 10-11% в многопоточном режиме. Ускорено выполнение операций исключения неэффективных режимов кодирования (MD — Mode Decision), расчёта векторов движения (MV — Motion Vector) и параметров фильтров во время кодирования, вычисления размера частотных коэффициентов, поиска субпиксельных смещений, копирования блоков и отсеивания лишней детализации при помощи алгоритма RDOQ (Rate-Distortion Optimized Quantization). В многопоточом режиме для экономии ресурсов алгоритм определения трансляции содержимого экрана теперь применяется только к I-кадрам.
- Добавлен экспериментальный флаг «—fast-decode 3» для ускорения декодирования статичных изображений.
- Добавлен флаг «—fgs-table», включающий поддержку таблиц зернистости (film grain), и API FILM_GRAIN_EVENT для задания параметров зернистости в привязке к кадрам.
- Повышена скорость кодирования без потерь.
- В режиме кодирования с низкими задержками реализовано распараллеливание обработки блоков (tile).
- Добавлена опция «max_allowed_consecutive_frames_skips» для настройки пропуска кадров в режиме поддержания постоянного битрейта (CBR).
- Добавлен параметр «max_hierarchical_levels» для управления пулом буферов, применяемым при изменении размера групп промежуточных кадров (mini-GOP — Group of Pictures).
- Добавлена сборочная опция «—mobile-build» (в CMake — MOBILE_BUILD) для формирования 8-битной библиотеки для RTC, VOD и AVIF. Добавлены опции CONFIG_ENABLE_* для отключения cборки неиспользуемых инструментов кодирования.
- Для систем x86 реализованы 8-битные обработчики CDEF на базе инструкций AVX2 и SSE4.1, а также 16-битные прямые преобразования на базе инструкций AVX2 и AVX-512. Добавлен оптимизированный при помощи инструкций SSE4.1 код для межкадрового предсказания, работы с палитрами и трансформаций. Оптимизированы обработчики для квантования, копирования блоков, расчёта искажений и оценки cубпиксельных различий.
- Для систем ARM добавлены варианты обработчиков, ускоренные при помощи процессорных инструкций Neon.
Источник: http://www.opennet.ru/opennews/art.shtml?num=66596
