8.2. Xv

Mit XFree86 4.0.2 oder neueren Versionen kannst du die Hardware-YUV-Routinen deiner Grafikkarte mit Hilfe der XVideo-Erweiterungen benutzen. Das ist die Technik, die -vo xv benutzt. Dieser Treiber unterstützt darüber hinaus die Anpassung von Helligkeit/Kontrast/Sättigung etc. (es sei denn, du benutzt den alten und langsamen DirectShow DivX-Codec, welcher diese Anpassungen unabhängig vom Videoausgabetreiber unterstützt). Schau in der Manpage nach.

Um Xv zum Laufen zu bringen, musst du auf die folgenden Punkte achten:

  1. Du musst XFree86 4.0.2 oder eine neuere Version verwenden, da die älteren Versionen XVideo noch nicht kannten.

  2. Deine Grafikkarte muss Hardware-Unterstützung für YUV bieten, was alle modernen Karten tun.

  3. X muss die XVideo-Erweiterung auch tatsächlich laden, was zu Meldungen ähnlich der folgenden führt:

    (II) Loading extension XVideo

    in /var/log/XFree86.0.log

    Anmerkung

    Diese Meldung besagt nur, dass die XFree86-Erweiterung geladen wird. Bei einer guten Installation sollte das immer der Fall sein. Das heißt allerdings noch nicht, dass die XVideo-Unterstützung der Grafikkarte auch geladen wurde!

  4. Deine Karte muss unter Linux Xv-Unterstützung haben. Du kannst dich dessen mit xvinfo vergewissern, das Teil der XFree86-Distribution ist. Es sollte einen längeren Text ausgeben, der ungefähr so aussieht:

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

    Damit MPlayer Xv benutzen kann, müssen die Pixelformate YUY2 packed und YV12 planar unterstützt werden.

  5. Stelle als letztes sicher, dass MPlayer mit Unterstützung für Xv compiliert wurde. configure gibt eine entsprechende Meldung aus. Führe den Befehl mplayer -vo help | grep xv aus. Wurde Unterstützung für Xv eingebaut, sollte eine ähnliche Meldung wie diese erscheinen:

    xv      X11/Xv

8.2.1. 3dfx-Karten

Ältere 3dfx-Treiber hatten bekanntermaßen Probleme mit der XVideo-Beschleuningung, die weder YUY2 noch YV12 unterstützte. Stelle sicher, dass du XFree86 Version 4.2.0 oder neuer verwendest, da diese Versionen mit YV12 und YUY2 keine Probleme haben, während frühere Versionen, auch 4.1.0, bei YV12 abgestürzen. Wenn du merkwürdige Effekte bei der Verwendung von -vo xv bemerkst, dann probier aus, ob mit SDL, das ebenfalls XVideo nutzen kann, diese Effekte verschwinden. In der SDL stehen Details darüber.

Alternativ kannst du auch den NEUEN tdfxfb-Treiber mit -vo tdfxfb verwenden! Lies dazu die tdfxfb-Sektion.

8.2.2. S3-Karten

S3 Savage3D-Karten sollten problemlos funktionieren, aber bei Savage4- Chips solltest du XFree86 4.0.3 oder neuer verwenden. Probier bei Problemen den 16bpp-Farbmodus aus. Und der S3 Virge... Es gibt für ihn zwar Xv- Unterstützung, aber die Karte selbst ist so langsam, dass du sie besser verkaufst.

Es gibt inzwischen einen nativen Framebuffer-Treiber für S3 Virge-Karten, ähnlich tdfxfb. Mache die Einstellungen (hänge z.B. "vga=792 video=vesa:mtrr" an die Kernelkommandozeile an) und benutze -vo s3fb (-vf yuy2 und -dr helfen auch).

Anmerkung

Momentan ist nicht ganz klar, welche Savage-Modelle keine Unterstützung für YV12 in Hardware haben, sodass bei ihnen der Treiber diese Konvertierung sehr langsam vornimmt. Hast du deine Karte in Verdacht, dann besorg dir einen neueren Treiber, oder frag auf der MPlayer-Users-Mailingliste freundlich nach einem Treiber, der MMX/3DNow unterstützt.

8.2.3. nVidia-Karten

nVidia ist für Linux keine optimale Wahll. XFree86's Open-Source-Treiber unterstützt die meisten dieser Karten, jedoch musst du in einigen Fällen die binären Closed-Source-Treiber von nVidia verwenden, verfügbar auf der nVidia-Webseite. Du brauchst diese Treiber immer, wenn du zusätzlich 3D-Beschleunigung haben willst.

Riva128-Karten bieten nicht einmal mit den binären nVidia-Treibern XVideo-Unterstützung (beklag dich bei nVidia).

Wie auch immer, MPlayer enthält einen VIDIX -Treiber für die meisten nVidia-Karten. Er ist aktuell in der Beta-Phase und besitzt einige Nachteile. Mehr Informationen findest du in der nVidia-VIDIX-Sektion.

8.2.4. ATI-Karten

Die GATOS-Treiber, die du einsetzen solltest, sofern du keine Rage128- oder Radeon-Karte hast, haben per Voreinstellung VSYNC angeschaltet. Dies bedeutet, dass die Decodiergeschwindigkeit (!) zur Bildwiederholrate des Monitors synchronisiert wird. Wenn dir die Wiedergabe langsam vorkommt, dann versuche, irgendwie VSYNC abzuschalten, oder setze die Bildwiederholrate des Monitors auf n * (fps des Films) Hz.

Radeon VE - wenn du X benötigst, verwende XFree86 4.2.0 oder höher für diese Karte. Außerdem gibt es keine Unterstützung für den TV-Ausgang. Natürlich bekommst du mit MPlayer Hardware-beschleunigte Wiedergabe, das ganze wahlweise mit oder ohne TV-Ausgang, und es werden dabei nicht einmal weitere Bibliotheken oder X selber benötigt. Lies dazu die VIDIX-Sektion.

8.2.5. NeoMagic-Karten

Diese Chips befinden sich in vielen Laptops. Du musst XFree86 4.3.0 oder höher oder andernfalls die Xv-fähigen Treiber von Stefan Seyfried verwenden. Wähle einfach einen, der zu deiner XFree86-Version passt.

XFree86 4.3.0 beinhaltet die Unterstützung für Xv, Bohdan Horst schickte jetzt einen kleinen Patch auf die XFree86-Quellen, der Framebuffer-Operationen (daher XVideo) bis auf das Vierfache beschleunigt. Der Patch wurde in das XFree86-CVS eingebunden und sollte im nächsten Release nach 4.3.0 vorhanden sein.

Um die Wiedergabe von Video in DVD-Auflösung zu ermöglichen, ändere deine XF86Config wie folgt:

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

8.2.6. Trident-Karten

Wenn du Xv mit einer Trident-Grafikkarte benutzen willst, dann installiere XFree86 4.2.0, sofern Xv nicht schon mit 4.1.0 funktioniert. Version 4.2.0 enthält Unterstützung für Xv im Vollbild für Cyberblade XP-Karten.

Alternativ enthält MPlayer einen VIDIX-Treiber für the Cyberblade/i1-Karten.

8.2.7. Kyro/PowerVR-Karten

Wenn du Xv mit einer Kyro-basierten Karte (wie z.B. der Hercules Prophet 4000XT) verwenden möchstest, dann solltest du die Treiber von der PowerVR-Seite herunterladen.