LINUX.ORG.RU

libvdpau-va-gl

 , , ,


33

20

https://github.com/i-rinat/libvdpau-va-gl/releases

В двух словах, это VDPAU драйвер, который использует OpenGL для рисования и VA-API для декодирования видео.

VDPAU это открытый интерфейс, который подразумевает единую точку входа (libvdpau) и подключаемые драйверы; API не замкнуто накоротко на nVidia. Выбор конкретного драйвера осуществляется либо через переменную окружения VDPAU_DRIVER, либо спрашивается у X-сервера. Если так или иначе получить имя не удалось, считается, что оно есть «nvidia». Драйвер представляет собой разделяемую библиотеку с именем вида libvdpau_<drivername>.so.1. Программы линкуются с libvdpau, а она в свою очередь загружает нужный драйвер.

Чтобы использовать, нужно собрать, положить библиотеку в директорию, где её сможет найти компоновщик, и добавить в окружение переменную VDPAU_DRIVER=va_gl. Проверить, что драйвер работает, можно запустив vdpauinfo. А vainfo покажет, работает ли драйвер VA-API.

На видеокартах AMD по чудаковатым причинам происходят падения внутри XCloseDisplay. Чтобы обойти проблему, нужно в переменную VDPAU_QUIRKS добавить строку XCloseDisplay. Элементы в VDPAU_QUIRKS перечисляются через запятую, слитно, без пробелов и служат для тонкой настройки поведения драйвера. Кроме XCloseDisplay, есть ещё параметр ShowWatermark, включающий отображение строки va_gl в правом нижнем углу. Полный список можно найти в README.md.

Начиная с версии 2.99.908 xf86-video-intel сообщает переходнику libvdpau.so имя VDPAU драйвера. Символьных ссылок
libvdpau_i965.so.1libvdpau_va_gl.so.1
libvdpau_i915.so.1libvdpau_va_gl.so.1
достаточно для загрузки, и необходимости в использовании VDPAU_DRIVER больше нет.

★★★★★

Последнее исправление: i-rinat (всего исправлений: 12)
Ответ на: комментарий от i-rinat

Firefox 19.0.2,

флеш 11.2 r202

Флеш при переключении качества видео падает всегда сейчас.

Без export VDPAU_DRIVER=va_gl не падает вообще. в mms.cfg сейчас только EnableLinuxHWVideoDecode=1

Кст, это потоковое видео без акселерации походу идёт (загрузка процессора такая же как и без VDPAU_DRIVER). Это в принципе не плохо, если бы не падал флеш

ihanick
()
Ответ на: комментарий от ihanick

Firefox 19.0.2,

Поставлю iceweasel 19.0.2, он не должен вроде отличаться от firefox.

флеш 11.2 r202

Флеш я обновил до 11.2.202.275 (до этого было 11.2.202.270 или .273). Это самая свежая доступная. Поставь такую же, так проще будет баги отслеживать. Сейчас буду тестить.

Кст, это потоковое видео без акселерации походу идёт

Декодирование ускоряется, но масштабирование производится программно. Последнее отнимает времени чуть ли не больше, чем декодирование.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от ihanick

Флеш при переключении качества видео падает всегда сейчас.

Разобрался, дело действительно было в неправильной последовательности освобождения ресурсов. Добавил подсчёт ссылок (в ветке master), у меня перестало падать.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от i-rinat

Есть ещё одна проблема: Картинка рассыпается на видеостримах (тот же http://ru.twitch.tv). Т.е. если быстро сцена меняется, то видео всё в квадратных артефактах + происходит заливка целых областей неправильными цветами (розовые пятна).

Отображение нормальное, если не использовать vaapi с флешом.

Если пользоваться mplayer -vo vdpau с библиотекой или на youtube, то такой проблемы нет.

ihanick
()
Ответ на: комментарий от ihanick

Картинка рассыпается на видеостримах

Да, я в курсе, но не знаю, в чём именно проблема, надо проверять.

Если пользоваться mplayer -vo vdpau с библиотекой или на youtube, то такой проблемы нет.

У меня есть пара видео, на которых и в mplayer'е картинка рассыпается. Так что тест вроде как есть, надо копать вглубь.

i-rinat ★★★★★
() автор топика
Ответ на: комментарий от ihanick

В 720p 40-60% CPU, в основном на 800 MHz.

Есть ещё трюк с wmode. Ставишь greasemonkey, добавляешь новый скрипт (я взял за основу Scroll Over Flash Contents с userscripts.org), меняешь его код на

// ==UserScript==
// @name           Scroll Over Flash Contents
// @namespace      http://userscripts.org/topics/3090#posts-11620
// @description    Sets embed's and object's wmode parameter to transparent, so the mouse can scroll over flash contents
// @include        *
// ==/UserScript==

(function ()
{
	nodeInserted();
})();

document.addEventListener("DOMNodeInserted", nodeInserted, false);

function nodeInserted()
{
	for (var objs = document.getElementsByTagName("object"), i = 0, obj; obj = objs[i]; i++)
	{
		if (obj.type == 'application/x-shockwave-flash')
		{
			var skip = false;
			for (var params = obj.getElementsByTagName("param"), j = 0, param; param = params[j]; j++)
			{
				if (param.getAttribute("name") == "wmode")
				{
    				param.setAttribute("value", "direct");
					skip = true;
					break;
				}
			}
			if(skip) continue;
			var param = document.createElement("param");
			param.setAttribute("name", "wmode");
			param.setAttribute("value", "direct");
			obj.appendChild(param);
		}
	}
	
	if (typeof document.embeds != 'undefined')
	{
		for (var ems = document.embeds, i = 0, em; em = ems[i]; i++)
		{
			if ((em.getAttribute('wmode') && em.getAttribute('wmode') == 'direct')) continue;
			em.setAttribute('wmode', 'direct');
			var nx = em.nextSibling, pn = em.parentNode;
			pn.removeChild(em);
			document.removeEventListener('DOMNodeInserted', nodeInserted, false);
			pn.insertBefore(em, nx);
			document.addEventListener("DOMNodeInserted", nodeInserted, false);
		}
	}
}

Этот скрипт добавляет или меняет параметр wmode, делая его равным direct. После этого включается масштабирование через VDPAU, нагрузка должна снизиться.

i-rinat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.