# Ports

## Linux

La plateforme principale de développement est Linux sur x86, bien que MPlayer fonctionne sur de nombreux autres ports Linux. Des binaires de MPlayer sont disponibles depuis de nombreuses sources. Par contre, aucun de ces paquets n'est supporté. Rapportez les problèmes à leurs auteurs, pas à nous.

### Paquets Debian

Pour construire le paquet Debian, lancez la commande suivante dans le répertoire source de MPlayer :

    fakeroot debian/rules binary

Si vous voulez passer des options particulières à configure, vous pouvez définir la variable d'environnement `DEB_BUILD_OPTIONS`. Par exemple, si vous voulez le support de la GUI et de l'OSD, faites :

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

Vous pouvez aussi passer quelques variables au Makefile. Par exemple, si vous voulez compiler avec gcc 3.4 même si ce n'est pas celui par défaut :

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

Pour nettoyer l'arborescence des sources, exécutez la commande suivante :

    fakeroot debian/rules clean

En tant que root installez le paquet `.deb` comme d'habitude :

    dpkg -i ../mplayer_version.deb

Christian Marillat a construit des paquets Debian non-officiels pour MPlayer, MEncoder et les polices depuis un certain temps, vous pouvez les obtenir (apt-get) depuis sa page web.

### Paquets RPM

Dominik Mierzejewski maintient les paquets RPM officiels de MPlayer pour Fedora Core. Ils sont disponibles sur le dépôt Livna.

Les paquets RPM pour Mandrake/Mandriva sont disponibles sur le P.L.F., SuSE incluait une version limitée de MPlayer dans sa distribution. Ils l'ont retiré dans leurs dernières versions. Vous pouvez obtenir des RPMs fonctionnels sur links2linux.de.

### ARM

MPlayer fonctionne sur les PDAs Linux avec un CPU ARM c-a-d Sharp Zaurus, Compaq Ipaq. La manière la plus facile d'obtenir MPlayer est de récupérer un des paquets OpenZaurus. Si vous voulez le compiler vous-même, vous devriez regarder les répertoires mplayer et libavcodec du répertoire raçine de la distribution OpenZaurus. Ils ont toujours les derniers Makefile et patchs utilisés pour contruire la version SVN de MPlayer. Si vous avez besoin d'une GUI, vous pouvez utiliser xmms-embedded.

## *BSD

MPlayer fonctionne sur toutes les variations de BSD connues. Il y a des versions ports/pkgsrc/fink/etc de MPlayer disponibles qui sont probablement plus faciles à utiliser que nos sources brutes.

Pour construire MPlayer vous aurez besoin de GNU make (gmake - le make natif de BSD ne fonctionnera pas) et une version récente des binutils.

Si MPlayer se plaint de ne pas trouver `/dev/cdrom` ou `/dev/dvd`, créez le lien symbolique approprié :

    ln -s /dev/votre_périphérique_cdrom /dev/cdrom

Pour utiliser les DLLs Win32 avec MPlayer vous devrez recompiler le noyau avec "`option USER_LDT`" (à moins d'utiliser FreeBSD-CURRENT, où c'est le cas par défaut).

### FreeBSD

Si votre CPU à SSE, recompilez votre noyau avec "`options CPU_ENABLE_SSE`" (FreeBSD-STABLE ou patches noyau requis).

### OpenBSD

À cause des limitations dans les différentes versions de gas (relocation contre MMX), vous aurez besoin de compiler en deux étapes : D'abord assurez-vous que le non-natif est en premier dans votre `$PATH` et faites un `gmake -k`, ensuite assurez-vous que la version native est utilisée et faites `gmake`.

Depuis OpenBSD 3.4 le hack ci-dessus n'est plus nécessaire.

### Darwin

Voir la section Mac OS.

## Unix Commercial

MPlayer a été porté sur un grand nombre d'Unix commerciaux. Étant donné que les environements de dévelopement sur ces systèmes ont tendances à être différent de ceux trouvé sur les Unix libres, vous devrez peut-être faire quelques ajustements manuels pour que le build fonctionne.

### Solaris

MPlayer devrait fonctionner sous Solaris 2.6 ou supérieur. Utilisez le pilote audio de SUN avec l'option `-ao sun` pour le son.

Sur les UltraSPARCs, MPlayer profite des avantages de leurs extensions VIS (équivalentes au MMX), actuellement uniquement dans libmpeg2, libvo et libavcodec, mais pas dans mp3lib. Vous pouvez regarder un fichier VOB sur un CPU à 400MHz. Vous aurez besoin d'avoir mLib installé.

