2.3.1 Sorties vidéo

2.3.1.1 Réglage MTRR

Il est FORTEMENT recommandé de bien ajuster ses registres MTRR, qui apportent un gain important de performances.

Faites un 'cat /proc/mtrr':

--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

C'est bon, il montre ma Matrox G400 avec 16Mo de mémoire. J'ai fais cela avec XFree 4.x.x , qui ajuste les registres MTRR automatiquement.

Si rien n'a fonctionné, vous devrez procéder manuellement. D'abord, vous devez trouver l'adresse de base. Vous pouvez la trouver de trois façons :

Trouvons maintenant la taille mémoire. Simplement, convertissez la taille de la mémoire vidéo en hexadécimal, ou utilisez cette table :

  1 Mo0x100000
2 Mo0x200000
4 Mo0x400000
8 Mo0x800000
16 Mo0x1000000
32 Mo0x2000000

Vous connaissez l'adresse de base ainsi que la taille, ajustons vos registres MTRR ! Par exemple, pour la carte Matrox utilisée ci-dessus (base=0xd8000000) avec 32MB ram (size=0x2000000) faites simplement :

  echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr

Tous les processeurs ne supportent pas les MTRR. Les anciens K6-2 par exemple [vers 266Mhz, stepping 0] ne sont pas compatibles avec les MTRR, mais les stepping 12 le sont ('cat /proc/cpuinfo' pour le vérifier').

2.3.1.2 Sortie vidéo pour cartes graphiques traditionnelles

2.3.1.2.1 Xv

Sous XFree86 4.0.2 ou plus récent, vous pouvez utiliser les routines YUV matérielles de votre carte en utilisant l'extension XVideo. Ceci peut être fait avec l'option option '-vo xv'. De plus, il supporte le réglage de luminosité/contraste/saturation/etc (à moins que vous n'utilisiez le vieux, lent codec Divx DirectShow, qui le supporte partout), voir la page de man.

Pour que cela fonctionne, vérifiez ceci :

2.3.1.2.1.1 Cartes 3dfx

Les anciens drivers 3dfx avaient des problèmes avec l'accélération XVideo, et ne supportaient ni YUY2 ni YV12. Vérifiez que vous avez bien XFree86 version 4.2.0 ou plus, qui doit fonctionner correctement. Les versions précédentes, incluant 4.1.0, se plantent avec YV12. Si des problèmes apparaissent en utilisant -vo xv,essayez SDL (qui utilise également XVideo) et voyez si cela passe mieux. Lisez la section SDL pour plus de détails.

OU, essayez le NOUVEAU pilote -vo tdfxfb! Voir la section tdfxfb.

2.3.1.2.1.2 Cartes S3

Les cartes S3 Savage3D doivent fonctionner correctement, mais pour les Savage4, utilisez XFree86 version 4.0.3 ou plus (en cas de problèmes d'image, essayez 16bpp). Comme pour les S3 Virge.. il y a un support xv, mais la carte elle-même est très lente, donc vous fairiez mieux de la vendre.

NOTE: il n'est actuellement pas facile de savoir quels modèles de Savage manquent de support YV12, et de le convertir par un pilote (lent). Si vous suspectez votre carte, prenez un driver plus récent, ou demandez poliement un pilote qui gère MMX/3DNow sur la liste de diffusion mplayer-users.

2.3.1.2.1.3 Cartes nVidia

nVidia n'est pas un très bon chois sous Linux (d'après nVidia, ce n'est pas vrai).. Vous devrez utiliser le pilote binaire de nVidia, disponible sur leur site. Le pilote standard de X ne supporte pas XVideo pour ces cartes, par la faute des sources/spécifications fermées de nVidia.

D'après ce que je sais les derniers pilotes XFree86 contiennent le support XVideo pour les GeForce 2 et 3.

Les cartes Riva128 n'ont pas de support XVideo même avec le driver nvidia :( Plaignez vous-en à NVidia.

2.3.1.2.1.4 Cartes ATI

2.3.1.2.1.5 Cartes NeoMagic

Ces cartes sont utilisées sur de nombreux portables. Malheureusement, X 4.2.0 ne gère pas Xv, mais nous avons un pilote modifié et compatible Xv pour vous. Téléchargez-le ici. Pilote fournis par Stefan Seyfried.

Pour permettre la lecture de contenu de taille DVD changez votre XF86Config comme ceci:

Section "Device"
    [...]
    Driver "neomagic"
    Option "OverlayMem" "829440"
    [...]
EndSection

2.3.1.2.1.6 Cartes Trident

Si vous voulez utiliser xv avec une carte trident, puisque son support ne fonctionne pas avec 4.1.0, installez XFree 4.2.0. 4.2.0 ajoute le support xv plein-écran avec la carte Cyberblade XP.

2.3.1.2.2 DGA

2.3.1.2.2.1 Sommaire

Ce document tente d'expliquer en quelques mots ce qu'est le DGA en général et ce que peut faire le driver de sortie DGA pour MPlayer (et ce qu'il ne peut pas faire).

2.3.1.2.2.2 Qu'est ce que le DGA

DGA signifie Direct Graphics Access et permet aux programmes de passer outre le serveur X et de modifier directement la mémoire dans le framebuffer. Techniquement parlant, cela fonctionne en mappant la mémoire du framebuffer dans les adresse mémoire de votre process. Cela est autorisé par le noyau uniquement si vous avez les privilèges super-user. Vous pouvez les obtenir soit en vous loggant en root ou en plaçant le bit suid sur l'exécutable mplayer (non recommandé).

Il existe deux versions de DGA: DGA1 est utilisé par XFree 3.x.x et DGA2 a été introduit par XFree 4.0.1.

DGA1 propose uniquement un accès direct au framebuffer comme décrit ci-dessus. Pour changer la résolution de votre signal vidéo vous devez utiliser les extensions XVidMode.

DGA2 incorpore les fonctions de XVidMode et permet également de changer le nombre de couleurs de l'affichage. Donc vous pouvez, en exécutant depuis un serveur X 32 bits, passer en 15 bits et vice-versa.

Cependant DGA a quelques défauts. Il semble qu'il reste dépendant de la carte graphique utilisée et de la mise en place du driver de votre serveur X contrôlant cette carte. Cela peut donc ne pas fonctionner sur tout les systèmes ...

2.3.1.2.2.3 Installer le support DGA pour MPlayer

Assurez vous d'abord que X charge l'extension DGA, regardez dans /var/log/XFree86.0.log:

    (II) Loading extension XFree86-DGA

XFree86 4.0.x ou plus est TRÈS RECOMMANDÉ ! Le pilote DGA de MPlayer est automatiquement détecté lors de ./configure, ou bien vous pouvez le forcer avec l'option --enable-dga.

Si le driver ne peut pas passer en résolution inférieure, essayez les options -vm (uniquement avec X 3.3.x), -fs, -bpp, -zoom pour trouver un mode vidéo qui convienne à la vidéo. Il n'existe pas de convertisseur actuellement.. :(

Passez en ROOT. DGA nécessite un accès root pour écrire directement dans la mémoire vidéo. Si vous voulez rester en utilisateur, installez MPlayer SUID root:

    chown root /usr/local/bin/mplayer
    chmod 750 /usr/local/bin/mplayer
    chmod +s /usr/local/bin/mplayer

Maintenant cela fonctionne avec les droits d'un simple utilisateur.

Attention: faille de sécurité
Cela présente une grosse faille de sécurité ! Ne faites jamais ceci sur un serveur ou un ordinateur accessible par d'autres personnes que vous, ils pourraient obtenir les privilèges root par l'exécutable mplayer.

Utilisez maintenant l'option -vo dga et c'est parti ! (enfin on peut l'espérer:) Vous pouvez alors essayer l'option -vo sdl:dga. C'est beaucoup plus rapide.

2.3.1.2.2.4 Changement de résolution

Le driver DGA vous permet de changer la résolution du signal de sortie. Cela permet d'éviter un redimensionnement logiciel, beaucoup plus lent, et offre une image plein écran. Idéalement il doit passer à la résolution exacte de la vidéo (excepté pour respecter le rapport hauteur/largeur), mais le serveur X permet uniquement le passage à des résolutions définies dans /etc/X11/XF86Config (/etc/X11/XF86Config-4 pour XFree 4.0.X respectivement). Ceux-ci sont définis par des modelines dépendantes des capacités de votre matériel. Le serveur X scanne ce fichier de configuration au démarrage et élimine les modelines ne correspondant pas au matériel. Vous pouvez retrouver dans les logs de X quelles modelines sont acceptables. Elles peuvent être trouvées dans :/var/log/XFree86.0.log.

C.f. appendice A pour quelques exemples de modelines.

2.3.1.2.2.5 DGA & MPlayer

DGA est utilisé en deux endroits par MPlayer: le pilote SDL peut se compiler pour en faire usage (-vo sdl:dga) et dans le pilote DGA (-vo dga). Dans les sections suivantes je vous expliquerai comment fonctionne le driver DGA pour MPlayer.

2.3.1.2.2.6 Fonctionnalités du driver DGA

Le pilote DGA s'invoque en spécifiant -vo dga en ligne de commande. L'action par défaut consiste à passer dans une résolution s'approchant au mieux de la résolution de la vidéo. Il ignore volontairement les options -vm et -fs (autorisant le changement de résolution et le plein écran) - il essaie toujours de couvrir le plus large espace possible de votre écran en changeant les modes vidéo, tout en utilisant un seul cycle CPU additionnel pour agrandir l'image. Si vous voulez utiliser un autre mode que celui qu'il a choisi, vous pouvez le forcer par les options -x et -y. Avec l'option -v, le pilote DGA affichera, entre autres choses, une liste de toutes les résolutions supportées par votre fichier XF86Config. Avec DGA2 vous pouvez également le forcer a utiliser un certain nombre de couleurs en utilisant l'option -bpp. Les nombres de couleurs autorisées sont 15, 16, 24 et 32. Cela dépend de votre matériel, soit ces modes sont nativement supportés, soit il pratique une conversion logicielle (qui peut ralentir la lecture).

Si par chance vous avez assez de mémoire vidéo libre pour y placer une image entière, le driver DGA utilisera le doublebuffering, qui améliore considérablement la qualité de lecture. Il doit vous afficher si le doublebuffering est utilisé ou non.

Doublebuffering signifie que la prochaine frame de votre vidéo est dessinée dans une partie non affichée de la mémoire graphique tandis que s'affiche la frame en cours. Quand la frame suivant est prête, la puce graphique reçoit simplement l'adresse de celle ci et récupère les donnée a afficher depuis cette partie de la mémoire. Pendant ce temps l'autre buffer se remplit de l'image suivante, etc...

Le doublebuffering peut s'activer dans MPlayer avec l'option -double et se désactiver avec -nodouble. Actuellement l'option par défaut est de désactiver le doublebuffering. En utilisant le driver DGA, l'onscreen display (OSD) fonctionne uniquement avec le doublebuffering activé. Cependant, activer le doublebuffering peut demander des calculs supplémentaires au processeur (sur mon K6-II+ 525 il utilisait 20% de temps CPU en plus !), ceci dépendant de l'implémentation du DGA pour votre matériel.

2.3.1.2.2.7 Problèmes de vitesse

Généralement, l'accès au framebuffer DGA peut s'avérer aussi rapide que le driver X11, apportant en plus l'avantage de bénéficier d'une image plein écran. Les pourcentages affichées par MPlayer doivent être interprétées avec précaution, comme par exemple avec le pilote X11 où ils n'incluent pas le temps utilisé par le serveur X pour l'affichage. Pour des résultats exacts, branchez un terminal sur le port série de votre machine et lancez un 'top' pour savoir ce qui se passe réellement lors de la lecture...

D'une manière générale, l'accélération acquise en utilisant le DGA au lieu de l'affichage X11 classique dépend fortement de votre carte graphique et des optimisations effectuées sur le module DGA du serveur X.

Si votre système s'avère trop lent, utilisez plutôt une profondeur de couleurs de 15 or 16bits, qui ne demandent que la moitié de la bande passante d'un affichage 32 bits.

Utiliser une profondeur de 24 bits peut s'avérer une bonne solution si votre carte ne supporte nativement que le 32 bits, le transfert se réduisant de 25% par rapport à un mode 32/32.

J'ai vu certains fichiers avi passer sur des Pentium MMX 266. Les processeurs AMD K6-2 s'avèrent utilisables à partir de 400 MHZ et supérieur.

2.3.1.2.2.8 Bogues connus

A vrai dire, selon certains développeurs de XFree, DGA est une usine à gaz. Ils recommandent d'éviter son utilisation. Son implémentation n'est pas parfaite avec chaque chipset pour XFree.

2.3.1.2.2.9 Travaux prévus

2.3.1.2.2.A Quelques modelines

  Section "Modes"
    Identifier    "Modes[0]"
    Modeline	"800x600"  40     800 840 968 1056  600 601 605 628
    Modeline	"712x600"  35.0   712 740 850 900   400 410 412 425
    Modeline	"640x480"  25.175 640 664 760 800   480 491 493 525
    Modeline 	"400x300"  20     400 416 480 528   300 301 303 314 Doublescan
    Modeline	"352x288"  25.10  352 368 416 432   288 296 290 310
    Modeline	"352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
    Modeline	"320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
  EndSection

Ces entrées fonctionnent bien sur mon chip Riva128, en utilisant module pilote nv.o du serveur X.

2.3.1.2.2.B Rapports de bogues

Si vous constatez des problèmes avec l'utilisation du driver DGA envoyez-moi un rapport de bogue à l'adresse ci-dessous. Lancez mplayer avec l'option -v et joignez toutes les lignes commençant par vo_dga à votre mail :

Merci d'inclure également la version de X11 utilisée, la carte graphique et votre type de processeur. Le module du driver X11 (défini dans XF86-Config) peut également m'aider. Merci !

Acki (acki@acki-netz.de, www.acki-netz.de)

2.3.1.2.3 SDL

SDL (Simple Directmedia Layer) est fondamentalement une interface vidéo/audio unifiée. Les programmes qui l'utilisent connaissent uniquement SDL, et pas quels pilotes vidéo ou audio SDL utilise lui-même. Par exemple, un portage de Doom qui utilise SDL peut tourner avec svgalib, aalib, X, fbdev et autres, vous devez seulement spécifier (par exemple) le pilote vidéo à utiliser avec la variable d'environnement SDL_VIDEODRIVER. Enfin, en théorie.

Avec MPlayer, nous avons utilisé le redimensionnement logiciel de ses pilotes X11 pour les cartes qui ne supportent pas XVideo, jusqu'a ce que nous fassions notre propre dimmensionneur logiciel(plus rapide, plus agréable). Nous avons également utilisé sa sortie aalib, mais maintenant nous avons la notre qui est plus confortable. Son support DGA était meilleurs que le notre, jusqu'à récemment. Prenez-le maintenant? :)

Cela aide également avec certains pilotes/cartes bogués si la vidéo est saccadé (pas de problème de lenteur du système), ou si l'audio est retardé.

La sortie vidéo de SDL supporte l'affichage des sous-titres sous le film, dans les (si présentes) bandes noires.

Il existe plusieurs options en ligne de commande pour SDL :

-vo sdl:name
spécifie le driver vidéo sdl a utiliser (i.e.. aalib, dga, x11)
-ao sdl:name
spécifie le driver audio sdl a utiliser (i.e. dsp, esd, arts)
-noxv
désactive l'accélération Xvideo matérielle
-forcexv
tente de forcer l'accélération Xvideo

Touches SDL :

Fpasse du mode plein écran au mode fenêtré
Cpasse par tous les modes plein écran valides
W/Smappings pour les touches * et / (contrôle du mixer)

Bogues connus :

2.3.1.2.4 SVGAlib

Installation

Vous devrez installer svgalib et ses paquetages de développement afin que MPlayer construise son driver SVGAlib driver (autodetecté, mais peut être forcé), et n'oubliez pas d'éditer /etc/vga/libvga.config pour l'ajuster à votre carte et votre moniteur.

Notes

Assurez-vous de ne pas utiliser l'option -fs, car elle active l'utilisation du redimmensionneur logiciel, et c'est lent. Si vous en avez réellement besoin, utilisez l'option -sws 4 qui donnera une qualité mauvaise, mais qui est un peu plus rapide.

Support EGA (4bpp)

SVGAlib incorpore EGAlib, et MPlayer a la possibilité d'afficher n'importe quel film en 16 couleurs, donc utilisable avec les configurations suivantes:

La valeur des bpp (bits par pixel) doit être fixé à 4 manuellement:
  -bpp 4
Le film doit probablement être redimensionné pour tenir dans le mode EGA:
  -vop scale=640:350 or
  -vop scale=320:200
Pour cela nous avons besoin de la routine de redimmensionement rapide mais de mauvaise qualité:
  -sws 4
Peut être que la correction d'aspect automatique doit être coupée:
  -noaspect

NOTE: d'après mon expérience, la meilleur qualité d'image sur les écrans EGA peut être obtenue en diminuant légèrement la luminosité: -vop eq=-20:0. J'ai également besoin de diminuer la fréquence d'échantionnage sur ma machine, car le son est endommagé en 44kHz: -srate 22050.

Vous pouvez activer l'OSD et les sous-titres uniquement avec le filtre expand, voir la page de man pour les paramètres exacts.

2.3.1.2.5 Sortie framebuffer (FBdev)

La compilation de le sortie FBdev est autodétectée durant ./configure . Lisez la documentation sur le framebuffer dans le sources du noyau (Documentation/fb/*) pour avoir plus d'infos.

Si votre carte ne supporte pas le standard VBE 2.0 (anciennes cartes ISA/PCI, comme les S3 Trio64), et uniquement VBE 1.2 (ou plus ancien ?) : Dans ce cas, VESAfb reste disponible, mais vous devrez charger SciTech Display Doctor (également nommé UniVBE) avant de booter Linux. Utilisez une disquette de boot DOS ou similaire. Et n'oubliez pas d'enregistrer votre copie d'UniVBE ;))

La sortie FBdev accepte certains paramètres additionnels :

-fb
spécifie le device framebuffer a utiliser (/dev/fb0)
-fbmode
mode a utiliser (relatif au fichier /etc/fb.modes)
-fbmodeconfig
fichier de configuration des modes (/etc/fb.modes par défaut)
-monitor_hfreq
-monitor_vfreq
-monitor_dotclock
valeurs importantes, voir example.conf

Si vous voulez employer un mode spécifique, utilisez l'option

    mplayer -vm -fbmode (NomDuMode) nomfichier

NOTE: Le changement de mode vidéo avec FBdev _ne fonctionne pas_ avec le framebuffer VESA, et ne nous le demandez pas, il ne s'agit pas d'une limitation de MPlayer.

2.3.1.2.6 Framebuffer Matrox (mga_vid)

Cette section concerne le support BES (Back-End Scaler) sur cartes Matrox G200/G400/G450, le driver noyau de mga_vid. Il est activement développé par moi (A'rpi), et supporte le VSYNC matériel avec triple buffering. Cela fonctionne aussi bien en console framebuffer que sous X.

Attention: sur les systèmes non-Linux, utilisez VIDIX pour mga_vid!

Installation:

  1. Pour l'utiliser, vous devez au préalable compiler mga_vid.o:

    cd drivers
    make

  2. Puis créez le périphérique /dev/mga_vid:

    mknod /dev/mga_vid c 178 0

    et chargez le driver avec

    insmod mga_vid.o

  3. Vous pouvez vérifier si la détection de la taille mémoire est correcte en utilisant la commande dmesg. Si elle s'avère incorrecte, utilisez l'option mga_ram_size (rmmod mga_vid d'abord), en spécifiant la mémoire de la carte en Mo:

    insmod mga_vid.o mga_ram_size=16

  4. Pour le charger/décharger automatiquement, insérez cette ligne a la fin du fichier /etc/modules.conf:

    alias char-major-178 mga_vid

    Puis copiez le module mga_vid.o à une place appropriée dans /lib/modules/<version noyau>/quelquepart.

    Puis exécutez

    depmod -a

  5. Vous devez maintenant (re)compiler MPlayer, configure détectera /dev/mga_vid et construira le driver 'mga'. Pour l'utiliser dans MPlayer, lancez-le avec l'option -vo mga si vous êtes en console matroxfb, ou -vo xmga sous XFree86 3.x.x ou 4.x.x.

Le pilote mga_vid coopère avec Xv.

Le fichier périphérique /dev/mga_vid peut être lu (par exemple par cat /dev/mga_vid) pour avoir des infos, et écrit pour changer la luminosité: echo "brightness=120" > /dev/mga_vid

2.3.1.2.7 support YUV 3dfx (tdfxfb)

Ce pilote utilise le pilote framebuffer tdfx du noyau pour lire des films avec accélération YUV. Vous aurez besoin d'un noyau avec support tdfxfb, et de recompiler avec ./configure --enable-tdfxfb

2.3.1.2.8 Sortie OpenGL

MPlayer supporte l'affichage de films en utilisant OpenGL, mais si votre plateforme/pilote supporte xv comme ça devrait être le cas sur un PC avec Linux, utilisez xv à la place, les performances d'OpenGL sont bien pires. Si vous avez une implémentation X11 sans support xv, OpenGL est alors une alternative viable.

Malheureusement tous les pilotes ne supportent pas cette fonction. Le pilote Utah-GLX (pour XFree86 3.3.6) le supporte pour toutes les cartes. Voir http://utah-glx.sourceforge.net pour plus de détails sur son installation.

XFree86(DRI) 4.0.3 et supérieur supporte OpenGL avec les cartes Matrox et Radeon, 4.2.0 ou supérieur supporte la Rage128. Voir http://dri.sourceforge.net pour son téléchargement et les infos d'installation.

2.3.1.2.9 AAlib - affichage en mode texte

AAlib est une librairie affichant des graphismes en mode texte, en utilisant un puissant moteur de rendu ASCII. De nombreux programmes le supporte déjà, comme Doom, Quake, etc. MPlayer possède pour cela un driver parfaitement utilisable. Si ./configure détecte une installation de aalib, le driver aalib libvo sera compilé.

Vous pouvez utiliser certains raccourcis clavier dans le fenêtre AA pour changer les options de rendu:

  1  diminue le contraste
2augmente le contraste
3diminue la luminosité
4augmente la luminosité
5active/désactive le rendu rapide
6active le mode de dithering (none, error distribution, Floyd Steinberg)
7inverse l'image
apasse des contôles de aa vers ceux de mplayer et vice-versa

Vous pouvez utiliser les lignes de commande suivantes :

-aaosdcolor=V
change la couleur de l'OSD
-aasubcolor=V
change la couleur des sous-titres

ou V peut être: (0/normal, 1/noir, 2/bold, 3/bold font, 4/reverse, 5/special)

AAlib lui même propose de nombreuses options. En voici les principales :

-aadriver
choisit le pilote aa (X11, curses, Linux)
-aaextended
utilise les 256 caractères
-aaeight
utilise l'ascii 8 bits
-aahelp
affiche toutes les options de aalib

NOTE: Le rendu prend beaucoup de temps CPU, spécialement en utilisant aalib sur X, et prend moins de CPU sur une console standard, sans framebuffer. Utilisez SVGATextMode pour passer en mode texte large, et appréciez ! (une carte hercules en second écran, c'est génial :)) (Quelqu'un peut-il améliorer bdev pour faire la conversion/dithering vers hgafb ? Ça serait parfait :)

Utilisez l'option -framedrop si votre machine n'est pas suffisamment rapide pour afficher toutes les trames !

Sur un terminal vous obtiendrez de meilleures performances en utilisant le driver linux, pas curses (-aadriver linux). Cependant vous devez avoir un accès en écriture sur /dev/vcsa<terminal>. Ce n'est pas autodétecté par aalib, mais vo_aa essaie de déterminer le meilleur mode. Voir http://aa-project.sourceforge.net/tune/ pour une meilleure optimisation.

2.3.1.2.10 VESA - sortie sur BIOS VESA

Ce pilote à été conçu et présenter comme un pilote générique pour n'importe quelle carte ayant un BIOS compatible VESA VBE 2.0+. Un autre avantage de ce pilote est qu'il force l'ouverture de la sortie TV.
VESA BIOS EXTENSION (VBE) Version 3.0 Date: 16 Septembre 1998 (Page 70) dit:

Conceptions des contrôleurs doubles
VBE 3.0 supporte la conception de contrôleur double en assumant que comme les deux contrôleurs sont typiquement fournis par le même OEM, sous le contrôle d'un seul BIOS ROM sur la même carte graphique, il est possible de cacher le fait que deux contrôleurs sont présent dans l'application. Cela à la limitation d'interdire l'utilisation simultanée de chacun des contrôleurs, met permet aux applications avant VBE 3.0 de fonctionner normalement. La fonction VBE 00h (Return Controller Information) retourne l'information combinée des deux contrôleurs, incluant la liste combinée des modes disponibles. Quand une application sélectionne un mode, le contrôleur approprié est activé. Chacune des fonctions VBE restantes s'appliquent ensuite sur le contrôleur actif.

Donc vous avez des chances de faire fonctionner la sortie TV avec ce pilote.
(Je suppose que la sortie TV est souvent une tête indépendante ou au moins une sortie indépendante.)

Avantages:

Désavantages:

N'utilisez pas ce pilote avec GCC 2.96! Cela ne fonctionnera pas!

Options en ligne de commande disponibles pour VESA:

-vo vesa:opts
actuellement reconnu: dga pour forcer le mode dga et nodga pour le désactiver. En mode dga vous pouvez activer le double buffering via l'option -double. Note: vous pouvez omettre ces paramètres pour activer l'autodétection du mode dga.

Problèmes connus et contournements:

2.3.1.2.11 X11

A éviter si possible. Sort sur X11 (utilise l'extension de mémoire partagée), sans aucune accélération matérielle du tout. Supporte le redimensionnement logiciel (accéléré par MMX/3DNow/SSE, mais toujours lent), utilisez les options -fs -zoom La plupart des cartes possèdent un redimensionnement matériel, pour elles utilisez la sortie -vo xv, ou -vo xmga pour les Matrox.

Le problème est que la plupart des pilotes de carte ne supportent pas l'accélération sur la seconde tête/TV. Dans ce cas, vous voyez une fenêtre verte/bleue à la place du film. C'est ici que ce pilote entre en jeu, mais vous aurez besoin d'un CPU puissant pour utiliser le redimensionnement logiciel. N'utilisez pas le pilote SDL de sortie+dimmensionnement logiciel, la qualité d'image est pire!

Le redimensionnement logiciel est très lent, vous devriez essayer de changer de mode vidéo à la place. C'est très simple. Voyez la section DGA modelines, et insérez-les dans votre XF86Config.

Si vous n'arrivez pas à trouver les mode que vous avez inséré, regardez dans la sortie de XFree86. Certains pilotes ne peuvent utiliser les pixelclocks bas qui sont requis pour les basses résolutions.

2.3.1.2.12 VIDIX

VIDIX est l'abréviation de VIDeo Interface for *niX.
VIDIX à été conçu et présenté comme une interface pour les pilotes espace-utilisateur rapides fournissant des performances égales à celles de mga_vid pour les cartes Matrox. Il est aussi très portable.

Cette interface à été conçue comme une tentative de regrouper les interfaces d'accélération existantes (connues sous les noms mga_vid, rage128_vid, radeon_vid, pm3_vid) dans un schéma uniforme. Il fournit une interface de haut niveau aux chipsets connus sous les noms de BES (BackEnd scalers) ou OV (Video Overlays). Il ne fournit pas une interface de bas niveau pour les choses connues sous le nom de serveurs graphiques. (Je ne veux pas concourir avec l'équipe X11 en changement de mode graphique). C'est à dire que le but principal de cette interface est de maximiser la vitesse de la lecture vidéo.

UTILISATION

De plus le pilote de sortie vidéo utilisé avec VIDIX n'a pas d'importance.

BESOINS

MÉTHODES D'UTILISATION

Quand VIDIX est utilisé en temps que sous-périphérique (-vo vesa:vidix), alors la configuration du mode vidéo est faite par le périphérique de sortie vidéo (vo_server en bref). Par conséquent vous pouvez passer en ligne de commande les mêmes touches que pour vo_server. De plus il comprends l'option -double comme un paramètre global. (Je recommande l'utilisation de cette option au moins pour les cartes ATI).
Comme pour -vo xvidix: actuellement il reconnaît les options suivantes: -fs -zoom -x -y -double.

Vous pouvez aussi spécifier le pilote VIDIX directement en troisième sous-argument en ligne de commande:

  mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi
ou
  mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi

Mais c'est dangereux, et vous ne devriez pas faire ça. Dans ce cas le pilote indiqué sera forcé et le résultat sera imprévisible (cela peut geler votre ordinateur). Vous ne devriez le faire UNIQUEMENT si vous êtes absolument sûr que cela va fonctionner, et MPlayer ne le fait pas automatiquement. Dites-le au développeurs SVP. La bonne façon est d'utiliser VIDIX sans arguments pour activer l'autodétection du pilote.

VIDIX est une toute nouvelle technologie et il est fortement possible que sur votre système (OS=abc CPU=xyz) elle ne fonctionne pas. Dans ce cas votre seule solution est de le porter (principalement libdha). Mais il y a de bon espoir qu'il fonctionne sur ces systèmes où X11 fonctionne.

Attention: faille de sécurité
Malheureusement vous devez avoir les privilèges du root pour utiliser VIDIX à cause de l'accès direct au matériel. Au moins le bit SUID de l'exécutable MPlayer doit être fixé.

2.3.1.2.13 DirectFB

"DirectFB est une librairie graphique conçue pour les systèmes embarqués. Il offre des performances d'accélération matérielle maximum pour un minimum d'utilisation des ressources et de charge." - citation de http://www.directfb.org.

J'exclurai les fonctionnalités de DirectFB dans cette section.

Bien que Mplayer ne soit pas supporté en tant que "fournisseur vidéo" dans DirectFB, ce pilote de sortie activera la lecture vidéo au travers de DirectFB. Il sera - bien sûr - accéléré, sur ma Matrox G400 la vitesse de DirectFB était la même que celle de XVideo.

Essayez toujours d'utiliser la dernière version de DirectFB. Vous pouvez utiliser les options DirectFB en ligne de commande, en utilisant l'option -dfbopts. La sélection de couche peut être faite par la méthode sous-périphérique, par ex.: -vo directfb:2 (couche -1 par défaut: autodétection)

2.3.1.2.14 DirectFB/Matrox (dfbmga)

Veuillez lire la section DirectFB principale pour les avoir les informations générales.

Ce pilote de sortie vidéo activera CRTC2 (sur la seconde tête) sur la carte Matrox G400, affichant la vidéo indépendamment de la première tête.

Les instructions pour le faire fonctionner peuvent être trouvées dans la section tech ou directement sur la page web de Ville Syrjala.

Note: nous n'avons pas pu le faire fonctionner, mais d'autres ont pu. De toutes façons, le portage du code CRTC2 dans mga_vid est sous-jacent.

2.3.1.3 Décodeurs MPEG

2.3.1.3.1 DVB

MPlayer supporte les cartes équipées du chipset DVB Siemens des vendeurs tels que Siemens, Technotrend, Galaxis ou Hauppauge. Les derniers pilotes DVB sont disponibles sur le site Linux TV. Si vous voulez faire du transcodage logiciel vous aurez besoin d'un CPU d'au moins 1Ghz.

Configure devrait détecter votre carte DVB. Si ce n'est pas le cas, forcez la détection avec

  ./configure --enable-dvb

Si vous avez des entêtes ost dans un chemin non-standard, corrigez ce chemin avec

  ./configure --with-extraincdir=<répertoire source DVB>/ost/include

Ensuite compilez et installez comme d'habitude.

UTILISATION

Le décodage matériel (lecture de fichiers MPEG1/2 standards) peut être fait avec cette commande:

  mplayer -ao mpegpes -vo mpegpes fichier.mpg|vob

Le décodage logiciel ou le transcodage de différents formats en MPEG1 peut être obtenu en utilisant une commande comme celle-ci:

  mplayer -ao mpegpes -vo mpegpes -vop lavc votrefichier.ext
  mplayer -ao mpegpes -vo mpegpes -vop fame,expand votrefichier.ext

Notez que les cartes DVB ne supportent que les tailles 288 par 576 pour le PAL ou 240 par 480 pour le NTSC. Vous devez redimmensionner vers d'autres tailles en ajoutant scale=width:height avec la largeur et la hauteur que vous voulez à l'option -vop. Les cartes DVB acceptent des largeurs variées, comme 720, 704, 640, 512, 480, 352 etc et font un redimensionnement matériel dans le sens horizontal, vous n'avez donc pas besoin de redimmensionner horizontalement dans la plupart des cas. Pour un Divx en 512x384 (aspect 4:3) essayez:

  mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576

Si vous avez un film plein-écran et que vous ne voulez pas l'afficher à sa taille complète, vous pouvez utiliser le plugin expand=w:h pour ajouter des bandes noires. Pour voir un Divx en 640x384, essayez:

  mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 fichier.avi

Si votre CPU est trop lent pour un DivX en taille complète 720x576, essayez de diminuer la taille:

  mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 fichier.avi

Si la vitesse ne s'améliore pas, essayez également la diminution verticale:

  mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 fichier.avi

Pour l'OSD et les sous-titres utilisez la fonction expand du plugin OSD. Donc, au lieu de expand=w:h ou expand=w:h:x:y, utilisez expand=w:h:x:y:1 (le 5ème paramètre :1 à la fin activera le rendu OSD). Vous pouvez aussi vouloir monter un peu l'image pour obtenir plus de surface noire pour les sous-titres. Vous pouvez aussi monter les sous-titres , si ils sont en dehors de l'écran, utilisez l'option -subpos <0-100> pour l'ajuster (-subpos 80 est un bon choix).

Pour pouvoir lire des films non-25fps sur une TV PAL ou avec un CPU lent, ajoutez l'option -framedrop.

Pour garder les dimensions des fichiers DivX et obtenir les paramètres de zoom optimaux (zoom matériel horizontal et zoom logiciel vertical en gardant l'aspect original), utilisez le nouveau plugin dvbscale:w/P>

pour une TV 3:4:  -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale
pour une TV 16:9: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024

FUTUR

Si vous avez des questions ou voulez entendre les annonces de fonctionnalités et participer aux discussions sur ce sujet, rejoignez notre liste de diffusion MPlayer-DVB. Rappelez-vous que la langue de la liste est l'Anglais SVP.

Dans le futur vous pouvez vous attendre à pouvoir afficher l'OSD et les sous-titres en utilisant la fonction OSD native des cartes DVB, ainsi qu'a une lecture plus régulière des films non-25fps et le transcodage temps-réel entre MPEG2 et MPEG4 (décompression partielle).

2.3.1.3.2 DXR2

AFAIRE: que quelqu'un remplisse cette section avec des infos SVP.

2.3.1.3.3 DXR3/Hollywood+

MPlayer supporte l'accélération matérielle avec les cartes Creative DXR3 et Sigma Designs Hollywood Plus. Ces cartes ont toutes deux le chip de décodage MPEG em8300 de Sigma Designs.

Tout d'abord vous aurez besoin de pilotes DXR3/H+ correctement installés, version 0.12.0 ou supérieure. Vous pouvez trouver les pilotes et les instructions d'installation sur le site DXR3 & Hollywood Plus for Linux. Configure devrait détecter votre carte automatiquement, la compilation devrait se faire sans problèmes.

Utilisation:

-vo dxr3:prebuf:sync:norm=x:<périph.>
overlay active l'overlay à la place de TVOut. Cela requiert que vous ayez correctement configuré l'overlay. La manière la plus facile de configurer l'overlay est de d'abord lancer autocal. Ensuite lancez MPlayer avec la sortie dxr3 et sans overlay activé, lancez dxr3view. Dans dxr3view vous pouvez régler les paramètres overlay et en voir les effets en temps réel, peut-être cette fonction sera supporté par la GUI de MPlayer dans le futur. Quand l'overlay est correctement configuré, vous n'avez plus besoin d'utiliser dxr3view.
prebuf active le prebuffering. C'est une fonction du chip em8300 qui l'active pour garder plus d'une trame de vidéo à la fois. Cela signifie que quand vous utilisez le prebuffuring MPlayer essaiera de garder le buffer vidéo rempli de données à tout moment. Si vous êtes sur une machine lente MPlayer utilisera près de, voir exactement 100% du CPU. C'est particulièrement courant si vous lisez de purs flux MPEG (comme les DVDs, SVCDs et ainsi de suite) car comme MPlayer n'aura pas besoin de le réencoder en MPEG, il remplira le buffer très rapidement.
Avec le prebuferring la lecture est bien moins sensible aux autres programmes monopolisant le CPU, il ne sautera pas d'images à moins que des programmes monopolisent le CPU pour une longue durée
En l'utilisant sans doublebuffering, l'em8300 est bien plus sensible à la charge CPU, il est donc hautement recommandé d'activer l'option -framedrop pour éviter les éventuelles pertes de synchro.
sync activera le nouveau moteur de synchro. C'est actuellement une fonction expérimentale. Avec la fonction sync activé l'horloge interne de l'em8300 sera contrôlée à tout moment, si elle commence à dévier de l'horloge de MPlayer elle sera réajustée, obligeant l'em8300 à sauter les éventuelles trames en retard.
norm=x fixera la norme TV de la carte DXR3 sans avoir besoin d'utiliser des outils externes comme em8300setup. Les normes valides sont 5 = NTSC, 4 = PAL-60, 3 = PAL. Les normes spéciales sont 2 (ajustement auto utilisant PAL/PAL-60) et 1 (ajustement auto utilisant PAL/NTSC) parce qu'elles décident quelle norme utiliser en regardant le frame rate du film. norm = 0 (par défaut) ne change pas la norme courante.
<périph.> = numéro de périphérique à utiliser si vous avez plus d'une carte em8300.
Chacune de ces options peut être laissé de côté.
:prebuf:sync semble fonctionner à merveille en lisant des DivX. Des gens ont signalé des problèmes en utilisant l'option prebuf pendant la lecture de fichiers MPEG1/2. Vous pourriez vouloir essayer sans aucune option en premier, si vous avez des problèmes de synchro, ou des problèmes de sous-titres avec les DVDs, essayez avec :sync.
-ao oss:/dev/em8300_ma-X
Pour la sortie audio, où X est le numéro de périphérique (0 si une carte).
-aop list=resample:fout=xxxxx
L'em8300 ne peut jouer de taux d'échantillonage inférieur à 44100 Hz. Si le taux d'échantillonage est en dessous de 44100Hz, sélectionnez soit 44100Hz, soit 48000Hz en fonction de ce qui est le plus proche. C-a-d si le film utilise 22050 utilisez 44100Hz car 44100 / 2 = 22050, si c'est 24000Hz utilisez 48000Hhz car 48000 / 2 = 24000 et ainsi de suite. Cela ne fonctionne pas avec la sortie audio numérique (-ac hwac3).
-vop lavc/fame
Pour voir du contenu non-MPEG sur l'em8300 (c-a-d DivX ou RealVideo), vous devrez spécifier un filtre vidéo MPEG1 tel que libavcodec (lavc) ou libfame (fame). Pour le moment lavc est à la fois plus rapide et donne une meilleur qualité, il est recommandé de l'utiliser à moins que vous ayez des problèmes avec. Voir la page de man pour de plus amples infos à propos de -vop lavc/fame.
Utiliser lavc est hautement recommandé. Actuellement il n'est pas possible de régler les fps de l'em8300 ce qui veut dire qu'il est fixé à 29.97fps. A cause de cela il est hautement recommandé d'utiliser -vop lavc=<qualité>:25, surtout si vous utilisez le prebuffering. Alors pourquoi 25 et pas 29.97? Hé bien, le truc est que si vous utilisez 29.97 l'image devient un peu sautante. Nous n'en connaissons pas la raison. Si vous le reglez quelque part entre 25 et 27 l'image devient stable. Pour l'instant tous ce que nous pouvons faire est de l'accepter.
-vop lavc,expand=-1:-1:-1:-1:1
Bien que le pilote DXR3 puisse placer quelques OSD sur de la vidéo MPEG1/2/4, il est de bien plus basse qualité que l'OSD traditionnel de MPlayer, et de plus possède de nombreux problèmes de rafraîchissement. La ligne de commande ci-dessus va d'abord convertir l'entrée vidéo en MPEG4 (c'est obligatoire, désolé), ensuite appliquer un filtre expand qui ne va rien étendre du tout (-1: défaut), laus s'applique sur l'OSD normal dans l'image (c'est ce que fait le "1" à la fin).
-ac hwac3
L'em8300 supporte la lecture audio AC3 (son surround) au travers de la sortie audio numérique de la carte. Voir l'option -ao oss plus haut, elle doit être utilisé pour spécifier la sortie DXR3 au lieu d'une carte son.

2.3.1.4 Autres matériels de visualisation

2.3.1.4.1 Zr

c'est un pilote d'affichage (-vo zr) pour certaines cartes de capture/lecture (testé pour DC10+ et Buz, et cela devrait fonctionner pour la LML33 et la DC10 originale). Ce pilote fonctionne en encodant la trame en jpeg et en l'envoyant à la carte. Pour l'encodage jpeg libavcodec est utilisé, et requis. Avec le mode spécial cinerama, vous pouvez voir les films en vrai écran large si vous avez deux moniteurs et deux cartes MJPEG. Selon la résolution et les réglages, ce pilote requiert beaucoup de puissance CPU, rappelez-vous de spécifier -framedrop si votre machine est trop lente. Note: Mon AMD K6-2 350Mhz est (avec -framedrop) très adapté pour voir du materiel de taille VCD et les films dont la taille est réduite.

Ce pilote parle au module noyau disponible sur http://mjpeg.sourceforge.net, donc vous devez d'abord faire fonctionner ce dernier. la présence d'une carte MJPEG est autodétectée par le script configure, si l'autodétection échoue, forcez la détection avec

  ./configure --enable-zr

La sortie peut être contrôlé par de nombreuses options, une longue description des options peut être trouvée sur la page de man, une courte liste des options peut être obtenue en exécutant

  mplayer -zrhelp

Les choses comme le zoom ou l'OSD (on screen display) ne sont pas gérés par ce pilote mais peuvent être obtenus en utilisant les filtres vidéo. Par exemple, supposons que vos avez un film d'une résolution de 512x272 et que vous voulez le voir en plein-écran sur votre DC10+. Il y a trois possibilités principales, vous pouvez redimmensionner le film à une largeur de 768, 384 ou 192. Pour des raisons de performances et de qualité, Je choisirait de redimmensionner le film en 384x204 en utilisant le zoom logiciel bilinéaire rapide. La ligne de commande est

  mplayer -vo zr -sws 0 -vop scale=384:204 film.avi

Le découpage peut être fait avec le filtre crop et par ce pilote lui-même. Supposons qu'un film est trop large pour s'afficher sur votre Buz et que vous vouliez utiliser -zrcrop pour rendre le film moins large, alors vous taperez la commande suivante

  mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi

si vous voulez utiliser le filtre crop, vous feriez

  mplayer -vo zr -vop crop=720:320:80:0 benhur.avi

Des occurrences supplémentaires de -zrcrop invoquent le mode cinerama, c-a-d que vous pouvez distribuer l'affichage sur plusieurs TV ou moniteurs pour créer un écran plus large. Supposons que vous avez deux moniteurs. Celui de gauche est connecté à votre Buz sur /dev/video1 et celui de droite est connecté à votre DC10+ sur /dev/video0. Le film a une résolution de 704x288. Supposons maintenant que vous voulez le moniteur de droite en noir et blanc et que le moniteur de gauche ait des trames jpeg de qualité 10, alors vous taperez la commande suivante

  mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
          -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 film.avi

Vous voyez que les options apparaissant avant le second -zrcrop ne s'appliquent qu'a la DC10+ et que les options après le second -zrcrop s'appliquent à la Buz. Le nombre maximum de cartes MJPEG participant au cinerama est quatre, vous pouvez donc construire un vidéomur de 2x2.

Pour finir une remarque importante: Ne lancez ou n'arrêtez pas XawTV sur le périphérique en cours de lecture, cela cracherait votre ordinateur. Il est, cependant, sans risque de lancer D'ABORD XawTV, ENSUITE de lancer MPlayer, d'attendre que MPlayer se termine et ENSUITE de stopper XawTV.

2.3.1.4.2 Blinkenlights

Ce pilote est capable de lire en utilisant le protocole UPD Blinkenlights. Si vous ne savez pas ce qu'est Blinkenlights, vous n'avez pas besoin de ce pilote.

2.3.1.5 TV-out

2.3.1.5.1 Cartes Matrox G400

Sous Linux vous avez 2 méthodes pour faire fonctionner la sortie TV:

IMPORTANT: pour les instructions sur la sortie TV des Matrox G450/G550, voir la prochaine section SVP!

Construire un câble de sortie TV Matrox

Personne ne prends de responsabilités, ni n'offre de garanties quant aux éventuels dommages causés par cette documentation.

Cable pour G400: La quatrième broche du connecteur CRTC2 transmet le signal vidéo composite. La terre (ground) est sur les sixième, septième et huitième broches. (info donnée par Balázs Rácz)

Cable pour G450: La première broche du connecteur CRTC2 transmet le signal vidéo composite. La terre (ground) est sur les cinquième, sixième, septième, et quinzième (5, 6, 7, 15) broches. (info donnée par Balázs Kerekes)

2.3.1.5.2 Cartes Matrox G450/G550

Le support de la sortie TV pour ces cartes n'a été introduit que récemment, et n'est pas encore dans le noyau officiel. Actuellement le module mga_vid ne peut être utilisé à ma connaissance, parce que le pilote G450/G550 ne fonctionne que dans une configuration : le premier chip CRTC (qui a le plus de fonctions) sur le premier affichage (sur le moniteur), et le second CRTC (pas de BES - pour plus d'explications sur BES, veuillez voir la section G400 plus haut) sur la TV. Vous ne pouvez donc utilisez que le pilote de sortie fbdev de MPlayer pour le moment.

Le premier CRTC ne peut pas être relié à la seconde tête actuellement. L'auteur du pilote noyau matroxfb - Petr Vandrovec - fera certainement un support pour cela, en affichant la sortie du premier CRTC sur les deux têtes à la fois, comme actuellement recommandé pour la G400, voir la section ci-dessus.

Le patch noyau nécessaire et le howto détaillé sont téléchargeables sur http://www3.sympatico.ca/dan.eriksen/matrox_tvout/

2.3.1.5.3 Cartes ATI

PRÉAMBULE

Actuellement ATI ne veut supporter aucun de ces chips TV-out sous Linux, à cause de leur technologie Macrovision sous licence.

ÉTAT DE LA SORTIE TV ATI SUR LINUX

Sur les autres cartes , utilisez juste le pilote VESA, sans VIDIX. Un CPU puissant est requis, cependant.

La seule chose que vous ayez à faire - avoir le connecteur TV branché avant de booter votre PC car le BIOS vidéo ne s'initialise qu'une fois durant cette phase.

2.3.1.5.4 Voodoo 3

Reportez-vous à cette URL.

2.3.1.5.5 nVidia

D'abord, vous DEVEZ télécharger les pilotes closed-source depuis http://nvidia.com. Je ne décrirai pas le processus d'installation et de configuration car il sort du cadre de cette documentation.

Après que l'accélération XFree86, XVideo, et 3D fonctionne correctement, éditez la section Device de votre carte dans le fichier XF86Config, selon l'exemple suivant (adaptez à votre carte/TV):

Section "Device"
        Identifier      "GeForce"
        VendorName      "ASUS"
        BoardName       "nVidia GeForce2/MX 400"
        Driver          "nvidia"
        #Option         "NvAGP" "1"
        Option          "NoLogo"
        Option          "CursorShadow"  "on"

        Option          "TwinView"
        Option          "TwinViewOrientation" "Clone"
        Option          "MetaModes" "1024x768,640x480"
        Option          "ConnectedMonitor" "CRT, TV"
        Option          "TVStandard" "PAL-B"
        Option          "TVOutFormat" "Composite"

EndSection

Bien sûr la chose la plus importante est la partie TwinView.