TrickSpeed - Verständnisfrage

  • Hallo zusammen,


    ein paar Infos zu TrickSpeed hab ich in verschiedenen Threads gefunden, trotzdem fehlt mir der Durchblick.

    In softhddevice-drm-gles funktioniert der Vor- und Rücklauf nicht oder nicht richtig und ich möchte das korrigieren, deshalb meine Fragen.


    Wenn ich in einer laufenden Aufnahme KEY_RIGHT drücke, wird device->TrickSpeed getriggert, was die Wiedergabegeschwindigkeit steuert.

    Jetzt kenne ich http://git.tvdr.de/?p=vdr.git;…5dbebf286f07;hb=HEAD#l762 mit den verschiedenen Zahlen.

    Angenommen ich drücke jetzt 1x KEY_RIGHT, dann wäre ich doch bei FastForward 1x und dem Wert 6. Wenn ich den Kommentar richtig lese, heißt das, dass dieses Frame 6x so lange angezeigt werden soll wie normal, also nicht mehr z.B. 20ms, sondern 120ms.

    Wenn das Frame durch ist, welches Frame soll dann angezeigt werden? Das kann ja nicht das mit dem nächsten PTS sein, sonst würde die Aufnahme ja 6x langsamer laufen als im normalen replay? Kümmert sich VDR drum, das richtige Frame zu schicken, oder muss das Ausgabeplugin Frames überspringen?


    Das wäre mal die grundsätzliche Frage, bevor ich weiter frage ;)


    Aktuell gibt es im Ausgabedevice ein usleep im DisplayThread, was aber dann entsprechend blockiert und auch nicht richtig funktioniert.

    Die anderen Ausgabedevices bauen das anders ein. Soweit ich verstanden habe, wird bei TrickSpeed mit TrickCounter zurückgezählt und solange der nicht 0 ist, wird das aktuelle Frame weiter dargestellt, d.h. z.B. 6x. Wenn TrickCounter auf 0 ist, wird das nächste Frame geholt und TrickCounter wieder zurückgestellt.


    Ich hoffe, meine Frage ist nicht zu kompliziert und jemand kann Licht ins Dunkel bringen. Ich möchte das richtig einbauen...


    Danke

    Andreas

  • Danke dir, das erklärt es. Habe die Stelle im dvbplayer gefunden. Ich denke, das Prinzip habe ich erstmal verstanden, denn FastForward und Backward funktioniert jetzt soweit bei progressivem Material. Vor und zurück aus der Pause noch nicht und interlaced auch noch nicht, wie es aussieht.

    Ich glaube, ich muss da die ganzen Möglichkeiten abgrasen ...

  • Was mir noch nicht klar ist: Schickt vdr bei einfacher Zeitlupe rückwärts jetzt 63 mal das gleiche i-frame, oder ist es Aufgabe des Ausgabedevices, ein einzelnes angeliefertes i-frame 63 mal zu wiederholen?

    Das kommt ja noch aus der Zeit der FF Karten und wurde im dvbsddevice-Plugin so umgesetzt, dass speed (also hier die 63) ein Parameter für das av7110-soezifische ioctl ist, der die Anzahl der Wiederholungen festlegt. Demnach vermute ich, dass letzteres zutrifft.

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Ja, so verstehe ich es. Der VDR schickt das Frame nur 1x, das Ausgabeplugin muss dafür sorgen, dass es oft genug angezeigt wird.

    VDR sorgt in dvbplayer (http://git.tvdr.de/?p=vdr.git;…31aa7822d01a;hb=HEAD#l501) dafür, dass nächste ausgelieferte Frame stimmt.

  • Ein weiteres Problem ist die unterschiedliche GOP-Länge. Ich zitiere mal jojo61:

    Zitat

    VDR sendet tatsählich nur I-Frames beim spulen. Dazu wird dann Trickspeed gesetzt um anzuzeigen wie oft das Frame wiederholt werden soll. Bei MPEG2 funktioniert das auch ganz nett. Aber bei H264 sind die I-Frames doch recht weit auseinander und da rennt dann das Bild sehr schnell. Grund hierfür ist das Trickspeed auf 1 sitzt wenn man kein Multi Speed aktiviert hat. Mit aktiven Multispeed sieht es besser aus weil da Trickspeed mit 6 anfängt (d.h. jedes I-Frame wird 120ms angezeigt) und damit ergibt sich eine sinnvolle Zeitlupe.

    Eigentlich müsste Trickspeed an die Frequenz der I-Frames angepasst werden. D.h. bei Mpeg2 anders als bei h264 sein, wenn man die gleiche Zeitlupe oder Zeitraffer haben will

    VDR1: ACT-620, Asus P8B75-M LX, Intel Core i3-3240, 4 GB DDR3 RAM 1600 MHz, passive Geforce GT1030 von MSI, Sandisk 2TB SSD, 2xWinTV DualHD, Atric-IR-Einschalter. SW: Xubuntu 20.04 auf 64GB Sandisk SSD.

    VDR2: Odroid N2+ mit CoreELEC und Ubuntu in chroot, WinTV DualHD

    VDR3: Tanix TX3 mit CoreELEC und Ubuntu in chroot, WinTV DualHD

  • Ok. Aber das wäre dann Feintuning, denn prinzipiell funktioniert es ja.

    Wenn man möchte, dass das Spulen immer gleich schnell läuft, müsste wohl der VDR core erst etwas rechnen und die Parameter dann an device->TrickSpeed mitgeben, damit das Ausgabedevice richtig darstellt. Dem Ausgabedevice sind ja die GOP-Längen erstmal nicht bekannt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!