Attention :

- mediaLib est actuellement désactivé par défaut dans MPlayer pour cause d'inconsistance. Les utilisateurs SPARC qui ont construit MPlayer avec le support mediaLib ont reporté une forte coloration verte sur les vidéo encodées et décodées avec libavcodec. Si vous le désirez, vous pouvez activer mediaLib avec :

      ./configure --enable-mlib

  Ceci est à vos risques et périls. Les utilisateurs x86 ne doivent jamais utiliser mediaLib, puisque cela déteriorerait les performances de MPlayer de manière importante.

Pour construire ce paquetage vous aurez besoin de GNU make (`gmake`, `/opt/sfw/gmake`), le make natif de Solaris ne fonctionnera pas. Message d'erreur typique si vous utilisez le make de Solaris au lieu de celui de GNU :

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

Sur Solaris SPARC, vous aurez besoin du compilateur C/C++ GNU; cela n'a pas d'importance que le compilateur C/C++ GNU soit configuré avec ou sans l'assembleur GNU.

Sur Solaris x86,vous aurez besoin de l'assembleur GNU et du compilateur C/C++ GNU, configuré pour l'utilisation de l'assembleur GNU ! Le code de MPlayer sur la plateforme x86 fait un usage intensif des instructions MMX, SSE et 3DNOW! qui ne peuvent pas être assemblées en utilisant l'assembleur de Sun `/usr/ccs/bin/as`.

Le script `configure` essaie de trouver quel assembleur est utilisé par votre commande "gcc" (au cas ou l'autodétection échoue, utilisez l'option `--as=/endroit/ou/vous/avez/installe/gnu-as` pour indiquer au script `configure` où il peut trouver GNU "as" sur votre système).

Solutions aux problèmes courants :

- Message d'erreur de `configure` sur un système Solaris x86 en utilisant GCC sans assembleur GNU :

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

  (Solution : Installez et utilisez un gcc configuré avec `--with-as=gas`)

  Erreur typique obtenue en construisant avec un compilateur C GNU qui n'utilise pas 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 est susceptible de renvoyer une erreur de segmentation (segfault) à l'encodage ou au décodage de vidéos utilisant 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
      ...

  Ceci est du à une modification de sysi86() dans Solaris 10 et dans les versions antérieures à Solaris Nevada b31. Ceci a été réparé par Sun pour Solaris Nevada b32 mais pas encore pour Solaris 10. Le Projet MPlayer a averti Sun de ce problème. Un patch pour Solaris 10 est actuellement en développement. Plus d'information sont disponibles à l'adresse suivante : .

- A cause de bogues dans Solaris 8, il se peut que vous ne puissiez pas lire de disques DVD plus gros que 4 Go :

  - Le pilote sd(7D) de Solaris 8 x86 a un bogue quand on accède à un bloc disque >4Go sur un périphérique en utilisant une taille de bloc logique != DEV_BSIZE (c-a-d. CD-ROM et DVD). A cause d'un dépassement des entiers 32Bit, on accède à une adresse disque modulo 4 Go. (). Ce problème n'existe pas sur la version SPARC de Solaris 8.

  - Un bogue similaire est présent dans le code du système de fichier hsfs(7FS) (alias ISO9660), il se peut que hsfs ne supporte pas les partitions/disques plus gros(ses) que 4GB, toutes les données sont accédées modulo 4Go. (). Le problème hsfs peut être résolu en installant le patch 109764-04 (sparc) / 109765-04 (x86).

### HP-UX

Joe Page héberge un HOWTO MPlayer sous HP-UX écrit par Martin Gansser sur sa page web. Avec ses instructions la compilation devrait fonctionner sans modifications. L'information qui suit a été récupéré depuis ce HOWTO.

Vous avez besoin de GCC 3.4.0 ou supérieur, GNU make 3.80 ou supérieur et SDL 1.2.7 ou supérieur. HP cc ne fournira pas un programme qui marche, les versions précedentes de GCC sont boguées. Pour la fonctionnalité OpenGL vous aurez besoin d'installer Mesa et les pilotes de sortie vidéo gl et gl2 devraient marcher, la vitesse pouvant en être très affecté, dépendamment de la vitesse du CPU. Une bonne alternative au pauvre système son natif de HP-UX est GNU esound.

