# Porty

## Linux

Główną platformą rozwojową jest Linux x86, chociaż MPlayer pracuje również na wielu innych portach tego systemu. Pakiety binarne są dostępne z kilku źródeł, jednakże żaden z nich nie jest przez nas obsługiwany. Zgłaszaj problemy do ich opiekunów, a nie do nas.

### Pakiety Debiana

Aby zbudować pakiet dla Debiana, wywołaj poniższe polecenie w katalogu ze źródłami MPlayera:

    fakeroot debian/rules binary

Jeśli chcesz przekazać własne opcje do skryptu configure, możesz ustawić zmienną środowiskową `DEB_BUILD_OPTIONS`. Na przykład, jeśli chcesz obsługi menu i GUI, wyglądało by to tak:

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

Możesz przekazać również niektóre zmienne do Makefile. Na przykład, jeśli chcesz kompilować przy pomocy gcc 3.4, nawet jeśli nie jest to domyślny kompilator:

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

Aby wyczyściś katalog ze źródłami wykonaj poniższa komendę:

    fakeroot debian/rules clean

Jako superużytkownik możesz zainstalować pakiet `.deb` tak, jak zwykle:

    dpkg -i ../mplayer_wersja.deb

Christian Marillat buduje dla Debiana nieoficjalne paczki MPlayera, MEncodera i naszych czcionek bitmapowych już przez jakiś czas, możesz je pobrać (apt-get) z jego strony domowej.

### Pakiety RPM

Dominik Mierzejewski tworzy i opiekuje się oficjalnymi pakietami MPlayera dla Red Hata. Są one dostępne na jego stronie domowej.

RPMy dla Mandrake są dostępne na P.L.F.. SuSE zawierał okrojoną wersję MPlayera w dystrybucji. Usunęli ją w swoich najnowszych wydaniach. W pełni funkcjonalne pakiety możesz pobrać z links2linux.de.

### ARM

MPlayer działa również na PDA z procesorami ARM działających pod kontrolą Linuksa, np. Sharp Zaurus, Compaq iPAQ. Najprostszym sposobem, żeby uzyskać MPlayera, jest pobranie go z odpowiedniego źródła pakietów (stable, testing, unstable) z witryny OpenZaurus. Jeżeli chcesz go skompilować samodzielnie, powinieneś przyjrzeć się katalogom mplayera i biblioteki libavcodec w głównym katalogu źródłowym OpenZaurusa. Zawierają one najświeższe łatki i pliki Makefile, służące do samodzielnej kompilacji MPlayera z libavcodec. Jeżeli potrzebujesz interfejsu GUI, możesz użyć xmms-embedded.

## *BSD

MPlayer działa na FreeBSD, OpenBSD, NetBSD, BSD/OS i Darwinie. Dostępne są wersje portów/pkgsrc/fink/itp., które prawdopodobnie są łatwiejsze w instalacji, niż kompilacja ze źródeł.

Do zbudowania MPlayera będziesz potrzebował GNU make (gmake - rdzenne make BSD nie zadziała) i najnowszej wersji binutils.

Jeżeli MPlayer nie może znaleźć `/dev/cdrom` lub `/dev/dvd`, stwórz odpowiednie dowiązanie symboliczne:

    ln -s /dev/twoje_urządzenie_cdrom /dev/cdrom

Aby używać bibliotek Win32 z MPlayerem, będziesz potrzebował przekompilować jądro z opcją "`USER_LDT`" (chyba, że używasz FreeBSD-CURRENT, tam jest domyślnie włączona).

### FreeBSD

Jeżeli Twój procesor ma rozszerzenie SSE, przekompiluj jądro z opcją "`CPU_ENABLE_SSE`" (wymagany FreeBSD-STABLE lub łaty na jądro).

### OpenBSD

Ze względu na ograniczenia w różnych wersjach gas (GNU assemblera - przyp. tłumacza) (dotyczące relokacji i MMX), będziesz musiał przeprowadzić kompilację w dwóch krokach: Po pierwsze, upewnij się, że wersja nierdzenna występuje w zmiennej `$PATH` i wykonaj `gmake -k`, a następnie upewnij się, że używana jest wersja rdzenna i wykonaj `gmake`.

Powyższa metoda nie jest już potrzebna w OpenBSD 3.4.

### Darwin

Zobacz rozdział Mac OS.

## Sun Solaris

MPlayer powinien działać na Solarisie 2.6 lub nowszym.

