|
|
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) |
Zeile 2: |
Zeile 2: |
| | | |
| ==Funktion== | | ==Funktion== |
− | Mit Hilfe dieser Schnittstelle kann das Dekodieren, Deinterlacen und Skalieren von digitalem Video durch die GPU der Grafikkarte unterstützt werden, die CPU wird bei der Wiedergabe entlastet. | + | 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. |
| | | |
| ==VDPAU Linux Software== | | ==VDPAU Linux Software== |
Zeile 15: |
Zeile 15: |
| | | |
| == Grafikkartenauswahl == | | == Grafikkartenauswahl == |
− | * eine Liste unterstützer Grafikkarten, inklusive OnBoard-Grafikkarten und Mobilgeräten befindet sich [[VDPAU-Grafikkarten|hier]]
| |
− | * Benchmarks zu einigen Grafikkarten befinden sich [[VDPAU-Benchmarks|hier]].
| |
| | | |
− | == Tipps und Tricks, wenn es mal nicht so läuft: ==
| + | 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. |
| | | |
− | ===Tuningtips===
| + | * 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]]. |
− | ;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 == | | == 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]] | | * [[OpenSUSE VDR DVB-S2 HD mittels Xine und VDPAU]] |
| * [[Ubuntu VDR DVB-S2 mittels Xine und VDPAU]] | | * [[Ubuntu VDR DVB-S2 mittels Xine und VDPAU]] |
| | | |
| + | [[Kategorie:VDPAU]] |
| [[Kategorie:Begriffserklärungen]][[Kategorie:HDTV]] | | [[Kategorie:Begriffserklärungen]][[Kategorie:HDTV]] |
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.