Créer le périphérique DVD scanne le bus SCSI avec :

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

La sortie d'écran montre un lecteur DVD-ROM Pioneer à l'adresse SCSI 2. L'instance de la carte pour le chemin hardware 8/16 est 1.

Créer un lien depuis le prériphérique brut vers le périphérique DVD.

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

Exemple :

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

Ci-dessous sont exposées les solutions pour certains problèmes communs :

- Plante au démarrage avec le message d'erreur suivant :

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

  Cela signifie que la fonction .finite(). n'est pas disponible dans la librairie standard math de HP-UX. A la place, il y a .isfinite().. Solution : Utiliser le dernier fichier dépôt Mesa.

- Plante à la lecture avec le message d'erreur suivant :

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

  Solution : Utiliser l'option extralibdir lors de configure `--extra-ldflags="/usr/lib -lrt"`

- MPlayer segfaults avec un message comme celui-ci :

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

  Solution : Le noyau HP-UX a une taille de pile par défaut de 8MO(?) par processus. (des patches 11.0 et de plus récent 10.20 vous permettront d'augmenter maxssiz jusqu'à 350MB pour les programmes 32-bit). Vous aurez besoin d'étendre maxssiz et de recompiler le noyau (et redémarrer). Vous pouvez utiliser SAM pour ce faire. (Pendant ce temps, aller voir le paramètre maxdsiz pour le montant maximum de données qu'un programme peut utiliser. Cela dépend de vos applications, si la valeur par défaut de 64MO est suffisante ou non.)

### AIX

MPlayer se compile parfaitement sous AIX 5.1, 5.2 et 5.3, en utilisant GCC 3.3 ou plus. La compilation de MPlayer sous AIX 4.3.3 et inférieur n'a pas été testé. Il est hautement recommandé que vous compiliez MPlayer en utilisant GCC 3.4 ou plus, ou si vous êtes sous POWERS, GCC 4.0 est requis.

Assurez vous d'utiliser GNU make (`/opt/freeware/bin/gmake`) pour construire MPlayer, autrement vous rencontreriez des problèmes si vous utilisez `/usr/ccs/bin/make`.

La détection CPU est toujours un travail en cours. Les architectures suivantes ont été testé :

- 604e

- POWER3

- POWER4

Les architectures suivantes n'ont pas été testé, mais devraient quand même marcher :

- POWER

- POWER2

- POWER5

Le son à travers les Services Ultimedia n'est pas supporté, comme Ultimedia a été abondonné dans AIX 5.1; , la seule option est d'utiliser les pilotes AIX OSS de 4Front Technologies depuis http://www/opensound.com/aix/html. 4Front Technologies fourni librement les pilotes OSS pour AIX 5.1 pour un usage personnel et non-commercial. Cependant, il n'y a actuellement pas de pilote de son pour AIX 5.2 ou 5.3. Cela signifie qu'à l'heure actuelle MPlayer ne produit pas de son sous AIX 5.2 et 5.3.

Solutions aux problèmes courants :

- Si vous rencontrez ce message d'erreur de `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.

  Ceci est du au fait que AIX utilise un jeu de caractÃ¨re (charset) non standards. En conséquence, la conversion d'une sortie MPlayer en un autre character set et n'est pas suporté pour l'instant. La solution est d'utiliser :

      $ ./configure --charset=noconv

### QNX

Vous aurez besoin de télécharger et installer SDL pour QNX. Puis de lancer MPlayer avec les options `-vo sdl:driver=photon` et `-ao sdl:nto`, cela devrait être rapide.

La sortie de `-vo x11` sera encore plus lente que sous Linux, étant donné que QNX n'a qu'une émulation X, qui est très lente.

## Windows

Oui, MPlayer tourne sous Windows via Cygwin et MinGW. Il n'a pas encore de GUI, mais la version en ligne de commande est complètement opérationnelle. Vous devriez jeter un oeil à la liste de diffusion Mplayer-cygwin pour obtenir de l'aide et les dernières informations. Les binaires officiels de Windows peuvent être récupérés sur la page de téléchargement. Les paquetages d'installation et de simple frontends GUI sont disponibles à partir de sources externe, nous avons collecté ensuite dans la section Windows de notre page de projets.

Si vous souhaitez éviter d'utiliser la commande en ligne, une astuce toute simple est de mettre un raccourci sur votre bureau qui contient quelque chose comme ce qui suit dans la section d'execution :

    c:\chemin\vers\mplayer.exe %1

