comparison DOCS/xml/en/video.xml @ 9675:62c5a17038ba

XML version of MPlayer's doc
author nicolas
date Sun, 23 Mar 2003 23:35:12 +0000
parents
children 142c42fa0986
comparison
equal deleted inserted replaced
9674:461f71ba8af4 9675:62c5a17038ba
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect2 id="video-dev">
3 <title>Video output devices</title>
4
5 <sect3 id="mtrr">
6 <title>Setting up MTRR</title>
7
8 <para>
9 It is VERY recommended to check if the MTRR registers
10 are set up properly, because they can give a big performance boost.
11 </para>
12
13 <para>
14 Do a <command>/proc/mtrr</command>:
15 <screen>
16 <prompt>--($:~)--</prompt> cat /proc/mtrr
17 reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
18 reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1<!--
19 --></screen>
20 </para>
21
22 <para>
23 It's right, shows my Matrox G400 with 16MB memory. I did this from
24 XFree 4.x.x , which sets up MTRR registers automatically.
25 </para>
26
27 <para>
28 If nothing worked, you have to do it manually. First, you have to find the
29 base address. You have 3 ways to find it:
30
31 <orderedlist>
32 <listitem><para>
33 from X11 startup messages, for example:
34 <screen>
35 (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
36 (--) SVGA: Linear framebuffer at 0xD8000000<!--
37 --></screen>
38 </para></listitem>
39 <listitem><para>
40 from <filename>/proc/pci</filename> (use <command>lspci -v</command>
41 command):
42 <screen>
43 01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
44 Memory at d8000000 (32-bit, prefetchable)
45 </screen>
46 </para></listitem>
47 <listitem><para>
48 from mga_vid kernel driver messages (use <command>dmesg</command>):
49 <screen>mga_mem_base = d8000000</screen>
50 </para></listitem>
51 </orderedlist>
52 </para>
53
54 <para>
55 Then let's find the memory size. This is very easy, just convert video RAM
56 size to hexadecimal, or use this table:
57 <informaltable frame="none">
58 <tgroup cols="2">
59 <tbody>
60 <row><entry>1 MB</entry><entry>0x100000</entry></row>
61 <row><entry>2 MB</entry><entry>0x200000</entry></row>
62 <row><entry>4 MB</entry><entry>0x400000</entry></row>
63 <row><entry>8 MB</entry><entry>0x800000</entry></row>
64 <row><entry>16 MB</entry><entry>0x1000000</entry></row>
65 <row><entry>32 MB</entry><entry>0x2000000</entry></row>
66 </tbody>
67 </tgroup>
68 </informaltable>
69 </para>
70
71 <para>
72 You know base address and memory size, let's setup MTRR registers!
73 For example, for the Matrox card above (<literal>base=0xd8000000</literal>)
74 with 32MB ram (<literal>size=0x2000000</literal>) just execute:
75 <screen>
76 echo "base=0xd8000000 size=0x2000000 type=write-combining" &gt;| /proc/mtrr
77 </screen>
78 </para>
79
80 <para>
81 Not all CPUs support MTRRs. For example older K6-2's (around 266MHz,
82 stepping 0) doesn't support MTRR, but stepping 12's do (<command>cat /proc/cpuinfo
83 </command> to check it).
84 </para>
85 </sect3>
86
87 <sect3 id="output-trad">
88 <title>Video outputs for traditional video cards</title>
89 <sect4 id="xv">
90 <title>Xv</title>
91
92 <para>
93 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 '<option>-vo
95 xv</option>' uses. Also, this is driver supports adjusting
96 brightness/contrast/hue/etc (unless you use the old, slow DirectShow DivX
97 codec, which supports it everywhere), see the man page.
98 </para>
99
100 <para>
101 In order to make this work, be sure to check the following:
102
103 <orderedlist>
104 <listitem><para>
105 You have to use XFree86 4.0.2 or newer (former versions don't have XVideo)
106 </para></listitem>
107 <listitem><para>
108 Your card actually supports hardware acceleration (modern cards do)
109 </para></listitem>
110 <listitem><para>
111 X loads the XVideo extension, it's something like this:
112 <programlisting>(II) Loading extension XVideo</programlisting>
113 in <filename>/var/log/XFree86.0.log</filename>
114 <note><para>
115 This loads only the XFree86's extension. In a good install, this is
116 always loaded, and doesn't mean that the <emphasis role="bold">card's</emphasis>
117 XVideo support is loaded!
118 </para></note>
119 </para></listitem>
120 <listitem><para>
121 Your card has Xv support under Linux. To check, try
122 <command>xvinfo</command>, it is the part of the XFree86 distribution. It
123 should display a long text, similar to this:
124 <screen>
125 X-Video Extension version 2.2
126 screen #0
127 Adaptor #0: "Savage Streams Engine"
128 number of ports: 1
129 port base: 43
130 operations supported: PutImage
131 supported visuals:
132 depth 16, visualID 0x22
133 depth 16, visualID 0x23
134 number of attributes: 5
135 (...)
136 Number of image formats: 7
137 id: 0x32595559 (YUY2)
138 guid: 59555932-0000-0010-8000-00aa00389b71
139 bits per pixel: 16
140 number of planes: 1
141 type: YUV (packed)
142 id: 0x32315659 (YV12)
143 guid: 59563132-0000-0010-8000-00aa00389b71
144 bits per pixel: 12
145 number of planes: 3
146 type: YUV (planar)
147 (...etc...)<!--
148 --></screen>
149 It must support YUY2 packed, and YV12 planar pixel formats to be usable
150 with <application>MPlayer</application>.
151 </para></listitem>
152 <listitem><para>
153 And finally, check if <application>MPlayer</application> was compiled
154 with 'xv' support. <filename>./configure</filename> prints this.
155 </para></listitem>
156 </orderedlist>
157 </para>
158
159 <sect5 id="tdfx">
160 <title>3dfx cards</title>
161
162 <para>
163 Older 3dfx drivers were known to have problems with XVideo acceleration, it
164 didn't support either YUY2 or YV12, and so. Verify that you have XFree86
165 version 4.2.0 or greater, it works OK with YV12 and YUY2. Previous
166 versions, including 4.1.0, <emphasis role="bold">crashes with YV12</emphasis>.
167 If you experience strange effects using -vo xv, try SDL (it has XVideo too) and
168 see if it helps. Check the <link linkend="sdl">SDL section</link> for details.
169 </para>
170
171 <para>
172 <emphasis role="bold">OR</emphasis>, try the NEW
173 <option>-vo tdfxfb</option> driver! See the <link linkend="tdfxfb">tdfxfb</link>
174 section.
175 </para>
176 </sect5>
177
178
179 <sect5 id="s3">
180 <title>S3 cards</title>
181
182 <para>
183 S3 Savage3D's should work fine, but for Savage4, use XFree86 version 4.0.3
184 or greater (in case of image problems, try 16bpp). As for S3 Virge: there is
185 xv support, but the card itself is very slow, so you better sell it.
186 </para>
187
188 <note>
189 <para>
190 It's currently unclear which Savage models lack YV12 support, and convert by
191 driver (slow). If you suspect your card, get a newer driver, or ask politely
192 on the mplayer-users mailing list for an MMX/3DNow enabled driver.
193 </para>
194 </note>
195 </sect5>
196
197
198 <sect5 id="nvidia">
199 <title>nVidia cards</title>
200
201 <para>
202 nVidia isn't a very good choice under Linux (according to nVidia, this is
203 <link linkend="nvidia-opinions">not true</link>)... You'll have to use the
204 binary closed-source nVidia driver, available at nVidia's web site. The
205 standard XFree86 driver doesn't support XVideo for these cards, due to
206 nVidia's closed sources/specifications.
207 </para>
208
209 <para>
210 As far as I know the latest XFree86 driver contains XVideo support for
211 GeForce 2 and 3.
212 </para>
213
214 <para>
215 Riva128 cards don't have XVideo support even with the nVidia driver :(
216 Complain to nVidia.
217 </para>
218 </sect5>
219
220
221 <sect5 id="ati">
222 <title>ATI cards</title>
223
224 <para>
225 The <ulink url="http://www.linuxvideo.org/gatos">GATOS driver</ulink>
226 (which you should use, unless you have Rage128 or Radeon) has VSYNC enabled
227 by default. It means that decoding speed (!) is synced to the monitor's
228 refresh rate. If playing seems to be slow, try disabling VSYNC somehow, or
229 set refresh rate to a n*(fps of the movie) Hz.
230 </para>
231
232 <para>
233 Radeon VE - currently only XFree86 CVS has driver for this card, version
234 4.1.0 doesn't. And no TV out support. Of course with
235 <application>MPlayer</application> you can
236 happily get <emphasis role="bold">accelerated</emphasis> display, with or without
237 <emphasis role="bold">TV output</emphasis>, and no libraries or X are needed.
238 Read the <link linkend="vidix">VIDIX</link> section.
239 </para>
240 </sect5>
241
242
243 <sect5 id="neomagic">
244 <title>NeoMagic cards</title>
245
246 <para>
247 These cards can be found in many laptops. Unfortunately, the driver in X
248 4.2.0 can't do Xv, but we have a modified, Xv-capable driver for you.
249 <ulink url="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/neomagic_drv.o.4.2.0.bz2">
250 Download from here</ulink>.
251 Driver provided by Stefan Seyfried.
252 </para>
253
254 <para>
255 To allow playback of DVD sized content change your XF86Config like this:
256 <programlisting>
257 Section "Device"
258 [...]
259 Driver "neomagic"
260 <emphasis>Option "OverlayMem" "829440"</emphasis>
261 [...]
262 EndSection<!--
263 --></programlisting>
264 </para>
265 </sect5>
266
267
268 <sect5 id="trident">
269 <title>Trident cards</title>
270 <para>
271 If you want to use xv with a trident card, provided that it doesn't work
272 with 4.1.0, install XFree 4.2.0. 4.2.0 adds support for fullscreen xv
273 support with the Cyberblade XP card.
274 </para>
275 </sect5>
276
277
278 <sect5 id="kyro">
279 <title>Kyro/PowerVR cards</title>
280 <para>
281 If you want to use Xv with a Kyro based card (for example Hercules
282 Prophet 4000XT), you should download the drivers from the
283 <ulink url="http://www.powervr.com/">PowerVR site</ulink>
284 </para>
285 </sect5>
286 </sect4>
287
288 <!-- ********** -->
289
290 <sect4 id="dga">
291 <title>DGA</title>
292
293 <formalpara>
294 <title>PREAMBLE</title>
295 <para>
296 This document tries to explain in some words what DGA is in general and
297 what the DGA video output driver for <application>MPlayer</application>
298 can do (and what it can't).
299 </para>
300 </formalpara>
301
302 <formalpara>
303 <title>WHAT IS DGA</title>
304 <para>
305 <acronym>DGA</acronym> is short for <emphasis>Direct Graphics
306 Access</emphasis> and is a means for a program to bypass the X server and
307 directly modifying the framebuffer memory. Technically spoken this happens
308 by mapping the framebuffer memory into the memory range of your process.
309 This is allowed by the kernel only if you have superuser privileges. You
310 can get these either by logging in as <systemitem
311 class="username">root</systemitem> or by setting the SUID bit on the
312 <application>MPlayer</application> executable (<emphasis role="bold">not
313 recommended</emphasis>).
314 </para>
315 </formalpara>
316 <para>
317 There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was
318 introduced with XFree 4.0.1.
319 </para>
320
321 <para>
322 DGA1 provides only direct framebuffer access as described above. For
323 switching the resolution of the video signal you have to rely on the
324 XVidMode extension.
325 </para>
326
327 <para>
328 DGA2 incorporates the features of XVidMode extension and also allows
329 switching the depth of the display. So you may, although basically
330 running a 32 bit depth X server, switch to a depth of 15 bits and vice
331 versa.
332 </para>
333
334 <para>
335 However DGA has some drawbacks. It seems it is somewhat dependent on the
336 graphics chip you use and on the implementation of the X server's video
337 driver that controls this chip. So it does not work on every system...
338 </para>
339
340 <formalpara>
341 <title>INSTALLING DGA SUPPORT FOR MPLAYER</title>
342
343 <para>
344 First make sure X loads the DGA extension, see in
345 <filename>/var/log/XFree86.0.log</filename>:
346
347 <programlisting>(II) Loading extension XFree86-DGA</programlisting>
348
349 See, XFree86 4.0.x or greater is VERY RECOMMENDED!
350 <application>MPlayer</application>'s DGA driver is autodetected by
351 <filename>./configure</filename>, or you can force it
352 with <option>--enable-dga</option>.
353 </para>
354 </formalpara>
355
356 <para>
357 If the driver couldn't switch to a smaller resolution, experiment with
358 options <option>-vm</option> (only with X 3.3.x), <option>-fs</option>,
359 <option>-bpp</option>, <option>-zoom</option> to find a video mode that
360 the movie fits in. There is no converter right now :(
361 </para>
362
363 <para>
364 Become <systemitem class="username">root</systemitem>. DGA needs root
365 access to be able to write directly video memory. If you want to run it as
366 user, then install <application>MPlayer</application> SUID root:
367
368 <screen>
369 chown root /usr/local/bin/mplayer
370 chmod 750 /usr/local/bin/mplayer
371 chmod +s /usr/local/bin/mplayer
372 </screen>
373
374 Now it works as a simple user, too.
375 </para>
376
377 <caution>
378 <title>Security risk</title>
379 <para>
380 This is a <emphasis role="bold">big</emphasis> security risk! Never do this
381 on a server or on a computer can be accessed by other people because they
382 can gain root privileges through SUID root
383 <application>MPlayer</application>.
384 </para>
385 </caution>
386
387 <para>
388 Now use <option>-vo dga</option> option, and there you go! (hope so:) You
389 should also try if the <option>-vo sdl:dga</option> option works for you!
390 It's much faster!
391 </para>
392
393
394 <formalpara id="dga-modelines">
395 <title>RESOLUTION SWITCHING</title>
396
397 <para>
398 The DGA driver allows for switching the resolution of the output signal.
399 This avoids the need for doing (slow) software scaling and at the same time
400 provides a fullscreen image. Ideally it would switch to the exact
401 resolution (except for honoring aspect ratio) of the video data, but the X
402 server only allows switching to resolutions predefined in
403 <filename>/etc/X11/XF86Config</filename>
404 (<filename>/etc/X11/XF86Config-4</filename> for XFree 4.X.X respectively).
405 Those are defined by so-called modelines and depend on
406 the capabilities of your video hardware. The X server scans this config
407 file on startup and disables the modelines not suitable for your hardware.
408 You can find out which modes survive with the X11 log file. It can be found
409 at: <filename>/var/log/XFree86.0.log</filename>.
410 </para>
411 </formalpara>
412
413 <para>
414 These entries are known to work fine with a Riva128 chip, using the nv.o X
415 server driver module.
416 </para>
417
418
419 <para><programlisting>
420 Section "Modes"
421 Identifier "Modes[0]"
422 Modeline "800x600" 40 800 840 968 1056 600 601 605 628
423 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425
424 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
425 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
426 Modeline "352x288" 25.10 352 368 416 432 288 296 290 310
427 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan
428 Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
429 EndSection
430 </programlisting></para>
431
432
433 <formalpara>
434 <title>DGA &amp; MPLAYER</title>
435 <para>
436 DGA is used in two places with <application>MPlayer</application>: The SDL
437 driver can be made to make use of it (<option>-vo sdl:dga</option>) and
438 within the DGA driver (<option>-vo dga</option>). The above said is true
439 for both; in the following sections I'll explain how the DGA driver for
440 <application>MPlayer</application> works.
441 </para>
442 </formalpara>
443
444
445 <formalpara>
446 <title>FEATURES</title>
447
448 <para>
449 The DGA driver is invoked by specifying <option>-vo dga</option> at the
450 command line. The default behavior is to switch to a resolution matching
451 the original resolution of the video as close as possible. It deliberately
452 ignores the <option>-vm</option> and <option>-fs</option> options
453 (enabling of video mode switching and fullscreen) - it always tries to
454 cover as much area of your screen as possible by switching the video mode,
455 thus refraining to use a single additional cycle of your CPU to scale the
456 image. If you don't like the mode it chooses you may force it to choose
457 the mode matching closest the resolution you specify by <option>-x</option>
458 and <option>-y</option>. By providing the <option>-v</option> option, the
459 DGA driver will print, among a lot of other things, a list of all
460 resolutions supported by your current <filename>XF86Config</filename> file.
461 Having DGA2 you may also force it to use a certain depth by using the
462 <option>-bpp</option> option. Valid depths are 15, 16, 24 and 32. It
463 depends on your hardware whether these depths are natively supported or if
464 a (possibly slow) conversion has to be done.
465 </para>
466 </formalpara>
467 <para>
468 If you should be lucky enough to have enough offscreen memory left to
469 put a whole image there, the DGA driver will use doublebuffering, which
470 results in much smoother movie replaying. It will tell you whether
471 double-buffering is enabled or not.
472 </para>
473
474 <para>
475 Doublebuffering means that the next frame of your video is being drawn in
476 some offscreen memory while the current frame is being displayed. When the
477 next frame is ready, the graphics chip is just told the location in memory
478 of the new frame and simply fetches the data to be displayed from there.
479 In the meantime the other buffer in memory will be filled again with new
480 video data.
481 </para>
482
483 <para>
484 Doublebuffering may be switched on by using the option
485 <option>-double</option> and may be disabled with
486 <option>-nodouble</option>. Current default option is to disable
487 doublebuffering. When using the DGA driver, onscreen display (OSD) only
488 works with doublebuffering enabled. However, enabling doublebuffering may
489 result in a big speed penalty (on my K6-II+ 525 it used an additional 20%
490 of CPU time!) depending on the implementation of DGA for your hardware.
491 </para>
492
493
494 <formalpara>
495 <title>SPEED ISSUES</title>
496
497 <para>
498 Generally spoken, DGA framebuffer access should be at least as fast as
499 using the X11 driver with the additional benefit of getting a fullscreen
500 image. The percentage speed values printed by
501 <application>MPlayer</application> have to be interpreted with some care,
502 as for example, with the X11 driver they do not include the time used by
503 the X server needed for the actual drawing. Hook a terminal to a serial
504 line of your box and start <command>top</command> to see what is really
505 going on in your box.
506 </para>
507 </formalpara>
508
509 <para>
510 Generally spoken, the speedup done by using DGA against 'normal' use of X11
511 highly depends on your graphics card and how well the X server module for it
512 is optimized.
513 </para>
514
515 <para>
516 If you have a slow system, better use 15 or 16 bit depth since they require
517 only half the memory bandwidth of a 32 bit display.
518 </para>
519
520 <para>
521 Using a depth of 24 bit is even a good idea if your card natively just supports
522 32 bit depth since it transfers 25% less data compared to the 32/32 mode.
523 </para>
524
525 <para>
526 I've seen some AVI files already be replayed on a Pentium MMX 266. AMD K6-2
527 CPUs might work at 400 MHZ and above.
528 </para>
529
530
531 <formalpara>
532 <title>KNOWN BUGS</title>
533
534 <para>
535 Well, according to some developers of XFree, DGA is quite a beast. They
536 tell you better not to use it. Its implementation is not always flawless
537 with every chipset driver for XFree out there.
538 </para>
539 </formalpara>
540
541 <itemizedlist>
542 <listitem><simpara>
543 With XFree 4.0.3 and <filename>nv.o</filename> there is a bug resulting
544 in strange colors.
545 </simpara></listitem>
546 <listitem><simpara>
547 ATI driver requires to switch mode back more than once after finishing
548 using of DGA.
549 </simpara></listitem>
550 <listitem><simpara>
551 Some drivers simply fail to switch back to normal resolution (use
552 <keycap>Ctrl</keycap>+<keycap>Alt</keycap>+<keycap>Keypad +</keycap> and
553 <keycap>Ctrl</keycap>+<keycap>Alt</keycap>+<keycap>Keypad -</keycap>
554 to switch back manually).
555 </simpara></listitem>
556 <listitem><simpara>
557 Some drivers simply display strange colors.
558 </simpara></listitem>
559 <listitem><simpara>
560 Some drivers lie about the amount of memory they map into the process's
561 address space, thus vo_dga won't use doublebuffering (SIS?).
562 </simpara></listitem>
563 <listitem><simpara>
564 Some drivers seem to fail to report even a single valid mode. In this
565 case the DGA driver will crash telling you about a nonsense mode of
566 100000x100000 or something like that.
567 </simpara></listitem>
568 <listitem><simpara>
569 OSD only works with doublebuffering enabled (else it flickers).
570 </simpara></listitem>
571 </itemizedlist>
572
573 </sect4>
574 <!--</sect3>-->
575
576 <!-- ********** -->
577
578 <sect4 id="sdl">
579 <title>SDL</title>
580
581 <para>
582 SDL (Simple Directmedia Layer) is basically a unified
583 video/audio interface. Programs that use it know only about SDL, and not
584 about what video or audio driver does SDL actually use. For example a Doom
585 port using SDL can run on svgalib, aalib, X, fbdev, and others, you only
586 have to specify the (for example) video driver to use with the
587 <envar>SDL_VIDEODRIVER</envar> environment variable. Well, in theory.
588 </para>
589
590 <para>
591 With <application>MPlayer</application>, we used its X11 driver's software
592 scaler ability for cards/drivers that doesn't support XVideo, until we made
593 our own (faster, nicer) software scaler. Also we used its aalib output, but
594 now we have ours which is more comfortable. Its DGA mode was better than
595 ours, until recently. Get it now? :)
596 </para>
597
598 <para>
599 It also helps with some buggy drivers/cards if the video is jerky (not slow
600 system problem), or audio is lagging.
601 </para>
602
603 <para>
604 SDL video output supports displaying subtitles under the movie, on the (if
605 present) black bar.
606 </para>
607
608 <variablelist>
609 <title>There are several command line switches for SDL:</title>
610 <varlistentry>
611 <term><option>-vo sdl:<replaceable>name</replaceable></option></term>
612 <listitem><simpara>
613 specifies SDL video driver to use (i.e. <literal>aalib</literal>,
614 <literal>dga</literal>, <literal>x11</literal>)
615 </simpara></listitem>
616 </varlistentry>
617 <varlistentry>
618 <term><option>-ao sdl:<replaceable>name</replaceable></option></term>
619 <listitem><simpara>
620 specifies SDL audio driver to use (i.e. <literal>dsp</literal>,
621 <literal>esd</literal>, <literal>arts</literal>)
622 </simpara></listitem>
623 </varlistentry>
624 <varlistentry>
625 <term><option>-noxv</option></term>
626 <listitem><simpara>
627 disables XVideo hardware acceleration
628 </simpara></listitem>
629 </varlistentry>
630 <varlistentry>
631 <term><option>-forcexv</option></term>
632 <listitem><simpara>
633 tries to force XVideo acceleration
634 </simpara></listitem>
635 </varlistentry>
636 </variablelist>
637
638 <table>
639 <title>SDL keys</title>
640 <tgroup cols="2">
641 <thead>
642 <row><entry>Key</entry><entry>Action</entry></row>
643 </thead>
644 <tbody>
645 <row><entry><keycap>F</keycap></entry><entry>
646 toggles fullscreen/windowed mode
647 </entry></row>
648 <row><entry><keycap>C</keycap></entry><entry>
649 cycles available fullscreen modes
650 </entry></row>
651 <row><entry><keycap>W</keycap>/<keycap>S</keycap></entry><entry>
652 mappings for <keycap>*</keycap> and <keycap>/</keycap> (mixer control)
653 </entry></row>
654 </tbody>
655 </tgroup>
656 </table>
657
658 <itemizedlist>
659 <title>Known bugs:</title>
660 <listitem><simpara>
661 Keys pressed under sdl:aalib console driver repeat forever. (use
662 <option>-vo aa</option>!) It's bug in SDL, I can't change it (tested with
663 SDL 1.2.1).
664 </simpara></listitem>
665 <listitem><simpara>
666 DO NOT USE SDL with GUI! It won't work as it should.
667 </simpara></listitem>
668 </itemizedlist>
669 </sect4>
670
671
672 <sect4 id="svgalib">
673 <title>SVGAlib</title>
674
675 <formalpara>
676 <title>INSTALLATION</title>
677 <para>
678 You'll have to install svgalib and its development package in order for
679 <application>MPlayer</application> build its SVGAlib driver (autodetected,
680 but can be forced), and don't forget to edit
681 <filename>/etc/vga/libvga.config</filename> to suit your card and monitor.
682 </para>
683 </formalpara>
684
685 <note>
686 <para>
687 Be sure not to use the <option>-fs</option> switch, since it toggles the
688 usage of the software scaler, and it's slow. If you really need it, use the
689 <option>-sws 4</option> option which will produce bad quality, but is
690 somewhat faster.
691 </para>
692 </note>
693
694 <formalpara><title>EGA (4BPP) SUPPORT</title>
695 <para>
696 SVGAlib incorporates EGAlib, and <application>MPlayer</application> has the
697 possibility to display any movie in 16 colors, thus usable in the following
698 sets:
699 </para>
700 </formalpara>
701
702 <itemizedlist>
703 <listitem><simpara>
704 EGA card with EGA monitor: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
705 </simpara></listitem>
706 <listitem><simpara>
707 EGA card with CGA monitor: 320x200x4bpp, 640x200x4bpp
708 </simpara></listitem>
709 </itemizedlist>
710
711 <para>
712 The bpp (bits per pixel) value must be set to 4 by hand:
713 <option>-bpp 4</option>
714 </para>
715
716 <para>
717 The movie probably must be scaled down to fit in EGA mode:
718 <screen>-vop scale=640:350</screen>
719 or
720 <screen>-vop scale=320:200</screen>
721 </para>
722
723 <para>
724 For that we need fast but bad quality scaling routine:
725 <screen>-sws 4</screen>
726 </para>
727
728 <para>
729 Maybe automatic aspect correction has to be shut off:
730 <screen>-noaspect</screen>
731 </para>
732
733 <note><para>
734 according to my experience the best image quality on
735 EGA screens can be achieved by decreasing the brightness a bit:
736 <option>-vop eq=-20:0</option>. I also needed to lower the audio
737 samplerate on my box, because the sound was broken on 44kHz:
738 <option>-srate 22050</option>.
739 </para></note>
740
741 <para>
742 ou can turn on OSD and subtitles only with the <systemitem>expand</systemitem>
743 filter, see the man page for exact parameters.
744 </para>
745 </sect4>
746
747
748 <sect4 id="fbdev">
749 <title>Framebuffer output (FBdev)</title>
750
751 <para>
752 Whether to build the FBdev target is autodetected during
753 <filename>./configure</filename>. Read the framebuffer documentation in
754 the kernel sources (<filename>Documentation/fb/*</filename>) for more
755 information.
756 </para>
757
758 <para>
759 If your card doesn't support VBE 2.0 standard (older ISA/PCI cards, such as
760 S3 Trio64), only VBE 1.2 (or older?): Well, VESAfb is still available, but
761 you'll have to load SciTech Display Doctor (formerly UniVBE) before booting
762 Linux. Use a DOS boot disk or whatever. And don't forget to register your
763 UniVBE ;))
764 </para>
765
766 <para>
767 The FBdev output takes some additional parameters above the others:
768 </para>
769
770 <variablelist>
771 <varlistentry>
772 <term><option>-fb</option></term>
773 <listitem><simpara>
774 specify the framebuffer device to use (<filename>/dev/fb0</filename>)
775 </simpara></listitem>
776 </varlistentry>
777 <varlistentry>
778 <term><option>-fbmode</option></term>
779 <listitem><simpara>
780 mode name to use (according to <filename>/etc/fb.modes</filename>)
781 </simpara></listitem>
782 </varlistentry>
783 <varlistentry>
784 <term><option>-fbmodeconfig</option></term>
785 <listitem><simpara>
786 config file of modes (default <filename>/etc/fb.modes</filename>)
787 </simpara></listitem>
788 </varlistentry>
789 <varlistentry>
790 <term><option>-monitor_hfreq</option></term>
791 <term><option>-monitor_vfreq</option></term>
792 <term><option>-monitor_dotclock</option></term>
793 <listitem><simpara>
794 <emphasis role="bold">important</emphasis> values, see
795 <filename>example.conf</filename>
796 </simpara></listitem>
797 </varlistentry>
798 </variablelist>
799
800 <para>
801 If you want to change to a specific mode, then use
802 <screen>mplayer -vm -fbmode <replaceable>name_of_mode</replaceable> <replaceable>filename</replaceable></screen>
803 </para>
804
805 <itemizedlist>
806 <listitem><para>
807 <option>-vm</option> alone will choose the most suitable mode from
808 <filename>/etc/fb.modes</filename>. Can be used together with
809 <option>-x</option> and <option>-y</option> options too. The
810 <option>-flip</option> option is supported only if the movie's pixel
811 format matches the video mode's pixel format. Pay attention to the bpp
812 value, fbdev driver tries to use the current, or if you specify the
813 <option>-bpp</option> option, then that.
814 </para></listitem>
815 <listitem><para>
816 <option>-zoom</option> option isn't supported (software scaling is slow).
817 <option>-fs</option> option isn't supported. You can't use 8 bpp (or less)
818 modes.
819 </para></listitem>
820 <listitem><para>
821 You possibly want to turn the cursor off:
822 <screen>echo -e '\033[?25l'</screen>
823 or
824 <screen>setterm -cursor off</screen>
825 and the screen saver:
826 <screen>setterm -blank 0</screen>
827 To turn the cursor back on:
828 <screen>echo -e '\033[?25h'</screen>
829 or
830 <screen>setterm -cursor on</screen>
831 </para></listitem>
832 </itemizedlist>
833
834 <note>
835 <para>
836 FBdev video mode changing <emphasis>does not work</emphasis> with the VESA
837 framebuffer, and don't ask for it, since it's not an
838 <application>MPlayer</application> limitation.
839 </para>
840 </note>
841 </sect4>
842
843
844 <sect4 id="mga_vid">
845 <title>Matrox framebuffer (mga_vid)</title>
846
847 <para>
848 This section is about the Matrox G200/G400/G450/G550 BES (Back-End Scaler)
849 support, the mga_vid kernel driver. It's actively developed by A'rpi, and
850 it has hardware VSYNC support with triple buffering. It works on both
851 framebuffer console and under X.
852 </para>
853
854 <warning>
855 <para>
856 This is Linux only! On non-Linux (tested on FreeBSD) systems, you can use
857 <link linkend="vidix">VIDIX</link> instead!
858 </para>
859 </warning>
860
861 <procedure>
862 <title>Installation:</title>
863 <step><para>
864 To use it, you first have to compile <filename>mga_vid.o</filename>:
865 <screen>
866 cd drivers
867 make<!--
868 --></screen>
869 </para></step>
870 <step><para>
871 Then create <filename>/dev/mga_vid</filename> device:
872 <screen>mknod /dev/mga_vid c 178 0</screen>
873 and load the driver with
874 <screen>insmod mga_vid.o</screen>
875 </para></step>
876 <step><para>
877 You should verify the memory size detection using the
878 <command>dmesg</command> command. If it's bad, use the
879 <option>mga_ram_size</option> option
880 (<command>rmmod mga_vid</command> first),
881 specify card's memory size in MB:
882 <screen>insmod mga_vid.o mga_ram_size=16</screen>
883 </para></step>
884 <step><para>
885 To make it load/unload automatically when needed, first insert the
886 following line at the end of <filename>/etc/modules.conf</filename>:
887
888 <programlisting>alias char-major-178 mga_vid</programlisting>
889
890 Then copy the <filename>mga_vid.o</filename> module to the appropriate
891 place under <filename>/lib/modules/<replaceable>kernel
892 version</replaceable>/<replaceable>somewhere</replaceable></filename>.
893 </para><para>
894 Then run
895 <screen>depmod -a</screen>
896 </para></step>
897 <step><para>
898 Now you have to (re)compile <application>MPlayer</application>,
899 <filename>./configure</filename> will detect
900 <filename>/dev/mga_vid</filename> and build the 'mga' driver. Using it
901 from <application>MPlayer</application> goes by <option>-vo mga</option>
902 if you have matroxfb console, or <option>-vo xmga</option> under XFree86
903 3.x.x or 4.x.x.
904 </para></step>
905 </procedure>
906
907 <para>
908 The mga_vid driver cooperates with Xv.
909 </para>
910
911 <para>
912 The <filename>/dev/mga_vid</filename> device file can be read for some
913 info, for example by
914 <screen>cat /dev/mga_vid</screen>
915 and can be written for brightness change:
916 <screen>echo "brightness=120" &gt; /dev/mga_vid</screen>
917 </para>
918 </sect4>
919
920
921 <sect4 id="tdfxfb" xreflabel="3Dfx YUV support (tdfxfb)">
922 <title>3Dfx YUV support</title>
923 <para>
924 This driver uses the kernel's tdfx framebuffer driver to play movies with
925 YUV acceleration. You'll need a kernel with tdfxfb support, and recompile
926 with
927 <screen>./configure --enable-tdfxfb</screen>
928 </para>
929 </sect4>
930
931
932 <sect4 id="opengl">
933 <title>OpenGL output</title>
934
935 <para>
936 <application>MPlayer</application> supports displaying movies using OpenGL,
937 but if your platform/driver supports xv as should be the case on a PC with
938 Linux, use xv instead, OpenGL performance is considerably worse. If you
939 have an X11 implementation without xv support, OpenGL is a viable
940 alternative.
941 </para>
942
943 <para>
944 Unfortunately not all drivers support this feature. The Utah-GLX drivers
945 (for XFree86 3.3.6) support it for all cards.
946 See <ulink url="http://utah-glx.sourceforge.net"/> for details about how to
947 install it.
948 </para>
949
950 <para>
951 XFree86(DRI) 4.0.3 or later supports OpenGL with Matrox and Radeon cards,
952 4.2.0 or later supports Rage128.
953 See <ulink url="http://dri.sourceforge.net"/> for download and installation
954 instructions.
955 </para>
956 </sect4>
957
958
959 <sect4 id="aalib">
960 <title>AAlib - text mode displaying</title>
961
962 <para>
963 AAlib is a library for displaying graphics in text mode, using powerful
964 ASCII renderer. There are <emphasis>lots</emphasis> of programs already
965 supporting it, like Doom, Quake, etc. <application>MPlayer</application>
966 contains a very usable driver for it. If <filename>./configure</filename>
967 detects aalib installed, the aalib libvo driver will be built.
968 </para>
969
970 <para>
971 You can use some keys in the AA Window to change rendering options:
972 </para>
973
974 <informaltable>
975 <tgroup cols="2">
976 <thead>
977 <row><entry>Key</entry><entry>Action</entry></row>
978 </thead>
979 <tbody>
980 <row><entry><keycap>1</keycap></entry><entry>
981 decrease contrast
982 </entry></row>
983 <row><entry><keycap>2</keycap></entry><entry>
984 increase contrast
985 </entry></row>
986 <row><entry><keycap>3</keycap></entry><entry>
987 decrease brightness
988 </entry></row>
989 <row><entry><keycap>4</keycap></entry><entry>
990 increase brightness
991 </entry></row>
992 <row><entry><keycap>5</keycap></entry><entry>
993 switch fast rendering on/off
994 </entry></row>
995 <row><entry><keycap>6</keycap></entry><entry>
996 set dithering mode (none, error distribution, Floyd Steinberg)
997 </entry></row>
998 <row><entry><keycap>7</keycap></entry><entry>
999 invert image
1000 </entry></row>
1001 <row><entry><keycap>8</keycap></entry><entry>
1002 toggles between aa and <application>MPlayer</application> control
1003 </entry></row>
1004 </tbody>
1005 </tgroup>
1006 </informaltable>
1007
1008 <variablelist>
1009 <title>The following command line options can be used:</title>
1010 <varlistentry>
1011 <term><option>-aaosdcolor=<replaceable>V</replaceable></option></term>
1012 <listitem><para>
1013 change OSD color
1014 </para></listitem>
1015 </varlistentry>
1016 <varlistentry>
1017 <term><option>-aasubcolor=<replaceable>V</replaceable></option></term>
1018 <listitem><para>
1019 change subtitle color
1020 </para><para>
1021 where <replaceable>V</replaceable> can be:
1022 <literal>0</literal> (normal),
1023 <literal>1</literal> (dark),
1024 <literal>2</literal> (bold),
1025 <literal>3</literal> (bold font),
1026 <literal>4</literal> (reverse),
1027 <literal>5</literal> (special).
1028 </para></listitem>
1029 </varlistentry>
1030 </variablelist>
1031
1032 <variablelist>
1033 <title>AAlib itself provides a large sum of options. Here are some
1034 important:</title>
1035 <varlistentry>
1036 <term><option>-aadriver</option></term>
1037 <listitem><simpara>
1038 set recommended aa driver (X11, curses, Linux)
1039 </simpara></listitem>
1040 </varlistentry>
1041 <varlistentry>
1042 <term><option>-aaextended</option></term>
1043 <listitem><simpara>
1044 use all 256 characters
1045 </simpara></listitem>
1046 </varlistentry>
1047 <varlistentry>
1048 <term><option>-aaeight</option></term>
1049 <listitem><simpara>
1050 use eight bit ASCII
1051 </simpara></listitem>
1052 </varlistentry>
1053 <varlistentry>
1054 <term><option>-aahelp</option></term>
1055 <listitem><simpara>
1056 prints out all aalib options
1057 </simpara></listitem>
1058 </varlistentry>
1059 </variablelist>
1060
1061 <note>
1062 <para>
1063 The rendering is very CPU intensive, especially when using AA-on-X
1064 (using aalib on X), and it's least CPU intensive on standard,
1065 non-framebuffer console. Use SVGATextMode to set up a big textmode,
1066 then enjoy! (secondary head Hercules cards rock :)) (but imho you
1067 can use -vop 1bpp option to get graphics on hgafb:)
1068 </para>
1069 </note>
1070
1071 <para>
1072 Use the <option>-framedrop</option> option if your computer isn't fast
1073 enough to render all frames!
1074 </para>
1075
1076 <para>
1077 Playing on terminal you'll get better speed and quality using the Linux
1078 driver, not curses (<option>-aadriver linux</option>). But therefore you
1079 need write access on
1080 <filename>/dev/vcsa<replaceable>&lt;terminal&gt;</replaceable></filename>!
1081 That isn't autodetected by aalib, but vo_aa tries to find the best mode.
1082 See <ulink url="http://aa-project.sourceforge.net/tune"/> for further
1083 tuning issues.
1084 </para>
1085 </sect4>
1086
1087
1088 <sect4 id="vesa">
1089 <title>VESA - output to VESA BIOS</title>
1090
1091 <para>
1092 This driver was designed and introduced as a <emphasis role="bold">generic
1093 driver</emphasis> for any video card which has VESA VBE 2.0 compatible
1094 BIOS. Another advantage of this driver is that it tries to force TV output
1095 on.
1096 <citetitle>VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16,
1097 1998</citetitle> (Page 70) says:
1098 </para>
1099
1100 <blockquote>
1101 <formalpara><title>Dual-Controller Designs</title>
1102 <para>
1103 VBE 3.0 supports the dual-controller design by assuming that since both
1104 controllers are typically provided by the same OEM, under control of a
1105 single BIOS ROM on the same graphics card, it is possible to hide the fact
1106 that two controllers are indeed present from the application. This has the
1107 limitation of preventing simultaneous use of the independent controllers,
1108 but allows applications released before VBE 3.0 to operate normally. The
1109 VBE Function 00h (Return Controller Information) returns the combined
1110 information of both controllers, including the combined list of available
1111 modes. When the application selects a mode, the appropriate controller is
1112 activated. Each of the remaining VBE functions then operates on the active
1113 controller.
1114 </para>
1115 </formalpara>
1116 </blockquote>
1117
1118 <para>
1119 So you have chances to get working TV-out by using this driver.
1120 (I guess that TV-out frequently is standalone head or standalone output
1121 at least.)
1122 </para>
1123
1124 <itemizedlist spacing="compact">
1125 <title>ADVANTAGES</title>
1126 <listitem><simpara>
1127 You have chances to watch movies <emphasis role="bold">if Linux even doesn't
1128 know</emphasis> your video hardware.
1129 </simpara></listitem>
1130 <listitem><simpara>
1131 You don't need to have installed any graphics' related things on your
1132 Linux (like X11 (aka XFree86), fbdev and so on). This driver can be run
1133 from <emphasis role="bold">text-mode</emphasis>.
1134 </simpara></listitem>
1135 <listitem><simpara>
1136 You have chances to get <emphasis role="bold">working TV-out</emphasis>.
1137 (It's known at least for ATI's cards).
1138 </simpara></listitem>
1139 <listitem><simpara>
1140 This driver calls <function>int 10h</function> handler thus it's not
1141 an emulator - it calls <emphasis role="bold">real</emphasis> things of
1142 <emphasis>real</emphasis> BIOS in <emphasis>real-mode</emphasis>.
1143 (Finely - in vm86 mode).
1144 </simpara></listitem>
1145 <listitem><simpara>
1146 You can use VIDIX with it, thus getting accelerated video display
1147 <emphasis role="bold">and</emphasis> TV output at the same time!
1148 (Recommended for ATI cards.)
1149 </simpara></listitem>
1150 </itemizedlist>
1151
1152 <itemizedlist spacing="compact">
1153 <title>DISADVANTAGES</title>
1154 <listitem><simpara>
1155 It works only on <emphasis role="bold">x86 systems</emphasis>.
1156 </simpara></listitem>
1157 <listitem><simpara>
1158 It can be used only by <systemitem class="username">root</systemitem>.
1159 </simpara></listitem>
1160 <listitem><simpara>
1161 Currently it's available only for <emphasis role="bold">Linux</emphasis>.
1162 </simpara></listitem>
1163 </itemizedlist>
1164
1165 <important>
1166 <para>
1167 Don't use this driver with <emphasis role="bold">GCC 2.96</emphasis>!
1168 It won't work!
1169 </para>
1170 </important>
1171
1172 <variablelist>
1173 <title>COMMAND LINE OPTIONS AVAILABLE FOR VESA</title>
1174 <varlistentry>
1175 <term><option>-vo vesa:<replaceable>opts</replaceable></option></term>
1176 <listitem><simpara>
1177 currently recognized: <literal>dga</literal> to force dga mode and
1178 <literal>nodga</literal> to disable dga mode. In dga mode you can enable
1179 double buffering via the -double option. Note: you may omit these parameters
1180 to enable <emphasis role="bold">autodetection</emphasis> of dga mode.
1181 </simpara></listitem>
1182 </varlistentry>
1183 </variablelist>
1184
1185 <itemizedlist spacing="compact">
1186 <title>KNOWN PROBLEMS AND WORKAROUNDS</title>
1187 <listitem><simpara>
1188 If you have installed <emphasis role="bold">NLS</emphasis> font on your
1189 Linux box and run VESA driver from text-mode then after terminating
1190 <application>MPlayer</application> you will have
1191 <emphasis role="bold">ROM font</emphasis> loaded instead of national.
1192 You can load national font again by using <command>setsysfont</command>
1193 utility from the Mandrake distribution for exemple.
1194 (<emphasis role="bold">Hint</emphasis>: The same utility is used for
1195 localization of fbdev).
1196 </simpara></listitem>
1197 <listitem><simpara>
1198 Some <emphasis role="bold">Linux graphics drivers</emphasis> don't update
1199 active <emphasis role="bold">BIOS mode</emphasis> in DOS memory.
1200 So if you have such problem - always use VESA driver only from
1201 <emphasis role="bold">text-mode</emphasis>. Otherwise text-mode (#03) will
1202 be activated anyway and you will need restart your computer.
1203 </simpara></listitem>
1204 <listitem><simpara>
1205 Often after terminating VESA driver you get black screen. To return your
1206 screen to original state - simply switch to other console (by pressing
1207 <keycap>Alt</keycap>+<keycap>F&lt;x&gt;</keycap>)
1208 then switch to your previous console by the same way.
1209 </simpara></listitem>
1210 <listitem><simpara>
1211 To get <emphasis role="bold">working TV-out</emphasis> you need have plugged
1212 TV-connector in before booting your PC since video BIOS initializes
1213 itself only once during POST procedure.
1214 </simpara></listitem>
1215 </itemizedlist>
1216 </sect4>
1217
1218
1219 <sect4 id="x11">
1220 <title>X11</title>
1221
1222 <para>
1223 Avoid if possible. Outputs to X11 (uses shared memory extension), with no
1224 hardware acceleration at all. Supports (MMX/3DNow/SSE accelerated, but
1225 still slow) software scaling, use the options <option>-fs -zoom</option>.
1226 Most cards have hardware scaling support, use the <option>-vo xv</option>
1227 output for them, or <option>-vo xmga</option> for Matroxes.
1228 </para>
1229
1230 <para>
1231 The problem is that most cards' driver doesn't support hardware
1232 acceleration on the second head/TV. In those cases, you see green/blue
1233 colored window instead of the movie. This is where this driver comes in
1234 handy, but you need powerful CPU to use software scaling. Don't use the SDL
1235 driver's software output+scaler, it has worse image quality!
1236 </para>
1237
1238 <para>
1239 Software scaling is very slow, you better try changing video modes instead.
1240 It's very simple. See the <link linkend="dga-modelines">DGA section's
1241 modelines</link>, and insert them into your <filename>XF86Config</filename>.
1242
1243 <itemizedlist spacing="compact">
1244 <listitem><simpara>
1245 If you have XFree86 4.x.x: use the <option>-vm</option> option. It will
1246 change to a resolution your movie fits in. If it doesn't:
1247 </simpara></listitem>
1248 <listitem><simpara>
1249 With XFree86 3.x.x: you have to cycle through available resolutions
1250 with the
1251 <keycap>Ctrl</keycap>+<keycap>Alt</keycap>+<keycap>plus</keycap>
1252 and
1253 <keycap>Ctrl</keycap>+<keycap>Alt</keycap>+<keycap>minus</keycap>
1254 keys.
1255 </simpara></listitem>
1256 </itemizedlist>
1257 </para>
1258
1259 <para>
1260 If you can't find the modes you inserted, browse XFree86's output. Some
1261 drivers can't use low pixelclocks that are needed for low resolution
1262 video modes.
1263 </para>
1264 </sect4>
1265
1266
1267 <sect4 id="vidix">
1268 <title>VIDIX</title>
1269
1270 <formalpara>
1271 <title>PREAMBLE</title>
1272 <para>
1273 VIDIX is the abbreviation for <emphasis role="bold">VID</emphasis>eo
1274 <emphasis role="bold">I</emphasis>nterface for *ni<emphasis role="bold">X</emphasis>.
1275 VIDIX was designed and introduced as an interface for fast user-space drivers
1276 providing such video performance as mga_vid does for Matrox cards. It's also very
1277 portable.
1278 </para>
1279 </formalpara>
1280 <para>
1281 This interface was designed as an attempt to fit existing video
1282 acceleration interfaces (known as mga_vid, rage128_vid, radeon_vid,
1283 pm3_vid) into a fixed scheme. It provides highlevel interface to chips
1284 which are known as BES (BackEnd scalers) or OV (Video Overlays). It doesn't
1285 provide lowlevel interface to things which are known as graphics servers.
1286 (I don't want to compete with X11 team in graphics mode switching). I.e.
1287 main goal of this interface is to maximize the speed of video playback.
1288 </para>
1289
1290 <itemizedlist spacing="compact">
1291 <title>USAGE</title>
1292 <listitem><simpara>
1293 You can use standalone video output driver: <option>-vo xvidix</option>.
1294 This driver was developed as X11's front end to VIDIX technology. It
1295 requires X server and can work only under X server.Note that, as it directly
1296 accesses the hardware and circumvents the X driver, pixmaps cached in the
1297 graphics card's memory may be corrupted. You can prevent this by limiting
1298 the amount of video memory used by X with the XF86Config option "VideoRam"
1299 in the device section. You should set this to the amount of memory installed
1300 on your card minus 4MB. If you have less than 8MB of video ram, you can use
1301 the option "XaaNoPixmapCache" in the screen section instead.
1302 </simpara></listitem>
1303 <listitem><simpara>
1304 You can use VIDIX subdevice which was applied to several video output
1305 drivers, such as: <option>-vo vesa:vidix</option>
1306 (<emphasis role="bold">Linux only</emphasis>) and
1307 <option>-vo fbdev:vidix</option>.
1308 </simpara></listitem>
1309 </itemizedlist>
1310
1311 <para>
1312 Indeed it doesn't matter which video output driver is used with
1313 <emphasis role="bold">VIDIX</emphasis>.
1314 </para>
1315
1316 <itemizedlist spacing="compact">
1317 <title>REQUIREMENTS</title>
1318 <listitem><simpara>
1319 Video card should be in graphics mode (I write <emphasis role="bold">should</emphasis>
1320 simply because I tested it in text mode - it works but has awful output ;) Use
1321 AAlib for that).
1322 <emphasis role="bold">Note</emphasis>: Everyone can try this trick by commenting out mode
1323 switching in vo_vesa driver.
1324 </simpara></listitem>
1325 <listitem><simpara>
1326 <application>MPlayer</application>'s video output driver should know
1327 active video mode and be able to tell to VIDIX subdevice some video
1328 characteristics of server.
1329 </simpara></listitem>
1330 </itemizedlist>
1331
1332 <formalpara>
1333 <title>USAGE METHODS</title>
1334 <para>
1335 When VIDIX is used as <emphasis>subdevice</emphasis> (<option>-vo
1336 vesa:vidix</option>) then video mode configuration is performed by video
1337 output device (<emphasis>vo_server</emphasis> in short). Therefore you can
1338 pass into command line of <application>MPlayer</application> the same keys
1339 as for vo_server. In addition it understands <option>-double</option> key
1340 as globally visible parameter. (I recommend using this key with VIDIX at
1341 least for ATI's card). As for <option>-vo xvidix</option> : currently it
1342 recognizes the following options: <option>-fs -zoom -x -y -double</option>.
1343 </para>
1344 </formalpara>
1345 <para>
1346 Also you can specify VIDIX's driver directly as third subargument in
1347 command line:
1348
1349 <screen>mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi</screen>
1350 or
1351 <screen>mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi</screen>
1352
1353 But it's dangerous, and you shouldn't do that. In this case given driver
1354 will be forced and result is unpredictable (it may
1355 <emphasis role="bold">freeze</emphasis> your computer). You should do that
1356 ONLY if you are absolutely sure it will work, and
1357 <application>MPlayer</application> doesn't do it automatically. Please tell
1358 about it to the developers. The right way is to use VIDIX without arguments
1359 to enable driver autodetection.
1360 </para>
1361
1362 <para>
1363 VIDIX is new technology and it's extremely possible that on your
1364 system it won't work. In this case only solution for you
1365 it's port it (mainly libdha). But there is hope that it will work on those
1366 systems where X11 does.
1367 </para>
1368
1369 <para>
1370 Since VIDIX requires direct hardware access you can either run it as root
1371 or set the SUID bit on the <application>MPlayer</application> binary
1372 (<emphasis role="bold">Warning: This is a security risk!</emphasis>
1373 Alternatively, you can use a special kernel module, like this:
1374 </para>
1375
1376 <procedure>
1377 <step><para>
1378 Download the <ulink url="http://www.arava.co.il/matan/svgalib/">development version</ulink>
1379 of svgalib (for example 1.9.17), <emphasis role="bold">OR</emphasis>
1380 download a version made by Alex especially for usage with <application>MPlayer</application>
1381 (it doesn't need the svgalib source to compile) from
1382 <ulink url="http://www.mplayerhq.hu/~alex/svgalib_helper-1.9.17-mplayer.tar.bz2">here</ulink>.
1383 </para></step>
1384 <step><para>
1385 Compile the module in the <filename class="directory">svgalib_helper</filename>
1386 directory if you've downloaded the source from the svgalib site) and insmod it.
1387 </para></step>
1388 <step><para>
1389 Move the <filename class="directory">svgalib_helper</filename> directory to
1390 <filename class="directory">mplayer/main/libdha/svgalib_helper</filename>.
1391 </para></step>
1392 <step><para>
1393 Required if you download the source from the svgalib site: Remove the comment before the
1394 CFLAGS line containing "svgalib_helper" string from the
1395 <filename class="directory">libdha/Makefile</filename>.
1396 </para></step>
1397 <step><para>
1398 Recompile and install libdha.
1399 </para></step>
1400 </procedure>
1401
1402 <sect5 id="vidix-ati">
1403 <title>ATI cards</title>
1404 <para>
1405 Currently most ATI cards are supported natively, from Mach64 to the
1406 newest Radeons.
1407 </para>
1408
1409 <para>
1410 There are two compiled binaries: <filename>radeon_vid</filename> for Radeon and
1411 <filename>rage128_vid</filename> for Rage 128 cards. You may force one or let
1412 the VIDIX system autoprobe all available drivers.
1413 </para>
1414 </sect5>
1415
1416 <sect5 id="vidix-mga">
1417 <title>Matrox cards</title>
1418 <para>
1419 Matrox G200,G400,G450 and G550 have been reported to work.
1420 </para>
1421
1422 <para>
1423 The driver supports video equalizers and should be nearly as fast as the
1424 <link linkend="mga_vid">Matrox framebuffer</link>
1425 </para>
1426 </sect5>
1427
1428 <sect5 id="vidix-trident">
1429 <title>Trident cards</title>
1430 <para>
1431 There is a driver available for the Trident Cyberblade/i1 chipset, which
1432 can be found on VIA Epia motherboards.
1433 </para>
1434
1435 <para>
1436 The driver was written and is maintained by Alastair M. Robinson, who
1437 offers the very latest driver versions for download from his
1438 <ulink url="http://www.blackfiveservices.co.uk/EPIAVidix.shtml">homepage</ulink>.
1439 The drivers are added to MPlayer with only a short delay, so CVS should always
1440 be up to date.
1441 </para>
1442 </sect5>
1443
1444 <sect5 id="vidix-3dlabs">
1445 <title>3DLabs cards</title>
1446 <para>
1447 Although there is a driver for the 3DLabs GLINT R3 and Permedia3 chips, no one
1448 has tested it, so reports are welcome.
1449 </para>
1450 </sect5>
1451 </sect4>
1452
1453 <sect4 id="directfb">
1454 <title>DirectFB</title>
1455 <blockquote><para>
1456 &quot;DirectFB is a graphics library which was designed with embedded systems
1457 in mind. It offers maximum hardware accelerated performance at a minimum
1458 of resource usage and overhead.&quot; - quoted from <ulink url="http://www.directfb.org"/>
1459 </para></blockquote>
1460
1461 <para>I'll exclude DirectFB features from this section.</para>
1462
1463 <para>
1464 Though MPlayer is not supported as a &quot;video provider&quot; in DirectFB, this
1465 output driver will enable video playback through DirectFB. It will - of course -
1466 be accelerated, on my Matrox G400 DirectFB's speed was the same as XVideo.
1467 </para>
1468
1469 <para>
1470 Always try to use the newest version of DirectFB. You can use DirectFB options on
1471 the command line, using the <option>-dfbopts</option> option. Layer selection can
1472 be done by the subdevice method, e.g.: <option>-vo directfb:2</option>
1473 (layer -1 is default: autodetect)
1474 </para>
1475 </sect4>
1476
1477 <sect4 id="dfbmga">
1478 <title>DirectFB/Matrox (dfbmga)</title>
1479 <para>
1480 Please read the <link linkend="directfb">main DirectFB section</link> or general
1481 informations.
1482 </para>
1483
1484 <para>This video output driver will enable CRTC2 (on the second head) on the
1485 Matrox G400 card, displaying video <emphasis role="bold">independently</emphasis>
1486 of the first head.
1487 </para>
1488
1489 <para>
1490 Instructions on how to make it work can be found in the
1491 <ulink url="../../tech/directfb.txt">tech section</ulink>
1492 or directly on Ville Syrjala's
1493 <ulink url="http://www.sci.fi/~syrjala/directfb/readme.txt">home page</ulink>.
1494 </para>
1495
1496 <note><para>
1497 we haven't been able to make this work, but others did. Anyway, porting of
1498 the CRTC2 code to <emphasis role="bold">mga_vid</emphasis> is underway.
1499 </para></note>
1500 </sect4>
1501 </sect3>
1502
1503 <sect3 id="mpeg_decoders">
1504 <title>MPEG decoders</title>
1505
1506 <sect4 id="dvb">
1507 <title>DVB</title>
1508 <para>
1509 <application>MPlayer</application> supports cards with the Siemens DVB chipset
1510 from vendors like Siemens, Technotrend, Galaxis or Hauppauge. The latest DVB
1511 drivers are available from the <ulink url="http://www.linuxtv.org">Linux TV site</ulink>.
1512 If you want to do software transcoding you should have at least a 1GHz CPU.
1513 </para>
1514
1515 <para>
1516 Configure should detect your DVB card. If it did not, force detection with
1517 </para>
1518
1519 <para><screen>./configure --enable-dvb</screen></para>
1520
1521 <para>If you have ost headers at a non-standard path, set the path with</para>
1522
1523 <para><screen>./configure --with-extraincdir=&lt;DVB source directory&gt;/ost/include
1524 </screen></para>
1525
1526 <para>Then compile and install as usual.</para>
1527
1528 <formalpara>
1529 <title>USAGE</title>
1530 <para>
1531 Hardware decoding (playing standard MPEG1/2 files) can be done with this command:
1532 </para>
1533 </formalpara>
1534 <para><screen>mplayer -ao mpegpes -vo mpegpes file.mpg|vob</screen></para>
1535
1536 <para>
1537 Software decoding or transcoding different formats to MPEG1 can be achieved using
1538 a command like this:
1539 </para>
1540 <para><screen>
1541 mplayer -ao mpegpes -vo mpegpes yourfile.ext
1542 mplayer -ao mpegpes -vo mpegpes -vop expand yourfile.ext
1543 </screen></para>
1544
1545 <para>
1546 Note that DVB cards only support heights 288 and 576 for PAL or 240 and 480 for
1547 NTSC. You <emphasis role="bold">must</emphasis> escale for other heights by adding
1548 <option>scale=width:height</option> with the width and height you want to the
1549 <option>-vop</option> option. DVB cards accept various widths, like 720, 704,
1550 640, 512, 480, 352 etc and do hardware scaling in horizontal direction, so you
1551 do not need to scale horizontally in most cases. For a 512x384 (aspect 4:3)
1552 DivX try:
1553 </para>
1554
1555 <para><screen>mplayer -ao mpegpes -vo mpegpes -vop scale=512:576</screen></para>
1556
1557 <para>If you have a widescreen movie and you do not want to scale it to full height,
1558 you can use the <option>expand=w:h</option> filter to add black bands. To view a
1559 640x384 DivX, try:
1560 </para>
1561
1562 <para><screen>mplayer -ao mpegpes -vo mpegpes -vop expand=640:576 file.avi
1563 </screen></para>
1564
1565 <para>If your CPU is too slow for a full size 720x576 DivX, try downscaling:</para>
1566
1567 <para><screen>mplayer -ao mpegpes -vo mpegpes -vop scale=352:576 file.avi
1568 </screen></para>
1569
1570 <para>If speed does not improve, try vertical downscaling, too:</para>
1571
1572 <para><screen>mplayer -ao mpegpes -vo mpegpes -vop scale=352:288 file.avi
1573 </screen></para>
1574
1575 <para>
1576 For OSD and subtitles use the OSD feature of the expand filter. So, instead of
1577 <option>expand=w:h</option> or <option>expand=w:h:x:y</option>, use
1578 <option>expand=w:h:x:y:1</option> (the 5th parameter <option>:1</option>
1579 at the end will enable OSD rendering). You may want to move the image up a bit
1580 to get a bigger black zone for subtitles. You may also want to move subtitles up,
1581 if they are outside your TV screen, use the <option>-subpos &lt;0-100&gt;</option>
1582 option to adjust this (<option>-subpos 80</option> is a good choice).
1583 </para>
1584
1585 <para>
1586 In order to play non-25fps movies on a PAL TV or with a slow CPU, add the
1587 <option>-framedrop</option> option.
1588 </para>
1589
1590 <para>
1591 To keep the aspect ratio of DivX files and get the optimal scaling
1592 parameters (hardware horizontal scaling and software vertical scaling
1593 while keeping the right aspect ratio), use the new dvbscale filter:
1594 </para>
1595
1596 <para><screen>
1597 for 3:4 TV: -vop expand=-1:576:-1:-1:1,scale=-1:0,dvbscale
1598 for 16:9 TV: -vop expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024
1599 </screen></para>
1600
1601 <formalpara>
1602 <title>FUTURE</title>
1603 <para>
1604 If you have questions or want to hear feature announcements and take part in
1605 discussions on this subject, join our
1606 <ulink url="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</ulink>
1607 mailing list. Please remember that the list language is English.
1608 </para>
1609 </formalpara>
1610
1611 <para>
1612 In the future you may expect the ability to display OSD and subtitles using
1613 the native OSD feature of DVB cards, as well as more fluent playback of
1614 non-25fps movies and realtime transcoding between MPEG2 and MPEG4 (partial
1615 decompression).
1616 </para>
1617 </sect4>
1618
1619 <sect4 id="dxr2">
1620 <title>DXR2</title>
1621 <para>MPlayer supports hardware accelerated playback with the Creative DXR2 card.</para>
1622 <para>
1623 First of all you will need properly installed DXR2 drivers. You can find
1624 the drivers and installation instructions at the
1625 <ulink url="http://dxr2.sourceforge.net/">DXR2 Resource Center</ulink> site.
1626 </para>
1627
1628 <variablelist>
1629 <title>USAGE</title>
1630 <varlistentry>
1631 <term><option>-vo dxr2</option></term>
1632 <listitem><para>enable TV output</para></listitem>
1633 </varlistentry>
1634
1635 <varlistentry>
1636 <term><option>-vo dxr2:x11</option> or <option>-vo dxr2:xv</option></term>
1637 <listitem><para>enable Overlay output in X11</para></listitem>
1638 </varlistentry>
1639
1640 <varlistentry>
1641 <term><option>-dxr2 &lt;option1:option2:...&gt;</option></term>
1642 <listitem><para>This option is used to control the DXR2 driver.</para></listitem>
1643 </varlistentry>
1644 </variablelist>
1645
1646 <para>
1647 The overlay chipset used on the DXR2 is of pretty bad quality but the
1648 default settings should work for everybody. The OSD may be usable with the
1649 overlay (not on TV) by drawing it in the colorkey. With the default colorkey
1650 settings you may get variable results, usually you will see the colorkey
1651 around the characters or some other funny effect. But if you properly adjust
1652 the colorkey settings you should be able to get acceptable results.
1653 </para>
1654
1655 <para>Please see the manpage for available options.</para>
1656 </sect4>
1657
1658 <sect4 id="dxr3">
1659 <title>DXR3/Hollywood+</title>
1660 <para>
1661 <application>MPlayer</application> supports hardware accelerated playback
1662 with the Creative DXR3 and Sigma Designs Hollywood Plus cards. These cards
1663 both use the em8300 MPEG decoder chip from Sigma Designs.
1664 </para>
1665
1666 <para>
1667 First of all you will need properly installed DXR3/H+ drivers, version 0.12.0
1668 or later. You can find the drivers and installation instructions at the
1669 <ulink url="http://dxr3.sourceforge.net/">DXR3 &amp; Hollywood Plus for Linux</ulink>
1670 site. Configure should detect your card automatically, compilation should go
1671 without problems.
1672 </para>
1673
1674 <!-- FIXME: find a more clear presentation -->
1675 <variablelist>
1676 <title>USAGE</title>
1677 <varlistentry>
1678 <term><option>-vo dxr3:prebuf:sync:norm=x:&lt;device&gt;</option></term>
1679 <listitem><para>
1680 <option>overlay</option> activates the overlay instead of TVOut. It requires
1681 that you have a properly configured overlay setup to work right. The easiest
1682 way to configure the overlay is to first run autocal. Then run mplayer with
1683 dxr3 output and without overlay turned on, run dxr3view. In dxr3view you can
1684 tweak the overlay settings and see the effects in realtime, perhaps this feature
1685 will be supported by the MPlayer GUI in the future. When overlay is properly set
1686 up you will no longer need to use dxr3view.&#x0d;
1687 <option>prebuf</option> turns on prebuffering. Prebuffering is a feature of the
1688 em8300 chip that enables it to hold more than one frame of video at a time. This
1689 means that when you are running with prebuffering MPlayer will try to keep the
1690 video buffer filled with data at all times. If you are on a slow machine MPlayer
1691 will probably use close to, or precisely 100% of CPU. This is especially common
1692 if you play pure MPEG streams (like DVDs, SVCDs a.s.o.) since MPlayer will not
1693 have to reencode it to MPEG it will fill the buffer very fast.
1694 With prebuffering video playback is <emphasis role="bold">much</emphasis>
1695 less sensitive to other programs hogging the CPU, it will not drop frames unless
1696 applications hog the CPU for a long time.
1697 When running without prebuffering the em8300 is much more sensitive to CPU load,
1698 so it is highly suggested that you turn on MPlayer's <option>-framedrop</option>
1699 option to avoid further loss of sync.
1700 <option>sync</option> will turn on the new sync-engine. This is currently an
1701 experimental feature. With the sync feature turned on the em8300's internal clock
1702 will be monitored at all times, if it starts to deviate from MPlayer's clock it
1703 will be reset causing the em8300 to drop any frames that are lagging behind.
1704 <option>norm=x</option> will set the TV norm of the DXR3 card without the need
1705 for external tools like em8300setup. Valid norms are 5 = NTSC, 4 = PAL-60,
1706 3 = PAL. Special norms are 2 (auto-adjust using PAL/PAL-60) and 1 (auto-adjust
1707 using PAL/NTSC) because they decide which norm to use by looking at the frame
1708 rate of the movie. norm = 0 (default) does not change the current norm.
1709 <option>&lt;device&gt;</option> = device number to use if you have more than one em8300
1710 card.
1711 Any of these options may be left out.
1712 <option>:prebuf:sync</option> seems to work great when playing DivX movies. People
1713 have reported problems using the prebuf option when playing MPEG1/2 files. You
1714 might want to try running without any options first, if you have sync problems,
1715 or DVD subtitle problems, give <option>:sync</option> a try.
1716 </para></listitem>
1717 </varlistentry>
1718
1719 <varlistentry>
1720 <term><option>-ao oss:/dev/em8300_ma-<replaceable>X</replaceable></option></term>
1721 <listitem><para>
1722 For audio output, where <replaceable>X</replaceable> is the device number (0 if one card).
1723 </para></listitem>
1724 </varlistentry>
1725
1726 <varlistentry>
1727 <term><option>-aop list=resample:fout=<replaceable>xxxxx</replaceable></option></term>
1728 <listitem><para>
1729 The em8300 cannot play back samplerates lower than 44100Hz. If the sample
1730 rate is below 44100Hz select either 44100Hz or 48000Hz depending on which
1731 one matches closest. I.e. if the movie uses 22050Hz use 44100Hz as
1732 44100 / 2 = 22050, if it is 24000Hz use 48000Hz as 48000 / 2 = 24000 and so on.
1733 This does not work with digital audio output (<option>-ac hwac3</option>).
1734 </para></listitem>
1735 </varlistentry>
1736
1737 <varlistentry>
1738 <term><option>-vop lavc/fame</option></term>
1739 <listitem><para>
1740 To watch non-MPEG content on the em8300 (i.e. DivX or RealVideo) you have to
1741 specify an MPEG1 video filter such as libavcodec (lavc) or libfame (fame). At
1742 the moment lavc is both faster and gives better image quality, it is suggested
1743 that you use that unless you have problems with it. See the man page for further
1744 info about <option>-vop lavc/fame</option>.
1745 Using lavc is highly recommended. Currently there is no way of setting the fps
1746 of the em8300 which means that it is fixed to 29.97fps. Because of this it is
1747 highly recommended that you use <option>-vop lavc=&lt;quality&gt;:25</option>
1748 especially if you are using prebuffering. Then why 25 and not 29.97? Well, the
1749 thing is that when you use 29.97 the picture becomes a bit jumpy. The reason for
1750 this is unknown to us. If you set it to somewhere between 25 and 27 the picture
1751 becomes stable. For now all we can do is accept this for a fact.
1752 </para></listitem>
1753 </varlistentry>
1754
1755 <varlistentry>
1756 <term><option>-vop expand=-1:-1:-1:-1:1</option></term>
1757 <listitem><para>
1758 Although the DXR3 driver can put some OSD onto the MPEG1/2/4 video, it has
1759 much lower quality than MPlayer's traditional OSD, and has several refresh
1760 problems as well. The command line above will firstly convert the input
1761 video to MPEG4 (this is mandatory, sorry), then apply an expand filter which
1762 won't expand anything (-1: default), but apply the normal OSD onto the picture
1763 (that's what the "1" at the end does).
1764 </para></listitem>
1765 </varlistentry>
1766
1767 <varlistentry>
1768 <term><option>-ac hwac3</option></term>
1769 <listitem><para>
1770 The em8300 supports playing back AC3 audio (surround sound) through the
1771 digital audio output of the card. See the <option>-ao oss</option> option above,
1772 it must be used to specify the DXR3's output instead of a soundcard.
1773 </para></listitem>
1774 </varlistentry>
1775 </variablelist>
1776 </sect4>
1777
1778 </sect3>
1779
1780 <sect3 id="other">
1781 <title>Other visualization hardware</title>
1782
1783 <sect4 id="zr">
1784 <title>Zr</title>
1785
1786 <para>
1787 This is a display-driver (<option>-vo zr</option>) for a number of MJPEG
1788 capture/playback cards (tested for DC10+ and Buz, and it should work for the
1789 LML33, the DC10). The driver works by encoding the frame to JPEG and then
1790 sending it to the card. For the JPEG encoding <systemitem>libavcodec</systemitem>
1791 is used, and required. With the special <emphasis>cinerama</emphasis> mode,
1792 you can watch movies in true wide screen provided that you have two beamers
1793 and two MJPEG cards. Depending on resolution and quality settings, this driver
1794 may require a lot of CPU power, remember to specify <option>-framedrop</option>
1795 if your machine is too slow. Note: My AMD K6-2 350MHz is (with
1796 <option>-framedrop</option>) quite adequate for watching VCD sized material and
1797 downscaled movies.
1798 </para>
1799
1800 <para>
1801 This driver talks to the kernel driver available at
1802 <ulink url="http://mjpeg.sourceforge.net"/>, so
1803 you must get it working first. The presence of an MJPEG card is autodetected by the
1804 <filename>configure</filename> script, if autodetection fails, force detection with
1805 <screen>./configure --enable-zr</screen>
1806 </para>
1807 <para>
1808 The output can be controlled by several options, a long description of the
1809 options can be found in the man page, a short list of options can be viewed
1810 by running
1811 <screen>mplayer -zrhelp</screen>
1812 </para>
1813
1814 <para>
1815 Things like scaling and the OSD (on screen display) are not handled by
1816 this driver but can be done using the video filters. For example, suppose
1817 that you have a movie with a resolution of 512x272 and you want to view it
1818 fullscreen on your DC10+. There are three main possibilities, you may scale
1819 the movie to a width of 768, 384 or 192. For performance and quality reasons,
1820 I would choose to scale the movie to 384x204 using the fast bilinear software
1821 scaler. The commandline is
1822 <screen>mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi</screen>
1823 </para>
1824
1825 <para>
1826 Cropping can be done by the <systemitem>crop</systemitem> filter and by this
1827 driver itself. Suppose that a movie is too wide for display on your Buz and
1828 that you want to use <option>-zrcrop</option> to make the movie less wide,
1829 the you would issue the following command
1830 <screen>mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi</screen>
1831 </para>
1832
1833 <para>
1834 if you want to use the <systemitem>crop</systemitem> filter, you would do
1835 <screen>mplayer -vo zr -vop crop=720:320:80:0 benhur.avi</screen>
1836 </para>
1837
1838 <para>
1839 Extra occurances of <option>-zrcrop</option> invoke <emphasis>cinerama</emphasis>
1840 ode, i.e. you can distribute the movie over several TV's or beamers to create a
1841 larger screen. Suppose you have two beamers. The left one is connected to your
1842 Buz at <systemitem>/dev/video1</systemitem> and the right one is connected to
1843 your DC10+ at <systemitem>/dev/video0</systemitem>. The movie has a resolution
1844 of 704x288. Suppose also that you want the right beamer in black and white and
1845 that the right beamer should have jpeg frames at quality 10, then you would
1846 issue the following command
1847 <screen>
1848 mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
1849 -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi
1850 </screen>
1851 </para>
1852
1853 <para>
1854 You see that the options appearing before the second <option>-zrcrop</option>
1855 only apply to the DC10+ and that the options after the second
1856 <option>-zrcrop</option> apply to the Buz. The maximum number of MJPEG cards
1857 participating in <emphasis>cinerama</emphasis> is four, so you can buid a
1858 2x2 vidiwall.
1859 </para>
1860
1861 <para>
1862 inally an important remark: Do not start or stop XawTV on the playback device
1863 during playback, it will crash your computer. It is, however, fine to
1864 <emphasis role="bold">FIRST</emphasis> start XawTV, <emphasis role="bold">THEN</emphasis>
1865 start MPlayer, wait for MPlayer to finish and <emphasis role="bold">THEN</emphasis>
1866 stop XawTV.
1867 </para>
1868 </sect4>
1869
1870 <sect4 id="blinkenlights">
1871 <title>Blinkenlights</title>
1872 <para>
1873 This driver is capable of playback using the Blinkenlights UDP protocol. If you
1874 don't know what <ulink url="http://www.blinkenlights.de/">Blinkenlights</ulink>
1875 is, you don't need this driver.
1876 </para>
1877 </sect4>
1878 </sect3>
1879
1880 <sect3 id="tvout">
1881 <title>TV-out support</title>
1882
1883 <sect4 id="tvout-mga-g400">
1884 <title>Matrox G400 cards</title>
1885
1886 <para>
1887 Under Linux you have two methods to get G400 TV out working:
1888 </para>
1889
1890 <important>
1891 <para>
1892 for Matrox G450/G550 TV-out instructions, please see the next section!
1893 </para>
1894 </important>
1895
1896 <variablelist>
1897 <varlistentry>
1898 <term>XFree86</term>
1899 <listitem><para>
1900 Using the driver and the HAL module, available from <ulink
1901 url="http://www.matrox.com">Matrox's site</ulink>. This will give you X
1902 on the TV.
1903 </para><para>
1904 <emphasis role="bold">This method doesn't give you accelerated playback</emphasis>
1905 as under Windows! The second head has only YUV framebuffer, the <emphasis>BES</emphasis>
1906 (Back End Scaler, the YUV scaler on G200/G400/G450/G550 cards) doesn't
1907 work on it! The windows driver somehow workarounds this, probably by
1908 using the 3D engine to zoom, and the YUV framebuffer to display the
1909 zoomed image. If you really want to use X, use the <option>-vo x11 -fs
1910 -zoom</option> options, but it will be <emphasis role="bold">SLOW</emphasis>,
1911 and has <emphasis role="bold">Macrovision</emphasis> copy protection enabled
1912 (you can "workaround" Macrovision using this
1913 <ulink url="http://avifile.sourceforge.net/mgamacro.pl">perl
1914 script</ulink>.
1915 </para></listitem>
1916 </varlistentry>
1917 <varlistentry>
1918 <term>Framebuffer</term>
1919 <listitem><para>
1920 Using the <emphasis role="bold">matroxfb modules</emphasis> in the 2.4
1921 kernels. 2.2 kernels don't have the TVout feature in them, thus unusable
1922 for this. You have to enable ALL matroxfb-specific feature during compilation
1923 (except MultiHead), and compile them into <emphasis role="bold">modules!</emphasis>
1924 You'll also need I2C enabled.
1925 </para>
1926
1927 <procedure>
1928 <step><para>
1929 Enter <filename class="directory">TVout/matroxset</filename> and type
1930 <command>make</command>. Install <filename class="directory">matroxset</filename> into
1931 somewhere in your <envar>PATH</envar>.
1932 </para></step>
1933 <step><para>
1934 If you don't have <command>fbset</command> installed, enter
1935 <filename class="directory">TVout/fbset</filename> and type <command>make</command>.
1936 Install <filename class="directory">fbset</filename> into somewhere in your
1937 <envar>PATH</envar>.
1938 </para></step>
1939 <step><para>
1940 Then enter into the <filename class="directory">TVout/</filename> directory
1941 in the <application>MPlayer</application> source, and execute
1942 <filename>./modules</filename> as root. Your text-mode console will
1943 enter into framebuffer mode (no way back!).
1944 </para></step>
1945 <step><para>
1946 Next, EDIT and run the <filename>./matroxtv</filename> script. This will
1947 present you to a very simple menu. Press <keycap>2</keycap> and
1948 <keycap>Enter</keycap>. Now you should have the same picture on your
1949 monitor, and TV. The 3rd option will turn on independent display, but
1950 then you <emphasis>can't use X!</emphasis> If the TV (PAL by default)
1951 picture has some weird stripes on it, the script wasn't able to set the
1952 resolution correctly (to 640x512 by default). Try other resolutions
1953 from the menu and/or experiment with fbset.
1954 </para></step>
1955 <step><para>
1956 Yoh. Next task is to make the cursor on tty1 (or whatever) to
1957 disappear, and turn off screen blanking. Execute the following
1958 commands:
1959
1960 <screen>
1961 echo -e '\033[?25l'
1962 setterm -blank 0<!--
1963 --></screen>
1964 or
1965 <screen>
1966 setterm -cursor off
1967 setterm -blank 0<!--
1968 --></screen>
1969
1970 You possibly want to put the above into a script, and also clear the
1971 screen. To turn the cursor back:
1972 <screen>echo -e '\033[?25h'</screen> or
1973 <screen>setterm -cursor on</screen>
1974 </para></step>
1975 <step><para>
1976 Yeah kewl. Start movie playing with
1977 <screen>
1978 mplayer -vo mga -fs -screenw 640 -screenh 512 <replaceable>filename</replaceable><!--
1979 --></screen>
1980
1981 (If you use X, now change to matroxfb with for example
1982 <keycap>Ctrl</keycap>+<keycap>Alt</keycap>+<keycap>F1</keycap>.)
1983 Change <literal>640</literal> and <literal>512</literal> if you set
1984 the resolution to other...
1985 </para></step>
1986 <step><para>
1987 <emphasis role="bold">Enjoy the ultra-fast ultra-featured Matrox TV
1988 output (better than Xv)!</emphasis>
1989 </para></step>
1990 </procedure>
1991 </listitem>
1992 </varlistentry>
1993 </variablelist>
1994
1995 <formalpara>
1996 <title>Building a Matrox TV-out cable</title>
1997 <para>
1998 No one takes any responsibility, nor guarantee for any damage caused
1999 by this documentation.
2000 </para>
2001 </formalpara>
2002
2003 <formalpara>
2004 <title>Cable for G400</title>
2005 <para>
2006 The CRTC2 connector's fourth pin is the composite video signal. The
2007 ground are the sixth, seventh and eighth pins. (info contributed
2008 from Balázs Rácz)
2009 </para>
2010 </formalpara>
2011
2012 <formalpara>
2013 <title>Cable for G450</title>
2014 <para>
2015 The CRTC2 connector's first pin is the composite video signal. The
2016 ground are the fifth, sixth, seventh, and fifteenth (5, 6, 7, 15)
2017 pins. (info contributed from Balázs Kerekes)
2018 </para>
2019 </formalpara>
2020 </sect4>
2021
2022 <sect4 id="tv-out_matrox_g450">
2023 <title>Matrox G450/G550 cards</title>
2024 <para>
2025 TV output support for these cards has only been recently introduced, and is
2026 not yet in the mainstream kernel. Currently the <emphasis role="bold">mga_vid</emphasis>
2027 module can't be used AFAIK, because the G450/G550 driver works only in one
2028 configuration: the first CRTC chip (with much more features) on the first display
2029 (on monitor), and the second CRTC (no <emphasis role="bold">BES</emphasis> - for
2030 explanation on BES, please see the G400 section above) on TV. So you can only
2031 use <application>MPlayer</application>'s <emphasis>fbdev</emphasis> output driver
2032 at the present.
2033 </para>
2034
2035 <para>
2036 The first CRTC can't be routed to the second head currently. The author of the
2037 kernel matroxfb driver - Petr Vandrovec - will maybe make support for this, by
2038 displaying the first CRTC's output onto both of the heads at once, as currently
2039 recommended for G400, see the section above.
2040 </para>
2041
2042 <para>
2043 The necessary kernel patch and the detailed howto is downloadable from
2044 <ulink url="http://www3.sympatico.ca/dan.eriksen/matrox_tvout/"/>
2045 </para>
2046 </sect4>
2047
2048
2049 <sect4 id="tvout-ati">
2050 <title>ATI cards</title>
2051
2052 <formalpara>
2053 <title>PREAMBLE</title>
2054 <para>
2055 Currently ATI doesn't want to support any of its TV-out chips under Linux,
2056 because of their licensed Macrovision technology.
2057 </para>
2058 </formalpara>
2059
2060 <itemizedlist>
2061 <title>ATI CARDS TV-OUT STATUS ON LINUX</title>
2062 <listitem><simpara>
2063 <emphasis role="bold">ATI Mach64</emphasis>:
2064 supported by <ulink url="http://gatos.sf.net">gatos</ulink>.
2065 </simpara></listitem>
2066 <listitem><simpara>
2067 <emphasis role="bold">ASIC Radeon VIVO</emphasis>:
2068 supported by <ulink url="http://gatos.sf.net">gatos</ulink>.
2069 </simpara></listitem>
2070 <listitem><simpara>
2071 <emphasis role="bold">Radeon</emphasis> and <emphasis role="bold">Rage128</emphasis>:
2072 supported by <application>MPlayer</application>!
2073 Check <link linkend="vesa">VESA driver</link> and
2074 <link linkend="vidix">VIDIX</link> sections.
2075 </simpara></listitem>
2076 <listitem><simpara>
2077 <emphasis role="bold">Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4</emphasis>:
2078 supported by <ulink url="http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/">atitvout</ulink>.
2079 </simpara></listitem>
2080 </itemizedlist>
2081
2082 <para>
2083 On other cards, just use the <link linkend="vesa">VESA</link> driver,
2084 without VIDIX. Powerful CPU is needed, though.
2085 </para>
2086
2087 <para>
2088 Only thing you need to do - <emphasis role="bold">Have the TV connector
2089 plugged in before booting your PC</emphasis> since video BIOS initializes
2090 itself only once during POST procedure.
2091 </para>
2092 </sect4>
2093
2094
2095 <sect4 id="tvout-voodoo">
2096 <title>Voodoo 3</title>
2097 <para>
2098 Check <ulink url="http://www.iki.fi/too/tvout-voodoo3-3000-xfree">this URL</ulink>.
2099 </para>
2100 </sect4>
2101
2102 <sect4 id="tvout-nvidia">
2103 <title>Voodoo 3</title>
2104 <para>
2105 First, you MUST download the closed-source drivers from <ulink url="http://nvidia.com"/>.
2106 I will not describe the installation and configuration process because it does not cover
2107 the scope of this documentation.
2108 </para>
2109
2110 <para>
2111 After XFree86, XVideo, and 3D acceleration is properly working, edit your
2112 card's Device section in the <filename>XF86Config</filename> file, according
2113 to the following example (adapt for your card/TV):
2114
2115 <programlisting>
2116 Section "Device"
2117 Identifier "GeForce"
2118 VendorName "ASUS"
2119 BoardName "nVidia GeForce2/MX 400"
2120 Driver "nvidia"
2121 #Option "NvAGP" "1"
2122 Option "NoLogo"
2123 Option "CursorShadow" "on"
2124
2125 Option "TwinView"
2126 Option "TwinViewOrientation" "Clone"
2127 Option "MetaModes" "1024x768,640x480"
2128 Option "ConnectedMonitor" "CRT, TV"
2129 Option "TVStandard" "PAL-B"
2130 Option "TVOutFormat" "Composite"
2131
2132 EndSection
2133 </programlisting>
2134 </para>
2135
2136 <para>
2137 Of course the important thing is the TwinView part.
2138 </para>
2139 </sect4>
2140 </sect3>
2141 </sect2>