RidgeRun / gst-interpipe

GStreamer plug-in for interpipeline communication
Other
143 stars 64 forks source link

Event queue fix #97

Open mariannasb opened 3 years ago

mariannasb commented 3 years ago

Send all queued events with "timestamp < buffer timestamp" instead of just the 1st one before sending the buffer.

Only the 1st event of the event queue with "timestamp < buffer timestamp" was being send before the buffer. But there could be several events in the queue that should sent before the buffer.

Related to RidgeRun#96

The segment event was not being handled properly when using x264enc + mpegtsmux together with interpipesrc/sink. Which was causing 2 segment to be delivered to the mpegtsmux: 1st one generated by the interpipesrc (starting from zero) because no segment existed. 2nd coming from the x264 encoder (correcting the 1000 hours offset added by the encoder).

The 1st segment resulted in all subsequent DTS being seen as invalid (backwards) by the muxer.

This happened because the event queue contained the following: stream-start, segment, tag, tag, tag. All with timestamp 0. But only the stream-start was sent, then the 1st buffer, then the segment. Which caused the DTS issues.

This fix makes sure that mpegtsmux will receive the proper segment event from x264enc before receiving the 1st buffer which fixes backwards DTS warnings.

However an extra (wrong) segment is still being generated (by interpipesrc?). And that is still missing a fix.

michaelgruner commented 2 years ago

@mmontero this one is related to #98

mariannasb commented 2 years ago

Any updates on the progress?