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

11.3.1. Solaris

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, but not in mp3lib. You can watch a VOB file on a 400MHz CPU. You'll need mLib installed.

To build the package you will need GNU make (gmake, /opt/sfw/gmake), native Solaris make will not work. Typical error you get when building with Solaris' make instead of GNU make:

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

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

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

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

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

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

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

Ensure that you are using GNU make (/opt/freeware/bin/gmake) to build MPlayer, as you will encounter problems if you use /usr/ccs/bin/make.

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

  • 604e

  • POWER4

The following architectures are untested, but should still work:

  • POWER

  • POWER2

  • POWER3

  • 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 the OSS drivers for personal and non-commercial usage.