12.3. Kommerzielles Unix

MPlayer wurde auf einige kommerzielle Unix-Varianten portiert. Seit die Entwicklungsumgebungen auf diesen Systemen dahin tendieren, verschieden von denen freier Unixes zu sein, musst du möglicherweise einige manuelle Anpassungen vornehmen, um das Build lauffähig zu bekommen.

12.3.1. Solaris

MPlayer sollte auf Solaris 2.6 oder neuer funktionieren. Verwende den Audio-Treiber von SUN mit der Option -ao sun für den Sound.

Auf UltraSPARCs, profitiert MPlayer von deren VIS-Erweiterungen (äquivalent zu MMX), zur Zeit nur in libmpeg2, libvo und libavcodec, jedoch nicht in mp3lib. Du kannst dir eine VOB-Datei auf einer 400MHz CPU ansehen. Dazu muss mLib installiert sein.

Vorbehalt:

  • mediaLib wird in MPlayer momentan aufgrund Fehlerhaftigkeit per Voreinstellung deaktiviert. SPARC-Benutzer, die MPlayer mit mediaLib-Unterstützung bauen, haben große grüne Farbstiche gemeldet bei Video, das mit libavcodec en- und decodiert wurde. Du kannst es, wenn du möchtest, aktivieren mit:

     $ ./configure --enable-mlib 

    Du tust dies auf eigenes Risiko. x86-Benutzer sollten mediaLib niemals benutzen, da dies zu sehr schlechter Performance von MPlayer führt.

Um das Package zu erstellen, brauchst du GNU make (gmake, /opt/sfw/gmake), das native Solaris make wird nicht funktionieren. Ein typischer Fehler, den du bekommst, wenn du mit einem make von Solaris arbeitest statt mit einem GNU make:

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

Auf Solaris SPARC, brauchst du den GNU C/C++ Compiler; es spielt keine Rolle, ob der GNU C/C++ Compiler mit oder ohne dem GNU Assembler compiliert ist.

Auf Solaris x86 brauchst du den GNU Assembler und den GNU C/C++ Compiler so konfiguriert, dass er den GNU Assembler verwendet! Der MPlayer-Code auf der x86-Plattform macht starken Gebrauch von MMX-, SSE- und 3DNOW!-Instruktionen, die nicht compiliert werden können, wenn man den Assembler von Sun /usr/ccs/bin/as verwendet.

Das configure-Script versucht herauszufinden, welches Assembler-Programm von deinem "gcc"-Befehl genutzt wird (falls die automatische Erkennung fehlschlägt, nimm die Option --as=/pfad/zum/installierten/gnu-as, um dem configure-Script zu zeigen, wo es GNU "as" auf deinem System finden kann).

