## 2.2 Codecs supportés

### 2.2.1 Codecs vidéo

Voir la table d'état des codecs pour une liste complète, générée quotidiennement. Très peu de codecs sont disponibles en téléchargement sur notre page web. Récupérez-les depuis notre page des codecs.

Les plus importants d'entre eux:

- vidéo MPEG1 (VCD) et MPEG2 (DVD)
- décodeurs natifs pour DivX ;-), OpenDivX, DivX4, DivX5, M$ MPEG4 v1, v2 et autres variantes MPEG4
- décodeur natif pour Windows Media Video 7/8 (WMV1/WMV2), et décodeur de DLL Win32 pour Windows Media Video 9 (WMV3), utilisés tous les deux dans les fichiers .wmv
- décodeur Sorenson 1 (SVQ1) natif
- décodeur Sorenson 3 (SVQ3) Win32/QT
- décodeur 3ivx v1, v2
- codecs Cinepak et Intel Indeo (3.1, 3.2, 4.1, 5.0)
- MJPEG, AVID, VCR2, ASV2 et autres formats matériels
- VIVO 1.0, 2.0, I263 et autres variantes h263(+)
- FLI/FLC
- codec RealVideo 1.0 de libavcodec, et codecs RealVideo 2.0, 3.0 et 4.0 en utilisant les librairies RealPlayer
- décodeur natif pour HuffYUV
- vieux et simples formats variés similaires à RLE

Si vous avez un codec Win32 non listé ici qui n'est pas encore supporté, veuillez lire Comment importer des codecs et aidez-nous à en ajouter le support.

#### 2.2.1.1 DivX4/DivX5

Cette section contient des informations sur les codecs DivX4 et Divx5 de Project Mayo. Leur première version (alpha) disponible est OpenDivX 4.0 alpha 47 et 48. Son support est inclut dans MPlayer, et compilé par défaut. Nous avons fréquemment utilisé son code de postprocessing pour améliorer la qualité visuelle des vidéos MPEG1/2. Maintenant nous utilisons notre propre code, pour touts les types de fichier.

La nouvelle génération de ce codec est appelée DivX4 et peut même décoder les vidéos créées avec le très mauvais codec DivX ! De plus il est plus rapide que les DLLs Win32 DivX natives mais plus lent que libavcodec. Son utilisation en tant que décodeur est donc DÉCOURAGÉ. Cependant, il est utile pour l'encodage. Un désavantage de ce codec est que ces sources sont ne sont pas disponibles sous une licence Open source.

DivX4Linux fonctionne dans deux modes:

`-vc odivx`
  Utilise le codec divx4 à la manière d'OpenDivX. Dans ce cas il affiche des images YV12 dans son propre buffer, et MPlayer fait la conversion de palette via libvo. (Rapide, recommandé !)
`-vc divx4`
  Utilise la conversion de palette du codec. Dans ce mode, vous pouvez également utiliser le format YUY2/UYVY.(LENT)

La méthode `-vc odivx` est généralement plus rapide, grâce au fait qu'elle transfert les données des images au format YV12 (planar YUV 4:2:0), nécessitant ainsi moins de bande passante sur le bus. Pour les modes YUV compactés (YUY2, UYVY), utilisez la méthode `-vc divx4`. Pour les modes RGB la vitesse est la même, au mieux elle peut varier selon votre profondeur de couleur.

Note: Si votre pilote `-vo` supporte le rendu direct, alors `-vc divx4` pourra être plus rapide voir même la solution la plus rapide.

Le codec binaire de Divx4/5 peut être téléchargé depuis avifile. ou divx.com.

Désarchivez-le, lancez `./install.sh` en root et n'oubliez pas d'ajouter `/usr/local/lib` à votre `/etc/ld.so.conf` et de lancer `ldconfig`.

Récupérez la version CVS de l'ANCIENNE librairie principale OpenDivx comme ceci:

1. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login`
2. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore`
3. Cette librairie principale est séparée en librairies d'encodage et de décodage qui doivent être compilées séparément. Pour la librairie de décodage, tapez simplement

           cd divxcore/decore/build/linux
           make
           cp libdivxdecore.so /usr/local/lib
           ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
           cp ../../src/decore.h /usr/local/include

4. Hélas, pour la librairie d'encodage il n'y a pas de Makefile Linux disponible, et le code optimisé pour MMX ne fonctionne que sous Windows. Vous pouvez quand même le compiler en utilisant ce Makefile.

           cd ../../../encore/build
           mkdir linux
           cd linux
           cp path/Makefile .
           make
           cp libdivxencore.so /usr/local/lib
           ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
           cp ../../src/encore.h /usr/local/include

