VDPAU

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Liste der kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung))
(Liste von kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung))
Zeile 68: Zeile 68:
 
=== Liste von kompatiblen Grafikkarten===
 
=== Liste von kompatiblen Grafikkarten===
 
Ein Verzeichnis von aktuellen Grafikkarten findet sich [[VDPAU-Grafikkarten|hier]]
 
Ein Verzeichnis von aktuellen Grafikkarten findet sich [[VDPAU-Grafikkarten|hier]]
 
=== Liste von kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung) ===
 
 
'''ACHTUNG'''
 
Die Gainward 9500GT 512MB DDR-2 [http://www.gainward.com/main/vgapro.php?id=126 Produktlink] läuft in verschiedenen vdpau-Umgebungen einwandfrei. Andere User berichten von Problemen.
 
Das zugrundeliegende Problem kann mittlerweile behoben sein, so dass ein Betrieb mit der Gainward möglich ist.
 
Weitere Informationen finden sich im VDR-Portal.
 
 
Benchmark Einträge basierend auf dem Nvidia Tool qvdpautest-0.3 http://hftom.free.fr/qvdpautest-0.3.tar.gz von http://www.nvnews.net/vbulletin/showthread.php?t=133465
 
 
{| class="wikitable"
 
|- class="hintergrundfarbe5"
 
!  Name  !! Hersteller  !! Bestellbezeichnung !! Chipsatz  !!    Memory(MB)  !!    Interface      !! Wo gekauft !! Anmerkung !! ~ Preis !! Benchmark
 
|-
 
|  8400GS ||  Sparkle  || SF-PC84GS512U2LP  ||  G98 A2  || 512 || PCI || Alternate  || PCI nicht PCIe! => somit für ältere Rechner geeignet. Achtung: Verbraucht mehr als die PCI-Spec (max. 25W) per PCI-Slot vorsieht || 59,- ||
 
|-
 
|  9300GE ||  OEM-Acer  ||                    ||  G98 A2  || 256 ||  PCIe  ||    ebay  || Passive Karte, sollte aktiv gekühlt werden || ca. 30 Euro ||
 
|-
 
|  9300GS ||  Point of View  ||  OEM Karte, kommt in Bulk Verpackung ohne nähere Modell-Bezeichnung  ||  G98 A1  || 512 ||  PCIe  ||  Alternate  || Passiv gekühlt, blockiert 1 weiteren Slot, wird heiß, auf Luftströmung achten || ~ € 29 ||
 
AMD Sempron(tm) 140 Processor
 
NVIDIA GPU GeForce 9300 GS (G98) at PCI:4:0:0 (GPU-0)
 
VDPAU API version : 0
 
VDPAU implementation : Unknown
 
SURFACE GET BITS: 1063.76 M/s
 
SURFACE PUT BITS: 536.209 M/s
 
MPEG DECODING (1920x1080): 75 frames/s
 
MPEG DECODING (1280x720): 169 frames/s
 
H264 DECODING (1920x1080): 63 frames/s
 
H264 DECODING (1280x720): 118 frames/s
 
VC1 DECODING (1440x1080): 77 frames/s
 
MIXER WEAVE (1920x1080): 208 frames/s
 
MIXER BOB (1920x1080): 323 fields/s
 
MIXER TEMPORAL (1920x1080): 64 fields/s
 
MIXER TEMPORAL + SKIP_CHROMA (1920x1080): 89 fields/s
 
MIXER TEMPORAL_SPATIAL (1920x1080): 21 fields/s
 
MIXER TEMPORAL_SPATIAL + SKIP_CHROMA (1920x1080): 23 fields/s
 
MIXER TEMPORAL_SPATIAL (720x576 video to 1920x1080 display): 85 fields/s
 
|-
 
|  9500GT ||  Gainward  ||  P/N: NE29500THH51-PM8D96 / EAN: 4260183360353  ||  G96 A1 || 512 ||  PCIe  ||  Alternate  || Passiv gekühlt, blockiert 1 weiteren Slot || ~ € 43 ||
 
AMD Athlon(tm) X2 Dual Core Processor BE-2400
 
NVIDIA GPU GeForce 9500 GT (G96) at PCI:2:0:0 (GPU-0)
 
VDPAU API version : 0
 
VDPAU implementation : NVIDIA VDPAU Driver Shared Library  185.18.36  Fri Aug 14 17:50:51 PDT 2009
 
SURFACE GET BITS: 807.818 M/s
 
SURFACE PUT BITS: 434.624 M/s
 
MPEG DECODING (1920x1080): 74 frames/s
 
MPEG DECODING (1280x720): 154 frames/s
 
H264 DECODING (1920x1080): 44 frames/s
 
H264 DECODING (1280x720): 97 frames/s
 
VC1 DECODING (1440x1080): 119 frames/s
 
MIXER WEAVE (1920x1080): 538 frames/s
 
MIXER BOB (1920x1080): 947 fields/s
 
MIXER TEMPORAL (1920x1080): 202 fields/s
 
MIXER TEMPORAL + SKIP_CHROMA (1920x1080): 270 fields/s
 
MIXER TEMPORAL_SPATIAL (1920x1080): 81 fields/s
 
MIXER TEMPORAL_SPATIAL + SKIP_CHROMA (1920x1080): 90 fields/s
 
MIXER TEMPORAL_SPATIAL (720x576 video to 1920x1080 display): 307 fields/s
 
|-
 
|  8400GS ||  EVGA      || 256-P2-N729-LR    ||  G86      || 256 ||  PCIe  ||    ebay  || Passive Variante, H264-1080i getestet mit 185er NVidia Treiber OK , sehr heiß , mindestens größerer Kühlkörper || ca 30 Euro ||
 
SURFACE GET BITS: 728.912 M/s
 
SURFACE PUT BITS: 805.187 M/s
 
MPEG DECODING (1920x1080): 78 pic/s
 
VC1 DECODING (1440x1080): 122 pic/s
 
MIXER WEAVE (1920x1080): 217 frames/s
 
MIXER BOB (1920x1080): 368 fields/s
 
MIXER TEMPORAL (1920x1080): 76 fields/s
 
MIXER TEMPORAL_SPATIAL (1920x1080): 26 fields/s
 
|-
 
|  8500GT ||  MSI      || NX8500GT-TD512 EH  ||  G86 A2  ||512||  PCIe        ||      || Passive Karte, sollte aktiv gekühlt werden  || ||
 
|-
 
|  8400GS || Gainward    || [http://www.gainward.com/main/vgapro.php?id=93 8400GS 256MB] / Barcode: 471846200-9733 ||  G98 A2 || 256 ||  PCIe        || Conrad Xtreme || Low Profile, Passive Karte (sollte aktiv gekühlt werden), 567 MHz, hat HDMI || ca. 35 Euro ||
 
|-
 
|  8400GS || Gainward  || (0094)        || G86 || 512 || PCIe || Kosatec || Passiv, (459 MHz), hat HDMI || ||
 
|-
 
|  9500GT || Gainward  ||        || G96b || 512 || PCIe || ARLT || Passiv,hat HDMI || ||
 
|-
 
|  8400GS || Gainward  || (9726)        || G98 A2 || 512 || PCIe ||  || Passiv, auf 567 MHz achten, hat HDMI (alle Angaben lt. Gainward Support, hab G86 erwischt) || ||
 
|-
 
| 9300GE ||  Fujitsu-Siemens ||                ||  G98 A2  ||  ||  PCIe        ||  ebay    || Passive Karte, wird im offenen Gehäuse mehr als hand warm, eventuell aktiv kühlen. || ||
 
|-
 
|EN8400GS Silent HTP/512M ||ASUS|| 90-C1CKD0-J0UAY00Z || G98 A2|| 512 || PCIe||www.bauers.com||Karte momentan nicht mehr vorrätig; Passivkühlung;Temperatur max 58 °C ||32.-€ ||
 
|-
 
|  NVIDIA Geforce 8400GS 512MB ||  Palit Passiv ||  ||  G98 A2  || 512||  PCIe        ||      || Low Profile || ||
 
|-
 
|  NVIDA Geforce G100 ||  Acer ||      ||  G98 A2  ||512||  PCIe        ||      || Low Profile || ||
 
|-
 
|  8600GT || MSI    ||  ||  G84 A2 || 512 ||  PCIe        ||  || Low Profile, Aktive Karte , 540 MHz, hat HDMI/dvi  || ||
 
|-
 
| 9600GT  || Palit || Palit NE39600TFHD52 ||  G94-65nm  ||  512  || PCIe  || www.e-tec.at || Läuft zwar in einer Desktopworkstation, XBMC funktioniert aber (leichte Tearing-Effekte manchmal, sollte aber ein Treiberproblem sein...) || ab ~70€ (29.7.09) ||
 
|-
 
| 9500GT  || Zotac || Zotac 1024MB 9500GT PCIe ||  G96-CL1-65nm  ||  1024  || PCIe  || [http://www.notebooksbilliger.de/zotac_1024mb_9500gt_pcie?refcampaign_id=45c48cce2e2d7fbdea1afc51c7c6ad26 Link zur Karte] || Karte macht Problemlos temporal_spatial Deinterlacer bei HDTV-Content || ca. 46 € (30.7.09) ||
 
 
GeForce 9500 GT (G96) at PCI:1:0:0 (GPU-0)
 
VDPAU API version : 0
 
VDPAU implementation : Unknown
 
SURFACE GET BITS: 843.3 M/s
 
SURFACE PUT BITS: 566.468 M/s
 
MPEG DECODING (1920x1080): 74 frames/s
 
MPEG DECODING (1280x720): 155 frames/s
 
H264 DECODING (1920x1080): 45 frames/s
 
H264 DECODING (1280x720): 98 frames/s
 
VC1 DECODING (1440x1080): 118 frames/s
 
MIXER WEAVE (1920x1080): 923 frames/s
 
MIXER BOB (1920x1080): 1512 fields/s
 
MIXER TEMPORAL (1920x1080): 292 fields/s
 
MIXER TEMPORAL + SKIP_CHROMA (1920x1080): 398 fields/s
 
MIXER TEMPORAL_SPATIAL (1920x1080): 88 fields/s
 
MIXER TEMPORAL_SPATIAL + SKIP_CHROMA (1920x1080): 95 fields/s
 
MIXER TEMPORAL_SPATIAL (720x576 video to 1920x1080 display): 349 fields/s
 
 
|-
 
|        ||            ||                    ||          ||                      ||            || ||
 
|}
 
Hier gibt es noch eine Liste für MythTV, die sollte auch funktionieren:
 
http://www.mythtv.org/wiki/VDPAU
 
  
 
== VDR Installation / Konfiguration ==
 
== VDR Installation / Konfiguration ==

Version vom 16. November 2009, 14:04 Uhr

VDPAU (Video Decode and Presentation API for Unix) ist eine von NVIDIA entwickelte API.

Mit Hilfe dieser API kann das Dekodieren, Deinterlacen und Skalieren von HD-Inhalten (bspw. h264) auf die GPU der Grafikkarte ausgelagert werden, die CPU wird damit entlastet. Damit können auch ältere VDRs durch Nachrüsten einer Grafikkarte HD-Inhalte wiedergeben.

Die Ausgabe erfolgt dann über die Grafikkarte mit Hilfe des Xine-Plugins oder des xineliboutput-Plugins.

Inhaltsverzeichnis


Grundlagen

Für das Thema Grundlagen wurde ein eigener Artikel erstellt um der Übersichtlichkeit zu dienen.

Hardwareanforderungen und Grafikkartenauswahl

Die API wird von GeForce Karten (PCI & PCIe, kein AGP) ab der 8er Serie unterstützt. NVIDIA kennzeichnet Karten die VDPAU fähig sind mit NVIDIA PureVideo HD aus.


Mainboardchipsätze mit PureVideoHD-Grafik onboard, z.b 8200, 8300, 9300

Kompatible Grafikkarten der 8er Serie ab G86-Chipsatz

Kompatible Grafikkarten der 9er Serie

Links zu technischen Dokumentationen:

NVIDIA Beschreibung von VDPAU

PDF-Liste der NVIDIA Chipsätze für VDPAU

Liste der kompatiblen GPUs und Version des VP: [1]

Empfohlen wird u.a. die G98 GPU mit 512 MB Grafikspeicher. Die Leistung von Geforce 6 und 7 sowie G80 GPUs ist wohl zur Dekodierung von h.264 nicht ausreichend. Nicht unterstützt sind die Ausführungen 8800GTS 320/640MB und die 8800GTX.


Beispielhafte Systeme

Karte CPU CPU-Takt Last-SD (%) Last-HD (%) Verbrauch (idle/SD/HD) Link (Thread)
Albatron GF8600GT PCI S370 Celeron 1,1 GHz 3-6 5-45 tbd. htpc-forum.de
Asus Pundit-AB
+ PNY 8400GS PCI
Celeron 2,4 GHz 5-12 7-20 n/a n/a
Fujitsu-Siemens 9300GE AMD X2 5600+ 2,9 GHz 3-11 7-11 n/a n/a
Asus M3N78-EM
(onboard GF8300)
AMD LE-1620 1 x 2,4 GHz 5-15 8-20 34 / 44 / 54 VDR-Portal
Asus P5N7A-VM
(onboard 9300GE)
Core2Duo 6750 2 x 2,6 GHz 3-14 8-18 32 / 48 / 58 VDR-Portal
Acer-OEM 9300GE Intel Celeron 440 1 x 2 GHz 5 -15 9-19 30 / 42 / 50 n/a
Sparkle PCI
(SF-PC84GS512U2LP)
Via C3 1 GHz 30 n/a VDR-Portal
Acer Revo 3600
VDPAU, OpenSuse 11.1,
mplayer
Intel Atom N230
+ nVidia ION
1,6 GHz 5-20 n/a
Zotac ION A, Ubuntu 9.04,
XBMC
Intel Atom N330
+ nVidia ION
2 x 1,6 GHz <10 <25 23W / 26W / 31W n/a

Liste von kompatiblen Mainboards

Ein Verzeichnis von aktuellen Mainboards (Sortiert nach Hersteller) findet sich hier

Liste von kompatiblen Grafikkarten

Ein Verzeichnis von aktuellen Grafikkarten findet sich hier

VDR Installation / Konfiguration

Software-SVN mit changelog

XINE-VDPAU-Changelog


SVN-Download:

  svn co svn://jusst.de/xine-vdpau



Beispiel einer Installation auf einem Debian-system von xine-vdpau :

1: VDPAU

   svn co svn://jusst.de/xine-vdpau
  • xine-vdpau übersetzen:
  ./autogen.sh && ./configure --prefix=/usr/local && make && make install
  • offizielles xineliboutput-Plugin V1.0.4 (keine CVS-Version) für VDR übersetzen und installieren
  • vdr mit vdr-sxfe starten, so dass bei korrekten HDTV-Einträgen in der channels.conf auch etwas zu sehen ist :-)

Links

  1. VDR-Portal Thread zur Installation eines VDR mit VDPAU
  1. Perl Skript zur Installation des neuesten xine-lib 1.2 mit VDPAU

Tipps und Tricks, wenn es mal nicht so läuft:

1. Tuningtips:

- Bei Klötzchenbildung mit HD-Sendern auf AMD-Systemen (z.B AMD X2-Dualcore und Geforce8200/8300):
   
  Cpu-Takt fest auf 2000MHz einstellen, (Befehl: cpufreq-set -f 2000Mhz)
  und
  in der config_xineliboutput den Wert für:
  # vdpau: HD deinterlace method
  # { bob  temporal  temporal_spatial }, default: 1
  video.output.vdpau_deinterlace_method:bob
  setzen
- Bei Blockartefakten mit xine: 
  Anzahl der Videopuffer höher setzen: "buffer.video_num_buffers" steht bei mir auf 5000.
  Hilft auch bei Meldung (SDTV) "video_out: throwing away image with pts 5988455 because it's too old .."
   buffer.video_num_buffers:2500
- Nur einen ganz schmalen Streifen (ca. 4mm) in der Mitte des Bildschirms (nach Neuinstallation xineliboutput):
  Im OSD unter den Plugin-Einstellungen für xineliboutput einstellen:
  Lokale Einstellungen -> Fenster-Seitenverhältnis auf CenterCutOut stellen. Im OSD speichern und VDR neustarten.

  Oder einfach in setup.conf folgendes einfügen: xineliboutput.DisplayAspect = CenterCutOut
- Mit diesen Einstellungen ist der Ton Synchron auch auf Dolby Sendern:
  # Wenn !=0, immer auf diese Rate anpassen
  # numeric, default: 0
  audio.synchronization.force_rate:48000
  # Resampling benutzen
  # { auto  off  on }, default: 0
  audio.synchronization.resample_mode:on


2. Dokumentation der Einstellungen mit Ausgabe über xineliboutput-1.0.4:

Vorwort:

Der VDR wird komplett über die Runvdr gestartet, in der Runvdr wird die Pluginlist generiert, aus den Parametern der /etc/vdr/sysconfig. Der X-Server wird ebenfalls über die Runvdr gestartet, dazu wird ein separates Skript aufgerufen.

2.1 Startaufruf des VDR, hier mit Ausgabe über xineliboutput:

PLUGINLIST=" \"-Pxineliboutput -l sxfe --video=vdpau --display=:0.1 -p --post tvtime:method=use_vo_driver --audio=alsa:default -f \" ...."

Kurze Erläuterung zu den wichtigen Parametern:

--video=vdpau => bestimmt den Videoausgabetreiber von xineliboutput
--display=0.1 => Ausgabe auf Display 1, bei einer Dualscreenkonfiguration (für z.B. GraphTFT)
--post tvtime:method=use_vo_driver => Ausgabeart für Deinterlacing in Verbindung mit vdpau

2.2 Parameter in der setup.conf für xinelibouput, hier bei Videoausgabemode 1920x1080i = interlaced:

xineliboutput.Audio.Compression = 500
xineliboutput.Audio.Delay = 0
xineliboutput.Audio.Driver = alsa
xineliboutput.Audio.Equalizer = 0 0 0 0 0 0 0 0 0 0
xineliboutput.Audio.Headphone = 0
xineliboutput.Audio.Port = default
xineliboutput.Audio.SoftwareVolumeControl = 0
xineliboutput.Audio.Speakers = Surround 5.1
xineliboutput.Audio.Surround = 0
xineliboutput.Audio.Upmix = 0
xineliboutput.Audio.Visualization = none
xineliboutput.Audio.Visualization.GoomOpts = width=1440,height=768,fps=25
xineliboutput.Decoder.PesBuffers = 900
xineliboutput.DisplayAspect = Pan&Scan
xineliboutput.Frontend = sxfe
xineliboutput.Fullscreen = 1
xineliboutput.Media.BrowseFilesDir = /media
xineliboutput.Media.BrowseImagesDir = /media/filme/21
xineliboutput.Media.BrowseMusicDir = /media/filme1
xineliboutput.Media.CacheImplicitPlaylists = 1
xineliboutput.Media.EnableID3Scanner = 1
xineliboutput.Modeline = 
xineliboutput.OSD.AlphaCorrection = 0
xineliboutput.OSD.AlphaCorrectionAbs = 0
xineliboutput.OSD.Blending = 1
xineliboutput.OSD.BlendingLowRes = 1
xineliboutput.OSD.ExtSubSize = -1
xineliboutput.OSD.HideMainMenu = 0
xineliboutput.OSD.LayersVisible = 4
xineliboutput.OSD.Scaling = 2
xineliboutput.Playlist.Album = 1
xineliboutput.Playlist.Artist = 1
xineliboutput.Playlist.Tracknumber = 1
xineliboutput.Post.denoise3d.chroma = 30
xineliboutput.Post.denoise3d.Enable = 0
xineliboutput.Post.denoise3d.luma = 40
xineliboutput.Post.denoise3d.time = 60
xineliboutput.Post.pp.Enable = 0
xineliboutput.Post.pp.Mode = de
xineliboutput.Post.pp.Quality = 3
xineliboutput.Post.unsharp.chroma_amount = 0
xineliboutput.Post.unsharp.chroma_matrix_height = 3
xineliboutput.Post.unsharp.chroma_matrix_width = 3
xineliboutput.Post.unsharp.Enable = 0
xineliboutput.Post.unsharp.luma_amount = 0
xineliboutput.Post.unsharp.luma_matrix_height = 5
xineliboutput.Post.unsharp.luma_matrix_width = 5
xineliboutput.Remote.AllowHttp = 1
xineliboutput.Remote.AllowHttpCtrl = 0
xineliboutput.Remote.AllowRtsp = 1
xineliboutput.Remote.AllowRtspCtrl = 0
xineliboutput.Remote.Iface = 
xineliboutput.Remote.Keyboard = 1
xineliboutput.Remote.ListenPort = 37890
xineliboutput.Remote.LocalIP = 
xineliboutput.Remote.Rtp.Address = 224.0.1.9
xineliboutput.Remote.Rtp.AlwaysOn = 0
xineliboutput.Remote.Rtp.Port = 37890
xineliboutput.Remote.Rtp.SapAnnouncements = 1
xineliboutput.Remote.Rtp.TTL = 1
xineliboutput.Remote.UseBroadcast = 1
xineliboutput.Remote.UseHttp = 1
xineliboutput.Remote.UsePipe = 1
xineliboutput.Remote.UseRtp = 1
xineliboutput.Remote.UseTcp = 1
xineliboutput.Remote.UseUdp = 1
xineliboutput.RemoteMode = 0
xineliboutput.Video.AspectRatio = 0
xineliboutput.Video.AutoCrop = 1
xineliboutput.Video.AutoCrop.AutoDetect = 1
xineliboutput.Video.AutoCrop.DetectSubs = 0
xineliboutput.Video.AutoCrop.FixedSize = 0
xineliboutput.Video.AutoCrop.SoftStart = 1
xineliboutput.Video.Brightness = -1
xineliboutput.Video.Contrast = -1
xineliboutput.Video.Deinterlace = none
xineliboutput.Video.DeinterlaceOptions = method=use_vo_driver,cheap_mode=1,pulldown=none,framerate_mode=full,judder_correction=1,use_progressive_frame_flag=1,chroma_filter=0,enabled=1
xineliboutput.Video.Driver = auto
xineliboutput.Video.FieldOrder = 0
xineliboutput.Video.HUE = -1
xineliboutput.Video.IBPTrickSpeed = 1
xineliboutput.Video.MaxTrickSpeed = 12
xineliboutput.Video.Overscan = 0
xineliboutput.Video.Port = :0.1
xineliboutput.Video.Saturation = -1
xineliboutput.Video.Scale = 1
xineliboutput.Video.SwScale = 0
xineliboutput.Video.SwScale.Aspect = 1
xineliboutput.Video.SwScale.Downscale = 1
xineliboutput.Video.SwScale.Height = 1080
xineliboutput.Video.SwScale.Resize = 1
xineliboutput.Video.SwScale.Width = 1920
xineliboutput.VideoModeSwitching = 1
xineliboutput.X11.UseKeyboard = 1
xineliboutput.X11.WindowHeight = 1080
xineliboutput.X11.WindowWidth = 1920

2.3 wichtige Parameter der config_xineliboutput (Deinterlace-Mode => temporal):

Wie man sieht muss man nicht sehr viel bei gestopptem VDR in der Datei anpassen.


.....
# vdpau: HD deinterlace method
# { bob  temporal  temporal_spatial }, default: 1
#video.output.vdpau_deinterlace_method:temporal

# vdpau: Try to recreate progressive frames from pulldown material
# bool, default: 1
#video.output.vdpau_enable_inverse_telecine:1
# vdpau: disable deinterlacing when progressive_frame flag is set
# bool, default: 0
#video.output.vdpau_honor_progressive:0

# vdpau: disable advanced deinterlacers chroma filter
# bool, default: 0
#video.output.vdpau_skip_chroma_deinterlace:0

# Vertikale Bildposition im Ausgabefenster
# [0..100], default: 50
#video.output.vertical_position:50
video.output.xv_deinterlace_method:bob 

# Choose speed over specification compliance
# bool, default: 0
#video.processing.ffmpeg_choose_speed_over_accuracy:0
# Qualität der MPEG-4 Nachbearbeitungsstufe
# [0..6], default: 3
video.processing.ffmpeg_pp_quality:0
# Skip loop filter
# { default  none  nonref  bidir  nonkey  all }, default: 0
video.processing.ffmpeg_skip_loop_filter:all
# FFmpeg video decoding thread count
# numeric, default: 1
video.processing.ffmpeg_thread_count:2