Skip to content

Reset video decoder fast-forward/slow-motion when the video pid is stopped - #1366

Merged
Huevos merged 1 commit into
OpenViX:Developerfrom
xcentaurix:fixdec
Oct 10, 2026
Merged

Huevos merged 1 commit into
OpenViX:Developerfrom
xcentaurix:fixdec

Conversation

@xcentaurix

Copy link
Copy Markdown
Contributor

Problem:
When a DVB player (e.g. a recording played through eDVBServicePlay) is left while in fast-forward, slow-motion or trickmode, the video decoder keeps that setting. eTSMPEGDecoder::setState() only sets fast-forward and slow-motion while it starts a video pid. When it stops one, nothing resets them.

Anything that plays next without setting them itself inherits the old rate. That includes GStreamer sinks such as servicemp3 for IPTV and for recordings. After exiting an 8× fast-forward, live IPTV starts with the decoder still at 8× (VIDEO0: update_trickmode, ff=8). The result is continuous audio and video tsm fail / pts error messages and no usable playback. Playing a DVB service or a recording first clears it, because starting a video pid sets the state.

Fix:
In setState(), before the video decoder is stopped, send VIDEO_SLOWMOTION 0 and VIDEO_FAST_FORWARD 0 if the decoder state is fast-forward, trickmode or slow-motion.

Successfully tested on DM900.

@Huevos
Huevos merged commit 160ee3e into OpenViX:Developer Oct 10, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants