7.15. VIDIX
Zurück | Kapitel 7. Videoausgabegeräte | Weiter

## 7.15. VIDIX

EINLEITUNG. VIDIX ist die Abkürzung für VIDeo Interface für *niX (Video-Schnittstelle für *n*x). VIDIX wurde entworfen, um eine Schnittstelle für schnelle Userspacetreiber für Grafikkarten zur Verfügung zu stellen, so wie es mga_vid für Matrox-Karten tut. VIDIX ist ebenfalls sehr portabel.

Diese Schnittstelle wurde als Versuch entworfen, den vorhandenen Schnittstellen für Videobeschleunigung (mga_vid, rage128_vid, radeon_vid, pm3_vid) ein einheitliches Dach zu geben. Sie stellt einen einheitlichen Highlevel-Zugang zu BES- und OV-Chips zur Verfügung (BackEnd Scaler und Video Overlays). Sie stellt keine Lowlevel-Funktionen für z.B. Grafikserver zur Verfügung. (Ich möchte nicht mit den X11-Leuten in Sachen Grafikmodusumschaltung konkurrieren.) Das Ziel dieser Schnittstelle liegt also einfach darin, die höchstmögliche Geschwindigkeit bei der Videowiedergabe zu erreichen.

VERWENDUNG

- Du kannst den eigenständigen Videotreiber benutzen: `-vo vidix` Dieser Treiber wurde als das X11-Frontend für die VIDIX-Technologie entwickelt. Er benötigt dementsprechend einen X-Server und funktioniert auch nur unter X. Beachte, dass der Pixmap-Cache korrumpiert werden kann, weil der Treiber unter Umgehung des X-Treibers direkt auf die Hardware zugreift. Du kannst das dadurch verhindern, dass du die von X verwendete Menge des Grafikspeichers verringerst. Benutze dafür die Option "VideoRam" in der "device"-Sektion der `XF86Config`. Du solltest da die installierte Menge Grafikspeicher minus 4MB eintragen. Wenn du über weniger als 8MB Grafikspeicher verfügst, dann solltest du stattdessen die Option "XaaNoPixmapCache" in der "screen"-Sektion verwenden.

- Es gibt einen VIDIX-Treiber für die Konsole: `-vo cvidix`. Dieser benötigt für die meisten Karten einen funktionierenden und initialisierten Framebuffer (oder du wirst stattdessen den Bildschirm in Unordnung bringen) und wirst einen Effekt ähnlich wie mit `-vo mga` oder `-vo fbdev` bekommen. nVidia-Karten sind dagegen in der Lage, wirklich grafisches Video auf einer echten Text-Konsole auszugeben. Im Abschnitt nvidia_vid wirst du mehr Informationen dazu finden. Um Text an den Rändern und den blinkenden Cursor loszuwerden, probiere etwas wie den folgenden Befehl:

      setterm -cursor off > /dev/tty9

  (welcher davon ausgeht, dass `tty9` bis dahin ungenutzt ist). Wechsle dann zu `tty9`. Andererseits sollte dir `-colorkey 0` ein Video liefern, das im "Hintergrund" läuft; das hängt jedoch davon ab, dass die colorkey-Funktionalität korrekt funktioniert.

- Du kannst auch das VIDIX-Untergerät verwenden, das bei vielen Treibern zur Verfügung steht: `-vo vesa:vidix` (nur unter Linux) und `-vo fbdev:vidix`

Es ist in der Tat nicht wichtig, welcher Videoausgabetreiber mit VIDIX verwendet wird.

ANFORDERUNGEN

- Die Grafikkarte sollte sich gerade im Grafikmodus befinden (ausser nVidia-Karten mit den `-vo cvidix` Ausgabe-Treibern).

- MPlayers Videoausgabetreiber sollte den aktiven Videomodus kennen und in der Lage sein, dem VIDIX-Untergerät ein paar Charakteristika des X-Servers mitzuteilen.

BEDIENUNGSMETHODEN. Wenn VIDIX als Subgerät (`-vo vesa:vidix`) benutzt wird, dann wird die Konfiguration des Videomodus vom Videoausgabegerät erledigt (kurz vo_server). Deswegen kannst du für MPlayer die gleichen Kommandozeilenparameter wie für vo_server verwenden. Zusätzlich ist die Option `-double` als global sichtbarer Parameter verfügbar. (Ich empfehle diese Option zumindest bei VIDIX und ATI-Karten.) `-vo xvidix` erkennt momentan die folgenden Optionen: `-fs -zoom -x -y -double`.

