1612
|
1 <HTML>
|
|
2 <BODY>
|
|
3
|
1682
|
4 <P><B><A NAME=2.2.1>2.2.1. Video output devices</A></B></P>
|
1612
|
5
|
1682
|
6 <TABLE BORDER=0>
|
|
7
|
|
8 <TD COLSPAN=4><P><B>General:</B></P></TD><TR>
|
1612
|
9
|
1682
|
10 <TD> </TD><TD VALIGN=top>x11</TD><TD> </TD><TD>X11 with optional SHM extension</TD><TR>
|
|
11 <TD></TD><TD VALIGN=top>xv</TD><TD></TD><TD>X11 using overlays with the Xvideo extension (hardware YUV & scaling)</TD><TR>
|
|
12 <TD></TD><TD VALIGN=top>gl</TD><TD></TD><TD>OpenGL renderer, so far works only with:
|
|
13 <UL><LI>all cards with Utah-GLX
|
|
14 <LI>Matrox cards with X/DRI >=4.0.3
|
|
15 <LI>Radeon with X/DRI CVS</UL></TD><TR>
|
|
16 <TD></TD><TD VALIGN=top>dga</TD><TD></TD><TD>X11 DGA extension</TD><TR>
|
|
17 <TD></TD><TD VALIGN=top>fbdev</TD><TD></TD><TD>Output to general framebuffers</TD><TR>
|
|
18 <TD></TD><TD VALIGN=top>svga</TD><TD></TD><TD>Output to SVGAlib</TD><TR>
|
|
19 <TD></TD><TD VALIGN=top>sdl</TD><TD></TD><TD>
|
|
20 <CODE>1.1.7:</CODE> supports software scaling<BR>
|
|
21 <CODE>1.1.8:</CODE> supports Xvideo (hardware scaling/fullscreen)<BR>
|
|
22 <CODE>1.2.0:</CODE> supports AAlib (-vo aa is very recommended, see below!)</TD><TR>
|
|
23 <TD></TD><TD VALIGN=top>ggi</TD><TD></TD><TD>similar to SDL</TD><TR>
|
|
24 <TD></TD><TD VALIGN=top>aa</TD><TD></TD><TD>textmode rendering with AAlib</TD><TR>
|
|
25
|
|
26 <TD COLSPAN=4><P><B>Card specific:</B></P></TD><TR>
|
1612
|
27
|
1682
|
28 <TD> </TD><TD VALIGN=top>mga</TD><TD> </TD><TD>Matrox G200/G400 hardware YUV overlay via the mga_vid device</TD><TR>
|
|
29 <TD></TD><TD VALIGN=top>xmga</TD><TD></TD><TD>Matrox G200/G400 overlay (mga_vid) in X11 window<BR>
|
|
30 (<I>Xv emulation on X 3.3.x!</I>)</TD><TR>
|
|
31 <TD></TD><TD VALIGN=top>syncfb</TD><TD></TD><TD>Matrox G400 YUV support on framebuffer (obsoleted, use mga/xmga)</TD><TR>
|
|
32 <TD></TD><TD VALIGN=top>3dfx</TD><TD></TD><TD>Voodoo2/3 hardware YUV (/dev/3dfx) support (not yet tested, maybe
|
|
33 broken)</TD><TR>
|
|
34
|
|
35 <TD COLSPAN=4><P><B>Special:</B></P></TD><TR>
|
1612
|
36
|
1682
|
37 <TD> </TD><TD VALIGN=top>png</TD><TD> </TD><TD>PNG files output (use -z switch to set compression)</TD><TR>
|
|
38 <TD></TD><TD VALIGN=top>pgm</TD><TD></TD><TD>PGM files output (for testing purposes or ffmpeg encoding)</TD><TR>
|
|
39 <TD></TD><TD VALIGN=top>md5</TD><TD></TD><TD>MD5sum output (for MPEG conformance tests)</TD><TR>
|
|
40 <TD></TD><TD VALIGN=top>odivx</TD><TD></TD><TD>OpenDivX AVI File writer (use -br to set encoding bitrate)</TD><TR>
|
|
41 <TD></TD><TD VALIGN=top>null</TD><TD></TD><TD>Null output (for speed tests/benchmarking)</TD><TR>
|
|
42 </TABLE>
|
1612
|
43
|
1682
|
44 <P>NOTE: <I>check the following subsections for details and requirements!</I></P>
|
1612
|
45
|
|
46
|
1682
|
47 <P><B><A NAME=2.2.1.1>2.2.1.1. MTRR</A></B></P>
|
1612
|
48
|
1682
|
49 <P>It is VERY recommended to set MTRR registers up properly, because they can
|
|
50 give a big performance boost. First you have to find the base address.
|
|
51 You have 3 ways to find it:</P>
|
1612
|
52
|
1682
|
53 <P><UL>
|
|
54 <LI>from X11 startup messages, for example:
|
|
55 <P><CODE>(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000<BR>
|
|
56 (--) SVGA: Linear framebuffer at 0xD8000000</CODE></P>
|
|
57 <LI>from /proc/pci (use lspci -v command):
|
|
58 <P><TABLE>
|
|
59 <TD VALIGN=top><CODE>01:00.0</CODE></TD><TD><CODE>VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525</CODE></TD><TR>
|
|
60 <TD></TD><TD><CODE>Memory at d8000000 (32-bit, prefetchable)</CODE></TD><TR>
|
|
61 </TABLE></P></CODE>
|
|
62 <LI>from mga_vid kernel driver messages (use dmesg):
|
|
63 <P><CODE>mga_mem_base = d8000000</CODE></P>
|
|
64 </UL></P>
|
1612
|
65
|
1682
|
66 <P>Then let's find the memory size. This is very easy, just convert video ram
|
|
67 size to hexadecimal, or use this table:</P>
|
1612
|
68
|
1682
|
69 <TABLE BORDER=0>
|
|
70 <TD> </TD><TD>1 MB</TD><TD WIDTH=10%></TD><TD>0x100000</TD><TR>
|
|
71 <TD></TD><TD>2 MB</TD><TD></TD><TD>0x200000</TD><TR>
|
|
72 <TD></TD><TD>4 MB</TD><TD></TD><TD>0x400000</TD><TR>
|
|
73 <TD></TD><TD>8 MB</TD><TD></TD><TD>0x800000</TD><TR>
|
|
74 <TD></TD><TD>16 MB</TD><TD></TD><TD>0x1000000</TD><TR>
|
|
75 <TD></TD><TD>32 MB</TD><TD></TD><TD>0x2000000</TD><TR>
|
|
76 </TABLE>
|
1612
|
77
|
|
78
|
1682
|
79 <P>You know base address and memory size, let's setup mtrr registers!
|
|
80 For example, for the Matrox card above (base=0xd8000000) with 32MB
|
|
81 ram (size=0x2000000) just execute:</P>
|
1612
|
82
|
|
83
|
1682
|
84 <P><CODE> echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr</CODE></P>
|
1612
|
85
|
|
86
|
1682
|
87 <P>Not all CPUs support MTRRs. For example older K6-2's [around 266Mhz,
|
|
88 stepping 0] doesn't support MTRR, but stepping 12's do ('<CODE>cat /proc/cpuinfo</CODE>'
|
|
89 to check it).</P>
|
1612
|
90
|
1682
|
91 <P><B><A NAME=2.2.1.2>2.2.1.2. Xv</A></B></P>
|
1612
|
92
|
1682
|
93 <P>Under XFree86 4.0.2 or newer, you can use your card's hardware YUV routines
|
|
94 using the XVideo extension. This is what the option '-vo xv' uses.
|
|
95 In order to make this work, be sure to check the following:</P>
|
|
96 <P><UL>
|
|
97 <LI>You have to use XFree86 4.0.2 or newer (former versions don't have XVideo)
|
|
98 <LI>Your card actually supports harware acceleration (modern cards do)
|
|
99 <LI>X loads the XVideo extension, it's something like this:
|
1612
|
100
|
1682
|
101 <P><CODE> (II) Loading extension XVideo</CODE></P>
|
|
102 <P>in /var/log/XFree86.0.log</P>
|
1612
|
103
|
1682
|
104 <P>NOTE: this loads only the XFree86's extension. In a good install, this is
|
|
105 always loaded, and doesn't mean that the _card's_ XVideo support is loaded!</P>
|
1612
|
106
|
1682
|
107 <LI>Your card has Xv support under Linux. To check, try 'xvinfo', it is the
|
|
108 part of the XFree86 distribution. It should display a long text, similar
|
|
109 to this:
|
|
110 <PRE>
|
1612
|
111 X-Video Extension version 2.2
|
|
112 screen #0
|
|
113 Adaptor #0: "Savage Streams Engine"
|
|
114 number of ports: 1
|
|
115 port base: 43
|
|
116 operations supported: PutImage
|
|
117 supported visuals:
|
|
118 depth 16, visualID 0x22
|
|
119 depth 16, visualID 0x23
|
|
120 number of attributes: 5
|
|
121 (...)
|
|
122 Number of image formats: 7
|
|
123 id: 0x32595559 (YUY2)
|
|
124 guid: 59555932-0000-0010-8000-00aa00389b71
|
|
125 bits per pixel: 16
|
|
126 number of planes: 1
|
|
127 type: YUV (packed)
|
|
128 id: 0x32315659 (YV12)
|
|
129 guid: 59563132-0000-0010-8000-00aa00389b71
|
|
130 bits per pixel: 12
|
|
131 number of planes: 3
|
|
132 type: YUV (planar)
|
|
133 (...etc...)
|
1682
|
134 </PRE>
|
1612
|
135
|
1682
|
136 <P>It must support YUY2 packed, and YV12 planar pixel formats to be
|
|
137 usable with <B>MPlayer</B>.</P>
|
1612
|
138
|
1682
|
139 <LI>And finally, check if <B>MPlayer</B> was compiled with 'xv' support.
|
|
140 ./configure prints this.
|
1612
|
141
|
1682
|
142 </UL></P>
|
|
143
|
|
144 <P><B><A NAME=2.2.1.2.1>2.2.1.2.1. 3dfx cards</A></B></P>
|
1612
|
145
|
1682
|
146 <P>Older 3dfx drivers were known to have problems with XVideo acceleration,
|
|
147 it didn't support either YUY2 or YV12, and so. Verify that you have
|
|
148 XFree86 version 4.1.0 or greater, it works ok. Alternatively, you can use
|
|
149 <A HREF="http://dri.sourceforge.net">DRI</A> cvs.
|
|
150 If you experience strange effects using -vo xv, try SDL (it has XVideo too)
|
|
151 and see if it helps. Check the <A HREF="#2.2.1.4">SDL section</A> for details.</P>
|
1612
|
152
|
|
153
|
1682
|
154 <P><B><A NAME=2.2.1.2.2>2.2.1.2.2. S3 cards</A></B></P>
|
|
155
|
|
156 <P>S3 Savage3D's should work fine, but for Savage4, use XFree86 version 4.0.3
|
|
157 or greater. As for S3 Virge.. sell it.</P>
|
|
158
|
|
159 <P><B><A NAME=2.2.1.2.3>2.2.1.2.3. nVidia cards</A></B></P>
|
1612
|
160
|
1682
|
161 <P>nVidia isn't a very good choice under Linux.. You'll have to use the
|
|
162 binary nVidia driver, available at nVidia's website. The standard X
|
|
163 driver doesn't support XVideo for these cards, due to nVidia's closed
|
|
164 sources/specifications.</P>
|
1612
|
165
|
1682
|
166 <P><UL><LI>Riva128 cards don't have XVideo support even with the nvidia driver :(
|
|
167 Complain to NVidia.</UL></P>
|
1612
|
168
|
|
169
|
1682
|
170 <P><B><A NAME=2.2.1.2.4>2.2.1.2.4. ATI cards</A></B></P>
|
1612
|
171
|
1682
|
172 <P>The GATOS driver has VSYNC enabled by default. It means that decoding speed
|
|
173 (!) is synced to the monitor's refresh rate. If playing seems to be slow, try
|
|
174 disabling VSYNC somehow, or set refresh rate to n*(fps of the movie) Hz.</P>
|
1612
|
175
|
|
176
|
1682
|
177 <P><B><A NAME=2.2.1.3>2.2.1.3. DGA</A></B></P>
|
1612
|
178
|
1682
|
179 <P><B><A NAME=2.2.1.3.1>2.2.1.3.1. Summary</A></B></P>
|
1612
|
180
|
1682
|
181 <P>This document tries to explain in some words what DGA is in general and
|
|
182 what the DGA video output driver for mplayer can do (and what it can't).</P>
|
1612
|
183
|
|
184
|
1682
|
185 <P><B><A NAME=2.2.1.3.2>2.2.1.3.2. What is DGA</A></B></P>
|
1612
|
186
|
1682
|
187 <P>DGA is short for Direct Graphics Access and is a means for a program to
|
|
188 bypass the X-Server and directly modifying the framebuffer memory.
|
|
189 Technically spoken this happens by mapping the framebuffer memory into
|
|
190 the memory range of your process. This is allowed by the kernel only
|
|
191 if you have superuser privileges. You can get these either by logging in
|
|
192 as root or by setting the suid bit on the mplayer excecutable (NOT
|
|
193 recommended!).</P>
|
1612
|
194
|
1682
|
195 <P>There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was
|
|
196 introduced with XFree 4.0.1.</P>
|
1612
|
197
|
1682
|
198 <P>DGA1 provides only direct framebuffer access as described above. For
|
|
199 switching the resolution of the video signal you have to rely on the
|
|
200 XVidMode extension.</P>
|
1612
|
201
|
1682
|
202 <P>DGA2 incorporates the features of XVidMode extension and also allows
|
|
203 switching the depth of the display. So you may, although basically
|
|
204 running a 32 bit depth XServer, switch to a depth of 15 bits and vice
|
|
205 versa. </P>
|
1612
|
206
|
1682
|
207 <P>However DGA has some drawbacks. It seems it is somewhat dependent on the
|
|
208 graphics chip you use and on the implementation of the XServer's video
|
|
209 driver that controls this chip. So it does not work on every system ...</P>
|
1612
|
210
|
|
211
|
1682
|
212 <P><B><A NAME=2.2.1.3.3>2.2.1.3.3. Installing DGA support for MPlayer</A></B></P>
|
|
213
|
|
214 <P>First make sure X loads the DGA extension, see in /var/log/XFree86.0.log:</P>
|
|
215
|
|
216 <P> <CODE>(II) Loading extension XFree86-DGA</CODE></P>
|
|
217
|
|
218 <P>See, XFree86 4.0.x or greater is VERY RECOMMENDED!
|
|
219 <B>MPlayer</B>'s DGA driver is autodetected on ./configure, or you can force it
|
|
220 with --enable-dga.</P>
|
1612
|
221
|
1682
|
222 <P>If the driver couldn't switch to a smaller resolution, experiment with
|
|
223 switches -vm (only with X 3.3.x), -fs, -bpp, -zoom to find a video mode that
|
|
224 the movie fits in. There is no converter right now.. :(</P>
|
1612
|
225
|
1682
|
226 <P>Become ROOT. DGA needs root access to be able to write directly video memory.
|
|
227 If you want to run it as user, then install <B>MPlayer</B> SUID root:</P>
|
1612
|
228
|
1682
|
229 <P><CODE>
|
|
230 <CODE>chown root /usr/local/bin/mplayer<BR>
|
|
231 <CODE>chmod 750 /usr/local/bin/mplayer<BR>
|
|
232 <CODE>chmod +s /usr/local/bin/mplayer<BR></CODE></P>
|
1612
|
233
|
|
234
|
1682
|
235 <P>Now it works as a simple user, too.</P>
|
1612
|
236
|
|
237
|
1682
|
238 <P><B>!!!! BUT STAY TUNED !!!!</B><BR>
|
|
239 This is a <B>BIG</B> security risk! Never do this on a server or on a computer
|
|
240 can be accessed by more people than only you because they can gain root
|
|
241 privilegies through suid root mplayer.<BR>
|
|
242 <B>!!!! SO YOU HAVE BEEN WARNED ... !!!!</B></P>
|
|
243
|
|
244 <P>Now use '-vo dga' option, and there you go! (hope so:)
|
|
245 You should also try if the '-vo sdl:dga' option works for you! It's much
|
|
246 faster!!!</P>
|
|
247
|
|
248 <P><B><A NAME=2.2.1.3.4>2.2.1.3.4. Resolution switching</A></B></P>
|
|
249
|
|
250 <P>The DGA driver allows for switching the resolution of the output signal.
|
|
251 This avoids the need for doing (slow) software scaling and at the same
|
|
252 time provides a fullscreen image. Ideally it would switch to the exact
|
|
253 resolution (except for honouring aspect ratio) of the video data, but the
|
|
254 XServer only allows switching to resolutions predefined in
|
|
255 <CODE>/etc/X11/XF86Config</CODE> (<CODE>/etc/X11/XF86Config-4</CODE> for XFree 4.0.X respectively).
|
|
256 Those are defined by so-called modelines and depend on the capabilites
|
|
257 of your video hardware. The XServer scans this config file on startup and
|
|
258 disables the modelines not suitable for your hardware. You can find
|
|
259 out which modes survive with the X11 log file. It can be found at:
|
|
260 <CODE>/var/log/XFree86.0.log</CODE>.</P>
|
|
261 <P>See appendix A for some sample modeline definitions.</P>
|
|
262
|
|
263 <P><B><A NAME=2.2.1.3.5>2.2.1.3.5. DGA & MPlayer</A></B></P>
|
1612
|
264
|
1682
|
265 <P>DGA is used in two places with <B>MPlayer</B>: The SDL driver can be made to make
|
|
266 use of it (-vo sdl:dga) and within the DGA driver (-vo dga).
|
|
267 The above said is true for both; in the following sections I'll explain
|
|
268 how the DGA driver for <B>MPlayer</B> works.</P>
|
1612
|
269
|
1682
|
270 <P><B><A NAME=2.2.1.3.6>2.2.1.3.6. Features of the DGA driver</A></B></P>
|
|
271
|
|
272 <P>The DGA driver is invoked by specifying -vo dga at the command line.
|
|
273 The default behaviour is to switch to a resolution matching the original
|
|
274 resolution of the video as close as possible. It deliberately ignores the
|
|
275 -vm and -fs switches (enabling of video mode switching and fullscreen) -
|
|
276 it always tries to cover as much area of your screen as possible by switching
|
|
277 the video mode, thus refraining to use a single additional cycle of your CPU
|
|
278 to scale the image.
|
|
279 If you don't like the mode it chooses you may force it to choose the mode
|
|
280 matching closest the resolution you specify by -x and -y.
|
|
281 By providing the -v option, the DGA driver will print, among a lot of other
|
|
282 things, a list of all resolutions supported by your current XF86-Config
|
|
283 file.
|
|
284 Having DGA2 you may also force it to use a certain depth by using the -bpp
|
|
285 option. Valid depths are 15, 16, 24 and 32. It depends on your hardware
|
|
286 whether these depths are natively supported or if a (possibly slow)
|
|
287 conversion has to be done.</P>
|
|
288
|
|
289 <P>If you should be lucky enough to have enough offscreen memory left to
|
|
290 put a whole image there, the DGA driver will use doublebuffering, which
|
|
291 results in much smoother movie replaying. It will tell you whether double-
|
|
292 buffering is enabled or not.</P>
|
1612
|
293
|
1682
|
294 <P>Doublebuffering means that the next frame of your video is being drawn in
|
|
295 some offscreen memory while the current frame is being displayed. When the
|
|
296 next frame is ready, the graphics chip is just told the location in memory
|
|
297 of the new frame and simply fetches the data to be displayed from there.
|
|
298 In the meantime the other buffer in memory will be filled again with new
|
|
299 video data.</P>
|
|
300
|
|
301 Doublebuffering may be switched on by using the option -double and may be
|
|
302 disabled with -nodouble. Current default option is to disable
|
|
303 doublebuffering. When using the DGA driver, onscreen display (OSD) only
|
|
304 works with doublebuffering enabled. However, enabling doublebuffering may
|
|
305 result in a big speed penalty (on my K6-II+ 525 it used an additional 20% of
|
|
306 CPU time!) depending on the implementation of DGA for your hardware.</P>
|
|
307
|
|
308
|
|
309 <P><B><A NAME=2.2.1.3.7>2.2.1.3.7. Speed issues</A></B></P>
|
|
310
|
|
311 <P>Generally spoken, DGA framebuffer access should be at least as fast as using
|
|
312 the X11 driver with the additional benefit of getting a fullscreen image.
|
|
313 The percentage speed values printed by mplayer have to be interpreted with
|
|
314 some care, as for example, with the X11 driver they do not include the time
|
|
315 used by the X-Server needed for the actual drawing. Hook a terminal to a
|
|
316 serial line of your box and start top to see what is really going on in your
|
|
317 box ...</P>
|
|
318
|
|
319 <P>Generally spoken, the speedup done by using DGA against 'normal' use of X11
|
|
320 highly depends on your graphics card and how well the X-Server module for it
|
|
321 is optimized.</P>
|
|
322
|
|
323 <P>If you have a slow system, better use 15 or 16bit depth since they require
|
|
324 only half the memory bandwidth of a 32 bit display.</P>
|
1612
|
325
|
1682
|
326 <P>Using a depth of 24bit is even a good idea if your card natively just supports
|
|
327 32 bit depth since it transfers 25% less data compared to the 32/32 mode.</P>
|
|
328
|
|
329 <P>I've seen some avi files already be replayed on a Pentium MMX 266. AMD K6-2
|
|
330 CPUs might work at 400 MHZ and above.</P>
|
1612
|
331
|
1682
|
332 <P><B><A NAME=2.2.1.3.8>2.2.1.3.8. Known bugs</A></B></P>
|
|
333
|
|
334 <P>Well, according to some developpers of XFree, DGA is quite a beast. They
|
|
335 tell you better not to use it. Its implementation is not always flawless
|
|
336 with every chipset driver for XFree out there.</P>
|
1612
|
337
|
1682
|
338 <P><UL>
|
|
339 <LI>with XFree 4.0.3 and nv.o there is a bug resulting in strange colors
|
|
340 <LI>ATI driver requires to switch mode back more than once after finishing
|
|
341 using of DGA
|
|
342 <LI>some drivers simply fail to switch back to normal resolution (use
|
|
343 Ctrl-Alt-Keypad +, - to switch back manually)
|
|
344 <LI>some drivers simply display strange colors
|
|
345 <LI>some drivers lie about the amount of memory they map into the process's
|
|
346 address space, thus vo_dga won't use doublebuffering (SIS?)
|
|
347 <LI>some drivers seem to fail to report even a single valid mode. In this
|
|
348 case the DGA driver will crash telling you about a nonsense mode of
|
|
349 100000x100000 or the like ...
|
|
350 <LI>OSD only works with doublebuffering enabled
|
|
351 </UL></P>
|
|
352
|
|
353 <P><B><A NAME=2.2.1.3.9>2.2.1.3.9. Future work</A></B></P>
|
|
354
|
|
355 <P><UL><LI>use of the new X11 render interface for OSD
|
|
356 <LI>where is my TODO list ???? :-(((</UL></P>
|
1612
|
357
|
|
358
|
1682
|
359 <P><B><A NAME=2.2.1.3.A>2.2.1.3.A. Some modelines</A></B></P>
|
1612
|
360
|
1682
|
361 <PRE>
|
1612
|
362 Section "Modes"
|
|
363 Identifier "Modes[0]"
|
|
364 Modeline "800x600" 40 800 840 968 1056 600 601 605 628
|
|
365 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425
|
|
366 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
|
|
367 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
|
|
368 Modeline "352x288" 25.10 352 368 416 432 288 296 290 310
|
|
369 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan
|
|
370 Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
|
|
371 EndSection
|
1682
|
372 </PRE>
|
1612
|
373
|
1682
|
374 <P>These entries work fine with my Riva128 chip, using nv.o XServer driver
|
|
375 module.</P>
|
1612
|
376
|
|
377
|
1682
|
378 <P><B><A NAME=2.2.1.3.B>2.2.1.3.B. Bug Reports</A></B></P>
|
1612
|
379
|
1682
|
380 <P>If you experience troubles with the DGA driver please feel free to file
|
|
381 a bug report to me (e-mail address below). Please start mplayer with the
|
|
382 -v option and include all lines in the bug report that start with vo_dga:</P>
|
|
383
|
|
384 <P>Please do also include the version of X11 you are using, the graphics card
|
|
385 and your CPU type. The X11 driver module (defined in XF86-Config) might
|
|
386 also help. Thanks!</P>
|
1612
|
387
|
1682
|
388
|
|
389 <P><I>Acki (acki@acki-netz.de, www.acki-netz.de)</I></P>
|
1612
|
390
|
|
391
|
1682
|
392 <P><B><A NAME=2.2.1.4>2.2.1.4. SDL</A></B></P>
|
1612
|
393
|
1682
|
394 <P>Here are some notes about SDL out in <B>MPlayer</B>.</P>
|
1612
|
395
|
|
396
|
|
397
|
1682
|
398 <P><TABLE BORDER=0>
|
|
399 <TD COLSPAN=4><P><B>There are several commandline switches for SDL:</B></P></TD><TR>
|
|
400 <TD> </TD><TD>-vo sdl:name</TD><TD> </TD><TD>
|
|
401 specifies sdl video driver to use (ie. aalib, dga, x11)</TD><TR>
|
|
402 <TD></TD><TD>-ao sdl:name</TD><TD></TD><TD>specifies sdl audio driver to use (ie. dsp,
|
|
403 esd, arts)</TD><TR>
|
|
404 <TD></TD><TD>-noxv</TD><TD></TD><TD>disables Xvideo hardware acceleration</TD><TR>
|
|
405 <TD></TD><TD>-forcexv</TD><TD></TD><TD>tries to force Xvideo acceleration</TD><TR>
|
1612
|
406
|
1682
|
407 <TD COLSPAN=4><P><B>SDL Keys:</B></P></TD><TR>
|
1612
|
408
|
1682
|
409 <TD></TD><TD>F</TD><TD></TD><TD>toggles fullscreen/windowed mode</TD><TR>
|
|
410 <TD></TD><TD>C</TD><TD></TD><TD>cycles available fullscreen modes</TD><TR>
|
|
411 <TD></TD><TD>W/S</TD><TD></TD><TD>mappings for * and / (mixer control)</TD><TR>
|
1612
|
412
|
1682
|
413 </TABLE></P>
|
1612
|
414
|
1682
|
415 <P><B>KNOWN BUGS:</B></P>
|
|
416 <P><UL><LI>Keys pressed under sdl:aalib console driver repeat forever. (use -vo aa !)
|
|
417 It's bug in SDL, I can't change it (tested with SDL 1.2.1).
|
|
418 </UL></P>
|
1612
|
419
|
1682
|
420 <P><B><A NAME=2.2.1.5>2.2.1.5. SVGAlib</A></B></P>
|
|
421
|
|
422 <P>If you don't have X, you can use the SVGAlib target! Be sure not to use the
|
|
423 -fs switch, since it toggles the usage of the software scaler, and it's
|
|
424 SLOOOW now, unless you have a real fast CPU (and/or MTRR?). :(</P>
|
1612
|
425
|
1682
|
426 <P>Of course you'll have to install svgalib and its development package in
|
|
427 order for <B>MPlayer</B> build its SVGAlib driver (autodetected, but can be
|
|
428 forced), and don't forget to edit /etc/vga/libvga.config to suit your
|
|
429 card & monitor.</P>
|
1612
|
430
|
1682
|
431 <P><B><A NAME=2.2.1.6>2.2.1.6. Framebuffer output (FBdev)</A></B></P>
|
|
432
|
|
433 <P>Whether to build the FBdev target is autodetected during ./configure .
|
|
434 Read the framebuffer documentation in the kernel sources
|
|
435 (Documentation/fb/*) for info on how to enable it, etc.. !</P>
|
1612
|
436
|
1682
|
437 <P>If your card doesn't support VBE 2.0 standard (older ISA/PCI
|
|
438 cards, such as S3 Trio64), only VBE 1.2 (or older?) :
|
|
439 Well, VESAfb is still available, but you'll have to load SciTech Display
|
|
440 Doctor (formerly UniVBE) before booting Linux. Use a DOS boot disk or
|
|
441 whatever. And don't forget to register your UniVBE ;))</P>
|
1612
|
442
|
1682
|
443 <P>The FBdev output takes some additional parameters above the others:</P>
|
1612
|
444
|
1682
|
445 <P><TABLE BORDER=0>
|
|
446 <TD> </TD><TD>-fb</TD><TD> </TD><TD>
|
|
447 specify the framebuffer device to use (/dev/fd0)</TD><TR>
|
|
448 <TD></TD><TD>-fbmode</TD><TD></TD><TD>mode name to use (according to /etc/fb.modes)</TD><TR>
|
|
449 <TD></TD><TD>-fbmodeconfig</TD><TD></TD><TD> config file of modes (default /etc/fb.modes)</TD><TR>
|
|
450 <TD></TD><TD>-monitor_hfreq</TD><TD></TD><TD ROWSPAN=3>IMPORTANT values, see example.conf</TD><TR>
|
|
451 <TD></TD><TD>-monitor_vfreq</TD><TD></TD><TR>
|
|
452 <TD></TD><TD>-monitor_dotclock</TD><TD></TD><TR>
|
|
453 </TABLE></P>
|
1612
|
454
|
1682
|
455 <P>If you want to change to a specific mode, then use</P>
|
1612
|
456
|
1682
|
457 <P><CODE> mplayer -vm -fbmode (NameOfMode) filename</CODE></P>
|
1612
|
458
|
1682
|
459 <P><UL><LI><B>-vm</B> alone will choose the most suitable mode from /etc/fb.modes . Can be
|
|
460 used together with -x and -y options too. The -flip option is supported only
|
|
461 if the movie's pixel format matches the video mode's pixel format.
|
|
462 Pay attention to the bpp value, fbdev driver tries to use the current,
|
|
463 or if you specify the -bpp option, then that.
|
|
464 <LI><B>-zoom</B> option isn't supported (software scaling is slow). -fs option
|
|
465 isn't supported. You can't use 8bpp (or less) modes.</UL></P>
|
1612
|
466
|
1682
|
467 <P>NOTE: FBdev video mode changing _does not work_ with the VESA framebuffer,
|
|
468 and don't ask for it, since it's not an <B>MPlayer</B> limitation.</P>
|
1612
|
469
|
1682
|
470 <P><B><A NAME=2.2.1.7>2.2.1.7. Matrox framebuffer (mga_vid)</A></B></P>
|
1612
|
471
|
1682
|
472 <P>This section is about the Matrox G200/G400/G450 BES (Back-End Scaler)
|
|
473 support, the mga_vid kernel driver. It's active developed by me (A'rpi), and
|
|
474 it has hardware VSYNC support with triple buffering. It works on both
|
|
475 framebuffer console and under X.</P>
|
|
476
|
|
477 <P>To use it, you first have to compile mga_vid.o:</P>
|
1612
|
478
|
1682
|
479 <P><CODE> cd drivers<BR>
|
|
480 make</CODE></P>
|
1612
|
481
|
1682
|
482 <P>Then create /dev/mga_vid device:</P>
|
1612
|
483
|
1682
|
484 <P><CODE> mknod /dev/mga_vid c 178 0</CODE></P>
|
1612
|
485
|
1682
|
486 <P>and load the driver with</P>
|
|
487
|
|
488 <P><CODE> insmod mga_vid.o</CODE></P>
|
1612
|
489
|
1682
|
490 <P>You should verify the memory size detection using the 'dmesg' command. If
|
|
491 it's bad, use the mga_ram_size option (rmmod mga_vid first), specify card's
|
|
492 memory size in MB:</P>
|
1612
|
493
|
1682
|
494 <P><CODE> insmod mga_vid.o mga_ram_size=16</CODE></P>
|
1612
|
495
|
1682
|
496 <P>To make it load/unload automatically when needed, insert the following line
|
|
497 at the end of /etc/modules.conf:</P>
|
1612
|
498
|
1682
|
499 <P><CODE> alias char-major-178 mga_vid</CODE></P>
|
1612
|
500
|
1682
|
501 <P>Then run</P>
|
1612
|
502
|
1682
|
503 <P><CODE> depmod -a</CODE></P>
|
1612
|
504
|
1682
|
505 <P>Now you have to (re)compile <B>MPlayer</B>, ./configure will detect /dev/mga_vid
|
|
506 and build the 'mga' driver. Using it from <B>MPlayer</B> goes by '-vo mga' if
|
|
507 you have matroxfb console, or '-vo xmga' under XFree86 3.x.x or 4.x.x.</P>
|
|
508
|
|
509 <P>Note: '-vo xmga' works under XFree86 4.x.x, but it conflicts with the Xv
|
|
510 driver, so avoid using both. If you messed up Xv with mga, try running
|
|
511 <B>MPlayer</B> with '-vo mga' . It should fix Xv.</P>
|
1612
|
512
|
|
513
|
1682
|
514 <P><B><A NAME=2.2.1.8>2.2.1.8. SiS 6326 framebuffer (sis_vid)</A></B></P>
|
|
515
|
|
516 <P>SiS 6326 YUV Framebuffer driver -> sis_vid kernel driver</P>
|
1612
|
517
|
1682
|
518 <P>Its interface should be compatible with the mga_vid, but the driver was not
|
|
519 updated after the mga_vid changes, so it's outdated now. Volunteers
|
|
520 needed to test it and bring the code up-to-date.</P>
|
1612
|
521
|
1682
|
522 <P><B><A NAME=2.2.1.9>2.2.1.9. 3dfx YUV support</A></B></P>
|
1612
|
523
|
1682
|
524 <P>3dfx has native YUV+scaler support, using /dev/3dfx (tdfx.o driver?)
|
|
525 The /dev/3dfx kernel driver exists only for 2.2.x kernels, for use with
|
|
526 Glide 2.x Linux ports. It's not tested with <B>MPlayer</B>, and so no more
|
|
527 supported. Volunteers needed to test it and bring the code up-to-date.</P>
|
1612
|
528
|
1682
|
529 <P><B><A NAME=2.2.1.10>2.2.1.10. OpenGL output</A></B></P>
|
1612
|
530
|
1682
|
531 <P><B>MPlayer</B> support displaying movies using OpenGL. Unfortunately, not all
|
|
532 drivers support this ability. For example the Utah-GLX drivers
|
|
533 (for XFree86 3.3.6) have it, with all cards.
|
|
534 See <A HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A>
|
|
535 for details about how to install it.</P>
|
1612
|
536
|
1682
|
537 <P>XFree86(DRI) >= 4.0.3 supports it only with Matrox, and Radeon cards.
|
|
538 See <A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A> for download,
|
|
539 and installation instructions.</P>
|
1612
|
540
|
1682
|
541 <P><B><A NAME=2.2.1.11>2.2.1.11. AAlib - text mode displaying</B></P>
|
1612
|
542
|
1682
|
543 <P><B>AAlib</B> is a library for displaying graphics in text mode, using powerful
|
|
544 ASCII renderer. There are LOTS of programs already supporting it, like Doom,
|
|
545 Quake, etc. MPlayer contains a very usable driver for it.
|
|
546 If ./configure detects aalib installed, the aalib libvo driver will be built.</P>
|
1612
|
547
|
1682
|
548 <P><TABLE BORDER=0>
|
|
549 <TD COLSPAN=4><P><B>You can use some keys in the AA Window to change rendering options:</B></P></TD><TR>
|
|
550 <TD> </TD><TD>1</TD><TD> </TD><TD>decrease contrast</TD><TR>
|
|
551 <TD></TD><TD>2</TD><TD></TD><TD>increase contrast</TD><TR>
|
|
552 <TD></TD><TD>3</TD><TD></TD><TD>decrease brightness</TD><TR>
|
|
553 <TD></TD><TD>4</TD><TD></TD><TD>increase brightness</TD><TR>
|
|
554 <TD></TD><TD>5</TD><TD></TD><TD>switch fast rendering on/off</TD><TR>
|
|
555 <TD></TD><TD>6</TD><TD></TD><TD>set dithering mode (none, error distribution, floyd steinberg)</TD><TR>
|
|
556 <TD></TD><TD>7</TD><TD></TD><TD>invert image</TD><TR>
|
|
557 <TD></TD><TD>a</TD><TD></TD><TD>toggles between aa and mplayer control)</TD><TR>
|
|
558
|
|
559 <TD COLSPAN=4><P><B>The following command line options can be used:</B></P></TD><TR>
|
1612
|
560
|
1682
|
561 <TD></TD><TD>-aaosdcolor=V</TD><TD></TD><TD>change osd color</TD><TR>
|
|
562 <TD></TD><TD>-aasubcolor=V</TD><TD></TD><TD>change subtitle color</TD><TR>
|
|
563 <TD COLSPAN=3></TD><TD><P><I>where V can be: (0/normal, 1/dark, 2/bold, 3/boldfont, 4/reverse, 5/special)</P></TD><TR>
|
1612
|
564
|
1682
|
565 <TD COLSPAN=4><P><B>AAlib itselves provides a large sum of options.
|
|
566 Here are some important:</P></B></TD><TR>
|
|
567
|
|
568 <TD></TD><TD>-aadriver</TD><TD></TD><TD>set recommended aa driver (X11, curses, linux)</TD><TR>
|
|
569 <TD></TD><TD>-aaextended</TD><TD></TD><TD>use all 256 characters</TD><TR>
|
|
570 <TD></TD><TD>-aaeight</TD><TD></TD><TD>use eight bit ascii</TD><TR>
|
|
571 <TD></TD><TD>-aahelp</TD><TD></TD><TD>prints out all aalib options</TD><TR>
|
|
572 </TABLE></P>
|
|
573
|
|
574 <P>NOTE: the rendering is very CPU intensive, especially when using AA-on-X
|
|
575 (using aalib on X), and it's least CPU intensive on standard,
|
|
576 non-framebuffer console. Use SVGATextMode to set up a big textmode,
|
|
577 then enjoy! (secondary head Hercules cards rock :)) (anyone can enhance
|
|
578 bdev to do conversion/dithering to hgafb? Would be neat :)</P>
|
1612
|
579
|
1682
|
580 <P>Use the -framedrop option if your comp isn't fast enough to render all frames!</P>
|
1612
|
581
|
1682
|
582 <P>Playing on terminal you'll get better speed and quality using the linux driver, not
|
|
583 curses (-aadriver linux). But therefore you need write access on /dev/vcsa<terminal>!
|
|
584 That isn't autodetected by aalib, bu vo_aa tries to find the best mode.
|
|
585 See http://aa-project.sourceforge.net/tune/ for further tuning issues.</P>
|
1612
|
586
|
1682
|
587 <P><B><A NAME=2.2.1.A>2.2.1.A. TV-out support</A></B></P>
|
1612
|
588
|
1682
|
589 <P><B><A NAME=2.2.1.A.1>2.2.1.A.1. Matrox cards</A></B></P>
|
1612
|
590
|
1682
|
591 <P><I> What I'd love to see in mplayer is the the same feature that I see in my
|
|
592 windows box. When I start a movie in windows (in a window or in full screen)
|
|
593 the movie is also redirected to the tv-out and I can also see it full screen
|
|
594 on my tv. I love this feature and was wondering how hard it would be to add
|
|
595 such a feature to mplayer.</I></P>
|
1612
|
596
|
1682
|
597 <P>It's a driver limitation. BES (Back-End Scaler, it's the overlay generator
|
|
598 and YUV scaling engine of G200/G400/G450 cards) works only with CRTC1.
|
|
599 Normally, CRTC1 (textmode, every bpp gfx and BES) is routed to HEAD1,
|
|
600 and CRTC2 (only 16/32bpp gfx) is routed to HEAD2 (TV-out).</P>
|
1612
|
601
|
1682
|
602 <P>Under linux, you have two choices to get TV-out working:</P>
|
1612
|
603
|
1682
|
604 <P><UL>
|
|
605 <LI>Using X 4.0.x + the HAL driver from matrox, so you'll get dual-head
|
|
606 support, and you'll be able to redirect second output to the TV.
|
|
607 Unfortunately it has Macrovision encryption enabled, so it will
|
|
608 only work on directly-connected TV, no through VCR.
|
|
609 Other problem is that Xv doesn't work on the second head.
|
|
610 (I don't know how Windows solve it, maybe it swaps the CRTCs between
|
|
611 the heads, or just uses YUV framebuffer of second DAC with some trick)
|
|
612 <LI>Using matroxfb with dual-head support enabled (2.4.x kernels).
|
|
613 You'll be able to get a framebuffer console (using CRTC2, so it's
|
|
614 slow), and TV-out (using CRTC1, with BES support).
|
|
615 You have to forget X while using this kind of TV-out! :(
|
|
616 </UL></P>
|
1612
|
617
|
1682
|
618 <P>Follow these instructions:</P>
|
1612
|
619
|
1682
|
620 <P><UL>
|
|
621 <LI>Compile all the matrox-related things to modules in the kernel.
|
|
622 (you MUST compile them to modules, at least I couldn't get them
|
|
623 working built-in yet)
|
|
624 [reboot to new kernel & install modules, but don't load them yet!]
|
|
625 <P><CODE>
|
|
626 cd TVout<BR>
|
|
627 ./compile.sh</CODE></P>
|
|
628 <LI>Run the 'modules' script from the TV-out directory of mplayer.
|
|
629 It will switch your console to framebuffer.
|
|
630 Change to tty1 (ALT+F1)!
|
|
631 Now run the script 'independent', it will set up your tty's:
|
|
632 <P>tty 1,2: fb console, CRTC2, head 1 (monitor)<BR>
|
|
633 tty 3,4,5...: framebuffer+BES, CRTC1, head 2 (TV-out)</P>
|
|
634 You should run the scripts TV-* and Mon-* to set up resolutions:
|
|
635 <P>change to tty1 (ALT+F1), and run Mon-* (one of them)<BR>
|
|
636 change to tty3 (ALT+F3) and then back to tty1 (ALT+F1)</P>
|
|
637 (this change will select tty3 on /dev/fb1 - tricky)<BR>
|
|
638 <P>run TV-* (one of them)</P>
|
|
639 (now you'll get a console on your PAL TV - don't know about NTSC)
|
|
640 <P>Now if you start mplayer (on tty1), the picture will show up on
|
|
641 the tty3, so you'll see it on your TV or second monitor.</P>
|
|
642 </UL></P>
|
1612
|
643
|
1682
|
644 <P>Yes, it is a bit 'hack' now. But I'm waiting for the marvel
|
|
645 project to be finished, it will provide real TV-out drivers, I hope.</P>
|
1612
|
646
|
1682
|
647 <P>My current problem is that BES is working only with CRTC1. So picture
|
|
648 will always shown up on head routed to CRTC1 (normaly the monitor),
|
|
649 so i have to swap CRTC's, but this way your console will framebuffer
|
|
650 (CRTC2 can't do text-mode) and a bit slow (no acceleration). :(</P>
|
1612
|
651
|
1682
|
652 <P><I>Anyway i also just get monochrome output on the tv ...</I>
|
|
653 Maybe you have NTSC TV? Or just didn't run one of TV-* scripts.</P>
|
1612
|
654
|
1682
|
655 <BR>
|
|
656 <HR>MPlayer documentation project
|
1612
|
657
|
|
658 </BODY>
|
|
659 </HTML>
|