1
<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>7.3. DGA</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="MPlayer - Movie Player"><link rel="up" href="video.html" title="Kapitel 7. Videoausgabegeräte"><link rel="prev" href="xv.html" title="7.2. Xv"><link rel="next" href="sdl.html" title="7.4. SDL"><link rel="preface" href="howtoread.html" title="Wie diese Dokumentation gelesen werden soll"><link rel="chapter" href="intro.html" title="Kapitel 1. Einführung"><link rel="chapter" href="install.html" title="Kapitel 2. Installation"><link rel="chapter" href="usage.html" title="Kapitel 3. Gebrauch"><link rel="chapter" href="cd-dvd.html" title="Kapitel 4. CD/DVD Nutzung"><link rel="chapter" href="tv.html" title="Kapitel 5. TV"><link rel="chapter" href="radio.html" title="Kapitel 6. Radio"><link rel="chapter" href="video.html" title="Kapitel 7. Videoausgabegeräte"><link rel="chapter" href="ports.html" title="Kapitel 8. Portierungen"><link rel="chapter" href="mencoder.html" title="Kapitel 9. Allgemeiner Gebrauch von MEncoder"><link rel="chapter" href="encoding-guide.html" title="Kapitel 10. Encodieren mit MEncoder"><link rel="chapter" href="faq.html" title="Kapitel 11. Häufig gestellte Fragen"><link rel="appendix" href="bugreports.html" title="Anhang A. Wie Fehler (Bugs) berichtet werden"><link rel="appendix" href="skin.html" title="Anhang B. MPlayers Skinformat"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.3. DGA</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xv.html">Zurück</a> </td><th width="60%" align="center">Kapitel 7. Videoausgabegeräte</th><td width="20%" align="right"> <a accesskey="n" href="sdl.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="7.3. DGA"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dga"></a>7.3. DGA</h2></div></div></div><p title="PRÄAMBEL"><b>PRÄAMBEL. </b>
2
Dieser Abschnitt versucht, in wenigen Worten zu beschreiben, was DGA
3
generell ist und was der DGA-Videotreiber in <span class="application">MPlayer</span>
4
erreichen kann, und was nicht.
5
</p><p title="WAS IST DGA?"><b>WAS IST DGA? </b>
6
<acronym class="acronym">DGA</acronym> ist die Abkürzung für
7
<span class="emphasis"><em>Direct Graphics Access</em></span> (direkter Zugriff auf die
8
Grafikhardware) und gibt Programmen die Möglichkeit, unter Umgehung
9
des X-Servers direkt den Framebuffer der Grafikkarte zu verändern.
10
Technisch gesehen wird das dadurch realisiert, dass der
11
Framebuffer-Speicher in den virtuellen Adressraum des jeweiligen Prozesses
12
abgebildet wird. Das wird vom Kernel aber nur dann zugelassen, wenn der
13
Prozess Superuserprivilegien besitzt. Dazu musst du dich entweder als
14
<code class="systemitem">root</code> anmelden oder das SUID-bit
15
des <span class="application">MPlayer</span>-Binaries setzen (was
16
<span class="bold"><strong>nicht empfohlen wird</strong></span>).
18
Von DGA gibt es zwei Versionen: DGA1 kommt mit XFree 3.x.x, und DGA2
19
wurde mit XFree 4.0.1 eingeführt.
21
DGA1 bietet nur den oben beschriebenen Zugriff auf den Framebuffer. Die
22
Umschaltung des Videomodus klappt nur mit der XVidMode-Erweiterung.
24
DGA2 beinhaltet die Features der XVidMode-Erweiterung und erlaubt
25
außerdem, die Farbtiefe zu ändern. Damit kannst du also auf 32bit
26
Farbtiefe umschalten, auch wenn der X-Server gerade mit 15bit Farbtiefe
29
DGA hat aber auch ein paar Nachteile. Die Funktionsweise scheint ein wenig
30
von der Grafikkarte und der Implementierung des Grafikkartentreibers
31
im X-Server abhängig zu sein, der diesen Chip kontrolliert.
32
Es fuktioniert also nicht auf jedem System...
33
</p><p title="DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN"><b>DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN. </b>
34
Stelle als erstes sicher, dass X die DGA-Erweiterung lädt. Schau
35
in <tt class="filename">/var/log/XFree86.0.log</tt> nach:
37
</p><pre class="programlisting">(II) Loading extension XFree86-DGA</pre><p title="DGA-UNTERSTÜTZUNG FÜR MPLAYER INSTALLIEREN">
39
Wie du siehst, ist XFree86 4.0.x oder neuer
40
<span class="bold"><strong>sehr zu empfehlen</strong></span>!
41
<span class="application">MPlayer</span>s DGA-Treiber wird von
42
<tt class="filename">./configure</tt> automatisch erkannt. Alternativ
43
kannst du seine Compilierung mit <tt class="option">--enable-dga</tt> erzwingen.
45
Falls der Treiber nicht zu einer kleineren Auflösung wechseln
46
konnte, dann experimentiere mit den Optionen <tt class="option">-vm</tt> (nur bei
47
X 3.3.x), <tt class="option">-fs</tt>, <tt class="option">-bpp</tt>,
48
<tt class="option">-zoom</tt> herum, um einen Videomodus zu finden,
49
in den der Film reinpasst. Momentan gibt es keinen Konverter :(
51
Werde <code class="systemitem">root</code>.
52
DGA braucht <code class="systemitem">root</code>-Privilegien,
53
um direkt in den Grafikspeicher zu schreiben. Wenn du MPlayer als
54
normaler Nutzer starten möchtest, dann installiere
55
<span class="application">MPlayer</span> mit dem SUID-Bit:
57
</p><pre class="screen">
58
chown root <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
59
chmod 750 <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
60
chmod +s <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
63
Jetzt funktioniert es auch als normaler Benutzer.
64
</p><div class="caution" title="Warnung: Sicherheitsrisiko!" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warnung: Sicherheitsrisiko!</h3><p>
65
Dieses ist ein <span class="bold"><strong>großes</strong></span> Sicherheitsloch.
66
Tu das <span class="bold"><strong>niemals</strong></span> auf einem Server oder
67
auf einem Computer, auf den auch andere Leute Zugriff haben, da sie durch einen
68
SUID-<code class="systemitem">root</code>-<span class="application">MPlayer</span>
69
<code class="systemitem">root</code>-Privilegien erlangen können.
71
Benutze jetzt die Option <tt class="option">-vo dga</tt>, und ab geht's (hoffe ich
72
zumindest :))! Du solltest auch ausprobieren, ob bei dir die Option
73
<tt class="option">-vo sdl:dga</tt> funktioniert. Sie ist viel schneller.
74
</p><p title="ÄNDERN DER AUFLÖSUNG"><a name="dga-modelines"></a><b>ÄNDERN DER AUFLÖSUNG. </b>
75
Der DGA-Treiber ermöglicht es, die Auflösung des Output-Signals zu ändern.
76
Damit entfällt die Notwendigkeit der (langsamen) Softwareskalierung und
77
bietet gleichzeitig ein Vollbild. Idealerweise würde DGA in die gleiche
78
Auflösung schalten, die das Video (natürlich unter Beachtung des
79
Höhen-/Breitenverhältnisses) hat, aber der X-Server lässt nur
80
Auflösungen zu, die vorher in der <tt class="filename">/etc/X11/XF86Config</tt> bzw.
81
<tt class="filename">/etc/X11/XF86Config-4</tt> definiert wurden, bezüglich XFree 4.X.X.
82
Diese werden durch sogenannte Modelines festgelegt und hängen von den Fähigkeiten
83
deiner Grafikhardware ab. Der X-Server liest diese Konfigurationsdatei beim
84
Start ein und deaktiviert alle Modelines, die sich nicht mit deiner Hardware
85
vertragen. Du kannst die überlebenden Modelines anhand der X11-Logdatei
86
herausfinden (normalerweise <tt class="filename">/var/log/XFree86.0.log</tt>).
88
Diese Einträge funktionieren mit einem Riva128-Chip und dem
89
nv.o-X-Server-Treibermodul.
90
</p><pre class="programlisting">
93
Modeline "800x600" 40 800 840 968 1056 600 601 605 628
94
Modeline "712x600" 35.0 712 740 850 900 400 410 412 425
95
Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
96
Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
97
Modeline "352x288" 25.10 352 368 416 432 288 296 290 310
98
Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan
99
Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
101
</pre><p title="DGA & MPLAYER"><b>DGA & MPLAYER. </b>
102
DGA wird bei <span class="application">MPlayer</span> an zwei Stellen benutzt:
103
beim SDL-Treiber mit (<tt class="option">-vo sdl:driver=dga</tt>) oder beim
104
DGA-Treiber selbst (<tt class="option">-vo dga</tt>).
105
Das oben gesagte gilt für beide Treiber. In den folgenden Abschnitten
106
erkläre ich, wie der DGA-Treiber von <span class="application">MPlayer</span>
108
</p><p title="FEATURES DES DGA-TREIBERS"><b>FEATURES DES DGA-TREIBERS. </b>
109
Der DGA-Treiber wird durch die Option <tt class="option">-vo dga</tt> aktiviert.
110
Sein Standardverhalten sieht vor, dass er in die Auflösung schaltet, die
111
der Videoauflösung am nächsten kommt. Der Treiber ignoriert absichtlich
112
die Optionen <tt class="option">-vm</tt> (Videomodusumschaltung aktivieren) und
113
<tt class="option">-fs</tt> (Vollbildmodus erzwingen) - er versucht immer, so viel
114
Bildfläche wie möglich durch eine Änderung der Auflösung zu bedecken.
115
Dadurch wird nicht ein einziger weiterer CPU-Takt für die Skalierung des
116
Bildes verwendet. Wenn du mit dem Modus nicht zufrieden bist, den der Treiber
117
gewählt hat, dann kannst du ihn zwingen, denjenigen Modus zu
118
wählen, der am besten zu dem mit den Optionen <tt class="option">-x</tt> und
119
<tt class="option">-y</tt> angegebenen Werten passt. Die Option <tt class="option">-v</tt>
120
veranlasst den DGA-Treiber, neben einigen anderen Dingen auch alle von deiner
121
<tt class="filename">XF86Config</tt>-Datei unterstützen Videomodi aufzulisten.
122
Wenn DGA2 verwendet wird, dann kannst du mit der Option <tt class="option">-bpp</tt> die
123
Verwendung einer bestimmten Farbtiefe erzwingen. Gültige Werte sind 15,
124
16, 24 und 32. Es hängt dann von deiner Hardware ab, ob der Modus nativ
125
unterstützt wird oder ob eine (möglicherweise langsame)
126
Konvertierung stattfindet.
128
Wenn du Glück hast und dir genug unbenutzter Grafikspeicher zur
129
Verfügung steht, um ein komplettes Bild aufzunehmen, dann wird der
130
DGA-Treiber Doppelpufferung verwenden, was zu einer regelmäßigeren
131
Wiedergabe führt. Der DGA-Treiber wird dir mitteilen, ob Doppelpufferung
132
angeschaltet ist oder nicht.
134
Doppelpufferung bedeutet, dass das nächste Bild deines Videos bereits
135
an einer anderen Stelle im Grafikspeicher aufgebaut wird, während das
136
aktuelle Bild angezeigt wird. Ist das nächste Bild fertig, so wird
137
dem Grafikchip nur noch mitgeteilt, wo er das neue Bild im Speicher finden
138
kann. Somit holt sich der Chip seine Daten einfach von dort. In der
139
Zwischenzeit wird der andere, jetzt unbenutze Puffer wieder mit neuen
142
Doppelpufferung kann mit der Option <tt class="option">-double</tt> aktiviert und mit
143
<tt class="option">-nodouble</tt> deaktiviert werden. Momentan ist die Doppelpufferung
144
per Voreinstellung deaktiviert. Wird der DGA-Treiber verwendet,
145
dann funktioniert das Onscreen-Display (ODS) nur dann, wenn auch die
146
Doppelpufferung aktiviert ist. Andererseits kann die Doppelpufferung auch
147
einen großen Geschwindigkeitseinbruch hervorrufen, was stark von
148
der DGA-Implementierung der Treiber für deine Hardware abhängt (auf
149
meinem K6-II+ 525 benötigt Doppelpufferung weitere 20% CPU-Zeit!).
150
</p><p title="PUNKTE BEZÜGLICH DER GESCHWINDIGKEIT"><b>PUNKTE BEZÜGLICH DER GESCHWINDIGKEIT. </b>
151
Generell gesehen sollte der Zugriff auf den DGA-Framebuffer genauso
152
schnell sein wie der X11-Treiber, wobei man zusätzlich noch ein Vollbild
153
erhält. Die prozentualen Geschwindigkeitswerte, die <span class="application">MPlayer</span>
154
ausgibt, müssen mit Vorsicht genossen werden, da sie z.B. beim X11-Treiber
155
nicht die Zeit beinhalten, die der X-Server tatsächlich zum
156
Anzeigen des Bildes benötigt. Klemm ein Terminal an deinen seriellen
157
Port und starte <span class="command"><strong>top</strong></span>, wenn du wissen willst, wie's wirklich mit
158
der Geschwindigkeit aussieht.
160
Allgemein betrachtet hängt die Geschwindigkeitsverbesserung von DGA
161
gegenüber dem 'normalen' X11-Treiber sehr von deiner Grafikkarte und
162
davon ab, wie gut das X-Servermodul optimiert ist.
164
Wenn du ein langsames System hast, dann benutz besser eine Farbtiefe von
165
15 oder 16bit, da sie nur die halbe Bandbreite des 32bit-Farbmodus
168
Einge gute Idee ist auch die Verwendung von 24bit Farbtiefe, selbst dann,
169
wenn deine Grafikkarte nativ nur 32bit unterstützt, da bei 24bit 25%
170
weniger Daten im Vergleich zum 32/32-Modus über den Bus transferiert
173
Ich habe schon gesehen, wie einige AVI-Dateien auf einem Pentium MMX 266
174
wiedergegeben werden konnten. AMD K6-2-CPUs werden ab ca. 400 MHz oder
176
</p><p title="BEKANNTE FEHLER"><b>BEKANNTE FEHLER. </b>
177
Die Entwickler von XFree sagen selbst, dass DGA ein ganz schönes
178
Monstrum ist. Sie raten eher davon ab, es zu benutzen, da seine
179
Implementierung in einige Chipset-Treiber für XFree nicht immer
181
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
182
Bei der Kombination aus XFree 4.0.3 und dem
183
<tt class="filename">nv.o</tt>-Treiber gibt es einen Fehler, der zu
184
merkwürdigen Farben führt.
185
</p></li><li class="listitem"><p>
186
Die ATI-Treiber müssen den Videomodus mehrmals zurückstellen,
187
nachdem der DGA-Modus verlassen wurde.
188
</p></li><li class="listitem"><p>
189
Einige Treiber schaffen es manchmal einfach nicht, in die vorherige
190
Auflösung zurückzuschalten. Benutze in solch einem Fall
191
<span class="keycap"><b>Strg</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad +</b></span> und
192
<span class="keycap"><b>Strg</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad -</b></span>,
193
um manuell die Auflösung zu ändern.
194
</p></li><li class="listitem"><p>
195
Einige Treiber zeigen einfach nur merkwürdige Farben an.
196
</p></li><li class="listitem"><p>
197
Manche Treiber lügen, was die von ihnen in den Prozessorspeicher
198
eingeblendete Menge Grafikspeicher anbelangt, weswegen vo_dga
199
nicht die Doppelpufferung verwendet (SIS?).
200
</p></li><li class="listitem"><p>
201
Einige Treiber schaffen es nicht einmal, auch nur einen einzigen
202
gültigen Grafikmodus bereitzustellen. In solchen Fällen
203
gibt der DGA-Treiber schwachsinnige Modi wie z.B. 100000x100000 oder
205
</p></li><li class="listitem"><p>
206
Das OSD funktioniert nur, wenn auch die Doppelpufferung aktiviert
207
ist (sonst flimmert es).
208
</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xv.html">Zurück</a> </td><td width="20%" align="center"><a accesskey="u" href="video.html">Nach oben</a></td><td width="40%" align="right"> <a accesskey="n" href="sdl.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">7.2. Xv </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 7.4. SDL</td></tr></table></div></body></html>