1
mirror of https://github.com/mpv-player/mpv synced 2024-11-11 00:15:33 +01:00

English HTML documentation retired (moved to Attic/)

Published in 2001 October 8 (MPlayer 0.50), it has spent 2 years in this form,
and has served its purpose very well.

 - Thanks to LGB for starting the conversion from text
 - Thanks to me for finishing it and doing further maintaining
 - Thanks to Diego Biurrun for stepping in and giving great help in enhancing
   and maintaining the documentation
 - Thanks to the countless other people for sending patches and suggestions

Please drink 1 litre of cola in remembrance of the english HTML documentation.


git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@11076 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
gabucino 2003-10-11 07:58:55 +00:00
parent 9dd5ee3afd
commit 8e0b9bf818
11 changed files with 0 additions and 8169 deletions

View File

@ -1,291 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Bug reporting - 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>
<H1><A NAME="appendix_b">Appendix B - How to report bugs</A></H1>
<P>Good bug reports are a very valuable contribution to the development of any
software project. But just like writing good software, good problem reports
involve some work. Please realize that most developers are extremely busy and
receive obscene amounts of email. So while your feedback is crucial in
improving MPlayer and very much appreciated, please understand that you
have to provide <B>all</B> of the information we request and follow the
instructions in this document closely.</P>
<H2><A NAME="fix">B.1 How to fix bugs</A></H2>
<P>If you feel have the necessary skills you are invited to have a go at fixing
the bug yourself. Or maybe you already did that? Please read
<A HREF="../tech/patches.txt">this short document</A> to find out how to get
your code included in MPlayer. The people on the
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A>
mailing list will assist you if you have questions.</P>
<H2><A NAME="report">B.2 How to report bugs</A></H2>
<P>First of all please try the latest CVS version of MPlayer as your bug
might already be fixed there. Development moves extremely fast, most problems
in official releases are reported within days or even hours, so please use
<B>only CVS</B> to report bugs. This includes binary packages of MPlayer.
Please do not report bugs in one of the various RPM or Debian packages of
MPlayer. CVS instructions can be found at the bottom of
<A HREF="http://www.mplayerhq.hu/homepage/dload.html">this page</A> or in the
README. If this did not help please refer to the
<A HREF="documentation.html#known_bugs">list of known bugs</A> and the
rest of the documentation. If your problem is not known or not solvable by our
instructions, then please report the bug.</P>
<P>Please do not send bug reports privately to individual developers. This is
community work and thus there might be several people interested in it.
Sometimes other users already experienced your troubles and know how to
circumvent a problem even if it is a bug in MPlayer code.</P>
<P>Please describe your problem in as much detail as possible. Do a little
detective work to narrow down the circumstances under which the problem
occurs. Does the bug only show up in certain situations? Is it specific to
certain files or file types? Does it occur with only one codec or is it codec
independent? Can you reproduce it with all output drivers? The more
information you provide the better are our chances at fixing your problem.
Please do not forget to also include the valuable information requested below,
we will be unable to properly diagnose your problem otherwise.</P>
<P>An excellent and well written guide to asking questions in public forums is
<A HREF="http://www.catb.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart Way</A>
by <A HREF="http://www.catb.org/~esr/">Eric S. Raymond</A>. There is another
called
<A HREF="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">How to Report Bugs Effectively</A>
by <A HREF="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</A>. If
you follow these guidelines you should be able to get help. But please
understand that we all follow the mailing lists voluntarily in our free time.
We are very busy and cannot guarantee that you will get a solution for your
problem or even an answer.</P>
<H2><A NAME="where">B.3 Where to report bugs</A></H2>
<P>Subscribe to the mplayer-users mailing list:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR>
and send your bug report to:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="mailto:mplayer-users@mplayerhq.hu">mplayer-users@mplayerhq.hu</A></P>
<P>The language of this list is <B>English</B>. Please follow the standard
<A HREF="http://www.ietf.org/rfc/rfc1855.txt">Netiquette Guidelines</A> and
<B>do not send HTML mail</B> to any of our mailing lists. You will only get
ignored or banned. If you do not know what HTML mail is or why it is evil,
read this <A HREF="http://expita.com/nomime.html">fine document</A>. It
explains all the details and has instructions for turning HTML off. Also note
that we will not individually CC (carbon-copy) people so it is a good idea to
subscribe to actually receive your answer.</P>
<H2><A NAME="what">B.4 What to report</A></H2>
<P>You may need to include log, configuration or sample files in your bug
report. If some of them are quite big then it is better to upload them to our
<A HREF="ftp://mplayerhq.hu/MPlayer/incoming/">FTP server</A> in a compressed
format (gzip and bzip2 preferred) and include only the path and file name in
your bug report. Our mailing lists have a message size limit of 80k, if you
have something bigger you have to compress or upload it.</P>
<H3><A NAME="system">B.4.1 System Information</A></H3>
<UL>
<LI>Your Linux distribution or operating system and version e.g.:
<UL>
<LI>Red Hat 7.1</LI>
<LI>Slackware 7.0 + devel packs from 7.1 ...</LI>
</UL>
</LI>
<LI>kernel version:<BR>
<CODE>uname -a</CODE></LI>
<LI>libc version:<BR>
<CODE>ls -l /lib/libc[.-]*</CODE></LI>
<LI>X version:<BR>
<CODE>X -version</CODE></LI>
<LI>gcc and ld versions:<BR>
<CODE>gcc -v<BR>
ld -v</CODE></LI>
<LI>binutils version:<BR>
<CODE>as --version</CODE></LI>
<LI>If you have problems with fullscreen mode:
<UL>
<LI>Window manager type and version</LI>
</UL>
</LI>
<LI>If you have problems with XVIDIX:
<UL>
<LI>X colour depth:<BR>
<CODE>xdpyinfo | grep "depth of root"</CODE></LI>
</UL>
</LI>
<LI>If only the GUI is buggy:
<UL>
<LI>GTK version</LI>
<LI>GLIB version</LI>
<LI>libpng version</LI>
<LI>GUI situation in which the bug occurs</LI>
</UL>
</LI>
</UL>
<H3><A NAME="hardware">B.4.2 Hardware and drivers</A></H3>
<UL>
<LI>CPU info (this works on Linux only):<BR>
<CODE>cat /proc/cpuinfo</CODE></LI>
<LI>Video card manufacturer and model, e.g.:
<UL>
<LI>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</LI>
<LI>Matrox G400 DH 32MB SGRAM</LI>
</UL>
</LI>
<LI>Video driver type &amp; version, e.g.:
<UL>
<LI>X built-in driver</LI>
<LI>nVidia 0.9.623</LI>
<LI>Utah-GLX CVS 2001-02-17</LI>
<LI>DRI from X 4.0.3</LI>
</UL>
</LI>
<LI>Sound card type &amp; driver, e.g.:
<UL>
<LI>Creative SBLive! Gold with OSS driver from oss.creative.com</LI>
<LI>Creative SB16 with kernel OSS drivers</LI>
<LI>GUS PnP with ALSA OSS emulation</LI>
</UL>
</LI>
<LI>If in doubt include <CODE>lspci -vv</CODE> output on Linux systems.</LI>
</UL>
<H3><A NAME="configure">B.4.3 Configure problems</A></H3>
<P>If you get errors while running <CODE>./configure</CODE>, or autodetection
of something fails, read <CODE>configure.log</CODE>. You may find the answer
there, for example multiple versions of the same library mixed on your system,
or you forgot to install the development package (those with the -dev suffix). If you think there is a bug, include <CODE>configure.log</CODE> in your bug
report.</P>
<H3><A NAME="compilation">B.4.4 Compilation problems</A></H3>
Please include these files:
<UL>
<LI><CODE>config.h</CODE></LI>
<LI><CODE>config.mak</CODE></LI>
</UL>
Only if compilation fails below one of these directories, include these files:
<UL>
<LI><CODE>Gui/config.mak</CODE></LI>
<LI><CODE>libvo/config.mak</CODE></LI>
<LI><CODE>libao2/config.mak</CODE></LI>
</UL>
<H3><A NAME="playback">B.4.5 Playback problems</A></H3>
<P>Please include the output of MPlayer at verbosity level 1, but
remember to <B>not truncate the output</B> when you paste it into your mail.
The developers need all of the messages to properly diagnose a problem. You
can direct the output into a file like this:</P>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -v [options] [filename] &gt; mplayer.log 2&gt;&amp;1</CODE></P>
<P>If your problem is specific to one or more files, then please upload the
offender(s) to:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="ftp://mplayerhq.hu/MPlayer/incoming/">ftp://mplayerhq.hu/MPlayer/incoming/</A></P>
<P>Also upload a small text file having the same base name as your file
with a .txt extension. Describe the problem you are having with the
particular file there and include your email address as well as the output
of MPlayer at verbosity level 1. Usually the first 1-5 MB of a file are
enough to reproduce the problem, but to be sure we ask you to:</P>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;dd if=yourfile of=smallfile bs=1024k count=5</CODE></P>
<P>It will take the first five megabytes of <STRONG>'your-file'</STRONG> and
write it to <STRONG>'small-file'</STRONG>. Then try again on this small file
and if the bug still shows up your sample is sufficient for us. Please
<STRONG>do not ever</STRONG> send such files via mail! Upload it, and send
only the path/filename of the file on the FTP-server. If the file is
accessible on the net, then sending the <STRONG>exact</STRONG> URL is
sufficient.</P>
<H3><A NAME="crash">B.4.6 Crashes</A></H3>
<P>You have to run MPlayer inside <CODE>gdb</CODE> and send us the complete
output or if you have a core dump of the crash you can extract useful
information from the <CODE>Core</CODE> file. Here's how:</P>
<H4><A NAME="debug">B.4.6.1 How to conserve information about a reproducible crash</A></H4>
Recompile MPlayer with debugging code enabled:
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;./configure --enable-debug=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;make</CODE></P>
and then run MPlayer within gdb using:
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;gdb ./mplayer</CODE></P>
You are now within gdb. Type:
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;run -v [options-to-mplayer] filename</code></P>
and reproduce your crash. As soon as you did it, gdb will
return you to the command line prompt where you have to enter
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;bt<BR>
&nbsp;&nbsp;&nbsp;&nbsp;disass $pc-32 $pc+32<BR>
&nbsp;&nbsp;&nbsp;&nbsp;info all-registers</CODE></P>
<H4><A NAME="core">B.4.6.2 How to extract meaningful information from a core dump</A></H4>
<P>Create the following command file:</P>
<P><CODE>bt<BR>
disass $pc-32 $pc+32<BR>
info all-registers</CODE></P>
<P>Then simply execute this command:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>gdb mplayer --core=core -batch --command=command_file &gt; mplayer.bug</CODE></P>
<H2><A NAME="advusers">B.5 I know what I am doing...</A></H2>
<P>If you created a proper bug report following the steps above and you are
confident it is a bug in MPlayer, not a compiler problem or broken
file, you have already read the documentation and you could not find a
solution, your sound drivers are OK, then you might want to subscribe to the
mplayer-advusers list and send your bug report there to get a better and
faster answer.<BR><BR>
Please be advised that if you post newbie questions or questions answered
in the manual there, you will be ignored or flamed instead of getting an
appropriate answer.<BR>
So do not flame us and subscribe to -advusers only if you really know
what you are doing and feel like being an advanced MPlayer user or
developer. If you meet these criteria it should not be difficult to find
out how to subscribe...</P>
</BODY>
</HTML>

View File

@ -1,256 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>CD, DVD, VCD - 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>
<H2><A NAME="drives">4.1 CD/DVD drives</A></H2>
<P>Linux documentation excerpt:</P>
<P>Modern CD-ROM drives can attain very high head speeds, yet some CD-ROM drives
are capable of running at reduced speeds. There are several reasons that might
make you consider changing the speed of a CD-ROM drive:</P>
<UL>
<LI>There have been reports of read errors at high speeds, especially
with badly pressed CD-ROMs. Reducing the speed can prevent data loss under
these circumstances.</LI>
<LI>Many CD-ROM drives are annoyingly loud, a lower speed may reduce the
noise.</LI>
</UL>
<P>You can reduce the speed of IDE CD-ROM drives with <CODE>hdparm</CODE> or a
program called <CODE>setcd</CODE>. It works like this:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [speed] [cdrom device]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>setcd -x [speed] [cdrom device]</CODE></P>
<P>If you have root privileges the following command may also help:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo file_readahead:2000000 &gt; /proc/ide/[cdrom device]/settings</CODE></P>
<P>This sets prefetched file reading to 2MB, which helps with scratched CD-ROMs.
If you set it to too high, the drive will continuously spin up and down, and
will dramatically decrease the performance.
It is recommended that you also tune your CD-ROM drive with
<CODE>hdparm</CODE>:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P>
<P>This enables DMA access, read-ahead, and IRQ unmasking (read the
<CODE>hdparm</CODE> man page for a detailed explanation).</P>
<P>Please refer to "<CODE>/proc/ide/[cdrom device]/settings</CODE>" for
fine-tuning your CD-ROM.</P>
<P>SCSI drives do not have a uniform way of setting these parameters (Do you
know one? Tell us!) There is a tool that works for
<A HREF="http://das.ist.org/~georg/">Plextor SCSI drives</A>.</P>
<P>FreeBSD:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;Speed: <CODE>cdcontrol [-f device] speed [speed]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>
<H2><A NAME="dvd">4.2 DVD playback</A></H2>
<P>For the complete list of available options, please read the man page.
The Syntax for a standard Digital Versatile Disc (DVD) is as follows:</P>
<P><CODE>mplayer dvd://&lt;track&gt; [-dvd-device &lt;device&gt;]</CODE></P>
<P>Example: <CODE>mplayer dvd://1 -dvd-device /dev/hdc</CODE></P>
<P>The default DVD device is <CODE>/dev/dvd</CODE>. If your setup differs,
make a symlink or specify the correct device on the command line with the
<CODE>-dvd-device</CODE> option.</P>
<H4>New-style DVD support (mpdvdkit2)</H4>
<P>MPlayer uses <CODE>libdvdread</CODE> and <CODE>libdvdcss</CODE> for
DVD decryption and playback. These two libraries are contained in the
<CODE>libmpdvdkit2/</CODE> subdirectory of the MPlayer source tree, you
do not have to install them separately. We opted for this solution because
we had to fix a <CODE>libdvdread</CODE> bug and apply a patch which adds
<B>cracked CSS keys caching support</B> to <CODE>libdvdcss</CODE>. This results
in a large speed increase because the keys do not have to be cracked every time
before playing.</P>
<P>MPlayer can also use system-wide <CODE>libdvdread</CODE> and
<CODE>libdvdcss</CODE> libraries, but this solution is <B>not</B> recommended,
as it can result in bugs, library incompatibilities and slower speed.</P>
<H4>Old-style DVD support - OPTIONAL</H4>
<P>Useful if you want to play encoded VOBs from <B>hard disk</B>. Compile and
install <B>libcss</B> 0.0.1 (not newer) for this (If MPlayer fails to
detect it, use the <CODE>-csslib /path/to/libcss.so</CODE> option). To use it,
you need to be root, use a suid root MPlayer binary or let MPlayer call the
suid-root fibmap_mplayer wrapper program.</P>
<H4>DVD structure</H4>
<P>DVD disks have 2048 bytes per sector with ECC/CRC. They usually have an UDF
filesystem on a single track, containing various files (small .IFO and .BUK
files and big (1GB) .VOB files). They are real files and can be copied/played
from the mounted filesystem of an unencrypted DVD.</P>
<P>The .IFO files contain the movie navigation information (chapter/title/angle
map, language table, etc) and are needed to read and interpret the .VOB
content (movie). The .BUK files are backups of them. They use <B>sectors</B>
everywhere, so you need to use raw addressing of sectors of the disc to
implement DVD navigation or decrypt the content.</P>
<P>The whole old-style DVD support with <CODE>libcss</CODE> therefore needs a mounted DVD
filesystem and raw sector-based access to the device. Unfortunately you must
(under Linux) be root to get the sector address of a file. You have the
following choices:</P>
<UL>
<LI>Be root or use a suid-root mplayer binary.</LI>
<LI>Let MPlayer call the suid-root fibmap_mplayer wrapper program to access
the DVD (used in the old-style DVD playback over <CODE>libcss</CODE>).</LI>
<LI>Don't use the kernel's filesystem driver at all and reimplement it in
userspace. <CODE>libdvdread</CODE> 0.9.x and <CODE>libmpdvdkit</CODE> do this (new-style DVD
support). The kernel UDF filesystem driver is not needed as they already
have their own builtin UDF filesystem driver. Also the DVD does not have to
be mounted as only the raw sector-based access is used.</LI>
</UL>
<P>Sometimes <CODE>/dev/dvd</CODE> cannot be read by users, so the <CODE>libdvdread</CODE>
authors implemented an emulation layer which transfers sector addresses to
filenames+offsets, to emulate raw access on top of a mounted filesystem
or even on a hard disk.</P>
<P><CODE>libdvdread</CODE> even accepts the mountpoint instead of the device name for raw
access and checks <CODE>/proc/mounts</CODE> to get the device name. It was
developed for Solaris, where device names are dynamically allocated.</P>
<P>The default DVD device is <CODE>/dev/dvd</CODE>. If your setup differs,
make a symlink, or specify the correct device on the command line with the
<CODE>-dvd-device</CODE> option.</P>
<H4>DVD authentication</H4>
<P>The authentication and decryption method of the new-style DVD support is done
using a patched <CODE>libdvdcss</CODE> (see above). The method can be specified through the
environment variable <CODE>DVDCSS_METHOD</CODE>, which can be set to
<CODE>key</CODE>, <CODE>disk</CODE> or <CODE>title</CODE>.</P>
<P>If nothing is specified it tries the following methods
(default: key, title request):</P>
<OL>
<LI><B>bus key:</B> This key is negotiated during authentication (a long mix
of ioctls and various key exchanges, crypto stuff) and is used to encrypt
the title and disk keys before sending them over the unprotected bus
(to prevent eavesdropping). The bus key is needed to get and predecrypt the
crypted disk key.</LI>
<LI><B>cached key:</B> MPlayer looks for already cracked
title keys which are stored in the <CODE>~/.mplayer/DVDKeys</CODE> directory
(fast ;).</LI>
<LI><B>key:</B> If no cached key is available, MPlayer tries to
decrypt the disk key with a set of included player keys.</LI>
<LI><B>disk:</B> If the key method fails (e.g. no included player keys),
MPlayer will crack the disk key using a brute force algorithm.
This process is CPU intensive and requires 64 MB of memory (16M 32Bit
entries hash table) to store temporary data. This method should always
work (slow).</LI>
<LI><B>title request:</B> With the disk key MPlayer requests the crypted title
keys, which are inside <I>hidden sectors</I> using <CODE>ioctl()</CODE>.
The region protection of RPC-2 drives is performed in this step and may
fail on such drives. If it succeeds, the title keys will be decrypted with
the bus and disk key.</LI>
<LI><B>title:</B> This method is used if the title request failed and does
not rely on any key exchange with the DVD drive. It uses a crypto attack to
guess the title key directly (by finding a repeating pattern in the
decrypted VOB content and guessing that the plain text corresponding to the
first encrypted bytes is a continuation of that pattern).
The method is also known as "known plaintext attack" or "DeCSSPlus".
In rare cases this may fail because there is not enough encrypted data on
the disk to perform a statistical attack or because the key changes in the
middle of a title. This method is the only way to decrypt a DVD stored on a
hard disk or a DVD with the wrong region on an RPC2 drive (slow).</LI>
</OL>
<P>RPC-1 DVD drives only protect region settings through software.
RPC-2 drives have a hardware protection that allows 5 changes only. It might
be needed/recommended to upgrade the firmware to RPC-1 if you have a RPC-2 DVD
drive. Firmware upgrades can be found on this
<A HREF="http://www.firmware-flash.com">firmware page</A>. If there is
no firmware upgrade available for your device, use the
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset
tool</A> to set the region code of your DVD drive (under Linux).
<B>Warning:</B> You can only set the region 5 times.</P>
<H2><A NAME="vcd">4.3 VCD playback</A></H2>
<P>For the complete list of available options, please read the man page.
The Syntax for a standard Video CD (VCD) is as follows:</P>
<P><CODE>mplayer vcd://&lt;track&gt; [-cdrom-device &lt;device&gt;]</CODE></P>
<P>Example: <CODE>mplayer vcd://2 -cdrom-device /dev/hdc</CODE></P>
<P>The default VCD device is <CODE>/dev/cdrom</CODE>. If your setup differs,
make a symlink or specify the correct device on the command line with the
<CODE>-cdrom-device</CODE> option.</P>
<P><B>Note:</B> At least Plextor and some Toshiba SCSI CD-ROM drives have
horrible performance reading VCDs. This is because the the CDROMREADRAW ioctl
is not fully implemented for these drives. If you have some knowledge of SCSI
programming, please <A HREF="../tech/patches.txt">help us</A> implement generic
SCSI support for VCDs.</P>
<P>In the meantime you can extract data from VCDs with
<A HREF="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvcd</A>
and play the resulting file with MPlayer.</P>
<H4>VCD structure</H4>
<P>VCD disks consist of one or more tracks:</P>
<UL>
<LI>The first track is a small 2048 bytes/sector data track with an iso9660
filesystem, usually containing Windows VCD player programs and maybe other
information (images, text, etc).</LI>
<LI>The second and other tracks are raw 2324 bytes/sector MPEG (movie) tracks,
containing one MPEG PS data packet per sector instead of a filesystem.
Similar to audio CD tracks, these tracks <B>cannot be mounted</B> (Did you
ever mount an audio CD to play it?). As most movies are inside this track,
you should try <CODE>vcd://2</CODE> first.</LI>
<LI>There exist VCD disks without the first track (single track and no
filesystem at all). They are still playable, but cannot be mounted.</LI>
</UL>
<H4>About .DAT files:</H4>
<P>The ~600 MB file visible on the first track of the mounted VCD is not a real
file! It is a so called ISO gateway, created to allow Windows to handle such
tracks (Windows does not allow raw device access to applications at all).
Under Linux you cannot copy or play such files (they contain garbage). Under
Windows it is possible as its iso9660 driver emulates the raw reading of
tracks in this file. To play a .DAT file you need the kernel driver which can
be found in the Linux version of PowerDVD. It has a modified iso9660
filesystem (<CODE>vcdfs/isofs-2.4.X.o</CODE>) driver, which is able to emulate
the raw tracks through this shadow .DAT file. If you mount the disc using
their driver, you can copy and even play .DAT files with mplayer. But it
<B>will not work</B> with the standard iso9660 driver of the Linux kernel!
Use <CODE>vcd://</CODE> instead. Alternatives for VCD copying are
the new <A HREF="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</A> kernel
driver (not part of the official kernel) that shows CD <I>sessions</I>
as image files and <A HREF="http://cdrdao.sourceforge.net/">cdrdao</A>, a
bit-by-bit CD grabbing/copying application.</P>
</BODY>
</HTML>

