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