LINUX.ORG.RU

Как заставить vaapi увидеть fglrx, а ещё ffmpeg и mplayer


0

2

Сабж. BL-видео тормозит на нетбучнм процессоре 1.7 гигагерц. Видеокарта ATi Radeon HD 4200 должна аппаратно декодировать, но почему-то у vaapi нет USE-флага fglrx. У ffmpeg есть USE-флаг vaapi, а у mplayer - нет.

Долго мучился и думал что это невозможно. Наконец страница http://www.splitted-desktop.com/~gbeauchesne/ стала доступна, а то не открывалось ничего. Скачал xvba-video-0.7.7.x86_64.tar.gz и распаковал в /usr/lib/va два файла драйвера. Вот что такое http://en.wikipedia.org/wiki/Xvba

На той же страничке взял патч для mplayer mplayer-vaapi-latest.tar.bz2, и libva_0.31.1-1+sds4.tar.gz . vaapi с этой странички точно так же не содержит ./configure параметров для задействования fglrx или xvba. Я застрял. Как сделать дальше?

Вот что нашёл

wget http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-latest-FULL.tar.bz2
tar xvjf mplayer-vaapi-latest-FULL.tar.bz2
cd `tar tf mplayer-vaapi-latest-FULL.tar.bz2 | head -n 1 | grep -E mplayer-vaapi-[[:digit:]]{8}`
./checkout-patch-build.sh
sudo cp mplayer-vaapi/mplayer /usr/bin/mplayer-vaapi
kraftello ★★★★★
()
Ответ на: комментарий от kraftello

Ничего не работает. Во-первых, ebuild старый. Ну да ладно, переименовал в 20101115 и стал новым. В результате компилирования появился один-единственный файл /opt/mplayer-vaapi/mplayer! Это хорошо. Во-вторых, mplayer с поддержкой vaapi - это только половина решения проблемы. Через xv загрузка процессора 60-70%, через vaapi 70-83%. Следовательно, надо научить vaapi использовать xvba.

Скачиваем libva_0.31.1-1+sds4.tar.gz. Сравниваем его с тем, который используется в portage - они одинаковые. Как я уже говорил, ./configure -help ничего не знает и о fglrx, и о xvba. Но в каталоге debian спрятан каталог patches, а там много-много патчей! Больше всех меня заинтересовал этот: 203_fix_fglrx_detection.patch . Он создаёт файлы с кодом поддержки fglrx... но не может пропатчить makefile.am:

zenitur@athlon_neo ~/libva-0.31.1 $ patch < 203_fix_fglrx_detection.patch
patching file Makefile.am
Hunk #1 FAILED at 43.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
patching file Makefile.am
Hunk #1 FAILED at 25.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
patching file va_fglrx.c
patching file va_fglrx.h
can't find file to patch at input line 308
Perhaps you should have used the -p or --strip option?
The text leading up to this was:
--------------------------
|diff --git a/va/x11/va_x11.c b/va/x11/va_x11.c
|index 7f8fbd6..cbd2614 100644
|--- a/va/x11/va_x11.c
|+++ b/va/x11/va_x11.c
--------------------------
File to patch: va/x11/va_x11.c
patching file va/x11/va_x11.c
zenitur@athlon_neo ~/libva-0.31.1 $

Поиск по файлам слова xvba тоже ничего не дал - а это и есть аналог vdpau от атишников

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

Makefile.am можно и вручную исправить, еще он не нашел какой то файл: «can't find file to patch at input line 308», возможно это из-за того что патчи поставлены не все или не по порядку.

Hope ★★
()
Ответ на: комментарий от Zenithar

Посмотри арчевскую svn версию

http://repos.archlinux.org/wsvn/community/mplayer-vaapi/repos/community-i686/

Там патч есть

http://repos.archlinux.org/wsvn/community/mplayer-vaapi/repos/community-i686/...

Вот PKGBUILD

http://repos.archlinux.org/wsvn/community/mplayer-vaapi/repos/community-i686/...

Может поможет разобраться. Там есть флаги

--enable-xvmc \

--disable-vdpau \

--enable-vaapi \

kraftello ★★★★★
()

Насколько я понял

Аппарат на nile c k125? Писали, что в бунте 10.10 с блобом фуллхд грузит проц 30%. Но есть один ньюанс, по-моему AVC только силами проца воспроизводится. Сейчас поищу.

