VDPAU

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Hardwareanforderungen und Grafikkartenauswahl)
Zeile 16: Zeile 16:
 
__TOC__
 
__TOC__
  
== Hardwareanforderungen und Grafikkartenauswahl ==
+
== Grafikkartenauswahl ==
 
+
* eine Liste unterstützer Grafikkarten, inklusive OnBoard-Grafikkarten und Mobilgeräten befindet sich [[VDPAU-Grafikkarten|hier]]
Die API wird von GeForce Karten ab der 8er Serie unterstützt.
+
* Benchmarks zu einigen Grafikkarten befinden sich [[VDPAU-Benchmarks|hier]].
NVIDIA bewirbt VDPAU-fähige Grafikkarten mit NVIDIA PureVideo HD.
+
 
+
* {{wikipedia2|Nvidia_nForce_700|Mainboardchipsätze mit PureVideoHD-Grafik onboard, z.b 8200, 8300, 9300}}
+
* {{wikipedia2|Nvidia-Geforce-8-Serie|Kompatible Grafikkarten der 8er Serie ab G86-Chipsatz}}
+
* {{wikipedia2|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: {{wikipedia|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 M3N78-EM<br>(onboard GF8300)<br/>(hohe Grundlast durch 5 virt. Maschinen<br/>sowie 2x DVB-S2 PCI und 2x DualTuner DVB-T) || AMD X2 4850  || 2 x 2,5 GHz || 5-15 || 8-20 || 60 / 66 / 70 || n/a
+
|-
+
|  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 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
+
|-
+
| Asus M4N78-VM<br>(onboard GF8200)<br> || AMD Sempron 140 || 0,8-2,7Ghz || 5-12 || 7-14 || 38W / 47W / 55W || n/a
+
|}
+
 
+
=== Liste von kompatiblen Mainboards (im Aufbau) ===
+
Ein Verzeichnis von aktuellen Mainboards (Sortiert nach Hersteller) findet sich [[VDPAU-Mainboards|hier]]
+
 
+
=== Liste von kompatiblen Grafikkarten===
+
Ein Verzeichnis von aktuellen Grafikkarten findet sich [[VDPAU-Grafikkarten|hier]]
+
  
 
== Tipps und Tricks, wenn es mal nicht so läuft: ==
 
== Tipps und Tricks, wenn es mal nicht so läuft: ==

Version vom 14. August 2013, 15:30 Uhr

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

Mit Hilfe dieser Schnittstelle kann das Dekodieren, De-Interlacen und Skalieren von SD und HD-Inhalten durch die GPU der Grafikkarte unterstützt werden, die CPU wird bei der Wiedergabe entlastet.

Folgende Linux Software unterstützt bereits VDPAU:


Inhaltsverzeichnis


Grafikkartenauswahl

  • eine Liste unterstützer Grafikkarten, inklusive OnBoard-Grafikkarten und Mobilgeräten befindet sich hier
  • Benchmarks zu einigen Grafikkarten befinden sich hier.

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

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 setzen:
  # vdpau: HD deinterlace method
  # { bob  temporal  temporal_spatial }, default: 1
  video.output.vdpau_deinterlace_method:bob
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

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

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

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

Überprüfen ob VDPAU aktiv ist

Bei laufendem vdr in eine Konsole eingeben:

watch -t fold -100 /dev/vcs10

Dann mal das Programm umschalten. Es müssen Meldungen mit vdpau auftauchen. Es wird z.B. angezeigt, welches Deinterlacing gerade verwendet wird.

Temperatur der GPU überwachen

Im intervall von 1s wird die Temperatur auf der Konsole ausgegeben

watch --i=1 DISPLAY=:1 nvidia-settings -tq gpucoretemp

welche Nvidia Treiber Version wird verwendet?

Die verwendete NVidia Treiber Version ausgeben

DISPLAY=:1 nvidia-settings -q NvidiaDriverVersion

Links