diff --git a/libs/gst/base/gstbaseparse.c b/libs/gst/base/gstbaseparse.c index bc5a513881..93d1ed2b08 100644 --- a/libs/gst/base/gstbaseparse.c +++ b/libs/gst/base/gstbaseparse.c @@ -2501,6 +2501,7 @@ gst_base_parse_send_buffers (GstBaseParse * parse) GSList *send = NULL; GstBuffer *buf; GstFlowReturn ret = GST_FLOW_OK; + gboolean first = TRUE; send = parse->priv->buffers_send; @@ -2514,6 +2515,13 @@ gst_base_parse_send_buffers (GstBaseParse * parse) GST_TIME_ARGS (GST_BUFFER_PTS (buf)), GST_TIME_ARGS (GST_BUFFER_DURATION (buf)), GST_BUFFER_OFFSET (buf)); + /* Make sure the first buffer is always DISCONT. If we split + * GOPs inside the parser this is otherwise not guaranteed */ + if (first) { + GST_BUFFER_FLAG_SET (buf, GST_BUFFER_FLAG_DISCONT); + first = FALSE; + } + /* iterate output queue an push downstream */ ret = gst_pad_push (parse->srcpad, buf); send = g_slist_delete_link (send, send);