VDPAU

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Beispielhafte Systeme)
K
 
(72 dazwischenliegende Versionen von 22 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
VDPAU (Video Decode and Presentation API for Unix) ist eine von NVIDIA entwickelte API.
+
'''VDPAU steht für {{wikipedia|Video Decode and Presentation API for Unix}} und ist eine von NVIDIA entwickelte Schnittstelle zur Grafikkarte.
  
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.
+
==Funktion==
Damit können auch ältere VDRs durch Nachrüsten einer Grafikkarte HD-Inhalte wiedergeben.
+
Mit Hilfe dieser Treiber API kann das Dekodieren, Deinterlacen und Skalieren von digitalem Video durch die GPU der Grafikkarte unterstützt werden, die CPU wird bei der Wiedergabe entlastet.
+
Die Ausgabe erfolgt dann über die Grafikkarte mit Hilfe des [[Xine-plugin|Xine-Plugins]] oder des [[Xineliboutput-plugin|xineliboutput-Plugins]].
+
  
__TOC__
+
==VDPAU Linux Software==
 +
* [[VDR]] mit einem der folgende Ausgabe-Plugins
 +
** [[Softhddevice-plugin]]
 +
** [[Xineliboutput-plugin]]
 +
** [[Xine-plugin]]
 +
* [[XBMC]]
 +
* libxine
 +
* mplayer
 +
* VLC
  
== Hardwareanforderungen und Grafikkartenauswahl ==
+
== Grafikkartenauswahl ==
  
Die API wird von GeForce Karten (PCI & PCIe, kein AGP) ab der 8er Serie unterstützt.
+
Es gibt vier verschiedene VDPAU Feature Sets, modernere GPUs unterstützen deutlich mehr Funktionen als ältere. Seit 04/2013 unterstützen auch die Treiber neuerer AMD-Grafikkarten VDPAU.
NVIDIA kennzeichnet Karten die VDPAU fähig sind mit NVIDIA PureVideo HD aus.
+
  
 +
* eine Liste unterstützer Grafikkarten, inklusive OnBoard-Grafikkarten und Mobilgeräten sowie eine Übersicht über die vier VDPAU Feature Sets befindet sich [[VDPAU-Grafikkarten|hier]].
 +
* Benchmarks zu einigen Grafikkarten befinden sich [[VDPAU-Benchmarks|hier]].
  
[http://de.wikipedia.org/wiki/Nvidia_nForce_700 Mainboardchipsätze mit PureVideoHD-Grafik onboard, z.b 8200, 8300, 9300]
+
== Links ==
 +
* [[VDPAU-Grafikkarten|Liste der Grafikkarten mit VDPAU Unterstützung]]
 +
* [[:Kategorie:Ubuntu_HD_VDR_mittels_SoftHDDevice_und_VDPAU|Ubuntu HD VDR mittels SoftHDDevice und VDPAU]]
 +
* [[OpenSUSE VDR DVB-S2 HD mittels Xine und VDPAU]]
 +
* [[Ubuntu VDR DVB-S2 mittels Xine und VDPAU]]
  
[http://de.wikipedia.org/wiki/Nvidia-Geforce-8-Serie Kompatible Grafikkarten der 8er Serie ab G86-Chipsatz]
+
[[Kategorie:VDPAU]]
 
+
[[Kategorie:Begriffserklärungen]][[Kategorie:HDTV]]
[http://de.wikipedia.org/wiki/Nvidia-Geforce-9-Serie Kompatible Grafikkarten der 9er Serie]
+
 
+
Links zu technischen Dokumentationen:
+
 
+
[ftp://download.nvidia.com/XFree86/vdpau/doxygen/html/index.html NVIDIA Beschreibung von VDPAU]
+
 
+
[http://www.nvidia.com/object/IO_43029.html PDF-Liste der NVIDIA Chipsätze für VDPAU]
+
 
+
Liste der kompatiblen GPUs und Version des VP:
+
[http://en.wikipedia.org/wiki/NVIDIA_PureVideo]
+
 
+
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 ===
+
 
+
{| class="wikitable"
+
|- class="hintergrundfarbe5"
+
!  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. || [http://www.htpc-forum.de/forum/index.php?showtopic=5146&st=0 htpc-forum.de]
+
|-
+
|  Asus Pundit-AB<br>+ 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<br>(onboard GF8300) || AMD LE-1620  || 1 x 2,4 GHz || 5-15 || 8-20 || 34 / 44 / 54 || [http://www.vdr-portal.de/board/thread.php?threadid=86279 VDR-Portal]
+
|-
+
|  Asus P5N7A-VM<br>(onboard 9300GE) || Core2Duo 6750 || 2 x 2,6 GHz || 3-14 || 8-18 || 32 / 48 / 58 || [http://www.vdr-portal.de/board/thread.php?threadid=84480 VDR-Portal]
+
|-
+
|  Acer-OEM 9300GE || Intel Celeron 440 || 1 x 2 GHz || 5 -15 || 9-19 || 30 / 42 / 50 || n/a
+
|-
+
|  Sparkle PCI<br>(SF-PC84GS512U2LP)  ||  Via C3  || 1 GHz ||  ||  30 ||  n/a  || [http://www.vdr-portal.de/board/thread.php?threadid=84085&hilight=vdpau&page=13 VDR-Portal]
+
|-
+
|  Acer Revo 3600<br>VDPAU, OpenSuse 11.1,<br>mplayer ||  Intel Atom N230<br>+ nVidia ION  || 1,6 GHz ||  || 5-20 ||  n/a  ||
+
|-
+
| Zotac ION A, Ubuntu 9.04,<br>XBMC || Intel Atom N330<br>+ nVidia ION || 2 x 1,6 GHz || <10 || <25 || 23W / 26W / 31W || n/a
+
|}
+
 
+
=== Liste der kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung) ===
+
 
+
'''ACHTUNG''' definitv nicht läuft die Gainward 9500GT 512MB DDR-2 [http://www.gainward.com/main/vgapro.php?id=126 Produktlink]
+
 
+
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 ||
+
|-
+
|  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  || ||
+
|-
+
|        ||            ||                    ||          ||                      ||            || ||
+
|}
+
Hier gibt es noch eine Liste für MythTV, die sollte auch funktionieren:
+
http://www.mythtv.org/wiki/VDPAU
+
 
+
== VDR Installation / Konfiguration ==
+
 
+
=== Software-SVN mit changelog ===
+
 
+
 
+
[http://www.jusst.de/vdpau/log.php?repname=xine-vdpau&path=&rev=0&isdir=1 XINE-VDPAU-Changelog]
+
 
+
 
+
SVN-Download:
+
 
+
  svn co svn://jusst.de/xine-vdpau
+
 
+
 
+
Beispiel einer Installation auf einem Debian-system von xine-vdpau :
+
 
+
1: VDPAU
+
 
+
* NVIDIA Treiber 180.16 installieren (oder neuer) [ftp://download.nvidia.com/XFree86/ Nvidia-FTP-Server zum Download der aktuellen Treiber]
+
* xine-lib mit VDPAU-Unterstützung auschecken (vom 21.12.2008):
+
    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 ===
+
 
+
# [http://www.vdr-portal.de/board/thread.php?threadid=84255 VDR-Portal Thread zur Installation eines VDR mit VDPAU]
+
 
+
# [http://www.vdr-portal.de/board/thread.php?postid=817498#post817498 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.
+
 
+
- 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
+

Aktuelle Version vom 6. Oktober 2014, 15:23 Uhr

VDPAU steht für Video Decode and Presentation API for Unix und ist eine von NVIDIA entwickelte Schnittstelle zur Grafikkarte.

Inhaltsverzeichnis

[Bearbeiten] Funktion

Mit Hilfe dieser Treiber API kann das Dekodieren, Deinterlacen und Skalieren von digitalem Video durch die GPU der Grafikkarte unterstützt werden, die CPU wird bei der Wiedergabe entlastet.

[Bearbeiten] VDPAU Linux Software

[Bearbeiten] Grafikkartenauswahl

Es gibt vier verschiedene VDPAU Feature Sets, modernere GPUs unterstützen deutlich mehr Funktionen als ältere. Seit 04/2013 unterstützen auch die Treiber neuerer AMD-Grafikkarten VDPAU.

  • eine Liste unterstützer Grafikkarten, inklusive OnBoard-Grafikkarten und Mobilgeräten sowie eine Übersicht über die vier VDPAU Feature Sets befindet sich hier.
  • Benchmarks zu einigen Grafikkarten befinden sich hier.

[Bearbeiten] Links