Play-Pause is not working due to wrap over logic in tsdemux.
Hare Krishna
harekrishna at allgosystems.com
Thu Mar 23 10:49:38 UTC 2017
Hi All,
I have a streaming pipeline which does RTSP/RTP/MPEG-TS playback.
I have a scenario, where Server can be put in pause and resume state.
Everything is fine until I am not putting server in pause state and resuming
back. After resuming, my pipeline is not able to play video and audio.
I debugged the pipeline and found that tsdemux is the one which has wrap
around logic in its mpegtspacketizer.c file.
if (pts < PCRTIME_TO_GSTTIME (refpcr)) {
/* Only apply wrapover if we're certain it is, and avoid
* returning bogus values if it's a PTS/DTS which is *just*
* before the start of the current group
*/
if (PCRTIME_TO_GSTTIME (refpcr) - pts > GST_SECOND) {
pts += PCR_GST_MAX_VALUE;
} else
refpcr = G_MAXINT64;
}
Above code snippet is assuming that wrap over happened and adding
PCR_GST_MAX_VALUE to the PTS in result i am getting pts of 26hr+ which is
make sinks to unable to render.
PS : After resume, Server is sending new pcr with addition of amount of time
it was in pause state but it is sending first two to three pts same as
(slightly greater than old pts) old pts. And this is with all the
server(regardless of vendors) so i can not blame server for this.
--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Play-Pause-is-not-working-due-to-wrap-over-logic-in-tsdemux-tp4682373.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.
More information about the gstreamer-devel
mailing list