mirror of https://github.com/mpv-player/mpv
1361 lines
57 KiB
HTML
1361 lines
57 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
<HTML>
|
||
|
||
<HEAD>
|
||
<TITLE>Video - MPlayer - The Movie Player for Linux</TITLE>
|
||
<LINK REL="stylesheet" TYPE="text/css" HREF="default.css">
|
||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||
</HEAD>
|
||
|
||
<BODY>
|
||
|
||
|
||
<H3><A NAME="video">2.3.1 Video output devices</A></H3>
|
||
|
||
|
||
<H4><A NAME="mtrr">2.3.1.1 Setting up MTRR</A></H4>
|
||
|
||
<P>It is VERY recommended to check if the MTRR registers are set up properly,
|
||
because they can give a big performance boost.</P>
|
||
|
||
<P>Do a '<CODE>cat /proc/mtrr</CODE>':</P>
|
||
|
||
<P><CODE>
|
||
--($:~)-- cat /proc/mtrr<BR>
|
||
reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9<BR>
|
||
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1</CODE></P>
|
||
|
||
<P>It's right, shows my Matrox G400 with 16MB memory. I did this from
|
||
XFree 4.x.x , which sets up MTRR registers automatically.</P>
|
||
|
||
<P>If nothing worked, you have to do it manually. First, you have to find the
|
||
base address. You have 3 ways to find it:</P>
|
||
|
||
<UL>
|
||
<LI>from X11 startup messages, for example:
|
||
<P><CODE>(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000<BR>
|
||
(--) SVGA: Linear framebuffer at 0xD8000000</CODE></P></LI>
|
||
<LI>from /proc/pci (use lspci -v command):
|
||
<P>
|
||
<CODE>01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525</CODE>
|
||
<CODE>Memory at d8000000 (32-bit, prefetchable)</CODE>
|
||
</P></LI>
|
||
<LI>from mga_vid kernel driver messages (use <CODE>dmesg</CODE>):
|
||
<P><CODE>mga_mem_base = d8000000</CODE></P></LI>
|
||
</UL>
|
||
|
||
<P>Then let's find the memory size. This is very easy, just convert video ram
|
||
size to hexadecimal, or use this table:</P>
|
||
|
||
<TABLE BORDER=0>
|
||
<TR><TD> </TD><TD>1 MB</TD><TD WIDTH="10%"></TD><TD>0x100000</TD></TR>
|
||
<TR><TD></TD><TD>2 MB</TD><TD></TD><TD>0x200000</TD></TR>
|
||
<TR><TD></TD><TD>4 MB</TD><TD></TD><TD>0x400000</TD></TR>
|
||
<TR><TD></TD><TD>8 MB</TD><TD></TD><TD>0x800000</TD></TR>
|
||
<TR><TD></TD><TD>16 MB</TD><TD></TD><TD>0x1000000</TD></TR>
|
||
<TR><TD></TD><TD>32 MB</TD><TD></TD><TD>0x2000000</TD></TR>
|
||
</TABLE>
|
||
|
||
|
||
<P>You know base address and memory size, let's setup MTRR registers!
|
||
For example, for the Matrox card above (base=0xd8000000) with 32MB
|
||
ram (size=0x2000000) just execute:</P>
|
||
|
||
|
||
<P><CODE> echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr</CODE></P>
|
||
|
||
|
||
<P>Not all CPUs support MTRRs. For example older K6-2's [around 266MHz,
|
||
stepping 0] doesn't support MTRR, but stepping 12's do ('<CODE>cat
|
||
/proc/cpuinfo</CODE>' to check it').</P>
|
||
|
||
|
||
<H4><A NAME="xv">2.3.1.2 Xv</A></H4>
|
||
|
||
<P>Under XFree86 4.0.2 or newer, you can use your card's hardware YUV routines
|
||
using the XVideo extension. This is what the option '-vo xv' uses. Also,
|
||
this is driver supports adjusting brightness/contrast/hue/etc (unless you use
|
||
the old, slow DirectShow DivX codec, which supports it everywhere), see the
|
||
man page.</P>
|
||
|
||
<P>In order to make this work, be sure to check the following:</P>
|
||
|
||
<UL>
|
||
<LI>You have to use XFree86 4.0.2 or newer (former versions don't have
|
||
XVideo)</LI>
|
||
<LI>Your card actually supports hardware acceleration (modern cards do)</LI>
|
||
<LI>X loads the XVideo extension, it's something like this:
|
||
|
||
<P><CODE> (II) Loading extension XVideo</CODE></P>
|
||
|
||
<P>in /var/log/XFree86.0.log</P>
|
||
|
||
<P>NOTE: this loads only the XFree86's extension. In a good install, this
|
||
is always loaded, and doesn't mean that the <B>card's</B> XVideo support is
|
||
loaded!</P>
|
||
</LI>
|
||
<LI>Your card has Xv support under Linux. To check, try 'xvinfo', it is the
|
||
part of the XFree86 distribution. It should display a long text, similar
|
||
to this:
|
||
<PRE>
|
||
X-Video Extension version 2.2
|
||
screen #0
|
||
Adaptor #0: "Savage Streams Engine"
|
||
number of ports: 1
|
||
port base: 43
|
||
operations supported: PutImage
|
||
supported visuals:
|
||
depth 16, visualID 0x22
|
||
depth 16, visualID 0x23
|
||
number of attributes: 5
|
||
(...)
|
||
Number of image formats: 7
|
||
id: 0x32595559 (YUY2)
|
||
guid: 59555932-0000-0010-8000-00aa00389b71
|
||
bits per pixel: 16
|
||
number of planes: 1
|
||
type: YUV (packed)
|
||
id: 0x32315659 (YV12)
|
||
guid: 59563132-0000-0010-8000-00aa00389b71
|
||
bits per pixel: 12
|
||
number of planes: 3
|
||
type: YUV (planar)
|
||
(...etc...)
|
||
</PRE>
|
||
<P>It must support YUY2 packed, and YV12 planar pixel formats to be
|
||
usable with MPlayer.</P>
|
||
</LI>
|
||
<LI>And finally, check if MPlayer was compiled with 'xv' support.
|
||
./configure prints this.</LI>
|
||
</UL>
|
||
|
||
|
||
<H5><A NAME="xv_3dfx">2.3.1.2.1 3dfx cards</A></H5>
|
||
|
||
<P>Older 3dfx drivers were known to have problems with XVideo acceleration, it
|
||
didn't support either YUY2 or YV12, and so. Verify that you have XFree86
|
||
version 4.2.0 or greater, it works OK with YV12 and YUY2. Previous versions,
|
||
including 4.1.0, <B>crash with YV12</B>. If you experience strange effects
|
||
using -vo xv, try SDL (it has XVideo too) and see if it helps. Check the
|
||
<A HREF="#sdl">SDL section</A> for details.</P>
|
||
|
||
<P><B>OR</B>, try the NEW -vo tdfxfb driver! See the
|
||
<A HREF="#tdfxfb">tdfxfb</A> section.</P>
|
||
|
||
|
||
<H5><A NAME="xv_s3">2.3.1.2.2 S3 cards</A></H5>
|
||
|
||
<P>S3 Savage3D's should work fine, but for Savage4, use XFree86 version 4.0.3
|
||
or greater (in case of image problems, try 16bpp). As for S3 Virge.. there is
|
||
xv support, but the card itself is very slow, so you better sell it.</P>
|
||
|
||
<P><B>NOTE</B>: it's currently unclear which Savage models lack YV12 support,
|
||
and convert by driver (slow). If you suspect your card, get a newer driver,
|
||
or ask politely on the mplayer-users mailing list for an MMX/3DNow enabled
|
||
driver.</P>
|
||
|
||
|
||
<H5><A NAME="xv_nvidia">2.3.1.2.3 nVidia cards</A></H5>
|
||
|
||
<P>nVidia isn't a very good choice under Linux (according to nVidia, this is
|
||
<A HREF="users_against_developers.html#nvidia">not true</A>).. You'll have to
|
||
use the binary closed-source nVidia driver, available at nVidia's web site.
|
||
The standard XFree86 driver doesn't support XVideo for these cards, due to
|
||
nVidia's closed sources/specifications.</P>
|
||
|
||
<P>As far as I know the latest XFree86 driver contains XVideo support for
|
||
GeForce 2 and 3.</P>
|
||
|
||
<P>Riva128 cards don't have XVideo support even with the nVidia driver :(
|
||
Complain to nVidia.</P>
|
||
|
||
|
||
<H5><A NAME="xv_ati">2.3.1.2.4 ATI cards</A></H5>
|
||
|
||
<UL>
|
||
<LI>The <A HREF="http://www.linuxvideo.org/gatos">GATOS driver</A> (which you
|
||
should use, unless you have Rage128 or Radeon) has VSYNC enabled by
|
||
default. It means that decoding speed (!) is synced to the monitor's
|
||
refresh rate. If playing seems to be slow, try disabling VSYNC somehow, or
|
||
set refresh rate to n*(fps of the movie) Hz.</LI>
|
||
<LI>Radeon VE - currently only XFree86 CVS has driver for this card, version
|
||
4.1.0 doesn't. And no TV out support. Of course with MPlayer you can
|
||
happily get <B>accelerated</B> display, with or without <B>TV output</B>, and
|
||
no libraries or X are needed. Read <A HREF="#vidix">Vidix</A> section.</LI>
|
||
</UL>
|
||
|
||
|
||
<H5><A NAME="xv_neomagic">2.3.1.2.5 NeoMagic cards</A></H5>
|
||
|
||
<P>These cards can be found in many laptops. Unfortunately, the driver in
|
||
X 4.2.0 can't do Xv, but we have a modified, Xv-capable driver for you.
|
||
<A HREF="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/neomagic_drv.o.4.2.0.bz2">Download from here</A>.
|
||
Driver provided by Stefan Seyfried.</P>
|
||
|
||
<P>To allow playback of DVD sized content change your XF86Config like this:</P>
|
||
|
||
<P>Section "Device"<BR>
|
||
<I>[...]</I><BR>
|
||
Driver "neomagic"<BR>
|
||
<B>Option "OverlayMem" "829440"</B><BR>
|
||
<I>[...]</I><BR>
|
||
EndSection</P>
|
||
|
||
|
||
<H5><A NAME="xv_trident">2.3.1.2.6 Trident cards</A></H5>
|
||
|
||
<P>If you want to use xv with a trident card, provided that it doesn't work
|
||
with 4.1.0, install XFree 4.2.0. 4.2.0 adds support for fullscreen xv
|
||
support with the Cyberblade XP card.</P>
|
||
|
||
|
||
<H4><A NAME="dga">2.3.1.3 DGA</A></H4>
|
||
|
||
|
||
<H5><A NAME="dga_summary">2.3.1.3.1 Summary</A></H5>
|
||
|
||
<P>This document tries to explain in some words what DGA is in general and what
|
||
the DGA video output driver for MPlayer can do (and what it
|
||
can't).</P>
|
||
|
||
|
||
<H5><A NAME="dga_whatis">2.3.1.3.2 What is DGA</A></H5>
|
||
|
||
<P>DGA is short for Direct Graphics Access and is a means for a program to
|
||
bypass the X-Server and directly modifying the framebuffer memory.
|
||
Technically spoken this happens by mapping the framebuffer memory into
|
||
the memory range of your process. This is allowed by the kernel only
|
||
if you have superuser privileges. You can get these either by logging in
|
||
as root or by setting the SUID bit on the MPlayer executable (<B>not
|
||
recommended</B>).</P>
|
||
|
||
<P>There are two versions of DGA: DGA1 is used by XFree 3.x.x and DGA2 was
|
||
introduced with XFree 4.0.1.</P>
|
||
|
||
<P>DGA1 provides only direct framebuffer access as described above. For
|
||
switching the resolution of the video signal you have to rely on the
|
||
XVidMode extension.</P>
|
||
|
||
<P>DGA2 incorporates the features of XVidMode extension and also allows
|
||
switching the depth of the display. So you may, although basically
|
||
running a 32 bit depth X server, switch to a depth of 15 bits and vice
|
||
versa. </P>
|
||
|
||
<P>However DGA has some drawbacks. It seems it is somewhat dependent on the
|
||
graphics chip you use and on the implementation of the X server's video
|
||
driver that controls this chip. So it does not work on every system ...</P>
|
||
|
||
|
||
<H5><A NAME="dga_installation">2.3.1.3.3 Installing DGA support for MPlayer</A></H5>
|
||
|
||
<P>First make sure X loads the DGA extension, see in /var/log/XFree86.0.log:</P>
|
||
|
||
<P> <CODE>(II) Loading extension XFree86-DGA</CODE></P>
|
||
|
||
<P>See, XFree86 4.0.x or greater is VERY RECOMMENDED! MPlayer's DGA
|
||
driver is autodetected on ./configure, or you can force it with
|
||
--enable-dga.</P>
|
||
|
||
<P>If the driver couldn't switch to a smaller resolution, experiment with
|
||
switches -vm (only with X 3.3.x), -fs, -bpp, -zoom to find a video mode that
|
||
the movie fits in. There is no converter right now :(</P>
|
||
|
||
<P>Become root. DGA needs root access to be able to write directly to video
|
||
memory. If you want to run it as user, then install MPlayer SUID
|
||
root:</P>
|
||
|
||
<P><CODE>
|
||
chown root /usr/local/bin/mplayer<BR>
|
||
chmod 750 /usr/local/bin/mplayer<BR>
|
||
chmod +s /usr/local/bin/mplayer</CODE></P>
|
||
|
||
<P>Now it works as a simple user, too.</P>
|
||
|
||
<BLOCKQUOTE>
|
||
<B>Warning: security risk</B><BR>
|
||
This is a <B>big</B> security risk! <B>Never</B> do this on a server or on
|
||
a computer that can be accessed by other people because they can gain root
|
||
privileges through SUID root MPlayer.
|
||
</BLOCKQUOTE>
|
||
|
||
<P>Now use the <CODE>-vo dga</CODE> option, and there you go (hope so :))!
|
||
You should also try if the <CODE>-vo sdl:dga</CODE> option works for you. It's
|
||
much faster.</P>
|
||
|
||
|
||
<H5><A NAME="dga_resolution">2.3.1.3.4 Resolution switching</A></H5>
|
||
|
||
<P>The DGA driver allows for switching the resolution of the output signal.
|
||
This avoids the need for doing (slow) software scaling and at the same time
|
||
provides a fullscreen image. Ideally it would switch to the exact resolution
|
||
(except for honoring aspect ratio) of the video data, but the X server only
|
||
allows switching to resolutions predefined in
|
||
<CODE>/etc/X11/XF86Config</CODE> (<CODE>/etc/X11/XF86Config-4</CODE> for
|
||
XFree 4.0.X respectively). Those are defined by so-called modelines and
|
||
depend on the capabilities of your video hardware. The X server scans this
|
||
config file on startup and disables the modelines not suitable for your
|
||
hardware. You can find out which modes survive with the X11 log file. It can
|
||
be found at:
|
||
<CODE>/var/log/XFree86.0.log</CODE>.</P>
|
||
|
||
<P>See appendix A for some sample modeline definitions.</P>
|
||
|
||
|
||
<H5><A NAME="dga_mplayer">2.3.1.3.5 DGA & MPlayer</A></H5>
|
||
|
||
<P>DGA is used in two places with MPlayer: The SDL driver can be made to
|
||
make use of it (-vo sdl:dga) and within the DGA driver (-vo dga). The above
|
||
said is true for both; in the following sections I'll explain how the DGA
|
||
driver for MPlayer works.</P>
|
||
|
||
|
||
<H5><A NAME="dga_features">2.3.1.3.6 Features of the DGA driver</A></H5>
|
||
|
||
<P>The DGA driver is invoked by specifying -vo dga at the command line.
|
||
The default behavior is to switch to a resolution matching the original
|
||
resolution of the video as close as possible. It deliberately ignores the
|
||
-vm and -fs switches (enabling of video mode switching and fullscreen) -
|
||
it always tries to cover as much area of your screen as possible by switching
|
||
the video mode, thus refraining to use a single additional cycle of your CPU
|
||
to scale the image.
|
||
If you don't like the mode it chooses you may force it to choose the mode
|
||
matching closest the resolution you specify by -x and -y.
|
||
By providing the -v option, the DGA driver will print, among a lot of other
|
||
things, a list of all resolutions supported by your current XF86-Config
|
||
file.
|
||
Having DGA2 you may also force it to use a certain depth by using the -bpp
|
||
option. Valid depths are 15, 16, 24 and 32. It depends on your hardware
|
||
whether these depths are natively supported or if a (possibly slow)
|
||
conversion has to be done.</P>
|
||
|
||
<P>If you should be lucky enough to have enough offscreen memory left to
|
||
put a whole image there, the DGA driver will use doublebuffering, which
|
||
results in much smoother movie replaying. It will tell you whether double-
|
||
buffering is enabled or not.</P>
|
||
|
||
<P>Doublebuffering means that the next frame of your video is being drawn in
|
||
some offscreen memory while the current frame is being displayed. When the
|
||
next frame is ready, the graphics chip is just told the location in memory
|
||
of the new frame and simply fetches the data to be displayed from there.
|
||
In the meantime the other buffer in memory will be filled again with new
|
||
video data.</P>
|
||
|
||
<P>Doublebuffering may be switched on by using the option -double and may be
|
||
disabled with -nodouble. Current default option is to disable
|
||
doublebuffering. When using the DGA driver, onscreen display (OSD) only
|
||
works with doublebuffering enabled. However, enabling doublebuffering may
|
||
result in a big speed penalty (on my K6-II+ 525 it used an additional 20% of
|
||
CPU time!) depending on the implementation of DGA for your hardware.</P>
|
||
|
||
|
||
<H5><A NAME="dga_speed">2.3.1.3.7 Speed issues</A></H5>
|
||
|
||
<P>Generally spoken, DGA framebuffer access should be at least as fast as using
|
||
the X11 driver with the additional benefit of getting a fullscreen image.
|
||
The percentage speed values printed by MPlayer have to be interpreted
|
||
with some care, as for example, with the X11 driver they do not include the
|
||
time used by the X-Server needed for the actual drawing. Hook a terminal to a
|
||
serial line of your box and start top to see what is really going on in your
|
||
box...</P>
|
||
|
||
<P>Generally spoken, the speedup done by using DGA against 'normal' use of X11
|
||
highly depends on your graphics card and how well the X-Server module for it
|
||
is optimized.</P>
|
||
|
||
<P>If you have a slow system, better use 15 or 16bit depth since they require
|
||
only half the memory bandwidth of a 32 bit display.</P>
|
||
|
||
<P>Using a depth of 24bit is even a good idea if your card natively just
|
||
supports 32 bit depth since it transfers 25% less data compared to the 32/32
|
||
mode.</P>
|
||
|
||
<P>I've seen some AVI files already be replayed on a Pentium MMX 266. AMD K6-2
|
||
CPUs might work at 400 MHZ and above.</P>
|
||
|
||
|
||
<H5><A NAME="dga_bugs">2.3.1.3.8 Known bugs</A></H5>
|
||
|
||
<P>Well, according to some developers of XFree, DGA is quite a beast. They
|
||
tell you better not to use it. Its implementation is not always flawless
|
||
with every chipset driver for XFree out there.</P>
|
||
|
||
<UL>
|
||
<LI>With XFree 4.0.3 and nv.o there is a bug resulting in strange
|
||
colors.</LI>
|
||
<LI>ATI driver requires to switch mode back more than once after finishing
|
||
using of DGA.</LI>
|
||
<LI>Some drivers simply fail to switch back to normal resolution (use
|
||
Ctrl-Alt-Keypad +, - to switch back manually).</LI>
|
||
<LI>Some drivers simply display strange colors.</LI>
|
||
<LI>Some drivers lie about the amount of memory they map into the process's
|
||
address space, thus vo_dga won't use doublebuffering (SIS?).</LI>
|
||
<LI>some drivers seem to fail to report even a single valid mode. In this
|
||
case the DGA driver will crash telling you about a nonsense mode of
|
||
100000x100000 or the like ...</LI>
|
||
<LI>OSD only works with doublebuffering enabled.</LI>
|
||
</UL>
|
||
|
||
|
||
<H5><A NAME="dga_future">2.3.1.3.9 Future work</A></H5>
|
||
|
||
<UL>
|
||
<LI>use of the new X11 render interface for OSD</LI>
|
||
<LI>where is my TODO list ???? :-(((</LI>
|
||
</UL>
|
||
|
||
|
||
<H5><A NAME="dga_modelines">2.3.1.3.A Some modelines</A></H5>
|
||
|
||
<PRE>
|
||
Section "Modes"
|
||
Identifier "Modes[0]"
|
||
Modeline "800x600" 40 800 840 968 1056 600 601 605 628
|
||
Modeline "712x600" 35.0 712 740 850 900 400 410 412 425
|
||
Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
|
||
Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
|
||
Modeline "352x288" 25.10 352 368 416 432 288 296 290 310
|
||
Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan
|
||
Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
|
||
EndSection
|
||
</PRE>
|
||
|
||
<P>These entries work fine with my Riva128 chip, using nv.o X server driver
|
||
module.</P>
|
||
|
||
|
||
<H5><A NAME="dga_bug_reports">2.3.1.3.B Bug Reports</A></H5>
|
||
|
||
<P>If you experience troubles with the DGA driver please feel free to file
|
||
a bug report to me (e-mail address below). Please start MPlayer with
|
||
the -v option and include all lines in the bug report that start with
|
||
vo_dga:</P>
|
||
|
||
<P>Please do also include the version of X11 you are using, the graphics card
|
||
and your CPU type. The X11 driver module (defined in XF86-Config) might
|
||
also help. Thanks!</P>
|
||
|
||
<P><I>Acki (acki@acki-netz.de, www.acki-netz.de)</I></P>
|
||
|
||
|
||
<H4><A NAME="sdl">2.3.1.4 SDL</A></H4>
|
||
|
||
<P>SDL (Simple Directmedia Layer) is basically a unified video/audio
|
||
interface. Programs that use it know only about SDL, and not about what video
|
||
or audio driver does SDL actually use. For example a Doom port using SDL can
|
||
run on svgalib, aalib, X, fbdev, and others, you only have to specify the
|
||
(for example) video driver to use with the SDL_VIDEODRIVER environment
|
||
variable. Well, in theory.</P>
|
||
|
||
<P>With MPlayer, we used its X11 driver's software scaler ability for
|
||
cards/drivers that doesn't support XVideo, until we made our own (faster,
|
||
nicer) software scaler. Also we used its aalib output, but now we have ours
|
||
which is more comfortable. Its DGA mode was better than ours, until
|
||
recently. Get it now? :)</P>
|
||
|
||
<P>It also helps with some buggy drivers/cards if the video is jerky
|
||
(not slow system problem), or audio is lagging.</P>
|
||
|
||
<P>SDL video output supports displaying subtitles under the movie, on the (if
|
||
present) black bar.</P>
|
||
|
||
<P><B>There are several command line switches for SDL:</B></P>
|
||
<DL>
|
||
<DT><CODE>-vo sdl:name</CODE></DT>
|
||
<DD>specifies sdl video driver to use (i.e.. aalib, dga, x11)</DD>
|
||
|
||
<DT><CODE>-ao sdl:name</CODE></DT>
|
||
<DD>specifies sdl audio driver to use (i.e. dsp, esd, arts)</DD>
|
||
|
||
<DT><CODE>-noxv</CODE></DT>
|
||
<DD>disables XVideo hardware acceleration</DD>
|
||
|
||
<DT><CODE>-forcexv</CODE></DT>
|
||
<DD>tries to force XVideo acceleration</DD>
|
||
</DL>
|
||
|
||
<TABLE BORDER=0>
|
||
<TR><TD COLSPAN=4><P><B>SDL Keys:</B></P></TD></TR>
|
||
<TR><TD></TD><TD><CODE>F</CODE></TD><TD></TD><TD>toggles fullscreen/windowed mode</TD></TR>
|
||
<TR><TD></TD><TD><CODE>C</CODE></TD><TD></TD><TD>cycles available fullscreen modes</TD></TR>
|
||
<TR><TD></TD><TD><CODE>W/S</CODE></TD><TD></TD><TD>mappings for * and / (mixer control)</TD></TR>
|
||
</TABLE>
|
||
|
||
<H4>Known bugs:</H4>
|
||
|
||
<UL>
|
||
<LI>Keys pressed under sdl:aalib console driver repeat forever. (use -vo aa!)
|
||
It's bug in SDL, I can't change it (tested with SDL 1.2.1).</LI>
|
||
<LI>DO<EFBFBD>NOT<EFBFBD>USE<EFBFBD>SDL with GUI! It won't work as it should.</LI>
|
||
</UL>
|
||
|
||
|
||
<H4><A NAME="svgalib">2.3.1.5 SVGAlib</A></H4>
|
||
|
||
<H4>Installation</H4>
|
||
|
||
<P>You'll have to install svgalib and its development package in order for
|
||
MPlayer build its SVGAlib driver (autodetected, but can be forced),
|
||
and don't forget to edit /etc/vga/libvga.config to suit your card &
|
||
monitor.</P>
|
||
|
||
<H4>Notes</H4>
|
||
|
||
<P>Be sure not to use the -fs switch, since it toggles the usage of the software
|
||
scaler, and it's slow. If you really need it, use the <CODE>-sws 4</CODE>
|
||
option which will produce bad quality, but is somewhat faster.</P>
|
||
|
||
<H4>EGA (4bpp) support</H4>
|
||
|
||
<P>SVGAlib incorporates EGAlib, and MPlayer has the possibility to
|
||
display any movie in 16 colors, thus usable in the following sets:</P>
|
||
|
||
<UL>
|
||
<LI>EGA card with EGA monitor: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp</LI>
|
||
<LI>EGA card with CGA monitor: 320x200x4bpp, 640x200x4bpp</LI>
|
||
</UL>
|
||
|
||
<P>The bpp (bits per pixel) value must be set to 4 by hand:<BR>
|
||
<CODE>-bpp 4</CODE><BR>
|
||
The movie probably must be scaled down to fit in EGA mode:<BR>
|
||
<CODE>-vop scale=640:350</CODE> or<BR>
|
||
<CODE>-vop scale=320:200</CODE><BR>
|
||
For that we need fast but bad quality scaling routine:<BR>
|
||
<CODE>-sws 4</CODE><BR>
|
||
Maybe automatic aspect correction has to be shut off:<BR>
|
||
<CODE>-noaspect</CODE></P>
|
||
|
||
|
||
<H4><A NAME="fbdev">2.3.1.6 Framebuffer output (FBdev)</A></H4>
|
||
|
||
<P>Whether to build the FBdev target is autodetected during ./configure .
|
||
Read the framebuffer documentation in the kernel sources
|
||
(Documentation/fb/*) for more information.</P>
|
||
|
||
<P>If your card doesn't support VBE 2.0 standard (older ISA/PCI
|
||
cards, such as S3 Trio64), only VBE 1.2 (or older?):
|
||
Well, VESAfb is still available, but you'll have to load SciTech Display
|
||
Doctor (formerly UniVBE) before booting Linux. Use a DOS boot disk or
|
||
whatever. And don't forget to register your UniVBE ;))</P>
|
||
|
||
<P>The FBdev output takes some additional parameters above the others:</P>
|
||
|
||
<DL>
|
||
<DT><CODE>-fb</CODE></DT>
|
||
<DD>specify the framebuffer device to use (/dev/fb0)</DD>
|
||
|
||
<DT><CODE>-fbmode</CODE></DT>
|
||
<DD>mode name to use (according to /etc/fb.modes)</DD>
|
||
|
||
<DT><CODE>-fbmodeconfig</CODE></DT>
|
||
<DD>config file of modes (default /etc/fb.modes)</DD>
|
||
|
||
<DT><CODE>-monitor_hfreq</CODE></DT>
|
||
<DT><CODE>-monitor_vfreq</CODE></DT>
|
||
<DT><CODE>-monitor_dotclock</CODE></DT>
|
||
<DD><STRONG>Important</STRONG> values, see <CODE>example.conf</CODE></DD>
|
||
</DL>
|
||
|
||
<P>If you want to change to a specific mode, then use</P>
|
||
|
||
<P><CODE> mplayer -vm -fbmode (NameOfMode) filename</CODE></P>
|
||
|
||
<UL>
|
||
<LI><B>-vm</B> alone will choose the most suitable mode from /etc/fb.modes.
|
||
Can be used together with -x and -y options too. The -flip option is
|
||
supported only if the movie's pixel format matches the video mode's pixel
|
||
format. Pay attention to the bpp value, fbdev driver tries to use the
|
||
current, or if you specify the -bpp option, then that.</LI>
|
||
<LI><B>-zoom</B> option isn't supported (software scaling is slow). -fs
|
||
option isn't supported. You can't use 8bpp (or less) modes.</LI>
|
||
<LI>you possibly want to turn the cursor off: <CODE>echo -e
|
||
'\033[?25l'</CODE> or <CODE>setterm -cursor off</CODE><BR>
|
||
and the screen saver: <CODE>setterm -blank 0</CODE><BR>
|
||
To turn the cursor back on: <CODE>echo -e '\033[?25h'</CODE>
|
||
or <CODE>setterm -cursor on</CODE></LI>
|
||
</UL>
|
||
|
||
<P>NOTE: FBdev video mode changing _does not work_ with the VESA framebuffer,
|
||
and don't ask for it, since it's not an MPlayer limitation.</P>
|
||
|
||
|
||
<H4><A NAME="mga_vid">2.3.1.7 Matrox framebuffer (mga_vid)</A></H4>
|
||
|
||
<P>This section is about the Matrox G200/G400/G450/G550 BES (Back-End Scaler)
|
||
support, the mga_vid kernel driver. It's active developed by me (A'rpi), and
|
||
it has hardware VSYNC support with triple buffering. It works on both
|
||
framebuffer console and under X.</P>
|
||
|
||
<P><B>WARNING</B>: on non-Linux systems, use <A HREF="#vidix">VIDIX</A> for
|
||
mga_vid!</P>
|
||
|
||
<P><B>Installation:</B></P>
|
||
<OL>
|
||
<LI>To use it, you first have to compile mga_vid.o:
|
||
<P><CODE>cd drivers<BR>
|
||
make</CODE></P></LI>
|
||
<LI>Then create the <CODE>/dev/mga_vid</CODE> device:
|
||
<P><CODE>mknod /dev/mga_vid c 178 0</CODE></P>
|
||
<P>and load the driver with</P>
|
||
<P><CODE>insmod mga_vid.o</CODE></P></LI>
|
||
<LI>You should verify the memory size detection using the <CODE>dmesg</CODE>
|
||
command. If it's bad, use the <CODE>mga_ram_size</CODE> option
|
||
(<CODE>rmmod mga_vid</CODE> first), specify card's memory size in MB:
|
||
<P><CODE>insmod mga_vid.o mga_ram_size=16</CODE></P></LI>
|
||
<LI>To make it load/unload automatically when needed, first insert the
|
||
following line at the end of <CODE>/etc/modules.conf</CODE>:
|
||
<P><CODE>alias char-major-178 mga_vid</CODE></P>
|
||
<P>Then copy the <CODE>mga_vid.o</CODE> module to the appropriate place
|
||
under <CODE>/lib/modules/<kernel version>/somewhere</CODE>.</P>
|
||
<P>Then run</P>
|
||
<P><CODE>depmod -a</CODE></P></LI>
|
||
<LI>Now you have to (re)compile MPlayer, <CODE>configure</CODE> will
|
||
detect <CODE>/dev/mga_vid</CODE> and build the 'mga' driver. Using it from
|
||
MPlayer goes by <CODE>-vo mga</CODE> if you have matroxfb console,
|
||
or <CODE>-vo xmga</CODE> under XFree86 3.x.x or 4.x.x.</LI>
|
||
</OL>
|
||
|
||
<P>The mga_vid driver cooperates with Xv.</P>
|
||
|
||
<P>The <CODE>/dev/mga_vid</CODE> device file can be read (for example by
|
||
<CODE>cat /dev/mga_vid</CODE>) for some info, and written for brightness
|
||
change: <CODE>echo "brightness=120" > /dev/mga_vid</CODE></P>
|
||
|
||
|
||
<H4><A NAME="tdfxfb">2.3.1.8 3dfx YUV support (tdfxfb)</A></H4>
|
||
|
||
<P>This driver uses the kernel's tdfx framebuffer driver to play movies with
|
||
YUV acceleration. You'll need a kernel with tdfxfb support, and recompile
|
||
with <CODE>./configure --enable-tdfxfb</CODE></P>
|
||
|
||
|
||
<H4><A NAME="opengl">2.3.1.9 OpenGL output</A></H4>
|
||
|
||
<P>MPlayer supports displaying movies using OpenGL, but if your
|
||
platform/driver supports xv as should be the case on a PC with Linux, use xv
|
||
instead, OpenGL performance is considerably worse. If you have an X11
|
||
implementation without xv support, OpenGL is a viable alternative.</P>
|
||
|
||
<P>Unfortunately not all drivers support this feature. The Utah-GLX drivers
|
||
(for XFree86 3.3.6) support it for all cards. See
|
||
<A HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A>
|
||
for details about how to install it.</P>
|
||
|
||
<P>XFree86(DRI) 4.0.3 or later supports OpenGL with Matrox and Radeon cards,
|
||
4.2.0 or later supports Rage128. See
|
||
<A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A>
|
||
for download and installation instructions.</P>
|
||
|
||
|
||
<H4><A NAME="aalib">2.3.1.10 AAlib - text mode displaying</A></H4>
|
||
|
||
<P><B>AAlib</B> is a library for displaying graphics in text mode, using powerful
|
||
ASCII renderer. There are LOTS of programs already supporting it, like Doom,
|
||
Quake, etc. MPlayer contains a very usable driver for it.
|
||
If ./configure detects aalib installed, the aalib libvo driver will be
|
||
built.</P>
|
||
|
||
<TABLE BORDER=0>
|
||
<TR><TD COLSPAN=4><P><B>You can use some keys in the AA Window to change rendering options:</B></P></TD></TR>
|
||
<TR><TD> </TD><TD><CODE>1</CODE></TD><TD> </TD><TD>decrease contrast</TD></TR>
|
||
<TR><TD></TD><TD><CODE>2</CODE></TD><TD></TD><TD>increase contrast</TD></TR>
|
||
<TR><TD></TD><TD><CODE>3</CODE></TD><TD></TD><TD>decrease brightness</TD></TR>
|
||
<TR><TD></TD><TD><CODE>4</CODE></TD><TD></TD><TD>increase brightness</TD></TR>
|
||
<TR><TD></TD><TD><CODE>5</CODE></TD><TD></TD><TD>switch fast rendering on/off</TD></TR>
|
||
<TR><TD></TD><TD><CODE>6</CODE></TD><TD></TD><TD>set dithering mode (none, error distribution, Floyd Steinberg)</TD></TR>
|
||
<TR><TD></TD><TD><CODE>7</CODE></TD><TD></TD><TD>invert image</TD></TR>
|
||
<TR><TD></TD><TD><CODE>a</CODE></TD><TD></TD><TD>toggles between aa and MPlayer control)</TD></TR>
|
||
</TABLE>
|
||
|
||
<P><B>The following command line options can be used:</B></P>
|
||
<DL>
|
||
<DT><CODE>-aaosdcolor=V</CODE></DT>
|
||
<DD>change OSD color</DD>
|
||
|
||
<DT><CODE>-aasubcolor=V</CODE></DT>
|
||
<DD>change subtitle color
|
||
<P><I>where V can be: (0/normal, 1/dark, 2/bold, 3/bold font, 4/reverse,
|
||
5/special)</I></P></DD>
|
||
</DL>
|
||
|
||
<P><B>AAlib itself provides a large sum of options.
|
||
Here are some important:</B></P>
|
||
<DL>
|
||
<DT><CODE>-aadriver</CODE></DT>
|
||
<DD>set recommended aa driver (X11, curses, Linux)</DD>
|
||
|
||
<DT><CODE>-aaextended</CODE></DT>
|
||
<DD>use all 256 characters</DD>
|
||
|
||
<DT><CODE>-aaeight</CODE></DT>
|
||
<DD>use eight bit ASCII</DD>
|
||
|
||
<DT><CODE>-aahelp</CODE></DT>
|
||
<DD>prints out all aalib options</DD>
|
||
</DL>
|
||
|
||
<P>NOTE: the rendering is very CPU intensive, especially when using AA-on-X
|
||
(using aalib on X), and it's least CPU intensive on standard,
|
||
non-framebuffer console. Use SVGATextMode to set up a big textmode,
|
||
then enjoy! (secondary head Hercules cards rock :)) (anyone can enhance
|
||
fbdev to do conversion/dithering to hgafb? Would be neat :)</P>
|
||
|
||
<P>Use the <CODE>-framedrop</CODE> option if your computer isn't fast enough to
|
||
render all frames!</P>
|
||
|
||
<P>Playing on terminal you'll get better speed and quality using the Linux
|
||
driver, not curses (<CODE>-aadriver linux</CODE>). But therefore you need write access on
|
||
<CODE>/dev/vcsa<terminal></CODE>. That isn't autodetected by aalib, but vo_aa tries
|
||
to find the best mode. See
|
||
<A HREF="http://aa-project.sourceforge.net/tune/">http://aa-project.sourceforge.net/tune/</A>
|
||
for further tuning issues.</P>
|
||
|
||
|
||
<H4><A NAME="vesa">2.3.1.11 VESA - output to VESA BIOS</A></H4>
|
||
|
||
<P>This driver was designed and introduced as a <B>generic driver</B> for any
|
||
video card which has VESA VBE 2.0+ compatible BIOS. Another advantage of this
|
||
driver is that it tries to force TV output on.<BR>
|
||
<B>VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, 1998</B> (Page
|
||
70) says:</P>
|
||
|
||
<BLOCKQUOTE>
|
||
<B>Dual-Controller Designs</B><BR>
|
||
VBE 3.0 supports the dual-controller design by assuming that since both
|
||
controllers are typically provided by the same OEM, under control of a
|
||
single BIOS ROM on the same graphics card, it is possible to hide the fact
|
||
that two controllers are indeed present from the application. This has the
|
||
limitation of preventing simultaneous use of the independent controllers,
|
||
but allows applications released before VBE 3.0 to operate normally. The
|
||
VBE Function 00h (Return Controller Information) returns the combined
|
||
information of both controllers, including the combined list of available
|
||
modes. When the application selects a mode, the appropriate controller is
|
||
activated. Each of the remaining VBE functions then operates on the active
|
||
controller.
|
||
</BLOCKQUOTE>
|
||
|
||
<P>So you have chances to get working TV-out by using this driver.<BR>
|
||
(I guess that TV-out frequently is standalone head or standalone output
|
||
at least.)</P>
|
||
|
||
<H4>Advantages:</H4>
|
||
|
||
<UL>
|
||
<LI>You have the possibility to watch movies <B>even if Linux doesn't know</B>
|
||
your video hardware.</LI>
|
||
<LI>You don't need to have installed any graphics' related things on your Linux
|
||
(like X11 (aka XFree86), fbdev and so on). This driver can be run from
|
||
<B>text-mode</B>.</LI>
|
||
<LI>You have chances to get <B>working TV-out</B>. (It's known at least for
|
||
ATI's cards).</LI>
|
||
<LI>This driver calls <B>int 10h</B> handler thus it's not an emulator - it
|
||
calls <B>real</B> things of <B>real</B> BIOS in <B>real</B>-mode. (Finely -
|
||
in vm86 mode).</LI>
|
||
<LI>You can use Vidix with it, thus getting accelerated video display
|
||
<B>AND</B> TV output at the same time! (recommended for ATI cards)</LI>
|
||
<LI>If you have VESA VBE 3.0+, and you had specified <CODE>monitor_hfreq</CODE>,
|
||
<CODE>monitor_vfreq</CODE>, <CODE>monitor_dotclock</CODE> somewhere (config
|
||
file, or commandline) you will get the highest possible refresh rate. (Using
|
||
General Timing Formula). To enable this feature you have to specify
|
||
<B>all</B> your monitor options.</LI>
|
||
</UL>
|
||
|
||
<H4>Disadvantages:</H4>
|
||
|
||
<UL>
|
||
<LI>It works only on <B>x86 systems</B>.</LI>
|
||
<LI>It can be used only by <B>root</B>.</LI>
|
||
<LI>Currently it's available only for <B>Linux</B>.</LI>
|
||
</UL>
|
||
|
||
<P>Don't use this driver with <B>GCC 2.96</B>! It won't work!</P>
|
||
|
||
<P><B>Command line options available for VESA:</B></P>
|
||
<DL>
|
||
<DT><CODE>-vo vesa:opts</CODE></DT>
|
||
<DD>currently recognized: <B>dga</B> to force dga mode and <B>nodga</B> to
|
||
disable dga mode. In dga mode you can enable double buffering via the
|
||
<CODE>-double</CODE> option. Note: you may omit these parameters to enable
|
||
<B>autodetection</B> of dga mode.</DD>
|
||
</DL>
|
||
|
||
<H4>Known problems and workaround:</H4>
|
||
|
||
<UL>
|
||
<LI>If you have installed <B>NLS</B> font on your Linux box and run VESA
|
||
driver from text-mode then after terminating MPlayer you will have
|
||
<B>ROM font</B> loaded instead of national. You can load national font again
|
||
by using <B><I>setsysfont</I></B> utility from the Mandrake distribution
|
||
for example.<BR>
|
||
(<B>Hint:</B> The same utility is used for the localization of fbdev).</LI>
|
||
<LI>Some <B>Linux graphics drivers</B> don't update active <B>BIOS mode</B> in
|
||
DOS memory. So if you have such problem - always use VESA driver only from
|
||
<B>text-mode</B>. Otherwise text-mode (#03) will be activated anyway and
|
||
you will need restart your computer.</LI>
|
||
<LI>Often after terminating VESA driver you get <B>black screen</B>. To return
|
||
your screen to original state - simply switch to other console (by pressing
|
||
<B>Alt-Fx</B>) then switch to your previous console by the same way.</LI>
|
||
<LI>To get <B>working TV-out</B> you need have plugged TV-connector in before
|
||
booting your PC since video BIOS initializes itself only once during POST
|
||
procedure.</LI>
|
||
</UL>
|
||
|
||
|
||
<H4><A NAME="x11">2.3.1.12 X11</A></H4>
|
||
|
||
<P>Avoid if possible. Outputs to X11 (uses shared memory extension), with no
|
||
hardware acceleration at all. Supports (MMX/3DNow/SSE accelerated, but still
|
||
slow) software scaling, use the options <CODE>-fs -zoom</CODE>. Most cards
|
||
have hardware scaling support, use the <CODE>-vo xv</CODE> output for them,
|
||
or <CODE>-vo xmga</CODE> for Matroxes.</P>
|
||
|
||
<P>The problem is that most cards' driver doesn't support hardware acceleration
|
||
on the second head/TV. In those cases, you see green/blue colored window
|
||
instead of the movie. This is where this driver comes in handy, but you need
|
||
powerful CPU to use software scaling. Don't use the SDL driver's software
|
||
output+scaler, it has worse image quality!</P>
|
||
|
||
<P>Software scaling is very slow, you better try changing video modes instead.
|
||
It's very simple. See the <A HREF="#dga_modelines">DGA section's modelines</A>,
|
||
and insert them into your XF86Config.</P>
|
||
|
||
<UL>
|
||
<LI>If you have XFree86 4.x.x - use the <CODE>-vm</CODE> option. It will
|
||
change to a resolution your movie fits in. If it doesn't:</LI>
|
||
<LI>With XFree86 3.x.x - you have to cycle through available resolutions
|
||
with the <B>CTRL-ALT-plus</B> and <B>minus</B> keys.</LI>
|
||
</UL>
|
||
|
||
<P>If you can't find the modes you inserted, browse XFree86's output. Some
|
||
drivers can't use low pixelclocks that are needed for low resolution
|
||
video modes.</P>
|
||
|
||
|
||
<H4><A NAME="vidix">2.3.1.13 VIDIX</A></H4>
|
||
|
||
<P>VIDIX is the abbreviation for <B>VID</B>eo <B>I</B>nterface for
|
||
*ni<B>X</B>.<BR>
|
||
VIDIX was designed and introduced as an interface for fast user-space drivers
|
||
providing such video performance as mga_vid does for Matrox cards. It's
|
||
also very portable.</P>
|
||
|
||
<P>This interface was designed as an attempt to fit existing video acceleration
|
||
interfaces (known as mga_vid, rage128_vid, radeon_vid, pm3_vid) into a fixed scheme. It
|
||
provides highlevel interface to chips which are known as BES (BackEnd
|
||
scalers) or OV (Video Overlays). It doesn't provide lowlevel interface to
|
||
things which are known as graphics servers. (I don't want to compete with X11
|
||
team in graphics mode switching). I.e. main goal of this interface is to
|
||
maximize the speed of video playback.</P>
|
||
|
||
<H4>USAGE</H4>
|
||
|
||
<UL>
|
||
<LI>You can use standalone video output driver: <CODE>-vo xvidix</CODE><BR>
|
||
This driver was developed as X11's front end to VIDIX technology. It
|
||
requires X server and can work only under X server.</LI>
|
||
<LI>You can use VIDIX subdevice which was applied to several video output
|
||
drivers, such as:<BR>
|
||
<CODE>-vo vesa:vidix</CODE> (<B>Linux only</B>) and <CODE>-vo fbdev:vidix</CODE></LI>
|
||
</UL>
|
||
|
||
Indeed it doesn't matter which video output driver is used with <B>VIDIX</B>.
|
||
|
||
<H4>REQUIREMENTS</H4>
|
||
|
||
<UL>
|
||
<LI>video card should be in graphics mode (I write <B>should</B> simply
|
||
because I tested it in text mode - it works but has awful output ;) Use
|
||
AAlib for that).<BR>
|
||
<I>Note: Everyone can try this trick by commenting out mode switching in
|
||
vo_vesa driver.</I></LI>
|
||
<LI>MPlayer's video output driver should know active video mode and be
|
||
able to tell to VIDIX subdevice some video characteristics of server.</LI>
|
||
</UL>
|
||
|
||
I hope that probably every video output driver of MPlayer will
|
||
recognize <CODE>:vidix</CODE> subdevice.
|
||
|
||
<H4>USAGE METHODS</H4>
|
||
|
||
<P>When VIDIX is used as <B>subdevice</B> (<CODE>-vo vesa:vidix</CODE>) then
|
||
video mode configuration is performed by video output device
|
||
(<B>vo_server</B> in short). Therefore you can pass into command line of
|
||
MPlayer the same keys as for vo_server. In addition it understands
|
||
<CODE>-double</CODE> key as globally visible parameter. (I recommend using
|
||
this key with VIDIX at least for ATI's card).<BR>
|
||
As for <CODE>-vo xvidix</CODE>: currently it recognizes the following
|
||
options: <CODE>-fs -zoom -x -y -double</CODE>.</P>
|
||
|
||
<P>Also you can specify VIDIX's driver directly as third subargument in command
|
||
line:<BR>
|
||
<BR>
|
||
<code>mplayer -vo xvidix:mga_vid.so -fs -zoom -double
|
||
file.avi</code><BR>
|
||
or<BR>
|
||
<code>mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp
|
||
32 file.avi</code><BR>
|
||
<BR>
|
||
But it's dangerous, and you shouldn't do that. In this case given driver will
|
||
be forced and result is unpredictable (it may <B>freeze</B> your
|
||
computer). You should do that ONLY if you are absolutely sure it will work,
|
||
and MPlayer doesn't do it automatically. Please tell about it to the
|
||
developers. The Right Way is to use VIDIX without arguments to enable driver
|
||
autodetection.</P>
|
||
|
||
<P>VIDIX is very new technology and it's extremely possible that on your system
|
||
(OS=abc CPU=xyz) it won't work. In this case only solution for you it's port
|
||
it (mainly libdha). But there is hope that it will work on those systems
|
||
where X11 does.</P>
|
||
|
||
<BLOCKQUOTE>
|
||
<B>Warning: security risk</B><BR>
|
||
Unfortunately you <B>must</B> have <B>root</B> privileges to use VIDIX
|
||
due to direct hardware access. At least the <B>SUID</B> bit on the
|
||
MPlayer executable must be set.
|
||
</BLOCKQUOTE>
|
||
|
||
<H4>VIDEO EQUALIZER</H4>
|
||
|
||
<P>This is a video equalizer implemented especially for VIDIX. You can use
|
||
it either with <B>1-8</B> keys as described in the man page, or
|
||
by command line arguments. MPlayer recognizes the
|
||
following options:</P>
|
||
|
||
<DL>
|
||
<DT><CODE>-brightness</CODE></DT>
|
||
<DD>Adjust <B>BRIGHTNESS</B> of video output. It's not equal to brightness
|
||
adjusting on monitor panel or on TV. It changes intensity of RGB components of
|
||
video signal from black to white screen.</DD>
|
||
|
||
<DT><CODE>-contrast</CODE></DT>
|
||
<DD>Adjust <B>CONTRAST</B> of video output. Works in similar manner as
|
||
brightness.</DD>
|
||
|
||
<DT><CODE>-saturation</CODE></DT>
|
||
<DD>Adjust <B>SATURATION</B> of video output. You can get grayscale
|
||
output with this option.</DD>
|
||
|
||
<DT><CODE>-hue</CODE></DT>
|
||
<DD>Adjust <B>HUE</B> of video signal. You can get colored negative
|
||
of image with this option.</DD>
|
||
|
||
<DT><CODE>-red_intensity</CODE></DT>
|
||
<DD>Adjust intensity of <B>RED</B> component of video signal.</DD>
|
||
|
||
<DT><CODE>-green_intensity</CODE></DT>
|
||
<DD>Adjust intensity of <B>GREEN</B> component of video signal.</DD>
|
||
|
||
<DT><CODE>-blue_intensity</CODE></DT>
|
||
<DD>Adjust intensity of <B>BLUE</B> component of video signal.</DD>
|
||
</DL>
|
||
|
||
<P>Each parameter can accept values from <B>-1000</B> to <B>+1000</B>.<BR>
|
||
Default value for each parameter is <B>0</B>.</P>
|
||
|
||
<P><B>Note:</B> Not every driver provides support for each of those parameters.
|
||
Currently only <B>radeon_vid.so</B> provides full support for video equalizing.
|
||
Other drivers only partly support these options.</P>
|
||
|
||
<P><B>Examples:</B><BR>
|
||
<CODE>mplayer -vo vesa:vidix -brightness -300 -contrast 200
|
||
filename.avi</CODE><BR>
|
||
or<BR>
|
||
<CODE>mplayer -vo xvidix -red_intensity -50 -saturation 400 -hue 300
|
||
filename.vob</CODE></P>
|
||
|
||
|
||
<H4><A NAME="zr">2.3.1.14 Zr</A></H4>
|
||
|
||
<P>This is a display-driver (<CODE>-vo zr</CODE>) for a number of MJPEG
|
||
capture/playback cards (tested for DC10+ and Buz, and it should work for the
|
||
LML33 and the original DC10). The driver works by encoding the frame to jpeg
|
||
and then sending it to the card. For the jpeg encoding <B>libavcodec</B> is
|
||
used, and required. With the special <I>cinerama</I> mode, you can watch
|
||
movies in true wide screen provided that you have two beamers and two
|
||
MJPEG cards. Depending on resolution and quality settings, this driver
|
||
may require a lot of CPU power, remember to specify <CODE>-framedrop</CODE>
|
||
if your machine is too slow. Note: My AMD K6-2 350MHz is (with <CODE>
|
||
-framedrop</CODE>) quite adequate for watching VCD sized material and
|
||
downscaled movies.
|
||
|
||
<P>This driver talks to the kernel driver available at
|
||
<A HREF="http://mjpeg.sourceforge.net">http://mjpeg.sourceforge.net</A>, so
|
||
you must get it working first. The presence of an MJPEG card is autodetected
|
||
by the configure script, if autodetection fails, force detection with
|
||
|
||
<PRE>
|
||
./configure --enable-zr
|
||
</PRE>
|
||
|
||
<P>The output can be controlled by several options, a long description of the
|
||
options can be found in the man page, a short list of options can be
|
||
viewed by running
|
||
|
||
<PRE>
|
||
mplayer -zrhelp
|
||
</PRE>
|
||
|
||
<P>Things like scaling and the OSD (on screen display) are not handled by
|
||
this driver but can be done using the video filters. For example,
|
||
suppose that you have a movie with a resolution of <CODE>512x272</CODE> and
|
||
you want to view it fullscreen on your DC10+. There are three main
|
||
possibilities, you may scale the movie to a width of <CODE>768</CODE>,
|
||
<CODE>384</CODE> or <CODE>192</CODE>. For performance and quality reasons,
|
||
I would choose to scale the movie to <CODE>384x204</CODE> using the fast
|
||
bilinear software scaler. The commandline is
|
||
|
||
<PRE>
|
||
mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi
|
||
</PRE>
|
||
|
||
<P>Cropping can be done by the <CODE>crop</CODE> filter and by
|
||
this driver itself. Suppose that a movie is too wide for display on your
|
||
Buz and that you want to use <CODE>-zrcrop</CODE> to make the movie less
|
||
wide, the you would issue the following command
|
||
|
||
<PRE>
|
||
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
|
||
</PRE>
|
||
|
||
if you want to use the <CODE>crop</CODE> filter, you would do
|
||
|
||
<PRE>
|
||
mplayer -vo zr -vop crop=720:320:80:0 benhur.avi
|
||
</PRE>
|
||
|
||
<P>Extra occurances of <CODE>-zrcrop</CODE> invoke <I>cinerama</I> mode, i.e.
|
||
you can distribute the movie over several TV's or beamers to create a larger
|
||
screen. Suppose you have two beamers. The left one is connected to your Buz
|
||
at <CODE>/dev/video1</CODE> and the right one is connected to your DC10+ at
|
||
<CODE>/dev/video0</CODE>. The movie has a resolution of <CODE>704x288</CODE>.
|
||
Suppose also that you want the right beamer in black and white and that
|
||
the right beamer should have jpeg frames at quality <CODE>10</CODE>,
|
||
then you would issue the following command
|
||
|
||
<PRE>
|
||
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
|
||
-zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi
|
||
</PRE>
|
||
|
||
<P>You see that the options appearing before the second <CODE>-zrcrop</CODE>
|
||
only apply to the DC10+ and that the options after the second
|
||
<CODE>-zrcrop</CODE> apply to the Buz. The maximum number of MJPEG cards
|
||
participating in <I>cinerama</I> is four, so you can buid a <CODE>2x2</CODE>
|
||
vidiwall.</P>
|
||
|
||
<P>Finally an important remark: Do not start or stop XawTV on the playback
|
||
device during playback, it will crash your computer. It is, however, fine to
|
||
<B>FIRST</B> start XawTV, <B>THEN</B> start MPlayer, wait for
|
||
MPlayer to finish and <B>THEN</B> stop XawTV.</P>
|
||
|
||
|
||
<H4><A NAME="dvb">2.3.1.15 DVB</A></H4>
|
||
|
||
<P>MPlayer supports cards with the Siemens DVB chipset from vendors like
|
||
Siemens, Technotrend, Galaxis or Hauppauge. The latest DVB drivers are
|
||
available from the <A HREF="http://www.linuxtv.org">Linux TV site</A>. If you
|
||
want to do software transcoding you should have at least a 1GHz CPU.</P>
|
||
|
||
<P>Configure should detect your DVB card. If it did not, force detection with
|
||
|
||
<PRE>
|
||
./configure --enable-dvb
|
||
</PRE>
|
||
|
||
<P>If you have ost headers at a non-standard path, set the path with</P>
|
||
|
||
<PRE>
|
||
./configure --with-extraincdir=<DVB source directory>/ost/include
|
||
</PRE>
|
||
|
||
<P>Then compile and install as usual.</P>
|
||
|
||
<H4>USAGE</H4>
|
||
|
||
<P>Hardware decoding (playing standard MPEG1/2 files) can be done with this
|
||
command:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
|
||
</PRE>
|
||
|
||
<P>Software decoding or transcoding different formats to MPEG1 can be achieved
|
||
using a command like this:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes -vop lavc yourfile.ext
|
||
mplayer -ao mpegpes -vo mpegpes -vop fame,expand yourfile.ext
|
||
</PRE>
|
||
|
||
<P>Note that DVB cards only support heights 288 and 576 for PAL or 240 and 480
|
||
for NTSC. You <B>must</B> rescale for other heights by adding
|
||
<CODE>scale=width:height</CODE> with the width and height you want to the
|
||
<CODE>-vop</CODE> option. DVB cards accept various widths, like 720, 704,
|
||
640, 512, 480, 352 etc and do hardware scaling in horizontal direction, so
|
||
you do not need to scale horizontally in most cases. For a 512x384 (aspect
|
||
4:3) DivX try:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576
|
||
</PRE>
|
||
|
||
<P>If you have a widescreen movie and you do not want to scale it to full height,
|
||
you can use the <CODE>expand=w:h</CODE> plugin to add black bands. To view a
|
||
640x384 DivX, try:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 file.avi
|
||
</PRE>
|
||
|
||
<P>If your CPU is too slow for a full size 720x576 DivX, try downscaling:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 file.avi
|
||
</PRE>
|
||
|
||
<P>If speed does not improve, try vertical downscaling, too:</P>
|
||
|
||
<PRE>
|
||
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 file.avi
|
||
</PRE>
|
||
|
||
<P>For OSD and subtitles use the expand feature of the OSD plugin. So, instead
|
||
of <CODE>expand=w:h</CODE> or <CODE>expand=w:h:x:y</CODE>, use
|
||
<CODE>expand=w:h:x:y:1</CODE> (the 5th parameter <CODE>:1</CODE> at the end
|
||
will enable OSD rendering). You may want to move the image up a bit to get a
|
||
bigger black zone for subtitles. You may also want to move subtitles up, if
|
||
they are outside your TV screen, use the <CODE>-subpos <0-100></CODE> switch
|
||
to adjust this (<CODE>-subpos 80</CODE> is a good choice).</P>
|
||
|
||
<P>In order to play non-25fps movies on a PAL TV or with a slow CPU, add the
|
||
<CODE>-framedrop</CODE> option.</P>
|
||
|
||
<P>To keep the aspect ratio of DivX files and get the optimal scaling parameters
|
||
(hardware horizontal scaling and software vertical scaling while keeping the
|
||
right aspect ratio), use the new dvbscale plugin:</P>
|
||
|
||
<PRE>
|
||
for 3:4 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale
|
||
for 16:9 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024
|
||
</PRE>
|
||
|
||
<H4>FUTURE</H4>
|
||
|
||
<P>If you have questions or want to hear feature announcements and take part in
|
||
discussions on this subject, join our
|
||
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</A>
|
||
mailing list. Please remember that the list language is English.</P>
|
||
|
||
<P>In the future you may expect the ability to display OSD and subtitles using
|
||
the native OSD feature of DVB cards, as well as more fluent playback of
|
||
non-25fps movies and realtime transcoding between MPEG2 and MPEG4 (partial
|
||
decompression).</P>
|
||
|
||
|
||
<H4><A NAME="dxr3">2.3.1.16 DXR3/Hollywood+</A></H4>
|
||
|
||
<P>MPlayer supports hardware accelerated playback with the Creative DXR3
|
||
and Sigma Designs Hollywood Plus cards. These cards both use the em8300 MPEG
|
||
decoder chip from Sigma Designs.</P>
|
||
|
||
<P>First of all you will need properly installed DXR3/H+ drivers, version
|
||
0.12.0 or later. You can find the drivers and installation instructions at
|
||
the <A HREF="http://dxr3.sourceforge.net/">DXR3 & Hollywood Plus for
|
||
Linux</A> site. Configure should detect your card automatically, compilation
|
||
should go without problems.</P>
|
||
|
||
<H4>Usage:</H4>
|
||
<DL>
|
||
<DT><CODE>-vo dxr3:noprebuf:<device></CODE></DT>
|
||
<DD><CODE>noprebuf</CODE> turns off prebuffering. Prebuffering is a feature
|
||
of the em8300 chip that enables it to hold more than one frame of video at
|
||
a time. This means that when you are running with prebuffering (default)
|
||
MPlayer will try to keep the video buffer filled with data at all
|
||
times. If you are on a slow machine MPlayer will probably use close
|
||
to, or precisely 100% of CPU. This is especially common if you play pure MPEG
|
||
streams (like DVDs, SVCDs a.s.o.) since MPlayer will not have to
|
||
reencode it to MPEG it will fill the buffer very fast.<BR>
|
||
With prebuffering video playback is <B>much</B> less sensitive to other
|
||
programs hogging the CPU, it will not drop frames unless applications hog
|
||
the CPU for a long time.<BR>
|
||
Prebuffering does not work on all machines (especially Athlons where it is
|
||
turned off automatically). If you experience problems with video/audio sync
|
||
use <CODE>noprebuf</CODE>. When running without prebuffering the em8300 is
|
||
much more sensitive to CPU load, so it is highly suggested that you turn on
|
||
<B>MPlayer's</B> <CODE>-framedrop</CODE> option to avoid further loss of
|
||
sync.<BR>
|
||
<CODE><device></CODE> = device number to use if you have more than one
|
||
em8300 card.
|
||
<BR>
|
||
Any of these options may be left out, but they must be specified in this
|
||
exact order, i.e. <CODE>dxr3:noprebuf</CODE> works, <CODE>dxr3:1</CODE>
|
||
works, but <CODE>dxr3:1:noprebuf</CODE> will not.</DD>
|
||
|
||
<DT><CODE>-ao oss:/dev/em8300_ma-X</CODE></DT>
|
||
<DD>For audio output, where <CODE>X</CODE> is the device number
|
||
(0 if one card).</DD>
|
||
|
||
<DT><CODE>-aop list=resample:fout=xxxxx</CODE></DT>
|
||
<DD>The em8300 cannot play back samplerates lower than 44100Hz. If the sample
|
||
rate is below 44100Hz select either 44100Hz or 48000Hz depending on which
|
||
one matches closest. I.e. if the movie uses 22050Hz use 44100Hz as
|
||
44100 / 2 = 22050, if it is 24000Hz use 48000Hz as 48000 / 2 = 24000 and so
|
||
on. This does not work with digital audio output (<CODE>-ac hwac3</CODE>).</DD>
|
||
|
||
<DT><CODE>-vop lavc/fame</CODE></DT>
|
||
<DD>To watch non-MPEG content on the em8300 (i.e. DivX or RealVideo) you have
|
||
to specify an MPEG1 video filter such as libavcodec (lavc) or libfame
|
||
(fame). At the moment lavc is both faster and gives better image quality, it
|
||
is suggested that you use that unless you have problems with it. See the man
|
||
page for further info about <CODE>-vop lavc/fame</CODE>.</DD>
|
||
|
||
<DT><CODE>-ac hwac3</CODE></DT>
|
||
<DD>The em8300 supports playing back AC3 audio (surround sound) through the
|
||
digital audio output of the card. See the <CODE>-ao oss</CODE> option
|
||
above, it must be used to specify the DXR3's output instead of
|
||
a soundcard. Also read <A HREF="codecs.html#hardware_ac3">hardware AC3</A>
|
||
section for further information on AC3.</DD>
|
||
</DL>
|
||
|
||
<H4>Overlay</H4>
|
||
|
||
<P>To get overlay run dxr3view that comes with the em8300 package before
|
||
starting MPlayer. You can set various options in dxr3view by pressing
|
||
<CODE>T</CODE> while holding the mouse cursor above the window.</P>
|
||
|
||
<H4>MPEG1, MPEG2, VCD and DVD Notes</H4>
|
||
|
||
<P>MPEG1/2 content should now automatically be detected by MPlayer and
|
||
it will use the hardware acceleration of the DXR3 to play it. If not, you can
|
||
force it to hardware acceleration with <CODE>-vc mpegpes</CODE>. Also, if you
|
||
plan to use postprocessing filters you must use <CODE>-vc mpeg12</CODE>.</P>
|
||
|
||
<P>In some instances, subtitles may not appear properly in sync with the A/V
|
||
stream when using hardware decoding (<CODE>-vc mpegpes</CODE>). This is a
|
||
known bug. The em8300 will also improperly handle subtitles that are too big,
|
||
and may hang for a second or two. At this time, the only workaround is to use
|
||
<CODE>-vc mpeg12</CODE> when viewing DVDs with subtitles. When running with
|
||
<CODE>-vc mpeg12</CODE> MPlayer will reencode video to MPEG (even if it
|
||
already is MPEG). This means that it will need more CPU power, and you might
|
||
loose some picture quality.</P>
|
||
|
||
|
||
<H4><A NAME="tv-out">2.3.1.A TV-out support</A></H4>
|
||
|
||
|
||
<H5><A NAME="tv-out_matrox">2.3.1.A.1 Matrox G400 cards</A></H5>
|
||
|
||
<P>Under Linux you have 2 methods to get G400 TV out working:</P>
|
||
|
||
<P><B>IMPORTANT:</B> for Matrox G450/G550 TV-out instructions, please see the
|
||
next section!</P>
|
||
|
||
<UL>
|
||
<LI><B>XFree86</B>: using the driver and the HAL module, available from
|
||
<A HREF="http://www.matrox.com">Matrox's site</A>. This will give you X on
|
||
the TV.<BR> <B>This method doesn't give you accelerated playback</B> as
|
||
under Windoze! The second head has only YUV framebuffer, the <I>BES</I>
|
||
(Back End Scaler, the YUV scaler on G200/G400/G450/G550 cards) doesn't work
|
||
on it! The Windows driver somehow works around this, probably by using the
|
||
3D engine to zoom, and the YUV framebuffer to display the zoomed
|
||
image. If you really want to use X, use the <CODE>-vo x11 -fs -zoom</CODE>
|
||
options, but it will be <B>SLOW</B>, and has <B>Macrovision</B> copy protection
|
||
enabled (you can "workaround" Macrovision using
|
||
<A HREF="http://avifile.sourceforge.net/mgamacro.pl">this</A> perl
|
||
script.</LI>
|
||
<LI><B>Framebuffer</B>: using the <B>matroxfb modules</B> in the 2.4 kernels.
|
||
2.2 kernels don't have the TVout feature in them, thus unusable for this.
|
||
You have to enable ALL matroxfb-specific feature during compilation (except
|
||
MultiHead), and compile them into <B>modules</B>! You'll also need I2C
|
||
enabled.
|
||
<OL>
|
||
<LI>
|
||
Enter <CODE>TVout/matroxset</CODE> and type <CODE>make</CODE>. Install
|
||
<CODE>matroxset</CODE> into somewhere in your PATH.</LI>
|
||
<LI>
|
||
If you don't have <CODE>fbset</CODE> installed, enter
|
||
<CODE>TVout/fbset</CODE> and type <CODE>make</CODE>. Install
|
||
<CODE>fbset</CODE> into somewhere in your PATH.</LI>
|
||
<LI>
|
||
Then enter into the <CODE>TVout/</CODE> directory in the MPlayer
|
||
source, and execute <CODE>./modules</CODE> as root. Your text-mode console
|
||
will enter into framebuffer mode (no way back!).</LI>
|
||
<LI>Next, EDIT and run the <CODE>./matroxtv</CODE> script. This will present you
|
||
to a very simple menu. Press <B>2</B> and <B>ENTER</B>. Now you should
|
||
have the same picture on your monitor, and TV. If
|
||
the TV (PAL by default) picture has some weird stripes on it, the script wasn't able to
|
||
set the resolution correctly (to 640x512 by default). Try other
|
||
resolutions from the menu and/or experiment with fbset.</LI>
|
||
</OL>
|
||
|
||
<P>Yoh. Next task is to make the cursor on tty1 (or whatever) to disappear,
|
||
and turn off screen blanking. Execute the following commands:</P>
|
||
|
||
<P><CODE>echo -e '\033[?25l'</CODE> or <CODE>setterm -cursor off<BR>
|
||
setterm -blank 0</CODE></P>
|
||
|
||
<P>You possibly want to put the above into a script, and also clear
|
||
the screen.. To turn the cursor back:<BR><CODE>echo -e '\033[?25h'</CODE>
|
||
or <CODE>setterm -cursor on</CODE></P>
|
||
|
||
<P>Yeah kewl. Start movie playing with <CODE>mplayer -vo mga -fs -screenw 640
|
||
-screenh 512 <filename></CODE><BR>
|
||
(if you use X, now change to matroxfb with for example CTRL-ALT-F1!)<BR>
|
||
Change 640x512 if you set the resolution to other.<BR>
|
||
<B>Enjoy the ultra-fast ultra-featured Matrox TV output (better than Xv)!</B></P>
|
||
</LI>
|
||
</UL>
|
||
|
||
|
||
<H5><A NAME="tv-out_matrox_g450">2.3.1.A.2 Matrox G450/G550 cards</A></H5>
|
||
|
||
<P>TV output support for these cards has only been recently introduced, and is
|
||
not yet in the mainstream kernel. Currently the <B>mga_vid</B> module
|
||
can't be used AFAIK, because the G450/G550 driver works only in one
|
||
configuration: the first CRTC chip (with much more features) on the first
|
||
display (on monitor), and the second CRTC (no <B>BES</B> - for explanation
|
||
on BES, please see the G400 section above) on TV. So you can only use
|
||
<B>MPlayer's</B> <I>fbdev</I> output driver at the present.</P>
|
||
|
||
<P>The first CRTC can't be routed to the second head currently.
|
||
The author of the kernel matroxfb driver - Petr Vandrovec - will maybe make
|
||
support for this, by displaying the first CRTC's output onto both of the
|
||
heads at once, as currently recommended for G400, see the section above.</P>
|
||
|
||
<P>The necessary kernel patch and the detailed howto is downloadable from
|
||
<A HREF="http://www3.sympatico.ca/dan.eriksen/matrox_tvout">http://www3.sympatico.ca/dan.eriksen/matrox_tvout</A></P>
|
||
|
||
|
||
<H5><A NAME="tv-out_ati">2.3.1.A.3 ATI cards</A></H5>
|
||
|
||
<H5>PREAMBLE</H5>
|
||
|
||
<P>Currently ATI doesn't want to support any of its TV-out chips under Linux,
|
||
because of their licensed Macrovision technology.</P>
|
||
|
||
<H5>ATI CARDS TV-OUT STATUS ON LINUX</H5>
|
||
|
||
<UL>
|
||
<LI><B>ATI Mach64</B>: supported by
|
||
<A HREF="http://gatos.sf.net">gatos</A>.</LI>
|
||
<LI><B>ASIC Radeon VIVO</B>: supported by
|
||
<A HREF="http://gatos.sf.net">gatos</A>.</LI>
|
||
<LI><B>Radeon</B> and <B>Rage128</B>: supported by MPlayer!
|
||
Check <a href="#vesa">VESA driver</a> and <A HREF="#vidix">VIDIX</A>
|
||
sections.</LI>
|
||
</UL>
|
||
|
||
<P>On other cards, just use the <a href="#vesa">VESA driver</a>, without
|
||
VIDIX. Powerful CPU is needed, though.</P>
|
||
|
||
<P>Only thing you need to do - <B>have TV connector plugged in before
|
||
booting your PC</B> since video BIOS initializes itself only once during
|
||
POST procedure.</P>
|
||
|
||
|
||
<H5><A NAME="tv-out_voodoo">2.3.1.A.4 Voodoo 3</A></H5>
|
||
|
||
<P>Check <A HREF="http://www.iki.fi/too/tvout-voodoo3-3000-xfree">this URL</A>.</P>
|
||
|
||
</BODY>
|
||
</HTML>
|