Du kannst den VIDIX-Treiber auch direkt als drittes Teilargument auf der Kommandozeile angeben:

    mplayer -vo xvidix:mga_vid.so -fs -zoom -double Datei.avi

oder

    mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 Datei.avi

Das ist allerdings gefährlich, und du solltest das lieber nicht tun. Hierbei wird die Verwendung des angegebenen Treibers erzwungen, und das Resultat ist unklar (dein Computer könnte sogar abstürzen). Du solltest das wirklich NUR DANN tun, wenn du absolut sicher bist, dass es funktioniert und MPlayer es nicht eh schon automatisch auswählt. Berichte den Entwicklern von deinen Erfahrungen. Die korrekte Art, VIDIX zu benutzen, ist ohne das dritte Teilargument, sodass MPlayer automatisch den richtigen Treiber aussucht.

Da VIDIX direkten Zugriff auf die Hardware benötigt, musst du MPlayer entweder als `root` starten oder der Programmdatei das SUID-Bit setzen (WARNUNG: Das ist ein Sicherheitsrisiko!). Alternativ kannst du auch spezielle Kernelmodule benutzen:

1. Lade dir die Entwicklerversion der svgalib herunter (z.B. 1.9.17), ODER lade dir eine von Alex speziell für die Benutzung mit MPlayer modifizierte Version (die nicht die svgalib-Sourcen zum Compilieren benötigt) hier herunter.

2. Compiliere das Modul im `svgalib_helper`-Verzeichnis (das im Verzeichnis `svgalib-1.9.17/kernel/` gefunden werden kann, wenn du die Sourcen von der svgalib-Seite heruntergeladen hast), und lade es mit insmod.

3. Um die entsprechenden Geräte im `/dev`-Verzeichnis zu erstellen, führe ein

       make device

   im Verzeichnis `svgalib_helper` als `root` aus.

4. Verschiebe das Verzeichnis `svgalib_helper` in das `vidix`-Unterverzeichnis des MPlayer-Quellbaums.

5. Entferne den Kommentar vor der CFLAGS-Zeile, die "svgalib_helper" enthält aus `vidix/Makefile`.

6. Compiliere erneut.

### 7.15.1. ATI-Karten

Momentan werden die meisten ATI-Karten unterstützt, von der Mach64 bis hin zur neuesten Radeon.

Es gibt zwei compilierte Binaries: `radeon_vid` für Radeons und `rage128_vid` für Rage128-Karten. Du kannst entweder eine der beiden erzwingen oder das VIDIX-System automatisch alle verfügbaren Treiber ausprobieren lassen.

### 7.15.2. Matrox-Karten

Matrox G200, G400, G450 und G550 sollen funktionieren.

Der Treiber unterstützt Videoequalizer und sollte fast genauso schnell wie der Matrox-Framebuffer sein.

### 7.15.3. Trident-Karten

Es gibt einen Treiber für den Trident Cyberblade/i1-Chipsatz, der auf VIA Epia-Mainboards eingesetzt wird.

Der Treiber wurde geschrieben und wird weiterentwickelt von Alastair M. Robinson.

### 7.15.4. 3DLabs-Karten

Auch wenn es einen Treiber für 3DLabs GLINT R3-Chips und Permedia3-Chips gibt, so hat noch niemand diese getestet. Feedback wird deswegen gern gesehen.

### 7.15.5. nVidia-Karten

Ein einmaliges Feature des nvidia_vid-Treibers ist seine Fähigkeit, Video auf einfacher, purer Textkonsole darzustellen - ohne Framebuffer oder X magic oder was auch immer. Zu diesem Zweck müssen wir die `cvidix`-Videoausgabe verwenden, wie folgendes Beispiel zeigt:

    mplayer -vo cvidix example.avi

### 7.15.6. SiS-Karten

Dies ist ein sehr experimenteller Code, ähnlich nvidia_vid.

Er wurde auf SiS 650/651/740 getestet (die verbreitetsten Chipsets in den SiS-Versionen der Boxen von "Shuttle XPC"-Barebones)

Berichte erwartet!

Zurück | Nach oben | Weiter
7.14. X11 | Zum Anfang | 7.16. DirectFB