Soft-Start bei softhddevice

  • Es gibt ein paar bekannte Probleme bei softhddevice, die alle nur beim Abspielen von Aufnahmen auftreten, da dort der Soft-Start aktiv ist, selbst wenn er im Menü abgestellt ist. Dies betrifft:
    1. Wenn man auf einer Marke pausiert, und dann Play drückt (das geht je nach Zufall manchmal auch ohne Soft-Start).
    2. Beim Abspielen Pause, und dann Wiedergabe (auch das geht je nach Zufall manchmal auch ohne Soft-Start).
    3. Sprünge während der Wiedergabe.


    Mal ein Debug Log von 1., wenn es gerade ohne Soft-Start los spielt. (gut.txt)


    Und ein Debug Log von 1., wenn es mit Soft-Start startet. (schlecht.txt)


    Der Unterschied ist, dass im zweiten Fall der Audio Puffer schneller gefüllt wird, und sobald eine Schwelle überschritten ist, spielt Audio los. Wenn dann Video soweit ist, gibt es den Soft-Start.


    Im ersten Fall ist Video fertig, bevor die Schwelle überschritten ist, und Audio spielt passend zum Video später los. Dadurch gibt es einen kleinen Vorwärts-Sprung mit anschließendem synchronen Start.


    Ich habe einen Patch erstellt, der verhindert, dass Audio frühzeitig beim Abspielen von Aufnahmen los spielt. Ausgelöst wurde das durch

    Code
    1. AudioStartThreshold * 4 < n

    in audio.c, und das greift jetzt nur noch, wenn es keine Wiedergabe einer Aufnahme ist.


    Das hilft für Sprünge während der Wiedergabe und für Play nach Pause auf Sprungmarke.


    Ist nur wenig getestet und sicherlich Geschmackssache. Ich mag halt Soft-Start nach Sprüngen nicht.


    Falls jemand eine bessere Methode kennt, dann bitte mitteilen.


  • Das Verhalten ist mir auch schon aufgefallen... War mir aber nicht sicher, ob das schon immer so war. Ich glaube vor einigen commits im GIT ging das Springen noch ohne Soft-Start.

    Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. [StGB §328 Abs.: 2 Nr.: 3]

    ___

    Gen2VDR V7; VDR 2.4.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i5-3550, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Es gibt keinen Grund, warum beim Abspielen von Aufnahmen, der SoftStart aktiv sein los.


    Ich habe schon lange nicht mehr getestet, aber früher waren die Sprünge sofort.
    Vielleicht hängt es vom Sender ab?


    Einfach den Ton zwangsweise loslaufen zulassen, ist der falsche Weg.


    Im Prinzip sollte es so sein, daß alles Audio gepuffert wird.
    Sobald die Zeiten von Audio und Video bekannt sind, wird zuviel gepuffertes Audio weggeschmissen.
    Damit das Ton+Bild sofort synchron loslaufen können.


    Bei Aufnahmen sollte es nicht vorkommen, daß auf den Audiopuffer voll, gewartet werden muß.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Bei Aufnahmen kam der Soft-Start nur zum Tragen, wenn man Werbung mit 8 übersprungen hat. Da kam der Softstart. Bei Sprüngen lief das sofort synchron los...


    Ab dem git-stand hat sich das "glaube" ich verändert: http://projects.vdr-developer.…f7c6778deaba7fe62beb2af69

    Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. [StGB §328 Abs.: 2 Nr.: 3]

    ___

    Gen2VDR V7; VDR 2.4.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i5-3550, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Es gibt keinen Grund, warum beim Abspielen von Aufnahmen, der SoftStart aktiv sein los.

    Ja, es geht darum, den Soft-Start los zu werden.


    Ich habe schon lange nicht mehr getestet, aber früher waren die Sprünge sofort.

    Nein, das ist schon lange so.


    Vielleicht hängt es vom Sender ab?

    Je größer der A-V-Versatz, desto länger der Soft-Start.


    Einfach den Ton zwangsweise loslaufen zulassen, ist der falsche Weg.

    Deshalb stellt mein Patch das ab. Vielleicht könnte man das aber besser implementieren.


    Im Prinzip sollte es so sein, daß alles Audio gepuffert wird.

    Ja.


    Sobald die Zeiten von Audio und Video bekannt sind, wird zuviel gepuffertes Audio weggeschmissen.
    Damit das Ton+Bild sofort synchron loslaufen können.

    Genau das möchte ich mit dem Patch erreichen :) .

  • Bei Aufnahmen kam der Soft-Start nur zum Tragen, wenn man Werbung mit 8 übersprungen hat. Da kam der Softstart. Bei Sprüngen lief das sofort synchron los...


    Ab dem git-stand hat sich das "glaube" ich verändert: http://projects.vdr-developer.org/git/vd…ba7fe62beb2af69

    Gut möglich, ich habe mich zuletzt 2013 intensiv mit softhddevice beschäftigt.

  • Ich kann erst am Wochenende testen. Ich werde dann einfach den GIT vom September drauf machen und testen...

    Mit Freiheitsstrafe bis zu fünf Jahren oder mit Geldstrafe wird bestraft, wer eine nukleare Explosion verursacht. [StGB §328 Abs.: 2 Nr.: 3]

    ___

    Gen2VDR V7; VDR 2.4.0; Gehäuse: Antec Fusion V2 Black & iMon LCD (15c2:ffdc); Atric IR-Einschalter Rev. 4; Board: Intel DH77EB, Core i5-3550, Zotac GT630 Zone Edition, 4 GB RAM; DVB: 1x Digital Devices CineS2 Quad V6.5 [VDR-User #1540]

  • Also das Problem ist. Es ist genug Ton gepuffert und der Audioteil meint, man könnte abspielen.
    Dann kommen die ersten Zeitstempel vom Video und man müsste nun etwas vom Ton wegschmeissen, da er aber schon läuft, kann man nichts mehr wegwerfen.


    Habe ich das richtig verstanden?


    Also wäre der richtigere Ansatz, nicht IsReplay abzufragen, sondern AudioVideoIsReady.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Also das Problem ist. Es ist genug Ton gepuffert und der Audioteil meint, man könnte abspielen.
    Dann kommen die ersten Zeitstempel vom Video und man müsste nun etwas vom Ton wegschmeissen, da er aber schon läuft, kann man nichts mehr wegwerfen.


    Habe ich das richtig verstanden?.

    Ja, genau.



    Also wäre der richtigere Ansatz, nicht IsReplay abzufragen, sondern AudioVideoIsReady.

    Das macht Sinn, und dann hätte das Fernsehen Umschalten auch etwas davon.
    Mein alter Patch von 2013 war in AudioVideoReady(), aber nicht sehr sauber.
    Wie würde das, was du meinst, im Detail gehen :) ?

  • Der Alte Patch hat ja die Ursache nicht verändert.


    Code
    1. // forced start or enough video + audio buffered
    2. // for some exotic channels * 4 too small
    3. if (AudioStartThreshold * 4 < n || (AudioVideoIsReady
    4. && AudioStartThreshold < n)) {
    5. // restart play-back
    6. // no lock needed, can wakeup next time
    7. AudioRunning = 1;
    8. pthread_cond_signal(&AudioStartCond);
    9. }


    Hier erfolgt einfach ein Zwangstart, wenn das 4x an gewünschten gepuffert ist.
    Wann ist der Zwangsstart notwendig? Nur wenn der Audiopuffer voll ist oder wenn es ein Radiosender ist.


    Wenn ich mich richtig errinnere hängt das *4 mit der Puffergröße zusammen, ist quasi der voll Check.
    Der Audioplayer check mit #AUDIO_MIN_BUFFER_FREE, aber auch ob genug Platz in der Audioqueue ist.


    Also sollte der Zwangsstart nur noch bei Radio relevant sein, da wäre eine nur Tonerkennung besser.


    Man könnte hier auch mal mit Werten von #AUDIO_MIN_BUFFER_FREE testen.


    Der neue Ansatz würde auch beim Umschalten helfen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Hier ein Patch, der auch für's TV Umschalten greift.
    Hin und wieder bleibt damit aber der Ton (erst mal) weg.
    Edit: Das liegt daran, dass dem vdr dvbplayer der Puffer zu voll wird.


    Vielleicht hat ja jemand Lust, den wegbleibenden Ton zu debuggen.


  • Sind es irgendwelche exotischen Sender?
    Oder passiert es auch auf ARD/ZDF HD?


    Ich frage deshalb, weil ich hatte das Gefühl manchmal ist das Umschalten auf ARD/ZDF schnell, mal langsam und da könnte noch ein anderer Fehler drinstecken.


    Man kann noch, wenn der Puffer zu voll ist, etwas vom Anfang wegschmeissen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Sind es irgendwelche exotischen Sender?

    Nein.


    Oder passiert es auch auf ARD/ZDF HD?

    Bin nicht sicher, aber ich glaube Ja.


  • Um es zu debuggen. Wenn es auf ARD/ZDF passiert, dann sollte irgendwo ein "flush" oder "clear" fehlen.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Die Frage mit dem Debuggen bezog sich darauf, wie ich das fehlende Was-auch-immer-es-ist finde.
    Ich bin schon am Suchen, aber komme nicht weiter.

  • Der Tipp mit AUDIO_MIN_BUFFER_FREE war hilfreich.
    Ich habe das auf 75% (2304 * 8 * 8 ) verkleinert, und damit lief es bei meinen Tests gut.
    Das könnte aber von den Sendern und der Hardware abhängig sein.
    Mit 2560 * 8 * 8 und 2048 * 8 * 8 habe ich Störungen gesehen.


    Daher bitte ausgiebig testen und rückmelden :) .


  • Die Frage mit dem Debuggen bezog sich darauf, wie ich das fehlende Was-auch-immer-es-ist finde.
    Ich bin schon am Suchen, aber komme nicht weiter.


    Ich meinte zur Suche, warum es überhaupt passiert.
    Der Puffer ist ca. 3s groß, das sollte locker und leicht reichen.
    Der Fall, daß der Puffer voll ist, sollte bei LiveTv nicht auftreten.


    Johns

    Sag mir, wo die Developer sind. Wo sind sie geblieben? . . . . . . . . . . . . . . . . . . . . SoftHdDevice - A software and GPU emulated HD output device plugin.
    Sag mir, wo die Developer sind. Was ist geschehn?


    Client0: Crown CW02 MSI_C847MS-E33 Zotac_GT640_passiv Cine-S2 iMon-MCE / streamdev softhddevice
    Client1: Lian_Li_PC-Q09FB ASRock_H67M-ITX/HT I3-2100 ASUS_ENGT520_passiv / streamdev softhddevice
    Test: Lian_Li_PC-Q09R Asus C60M1-I / streamdev
    Server0: Dockstar TT-S2-3600-USB / streamdev
    Server2: Lian_Li_PC-Q07R Intel_DH61DL G620 WD20EARX 90W PicoPSU Cine-S2+DuoFlex-S2+DuoFlex-CT / streamdev / 22 Watt Verbrauch

  • Dass das Fenster für AUDIO_MIN_BUFFER_FREE so klein ist, wundert mich und es kommt mir nicht besonders robust vor (Auch wenn es bei mir bis jetzt gut funktioniert).
    Fragt sich nur, wie man das besser machen kann.


    Was meintest du mit "Man kann noch, wenn der Puffer zu voll ist, etwas vom Anfang wegschmeissen."? Wo und wie?