Nachdem verschiedentlich (wohl zu Recht) moniert wurde, daß das Schnittergebnis von VDR nicht optimal ist, habe ich mich mal mit einer Möglichkeit befaßt, die Timestamps beim Schneiden zu korrigieren. Herausgekommen ist dabei beiliegender Patch, den ich euch mal bitten würde, auszuprobieren. Er macht noch einige Debug-Ausgaben und ist insgesamt noch sehr roh. Insbesondere funktioniert er nur für TS-Aufnahmen, nicht für PES!
Dabei passiert folgendes:
- es wird der höchste zuletzt gesehene Wert des PTS für die Video-PID gemerkt
- am Beginn jeder Sequenz wird ein Offset berechnet, der dann von allen künftigen PTS-Werten abgezogen wird (der Einfachheit halber ist der Offset negativ und wird addiert, damit kann der 33-Bit-Überlauf einfacher gehandhabt werden)
- mit diesem Offset werden auch die DTS- und ESCR-Werte aller PIDs beaufschlagt
- funktioniert auch mit Untertiteln
Nach ersten Tests scheint beim Abspielen mit Kaffeine und auch der TT S2-6400 der Übergang an den Schnittstellen etwas "sanfter" zu sein. Eine kurze Klötzchenbildung gibt es aber immer noch. Beim Abspielen einer geschnittenen Aufnahme auf einem Mac mini kommt dieser nach der ersten Schnittstelle allerdings nach wie vor total außer Tritt.
Für mich ergeben sich momentan folgende Fragen:
- In der vorletzten Spalte der Debug-Ausgaben wird die Differenz zwischen den PTS-Werten je zweier aufeinanderfolgender I-Frames aufgelistet. An der Schnittstelle weicht dieser Wert vom Normalwert ab, wie etwa in
PID 255 C0 PTS 271520114 last 271509314 DTS 271509314 ESCR -1 0 271520114 43200 3600
PID 255 C0 PTS 271563314 last 271552514 DTS 271552514 ESCR -1 0 271563314 43200 3600
PID 255 C0 PTS 272124914 last 271595714 DTS 272114114 ESCR -1 8589408992 271599314 36000 3600
PID 255 C0 PTS 272168114 last 272157314 DTS 272157314 ESCR -1 8589408992 271642514 43200 3600
PID 255 C0 PTS 272211314 last 272200514 DTS 272200514 ESCR -1 8589408992 271685714 43200 3600
Leider finde ich nicht heraus, woran das liegt. Vielleicht ein Denkfehler bei der Offset-Berechnung?
- Zuerst hatte ich nur die PTS-Werte korrigiert, und als damit das Außer-Tritt-geraten auf dem Mac immer noch auftrat, habe ich die DTS-Werte auch noch korrigiert, was aber keinen Unterschied gemacht hat. Schließlich habe ich noch Code für die ESCR-Werte eingebaut, aber in den Aufnahmen, mit denen ich getestet habe, kommt dieser Wert nicht vor.
Gibt es evtl. noch andere Timestamps, die korrigiert werden müssten?
Bitte schaut euch das mal genau an und laßt mich wissen, ob dieser Ansatz überhaupt Sinn macht, wo Fehler stecken könnten, und was evtl. noch berücksichtigt werden müsste.
Klaus