View File

@ -1,555 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Codecs - 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>
<H2><A NAME="codecs">2.2 Supported codecs</A></H2>
<H3><A NAME="video_codecs">2.2.1 Video codecs</A></H3>
<P>See the
<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">codec status table</A>
for the complete, daily generated list. Quite a few codecs are available for
download from our homepage. Grab them from our
<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">codecs page</A>.</P>
<P>The most important ones above all:</P>
<UL>
<LI><B>MPEG1</B> (<B>VCD</B>) and <B>MPEG2</B> (<B>DVD</B>) video</LI>
<LI>native decoders for <B>DivX ;-)</B>, <B>OpenDivX</B>, <B>DivX4</B>, <B>
DivX5</B>, <B>M$ MPEG4</B> v1, v2 and other MPEG4 variants</LI>
<LI>native decoder for <B>Windows Media Video 7/8</B> (<B>WMV1/WMV2</B>), and
Win32 DLL decoder for <B>Windows Media Video 9</B> (<B>WMV3</B>), both
used in .wmv files</LI>
<LI>native <B>Sorenson 1 (SVQ1)</B> decoder</LI>
<LI>native <B>Sorenson 3 (SVQ3)</B> decoder</LI>
<LI><B>3ivx</B> v1, v2 decoder</LI>
<LI>Cinepak and <B>Intel Indeo</B> codecs (3.1, 3.2, 4.1, 5.0)</LI>
<LI><B>MJPEG</B>, AVID, VCR2, ASV2 and other hardware formats</LI>
<LI>VIVO 1.0, 2.0, I263 and other <B>h263</B>(+) variants</LI>
<LI>FLI/FLC</LI>
<LI><B>RealVideo 1.0</B> codec from libavcodec, and <B>RealVideo 2.0</B>,
<B>3.0</B> and <B>4.0</B> codecs using RealPlayer libraries</LI>
<LI>native decoder for HuffYUV</LI>
<LI>various old simple RLE-like formats</LI>
</UL>
<P>If you have a Win32 codec not listed here which is not supported yet, please
read the <A HREF="#importing">codec importing HOWTO</A> and help us add support
for it.</P>
<H4><A NAME="divx">2.2.1.1 DivX4/DivX5</A></H4>
<P>This section contains information about the DivX4 and DivX5 codecs of
<A HREF="http://www.projectmayo.com">Project Mayo</A>. Their first available
alpha version was OpenDivX 4.0 alpha 47 and 48. Support for this was included
in MPlayer in the past, and built by default. We also used its
postprocessing code to optionally enhance visual quality of MPEG1/2 movies.
Now we use our own, for all file types.</P>
<P>The new generation of this codec is called DivX4 and can even decode
movies made with the infamous DivX codec! In addition it is much faster than
the native Win32 DivX DLLs but slower than <B>libavcodec</B>. Hence its usage
as a decoder is <B>DISCOURAGED</B>. However, it is useful for encoding. One
disadvantage of this codec is that it is not available under an Open Source
license.</P>
<P>DivX4Linux works in two modes:</P>
<DL>
<DT><CODE>-vc odivx</CODE></DT>
<DD>Uses the codec in OpenDivX fashion. In this case it
produces YV12 images in its own buffer, and MPlayer does colorspace
conversion via libvo. (<B>Fast, recommended!</B>)</DD>
<DT><CODE>-vc divx4</CODE></DT>
<DD>Uses the colorspace conversion of the codec.
In this mode you can use YUY2/UYVY, too. (<B>SLOW</B>)</DD>
</DL>
<P>The <CODE>-vc odivx</CODE> method is usually faster, due to the fact that it
transfers image data in YV12 (planar YUV 4:2:0) format, thus requiring much
less bandwidth on the bus. For packed YUV modes (YUY2, UYVY) use the
<CODE>-vc divx4</CODE> method. For RGB modes the speed is the same, differing
at best according to your current color depth.</P>
<P><B>Note:</B> If your <CODE>-vo</CODE> driver supports direct rendering, then
<CODE>-vc divx4</CODE> may be faster or even the fastest solution.</P>
<P>The Divx4/5 binary codec library can be downloaded from
<A HREF="http://avifile.sourceforge.net">avifile</A> or
<A HREF="http://www.divx.com">divx.com</A>.
Unpack it, run <CODE>./install.sh</CODE> as root and do not forget adding
<CODE>/usr/local/lib</CODE> to your <CODE>/etc/ld.so.conf</CODE> and running
<CODE>ldconfig</CODE>.</P>
<P>Get the CVS version of the OLD OpenDivx core library like this:</P>
<OL>
<LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login</CODE></LI>
<LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore</CODE></LI>
<LI>This core library is split into a decore and encore library that have to
be compiled separately. For the decore Library, simply type
<PRE>
cd divxcore/decore/build/linux
make
cp libdivxdecore.so /usr/local/lib
ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
cp ../../src/decore.h /usr/local/include
</PRE>
</LI>
<LI>Alas, for the encore library there is no Linux Makefile available, and the
MMX optimized code only works on Windows. You can still compile it, though,
by using this
<A HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/divx-mf/Makefile">Makefile</A>.
<PRE>
cd ../../../encore/build
mkdir linux
cd linux
cp path/Makefile .
make
cp libdivxencore.so /usr/local/lib
ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
cp ../../src/encore.h /usr/local/include
</PRE>
</LI>
</OL>
<P>MPlayer autodetects DivX4/DivX5 if it is properly installed, just
compile as usual. If it does not detect it, you did not install or configure
it correctly.</P>
<H4><A NAME="libavcodec">2.2.1.2 FFmpeg/libavcodec</A></H4>
<P><A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A> contains an
<B>open source</B> codec package, which is capable of decoding streams
encoded with
H263/MJPEG/LJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV/SVQ1/SVQ3/
MPEG1/MPEG2/VCR1/VCR2/ASV1/ASV2/CLJR
video, or WMA (Windows Media Audio) audio codecs. Not only some of
them can be encoded with, but it also offers higher speed than the Win32
codecs or the DivX.com DivX4/5 library!</P>
<P>It contains a lot of nice codecs, especially important are the MPEG4
variants:
DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Also a very
interesting one is the WMA decoder.</P>
<P>The most recent codec deserving credit is the <B>Sorenson 3</B> (SVQ3)
codec. This is the first, completely opensource implementation of this
codec. It's even faster than the original. Be sure to prefer this instead
of the binary codec!</P>
<P>If you use an MPlayer release you have libavcodec right in the
package, just build as usual. If you use MPlayer from CVS you have to
extract libavcodec from the FFmpeg CVS tree as FFmpeg releases <B>don't</B>
work with MPlayer. In order to achieve this do:</P>
<OL>
<LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login</CODE></LI>
<LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg</CODE></LI>
<LI>Move the <CODE>libavcodec</CODE> directory from the FFmpeg sources to the
root of the MPlayer CVS tree. It should look like this:
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>main/libavcodec</CODE></P>
Symlinking is <B>not</B> enough, you have to copy or move it!</LI>
<LI>Compile. Configure should detect problems before compilation.</LI>
</OL>
<P><B>Note:</B> MPlayer from CVS does contain a libavcodec
subdirectory, but it does <B>not</B> contain the source for libavcodec!
You must follow the steps above to obtain the source for this library.</P>
<P>With FFmpeg and my Matrox G400, I can view even the highest resolution DivX
movies without dropped frames on my K6/2 500.</P>
<H4><A NAME="xanim">2.2.1.3 XAnim codecs</A></H4>
<H4>FOREWORD</H4>
<P>
Be advised that the XAnim binary codecs are packaged with a piece of text
claiming to be a legally binding software license which, besides other
restrictions, forbids the user to use the codecs in conjunction with any
program other than XAnim. However, the XAnim author has yet to bring legal
action against anyone for codec-related issues.
</P>
<H4>INSTALLATION AND USAGE</H4>
<P>MPlayer is capable of employing the XAnim codecs for decoding. Follow
the instructions to enable them:</P>
<OL>
<LI>Download the codecs you wish to use from the
<A HREF="http://xanim.va.pubnix.com">XAnim site</A>. The <B>3ivx</B> codec
is not there, but at the <A HREF="http://www.3ivx.com">3ivx site</A>.</LI>
<LI><B>OR</B> download the codecs pack from our
<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">codecs page</A>.
</LI>
<LI>Use the <CODE>--with-xanimlibdir</CODE> option to tell configure where
to find the XAnim codecs. By default, it looks for them at
<CODE>/usr/local/lib/codecs, /usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim</CODE>.
Alternatively you can set the environment variable <I>XANIM_MOD_DIR</I> to
the directory of the XAnim codecs.</LI>
<LI>Rename/symlink the files, cutting out the architecture stuff, so they will
have filenames like these: <CODE>vid_cvid.xa, vid_h263.xa, vid_iv50.xa</CODE>.</LI>
</OL>
<P>XAnim is video codec family <CODE>xanim</CODE>, so you may want to use the <CODE>-vfm xanim</CODE>
option to tell MPlayer to use them if possible.</P>
<P>Tested codecs include: <B>Indeo 3.2</B>, <B>4.1</B>, <B>5.0</B>, <B>CVID</B>,
<B>3ivX</B>, <B>h263</B>.</P>
<H4><A NAME="vivo_video">2.2.1.4 VIVO video</A></H4>
<P>MPlayer can play Vivo (1.0 and 2.0) videos. The most suitable codec
for 1.0 files is FFmpeg's H263 decoder, you can use it with the <CODE>-vc
ffh263</CODE> option. For 2.0 files, use the Win32 DLL through the
<CODE>-vc vivo</CODE> option. If you do not supply command line options
MPlayer selects the best codec automatically.</P>
<H4><A NAME="mpeg">2.2.1.5 MPEG 1/2 video</A></H4>
<P>MPEG1 and MPEG2 are decoded by the multiplatform native <B>libmpeg2</B>
library, whose source code is included in MPlayer. We handle buggy
MPEG 1/2 video files by catching <CODE>Signal 11 (Segmentation fault)</CODE>,
and quickly reinitializing the codec, continuing exactly from where the
failure occurred. This recovery technique has no measurable speed penalty.</P>
<H4><A NAME="ms_video1">2.2.1.6 MS Video1</A></H4>
<P>This is a very old and very bad codec from Microsoft. In the past it was
decoded with the <CODE>msvidc32.dll</CODE> Win32 codec, now we have our own
open source implementation (by <A HREF="mailto:melanson@pcisys.net">Mike
Melanson</A>).</P>
<H4><A NAME="cinepak">2.2.1.7 Cinepak CVID</A></H4>
<P>MPlayer uses its own open source, multiplatform Cinepak decoder (by
<A HREF="mailto:timf@csse.monash.edu.au">Dr. Tim Ferguson</A>), by default.
It supports YUV outputs, so that hardware scaling is possible if the video
output driver permits it.</P>
<H4><A NAME="realvideo">2.2.1.8 RealVideo</A></H4>
MPlayer supports decoding all versions of RealVideo:
<UL>
<LI>RealVideo 1.0 (fourcc RV10) - en/decoding supported by <B>libavcodec</B></LI>
<LI>RealVideo 2.0, 3.0, 4.0 (fourcc RV20, RV30, RV40) - decoding supported by <B>RealPlayer libraries</B></LI>
</UL>
<P>It is recommended to download and install RealPlayer8 or RealONE, because
MPlayer can use their libraries to decode files with RealVideo 2.0 -
4.0 video. The MPlayer configure script should detect the
RealPlayer libraries in the standard locations of a full installation. If it
does not, tell configure where to look with the
<CODE>--with-reallibdir</CODE> option.</P>
<P>As a second chance you can download the codecs from
<a href="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</a>.
After downloading the Real codecs package, extract it to the /usr/local/lib/codecs
directory, or you can specify a unique path with the <CODE>--with-reallibdir</CODE> option.</P>
<P><B>Note:</B> RealPlayer libraries currently <B>only work with Linux, FreeBSD,
NetBSD and Cygwin on the x86, Alpha and PowerPC (Linux/Alpha and Linux/PowerPC
have been tested) platforms.</B></P>
<H4><A NAME="xvid">2.2.1.9 XviD</A></H4>
<P><A HREF="http://www.xvid.org/"><B>XviD</B></A> is a forked development of
the OpenDivX codec. It happened when ProjectMayo changed OpenDivX to closed
source DivX4 (now DivX5), and the non-ProjectMayo people working on OpenDivX
got angry, then started XviD. So both projects have the same origin.</P>
<H4>ADVANTAGES</H4>
<UL>
<LI>open source</LI>
<LI>its API is compatible with DivX4 so adding support for it is easy</LI>
<LI>2-pass encoding support</LI>
<LI>nice encoding quality, higher speed than DivX4 (you can optimize it for
your box while compiling)</LI>
</UL>
<H4>DISADVANTAGES</H4>
<UL>
<LI>currently it does not properly <B>decode</B> all DivX/DivX4 files (no
problem as <A HREF="#libavcodec">libavcodec</A> can play them)</LI>
<LI>under development</LI>
</UL>
<H4>INSTALLING XVID CVS</H4>
<P>XviD is currently available only from CVS. Here are download and installation
instructions (you need at least autoconf 2.50, automake and libtool):</P>
<OL>
<LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</CODE></LI>
<LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</CODE></LI>
<LI><CODE>cd xvidcore/build/generic</CODE></LI>
<LI><CODE>./bootstrap.sh</CODE></LI>
<LI><CODE>./configure</CODE><BR>
You may have to add some options (examine the output of
<CODE>./configure --help</CODE>).</LI>
<LI><CODE>make &amp;&amp; make install</CODE></LI>
<LI>If you specified <CODE>--enable-divxcompat</CODE>,
copy the <CODE>divx4.h</CODE> header file from
<CODE>xvidcore/src/</CODE> to <CODE>/usr/local/include/</CODE>.</LI>
<LI>Recompile MPlayer with
<CODE>--with-xvidcore=/path/to/libxvidcore.a</CODE>.</LI>
</OL>
<H4><A NAME="sorenson">2.2.1.10 Sorenson</A></H4>
<P><B>Sorenson</B> is a video codec family developed by Sorenson Media and
licensed to Apple who distribute it with their QuickTime Player. We are
currently able to decode all versions of Sorenson video files with the
following decoders:</P>
<UL>
<LI>Sorenson Video v1 (fourcc <I>SVQ1</I>) - decoding supported by <B>native
codec</B> (<A HREF="#libavcodec">libavcodec</A>)</LI>
<LI>Sorenson Video v3 (fourcc <I>SVQ3</I>) - decoding supported by <B>native
codec</B> (<A HREF="#libavcodec">libavcodec</A>)</LI>
</UL>
<H4>COMPILING MPLAYER WITH QUICKTIME LIBRARIES SUPPORT</H4>
<P><B>NOTE:</B> currently only 32bit Intel platforms are supported.</P>
<OL>
<LI>download MPlayer CVS</LI>
<LI>download QuickTime DLL pack from
<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</A></LI>
<LI>extract QuickTime DLL pack to your Win32 codecs directory (default:
<CODE>/usr/local/lib/codecs/</CODE>)</LI>
<LI>compile MPlayer</LI>
</OL>
<H3><A NAME="audio_codecs">2.2.2 Audio codecs</A></H3>
<P>The most important audio codecs above all:<BR></P>
<UL>
<LI>MPEG layer 2 (MP2), and layer 3 (MP3) audio (<B>native</B> code, with
MMX/SSE/3DNow! optimization)</LI>
<LI>MPEG layer 1 audio (<B>native</B> code, with libavcodec)</LI>
<LI>Windows Media Audio v1, v2 (<B>native</B> code, with libavcodec)</LI>
<LI>Windows Media Audio 9 (WMAv3) (using DMO DLL)</LI>
<LI>AC3 Dolby audio (<B>native</B> code, with MMX/SSE/3DNow!
optimization)</LI>
<LI>AC3 passing through soundcard hardware</LI>
<LI>Ogg Vorbis audio codec (<B>native</B> library)</LI>
<LI>RealAudio: DNET (low bitrate AC3), Cook, Sipro and ATRAC3</LI>
<LI>QuickTime: Qualcomm and QDesign audio codecs</LI>
<LI>VIVO audio (g723, Vivo Siren)</LI>
<LI>Voxware audio (using DirectShow DLL)</LI>
<LI>alaw and ulaw, various gsm, adpcm and pcm formats and other simple old
audio codecs</LI>
<LI>AAC</LI>
</UL>
<H4><A NAME="software_ac3">2.2.2.1 Software AC3 decoding</A></H4>
<P>This is the default decoder used for files with AC3 audio.</P>
<P>The AC3 decoder can create audio output mixes for 2, 4, or 6 speakers. When
configured for 6 speakers, this decoder provides separate output of all the
AC3 channels to the sound driver, allowing for full "surround sound"
experience without the external AC3 decoder required to use the hwac3
codec.</P>
<P>Use the <CODE>-channels</CODE> option to select the number of output
channels. Use <CODE>-channels 2</CODE> for a stereo downmix. For a 4
channel downmix (Left Front, Right Front, Left Surround and Right Surround
outputs), use <CODE>-channels 4</CODE>. In this case, any center channel will
be mixed equally to the front channels. <CODE>-channels 6</CODE> will output
all the AC3 channels as they are encoded - in the order Left, Right, Left
Surround, Right Surround, Center and LFE.</P>
<P>The default number of output channels is 2.</P>
<P>To use more than 2 output channels, you will need to use OSS, and have a
sound card that supports the appropriate number of output channels via the
SNDCTL_DSP_CHANNELS ioctl. An example of a suitable driver is emu10k1 (used
by Soundblaster Live! cards) from August 2001 or newer (ALSA CVS is also
supposed to work).</P>
<H4><A NAME="hardware_ac3">2.2.2.2 Hardware AC3 decoding</A></H4>
<P>You need an AC3 capable sound card, with digital out (SP/DIF). The card's
driver must properly support the AFMT_AC3 format (C-Media does). Connect
your AC3 decoder to the SP/DIF output, and use the <CODE>-ac hwac3</CODE>
option. It is experimental but known to work with C-Media cards,
Soundblaster Live! using ALSA (but not OSS) drivers and DXR3/Hollywood+ MPEG
decoder cards.</P>
<H4><A NAME="libmad">2.2.2.3 libmad support</A></H4>
<P><A HREF="http://mad.sourceforge.net">libmad</A> is a multiplatform MPEG
audio decoding library. It does not handle broken files well, and it
sometimes has problems with seeking.</P>
<P>To enable support, compile with the <CODE>--enable-mad</CODE> configure
option.</P>
<H4><A NAME="vivo_audio">2.2.2.4 VIVO audio</A></H4>
<P>The audio codec used in VIVO files depends on whether it is a VIVO/1.0 or
VIVO/2.0 file. VIVO/1.0 files have <B>g.723</B> audio, and VIVO/2.0 files
have <B>Vivo Siren</B> audio. Both are supported.</P>
<H4><A NAME="realaudio">2.2.2.5 RealAudio</A></H4>
MPlayer supports decoding nearly all versions of RealAudio:
<UL>
<LI>RealAudio DNET - decoding supported by <B>liba52</B></LI>
<LI>RealAudio Cook/Sipro/ATRAC3 - decoding supported by <B>RealPlayer
libraries</B></LI>
</UL>
<P>On how to install RealPlayer libraries, see the
<A HREF="#realvideo">RealVideo</A> section.</P>
<H4><A NAME="qdesign">2.2.2.6 QDesign codecs</A></H4>
<P>QDesign audio streams (fourcc: <I>QDMC</I>, <I>QDM2</I>) are found in MOV/QT
files. Both versions of this codec can be decoded with QuickTime libraries.
For installation instructions please see the <A HREF="#sorenson">Sorenson
video codec</A> section.</P>
<H4><A NAME="qclp">2.2.2.7 Qualcomm codec</A></H4>
<P>Qualcomm audio stream (fourcc: <I>Qclp</I>) is found in MOV/QT files.
It can be decoded with QuickTime libraries. For installation instructions
please see the <A HREF="#sorenson">Sorenson video codec</A> section.</P>
<H4><A NAME="aac">2.2.2.8 AAC codec</A></H4>
<P>AAC (Advanced Audio Coding) is an audio codec sometimes found in MOV and MP4
files. An open source decoder called FAAD is available from
<A HREF="http://www.audiocoding.com/">AudioCoding.com</A>.
MPlayer includes libfaad 2.0RC1, so you do not need to get it separately.</P>
<H3><A NAME="importing">2.2.3 Win32 codec importing HOWTO</A></H3>
<H4><A NAME="importing_vfw">2.2.3.1 VFW codecs</A></H4>
<P>VFW (Video for Windows) is the old Video API for Windows. Its codecs have
the .DLL or (rarely) .DRV extension.
If MPlayer fails at playing your AVI with this kind of message:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P>
<P>It means your AVI is encoded with a codec which has the HFYU fourcc (HFYU =
HuffYUV codec, DIV3 = DivX Low Motion, etc...). Now that you know this, you
have to find out which DLL Windows loads in order to play this file. In our
case, the <CODE>system.ini</CODE> contains this information in a line that
reads:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>VIDC.HFYU=huffyuv.dll</CODE></P>
<P>So you need the <CODE>huffyuv.dll</CODE> file. Note that the audio codecs are
specified by the MSACM prefix:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>msacm.l3acm=L3codeca.acm</CODE></P>
<P>This is the MP3 codec. Now that you have all the necessary information
(fourcc, codec file, sample AVI), submit your codec support request by mail,
and upload these files to the FTP site:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>
<P><B>Note:</B> On Windows NT/2000/XP search for this info in the registry, e.g. search for
"VIDC.HFYU". To find out how to do this, look at the old DirectShow method below.</P>
<H4><A NAME="importing_directshow">2.2.3.2 DirectShow codecs</A></H4>
<P>DirectShow is the newer Video API, which is even worse than its predecessor.
Things are harder with DirectShow, since</P>
<UL>
<LI><CODE>system.ini</CODE> does not contain the needed information, instead it
is stored in the registry and</LI>
<LI>we need the GUID of the codec.</LI>
</UL>
<P><B>New Method:</B> Using Microsoft GraphEdit (fast)</P>
<OL>
<LI>Get GraphEdit from either DirectX SDK or
<A HREF="http://doom9.org">Doom9</A>.</LI>
<LI>Start <CODE>graphedit.exe</CODE>.</LI>
<LI>From the menu select Graph -&gt; Insert Filters.</LI>
<LI>Expand item <CODE>DirectShow Filters</CODE>.</LI>
<LI>Select the right codec name and expand item.</LI>
<LI>In the entry <CODE>DisplayName</CODE> look at the text in winged brackets
after the backslash and write it down (five dash-delimited blocks, the
GUID).</LI>
<LI>The codec binary is the file specified in the <CODE>Filename</CODE>
entry.</LI>
</OL>
<P><B>Note:</B> If there is no <CODE>Filename</CODE> entry and <CODE>DisplayName</CODE>
contains something like <CODE>device:dmo</CODE>, then it is a DMO-Codec.</P>
<P><B>Old Method:</B> Take a deep breath and start searching the registry...</P>
<OL>
<LI>Start <CODE>regedit</CODE>.</LI>
<LI>Press <CODE>Ctrl-f</CODE>, disable the first two checkboxes, and enable
the third. Type in the fourcc of the codec (e.g. TM20).</LI>
<LI>You should see a field which contains the path and the filename
(e.g. <CODE>C:\WINDOWS\SYSTEM\TM20DEC.AX</CODE>).</LI>
<LI>Now that you have the file, we need the GUID. Try searching again, but
now search for the codec's name, not the fourcc. Its name can be acquired
when Media Player is playing the file, by checking File -&gt; Properties
-&gt; Advanced.
If not, you are out of luck. Try guessing (e.g. search for TrueMotion).</LI>
<LI>If the GUID is found you should see a FriendlyName and a CLSID
field. Write down the 16 byte CLSID, this is the GUID we need.</LI>
</OL>
<P><B>Note:</B> If searching fails, try enabling all the checkboxes. You may have
false hits, but you may get lucky...</P>
<P>Now that you have all the necessary information (fourcc, GUID, codec file,
sample AVI), submit your codec support request by mail, and upload these files
to the FTP site:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