Na UltraSPARCach, MPlayer korzysta z rozszerzenia VIS (odpowiednik MMX), obecnie tylko w libmpeg2, libavo i libavcodec, ale nie w mp3lib. Możesz oglądać plik VOB na procesorze z taktowaniem 400MHz. Będziesz potrzebował do tego biblioteki mLib.

Aby zbudować pakiet, będziesz potrzebował GNU make (`gmake`, `/opt/sfw/gmake`), rdzenne make Solarisa nie zadziała. Typowy błąd jaki otrzymujesz, budując tym drugim zamiast GNU make, to:

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

W Solarisie przeznaczonym dla SPARC, potrzebujesz kompilatora GNU C/C++; nie ma znaczenia, czy jest on skonfigurowany z, czy bez GNU assemblera.

Na Solarisie x86, potrzebujesz GNU assemblera i kompilatora GNU C/C++, skonfigurowanego do używania GNU assemblera! Kod MPlayera, na platformie x86, w znaczący sposób korzysta z instrukcji MMX, SSE i 3DNOW!, które nie mogą być skompilowane przy pomocy assemblera Sun `/usr/ccs/bin/as`.

Skrypt `configure` stara się określić, jaki assembler wywoływany jest przez komendę "gcc" (jeżeli próba zakończy się fiaskiem, użyj opcji `--as=/gdziekolwiek/zainstalowałeś/gnu-as`, żeby określić gdzie skrypt `configure` może znaleźć GNU "as" w Twoim systemie).

Błąd jaki wyświetli `configure` na Solarisie x86, używającym GCC bez GNU assemblera:

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

(Rozwiązanie: Zainstaluj i używaj gcc skonfigurowanego z opcją `--with-as=gas`)

Typowy błąd, jaki otrzymasz przy próbie budowy kompilatorem GNU C, który nie używa 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 ...

Ze względu na błędy występujące w Solarisie 8, możesz nie być w stanie odtwarzać płyt DVD o pojemności większej niż 4 GB:

- Sterownik sd(7D) dla Solarisa 8 x86 ma błąd ujawniający się przy próbie dostępu do bloku dyskowego >4GB urządzenia korzystającego z logicznego rozmiaru bloku !=DEV_BSIZE (np. nośnik CD-ROM i DVD). Ze względu na przepełnienie 32bitowych liczb całkowitych, odczytywany jest adres dysku modulo 4GB (). Ten problem nie występuje na Solarisie 8 przeznaczonym dla procesorów SPARC.

- Podobny błąd występuje w kodzie systemu plików hsfs(7FS) (znanym jako ISO9660), hsfs może nie obsługiwać partycji/dysków większych niż 4GB, wszystkie dane są odczytywane z bloku modulo 4GB (). Problem może być rozwiązany przy pomocy łatki 109764-04 (sparc) / 109765-04 (x86).

## Silicon Graphics Irix

Możesz albo spróbować zainstalować program GNU install i (jeżeli nie umieściłeś go w globalnej ścieżce) wskazać go przez:

    ./configure --with-install=
    /ścieżka/i/nazwa/programu/instalacyjnego

Albo użyć domyślnego programu instalacyjnego dostarczonego z IRIX 6.5, w tym wypadku należy ręcznie zmodyfikować plik `Makefile` w kilku miejscach. Zmień poniższe dwie linijki:

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

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

na:

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

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

A potem wykonaj (w katalogu źródłowym MPlayera):

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

i dalej skompiluj i zainstaluj.

## HP-UX

Joe Page umieścił na swojej stronie domowej dokument HOWTO stworzony przez Martina Gansser'a dotyczący MPlayera na HP-UX. Korzystając z zawartych tam intrukcji program powinien się skompilować bez najmniejszych problemów. Poniższe informacje są zaczerpnięte z tego opracowania.

Do budowy będziesz potrzebował GCC 3.4.0, GNU make 3.80, i SDL 1.2.7 lub ich nowszych wersji. Kompilator HP cc nie wyprodukuje działającego programu, a wcześniejsze wersje GCC są pełne błędów. Aby moć skorzystać z OpenGL, musisz zainstalować biblioteki Mesa, wtedy sterowniki wyjścia video gl i gl2 powinny działać. Ich wydajność może być tragiczna, jednak zależne jest to od mocy obliczeniowej procesora. Dobrym zamiennikiem, raczej kiepskiego, systemu dźwiękowego HP-UX jest GNU esound.

Stwórz urządzenie DVD, przeskanuj magistralę SCSI komendą:

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

Z rezultatów działania komendy możemy odczytać, że na adresie 2 SCSI znajduje się Pioneer DVD-ROM. Instancja karty dla ścieżki sprzętowej 8/16 to 1.

