[Bug 674536] tsdemux: Freeze on pts-wrap with streaming sources

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Thu Jun 28 07:16:39 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=674536
  GStreamer | gst-plugins-bad | git

--- Comment #19 from Holger Kaelberer <hk at getslash.de> 2012-06-28 14:16:34 UTC ---
(In reply to comment #18)
> If the absolute difference is very close to the maximum PCR value (let's say a
> diff of 1 << 30 for example), then we should bump up/down by the maximum PCR
> value because it means it is very probable that it is an actual pcr wraparound.

Ok, this should not interfere with the video-loop use-case where you can expect
resets about 30sec to 2h or so.

> 
> The question is what to do with values in between (i.e. it's not a glitch and
> it's not a compliant wrap-around).

Well that's what I tried to answer with the submitted patch: track the exact
pcr_diff after (multiple) timestamp resets and account for in calculating
current gstpcr values (calculate_skew())

... AND do the same for the PTS (gst_ts_demux_record_pts()).

Not sure if you can go with the latter only as does mpegtsdemux/flutsdemux that
seem to handle ts discontinuities only by updating stream->base_time. Actually
the observed freeze was triggered by too high PTS after the reset, because
gst_ts_demux_record_pts() handles discontinuities >10sec as rollovers of about
PTS_DTS_MAX_VALUE. But not when not tracking pcr resets I found
calculate_skew() falling in other cases like basetime or skew reset, breaking
the corrected PTS calculation.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list