TL; DR: dav1d 0.3.0 декодирует видео AV1 на 24% быстрее на SSSE3, на 26% на SSE4.1 и на 4% на AVX2 (все ПК) и на 12% быстрее на Arm64 ( мобильный).

Декодер AV1 с открытым исходным кодом dav1d вчера был обновлен до версии 0.3.0. В третьем выпуске новый ассемблерный код обеспечивает серьезный прирост производительности как на ПК, так и на мобильных платформах.

Ранее:

PC

Что касается x86, этот выпуск в основном улучшает производительность SSSE3 dav1d. Xuefeng Jiang внес свой вклад в предсказание функций цветность по яркости и внутреннее предсказание Paeth, улучшив глобальную производительность на 0,8% и 0,4%.

Ливэй Ван продолжил свою работу над обратным преобразованием с более крупными блоками 8x32, 32x16 и 32x32 и вплоть до 64x64, обеспечив наибольшее ускорение в этом выпуске, более 10% для некоторых видео.

dav1d 0.3.0 также представляет первую сборку SSE4.1. В большинстве случаев добавленные инструкции SSE4.1 бесполезны в дополнение к SSSE3, но Victorien Le Couviour - Tuffet нашел вариант использования там, где он был. Он оптимизировал фильтр CDEF, что привело к ускорению в 1,15 раза на уровне модуля и примерно на 1,5% в целом.

Тем временем Хенрик Грамнер написал очень умный код SSE2 для ускорения энтропийного декодирования / чтения битового потока, который начал отнимать большую часть времени декодирования, особенно на AVX2. Ассемблерный код привел к ускорению для всех 64-битных платформ x86, примерно на 4% для AVX2 и 2% для SSSE3 и SSE4.1.

В целом эти коммиты делают dav1d 0.3.0 примерно на 24% быстрее на SSSE3, на 26% быстрее на SSE4.1 и на 4% быстрее на процессорах AVX2 (полные данные).

Хотя однопоточный aomdec все еще довольно силен, многопоточный dav1d 0.3.0 делает libaom еще меньшим местом в зеркале заднего вида (полные данные).

Arm64

Martin Storsjö выполнил два очень хороших коммита, ускоряющих петлевой фильтр и самостоятельное восстановление петли с помощью ассемблерного кода NEON. Обе функции были ускорены примерно в 3 раза, что привело к увеличению производительности от 7% до 36%. Это не только обеспечивает более высокое разрешение, частоту кадров и битрейт, но и снижает энергопотребление при воспроизведении идентичного контента.

Эти обновления выдвигают первое видео 1080p выше 25 кадров в секунду с одним ядром на Snapdragon 835. При использовании нескольких потоков 30 кадров в секунду теперь надежны, а 60 кадров в секунду достижимы для некоторого контента.

Нормализуя результаты, мы видим, что особенно полезен клип RED, поскольку он сильно зависит от петлевого фильтра. Прирост в однопоточном режиме составляет от 11% до 36% (в среднем 19%), в многопоточности - от 7% до 16% (полные данные).

Принятие

Принятие dav1d также идет очень хорошо. Хорошая новость заключается в том, что Chromium, проект с открытым исходным кодом, лежащий в основе Google Chrome, а теперь и Microsoft Edge, адаптированный dav1d будет поставляться по умолчанию в составе Chrome 74.

Firefox 67 также значительно улучшил реализацию dav1d. dav1d был обновлен до версии 0.2.1, и теперь используется несколько потоков плитки. dav1d также включен по умолчанию в Linux и macOS в дополнение к Windows.

FFmpeg и VLC по-прежнему используют dav1d, а Handbrake также рассматривает возможность интеграции dav1d, как только выйдет FFmpeg 4.2.

Youtube также кодирует все больше и больше потоков AV1. Они даже закодировали несколько видео в разрешениях 4K и 8K со скоростью до 60 кадров в секунду, посмотрите их здесьвключите AV1 для Youtube здесь).