Lösung für gebräuchliche Probleme:

  • Fehlermeldung von configure auf einem Solaris x86 System, wenn man GCC ohne GNU Assembler anwendet:

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

    (Lösung: Installiere und verwende einen gcc, konfiguriert mit --with-as=gas)

    Ein typischer Fehler, den du bekommst, wenn du mit einem GNU C Compiler arbeitest, der GNU "as" nicht verwendet:

    % 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 kann eine Schutzverletzung auslösen, wenn mit win32codecs decodiert und encodiert wird:

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

    Das liegt an einer Änderung an sysi86() in Solaris 10 und prä-Solaris Nevada b31-Releases. Bei Solaris Nevada b32 wurde dieser Fehler behoben; trotzdem, Sun muss diese Lösung noch immer nach Solaris 10 rückportieren. Das MPlayer-Projekt hat Sun auf das Problem hingewiesen, und ein Patch für Solaris 10 ist gerade in Vorbereitung. Weitere Informationen über diesen Fehler können hier gefunden werden: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

  • Aufgrund von Bugs in Solaris 8 kann es dazu kommen, dass du keine DVD-Disks größer 4 GB abspielen kannst:

    • Der sd(7D)-Treiber auf Solaris 8 x86 hat einen Bug, wenn er auf einen Diskblock >4GB auf einem Gerät zugreift, das eine logische blocksize != DEV_BSIZE verwendet (z.B. CD-ROM- und DVD-Medien). Wegen eines 32Bit int Overflows wird auf eine Disk-Adresse modulo 4GB zugegriffen (http://groups.yahoo.com/group/solarisonintel/message/22516). Dieses Problem existiert nicht in der SPARC-Version von Solaris 8.

    • Ein ähnlicher Bug is präsent im Dateisystem-Code (AKA ISO9660) von hsfs(7FS), hsfs unterstützt keine Partitionen/Disks größer als 4GB, auf alle Daten wird modulo 4GB zugegriffen (http://groups.yahoo.com/group/solarisonintel/message/22592). Dieses hsfs-Problem kann durch die Installation von Patch 109764-04 (sparc) / 109765-04 (x86) gefixt werden.

12.3.2. IRIX

Du kannst entweder versuchen, das GNU-Installationsprogramm zu installieren und dann (falls du es nicht in deinen globalen Path gelegt hast) auf den Standort zeigen mit:

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

Oder du kannst die mit IRIX 6.5 gelieferte Standard-Installation verwenden, falls du das Makefile ein bisschen von Hand editieren willst. Ändere die folgende Zeile von:

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

zu:

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

und fahre dann fort mit Compilierung und Installation.

12.3.3. HP-UX

Joe Page unterhält ein detailliertes HP-UX MPlayer-HOWTO von Martin Gansser auf seiner Homepage. Mit diesen Instruktionen sollte das bauen hervorragend funktionieren. Die folgende Information wurde aus diesem HOWTO übernommen.

Du benötigst GCC 3.4.0 oder neuer, GNU make 3.80 oder neuer und SDL 1.2.7 oder neuer. HP cc wird kein lauffähiges Programm produzieren, frühere GCC-Versionen sind fehlerhaft. Für OpenGL-Funktionalität musst du Mesa installieren, und die gl- und gl2-Video-Ausgabetreiber sollten funktionieren, wenngleich die Geschwindigkeit sehr mies sein kann, abhängig von der CPU-Geschwindigkeit. Ein guter Ersatz für das eher armselige, native HP-UX-Soundsystem ist GNU esound.

Erzeuge das DVD-Gerät, scanne den SCSI-Bus mit:

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

Die Bildschirmausgabe zeigt ein Pioneer DVD-ROM an SCSI-Adresse 2. Die Karteninstanz für den Hardwarepfad 8/16 ist 1.

Erstelle einen Link von deinem Originalgerät zum DVD-Gerät.

# ln -s /dev/rdsk/c<SCSI-Bus-Instanz>t<SCSI Ziel-ID>d<LUN> /dev/<geraet>

Beispiel:

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

Unten stehen lösungen für einige verbreitete Probleme:

  • Absturz beim Start mit folgender Fehlermeldung:

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

    Dies bedeutet, dass die Funktion .finite(). nicht in der Standard-Bibliothek HP-UX math zur Verfügung steht. Statt dessen gibt es .isfinite().. Lösung: Benutze die neueste Mesa-Depotdatei.

  • Absturz beim Playback mit folgender Fehlermeldung:

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

    Lösung: Benutze die Option extralibdir von configure --with-extralibdir="/usr/lib -lrt"

  • MPlayer produziert eine Schutzverletzung (segfault) mit einer Meldung wie dieser:

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

    Lösung: Der HP-UX-Kernel hat eine Standard-Stackgröße von 8MB(?) pro Prozess. (11.0- und neuere 10.20-Patches lassen dich maxssiz bis auf 350MB für 32bit-Programme erhöhen). Du musst maxssiz erweitern und den Kernel recompilieren (und neu starten). Dazu kannst du SAM verwenden. (Überprüfe während des Neustarts den maxdsiz-Parameter für die maximale Anzahl Daten, die ein Programm nutzen darf. Er hängt von deiner Anwendung ab, ob der Standard von 64MB ausreicht oder nicht.)

12.3.4. AIX

MPlayer wird erfolgreich auf AIX 5.1, 5.2 und 5.3 erzeugt, verwendet man GCC 3.3 oder höher. Das Erzeugen von MPlayer auf AIX 4.3.3 und darunter wurde nicht getestet. Es wird dringend empfohlen, MPlayer mit GCC 3.4 oder höher zu erzeugen, oder es wird, falls du auf POWER5 arbeitest, GCC 4.0 benötigt.

Stelle sicher, dass du GNU make (/opt/freeware/bin/gmake) zum bauen von MPlayer nutzt, da du auf Probleme stossen wirst, wenn du /usr/ccs/bin/make anwendest.

Die CPU-Erkennung ist noch in Arbeit. Die folgenden Architekturen wurden getestet:

  • 604e

  • POWER3

  • POWER4

Folgende Architekturen wurden nicht getestet, sollten jedoch trotzdem funktionieren:

  • POWER

  • POWER2

  • POWER5

Sound über die Ultimedia Services wird nicht unterstützt, da Ultimedia in AIX 5.1 weggelassen wurde; deshalb ist die einzige Option, die Treiber des AIX Open Sound System (OSS) von 4Front Technologies auf http://www.opensound.com/aix.html zu verwenden. 4Front Technologies stellt die OSS-Treiber für AIX 5.1 für den nicht-kommerziellen Gebrauch frei zur Verfügung; wie auch immer, momentan gibt es keine Soundausgabetreiber für AIX 5.2 oder 5.3. Dies bedeutet, dass AIX 5.2 und 5.3 momentan keine MPlayer-Tonausgabe beherrschen.

Lösung für gebräuchliche Probleme:

  • Wenn du folgende Fehlermeldung von configure erhältst:

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

    Das liegt daran, dass AIX Namen für Zeichensätze benutzt, die nicht dem Standard entsprechen; daher wird die Konvertierung von MPlayer-Ausgaben zu anderen Zeichensätzen momentan nicht unterstützt. Die Lösung besteht darin, folgendes zu tun:

    $ ./configure --charset=noconv