tsdemux and push-mode not calculating
Submitted by iot..@..ud.com
Created attachment 304888
Does not work example log
I’m having a problem with the mpegtspacketizer.c implementation of mpegts_packetizer_pts_to_ts
I have a HLS demuxer ( not the open source version that is available, but a home grown one that I am working on open sourcing) that pushes TS files into the pipeline. On actual Set top box hardware this implementation autoplugs and works fine. The problem comes when I try to run it on a PC with the tsdemux in gst-plugins-bad.
When I send the TS stream to the tsdemux, the tsdemux does actually parse and find the correct PTS and DTS however since I don’t have calculate_skew nor calculate_offset set to TRUE the code flow in mpegts_packetizer_pts_to_ts always reports back that Not enough information to calculate proper timestamp.
Now with the exact same stream I do a filesrc autoplugged pipeline and load the first transport stream segment into playbin and because this is a pull src the pipeline and the tsdemux can correctly parse and set the timestamps PTS/ DTS and play the stream.
I’m stuck with how to actually fix this function. I have attached two logs, one working ( the pull source I noted from above) and the HLS demux that is a push source that doesn’t work.
I have referenced bug 687178
However I have the same issue with the 1.4.4 release. Even though my demux element sends a segment event (which should theoretically turn on calculate_skew) it seems the tsdemux is throwing this segment information away and calculate_skew never gets turned on.
0:00:00.185801239 20235 0x1552ca0 DEBUG tsdemux gbuild/src/gst-plugins-bad-1.4.4/gst/mpegtsdemux/tsdemux.c:890:push_event:
<tsdemux0> Ignoring segment event (recreated later)
I've tried commenting out the above with no change in behavior.
Any suggestions on how to proceed would be greatly appreciated. I’m also happy to provide any code or libraries.
Attachment 304888, "Does not work example log":