Stwórz dowiązanie surowego urządzenia do urządzenia DVD.

    # ln -s /dev/rdsk/c<instancja magistrali SCSI>t<ID docelowego SCSI>d<LUN> /dev/<urządzenie>

Przykład:

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

Poniżej znajdują się rozwiązania kilku najczęstszych problemów:

- Wysypanie się programu przy uruchamianiu z komunikatem błędu:

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

  Oznacza to, że funkcja .finite(). jest niedostępna w standardowej bibliotece math HP-UX. Zamiast niej dostępna jest .isfinite().. Rozwiązanie: Skorzystaj z najnowszego pliku składowego Mesa.

- Wysypanie się programu przy odtwarzaniu z komunikatem:

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

  Rozwiązanie: Skorzystaj z opcji extralibdir skryptu configure `--with-extralibdir="/usr/lib -lrt"`

- MPlayer powoduje błąd naruszenia ochrony pamięci (segfault) z komunikatem:

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

  Rozwiazanie: Jądro HP-UX ma domyślnie zdefiniowany rozmiar stosu przeznaczonego na każdy proces i jest to 8MB(?).(11.0 i nowsze łatki 10.20 pozwalają Ci zwiększyć parametr maxssiz do 350MB dla 32-bitowych programów). Musisz rozszerzyć maxssiz i przekompilować jądro (i uruchomić ponownie komputer). Możesz wykorzystać do tego celu SAM. (Kiedy w nim będziesz, sprawdź wartość maxdsiz. Określa ona maksymalny rozmiar danych, jaką program może użyć. To czy domyślne 64MB wystarczy czy nie, zależy wyłącznie od wymagań Twoich aplikacji.)

## QNX

Działa. Będziesz musiał ściągnąć bibliotekę SDL dla QNX i zainstalować ją. Wtedy uruchom MPlayera a opcją `-vo sdl:photon` i `-ao sdl:nto`, powinno działać szybko.

Wyjście `-vo x11` będzie nawet wolniejsze niż na Linuksie, ponieważ QNX ma tylko emulację Xów, która jest bardzo wolna. Używaj SDL.

## Windows

Tak, MPlayer działa na Windowsie pod Cygwinem i MinGW. Nie ma jeszcze interfejsu GUI, ale wersja dla wiersza poleceń jest już prawie w pełni funkcjonalna. Łatki są zawsze mile widziane. Powinieneś sprawdzić listę mplayer-cygwin, aby uzyskać pomoc albo otrzymać najnowsze informacje.

Najlepsze wyniki są osiągane ze sterownikami wyjściowymi video DirectX (`-vo directx`) i rdzennym wyjściem dźwiękowym wave Windows (`-ao win32`). Możesz skorzystać również z OpenGL lub SDL, jednak wydajność OpenGL w znacznym stopniu zależy od systemu, a SDL może powodować powstanie zakłóceń w dźwięku i obrazie albo wywołać błąd, i zakończyć działanie programu. Jeżeli występują zakłócenia obrazu, spróbuj wyłączyć sprzętową akcelerację przez opcję `-vo directx:noaccel`. Ściągnij pliki nagłówkowe DirectX 7, żeby skompilować sterownik do wyjścia video DirectX. Co więcej, musisz mieć zainstalowany DirectX 7 lub nowszy, aby to wyjście zadziałało.

VIDIX działa teraz również pod Windowsem jako `-vo winvidix`, chociaż jego obsługa jest eksperymentalna i wymaga trochę ręcznego przygotowania. Pobierz dhahelper.sys lub dhahelper.sys (z obsługą MTRR) i skopiuj go do `libdha/dhahelperwin` w drzewie źródłowym MPlayera. Uruchom konsolę, następnie przejdź do tego katalogu i wykonaj

    gcc -o dhasetup.exe dhasetup.c

i

    dhasetup.exe install

jako Administrator. Będziesz musiał ponownie uruchomić komputer. Teraz, skopiuj wszystkie pliki z rozszerzeniem .so z katalogu `vidix/drivers` do `mplayer/vidix` względem położnia pliku `mplayer.exe`.

Żeby osiągnąć najlepsze wyniki MPlayer powinien korzystać z przestrzeni kolorów, którą Twoja karta wspomaga sprzętowo. Niestety wiele sterowników graficznych Windowsa źle informuje o obsługiwanych przez kartę przestrzeniach. Aby sprawdzić które są źle obsługiwane, wykonaj poniższą komendę:

    mplayer -benchmark -nosound -frames 100 -vf format=przestrzeń film

