VDPAU

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Tipps und Tricks, wenn es mal nicht so läuft:)
(Tipps und Tricks, wenn es mal nicht so läuft:)
Zeile 206: Zeile 206:
 
  xineliboutput.X11.WindowWidth = 1920
 
  xineliboutput.X11.WindowWidth = 1920
  
2.2 wichtige Parameter der config_xineliboutput (Deinterlace-Mode => temporal):
+
'''2.3 wichtige Parameter der config_xineliboutput (Deinterlace-Mode => temporal):'''
  
 
Wie man sieht muss man nicht sehr viel bei gestooptem VDR in der Datei anpassen.
 
Wie man sieht muss man nicht sehr viel bei gestooptem VDR in der Datei anpassen.

Version vom 21. März 2009, 17:44 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. DVB-S2) auf die GPU der Grafikkarte ausgelagert werden, die CPU wird damit entlastet. Damit können auch ältere VDRs durch Nachrüsten einer Grafikarte HD-Inhalte wiedergeben.

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

Inhaltsverzeichnis


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.


Liste der kompatiblen Grafikkarten (Bitte genaue Herstellerbezeichung, bzw. Produktbeschreibung)

Name Hersteller Bestellbezeichnung Chipsatz Interface Wo gekauft Anmerkung
8400GS Sparkle SF-PC84GS512U2LP G98 A2 PCI nicht PCI-Express Alternate Beschreibung bei Alternate falsch: "...G86- Grafikp. ...GPU Takt von 450 MHz..." Real: gpu 567MHz, shader 1400MHz, mem. 400MHz
9300GE OEM-Acer G98 A2 PCI-Express ebay Passive Karte, sollte aktiv gekühlt werden
8400GS EVGA 256-P2-N729-LR G86 PCI-Express ebay Passiv Variante, H264-1080i getestet mit 185er NVidia Treiber OK
8500GT MSI NX8500GT-TD512 EH G86 A2 PCI-Express alternate Passive Karte, sollte aktiv gekühlt werden

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. 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 gestooptem 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