ringbuffer dvbplayer

  • Hi,


    ich hatte jetzt mal Aufzeichnungen wärend des Abspielen einer Aufzeichnung von einer lokalen Platte zu einer 2. lokalen Platte kopiert. Das führte zu Störungen bei der Wiedergabe, darauf sah ich mir mal die Größe des ringbuffers um dvbplayer an und fand sie mit 1MB recht knapp. Nach Vergrößerung auf 5Mb konnte ich jetzt störungsfrei von einer zur anderen Platte kopieren.


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • Hab das schon seit VDR... 1.2(?) (also, seit ausreichend Speicher da war) so gepatched, sonst klemmte immer irgendwas - Parallelaufnahmen, Netzwerk-I/O oder Markad/Noad...



    Stefan

  • Ich bin da etwas hin- und hergerissen. Zum einen habe ich es gerade mal ausprobiert und während der Wiedergabe das Video-Verzeichnis auf eine externe USB3-Festplatte kopiert und keine Probleme gehabt. Aber bei einer internen SATA-Platte kann die Übertragungsrate natürlich deutlich schneller sein und von daher zu anderen Ergebnissen führen.


    Zum anderen ist mir bei Betrachtung des Codes von cRingBufferFrame::Put() aufgefallen, dass mit der Abfrage


    if (Frame->Count() <= Free()) {


    die Wiedergabe sofort blockiert würde, sobald ein Frame größer als 1MB wäre.

    Glücklicherweise ist an anderer Stelle MAXFRAMESIZE definiert, und das ist (wegen der Synchronisation auf 188 Bytes TS-Paketgröße) etwas weniger als 1MB. Gerade nochmal gut gegangen ;-).


    Um den Zusammenhang besser zu dokumentieren und gleichzeitig etwas mehr Speicher für den Player zu spendieren würde ich es daher so ändern: