If we saw empty segments, we previously unconditionally pushed a
GAP event downstream regardless of the duration of that empty
segment.
In order to avoid issues with initial negotiation of downstream elements
(which would negotiate to something before receiving any data due to
that initial GAP event), check if there's at least a second of difference
(like we do for other GAP-related checks in qtdemux) before
deciding to push a GAP event downstream.
Change-Id: I30318848c6f16cd04cf5bc776b77acd8ec0f3d0e
GST_TIME_ARGS (dts), GST_TIME_ARGS (pts), GST_TIME_ARGS (duration));
if (G_UNLIKELY (empty)) {
- /* empty segment, push a gap and move to the next one */
- gst_pad_push_event (stream->pad, gst_event_new_gap (pts, duration));
+ /* empty segment, push a gap if there's more than a second
+ * difference and move to the next one */
+ if ((pts + duration - stream->segment.position) > GST_SECOND)
+ gst_pad_push_event (stream->pad, gst_event_new_gap (pts, duration));
stream->segment.position = pts + duration;
goto next;
}