Ubuntu für VAAPI Support vorbereiten

linux vaapi 263x300 - Ubuntu für VAAPI Support vorbereitenEin einem älteren Artikel haben wir uns den MPlayer inkl. SMplayer und VDPAU Support aus einem extra Rebository installiert. Seit Ubuntu 9.10 benötigen wir keine zusätzliche Quellen, da der Nvidia-185-Treiber im originalen Karmic-Rebo zufinden ist. Mittlerweile gibt es auch einen weiteren Hardwarebeschleuniger, VAAPI verwendet die Grafikkarte zum Dekodieren, Deinterlacen und Skalieren von Videos. VDPAU wird in diesem Fall als „backend“ von VAAPI genutzt, das heißt jede Software die VAAPI unterstüzt, unterstüzt VDPAU. Bevor wir aber den VLC media player oder MPlayer mit VAAPI Support kompilieren können müssen wir unser System erstmal für VAAPI vorbereiten.

Zuerst vergewissern wir uns das der 185er NVIDIA Treiber installiert ist. 🙄

aptitude install nvidia-185-kernel-source nvidia-185-libvdpau nvidia-185-libvdpau-dev nvidia-settings nvidia-glx-185

Jetzt installieren wir libva (VAAPI)…

cd /usr/src
wget 
tar xvfz libva-latest.tar.gz
cd libva-0.31.0
aptitude install dpkg-dev fakeroot autotools-dev libdrm-dev automake1.9 libtool cdbs debhelper x11proto-xext-dev libxext-dev libxfixes-dev
dpkg-buildpackage -rfakeroot -uc -us
cd ..
dpkg -i libva*.deb

…ergänzend zu libva müssen wir vdpau-video installieren.

wget 
tar xvfz vdpau-video-latest.tar.gz
cd vdpau-video-0.5.2
make clean
./configure
make && make install
ldconfig

vainfo
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple            : VAEntrypointVLD
VAProfileMPEG2Main              : VAEntrypointVLD
VAProfileH264Main               : VAEntrypointVLD
VAProfileH264High               : VAEntrypointVLD
VAProfileVC1Simple              : VAEntrypointVLD
VAProfileVC1Main                : VAEntrypointVLD
VAProfileVC1Advanced            : VAEntrypointVLD

Nun die Audio- und Video-Codecs über FFmpeg.

cd /usr/src
aptitude install subversion libfaac-dev libmp3lame-dev
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
svn update

Für FFmpeg benötigen wir noch den h264.patch. Download

patch -p1 < h264.patch

Unser Patch wird beim editieren des Makefile’s auf Fehler laufen, daher müssen wir /usr/src/ffmpeg/libvacodec/Makefile per Hand editieren, wir ersetzen

OBJS-$(CONFIG_H261_DECODER)            += h261dec.o h261.o \
mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H261_ENCODER)            += h261enc.o h261.o             \
mpegvideo_enc.o motion_est.o \
ratecontrol.o mpeg12data.o   \
mpegvideo.o
OBJS-$(CONFIG_H263_DECODER)            += h263dec.o h263.o h263_parser.o \
mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H263_VAAPI_HWACCEL)      += vaapi_mpeg4.o
OBJS-$(CONFIG_H263I_DECODER)           += h263dec.o h263.o \
mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H263_ENCODER)            += mpegvideo_enc.o motion_est.o      \
ratecontrol.o h263.o mpeg12data.o \
mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H264_DECODER)            += h264.o h264idct.o h264pred.o \
h264_parser.o cabac.o        \
mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H264_ENCODER)            += h264enc.o h264dspenc.o

mit

OBJS-$(CONFIG_H261_DECODER)            += h261dec.o h261.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H261_ENCODER)            += h261enc.o h261.o mpegvideo_enc.o motion_est.o ratecontrol.o mpeg12data.o mpegvideo.o
OBJS-$(CONFIG_H263_DECODER)            += h263dec.o h263.o h263_parser.o mpeg12data.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H263_VAAPI_HWACCEL)      += h263dec.o h263.o h263_parser.o mpeg12data.o mpegvideo.o error_resilience.o vaapi.o vaapi_mpeg4.o
OBJS-$(CONFIG_H263I_DECODER)           += h263dec.o h263.o mpeg12data.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H263_ENCODER)            += mpegvideo_enc.o motion_est.o ratecontrol.o h263.o mpeg12data.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H263P_ENCODER)           += mpegvideo_enc.o motion_est.o ratecontrol.o h263.o mpeg12data.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H264_DECODER)            += h264.o h264idct.o h264pred.o h264_parser.o cabac.o mpegvideo.o error_resilience.o
OBJS-$(CONFIG_H264_ENCODER)            += h264enc.o h264dspenc.o
OBJS-$(CONFIG_H264_VAAPI_HWACCEL)      += h264.o h264idct.o h264pred.o h264_parser.o cabac.o mpegvideo.o error_resilience.o vaapi.o vaapi_h264.o
OBJS-$(CONFIG_H264_VDPAU_DECODER)      += vdpau.o h264.o h264idct.o h264pred.o h264_parser.o cabac.o mpegvideo.o error_resilience.o

Jetzt geht es für FFmpeg in den Endspurt.

cd /usr/src/ffmpeg
./configure --enable-gpl --enable-postproc --enable-pic --enable-shared --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-pthreads --disable-vdpau --enable-vaapi

Achtung! Nach dem ./configure… muss h264_vaapi unter hw_accel zusehen sein. Zu guter Letzt…

make && make install
cp /usr/src/ffmpeg/libavcodec/vaapi.h /usr/include/libavcodec/
ldconfig
ffmpeg

FFmpeg version SVN-r20545, Copyright (c) 2000-2009 Fabrice Bellard, et al.
built on Nov 18 2009 10:57:58 with gcc 4.4.1
configuration: --enable-gpl --enable-postproc --enable-pic --enable-shared --enable-libmp3lame --enable-libfaac --enable-nonfree --enable-pthreads --disable-vdpau --enable-vaapi
libavutil     50. 4. 0 / 50. 4. 0
libavcodec    52.41. 0 / 52.41. 0
libavformat   52.39. 2 / 52.39. 2
libavdevice   52. 2. 0 / 52. 2. 0
libswscale     0. 7. 1 /  0. 7. 1
libpostproc   51. 2. 0 / 51. 2. 0
At least one output file must be specified

Sooooo, unser Ubuntu wäre dann hiermit für VAAPI vorbereitet. Jetzt können wir entweder mit dem VLC media Player oder dem MPlayer inkl. SMPlayer Front-End fortfahren.

Anleitung:
Ubuntu – VLC media player mit VAAPI Unterstützung
Ubuntu – MPlayer inkl. SMPlayer mit VAAPI Unterstützung

.

Veröffentlicht von

_nico

Mac-User aus Leidenschaft, Blogger seit Oktober 2009, 88er Baujahr, technikaffin. Ich fühle mich aber nicht nur auf Apple'schen Betriebssystemen zu Hause, alles was eine Shell hat, interessiert mich besonders! Ihr findet mich auch auf Twitter und Google+.

5 Gedanken zu „Ubuntu für VAAPI Support vorbereiten“

  1. ein paar hw infos zu deiner kiste waeren gut. ich moechte gerne fuer intel clarkdale va-api support bauen, da ist mir der nvidia treiber erstmal rille (nehme ich an).
    beste gruesse,

    stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert