[Patch] xineliboutput - Remove SCR und start HD-Playback at lower buffer usage

  • Wie im Thread zum Durchflieger-Patch schon angekündigt, hier eine neuere Version des Patches.

    Damit läuft xineliboutput bei Live-TV und Aufnehmen ohne Probleme/Aussetzer bei mir.

    Der Patch entfernt des SCR-Tuning aus xineliboutput, da über vdpau damit Störungen auftreten.
    Da es danach aber einen größeren Buffer benötigt, um sicherzustellen, das der Buffer nicht voll läuft, muss der Buffer für HD erhöht werden. Dies hat aber wiederrum den Nachteil, dass das Umschalten auf HD-Sender deutlich länger dauert.
    Um das wiederum zu umgehen, wird HD nun einfach ab einem Buffer-Füllstand von 500 gestartet. SD ist davon nicht betroffen und startet weiterhin bei einem Füllstand von 66% und nutzt weiterhin einen Buffer Wert von 250.

    Damit mehr Buffer benutzt werden, muss in der config_xineliboutput der Wert media.xvdr.num_buffers_hd erhöht werden. Diesen habe ich bei mir auf 10000 gesetzt.

  • Maniac

    Danke für den Patch, bis jetzt läuft Xineliboutput seeeehr zufriedenstellend!

    Grüße

    NFS+DVB_Server: Ubuntu 12.04 Server LTS // Intel dn2800mt mit 1xWD Red (2TB), 1xWD Green (2TB), 5xSundtek SkyTV DVB-S/S2
    VDR: Gen2VDRV4 (VDR-2.1.6) // Asus C8HM70-I/HDMI , 64GB Sandisk SSD (System), 4GB Ram (Dualchannel), Zotac GT630, 4TB über NFS (Video0+Mediadaten), 5xSundtek SkyTV DVB-S/S2 über Lan, PS3 FB // softhddevice_GIT, NV-Treiber_340.58, FFMPEG_1.2.6, Kernel_3.16.5, Alsa_1.0.28 // KODI_15.0_ALPHA
    CLIENT: (Debian) Banana Pi (VDR-2.1.7) // streamdevclient // softhddevice // PS3 FB
    TEST: Grundig GSS 400 mit Vtunerc // Satip-Plugin // TVheadend

    Je mehr man gelernt hat, desto mehr weiß man, wie wenig man weiß.

  • Hi,

    vielen Dank für den Patch! Läuft soweit *wirklich* gut, aber "Das Erste HD" und "ZDF HD" bekommen damit erst nach einigen Minuten(!) Ton. Ausgabe ist über "Pass Through", "media.xvdr.num_buffers_hd:10000" ist eingestellt.

    Das Syslog läuft während der stummen Phase hiermit voll:

    Code
    [input_vdr] SCR: Buffer  2% (305/10238)       SCR +0 frames 0

    Idee, was das Problem sein kann?

    Gruß
    Holger

  • Quote

    Original von HolgerR
    Hi,

    vielen Dank für den Patch! Läuft soweit *wirklich* gut, aber "Das Erste HD" und "ZDF HD" bekommen damit erst nach einigen Minuten(!) Ton. Ausgabe ist über "Pass Through", "media.xvdr.num_buffers_hd:10000" ist eingestellt.

    Das Syslog läuft während der stummen Phase hiermit voll:

    Code
    [input_vdr] SCR: Buffer  2% (305/10238)       SCR +0 frames 0

    Idee, was das Problem sein kann?

    Gruß
    Holger

    Nabend,

    kann ich voll und ganz bestätigen, aber nur auf den beiden Sendern...

    Gruß
    Wolfgang

    Hardware: -
    Software: -

  • Hi,

    Quote

    Original von wbreu
    kann ich voll und ganz bestätigen, aber nur auf den beiden Sendern...

    danke und - stimmt! ganz vergessen zu erwähnen- völlig richtig: Die anderen HD-Sender (Sky) haben das Problem nicht.

    Gruß
    Holger

  • Ja Leute,

    kann ich auch hier bestätigen...... :lehrer1

    Grüße

    NFS+DVB_Server: Ubuntu 12.04 Server LTS // Intel dn2800mt mit 1xWD Red (2TB), 1xWD Green (2TB), 5xSundtek SkyTV DVB-S/S2
    VDR: Gen2VDRV4 (VDR-2.1.6) // Asus C8HM70-I/HDMI , 64GB Sandisk SSD (System), 4GB Ram (Dualchannel), Zotac GT630, 4TB über NFS (Video0+Mediadaten), 5xSundtek SkyTV DVB-S/S2 über Lan, PS3 FB // softhddevice_GIT, NV-Treiber_340.58, FFMPEG_1.2.6, Kernel_3.16.5, Alsa_1.0.28 // KODI_15.0_ALPHA
    CLIENT: (Debian) Banana Pi (VDR-2.1.7) // streamdevclient // softhddevice // PS3 FB
    TEST: Grundig GSS 400 mit Vtunerc // Satip-Plugin // TVheadend

    Je mehr man gelernt hat, desto mehr weiß man, wie wenig man weiß.

  • Guck ich mir heute Abend mal an, habe aber schon ne starke Vermutung. HD-Playback startet bei einem Buffer-Füllstand von 500. Hat bei meinen Tests wunderbar ausgreicht, allerdings hatte ich dort nicht auf ARD/ZDF geschaltet.

  • Es ist der Buffer der schon bei 500 startet.

    Zur zeit hilft es in der xine_input_vdr.c in Zeile 620 den Wert 500 zu erhöhen.

    Code
    if ((this->hd_stream && num_used > 500)

    Ich guck mal ob ich diesen Wert über die config_xineliboutput einstellbar machen kann.

  • Quote

    Original von Maniac
    Ich guck mal ob ich diesen Wert über die config_xineliboutput einstellbar machen kann.

    Das wäre natürlich großartig! Ich habe es jetzt hier erst mal mit "1300" laufen (der Wert hatte sich früher schon für die beiden Kanäle bewährt). Vielleicht geht's ja doch kleiner?

    Vielen Dank und Gruß
    Holger

  • Neuer Patch, der minimale Wert, ab dem das HD-Playback startet ist nun über die config_xineliboutput einstellbar. Standardmäßig wird er auf 1500 festgelegt.

    Code
    # minimal number of buffers for start HD playback
    # numeric, default: 1500
    media.xvdr.min_playback_buffers_hd:1500

    Jetzt müssen wir dafür nur noch einen vernünftigen Wert finden, mit dem alles problemlos läuft, die Umschaltzeiten aber so gering wie möglich sind. Postet dort bitte eure Erfahrungen welche Werte sich als sinnvoll erweisen.

    Alternativ hatte ich noch die Idee das ganze nicht an einem bestimmten Buffer-Füllstand festzumachen, sondern daran wieviele Frames im Buffer liegen. Das will nur irgendwie nicht so wie ich ;)
    Mal sehen ob man da noch was drehen kann.

  • Maniac

    Danke für den neuen Patch :vdr1. Jetzt geht es ans testen.......

    Grüße

    NFS+DVB_Server: Ubuntu 12.04 Server LTS // Intel dn2800mt mit 1xWD Red (2TB), 1xWD Green (2TB), 5xSundtek SkyTV DVB-S/S2
    VDR: Gen2VDRV4 (VDR-2.1.6) // Asus C8HM70-I/HDMI , 64GB Sandisk SSD (System), 4GB Ram (Dualchannel), Zotac GT630, 4TB über NFS (Video0+Mediadaten), 5xSundtek SkyTV DVB-S/S2 über Lan, PS3 FB // softhddevice_GIT, NV-Treiber_340.58, FFMPEG_1.2.6, Kernel_3.16.5, Alsa_1.0.28 // KODI_15.0_ALPHA
    CLIENT: (Debian) Banana Pi (VDR-2.1.7) // streamdevclient // softhddevice // PS3 FB
    TEST: Grundig GSS 400 mit Vtunerc // Satip-Plugin // TVheadend

    Je mehr man gelernt hat, desto mehr weiß man, wie wenig man weiß.

  • Quote

    Original von Maniac
    Alternativ hatte ich noch die Idee das ganze nicht an einem bestimmten Buffer-Füllstand festzumachen, sondern daran wieviele Frames im Buffer liegen. Das will nur irgendwie nicht so wie ich ;)
    Mal sehen ob man da noch was drehen kann.

    Klappt leider nicht, die Möglichkeiten, die ich finden konnte um den Inhalt des Buffers auszuwerten, funktionieren leider alle erst nachdem das Playback gestartet wurde.

  • Die Meldung hab ich bei mir (ausser beim umschalten noch nicht gesehen).
    Sie tritt laut Code nur auf, wenn der Buffer unter 1 fällt, aber trotzdem noch mehr als 5 Frames im Fifo liegen. In deinem Fall sind sogar noch 17 vorhanden, was aber eigentlich größer sein müsste als ein genutzer Buffer von 1.

    Welchen Wert hast du den bei media.xvdr.min_playback_buffers_hd eingetragen?

  • Hallo,
    ich habe jetzt auf die Pakete aus dem unstable-Zweig von yavdr umgestellt (vdr-1.7.14 und xinelibout-cvs20100331.2000).
    Damit läuft bei mir jetzt endlich alles flüssig (num_buffers_hd:5000)!
    Grosses Lob!!!

    Eine Frage noch:
    Die Logfiles werden bei mir mit Buffer-Statusmeldungen vollgemüllt ;):

    Code
    [input_vdr] SCR: Buffer 12% (644/5238)       SCR +0 frames 0


    Sind doch nur Infos, oder...?
    Kann man diese in der Config oder per Parameter ausschalten?

    Gruss
    Guido

    VDR1
    HW: Lintec Senior, Aopen MK79G, Sempron 2600+, 1GB DDR1, HDD 80 GB, FF 2300
    SW: easyvdr 06.10 + 2.6.22-15 multiproto, vdr-1.7.0, nv-96.4316

    VDR2
    HW: SilverStone LC11, TFX 300W, Biostar G41D3, PDC E6300, 2GB DDR3, 500 GB WD-AV, 2x TT S2-1600, GT240
    SW: yaVDR-0.1.1 + nv-195.36.15, vdr-1.7.14, xinelibout-cvs20100331

  • Quote

    Original von gundi61
    Kann man diese in der Config oder per Parameter ausschalten?


    Nein

    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • hallo,

    nur als kleine info: vor ca. 2 stunden sind einige adaptionen ins xineliboutput eingeflossen ...

    zB:

    Added config options to fine-tune channel switch speed:
    * - If SCR (playback) is currently paused due to previous buffer underflow,
    * revert to normal if SCR-Treshold > SD-/HD-Treshold (configured in xine-config)
    * and Audio-Treshold > 0. (Thanks to Dirk Brenken)
    ----
    SCR tuning: fixed calculating free buffers when using HD buffer (get_buf_element() uses only hd_buffer)

    http://projects.vdr-developer.org/git/?p=xineliboutput.git

    dachte mir, es passt zum thema ...

    gruß, ciax

    Lascala LC17 - tribute to viking ;o) + atric IR / SoC ASUS J3455M-E / OctopusNet S4 / yavdr ubuntu noble / output: osd2web + kivy-osd2web / branch 'python3' via 6.4" TFT & sat>ip DVB-S/S2 via FullHD / NVidia GT1030 passiv

  • Mahlzeit,

    das dürfte genau der Patch sein den ich von Dirk vor gut 10 Tagen bekommen habe.

    Mal die empfohlenen .config-Parameter:

    Mal sehen wie er bei euch so läuft mit den obigen Einstellungen...

    Gruß
    Wolfgang

    Hardware: -
    Software: -

  • Wenn ich mir die Changes so angucke scheint aber das SCR-Tuning ansich noch aktiv zu sein. Dieses sorgt ja bei VDPAU für die Probleme. Eine Verbesserung der Umschaltzeiten könnte aber sehr gut dadurch erreicht werden.

    Ich werde es am Wochenende mal testen und ggf. einen aktualisierten Patch zum entfernen des SCR-Tuning bauen.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!