kraftello ★★★★★
()

Вот, нашёл

$ vainfo

$ mplayer -vo vaapi:gl -va vaapi

Получаю нагрузку 20-40% на CPU и фильм идет без всяких тормозов, т.е. как и должно быть. Предыдущие тесты были в формате VC1, так вот именно с ним и есть проблемы....

http://forum.ixbt.com/topic.cgi?id=17:40126-7

kraftello ★★★★★
()
Ответ на: Насколько я понял от kraftello

AMD Athlon II Neo K125. Спасибо за ссылку! Мне понравилось вот это:

проблема в том, что основной драйвер xvba-video, который работает с UVD2, проприетарный и пока официально поддерживает только HD 3200 и HD 4870, есть так же сообщения об удачной работе этого драйвера на HD 2600, HD 3300 и HD 3870, про HD 4200 пока ни слова, но как мы видим, результат есть, но не совсем тот, который нам интересен...

Как раз моя видеокарта. А mplayer с vaapi я уже получил. Теперь ищу vaapi (libva) с поддержкой xvba. Наверное она уже есть, но раз у тех людей на моей 4200 не заработало, то и у меня наверное не заработает тоже.

Zenithar
() автор топика
Ответ на: Вот, нашёл от kraftello

Почитал дальше, увидел вот это:

Все оказалось проще, что бы быть не многословным, показываю следующее:

igor@mcmcc:~$ vainfo 
libva: libva version 0.31.1-sds1
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/va/drivers/fglrx_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA API version: 0.31
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA API - 0.7.2
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointIDCT
      VAProfileMPEG2Main              : VAEntrypointIDCT
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

MPEG2, H264 и VC1 играются аппаратно через UVD2.

Попробовал у себя:

athlon_neo libva-0.31.1 # vainfo
libva: libva version 0.31.1-sds1
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
Ошибка сегментирования
athlon_neo libva-0.31.1 # ls /usr/lib/va/drivers/
fglrx_drv_video.so   s3g_drv_video.so     xvba_drv_video.so
nvidia_drv_video.so  vdpau_drv_video.so
athlon_neo libva-0.31.1 #

Спасибо за помощь!

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

Оно заработало. Я что-то сделал, и видео перестало тормозить. /opt/mplayer-vaapi/bin/mplayer -vo xv -va vaapi file . А то что vainfo не работает - пошастал по форумам. Судя по всему он выдаёт такую ошибку у всех, у кого не Убунта. Потому что пытается проанализировать бинарный xvba-driver.so от другой системы

Настроил smplayer, указав ему новый mplayer, вот только как указать что -va vaapi не знаю

Zenithar
() автор топика
Ответ на: комментарий от snoopcat

Я так понял у тебя арч и все ок.

Подскажи как ты с тирингом справился? Не помогает опция - vertical refresh always ON. арч 64-бит. В убунте помогало..

Карта 5470, конфиг ксорга с wiki арча, устанавливал драйвер через PKGBUILD-файл для сток-кернела, как описано в вики. До этого подключал репозиторий (который в вики) - эффект тот же. В компизе - sync to vblank вообще ничего не меняет.

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

у меня полностью дефолтные настройки. xorg

Section "ServerLayout"
	Identifier     "Default Layout"
	Screen      0  "aticonfig-Screen[0]-0" 0 0
	Option	    "AIGLX" "on"
EndSection

Section "Files"
EndSection

Section "Module"

#	Disable	"dri2"
	Load  "glx"
	Load  "dri"
#Load  "synaptics"
EndSection

Section "ServerFlags"
	Option	    "Xinerama" "off"
EndSection

Section "Monitor"
	Identifier   "aticonfig-Monitor[0]-0"
EndSection

Section "Monitor"
	Identifier   "0-LVDS"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Generic Autodetecting Monitor"
	Option	    "DPMS" "true"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "0 0"
	Option	    "Rotate" "normal"
	Option	    "Disable" "false"
	Option	    "PreferredMode" "1366x768"
EndSection

Section "Monitor"
	Identifier   "0-CRT1"
	Option	    "VendorName" "ATI Proprietary Driver"
	Option	    "ModelName" "Generic Autodetecting Monitor"
	Option	    "DPMS" "true"
	Option	    "TargetRefresh" "60"
	Option	    "Position" "0 0"
	Option	    "Rotate" "normal"
	Option	    "Disable" "true"
EndSection

