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