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

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

Caveat:

  • Podpora mediaLib je v současnosti vypnutá ve výchozím nastavení MPlayeru kvůli chybovosti. Uživatelé SPARCu překládající MPlayer s podporou mediaLib hlásili tlustý zelený pruh v libavcodecem enkódovaném a dekódovaném videu. Pokud chcete, můžete si ji zapnout:

    ./configure --enable-mlib

    Děláte to na vlastní nebezpečí. Uživatelé x86 by nikdy neměli používat mediaLib, jelikož vede k velmi slabému výkonu MPlayeru.

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

Řešení běžných potíží:

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

  • MPlayer může zhavarovat (segfault), pokud dekódujete nebo enkódujete video používající win32 kodeky:

    ...
    Trying to force audio codec driver family acm...
    Opening audio decoder: [acm] Win32/ACM decoders
    sysi86(SI86DSCR): Invalid argument
    Couldn't install fs segment, expect segfault
    
    
    MPlayer interrupted by signal 11 in module: init_audio_codec
    ...

    To díky změně na sysi86() ve verzích Solaris 10 a před-Solaris Nevada b31. V Solaris Nevada b32 to bylo opraveno; Sun však ještě musí portovat opravu do Solaris 10. MPlayer Project upozornil Sun na tento problém a záplata pro Solaris 10 je v současnosti rozpracována. Více informací o této chybě naleznete na: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

  • 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 (http://groups.yahoo.com/group/solarisonintel/message/22516). 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 (http://groups.yahoo.com/group/solarisonintel/message/22592). Problém hsfs může být odstraněn nainstalováním patche 109764-04 (sparc) / 109765-04 (x86).

5.3.2. HP-UX

Joe Page hostuje podrobné HP-UX MPlayer HOWTO od Martina Ganssera na jeho domácí stránce. Podle těchto instrukcí by kompilace měla proběhnout bez potíží. Následující informace jsou vytaženy ze zmíněného HOWTO.

Potřebujete GCC 3.4.0 nebo pozdější, GNU make 3.80 nebo pozdější a SDL 1.2.7 nebo pozdější. HP cc nevytvoří funkční program, předchozí verze GCC jsou chybové. Pro funkci OpenGL musíte nainstalovat Mesa a video rozhraní gl a gl2 by měly pracovat. Jejich rychlost však může být velmi malá, podle rychlosti CPU. Dobrou náhradou za spíše slabý nativní HP-UX systém je GNU esound.

Vytvořte DVD zařízení průzkumem SCSI pomocí:

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

Výstup na obrazovce ukazuje Pioneer DVD-ROM na SCSI adrese 2. Instance karty pro hardwarovou cestu 8/16 je 1.

Vytvořte link ze surového zařízení na DVD zařízení.

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

Příklad:

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

Níže uvádíme řešení některých běžných problémů:

  • Spadne při startu s hlášením:

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

    To znamená, že funkce .finite(). není dostupná ve standardní HP-UX matematické knihovně. Místo ní je zde .isfinite().. Řešení: Použijte poslední Mesa depot soubor.

  • Spadne při přehrávání s hlášením:

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

    Řešení: Použijte volbu extralibdir v configure --extra-ldflags="/usr/lib -lrt"

  • MPlayer havaruje (segfault) s hlášením:

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

    Řešení: HP-UX kernel má výchozí velikost zásobníku 8MB(?) na proces.(11.0 a novější 10.20 patche vám umožní zvýšit maxssiz až na 350MB pro 32-bit programy). Musíte zvětšit maxssiz a rekompilovat kernel (a restartovat). Pro tento účel můžete použít SAM. (Když už to budete dělat, ověřte parametr maxdsiz pro maximální množství paměti, které může program použít. Závisí na vašich aplikacích, jestli je výchozích 64MB dost nebo ne.)

5.3.3. AIX

MPlayer lze úspěšně přeložit na AIX 5.1, 5.2 a 5.3, pomocí GCC 3.3 nebo vyšší. Kompilace MPlayeru na AIX 4.3.3 a nížsích nebyla testována. Velmi doporučujeme kompilovat MPlayer pomocí GCC 3.4 nebo vašší, nebo pokud kompilujete na POWER5, vyžaduje se GCC 4.0.

Ujistěte se, že používáte GNU make (/opt/freeware/bin/gmake) pro sestavení MPlayeru, jelikož při použití /usr/ccs/bin/make budete mít problémy.

Detekce procesoru je stále nedokončena. Testovány byly následující architektury:

  • 604e

  • POWER3

  • POWER4

Následující architektury nebyly testovány, ale měly by pracovat:

  • POWER

  • POWER2

  • POWER5

Zvuk přes Ultimedia Services není podporován, jelikož Ultimedia byla opuštěna v AIX 5.1; tudíš je jedinou možností použití ovladačů AIX Open Sound System (OSS) od 4Front Technologies z http://www.opensound.com/aix.html. 4Front Technologies volně poskytuje OSS ovladače pro AIX 5.1 pro nekomerční použití; zatím však neexistují zvukové ovladače pro AIX 5.2 nebo 5.3. To znamená, že AIX 5.2 a 5.3 nejsou nyní schopny provozovat MPlayer se zvukem.

Řešení běžných potíží:

  • Pokud dostanete tuto chybovou hlášku z configure:

    $ ./configure
    ...
    Checking for iconv program ... no
    No working iconv program found, use
    --charset=US-ASCII to continue anyway.
    Messages in the GTK-2 interface will be broken then.

    To proto, že AIX používá nestandardní názvy znakových sad; proto konverze výstupu MPlayeru do jiné znakové sady není zatím podporována. Řešením je:

    $ ./configure --charset=noconv

5.3.4. QNX

Musíte si stáhnout a nainstalovat SDL pro QNX. Pak spusťte MPlayer s volbami -vo sdl:driver=photon a -ao sdl:nto, mělo by to být rychlé.

Výstup -vo x11 bude ještě pomalejší než na Linuxu, jelikož QNX má pouze X emulaci, která je velmi pomalá.