Спустя три года с момента публикации прошлого выпуска разработчики из компании NVIDIA представили (https://lists.x.org/archives/xorg-announce/2019-February/002... libvdpau 1.2 (https://gitlab.freedesktop.org/vdpau/libvdpau/), новую версию открытой библиотеки с поддержкой API VDPAU (Video Decode and Presentation) для Unix. VDPAU API предназначен для задействования возможностей GPU по аппаратному ускорению обработки различных форматов видео, например, на сторону GPU могут быть вынесены функции пост-обработки, слияния (compositing), отображения и декодирования. Дополнительно развивается библиотека libvdpau-va-gl, которая позволяет обеспечить работу реализации VDPAU API на базе OpenGL и технологии аппаратного ускорения Intel VA-API. Код библиотеки распространяется (https://gitlab.freedesktop.org/vdpau/libvdpau/) под лицензией MIT.
Кроме исправления ошибок в libvdpau 1.2 реализована поддержка новых типов цветовой субдискретизации (chroma type) для кадров и полукадров (https://ru.wikipedia.org/wiki/%D0%A2%D0%... (полей), добавлен API VdpDecoderQueryProfileCapability и обеспечена поддержка режима компоновки цвета 4:4:4 (https://en.wikipedia.org/wiki/Chroma_subsampling#4:4:4) для формата HEVC.URL: https://lists.x.org/archives/xorg-announce/2019-February/002...
Новость: https://www.opennet.dev/opennews/art.shtml?num=50226
Когда же реализуют в браузерах аппаратное ускорение в Linux?
...спустя еще 3 года
https://launchpad.net/~saiarcot895/+archive/ubuntu/chromium-devТолько здесь не VDPAU, а VA-API. Поэтому, если у вас NVIDIA, то запускайте через враппер. Ну, который VDPAU backend for VA-API
export LIBVA_DRIVER_NAME=vdpau
chromium-browser
> Поэтому, если у вас NVIDIA, то запускайте через враппер. Ну, который VDPAU backend for VA-APIВы здесь ничего не напутали? Зачем для NVIDIA backend for VA-API?
В Арче, кстати, уже https://bbs.archlinux.org/viewtopic.php?id=244031.
Если у вас заболела голова от обилия врапперов, то уточню, что их два. В обе стороны, так сказать.* Если вы пытаетесь запустить приложение, которое поддерживает только VA-API (а у вас NVIDIA) - то враппер, позволяющий получить желание, доступен прямо в коде библиотеки libva. Пример такого приложения - Chromium (пруф - у тебя по ссылке: extra/chromium is now being compiled with VA-API support)
* А если вы пытаетесь запустить приложение, которое поддерживает только VDPAU, (а у вас Intel) - то враппер доступен отдельно под названием libvdpau-va-gl. Пример такого приложения - Flash для Linux
P.S. Мне интересно, а что будет, если пустить один враппер в другой?
export LIBVA_DRIVER_NAME=vdpau
export VDPAU_DRIVER=va_gl
mplayer filename.mp4
Нет, он не напутал
https://packages.ubuntu.com/bionic/vdpau-va-driver
https://wiki.archlinux.org/index.php/Chromium#Hardware_video...
Собираешь ungoogled-chromium с поддержкой системного ffmpeg, который собираешь в свою очередь с поддержкой аппаратного ускорения. И всё работает (для h264, vp9 пока нет).
Разработчики Firefox утверждали, что в Linux без специального API невозможно запилить аппаратное ускорение видео в браузерах!?
Аппаратное ускорение - это не только аппаратное декодирование, а и аппаратный вывод на экран. Видимо, у мозилловцев как раз с последним проблемы.
Тем временем в винде достаточно просто установить свой любимый браузер и все работает из коробки :)
А поддержку декодирования HEVC 10bit через vdpau так и не запилили! Чо тут сказать - молодцы!
еще 3-4 года и все будет
Они же ясно сказали, что для этого надо использовать NVDEC/CUVID. А VDPAU это так, легаси, реальной разработки там больше не ведется (собственно, от него из-за этого стали отказываться, например из последнего Kodi выпилили...).
mpv --hwdec=nvdec - все будет работать. В ffmpeg тоже поддержка есть. В gstreamer вроде тоже было.НВидии не нравилось поддерживать под каждую платформу свою реализацию, в т.ч. линукс-специфичный VDPAU, поэтому сделали переносимый NVDEC, та же самая реализация работает и под оффтопиком, и под линуксом. Т.е. как бы DXVA2 и VDPAU соответственно все еще работают, но в NVDEC больше фич и рекомендуют именно его для всего использовать.
А как это NVDEC задействовать в Хромиуме?
> А как это NVDEC задействовать в Хромиуме?Пока вот такая ситуация будет сохраняться https://www.omgubuntu.co.uk/2018/10/hardware-acceleration-ch... - думаю, никак.
В хромиуме также поддержка VA-API неофициальная и неподдерживаемая. Боюсь, им просто плевать на линукс. Баг с 2015 года почти без прогресса: https://bugs.chromium.org/p/chromium/issues/detail?id=463440
Так что это проблема не NVDEC, а разработчиков хромиума...
> Так что это проблема не NVDEC, а разработчиков хромиума...А это уже проблемы шерифов и всё такое.
Под Windows и macOS вполне работают единые API для разных производителей.
Под ChromeOS работает опять же единый VAAPI для Intel.А вот NVDEC требует Nvidia 630 или новее. И по крайней мере пока никакого толка не принесёт в реализации.
>> Так что это проблема не NVDEC, а разработчиков хромиума...
> А это уже проблемы шерифов и всё такое.
> Под Windows и macOS вполне работают единые API для разных производителей.
> Под ChromeOS работает опять же единый VAAPI для Intel.Ну, что тут поделаешь.
Хотя иметь реализацию VA-API через NVDEC было бы весьма неплохо, наверное.
> А вот NVDEC требует Nvidia 630 или новее. И по крайней мере
> пока никакого толка не принесёт в реализации.Эээ. Не вижу проблемы. NVidia 630 это 2012 год. Предыдущее 500 поколение (которое не будет работать) - 2010 год. Да, карты 9-ти летней давности плохо совместимы с современными стандартами, тут ничего удивительного. Срок поддержки видеокарт не такой большой, как у процессоров.
(да и даже запустив на том же 630, декодировать современные стандарты все равно не выйдет - ну не было тогда таких кодеков в железе!)
Ну и ещё приведу цитату с Wiki MPV:The cuda and cuda-copy modes provides deinterlacing in the decoder which is useful as there is no other deinterlacing mechanism in the opengl output path. To use this deinterlacing you must pass the option: vd-lavc-o=deint=[weave|bob|adaptive]. Pass weave (or leave the option unset) to not attempt any deinterlacing. cuda should always be preferred unless the gpu vo is not being used or filters are required.
nvdec is a newer implementation of CUVID/CUDA decoding, which uses the FFmpeg decoders for file parsing. Experimental, is known not to correctly check whether decoding is supported by the hardware at all. Deinterlacing is not supported. Since this uses FFmpeg's codec parsers, it is expected that this generally causes fewer issues than cuda.
> Ну и ещё приведу цитату с Wiki MPV:
> nvdec is a newer implementation of CUVID/CUDA decoding, which uses the FFmpeg
> decoders for file parsing. Experimental, is known not to correctly check
> whether decoding is supported by the hardware at all. Deinterlacing is
> not supported. Since this uses FFmpeg's codec parsers, it is expected
> that this generally causes fewer issues than cuda.Ну тут уж без разницы. CUVID суть то же самое, можно и его использовать. Главное что не VDPAU.
CUVID/CUDA не работает на FreeBSD (хотя библиотеки вместе с драйвером nvidia-driver для линуксатора можно поставить), а VDPAU работает — уменьшает процессорозависимость при воспроизведении видео в MPV/ffmpeg явно.
> CUVID/CUDA не работает на FreeBSD (хотя библиотеки вместе с драйвером nvidia-driver для
> линуксатора можно поставить), а VDPAU работает — уменьшает процессорозависимость
> при воспроизведении видео в MPV/ffmpeg явно.Ну, в описании драйвера для FreeBSD NVDEC вроде как упоминается: https://devtalk.nvidia.com/default/topic/1046879/unix-graphi...-/
Но, подозреваю, что открытый драйвер типа nouveau будет сильно лучше работать в такой ситуации.. А для открытого драйвера и через VDPAU скорее всего можно все, что нужно получить.
Поддержку wayland ещё не запилили? А то vaapi умеет.
А чего так много минусов? Нативно оно до сих пор не работает.
libvdpau-va-gl был просто бомбой. Эффект в зарубежном интернете был просто бомбическим!Суть в том, что YouTube работал через Flash Player. А версия Flash Player для Linux умела только VDPAU. А VDPAU в то время работал исключительно с GPU от NVIDIA. Обидно немного. То есть, пользователи ATi и Intel были "в пролёте".
Как правило, NVIDIA стояла в больших стационарных компьютерах, на которых проц и так тянул YouTube. А на ноутах, как правило, стояли Intel HD 3000 или Mobility Radeon 4250. Такие ноуты как раз и не тянули YouTube, поэтому было бы здорово, если бы этим занялся GPU. Поэтому у Adobe очень просили поддержку VA-API (для ATi и Intel), но они отвечали, что весь "зоопарк" они поддерживать не намерены.
В 2012 году программист из Уфы написал враппер, позволяющий флешу работать поверх VA-API. Сам флеш думал, что работает с VDPAU, а враппер транслировал вызовы в libva.so. Когда я установил libvdpau-va-gl на свой нетбук, YouTube стал очень плавным. А на зарубежных форумах (я сужу по Reddit) вообще была эйфория!
В 2016 году YouTube начал использовать HTML5 для воспроизведения видео, поэтому аппаратное ускорение FullHD в браузерах в линуксе опять перестало работать. Ни на NVIDIA, ни на AMD - ни на чём. Впрочем, за эти годы пользователи обновили свои ноутбуки, и CPU на них тянет YouTube
> Впрочем, за эти годы пользователи обновили свои ноутбуки, и CPU на них тянет YouTubeНу-ну. Возьми ноутбук с этак 4К экраном и посмотри как на нём будет vp9@4K играться на CPU. Может и будет, но точно с воем кулеров.
Это у них традиция такая
flash -> html5 h264 -> vp9 (вместо h265 у которого уже тогда было аппаратное декодирование почти везде) -> скоро av1 будет
В смысле на новом железе?
Это Nvidia 960 и новее. Это этак 2015 год.h265 не поддержали по лицензионным соображениям. Он весьма дорогой.
H265 в 2015(у амд в 2014)получил поддержку а VP9 до сих пор на видеокартах амд не имеет аппаратного декодирования(есть только ускорение т.е. процессор будет загружен 50-70% на 4к видео)
Я вот точно помню, что актуальный H.265 (10bit, с Blu-ray) появился на AMD значительно позже НВидии, к сожалению :( В конце 2016 года только.Вот сама крутая карта от AMD на середину 2016 года (Fury X):
$ vdpauinfo |grep HEVC
HEVC_MAIN 186 65536 4096 4096
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---от этого HEVC_MAIN толку как с козла молока, т.к. по факту неофициальные рипы в него чаще всего 10bit, а уж официальные в стандарте UHD Blu-ray так и подавно HEVC_MAIN_10 по определению.
Ситуация исправилась только с выходом RX 460 в конце 2016.
А у нвидии еще в 2015 году вышли 950/960 GTX, прекрасно умеющие 10 bit.
Проглядел, на вики было написано про АMD APU а не про GPU1060 и 1050 у нвидии в 10bit VP9 кстати тоже не может
> Проглядел, на вики было написано про АMD APU а не про GPUДа и с APU тоже поздно 10bit HEVC внедрили :-/ Только когда мобильная вега вышла, вроде.
> 1060 и 1050 у нвидии в 10bit VP9 кстати тоже не может
А это не критично, высокобитрейтного 10bit 4K VP9 контента в природе не найти :) (загрузка проца еще ощутимо зависит от битрейта). А для низкобитрейтного FullHD ютубчика можно и без аппаратного декодера.
С HEVC стало актуально из-за того, что появился источник соответствующего контента в виде 4K Blu-ray. Ну и всякие потоковые вещания на него перешли. А для декодирования HEVC 10bit битрейта, как на 4K дисках проца нужно ну очень много. Хорошо разогнанный i5-2500K не тянул, например (i7-8700K - уже тянет).
>А это не критично, высокобитрейтного 10bit 4K VP9 контента в природе не найти :) (загрузка проца еще ощутимо зависит от битрейта). А для низкобитрейтного FullHD ютубчика можно и без аппаратного декодераПервая ссылка в поиске https://www.youtube.com/watch?v=tO01J-M3g0U
> Как правило, NVIDIA стояла в больших стационарных компьютерах, на которых проц и
> так тянул YouTube. А на ноутах, как правило, стояли Intel HD 3000 или Mobility Radeon 4250. Такие ноуты как раз и не тянули YouTube,За мобилити не скажу, но чтобы мобильный SandyBridge не тянул тытрубу? Крутая лапша, хорошо на ушах висит :)
(у меня трубу тянул еще core2duo с T5xxx, причем вплоть до 2014-2015 -- потом отправился в почетную отставку по причине окночательного просаживания подсветки экрана (ССFL, да и единственный выход интеловой интеграшки был VGA). А уж мобильный Arrandale вполне тянет FullHD полностью софтово, с тем же modesetting и отключенным ускорением "AccelMethod none")
FullHD 30FPS или 60FPS? Это очень большая разница.
> FullHD 30FPS или 60FPS? Это очень большая разница.Ну вот, потестил только что
https://www.youtube.com/watch?v=OKM--8fzDpo
в palemon и FF, полет нормальный, никаких рывков.
mpv
% mpv --ytdl-format=bestvideo "https://www.youtube.com/watch?v=OKM--8fzDpo"
Playing: https://www.youtube.com/watch?v=OKM--8fzDpo
(+) Video --vid=1 (*) (h264 1920x1080 59.940fps)
[vo/gpu/opengl] Suspected software renderer or indirect context
ни одного дропа (я правда не смотрел все -- так попрыгал и проиграл секунд с 30).
https://www.youtube.com/watch?v=1La4QzGeaaQ - (оно больше смахивает на настоящее, а не "переделанное" 60fps)
иногда очень легкие подтормаживания в палмуне, нормально в ФФ, отлично в mpv (жрет половину CPU в mpv и 2/3+ в браузерах):
% mpv --ytdl-format="bestvideo[height=1080]" "https://www.youtube.com/watch?v=1La4QzGeaaQ"  ...
Playing: https://www.youtube.com/watch?v=1La4QzGeaaQ
(+) Video --vid=1 (*) (h264 1920x1080 59.940fps)
[vo/gpu/opengl] Suspected software renderer or indirect context.
дрова:
Section "Device"
Option "AccelMethod" "none" # <str>
Identifier "Card0"
Driver "modesetting"
BusID "PCI:0:2:0"
EndSectionЗЫ:
к тому же, речь вроде бы не шла о 60 fps@FullHD в 2012 ;).
Тем более, для котиков, сериалов, да и большей части тогдашних рипов фильмов - 720p было за глаза (т.к. качество исходного материала как раз и было где-то там. Да и гонять 1920×1080 на экране 1366x768 конечно можно, "но зачем?"(c)).
а потом включаешь 2х потому что большинство видосов слишком медленные и всё накрывается
> а потом включаешь 2х потому что большинство видосов слишком медленные и всё накрываетсяНу, не знаю.
У меня L430 с этим самым "Intel HD 3000" в качестве проигрывателя ютуба и прочего (установлен Kodi с плагинами) последние пару лет в телевизор воткнут.
С другой стороны -- видео именно в браузере (полноценно, т.е. пару часов за раз и "FullHD") не смотрел уже пару-тройку лет -- нормальный видеоплеер все-таки для этого намного удобнее будет, да еще и (бонусом) не такой прожорливый по ресурсам, плюс может управляться через тот же коди/KDE connect с телефона,
Кстати да. Во flash'е смогли, а тут так и не могут. Что-то здесь не так...
> FullHD в браузерах в линуксе опять перестало работатьfalse
Всё работает и давно. Нужен Chromium с патчами (openSUSE и Fedora поставляют такой из коробки) и рабочий VAAPI (современаня графика Intel и AMD умеет из коробки).
А где сорцы то? По ссылке только исходники враппера (vdpau_wrapper.c) с набором хаков (командную строку, например, читают через "/proc/self/cmdline").