Sophie

Sophie

distrib > Mandriva > current > i586 > media > main-updates > by-pkgid > a42e22ddf1d70fb02e9f62289d71cafa > files > 367

mplayer-doc-1.0-1.rc4.0.r31086.3.1mdv2010.2.i586.rpm

<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>7.3. DGA</title><link rel="stylesheet" href="default.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="MPlayer - Le Lecteur Vidéo"><link rel="up" href="video.html" title="Chapitre 7. Sorties vidéo"><link rel="prev" href="xv.html" title="7.2. Xv"><link rel="next" href="sdl.html" title="7.4. SDL"><link rel="preface" href="howtoread.html" title="Comment lire cette documentation"><link rel="chapter" href="intro.html" title="Chapitre 1. Introduction"><link rel="chapter" href="install.html" title="Chapitre 2. Installation"><link rel="chapter" href="usage.html" title="Chapitre 3. Utilisation"><link rel="chapter" href="cd-dvd.html" title="Chapitre 4. Utilisation des CD/DVD"><link rel="chapter" href="tv.html" title="Chapitre 5. TV"><link rel="chapter" href="radio.html" title="Chapitre 6. Radio"><link rel="chapter" href="video.html" title="Chapitre 7. Sorties vidéo"><link rel="chapter" href="ports.html" title="Chapitre 8. Ports"><link rel="chapter" href="mencoder.html" title="Chapitre 9. Utilisation basique de MEncoder"><link rel="chapter" href="encoding-guide.html" title="Chapitre 10. L'encodage avec MEncoder"><link rel="chapter" href="faq.html" title="Chapitre 11. Foire Aux Questions"><link rel="appendix" href="bugreports.html" title="Annexe A. Comment rapporter les bogues"><link rel="appendix" href="skin.html" title="Annexe B. Format de skins MPlayer"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">7.3. DGA</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="xv.html">Précédent</a> </td><th width="60%" align="center">Chapitre 7. Sorties vidéo</th><td width="20%" align="right"> <a accesskey="n" href="sdl.html">Suivant</a></td></tr></table><hr></div><div class="sect1" title="7.3. DGA"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dga"></a>7.3. DGA</h2></div></div></div><p title="PRÉAMBULE"><b>PRÉAMBULE. </b>
Ce document tente d'expliquer en quelques mots ce qu'est le DGA en général et
ce que peut faire le pilote de sortie DGA pour
<span class="application">MPlayer</span>
(et ce qu'il ne peut pas faire).

</p><p title="QU'EST CE QUE LE DGA"><b>QU'EST CE QUE LE DGA. </b>
<acronym class="acronym">DGA</acronym> est l'abréviation de <span class="emphasis"><em>Direct Graphics
Access</em></span> 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 adresses mémoire de
votre
process. Cela est autorisé par le noyau uniquement si vous avez les privilèges
super-utilisateur. Vous pouvez les obtenir soit en vous loggant en <code class="systemitem">root</code> ou en plaçant le bit suid sur l'exécutable
<span class="application">MPlayer</span> (<span class="bold"><strong>non
recommandé</strong></span>).
</p><p>
  Il existe deux versions de DGA : DGA1 est utilisé par XFree 3.x.x et
DGA2 a été introduit par XFree 4.0.1.
</p><p>
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.
</p><p>
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.
</p><p>
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 pilote de votre serveur
X contrôlant cette carte.
Cela peut donc ne pas fonctionner sur tous les systèmes...
</p><p title="INSTALLER LE SUPPORT DGA POUR MPLAYER"><b>INSTALLER LE SUPPORT DGA POUR MPLAYER. </b>
Assurez vous d'abord que X charge l'extension DGA, regardez dans
<tt class="filename">/var/log/XFree86.0.log</tt> :

</p><pre class="programlisting">(II) Loading extension XFree86-DGA</pre><p title="INSTALLER LE SUPPORT DGA POUR MPLAYER">

XFree86 4.0.x ou plus est <span class="bold"><strong>hautement
recommandé</strong></span> !
Le pilote DGA de <span class="application">MPlayer</span> est automatiquement
détecté par <tt class="filename">./configure</tt>, ou vous pouvez le forcer avec
l'option <tt class="option">--enable-dga</tt>.
</p><p>
Si le pilote ne peut pas passer en résolution inférieure, essayez les options
<tt class="option">-vm</tt> (uniquement avec X 3.3.x), <tt class="option">-fs</tt>,
<tt class="option">-bpp</tt>, <tt class="option">-zoom</tt> pour trouver un mode vidéo qui
convienne
à la vidéo. Il n'existe pas de convertisseur actuellement :(
</p><p>
Passez en <code class="systemitem">root</code>.
DGA nécessite un accès root pour écrire directement dans la mémoire vidéo.
Si vous voulez rester en utilisateur, installez
<span class="application">MPlayer</span> SUID root :

</p><pre class="screen">
chown root <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
chmod 750 <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
chmod +s <em class="replaceable"><code>/usr/local/bin/mplayer</code></em>
</pre><p>

Maintenant cela fonctionne aussi avec les droits d'un simple utilisateur.
</p><div class="caution" title="Faille de sécurité" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Faille de sécurité</h3><p>
Cela présente une <span class="bold"><strong>grosse</strong></span> faille de
sécurité !
Ne faites <span class="bold"><strong>jamais</strong></span> 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 <span class="application">MPlayer</span>.
</p></div><p>
Utilisez maintenant l'option <tt class="option">-vo dga</tt> et c'est parti !
(Enfin on peut l'espérer :)) Vous pouvez alors essayer l'option
<tt class="option">-vo sdl:pilote=dga</tt> !
C'est beaucoup plus rapide !
</p><p title="CHANGEMENT DE RÉSOLUTION"><a name="dga-modelines"></a><b>CHANGEMENT DE RÉSOLUTION. </b>
Le pilote 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 <tt class="filename">/etc/X11/XF86Config</tt>
(<tt class="filename">/etc/X11/XF86Config-4</tt> pour XFree 4.X.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 :
<tt class="filename">/var/log/XFree86.0.log</tt>.
</p><p>
Ces entrées doivent fonctionner correctement avec un chip Riva128, en
utilisant le
module pilote nv.o du serveur X.
</p><pre class="programlisting">
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
</pre><p title="DGA &amp; MPLAYER"><b>DGA &amp; MPLAYER. </b>
  DGA est utilisé en deux endroits par
<span class="application">MPlayer</span> : Le pilote SDL peut se compiler pour
en faire usage (<tt class="option">-vo sdl:pilote=dga</tt>) et dans le pilote DGA
(<tt class="option">-vo dga</tt>). Dans les sections suivantes je vous expliquerai
comment fonctionne le pilote DGA pour <span class="application">MPlayer</span>.
</p><p title="FONCTIONNALITÉS"><b>FONCTIONNALITÉS. </b>
Le pilote DGA s'invoque en spécifiant <tt class="option">-vo dga</tt> 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
<tt class="option">-vm</tt> et
<tt class="option">-fs</tt> (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 <tt class="option">-x</tt> et <tt class="option">-y</tt>. Avec l'option
<tt class="option">-v</tt>,
le pilote DGA affichera, entre autres choses, une liste de toutes les
résolutions
supportées par votre fichier <tt class="filename">XF86Config</tt>. Avec DGA2 vous
pouvez
également le forcer a utiliser un certain nombre de couleurs en utilisant
l'option
<tt class="option">-bpp</tt>. 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, ou si une
conversion logicielle doit être appliquée (ce qui peut ralentir la lecture).
</p><p>
Si par chance vous avez assez de mémoire vidéo libre pour y placer une image
entière,
le pilote DGA utilisera le double buffering, qui améliore considérablement la
qualité
de lecture. Il doit vous afficher si le double buffering est utilisé ou non.
</p><p>
Double buffering signifie que la prochaine trame de votre vidéo est dessinée
dans une
partie non affichée de la mémoire graphique tandis que s'affiche la trame en
cours.
Quand la trame suivante est prête, la puce graphique reçoit simplement
l'adresse de
celle-ci et récupère les données a afficher depuis cette partie de la mémoire.
Pendant
ce temps l'autre buffer se remplit avec l'image suivante.
</p><p>
Le double buffering peut s'activer avec l'option <tt class="option">-double</tt>
et se désactiver avec <tt class="option">-nodouble</tt>.
Actuellement l'option par défaut est de désactiver le double buffering.
En utilisant le pilote DGA, l'on-screen display (OSD) fonctionne uniquement
avec le doublebuffering activé.
Cependant, activer le double buffering 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.
</p><p title="PROBLÈMES DE VITESSE"><b>PROBLÈMES DE VITESSE. </b>
Généralement, l'accès au framebuffer DGA peut s'avérer aussi rapide que le
pilote X11,
apportant en plus l'avantage de bénéficier d'une image plein écran. Les
pourcentages
affichés par <span class="application">MPlayer</span> doivent être interprétés 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 <span class="command"><strong>top</strong></span> pour savoir
ce qui
se passe réellement lors de la lecture...
</p><p>
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.
</p><p>
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.
</p><p>
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.
</p><p>
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.
</p><p title="BOGUES CONNUS"><b>BOGUES CONNUS. </b>
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.
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
  Avec XFree 4.0.3 et <tt class="filename">nv.o</tt> un bogue affiche des couleurs
étranges.
  </p></li><li class="listitem"><p>
  Les pilotes ATI requièrent de changer plusieurs fois de mode après
l'utilisation
  du DGA.
  </p></li><li class="listitem"><p>
  Certains pilotes échouent à revenir à la résolution normale (utilisez
  <span class="keycap"><b>Ctrl</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad +</b></span>
  et <span class="keycap"><b>Ctrl</b></span>+<span class="keycap"><b>Alt</b></span>+<span class="keycap"><b>Keypad -</b></span> pour y retourner manuellement).
  </p></li><li class="listitem"><p>
  Certains pilotes affichent simplement des couleurs étranges.
  </p></li><li class="listitem"><p>
  Certains pilotes mentent a propos de la quantité de mémoire allouée dans
l'espace
  d'adressage du processus, empêchant vo_dga d'utiliser le doublebuffering
(SIS ?)
  </p></li><li class="listitem"><p>
  Certains pilotes semblent ne pas pouvoir reporter ne serait-ce qu'un seul
mode valide.
  Dans ce cas le pilote DGA plantera en vous affichant un mode 100000x100000
ou
  quelque chose comme ça.
  </p></li><li class="listitem"><p>
  L'OSD fonctionne uniquement avec le doublebuffering activé (sinon il
clignote).
  </p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="xv.html">Précédent</a> </td><td width="20%" align="center"><a accesskey="u" href="video.html">Niveau supérieur</a></td><td width="40%" align="right"> <a accesskey="n" href="sdl.html">Suivant</a></td></tr><tr><td width="40%" align="left" valign="top">7.2. Xv </td><td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td><td width="40%" align="right" valign="top"> 7.4. SDL</td></tr></table></div></body></html>