Hallo,
so habe mich jetzt mal ein wenig mit der Problematik der "Hänger" beschäftigt.
Untersucht habe ich das Problem mit einem 15 minütigen Ausschnitt einer 1280x720p Aufnahme aus dem ÖR mit dem sich die Hänger einigermassen verlässlich reproduzieren lassen.
Die Aufnahme wird dabei direkt im xine player abgespielt, ist also unabhängig vom VDR bei der Wiedergabe.
Die Hänger passieren auf meinen Systemen offenbar immer während die Verarbeitung innerhalb einer VDPAU Library-Funktion abläuft. Dabei verteilen sich diese auf unterschiedliche VDPAU Funktionsaufrufe. Das Problem ist also vermutlich im nvidia Treiber zu suchen womit meine Möglichkeiten der Analyse leider enden.
Ich habe im Anhang mal einen Patch gegen die aktuelle hg Version der xine-lib-1.2 angehängt mit dem entsprechende Profiling-Funktionen für die VDPAU-Funktionsaufrufe hinzugefügt werden. Weiterhin modifiziert der Patch auch die Anzahl der vdpau display surfaces die in der vdpau display queue verwendet werden um überhaupt auf langsamen Systemen einen vernüftige Wiedergabe hinzubekommen. (Die Verbesserung ist auch schon lange im bekannten vdpau extensions patch von mir enthalten)
Im xine log werden mit diesem Patch jetzt alle paar Minuten Statistiken über die Zeitdauer diverser VDPAU-Funktionsaufrufe ausgegeben. Treten ungewöhnliche Peaks (z.B. bei den Hängern) auf werden diese zusätzlich ausgegeben.
Es wäre schön wenn Ihr auch mal mit diesem Patch testet um zu sehen, ob die Probleme auf euren Systemen in ähnlicher weise wie bei mir auftreten. Die xine logs dann bitte in diesem Thread veröffentlichen.
Meine Testumgebung ist:
nvidia Treiber 256.35, neuste xine-lib-1.2 (nur mit dem profiling patch versehen) und xine-ui hg version
Systeme siehe Signatur
Wer meine Testaufnahme probieren möchte schicke mir bitte eine PM.
So sieht z.B. ein Hänger im xine log aus:
video_out_vdpau: (vdpau_display_frame:1813) peak: 1,431 ms avg: 0,043 ms calls: 9000
video_out_vdpau: (vdpau_display_frame:1817) peak: 0,546 ms avg: 0,006 ms calls: 9000
video_out: Verwerfe Bild mit pts 36585243, weil es zu alt ist (Unterschied: 1986).
vdpau_h264: (vdpau_decoder_render:590) peak: 75,813 ms avg: 0,204 ms calls: 3316
vdpau_h264: (vdpau_decoder_render:590) peak: 66,039 ms avg: 37,925 ms calls: 2
200 Bilder angezeigt, 0 Bilder ÃŒbersprungen, 1 Bilder verworfen
video_out: Verwerfe Bild mit pts 42530581, weil es zu alt ist (Unterschied: 3316).
vdpau_h264: (vdpau_decoder_render:590) peak: 64,815 ms avg: 0,078 ms calls: 3302
vdpau_h264: (vdpau_decoder_render:590) peak: 67,507 ms avg: 32,422 ms calls: 2
200 Bilder angezeigt, 0 Bilder ÃŒbersprungen, 1 Bilder verworfen
video_out_vdpau: (vdpau_display_frame:1701) peak: 0,140 ms avg: 0,029 ms calls: 9000
video_out_vdpau: (vdpau_display_frame:1813) peak: 1,418 ms avg: 0,043 ms calls: 9000
video_out_vdpau: (vdpau_display_frame:1817) peak: 0,832 ms avg: 0,006 ms calls: 9000
vdpau_h264: (vdpau_decoder_render:590) peak: 38,341 ms avg: 0,064 ms calls: 9000
vdpau_h264: (vdpau_decoder_render:590) peak: 178,066 ms avg: 0,046 ms calls: 1381
vdpau_h264: (vdpau_decoder_render:590) peak: 200,681 ms avg: 61,069 ms calls: 3
video_out: Verwerfe Bild mit pts 61254186, weil es zu alt ist (Unterschied: 4064).
video_out: Verwerfe Bild mit pts 61255972, weil es zu alt ist (Unterschied: 2478).
video_out: Verwerfe Bild mit pts 61257759, weil es zu alt ist (Unterschied: 2784).
200 Bilder angezeigt, 0 Bilder ÃŒbersprungen, 3 Bilder verworfen
video_out_vdpau: (vdpau_display_frame:1701) peak: 0,165 ms avg: 0,007 ms calls: 9000
video_out_vdpau: (vdpau_display_frame:1813) peak: 0,433 ms avg: 0,043 ms calls: 9000
video_out_vdpau: (vdpau_display_frame:1817) peak: 0,132 ms avg: 0,006 ms calls: 9000
video_out: Verwerfe Bild mit pts 50526844, weil es zu alt ist (Unterschied: 15611406).
200 Bilder angezeigt, 0 Bilder ÃŒbersprungen, 1 Bilder verworfen
Display More
Die Funktion vdpau_decoder_render:590 braucht hier zu viel Laufzeit.
- durchflieger