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:
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.
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.
Um die entsprechenden Geräte im /dev-Verzeichnis zu erstellen, führe ein
make device
im Verzeichnis
svgalib_helper als
root
aus.
Verschiebe das Verzeichnis svgalib_helper in das vidix-Unterverzeichnis des MPlayer-Quellbaums.
Entferne den Kommentar vor der CFLAGS-Zeile, die "svgalib_helper" enthält aus vidix/Makefile.
Compiliere erneut.
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.
Matrox G200, G400, G450 und G550 sollen funktionieren.
Der Treiber unterstützt Videoequalizer und sollte fast genauso schnell wie der Matrox-Framebuffer sein.
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.
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.
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