LINUX.ORG.RU

графика поверх видео, composite или XRender?

 , , ,


0

1

Хочется такую штуку, чтоб было два окна. Одно над другим. В нижнем окне показывается видео, через mplayer -wid... например. В верхнем окне я рисую собственную графику. При этом нужно блендить два окна, с учётом альфаканала. Т.е. графика накладывается поверх видео и может быть (полу)прозрачной.

Как это можно сделать?

Вариант 1: делаем окно, которое с графикой, override redirect (чтоб им window manager не управлял), управляем его позицией и размером сами (по образу и подобию нижнего окна). Это потому, что оно должно в качестве parent иметь root window. И тогд можно использовать Composite extension, например, если запустить xcompmgr... Я проверил, даже работает. Не могу понять, используется ли при этом аппаратное ускорение или нет. Мне только не нравится, что при этом пропадает xearth из root window.

Вариант 2: даём mplayer'у какое-то окно, которое не замаплено в экран. И с использованием функций XRender вручную 50 раз в секунду блендим его с нашей графикой. Мне кажется, данный способ будет тормозным.

Ещё варианты? Мне кажется Xv мог бы поддерживать такую штуку, чтоб выводит в окно видео только в пиксели заданного цвета, а другие пиксели чтоб отображались как есть. Но вроде как Xv просто тупо растягивает картинку из source в destination.


composite или XRender?

Composite и Render - вещи ортогональные. Render можно противопоставить GLX как 2D vs 3D. Композитинг же может выполняться как при помощи GLX (как в compiz), так и при помощи Render (как в xcommgr).

Раз нужна полупрозрачность и надо именно одно окно наложить на другое с полупрозрачностью, то Composite по-любому нужен, а вот накладывать уже можно как Render, так и GLX.

Zubok ★★★★★
()

Иксы закопать, делать через opengl.

anonymous
()
Ответ на: комментарий от cherry-pick

LXF vs. кастрюльник. Я сейчас не тролльнул.

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