MPlayer détecte si DivX4/DivX5 est correctement installé, donc compilez le normalement. Si il ne détecte pas le codec, votre installation ou votre configuration n'est pas correcte.

#### 2.2.1.2 DivX/libavcodec de FFmpeg

FFmpeg contient un codec open source, qui est capable de décoder des flux encodés avec des codecs vidéo H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV, ou audio WMA (Windows Media Audio). Mais seuls quelques-uns peuvent être encodés avec, mais il offre également une vitesse plus rapide que les codecs Win32 ou que la librairie DivX4/5 de DivX.com!

Il contient plein de bons codecs, les plus importantes étant les variantes MPEG4: DivX 3, DivX 4, DivX 5, Windows Media Video 7 (WMV1). Le décodeur WMA est également très intéressant.

Si vous utilisez une version officielle vous avez libavcodec directement dans le paquetage, construisez comme d'habitude. Si vous utilisez la version CVS de MPlayer vous devrez extraire libavcodec de l'arborescence CVS de FFmpeg car les versions officielles de FFmpeg ne fonctionnent pas. Pour y arriver faites:

1. `cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login`
2. `cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg`
3. Déplacez le répertoire `libavcodec` des sources FFmpeg à la racine de l'arborescence CVS de MPlayer. Cela devrait ressembler à cela:

   `main/libavcodec`

   Faire un lien symbolique n'est pas suffisant, vous devez le copier ou le déplacer!
4. Compilez. Configure devrait détecter les problèmes avant la compilation.

Avec FFmpeg et ma Matrox G400, je peut voir des films DivX en haute résolution sans sauter de trames sur mon K6/2 500.

#### 2.2.1.3 Codecs XAnim

#### AVANT-PROPOS

Soyez prévenu que les codecs binaires XAnim sont packagées avec un un morceau de texte revendiquant être la licence liée au logiciel qui, entre autres restrictions, interdit à l'utilisateur d'utiliser les codecs en conjonction avec n'importe quel autre programme que XAnim. Cependant l'auteur de XAnim n'a encore entrepris d'actions légales contre quiconque pour des problèmes relatifs aux codecs.

#### INSTALLATION ET UTILISATION

MPlayer est capable d'employer les codecs XAnim pour décoder. Suivez les instructions pour les activer:

1. Téléchargez les codecs que vous désirez utiliser depuis le site d'XAnim. Le codec 3ivx n'y est pas, il est sur le site de 3ivx.
2. OU téléchargez le pack de codecs depuis notre page des codecs.
3. Utilisez l'option `--with-xanimlibdir` pour dire à configure où trouver les codecs XAnim. Par défaut, il les cherche dans `/usr/local/lib/xanim/mods, /usr/lib/xanim/mods et /usr/lib/xanim`. Vous pouvez également fixer la variable d'environnement XANIM_MOD_DIR avec le répertoire des codecs XAnim.
4. Renommez/faites des liens symboliques de ces fichiers, en séparant le reste de l'architecture, ils auront donc des noms comme ceux-ci: `vid_cvid.xa, vid_h263.xa, vid_iv50.xa`.

XAnim sont des codecs de la famille `xanim`, donc vous pouvez utiliser l'option `-vfm xanim` pour dire à MPlayer de les utiliser si possible.

Les codecs testés incluent: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

#### 2.2.1.4 VIVO video

MPlayer peut lire les vidéos Vivo (1.0 et 2.0). Le codec le plus approprié pour les fichiers 1.0 est le décodeur H263 de FFmpeg, vous pouvez l'utiliser avec l'option `-vc ffh263` (par défaut). Pour les fichiers 2.0, utilisez le fichier DLL Win32 par l'intermédiaire de l'option `-vc vivo`. Si vous ne fournissez pas d'options en ligne de commande, MPlayer sélectionne le meilleur codec automatiquement.

#### 2.2.1.5 MPEG 1/2 video

MPEG1 et MPEG2 sont décodé par la librairie multiplateforme libmpeg2 native, dont le code source est inclus dans MPlayer. Nous gérons la vidéo MPEG 1/2 boguée en attrapant `signal 11(segmentation fault)`, et en réinitialisant rapidement le codec, continuant ainsi exactement où l'erreur c'est produite. Cette technique de récupération n'a pas d'influence mesurable sur la vitesse.

#### 2.2.1.6 MS Video1

C'est un très vieux et très mauvais codec de Microsoft. Dans le passé il était décodé par le codec Win32 `msvidc32.dll`, maintenant nous avons notre propre implémentation open source (par Mike Melanson).

#### 2.2.1.7 Cinepak CVID

