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
. Dieser Treiber unterstützt auch eine Helligkeits/Kontrast/Farbton/etc
Anpassung (Es sei den du verwendest den alten, langsamen DirectShow DivX Codec,
welcher es überall unterstützt), lies in der Manpage.
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!
xvinfo
, es ist ein Teil der XFree86 Distribution. Es sollte einen langen Text
anzeigen, vergleichbar mit diesem:
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.
xv
Unterstützung kompiliert wurde.
./configure zeigt an, ob es eingebaut wurde.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.2.0 oder neuer hast, es funktioniert mit YV12 und YUY2. Frühere Versionen, auch 4.1.0
stürzten mit YV12 ab!
Wenn du seltsame Effekte bei der Benutzung mit -vo xv
bemerkst, probier 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 Tdfxfb Sektion.
S3 Savage3Ds sollten gut funktionieren, jedoch bei einer Savage4 verwende XFree86 Version 4.0.3 oder neuer (bei Bildproblemen versuche 16bpp). Und für S3 Virge.. existiert xv Unterstützung, die Karte selbst ist jedoch sehr langsam, du solltest sie also besser verkaufen.
Hinweis: Savage Karten haben eine langsame YV12 Bildwiedergabe Fähigkeit (es muss eine YV12 zu YUY2 Konversion durchgeführt werden, da die Savage Hardware YV12 nicht darstellen kann). Wenn also diese Dokumentation an einem gewissen Punkt sagt "dies hat YV12 Ausgabe. Benutze Sie, es ist schneller", ist es nicht sicher. Versuche es mit diesem Treiber, , er benutzt MMX2 für diese Aufgabe und ist schneller als der eingebaute X-Treiber.
nVidia ist keine gute Wahl für Linux (nach nVidia, ist dies nicht wahr). 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.
Soweit ich weiss enthält der neuste XFree86 Treiber XVideo Unterstützung für GeForce 2 und 3.
Riva128 Karten haben keine XVideo Unterstützung, auch nicht mit dem nVidia-Treiber :( Wende dich an nVidia.
Diese Karten findet man in vielen Laptops. Unglücklicherweise unterstützt der Treiber in X 4.2.0 kein Xv. Wir bieten jedoch einen modifizierten, Xv-fähigen Treiber an. Der Treiber wurde von Stefan Seyfried zur Verfügung gestellt.
Um die Wiedergabe von Inhalt mit DVD-Grösse zu erlauben sollte die XF86Config wie folgt aussehen:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
Wenn du xv mit einer Trident Karte benutzen willst, vorausgesetzt, dass es nicht mit 4.1.0 läuft, probier die neuste cvs von XFree oder warte auf XFree 4.2.0. Das neuste cvs enthält Unterstützung für Fullscreen xv mit der Cyberblade XP card.
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 X Server 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 X Server Video-Treibers, welcher den Chip kontrolliert. Also funktioniert es nicht auf jedem System...
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.
Warnung: Sicherheitsrisiko
Dies ist ein grvsseres Sicherheitsrisiko! Es sollte nie auf einem Server oder einem Computer, der nicht vollstdndig kontrolliert wird angewandt werden. Da die User durch einen SUID root MPlayer Root-Privilegien bekommen!
Du bist also gewarnt worden!
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!
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 X Server
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 X Server 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.
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.
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 X Server 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)
SDL (Simple Directmedia Layer) ist grundsätzlich ein vereinheitlichtes Video/Audio Interface. Programme, die es benutzen, wissen nur um SDL und nichts darüber, was für Video- oder Audio-Treiber SDL eigentlich benutzt. So kann z.B. eine Doom Portierung auf SDL über die svgalib, aalib, X, fbdev und andere laufen. Du musst bluss z.B. bloss über die Variable SDL_VIDEODRIVER angeben, welcher Video-Treiber benutzt werden soll. Nun ja, in der Theorie.
Mit MPlayer benutzen wir dessen Software Skalier-Fähigkeit des X11-Treibers für Karten, welche kein XVideo unterstützen, bis wir unseren eigenen (schnelleren, besseren) Software-Skalierer haben. Wir benutzen auch dessen aalib-Ausgabe, haben nun aber einen eigenen, welcher komfortabler ist. Dessen DGA-Mode war besser als unsere, bis neulich. :)
Es hilft auch bei einigen anfälligen Treibern/Karten, wenn der Video ruckartig ist (kein Problem der Systemgeschwindigkeit) oder wenn der Ton verzögert ist.
Die SDL Videoausgabe unterstützt die Darstellung von Untertitel unter dem Film, auf dem schwarzen Streifen (falls vorhanden).
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) |
Das svgalib Packet und dessen Entwicklungs-Packet müssen installiert sein, um
den SVGAlib Treiber in MPlayer einzubauen (wird automatisch erkannt, kann jedoch
auch erzwungen werden). Es sollte auch nicht vergessen werden, die
/etc/vga/libvga.config
auf die entsprechende Karte & Monitor anzupassen.
Die -fs Option sollte nicht verwendet werden, da dadurch der Gebrauch des
Softwareskalierers aktiviert wird, der sehr langsam ist. Wenn dies trotzdem
benötigt wird, sollte die -sws 4
Option verwendet werden, die
zwar eine schlechtere Qualität liefert, jedoch viel schneller ist.
SVGAlib beinhaltet auch EGAlib. MPlayer hat also auch die Fähigkeit, Filme mit 16 Farben widerzugeben, welche durch folgende Einstellungen brauchbar wird:
Der bpp (Bits pro Pixel) Wert muss mit der Hand auf 4 gesetzt werden:
-bpp 4
Wahrscheinlich muss der Film dabei verkleinert (skaliert) werden, um dem EGA
Modus gerecht zu werden:
-vop scale=640:350
oder
-vop scale=320:200
Dazu wird eine schnelle Skalierungsroutine mit schlechte Qualität benötigt:
-sws 4
Vielleicht muss die automatische Verhältniskorrektur deaktiviert werden:
-noaspect
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/fb0) | ||
-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 (Name_des_Modus) Dateiname
echo -e '\033[?25l'
oder setterm -cursor off
setterm -blank 0
echo -e '\033[?25h'
oder setterm -cursor on
Hinweis: FBdev Video-Modus-Änderungen _funktionieren nicht_ mit dem VESA Framebuffer, also frage nicht danach, denn es ist keine MPlayer Beschränkung.
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.
Warnung: benutze Vidix auf nicht-Linux Systemen für mga_vid!
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
Installiere dann das Module mga_vid.o
mit make install
oder kopiere es
an den entsprechenden Platz unter /lib/modules/<Kernel Version>/irgendwo
.
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.
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.
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. Wenn die Plattform / der Treiber jedoch xv unterstützt, was für ein PC mit Linux der Fall sein sollte, sollte besser xv verwendet werden, da die Leistung von OpenGL beträchtlich schlechter ist. Wenn man eine X11 Implementierung ohne xv besitzt, ist OpenGL trotzdem eine funktionsfähige Alternative.
Unglücklicherweise unterstützten nicht alle Treiber diese Feature. Die Utah-GLX Treiber (für XFree86 3.3.6) unterstützen es für alle Karten. Siehe http://utah-glx.sourceforge.net für Details zur Installation.
XFree86(DRI) 4.0.3 unterstützt OpenGL mit Matrox- und Radeon-Karten, >= 4.2 unterstützt auch Rage128. Siehe http://dri.sourceforge.net für Download- und Installations-Anweisungen.
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.
Dieser Treiber wurde als allgemeiner Treiberentworfen und eingeführt, für jede
Grafikkarte, die ein VESA VBE 2.0 kompatibles BIOS besitzt. Ein weiterer Vorteil dieses
Treibers ist, dass er versucht, die TV Ausgabe zu erzwingen.
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.)
Verwende diesen Treiber nicht mit GCC 2.96! Es wird nicht funktionieren!
Diese Commandline-Parameter sind zur Zeit verfügbar für VESA: | |||
-vo vesa:opts |
erkennt momentan: dga um den DGA-Modus zu erzwingen und nodga um ihn zu deaktivieren. Hinweis: Du kannst diese Parameter auslassen um den DGA-Modus automatisch erkennen zu können. (In Zukunft wirst du 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 | ||
-double | aktiviert den Doppelpuffer-Modus (double buffering). (Nur im DGA Modus möglich). Sollte langsamer sein als single buffering, hat jedoch keine Flimmereffekte. |
Vermeide es, wenn möglich. Übergibt die Ausgabe X11 (es benutzt die shared memory Erweiterung)
jedoch ohne jeglicher Hardware Beschleunigung. Es unterstützt (MMX/3DNow/SSE beschleunigt, aber immer noch
langsam) Software-Skalierung. Benutze die Option -fs -zoom
. Die meisten Karten haben
Hardware-Skalierung Unterstützung. Benutze die -vo xv
Ausgabe für diese oder
-vo xmga
für Matrox Karten.
Das Problem ist, dass die meisten Karten keine Hardware Beschleunigung für eine zweite Ausgabe/TV unterstützen. In diesen Fällen, sieht man ein grünfarbiges/blaufarbiges Fenster anstelle des Filmes. In diesen Fällen ist dieser Treiber nützlich. Du benötigst jedoch eine leistungsfähige CPU um die software-Skalierung zu benutzen. Verwende nicht die Software Ausgabe und Skalierer von SDL, er hat eine noch schlimmere Bildqualität!
Software-Skalierung ist sehr langsam. Du solltest besser versuchen den Videomodus zu ändern. Es ist sehr einfach. Lies in der Sektion DGA Modus-Einstellungen und füge diese deiner XF86Config an.
-vm
Option. Sie ändert
die Auflösung, so dass zu deinem Film passt. Wenn nicht:Wenn du den Modus, den du eingefügt hast nicht findest, betrachte die XFree86 Ausgaben. Einige Treiber können keine tiefen pixelclocks verwenden, welche benötigt werden um einen tiefen Auflösungs-Modus zu verwenden.
VIDIX ist di abkürzung für VIDeo Interface für
*niX.
VIDIX wurde entworfen und eingeführt als ein Interface für schnelle user-space Treiber,
welches Videoleistungen wie mga_vid von Matrox Karten zur Verfügung stellt. Die Treiber sind
auch sehr portierbar.
Dieses Interface wurde als Versuch entworfen, die existierenden Videobeschleunigungs-Interfaces (bekannt als mga_vid, rage128_vid, radeon_vid, pm3_vid) in ein festest Schema zu bringen. Es stellt ein Interface auf hohem Level (highlevel) für Chips zur Verfügung, welche als BES (BackEnd scalers) oder OV (Video Overlays) bekannt sind. Es stellt kein lowlevel Interface zur Verfügung für Dinge, welche als Grafikserver bekannt sind (Ich will nicht mit dem X11 Team im Grafikmodus-Wechsel konkurrieren). Das Hauptziel dieses Interface ist es, eine maximale Wiedergabe-Geschwindigkeit zur Verfügung zu stellen.
-vo xvidix
-vo vesa:vidix
(NUR LINUX) und -vo fbdev:vidix
Allerdings spielt es keine Rolle, welche Videoausgabe-Treiber mit VIDIX verwendet werden.
Ich hoffe, dass praktisch jeder Videoausgabetreiber von MPlayer das :vidix
subdevice erkennen wird.
Wenn VIDIX als ein subdevice (-vo vesa:vidix
) verwendet
wird, dann wird die Videomodus-Konfiguration vom Videoausgabe-Gerät erledigt werden
(kurz gesagt: vo_server). Du kannst desshalb in der Kommandozeile von
MPlayer die gleichen Optionen wie für den vo_server verwenden. Zusätzlich
versteht es die Option -double
als einen global sichtbaren Parameter.
(Ich empfehle diese Option mit VIDIX wenigstens für ATI's Karten zu verwenden).
-vo xvidix
betreffend: Es erkennt momentan die folgenden Optionen:
-fs -zoom -x -y -double
.
Du kannst auch den Treiber von VIDIX direkt als ein drittes Unterargument
in 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
Aber dies ist gefährlich und du solltest es nicht tun. In diesem Falle wird der gegebene
Treiber erzwungen und das Ergebnis ist unvorhersehbar (es könnte deinen Computer einfrieren).
Du solltest dies NUR tun, wenn du absolut sicher bist, dass es funktioniert und MPlayer es nicht
automatisch tut. Bitte informiere die Entwickler darüber. Der richtige Weg ist, VIDIX ohne
irgendwelche Argumente zu verwenden um die automatische Erkennung des Treibers zu aktivieren.
VIDIX ist eine sehr neue Technologie und es ist höchstwahrscheinlich, dass es auf deinem System (OS=abc CPU=xyz) nicht funktioniert. In diesem Fall liegt die einzige für dich darin, es zu portieren (hauptsächlich libdha). Aber es besteht die Hoffnung, dass es auf den Systemen laufen wird, auf denen X11 läuft.
Und die letzte Warnung: (un)glücklicherweise musst du aufgrund des direkten Hardwarezugriffs root Privilegien besitzen um VIDIX zu benützen. Setze wenigstens das suid bit auf den MPlayer.
Dies ist ein Video-Equalizer, speziell für Vidix implementiert. Du kannst ihn über entweder mit den Tasten 1-8 verwenden wie in der Manpage beschrieben oder mit Kommandozeilenargumenten. MPlayer erkennt folgende Optionen:
-brightness | verstellt die HELLIGKEIT der Videoausgabe. Es ist nicht dasselbe, wie die Helligkeit an den Monitorschaltern oder am TV zu verstellen. Es ändert die Intensität der RGB-Komponenten des Videosignals von einem schwarzen bis zu einem weissen Bildschirm. | ||
-contrast | verstellt den KONTRAST der Videoausgabe. Funktioniert ähnlich wie bei der Helligkeit. | ||
-saturation | verstellt die SÄTTIGUNG der Videoausgabe. Du kannst mit dieser Option eine Graustuffen-Ausgabe erhalten. | ||
-hue | verstellt den FARBTON des Videosignals. Du kannst mit dieser Option ein negatives Abbild der Farben der Bilder erhalten. | ||
-red_intensity | verstellt die Intensität der ROTEN Komponenten des Videosignals. | ||
-green_intensity | verstellt die Intensität der GRÜNEN Komponenten des Videosignals. | ||
-blue_intensity | verstellt die Intensität der BLAUEN Komponenten des Videosignals. |
Jeder Parameter akzeptiert Werte von -100 bis +100.
Die normale einstellung jedes Parameters ist 0.
Hinweis: Nicht jeder Treiber stellt eine Unterstützung für jede dieser Funktionen zu Verfügung. Momentan unterstützt bloss radeon_vid.so vollständiges Video-Equalizing. Andere Treiber unterstützen nur diese Optionen nur teilweise.
Beispiele:
mplayer -vo vesa:vidix -brightness -300 -contrast 200 dateiname.avi
oder
mplayer -vo xvidix -red_intensity -50 -saturation 400 -hue 300 dateiname.vob
Dies ist ein Ausgabetreiber (-vo zr
) für eine Anzahl von MJPEG
Aufnahme/Wiedergabe karten (getestet für die DC10+ und Buz und es sollte für die
LML33 und die DC10 gehen). Der Treiber läuft durch eine Enkodierung der Frames zu jpeg
und einer folgenden Sendung an die Karte. Für die jpeg Enkodierung wird die libavcodec
benützt und vorausgesetzt.
Dieser Treiber spricht zu den Kerneltreibern, welche auf
http://mjpeg.sourceforge.net erhältlich sind.
Du must diese also erst zum Laufen bringen. Kompiliere MPlayer danach neu mit der Option
--enable-zr
.
Einige Bemerkungen:
-zr*
zu den Kommandozeilen-Optionen. Die Erklärung
dieser Optionen kann mit -zrhelp
angezeigt werden. Es ist möglich, das
Eingangsframe zurechtzuschneiden (Die Ränder abzuschneiden um die Geschwindigkeit zu erhöhen)
und andere Dinge zu tun.Sorry, das angewählte video_out Gerät ist inkompatibel mit diesem Codec.
MPlayer unterstützt Karten mit dem Siemens DVB Chip von Herstellern wie Siemens, Technotrend, Galaxis oder Hauppauge. Die neusten DVB Treiber sind auf der Linux TV Seite erhältlich. Wenn man Software Transcoding machen will, sollte man jedoch mindestens eine 1GHz CPU besitzen.
Configure sollte die DVB Karte erkennen. Falls nicht, kann eine Erkennung erzwungen werden mit folgendem Befehl:
./configure --enable-dvb
Wenn sich die ost Headers nicht im Standard Pfad befinden, sollte der Pfad wie folgt angegeben werden:
./configure --with-extraincdir=<DVB Quellverzeichnis>/ost/include
Darauf folgt wie gewöhnlich die Kompilierung und Installation.
Hardware Decodierung (Wiedergabe von gewöhnlichen MPEG1/2 Dateien) kann durch folgenden Befehl erreicht werden:
mplayer -ao mpegpes -vo mpegpes datei.mpg|vob
Software Decodierung oder Transcoding verschiedener Formate zu MPEG1 kann z.B. durch folgende Befehle erreicht werden:
mplayer -ao mpegpes -vo mpegpes -vop lavc datei.ext mplayer -ao mpegpes -vo mpegpes -vop fame,expand datei.ext
Es sei darauf hingewiesen, dass DVB Karten nur Höhen von 288 und 576 für
PAL bzw 240 und 480 für NTSC unterstützen. Für eine andere Hähenänderung
muss eine neue Skalierung mit folgendem -vop
Plugin
durchgeführt werden (mit der Höhe und Breite die gewünscht wird):
scale=breite:höhe
. DVB Karten akzeptieren viele Breiten wie
720, 704, 640, 512, 480, 352 etc und können Hardware Skalierungen in horizontaler
Richtung durchführen, so dass in horizontaler Richtung meist nicht skaliert
werden muss. Für ein 512x384 (Seitenverhältnis 4:3) DivX, sollte folgender Befehl
getestet werden:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576
Wenn man ein Widescreen Film besitzt und ihn auf die volle Breite skalieren will,
kann das expand=w:h
Plugin verwendet werden, um schwarze Ränder hinzuzufügen.
Um ein 640x384 DivX wiederzugeben, kann folgender Befehl verwendet werden:
mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 datei.avi
If your CPU is too slow for a full size 720x576 DivX, try downscaling:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 datei.avi
Wenn die Geschwindigkeit sich nicht verbessert, kann auch eine vertikale Skalierung auf einen niedrigeren Wert verwendet werden:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 datei.avi
Für OSD und Untertitel sollte das expand Feature des OSD Plugins verwendet werden.
So sollte anstelle von expand=w:h
oder expand=w:h:x:y
expand=w:h:x:y:1
verwendet werden (der 5. Parameter :1
am
Ende aktiviert die OSD Wiedergabe). Falls erwünscht kann das Bild noch ein bisschen
nach oben bewegt werden, um eine grössere Zone für die Untertitel zu erhalten.
Die Untertitel können natürlich auch verschoben werden, falls diese auf dem TV Bildschirm
nicht sichtbar sind. Dazu kann die -subpos <0-100>
Option verwendet werden
um die Untertitel ensprechend anzupassen (-subpos 80
ist z.B. gut).
Um nicht-25fps Filme auf einem PAL TV oder einer langsamen CPU wiederzugeben, sollte
die -framedrop
Option aktiviert werden.
Um das Seitenverhältnis von DivX Dateien aufrecht und optimale Skalierungsparameter zu erhalten (horizontale Hardwareskalierung und vertikale softwareskalierung unter beibehaltung des Seitenverhältnis), sollte das neue dvbscale Plugin verwendet werden:
für 3:4 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale für 16:9 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024
Wenn Fragen bestehen oder Feature Ankündigungen und Diskussionen zum Thema erwünscht sind, sollte der MPlayer-DVB Mailingliste beigetreten werden. Auf der Liste sollte immer Englisch gesprochen werden.
In Zukunft wird man OSD und Untertitel mit dem eingebauten OSD Feature der DVB Karten anzeigen können, sowie eine flüssige Wiedergabe von nicht-25fps Filmen und Echtzeit Transcodierungen zwischen MPEG2 und MPEG4 (teilweise Dekomprimierung).
MPlayer unterstützt eine hardwarebeschleunigte Wiedergabe mit den Creative DXR3 und Sigma Designs Hollywood Plus Karten.
Zuerst sollten die DXR3/H+ Treiber korrekt installiert werden (Version
0.12.0 oder neuer). Sie und die Installationsanweisungen können auf der
DXR3 & Hollywood Plus für Linux
Seite gefunden weredn. configure
sollte die Karte automatisch erkennen.
Auch die Kompilierung sollte problemlos verlaufen.
-vo dxr3:<noprebuf>:<codec>:<device> | Where <noprebuf> specifies turning off prebuffering.
Dies wird auf Athlons automatisch erledigt. Falls die Wiedergabe desynchronisiert
ist, sollte das Prebuffering deaktiviert werden. Wenn noprebuf ausgelassen wird,
wird das Prebuffering aktiviert (ausser auf Athlons).<codec> = fame/avcodec, avcodec erzeugt eine bessere
Ausgabequalität, ist jedoch langsamer als fame, der auf langsamen Maschninen
verwendet werden sollte. Standardmässig wird libavcodec verwendet. Dazu muss
libabvcodec natürlich korrekt installiert sein (näheres dazu in
codecs.html).<device> = Gerätenummer die verwendet werden soll bei mehreren
em8300 Karten.Alle dieser Optionen können ausgelassen werden, müssen jedoch in der genannten Reihenfolge angegeben werden, so funktioniert dxr3:fame und dxr3:1 ,
dxr3:1:avcodec jedoch nicht. | ||
-ao oss:/dev/em8300_ma-X |
Für die Audioausgabe, wobei X die Gerätenummer ist
(0 mit einer Karte). | ||
-ac hwac3 |
Für die digitale anstatt analoge Audioausgabe. | ||
-vc mpegpes |
Erzwingt die Hardwarebeschleunigung, funktioniert jedoch nur mit MPEG1/2. | ||
-aop list=resample:fout=xxxxx |
Falls die Samplerate unter 44100Hz liegt, sollte entweder 44100Hz oder 48000Hz
verwendet werden. Das passendere ist dabei vorzuziehen: So sollte 44100Hz für einen
22050Hz Film verwendet werden (44100 / 2 = 22050). Bei 24000Hz sollte ensprechend 48000Hz
verwendet werden (48000 / 2 = 24000) usw... Dies funktioniert nicht mit der digitalen Audioausgabe
(-ac hwac3 ). |
Um ein overlay zu erhalten, sollte dxr3view
, welches sich im
em8300 Paket befindet, vor dem Start von MPlayer aufgerufen werden.
Man kann dabei in dxr3view
viele Optionen setzten durch Drücken der Taste
T
, dabei muss der Mauszeiger über dem Fenster bleiben.
MPEG1/2 Inhalt sollte nun automatisch von MPlayer erkannt mit der
Hardwarebeschleunigung von DXR3 wiedergegeben werden. Falls nicht, kann die
Hardwarebeschleunigung mit der Option -vc mpegpes
erzwungen werden.
Falls jedoch irgendwelche Nachbearbeitungsfilter verwendet werden sollen, muss
-vc mpeg12
verwendet werden.
In einigen Fällen, erscheinen die Untertitel nicht synchron mit dem A/V Stream
bei der Verwendung der Hardware Decodierung (-vc mpegpes
). Dies ist
ein bekannter Fehler. em8300 behandelt auch zu grosse Untertitel falsch und kann dabei
1 bis 2 Sekunden stillstehen. Momentan lässt sich der Fehler bei der Wiedergabe von
DVDs mit Untertiteln nur durch die Verwendung von -vc mpeg12
umgehen.
Unter Linux hast du 2 Methoden den G400 TV Ausgang zum Laufen zu bringen:
Wichtig: Nur Matrox G400DH/G400MAX hat TV-out Unterstützung unter Linux, andere (G450, G550) haben dies nicht!
-vo x11 -fs -zoom
Option.
Es wird jedoch LANGSAM sein und hat einen Macrovision Kopierschutz aktiviert. Also wird
es nur bei einem direkt verbunden TV funkionieren, nicht bei einem VCR.
(Du kannst den Macrovision umgehen indem du dieses Perl
Skript verwendest.)TVout/matroxset
und gib make
ein. Installiere
matroxset
irgendwo in deinem PATH.fbset
installiert hast, gehe ins Verzeichnis
TVout/fbset
and gib make
ein. Installiere
fbset
irgendwo in deinem PATH.TVout/
Verzeichniss im MPlayer
Source, und führe ./modules
als root aus. Deine Textmode-Konsole geht in den
Framebuffer-Modus über (kein Weg zurück)../matroxtv
Script aus. Dies wird dir ein sehr einfaches
Menu präsentieren. Drücke 2 und ENTER. Nun solltest du dasselbe Bild auf deinem Monitor
und TV haben. Die 3. Option aktiviert eine unabhängige Ausgabe. Aber dann kannst du X nicht benutzen!
Wenn das TV (PAL) Bild einige seltsame Streifen darauf hat, war das Script nicht fähig die Auflösung
richtig zu setzen (zu 640x512 als Standard). Benutze zufällig irgendwelche andere Optionen und es wird wieder OK :)Die nächste Aufgabe ist den Cursor auf tty1 (oder wo auch immer) zum verschwinden zu bringen und das blinken zu deaktivieren. Führe folgendes Kommando aus:
echo -e '\033[?25l'
oder setterm -cursor off
setterm -blank 0
Du willst wahrscheinlich das obrige in ein Skript tun und auch den Bildschirm löschen...
Um den Cursor schwarz zu machen: echo -e '\033[?25h'
oder setterm -cursor on
Starte nun einen Film mit mplayer -vo mga -fs -screenw 640
-screenh 512 <dateiname>
(wenn du X verwendest, ändere zu matroxfb mit z.B. CTRL-ALT-F1)
Ändere die Auflösung zu 640x512.
Geniesse die ultra-schnelle ultra-befähigte Matrox TV-Ausgabe (besser als Xv)
ATI will momentan keine ihrer TV-out Chips unter Linux unterstützen, auf Grund ihrer lizenzierten Macrovision Technologie.
Auf anderen Karten sollten bloss die VESA Treiber, ohne Vidix verwendet werden. Es wird jedoch eine leistungsfähige CPU benötigt.
Das einzige, was zu tun ist - den TV Stecker eingesteckt haben, bevor man den PC bootet, da das Video BIOS sich nur einmal während der POST Prozedur initialisiert.
Überprüfe diese URL.