Es ist nochmal ein Update auf dem devel-Feed gelandet:
SoftCSA Changelog
PreRelease 9 (7.6. 1.38-devel)
Deutsch
Behoben: Race Condition bei Timeshift auf CSA-ALT Kanälen
Problem: Wenn SoftDecoder und Timeshift-Recorder dieselbe CSA-Session nutzten, riefen beide gleichzeitig descramble() auf derselben Engine auf. Dies führte zu Race Conditions auf den gemeinsam genutzten m_batch_even/m_batch_odd Vektoren.
Symptome:
- "broken startcode" Fehler im Log
- Bild-Glitches und Artefakte
- Besonders bei aktiviertem Auto-Timeshift auf CSA-ALT Kanälen
Lösung: Separate m_timeshift_csa_session für den Timeshift-Recorder erstellt. Dies entspricht der bestehenden Aufnahme-Architektur, die bereits eigene Sessions verwendet. Jede Session hat ihre eigene Engine mit unabhängigen Batch-Buffern - kein Mutex erforderlich, kein Blockieren bei CW-Updates. Beide Sessions empfangen CWs vom CAHandler (gleiche Service-Referenz) und entschlüsseln unabhängig voneinander.
Behoben: Falsche Stream-Stall-Erkennung bei Pause
Problem: Der StreamHealthCheck erkannte fälschlicherweise einen Streamabriss wenn der Decoder pausiert wurde (z.B. bei Timeshift-Pause), da der PTS-Wert naturgemäß stoppt.
Lösung: m_paused Flag im SoftDecoder hinzugefügt um den Pause-Zustand zu verfolgen. Die Stall-Erkennung wird übersprungen solange der Decoder pausiert ist.
English
Fixed: Race Condition with Timeshift on CSA-ALT Channels
Problem: When SoftDecoder and Timeshift recorder both used the same CSA session, they would call descramble() concurrently on the same engine, causing race conditions on the shared m_batch_even/m_batch_odd vectors.
Symptoms:
- "broken startcode" errors in log
- Video glitches and artifacts
- Particularly with auto-timeshift enabled on CSA-ALT channels
Solution: Create independent m_timeshift_csa_session for timeshift recorder, matching the recording architecture which already uses separate sessions. Each session has its own engine with independent batch buffers - no mutex needed, no blocking on CW updates. Both sessions receive CWs from CAHandler (same service reference) and descramble independently without interference.
Fixed: False Stream Stall Detection During Pause
Problem: StreamHealthCheck falsely detected a stream stall when the decoder was paused (e.g. during timeshift pause), since PTS naturally stops.
Solution: Added m_paused flag to SoftDecoder to track pause state. Stall detection is skipped while the decoder is paused.