MPlayer utilise son propre décodeur Cinepak, open source et multiplateforme par défaut. Il supporte les sorties YUV, donc le zoom matériel est possible si le pilote de sortie vidéo le permet.

#### 2.2.1.8 RealVideo

MPlayer décode toutes les versions de RealVideo:

- RealVideo 1.0 (fourcc RV10) - en/décodage supporté par libavcodec
- RealVideo 2.0, 3.0, 4.0 (fourcc RV20, RV30, RV40) - décodage supporté par les librairies RealPlayer

Il est recommandé de télécharger et d'installer RealPlayer8 ou RealONE, car MPlayer peut utiliser leurs librairies pour décoder les fichiers contenant de la vidéo RealVideo 2.0 - 4.0. Le script configure de MPlayer devrait détecter les librairies RealPlayer aux emplacements standards d'une installation complète. Si non, dites à configure où chercher avec l'option `--with-reallibdir`.

Note: Les librairies RealPlayer ne fonctionnent actuellement qu'avec Linux, FreeBSD, NetBSD et Cygwin sur les plateformes x86,Alpha et PowerPC (Linux/Alpha et Linux/PowerPC ont été testés).

#### 2.2.1.9 XviD

XviD est un fork du développement du codec OpenDivX. Il est apparu quand ProjectMayo est passé d'OpenDivX au sources-fermées DivX4 (Maintenant DivX5), et les personnes extérieures à ProjectMayo travaillant sur OpenDivX se sont fâchés, et ont démarré XviD. Les deux projets ont donc la même origine.

#### AVANTAGES:

- open source
- son API est compatible avec DivX4 donc en inclure le support est facile
- encodage en 2 passes
- bonne qualité d'encodage, plus grande vitesse que DivX4 (vous pouvez l'optimiser pour votre machine pendant la compilation)

#### DÉSAVANTAGES:

- actuellement il ne décode pas correctement tous les fichiers DivX/DivX4 (pas un problème puisque libavcodec peut les jouer)
- vous devez choisir DivX4 ou XviD à la compilation
- en développement

#### INSTALLER LA VERSION CVS DE XVID

