Allgemein: | |||
x11 | X11 mit optionaler SHM Erweiterung | ||
xv | X11, unter Verwendung oder Overlays mit der Xvideo Erweiterung (hardwarehäßiges YUV & Scaling) | ||
gl | OpenGL Renderer, funktioniert nur mit:
| ||
dga | X11 DGA Erweiterung | ||
fbdev | Ausgabe zu allgemeinen Framebuffern | ||
svga | Ausgabe zu SVGAlib | ||
sdl |
1.1.7: unterstützt Software-Scaling1.1.8: unterstützt Xvideo (hardaremäßiges Scaling/Vollbild)1.2.0: unterstützt AAlib (-vo aa ist sehr empfohlen, siehe unten!) | ||
ggi | vergleichbar mit SDL | ||
aa | Textmodus-Rendering mit AAlib | ||
vesa | Ausgabe durch das VESA BIOS | ||
Kartenspezifisch: | |||
mga | Matrox G200/G400 Hardware-YUV-Overlay via mga_vid-Device | ||
xmga | Matrox G200/G400 Overlay (mga_vid) in X11 Fenster (Xv Emulation auf X 3.3.x !) | ||
syncfb | Matrox G400 YUV Unterstützung auf Framebuffer (verwende besser mga/xmga) | ||
3dfx | Voodoo 3 / Banshee Hardware YUV (/dev/3dfx) Unterstützung (noch nicht getestet, möglicherweise keine Funktion) | ||
tdfxfb | Voodoo 3 / Banshee Hardware YUV auf tdfx-Framebuffer (funkioniert!) | ||
Speziell: | |||
png | PNG-Datei Ausgabe (-z Parameter um die Kompression einzustellen) | ||
pgm | PGM-Datei Ausgabe (für Testzwecke oder ffmpeg-Encoding) | ||
md5 | MD5sum Ausgabe (für MPEG Tests) | ||
odivx | OpenDivX AVI-Datei Ausgabe (-br um die Bitrate einzustellen) (OHNE SOUND) | ||
null | Null Ausgabe (für Geschwindigkeitsmessungen/Benchmark) | ||
HINWEIS: prüfe die folgende Untersektion für Details und Voraussetzungen!
Es ist SEHR zu empfehlen, dass man die MTRR Register aktiviert, denn sie können eine großen Geschwindigkeits-Schub bringen.
Mache ein 'cat /proc/mtrr
' :
--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1
Dies ist richtig, es zeigt meine Matrox G400 mit 16Mb Speicher. Ich habe die Einstellung von XFree 4.x.x, was die MTRR Register automatisch einstellt.
Wenn nichts funktioniert, muss du es manuell setzen. Als erstes musst du die Base-Adresse finden. Du hast 3 Möglichkeiten um sie zu finden:(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
(--) SVGA: Linear framebuffer at 0xD8000000
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
Memory at d8000000 (32-bit, prefetchable)
mga_mem_base = d8000000
So, nun gilt es die Speichergröße finden. Dies ist sehr einfach, rechne einfach die Video-RAM-Größe ins Hexdezimal oder verwende diese Tabelle:
1 MB | 0x100000 | ||
2 MB | 0x200000 | ||
4 MB | 0x400000 | ||
8 MB | 0x800000 | ||
16 MB | 0x1000000 | ||
32 MB | 0x2000000 | ||
Du weisst die Base-Adresse und die Speichergröße? Lass uns die MTRR Register einstellen! Zum Beispiel für die Matrox Karte von oben (base=0xd8000000) mit 32MB RAM (size=0x2000000) führe einfach das Folgende aus:
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
Nicht alle CPUs unterstützen MTRRs. Zum Beispiel ältere K6-2's [z.B. 266Mhz,
stepping 0] unterstützen kein MTRR, aber stepping 12 CPUs tuen es
('cat /proc/cpuinfo
' um zu überprüfen').
Bei XFree86 4.0.2 oder neuer kannst du die Hardware-YUV-Routinen deiner Grafikkarte verwenden, mit Hilfe der XVideo Erweiterung. Diese Routinen verwendet die Option '-vo xv'. Das es funktioniert, prüfe folgendes:
(II) Loading extension XVideo
in /var/log/XFree86.0.log
HINWEIS: dies lädt nur die XFree86 Erweiterung. In einer guten Installation ist sie immer geladen, aber das bedeutet nicht, dass der Support mit _deiner_ Karte funktioniert!
X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
(...)
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
(...usw...)
Es muss YUY2 gepackte und YV12 planar Pixelformate unterstützen, um hilfreich für MPlayer zu sein.
Bei älteren 3dfx Treibern sind bekannt, dass sie Probleme mit der XVideo Beschleunigung machen und dass der Treiber unterstützt weder YUY2 noch YV12. Prüfe ob du XFree86 Version 4.1.0 oder neuer hast, da funktioniert es. Alternativ kannst auch auch DRI CVS verwenden. Wenn du eigenartige Effekte bei der Verwendung von -vo xv siehst, versuche SDL (es unterstützt auch XVideo) und prüfe ob es funkioniert. Siehe SDL Sektion für Details.
Oder versuche den NEUEN -vo tdfxfb -Treiber! Siehe Sektion 2.2.1.9!
S3 Savage3Ds sollten gut funktionieren, jedoch bei einer Savage4 verwende XFree86 Version 4.0.3 oder neuer (bei Bildproblemen versuche 16bpp). Und bei S3 Virge.. verkaufe sie.
nVidia ist keine gute Wahl für Linux.. Du musst dazu den binären nVidia- Treiber, verfügbar auf der nVidia Website, verwenden. Der Standard X-Treiber unterstützt kein XVideo für diese Karten, aufgrund der von nVidia geschlossenen Sources/Spezifikationen.
Diese Karte kann man in vielen Laptops finden. Unter Linux ist deren
Höchstleistung leider nur DGA. Unglücklichweise funktioniert der DGA-Treiber in
X 4.1.0 nicht, also musst du auf 4.2.0 warten oder den modifizierten Treiber für
4.0.3 oder 4.1.0 von hier downloaden: http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver
(hier findet man auch einen Patch für die Treiber-Sourcen).
Treiber wurden bereitgestellet von Tomek Jarzynka.
Dieses Dokument versucht mit einigen Worten zu beschreiben, was DGA allgemein ist und was man mit dem DGA Video-Ausgabetreiber für MPlayer alles machen kann (und was es nicht kann).
DGA ist die Abkürzung für Direct Graphics Access (Direkter Grafik-Zugriff) und bedeutet für ein Programm, das es den X-Server überbrückt und direkt den Framebuffer-Speicher ändert. Technisch gesprochen passiert dies durch Verschieben des Framebuffer-Speichers in den Speicherbereich des Prozesses. Dies wird vom Kernel nur erlaubt, wenn der Anwender Superuser-Rechte besitzt. Man kann diese bekommen duch Einloggen als Root oder durch das Setzen des Suid-Bits für das MPlayer-Programm (NICHT empfohlen!).
Es gibt zwei Versionen von DGA: DGA1 wird verwendet unter XFree 3.x.x und DGA2 wurde zu XFree 4.0.1 entwickelt.
DGA1 unterstützt nur den direkten Framebuffer-Zugriff, wie oben beschrieben. Für das Ändern der Farbtiefe eines Video-Signals muss man auf die XVidMode Erweiterung zurückgeifen.
DGA2 arbeitet mit dem Feature der XVidMode Erweiterung zusammen und erlaubt auch das Ändern der Farbtiefe. So kannst du dem XServer allgemein auf einer 32 Bit Auflösung betreiben und die Farbtiefe damit auf 15 Bits verringern.
Wie auch immer, DGA hat auch einige Nachteile. Es scheint, als ob es irgendwie abhängig vom Grafik-Chip ist und von der Implementation des XServer Video-Treibers, welcher den Chip kontrolliert. Also funktioniert es nicht auf jedem System ...
2.2.1.3.3. Installation der DGA Unterstützung für MPlayer
Als erstes prüfe, ob X die DGA Erweiterung lädt, siehe /var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
XFree86 4.0.x oder neuer sind STARK EMPFOHLEN! MPlayers DGA-Treiber wird automatisch von ./configure erkannt, oder du kannst es mit --enable-dga erzwingen.
Wenn der Treiber nicht zu einer kleineren Auflösung wechseln kann, versuche mit den Optionen -vm (nur unter X 3.3.x), -fs, -bpp, -zoom um ein Video-Modus zu finden, dass das Video passt. Es gibt noch keinen Konverter.. :(
Werde ROOT. DGA braucht Root-Rechte um direkt in den Video-Speicher zu schreiben. Wenn du es auch also Anwender starten willst, installiere bei MPlayer die SUID root:
chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer
Nun funktioniert es auch als einfacher Anwender.
!!!! ABER SEIT GEWARNT !!!!
Dies ist ein GROSSES Sicherheitsrisiko! Mache das nie auf einem Server oder
einem Computer, der von mehreren Personen verwendet wird, da sie durch das
Root SUID von MPlayer Root-Rechte erhalten könnten!
!!!! DU WURDEST ALSO GEWARNT ... !!!!
Verwende nun die '-vo dga' Option und es sollte funktionieren! (hoffe es:) Du solltest auch probieren, ob die '-vo sdl:dga' Option bei dir funktioniert! Es ist um einiges schneller!!!
2.2.1.3.4. Änderung der Auflösung
Der DGA Treiber erlaubt das Ändern der Auflösung des Ausgabe-Signals. Es erspart
die Verwendung von (langsamem) softwaremäßigem Scaling und ermöglicht zur
selben Zeit Vollbild-Grafiken. Ideal wäre es, wenn man auf die genaue Auflösung
des Videos (würde die richtige Rate voraussetzen) schalten könnte, aber der XServer
erlaubt nur das Änderen in eine Auflösung, die in /etc/X11/XF86Config
(/etc/X11/XF86Config-4
bei XFree 4.0.X) vordefiniert ist.
Dies sind so genannte "Modelines" und sind von den Fähigkeiten deiner
Video-Hardware abhängig. Der XServer scannt die Konfigurationsdatei beim Starten und
schaltet die Modelines aus, die nicht zu der Hardware passen. Du kannst die
funktionierenden Modelines mithilfe der X11-Logdatei herausfinden. Sie kann
unter /var/log/XFree86.0.log
gefunden werden.
Siehe Anhang A für einige Beispiele für Modeline-Einstellungen.
DGA wird in zwei Plätzen von MPlayer verwendet: Der SDL Treiber kann es verwenden (-vo sdl:dga) und der DGA-Treiber (-vo dga). Das oben genannte trifft für beide zu; in der folgenden Sektion werde ich erklären, wie der DGA-Treiber für MPlayer funktioniert.
2.2.1.3.6. Features des DGA-Treibers
Der DGA Treiber wird durch die -vo dga Option auf der Komandozeile ausgewählt. Das normale Verhalten ist, dass der DGA-Treiber die Auflösung so weit wie möglich an das Video anzupassen. Es ignoriert die -vm und -fs Optionen (für Videomodus-Änderung und Vollbild) - es versucht immer so viel Fläche wie möglich durch Ändern des Videomodus zu nutzen, dies erspartet eine zusätzliche Verwendung der CPU um das Bild zu vergrößern/verkleinern. Wenn dir der Modus, den der Treiber gewählt hat, nicht gefällt, kannst du mit -x und -y Option einen auswählen, der besser passt. Mit der -v Option wird der DGA Treiber - neben vielen anderen Dingen - eine Liste der Auflösungen, die von deiner aktuellen XF86-Config Datei unterstützt werden ausgeben. Unter DGA2 kannst du auch die Farbtiefe mit der -bpp Option einstellen. Gültige Farbtiefen sind 15, 16, 24 und 32bpps. Es hängt von deiner Hardware ab, ob diese Tiefen grundlegend unterstützt werden oder ob sie (was möglichweise langsam ist) konvertiert werden müssen.
Wenn du genug Glück hast und genug Offscreen-Speicher übrig ist um eine ganzes Bild darin zu speichern, wird der DGA Treiber "Doublebuffering" verwenden, was ein flüssigeres Bild ermöglicht. Es wird ausgeben, ob Doublebuffering eingeschaltet ist oder nicht.
Doublebuffering bedeutet, dass der nächste Frame des Videos bereits in den Offscreen-Speicher schrieben wird, während der aktuelle Frame angezeigt wird. Wenn der nächste Frame fertig ist, wird dem Grafik-Chip nur die Position im Speicher mitgeteilet, wo sich der nächste Frame befindet und die Grafik ververwendet das Bild einfach von dort. In der Zwischenzeit wird der anderer Buffer wieder mit Video-Daten aufgefüllt.
Doublebuffering kann man mit der Option -double ein- und mit der Option -nodouble ausschalten. Zur Zeit ist die Standard-Option, dass der zusätzliche Buffer ausschaltet ist. Wenn der DGA-Treiber verwendet wird, funktioniert das Onscreen Display (OSD) nur mit eingeschaltetem Doublebuffering. Wie auch immer, das Einschalten von Doublebuffering kann einen großer Geschwindigkeitsnachteil sein (auf meinem K6-II+ 525 verwerdet es zusätzliche 20% der CPU-Zeit!), abhängig von der Implementation von DGA für eine Hardware.Allgemein gesprochen sollte der DGA-Framebuffer Zugriff mindestens so schnell sein wie Verwendung des X11-Treibers, jedoch mit den zusätzlichen Vorteils des möglichen Vollbildes. Die prozentuelle Geschwindigkeitsangaben von MPlayer sollten aber mit Vorsicht genossen werden, denn zum Beispiel wird beim X11-Treiber die Zeit, die vom X-Server benötigt wird um das Bild aufzubauen, nicht eingerechnet. Logge dich via ein Terminal über eine serielle Verbindung in deine Box ein und starte MPlayer damit du wirklich siehst, was los ist ...
Allgemein gesprochen ist der Geschwindigkeitsvorteil von DGA im Vergleich zur normalen Verwendung von X11 stark abhängig von der Grafikkarte und wie gut das X-Server Modul dafür optimiert ist.
Wenn du ein langsames System besitztst, verwende lieber 15 oder 16 Bit Farbtiefen, denn es verwendet nur halbe Speicherbandbreiten im Vergleich zu 32 bit.
Die Verwendung von 24bit ist eine gute Idee, wenn deine Karte 32 Bit Tiefe unterstützt, denn es sind 25% weniger Daten im Vergleich zu einem 32/32 Modus.
Ich habe einige AVI-Dateien schon auf einem Pentium MMX 266 wiedergegeben. Bei AMD K6-2 CPUs funktioniert es vielleicht ab 400 MHZ oder mehr.
Nun, nach der Aussage von einigen Entwicklern von XFree ist DGA immer noch "ein wildes Tier". Sie sagen es ist besser, wenn man es nicht verwendet. Die Implementierung ist noch nicht immer fehlerfrei mit jedem Chipset-Treiber von XFree.
2.2.1.3.9. Zukünftige Arbeiten
2.2.1.3.A. Einige Modus-Einstellungen
Section "Modes" Identifier "Modes[0]" Modeline "800x600" 40 800 840 968 1056 600 601 605 628 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan EndSection
Diese Einstellungen funktionieren sehr gut mit meinem Riva128 Chip unter Verwendung des nv.o XServer Treibermodules.
Wenn du Probleme mit dem DGA-Treibers hast, sende einen Fehlerbericht (e-Mail Adresse siehe untern). Bitte starte MPlayer mit der -v Option und sende alle Zeilen beginnend mit vo_dga: in dem Fehlerbericht.
Bitte schreibe auch, welche Version von X11 du verwendest, die Grafikkarte und die Art von CPU. Das X11-Treiber Modul (definiert in der XFree86-Config) hilft auch möglicherweise. Danke!
Acki (acki@acki-netz.de, www.acki-netz.de)
Hier findest du einige Hinweise über die SDL-Ausgabe in MPlayer.
Es gibt einige Commandline-Optionen für SDL: | |||
-vo sdl:name | wählt den zu verwendenden Video Treiber aus (z.B. aalib, dga, x11) | ||
-ao sdl:name | wählt den zu verwendenden Audio Treiber aus (z.B. dsp, esd, arts) | ||
-noxv | schaltet die Xvideo Hardwarebeschleunigung aus | ||
-forcexv | versucht die Xvideo-Beschleunigung zu erzwingen | ||
SDL-Tasten: | |||
F | wählt Vollbild-/Fenster-Modus | ||
C | verfügbare Zyklen beim Vollbild-Modus | ||
W/S | zusammenhängend mit * und / (Mixer-Kontrolle) | ||
BEKANNTE FEHLER:
Wenn du kein X hast, kannst du SVGAlib verwenden! Stelle sicher, dass du nicht die -fs Option verwendest, da es Software-Scaling unterstützt, das nur sehr LANGSAM ist, ausser wenn du eine echt schnelle CPU (und/oder MTRR?) hast. :(
Natürlich musst du die svgalib und das Development-Paket installieren, damit MPlayer seinen SVGAlib Treiber einbauen kann (wird automatisch erkannt, kann aber erzwungen werden) und vergiss nicht die /etc/vga/libvga.config passend zu deiner Karte und deinem Monitor zu editieren.
2.2.1.6. Framebuffer Ausgabe (FBdev)
Ob die FBdev Unterstützung eingebaut wird während des ./configure Scripts entschieden. Lese die Framebuffer Dokumentation von den Kernel Sourcen (Documentation/fb/*) um zu erfahren wie man es einschaltet, usw.. !
Möglicherweise unterstützt deine Karte den VBE 2.0 Standard nicht (ältere ISA/PCI Karten wie S3 Trio64), nur VBE 1.2 (oder älter?): Nun, VESAfb ist auch verfügbar, aber du musst den SciTech Display Doctor (genannt UniVBE) vor Linux laden. Verwende eine DOS-Startdiskette oder was auch immer. Und vergiss nicht dein UniVBE zu registrieren ;))
Bei der FBdev Ausgabe können einige zusätzliche Parameter verwendet werden:
-fb | spezifiziert den zu verwendenden Framebuffer (/dev/fd0) | ||
-fbmode | Modus das verwendet werden soll (siehe /etc/fb.modes) | ||
-fbmodeconfig | Konfigurationsdatei für das Modus (standard ist /etc/fb.modes) | ||
-monitor_hfreq | WICHTIGE Werte, siehe example.conf | ||
-monitor_vfreq | |||
-monitor_dotclock | |||
Wenn du zu einem speziellen Modus wechseln willst, verwende
mplayer -vm -fbmode (NamedesModus) Dateiname
echo -e '\033[?25l'
setterm -blank 0
echo -e '\033[?25h'
HINWEIS: FBdev Video-Modus-Änderungen _funktionieren nicht_ mit dem VESA Framebuffer, also frage nicht danach, denn es ist keine MPlayer Beschränkung.
2.2.1.7. Matrox Framebuffer (mga_vid)
Diese Abschnitt handelt über Matrox G200/G400/G450/G550 BES (Back-End Scaler) Unterstützung, dem mga_vid Kernel-Treiber. Er wird von mir (A'rpi) aktiv entwickelt und besitzt Hardware-VSYNC-Unterstützung mit dreifach-Buffering. Er funktioniert auf Konsole oder auch unter X.
Um es zu verwenden, kompiliere als erstes mga_vid.o:
cd drivers
make
Dann erstelle das /dev/mga_vid Gerät:
mknod /dev/mga_vid c 178 0
und laden den Treiber mit
insmod mga_vid.o
Du sollst die erkannte Videospeichergröße prüfen, dazu verwende den 'dmesg' Befehl. Wenn es nicht stimmt, verwende die mga_ram_size Option (rmmod mga_vid als erstes) und gib die Speichergröße der Karte in MB an:
insmod mga_vid.o mga_ram_size=16
Um den Treiber automatisch zu laden / unzuladen wenn er braucht wird, füge die folgende Zeile an Ende der /etc/modules.conf Datei ein:
alias char-major-178 mga_vid
Dann starte
depmod -a
Jetzt musst du MPlayer (neu)kompilieren, ./configure wird automatisch /dev/mga_vid erkannen und den 'mga' Treiber einbauen. Die Verwendung mit MPlayer wird wenn man eine matroxfb Konsole hat mit '-vo mga' oder mit '-vo xmga' unter XFree86 3.x.x oder 4.x.x realisiert.
Der mga_vid Treiber arbeitet nun auch mit dem Xv zusammen.
2.2.1.8. SiS 6326 Framebuffer (sis_vid)
SiS 6326 YUV Framebuffer Treiber -> sis_vid Kerneltreiber
Das Interface sollte kompatibel mit dem von the mga_vid sein, aber das Trei- ber wurde nicht aktualisiert, als mga_vid geändert wurde, also ist es nicht mehr aktuell. Es sollte getestet und der Code auf den letzten Stand gebracht werden.
2.2.1.9. 3dfx YUV Unterstützung (tdfxfb)
Dieser Treiber verwendet den Kernel-tdfx Framebuffer-Treiber um Filme mit
YUV-Beschleunigung zu spielen. Du brauchst einen Kernel mit tdfxfb Support und
kompiliere MPlayer mit ./configure --enable-tdfxfb
neu.
MPlayer unterstützt die Ausgabe von Videos über OpenGL. Unglücklicherweise unterstützten nicht alle Treiber diese Fähigkeit. Zum Beispiel haben es allen Karte mit Utah-GLX Treibern (für XFree86 3.3.6) Unterstützung. Siehe http://utah-glx.sourceforge.net für Details für die Installation.
XFree86(DRI) >= 4.0.3 unterstützt nur Matrox und Radeon Karten. Siehe http://dri.sourceforge.net für Downloads und Installtionsanweisungen.
2.2.1.11. AAlib - Textmodus-Ausgabe
AAlib ist eine Bibliothek für die Anzeige im Textmodus, unter Verwendung des ASCII Renderer. Es gibt EINE GROSSE ANZAHL von Programmen die es bereits unterstützen, wie Doom, Quake, usw. MPlayer enthält einen sehr gut brauchbaren Treiber dafür. Wenn ./configure erkennt, dass aalib installiert ist, wird der aalib libvo Treiber eingebaut.
Du kannst einige Tasten verwenden im AA Fenster, um Rendering-Optionen zu ändern: | |||
1 | verringert Kontrast | ||
2 | erhöht Kontrast | ||
3 | verringert Schärfe | ||
4 | erhöht Schärfe | ||
5 | schaltet schnelles Rendern ein/aus | ||
6 | wählt das Farbmischungs-Modus (keine, error dithering, floyd steinberg) | ||
7 | invertiert Bild | ||
a | wechselt zwischen AA und MPlayer Kontrolle) | ||
Die folgenden Kommandozeilen-Optionen können verwendet werden: | |||
-aaosdcolor=V | ändert OSD-Farbe | ||
-aasubcolor=V | ändert Untertitel-Farbe | ||
wobei V sein kann: (0/Normal, 1/Dunkel, 2/Fett, 3/Fettschift, 4/Rückwärts, 5/Spezial) | |||
AAlib selbst unterstützt eine größe Summe von Optionen. Hier einige wichtige: | |||
-aadriver | setzt erforderlichen AA Treiber (X11, curses, linux) | ||
-aaextended | verwende alle 256 Zeichen | ||
-aaeight | verwendet acht-bit ASCII | ||
-aahelp | gibt alle AAlib-Optionen aus | ||
HINWEIS: Das Rendering ist sehr CPU-Intersiv, besonders bei AA-on-X (AAlib unter X) und benötigt am wenigsten CPU-Leistung auf einer standard, nicht-Framebuffer Konsole. Verwende SVGATextMode im ein großes Textmodus einzustellen und geniese es! (Dual Head Hercules Karten rocks :)) (kann vielleicht jemand bdev erweiteren für Konventierung/Farbmischung bei hgafb? Wäre nett :)
Verwende die -framedrop Option wenn dein Computer nicht schnell genug ist, um alle Frames zu Verarbeiten!
Beim Abspielen auf einem Terminal wirst du eine bessere Geschwindigkeit und Qualität bekommen, wenn du den Linux-Treiber (-aadriver linux) und nicht den Curses-Teiber verwendest. Aber dazu brauchst du Scheibzugriff auf/dev/vcsa<terminal>! Dies wird nicht automatisch erkannt von aalib, aber vo_aa versucht die beste Möglichkeit zu finden. Siehe http://aa-project.sourceforge.net/tune/ für zusätzliche Tuning-Möglichkeiten.
2.2.1.12. VESA - output to VESA BIOS
Dieser Treiber wurde als allgemeiner Treiberentworfen und eingeführt, für jede
Grafikkarte, die ein VESA VBE 2.0 kompatibles BIOS besitzt. Aber es gibt nur einen Grund
für die Entwicklung dieses Treibers - die vielseiten Probleme bei der Wiedergabe am TV.
VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, 1998 (Seite 70) sagt:
Dual-Controller Aufbau
VBE 3.0 unterstützt Grafikkarten mit Dual-Controller Aufbau. Unter der Annahme, dass beide
Kontroller die gleiche OEM, unter der Kontrolle eines einzigen BIOS-ROMs auf der Grafikkarte
besitzen, ist es möglich, der Anwendung zu verbergen, dass die in wirklichkeit zwei
Kontroller verhanden sind. Es hat jedoch die Beschränkung, dass die gleichzeitige Verwendung
der unterschiedlichen Kontroller verhindert wird, aber erlaubt Anwendungen, die vor VBE 3.0
herausgekommen sind, normal zu arbeiten. Die VBE Funktion 00h (Return Controller Information)
gibt die gemeinsamen Informationen beider Kontroller zurück, inklusive einer Liste der
verfügbaren Modusse. Wenn eine Anwendungen einen Modus auswählt wird der entsprechende
Kontroller aktiviert. Alle verbleibenden VBE-Funktionen werden dann auf dem aktuellen Kontroller
ausgeführt.
Also hast du damit gute Chancen deinen TV-OUT mit diesem Treiber zu aktivieren.
(Ich danke das die TV-Funktion sie nur auf Single-Head oder Standalone-Ausgabe beschänkt.)
Was sind die Vorteile:
- Du hast Chance Videos zu sehen, auch wenn Linux nicht mal weiss, welche Grafikkarte du hast.
- Du brauchst dazu auf deinem Linux keine anderen grafikabhängenden Sachen (wie X11 (XFree86),
fbdev usw.). Dieser Treiber kann vom Textmodus aus betrieben werden.
- Du hast Chancen den TV-Out einzuschalten. (Bis jetzt nur von ATI-Karten bekannt).
- Dieser Treiber verwendet int 10h Handler, das heisst es ist kein Emulator - es ruft
echte Befehle des echteb BIOS im Real-Mode aus. (im vm86 Modus).
- Am wichtigesten :) Du kannst DVD mit 320x200 ansehen ohne einer leistungsfähigen CPU.
Was sind die Nachteile:
- Es funktioniert nut auf x86 Systemen.
- Es ist der langsamste Treiber von allen verfügbaren für MPlayer.
- Es kann nur als ROOT verwendet werden.
- Zur Zeit ist es nur für Linux verfügbar.
- Es verwendet keine Hardwarebeschleunigung (wie YUV-Overlay oder HW-Scaling).
Diese Commandline-Parameter sind zur Zeit verfügbar für VESA: | |||
-vo vesa:opts | wird bald implementiert werden. (Du kannst damit Parameter wie Wiederholrate, Interlacing, Doublescan und so weiter einstellen. Beispiele: i43, 85, d100) | ||
-screenw, -screenh, -bpp | verwendet von Anwender definierte Modie | ||
-x, -y | setzt Prescaling-Auflösung | ||
-zoom | aktiviert Prescaling | ||
-fs | Vollbild-Scaling | ||
-fs -zoom | Vollbild-Scaling des prescalten Bildes | ||
Bekannte Probleme und Workarounds:
- Wenn die NLS Schrift auf deinem Linux Rechner installiert hast und den VESA-Treiber
auf einer Textmode-Konsole verwendst wird nach dem Beenden von MPlayer die ROM-Schrift
erscheinen anstatt der nationalen. Du kannst die nationale Schrift wieder durch das z.B.
setsysfont-Tool bei einer Mandrake Distribution laden.
(Hinweis: Das selbe Tool wird zum Loklisieren von fbdev verwendet).
- Einige Grafikkartentreiber für Linux aktivieren den BIOS Modus im DOS-Speicher
nicht. Wenn du solche Probleme hast - verwende den VESA-Treiber im Textmodus. Andernfalls
wird der Textmodus (#03) einfach aktiviert und du musst deinen Computer neu starten.
- Oftmals bekommt man nach dem Beenden des VESA-Treiber einen schwarzen Bildschirm. Um
zurück zum normalen Modues zu kommen - wechlse einfach auf auf eine andere Konsole (durch das
Drücken von Alt-Fx) und das Anschließende zurückschalten auf die vorherige Konsole auf die
gleiche Art.
- Um einen funktionierenden TV-out zu bekommen musst du deine TV vor dem Starten des
PCs anschließden, denn das Video-BIOS inizialisiert es während des POST-Vorganges.
Ich würde gerne bei MPlayer die selben Feature haben wie auf meiner Windows-Box. Wenn ich ein Video unter Windows starte (in einem Fenster oder in Vollbild) wird das Bild auch über TV-Out wiedergegeben und ich kann es auch mit Vollbild auf meinem Fernseher sehen. Ich liebe diese Feature aber ich war verwundert, wie schwer es einzubauen ist.
Dies ist eine Treiberbeschränkung. BES (Back-End Scaler, dies ist der Overlay-Erzeuger und die YUV Scaling-Engine für G200/G400/G450/G550 Karte) funktioniert nur mit CRTC1. Normalerweise wird CRTC1 (Textmodus, jeder Farbtiefe und BES) auf den Kopf1 (HEAD1) geroutet und CRTC2 (nur 16/32bpp Grafiken) wird auf den HEAD2 (TV-out) geroutet.
Unter Linux hast du 2 Möglichkeiten, dass der TV-Out funktioniert:
Folge diesen Anweisungen:
cd TVout
./compile.sh
tty 1,2: Framebuffer Konsole, CRTC2, Head 1 (Monitor)
tty 3,4,5...: Framebuffer + BES, CRTC1, Head 2 (TV-Out)
wechsle auf tty1 (ALT+F1) und starte Mon-* (eines davon)
wechsle auf tty3 (ALT+F3) und zurück auf tty1 (ALT+F1)
starte TV-* (eines davon)
(nun wirst du eine Konsole auf deinem PAL-Fernseher bekommen - ich weiss nichts über NTSC)Wenn du nun MPlayer (auf tty1) startst, wird das Bild auf tty3 angezeigt, also wirst du es auf dem Fernseher oder dem 2. Monitor sehen.
E ist zur Zeit noch ein "Hack", aber ich warte bist das Marvel-Projekt fertig gestellt wurde. Es wird eine richtigen TV-Out Treiber enthalten, hoffe ich zumindest.
Zur Zeit ist mein Problem der BES nur mit CRTC1 funktioniert. Also wird das Bild immer auf dem Kopf, der auf CRTC1 (normalerweise der Monitor) geroutet ist, darum muss man auch die CRTCs vertauschen, aber dabei wird deine Konsole ein Framebuffer (CRTC2 kann kein Textmode) und langsamer (keine Beschleunigung). :(
Irgendwie bekomme ich nur eine Schwarz-Weiss Ausgabe am Fernseher ...
Hast du vielleicht einen NTSC Fernseher? Oder hast du vielleicht keinen der
TV-* Scripts laufen lassen?
Einige Worte über ATI's TV-Out:
Zur Zeit will ATI keine Unterstützung für TV-Out Chipsets unter Linux bieten.
Hier ist die offzielle Antwort von ATI Inc.:
> Hallo!
>
> Auf eurer Seite steht, dass ihr Linux-Entwickler unterstützt.
> Zur Zeit beteilige ich mich am MPlayer Projekt (www.mplayerhq.hu).
> Ich bin interessiert am Aktivieren des TV-Outs bei Radeon VE-Chips während
> Video-Wiedergabe. Ich würde dieses Feature dem radeonfb-Treiber hinzufügen
> (kann man im CVS-Tree vom MPlayer-Projekt unter main/drivers/radeon finden).
> Ich hab eine Chance eine offizielle Dokumentation zu erhalten?
Wir können aufgrund des Macrovision-Konzerns keine Dokumente im Bezug auf TV-Out
veröffentlichen. Auch Dokumentationen für das MPEG2-Decoding ist etwas das wir
MÖGLICHWEISE in der Zukunft veröffentlichen, aber zur Zeit nicht. Dies ist ebenfall
aufgrund einen Eigentümer und einer 3. Partei.
Bemitleidenswert, nicht?
Q: Was ist Macrovision?
A: Es ist ein Kopierschutz-Mechanismus.
Dies bedeutet, wenn sie die TV-Out anbelangenden Informationen veröffentlichen, das Hacker es ermöglicht werden könnte, den Kopierschutz ihrer Chips zu umgehen. Deshalb gibt es keine Möglichkeit den TV-Out bei ATI-Karten zu aktivieren.
Wie ist der Status von ATI TV-Out-Chips unter Linux:
Von anderen Seite gesehen können wir eine Change haben den TV-Out Support mit dem VESA-Treiber auf x86 Systemen zu aktivieren, aber seit Linux auch durch vm86 syscall beschränkt ist, ist praktisch unerreichbar. Nun bildet ein Zugriff auf einen IO-Raum eine Ausnahme und der Treiber versucht VESA-Befehle zu emulieren anstatt die als normale int_10h zu verwenden.