Выпуск rav1e 0.3, кодировщика AV1 на языке Rust

Состоялся выпуск rav1e 0.3, высокопроизводительного кодировщика формата кодирования видео AV1, развиваемого сообществами Xiph и Mozilla. Кодировщик написан на языке Rust и отличается от эталонного кодировщика libaom значительным увеличением скорости кодирования и повышенным вниманием к обеспечению безопасности. Код проекта распространяется под лицензией BSD.

Поддерживаются все основные возможности AV1, включая поддержку внутренне- и внешне-кодированных кадров (intra- и inter-кадров), суперблоков 64×64, цветовой субдискретизации 4:2:0, 4:2:2 и 4:4:4, 8-, 10- и 12-разрядного кодирования глубины цвета, RDO (Rate-distortion optimization) оптимизации искажений, различные режимы предсказания межкадровых изменений и выявления трансформаций, управление скоростью потока и выявление усечения сцены.

Формат AV1 заметно опережает H.264 и VP9 по возможностям сжатия, но из-за усложнения реализующих их алгоритмов требует существенно больше времени для кодирования (по скорости кодирования libaom отстаёт от libvpx-vp9 в сотни раз, а от x264 в тысячи раз). Кодировщик rav1e предоставляет 11 уровней производительности, наивысшие из которых позволяют добиться скорости, близкой к кодированию в режиме реального времени. Кодировщик доступен как в форме утилиты командной строки, так и в виде библиотеки.

В новой версии:

  • Предложен более быстрый режим кодирования Speed 10;
  • Сокращён размер бинарных сборок (на платформе x86_64/Linux библиотека занимает около 3МБ);
  • Примерно на 14% сокращено время сборки;
  • Добавлен многопоточный фильтр для удаления блочных артефактов из видео (deblocking);
  • Для архитектуры x86_64 реализованы дополнительные оптимизации с использованием инструкций SIMD и расширено применение автовекторизации;
  • На 1/6 снижено число операций по выделению памяти;
  • В RDO (Rate-distortion optimization) улучшена логика подавления внутрикадровых искажений;
  • Некоторые операции переведены с использования арифметики с плавающей запятой на целочисленные вычисления;
  • На 1-2% улучшено качество кодирования на втором уровне скорости;
  • Добавлен новый фильтр предсказания направления движения (Intra edge);
  • Добавлена опция «-S» (—switch-frame-interval) для определения интервала переключения между кадрами;
  • Добавлена поддержка сборки для платформы wasm32-wasi (WebAssembly System Interface).

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