View File

@ -1,374 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Encoding - MEncoder - The Movie Encoder 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>
<H1><A NAME="encoding">7. Encoding with MEncoder</A></H1>
<P>For the complete list of available MEncoder options and examples, please see
the man page. For a series of hands-on examples and detailed guides on using
several encoding parameters, read the
<A HREF="../tech/encoding-tips.txt">encoding-tips</A> that were collected from
several mailing list threads on
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">mplayer-users</A>.
Search the <A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">archives</A>
for a wealth of discussions about all aspects of and problems related to
encoding with MEncoder.</P>
<H2><A NAME="2pass">7.1 Encoding 2 or 3-pass MPEG-4 ("DivX")</A></H2>
<P><U><B>2-pass encoding:</B></U> the name comes from the fact that this method
encodes the file <I>twice</I>. The first encoding (dubbed <I>pass</I>)
creates some temporary files (*.log) with a size of few megabytes, do not
delete them yet (you can delete the AVI). In the second pass, the 2-pass
output file is created, using the bitrate data from the temporary files. The
resulting file will have much better image quality. If this is the first time
you heard about this, you should consult some guides available on the
Net.</P>
<P>This example shows how to encode a DVD to a 2-pass MPEG-4 ("DIVX") AVI. Just
two commands are needed:<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> - remove this file, which
can come from a previous 3-pass encoding (it interferes with current
one)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<P><U><B>3-pass encoding:</B></U> this is an extension of 2-pass encoding,
where the audio encoding takes place in a separate pass. This method enables
estimation of recommended video bitrate in order to fit on a CD. Also, the
audio is encoded only once, unlike in 2-pass mode. The schematics:</P>
<OL>
<LI>Remove conflicting temporary file:
<P><CODE>rm frameno.avi</CODE></P></LI>
<LI>First pass:
<P><CODE>mencoder &lt;file/DVD&gt; -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</CODE></P>
<P>An audio-only avi file will be created, containing
<B>only</B> the requested audio stream. Don't forget <CODE>-lameopts</CODE>,
if you need to set it. If you were encoding a long movie, MEncoder
prints the recommended bitrate values for 650Mb, 700Mb, and 800Mb
destination sizes, after this pass finishes.</P></LI>
<LI>Second pass:
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>This is the first pass of video encoding.
Optionally specify the video bitrate MEncoder printed at the end of
the previous pass.</P></LI>
<LI>Third pass:
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>This is the second pass of video encoding.
Specify the same bitrate as in the previous pass unless you really know
what you are doing. In this pass, audio from <CODE>frameno.avi</CODE>
will be inserted into the destination file.. and it's all ready!</P></LI>
</OL>
<H4>Example for 3-pass encoding:</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> - remove this file,
which can come from a previous 3-pass encoding (it interferes with current
one)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -ovc frameno
-o frameno.avi -oac mp3lame -lameopts vbr=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<H2><A NAME="mpeg">7.2 Encoding to MPEG format</A></H2>
<P>MEncoder can create MPEG (MPEG-PS) format output files. It's probably
useful only with <A HREF="codecs.html#libavcodec">libavcodec</A>'s
<I>mpeg1video</I> codec, because players - except MPlayer - expect MPEG1
video, and MPEG1 layer 2 (MP2) audio streams in MPEG files.</P>
<P>This feature is not very useful right now, aside that it probably has
many bugs, but the more importantly because MEncoder currently cannot encode
MPEG1 layer 2 (MP2) audio, which all other players expect in MPEG files.</P>
<P>To change MEncoder's output file format, use the <CODE>-of mpeg</CODE>
option.</P>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video
-oac copy &lt;other options&gt; media.avi -o output.mpg</CODE></P>
<H2><A NAME="rescaling">7.3 Rescaling movies</A></H2>
<P>Often the need to resize movie images' size emerges. Its reasons can be
many: decreasing file size, network bandwidth, etc. Most people
even do rescaling when converting DVDs or SVCDs to DivX AVI. <B>This is bad.</B>
Instead of even you doing so, read the <A HREF="#aspect">Preserving
aspect ratio</A> section.</P>
<P>The scaling process is handled by the <I>'scale'</I> video filter:
<CODE>-vf scale=width:height</CODE>. Its quality can be set with the
<CODE>-sws</CODE> option. If it's not specified, MEncoder will use 0:
fast bilinear.</P>
<H4>Usage:</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder input.mpg -ovc lavc -lavcopts
vcodec=mpeg4 -vf scale=640:480 -oac copy -o
output.avi</CODE></P>
<H2><A NAME="copying">7.4 Stream copying</A></H2>
<P>MEncoder can handle input streams in two ways: <B>encode</B> or
<B>copy</B> them. This section is about <B>copying</B>.</P>
<UL>
<LI><B>Video stream</B> (option <CODE>-ovc copy</CODE>): nice stuff can be
done :)<BR>
Like, putting (not converting) FLI or VIVO or MPEG1 video into
an AVI file. Of course only MPlayer can play such files :) And it
probably has no real life value at all. Rationally: video stream copying
can be useful for example when only the audio stream has to be encoded
(like, uncompressed PCM to MP3).</LI>
<LI><B>Audio stream</B> (option <CODE>-oac copy</CODE>): straightforward.
It is possible to take an external audio file (MP3, WAV) and mux it
into the output stream. Use the <CODE>-audiofile &lt;filename&gt;</CODE>
option for this.</LI>
</UL>
<H2><A NAME="fixing">7.5 Fixing AVIs with broken index or interleaving</A></H2>
<P>Easiest thing. We simply copy the video and audio streams, and
MEncoder generates the index. Of course this cannot fix possible bugs
in the video and/or audio streams. It also fixes files with broken
interleaving, thus the <CODE>-ni</CODE> option won't be needed for them
anymore.</P>
<P>Command: <CODE>mencoder -idx input.avi -ovc copy -oac copy -o output.avi</CODE></P>
<H3><A NAME="appending">7.5.1 Appending multiple AVI files</A></H3>
<P>As a side-effect, the broken AVI fixer function enables MEncoder to append
2 (or more) AVI files:</P>
<P>Command: <CODE>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -</CODE></P>
<P><B>Note:</B> This expects <CODE>1.avi</CODE> and <CODE>2.avi</CODE> to use the same codecs, resolution,
stream rate etc, and at least 1.avi must not be broken. You may need to fix
your input AVI files first, as described <A HREF="#fixing">above</A>.</P>
<H2><A NAME="libavcodec">7.6 Encoding with the libavcodec codec family</A></H2>
<P><A HREF="codecs.html#libavcodec">libavcodec</A> provides simple encoding to a
lot of interesting video and audio formats (currently its audio codecs are
unsupported). You can encode to the following codecs (more or less up to date):</P>
<UL>
<LI>mjpeg - Motion JPEG</LI>
<LI>ljpeg - Lossless JPEG</LI>
<LI>h263 - H263</LI>
<LI>h263p - H263 Plus</LI>
<LI>mpeg4 - ISO standard MPEG-4 (DivX 5, XVID compatible)</LI>
<LI>msmpeg4 - pre-standard MPEG-4 variant by MS, v3 (aka DivX3)</LI>
<LI>msmpeg4v2 - pre-standard MPEG-4 by MS, v2 (used in old asf files)</LI>
<LI>wmv1 - Windows Media Video, version 1 (aka WMV7)</LI>
<LI>wmv2 - Windows Media Video, version 2 (aka WMV8)</LI>
<LI>rv10 - an old RealVideo codec</LI>
<LI>mpeg1video - MPEG1 video</LI>
<LI>mpeg2video - MPEG2 video</LI>
<LI>huffyuv - lossless compression</LI>
<LI>asv1 - ASUS Video v1</LI>
<LI>asv2 - ASUS Video v2</LI>
<LI>ffv1 - FFmpeg's lossless video codec</LI>
</UL>
<P>The first column contains the codec names that should be passed after the
<CODE>vcodec</CODE> config, like: <CODE>-lavcopts vcodec=msmpeg4</CODE></P>
<P>An example, with MJPEG compression:<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder dvd://2 -o title2.avi -ovc lavc
-lavcopts vcodec=mjpeg -oac copy</CODE></P>
<H2><A NAME="image_files">7.7 Encoding from multiple input image files (JPEGs, PNGs or TGAs)</A></H2>
<P>MEncoder is capable of creating movies from one or more JPEG, PNG or TGA
files. With simple framecopy it can create MJPEG (Motion JPEG), MPNG
(Motion PNG) or MTGA (Motion TGA) files.</P>
Explanation of the process:
<OL>
<LI>MEncoder <I>decodes</I> the input image(s) with
<CODE>libjpeg</CODE> (when decoding PNGs, it will use <B>libpng</B>).</LI>
<LI>MEncoder then feeds the decoded image to the chosen video compressor
(DivX4, XviD, ffmpeg msmpeg4, etc...).</LI>
</OL>
<H4>Examples</H4>
<P>The explanation of the <CODE>-mf</CODE> option can be found below in the
man page.</P>
<P><I>Creating a DivX4 file from all the JPEG files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4
-o output.avi \*.jpg</CODE></P>
<P><I>Creating a DivX4 file from some JPEG files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25
-ovc divx4 -o output.avi frame001.jpg,frame002.jpg</CODE></P>
<P><I>Creating a Motion JPEG (MJPEG) file from all the JPEG files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi \*.jpg</CODE></P>
<P><I>Creating an uncompressed file from all the PNG files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb
-o output.avi \*.png</CODE></P>
<P><B>Note:</B> Width must be integer multiple of 4, it's a limitation of the
RAW RGB AVI format.</P>
<P><I>Creating a Motion PNG (MPNG) file from all the PNG files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy
-o output.avi \*.png</CODE></P>
<P><I>Creating a Motion TGA (MTGA) file from all the TGA files in the current dir:</I><BR>
&nbsp;&nbsp;<CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy
-o output.avi \*.tga</CODE></P>
<H2><A NAME="vobsub">7.8 Extracting DVD subtitles to a Vobsub file</A></H2>
<P>MEncoder is capable of extracting subtitles from a DVD into
Vobsub fomat files. They consist of a pair of files ending in
<CODE>.idx</CODE> and <CODE>.sub</CODE> and are usually packaged in a single
<CODE>.rar</CODE> archive. MPlayer can play these with the
<CODE>-vobsub</CODE> and <CODE>-vobsubid</CODE> options.</P>
<P>You specify the basename (i.e without the <CODE>.idx</CODE> or
<CODE>.sub</CODE> extension) of the output files with <CODE>-vobsubout</CODE>
and the index for this subtitle in the resulting files with
<CODE>-vobsuboutindex</CODE>.</P>
<P>If the input is not from a DVD you should use <CODE>-ifo</CODE> to
indicate the <CODE>.ifo</CODE> file needed to construct the resulting
<CODE>.idx</CODE> file.</P>
<P>If the input is not from a DVD and you do not have the <CODE>.ifo</CODE>
file you will need to use the <CODE>-vobsubid</CODE> option to let it know
what language id to put in the <CODE>.idx</CODE> file.</P>
<P>Each run will append the running subtitle if the <CODE>.idx</CODE> and
<CODE>.sub</CODE> files already exist. So you should remove any before
starting.</P>
<H4>Examples</H4>
<P><I>Copying two subtitles from a DVD while doing 3-pass encoding</I><BR>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder dvd://1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts pass=1</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5</CODE></P>
<P><I>Copying a french subtitle from an MPEG file</I><BR>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P>
<H2><A NAME="aspect">7.9 Preserving aspect ratio</A></H2>
<P>DVDs and SVCDs (i.e. MPEG1/2) files contain an aspect ratio value,
which describes how the player should scale the video stream, so humans
won't have egg heads (ex.: 480x480 + 4:3 = 640x480). However when encoding
to AVI (DivX) files, you have be aware that AVI headers don't store this
value. Rescaling the movie is disgusting and time consuming, there
has to be a better way!</P>
<P>There is.</P>
<P>MPEG4 has an unique feature: the video stream can contain
its needed aspect ratio. Yes, just like MPEG1/2 (DVD, SVCD) and H263 files.
Regretfully, there are <U>no</U> video players outside which support this
attribute of MPEG4. Except MPlayer.</P>
<P>This feature can be used only with <A HREF="codecs.html#libavcodec">
libavcodec</A>'s <CODE>mpeg4</CODE> codec. Keep in mind: although MPlayer
will correctly play the created file, other players will use the wrong
aspect ratio.</P>
<P>You seriously should crop the black bands over and below the movie image.
See the man page for the usage of the <CODE>cropdetect</CODE> and
<CODE>crop</CODE> filters.</P>
<H4>Usage:</H4>
<P><CODE>$ mencoder sample-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o output.avi</CODE></P>
<H2><A NAME="custommatrices">7.10 Custom inter/intra matrices</A></H2>
<P>With this feature of <A HREF="codecs.html#libavcodec">libavcodec</A> you are
able to set custom inter (I-frames/key frames) and intra (P-frames/predicted
frames) matrices. It is supported by many of the codecs: <CODE>mpeg1video</CODE>
and <CODE>mpeg2video</CODE> are reported as working.</P>
<P>A typical usage of this feature is to set the matrices preferred by the
<A HREF="http://www.kvcd.net/">KVCD</A> specifications.<BR><BR>
The <B>KVCD "Notch" Quantization Matrix</B>:<BR>
<I>Intra:</I>
<PRE>
8 9 12 22 26 27 29 34
9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79
</PRE>
<I>Inter:</I>
<PRE>
16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44
</PRE>
</P>
<H4>Usage:</H4>
<P><CODE>$ mencoder input.avi -o output.avi -oac copy -ovc lavc -lavcopts
inter_matrix=...:intra_matrix=...</CODE></P>
<P><CODE>$ mencoder input.avi -ovc lavc -lavcopts
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,<BR>
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,<BR>
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79<BR>
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,<BR>
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,<BR>
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg</CODE></P>
</BODY>
</HTML>

View File

