Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Gentoo-Blog Ersatz

Moderator:el_hakim

Antworten
tel
Beiträge:94
Registriert:28.09.2007, 20:35
Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 16.05.2010, 19:07

Bei Nvidia-Grafikkarten funktioniert die Videodekodierung über die Grafikkarte unter
LINUX nun schon bald ein Jahr lang. Derweil war AMD's Entsprechung zu VDPAU genannt XvBA
schon eher (seit Mitte 2008) in deren fglrx-Treiber drin. Nur hat AMD weder eine
Beschreibung der API noch eine Beispielimplementation veröffentlicht, so dass
das ganze bis Ende 2009 ungenutzt geblieben ist.

Das hat sich inzwischen geändert. Es gibt inzwischen eine Bibliothek, die die
Erweiterung XvBA mit der offenen API VAAPI (hervorgeracht von Intel für deren
GMA-Grafikchipsätze) nutzbar macht.

Das ganze wollte ich dann doch mal ausprobieren - mein RS780G-Chipsatz
im Medienrechner drängt sich ja eigentlich zur Videodekodierung geradezu auf.

Xorg-Server auf Version 1.7 updaten

Als erstes einmal auf den xorg-server 1.7 updaten. Version 1.7.6 ist seit 16.04.2010 auch für amd64 stable.
Bei mir war noch 1.6.5 installiert - was beim Update einige Blocks mit X-Bibliotheken
verursacht hat. Das hat sich aber alles durch "unmergen" der betroffenen Pakete
lösen lassen (z.B. libXi, libXinerama, libXtst u.s.w.).

Nach dem Update des xorg-xservers müssen alle xorg-Treiber neu übersetzt werden - also

Code: Alles auswählen

emerge -1u xf86-input-evdev
emerge -1u xf86-input-mouse
emerge -1u xf86-input-keyboard
emerge -1u xf86-video-ati
emerge -1u xf86-video-radeonhd
emerge -1u xf86-video-vesa
emerge -1u xf86-video-nvidia
# ... und was noch so an Grafikkarten installiert ist
Laut Gentoo-Forum soll auch

Code: Alles auswählen

emerge -a1 $(qlist -I -C x11-driver)
den Job erledigen, aber das hat bei mir alle Grafikkartentreiber gebaut und nicht nur die,
die in der make.conf angegeben sind.

Neuesten fglrx-Treiber installieren

Möglichst den neuesten fglrx-Treiber installieren. Das ist zur Zeit x11-drivers/ati-drivers-10.4.
Die Video-Erweiterung XvBA ist zwar schon über ein Jahr im Treiber drin - aber sicher ist sicher.
Der ist noch im Testing-Tree - daher in /etc/portage/package.keywords eintragen:
>=x11-drivers/ati-drivers-10.4

Installieren und das Umstellen auf die OpenGL-Bibliotheken von AMD nicht vergessen.

Code: Alles auswählen

emerge ati-drivers
eselect opengl set ati
Wie der fglrx eingerichtet wird steht einen Thread weiter unten. Jedenfalls muss das
Kernelmodul erfolgreich geladen werden und DRI funktionieren - sonst wird das
mit der Videobeschleunigung natürlich nichts.
Wenn nach dem Start des XServers folgende Zeilen in der Xorg.0.log auftauchen,
sieht es schon mal gut aus:

Code: Alles auswählen

(**) fglrx(0): Textured Video is enabled.  # Videoausgabe über DRI -> Overlay wird von XvBA nicht unterstützt
(II) fglrx(0): DRI initialization successfull!  # wie schön...
(II) fglrx(0): UVD2 feature is available  # genau das möchten wir jetzt gerne nutzen!
Ebuilds aus arcon-Overlay kopieren

Für den Zugriff auf die Hardwarebeschleunigte Videausgabe benötigt man die Bibliotheken:
xvba-video und libva
sowie eine gepatchte Version des Mplayers von http://www.splitted-desktop.com/~gbeauc ... yer-vaapi/

Da wir mit Gentoo arbeiten, besorgen wir uns am besten Ebuilds z.B. aus dem arcon - Overlay
http://code.google.com/p/arcon/

Man kann jetzt das gesamte Overlay hinzufügen mit