XViD n'est actuellement disponible que depuis le CVS. Voici les instructions de téléchargement et d'installation (vous avez besoin d'au moins autoconf 2.50, automake et libtool):

1. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login`
2. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore`
3. `cd xvidcore/build/generic`
4. `./bootstrap.sh`
5. `./configure`
   Vous pouvez avoir à ajouter des options (examinez la sortie de `./configure --help`).
6. `make && make install`
7. Si vous avez spécifié `--enable-divxcompat`, copiez le fichier d'entête `divx4.h` du répertoire `xvidcore/src/` dans `/usr/local/include/`.
8. Recompilez MPlayer avec `--with-xvidcore=/chemin/de/libxvidcore.a`.

#### 2.2.1.10 Sorenson

Sorenson est une famille de codec vidéo développée par Sorenson Media et licenciée à Apple qui le distribue avec son lecteur QuickTime. Nous sommes actuellement capables de décoder toutes les versions des fichiers Sorenson avec les décodeurs suivants:

- Sorenson 1 (fourcc SVQ1) - décodage supporté par des codecs natifs
  En fait il y a deux (presque égaux) décodeurs pour SVQ1: l'un est inclus dans MPlayer, l'autre est dans libavcodec. Vous pouvez invoquer chacun d'eux avec les options `-vc svq1` et `-vc ffsvq1` respectivement. Certains fichiers peuvent fonctionner avec l'un, et pas avec l'autre, donc testez les deux décodeurs. Le décodeur a été écrit (par reverse-engineering) par les auteurs de Xine.
- Sorenson 3 (fourcc SVQ3) - décodage supporté par les librairies QuickTime Win32

#### COMPILER MPLAYER AVEC LE SUPPORT DES LIBRAIRIES QUICKTIME

NOTE: actuellement seules les plateformes Intel 32bit sont supportées.

1. téléchargez le CVS de MPlayer
2. compilez MPlayer avec:
   `$ ./configure --enable-qtx-codecs`
3. téléchargez le pack de DLL QuickTime sur http://www.mplayerhq.hu/MPlayer/releases/codecs/
4. décompressez le pack de DLL QuickTime dans votre répertoire de codecs Win32(par défaut: `/usr/lib/win32`)

### 2.2.2 Codecs Audio

Les plus importants d'entre eux:

- MPEG layer 2 (MP2), et layer 3 (MP3) audio (code natif, avec optimisation MMX/SSE/3DNow!)
- MPEG layer 1 audio (code natif, avec libavcodec)
- Windows Media Audio v1, v2 (code natif, avec libavcodec)
- Windows Media Audio 9 (WMAv3) (en utilisant les DLL DMO)
- AC3 Dolby audio (code natif, avec optimisation MMX/SSE/3DNow!)
- AC3 par l'intermédiaire de la carte son
- codec Ogg Vorbis audio (librairie native)
- RealAudio: DNET (AC3 bas débit), Cook, Sipro et ATRAC3
- QuickTime: codecs audio Qualcomm et QDesign
- VIVO audio (g723, Vivo Siren)
- Voxware audio (en utilisant les DLL DirectShow)
- alaw et ulaw, formats variés gsm, adpcm, pcm et autres vieux formats simples
- AAC

#### 2.2.2.1 Décodage AC3 logiciel

C'est le décodeur utilisé par défaut pour les fichier avec de l'audio AC3.

Le décodeur AC3 peut créer des sortie audio mixées pour 2, 4 ou 6 haut-parleurs. Quand il est configuré pour 6 haut-parleurs, ce décodeur fournit des sorties séparées pour tous les canaux AC3 du pilote son, autorisant la pleine expérience du "son surround" sans décodeur AC3 externe requis pour l'usage du codec hwac3.

Utilisez l'option `-channels` pour sélectionner le nombre de canaux de sortie. Utilisez `-channels 2` pour un mix stéréo. Pour un mix 4 canaux (Avant Gauche, Avant Droite, Surround Gauche et Surround Droit), utilisez `-channels 4`. Dans ce cas, l'éventuel canal du centre sera mixé à part égale sur les canaux de devant. `-channels 6` sortira tous les canaux AC3 tels qu'ils ont été encodé - dans l'ordre Gauche, Droite, Surround Gauche, Surround Droit, Centre et LFE.

Le nombre de canaux par défaut est 2.

Pour utiliser plus de 2 canaux de sortie, vous devrez utiliser OSS, et avoir une carte son qui supporte le nombre de canaux de sortie requis via le ioctl SNDCTL_DSP_CHANNELS. Un exemple de driver approprié est emu10k1 (utilisé par la carte Soundblaster Live!) depuis Août 2001 (Le CVS ALSA est également sensé fonctionner).

#### 2.2.2.2 Décodage AC3 matériel

Vous avez besoin d'une carte son gérant l'AC3, avec une sortie numérique (SP/DIF). Le pilote de la carte doit supporter correctement le format AFMT_AC3 (C-Media le fait). Connectez le décodeur AC3 à la sortie SP/DIF, et utilisez l'option `-ac hwac3`. C'est expérimental mais cela fonctionne avec les cartes C-Media, Soundblaster Live! en utilisant les pilotes ALSA (mais pas OSS) et les décodeurs MPEG DXR3/Hollywood+.

#### 2.2.2.3 support libmad

libmad est une librairie de décodage MPEG audio multiplateforme. Il ne gère pas très bien les fichiers endommagés, et il à parfois des problèmes pour le déplacement.

Pour en activer le support, compilez avec l'option de configuration `--enable-mad`.

#### 2.2.2.4 VIVO audio

Le codec audio utilisé dans les fichiers VIVO dépends du fait que ce soit un fichier VIVO/1.0 ou VIVO/2.0. Les fichiers VIVO/1.0 ont de l'audio g.723, et les fichiers VIVO/2.0 de l'audio Vivo Siren. Les deux sont supportés. Vous pouvez attraper les DLL Win32 g.723/Siren depuis le site de MPlayer, puis les copier dans le répertoire `/usr/lib/win32`.

#### 2.2.2.5 RealAudio

MPlayer supporte le décodage de presque toutes les versions de RealAudio:

- RealAudio DNET - décodage supporté par liba52
- RealAudio Cook/Sipro/ATRAC3 - décodage supporté par les librairies RealPlayer

Pour savoir comment installer les librairies RealPlayer, voyez la section RealVideo.

#### 2.2.2.6 Codecs QDesign

Les flux audio QDesign (fourcc: QDMC, QDM2) sont trouvés dans les fichiers MOV/QT. Les deux versions de ce codec peuvent être décodées avec les librairies QuickTime libraries. Pour les instructions d'installation merci de voir la section codec vidéo Sorenson.

#### 2.2.2.7 Codec Qualcomm

Le flux audio Qualcomm (fourcc: Qclp) se trouve dans les fichiers MOV/QT. Il peut être décodé par les librairies QuickTime. Pour les instructions d'installation veuillez lire la section codec vidéo Sorenson.

#### 2.2.2.8 Codec AAC

AAC (Advanced Audio Coding) est un codec parfoit présent dans les fichiers MOV et MP4. Un décodeur open source appelé FAAD est disponible sur AudioCoding.com. Vous pouvez télécharger le codec de seconde génération FAAD2 sur leur page de téléchargement. Malheureusement FAAD2 1.1 ne compile pas sous Linux, vous devez donc utiliser la version CVS. Voici comment:

1. cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login
2. cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2
3. cd faad2/
4. chmod +x bootstrap
5. ./bootstrap
6. make
7. make install

Les binaires sont disponibles sur audiocoding.com, mais vous pouvez obtenir (apt-get) les paquets Debian depuis la page de Christian Marillat et les RPMs Mandrake sur le site du P.L.F.

### 2.2.3 Comment importer des codecs

#### 2.2.3.1 Codecs VFW

VfW (Video for Windows) est une ancienne API vidéo pour windows. Ses codecs portent l'extension .DLL ou plus rarement .DRV. Si MPlayer n'arrive pas à lire votre AVI et renvoie :

`UNKNOWN video codec: HFYU (0x55594648)`

Cela signifie que votre AVI est encodé avec un codec HFYU fourcc (HFYU = HuffYUV codec, DIV3 = DivX Low Motion, etc...). Maintenant que nous savons cela, nous devons déterminer quelle DLL windows utilise pour lire ce fichier. Dans votre cas, le fichier `system.ini` contient (entre autres):

`VIDC.HFYU=huffyuv.dll`

Donc nous aurons besoin de la librairie `huffyuv.dll`. Notez que les codecs audio sont spécifiés par le préfixe MSACM :

`msacm.l3acm=L3codeca.acm`

C'est le codec MP3. Nous avons désormais toutes les informations nécessaires (fourcc, fichier codec, fichier AVI). Demandez le support de votre codec par mail, et envoyez ces fichiers sur le FTP :

`ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nomcodec]/`

Note: Sur Windows NT/2000/XP cherchez cette info dans la base de registre, c-a-d cherchez "VIDC.HFYU". Pour savoir comment faire cela, regardez la l'ancienne méthode DirectShow ci-dessous.

#### 2.2.3.2 DirectShow codecs

DirectShow est une API vidéo récente pour Windows, sans doute plus mauvaise que la précédente :-( La situations est plus délicate avec DirectShow, puisque

- `system.ini` ne contient aucune information, qui sont désormais placées dans la base de registre.
- Nous aurons besoin du GUID du codec.

Nouvelle Méthode: En utilisant Microsoft GraphEdit (rapide)

1. Obtenez GraphEdit depuis le SDK DirectX ou sur Doom9.
2. Exécutez `graphedit.exe`.
3. Dans le menu sélectionnez Graph -> Insert Filters.
4. Dépliez l'élément `DirectShow Filters`.
5. Sélectionnez le bon nom de codec et dépliez l'élément.
6. Dans l'entrée `DisplayName` regardez le texte entre accolades après le backslash et notez-le (cinq blocs délimités par des tirets, le GUID).
7. Le binaire du codec est le fichier spécifié dans l'entrée `Filename`.

Note: Si il n'y a pas d'entrée `Filename` et que `DisplayName` contient quelque chose comme `device:dmo`, alors c'est un codec DMO.

Ancienne Méthode: Respirez à fond et fouillez dans la base de registre...

1. Exécutez `regedit`.
2. Pressez `Ctrl-f`, décochez les deux premières cases, et cochez la troisième. Entrez le fourcc du codec. (par ex.: TM20)
3. vous devriez trouver un champ contenant le chemin et le nom du fichier utilisé (par ex. `C:\WINDOWS\SYSTEM\TM20DEC.AX`).
4. Maintenant que nous avons le fichier, nous devons trouver son GUID. Cherchez désormais le nom du codec, pas son fourcc. Son nom peut être trouvé quand Media Player lit le fichier, en regardant dans Fichier -> Propriétés -> Avancées. Si rien n'apparaît, pas de chance. Essayez de le deviner. (par ex. cherchez : TrueMotion)
5. S'il apparaît dans la base de registre, il devrait apparaître un champ NomDuFichier, et un champ CLSID. Copiez les 16 bits du CLSID, c'est le GUID dont nous avons besoin.

Note: si la recherche échoue, cochez toutes les options de la fenêtre de recherche.. vous aurez des mauvaises occurrences, mais finirez par obtenir la bonne...

Nous avons désormais toutes les informations nécessaires (fourcc, GUID, fichier codec, fichier AVI). Demandez le support de votre codec par mail, et envoyez ces fichiers sur le FTP :

`ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nomcodec]/`