gdzie przestrzeń może być jakąkolwiek wartością spośród tych uzyskanych przez opcję `-vf format=fmt=help`. Jeśli któraś z nich działa szczególnie źle, opcja `-vf noformat=przestrzeń` zapobiegnie jej używaniu. Możesz to na stałe dodać do Twojego pliku konfiguracyjnego.

Możesz wykorzystać kodeki Win32 i Real dla Win32 (nie kodeki Real dla Linuksa), jeżeli chcesz. Umieść je gdzieś w swojej ścieżce (zmienna PATH - przyp. tłumacza) albo użyj opcji `--with-codecsdir=c:/ścieżka/do/twoich/kodeków` (lub `--with-codecsdir=/ścieżka/do/twoich/kodeków` tylko na Cygwin) dla `configure`. Mieliśmy doniesienia, że biblioteki Real muszą być zapisywalne dla użytkownika, który korzysta z MPlayera, ale tylko na niektórych systemach. Spróbuj nadać im atrybut zapisywalności, jeżeli napotkasz jakieś problemy. Biblioteki DLL QuickTime również działają, ale będzisz musiał je umieścić w katalogu systemowym Windows (`C:\Windows\system\`).

Możesz odtwarzać VCD, odtwarzając pliki `.DAT` lub `.MPG`, które Windows pokazuje na VCD. To działa mniej więcej tak (dopasuj literę dysku do Twojego CD-ROMu):

    mplayer d:/mpegav/avseq01.dat

DVD również działa, podaj literę Twojego DVD-ROMu przez opcję `-dvd-device`:

    mplayer dvd://<tytuł> -dvd-device d:

Konsola Cygwin/MinGW jest raczej wolna. Zgłoszono, że przekierowywanie wyjścia albo używanie opcji `-quiet` poprawia wydajność na niektórych systemach. Bezpośrednie renderowanie (`-dr`) również może pomóc. Możesz zapobiec migotaniu OSD, włączając podwójne buforowanie opcją `-double`. Jeżeli odtwarzanie jest nierówne, spróbuj użyć `-autosync 100`. Jeżeli którakolwiek z tych opcji Ci pomogła, może będziesz chciał umieścić ją w swoim pliku konfiguracyjnym.

Sascha Sommer wydaje, od czasu do czasu, oficjalne paczki dla Windowsa, Joey Parrish tworzy nieoficjalne paczki z instalatorem. Poszukaj ich w sekcji Windows na stronie naszych projektów.

### Cygwin

Aby skompilować MPlayera wymagana jest wersja Cygwina 1.5.0 lub późniejsza.

Pliki nagłówkowe DirectX muszą być rozpakowane do `/usr/include/` lub `/usr/local/include/`.

Instrukcje i pliki potrzebne do kompilacji SDLa dla Cygwin są dostępne na stronie libsdl.

### MinGW

Zainstalowanie MinGW, który umożliwiłby kompilację MPlayera było zawiłe, ale teraz składa się tylko z trzech prostych kroków i niedługo powinno działać "prosto z pudełka". Zainstaluj MinGW 3.0.0 lub nowszy. Zainstaluj MSYS 1.0.9 lub nowszy i wskaż systemowi poinstalacyjnemu MSYSa, że MinGW jest zainstalowane.

Rozpakuj pliki nagłówkowe DirectX do `/mingw/include/`.

Do obsługi skompresowanych nagłówków MOV wymagana jest biblioteka zlib, która nie jest domyślnie dostępna w MinGW. Skonfiguruj ją z opcją `--prefix=/mingw` i zainstaluj przed kompilacją MPlayera.

## Mac OS

"Surowe" źródła MPlayera obsługują tylko Mac OS X w wersjach 10.2 i wyższych. Możesz spróbować umożliwić obsługę starszych wersji Mac OS oraz przysłać nam łaty!

Zmodyfikowane GCC 3.X Apple jest zalecane do kompilacji MPlayera, szczególnie z libavcodec, ponieważ ich zmodyfikowane GCC 2.95.x nie obsługuje poprawnie składni C99.

Możesz pobrać Aqua GUI dla MPlayera razem z jego skompilowanymi binariami dla Mac OS X ze strony projektu MPlayerOSX.

## Amiga/MorphOS (zabawki dla zapaleńców)

Nicholas Det at Genesi stworzył potężny port MPlayera dla MorphOS. Niestety oparty jest on o serię 0.90.

Pobierz go z MorphZone:

- pakiet binarny MPlayer 0.91

- źródła MPlayera 0.91

- pakiet binarny MEncodera 1.0pre3