# Porty

## Linux

Hlavní vývojovou platformou je Linux na x86, ačkoli MPlayer pracuje na mnoha jiných portech Linuxu. Binární balíčky MPlayeru jsou dostupné z několika zdrojů. Nicméně není žádný z těchto balíčků podporován. Hlaste tedy problémy jejich autorům, nikoli nám.

### Vytvoření balíčku pro Debian

Pro vytvoření balíčku pro Debian spusťte následující příkaz v adresáři se zdrojovým kódem MPlayeru:

    fakeroot debian/rules binary

Pokud chcete předat nějaké volby pro configure, můžete nastavit proměnnou prostředí `DEB_BUILD_OPTIONS`. Například, pokud chcete GUI a podporu OSD menu, měli byste použít:

    DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary

Rovněž můžete předat některé proměnné do Makefile. Například, pokud chcete kompilovat pomocí gcc 3.4 i v případě, že to není výchozí kompilátor:

    CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary

K vyčistění zdrojového stromu spusťte následující příkaz:

    fakeroot debian/rules clean

Jako root můžete nainstalovat `.deb` balíček obvyklým způsobem:

    dpkg -i ../mplayer_version.deb

Christian Marillat vytvářel jistou dobu neoficiální Debianí balíčky MPlayeru, MEncoderu a našich bitmapových fontů, můžete si je stáhnout (apt-get) z jeho domácí stránky.

### Balení RPM

Dominik Mierzejewski vytvořil a udržuje oficiální RPM balíčky MPlayeru pro Red Hat a Fedora Core. Ty jsou dostupné z jeho repozitáře.

RPM balíčky pro Mandrake/Mandriva jsou dostupné z P.L.F.. SuSE zařadilo do své distribuce zmrzačenou verzi MPlayeru. V posledních verzích ji odstranili. Funkční RPM naleznete na links2linux.de.

### ARM

MPlayer pracuje na Linuxových PDA s ARM CPU např. Sharp Zaurus, Compaq Ipaq. Nejjednodušší způsob jak si opatřit MPlayer je, stáhnout si jej z některého OpenZaurus balíčkového kanálu. Pokud si jej chcete skompilovat sami, měli byste nahlédnout do adresáře mplayer a libavcodec v buildroot OpenZaurus distribuce. Zde mají vždy poslední Makefile a patche používané pro sestavení CVS verze MPlayeru s libavcodecem. Pokud potřebujete GUI rozhraní, můžete použít xmms-embedded.

## *BSD

MPlayer běží na všech známých BSD verzích. Existují portované/pkgsrc/fink/atd verze MPlayeru, které lze pravděpodobně snadněji použít, než naše surové zdrojové kódy.

K sestavení MPlayeru budete potřebovat GNU make (gmake - nativní BSD make nebude pracovat) a současnou verzi binutils.

Pokud si MPlayer stěžuje, že nemůže najít `/dev/cdrom` nebo `/dev/dvd`, vytvořte příslušný symbolický link:

    ln -s /dev/vaše_cdrom_zařízení /dev/cdrom

Chcete-li používat Win32 DLL v MPlayeru, budete muset rekompilovat jádro s volbou "`USER_LDT`" (pokud nepoužíváte FreeBSD-CURRENT, kde je to výchozí).

### FreeBSD

Pokud váš procesor má SSE, rekompilujte jádro s volbami "`CPU_ENABLE_SSE`" (vyžaduje FreeBSD-STABLE nebo patche do jádra).

### OpenBSD

Vzhledem k omezením v různých verzích gas (GNU assembleru – pozn. překl.) (relokace vs MMX), budete muset kompilovat ve dvou krocích: Nejprve se ujistěte že je nenativní as jako první ve vaší `$PATH` a proveďte `gmake -k`, pak zajistěte, aby se použila nativní verze a proveďte `gmake`.

Od OpenBSD 3.4 není již výše uvedená metoda potřeba.

### Darwin

Viz sekce Mac OS.

## Komerční Unix