Code: Alles auswählen

layman -a arcon
Leider sind die darin enthaltenen EBuilds schon wieder recht veraltet (libva, xvba-video) bzw. funktionieren
nicht wie sie sollen (mplayer-vaapi).
Außerdem befinden sich im arcon-Overlay auch Pakete, die sich mit dem normalen Portage-Testing-Tree überschneiden und bei mir auch installiert sind (z.B. x11-drivers/ati-drivers). Die würden dann auch mit den Versionen aus dem Overlay überschrieben werden, was ich nicht möchte.
Der Versuch, mit layman nur ausgewählte Pakete eines Overlays zu installieren, hat bei mir nicht funktioniert.
Wenn jemand weiß, wie das geht, kann er es gern weitergeben.

Daher habe ich die benötigten EBuilds aus dem arcon-Overlay unter /usr/local/portage/layman
in meinen eigenen lokalen Overlay-Tree unter /usr/local/portage kopiert.

Code: Alles auswählen

cd /usr/local/portage
mkdir x11-libs
cd x11-libs
mkdir xvba-video
cp -r usr/local/portage/layman/arcon/x11-libs/xvba-video/* xvba-video
mkdir libva
cp -r usr/local/portage/layman/arcon/x11-libs/libva/* libva
cd ..
mkdir media-video
cd media-video
mkdir mplayer
cp -r usr/local/portage/layman/arcon/media-video/mplayer/* mplayer
Und anschließend das arcon-Overlay wieder gelöscht.

Code: Alles auswählen

layman -d arcon
Anpassen der Ebuilds für die Bibliotheken, damit sie die aktuellen Versionen installieren

xvba-video

Das EBuild ermittelt die zu installierende Version der Bibliothek aus seinem Dateinamen.
Also einfach xvba-video-0.6.10.ebuild so umbennen, wie die neueste Version auf
http://www.splitted-desktop.com/~gbeauc ... vba-video/ heißt.
Ob die Variante für x86 oder amd64 installiert werden muss, ermittelt das Ebuild selbst.
Und danach das ebuild digest nicht vergessen.

Code: Alles auswählen

cd /usr/local/portage/x11-libs/xvba-video
mv  xvba-video-0.6.10.ebuild xvba-video-0.6.11.ebuild
rm Manifest
ebuild xvba-video-0.6.11.ebuild digest
libva

Auch dieses EBuild ermittelt die zu installierende Version der Bibliothek aus seinem Dateinamen,
auch wenn der etwas anders strukturiert ist, als die Namen der Tarballs auf
http://www.splitted-desktop.com/~gbeauchesne/libva/.

Um die neueste Version libva_0.31.0-1+sds13.tar.gz zu installieren, muss
das Ebuild wie folgt umbenannt werden:

Code: Alles auswählen

cd /usr/local/portage/x11-libs/libva
mv libva-0.31.0_p10.ebuild libva-0.31.0_p13.ebuild
Zwischen den Versionen sds10 und sds11 ist aber ein Verzeichnis im Source-Tree umbenannt worden, so dass
das Ebuild so noch nicht funktioniert. Es muss im Ebuild die Zeile 32 von

Code: Alles auswählen

mv b/src/* src
in

Code: Alles auswählen

mv b/va/* va
geändert werden. Anschließend ebuild digest:

Code: Alles auswählen

rm Manifest
ebuild libva-0.31.0_p13.ebuild digest
Die beiden Ebuilds sind natürlich nicht stable - daher in /etc/portage/package.keywords eintragen:
=x11-libs/xvba-video-0.6.11
=x11-libs/libva-0.31.0_p13

Und dann installieren:

Code: Alles auswählen

emerge -1 xvba-video
emerge -1 libva

Installieren der gepatchten MPlayer-Version

Das EBuild aus dem Arcon-Overlay hat sich leider allen Versuchen erfolgreich widersetzt,
eine gepatchte MPlayer-Version zusammenzubauen. Es baut zwar einen MPlayer aus
dem SVN, solange man die USE-flags xanim und real weglässt. Der Patch
mplayer-vaapi wird aber definitiv nicht angewendet, auch wenn er heruntergeladen wurde
und in den distfiles auftaucht.

Daher bleibt vorerst nur die manuelle Methode ohne Portage.
Um die Abhängigkeiten zu erfüllen, ist es wohl am besten, vorher einen möglichst
aktuellen Mplayer aus dem normalen Portage-Tree zu installieren.
Der kann während des manuellen Compilierens der gepachtchten Version auch installiert bleiben, da
das dort mitgelieferte Script kein make install ausführt sondern die Binaries im
Source-Code-Verzeichnis belässt.

Den Source-Tarball der neuesten gepatchten Mplayer-Version herunterladen und auspacken:

Code: Alles auswählen

cd /usr/local/src
wget http://www.splitted-desktop.com/~gbeauchesne/mplayer-vaapi/mplayer-vaapi-20100414-FULL.tar.bz2
tar xpjf mplayer-vaapi-20100414-FULL.tar.bz2
Und mit dem mitgelieferten Script bauen.

Code: Alles auswählen

cd mplayer-vaapi-20100414
./checkout-patch-build.sh
Binaries von mplayer und mencoder liegen anschließend im Unterverzeichnis
mplayer-vaapi .

Die kann man jetzt z.B. nach /usr/local/bin kopieren und von /usr/bin aus mit
einem anderen Namen darauf verlinken. Das hat den Vorteil, das der Mplayer aus dem Portage
installiert bleibt, so dass sich Portage nicht über fehlende Abhängigkeiten beschwert.

Code: Alles auswählen

cp /usr/local/src/mplayer-vaapi-20100414/mplayer-vaapi/mplayer /usr/local/bin
ln -s /usr/local/bin/mplayer /usr/bin/mplayer-vaapi
Oder man deinstalliert den normalen Mplayer und kopiert die gepatchten Binaries direkt
nach /usr/bin.

Ausprobieren

Wenn der Mplayer richtig gebaut wurde, sollte es jetzt einen neuen Videoausgabetreiber geben (letzte Zeile):

Code: Alles auswählen

mediabox / # mplayer-vaapi -vo help
MPlayer SVN-r31027-4.3.4 (C) 2000-2010 MPlayer Team
Available video output drivers:
	xv	X11/Xv
	gl_nosw	OpenGL no software rendering
	x11	X11 ( XImage/Shm )
	xover	General X11 driver for overlay capable video output drivers
	gl	OpenGL
	gl2	X11 (OpenGL) - multiple textures version
	dga	DGA ( Direct Graphic Access V2.0 )
	sdl	SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)
	fbdev	Framebuffer Device
	fbdev2	Framebuffer Device
	matrixview	MatrixView (OpenGL)
	v4l2	V4L2 MPEG Video Decoder Output
	xvidix	X11 (VIDIX)
	cvidix	console VIDIX
	null	Null video output
	mpegpes	MPEG-PES to DVB card
	yuv4mpeg	yuv4mpeg output for mjpegtools
	png	PNG file
	jpeg	JPEG file
	gif89a	animated GIF output
	tga	Targa output
	pnm	PPM/PGM/PGMYUV file
	md5sum	md5sum of each frame
>>>>>	vaapi	VA API with X11                                    <<<<<<<<<<<
Benutzt wird der Ausgabetreiber mit folgender Befehlzeile. Die Ausgabe erfolgt bei
den Radeon-Karten besser über OpenGL, daher muss DRI funktionieren, wie
schon am Anfang erwähnt. Ohne OpenGl werden teilweise B-Frames nicht richtig
dekodiert, so dass es immer mal kurz ruckelt.

Code: Alles auswählen

mplayer-vaapi -vo vaapi:gl -va vaapi Video_in_h264.mkv 
.
.
Matroska file format detected.
VIDEO:  [avc1]  1920x816  24bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
[vo_vaapi] Using OpenGL rendering                                                   <<<<<<<<<<<<<<<
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
[VD_FFMPEG] VA API accelerated codec.                                             <<<<<<<<<<<<<<<
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
==========================================================================
Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders
AUDIO: 48000 Hz, 2 ch, s16le, 1536.0 kbit/100.00% (ratio: 192000->192000)
Selected audio codec: [ffdca] afm: ffmpeg (FFmpeg DTS)
==========================================================================
AO: [oss] 48000Hz 2ch s16le (2 bytes per sample)
Starting playback...
[VD_FFMPEG] Trying pixfmt=1.
Movie-Aspect is 2.35:1 - prescaling to correct movie aspect.
VO: [vaapi] 1920x816 => 1920x816 H.264 VA API Acceleration                <<<<<<<<<<<<<<<
[vo_vaapi] Using 1:1 VA surface mapping
[VD_FFMPEG] XVMC-accelerated MPEG-2.
Die CPU-Auslastung bei 1080p-Material ist drastisch gesunken. Nicht gefallen hat mir bis
jetzt die Farbwiedergabe. Das ist alles irgendwie noch etwas zu bunt und hat bei manchen
Szenen einen Farbstich ins Grüne. Mal sehen was die Farb-Einstellungen des Radeon-Treibers
da noch machen können.

Alle weiteren Optionen des vaapi-Ausgabetreibers sind:

Code: Alles auswählen

-vo vaapi command line help:
Example: mplayer -vo vaapi:gl

Options:
  dm
    0: use least-recently-used VA surface
    1: identify VA surface with MPI index
    2: auto-detect use of direct surface mapping (default)
  deint (all modes > 0 respect -field-dominance)
    0: no deinterlacing (default)
    1: only show first field
    2: bob deinterlacing
  colorspace
    0: guess based on video resolution
    1: ITU-R BT.601 (default)
    2: ITU-R BT.709
  gl
    Enable OpenGL rendering
  reflect
    Enable OpenGL reflection effects
Über die Grafikkarte können folgende Codecs wiedergegeben werden:
* MPEG-2
* MPEG-4 ASP (DivX)
* H.263 (MPEG-4 short-video header variant)
* MPEG-4 AVC (H.264)
* Windows Media Video 9 (WMV3)
* Windows Media Video 9 Advanced (VC-1 Advanced profile)

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 01.06.2010, 20:34

Update:

Mit der vorige Woche erschienenen Version 10.5 des fglrx-Treibers ist
die Farbwiedergabe stabil und ohne Farbstiche.

Bei mir klappt jetzt die Wiedergabe fast aller H264-Videos prima, nur
bei einer Datei entstehen nach den Keyframes immer mal wieder
willkürlich bunte Klötzchen - also wohl noch Dekodierfehler.

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 08.01.2012, 22:23

Hier mal ein Update über den neuesten Stand:

fglrx

Die aktuelleste Version des AMD-Treibers ist x11-drivers/ati-drivers-11.12 .
Die Einrichtung ist im Thread weiter unten beschrieben.
Normalerweise reicht inzwischen aber das emergen des Ebuilds (wichtig: nach jedem Kernel-Update)
und ein anschließendes

Code: Alles auswählen

eselect opengl set ati
aus.

Bei einer Neuinstallation oder sonstigem Bedarf nach einer frischen Konfiguration erfüllt

Code: Alles auswählen

aticonfig --initial
seinen Zweck. Die meisten Sachen macht der Xorg-Server inzwischen ja automatisch.

Ist das USE-Flag "qt4" gesetzt, wird das grafische Konfigurations-Tool für den Treiber
mitkompiliert. Das Binary heißt /opt/bin/amdcccle - gut zu wissen, denn es wird
zwar ein Eintrag in den Startmenüs der Desktops erzeugt, aber das Tools braucht Root-Rechte,
um seine Einstellungen speichern zu können.

Noch wichtig - der fglrx unterstützt kein Kernel Based Modesetting (KMS), die entsprechende
Option in der Kernel-Konfiguration CONFIG_DRM_RADEON_KMS
(unter Device Drivers > Grafics Support > Direct Rendering Manager > ATI Radeon > Enable modesetting on radeon by default

sollte also nicht aktiviert sein und auch nicht auf der Kernel-Commandline erzwungen werden.

libva

Die libva-Bibliothek ist inzwischen im normalen Gentoo-Tree als Ebuild x11-libs/libva vorhanden.
Die aktuelle Stable-Version ist 1.0.15 .
Welche Grafikkarten unterstützt werden, bestimmt die Variable "VIDEO_CARDS", die für den
Xorg-Server ohnehin in der /etc/make.conf gesetzt sein sollte.
Möglich sind die Werte:
VIDEO_CARDS="fglrx" - VAAPI über xvba des fglrx-Treibers von AMD
VIDEO_CARDS="intel" - VAAPI über Open-Source-Treiber von Intel
VIDEO_CARDS="nvidia" - VAAPI über VDPAU des proprietären Nvidia-Treibers .

xvba
Die xvba-Bibliothek findet man auch im normalen Gentoo-Tree als Ebuild x11-libs/xvba-video .
Die aktuellen Stable-Versionen sind 0.7.8 und 0.8.0 .
USE-Flags sind keine zu beachten.

Der Unterschied:
0.7.8 ist die letzte Closed-Source-Variante von Splittet-Desktop.
0.8.0 wurde unter der GPLv2 als Open-Source freigegeben und soll angeblich laut
http://www.phoronix.com/scan.php?page=n ... &px=OTU2Ng
etwas weniger Funktionen als die Closed-Source-Variante enthalten.
Ich habe beide Versionen mit dem ATI-Treiber 11.12 auf meinem RS780G ausprobiert und
keine Unterschiede feststellen können.

mplayer
Ein funktionierendes EBuild mit den VAAPI-Patches für den Mplayer bekommt man inzwischen
aus dem xhub Overlay.

Also Overlay hinzufügen mit

Code: Alles auswählen

layman -a xhub
Um nur das eine EBuild aus dem Overlay zu nutzen, sollte das Verzeichnis der Layman-Overlays
nicht in der make.conf auftauchen. Dort besser nur den eigenen Overlay-Tree zum Beispiel unter

Code: Alles auswählen

PORTDIR_OVERLAY="/usr/local/portage"
eintragen und von dort aus auf das Ebuild im Layman-Overlay verlinken. Also:

Code: Alles auswählen

cd /usr/local/portage
mkdir media-video
cd media-video
ln -s /usr/local/portage/layman/xhub/media-video/mplayer mplayer
Die zu installierende Version in der /etc/portage/package.keywords freigeben:
=media-video/mplayer-1.0_rc4_p20110322-r50
Das USE-Flag für VA-API in der /etc/portage/package.use aktivieren:
media-video/mplayer vaapi
Und installieren:

Code: Alles auswählen

emerge mplayer
Ausprobieren mit

Code: Alles auswählen

mplayer -fs -vo vaapi:gl -va vaapi Video_in_h264.mkv
Der aktuelle fglrx kann H264-Material nur bis zum Profil 4.1 (also Material von Bluray)
verarbeiten. Stärker komprimierte Videos werden angenommen und auch wiedergegeben,
das Ergebnis reicht aber von einwandfrei bis Klötzchensalat - je nach den wirklich
verwendeten H264-Features. Der Treiber sagt einem das auch:

Code: Alles auswählen

Starte Wiedergabe...
Increasing filtered audio buffer size from 0 to 65536
Unsupported PixelFormat 61
[VD_FFMPEG] Versuche pixfmt=1.
[ffmpeg] aspect_ratio: 0.000000
VDec: vo config request - 1920 x 800 (preferred colorspace: H.264 VA-API Acceleration)
Trying filter chain: vo
VDec: using H.264 VA-API Acceleration as output csp (no 0)
Film-Aspekt ist 2.40:1 - Vorskalierung zur Korrektur der Seitenverhältnisse.
VO Config (1920x800->1920x800,flags=1,'MPlayer',0x56410030)
VO: [vaapi] 1920x800 => 1920x800 H.264 VA-API Acceleration  [fs]
VO: Description: VA API with X11
VO: Author: Gwenole Beauchesne <gbeauchesne@splitted-desktop.com>
[VD_FFMPEG] XVMC-beschleunigtes MPEG-2.
*** [vo] Direct Rendering mp_image_t, 1920x802x0bpp RGB packed, 0 bytes
xvba_video: driver does not support H.264 content over HP@L4.1. Please upgrade.  <<<<<<<<<<<<<<<<<<<
[h264 @ 0xaa95a0]no picture
*** [vo] Direct Rendering mp_image_t, 1920x802x0bpp RGB packed, 0 bytes
[h264 @ 0xaa95a0]no picture
*** [vo] Direct Rendering mp_image_t, 1920x802x0bpp RGB packed, 0 bytes
Unicode font: 5179 glyphs.
Unicode font: 5179 glyphs.
A:   0.3 V:   0.0 A-V:  0.337 ct:  0.000   0/  0 ??% ??% ??,?% 2 0 
*** [vo] Direct Rendering mp_image_t, 1920x802x0bpp RGB packed, 0 bytes
Wichtige Erkenntnis beim Probieren mit den hier gezeigten Einstellungen:
Die Beschleunigung funktioniert nur, wenn man den Mplayer mit der Option -fs
direkt im Vollbild-Modus startet.
Im normalen Fenster-Modus läuft das Video langsamer als ohne Hardware-Beschleunigung, obwohl
laut Ausgabe des Mplayers das Hardware-Rendering auch in diesem Fall benutzt wird.
Auch nachträgliches Umschalten in den Vollbild-Modus mit dem Hotkey "F" ändert daran nichts mehr.
Auch das Wegschalten aus dem Vollbild-Modus mit "F" führt sofort zu der o.g. Dia-Show.

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 07.04.2012, 14:02

Nachtrag zum Mplayer-Ebuild

Alle Mplayer-Ebuilds (die im regulären Tree als auch aus dem xhub-Overlay) haben das
Useflag dvb, um die Wiedergabe von DVB-Daten aus TV-Karten via
mplayer dvb://[sendername aus der channels.conf] zu aktivieren.

Als Abhängigkeit ist das paket linuxtv-dvb-headers angegeben.

Dieses wurde am 15.02.2012 aus dem Verzeichnis media-tv in das Verzeichnis virtual
des Portage-Trees verschoben. Die Mplayer-Ebuilds im regulären Portage-Tree wurden
selbtverständlich angepasst, dass Ebuild im xhub-Overlay aber nicht. Das muss man vorerst selbst tun:

Also in /usr/local/portage/layman/xhub/media-video/mplayer/mplayer-1.0_rc4_p20110322-r50.ebuild
die Zeile

Code: Alles auswählen

dvb? ( media-tv/linuxtv-dvb-headers )
in

Code: Alles auswählen

dvb? ( virtual/linuxtv-dvb-headers )
ändern und das ebuild mplayer-1.0_rc4_p20110322-r50.ebuild digest nicht vergessen.

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 29.12.2012, 23:43

Update:

Für ATI-Grafikkarten der Serien HD2000, HD3000 und HD4000 den Hinweis zur
fglrx-Version in folgendem Thread beachten:
viewtopic.php?f=15&t=299#p2721

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 30.12.2012, 01:17

Stand 12/2012

fglrx

Die aktuelleste stable-Version des AMD-Treibers ist x11-drivers/ati-drivers-12.11beta .
Das neueste testing-Ebuild ist x11-drivers/ati-drivers-12.11beta11 .
Für die Grafikkarten der Serien HD2000, HD3000 und HD4000 siehe 1 Beitrag weiter unten.

libva

Die aktuelle Stable-Version ist nach wie vor x11-libs/libva-1.0.15 .
Im Testing-Tree ist mittlerweile x11-libs/libva-1.1.0 verfügbar.
Es muss weiterhin Variable "VIDEO_CARDS" in der /etc/make.conf gesetzt werden - s.u.

Außerdem sollte für AMD-Grafikkarten das USE-Flag opengl gesetzt sein - da die
beschleunigte Video-Wiedergabe über den OpenGL-Ausgabetreiber erfolgt.

xvba

Die aktuelle Stable-Version ist nach wie vor x11-libs/xvba-video-0.8.0 .
Im Testing-Tree ist x11-libs/xvba-video-0.8.0-r1 verfügbar.

Das USE-Flag opengl sollte hier ebenfalls gesetzt sein - siehe libva .

Configure-Error bei emerge xvba-video-0.8.0-r1

Wenn man das Ebuild x11-libs/xvba-video-0.8.0-r1 zusammen mit einer
fglrx-Version kleiner als x11-drivers/ati-drivers-12.11beta11 installieren will,
dann kommt es zu einem Fehler bei der Ausführung des Configure-Scripts.

Ein Bug-Report existiert bereits hier https://bugs.gentoo.org/show_bug.cgi?id=444528 .
Es fehlt die Datei amdxvba.h. Diese gehört zum von AMD bereitgestellten XvBA-SDK.
Das neueste Ebuild des fglrx wurde dahingehend gepatcht, dass es das XvBA-SDK mit herunterlädt
und installiert.

Wenn man die neueste Version des fglrx aus dem Testing-Tree nicht installieren will oder kann (s.o.), dann muss man
das XvBA-SDK seperat installieren. Das geht am saubersten mit einem Ebuild aus dem zugaina-Overlay, welches
man sich in sein eigenes lokales Overlay-Verzeichnis laden sollte, da es noch geändert werden muss.

Code: Alles auswählen

cd /usr/local/portage
mkdir x11-libs
cd x11-libs
mkdir xvba-video
cd xvba-video
wget http://data.gpo.zugaina.org/arcon/x11-libs/xvba-sdk/xvba-sdk-0.74_p404001.ebuild
Die Versionsnummer passt noch, aber das Download-Verzeichnis für den Source-Code hat sich geändert.

Daher muss im EBuild in der Zeile 8 als URL eingetragen werden:

Code: Alles auswählen

BASE_URI="http://developer.amd.com/wordpress/media/2012/10/"
Das obligatorische

Code: Alles auswählen

ebuild xvba-sdk-0.74_p404001.ebuild digest 
ausführen und in der /etc/portage/package.keywords die Installation des EBuilds aus dem Testing-Tree erlauben:

Code: Alles auswählen

# es gehört bei der Open-Source-Version von xvba
# auch ein SDK dazu, für das es im regulären Tree
# kein Ebuild gibt. Es wurde beim ati-drivers-12.11_beta11 ebuild
# als Patch hinzugefügt - in der Version 12.6 fehlt es aber noch
x11-libs/xvba-sdk
Anschließend lassen sich erst x11-libs/xvba-sdk und dann x11-libs/xvba-video emergen:

Code: Alles auswählen

emerge -1 xvba-sdk
emerge -1 xvba-video

tel
Beiträge:94
Registriert:28.09.2007, 20:35

Re: Video-Wiedergabe mit ATI-Grafikkarte beschleunigen

Beitrag von tel » 31.12.2012, 00:17

Stand der Wiedergabeprogramme

Mplayer
Weder beim MPlayer noch beim MPlayer2 ist derzeit in den Standardversionen VAAPI-Unterstützung enthalten.
Es gibt einen eigenen GIT-Zweig (https://gitorious.org/vaapi/mplayer) mit einer mplayer-vaapi Version, die ich
aber noch nicht ausprobiert habe.

VLC
Der VLC enthält VAAPI-Unterstützung im derzeit stabilen Ebuild media-video/vlc-2.0.3 - das zu aktivierende
USE-Flag ist vaapi .
Den VLC konnte ich unter der Verwendung der im letzten Beitrag genannten xvba- und libva-Versionen compilieren.
Allerdings kommt es beim Versuch, ein Video mit Hardware-Decoding abzuspielen, zu einem Segmentation-Fault.

Xine
Die aktuelle Version von Xine im Stable-Tree media-libs/xine-lib-1.2.1-r1 enthält keine VAAPI-Unterstützung.
Es gibt einen GIT-Zweig (https://github.com/huceke/xine-lib-vaapi) dazu - Versuche damit haben bei mir
aber bis jetzt zu keinem Erfolg geführt.

XBMC
XBMC enthält seit der Version 11.0 standardmäßig VAAPI-Support. Das USE-Flag lautet ebenfalls vaapi .
Sowohl in Version 11.0 als auch in der derzeit noch im Testing-Tree befindlichen Version media-tv/xbmc-12.0_rc2
hat das Hardware-Decoding auf Anhieb funktioniert. Es werden bis auf wenige Ausnahmen alle H264-Videos einwandfrei
wiedergegeben, auch solche, die beim Abspielen mit Mplayer als H264-Profil > 4.1 abgelehnt werden.

Daher ist zur Zeit wohl XBMC, auch wenn es vom Umfang mehr als nur ein Video-Player ist, die beste Empfehlung,
um VAAPI-beschleunigte Videowiedergabe zu nutzen.

Antworten