Второй выпуск dav1d, декодировщика AV1 от проектов VideoLAN и FFmpeg
5 марта 2019 года
Сообщества VideoLAN и FFmpeg опубликовали второй выпуск (0.2) библиотеки dav1d с реализацией альтернативного свободного декодировщика формата кодирования видео AV1. Код проекта написан на языке Си (C99) с ассемблерными вставками (NASM/GAS) и распространяется под лицензией BSD. Реализована поддержка архитектур x86, x86_64, ARMv7 и ARMv8, и операционных систем Linux, Windows, macOS, Android и iOS.
Библиотека dav1d поддерживает все возможности AV1, включая расширенные виды субдискретизации и все заявленные в спецификации параметры управления глубиной цвета (8, 10 и 12 бит). Работа библиотеки протестирована на большой коллекции файлов в формате AV1. Ключевой особенностью dav1d является ориентация на достижение максимально возможной производительности декодирования и обеспечение качественной работы в многопоточном режиме.
В новой версии проведена работа по увеличению производительности при обработке потоков с 8-битовым кодированием цветности на устаревших компьютерах и мобильных устройствах. Добавлены ассемблерные оптимизации, реализованные с использованием инструкций SSSE3 и NEON (ранее оптимизации были ограничены применением инструкций AVX2). Производительность большинства функций на языке Си увеличена в диапазоне от 2 до 20 раз. По сравнению с прошлым выпуском производительность декодирования в однопоточном режиме в среднем выросла в 2.25 раза, а в многопоточном - в 2.5 раза.
В целом dav1d теперь обеспечивает производительность, достаточную для декодирования видео 1080p с частотой 30 кадров в секунду практически на любых процессорах с поддержкой SSSE3.
По сравнению с эталонным декодировщиком aomdec на системах с поддержкой SSSE3, но без инструкций AVX2, dav1d работает в 2.5 - 3 раза быстрее для потоков с 8-разрядной глубиной цвета и цветовой субдискретизацией 4:2:0 (aomdec использует 4 потока, а dav1d - 8 потоков для раздельной обработки кадров и 4 для сшивания фрагментов). В однопоточном режиме производительность примерно на одном уровне.
При использовании инструкций SSE4.1 (поддерживаются на 95,82% систем по данным сервиса Steam), dav1d пока немного отстаёт от декодировщика aomdec в однопоточном режиме, но остаётся в два раза быстрее в многопоточном режиме.
При использовании инструкций AVX2 по сравнению с прошлым выпуском производительность увеличена на 1-2% (основные оптимизации были добавлены ранее). При этом dav1d остаётся быстрее aomdec на 40% в однопоточном режиме и в 2.5-5 раз в многопоточном.
На системах ARM64 (Snapdragon 835) с инструкциями NEON производительность в среднем возросла на 38% в однопоточном режиме и на 53% в многопоточном. На 32-разрядных процессорах ARMv7 прирост производительности составил 62% и 46% соответственно.
Напомним, что видеокодек AV1 (Архивная копия от 17 сентября 2020 на Wayback Machine) разработан альянсом Open Media (AOMedia), в котором представлены такие компании, как Mozilla, Google, Microsoft, Intel, ARM, NVIDIA, IBM, Cisco, Amazon, Netflix, AMD, VideoLAN, CCN и Realtek. AV1 позиционируется как общедоступный и не требующий оплаты отчислений свободный формат кодирования видео, который заметно опережает H.264 и VP9 по уровню сжатия. Для всего диапазона протестированных разрешений в среднем AV1 обеспечивает тот же уровень качества при уменьшении битрейта на 13% по сравнению с VP9 и на 17% по сравнению с HEVC. На высоких битрейтах выигрыш увеличивается до 22-27% для VP9 и до 30-43% для HEVC. В тестах Facebook AV1 обогнал по уровню сжатия main profile H.264 (x264) на 50.3%, high profile H.264 на 46.2%, а VP9 (libvpx-vp9) на 34.0%.
Дополнительно можно отметить публикацию чернового варианта спецификации для нового формата кодирования изображений AVIF, в котором задействованы технологии внутрикадрового сжатия из AV1. После завершения рецензирования черновика техническим комитетом альянса AOM (Alliance for Open Media) планируется опубликовать финальный вариант спецификации (сейчас спецификация находится на стадии кандидата в релизы - 1.0.0-rc). AVIF поддерживает как изображения в HDR (High Dynamic Range) и цветовом пространстве Wide-gamut, так и в стандартном динамическом диапазоне (SDR). Контейнер для распространения сжатых данных в AVIF полностью аналогичен HEIF.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.