MPlayer byl portován na mnoho komerčních variant Unixu. Jelikož vývojová prostředí na těchto systémech bývají odlišná od těch na svobodných Unixech, budete muset provést ruční úpravy, aby se kompilace povedla.

### Solaris

MPlayer by měl běžet na Solarisu 2.6 nebo novějším. Použijte SUN audio rozhraní pomocí volby `-ao sun` pro přehrávání zvuku.

Na UltraSPARCích, MPlayer využívá jejich rozšíření VIS (ekvivalentní MMX), zatím jen v libmpeg2, libvo a libavcodec, ale nikoli v mp3lib. Můžete přehrávat VOB soubor na 400MHz CPU. Budete k tomu potřebovat nainstalovanou mLib.

Pro kompilaci balíku budete potřebovat GNU make (`gmake`, `/opt/sfw/gmake`), jelikož nativní make Solarisu nebude pracovat. Typickou chybou kompilace s make Solarisu namísto GNU make je:

       % /usr/ccs/bin/make
       make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

Na Solarisu SPARC, potřebujete GNU C/C++ Compiler; nezáleží na tom, zda je GNU C/C++ compiler konfigurován s nebo bez GNU assembleru.

Na Solarisu x86, potřebujete GNU assembler a GNU C/C++ compiler, konfigurovaný pro použití GNU assembleru! Kód MPlayeru na platformě x86 intenzivně používá MMX, SSE a 3DNOW! instrukce, které nemůže být kompilovány Sun assemblerem `/usr/ccs/bin/as`.

Skript `configure` zkouší zjistit, který assembler je použitý vaším příkazem "gcc" (v případě že autodetekce selže, použijte volbu `--as=/kdekoli/máte/nainstalován/gnu-as` pro nastavení `configure` skriptu tak, aby našel GNU "as" na vašem systému).

Chybová zpráva z `configure` na systému Solaris x86 s použitím GCC bez GNU assembleru:

       % configure
       ...
       Checking assembler (/usr/ccs/bin/as) ... , failed
       Please upgrade(downgrade) binutils to 2.10.1...

(Řešení: Nainstalujte a použijte gcc konfigurovaný s `--with-as=gas`)

Typická chyba, kterou dostanete při kompilaci pomocí GNU C kompilátoru, který nepoužívá GNU as:

       % 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 ...

Díky chybám v Solarisu 8, nemůžete přehrávat DVD disky větší než 4 GB:

- Ovladač sd(7D) na Solarisu 8 x86 má chybu v přístupu k diskovému bloku >4GB na zařízeních, které mají logical blocksize != DEV_BSIZE (čili CD-ROM a DVD média). Díky 32Bit int overflow, dostanete přístupovou diskovou adresu modulo 4GB (). Tento problém neexistuje ve SPARC verzi Solarisu 8.

- Podobná chyba je i v kódu systému souborů hsfs(7FS) (AKA ISO9660), hsfs nemusí podporovat oddíly/disky větší než 4GB, ke všem datům je přistupováno modulo 4GB (). Problém hsfs může být odstraněn nainstalováním patche 109764-04 (sparc) / 109765-04 (x86).

### IRIX

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:

    ./configure --with-install=/path/and/name/of/install

