cDvbPlayer::Action - PlayTs() möglicher Bug

  • Hallo zusammen,

    ich bin mir nicht sicher, ob ich einen Bug gefunden habe. Tritt sporadisch beim Wechsel von pmPause nach pmPlay auf.

    Ein cDvbPlayer::Freeze() setzt ein lock auf den thread, d.h. die Dauerschleife stoppt hier.

    Nachdem Freeze() den playmode auf pmPause gesetzt hat, geht es mit der else-Anweisung weiter, d.h. Sleep wird true, damit beim nächsten Schleifendurchgang geschlafen wird.

    Trotzdem gehts weiter, aus dem Ringbuffer werden Daten geholt und mit PlayTs() verarbeitet. VideoOnly ist jetzt true. Falls gerade jetzt ein Audiopaket ansteht, heißt das aber wiederum, dass cDevice::PlayTs() die Daten wegen VideoOnly hier nicht verarbeitet, trotzdem aber Played um TS_SIZE hochzählt und den Wert zurückliefert, als ob sie angenommen wurden.

    Das führt zu dem Problem, dass dem Ausgabeplugin diese Daten fehlen und ggfs. einen Sync mit framedrops erzeugt.

    Liege ich damit richtig?

    Ein relativ einfacher Fix wäre, sich hier mit einem continue aus dem Schleifendurchgang zu verabschieden. Funktionier hier, aber ich weiß nicht, ob das an anderer Stelle Nebenwirkungen hat. Was meint ihr bzw. kls ?

    Gruß Andreas

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • Das führt zu dem Problem, dass dem Ausgabeplugin diese Daten fehlen und ggfs. einen Sync mit framedrops erzeugt.

    Ob das auch erklärt. warum (zumindest bei mir) vor allem nach dem Anspringen einer Schnittmarke die Tonspur meist erst einmal Aussetzer hat und sich erst nach ein paar Sekunden wieder fängt?

    Wenn das endlich Aufhören würde, fände ich das richtig klasse! ;)

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.7 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, satip, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Bin mir mittlerweile ziemlich sicher, dass da ein Fehler ist. Ist uns während der Arbeit an softhddevice-drm-gles aufgefallen, weil wir da für die Fehlersuche alle Pakete geloggt haben, die vom VDR mit PlayAudio kommen. Und ab und zu ist beim ersten Paket der Unterschied vom PTS zum vorherigen PTS genau doppelt so groß wie er sonst ist. Länge des Pakets ist aber gleich -> VDR verschluckt das Paket.

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

    Edited once, last by rell (December 23, 2025 at 11:34 AM).

  • rell Nachdem du das wahrscheinlich eingehender untersucht hast als ich es auf die Schnelle überblicke, und auch den positiven Effekt der Änderung bestätigen kannst (das nehme ich zumindest an), sehe ich keinen Einwand. Das würde dann so aussehen, oder?

    SHofmann Kannst du bitte testen, ob das auch dein Problem aus #3 behebt?

  • Ja. Genau mit diesem Patch läuft VDR jetzt schon eine Weile und das Problem tritt nicht mehr auf. Natürlich auch kein Neues ;)

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

Participate now!

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