Sorties vidéoRé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 :
à partir des messages au démarrage de X11, par exemple :
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
(--) SVGA: Linear framebuffer at 0xD8000000
à partir de /proc/pci (utilisez la commande
lspci -v) :
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
Memory at d8000000 (32-bit, prefetchable)
à partir des messages noyau du pilote mga_vid (utilisez
dmesg) :
mga_mem_base = d8000000
Trouvons maintenant la taille mémoire. Simplement, convertissez la taille de
la
mémoire vidéo en hexadécimal, ou utilisez cette table :
1 Mo0x1000002 Mo0x2000004 Mo0x4000008 Mo0x80000016 Mo0x100000032 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 32Mo de 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).
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.
C'est ce qu'utilise l'option .
De plus, ce pilote 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 :
Vous devez utiliser XFree86 4.0.2 ou plus récent (les versions précédentes
n'ont pas XVideo)
Votre carte supporte l'accélération matérielle (les cartes modernes le font)
X charge l'extension XVideo, qui doit faire apparaître quelque chose
comme :
(II) Loading extension XVideo
dans /var/log/XFree86.0.log
NOTE : ceci charge seulement l'extension de XFree86.
Dans une installation correcte, celle ci est toujours chargée, et ne
signifie pas que le support XVideo spécifique à
votre carte est chargée !
Votre carte a le support Xv sous Linux. Pour le vérifier, essayez
xvinfo,
inclus dans XFree86. Cela doit afficher un long message, similaire à :
X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
(...)
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
(...etc...)
Cela doit supporter les formats de pixels YUY2 packed et YV12 planar pour
pouvoir être utilisés avec MPlayer.
Finalement, vérifiez si MPlayer a été compilé
avec le support 'xv'.
Faites un mplayer -vo help | grep xv
Si le support 'xv' à été compilé une ligne similaire à celle-ci devrait
apparaitre :
xv X11/Xv Cartes 3dfx
Les anciens pilotes 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, il fonctionne
correctement avec YV12 et YUY2.
Les versions précédentes, incluant 4.1.0,
plantent avec YV12.
Si des problèmes apparaissent en utilisant , 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
! Voir la section tdfxfb.
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 feriez mieux de la vendre.
Il y a maintenant un pilote framebuffer natif pour les cartes S3 Virge
ou similaires à tdfxfb. Activez votre framebuffer (c-à-d ajoutez
"" en paramètre à votre noyau) et utilisez
( et
peuvent aider aussi).
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 pilote plus récent, ou demandez
poliment un pilote qui gère MMX/3DNow sur la liste de diffusion MPlayer-users.
Cartes nVidia
nVidia n'est pas un très bon choix sous Linux ... Les pilotes open-source de
XFree86 supportent la plupart de ces cartes, mais dans certains cas, vous devrez
utiliser les pilotes binaires closed-source de nVidia, disponibles sur le
site web de nVidia.
Vous aurez toujours besoin de ce pilote si vous voulez l'accélération 3D.
Les cartes Riva128 n'ont pas de support XVideo même avec le pilote
nVidia :(
Plaignez-vous en à nVidia.
Cependant, MPlayer contient un pilote
VIDIX pour la plupart des cartes
nVidia. Actuellement il est en phase béta, et a quelques inconvénients. Pour
plus d'informations, voir la section VIDIX
nVidia.
Cartes ATI
Le pilote GATOS
(que vous devriez utiliser, à moins d'avoir une Rage128 ou une Radeon)
utilise VSYNC par défaut.
Cela signifie que la vitesse de décodage (!) est synchronisée à la vitesse de
rafraîchissement du moniteur. Si la lecture semble lente, essayez d'enlever
VSYNC, ou passez la vitesse de rafraîchissement à n*(fps du film) Hz.
Radeon VE - si vous avez besoin de X, utilisez 4.2.0 ou supérieur pour cette
carte.
Pas de support TV-out.
Bien sûr avec MPlayer vous pouvez heureusement
avoir un affichage accéléré, avec ou sans
sortie TV, et aucune librairie ou X ne
sont requis. Lire la section VIDIX.
Cartes NeoMagic
Ces cartes sont utilisées sur de nombreux portables. Vous devez utiliser
XFree86 4.3.0 ou supérieur, ou utiliser
les
pilotes Xv
de Stefan Seyfried.
Choisissez juste celui qui s'applique à votre version de XFree86.
XFree86 4.3.0 inclut le support Xv, mais Bohdan Horst a envoyé un petit
patch
pour les sources XFree86 qui accélère les opérations framebuffer (et donc
XVideo)
jusqu'à quatre fois.
Ce patch a été inclus dans le CVS de XFree86 et devrait être dans la prochaine
version suivant 4.3.0.
Pour permettre la lecture de contenu de taille DVD changez votre XF86Config
comme ceci :
Section "Device"
[...]
pilote "neomagic"
Option "OverlayMem" "829440"
[...]
EndSectionCartes 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.
Celui-ci ajoute le support Xv plein-écran avec la carte Cyberblade XP.
MPlayer contient également un pilote
VIDIX pour la carte Cyberblade/i1.
Cartes Kyro/PowerVR
Si vous voulez utiliser Xv avec une carte Kyro (par exemple la Hercules
Prophet 4000XT), vous devriez télécharger les pilotes depuis le
site de PowerVR.
Cartes Intel
Ces cartes sont présentes sur de nombreux portables. Un Xorg récent est
recommendé.
Pour permettre la lecture de vidéo de la résolution d'un DVD (voir plus),
modifiez le fichier XF86Config/xorg.conf comme tel :
Section "Device"
[...]
pilote "intel"
Option "LinearAlloc" "6144"
[...]
EndSection
L'absence de cette option se caractérise généralement par une erreur du
genre
X11 error: BadAlloc (insufficient resources for operation)
lorsque l'on tente d'utiliser l'option .
DGAPRÉAMBULE
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
MPlayer
(et ce qu'il ne peut pas faire).
QU'EST CE QUE LE DGA
DGA est l'abréviation de 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 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 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 pilote de votre serveur
X contrôlant cette carte.
Cela peut donc ne pas fonctionner sur tous les systèmes...
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 hautement
recommandé !
Le pilote DGA de MPlayer est automatiquement
détecté par ./configure, ou vous pouvez le forcer avec
l'option .
Si le pilote ne peut pas passer en résolution inférieure, essayez les options
(uniquement avec X 3.3.x), ,
, 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 aussi avec les droits d'un simple utilisateur.
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 et c'est parti !
(Enfin on peut l'espérer :)) Vous pouvez alors essayer l'option
!
C'est beaucoup plus rapide !
CHANGEMENT DE RÉSOLUTION
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 /etc/X11/XF86Config
(/etc/X11/XF86Config-4 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 :
/var/log/XFree86.0.log.
Ces entrées doivent fonctionner correctement avec un chip Riva128, en
utilisant le
module pilote nv.o du serveur X.
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
DGA & MPLAYER
DGA est utilisé en deux endroits par
MPlayer : Le pilote SDL peut se compiler pour
en faire usage () et dans le pilote DGA
(). Dans les sections suivantes je vous expliquerai
comment fonctionne le pilote DGA pour MPlayer.
FONCTIONNALITÉS
Le pilote DGA s'invoque en spécifiant 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
et
(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 et . Avec l'option
,
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
. 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).
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.
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.
Le double buffering peut s'activer avec l'option
et se désactiver avec .
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.
PROBLÈMES DE VITESSE
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 MPlayer 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 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.
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.
Avec XFree 4.0.3 et nv.o un bogue affiche des couleurs
étranges.
Les pilotes ATI requièrent de changer plusieurs fois de mode après
l'utilisation
du DGA.
Certains pilotes échouent à revenir à la résolution normale (utilisez
CtrlAltKeypad +
et CtrlAltKeypad - pour y retourner manuellement).
Certains pilotes affichent simplement des couleurs étranges.
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 ?)
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.
L'OSD fonctionne uniquement avec le doublebuffering activé (sinon il
clignote).
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
utilisant 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_VIDEOpilote. 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'à ce
que nous fassions notre propre "dimensionneur" logiciel (plus rapide, plus
agréable).
Nous avons également utilisé sa sortie aalib, mais maintenant nous avons la
nôtre qui
est plus confortable. Son support DGA était meilleur que le nôtre, jusqu'à
récemment.
Vous comprenez maintenant? :)
Cela aide également avec certains pilotes/cartes boguées si la vidéo est
saccadée
(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
bandes noires (si elles sont présentes).
SVGAlibINSTALLATION
Vous devrez installer svgalib et ses paquets de développement afin que
MPlayer construise son pilote SVGAlib (autodetecté,
mais peut être forcé), et n'oubliez pas d'éditer
/etc/vga/libvga.config
pour l'ajuster à votre carte et votre moniteur.
Assurez-vous de ne pas utiliser l'option , car elle active
l'utilisation du redimensionneur logiciel, et c'est lent. Si vous en avez
réellement
besoin, utilisez l'option 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 :
carte EGA avec moniteur EGA: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
carte EGA avec moniteur CGA: 320x200x4bpp, 640x200x4bpp
La valeur des bpp (bits par pixel) doit être fixé à 4 manuellement :
Le film doit probablement être redimensionné pour tenir dans le mode
EGA :
-vf scale=640:350
ou
-vf scale=320:200
Pour cela nous avons besoin de la routine de redimensionnement rapide mais de
mauvaise qualité :
-sws 4
Peut-être que la correction d'aspect automatique doit être coupée :
-noaspect
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é :
.
J'ai également besoin de diminuer la fréquence d'échantillonnage sur ma
machine, car le son est endommagé en 44kHz : .
Vous pouvez activer l'OSD et les sous-titres uniquement avec le filtre
, voir la page de man pour les paramètres exacts.
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
(anciennement 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 :
spécifie le device framebuffer a utiliser (par défaut :
/dev/fb0)
mode a utiliser (d'après le fichier /etc/fb.modes)
fichier de configuration des modes (par défaut :
/etc/fb.modes)
valeurs importantes, voir
example.conf
Si vous désirez passer dans un mode particulier, alors utilisez
mplayer -vm -fbmode nom_du_modenomfichier
seul choisira le mode le mieux adapté dans votre
fichier
/etc/fb.modes. Peut s'utiliser avec les options
et . L'option
est
supportée uniquement si le format de pixels de la vidéo correspond au format
de
pixel du mode framebuffer.
Faites attention à la valeur bpp, le pilote fbdev essaie par défaut
d'utiliser
la valeur courante, ou bien celle spécifiée par l'option
.
l'option n'est pas supportée (Utilisez l'option
). Vous ne pouvez pas utiliser de modes 8bpp (ou moins).
vous pouvez vouloir désactiver le curseur :
echo -e '\033[?25l'
ou
setterm -cursor off
et l'économiseur d'écran :
setterm -blank 0
Pour afficher de nouveau le curseur :
echo -e '\033[?25h'
ou
setterm -cursor on
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.
Framebuffer Matrox (mga_vid)mga_vid est la combinaison d'un pilote de sortie
vidéo et d'un module du noyau Linux qui utilise le module vidéo de mise à
l'échelle et de sur-impression des Matrox G200/G400/G450/G550. pour effectuer
la conversion YUV->RGB et le redimentionnement arbitraire de la vidéo.
Pour le pilote compatible avec les noyaux Linux 2.6.x, allez sur
+ ou regardez sur le dépot
externe Subversion de mga_vid qui peut être consulté avec
svn checkout svn://svn.mplayerhq.hu/mga_vid
Installation :
Pour l'utiliser, vous devez au préalable compiler
pilotes/mga_vid.o :
make pilotes
Puis lancez (sous le compte root)
make install-pilotes
qui devrait installer le module et créer le noeud de périphérique pour vous.
Chargez le pilote avec
insmod mga_vid.o
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
(rmmod mga_vid avant), en
spécifiant la mémoire de la carte en Mo :
insmod mga_vid.o mga_ram_size=16
Pour le charger/décharger automatiquement, insérez d'abord cette ligne a la
fin du fichier /etc/modules.conf :
alias char-major-178 mga_vid
Vous devez ensuite (re)compiler MPlayer,
./configure détectera /dev/mga_vid
et
construira le pilote 'mga'. Pour l'utiliser dans
MPlayer,
lancez-le avec l'option si vous êtes en console
matroxfb, ou sous XFree86 3.x.x ou 4.x.x.
Le pilote mga_vid coopère avec Xv.
Le 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
Une application de test appelée mga_vid_testest présente
dans le même répertoire. Elle devrait afficher des images 256x256 sur
l'écran si tout fonctionne bien.
Support YUV 3Dfx
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-tdfxfbtdfx_vid
Il s'agit de la combinaison d'un module du noyau Linux et d'un pilote de
sortie vidéo similaire à mga_vid.
Vous aurez besoin d'un noyau 2.4.x avec le pilote
agpgart puisque tdfx_vid
utilise AGP.
Ajoutez l'option lors du
configure pour compiler le pilote de la sortie vidéo
puis compilez le module noyau avec les instructions suivantes.
Installation du module noyau tdfx_vid.o :
Compilez pilotes/tdfx_vid.o :
make pilotes
Puis lancez (avec le compte root)
make install-pilotes
qui devrait installer le module et créer le noeud de périphérique pour
vous.
Chargez le pilote avec
insmod tdfx_vid.o
Pour automatiser le chargement/déchargement quand nécessaire,
commencez par inclure la ligne suivante à la fin du fichier
/etc/modules.conf :
alias char-major-178 tdfx_vid
Une application de test appelée tdfx_vid_test est
disponible dans le même répertoire Elle devrait afficher des informations
utiles si tout fonctionne bien.
Sortie OpenGLMPlayer 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
pour son téléchargement et les infos
d'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 pour son téléchargement et les infos
d'installation.
Une astuce d'un de nos utilisateurs : la sortie vidéo GL peut être
utilisée pour obtenir une sortie TV synchronisée verticalement. Vous devrez
définir une variable d'environnement (au moins sur nVidia) :
export __GL_SYNC_TO_VBLANK=1AAlib – 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
supportent déjà, comme Doom, Quake, etc. MPlayer
possède
pour cela un pilote parfaitement utilisable. Si
./configure
détecte une installation de aalib, le pilote aalib libvo sera compilé.
Vous pouvez utiliser certains raccourcis clavier dans le fenêtre AA pour
changer les options de rendu :
ToucheAction1
diminue le contraste
2
augmente le contraste
3
diminue la luminosité
4
augmente la luminosité
5
active/désactive le rendu rapide
6
change le mode de dithering (none, error distribution, Floyd Steinberg)
7
inverse l'image
8
passe des contrôles de aa vers ceux de MPlayer
et vice-versa
Vous pouvez utiliser les lignes de commande suivantes :
change la couleur de l'OSD
Change la couleur des sous-titres
where V peut être :
0 (normal),
1 (noir),
2 (gras),
3 (fontes grasses),
4 (inversé),
5 (spécial).
AAlib elle-même propose de nombreuses options. En voici les
principales :
Choisit le pilote aa (X11, curses, Linux)
Utilise les 256 caractères
Utilise l'ASCII 8 bits
Affiche toutes les options de AAlib
Le rendu prend beaucoup de temps CPU, spécialement en utilisant AA-on-X (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 :)) (mais à mon humble avis vous
pouvez utiliser l'option pour avoir des graphismes
sur hgafb :)).
Utilisez l'option si votre machine n'est pas
suffisamment rapide pour afficher toutes les trames !
Sur un terminal vous obtiendrez de meilleures performances en utilisant le
pilote
linux, et pas curses (). 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
pour une meilleure optimisation.
libcaca – Librairie ASCII Art
en couleur
La libcaca
est une librairie graphique qui affiche du text à la place des pixels, et qui
peut
donc fonctionner sur des cartes graphiques anciennes ou sur des terminaux
texte. Elle
n'est pas très différente de la célèbre librairie
AAlib.
libcaca nécessite un terminal pour
fonctionner, et devrait ainsi fonctionner sur tous les systèmes Unix (dont Mac
OS X)
en utilisant soit la librairie
slang soit la librairie
ncurses, sous DOS en utilisant la
librairie
conio.h, et sous les systèmes Windows
en utilisant soit slang, soit
ncurses (via émulation Cygwin), ou
soit
conio.h. Si
./configure
détecte libcaca, le pilote libvo caca
sera compilé.
Les différences avec AAlib
sont
les suivantes :
16 couleurs disponible pour l'affichage des caractères (256 paires de
couleur)
tramage des images en couleur
Mais libcaca à également les
limitations suivantes :
aucun support pour la luminosité, le contraste, le gamma
Vous pouvez utiliser certaines touches dans la fenêtre caca pour changer les
options de rendu :
KeyActiond
Change de méthode de tramage.
a
Change de méthode d'anticrénelage.
b
Change le fond.
libcaca regarde également la
présence de certaines variables d'environnement :
Définie le pilote caca recommandé, c-a-d. ncurses, slang, x11.
Spécifie le nombre de lignes de collones. par ex. 128x50.
Spécifie la police à utiliser. par ex. fixed, nexus.
Use the option if your computer is not fast
enough to render all frames.
VESA - sortie sur BIOS VESA
Ce pilote à été conçu et présenté 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.
dixit VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16,
1998 (Page 70) :
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
ROM BIOS sur la même carte graphique, il est possible de cacher le fait que
deux
contrôleurs sont présent dans l'application.
Cela a la limitation d'interdire l'utilisation simultanée de chacun des
contrôleurs, mais 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 un affichage indépendant ou au moins
une sortie indépendante).
AVANTAGES
Vous avez la possibilité de voir des films même si
Linux ne
connaît pas votre matériel vidéo.
Vous n'avez pas besoin d'avoir de logiciels graphiques installés sur votre
Linux
(comme X11 (alias XFree86), fbdev et autres). Ce pilote peut fonctionner en
mode texte.
Vous avez des chances de faire fonctionner la sortie
TV
(C'est le cas au moins pour les cartes ATI).
Ce pilote appelle le gestionnaire int 10h ainsi ce
n'est pas un
émulateur - il appelle des choses réelles
dans le BIOS
réel en mode réel (pour l'instant
en mode vm86).
Vous pouvez l'utiliser avec VIDIX, accélérant ainsi l'affichage vidéo
et la sortie TV en même temps (recommandé
pour les cartes ATI) !
si vous avez un BIOS VESA VBE 3.0+, et que vous avez spécifié
monitor-hfreq, monitor-vfreq, monitor-dotclock
quelque part
(fichier de config, ou ligne de commande) vous aurez le plus haut taux de
rafraîchissement possible (en utilisant la Formule Générale de Timing).
Pour activer cette fonctionnalité vous devrez spécifier
toutes les options de votre moniteur.
DÉSAVANTAGES
Il ne fonctionne que sur les systèmes x86.
Il ne peut être utilisé qu'en root.
Pour l'instant il n'est disponible que pour Linux.
N'utilisez pas ce pilote avec GCC
2.96 !
Cela ne fonctionnera pas !
OPTIONS EN LIGNE DE COMMANDE POUR VESA
actuellement reconnu : dga pour forcer le mode
dga et nodgapour le désactiver. En mode dga vous pouvez
activer le double buffering via l'option .
Note :
vous pouvez omettre ces paramètres pour activer l'
autodétection du mode dga.
PROBLÈMES CONNUS ET CONTOURNEMENTS
Si vous avez installé des polices NLS sur
votre
Linux box et que vous lancez le pilote VESA depuis le mode texte alors après
la
fermeture de MPlayer vous aurez la
police de la ROM chargée à la place de la
nationale.
Vous pouvez recharger la police nationale en utilisant l'utilitaire
setsysfont de la distribution Mandrake/Mandriva par
exemple.
(Astuce : Le même utilitaire peut être
utilisé pour la localisation de fbdev).
Certains pilotes graphiques Linux de
mettent pas à
jour le mode BIOS actif en mémoire DOS.
Donc si vous avez un tel problème - utilisez toujours le pilote VESA
uniquement
depuis le mode texte.
Sinon le mode texte (#03) sera activé de toute façon et vous devrez
redémarrer
votre ordinateur.
Souvent après la fin du pilote VESA vous avez un
écran noir.
Pour retourner à l'état original de votre écran - passez simplement sur une
autre
console (en tapant
AltF<x>) et
revenez à la première de la même façon.
Pour faire fonctionner la sortie TV vous
devez avoir branché le connecteur TV avant le démarrage de votre PC car
le BIOS vidéo s'initialise uniquement à ce moment-là.
X11
À é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
. La plupart des cartes possèdent un
redimensionnement
matériel, pour elles utilisez la sortie ou
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+dimensionnement 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
des modelines DGA, et insérez-les dans votre
XF86Config.
Si vous avez XFree86 4.x.x : utilisez l'option .
Elle changera de résolution pour s'adapter à celle de votre film. Si
non :
Avec XFree86 3.x.x : Vous devrez parcourir les résolutions possibles
avec les touches
CtrlAltKeypad
+
et
CtrlAltKeypad
-.
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.
VIDIXPRÉAMBULE
VIDIX est l'abréviation de
VIDéo
Interface
for *niX.
VIDIX a é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
Vous pouvez utiliser le pilote de sortie vidéo autonome : .
Ce pilote à été développé comme un front end X11 pour la technologie VIDIX.
Il
requiert un serveur X et ne peut fonctionner que sous X. Notez que, comme il
accède
directement au matériel et contourne le pilote X, les pixmaps mis en cache
dans la
mémoire de la carte graphique peuvent être corrompus. Vous pouvez éviter
cela en
limitant la quantité de mémoire utilisée par X avec l'option "VideoRam"
dans la section "device" de XFree86Config.
Vous devriez fixer cette valeur avec la quantité de mémoire installée sur
votre carte moins 4Mo.
Si vous avez moins de 8Mo de mémoire vidéo, vous pouvez utiliser l'option
"XaaNoPixmapCache" dans la section "screen" à la place.
Il existe un pilote console VIDIX : .
Celui-ci requiert un framebuffer fonctionnel et initialisé pour la plupart
des cartes (ou sinon vous brouillerez simplement l'écran), et vous aurez un
effet similaire à ou .
Les cartes nVidia par contre sont capables d'afficher de la vidéo graphique
dans une console texte. Voir la section
nvidia_vid pour plus d'informations.
Pour vous débarrasser du texte sur les bords et du curseur clignotant
essayez
setterm -cursor off > /dev/tty9
(en supposant que le terminal tty9n'est pas
utilisé), puis basculez sur tty9.
Sinon, l'option devrait lire la vidéo en
arrière-plan, un tant soit peu que la fonctionnalité de
soit opérationelle.
Vous pouvez utiliser le sous-périphérique VIDIX qui à été appliqué à de
nombreux pilotes de sortie vidéo, tels que :
(Linux uniquement) et
.
De plus le pilote de sortie vidéo utilisé avec VIDIX
n'a pas d'importance.
BESOINS
La carte graphique devrait être en mode graphique (excepté les cartes nVidia
avec le pilote ).
Le pilote de sortie vidéo de MPlayer devrait
connaître les modes vidéos actifs et être capable de donner au
sous-périphérique
VIDIX quelques caractéristiques du serveur.
MÉTHODES D'UTILISATION
Quand VIDIX est utilisé en temps que sous-périphérique
(), 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 comme un
paramètre
global (je recommande l'utilisation de cette option au moins pour les cartes
ATI).
Comme pour , il reconnaît actuellement les options
suivantes :
.
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
fichier.avi
ou
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32
fichier.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
bloquer 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 aux développeurs, SVP. La bonne façon est d'utiliser VIDIX
sans argument pour activer l'autodétection du pilote.
svgalib_helper
Comme VIDIX requiert l'accès direct au matériel, vous avez le choix entre le
lançer
en tant que root ou définir le bit SUID du binaire
MPlayer
(Attention : c'est une faille de sécurité
!).
Sinon, si vous utilisez un noyau Linux 2.4.x, vous pouvez utiliser un module
noyau spécial, comme ceci :
Téléchargez la version de
développement
de svgalib (par exemple 1.9.17), OU
téléchargez une version faite par Alex spécialement pour utilisation avec
MPlayer (elle ne nécessite pas les sources de
svgalib pour
compiler)
ici.
Compilez le module dans le répertoire svgalib_helper
(il peut être trouvé à l'intérieur du répertoire
svgalib-1.9.17/kernel/ si vous avez
téléchargé
les sources depuis le site de svgalib) et faire un insmod.
Pour créer les périphériques nécessaires dans le répertoire
/dev, faites un
make device dans le répertoire
svgalib_helper, en root.
Puis lancez de nouveau configure en passant les
paramètres et
,
ajustés à l'emplacement où vous avez décompressé les sources.
Recompilez.
Cartes ATI
Actuellement la plupart des cartes ATI sont supportés nativement, de la Mach64
jusqu'aux nouvelles Radeons.
Il y a deux binaires compilés : radeon_vid pour
les cartes Radeon et rage128_vid pour les Rage 128. Vous
pouvez en forcer un ou laisser le système VIDIX le détecter parmis les pilotes
disponibles.
Cartes Matrox
Les Matrox G200, G400, G450 et G550 doivent normalement fonctionner.
Le pilote supporte les égaliseurs vidéo et devrait être presque aussi rapide
que le
framebuffer Matrox
Cartes Trident
Il y a un pilote disponible pour les chipsets Trident Cyberblade/i1, qui
peuvent être
trouvés sur les cartes-mère VIA Epia.
Le pilote a été écrit et est maintenu par
Alastair M.
Robinson.
Cartes 3DLabs
Bien qu'il y ai un pilote pour les chips 3DLabs GLINT R3 et Permedia3,
personne ne l'a testé, donc les rapports sont les bienvenus.
Cartes nVidia
Une fonction unique du pilote nvidia_vid est la capacité d'afficher de la
vidéo dans un console uniquemnent textuelle
- avec aucun framebuffer ou X. Pour ce faire, nous aurons besoin d'utiliser
la sortie , comme le montre l'exemple suivant :
mplayer -vo cvidix exemple.aviCartes SiS
C'est du code très expérimental, comme nvidia_vid.
Testé sur SiS 650/651/740 (les chipsets les plus couramment utilisés dans les
versions SiS des barebones "Shuttle XPC")
Rapports attendus !
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
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
.
La sélection de couche peut être faite par la méthode sous-périphérique, par
exemple :
(couche -1 par défaut : autodétection)
DirectFB/Matrox (dfbmga)
Veuillez lire la section DirectFB principale
pour
avoir les informations générales.
Ce pilote de sortie vidéo activera CRTC2 (sur la seconde tête) sur les cartes
Matrox
G400/G450/G550, affichant la vidéo indépendemment
de la première tête.
Ville Syrjala a un fichier
README
et un
HOWTO
sur sa page web qui explique comment faire fonctionner la sortie TV DirectFB
avec les cartes Matrox.
La première version de DirectFB que nous avons pu faire fonctionner était la
0.9.17. (elle est boguée, nécessite le patch
surfacemanager
disponible sur l'URL ci-dessus). Le portage du code CRTC2 dans
mga_vid est prévu depuis des années, les
patches sont les bienvenus.
Décodeurs MPEGsorties et entrées DVBMPlayer 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 de flux contenants des vidéos MPEG-1/2 et/ou du son MPEG
peut être fait avec cette commande :
mplayer -ao mpegpes -vo mpegpes
fichier.mpg|vob
Décoder n'importe quel autre type de flux vidéo nécessite le recodage en
MPEG-1, donc c'est lent et peut ne pas valoir la chandelle, surtout si votre
ordinateur est lent.
Cela peut être obtenu en utilisant une commande comme celle-ci :
mplayer -ao mpegpes -vo mpegpes votrefichier.ext
mplayer -ao mpegpes -vo mpegpes -vf 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
redimensionner vers
d'autres tailles en ajoutant avec la
largeur et la
hauteur que vous voulez à l'option . 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
redimensionner
horizontalement dans la plupart des cas. Pour un DivX en 512x384 (aspect 4:3)
essayez :
mplayer -ao mpegpes -vo mpegpes -vf 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 filtre pour
ajouter des
bandes noires. Pour voir un MPEG-4 (DivX) en 640x384, essayez :
mplayer -ao mpegpes -vo mpegpes -vf expand=640:576
fichier.aviSi votre CPU est trop lent pour un MPEG-4 (DivX) en taille complète
720x576, essayez de
diminuer la taille :
mplayer -ao mpegpes -vo mpegpes -vf scale=352:576
fichier.aviSi la vitesse ne s'améliore pas, essayez également la diminution
verticale :
mplayer -ao mpegpes -vo mpegpes -vf scale=352:288
fichier.avi
Pour l'OSD et les sous-titres utilisez la fonction expand du plugin OSD. Donc,
au lieu
de ou , utilisez
(le 5ème paramètre à 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
pour l'ajuster ( est un bon choix).
Pour pouvoir lire des films non-25fps sur une TV PAL ou avec un CPU lent,
ajoutez
l'option .
Pour garder les dimensions des fichiers MPEG-4 (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 filtre dvbscale :
pour une TV 4:3: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
pour une TV 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1
TV numérique (module d'entrée DVB)Vous pouvez utiliser votre carte DVB pour regarder la TV numérique.
Vous devriez également avoir les programmes scan et
szap/tzap/czap/azap installés; ils sont inclus dans le
paquet
de pilotes.
Vérifiez que vos pilotes fonctionnent correctement avec un programme tel que
dvbstream
(c'est la base du module d'entrée DVB).
Maintenant vous devriez compiler un fichier
~/.mplayer/channels.conf, avec la syntaxe acceptée par
szap/tzap/czap/azap, ou le faire compiler par
scan.
Si vous avez plus d'un type de carte (c-a-d. Satellite, Terrestre, Cable et
ATSC)
vous pouvez sauvegarder vos fichiers de canaux en tant que
~/.mplayer/channels.conf.sat,
~/.mplayer/channels.conf.ter,
~/.mplayer/channels.conf.cbl,
et ~/.mplayer/channels.conf.atsc,
respectivement, pour qu'implicitement MPlayer
les utilise à la place de ~/.mplayer/channels.conf,
et vous n'avez qu'à spécifier la carte à utiliser.
Assurez-vous de n'avoir que des canaux réellement
disponibles dans votre fichier channels.conf, ou
MPlayer attendra pour un programme non-cryptée.
Dans vos champs audio et vidéo vous pouvez utiliser la syntaxe
suivante :
(avec un maximum de 6 pids pour chaque);
dans ce cas MPlayer inclura dans le flux les pids
indiqués, plus le pid 0 (qui contient le PAT).
Vous devriez toujours inclure dans chaque ligne le pid PMT et PCR du canal
correspondant (si vous le connaissez).
Vous pouvez aussi mettre 8192, ce qui sélectionnera tous les pids de cette
fréquence, puis vous pourrez basculer entre les programmes avec TAB.
Ceci risque de nécessiter plus de bande passante bien que les cartes à bas
coût transfèrent toujours tous les canaux au moins vers le noyau si bien
que cela ne fait pas beaucoup de différence pour elles.
Autres utilisations possibles : pid televideo, seconde piste audio,...
Si MPlayer se plain souvent avec le message
suivant :
Too many video/audio packets in the buffer ou si vous
remarquez
une désynchronisation grandissante entre le son et la vidéo, vérifiez la
présence du pid PCR dans votre flux (nécessaire pour se conformer au model
de tampon de votre émetteur) et/ou essayez d'utiliser le démultiplexeur
MPEG-TS de libavformat en ajoutant à votre ligne de commande :
.
Pour afficher le premier des canaux présents dans votre liste, tapez
mplayer dvb://
Si vous voulez regarder un canal spécifique, tel que R1, tapez
mplayer dvb://R1
Si vous avez plus d'une carte vous pouvez aussi spécifier le numéro de la
carte
où le canal est visible (par ex. 2) avec la syntaxe :
mplayer dvb://2@R1
Pour changer de canal tapez sur les touches h (suivant) et
k (précédent), ou utilisez le
menu OSD.
Pour désactiver temporairement un flus audio ou vidéo, copiez les lignes
suivantes dans le fichier ~/.mplayer/input.conf :
% set_property switch_video -2
& step_property switch_video
? set_property switch_audio -2
^ step_property switch_audio
(Ceci modifie les préférences des raccourcis claviers)
En appuyant sur la touche correspondant à switch_x -2, le
flux associé sera fermé.
En appuyant sur la touche correspondant à step_x, le flux
sera réouvert.
Notez que ce mécanisme ne fonctionnera pas comme attendu si il y a de
multiples flux audio et vidéo dans le média.
Pour éviter les saccadements et les messages d'erreurs comme "Votre système
est trop LENT pour jouer ce fichier !" lors de la lecture (pas en
enregistrement), il est conseillé d'ajouter
-mc 10 -speed 0.97 -af scaletempo
sur la ligne de commande, en ajustant le paramètre
à vos resources.
Si votre ~/.mplayer/menu.conf contient une entrée
<dvbsel>, comme celle du fichier d'exemple
etc/dvb-menu.conf (que vous pouvez utiliser pour
outrepasser ~/.mplayer/menu.conf), le menu principal
affichera un sous-menu qui vous permettra de choisir les canaux présents
dans
votre channels.conf, peut-être précédé d'un menu des
cartes
disponibles si il y en a plus d'une utilisable par
MPlayer.
Si vous voulez sauvegarder un programme sur le disque vous pouvez utiliser
mplayer -dumpfile r1.ts -dumpstream dvb://R1
Si vous voulez l'enregistrer dans un format différent (le ré-enregistrer)
vous pouvez lancer une commande comme
mencoder -o r1.avi -ovc xvid -xvidencopts
bitrate=800 \
-oac mp3lame -lameopts cbr:br=128 -pp=ci
dvb://R1
Lisez la page de man pour avoir une liste des options que vous pouvez passer
au module d'entrée DVB.
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
.
SVP, rappelez-vous que la langue de la liste est l'anglais.
Dans le futur vous pouvez vous attendre à pouvoir afficher l'OSD et les
sous-titres en utilisant la fonction OSD native des cartes DVB.
DXR2MPlayer supporte l'affichage accéléré avec la
carte Creative DXR2.
Tout d'abord vous devrez avoir les pilotes correctement installés. Vous pouvez
trouver les pilotes et les instructions d'installation sur le site
DXR2 Resource Center.
UTILISATIONActive la sortie TV ou Active la sortie Overlay sous X11Cette option est utilisée pour contrôler le pilote
DXR2.
Le chipset overlay utilisé sur la DXR2 est d'assez mauvaise qualité mais les
paramètres
par défaut devraient suffire pour tout le monde. L'OSD peut être utilisable
avec
l'overlay (pas sur une télé) en la dessinant avec une couleur-clé. Avec les
paramètres
de couleur-clé par défaut vous obtiendrez des résultats variables,
généralement vous
vérez la couleur-clé autour des personnages et autres effets amusants. Mais si
vous
ajustez correctement les paramètres de couleur-clé vous devriez pouvoir
obtenir des
résultats acceptables.
Veuillez lire la page de man pour les options disponibles.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
active l'overlay à la place de TV-Out. 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.
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 prebuffering 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 prebuffering la lecture est beaucoup
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
pour
éviter les éventuelles pertes de synchro.
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.
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.
= 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é.
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 .
Pour la sortie audio, où X est le numéro de
périphérique
(0 si une carte).
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
().
Pour voir du contenu non-MPEG sur l'em8300 (c-a-d. MPEG-4 (DivX) ou
RealVideo),
vous devrez spécifier un filtre vidéo MPEG-1 tel que libavcodec
(lavc).
Voir le manuel pour de plus amples infos à propos de .
Actuellement il n'est pas possible de régler les fps
de l'em8300 ce qui veut dire qu'il est fixé à 30000/1001 fps.
À cause de cela il est hautement recommandé d'utiliser ,
surtout si vous utilisez le prebuffering. Alors pourquoi 25 et pas 30000/1001?
Hé bien, le truc est que si vous utilisez 30000/1001, l'image devient un
peu sautante.
Nous n'en connaissons pas la raison. Si vous le réglez quelque part entre 25
et 27 l'image devient stable.
Pour l'instant tous ce que nous pouvons faire est de l'accepter.
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 soufre
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), mais afficher l'OSD
dans
l'image (c'est ce que fait le "1" à la fin).
L'em8300 supporte la lecture audio AC-3 (son surround) au travers de la sortie
audio
numérique de la carte. Voir l'option plus haut, elle
doit
être utilisé pour spécifier la sortie DXR3 au lieu d'une carte son.
Autres matériels de visualisationZr
C'est un pilote d'affichage () pour certaines cartes de
capture/lecture (testé pour DC10+ et Buz, et cela devrait fonctionner pour la
LML33 et
la DC10). 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 si votre machine
est trop lente. Note : Mon AMD K6-2 350Mhz est (avec
)
très adapté pour voir des vidéos de taille VCD et les films dont la taille est
réduite.
Ce pilote parle au module noyau disponible sur
, 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ée 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é,
vous pouvez choisir de redimmensionner le film en 384x204 en utilisant le zoom
logiciel bilinéaire rapide.
La ligne de commande est
mplayer -vo zr -sws 0 -vf scale=384:204
film.avi
Le découpage peut être fait avec le filtre et par ce
pilote lui-même. Supposons qu'un film soit trop large pour s'afficher sur
votre Buz et
que vous vouliez utiliser 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 , vous feriez
mplayer -vo zr -vf crop=720:320:80:0
benhur.avi
Des occurrences supplémentaires de 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
ayez 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
ne
s'appliquent qu'a la DC10+ et que les options après le second
s'appliquent à la Buz. Le nombre maximum de cartes MJPEG participant au
cinerama est quatre, vous pouvez donc construire un mur
vidéo 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 planterait votre ordinateur. Il est,
cependant,
sans risque de lancer D'ABORDXawTV,
ENSUITE de lancer
MPlayer, d'attendre que
MPlayer se
termine et ENSUITE de stopper
XawTV.
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.
Sortie TVCartes Matrox G400
Sous Linux vous avez 2 méthodes pour faire fonctionner la sortie TV :
pour les instructions sur la sortie TV des Matrox G450/G550, voir la prochaine
section SVP !
XFree86
en utilisant le pilote et le module HAL, disponible sur le
site de Matrox. Cela vous
donnera X sur
la TV.
Cette méthode ne vous donne pas la lecture
accélérée comme sous Windows ! La seconde tête n'a qu'un
framebuffer YUV, le BES (Back End Scaler, le
redimensionneur YUV des cartes G200/G400/G450/G550) ne fonctionne pas
dessus ! Le pilote Windows contourne cela, probablement en utilisant le
moteur 3D pour zoomer, et le framebuffer YUV pour afficher l'image zoomée.
Si vous voulez vraiment utiliser X, utilisez les options
, mais ce sera
LENT, et aura la protection anticopie
Macrovision activée
(vous pouvez "contourner" Macrovision en utilisant ce
script perl).
Framebuffer
En utilisant les modules matroxfb dans
les noyaux 2.4. Les noyaux 2.2 n'ont pas de fonction TV-out incluse, et
sont donc inutilisables pour cela.
Vous devez activer TOUTES les fonctions spécifiques à matroxfb durant
la compilation (excepté MultiHead), et les compiler en
modules !
Vous aurez également besoin que I2C soit activé et mettre les outils
matroxset, fbset
et con2fb dans votre path.
Puis chargez les modules matroxfb_Ti3026, matroxfb_maven,
i2c-matroxfb,matroxfb_crtc2 dans votre noyau.
Votre console en mode texte va entrer en mode framebuffer (sans retour
possible !).
Ensuite, réglez votre moniteur et votre TV à votre convenance avec
les outils ci-dessus.
Yoh. La prochaine tâche est de faire disparaître le curseur sur tty1
(ou n'importe quelle autre), et de désactiver l'économiseur d'écran.
Exécutez les commandes suivantes :
echo -e '\033[?25l'
setterm -blank 0
ou
setterm -cursor off
setterm -blank 0
Vous pouvez mettre ceci dans un script, et également effacer
l'écran.
Pour réactiver le curseur :
echo -e '\033[?25h' ou
setterm -cursor on
Yeah kewl. Démarrez le film avec
mplayer -vo mga -fs -screenw 640 -screenh 512
nomfichier
(si vous utilisez X, maintenant changez pour matroxfb avec par exemple
CtrlAltF1.)
Changez 640 et 512 si vous voulez
spécifier une résolution différente...
Appréciez la sortie TV Matrox ultra-rapide
ultra-fonctionnelle (meilleure que Xv) !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,
veuillez voir la section G400 plus haut) sur la TV. Vous ne pouvez donc
utiliser 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
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).
Cartes ATIPRÉ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 LINUXATI Mach64 :
supporté par GATOS.
ASIC Radeon VIVO :
supporté par GATOS.
Radeon et
Rage128 :
supporté par MPlayer !
Vérifiez les sections pilote VESA et
VIDIX.
Rage Mobility P/M, Radeon, Rage 128, Mobility
M3/M4 :
supporté par atitvout
.
Sur les autres cartes, utilisez juste le pilote VESA,
sans VIDIX. Un CPU puissant est cependant requis.
La seule chose que vous ayez à faire - avoir le
connecteur TV
branché avant de booter votre PC car le BIOS vidéo s'initialise
uniquement durant cette phase.
nVidia
D'abord, vous DEVEZ télécharger les pilotes closed-source depuis .
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 fonctionnent 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"
pilote "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 l'élément le plus important est la partie TwinView.
Neomagic
Le chip NeoMagic peut être trouvé sur de nombreux portables, certains équipés
d'un encodeur TV analogique simple, certains en ont un plus avancé.
Analog encoder chip :
Il a été reporté qu'une sortie TV fiable pouvait être obtenue en utilisant
ou .
Vous avez besoin d'avoir vesafb compilé dans votre noyau et de passer les
paramètres suivants sur la ligne de commande du noyau :
.
Vous devriez lancer X, puis passer en mode
console avec par exemple
CTRLALTF1.
Si vous échouez en lancant X depuis la console,
la vidéo
devient lente et saccadé (toute explication de ce phénomène est bienvenue).
Identifiez-vous dans votre console, puis lancez la commande suivante :
clear; mplayer -vo fbdev -zoom -cache 8192 dvd://
Maintenant vous devriez voir le film lancé en mode console remplir
à peu près la moitié de votre écran LCD de portable.
Pour switcher vers la TV tapez
FnF5 trois fois.
Testé sur un Tecra 8000, noyau 2.6.15 avec vesafb, ALSA v1.0.10.
chip Chrontel 70xx encoder :
Présent dans l'IBM Thinkpad 390E et probablement dans d'autres Thinkpads ou portables.
Vous devez utiliser pour PAL ou
pour NTSC.
Cela fournira la sortie TV dans les modes 16 bpp et 8 bpp suivants :
NTSC 320x240, 640x480 et peut être aussi 800x600.PAL 320x240, 400x300, 640x480, 800x600.le mode 512x384 n'est pas supporté par le BIOS. Vous devez redimmensionner
l'image à une résolution différente pour activer la sortie TV. Si vous voyez
une image sur l'écran en 640x480 ou en 800x600 mais pas en 320x240 ou autre
résolution plus faible, vous devez remplacer deux tables dans vbelib.c.
Voir la fonction vbeSetTV pour plus de détails. Veuillez contacter l'auteur dans
ce cas.
Problèmes connus : VESA uniquement, aucun autre contrôle tel que
luminosité, contraste, blacklevel, flickfilter n'est implémenté.