@ -1,802 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>FAQ - 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">
<STYLE TYPE="text/css">
dt {
font-weight : bold;
}
</STYLE>
</HEAD>
<BODY>
<H1><A NAME="faq">5. FAQ</A></H1>
<UL>
<LI><A HREF="#development">5.1 Development</A></LI>
<LI><A HREF="#compilation">5.2 Compilation</A></LI>
<LI><A HREF="#general">5.3 General questions</A></LI>
<LI><A HREF="#playback">5.4 Playback problems</A></LI>
<LI><A HREF="#driver">5.5 Video/audio driver problems (vo/ao)</A></LI>
<LI><A HREF="#dvd">5.6 DVD playback</A></LI>
<LI><A HREF="#features">5.7 Feature requests</A></LI>
<LI><A HREF="#encoding">5.8 Encoding</A></LI>
</UL>
<H2><A NAME="development">5.1 Development</A></H2>
<DL>
<DT>Q: How do I create a proper patch for MPlayer?</DT>
<DD>A: Send a <B>unified</B> diff (<CODE>diff -u</CODE>) of your changes
against the CVS version of MPlayer to the
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A>
mailing list. We wrote a <A HREF="../tech/patches.txt">short document</A>
that has more details. Please follow those instructions.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I support MPlayer development?</DT>
<DD>A: We are more than happy to accept your hardware and software
<A HREF="http://www.mplayerhq.hu/homepage/donations.html">donations</A>.
They help us in continuously improving MPlayer.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I become an MPlayer developer?</DT>
<DD>A: We always welcome coders and documenters. Read the
<A HREF="../tech/">technical documentation</A> to get a first grasp. Then you
should subscribe to the
<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A>
mailing list and start coding.</DD>
<DD>&nbsp;</DD>
<DT>Q: Why don't you use autoconf/automake?</DT>
<DD>A: We have a modular, handwritten build system. It does a reasonably good
job, so why change? Besides, we dislike the auto* tools, just like
<A HREF="http://freshmeat.net/articles/view/889/">other people</A>.</DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="compilation">5.2 Compilation</A></H2>
<DL>
<DT>Q: Are there binary (RPM/deb) packages of MPlayer?</DT>
<DD>A: See the
<A HREF="documentation.html#debian">Debian</A> and
<A HREF="documentation.html#rpm">RPM</A> section for details.</DD>
<DD>&nbsp;</DD>
<DT>Q: Compilation stops with an error message similar to this one:
<PRE>
In file included from mplayer.c:34:
mw.h: In function `mplMainDraw':
mw.h:209: Internal compiler error in print_rtl_and_abort, at flow.c:6458
Please submit a full bug report,
with preprocessed source if appropriate.
</PRE>
</DT>
<DD>A: This is a known problem of gcc 3.0.4, upgrade to 3.1 to solve the
problem. How to install gcc is described in the
<A HREF="users_against_developers.html#gcc">gcc 2.96</A> section.</DD>
<DD>&nbsp;</DD>
<DT>Q: Configure ends with this text, and MPlayer won't compile!<BR>
<CODE>"Your gcc does not support even i386 for '-march' and '-mcpu'."</CODE>
</DT>
<DD>A: Your gcc isn't installed correctly, check the <CODE>config.log</CODE>
file for details.</DD>
<DD>&nbsp;</DD>
<DT>Q: What's the problem with gcc 2.96?</DT>
<DD>A: <B>We strongly discourage the use of gcc 2.96!</B><BR>
Read <A HREF="users_against_developers.html#gcc">this</A> document for
details about why Red Hat released gcc 2.96 and what the problems are all
about. If you still really really want to use it, be sure to get the latest
release and give the <CODE>--disable-gcc-checking</CODE> option to
configure. Remember that you are on your own from this point. Do <B>not</B>
report bugs, do <B>not</B> ask for help on the mailing lists. We will
<B>not</B> provide any support in case you run into problems.</DD>
<DD>&nbsp;</DD>
<DT>Q: Great, I have gcc 3.0.1 from Red Hat/Mandrake, then I'm fine!</DT>
<DD>A: No, since there have been/are issues with these compilers as well.
To check the status of current compilers' MPlayer support, see the
<A HREF="documentation.html#installation">Installation</A> section.</DD>
<DD>&nbsp;</DD>
<DT>Q: I tried to compile MPlayer, but I got this output:
<PRE>
In file included from /usr/include/g++-v3/bits/std_cwchar.h:42,
from /usr/include/g++-v3/bits/fpos.h:40,
from /usr/include/g++-v3/bits/char_traits.h:40,
from /usr/include/g++-v3/bits/std_string.h:41,
from /usr/include/g++-v3/string:31,
from libwin32.h:36,
from DS_AudioDecoder.h:4,
from DS_AudioDec.cpp:5:
/usr/include/wchar.h: In function Long long int wcstoq(const wchar_t*,
wchar_t**, int)':
/usr/include/wchar.h:514: cannot convert `const wchar_t* __restrict' to
`const
</PRE>
</DT>
<DD>A: Upgrade your glibc to the latest release. On Mandrake, use 2.2.4-8mdk.</DD>
<DD>&nbsp;</DD>
<DT>Q: ... gcc 2.96 ... (Yes, some people are STILL flaming about gcc 2.96!)</DT>
<DD>A: Quoted from a
<A HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-October/005351.html">mail</A>
A'rpi sent to the
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>
list (the word 'ideg' is described below):
<BLOCKQUOTE>
<P>And we have idegs. And our idegcounter overflowed again and again.</P>
<P>Unfortunately MPlayer is out of our control. It's used by lamers, Linux
users who can't even use Windows, and never tried to compile a kernel. They
installed (with default options) Mandrake or Red Hat or SuSE, and without
RTFM'ing they send messages saying 'it doesn't work! help me! please! i'm
new to Linux! help! oh! help me!'. We can't stop them, but at least we try
to force them to RTFM and to read the messages of ./configure and MPlayer.</P>
<P>And you clever guys come and flame us with gcc 2.96 and binary packages.
Instead of helping users or making patches to help solve problems.</P>
<P>Half of our spare/free time is spent by answering silly mails here and
making newer tricks and checks to configure to avoid such mails.</P>
<P>And there is a balance. On the one side are you, clever guys, saying we
are very bad because we don't like buggy gcc 2.96, and on the other side
there are the 'new to Linux' guys who are showing us gcc 2.96 is buggy.</P>
<P>Conclusion: We can't be good. Half the people will always say we are bad.</P>
<P>Maybe we should close the project, make it closed source, commercial, and
provide install support for it. then we could leave current work, so
development could go faster, and we could earn lots of money with it and buy
a big house, etc etc. Do you really want it? It seems.</P>
</BLOCKQUOTE>
</DD>
<DD>&nbsp;</DD>
<DT>Q: SDL output doesn't work or compile. The problem is ...</DT>
<DD>A: It was tested to work with SDL 1.2.x and may run on SDL 1.1.7+.
It does <B>not</B> work with any previous version. So if you choose to use
such a version, you are on your own.</DD>
<DD>&nbsp;</DD>
<DT>Q: I am still having trouble compiling with SDL support. gcc says
something about "undefined reference to `SDL_EnableKeyRepeat'". What
now?</DT>
<DD>A: Where did you install the SDL library? If you installed in /usr/local
(the default) then edit the top level config.mak and add
"-L/usr/local/lib" after "X_LIBS=". Now type make. You're done!</DD>
<DD>&nbsp;</DD>
<DT>Q: It doesn't compile, and it misses uint64_t inttypes.h and similar
things ...</DT>
<DD>A: Copy etc/inttypes.h to the MPlayer directory
(<CODE>cp etc/inttypes.h .</CODE>) and try again ...</DD>
<DD>&nbsp;</DD>
<DT>Q: I have Linux running on a Pentium III but <CODE>./configure</CODE>
doesn't detect SSE ...</DT>
<DD>A: Only kernel versions 2.4.x support SSE (or try 2.2.19 or newer, but
be prepared for problems).</DD>
<DD>&nbsp;</DD>
<DT>Q: I have a Matrox G200/G400/G450/G550, how do I compile and use the
mga_vid kernel driver?</DT>
<DD>A: Read the <A HREF="video.html#mga_vid">mga_vid</A> section.</DD>
<DD>&nbsp;</DD>
<DT>Q: Hmm, strange. When loading the mga_vid.o kernel module, I found this in
the logs:<BR>
<CODE>Warning: loading mga_vid.o will taint the kernel: no license</CODE></DT>
<DD>A: The latest kernel modutils require a flag indicating the license
(mainly to avoid kernel hackers debugging closed source drivers).
Upgrade your kernel, modutils and MPlayer.</DD>
<DD>&nbsp;</DD>
<DT>Q: During 'make', MPlayer complains about X11 libraries. I don't
understand, I DO have X installed!?</DT>
<DD>A: ... but you don't have the X development package installed. Or not
correctly. It's called XFree86-devel* under Red Hat, and xlibs-dev under
Debian. Also check if the <CODE>/usr/X11</CODE> and <CODE>/usr/include/X11</CODE>
symlinks exist (this can be a problem on Mandrake systems). They can be
created with these commands:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>$ ln -sf /usr/X11R6 /usr/X11</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>$ ln -sf /usr/X11R6/include/X11 /usr/include/X11</CODE><BR>
Your distribution may differ from the
<A HREF="http://www.pathname.com/fhs/">Filesystem Hierarchy Standard</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: I can't compile SVGAlib. I'm using kernel 2.3/2.4 ...</DT>
<DD>A: You have to edit SVGAlib's Makefile.cfg and comment
<CODE>BACKGROUND = y</CODE> out.</DD>
<DD>&nbsp;</DD>
<DT>Q: I compiled MPlayer with libdvdcss/libdivxdecore support, but when
I try to start it, it says:<BR>
<CODE>&gt; error while loading shared libraries: lib*.so.0: cannot load
shared object file: No such file or directory</CODE><BR>
I checked up on the file and it IS there in <CODE>/usr/local/lib</CODE> ...</DT>
<DD>A: Add <CODE>/usr/local/lib</CODE> to <CODE>/etc/ld.so.conf</CODE> and run
<CODE>ldconfig</CODE>.</DD>
<DD>&nbsp;</DD>
<DT>Q: When compiling MEncoder, it segfaults at linking!</DT>
<DD>A: This is a linker problem. Upgrading binutils should help (2.11.92.*
or newer should be good). Since it is not our fault, please do <B>not</B>
report!</DD>
<DD>&nbsp;</DD>
<DT>Q: MPlayer dies with segmentation fault upon pthread check!</DT>
<DD>A: chmod 644 /usr/lib/libc.so</DD>
<DD>&nbsp;</DD>
<DT>Q: I'd like to compile MPlayer on Minix!</DT>
<DD>A: Me too. :)</DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="general">5.3 General questions</A></H2>
<DL>
<DT>Q: Are there any mailing lists on MPlayer?</DT>
<DD>A: Yes. See the
<A HREF="documentation.html#mailing_lists">mailing lists</A> section.</DD>
<DD>&nbsp;</DD>
<DT>Q: I've found a nasty bug when I tried to play my favorite video!
Who should I inform?</DT>
<DD>A: Please read the <A HREF="bugreports.html">bug reporting guidelines</A>
and follow the instructions.</DD>
<DD>&nbsp;</DD>
<DT>Q: I have problems playing files with the ... codec. Can I use them?</DT>
<DD>A: Check the
<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">codec status</A>,
if it doesn't contain your codec, read the
<A HREF="codecs.html">codec documentation</A>, especially the
<A HREF="codecs.html#importing">codec importing HOWTO</A> and contact us.</DD>
<DD>&nbsp;</DD>
<DT>Q: When I start playing, I get this message but everything seems fine:<BR>
<CODE>Linux RTC init: ioctl (rtc_pie_on): Permission denied</CODE></DT>
<DD>A: You need root privileges or a
specially set up kernel to use the new timing code. For details see the
<A HREF="documentation.html#rtc">RTC section</A> of the documentation.</DD>
<DD>&nbsp;</DD>
<DT>Q: There is a timer in the upper left corner. How can I get rid of it?</DT>
<DD>A: Press <CODE>o</CODE> and try the <CODE>-osdlevel</CODE> option.</DD>
<DD>&nbsp;</DD>
<DT>Q: The <CODE>-xy</CODE> or <CODE>-fs</CODE> option doesn't work with the
x11 driver (<CODE>-vo x11</CODE>) ...</DT>
<DD>A: It does, but you have to explicitly specify software scaling (very
slow) with the <CODE>-zoom</CODE> option. You better use XF86VidMode
support: You must specify the <CODE>-vm</CODE> and the <CODE>-fs</CODE>
option, and you're done. Make sure you have the right modelines in your
XF86Config file, and try to make the <A HREF="video.html#dga">DGA driver</A>
and <A HREF="video.html#sdl">SDL's DGA driver</A> work for you.
It's much faster. If SDL's DGA works, use that, it'll be even faster.</DD>
<DD>&nbsp;</DD>
<DT>Q: What is the meaning of the numbers on the status line?</DT>
<DD>A: Example:
<CODE>A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49%</CODE>
<UL>
<LI>A: audio position in seconds</LI>
<LI>V: video position in seconds</LI>
<LI>A-V: audio-video difference in seconds (delay)</LI>
<LI>ct: total A-V sync correction done</LI>
<LI>frames played (counting from last seek)</LI>
<LI>frames decoded (counting from last seek)</LI>
<LI>video codec cpu usage in percent (for slices and DR this includes
video_out)</LI>
<LI>video_out cpu usage</LI>
<LI>audio codec cpu usage in percent</LI>
<LI>frames needed to drop to maintain A-V sync</LI>
<LI>current level of image postprocessing (when using <CODE>-autoq</CODE>)</LI>
<LI>current cache size used (around 50% is normal)</LI>
</UL>
Most of them are for debug purposes and will be removed at some point.</DD>
<DD>&nbsp;</DD>
<DT>Q: What if I don't want them to appear?</DT>
<DD>A: Use the <CODE>-quiet</CODE> or <CODE>-really-quiet</CODE> option as
described in the man page.</DD>
<DD>&nbsp;</DD>
<DT>Q: Why is video_out cpu usage zero (0%) for some files?</DT>
<DD>A1: It's not zero, but it's called from the codec and thus cannot be
measured separately. You should try to play the file using
<CODE>-vo null</CODE> and then <CODE>-vo ...</CODE> and check the
difference to see the video_out speed.</DD>
<DD>A2: You are using Direct Rendering,
where the codec renders to the video memory itself. In this case, the
decoding percentage contains the display percentage, too.</DD>
<DD>&nbsp;</DD>
<DT>Q: There are error messages about file not found
<CODE>/usr/local/lib/codecs/...</CODE></DT>
<DD>A: Download the Win32 codecs from our
<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">codecs page</A>
(avifile's codec package has a different DLL set) and install it.</DD>
<DD>&nbsp;</DD>
<DT>Q: Can I run multiple instances of MPlayer?</DT>
<DD>A: Yes. Some video out drivers like xv, dga or (x)mga are exclusive, some
are exclusive in combination with certain graphics boards and drivers. You
will not be able to run more than one instance of MPlayer with one of those
video out drivers. To a lesser degree this also applies to audio drivers.
Not all allow playback of multiple streams on the same device.</DD>
<DD>&nbsp;</DD>
<DT>Q: Umm, what is "IdegCounter"?</DT>
<DD>A: A combination of a Hungarian and an English word. "Ideg" in Hungarian
means the same as "nerve" in English, and is pronounced as something like
"ydaegh". It was first used to measure the nervousness of A'rpi, after some
(umm) "mysterious" disappearance of CVS code ;)</DD>
<DD>&nbsp;</DD>
<DT>Q: And what is "Faszom(C)ounter"?</DT>
<DD>A: "Fasz" is a Hungarian word you don't want to know, the others are
connected to the perverted minds of the MPlayer developers.</DD>
<DD>&nbsp;</DD>
<DT>Q: LIRC doesn't work, because ...</DT>
<DD>A: Are you sure you are using <CODE>mplayer</CODE> instead of
<CODE>mplayer_lirc</CODE>? Note that it was <CODE>mplayer_lirc</CODE> for a
long time, including the 0.60 release, but it was recently changed back to
<CODE>mplayer</CODE>.</DD>
<DD>&nbsp;</DD>
<DT>Q: Subtitles are very nice, the most beautiful I've ever seen, but they
slow down playing! I know it's unlikely ...</DT>
<DD>A: After running <CODE>./configure</CODE>, edit <CODE>config.h</CODE> and
replace <CODE>#undef FAST_OSD</CODE> with <CODE>#define FAST_OSD</CODE>.
Then recompile.</DD>
<DD>&nbsp;</DD>
<DT>Q: The onscreen display (OSD) is flickering!</DT>
<DD>A: You use a vo driver with single buffering (x11,xv). With xv,
use the <CODE>-double</CODE> option. Also try <CODE>-vf expand</CODE>.</DD>
<DD>&nbsp;</DD>
<DT>Q: What exactly is this libavcodec thing?</DT>
<DD>A: See the <A HREF="codecs.html#libavcodec">libavcodec section</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: But configure tells me "Checking for libavcodec ... no"!</DT>
<DD>A: You need to get libavcodec from FFmpeg's CVS. Read the instructions in
the <A HREF="codecs.html#libavcodec">libavcodec section</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: Icewm's taskbar keeps covering the movie in fullscreen mode!</DT>
<DD>A: This shouldn't happen anymore, if it still does use the
<CODE>-fstype layer</CODE> option and report it to the
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>
mailing list.</DD>
<DD>&nbsp;</DD>
<DT>Q: I can't access the GUI menu. I press right click, but I can't access
any menu items!</DT>
<DD>A: Are you using FVWM? Try the following:<BR>
Start -&gt; Settings -&gt; Configuration -&gt; Base Configuration<BR>
Set "Use Applications position hints" to "Yes".</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I run MPlayer in the background?</DT>
<DD>A: Use: <CODE>mplayer &lt;options&gt; &lt;filename&gt; &lt; /dev/null &amp;</CODE></DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="playback">5.4 Playback problems</A></H2>
<DL>
<DT>Q: I cannot pinpoint the cause of some strange playback problem.</DT>
<DD>A: Do you have a stray <CODE>codecs.conf</CODE> file in
<CODE>~/.mplayer/</CODE>, <CODE>/etc/</CODE>, <CODE>/usr/local/etc/</CODE>
or a similar location? Remove it, outdated <CODE>codecs.conf</CODE> files
can cause obscure problems. MPlayer will use its builtin one instead.</DD>
<DD>&nbsp;</DD>
<DT>Q: ... works with xine/avifile/... but doesn't with MPlayer.</DT>
<DD>A: MPlayer is not xine/avifile/... Although these players have some code
in common, the codecs (DLL) set, synchronization, demultiplexing etc is
different and should not be compared. If you have a file MPlayer fails to
play correctly but works in another player, please read the
<A HREF="bugreports.html">bug reporting guidelines</A> and upload the file
to our FTP server.</DD>
<DD>&nbsp;</DD>
<DT>Q: Audio goes out of sync playing an AVI file.</DT>
<DD>A: Try the <CODE>-bps</CODE> or <CODE>-nobps</CODE> option. If it does not
improve, read the <A HREF="bugreports.html">bug reporting guidelines</A> and
upload the file to our FTP server.</DD>
<DD>&nbsp;</DD>
<DT>Q: MPlayer exits with some error when using l3codeca.acm.</DT>
<DD>A: Check <CODE>ldd /usr/local/bin/mplayer</CODE> output. If it contains<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>libc.so.6 =&gt; /lib/libc.so.6 (0x4???????)</CODE><BR>
where "?" is any number then it's OK, the error is not here. If it is:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>libc.so.6 =&gt; /lib/libc.so.6 (0x00??????)</CODE><BR>
then there is a problem with your kernel/libc. Maybe you are using some
security patches (for example Solar Designer's OpenWall patch) which
forces loading libraries to very low addresses.
Because l3codeca.acm is a non-relocatable DLL, it must be loaded to
0x00400000, we can't change this. You should use a non-patched kernel,
or use MPlayer's <CODE>-afm 1</CODE> option to disable using
l3codeca.acm.</DD>
<DD>&nbsp;</DD>
<DT>Q: My computer plays M$ DivX AVIs with resolutions ~ 640x300 and stereo
mp3 sound too slow. When I use -nosound option, everything is OK (but
quiet).</DT>
<DD>A: Your machine is too slow or your soundcard driver is broken. Consult
the documentation to see if you can improve performance.</DD>
<DD>&nbsp;</DD>
<DT>Q: MPlayer dies with "MPlayer interrupted by signal 4 in module:
decode_video".</DT>
<DD>A: Try running MPlayer on the machine you compiled on. Or recompile
with runtime CPU detection
(<CODE>./configure --enable-runtime-cpudetection</CODE>). Don't
use MPlayer on a CPU different from the one it was compiled on,
without using the feature mentioned just now.</DD>
<DD>&nbsp;</DD>
<DT>Q: I have problems with [your window manager] and fullscreen
xv/xmga/sdl/x11 modes ...</DT>
<DD>A: Read the <A HREF="bugreports.html">bug reporting guidelines</A> and
send us a proper bug report.</DD>
<DD>&nbsp;</DD>
<DT>Q: When starting MPlayer under KDE I just get a black screen and nothing
happens. After about one minute the video starts playing.</DT>
<DD>A: The KDE arts sound daemon is blocking the sound device. Either wait
until the video starts or disable the arts-daemon in kontrol center. If you
want to use arts sound, specify audio output via our native arts audio
driver (<CODE>-ao arts</CODE>). If it fails or isn't compiled in, try SDL
(<CODE>-ao sdl</CODE>) and make sure your SDL can handle arts sound. Yet
another option is to start MPlayer with artsdsp.</DD>
<DD>&nbsp;</DD>
<DT>Q: When I play this movie I get video-audio desync and/or MPlayer crashes
with the following message:<BR>
<CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></DT>
<DD>A: This can have multiple reasons.
<UL>
<LI>Your CPU <B>and/or</B> video card <B>and/or</B> bus is too slow.
MPlayer displays a message if this is the case (and the dropped
frames counter goes up fast).</LI>
<LI>If it is an AVI, maybe it has bad interleaving. Try the
<CODE>-ni</CODE> option.</LI>
<LI>Your sound driver is buggy, or you use ALSA 0.5 with <CODE>-ao oss</CODE>.
See the <A HREF="sound.html">sound card section</A>.</LI>
<LI>The AVI has a bad header, try the <CODE>-nobps</CODE> option, and/or
<CODE>-mc 0</CODE>.</LI>
</UL></DD>
<DD>&nbsp;</DD>
<DT>Q: I have an MJPEG file which works with other players but displays only a
black image in MPlayer.</DT>
<DD>A: Use another codec to play the file, try <CODE>-vc ffmjpeg</CODE>.</DD>
<DD>&nbsp;</DD>
<DT>Q: When I try to grab from my tuner, it works, but colors are strange.
It's OK with other applications.</DT>
<DD>A: Your card probably misreports its colorspace capacity. Try with YUY2
instead of default YV12 (see the <A HREF="documentation.html#tv">TV</A>
section).</DD>
<DD>&nbsp;</DD>
<DT>Q: I have A/V sync problems. Some of my AVIs play fine, but some play with
double speed!</DT>
<DD>A: You have a buggy sound card/driver. Most likely it's fixed at 44100Hz,
and you try to play a file which has 22050Hz audio. Try the resample audio
plugin.</DD>
<DD>&nbsp;</DD>
<DT>Q: I get very strange percentage values (way too big) while playing files
on my notebook.</DT>
<DD>A: It's an effect of the power management / power saving system of your
notebook (BIOS, not kernel). Plug the external power connector in
<B>before</B> you power on your notebook. You can also try whether
<A HREF="http://www.brodo.de/cpufreq/">cpufreq</A> (a SpeedStep interface
for Linux) helps you.</DD>
<DD>&nbsp;</DD>
<DT>Q: The audio/video gets totally out of sync when I run MPlayer as root on
my notebook. It works normal when i run it as a user.</DT>
<DD>A: This is again a power management effect (see above). Plug the external
power connector in <B>before</B> you power on your notebook or use the
<CODE>-nortc</CODE> option.</DD>
<DD>&nbsp;</DD>
<DT>Q: While playing a movie it suddenly gets jerky and I get
the following message:<BR>
<CODE>Badly interleaved AVI file detected - switching to -ni
mode...</CODE>
<DD>A: Badly interleaved files and <CODE>-cache</CODE> don't work well
together. Try <CODE>-nocache</CODE>.</DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="driver">5.5 Video/audio driver problems (vo/ao)</A></H2>
<DL>
<DT>Q: I have no sound when playing a video and get error messages similar to
this one:
<PRE>
AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Can't open audio device /dev/dsp: Device or resource busy
couldn't open/init audio device -&gt; NOSOUND
Audio: no sound!!!
Start playing...
</PRE>
</DT>
<DD>A: Are you running KDE or GNOME with the ARTS or ESD sound daemon? Try
disabling the sound daemon or use the <CODE>-ao arts</CODE> or
<CODE>-ao esd</CODE> option to make MPlayer use ARTS or ESD.</DD>
<DD>&nbsp;</DD>
<DT>Q: What about the DGA driver? I can't find it!</DT>
<DD>A: <CODE>./configure</CODE> autodetects your DGA driver. If
<CODE>-vo help</CODE> doesn't show DGA, then there's a problem with your X
installation. Try <CODE>./configure --enable-dga</CODE> and read the
<A HREF="video.html#dga">DGA</A> section. Alternatively, try SDL's DGA
driver with the <CODE>-vo sdl:dga</CODE> option.</DD>
<DD>&nbsp;</DD>
<DT>Q: OK, <CODE>-vo help</CODE> shows DGA driver, but it complains about
permissions. Help me!</DT>
<DD>A: It works only if running as root! It's a DGA limitation.
You should become root (<CODE>su -</CODE>), and try again.
Another solution is making MPlayer SUID root, but it's
<B>not recommended!</B><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>chown root /usr/local/bin/mplayer</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>chmod 755 /usr/local/bin/mplayer</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>chmod +s /usr/local/bin/mplayer</CODE><BR>
<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 you do not control completely because other users can
gain root privileges through SUID root MPlayer. <B>You have been
warned.</B>
</BLOCKQUOTE>
</DD>
<DD>&nbsp;</DD>
<DT>Q: When using Xvideo, my Voodoo 3/Banshee says:<BR>
<CODE>X Error of failed request: BadAccess (attempt to access private
resource denied)<BR>
&nbsp;&nbsp;Major opcode of failed request: 147 (MIT-SHM)<BR>
&nbsp;&nbsp;Minor opcode of failed request: 1 (X_ShmAttach)<BR>
&nbsp;&nbsp;Serial number of failed request: 26<BR>
&nbsp;&nbsp;Current serial number in output stream:27</CODE></DT>
<DD>A: The "tdfx" driver in XFree86 4.0.2/4.0.3 had this bug. This was solved
by <A HREF="http://www.xfree86.org/cvs/changes_4_1.html">bugfix #621 of the
XFree86 4.1.0 CVS log</A>. So upgrade to XFree86 4.1.0 or later.
Alternatively, either download (at least) DRI version 0.6 from the
<A HREF="http://dri.sourceforge.net">DRI homepage</A>, or use CVS DRI.</DD>
<DD>&nbsp;</DD>
<DT>Q: OpenGL (<CODE>-vo gl</CODE>) output doesn't work (hang/black window/X11
errors/...).</DT>
<DD>A: Your OpenGL driver doesn't support dynamic texture changes
(glTexSubImage). It's known not to work with nVidia's binary mess.
It's known to work with Utah-GLX/DRI and Matrox G400 cards. Also with
DRI and Radeon cards. It won't work with DRI and other cards.
it will not work with 3DFX cards because of the 256x256 texture size limit.</DD>
<DD>&nbsp;</DD>
<DT>Q: I have an nVidia TNT/TNT2 card, and I have a band with strange colors,
right under the movie! Whose fault is this?</DT>
<DD>A: This is a bug of nVidia's binary X driver. These bugs appear ONLY with
the TNT/TNT2 cards, and we can't do anything about it. To fix the problem,
upgrade to the latest nVidia binary driver version. If still bad, complain
to nVidia!</DD>
<DD>&nbsp;</DD>
<DT>Q: I have an nVidia XYZ card, and when I click on the GUI's display window
to toggle displaying the GUI panel, a black square appears where I clicked.
I have the newest driver.</DT>
<DD>A: Yes, nVidia corrected a previous bug (above), and introduced a new one.
Let's congratulate them. UPDATE: According to
<A HREF="users_against_developers.html#nvidia">nVidia</A>, this has already
been fixed.</DD>
<DD>&nbsp;</DD>
<DT>Q: Oh the world is cruel ...! SDL has only <CODE>x11</CODE> target, but
not <CODE>xv</CODE>!</DT>
<DD>A: Try that <CODE>x11</CODE> target again. Now try
<CODE>-vo x11 -fs -zoom</CODE>. See the difference? No?! OK, here comes the
enlightenment: SDL's <CODE>x11</CODE> target uses xv when available, you
don't have to worry about it ... Note: you can force/disable Xv via SDL
using <CODE>-forcexv</CODE> and <CODE>-noxv</CODE></DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="dvd">5.6 DVD playback</A></H2>
<DL>
<DT>Q: What about DVD navigation?</DT>
<DD>A: Support for dvdnav in MPlayer is currently broken, normal playback
does work, though. If you want to have fancy menus, you will have to use
another player like <A HREF="http://xine.sourceforge.net">xine</A> or
<A HREF="http://www.dtek.chalmers.se/groups/dvd/">Ogle</A>. If you care
about DVD navigation, send a <A HREF="../tech/patches.txt">patch</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: While playing a DVD, I encountered this error:<BR>
<CODE>mplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion
nfo_length / sizeof(cell_adr_t) &gt;= c_adt-&gt;nr_of_vobs' failed.</CODE></DT>
<DD>A: This is a known libdvdread 0.9.1/0.9.2 bug. Use <B>libmpdvdkit2</B>,
which is present in MPlayer source, and used by default.</DD>
<DD>&nbsp;</DD>
<DT>Q: Can I compile libdvdread and libdvdcss on my sweet SPARC under
Solaris?</DT>
<DD>A: Who knows ... It's said to work, so please test it and send feedback.
Refer to the documentation of libdvdread and its homepage as well. We're not
the authors of libdvdread. Use <B>libmpdvdkit2</B>, which is present in
MPlayer source, and used by default.</DD>
<DD>&nbsp;</DD>
<DT>Q: What about subtitles? Can MPlayer display them?</DT>
<DD>A: Yes. See the <A HREF="cd-dvd.html#dvd">DVD chapter</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I set the region code of my DVD-drive? I don't have
Windows!</DT>
<DD>A: Use the
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset tool</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: Do I need to be (setuid) root/setuid fibmap_mplayer to be able to play
a DVD?</DT>
<DD>A: No, only for old-style DVD support. However you must have
the proper rights on the DVD device entry (in <CODE>/dev/</CODE>).</DD>
<DD>&nbsp;</DD>
<DT>Q: Where can I get libdvdread and libdvdcss packages?</DT>
<DD>A: You don't need to. Use <B>libmpdvdkit2</B>, which is present in the
MPlayer source, and used by default. You can get the mentioned packages
from the
<A HREF="http://www.dtek.chalmers.se/groups/dvd/">Ogle site</A>.</DD>
<DD>&nbsp;</DD>
<DT>Q: Is it possible to play/encode only selected chapters?</DT>
<DD>A: Yes, try the <CODE>-chapter</CODE> option.</DD>
<DD>&nbsp;</DD>
<DT>Q: My DVD playback is sluggish!</DT>
<DD>A: Use the <CODE>-cache</CODE> option (described in the man page)
and try enabling DMA for the DVD drive with the hdparm tool (described in
the <A HREF="cd-dvd.html#cd">CD chapter</A>).</DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="features">5.7 Feature requests</A></H2>
<DL>
<DT>Q: If MPlayer is paused and I try to seek or press any key at all,
MPlayer ceases to be paused. I would like to be able to seek in the
paused movie.</DT>
<DD>A: This is very tricky to implement without losing A/V synchronization.
All attempts have failed so far, but patches are welcome.</DD>
<DD>&nbsp;</DD>
<DT>Q: I'd like to seek +/- 1 frames instead of 10 seconds.</DT>
<DD>A: This won't be done. It was, but then it messed up A/V sync. Feel free
to implement it, and send a patch. Don't ask for it.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I make MPlayer remember the options I use for this
particular file?</DT>
<DD>A: Create a file named <CODE>movie.avi.conf</CODE> with the
file-specific options in it and put it in <CODE>~/.mplayer</CODE> or in
the same directory as the file.</DD>
<DD>&nbsp;</DD>
</DL>
<H2><A NAME="encoding">5.8 Encoding</A></H2>
<DL>
<DT>Q: How can I encode?</DT>
<DD>A: Read the <A HREF="encoding.html">MEncoder</A> section.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I create VCDs?</DT>
<DD>A: Try the <CODE>mencvcd</CODE> script from the <CODE>TOOLS</CODE>
subdirectory. With it you can encode DVDs or other movies to VCD or SVCD
format and even burn them directly to CD.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I join two video files?</DT>
<DD>A: This has been discussed to no end on mplayer-users. Go search the
<A HREF="http://mplayerhq.hu/cgi-bin/htsearch?restrict=/mplayer-users/">archives</A>
for a complete answer. This is a complicated topic and your mileage may
vary a lot depending on the kind of files you want to merge. MPEGs can be
concatenated into a single file with luck. For AVIs there are two tools,
<A HREF="http://fixounet.free.fr/avidemux/">avidemux</A>
and avimerge (part of the
<A HREF="http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/">transcode</A>
tool set), available that might do the job. You can also try MEncoder if
you have two files sharing the same dimensions and codec. Try<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>cat file1 file2 &gt; file3</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>mencoder -ovc copy -oac copy -o out.avi -forceidx file3.avi</CODE></DD>
<DD>&nbsp;</DD>
<DT>Q: My tuner works, I can hear the sound and watch the video with MPlayer,
but MEncoder doesn't encode audio!</DT>
<DD>A: TV audio encoding for Linux is currently unimplemented, we're working
on it. At the moment it works only on BSD.</DD>
<DD>&nbsp;</DD>
<DT>Q: I can't encode DVD subtitles into the AVI!</DT>
<DD>A: You have to specify the <CODE>-sid</CODE> option correctly!</DD>
<DD>&nbsp;</DD>
<DT>Q: MEncoder segfaults on startup!</DT>
<DD>A: Upgrade DivX4Linux.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I encode only selected chapters from a DVD?</DT>
<DD>A: Use the <CODE>-chapter</CODE> option correctly, like:
<CODE>-chapter 5-7</CODE></DD>
<DD>&nbsp;</DD>
<DT>Q: I'm trying to work with 2GB+ files on a VFAT file system. Does it work?</DT>
<DD>A: No, VFAT doesn't support 2GB+ files.</DD>
<DD>&nbsp;</DD>
<DT>Q: Why is the recommended bitrate printed by MEncoder negative?</DT>
<DD>A: Because the bitrate you encoded the audio with is too large to fit the
movie on any CD. Check if you have libmp3lame installed properly.</DD>
<DD>&nbsp;</DD>
<DT>Q: I can't encode ASF files to AVI/DivX because it uses 1000 fps?</DT>
<DD>A: Because ASF uses variable frame rate but AVI uses a fixed one, you
have to set it by hand using <CODE>-ofps</CODE>.</DD>
<DD>&nbsp;</DD>
<DT>Q: How can I put subtitles in the output file?</DT>
<DD>A: Just pass the <CODE>-sub &lt;filename&gt; option</CODE> (or
<CODE>-sid</CODE>, <CODE>-vobsub</CODE>, respectively) to MEncoder.</DD>
<DD>&nbsp;</DD>
</DL>
</BODY>
</HTML>

