Softdevice-plugin
Description
The softdevice plugin is a software MPEG-2 decoder and is used by VDR as an output device. Therefore a FF DVB card is not needed. The output comes to the monitor or TV-out of the graphics card. In combination with the streamdev-plugin, a cheap and quiet client could be build.
In contrast to the hardware MPEG decoder of the FF DVB card, the softdevice has no problem decoding HDTV material (with enough CPU power).
The plugin gets the video stream decodes, scales and converts it to the RGB format. The Video is displayed on the Framebuffer in one of several ways:
- Quasi hardware decoding through XvMC (XVideo Motion Compensation) with low CPU load
This is supported with some NVidia graphics cards (GF4MX400 and also >= GF5), S3 Unichrome (VIA Epia Boards) and possibly other. (Option XvMC in XF86config)
- Software decoding. With overlay output via Xv (XVideo).
Works with all graphic cards (Option v4l in XF86config)
- Decoding, scaling, YUV2RGB in software. Output through VESA framebuffer (very high CPU load)
Hardware requirements
Here are some example configurations (please supplement):
- PIII 600MHz, 128MB, Matrox G450: ca. 50% load, smooth
- K6/2 450MHz, 128MB, Matrox G200: 100% load, very jerky
- Athlon 800 Mhz, 512MB, ATI Radeon VE, jerky
- Athlon 1100 Mhz,512MB, Nvidia GF2MX200 :ca.50% load, smooth
- Celeron 1100 MHz, 256 Mb, Matrox G450: ca. 50-60% load, little jerky
Ideal are graphic cards, which can do some of the decoding work. There are some cards which can do IDCT, MC and BES in hardware. Sadly, the manufacturers seldom give information on how to use these features.
One exception are graphic cards from Matrox, expecially the G200, G400 and G450. These are great cards for this plugin.
Software requirements
- FFMPEG
Installation
Basic (including FB/Xv support)
FFMPEG
cd $SOURCEDIR tar xvzf ffmpeg-<VERSION>.tar.gz cd ffmpeg-<VERSION> ./configure --prefix=/usr/local \ --enable-shared make make install ldconfig
For deinterlacing pp-filters in recent plugin versions, FFMPEG needs some additional options at compile time
cd $SOURCEDIR tar xvzf ffmpeg-<VERSION>.tar.gz cd ffmpeg-<VERSION> ./configure --enable-shared \ --enable-pp \ --enable-gpl cd libavcodec/libpostproc make mkdir -p /usr/local/include/postproc install -m 644 postprocess.h /usr/local/include/postproc/postprocess.h cp libpostproc.a /usr/local/lib cd - make make install ldconfig
DirectFB support
DirectFB
cd $SOURCEDIR tar xvzf DirectFB-<VERSION>.tar.gz cd DirectFB-<VERSION> ./configure --help (für den passenden driver ???) ./configure --prefix=/usr/local \ --with-gfxdrivers=??? make make install
DFB++
cd $SOURCEDIR tar xvzf DFB++-<VERSION>.tar.gz cd DFB++-<VERSION> ./configure --prefix=/usr/local make make install
Check the HOWTO for enabling hardware MPEG-2 decoding support in motherboards with CLE266 chipset [1]. This reduces CPU load from ~70% to ~30% on 1GHz EPIA board.
Vidix support
Vidix
cd $SOURCEDIR tar xvzf vidix-cvs.tar.gz cd vidix ./configure --prefix=/usr/local make make install ldconfig
Im Makefile muss eingestellt werden, welche Treiber-Variante man benutzen will und wo sich die benötigten Bibliotheken / Headerfiles befinden. Das Framebufferdevice muss existieren und ansprechbar sein. Dazu muss entweder beim Systemstart der VESA-Framebuffer aktiviert werden oder bei unterstützten Grafikkarten das entsprechende Framebuffer Modul geladen sein. Beim Kernel 2.4 und einer Matrox-Karte ist das z.B. das Modul matroxfb-base (modprobe matroxfb-base) Mit fbset wird dann eine passende Auflösung eingestellt, z.B. 768x576 bei 100Hz und 32bit Farbtiefe. Ein entsprechender Eintrag muss in der Datei /etc/fb.modes existieren.
Options
Option | Description |
---|---|
XV_SUPPORT=1 | XV support by Stefan Lucke |
DFB_SUPPORT=1 | DFB is highly experimental |
FB_SUPPORT=1 | FB is unaccelerated and should work with all FBs with 16bit color depth |
VIDIX_SUPPORT=1 | Vidix support by Vadim Catana |
LIBXDPMS_SUPPORT = 1 | Set this if you want to use DPMS |
Configuration
Parameter
Parameter (short) | Parameter (long) | Description |
---|---|---|
-ao alsa:devicename | ALSA output device | |
-vo xv: | X11-Xv output device | |
-vo xv:aspect=wide | 16:9 aspect ration (1024x576) | |
-vo xv:aspect=normal | 4:3 aspect ration (768x576) | |
-vo fb: | Framebuffer output device | |
-vo dfb: | DirectFB output device | |
-vo vidix: | Vidix output device |
Problems
CVS
cvs -z3 -d:pserver:anonymous@cvs.softdevice.berlios.de:/cvsroot/softdevice co softdevice
Links
[1] | http://softdevice.berlios.de/ | Plugin homepage |
[2] | http://www.lucke.in-berlin.de | Plugin homepage (Xv) |
[3] | http://www.k13zoo.de/vdr/ | Plugin homepage |
[4] | http://www.mplayerhq.hu | MPlayer homepage |
[5] | http://www.directfb.org | DirectFB homepage |
[6] | http://www.linuxtv.org/libsoftmpeg | Libsoftmpeg homepage |
[7] | http://vidix.sourceforge.net | VIDIX is (VID)eo (I)nterface for *n(iX) |
[8] | http://ffmpeg.sourceforge.net | FFMPEG homepage |