Cela va faire lire à MPlayer n'importe quel film qui est laché sur le raccourci. Ajoutez `-fs` pour le mode plein écran.

Les meilleurs résultats sont obtenus avec le codec vidéo DirectX natif (`-vo directx`). Vous pouvez aussi utiliser OpenGL et SDL, mais les performances d'OpenGL sont très variables suivant les systèmes et SDL est connu pour distordre l'image ou planter sur certains systèmes. Si l'image est distordue, essayez de désactiver l'accélération matérielle avec `-vo directx:noaccel`. Téléchargez les fichiers d'entête DirectX 7 pour compiler le pilote de sortie vidéo DirectX. De plus vous devez avoir DirectX 7 ou supérieur pour que ce pilote fonctionne.

VIDIX fonctionne maintenant sous Windows avec `-vo winvidix`, bien que ce soit toujours expérimental et que cela requiert une configuration manuelle. Téléchargez dhahelper.sys ou dhahelper.sys (avec support des MTRR) et copiez le dans le répertoire `libdha/dhahelperwin` de votre arborescence MPlayer. Ouvrez une console et tapez

    make install-dhahelperwin

en tant qu'Administrateur. Ensuite vous devez rebooter.

Pour de meilleurs résultats MPlayer devrait utiliser une palette que votre carte graphique supporte de façon matérielle. Malheureusement, de nombreux pilotes graphiques Windows renvoient certaines palettes alors que la carte ne le supporte pas. Pour le vérifier, essayez

    mplayer -benchmark -nosound -frames 100 -vf format=palette film

où palette peut être n'importe quelle palette affichée par l'option `-vf format=fmt=help`. Si vous trouvez une palette que votre carte gère particulièrement mal, `-vf noformat=palette` l'empèchera d'être utilisée. Ajouter cela à votre fichier de conf pour ne plus l'utiliser de façon permanente.

Il y a des paquetages de codec spécial pour Windows disponible sur notre page de codecs pour permettre de jouer les formats qui ne sont pas encore nativement supportés. Placez les codecs quelque part dans votre path ou passez `--codecsdir=c:/chemin/de/vos/codecs` (éventuellement `--codecsdir=/chemin/de/vos/codecs` uniquement sous Cygwin) à `configure`. Nous avons eu quelques retours indiquant que les DLLs Real doivent être accessibles en écriture pour l'utilisateur ayant lancé MPlayer, mais seulement sur certains systèmes (NT4). Essayez de les rendre accessibles en écriture si vous avez des problèmes.

Vous pouvez lire des VCDs en jouant les fichiers `.DAT` ou `.MPG` que Windows affiche sur les VCDs. Cela fonctionne tout simplement comme cela (changez la lettre de votre lecteur de CD-ROM) :

    mplayer d:/mpegav/avseq01.dat

Vous pouvez aussi lire une piste VCD directement en utilisant :

     mplayer vcd://<track> -cdrom-device d:

Les DVDs fonctionnent également, ajustez `-dvd-device` à la lettre de votre lecteur DVD-ROM :

    mplayer dvd://<titre> -dvd-device d:

La console Cygwin/MinGW est plutôt lente. Il semble que rediriger la sortie ou utiliser l'option `-quiet` améliore les performances. Le rendu direct (`-dr`) peut également aider. Si la lecture est erratique, essayez `-autosync 100`. Si certaines de ces options vous sont utiles, vous pouvez les placer dans votre fichier de config.

Si vous avez un Pentium 4 et que vous expériencez un plantage lors de l'utilisation des codecs RealPlayer vous pourriez vouloir désactiver le support hyperthreading.

### Cygwin

Vous devez utiliser Cygwin 1.5.0 ou supérieur pour pouvoir compiler MPlayer.

Les fichiers d'entête DirectX doivent être décompressés dans `/usr/include/` ou dans `/usr/local/include/`.

Les instructions et les fichiers pour faire tourner SDL sous Cygwin peuvent être trouvés sur le site de libsdl.

### MinGW

Installer une version de MinGW qui puisse compiler MPlayer était considéré comme compliqué, mais fonctionne désormais sans modifications. Installez simplement MinGW 3.1.0 ou plus récent et MSYS 1.0.9 ou plus récent et dites au postinstall de MSYS que MinGW est installé.

Décompressez les fichiers d'entête de DirectX dans `/mingw/include/`.

