diff --git a/validate/gst/qa/gst-qa-pad-monitor.c b/validate/gst/qa/gst-qa-pad-monitor.c index 23ee68c46d..9c9ce01e13 100644 --- a/validate/gst/qa/gst-qa-pad-monitor.c +++ b/validate/gst/qa/gst-qa-pad-monitor.c @@ -186,8 +186,12 @@ gst_qa_pad_monitor_event_func (GstPad * pad, GstEvent * event) switch (GST_EVENT_TYPE (event)) { case GST_EVENT_NEWSEGMENT: if (ret) { + if (!pad_monitor->has_segment && pad_monitor->segment.format != format) { + gst_segment_init (&pad_monitor->segment, format); + } gst_segment_set_newsegment_full (&pad_monitor->segment, update, rate, applied_rate, format, start, stop, position); + pad_monitor->has_segment = TRUE; } break; case GST_EVENT_FLUSH_START: diff --git a/validate/gst/qa/gst-qa-pad-monitor.h b/validate/gst/qa/gst-qa-pad-monitor.h index 457cbeae58..2d8b00efe2 100644 --- a/validate/gst/qa/gst-qa-pad-monitor.h +++ b/validate/gst/qa/gst-qa-pad-monitor.h @@ -63,6 +63,7 @@ struct _GstQaPadMonitor { GstPadQueryFunction query_func; /*< private >*/ + gboolean has_segment; GstSegment segment; gboolean pending_flush_stop;