View File

@ -1,320 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Formats - 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>
<H2><A NAME="formats">2.1 Supported formats</A></H2>
<P>It is important to clarify a common mistake. When people see a file with a
<B>.AVI</B> extension, they immediately conclude that it is not an MPEG file.
That is not true. At least not entirely. Contrary to popular belief such a
file <B>can</B> contain MPEG1 video.</P>
<P>You see, a <B>codec</B> is not the same as a <B>file format</B>.<BR>
Examples of video <B>codecs</B> are: MPEG1, MPEG2, DivX, Indeo5, 3ivx.<BR>
Examples of file <B>formats</B> are: MPG, AVI, ASF.</P>
<P>In theory, you can put an OpenDivX video and MP3 audio into an <B>MPG</B>
format file. However, most players will not play it, since they expect MPEG1
video and MP2 audio (unlike <B>AVI</B>, <B>MPG</B> does not have the
necessary fields to describe its video and audio streams). Or you might put
MPEG1 video into an AVI file.
<A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A> and
<A HREF="encoding.html">MEncoder</A> can create these files.</P>
<H3><A NAME="video_formats">2.1.1 Video formats</A></H3>
<H4><A NAME="mpeg">2.1.1.1 MPEG files</A></H4>
<P>MPEG files come in different guises:</P>
<UL>
<LI>MPG: This is the most <B>basic</B> form of the MPEG file formats. It
contains MPEG1 video, and MP2 (MPEG-1 layer 2) or rarely MP1 audio.</LI>
<LI>DAT: This is the very same format as MPG with a different extension. It
is used on <B>Video CD</B>s. Due to the way VCDs are created and Linux is
designed, DAT files cannot be played nor copied from VCDs as regular files.
You have to use <CODE>vcd://</CODE> to play a Video CD.</LI>
<LI>VOB: This is the MPEG file format on <B>DVD</B>s. It is the same as MPG,
plus the capability to contain subtitles or non-MPEG (AC3) audio. It
contains encoded MPEG2 video and usually AC3 audio, but DTS, MP2 and
uncompressed LPCM are allowed, too.<BR> <B>Read the <A
HREF="cd-dvd.html#dvd">DVD section</A>!</B></LI>
</UL>
<P>Series of frames form independent groups in MPEG files. This means that you
can cut/join an MPEG file with standard file tools (like <CODE>dd</CODE>,
<CODE>cut</CODE>), and it remains completely functional.</P>
<P>One important feature of MPGs is that they have a field to describe the
aspect ratio of the video stream within. For example SVCDs have 480x480
resolution video, and in the header that field is set to 4:3, so that it is
played at 640x480. AVI files do not have this field, so they have to be
rescaled during encoding or played with the <CODE>-aspect</CODE> option.</P>
<H4><A NAME="avi">2.1.1.2 AVI files</A></H4>
<P>Designed by Microsoft, <B>AVI (Audio Video Interleaved)</B> is a widespread
multipurpose format currently used mostly for DivX and DivX4 video. It has
many known drawbacks and shortcomings (for example in streaming). It
supports one video stream and 0 to 99 audio streams. File size is limited to
2GB, but there exists an extension allowing bigger files called
<B>OpenDML</B>. Microsoft currently strongly discourages its use and
encourages ASF/WMV. Not that anybody cares.</P>
<P>There is a hack that allows AVI files to contain an Ogg Vorbis audio
stream, but makes them incompatible with standard AVI. MPlayer
supports playing these files. Seeking is also implemented but severely
hampered by badly encoded files with confusing headers. Unfortunately the
only encoder currently capable of creating these files, NanDub, has this
problem.</P>
<P><B>Note:</B> DV cameras create raw DV streams that DV grabbing utilities
convert to two different types of AVI files. The AVI will then contain either
separate audio and video streams that MPlayer can play or the raw DV
stream for which support is under development.</P>
<P>There are two kinds of AVI files:</P>
<UL>
<LI><B>Interleaved:</B> Audio and video content is interleaved. This is the
standard usage. Recommended and mostly used. Some tools create
interleaved AVIs with bad sync. MPlayer detects these as
interleaved, and this climaxes in loss of A/V sync, probably at seeking.
These files should be played as non-interleaved (with the <CODE>-ni</CODE>
option).</LI>
<LI><B>Non-interleaved:</B> First comes the whole video stream, then the whole
audio stream. It thus needs a lot of seeking, making playing from network or
CD-Rom difficult.</LI>
</UL>
<P>MPlayer supports two kinds of timings for AVI files:</P>
<UL>
<LI><B>bps-based</B>: It is based on the bitrate/samplerate of the video/audio stream. This
method is used by most players, including <A HREF="http://avifile.sourceforge.net">avifile</A>
and Windows Media Player.
Files with broken headers, and files created with VBR audio but not with a
VBR-compliant encoder will result in A/V desync with this method (mostly at
seeking).</LI>
<LI><B>interleaving-based</B>: It does not use the bitrate value of the header, instead
it uses the relative position of interleaved audio and video chunks, making
badly encoded files with VBR audio playable.</LI>
</UL>
<P>Any audio and video codec is allowed, but note that VBR audio is not well
supported by most players. The file format makes it possible to use VBR
audio, but most players expect CBR audio, thus they fail with VBR. VBR is
uncommon and the Microsoft AVI specs only describe CBR audio. Most AVI
encoders/multiplexers create bad files when using VBR audio. There are only
two known exceptions: NanDub and <A HREF="encoding.html">MEncoder</A>.</P>
<H4><A NAME="asf">2.1.1.3 ASF/WMV files</A></H4>
<P>ASF (active streaming format) comes from Microsoft. They developed two
variants of ASF, v1.0 and v2.0. v1.0 is used by their media tools (Windows
Media Player and Windows Media Encoder) and is very secret. v2.0 is published
and patented :). Of course they differ, there is no compatibility at all (it
is just another legal game). MPlayer supports only v1.0, as nobody has
ever seen v2.0 files :). Note that ASF files nowadays come with the extension
.WMA or .WMV.</P>
<H4><A NAME="mov">2.1.1.4 QuickTime/MOV files</A></H4>
<P>These formats were designed by Apple and can contain any codec, CBR or VBR.
They usually have a .QT or .MOV extension. Ever since the MPEG4 group chose
QuickTime as the recommended file format for MPEG4, their MOV files come with
an
.MPG or .MP4 extension (Interestingly the video and audio streams in these
files are real MPG and AAC files. You can even extract them with the
<CODE>-dumpvideo</CODE> and <CODE>-dumpaudio</CODE> options.).</P>
<P><B>Note:</B> Most new QuickTime files use <B>Sorenson</B> video and QDesign
Music audio. See our <A HREF="codecs.html#sorenson">Sorenson</A> codec
section.</P>
<H4><A NAME="vivo">2.1.1.5 VIVO files</A></H4>
<P>MPlayer happily demuxes VIVO file formats. The biggest disadvantage
of the format is that it has no index block, nor a fixed packet size or sync
bytes and most files lack even keyframes, so forget seeking!</P>
<P>The video codec of VIVO/1.0 files is standard <B>h.263</B>. The video codec
of VIVO/2.0 files is a modified, nonstandard <B>h.263v2</B>. The audio is the
same, it may be <B>g.723</B> (standard), or <B>Vivo Siren</B>.</P>
<P>See the <A HREF="codecs.html#vivo_video">VIVO video codec</A> and
<A HREF="codecs.html#vivo_audio">VIVO audio codec</A> sections for installation
instructions.</P>
<H4><A NAME="fli">2.1.1.6 FLI files</A></H4>
<P><B>FLI</B> is a very old file format used by Autodesk Animator, but it is a
common file format for short animations on the net. MPlayer demuxes
and decodes FLI movies and is even able to seek within them (useful when
looping with the <CODE>-loop</CODE> option). FLI files do not have keyframes,
so the picture will be messy for a short time after seeking.</P>
<H4><A NAME="real">2.1.1.7 RealMedia (RM) files</A></H4>
<P>Yes, MPlayer can read (demux) RealMedia (.rm) files. Seeking works,
but you have to explicitly specify the <CODE>-forceidx</CODE> option
(the format supports keyframes). Here are the lists of the supported
<A HREF="codecs.html#realvideo">RealVideo</A>
and <A HREF="codecs.html#realaudio">RealAudio</A> codecs.</P>
<H4><A NAME="nuppelvideo">2.1.1.8 NuppelVideo files</A></H4>
<P><A HREF="http://mars.tuwien.ac.at/~roman/nuppelvideo">NuppelVideo</A>
is a TV grabber tool (AFAIK:). MPlayer can read its .NUV files (only
NuppelVideo 5.0). Those files can contain uncompressed YV12, YV12+RTJpeg
compressed, YV12 RTJpeg+lzo compressed, and YV12+lzo compressed frames.
MPlayer decodes them all (and also <B>encodes</B> them with
MEncoder to DivX/etc!). Seeking works.</P>
<H4><A NAME="yuv4mpeg">2.1.1.9 yuv4mpeg files</A></H4>
<P><A HREF="http://mjpeg.sourceforge.net">yuv4mpeg / yuv4mpeg2</A> is a file
format used by the <A HREF="http://mjpeg.sf.net">mjpegtools programs</A>.
You can grab, produce, filter or encode video in this format using these
tools. The file format is really a sequence of uncompressed YUV 4:2:0
images.</P>
<H4><A NAME="film">2.1.1.10 FILM files</A></H4>
<P>This format is used on old Sega Saturn CD-Rom games.</P>
<H4><A NAME="roq">2.1.1.11 RoQ files</A></H4>
<P>RoQ files are multimedia files used in some ID games such as Quake III and
Return to Castle Wolfenstein.</P>
<H4><A NAME="ogg">2.1.1.12 OGG/OGM files</A></H4>
<P>This is a new file format from <A HREF="http://www.xiph.org">Xiphophorus</A>.
It can contain any video or audio codec, CBR or VBR. You will need to
have <CODE>libogg</CODE> and <CODE>libvorbis</CODE> installed
before compiling MPlayer to be able to play it.</P>
<H4><A NAME="sdp">2.1.1.13 SDP files</A></H4>
<P><A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc2327.txt">SDP</A>
is an IETF standard format for describing video and/or audio RTP streams.
(The "<A HREF="http://www.live.com/mplayer/">LIVE.COM Streaming Media</A>"
libraries are required.)</P>
<H4><A NAME="pva">2.1.1.14 PVA files</A></H4>
<P>PVA is an MPEG-like format used by DVB TV boards' software (e.g.: MultiDec,
WinTV) under Windows.</P>
<P>The PVA specifications can be downloaded from the following address:
<A HREF="http://www.technotrend.de/download/av_format_v1.pdf">http://www.technotrend.de/download/av_format_v1.pdf</A></P>
<H4><A NAME="gif">2.1.1.15 GIF files</A></H4>
<P>The <B>GIF</B> format is a common format for web graphics. There are two
versions of the GIF spec, GIF87a and GIF89a. The main difference is that
GIF89a allows for animation. MPlayer supports both formats through use
of libungif or another libgif-compatible library. Non-animated GIFs will
be displayed as single frame videos. (Use the <CODE>-loop</CODE> and
<CODE>-fixed-vo</CODE> options to display these longer.)</P>
<P>MPlayer currently does not support seeking in GIF files. GIF files do
not necessarily have a fixed frame size, nor a fixed framerate. Rather,
each frame is of independent size and is supposed to be positioned in a
certain place on a field of fixed-size. The framerate is controlled by
an optional block before each frame that specifies the next frame's delay
in centiseconds.</P>
<P>Standard GIF files contain 24-bit RGB frames with at most an 8-bit
indexed pallete. These frames are usually LZW-compressed, although
some GIF encoders produce uncompressed frames to avoid patent issues
with LZW compression.</P>
<P>If your distribution does not come with libungif, download a copy from the
<A HREF="http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml">libungif homepage</A>.
For detailed technical information, have a look at the
<A HREF="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">GIF89a specification</A>.</P>
<H3><A NAME="audio_formats">2.1.2 Audio formats</A></H3>
<P>MPlayer is a <B>Movie</B> and not a <B>Media</B> player, although
it can play some audio file formats (they are listed in the sections below).
This is not a recommended usage of MPlayer, you better use
<A HREF="http://www.xmms.org">xmms</A>.</P>
<H4><A NAME="mp3">2.1.2.1 MP3 files</A></H4>
<P>You may have problems playing certain MP3 files that MPlayer will
misdetect as MPEGs and play incorrectly or not at all. This cannot be fixed
without dropping support for certain broken MPEG files and thus will remain
like this for the foreseeable future. The <CODE>-demuxer</CODE> flag
described in the man page may help you in these cases.</P>
<H4><A NAME="wav">2.1.2.2 WAV files</A></H4>
<H4><A NAME="ogg_vorbis">2.1.2.3 OGG/OGM files (Vorbis)</A></H4>
<P>Requires properly installed <CODE>libogg</CODE> and
<CODE>libvorbis</CODE>.</P>
<H4><A NAME="wma">2.1.2.4 WMA/ASF files</A></H4>
<H4><A NAME="mp4">2.1.2.5 MP4 files</A></H4>
<H4><A NAME="cdda">2.1.2.6 CD audio</A></H4>
<P>MPlayer can use <B>cdparanoia</B> (lib) to play CDDA (Audio CD).
The scope of this section does not contain enumerating cdparanoia's
features.</P>
<P>See the man page's <CODE>-cdda</CODE> option which can be used to
pass options to cdparanoia.</P>
<H4><A NAME="xmms">2.1.2.7 XMMS</A></H4>
<P>MPlayer can use XMMS input plugins to play many file formats. There are
plugins for SNES game tunes, SID tunes (from Commodore 64), many Amiga
formats, .xm, .it, VQF, musepack, Bonk, shorten and many others. You can find
them at the
<A HREF="http://www.xmms.org/plugins_input.html">XMMS input plugin page</A>.</P>
<P>For this feature you need to have XMMS and compile MPlayer with
<CODE>./configure --enable-xmms</CODE>. If that does not work, you might need
to set the XMMS plugin and library path explicitly by way of the
<CODE>--with-xmmsplugindir</CODE> and <CODE>--with-xmmslibdir</CODE>
options.</P>
</BODY>
</HTML>

View File