Le support des entêtes compressées MOV requiert zlib, que MinGW ne fournit pas par défaut. Configurez-le avec `--prefix=/mingw` et installez-le avant de compiler MPlayer.

De complètes instructions pour compiler MPlayer et les librairies nécessaires sont disponibles sur MPlayer MinGW HOWTO.

## Mac OS

MPlayer ne fonctionne pas sur des versions ultérieures à Mac OS 10, mais devrait compiler sans changement sur Mac OS X 10.2 et supérieur. Le compilateur préféré étant la version Apple de GCC 3.x ou supérieure. Vous pouvez obtenir l'environement de compilation de base en installant Xcode de Apple. Si vous avez Mac OS X 10.3.9 ou supérieur et QuickTime 7 vous pouvez utiliser le pilote corevideo de sortie vidéo.

Malheureusement, cet environement de base ne vous autorise pas à profiter de toute les fonctionalités de MPlayer. Par exemple, pour compiler le support OSD, vous devez avoir les librairies fontconfig et freetype installées sur votre machine. Contrairement à d'autres Unix comme la plupart des Linux et des BSDs, OSX n'a pas un seul système de package installé par défault.

Il y en a au moins deux au choix : Fink et MacPorts. Les deux fournissent approximativement les même services (i.e. beaucoup de packages au choix, la résolution des dépendances, la possibilité d'ajouter/mêtre à jour/supprimer simplement des packages, etc...). Fink offre à la fois des packages binaires précompilés ou la possibilité de compiler tout à partir des sources, alors que MacPorts offre seulement la possibilité de compilé les sources. L'auteur de ce guide a choisi MacPorts pour la simple raison que son installation minimale occupe moins d'espace disque. Les exemples à suivre sont basés sur MacPorts.

Par exemple, pour compiler MPlayer avec le support OSD :

    sudo port install pkgconfig

Ceci va installer pkg-config, le système de gestion des flags de compilation/linking des librairies. Le script configure de MPlayer l'utilise pour détecter les librairies proprement. Vous pouvez ensuite installer fontconfig de la même manière :

    sudo port install fontconfig

Vous pouvez ensuite lancer le script configure de MPlayer (notez les variables d'environement PKG_CONFIG_PATH et PATH pour que configure trouve les librairies installées avec MacPorts) :

    PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure

### MPlayer OS X GUI

Vous pouvez obtenir un GUI natif et un binaire pré-compilé de MPlayer pour Mac OS X depuis le projet MPlayerOSX, mais soyez averti : ce projet n'est plus du tout actif.

Heureusement, MPlayerOSX a été repris en main par un membre de l'équipe de MPlayer. Des versions preview sont disponibles sur notre page de téléchargement et une version officielle ne devrait pas tarder.

Afin de compiler MPlayerOSX depuis le source vous-même, vous avez besoin du module mplayerosx, du module main et d'une copie du module SVN main renommé en main_noaltivec. mplayerosx est le frontend GUI, main est un MPlayer et main_noaltivec est le MPlayer compilé sans le support AltiVec.

Pour récupérer les modules SVN utilisez :

    svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
    svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main

Pour compiler MPlayerOSX vous aurez besoin de mettre en place quelque chose comme ceci :

    MPlayer_repertoire_source
       |
       |--->main           (source SVN de MPlayer)
       |
       |--->main_noaltivec (source SVN de MPlayer configuré avec --disable-altivec)
       |
       \--->mplayerosx     (source SVN MPlayerOSX)

Premièrement vous avez besoin de compiler main et main_noaltivec.

Pour assurer une rétro compatibilité maximum, commencez par créer la variable d'environnement suivante :

    export MACOSX_DEPLOYMENT_TARGET=10.3

Et, configurez :

Si vous configurez pour un CPU G4 (ou plus récent) avec le support AltiVec, faites comme suit :

    ./configure --disable-gl --disable-x11

Si vous configurez pour un G3 sans le support AltiVec, faites comme suit :

    ./configure --disable-gl --disable-x11 --disable-altivec

Vous pourriez avoir besoin d'éditer `config.mak` et changer le -mcpu et -mtune de 74XX à G3.

Continuez avec

    make

ensuite placez vous dans le répertoire mplayerosx et tapez

    make dist

Cela créera une archive compressée .dmg avec le binaire prêt à l'emploi.

Vous pouvez aussi utiliser le projet Xcode 2.1; le vieux projet pour Xcode 1.x n'étant plus du tout en fonction.