mirror of https://github.com/mpv-player/mpv
1050 lines
36 KiB
XML
1050 lines
36 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision$ -->
|
|
<chapter id="codecs">
|
|
<title>Codecs</title>
|
|
|
|
<sect1 id="video-codecs">
|
|
<title>Video codecs</title>
|
|
|
|
<para>
|
|
See the <ulink url="../../codecs-status.html">codec status table</ulink>
|
|
for the complete, daily generated list. Quite a few codecs are available for
|
|
download from our homepage. Grab them from our
|
|
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">codecs page</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
The most important ones above all:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><simpara>
|
|
<emphasis role="bold">MPEG-1</emphasis> (<emphasis role="bold">VCD</emphasis>) and
|
|
<emphasis role="bold">MPEG-2</emphasis> (<emphasis role="bold">DVD</emphasis>) video
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
native decoders for <emphasis role="bold">DivX ;-), OpenDivX (DivX4),
|
|
DivX 5 (Pro), 3ivX, M$ MPEG-4</emphasis> v1, v2 and other MPEG-4 variants
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
native decoder for <emphasis role="bold">Windows Media Video 7/8</emphasis>
|
|
(<emphasis role="bold">WMV1/WMV2</emphasis>), and Win32 DLL decoder
|
|
for <emphasis role="bold">Windows Media Video 9</emphasis>
|
|
(<emphasis role="bold">WMV3</emphasis>), both used in <filename>.wmv</filename>
|
|
files
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
native <emphasis role="bold">Sorenson 1 (SVQ1)</emphasis> decoder
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
native <emphasis role="bold">Sorenson 3 (SVQ3)</emphasis> decoder
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
<emphasis role="bold">3ivx</emphasis> v1, v2 decoder
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Cinepak and <emphasis role="bold">Intel Indeo</emphasis> codecs (3.1,3.2,4.1,5.0)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
<emphasis role="bold">MJPEG</emphasis>, AVID, VCR2, ASV2 and other hardware
|
|
formats
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
VIVO 1.0, 2.0, I263 and other <emphasis role="bold">H.263(+)</emphasis> variants
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
FLI/FLC
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
<emphasis role="bold">RealVideo 1.0 & 2.0</emphasis> from
|
|
<systemitem class="library">libavcodec</systemitem>, and
|
|
<emphasis role="bold">RealVideo 3.0 & 4.0</emphasis> codecs using RealPlayer
|
|
libraries
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
native decoder for HuffYUV
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Various old simple RLE-like formats
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
If you have a Win32 codec not listed here which is not supported yet,
|
|
please read the <link linkend="codec-importing">codec importing HOWTO</link>
|
|
and help us add support for it.
|
|
</para>
|
|
|
|
|
|
<sect2 id="divx4-5">
|
|
<title>DivX4/DivX5</title>
|
|
|
|
<para>
|
|
This section contains information about the DivX4 and DivX5 codecs of
|
|
<ulink url="http://www.projectmayo.com">Project Mayo</ulink>.
|
|
Their first available alpha version was OpenDivX 4.0 alpha 47 and 48.
|
|
Support for this was included in <application>MPlayer</application> in the
|
|
past, and built by default. We also used its postprocessing code to
|
|
optionally enhance visual quality of MPEG-1/2 movies. Now we use our own,
|
|
for all file types.
|
|
</para>
|
|
|
|
<para>
|
|
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
|
|
<systemitem class="library">libavcodec</systemitem>.
|
|
Hence its usage as a decoder is
|
|
<emphasis role="bold">discouraged</emphasis>. However, it is useful for
|
|
encoding. One disadvantage of this codec is that it is not available under an
|
|
Open Source license.
|
|
</para>
|
|
|
|
<para>
|
|
DivX4 works in two modes:
|
|
<variablelist>
|
|
<varlistentry><term><option>-vc odivx</option></term>
|
|
<listitem><simpara>
|
|
Uses the codec in OpenDivX fashion. In this case it produces YV12 images
|
|
in its own buffer, and <application>MPlayer</application> does colorspace
|
|
conversion via libvo. (<emphasis role="bold">Fast, recommended!</emphasis>)
|
|
</simpara></listitem>
|
|
</varlistentry>
|
|
<varlistentry><term><option>-vc divx4</option></term>
|
|
<listitem><simpara>
|
|
Uses the colorspace conversion of the codec. In this mode you can use
|
|
YUY2/UYVY, too. (<emphasis role="bold">SLOW</emphasis>)
|
|
</simpara></listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
|
|
<para>
|
|
The <option>-vc odivx</option> 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 <option>-vc divx4</option> method. For RGB modes the speed is the
|
|
same, differing at best according to your current color depth.
|
|
<note>
|
|
<para>
|
|
If your <option>-vo</option> driver supports direct rendering, then <option>-vc
|
|
divx4</option> may be faster, or even the fastest solution.
|
|
</para>
|
|
|
|
<para>
|
|
The DivX4/5 binary codec library can be downloaded from
|
|
<ulink url="http://avifile.sf.net">avifile</ulink> or
|
|
<ulink url="http://www.divx.com">divx.com</ulink>
|
|
Unpack it, run <filename>./install.sh</filename> as root and do not forget adding
|
|
<filename class="directory">/usr/local/lib</filename> to your
|
|
<filename>/etc/ld.so.conf</filename> and running <command>ldconfig</command>.
|
|
</para>
|
|
|
|
<para>
|
|
Get the CVS version of the OLD OpenDivX core library like this:
|
|
</para>
|
|
|
|
<procedure>
|
|
<step><para>
|
|
<screen>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore</screen>
|
|
</para></step>
|
|
<step><para>
|
|
This core library is split into a decore and encore library that have to be
|
|
compiled separately. For the decore Library, simply type
|
|
<screen>
|
|
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
|
|
</screen>
|
|
</para></step>
|
|
<step><para>
|
|
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
|
|
<ulink url="ftp://ftp.mplayerhq.hu/MPlayer/contrib/divx-mf/Makefile">Makefile</ulink>.
|
|
<screen>
|
|
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
|
|
</screen>
|
|
</para></step>
|
|
</procedure>
|
|
|
|
<para>
|
|
<application>MPlayer</application> 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.
|
|
</para>
|
|
|
|
</note>
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="ffmpeg" xreflabel="FFmpeg/libavcodec">
|
|
<title>FFmpeg/libavcodec</title>
|
|
|
|
<para>
|
|
<ulink url="http://ffmpeg.org">FFmpeg</ulink> contains an
|
|
<emphasis role="bold">open source</emphasis> codec package, which is capable
|
|
of decoding streams with various audio and video codecs. It also offers an
|
|
impressing encoding facility and higher speed than the Win32 codecs or the
|
|
DivX.com DivX4/5 libraries!
|
|
</para>
|
|
|
|
<para>
|
|
It contains a lot of nice codecs, especially important are the MPEG-4 variants:
|
|
DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). Also a very interesting one
|
|
is the WMA decoder.
|
|
</para>
|
|
|
|
<para>
|
|
The most recent codec deserving credit is the <emphasis role="bold">Sorenson 3</emphasis>
|
|
(SVQ3) codec. This is the first, completely opensource implementation. It is even
|
|
faster than the original. Be sure to prefer this instead of the binary codec!
|
|
</para>
|
|
|
|
<para>
|
|
For a complete list of supported codecs please visit the FFmpeg homepage.
|
|
Supported <ulink url="http://ffmpeg.org/ffmpeg-doc.html#SEC19">video</ulink>
|
|
and <ulink url="http://ffmpeg.org/ffmpeg-doc.html#SEC20">audio</ulink> codecs.
|
|
</para>
|
|
|
|
<para>
|
|
If you use an <application>MPlayer</application> release you have
|
|
<systemitem class="library">libavcodec</systemitem>
|
|
right in the package, just build as usual. If you use
|
|
<application>MPlayer</application> from CVS you have to extract
|
|
<systemitem class="library">libavcodec</systemitem> from
|
|
the FFmpeg CVS tree as FFmpeg releases are very rare. The CVS is mostly stable
|
|
and offers the most features. In order to achieve this do:
|
|
</para>
|
|
|
|
<procedure>
|
|
<step><para>
|
|
<screen>cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg login</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/ffmpeg co -P ffmpeg/libavcodec ffmpeg/libavutil</screen>
|
|
</para></step>
|
|
<step><para>
|
|
Move the <filename>libavcodec</filename> and <filename>libavutil</filename>
|
|
directories from the FFmpeg
|
|
sources to the root of the <application>MPlayer</application> CVS tree.
|
|
It should look like this:
|
|
<filename class="directory">main/libavcodec</filename>
|
|
<filename class="directory">main/libavutil</filename>
|
|
</para><para>
|
|
Symlinking is <emphasis role="bold">not</emphasis> enough, you have to
|
|
copy/move it!
|
|
</para></step>
|
|
<step><para>
|
|
If you prefer having <systemitem class="library">libavcodec</systemitem>
|
|
updated at the same time you update
|
|
<application>MPlayer</application> CVS, put the following line into the
|
|
<filename>main/CVS/Entries</filename> file:
|
|
<screen>D/libavcodec////</screen>
|
|
<screen>D/libavutil////</screen>
|
|
</para></step>
|
|
<step><para>
|
|
Compile. <filename>configure</filename> should detect problems before
|
|
compilation.
|
|
</para></step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>
|
|
<application>MPlayer</application> from CVS does contain a
|
|
<filename>libavcodec</filename> subdirectory, but it does
|
|
<emphasis role="bold">not</emphasis> contain the source for
|
|
<systemitem class="library">libavcodec</systemitem>!
|
|
You must follow the steps above to obtain the source for this library.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
With FFmpeg and my Matrox G400, I can view even the highest resolution DivX
|
|
movies without dropped frames on my K6-2 500.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="xanim">
|
|
<title>XAnim codecs</title>
|
|
|
|
<note>
|
|
<para>
|
|
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 <application>XAnim</application>. However, the XAnim
|
|
author has yet to bring legal action against anyone for codec-related issues.
|
|
</para>
|
|
</note>
|
|
|
|
<formalpara>
|
|
<title>INSTALLATION AND USAGE</title>
|
|
<para>
|
|
<application>MPlayer</application> is capable of employing the XAnim codecs
|
|
for decoding. Follow the instructions to enable them:
|
|
</para>
|
|
</formalpara>
|
|
|
|
<procedure>
|
|
<step><para>
|
|
Download the codecs you wish to use from the
|
|
<ulink url="http://xanim.va.pubnix.com">XAnim site</ulink>.
|
|
The <emphasis role="bold">3ivx</emphasis> codec is not there, but at the
|
|
<ulink url="http://www.3ivx.com">3ivx site</ulink>.
|
|
</para></step>
|
|
<step><para>
|
|
<emphasis role="bold">OR</emphasis> download the codecs pack from our
|
|
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">codecs page</ulink>
|
|
</para></step>
|
|
<step><para>
|
|
Use the <option>--with-xanimlibdir</option> option to tell
|
|
<filename>configure</filename> where
|
|
to find the XAnim codecs. By default, it looks for them at
|
|
<filename class="directory">/usr/local/lib/codecs</filename>,
|
|
<filename class="directory">/usr/local/lib/xanim/mods</filename>,
|
|
<filename class="directory">/usr/lib/xanim/mods</filename> and
|
|
<filename class="directory">/usr/lib/xanim</filename>.
|
|
Alternatively you can set the environment variable
|
|
<envar>XANIM_MOD_DIR</envar> to the directory of the XAnim codecs.
|
|
</para></step>
|
|
<step><para>
|
|
Rename/symlink the files, cutting out the architecture stuff, so they
|
|
will have filenames like these: <filename>vid_cvid.xa</filename>,
|
|
<filename>vid_h263.xa</filename>, <filename>vid_iv50.xa</filename>
|
|
</para></step>
|
|
</procedure>
|
|
|
|
<para>
|
|
XAnim is video codec family <systemitem>xanim</systemitem>, so you may want
|
|
to use the <option>-vfm xanim</option> option to tell <application>MPlayer</application>
|
|
to use them if possible.
|
|
</para>
|
|
|
|
<para>
|
|
Tested codecs include: <emphasis role="bold">Indeo 3.2, 4.1, 5.0, CVID, 3ivX,
|
|
H.263.</emphasis>
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="vivo-video">
|
|
<title>VIVO video</title>
|
|
<para>
|
|
<application>MPlayer</application> can play Vivo (1.0 and 2.0) videos. The
|
|
most suitable codec for 1.0 files is FFmpeg's H.263 decoder, you can use it
|
|
with the <option>-vc ffh263</option> option. For 2.0 files, use the
|
|
Win32 DLL through the <option>-vc vivo</option> option. If you do not supply
|
|
command line options <application>MPlayer</application> selects the best codec
|
|
automatically.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="mpeg12">
|
|
<title>MPEG-1/2 video</title>
|
|
<para>
|
|
MPEG-1 and MPEG-2 are decoded by the multiplatform native <systemitem
|
|
class="library">libmpeg2</systemitem> library, whose source code is
|
|
included in <application>MPlayer</application>. We handle buggy MPEG-1/2
|
|
video files by catching <systemitem>Signal 11</systemitem>
|
|
(<systemitem>segmentation fault</systemitem>), and quickly
|
|
reinitializing the codec, continuing exactly from where the failure
|
|
occurred. This recovery technique has no measurable speed penalty.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="avicodecs">
|
|
<title>MS Video1, Cinepak CVID, and other older codecs</title>
|
|
<para>
|
|
<application>MPlayer</application> is able to play most of the older codecs
|
|
used in AVI and MOV files.
|
|
In the past they were decoded with binary Win32 codecs, but now we have
|
|
<emphasis role="bold">native codecs</emphasis> for most of them using
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="realvideo">
|
|
<title>RealVideo</title>
|
|
|
|
<para>
|
|
<application>MPlayer</application> supports decoding all versions of
|
|
RealVideo:
|
|
|
|
<itemizedlist>
|
|
<listitem><simpara>
|
|
RealVideo 1.0, 2.0 (fourcc RV10, RV20) - en/decoding supported by
|
|
<systemitem class="library">libavcodec</systemitem>
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
RealVideo 3.0, 4.0 (fourcc RV30, RV40) - decoding supported by
|
|
<emphasis role="bold">RealPlayer libraries</emphasis>
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Download Real codecs from
|
|
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</ulink>
|
|
and extract them to the
|
|
<filename class="directory">/usr/local/lib/codecs</filename> directory.
|
|
If you want to store them in a different location, pass the
|
|
<option>--with-reallibdir</option> option to <command>configure</command>.
|
|
</para>
|
|
|
|
<note><para>
|
|
<application>RealPlayer</application> libraries currently
|
|
<emphasis role="bold">only work with Linux, FreeBSD, NetBSD and Cygwin on the x86,
|
|
Alpha and PowerPC (Linux/Alpha and Linux/PowerPC have been tested) platforms and with Mac OS X</emphasis>.
|
|
</para></note>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="xvid">
|
|
<title>XviD</title>
|
|
|
|
<para>
|
|
<ulink url="http://www.xvid.org">XviD</ulink> is a free software MPEG-4 ASP
|
|
compliant video codec, which features two pass encoding and full MPEG-4 ASP
|
|
support, making it a lot more efficient than the well-known DivX codec.
|
|
It yields very good video quality and good performance due to CPU
|
|
optimizations for most modern processors.
|
|
</para>
|
|
<para>
|
|
It began as a forked development of the OpenDivX codec.
|
|
This 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.
|
|
</para>
|
|
|
|
<procedure>
|
|
<title>Installing <systemitem class="library">XviD</systemitem></title>
|
|
<para>
|
|
Like most open source software, it is available in two flavors:
|
|
<ulink url="http://www.xvid.org/downloads.html">official releases</ulink>
|
|
and the CVS version.
|
|
The CVS version is usually stable enough to use, as most of the time it
|
|
features fixes for bugs that exist in releases.
|
|
Here is what to do to make <systemitem class="library">XviD</systemitem>
|
|
CVS work with <application>MEncoder</application> (you need at least
|
|
<application>autoconf</application> 2.50,
|
|
<application>automake</application> and <application>libtool</application>):
|
|
</para>
|
|
<step><para>
|
|
<screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>cd xvidcore/build/generic</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>./bootstrap.sh</screen>
|
|
</para></step>
|
|
<step><para>
|
|
<screen>./configure</screen>
|
|
You may have to add some options (examine the output of
|
|
<command>./configure --help</command>).
|
|
</para></step>
|
|
<step><para>
|
|
<screen>make && make install</screen>
|
|
</para></step>
|
|
<step><para>
|
|
If you specified <option>--enable-divxcompat</option>,
|
|
copy <filename>../../src/divx4.h</filename> to
|
|
<filename class="directory">/usr/local/include/</filename>.
|
|
</para></step>
|
|
<step><para>
|
|
Recompile <application>MPlayer</application> with
|
|
<option>--with-xvidlibdir=<replaceable>/path/to/</replaceable>libxvidcore.a</option>
|
|
<option>--with-xvidincdir=<replaceable>/path/to/</replaceable>xvid.h</option>
|
|
</para></step>
|
|
</procedure>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="sorenson">
|
|
<title>Sorenson</title>
|
|
|
|
<para>
|
|
Sorenson is a video codec developed by Sorenson Media and licensed to Apple who
|
|
distribute it with their <application>QuickTime Player</application>. We are
|
|
currently able to decode all version of Sorenson video files with the following
|
|
decoders:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><simpara>
|
|
Sorenson Video v1 (fourcc <emphasis>SVQ1</emphasis>) - decoding supported
|
|
by <emphasis role="bold">native codec</emphasis>
|
|
(<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Sorenson Video v3 (fourcc <emphasis>SVQ3</emphasis>) - decoding supported by
|
|
<emphasis role="bold">native codec</emphasis>
|
|
(<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
|
|
<procedure>
|
|
<title>COMPILING MPLAYER WITH QUICKTIME LIBRARIES SUPPORT</title>
|
|
<note><para>Currently only 32-bit Intel platforms are supported.</para></note>
|
|
<step><para>download <application>MPlayer</application> CVS</para></step>
|
|
<step><para>download QuickTime DLL pack from
|
|
<ulink url="http://www.mplayerhq.hu/MPlayer/releases/codecs/"/>
|
|
</para></step>
|
|
<step><para>extract QuickTime DLL pack to your Win32 codecs directory
|
|
(default: <filename class="directory">/usr/local/lib/codecs/</filename>)
|
|
</para></step>
|
|
<step><para>compile <application>MPlayer</application></para></step>
|
|
</procedure>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="codec-x264">
|
|
<title>x264</title>
|
|
|
|
<sect3 id="codec-x264-whatis">
|
|
<title>What is x264?</title>
|
|
<para>
|
|
<systemitem class="library">x264</systemitem> is a library for
|
|
creating H.264 video streams.
|
|
It is not 100% complete, but currently it has at least some kind
|
|
of support for most of the H.264 features which impact quality.
|
|
There are also many advanced features in the H.264 specification
|
|
which have nothing to do with video quality per se; many of these
|
|
are not yet implemented in
|
|
<systemitem class="library">x264</systemitem>.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<title>Encoder features</title>
|
|
<listitem><para>CAVLC/CABAC</para></listitem>
|
|
<listitem><para>Multi-references</para></listitem>
|
|
<listitem><para>Intra: all macroblock types (16x16, 8x8, and 4x4 with
|
|
all predictions)</para></listitem>
|
|
<listitem><para>Inter P: all partitions (from 16x16 down to
|
|
4x4)</para></listitem>
|
|
<listitem><para>Inter B: partitions from 16x16 down to 8x8
|
|
(including SKIP/DIRECT)</para></listitem>
|
|
<listitem><para>Ratecontrol: constant quantizer, constant bitrate,
|
|
single or multipass ABR, optional VBV</para></listitem>
|
|
<listitem><para>Scene cut detection</para></listitem>
|
|
<listitem><para>Adaptive B-frame placement</para></listitem>
|
|
<listitem><para>B-frames as references / arbitrary frame
|
|
order</para></listitem>
|
|
<listitem><para>8x8 and 4x4 adaptive spatial transform</para></listitem>
|
|
<listitem><para>Lossless mode</para></listitem>
|
|
<listitem><para>Custom quantization matrices</para></listitem>
|
|
<listitem><para>Parallel encoding of multiple slices</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3 id="codec-h264-whatis">
|
|
<title>What is H.264?</title>
|
|
<para>
|
|
H.264 is one name for a new digital video codec jointly developed
|
|
by the ITU and MPEG.
|
|
It can also be correctly referred to by the cumbersome names of
|
|
"ISO/IEC 14496-10" or "MPEG-4 Part 10".
|
|
More frequently, it is referred to as "MPEG-4 AVC" or just "AVC".
|
|
</para>
|
|
<para>
|
|
Whatever you call it, H.264 may be worth trying because it can
|
|
typically match the quality of MPEG-4 ASP with 5%-30% less
|
|
bitrate.
|
|
Actual results will depend on both the source material and the
|
|
encoder.
|
|
The gains from using H.264 do not come for free: Decoding H.264
|
|
streams seems to have steep CPU and memory requirements.
|
|
For instance, on a 1733 MHz Athlon, a DVD-resolution 1500kbps H.264
|
|
video requires around 35% CPU to decode.
|
|
By comparison, decoding a DVD-resolution 1500kbps MPEG-4 ASP stream
|
|
requires around 10% CPU.
|
|
This means that decoding high-definition streams is almost out of
|
|
the question for most users.
|
|
It also means that even a decent DVD rip may sometimes stutter on
|
|
processors slower than 2.0 GHz or so.
|
|
</para>
|
|
<para>
|
|
At least with <systemitem class="library">x264</systemitem>,
|
|
encoding requirements are not much worse than what you are used to
|
|
with MPEG-4 ASP.
|
|
For instance, on a 1733 MHz Athlon a typical DVD encode would run
|
|
at 5-15fps.
|
|
</para>
|
|
<para>
|
|
This document is not intended to explain the details of H.264,
|
|
but if you are interested in a brief overview, you may want to read
|
|
<ulink url="http://www.cdt.luth.se/~peppar/kurs/smd151/spie04-h264OverviewPaper.pdf">The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions</ulink>.
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3 id="codec-x264-playback">
|
|
<title>How can I play H.264 videos with <application>MPlayer</application>?</title>
|
|
<para>
|
|
<application>MPlayer</application> uses
|
|
<systemitem class="library">libavcodec</systemitem>'s H.264
|
|
decoder.
|
|
<systemitem class="library">libavcodec</systemitem> has had at
|
|
least minimally usable H.264 decoding since around July 2004,
|
|
however major changes and improvements have been implemented since
|
|
that time, both in terms of more functionalities supported and in
|
|
terms of improved CPU usage.
|
|
Just to be certain, it is always a good idea to use a recent CVS
|
|
checkout.
|
|
</para>
|
|
<para>
|
|
If you want a quick and easy way to know whether there have been
|
|
recent changes to <systemitem class="library">libavcodec</systemitem>'s
|
|
H.264 decoding, you might keep an eye on
|
|
<ulink url="http://mplayerhq.hu/cgi-bin/cvsweb.cgi/ffmpeg/libavcodec/h264.c?cvsroot=FFMpeg">FFmpeg CVS repository's web interface</ulink>.
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3 id="codec-x264-encode">
|
|
<title>How can I encode videos using <application>MEncoder</application> and <systemitem class="library">x264</systemitem>?</title>
|
|
<para>
|
|
If you have the subversion client installed, the latest x264
|
|
sources can be gotten with this command:
|
|
<screen>
|
|
svn co svn://svn.videolan.org/x264/trunk x264<!--
|
|
--></screen>
|
|
<application>MPlayer</application> sources are updated whenever
|
|
an <systemitem class="library">x264</systemitem> API change
|
|
occurs, so it is always suggested to use CVS
|
|
<application>MPlayer</application> as well.
|
|
Perhaps this situation will change when and if an
|
|
<systemitem class="library">x264</systemitem> "release" occurs.
|
|
Meanwhile, <systemitem class="library">x264</systemitem> should
|
|
be considered very unstable, in the sense that its programming
|
|
interface is subject to change.
|
|
</para>
|
|
<para>
|
|
<systemitem class="library">x264</systemitem> is built and
|
|
installed in the standard way:
|
|
<screen>
|
|
./configure && make && sudo make install<!--
|
|
--></screen>
|
|
This installs libx264.a in /usr/local/lib and x264.h is placed in
|
|
/usr/local/include.
|
|
|
|
With the <systemitem class="library">x264</systemitem> library
|
|
and header placed in the standard locations, building
|
|
<application>MPlayer</application> with
|
|
<systemitem class="library">x264</systemitem> support is easy.
|
|
Just run the standard:
|
|
<screen>./configure && make && sudo make install</screen>
|
|
The configure script will autodetect that you have satisfied the
|
|
requirements for <systemitem class="library">x264</systemitem>.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect1 id="audio-codecs">
|
|
<title>Audio codecs</title>
|
|
|
|
<itemizedlist>
|
|
<title>The most important audio codecs above all:</title>
|
|
<listitem><simpara>
|
|
MPEG layer 1/2/3 (MP1/2/3) audio (<emphasis role="bold">native</emphasis>
|
|
code, with MMX/SSE/3DNow! optimization)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Windows Media Audio 7 and 8 (AKA WMAv1 and WMAv2) (<emphasis role="bold">native</emphasis> code, with
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Windows Media Audio 9 (WMAv3) (using DMO DLL)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
AC3 Dolby audio (<emphasis role="bold">native</emphasis> code, with
|
|
MMX/SSE/3DNow! optimization)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
AC3 passing through sound card hardware
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
AAC
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Ogg Vorbis audio codec (<emphasis role="bold">native</emphasis> library)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
RealAudio: DNET (low bitrate AC3), Cook, Sipro and ATRAC3
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
QuickTime: Qualcomm and QDesign audio codecs
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
VIVO audio (g723, Vivo Siren)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
Voxware audio (using DirectShow DLL)
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
alaw and ulaw, various gsm, adpcm and pcm formats and other simple old
|
|
audio codecs
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
|
|
|
|
<sect2 id="swac3">
|
|
<title>Software AC3 decoding</title>
|
|
|
|
<para>
|
|
This is the default decoder used for files with AC3 audio.
|
|
</para>
|
|
|
|
<para>
|
|
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.
|
|
</para>
|
|
|
|
<para>
|
|
Use the <option>-channels</option> option to select the number of output
|
|
channels. Use <option>-channels 2</option> for a stereo downmix. For a 4
|
|
channel downmix (Left Front, Right Front, Left Surround and Right Surround
|
|
outputs), use <option>-channels 4</option>. In this case, any center
|
|
channel will be mixed equally to the front channels. <option>-channels
|
|
6</option> will output all the AC3 channels as they are encoded - in the
|
|
order Left, Right, Left Surround, Right Surround, Center and LFE.
|
|
</para>
|
|
|
|
<para>
|
|
The default number of output channels is 2.
|
|
</para>
|
|
|
|
<para>
|
|
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).
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="hwac3">
|
|
<title>Hardware AC3 decoding</title>
|
|
<para>
|
|
You need an AC3 capable sound card, with digital out (S/PDIF). The card's
|
|
driver must properly support the AFMT_AC3 format (C-Media does). Connect
|
|
your AC3 decoder to the S/PDIF output, and use the <option>-ac
|
|
hwac3</option> option. It is experimental but known to work with C-Media
|
|
cards and Soundblaster Live! + ALSA (but not OSS) drivers and DXR3/Hollywood+
|
|
MPEG decoder cards.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="libmad">
|
|
<title>libmad support</title>
|
|
|
|
<para>
|
|
<ulink url="http://www.underbit.com/products/mad/">libmad</ulink> is a multiplatform,
|
|
integer (internally 24bit PCM) only
|
|
MPEG audio decoding library. It does not handle broken files well, and it
|
|
sometimes has problems with seeking, but it may perform better on FPU-less
|
|
(such as <link linkend="arm">ARM</link>) platform than mp3lib.
|
|
</para>
|
|
|
|
<para>
|
|
To enable support, compile with the <option>--enable-mad</option> configure
|
|
option.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="hwmpa">
|
|
<title>Hardware MPEG audio codec</title>
|
|
|
|
<para>
|
|
This codec (selected by -ac hwmpa) passes through MPEG audio packets
|
|
to hardware decoders, such as the ones found in full-featured DVB cards
|
|
and DXR2 adapters.
|
|
Don't use it in combination with any other audio output device
|
|
(such as OSS and ALSA) that isn't able to decode it (you will hear
|
|
only white noise).
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="vivo-audio">
|
|
<title>VIVO audio</title>
|
|
<para>
|
|
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 <emphasis role="bold">g.723</emphasis> audio,
|
|
and VIVO/2.0 files have <emphasis role="bold">Vivo Siren</emphasis> audio. Both are
|
|
supported.
|
|
</para>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="realaudio">
|
|
<title>RealAudio</title>
|
|
|
|
<para>
|
|
<application>MPlayer</application> supports decoding nearly all versions of
|
|
RealAudio:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><simpara>
|
|
RealAudio DNET - decoding supported by
|
|
<systemitem class="library">liba52</systemitem>
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
RealAudio Cook/Sipro/ATRAC3 - decoding supported by
|
|
<emphasis role="bold">RealPlayer libraries</emphasis>
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Instructions on how to install the RealPlayer libraries are in the
|
|
<link linkend="realvideo">RealVideo</link> section.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="qdesign">
|
|
<title>QDesign codecs</title>
|
|
<para>
|
|
QDesign audio streams (fourcc:<emphasis>QDMC, QDM2</emphasis>) are found
|
|
in MOV/QT files. Both versions of this codec can be decoded with QuickTime
|
|
libraries. For installation instructions please see the
|
|
<link linkend="sorenson">Sorenson video codec</link> section.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="qualcomm">
|
|
<title>Qualcomm codecs</title>
|
|
<para>
|
|
Qualcomm audio streams (fourcc:<emphasis>Qclp</emphasis>) is found
|
|
in MOV/QT files. It can be decoded with QuickTime
|
|
libraries. For installation instructions please see the
|
|
<link linkend="sorenson">Sorenson video codec</link> section.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="aac">
|
|
<title>AAC codec</title>
|
|
<para>
|
|
AAC (Advanced Audio Coding) is an audio codec sometimes found in MOV and MP4
|
|
files. An open source decoder called FAAD is available from
|
|
<ulink url="http://www.audiocoding.com"/>.
|
|
<application>MPlayer</application> includes a CVS snapshot of libfaad 2.1
|
|
beta, so you do not need to get it separately.
|
|
</para>
|
|
|
|
<para>
|
|
If you use gcc 3.2 which fails to compile our internal FAAD or want to use
|
|
the external library for some other reason, download the library from the
|
|
<ulink url="http://www.audiocoding.com/modules/mydownloads/">download page</ulink>
|
|
and pass <option>--enable-external-faad</option> to <filename>configure</filename>.
|
|
You do not need all of faad2 to decode AAC files, libfaad is enough. Build
|
|
it like this:
|
|
<screen>
|
|
cd faad2/
|
|
sh bootstrap
|
|
./configure
|
|
cd libfaad
|
|
make
|
|
make install
|
|
</screen>
|
|
Binaries are not available from audiocoding.com, but you can (apt-)get Debian
|
|
packages from <ulink url="http://hpisi.nerim.net">Christian Marillat's homepage</ulink>,
|
|
Mandrake/Mandriva RPMs from the <ulink url="http://plf.zarb.org">P.L.F</ulink> and RedHat RPMs
|
|
from <ulink url="http://greysector.rangers.eu.org/">Grey Sector</ulink>.
|
|
</para>
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect1 id="codec-importing">
|
|
<title>Win32 codecs importing HOWTO</title>
|
|
|
|
<!-- TODO: a short paragraph of text would be nice here... -->
|
|
|
|
<sect2 id="vfw-codecs">
|
|
<title>VFW codecs</title>
|
|
|
|
<para>
|
|
VFW (Video for Windows) is the old Video API for Windows. Its codecs have
|
|
the <filename>.DLL</filename> or (rarely) <filename>.DRV</filename>
|
|
extension. If <application>MPlayer</application> fails at playing your AVI
|
|
with this kind of message:
|
|
<screen>UNKNOWN video codec: HFYU (0x55594648)</screen>
|
|
</para>
|
|
|
|
<para>
|
|
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 <filename>system.ini</filename> contains this information in a
|
|
line that reads:
|
|
<programlisting>VIDC.HFYU=huffyuv.dll</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
So you need the <filename>huffyuv.dll</filename> file. Note that the audio
|
|
codecs are specified by the MSACM prefix:
|
|
<programlisting>msacm.l3acm=L3codeca.acm</programlisting>
|
|
</para>
|
|
|
|
<para>
|
|
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:
|
|
<systemitem role="url">
|
|
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
|
|
</systemitem>
|
|
</para>
|
|
|
|
<note><para>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.
|
|
</para></note>
|
|
</sect2>
|
|
|
|
|
|
<sect2 id="dshow-codecs">
|
|
<title>DirectShow codecs</title>
|
|
|
|
<para>
|
|
DirectShow is the newer Video API, which is even worse than its predecessor.
|
|
Things are harder with DirectShow, since
|
|
<itemizedlist>
|
|
<listitem><simpara>
|
|
<filename>system.ini</filename> does not contain the needed information,
|
|
instead it is stored in the registry and
|
|
</simpara></listitem>
|
|
<listitem><simpara>
|
|
we need the GUID of the codec.
|
|
</simpara></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<procedure>
|
|
<title>New Method:</title>
|
|
<para>
|
|
Using <application>Microsoft GraphEdit</application> (fast)
|
|
</para>
|
|
<step><para>
|
|
Get <application>GraphEdit</application> from either DirectX SDK or
|
|
<ulink url="http://doom9.net">doom9</ulink>
|
|
</para></step>
|
|
<step><para>
|
|
Start <command>graphedit.exe</command>.
|
|
</para></step>
|
|
<step><para>
|
|
From the menu select Graph -> Insert Filters.
|
|
</para></step>
|
|
<step><para>
|
|
Expand item <systemitem>DirectShow Filters</systemitem>
|
|
</para></step>
|
|
<step><para>
|
|
Select the right codec name and expand item.
|
|
</para></step>
|
|
<step><para>
|
|
In the entry <systemitem>DisplayName</systemitem> look at the text in
|
|
winged brackets after the backslash and write it down (five dash-delimited
|
|
blocks, the GUID).
|
|
</para></step>
|
|
<step><para>
|
|
The codec binary is the file specified in the <systemitem>Filename</systemitem>
|
|
entry.
|
|
</para></step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>
|
|
If there is no <systemitem>Filename</systemitem> and
|
|
<systemitem>DisplayName</systemitem> contains something like
|
|
<systemitem>device:dmo</systemitem>, then it is a DMO-Codec.
|
|
</para>
|
|
</note>
|
|
|
|
<procedure>
|
|
<title>Old Method:</title>
|
|
<para>
|
|
Take a deep breath and start searching the registry...
|
|
</para>
|
|
<step><para>
|
|
Start <command>regedit</command>.
|
|
</para></step>
|
|
<step><para>
|
|
Press <keycap>Ctrl</keycap>+<keycap>F</keycap>, disable the first two
|
|
checkboxes, and enable the third. Type in the fourcc of the codec (e.g.
|
|
<userinput>TM20</userinput>).
|
|
</para></step>
|
|
<step><para>
|
|
You should see a field which contains the path and the filename (e.g.
|
|
<filename>C:\WINDOWS\SYSTEM\TM20DEC.AX</filename>).
|
|
</para></step>
|
|
<step><para>
|
|
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
|
|
<guimenu>File</guimenu> -> <guisubmenu>Properties</guisubmenu> ->
|
|
<guimenuitem>Advanced</guimenuitem>.
|
|
If not, you are out of luck. Try guessing (e.g. search for TrueMotion).
|
|
</para></step>
|
|
<step><para>
|
|
If the GUID is found you should see a <guilabel>FriendlyName</guilabel>
|
|
and a <guilabel>CLSID</guilabel> field. Write down the 16 byte CLSID,
|
|
this is the GUID we need.
|
|
</para></step>
|
|
</procedure>
|
|
|
|
<note>
|
|
<para>
|
|
If searching fails, try enabling all the checkboxes. You may have
|
|
false hits, but you may get lucky...
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
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:
|
|
<systemitem
|
|
role="url">ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
|
|
</systemitem>
|
|
</para>
|
|
|
|
<para>
|
|
If you want to add a codec yourself, read
|
|
<ulink url="http://www.mplayerhq.hu/MPlayer/DOCS/tech/codecs.conf.txt">DOCS/tech/codecs.conf.txt</ulink>.
|
|
</para>
|
|
|
|
</sect2>
|
|
</sect1>
|
|
|
|
</chapter>
|