|
|
(101 dazwischenliegende Versionen von 40 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. DVB-S2) auf die GPU der Grafikkarte ausgelagert werden, die CPU wird damit entlastet. | + | ==Funktion== |
− | Damit können auch ältere VDRs durch Nachrüsten einer Grafikarte 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 || 1100 Mhz || 3-6 || 5-45 || tbd. || [http://www.htpc-forum.de/forum/index.php?showtopic=5146&st=0 htpc-forum.de]
| + | |
− | |-
| + | |
− | | Fujitsu-Siemens 9300GE || AMD X2 5600+ || 2900 Mhz || 3-11 || 7-11 || n/a || n/a
| + | |
− | |-
| + | |
− | | Asus M3N78-EM (onboard GF8300) || AMD LE-1620 || 1 x 2400 MHz || 5-15 || 8-20 || 34 / 44 / 54 || [http://www.vdr-portal.de/board/thread.php?threadid=86279 VDR-Portal]
| + | |
− | |-
| + | |
− | | Asus P5N7A-VM (onboard 9300GE) || Core2Duo 6750 || 2 x 2666 MHz || 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 2000 Mhz || 5 -15 || 9-19 || 30 / 42 / 50 || n/a
| + | |
− | |-
| + | |
− | | Sparkle PCI (SF-PC84GS512U2LP) || Via C3 || 1GHz || || 30% || n/a || [http://www.vdr-portal.de/board/thread.php?threadid=84085&hilight=vdpau&page=13 VDR-Portal]
| + | |
− | |}
| + | |
− | | + | |
− | === Liste der kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung) ===
| + | |
− | | + | |
− | {| class="wikitable"
| + | |
− | |- class="hintergrundfarbe5"
| + | |
− | ! Name !! Hersteller !! Bestellbezeichnung !! Chipsatz !! Memory(MB) !! Interface !! Wo gekauft !! Anmerkung !! ~ Preis
| + | |
− | |-
| + | |
− | | 8400GS || Sparkle || SF-PC84GS512U2LP || G98 A2 || 512 || PCI || Alternate || PCI nicht PCIe! => somit für ältere Rechner geeignet || 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 || || PCIe || ebay || Passive Variante, H264-1080i getestet mit 185er NVidia Treiber OK ||
| + | |
− | |-
| + | |
− | | 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 || || G98b || 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 ||
| + | |
− | |-
| + | |
− | | NVIDIA Geforce 8400GS 512MB || Palit Passiv || || G98 A2 || 512|| PCIe || || Low Profile ||
| + | |
− | |-
| + | |
− | | NVIDA Geforce G100 || Acer || || G98 A2 ||512|| PCIe || || Low Profile ||
| + | |
− | |-
| + | |
− | | || || || || || || ||
| + | |
− | |}
| + | |
− | 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=800959#post800959 Skript zur Installation des neuesten VDPAU und Nvidia-Treibers]
| + | |
− | | + | |
− | == Tipps und Tricks, wenn es mal nicht so läuft: ==
| + | |
− | | + | |
− | '''1. Tuningtips:'''
| + | |
− | | + | |
− | - 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.
| + | |
− | | + | |
− | | + | |
− | | + | |
− | '''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
| + | |
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.
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.