Or you can use the default install delivered with IRIX 6.5 in which case you will have to edit the `Makefile` by hand a little bit. Change the following two lines:

      $(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1

      $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf

to:

      $(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/

      $(INSTALL) -m 644 codecs.conf $(CONFDIR)/

And then do (from within the MPlayer source dir):

    cp DOCS/mplayer.1 . ; cp etc/codecs.conf .

and then go on with building and installing.

### HP-UX

Joe Page hosts a detailed HP-UX MPlayer HOWTO by Martin Gansser on his homepage. With these instructions the build should work out of the box. The following information is taken from this HOWTO.

You need GCC 3.4.0 or later, GNU make 3.80 or later and SDL 1.2.7 or later. HP cc will not produce a working program, prior GCC versions are buggy. For OpenGL functionality you need to install Mesa and the gl and gl2 video output drivers should work, speed may be very bad, depending on the CPU speed, though. A good replacement for the rather poor native HP-UX sound system is GNU esound.

Create the DVD device scan the SCSI bus with:

    # ioscan -fn

    Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
    ...
    ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
    target  3    8/16/5.2    tgt   CLAIMED DEVICE
    disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                             /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
    target  4    8/16/5.7    tgt   CLAIMED DEVICE
    ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                             /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
    ...

The screen output shows a Pioneer DVD-ROM at SCSI address 2. The card instance for hardware path 8/16 is 1.

Create a link from the raw device to the DVD device.

    # ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Example:

    # ln -s /dev/rdsk/c1t2d0 /dev/dvd

Below are solutions for some common problems:

- Crash at Start with the following error message:

      /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

  This means that the function .finite(). is not available in the standard HP-UX math library. Instead there is .isfinite().. Solution: Use the latest Mesa depot file.

- Crash at playback with the following error message:

      /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

  Solution: Use the extralibdir option of configure `--with-extralibdir="/usr/lib -lrt"`

- MPlayer segfaults with a message like this:

      Pid 10166 received a SIGSEGV for stack growth failure.
      Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
      Segmentation fault

  Solution: The HP-UX kernel has a default stack size of 8MB(?) per process.(11.0 and newer 10.20 patches let you increase maxssiz up to 350MB for 32-bit programs). You need to extend maxssiz and recompile the kernel (and reboot). You can use SAM to do this. (While at it, check out the maxdsiz parameter for the maximum amount of data a program can use. It depends on your applications, if the default of 64MB is enough or not.)

## Windows

Yes, MPlayer runs on Windows under Cygwin and MinGW. It does not have an official GUI yet, but the command line version is completely functional. You should check out the MPlayer-cygwin mailing list for help and latest information. Official Windows binaries can be found on the download page. Installer packages and simple GUI frontends are available from external sources, we have collected then in the Windows section of our projects page.

If you wish to avoid using the command line, a simple trick is to put a shortcut on your desktop that contains something like the following in the execute section:

    c:\path\to\mplayer.exe %1

This will make MPlayer play any movie that is dropped on the shortcut. Add `-fs` for fullscreen mode.

Best results are achieved with the native DirectX video output driver (`-vo directx`). Alternatives are OpenGL and SDL, but OpenGL performance varies greatly between systems and SDL is known to distort video or crash on some systems. If the image is distorted, try turning off hardware acceleration with `-vo directx:noaccel`. Download DirectX 7 header files to compile the DirectX video output driver. Furthermore you need to have DirectX 7 or later installed for the DirectX video output driver to work.

VIDIX now works under Windows as `-vo winvidix`, although it is still experimental and needs a bit of manual setup. Download dhahelper.sys or dhahelper.sys (with MTRR support) and copy it to the `libdha/dhahelperwin` directory in your MPlayer source tree. Open a console and change to that directory. Then type

    gcc -o dhasetup.exe dhasetup.c

and execute

    dhasetup.exe install

as Administrator. After that you will have to reboot. When you are done, copy the .so files from `vidix/drivers` to the `mplayer/vidix` directory relative to your `mplayer.exe`.

For best results MPlayer should use a colorspace that your video card supports in hardware. Unfortunately many Windows graphics drivers wrongly report some colorspaces as supported in hardware. To find out which, try

    mplayer -benchmark -nosound -frames 100 -vf format=colorspace movie

where colorspace can be any colorspace printed by the `-vf format=fmt=help` option. If you find a colorspace your card handles particularly bad `-vf noformat=colorspace` will keep it from being used. Add this to your config file to permanently keep it from being used.

There are special codec packages for Windows available on our codecs page to allow playing formats for which there is no native support yet. Put the codecs somewhere in your path or pass `--with-codecsdir=c:/path/to/your/codecs` (alternatively `--with-codecsdir=/path/to/your/codecs` only on Cygwin) to `configure`. We have had some reports that Real DLLs need to be writable by the user running MPlayer, but only on some systems (NT4). Try making them writable if you have problems.

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

    mplayer d:/mpegav/avseq01.dat

DVDs also work, adjust `-dvd-device` for the drive letter of your DVD-ROM:

    mplayer dvd://<title> -dvd-device d:

The Cygwin/MinGW console is rather slow. Redirecting output or using the `-quiet` option has been reported to improve performance on some systems. Direct rendering (`-dr`) may also help. If playback is jerky, try `-autosync 100`. If some of these options help you, you may want to put them in your config file.

On Windows the runtime CPU detection disables SSE support because of recurring and hard-to-trace SSE-related crashes. If you wish to have SSE support under Windows, you will have to compile without runtime CPU-detection.

If you have a Pentium 4 and are experiencing a crash using the RealPlayer codecs, you may need to disable hyperthreading support.

### Cygwin

You need to run Cygwin 1.5.0 or later in order to compile MPlayer.

DirectX header files need to be extracted to `/usr/include/` or `/usr/local/include/`.

Instructions and files for making SDL run under Cygwin can be found on the libsdl site.

### MinGW

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

Extract DirectX header files to `/mingw/include/`.

MOV compressed header support requires zlib, which MinGW does not provide by default. Configure it with `--prefix=/mingw` and install it before compiling MPlayer.

Complete instructions for building MPlayer and necessary libraries can be found in the MPlayer MinGW HOWTO.

## Mac OS

MPlayer does not work on Mac OS versions before 10, but should compile out-of-the-box on Mac OS X 10.2 and up. The preferred compiler is the Apple version of GCC 3.x or later. If you have Mac OS X 10.3.9 or later and QuickTime 7 you can use the macosx video output driver.

### MPlayer OS X GUI

You can get a native GUI for MPlayer together with precompiled MPlayer binaries for Mac OS X from the MPlayerOSX project, but be warned: that project is not active anymore.

Fortunately, MPlayerOSX has been taken over by a member of the MPlayer team. Preview releases are available from our download page and an official release should arrive soon.

In order to build MPlayerOSX from source yourself, you need the mplayerosx, the main and a copy of the main CVS module named main_noaltivec. mplayerosx is the GUI frontend, main is MPlayer and main_noaltivec is MPlayer built without AltiVec support.

To check out CVS modules use:

    cvs -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer login
    cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer co -P mplayerosx
    cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/cvsroot/mplayer co -P main

In order to build MPlayerOSX you will need to set up something like this:

    MPlayer_source_directory
       |
       |--->main           (MPlayer CVS source)
       |
       |--->main_noaltivec (MPlayer CVS source configured with --disable-altivec)
       |
       |--->mplayerosx     (MPlayer OS X CVS source)

You first need to build main and main_noaltivec.

Next, set a global variable:

    export MACOSX_DEPLOYMENT_TARGET=10.3

Then, configure:

If you configure for a G4 or later CPU with AltiVec support, do as follows:

    ./configure --with-termcaplib=ncurses.5 --disable-gl --disable-x11

If you configure for a G3-powered machine without AltiVec, use:

    ./configure --with-termcaplib=ncurses.5 --disable-gl --disable-x11
    --disable-altivec

You may need to edit `config.mak` and change -mcpu and -mtune from 74XX to G3.

Continue with

    make

then go to the mplayerosx directory and type

    make dist

This will create a compressed .dmg archive with the ready to use binary.

You can also use the Xcode 2.1 project; the old project for Xcode 1.x does not work anymore.

## Exotic Platforms

MPlayer runs on a number of exotic platforms, but most of the platform-specific changes from those systems have not been merged back into the main source tree. For build instructions you should refer to the system-specific documentation.

### QNX

You'll need to download and install SDL for QNX. Then run MPlayer with `-vo sdl:photon` and `-ao sdl:nto` options, it should be fast.

The `-vo x11` output will be even slower than on Linux, since QNX has only X emulation which is very slow.

### Amiga/MorphOS (GeekGadgets)

The people over at www.amigasoft.net make current MPlayer and MEncoder packages.

Nicholas Det at Genesi has done a big and powerful port of MPlayer for MorphOS. Sadly it's based on the 0.90 series.

Get if from MorphZone:

- MPlayer 0.91 binary

- MPlayer 0.91 source

- MEncoder 1.0pre3 binary