|
|
(137 dazwischenliegende Versionen von 57 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. || <tt>http://www.htpc-forum.de/forum/index.php?showtopic=5146&st=0</tt>
| + | |
− | |-
| + | |
− | | || || || || || ||
| + | |
− | |-
| + | |
− | |}
| + | |
− | | + | |
− | | + | |
− | | + | |
− | === Liste der kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung) ===
| + | |
− | | + | |
− | {| class="wikitable"
| + | |
− | |- class="hintergrundfarbe5"
| + | |
− | ! Name !! Hersteller !! Bestellbezeichnung !! Chipsatz !! Interface !! Wo gekauft !! Anmerkung
| + | |
− | |-
| + | |
− | | 8400GS || Sparkle || SF-PC84GS512U2LP || G98 A2 || PCI <tt>nicht PCI-Express</tt>|| Alternate || <tt>Beschreibung bei Alternate falsch: "...G86- Grafikp. ...GPU Takt von 450 MHz..." Real: gpu 567MHz, shader 1400MHz, mem. 400MHz</tt>
| + | |
− | |-
| + | |
− | | 9300GE || OEM-Acer || || G98 A2 || PCI-Express || ebay || <tt>Passive Karte, sollte aktiv gekühlt werden</tt>
| + | |
− | |-
| + | |
− | | 8400GS || EVGA || 256-P2-N729-LR || G86 || PCI-Express || ebay || <tt>Passiv Variante, H264-1080i getestet mit 185er NVidia Treiber OK</tt>
| + | |
− | |-
| + | |
− | | 8500GT || MSI || NX8500GT-TD512 EH || G86 A2 || PCI-Express || alternate || <tt>Passive Karte, sollte aktiv gekühlt werden</tt>
| + | |
− | |-
| + | |
− | | 8400GS || Gainward || [http://www.gainward.com/main/vgapro.php?id=93 8400GS 256MB] / Barcode: 471846200-9733 || G98 A2 || PCI-Express || Conrad Xtreme || <tt>Passive Karte, sollte aktiv gekühlt werden -- auf GPU Takt von 567 MHz achten --</tt >
| + | |
− | |-
| + | |
− | | || || || || || ||
| + | |
− | |-
| + | |
− | | || || || || || ||
| + | |
− | |}
| + | |
− | | + | |
− | == 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. Bei Blockartefakten mit xine:
| + | |
− | Anzahl der Videopuffer höher setzen: "buffer.video_num_buffers" steht bei mir auf 5000.
| + | |
− | | + | |
− | | + | |
− | '''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
| + | |