Schneller Vor-/Rücklauf mit Repeat "läuft nach"

  • VDR 1.7.36 mit TT-S2 6400 als Ausgabedevice, Fernbedienung mittels LIRC über IR-Receiver.


    Wenn ich während der Wiedergabe die "Right"-Taste drücke und wieder loslasse, läuft das Video schnell vorwärts. Drücke ich "Right" erneut, geht es mit normaler Geschwindigkeit weiter, und zwar ziemlich genau an der Stelle, an der ich während des schnellen Vorlaufs die Taste gedrückt hatte (zu sehen an der Fortschrittsanzeige).


    Drücke ich dagegen "Right" und halte sie gedrückt so lange ich es vorlaufen lassen will, und lasse dann los, dann läuft das Video noch einige Sekunden (gemäß Fortschrittsanzeige) schnell weiter, ehe es in die normale Geschwindigkeit zurückfällt.


    Eigentlich sollten sich diese beiden Bedienweisen völlig gleich verhalten, und ich habe auch im Programmablauf durch Testausgaben in beiden Fällen keine Unterschiede finden können. Dennoch ist das unterschiedliche Verhalten reproduzierbar.
    Die Fernbedienung über LIRC funktioniert einwandfrei und liefert auch alle Codes wie erwartet, also mit entsprechenden k_Repeat und k_Release Flags.


    Ich stehe vor einem Rätsel - falls also jemand Lust hat, "mitzuknobeln"... ;-)
    Wobei es zunächst mal interessant wäre zu erfahren, ob jemand das beschriebene Verhalten nachvollziehen kann, und ob es auch mit anderer Hardware (bzw. Software-Ausgabe) auftritt.


    Klaus

  • Hat die serielle Schnittstelle Empfangspuffer (UART -> Treiber -> LIRC),
    so dass noch Tastendrücke nachlaufen?

    vdr 1.7.23 suse 12.1 64 Bit 1xTTS2-6400 HD-USB: 24TB
    vdr 1.7.23 suse 11.3 64 Bit 1xTTS2-6400, 1xTTS2-3200 + ci HD:2TB
    vdr 2.2.0 Raspberry pi HD-USB: 2TB (Garten)

  • Drücke ich dagegen "Right" und halte sie gedrückt so lange ich es vorlaufen lassen will, und lasse dann los, dann läuft das Video noch einige Sekunden (gemäß Fortschrittsanzeige) schnell weiter, ehe es in die normale Geschwindigkeit zurückfällt.


    Ich nehme an du nutzt den mehrstufigen Vorlauf nicht? Den hatte ich bislang immer aktiv.
    Ich habe das grade mal mit softhddevice und einem nur mit dem Mainmenu-Hooks Patch versehenen VDR 1.7.36 probiert, bei mir macht er beim Beginn den Spulens mit gedrückt gehaltener "Right"-Taste sogar zusätzlich einen Hüpfer zurück - er spult also zuerst ca. 10s weiter, hüpft dann 20s zurück und spult dann normal weiter. Wenn ich die Taste loslasse, lande ich ca. 4-5 Sekunden später im Video (das ganze habe ich mit einer über NFS eingebundenen Aufnahme von ZDF-HD ausprobiert). Beim normalen Spulen mit "Right" drücken, loslassen und wieder drücken spielt er nur ca. 1-2 s nach dem Loslassen weiter.


    Beim VDR 1.7.27 (yaVDR 0.5) mit softhddevice ist das noch ausgeprägter, da beträgt der Sprung bei lokal wiedergegebener Aufnahme nach dem Loslassen der gedrückt gehaltenen Taste gute 10 s, dafür ist der Zurückspul-Effekt nicht da.


    Die Fernbedienung über LIRC funktioniert einwandfrei und liefert auch alle Codes wie erwartet, also mit entsprechenden k_Repeat und k_Release Flags.


    D.h. du benutzt die Option --release für lirc? Das würde mich generell interessieren, ob der VDR da auf Suffixe reagieren kann, in der lirc.c hab ich da nichts gesehen.


    Aber wird eine auf der Fernbedienung gedrückt gehaltene Taste da nicht generell um bis zu 500 ms länger als gedrückt gehalten angesehen als es tatsächlich der Fall ist - evtl. ist das ja die Ursache, dass es länger weiterläuft?
    http://projects.vdr-developer.…/vdr.git/tree/lirc.c#n118

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Wobei es zunächst mal interessant wäre zu erfahren, ob jemand das beschriebene Verhalten nachvollziehen kann, und ob es auch mit anderer Hardware (bzw. Software-Ausgabe) auftritt.


    Willkommen im Club. Die Sache hat mit der Harmony nichts zu tun und betroffen sind viele. Wenn es bei Dir auch auftritt, dann haben wir VDR als Quelle zu Recht ausgeschlossen. Mit HID und CIR haben wir das Problem (schon mit evtest). Verwendest Du den TT-S2 6400 eigenen IR-Receiver?


    Albert


  • Ich nehme an du nutzt den mehrstufigen Vorlauf nicht?


    Nein, ich finde den schrecklich ;-)



    Nein, diese Option benutze ich nicht. Das k_Release wird in lirc.c generiert, sobald nach einem Repeat keine Events mehr kommen.


    Quote


    Aber wird eine auf der Fernbedienung gedrückt gehaltene Taste da nicht generell um bis zu 500 ms länger als gedrückt gehalten angesehen als es tatsächlich der Fall ist - evtl. ist das ja die Ursache, dass es länger weiterläuft?
    http://projects.vdr-developer.…/vdr.git/tree/lirc.c#n118


    500ms wären ja noch kein Problem - es handelt sich ja um mehrere Sekunden...


    Klaus

  • 500ms wären ja noch kein Problem - es handelt sich ja um mehrere Sekunden...


    Wie weit spult er denn in 500 ms, wenn die Taste gedrückt gehalten wird?

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Nein, es geht über die serielle Schnittstelle.


    Was mich noch sehr interessieren würde, ob der Repeat-Effekt auch bei den Up/Down Tasten besteht. Wenn Du z.B. in der Kanalliste länger auf Up oder Down drückst, hast Du eine Art Nachlauf der OSD Balken, nachdem Du die Taste losgelassen hast?


    Wenn ja, dann würde Seriell sich auch in die Liste der von mir gepostete Beitrag einreihen. Dort sind wir leider nicht wirklich über das Sammeln von Informationen hinaus.


    Albert


  • Wie weit spult er denn in 500 ms, wenn die Taste gedrückt gehalten wird?


    Da sags du natürlich was!
    Ich habe mir das Timing in lirc.c mal genauer angeschaut und es jetzt so wie im angehängten Diff geändert. Damit geht es jetzt bei mir recht gut. Allerdings kann das natürlich bei anderen Fernbedienungen u.U. anders aussehen, daher wäre es gut, wenn mal ein paar andere, die auch LIRC über serielle Schnittstelle verwenden, das ausprobieren würden.


    Aus meiner SIcht ist das Problem damit behoben.


    Klaus

  • Könnte man das nicht konfigurierbar via OSD machen?


    #define REPEATDELAY 300 // ms
    #define REPEATFREQ 100 // ms
    #define REPEATTIMEOUT 150 // ms
    #define RECONNECTDELAY 3000 // ms


    Dann würde, zumindets bei mir, der LIRC Settings-Patch entfallen.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • War nur ne generelle Frage, müsste jetzt auch erst nachschauen, was bei mir eingestellt ist.


    Klar könnte ich auch die Werte manuell da eigeben, aber schöner wäre es schoin via OSD. Vor allem muss ich da nicht jedes Mal dran denken, wenn ich eine neue Version kompiliere.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • ... man könnte sich aber auch auf Werte einigen bei denen sich die Fernbedienung "gut anfühlt" und Klaus würde diese dann mit der nächsten Version so einbauen. Wer hat schon etwas von übertrieben vielen Konfigurationsoptionen. Bei Kaufreceivern mache ich mir um die Timings der Fernbedienung schließlich auch keine Gedanken...

  • Also mit einer Harmony 600 und dem KLS 1.6 Profil verbessert sich das Verhalten beim Spulen mit gedrückt gehaltener Taste schon mal deutlich, der VDR spielt praktisch an der Stelle weiter, an der man losgelassen hat. Allerdings fühlt sich das Spulen unrunder an - evtl. laufe ich da in den zu kurzen REPEATTIMEOUT bzw. die zu kleine REPEATFREQ , denn wenn ich das richtig verstehe wird jetzt erwartet, dass ein wiederholter Tastendruck immer in einem Intervall von 100 - 150 ms ankommt, was eine Harmony, die IIRC alle ~100 ms sendet vermutlich nicht immer genau trifft.


    Die anderen Profile und Fernbedienungen, die hier noch so rumliegen muss ich mal bei Gelegenheit testen.


    Klar könnte ich auch die Werte manuell da eigeben, aber schöner wäre es schoin via OSD. Vor allem muss ich da nicht jedes Mal dran denken, wenn ich eine neue Version kompiliere.


    Das fände ich prinzipiell auch schön, wenn man das frei anpassen könnte und z.B. das Fallenlassen von Tastendrücken auf Wunsch unterbinden oder die Grenzen für die Repeat-Erkennung anpassen könnte - immerhin gibt es ja eine große Bandbreite an Fernbedienungen, die idealerweise optimal nutzbar sein sollten.


    ... man könnte sich aber auch auf Werte einigen bei denen sich die Fernbedienung "gut anfühlt" und Klaus würde diese dann mit der nächsten Version so einbauen.


    Dann probier mal alle im Einsatz befindlichen Konstellationen, die über den Lirc-Sockel laufen durch ;) - die Lösung, die 90% zufrieden stellt wird man vermutlich relativ leicht erreichen, aber z.T. wurden da ja sehr extreme Werte gewünscht: https://bugs.yavdr.com/issues/300

    Wer hat schon etwas von übertrieben vielen Konfigurationsoptionen. Bei Kaufreceivern mache ich mir um die Timings der Fernbedienung schließlich auch keine Gedanken...


    Die werden auch mit einer darauf angepassten Fernbedienung ausgeliefert (und sind trotzdem oft grausig zu bedienen)...

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Also mit einer Harmony 600 und dem KLS 1.6 Profil...


    Was meinst du mit "KLS 1.6 Profil"?


    Quote


    verbessert sich das Verhalten beim Spulen mit gedrückt gehaltener Taste schon mal deutlich, der VDR spielt praktisch an der Stelle weiter, an der man losgelassen hat.


    Hauptgrund hierfür dürfte die deutliche Verkürzung des REPEATTIMEOUT sein.


    Quote


    Allerdings fühlt sich das Spulen unrunder an - evtl. laufe ich da in den zu kurzen REPEATTIMEOUT bzw. die zu kleine REPEATFREQ , denn wenn ich das richtig verstehe wird jetzt erwartet, dass ein wiederholter Tastendruck immer in einem Intervall von 100 - 150 ms ankommt, was eine Harmony, die IIRC alle ~100 ms sendet vermutlich nicht immer genau trifft.


    REPEATFREQ sollte relativ unproblematisch sein. Damit soll eigentlich nur verhindert werden, daß wiederholte Tastendrücke zu schnell reinkommen. Wenn deine FB schneller als mit 100ms wiederholt, dann wird halt u.U. die erste Wiederholung ignoriert, was eigentlich nichts ausmachen sollte.


    Klaus

  • Bitte sehr:


    root@vdr:~# cat /etc/vdr/setup.conf |grep Lirc
    LircRepeatDelay = 250
    LircRepeatFreq = 100
    LircRepeatTimeout = 250
    root@vdr:~#


    Nutze eine Harmony am iMon Empfänger.

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB


  • Na das ist ja schon relativ nahe an meinen neuen Werten.
    Kannst du es mal mit
    #define REPEATDELAY 300 // ms
    #define REPEATFREQ 100 // ms
    #define REPEATTIMEOUT 150 // ms
    probieren? Wichtig wäre dabei auch, daß du den Rest des Patches verwendest, denn beim Setzen des 'timeout' wird jetzt REPEATTIMEOUT verwendet anstatt REPEATDELAY:

    Code
    1. - timeout = REPEATDELAY;
    2. + timeout = REPEATTIMEOUT;


    Der Teil mit der Umstellung der 'if's macht keine funktionelle Änderung, sondern dient lediglich der Klarheit (die Kommentare waren "andersherum").


    Klaus