@ -1,802 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Creating Skins - MPlayer - The Movie Player for Linux</title>
<link rel="stylesheet" type="text/css" href="../default.css">
<style type="text/css">
em.note {color: green;
font-style: normal;}
em.warn {color: red;
font-style: normal;}
</style>
</head>
<body>
<h1>Appendix D - MPlayer skin format</h1>
<p>The purpose of this document is to describe the MPlayer skin format.
The information contained here might be wrong, for</p>
<ol type="a">
<li>It is not me who wrote the GUI.</li>
<li>The GUI is not finished.</li>
<li>I might be wrong.</li>
</ol>
<p>So do not be surprised if something does not work as described here.</p>
<p>Thanks to <em>Zoltán Ponekker</em> for his help.</p>
<p><em>András Mohari &lt;mayday@freemail.hu&gt;</em></p>
<h2><a name="overview">D.1 Overview</a></h2>
<p>It does not really have anything to do with the skin format, but you should
know that MPlayer has <b>no</b> builtin skin, so <b>at least one skin
must be installed in order to be able to use the GUI.</b></p>
<h3><a name="directories">D.1.1 Directories</a></h3>
<p>The directories searched for skins are (in order):</p>
<pre>
$(DATADIR)/Skin/
$(PREFIX)/share/mplayer/Skin/
~/.mplayer/Skin/
</pre>
<p>Note that the first path may vary according to the way MPlayer was configured
(see the <code>--prefix</code> and <code>--datadir</code> arguments of the
<code>configure</code> script).</p>
<p>Every skin is installed into its own directory under one of the directories
listed above, for example:</p>
<pre>
$(PREFIX)/share/mplayer/Skin/default/
</pre>
<h3><a name="images">D.1.2 Image formats</a></h3>
<p>Images must be truecolor (24 or 32 bpp) PNGs.</p>
<p>In the main window and in the playbar (see below) you can use images with
`transparency': Regions filled with the color #FF00FF
(<font color="#FF00FF">magenta</font>) are fully transparent when viewed by
MPlayer. This means that you can even have shaped windows if your X server
has the XShape extension.</p>
<h3><a name="components">D.1.3 Skin components</a></h3>
<p>Skins are quite free-format (unlike the fixed-format skins of Winamp/XMMS,
for example), so it is up to you to create something great.</p>
<p>Currently there are three windows to be decorated: the
<a href="#mainwin">main window</a>, the <a href="#subwindow">subwindow</a>,
the <a href="#mainwin">playbar</a>, and the <a href="#skinmenu">skin menu</a>
(which can be activated by a right click).</p>
<ul>
<li><p>The <b>main window</b> and/or the <b>playbar</b> is where you can
control MPlayer. The background of the window is an image. Various items
can (and must) be placed in the window: <em>buttons</em>, <em>potmeters</em>
(sliders) and <em>labels</em>. For every item, you must specify its position
and size.</p>
<p>A <b>button</b> has three states (pressed, released, disabled), thus its
image must be divided into three parts vertically. See the
<a href="#main.button">button</a> item for details.</p>
<p>A <b>potmeter</b> (mainly used for the seek bar and volume/balance
control) can have any number of phases by dividing its image into
different parts below each other. See
<a href="#main.hpotmeter">hpotmeter</a> and
<a href="#main.potmeter">potmeter</a> for details.</p>
<p><b>Labels</b> are a bit special: The characters needed to draw them are
taken from an image file, and the characters in the image are described by
a <a href="#fonts">font description file</a>. The latter is a plain text
file which specifies the x,y position and size of each character in the
image (the image file and its font description file form a font
<em>together</em>). See <a href="#main.dlabel">dlabel</a> and
<a href="#main.slabel">slabel</a> for details.</p>
<p><em class="note"><b>Note:</b> all images can have full transparency as
described in the section about <a href="#images">image formats</a>. If the X
server doesn't support the XShape extension, the parts marked transparent
will be black. If you'd like to use this feature, the width of the main
window's background image must be dividable by 8.</em></p>
</li>
<li>The <b>subwindow</b> is where the movie appears. It can display a
specified image if there is no movie loaded (it is quite boring to have an
empty window :-)) <em class=note><b>Note:</b> transparency is
<b>not allowed</b> here.</em></li>
<li><p>The <b>skin menu</b> is just a way to control MPlayer by means of menu
entries. Two images are required for the menu: one of them is the base image
that shows the menu in its normal state, the other one is used to display
the selected entries. When you pop up the menu, the first image is shown. If
you move the mouse over the menu entries, the currently selected entry is
copied from the second image over the menu entry below the mouse pointer
(the second image is never shown as a whole).</p>
<p>A menu entry is defined by its position and size in the image (see the
section about the <a href="#skinmenu">skin menu</a> for details).</p>
</li>
</ul>
<p>There is an important thing not mentioned yet: For buttons, potmeters and
menu entries to work, MPlayer must know what to do if they are clicked. This
is done by <a href="#guimsg">messages</a> (events). For these items you must
define the messages to be generated when they are clicked.</p>
<h3><a name="files">D.1.4 Files</a></h3>
<p>You need the following files to build a skin:</p>
<ul>
<li>The configuration file named <a href="#skin">skin</a> tells MPlayer how
to put different parts of the skin together and what to do if you click
somewhere in the window.</li>
<li>The background image for the main window.</li>
<li>Images for the items in the main window (including one or more font
description files needed to draw labels).</li>
<li>The image to be displayed in the subwindow (optional).</li>
<li>Two images for the skin menu (they are needed only if you want to create
a menu).</li>
</ul>
<p>With the exception of the skin configuration file, you can name the other
files whatever you want (but note that font description files must have
a <code>.fnt</code> extension).</p>
<h2><a name="skinfile">D.2 The skin file</a></h2>
<p>As mentioned above, this is the skin configuration file. It is line oriented;
comment lines start with a '<code>;</code>' character at the beginning of the
line (only spaces and tabs are allowed before the '<code>;</code>').</p>
<p>The file is made up of sections. Each section describes the skin for an
application and has the following form:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
section = <i>section name</i>
.
.
.
end
</pre>
</td>
</tr>
</table>
<p>Currently there is only one application, so you need only one section: its
name is <b>movieplayer</b>.</p>
<p>Within this section each window is described by a block of the following
form:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
window = <i>window name</i>
.
.
.
end
</pre>
</td>
</tr>
</table>
<p>where <i>window name</i> can be one of these strings:</p>
<ul>
<li><b>main</b> - for the main window</li>
<li><b>sub</b> - for the subwindow</li>
<li><b>menu</b> - for the skin menu</li>
<li><b>playbar</b> - playbar</li>
</ul>
<p>(The sub and menu blocks are optional - you do not need to create a menu or
decorate the subwindow.)</p>
<p>Within a window block, you can define each item for the window by a line in
this form:</p>
<dl>
<dt><b><code>item = parameter</code></b></dt>
<dd>Where <code>item</code> is a string that identifies the type of the GUI
item, <code>parameter</code> is a numeric or textual value (or a list of
values separated by commas).</dd>
</dl>
<p>Putting the above together, the whole file looks something like this:</p>
<table border="1" width="100%">
<tr bgcolor="silver">
<td>
<pre>
section = movieplayer
window = main
; ... items for main window ...
end
window = sub
; ... items for subwindow ...
end
window = menu
; ... items for menu ...
end
window = playbar
; ... items for playbar ...
end
end
</pre>
</td>
</tr>
</table>
<p>The name of an image file must be given without leading directories - images
are searched for in the <code>Skin</code> directory. You may (but you need
not) specify the extension of the file. If the file does not exist, MPlayer
tries to load the file <code>&lt;filename&gt;.&lt;ext&gt;</code>, where
<code>png</code> and <code>PNG</code> are tried for <code>&lt;ext&gt;</code>
(in this order). The first matching file will be used.</p>
<p>Finally some words about positioning. The main window and the subwindow can
be placed in the different corners of the screen by giving <code>X</code> and
<code>Y</code> coordinates. <code>0</code> is top or left, <code>-1</code> is
center and <code>-2</code> is right or bottom, as shown in this
illustration:</p>
<pre>
(0, 0)----(-1, 0)----(-2, 0)
| | |
| | |
(0,-1)----(-1,-1)----(-2,-1)
| | |
| | |
(0,-2)----(-1,-2)----(-2,-2)
</pre>
<table border="1" cellpadding="5" width="100%">
<tr bgcolor="#ffffcc">
<td>Here is an example to make this clear. Suppose that you have an image
called <code>main.png</code> that you use for the main window:
<blockquote>
<code>base = main, -1, -1</code>
</blockquote>
MPlayer tries to load <code>main</code>, <code>main.png</code>,
<code>main.PNG</code> files.
</td>
</tr>
</table>
<h3><a name="mainwindow">D.2.1 Main window and playbar</a></h3>
<p>Below is the list of entries that can be used in the
'<code>window = main</code>' .&nbsp;.&nbsp;. '<code>end</code>', and the
'<code>window = playbar</code>' &nbsp;.&nbsp;. '<code>end</code>' blocks.</p>
<dl>
<dt><a name="main.base"><b><code>base = image, X, Y</code></b></a></dt>
<dd>Lets you specify the background image to be used for the main window.
The window will appear at the given <code>X,Y</code> position on the screen
The window will have the size of the image.
<div><em class="warn"><b>Note:</b> These coordinates do not currently work
for the display window.</em></div>
<div><em class="warn"><b>Warning:</b> Transparent regions in the image
(colored #FF00FF) appear black on X servers without the XShape extension.
The image's width must be dividable by 8.</em></div>
</dd>
<dt><a name="main.button"><b><code>button = image, X, Y, width, height,
message</code></b></a></dt>
<dd>Place a button of <code>width</code> * <code>height</code> size at
position <code>X</code>,<code>Y</code>. The specified <code>message</code>
is generated when the button is clicked. The image given by
<code>image</code> must have three parts below each other (according to the
possible states of the button), like this:
<pre>
+------------+
| pressed |
+------------+
| released |
+------------+
| disabled |
+------------+
</pre>
</dd>
<dt><a name="main.decoration"><b><code>decoration = enable|disable</code></b>
</a></dt>
<dd>Enable or disable window manager decoration of the main window. Default
is <b>disable</b>.
<div><em class="warn"><b>Note:</b> This doesn't work for the display window,
there is no need to.</em></div>
</dd>
<dt><a name="main.hpotmeter"><b><code>hpotmeter = button, bwidth, bheight,
phases, numphases, default, X, Y, width, height, message</code><br>
<code>vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y,
width, height, message</code></b></a></dt>
<dd>Place a horizontal (hpotmeter) or vertical (vpotmeter) potmeter of
<code>width</code> * <code>height</code>
size at position <code>X</code>,<code>Y</code>. The image can be divided
into different parts for the different phases of the potmeter (for example,
you can have a pot for volume control that turns from green to red while its
value changes from the minimum to the maximum.). <code>hpotmeter</code> can
have a button that can be dragged horizontally.
<div>The parameters are:</div>
<ul>
<li><code>button</code> - the image to be used for the button (must have
three parts below each other, like in case of
<a href="#main.button">button</a>)</li>
<li><code>bwidth</code>, <code>bheight</code> - size of the button</li>
<li><code>phases</code> - The image to be used for the different phases of
the hpotmeter. A special value of <code>NULL</code> can be used if you
want no such image. The image must be divided into
<code>numphases</code>parts vertically like this:
<pre>
+------------+
| phase #1 |
+------------+
| phase #2 |
+------------+
...
+------------+
| phase #n |
+------------+
</pre>
</li>
<li><code>numphases</code> - number of phases stored in the
<code>phases</code> image</li>
<li><code>default</code> - default value for hpotmeter (in the range 0 to
100)</li>
<li><code>X</code>, <code>Y</code> - position for the hpotmeter</li>
<li><code>width</code>, <code>height</code> - width and height of the
<code>hpotmeter</code></li>
<li><code>message</code> - the message to be generated when the value of
<code>hpotmeter</code> is changed</li>
</ul>
</dd>
<dt><a name="main.potmeter"><b><code>potmeter = phases, numphases, default, X,
Y, width, height, message</code></b></a></dt>
<dd>A <code>hpotmeter</code> without a button. (I guess it is meant to be
turned around, but it reacts to horizontal dragging only.) For the
description of the parameters see <a href="#main.hpotmeter">hpotmeter</a>.
<code>phases</code> can be <code>NULL</code>, but it is quite useless, since
you cannot see where the <code>potmeter</code> is set.</dd>
<dt><a name="main.font"><b><code>font = fontfile, fontid</code></b></a></dt>
<dd>Defines a font. <code>fontfile</code> is the name of a font description
file with a <code>.fnt</code> extension (<b>do not</b> specify the extension
here). <code>fontid</code> is used to refer to the font (see
<a href="#main.dlabel">dlabel</a> and <a href="#main.slabel">slabel</a>).
Up to 25 fonts can be defined.</dd>
<dt><a name="main.slabel"><b><code>slabel = X, Y, fontid, "text"</code></b>
</a></dt>
<dd>
Place a static label at the position <code>X</code>,<code>Y</code>.
<code>text</code> is displayed using the font identified by <code>fontid</code>.
The text is just a raw string (<code>$x</code> variables do not work) that must
be enclosed between double quotes (but the <code>"</code> character cannot be
part of the text). The label is displayed using the font identified by
<code>fontid</code>.</dd>
<dt><a name="main.dlabel"><b><code>dlabel = X, Y, length, align, fontid,
"text"</code></b></a></dt>
<dd>Place a dynamic label at the position <code>X</code>,<code>Y</code>. The
label is called dynamic because its text is refreshed periodically. The
maximum length of the label is given by <code>length</code> (its height is
the height of a character). If the text to be displayed is wider than that,
it will be scrolled, otherwise it is aligned within the specified space by
the value of the <code>align</code> parameter: <code>0</code> is for right,
<code>1</code> is for center, <code>2</code> is for left.<br>
The text to be displayed is given by <code>text</code>: It must be written
between double quotes (but the <code>"</code> character cannot be part of
the text). The label is displayed using the font identified by
<code>fontid</code>. You can use the following variables in the text:
<table align="center" border="1">
<tr align="center"><th>Variable</th><th align="left">Meaning</th></tr>
<tr><td align="center"><kbd>$1</kbd></td>
<td>play time in <em>hh:mm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$2</kbd></td>
<td>play time in <em>mmmm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$3</kbd></td>
<td>play time in <em>hh</em> format (hours)</td></tr>
<tr><td align="center"><kbd>$4</kbd></td>
<td>play time in <em>mm</em> format (minutes)</td></tr>
<tr><td align="center"><kbd>$5</kbd></td>
<td>play time in <em>ss</em> format (seconds)</td></tr>
<tr><td align="center"><kbd>$6</kbd></td>
<td>movie length in <em>hh:mm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$7</kbd></td>
<td>movie length in <em>mmmm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$8</kbd></td>
<td>play time in <em>h:mm:ss</em> format</td></tr>
<tr><td align="center"><kbd>$v</kbd></td>
<td>volume in <em>xxx.xx%</em> format</td></tr>
<tr><td align="center"><kbd>$V</kbd></td>
<td>volume in <em>xxx.x</em> format</td></tr>
<tr><td align="center"><kbd>$b</kbd></td>
<td>balance in <em>xxx.xx%</em> format</td></tr>
<tr><td align="center"><kbd>$B</kbd></td>
<td>balance in <em>xxx.x</em> format</td></tr>
<tr><td align="center"><kbd>$$</kbd></td>
<td>the <kbd>$</kbd> character</td></tr>
<tr><td align="center"><kbd>$a</kbd></td>
<td>a character according to the audio type (none: <code>n</code>,
mono: <code>m</code>, stereo: <code>t</code>)</td></tr>
<tr><td align="center"><kbd>$t</kbd></td>
<td>track number (in playlist)</td></tr>
<tr><td align="center"><kbd>$o</kbd></td>
<td>filename</td></tr>
<tr><td align="center"><kbd>$f</kbd></td>
<td>filename in lower case</td></tr>
<tr><td align="center"><kbd>$F</kbd></td>
<td>filename in upper case</td></tr>
<tr><td align="center"><kbd>$T</kbd></td>
<td>a character according to the stream type (file: <code>f</code>,
Video CD: <code>v</code>, DVD: <code>d</code>, URL: <code>u</code>)
</td></tr>
<tr><td align="center"><kbd>$p</kbd></td>
<td>the "p" character (if a movie is playing and the font has the "p"
character)</td></tr>
<tr><td align="center"><kbd>$s</kbd></td>
<td>the "s" character (if the movie is stopped and the font has the "s"
character)</td></tr>
<tr><td align="center"><kbd>$e</kbd></td>
<td>the "e" character (if playback is paused and the font has the "e"
character)</td></tr>
<tr><td align="center"><kbd>$x</kbd></td>
<td>movie width</td></tr>
<tr><td align="center"><kbd>$y</kbd></td>
<td>movie height</td></tr>
<tr><td align="center"><kbd>$C</kbd></td>
<td>name of the codec used</td></tr>
</table>
<em class="note"><b>Note:</b> The <kbd>$a</kbd>, <kbd>$T</kbd>,
<kbd>$p</kbd>, <kbd>$s</kbd>and <kbd>$e</kbd> variables all return
characters that should be displayed as special symbols (for example, "e" is
for the pause symbol that usually looks something like <code>||</code>). You
should have a font for normal characters and a different font for symbols.
See the section about <a href="#symbols">symbols</a> for more
information.</em>
</dd>
</dl>
<h3><a name="subwindow">D.2.2 Subwindow</a></h3>
<p>The following entries can be used in the '<code>window = sub</code>'
.&nbsp;.&nbsp;. '<code>end</code>' block.</p>
<dl>
<dt><a name="sub.base"><b><code>base = image, X, Y, width, height</code></b>
</a></dt>
<dd>The image to be displayed in the window. The window will appear at the
given <code>X</code>,<code>Y</code> position on the screen (<code>0,0</code>
is the top left corner). You can specify <code>-1</code> for center and
<code>-2</code> for right (<code>X</code>) and bottom (<code>Y</code>). The
window will be as large as the image. <code>width</code> and
<code>height</code> denote the size of the window; they are optional (if
they are missing, the window is the same size as the image).</dd>
<dt><a name="sub.background"><b><code>background = R, G, B</code></b></a></dt>
<dd>Lets you set the background color. It is useful if the image is smaller
than the window. <code>R</code>, <code>G</code> and <code>B</code> specifies
the red, green and blue component of the color (each of them is a decimal
number from 0 to 255).</dd>
</dl>
<h3><a name="skinmenu">D.2.3 Skin menu</a></h3>
<p>As mentioned earlier, the menu is displayed using two images. Normal menu
entries are taken from the image specified by the <code>base</code> item,
while the currently selected entry is taken from the image specified by the
<code>selected</code> item. You must define the position and size of each menu
entry through the <code>menu</code> item.</p>
<p>These are the entries that can be used in the '<code>window = menu</code>'
.&nbsp;.&nbsp;. '<code>end</code>' block.</p>
<dl>
<dt><a name="menu.base"><b><code>base = image</code></b></a></dt>
<dd>The image for normal menu entries.</dd>
<dt><a name="menu.selected"><b><code>selected = image</code></b></a></dt>
<dd>The image showing the menu with all entries selected.</dd>
<dt><a name="menu.menu"><b><code>menu = X, Y, width, height, message</code>
</b></a></dt>
<dd>Defines the <code>X,Y</code> position and the size of a menu entry in the
image. <code>message</code> is the message to be generated when the mouse
button is released over the entry.</dd>
</dl>
<h2><a name="fonts">D.3 Fonts</a></h2>
<p>As mentioned in the section about the parts of a skin, a font is defined by
an image and a description file. You can place the characters anywhere in the
image, but make sure that their position and size is given in the description
file exactly.</p>
<p>The font description file (with <code>.fnt</code> extension) can have comment
lines starting with '<code>;</code>'. The file must have a line in the
form</p>
<dl>
<dt><a name="font.image"><b><code>image = image</code></b></a></dt>
<dd>Where <code>image</code> is the name of the image file to be used for the
font (you do not have to specify the extension).</dd>
<dt><a name="font.char"><b><code>"char" = X, Y, width, height</code></b>
</a></dt>
<dd>Here <code>X</code> and <code>Y</code> specify the position of the
<code>char</code> character in the image (<code>0,0</code> is the upper left
corner). <code>width</code> and <code>height</code> are the dimensions of
the character in pixels.</dd>
</dl>
<p>This example defines the A, B, C characters using <code>font.png</code>.</p>
<table width="100%" border="1">
<tr bgcolor="silver">
<td>
<pre>
; Can be "font" instead of "font.png".
image = font.png
; Three characters are enough for demonstration purposes :-)
"A" = 0,0, 7,13
"B" = 7,0, 7,13
"C" = 14,0, 7,13
</pre>
</td>
</tr>
</table>
<h3><a name="symbols">D.3.1 Symbols</a></h3>
<p>Some characters have special meanings when returned by some of the variables
used in <a href="#main.dlabel">dlabel</a>. These characters are meant to be
shown as symbols so that things like a nice DVD logo can be displayed instead
of the character 'd' for a DVD stream.</p>
<p>The following table lists all the characters that can be used to display
symbols (and thus require a different font).</p>
<table align="center" border="1">
<tr><th align="center">Character</th><th align="left">Symbol</th></tr>
<tr><td align="center"><kbd>p</kbd></td>
<td align=left>play</td></tr>
<tr><td align="center"><kbd>s</kbd></td>
<td align=left>stop</td></tr>
<tr><td align="center"><kbd>e</kbd></td>
<td align=left>pause</td></tr>
<tr><td align="center"><kbd>n</kbd></td>
<td align=left>no sound</td></tr>
<tr><td align="center"><kbd>m</kbd></td>
<td align=left>mono sound</td></tr>
<tr><td align="center"><kbd>t</kbd></td>
<td align=left>stereo sound</td></tr>
<tr><td align="center"><kbd>f</kbd></td>
<td align=left>stream is a file</td></tr>
<tr><td align="center"><kbd>v</kbd></td>
<td align=left>stream is a Video CD</td></tr>
<tr><td align="center"><kbd>d</kbd></td>
<td align=left>stream is a DVD</td></tr>
<tr><td align="center"><kbd>u</kbd></td>
<td align="left">stream is a URL</td></tr>
</table>
<h2><a name="guimessages">D.4 GUI messages</a></h2>
<p>These are the messages that can be generated by buttons, potmeters and menu
entries.</p>
<p><em class="note"><b>Note:</b> Some of the messages might not work as expected
(or not work at all). As you know, the GUI is under development.</em></p>
<h3>Playback control:</h3>
<blockquote>
<dl>
<dt><b>evNext</b></dt>
<dd>Jump to next track in the playlist.</dd>
<dt><b>evPause</b></dt>
<dd>Pause playing.</dd>
<dt><b>evPauseSwitchToPlay</b></dt>
<dd>Forms a switch together with <code>evPlaySwitchToPause</code>. They can
be used to have a common play/pause button. Both messages should be
assigned to buttons displayed at the very same position in the window.
This message pauses playing and the image for the
<code>evPlaySwitchToPause</code> button is displayed (to indicate that the
button can be pressed to continue playing).</dd>
<dt><b>evPlay</b></dt>
<dd>Start playing.</dd>
<dt><b>evPlaySwitchToPause</b></dt>
<dd>The opposite of <code>evPauseSwitchToPlay</code>. This message starts
playing and the image for the <code>evPauseSwitchToPlay</code> button is
displayed (to indicate that the button can be pressed to pause
playing).</dd>
<dt><b>evPrev</b></dt>
<dd>Jump to previous track in the playlist.</dd>
<dt><b>evStop</b></dt>
<dd>Stop playing.</dd>
</dl>
</blockquote>
<h3>Seeking:</h3>
<blockquote>
<dl>
<dt><b>evBackward10sec</b></dt>
<dt><b>evBackward1min</b></dt>
<dt><b>evBackward10min</b></dt>
<dd>Seek backward 10 seconds / 1 minute / 10 minutes.</dd>
<dt><b>evForward10sec</b></dt>
<dt><b>evForward1min</b></dt>
<dt><b>evForward10min</b></dt>
<dd>Seek forward 10 seconds / 1 minute / 10 minutes.</dd>
<dt><b>evSetMoviePosition</b></dt>
<dd>Seek to position (can be used by a potmeter; the relative value (0-100%)
of the potmeter is used).</dd>
</dl>
</blockquote>
<h3>Video control:</h3>
<blockquote>
<dl>
<dt><b>evDoubleSize</b></dt>
<dd>Set the movie window to double size.</dd>
<dt><b>evFullScreen</b></dt>
<dd>Switch fullscreen mode on/off.</dd>
<dt><b>evNormalSize</b></dt>
<dd>Set the movie window to its normal size.</dd>
</dl>
</blockquote>
<h3>Audio control:</h3>
<blockquote>
<dl>
<dt><b>evDecAudioBufDelay</b></dt>
<dd>Decrease audio buffer delay.</dd>
<dt><b>evDecBalance</b></dt>
<dd>Decrease balance.</dd>
<dt><b>evDecVolume</b></dt>
<dd>Decrease volume.</dd>
<dt><b>evIncAudioBufDelay</b></dt>
<dd>Increase audio buffer delay.</dd>
<dt><b>evIncBalance</b></dt>
<dd>Increase balance.</dd>
<dt><b>evIncVolume</b></dt>
<dd>Increase volume.</dd>
<dt><b>evMute</b></dt>
<dd>Mute/unmute the sound.</dd>
<dt><b>evSetBalance</b></dt>
<dd>Set balance (can be used by a potmeter; the relative value (0-100%) of
the potmeter is used).</dd>
<dt><b>evSetVolume</b></dt>
<dd>Set volume (can be used by a potmeter; the relative value (0-100%) of
the potmeter is used).</dd>
</dl>
</blockquote>
<h3>Miscellaneous:</h3>
<blockquote>
<dl>
<dt><b>evAbout</b></dt>
<dd>Open the about window.</dd>
<dt><b>evDropSubtitle</b></dt>
<dd>Disables the currently used subtitle.</dd>
<dt><b>evEqualizer</b></dt>
<dd>Turn the equalizer on/off.</dd>
<dt><b>evExit</b></dt>
<dd>Quit the program.</dd>
<dt><b>evIconify</b></dt>
<dd>Iconify the window.</dd>
<dt><b>evLoad</b></dt>
<dd>Load a file (by opening a file browser window, where you can choose a
file).</dd>
<dt><b>evLoadPlay</b></dt>
<dd>Does the same as <code>evLoad</code>, but it automatically starts
playing after the file is loaded.</dd>
<dt><b>evLoadSubtitle</b></dt>
<dd>Loads a subtitle file (with the fileselector)</dd>
<dt><b>evLoadAudioFile</b></dt>
<dd>Loads an audio file (with the fileselector)</dd>
<dt><b>evNone</b></dt>
<dd>Empty message, it has no effect (except maybe in CVS versions :-)).</dd>
<dt><b>evPlayList</b></dt>
<dd>Open/close the playlist window.</dd>
<dt><b>evPlayDVD</b></dt>
<dd>Tries to open the disc in the given DVD-ROM drive.</dd>
<dt><b>evPlayVCD</b></dt>
<dd>Tries to open the disc in the given CD-ROM drive.</dd>
<dt><b>evPreferences</b></dt>
<dd>Open the preferences window.</dd>
<dt><b>evSetAspect</b></dt>
<dd>Sets displayed image aspect.</dd>
<dt><b>evSetURL</b></dt>
<dd>Displays the URL dialog window.</dd>
<dt><b>evSkinBrowser</b></dt>
<dd>Open the skin browser window.</dd>
</dl>
</blockquote>
</body>
</html>

View File

@ -1,854 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Sound - 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="audio">2.3.2 Audio output devices</A></H3>
<H4><A NAME="sync">2.3.2.1 Audio/Video synchronisation</A></H4>
<P>MPlayer's audio interface is called <I>libao2</I>. It currently
contains these drivers:</P>
<DL>
<DT>oss</DT>
<DD>OSS (ioctl) driver (supports hardware AC3 passthrough)</DD>
<DT>sdl</DT>
<DD>SDL driver (supports sound daemons like <B>ESD</B> and <B>ARTS</B>)</DD>
<DT>nas</DT>
<DD>NAS (Network Audio System) driver</DD>
<DT>alsa5</DT>
<DD>native ALSA 0.5 driver</DD>
<DT>alsa9</DT>
<DD>native ALSA 0.9 driver (supports hardware AC3 passthrough)</DD>
<DT>sun</DT>
<DD>SUN audio driver (<CODE>/dev/audio</CODE>) for BSD and Solaris8 users</DD>
<DT>macosx</DT>
<DD>native MacOSX driver</DD>
<DT>win32</DT>
<DD>native Win32 driver</DD>
<DT>arts</DT>
<DD>native ARTS driver (mostly for KDE users)</DD>
<DT>esd</DT>
<DD>native ESD driver (mostly for GNOME users)</DD>
</DL>
<P>Linux sound card drivers have compatibility problems. This is because MPlayer
relies on an in-built feature of <EM>properly</EM> coded sound drivers that
enable them to maintain correct audio/video sync. Regrettably, some driver
authors don't take the care to code this feature since it is not needed for
playing MP3s or sound effects. </P>
<P>Other media players like <A HREF="http://avifile.sourceforge.net">aviplay</A>
or <A HREF="http://xine.sourceforge.net">xine</A> possibly work
out-of-the-box with these drivers because they use "simple" methods with
internal timing. Measuring showed that their methods are not as efficient
as MPlayer's. </P>
<P>Using MPlayer with a properly written audio driver will never result
in A/V desyncs related to the audio, except only with very badly created
files (check the man page for workarounds).</P>
<P>If you happen to have a bad audio driver, try the <CODE>-autosync</CODE>
option, it should sort out your problems. See the man page for detailed
information.</P>
<P>Some notes:</P>
<UL>
<LI>If you have an OSS driver, first try <CODE>-ao oss</CODE> (this is the
default). If you experience glitches, halts or anything out of the
ordinary, try <CODE>-ao sdl</CODE> (NOTE: You need to have SDL libraries
and header files installed). The SDL audio driver helps in a lot of cases
and also supports ESD (GNOME) and ARTS (KDE).</LI>
<LI>If you have ALSA version 0.5, then you almost always have to use
<CODE>-ao alsa5</CODE> , since ALSA 0.5 has buggy OSS emulation code, and
will <B>crash MPlayer</B> with a message like this:<BR>
<CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></LI>
<LI>On Solaris, use the SUN audio driver with the <CODE>-ao sun</CODE> option,
otherwise neither video nor audio will work.</LI>
<LI>If the sound clicks when playing from CD-ROM, turn on IRQ unmasking, e.g.
<CODE>hdparm -u1 /dev/cdrom</CODE> (<CODE>man hdparm</CODE>). This is
generally beneficial and described in more detail in the
<A HREF="cd-dvd.html#drives">CD-ROM section</A>.</LI>
</UL>
<H4><A NAME="experiences">2.3.2.2 Sound Card experiences, recommendations</A></H4>
<P>On Linux, a 2.4.x kernel is highly recommended. Kernel 2.2 is not tested.</P>
<P>Linux sound drivers are primarily provided by the free version of OSS. These
drivers have been superceded by <A HREF="http://www.alsa-project.org">ALSA</A>
(Advanced Linux Sound Architecture) in the 2.5 development series. If your
distribution does not already use ALSA you may wish to try their drivers if
you experience sound problems. ALSA drivers are generally superior to OSS in
compatibility, performance and features. But some sound cards are only
supported by the commercial OSS drivers from
<A HREF="http://www.opensound.com/">4Front Technologies</A>. They also support
several non-Linux systems.</P>
<TABLE BORDER="1" WIDTH="100%">
<TR>
<TH ROWSPAN="2"><B>SOUND CARD</B></TH>
<TH COLSPAN="4"><B>DRIVER</B></TH>
<TH ROWSPAN="2"><B>Max kHz</B></TH>
<TH ROWSPAN="2"><B>Max Channels</B></TH>
<TH ROWSPAN="2"><B>Max Opens<FONT SIZE="-2"><A HREF=#note1>[1]</A></FONT></B></TH>
</TR>
<TR>
<TH><B>OSS/Free</B></TH>
<TH><B>ALSA</B></TH>
<TH><B>OSS/Pro</B></TH>
<TH><B>other</B></TH>
</TR>
<TR>
<TD><B>VIA onboard (686/A/B, 8233, 8235)</B></TD>
<TD><A HREF="http://sourceforge.net/project/showfiles.php?group_id=3242&amp;release_id=59602">via82cxxx_audio</A></TD>
<TD>snd-via82xx</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>4-48 kHz or 48 kHz only, depending on the chipset</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>Aureal Vortex 2</B></TD>
<TD>none</TD>
<TD>none</TD>
<TD>OK</TD>
<TD><A HREF="http://aureal.sourceforge.net">Linux Aureal Drivers</A><BR>
<A HREF="http://makacs.poliod.hu/~pontscho/aureal/au88xx-1.1.3.tar.bz2">buffer size increased to 32k</A></TD>
<TD>48</TD>
<TD>4.1</TD>
<TD>5+</TD>
</TR>
<TR>
<TD><B>SB Live!</B></TD>
<TD>Analog OK, SP/DIF not working</TD>
<TD>Both OK</TD>
<TD>Both OK</TD>
<TD><A HREF="http://opensource.creative.com">Creative's OSS driver (SP/DIF support)</A></TD>
<TD>192</TD>
<TD>4.0/5.1</TD>
<TD>32</TD>
</TR>
<TR>
<TD><B>SB 128 PCI (es1371)</B></TD>
<TD>OK</TD>
<TD>?</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>48</TD>
<TD>stereo</TD>
<TD>2</TD>
</TR>
<TR>
<TD><B>SB AWE 64</B></TD>
<TD>max 44kHz</TD>
<TD>48kHz sounds bad</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>48</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>GUS PnP</B></TD>
<TD>none</TD>
<TD>OK</TD>
<TD>OK</TD>
<TD>&nbsp;</TD>
<TD>48</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>Gravis UltraSound ACE</B></TD>
<TD>not OK</TD>
<TD>OK</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>44</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>Gravis UltraSound MAX</B></TD>
<TD>OK</TD>
<TD>OK (?)</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>48</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>ESS 688</B></TD>
<TD>OK</TD>
<TD>OK (?)</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>48</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>C-Media cards (CMI8338/8738)</B></TD>
<TD>OK</TD>
<TD>OK SP/DIF is supported with ALSA 0.9.x</TD>
<TD>?</TD>
<TD>&nbsp;</TD>
<TD>44</TD>
<TD>stereo</TD>
<TD>1</TD>
</TR>
<TR>
<TD><B>Yamaha cards (*ymf*)</B></TD>
<TD>not OK (?) (maybe <CODE>-ao sdl</CODE>)</TD>
<TD>OK only with ALSA 0.5 with OSS emulation <B>AND</B>
<CODE>-ao sdl</CODE> (!) (?)</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
<TD>?</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>Cards with envy24 chips (like Terratec EWS88MT)</B></TD>
<TD>?</TD>
<TD>?</TD>
<TD>OK</TD>
<TD>&nbsp;</TD>
<TD>?</TD>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD><B>PC Speaker or DAC</B></TD>
<TD>OK</TD>
<TD>none</TD>
<TD>&nbsp;</TD>
<TD><A HREF="http://www.geocities.com/stssppnn/pcsp.html">Linux PC speaker OSS driver</a></TD>
<TD>The driver emulates 44.1, maybe more.</TD>
<TD>mono</TD>
<TD>1</TD>
</TR>
</TABLE>
<P><A NAME="note1"><B>[1]</B></A>: the number of applications that are able to use the
device <I>at the same time</I>.</P>
<P>Feedback to this document is welcome. Please tell us how MPlayer
and your sound card(s) worked together.</P>
<H4><A NAME="af">2.3.2.3 Audio filters</A></H4>
<P>The old audio plugins have been superseded by a new audio filter layer. Audio
filters are used for changing the properties of the audio data before the
sound reaches the sound card. The activation and deactivation of the filters
is normally automated but can be overridden. The filters are activated when
the properties of the audio data differ from those required by the sound card
and deactivated if unnecessary. The <CODE>-af filter1,filter2,...</CODE>
option is used to override the automatic activation of filters or to insert
filters that are not automatically inserted. The filters will be executed as
they appear in the comma separated list.</P>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af resample,pan movie.avi </CODE></P>
<P>would run the sound through the resampling filter followed by the pan filter.
Observe that the list must not contain any spaces, else it will fail.</P>
<P>The filters often have options that change their behavior. These options
are explained in detail in the sections below. A filter will execute using
default settings if its options are omitted. Here is an example of how to use
filters in combination with filter specific options:</P>
<P>&nbsp;&nbsp;<CODE>mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1
-srate 11025 media.avi</CODE></P>
<P>would set the output frequency of the resample filter to 11025Hz and downmix
the audio to 1 channel using the pan filter.</P>
<P>The overall execution of the filter layer is controlled using the
<CODE>-af-adv</CODE> option. This option has two suboptions:</P>
<DL>
<DT><CODE>force</CODE><DT>
<DD>is a Bit field that controls how the filters are inserted and what
speed/accuracy optimizations they use:
<DL>
<DT><CODE>0</CODE></DT>
<DD>Use automatic insertion of filters and optimize according to CPU
speed.</DD>
<DT><CODE>1</CODE></DT>
<DD>Use automatic insertion of filters and optimize for the highest
speed.<BR>
<EM>Warning:</EM> Some features in the audio filters may silently fail,
and the sound quality may drop.</DD>
<DT><CODE>2</CODE></DT>
<DD>Use automatic insertion of filters and optimize for quality.</DD>
<DT><CODE>3</CODE></DT>
<DD>Use no automatic insertion of filters and no optimization.<BR>
<I>Warning:</I> It may be possible to crash MPlayer using this
setting.</DD>
<DT><CODE>4</CODE></DT>
<DD>Use automatic insertion of filters according to 0 above, but use
floating point processing when possible.</DD>
<DT><CODE>5</CODE></DT>
<DD>Use automatic insertion of filters according to 1 above, but use
floating point processing when possible.</DD>
<DT><CODE>6</CODE></DT>
<DD>Use automatic insertion of filters according to 2 above, but use
floating point processing when possible.</DD>
<DT><CODE>7</CODE></DT>
<DD>Use no automatic insertion of filters according to 3 above, and use
floating point processing when possible.</DD>
</DL>
</DD>
<DT><CODE>list</CODE></DT>
<DD>is an alias for the -af option.</DD>
</DL>
<P>The filter layer is also affected by the following generic options:
<DL>
<DT><CODE>-v</CODE></DT>
<DD>Increases the verbosity level and makes most filters print out extra
status messages.</DD>
<DT><CODE>-channels</CODE></DT>
<DD>This option sets the number of output channels you would like your
sound card to use.
It also affects the number of channels that are being decoded from the
media. If the media contains less channels than requested the channels
filter (see below) will automatically be inserted. The routing will be the
default routing for the channels filter.</DD>
<DT><CODE>-srate</CODE></DT>
<DD>This option selects the sample rate you would like your sound card to
use (of course the cards have limits on this). If the sample
frequency of your sound card is different from that of the current media,
the resample filter (see below) will be inserted into the audio filter layer
to compensate for the difference.</DD>
<DT><CODE>-format</CODE><DT>
<DD>This option sets the sample format between the audio filter layer and the sound
card. If the requested sample format of your sound card is different from
that of the current media, a format filter (see below) will be inserted to
rectify the difference.</DD>
</DL>
<H4><A NAME="af_resample">2.3.2.3.1 Up/Down-sampling</A></H4>
<P>MPlayer fully supports sound up/down-sampling through the
<CODE>resample</CODE> filter. It can be used if you
have a fixed frequency sound card or if you are stuck with an old sound card
that is only capable of max 44.1kHz. This filter is automatically enabled if
it is necessary, but it can also be explicitly enabled on the command line. It
has three options:</P>
<DL>
<DT><CODE>srate &lt;8000-192000&gt;</CODE></DT>
<DD>is an integer used for setting the output sample
frequency in Hz. The valid range for this parameter is 8kHz to 192kHz. If
the input and output sample frequency are the same or if this parameter is
omitted the filter is automatically unloaded. A high sample frequency
normally improves the audio quality, especially when used in combination
with other filters.</DD>
<DT><CODE>sloppy</CODE></DT>
<DD>is an optional binary parameter that allows the output frequency to differ
slightly from the frequency given by <CODE>srate</CODE>. This option can be
used if the startup of the playback is extremely slow. It is enabled by
default.</DD>
<DT><CODE>type &lt;0-2&gt;</CODE><DT>
<DD>is an optional integer between <CODE>0</CODE> and <CODE>2</CODE> that
selects which resampling method to use. Here <CODE>0</CODE> represents
linear interpolation as resampling method, <CODE>1</CODE> represents
resampling using a poly-phase filter-bank and integer processing and
<CODE>2</CODE> represents resampling using a poly-phase filter-bank and
floating point processing. Linear interpolation is extremely fast, but
suffers from poor sound quality especially when used for up-sampling. The
best quality is given by <CODE>2</CODE> but this method also suffers from
the highest CPU load.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af resample=44100:0:0</CODE></P>
<P>would set the output frequency of the resample filter to 44100Hz using exact
output frequency scaling and linear interpolation.</P>
<H4><A NAME="af_channels">2.3.2.3.2 Changing the number of channels</A></H4>
<P>The <CODE>channels</CODE> filter can be used for adding and removing
channels, it can also be used for routing or copying channels. It is
automatically enabled when the output from the audio filter layer differs from
the input layer or when it is requested by another filter. This filter unloads
itself if not needed. The number of options is dynamic:</P>
<DL>
<DT><CODE>nch &lt;1-6&gt;</CODE></DT>
<DD>is an integer between <CODE>1</CODE> and <CODE>6</CODE> that is used for
setting the number of output channels. This option is required, leaving it
empty results in a runtime error.</DD>
<DT><CODE>nr &lt;1-6&gt;</CODE></DT>
<DD>is an integer between <CODE>1</CODE> and <CODE>6</CODE> that is used for
specifying the number of routes. This parameter is optional. If it is
omitted the default routing is used.</DD>
<DT><CODE>from1:to1:from2:to2:from3:to3...</CODE></DT>
<DD>are pairs of numbers between <CODE>0</CODE> and <CODE>5</CODE> that define
where each channel should be routed.</DD>
</DL>
<P>If only <CODE>nch</CODE> is given the default routing is used, it works as
follows: If the number of output channels is bigger than the number of input
channels empty channels are inserted (except mixing from mono to stereo, then
the mono channel is repeated in both of the output channels). If the number of
output channels is smaller than the number of input channels the exceeding
channels are truncated.</P>
<P>Example 1:<BR>
&nbsp;&nbsp;<CODE>mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi </CODE></P>
<P>would change the number of channels to 4 and set up 4 routes that swap
channel 0 and channel 1 and leave channel 2 and 3 intact. Observe that if
media containing two channels was played back, channels 2 and 3 would contain
silence but 0 and 1 would still be swapped.</P>
<P>Example 2:<BR>
&nbsp;&nbsp;<CODE>mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi </CODE></P>
<P>would change the number of channels to 6 and set up 4 routes that copy
channel 0 to channels 0 to 3. Channel 4 and 5 will contain silence.</P>
<H4><A NAME="af_format">2.3.2.3.3 Sample format converter</A></H4>
<P>The <CODE>format</CODE> filter converts between different sample formats. It
is automatically enabled when needed by the sound card or another filter.</P>
<DL>
<DT><CODE>bps &lt;number&gt;</CODE></DT>
<DD>can be <CODE>1</CODE>, <CODE>2</CODE> or <CODE>4</CODE> and denotes the
number of bytes per sample. This option is required, leaving it empty
results in a runtime error.</DD>
<DT><CODE>f &lt;format&gt;</CODE></DT>
<DD>is a text string describing the sample format. The string is a
concatenated mix of: <CODE>alaw</CODE>, <CODE>mulaw</CODE> or
<CODE>imaadpcm</CODE>, <CODE>float</CODE> or <CODE>int</CODE>,
<CODE>unsigned</CODE> or <CODE>signed</CODE>, <CODE>le</CODE> or
<CODE>be</CODE> (little or big endian). This option is required, leaving it
empty results in a runtime error.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af format=4:float media.avi</CODE></P>
<P>would set the output format to 4 bytes per sample floating point
data.</P>
<H4><A NAME="af_delay">2.3.2.3.4 Delay</A></H4>
<P>The <CODE>delay</CODE> filter delays the sound to the loudspeakers such that
the sound from the different channels arrives at the listening position
simultaneously.
It is only useful if you have more than 2 loudspeakers. This filter has a
variable number of parameters:</P>
<DL>
<DT><CODE>d1:d2:d3...</CODE></DT>
<DD>are floating point numbers representing the delays in ms that should be
imposed on the different channels. The minimum delay is 0ms and the maximum
is 1000ms.</DD>
</DL>
<P>To calculate the required delay for the different channels do as follows:</P>
<OL>
<LI>Measure the distance to the loudspeakers in meters in relation to your
listening position, giving you the distances s1 to s5 (for a 5.1 system).
There is no point in compensating for the sub-woofer (you will not hear the
difference anyway).</LI>
<LI>Subtract the distances s1 to s5 from the maximum distance i.e.<BR>
s[i] = max(s) - s[i]; i = 1...5</LI>
<LI>Calculated the required delays in ms as<BR>
d[i] = 1000*s[i]/342; i = 1...5 </LI>
</OL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af delay=10.5:10.5:0:0:7:0 media.avi</CODE></P>
<P>would delay front left and right by 10.5ms, the two rear channels and the sub
by 0ms and the center channel by 7ms.</P>
<H4><A NAME="af_volume">2.3.2.3.5 Software volume control</A></H4>
<P>Software volume control is implemented by the <CODE>volume</CODE> audio
filter. Use this filter with caution since
it can reduce the signal to noise ratio of the sound. In most cases it is best
to set the level for the PCM sound to max, leave this filter out and control
the output level to your speakers with the master volume control of the mixer.
In case your sound card has a digital PCM mixer instead of an analog one, and
you hear distortion, use the MASTER mixer instead.
If there is an external amplifier connected to the computer (this is almost
always the case), the noise level can be minimized by adjusting the master
level and the volume knob on the amplifier until the hissing noise in the
background is gone. This filter has two options:</P>
<DL>
<DT><CODE>v &lt;-200 - +60&gt;</CODE></DT>
<DD>is a floating point number between <CODE>-200</CODE> and <CODE>+60</CODE>
which represents the volume level in dB. The default level is 0dB.</DD>
<DT><CODE>c</CODE></DT>
<DD>is a binary control that turns soft clipping on and off. Soft-clipping can
make the sound more smooth if very high volume levels are used. Enable this
option if the dynamic range of the loudspeakers is very low. Be aware that
this feature creates distortion and should be considered a last resort.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af volume=10.1:0 media.avi</CODE></P>
<P>would amplify the sound by 10.1dB and hard-clip if the sound level is too
high.</P>
<P>This filter has a second feature: It measures the overall maximum sound level
and prints out that level when MPlayer exits. This volume estimate can be used
for setting the sound level in MEncoder such that the maximum dynamic range is
utilized.</P>
<H4><A NAME="af_equalizer">2.3.2.3.6 Equalizer</A></H4>
<P>The <CODE>equalizer</CODE> filter represents a 10 octave band graphic
equalizer, implemented using 10 IIR
band pass filters. This means that it works regardless of what type of audio
is being played back. The center frequencies for the 10 bands are:</P>
<TABLE BORDER="0" WIDTH="100%">
<TR><TD>Band No.</TD><TD>Center frequency</TD></TR>
<TR><TD>0</TD><TD>31.25 Hz</TD></TR>
<TR><TD>1</TD><TD>62.50 Hz</TD></TR>
<TR><TD>2</TD><TD>125.0 Hz</TD></TR>
<TR><TD>3</TD><TD>250.0 Hz</TD></TR>
<TR><TD>4</TD><TD>500.0 Hz</TD></TR>
<TR><TD>5</TD><TD>1.000 kHz</TD></TR>
<TR><TD>6</TD><TD>2.000 kHz</TD></TR>
<TR><TD>7</TD><TD>4.000 kHz</TD></TR>
<TR><TD>8</TD><TD>8.000 kHz</TD></TR>
<TR><TD>9</TD><TD>16.00 kHz</TD></TR>
</TABLE>
<P>If the sample rate of the sound being played back is lower than the center
frequency for a frequency band, then that band will be disabled. A known bug
with this filter is that the characteristics for the uppermost band are not
completely symmetric if the sample rate is close to the center frequency of
that band. This problem can be worked around by up-sampling the sound using
the resample filter before it reaches this filter. </P>
<P>This filter has 10 parameters:</P>
<DL>
<DT><CODE>g1:g2:g3...g10</CODE></DT>
<DD>are floating point numbers between <CODE>-12</CODE> and <CODE>+12</CODE>
representing the gain in dB for each frequency band.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi</CODE></P>
<P>would amplify the sound in the upper and lower frequency region while
canceling it almost completely around 1kHz.</P>
<H4><A NAME="af_panning">2.3.2.3.7 Panning filter</A></H4>
<P>Use the <CODE>pan</CODE> filter to mix channels arbitrarily. It is basically
a combination of the volume control and the channels filter. There are two
major uses for this filter:</P>
<OL>
<LI>Down-mixing many channels to only a few, stereo to mono for example.</LI>
<LI>Varying the "width" of the center speaker in a surround sound system.</LI>
</OL>
<P>This filter is hard to use, and will require some tinkering before the
desired result is obtained. The number of options for this filter depends on
the number of output channels:</P>
<DL>
<DT><CODE>nch &lt;1-6&gt;</CODE></DT>
<DD>is an integer between <CODE>1</CODE> and <CODE>6</CODE> and is used for
setting the number of output channels. This option is required, leaving it
empty results in a runtime error.</DD>
<DT><CODE>l00:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...</CODE></DT>
<DD>are floating point values between <CODE>0</CODE> and <CODE>1</CODE>.
<CODE>l[i][j]</CODE> determines how much of input channel j is mixed into
output channel i.</DD>
</DL>
<P>Example 1:<BR>
&nbsp;&nbsp;<CODE>mplayer -af pan=1:0.5:0.5 -channels 1 media.avi</CODE></P>
<P>would down-mix from stereo to mono.</P>
<P>Example 2:<BR>
&nbsp;&nbsp;<CODE>mplayer -af pan=3:1:0:1:0.5:0.5 -channels 3 media.avi</CODE></P>
<P>would give 3 channel output leaving channels 0 and 1 intact, and mix channels
0 and 1 into output channel 2 (which could be sent to a sub-woofer for
example).</P>
<H4><A NAME="af_sub">2.3.2.3.8 Sub-woofer</A></H4>
<P>The <CODE>sub</CODE> filter adds a sub woofer channel to the audio stream.
The audio data
used for creating the sub-woofer channel is an average of the sound in channel
0 and channel 1. The resulting sound is then low-pass filtered by a 4th
order Butterworth filter with a default cutoff frequency of 60Hz and added to
a separate channel in the audio stream. Warning: Disable this filter when you
are playing DVDs with Dolby Digital 5.1 sound, otherwise this filter will
disrupt the sound to the sub-woofer. This filter has two parameters:</P>
<DL>
<DT><CODE>fc &lt;20-300&gt;</CODE></DT>
<DD>is an optional floating point number used for setting the cutoff frequency
for the filter in Hz. The valid range is 20Hz to 300Hz. For the best result
try setting the cutoff frequency as low as possible. This will improve the
stereo or surround sound experience. The default cutoff frequency is
60Hz.</DD>
<DT><CODE>ch &lt;0-5&gt;</CODE></DT>
<DD>is an optional integer between <CODE>0</CODE> and <CODE>5</CODE> which
determines the channel number in which to insert the sub-channel audio.
The default is channel number <CODE>5</CODE>. Observe that the number of
channels will automatically be increased to <CODE>ch</CODE> if
necessary.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af sub=100:4 -channels 5 media.avi</CODE></P>
<P>would add a sub-woofer channel with a cutoff frequency of 100Hz to output
channel 4.</P>
<H4><A NAME="af_surround">2.3.2.3.9 Surround-sound decoder</A></H4>
<P>Matrix encoded surround sound can be decoded by the <CODE>surround</CODE>
filter. Dolby Surround is
an example of a matrix encoded format. Many files with 2 channel audio
actually contain matrixed surround sound. To use this feature you need a sound
card supporting at least 4 channels. This filter has one parameter:</P>
<DL>
<DT><CODE>d &lt;0-1000&gt;</CODE></DT>
<DD>is an optional floating point number between <CODE>0</CODE> and
<CODE>1000</CODE> used for setting the delay time in ms for the rear
speakers. This delay should be set as follows: if d1 is the distance from
the listening position to the front speakers and d2 is the distance from
the listening position to the rear speakers, then the delay <CODE>d</CODE>
should be set to 15ms if d1 &lt;= d2 and to 15 + 5*(d1-d2) if d1 &gt; d2.
The default value for <CODE>d</CODE> is 20ms.</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af surround=15 -channels 4 media.avi</CODE></P>
<P>would add surround sound decoding with 15ms delay for the sound to the rear
speakers.</P>
<H4><A NAME="plugins">2.3.2.4 Audio plugins (deprecated)</A></H4>
<H2><STRONG>Note: Audio plugins have been deprecated by audio filters and will be
removed soon.</STRONG></H2>
<P>MPlayer has support for audio plugins. Audio plugins can be used to
change the properties of the audio data before it reaches the sound
card. They are enabled using the <CODE>-aop</CODE> option which takes a
<CODE>list=plugin1,plugin2,...</CODE> argument. The <CODE>list</CODE> argument
is required and determines which plugins should be used and in which order they
should be executed. Example:</P>
<P>&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=resample,format</CODE></P>
<P>would run the sound through the resampling plugin followed by the format
plugin.</P>
<P>The plugins can also have options that change their behavior. These
options are explained in detail in the sections below. A plugin will execute
using default settings if its options are omitted. Here is an example of how
to use plugins in combination with plugin specific options:</P>
<P>&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=resample,format:fout=44100:format=0x8</CODE></P>
<P>would set the output frequency of the resample plugin to 44100Hz and the
output format of the format plugin to AFMT_U8.</P>
<P>Currently audio plugins cannot be used in MEncoder.</P>
<H4><A NAME="resample">2.3.2.4.1 Up/Downsampling</A></H4>
<P>MPlayer fully supports up/downsampling of the sound. This plugin can
be used if you have a fixed frequency sound card or if you are
stuck with an old sound card that is only capable of max 44.1kHz.
MPlayer <EM>autodetects</EM> whether or not usage of this plugin is necessary.
This plugin has one option, <CODE>fout</CODE>, which is used for setting the
desired output sample frequency. The value is given in Hz, and defaults to
48kHz.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=resample:fout=&lt;required
frequency in Hz, like 44100&gt;</CODE></P>
<P>Note that the output frequency should not be scaled up from the default value.
Scaling up will cause the audio and video streams to be played in slow motion
and cause audio distortion.</P>
<H4><A NAME="surround_decoding">2.3.2.4.2 Surround Sound decoding</A></H4>
<P>MPlayer has an audio plugin that can decode matrix encoded
surround sound. Dolby Surround is an example of a matrix encoded format.
Many files with 2 channel audio actually contain matrixed surround sound.
To use this feature you need a sound card supporting at least 4 channels.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=surround</CODE></P>
<H4><A NAME="format">2.3.2.3.3 Sample format converter</A></H4>
<P>If your sound card driver does not support signed 16bit <CODE>int</CODE> data type,
this plugin can
be used to change the format to one which your sound card can understand. It
has one option, <CODE>format</CODE>, which can be set to one of the numbers
found in <CODE>libao2/afmt.h</CODE>. This plugin is hardly ever needed and is
intended for advanced users. Keep in mind that this plugin only changes the
sample format and not the sample frequency or the number of channels.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=format:format=&lt;required output format&gt;</CODE></P>
<H4><A NAME="delay">2.3.2.4.4 Delay</A></H4>
<P>This plugin delays the sound and is intended as an example of how to develop
new plugins. It can not be used for anything useful from a users perspective
and is mentioned here for the sake of completeness only. Do not use this
plugin unless you are a developer.</P>
<P>If you have a file with a consistent A/V sync fault, use the <CODE>+/-</CODE>
keys to adjust timings on-the-fly instead. Usage of the OSD is recommended
to make this easier.</P>
<H4><A NAME="volume">2.3.2.4.5 Software volume control</A></H4>
<P>This plugin is a software replacement for the volume control, and
can be used on machines with a broken mixer device. It can also be
used if one wants to change the output volume of MPlayer
without changing the PCM volume setting in the mixer. It has one
option <CODE>volume</CODE> that is used for setting the initial
sound level. The initial sound level can be set to values between 0
and 255 and defaults to 101 which equals 0dB amplification. Use this
plugin with caution since it can reduce the signal to noise ratio of
the sound. In most cases it is best to set the level for the PCM
sound to max, leave this plugin out and control the output level to
your speakers with the MASTER volume control of the mixer.
In case your sound card has a digital PCM mixer instead of an analog one, and
you hear distortion, use the MASTER mixer instead.
external amplifier connected to the computer (this is almost always
the case), the noise level can be minimized by adjusting the master
level and the volume knob on the amplifier until the hissing noise
in the background is gone.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=volume:volume=&lt;0-255&gt;</CODE></P>
<P>This plugin also has compressor or "soft-clipping" capabilities.
Compression can be used if the dynamic range of the sound is very
high or if the dynamic range of the loudspeakers is very
low. Be aware that this feature creates distortion and should be
considered a last resort.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=volume:softclip</CODE></P>
<H4><A NAME="extrastereo">2.3.2.4.6 Extrastereo</A></H4>
<P>This plugin (linearly) increases the difference between left and right
channels (like the XMMS extrastereo plugin) which gives some sort of "live"
effect to playback.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=extrastereo</CODE><BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=extrastereo:mul=3.45</CODE></P>
<P>The default coefficient (<CODE>mul</CODE>) is a float number that defaults
to 2.5. If you set it to 0.0, you will have mono sound (average of both
channels). If you set it to 1.0, sound will be unchanged, if you set it to
-1.0, left and right channels will be swapped.</P>
<H4><A NAME="normalizer">2.3.2.4.7 Volume normalizer</A></H4>
<P>This plugin maximizes the volume without distorting the sound.</P>
<P>Usage:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=volnorm</CODE><BR>
</BODY>
</HTML>

View File

@ -1,190 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Developer Cries - 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>
<H1><A NAME="appendix_e">Appendix E - Developer Cries</A></H1>
<P>There are two major topics which always cause huge dispute and flame on the
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>
mailing list. Number one is the topic of the</P>
<H2><A NAME="gcc">E.1 GCC 2.96</A></H2>
<P><B>The background:</B> The GCC <B>2.95</B> series is an official GNU release
and version 2.95.3 of GCC is the most bug-free in that series.
We have never noticed compilation problems that we could trace to GCC 2.95.3.
Starting with Red Hat Linux 7.0, <B>Red Hat</B> included a heavily
patched CVS version of GCC in their distribution and named it <B>2.96</B>. Red
Hat included this version in the distribution because GCC 3.0 was not finished
at the time, and they needed a compiler that worked well on all of their
supported platforms, including IA64 and s390. The Linux distributor
<B>Mandrake</B> also followed Red Hat's example and started shipping GCC 2.96
with their Linux-Mandrake 8.0 series.</P>
<P><B>The statements:</B> The GCC team disclaimed any link with GCC 2.96 and
issued an <A HREF="http://gcc.gnu.org/gcc-2.96.html">official response</A> to
GCC 2.96. Many developers around the world began having problems with GCC 2.96,
and started recommending other compilers. Examples are
<A HREF="http://www.mysql.com/downloads/mysql-3.23.html">MySQL</A>,
<A HREF="http://avifile.sourceforge.net/news-old1.htm">avifile</A> and
<A HREF="http://www.winehq.com/news/?view=92#RH%207.1%20gcc%20fixes%20compiler%20bug">Wine</A>.
Other interesting links are
<A HREF="http://www.atnf.csiro.au/people/rgooch/linux/docs/kernel-newsflash.html">
Linux kernel news flash about kernel 2.4.17</A> and
<A HREF="http://www.voy.com/3516/572.html">Voy Forum</A>.
MPlayer also suffered from intermittent problems that were all solved by
switching to a different version of GCC. Several projects started implementing
workarounds for some of the 2.96 issues, but we refused to fix other people's
bugs, especially since some workarounds may imply a performance penalty.</P>
<P>You can read about the other side of the story
<A HREF="http://web.archive.org/web/20011024212120/http://www.bero.org/gcc296.html">at this site</A>.
GCC 2.96 does not allow | (pipe) characters in assembler comments
because it supports Intel as well as AT&amp;T Syntax and the | character is a
symbol in the Intel variant. The problem is that it <B>silently</B> ignores the
whole assembler block. This is supposedly fixed now, GCC prints a warning instead
of skipping the block.</P>
<P><B>The present:</B> Red Hat says that GCC 2.96-85 and above is fixed. The
situation has indeed improved, yet we still see problem reports on our
mailing lists that disappear with a different compiler. In any case it does not
matter any longer. Hopefully a maturing GCC 3.x will solve the issue for good.
If you want to compile with 2.96 give the <CODE>--disable-gcc-checking</CODE>
flag to configure. Remember that you are on your own and <B>do not report any
bugs</B>. If you do, you will only get banned from our mailing list because
we have had more than enough flame wars over GCC 2.96. Please let the matter
rest.</P>
<P>If you have problems with GCC 2.96, you can get 2.96-85 packages from the
Red Hat <A HREF="ftp://updates.redhat.com">ftp server</A>, or just go for the
3.0.4 packages offered for version 7.2 and later. You can also get
<A HREF="ftp://people.redhat.com/jakub/gcc/3.2-10/">gcc-3.2-10 packages</A>
(unofficial, but working fine) and you can install them along the GCC 2.96 you
already have. MPlayer will detect it and use 3.2-10 instead of 2.96. If you do
not want to or cannot use the binary packages, here is how you can compile the
latest GCC from source:</P>
<OL>
<LI>Go to the <A HREF="http://gcc.gnu.org/mirrors.html">GCC mirrors page</A>
page and download <CODE>gcc-core-XXX.tar.gz</CODE> where <CODE>XXX</CODE> is
the version number. This includes the complete C compiler and is sufficient
for MPlayer. If you also want C++, Java or some of the other advanced GCC
features <CODE>gcc-XXX.tar.gz</CODE> may better suit your needs.</LI>
<LI>Extract the archive with<BR>
<CODE>tar -xvzf gcc-core-XXX.tar.gz</CODE></LI>
<LI>GCC is not built inside the source directory itself like most programs,
but needs a build directory outside the source directory. Thus you need to
create this directory via<BR>
<CODE>mkdir gcc-build</CODE></LI>
<LI>Then you can proceed to configure GCC in the build directory, but you need
the configure from the source directory:<BR>
<CODE>cd gcc-build<BR>
../gcc-XXX/configure</CODE></LI>
<LI>Compile GCC by issuing this command in the build directory:<BR>
<CODE>make bootstrap</CODE></LI>
<LI>Now you can install GCC (as root) by typing<BR>
<CODE>make install</CODE></LI>
</OL>
<H2><A NAME="binary">E.2 Binary distribution</A></H2>
<P>MPlayer previously contained source from the OpenDivX project, which
disallows binary redistribution. This code has been removed in version
0.90-pre1 and the remaining file <CODE>divx_vbr.c</CODE> that is derived
from OpenDivX sources has been put under the GPL by its authors as of version
0.90pre9. You are now welcome to create binary packages as you see fit.</P>
<P>Another impediment to binary redistribution were compiletime optimizations
for CPU architecture. MPlayer now supports runtime CPU detection (specify
the <CODE>--enable-runtime-cpudetection</CODE> option when configuring). It
is disabled by default because it implies a small speed sacrifice, but it is
now possible to create binaries that run on different members of the Intel
CPU family.</P>
<H2><A NAME="nvidia">E.3 nVidia</A></H2>
<P>We dislike the fact that <A HREF="http://www.nvidia.com">nVidia</A>
only provides binary drivers (for use with XFree86), which are often buggy.
We have had many reports on
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>
about problems related to these closed-source drivers
and their poor quality, instability and poor user and expert support.
Some examples can be found on the
<A HREF="http://www.nvnews.net/vbulletin/forumdisplay.php?s=6d83dc289805c37caef49b77857a0b7e&amp;daysprune=&amp;forumid=27">
nVidia Linux Forum</A>.
Many of these problems/issues keep appearing repeatedly.
We have been contacted by nVidia lately, and they said these bugs
do not exist, instability is caused by bad AGP chips, and they received
no reports of driver bugs (like the purple line). So if you have a
problem with your nVidia card, you are advised to update the nVidia driver
and/or buy a new motherboard or ask nVidia to supply open-source drivers.
In any case, if you are using the nVidia binary drivers and facing driver related problems,
please be aware that you will receive very little help from our side because we have
little power to help in this matter.</P>
<H2><A NAME="barr">E.4 Joe Barr</A></H2>
<P>Joe Barr became infamous by writing a less than favorable
<A HREF="http://www.linuxworld.com/site-stories/2001/1214.mplayer.html">
MPlayer review</A>. He found MPlayer hard to install, but then
again he is not very fond of
<A HREF="http://www.linuxworld.com/linuxworld/lw-2000-06/lw-06-exam.html">reading documentation</A>.
He also concluded that the developers were unfriendly and the documentation
incomplete and insulting. You be the judge.
He went on to mention MPlayer negatively in his
<A HREF="http://www.linuxworld.com/site-stories/2001/1227.predictions.html">10 Linux predictions for 2002</A>
In a followup
<A HREF="http://www.linuxworld.com/site-stories/2002/0125.xine.html">review of xine</A>
he continued stirring up controversy. Ironically at the end of that article he
quotes his exchange with Günter Bartsch, the original author of xine, that
perfectly summarizes the whole situation:</P>
<BLOCKQUOTE>
However, he also went on to say that he was "surprised" by my column about
MPlayer and thought it was unfair, reminding me that it is a free software
project. "If you don't like it," Bartsch said, "you're free not to use it."
</BLOCKQUOTE>
<P>He does not reply to our mails. His editor does not reply to our mails.
Here are some quotes from different people about Joe Barr, so you can form your
own opinion:</P>
<P>Marc Rassbach has <A HREF="http://daily.daemonnews.org/view_story.php3?story_id=2102">something to say</A>
about the man.</P>
<BLOCKQUOTE>
You may all remember the LinuxWorld 2000, when he claimed that Linus T said
that 'FreeBSD is just a handful of programmers'. Linus said NOTHING of the
sort. When Joe was called on this, his reaction was to call BSD supporters
assholes and jerks.
</BLOCKQUOTE>
<P>A <A HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-December/009118.html">quote</A>
from Robert Munro on the
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>
mailing list:</P>
<BLOCKQUOTE>
<P>He's interesting, but not good at avoiding, um... controversy. Joe Barr
used to be one of the regulars on Will Zachmann's Canopus forum on Compuserve,
years ago. He was an OS/2 advocate then (I was an OS/2 fan too).</P>
<P>He used to go over-the-top, flaming people, and I suspect he had some hard
times, then. He's mellowed some, judging by his columns recently. Moderately
subtle humor was not his mode in those earlier days, not at all.</P>
</BLOCKQUOTE>
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff