view DOCS/xml/en/ports.xml @ 11964:d051cf39331e

- Cleaned up the Makefile, added some *.o's - Added some declarations of variable's in netstream.c Patch by Anton Verburg <anton@frog.nl>
author gabucino
date Tue, 17 Feb 2004 11:22:32 +0000
parents 0f25119d6a96
children 0a20e1643227
line wrap: on
line source

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<chapter id="ports" xreflabel="Ports">
<title>Ports</title>

<sect1 id="linux">
<title>Linux</title>
<para>
The main development platform is Linux on x86, although
<application>MPlayer</application> works on many other Linux ports.
Binary packages of <application>MPlayer</application> are available from several
sources. However, <emphasis role="bold">none of these packages are supported</emphasis>.
Report problems to the authors, not to us.
</para>

<sect2 id="debian">
<title>Debian packaging</title>
<para>
To build a Debian package, run the following command in the
<application>MPlayer</application> source directory:
<screen>fakeroot debian/rules binary</screen>
As root you can then install the <filename>.deb</filename> package as usual:
<screen>dpkg -i ../mplayer_<replaceable>version</replaceable>.deb</screen>
</para>

<para>
Christian Marillat has been making unofficial Debian
<application>MPlayer</application>, <application>MEncoder</application> and
font packages for a while, you can (apt-)get them from his
<ulink url="http://marillat.free.fr/">homepage</ulink>.
</para>
</sect2>

<sect2 id="rpm">
<title>RPM packaging</title>
<para>
Dominik Mierzejewski created and maintains official Red Hat RPM packages of
<application>MPlayer</application>. They are available from his
<ulink url="http://www.piorunek.pl/~dominik/linux/pkgs/mplayer/">homepage</ulink>.
</para>

<para>
Mandrake RPM packages are available from the <ulink url="http://plf.zarb.org/">P.L.F.</ulink>.
SuSE used to include a crippled version of <application>MPlayer</application>
in their distribution. They have removed it in their latest releases. You can
get working RPMs from
<ulink url="http://packman.links2linux.de/?action=128">links2linux.de</ulink>.
</para>
</sect2>

<sect2 id="arm">
<title>ARM</title>
<para>
<application>MPlayer</application> works on Linux PDAs with ARM CPU e.g. Sharp Zaurus,
Compaq Ipaq. The easiest way to obtain <application>MPlayer</application> is to get it
from one of the <ulink url="http://www.openzaurus.org">OpenZaurus</ulink> package feeds. If
you want to compile it yourself, you should look at the
<ulink url="http://openzaurus.bkbits.net:8080/buildroot/src/packages/mplayer?nav=index.html|src/.|src/packages">mplayer</ulink>
and the
<ulink url="http://openzaurus.bkbits.net:8080/buildroot/src/packages/libavcodec?nav=index.html|src/.|src/packages">libavcodec</ulink>
directory in the OpenZaurus distribution buildroot. These always have the latest
Makefile and patches used for building a CVS <application>MPlayer</application> with
<systemitem class="library">libavcodec</systemitem>.
If you need a GUI frontend, you can use xmms-embedded.
</para>
</sect2>
</sect1>

<sect1 id="bsd">
<title>*BSD</title>
<para>
<application>MPlayer</application> runs on FreeBSD, OpenBSD, NetBSD,
BSD/OS and Darwin. There are ports/pkgsrc/fink/etc versions of <application>MPlayer</application>
available that are probably easier to use than our raw sources.
</para>

<para>
To build <application>MPlayer</application> you will need GNU make
(gmake - native BSD make will not work) and a recent version of binutils.
</para>

<para>
If <application>MPlayer</application> complains about not finding <filename>/dev/cdrom</filename>
or <filename>/dev/dvd</filename>, create an appropriate symbolic link:
<screen>ln -s /dev/<replaceable>your_cdrom_device</replaceable> /dev/cdrom</screen>
</para>

<para>
To use Win32 DLLs with <application>MPlayer</application> you will need to
re-compile the kernel with &quot;<envar>option USER_LDT</envar>&quot;
(unless you run FreeBSD-CURRENT,
where this is the default).
</para>


<sect2 id="freebsd">
<title>FreeBSD</title>
<para>
If your CPU has SSE, recompile your kernel with
&quot;<envar>options CPU_ENABLE_SSE</envar>&quot; (FreeBSD-STABLE or kernel
patches required).
</para>
</sect2>

<sect2 id="openbsd">
<title>OpenBSD</title>
<para>
Due to limitations in different versions of gas (relocation vs MMX), you
will need to compile in two steps: First make sure that the non-native as
is first in your <envar>$PATH</envar> and do a <command>gmake -k</command>, then
make sure that the native version is used and do <command>gmake</command>.
</para>
</sect2>

<sect2 id="darwin">
<title>Darwin</title>
<para>
See the <link linkend="macos">Mac OS</link> section.
</para>
</sect2>
</sect1>

<sect1 id="solaris">
<title>Sun Solaris</title>
<para>
<application>MPlayer</application> should work on Solaris 2.6 or newer.
</para>

<para>
On <emphasis role="bold">UltraSPARCs</emphasis>, <application>MPlayer</application>
takes advantage of their <emphasis role="bold">VIS</emphasis> extensions
(equivalent to MMX), currently only in
<systemitem class="library">libmpeg2</systemitem>,
<systemitem class="library">libvo</systemitem>
and <systemitem class="library">libavcodec</systemitem>, but not in
<systemitem class="library">mp3lib</systemitem>. You can watch a VOB file
on a 400MHz CPU. You'll need
<ulink url="http://www.sun.com/sparc/vis/mediaLib.html"><systemitem class="library">mLib</systemitem></ulink>
installed.
</para>

<para>
To build the package you will need GNU <application>make</application>
(<filename>gmake</filename>, <filename>/opt/sfw/gmake</filename>), native
Solaris make will not work. Typical error you get when building with
Solaris' make instead of GNU make:
<screen>
   % /usr/ccs/bin/make
   make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
</screen>
</para>

<para>
On Solaris SPARC, you need the GNU C/C++ Compiler; it does not matter if
GNU C/C++ compiler is configured with or without the GNU assembler.
</para>

<para>
On Solaris x86, you need the GNU assembler and the GNU C/C++ compiler,
configured to use the GNU assembler! The mplayer code on the x86 platform
makes heavy use of MMX, SSE and 3DNOW! instructions that cannot be compiled
using Sun's assembler <filename>/usr/ccs/bin/as</filename>.
</para>

<para>The <filename>configure</filename> script tries to find out, which
assembler program is used by your &quot;gcc&quot; command (in case the autodetection
fails, use the <option>--as=<replaceable>/wherever/you/have/installed/gnu-as</replaceable></option>
option to tell the <filename>configure</filename> script where it can find GNU
"as" on your system).
</para>

<para>
Error message from <filename>configure</filename> on a Solaris x86 system using
GCC without GNU assembler:
<screen>
   % configure
   ...
   Checking assembler (/usr/ccs/bin/as) ... , failed
   Please upgrade(downgrade) binutils to 2.10.1...
</screen>
(Solution: Install and use a gcc configured with <option>--with-as=gas</option>)
</para>

<para>
Typical error you get when building with a GNU C compiler that does not use GNU as:
<screen>
   % gmake
   ...
   gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
        -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
   Assembler: mplayer.c
   "(stdin)", line 3567 : Illegal mnemonic
   "(stdin)", line 3567 : Syntax error
   ... more "Illegal mnemonic" and "Syntax error" errors ...
</screen>
</para>

<para>
Due to bugs in Solaris 8, you may not be able to play DVD discs larger than 4 GB:
</para>

<itemizedlist>
<listitem><para>
The sd(7D) driver on Solaris 8 x86 has a bug when accessing a disk block >4GB
on a device using a logical blocksize != DEV_BSIZE (i.e. CD-ROM and DVD media).
Due to a 32Bit int overflow, a disk address modulo 4GB is accessed
(<ulink url="http://groups.yahoo.com/group/solarisonintel/message/22516"/>).
This problem does not exist in the SPARC version of Solaris 8.
</para></listitem>

<listitem><para>
A similar bug is present in the hsfs(7FS) filesystem code (aka ISO9660),
hsfs may not not support partitions/disks larger than 4GB, all data is
accessed modulo 4GB
(<ulink url="http://groups.yahoo.com/group/solarisonintel/message/22592"/>).
The hsfs problem can be fixed by installing patch 109764-04 (sparc) / 109765-04 (x86).
</para></listitem>
</itemizedlist>

<para>
On Solaris with an UltraSPARC CPU, you can get some extra speed by using the
CPU's VIS instructions for certain time consuming operations. VIS acceleration
can be used in <application>MPlayer</application> by calling functions in Sun's
<ulink url="http://www.sun.com/sparc/vis/mediaLib.html">mediaLib</ulink>.
</para>

<para>
VIS accelerated operations from mediaLib are used for mpeg2 video decoding
and for color space conversion in the video output drivers.
</para>
</sect1>

<sect1 id="irix">
<title>Silicon Graphics Irix</title>
<para>
You can either try to install the GNU install program, and (if you did
not put it in your global path) then point to the location with:
<screen>./configure --with-install=<replaceable>/path/and/name/of/install</replaceable></screen>
</para>

<para>
Or you can use the default install delivered with IRIX 6.5 in which case
you will have to edit the <filename>Makefile</filename> by hand a little bit.
Change the following two lines:
<programlisting>
  $(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1

  $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf
</programlisting>
to:
<programlisting>
  $(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/

  $(INSTALL) -m 644 codecs.conf $(CONFDIR)/
</programlisting>
And then do (from within the <application>MPlayer</application> source dir):
<screen>cp DOCS/mplayer.1 . ; cp etc/codecs.conf .</screen>
and then go on with building and installing.
</para>
</sect1>

<sect1 id="qnx">
<title>QNX</title>
<para>
Works. You'll need to download SDL for QNX, and install it. Then run
<application>MPlayer</application> with <option>-vo sdl:photon</option>
and <option>-ao sdl:nto</option> options, and it should be fast.
</para>

<para>
The <option>-vo x11</option> output will be even slower than on Linux,
since QNX has only X <emphasis>emulation</emphasis> which is VERY slow. Use SDL.
</para>
</sect1>

<sect1 id="windows">
<title>Windows</title>

<para>Yes, <application>MPlayer</application> runs on Windows under
  <ulink url="http://www.cygwin.com/"><application>Cygwin</application></ulink> and
  <ulink url="http://www.mingw.org/"><application>MinGW</application></ulink>.
  It does not have a GUI yet, but the command line version is almost completely
  functional. <ulink url="../../tech/patches.txt">Patches</ulink> are always welcome.
  You should check out the
  <ulink url="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin/">mplayer-cygwin</ulink>
  mailing list for help and latest information.</para>

<para>Best results are achieved with the native DirectX video output driver
  (<option>-vo directx</option>) and the native Windows waveout audio driver
  (<option>-ao win32</option>)  as OpenGL does not work and SDL is known to
  distort sound and image or crash on some systems. If the image is
  distorted, try turning off hardware acceleration with
  <option>-vo directx:noaccel</option>. Download
  <ulink url="http://www.videolan.org/vlc/dx7headers.tgz">DirectX 7 header files</ulink>
  to compile the DirectX video output driver.</para>

<para>You can use Win32 codecs and Real Win32 codecs (not Real Linux codecs)
  if you want to. Put the codecs somewhere in your path or pass
  <option>--with-codecsdir=<replaceable>c:/path/to/your/codecs</replaceable></option> (alternatively
  <option>--with-codecsdir=<replaceable>/path/to/your/codecs</replaceable></option> only on
  <application>Cygwin</application>) to <filename>configure</filename>. We
  have had some reports that Real DLLs need to be writable by the user running
  <application>MPlayer</application>, but only on some systems. Try making
  them writable if you have problems. QuickTime DLLs also work, but you will
  have to put them in your Windows system directory
  (<filename class="directory"><replaceable>C:\Windows\system\</replaceable></filename>
  or similar).</para>

<para>The <application>Cygwin</application>/<application>MinGW</application>
  console is rather slow. Redirecting output or using the
  <option>-quiet</option> option has been reported to improve performance on
  some systems. Direct rendering (<option>-dr</option>) may also help.
  You can prevent OSD flicker through double buffering with the
  <option>-double</option> option. If playback is jerky, try
  <option>-autosync 100</option>. If some of these options help you, you
  may want to put them in your config file.</para>

<para>Sascha Sommer releases official Windows binaries from time to time,
  Joey Parrish makes unofficial Windows packages complete with installer.
  Look for these in the Windows section of
  <ulink url="http://www.mplayerhq.hu/homepage/projects.html#windows">our projects page</ulink>.</para>

<sect2 id="cygwin">
<title><application>Cygwin</application></title>

<para><application>Cygwin</application> versions prior to 1.5.0 do
  not include <filename>inttypes.h</filename>. Put this
  <ulink url="http://www.mplayerhq.hu/MPlayer/releases/win32-beta/contrib/inttypes.h">inttypes.h</ulink>
  in <filename class="directory">/usr/include/</filename> in order to
  make <application>MPlayer</application> compile.</para>

<para>DirectX header files need to be extracted to <filename class="directory">/usr/include/</filename> or
  <filename class="directory">/usr/local/include/</filename>.</para>

<para>Instructions and files for making SDL run under
  <application>Cygwin</application> can be found on the
  <ulink url="http://www.libsdl.org/extras/win32/cygwin/">libsdl site</ulink>.</para>

<para>You can play VCDs by playing the <filename>.DAT</filename> or <filename>.MPG</filename> files
  that Windows exposes on VCDs.  It works like this (adjust for the drive letter
  of your CD-ROM):</para>

<screen>mplayer <replaceable>d:/mpegav/avseq01.dat</replaceable></screen>

<screen>mplayer <replaceable>/cygdrive/d/MPEG2/AVSEQ01.MPG</replaceable></screen>

<para>DVDs also work, adjust <option>-dvd-device</option> for the drive letter
  of your DVD-ROM:</para>

<screen>mplayer dvd://<replaceable>&lt;title&gt;</replaceable> -dvd-device '\\.\<replaceable>d</replaceable>:'</screen>

</sect2>


<sect2 id="mingw">
<title><application>MinGW</application></title>

<para>Installing a version of <application>MinGW</application> that could
  compile <application>MPlayer</application> used to be quite tricky, but it
  works out of the box now. Just install <application>MinGW</application>
  3.1.0 or later and MSYS 1.0.9 or later and tell the MSYS postinstall that
  <application>MinGW</application> is installed.</para>

<para>If you use a version of <application>MinGW</application> before 3.1.0,
  you need to replace <filename>/mingw/include/sys/types.h</filename> with this
  <ulink url="http://www.mplayerhq.hu/MPlayer/releases/win32-beta/contrib/types.h"><filename>types.h</filename></ulink>.</para>

<para>Extract DirectX header files to <filename class="directory">/mingw/include/</filename>.</para>

<para>VCDs and DVDs work almost like <application>Cygwin</application> (adjust
  for the drive letter of your CD-ROM/DVD-ROM):</para>

<screen>mplayer <replaceable>d:/mpegav/avseq01.dat</replaceable></screen>

<screen>mplayer <replaceable>/d/MPEG2/AVSEQ01.MPG</replaceable></screen>

<screen>mplayer dvd://<replaceable>&lt;title&gt;</replaceable> -dvd-device /<replaceable>d</replaceable>/</screen>

</sect2>


</sect1>

<sect1 id="macos">
<title>Mac OS</title>
<para>
Only Mac OS X 10.2 and up is supported by the "raw"
<application>MPlayer</application> source. Feel free to make support for older
Mac OS versions and send patches!
</para>

<para>
Apple's modified GCC 3.x is preferred for compiling
<application>MPlayer</application> especially when using
<systemitem class="library">libavcodec</systemitem> as Apple's
modified GCC 2.95.x doesn't support C99 syntax well.
</para>

<para>
One can get an Aqua GUI for <application>MPlayer</application> together with
compiled <application>MPlayer</application> binaries for Mac OS X from the
<ulink url="http://mplayerosx.sf.net/">MPlayerOSX</ulink> project.
</para>
</sect1>

<sect1 id="hpux">
<title>HP UX</title>
<para>
Martin Gansser maintains a valuable 
<ulink url="http://cloud.prohosting.com/patos/docs/mplayer_on_hpux11.htm">HOWTO</ulink>
about building <application>MPlayer</application> on HP-UX. It even has a FAQ
section!
</para>

<para>
Anyway, our "raw" <application>MPlayer</application> source is used to compile
on HP-UX without flaws.
</para>
</sect1>

<sect1 id="amiga">
<title>Amiga/MorphOS (GeekGadgets)</title>
<para>
Nicholas Det at Genesi has done a big and powerful port of <application>MPlayer
</application> for MorphOS. Sadly it's based on the 0.90 series.
</para>

<para>
Get if from <ulink url="http://www.morphzone.org/">MorphZone</ulink>:
<itemizedlist>
<listitem><para>
<ulink url="http://www.morphzone.org/modules/mydownloads/singlefile.php?lid=90">
<application>MPlayer</application> 0.91 binary</ulink>
</para></listitem>
<listitem><para>
<ulink url="http://www.morphzone.org/modules/mydownloads/singlefile.php?lid=91">
<application>MPlayer</application> 0.91 source</ulink>
</para></listitem>
<listitem><para>
<ulink url="http://www.morphzone.org/modules/mydownloads/singlefile.php?lid=912">
<application>MEncoder</application> 0.91 binary</ulink>
</para></listitem>
</itemizedlist>
</para>
</sect1>

</chapter>