Section "Device"
	Identifier  "Mobility Radeon HD 4500 Series"
	Driver      "fglrx"
	Option	    "XAANoOffscreenPixmaps" "on"
	Option	    "TexturedVideo" "on"
	Option	    "Textured2D" "on"
	Option	    "UseFastTLS" "1"
	Option	    "BackingStore" "on"
	Option	    "VideoOverlay" "off"
	Option	    "OpenGLOverlay" "off"
	Option	    "Capabilities" "0x00000800"
	Option	    "Monitor-LVDS" "0-LVDS"
	Option	    "Monitor-CRT1" "0-CRT1"
	BusID       "PCI:1:0:0"
EndSection

Section "Device"
	Identifier  "amdcccle-Device[1]-1"
	Driver      "fglrx"
	Option	    "Monitor-LVDS" "0-LVDS"
	BusID       "PCI:1:0:0"
	Screen      1
EndSection

Section "Screen"
	Identifier "aticonfig-Screen[0]-0"
	Device     "Mobility Radeon HD 4500 Series"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Section "Screen"
	Identifier "amdcccle-Screen[1]-1"
	Device     "amdcccle-Device[1]-1"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Section "DRI"

  #Group "Video"
	Mode         0666
EndSection

Section "Extensions"
	Option	    "RENDER" "Enable"
	Option	    "DAMAGE" "Enable"
	Option	    "Composite" "Enable"
EndSection
компиз - дефолтные настройки, в amdcccle ничего не крутил.
[neko@gdetotut ~]$ lspci | grep VGA
01:00.0 VGA compatible controller: ATI Technologies Inc M93 [Mobility Radeon HD 4500 Series]
[neko@gdetotut ~]$ 

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

32-бит? Совсем нет тиринга? - имеется в виду не видео, а например, когда «трясешь» окно. - По краям появляется тиринг, не?

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

Поставил smplayer

Может здесь? Настройки - дополнительно - дополнительные параметры -vo vaapi:gl -va vaapi

kraftello ★★★★★
()
Ответ на: комментарий от Sonsee

32бит.
совсем нет тиринга.
ни в видео, ни когда 'трясёшь' окно.
и да, поиграйся со значением Direct2D в amdpcsdb:

[neko@gdetotut cowsay-dn]$ cat /etc/ati/amdpcsdb|grep Direct2DAccel
Direct2DAccel=STRUE

snoopcat ★★★★★
()
Ответ на: комментарий от Sonsee

Дык, в убунте нету, она тоже 32-бит.

Может я что-то не установил.. ХЗ.

Что только не делал, все равно тиринг есть.

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

layman

теперь есть ;) http://gpo.zugaina.org/Overlays/wavilen пролистал комменты - жжёте товарисчи layman -a wavilen emerge -av x11-libs/xvba-video emerge -av media-video/mplayer-vaapi

у меня работает ;)

насчёт vsync - проблема есть однозначно - удавалось вроде победить при использовании cairo-compmgr и -vo vaapi (а не vaapi:gl)

wavilen
()
Ответ на: layman от wavilen

О!
у себя я сделал не в /opt а так же в /usr/bin только назвал mplayer-vaapi
имхо очевидней и удобней

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

наиболее красивый вариант - это как сделано здесь http://gentoo-overlays.zugaina.org/xhub/portage/media-video/mplayer/ или http://gentoo-overlays.zugaina.org/arcon/portage/media-video/mplayer/ , но поскольку у меня нету ни времени ни особого желания, я написал свой дичайший с точки зрения канонов на написание ebuild поскольку захотел получить крайне быстрый способ обновления плеера, да юзабилити хромает - тоже жду когда патчи станут официальными или кто-нибудь напишет гениальный ebuild

wavilen
()
Ответ на: layman от wavilen

vsync

нашёл вариант DE в котором у меня работал vsync: опенбокс без композитного менеджера ;) точнее стоит cairo-compmgr, но он отключается на время просмотра видео параметры smplayer'а: устройство вывода vaapi:gl галочки напротив - прямой рендеринг, двойная буферизация, отрисовывать с использованием слоёв дополнительные параметры для Mplayer "-va vaapi"

wavilen
()

а с xf86-video-ati получится запилить vaapi?

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

> тоже жду когда патчи станут официальными или кто-нибудь напишет гениальный ebuild

/etc/portage/patches/media-video/mplayer

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