![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Перевірка на хадварні відеокодувальники ув Кроумі
Бовзер Кроум має інтернáльну сторінку chrome://gpu/
, яка малює,
поміж інших речей, статуса хадварних відеокодувальників. Якщо драйвер
gpu не опиняється ув блеклисті (це слово можна знову
використовувати?), ближче до кінця там з'являється таблиця з рядками
Decode hevc main 64x64 to 8192x4352 pixels
З інтернáльною сторінкою пов'язано багато смішного. Наприклад, одного разу на безмежні узбережжя скелястих форумів гоогла викинуло монголку:
"Добрий дєнь! вопрос про страніцу chrome://gpu - у мєня поддєржка ЯндєксКарти запросіла пріслать содєржімоє єтой страніци. Єто что, вообщє? Єто бєзопасно? Я вставіла єє в адрєсную строку і получіла коллапс какой-то - цвєтниє полоси, клінья, сєґмєнти і прочую бєлібєрду, послє чєґо всє откритиє страніци інтєрнєта пошлі "плясать" - содєржімоє пєрєкорєжіло. Вірус, что лі?"
Раніше, якщо треба було дивитися на окремі відеофрейми, брався src відеокодеку на C та відчайдушно компілювався ув вебасемблі. Зараз це ліпше робити ні, т.я. бовзер розуміє вдосталь відеокодеків самотужки і має новітнього ойпіай (йому 5 років) для маніпулювання фреймами--WebCodecs.
Ув лайнаксі, Кроум використовує хадварні відеокодувальникі через завдяки за допомогою VAAPI. Якщо дістро має застарілі (або занадто нові) версії Mesa з їх DRI-драйверами, відеокодувальники ув Кроумі будуть софтварними, навіть якщо GPU підтримує їх хадварну акселерацію. З ідіотськими порадами "не викидайте старі комп'ютери, а інсталюйте на них лайнакса", наївний користувач отримує гул кулерів, який був відсутній ув віндюку, де Кроум дружив з драйверами GPU.
WebCodecs має метода статичного VideoDecoder.isConfigSupported()
,
яким можна перевірити чи використовує Кроум могутню акселерацію для
конкретного кодека. З VideoEncoder
це можна
перевірити для конкретної роздільної здатності.
Наприклад, якщо пастнути текста нижче ув дівтулзову консоль, воно
надрукує трохи більш зручну табличку, аніж простирадла з
chrome://gpu/
:
Promise.all([
['AV1', 'av01.0.08M.10'],
['H.264', 'avc1.640033'],
['H.265', 'hev1.1.6.L120.90'],
['VP8', 'vp8'],
['VP9', 'vp09.00.40.08']
].map( async v => ({
name: v[0],
codec: v[1],
support: (await VideoDecoder.isConfigSupported({
codec: v[1], hardwareAcceleration: "prefer-hardware",
})).supported
}))).then(console.table)

(Звичайно шо isConfigSupported()
є червона хфункція, т.я. потрібно
нагадувати гіпадрілам постійно шо життя це є боротьба.)
На жаль, console.table()
не вертає html, тому щоб написати
уйоб-сторінку, яку зручно відкривати на SBC з ондроїдом або кетайських
тівібоксах, треба малювати все самому.
Мінімальний приклад (працює лише ув Кроумі; Файрфокс видає галімат'ю):
$ wc -l *html
47 index.html
є отут (вибачте що не Реакт). Ув якості домашнього завдання,
додайте вибір варіянтів baseline/main/high кодеків з <select>
.