5.3. Commercial Unix

MPlayer has been ported to a number of commercial Unix variants. Since the development environments on these systems tend to be different from those found on free Unixes, you may have to make some manual adjustments to make the build work.

5.3.1. Solaris

Solaris still has broken, POSIX-incompatible system tools and shell in default locations. Until a bold step out of the computing stone age is made, you will have to add /usr/xpg4/bin to your PATH.

MPlayer should work on Solaris 2.6 or newer. Use the SUN audio driver with the -ao sun option for sound.

On UltraSPARCs, MPlayer takes advantage of their VIS extensions (equivalent to MMX), currently only in libmpeg2, libvo and libavcodec. You can watch a VOB file on a 400MHz CPU. You'll need mLib installed.

Caveat:

  • mediaLib is currently disabled by default in MPlayer because of brokenness. SPARC users who build MPlayer with mediaLib support have reported a thick, green-tint on video encoded and decoded with libavcodec. You may enable it if you wish with:

    ./configure --enable-mlib

    You do this at your own risk. x86 users should never use mediaLib, as this will result in very poor MPlayer performance.

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.

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 /usr/ccs/bin/as.

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

Solutions to common problems:

  • Error message from configure on a Solaris x86 system using GCC without GNU assembler:

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

    (Solution: Install and use a gcc configured with --with-as=gas)

    Typical error you get when building with a GNU C compiler that does not use 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 may segfault when decoding and encoding video that uses the win32codecs:

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

    This is because of a change to sysi86() in Solaris 10 and pre-Solaris Nevada b31 releases. This has been fixed in Solaris Nevada b32; however, Sun has yet to backport the fix to Solaris 10. The MPlayer Project has made Sun aware of the problem and a patch is currently in progress for Solaris 10. More information about this bug can be found at: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

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

    • 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 (http://groups.yahoo.com/group/solarisonintel/message/22516). This problem does not exist in the SPARC version of Solaris 8.

    • A similar bug is present in the hsfs(7FS) file system code (AKA ISO9660), hsfs may not not support partitions/disks larger than 4GB, all data is accessed modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). The hsfs problem can be fixed by installing patch 109764-04 (SPARC) / 109765-04 (x86).

5.3.2. 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 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 --extra-ldflags="/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.)

5.3.3. AIX

MPlayer builds successfully on AIX 5.1, 5.2, and 5.3, using GCC 3.3 or greater. Building MPlayer on AIX 4.3.3 and below is untested. It is highly recommended that you build MPlayer using GCC 3.4 or greater, or if you are building on POWER5, GCC 4.0 is required.

CPU detection is still a work in progress. The following architectures have been tested:

  • 604e

  • POWER3

  • POWER4

The following architectures are untested, but should still work:

  • POWER

  • POWER2

  • POWER5

Sound via the Ultimedia Services is not supported, as Ultimedia was dropped in AIX 5.1; therefore, the only option is to use the AIX Open Sound System (OSS) drivers from 4Front Technologies at http://www.opensound.com/aix.html. 4Front Technologies freely provides OSS drivers for AIX 5.1 for non-commercial use; however, there are currently no sound output drivers for AIX 5.2 or 5.3. This means AIX 5.2 and 5.3 are not capable of MPlayer audio output, presently.

Solutions to common problems:

  • If you encounter this error message from ./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.

    This is because AIX uses non-standard character set names; therefore, converting MPlayer output to another character set is currently not supported. The solution is to use:

    $ ./configure --charset=noconv

5.3.4. QNX

You'll need to download and install SDL for QNX. Then run MPlayer with -vo sdl:driver=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.