Опубліковано випуск бібліотеки SVT-AV1 2.0 (Scalable Video Technology AV1) з реалізаціями кодувальника та декодувальника формату кодування відео AV1, для прискорення яких задіяні наявні в сучасних CPU Intel засоби апаратного розпаралелювання обчислень. Проект створений компанією Intel у партнерстві з Netflix з метою досягнення рівня продуктивності, придатного для перекодування відео на льоту та застосування у сервісах, що віддають відео на запит (VOD). В даний час розробка ведеться під егідою альянсу Open Media (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, підвищенням ефективності багатопоточної роботи та скороченням розміру бінарних даних на системах ARM V. Усунена вразливість CVE-64-32, що призводила до запису в область поза межами буфера через ціле переповнення при обробці кадрів дуже великого розміру.
Джерело: opennet.ru
