|
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.
|